HDLbits day2 一位全加器逻辑表达式原理 FPGA关于仿真
问题1:一位全加器
assign sum = a ^ b ^ cin;
assign cout = a&b | a&cin | b&cin;
一位全加器,sum为输入加进位位异或(即1的个数为奇数时,sum==1);
cout为cout = a&b | a&cin | b&cin即三个输入至少两个是1时为1。
问题2:加/减法器
减法可以由加法得到,将一个加数取负(二进制形式取反加一)。
这里当输入sub为1时进行减法运算,当sub=0时进行加法运算。一方面,输入b与sub取异或,sub为1时,可以进行取反操作,sub为0时保持不变。另一方面,sub为1时,将其输入作为cin刚好可以完成减法运算中的加一操作,为0时,刚好可以满足加法运算。
module top_module(input [31:0] a,input [31:0] b,input sub,output [31:0] sum
);wire [31:0] in;wire cout,cout1;assign in=b^{32{sub}};add16 add16 ( .a(a[15:0]), .b(in[15:0]), .cin(sub), .sum(sum[15:0]), .cout(cout) );add16 add161 ( .a(a[31:16]), .b(in[31:16]), .cin(cout), .sum(sum[31:16]), .cout(cout1) );
endmodule
另外,将位数不一样的两个数进行按位门运算时,不要忘记把位数补足。
assign in=b^{32{sub}};
问题3
1.Procedures:always,initial,task,function
2.For synthesizing hardware, two types of always blocks are relevant:
Combinational: always @(*)
Clocked: always @(posedge clk)
这俩RTL(功能)(前)仿真和门级(后)仿真都一样。
关于仿真
FPGA的仿真可以划分为四类,即代码级仿真、门级仿真、映射后仿真以及布局布线后仿真。其中,代码级仿真,仿真的对象就是原始的、未经加工的HDL代码,这也就是我们通常所说的功能仿真;门级仿真,仿真对象是HDL代码经过综合后的门级 网表;而映射后仿真,仿真对象是门级网表经过转换后对应到FPGA上的具体逻辑资源聚类, 此时可以得到电路中的门延迟信息文件供仿真时使用;最后,布局布线后仿真,仿真对象是具 有位置信息和连线信息的FPGA上逻辑资源聚类,因此可以兼并考虑门延迟与线延迟信息, 这也就是我们通常所说的时序仿真。
vivado下就有好多种仿真。
问题4 &是按位与 and是门类型的关键字
nand #10 nd1(a,data,clock,clear);
这说明在模块中引用了一个名为nd1的与非门(nand),输入为data、clock和clear,输出为a,输出与输 入的延时为10个单位时间
问题5 关于tb文件中的initial和always的执行顺序
可以认为两者一起执行,并行执行。
问题6 关于always和always@(*)
两者区别是
verilog规定,always@()中的是指该always块内的所有输入信号的变化为敏感列表,也就是仿真时只有当always@()块内的输入信号产生变化,该块内描述的信号才会产生变化,而如果没有@,那就是不用满足特定条件才执行,而是执行完一次后立马执行下一次,一直重复执行。具体不做分析,反正tb不能用@()。
`timescale 1 ns/1 ps
module tb();
reg a,b,clk;
wire out_always_comb,out_always_ff ;
aa aa(
clk,
a,
b,
out_assign,
out_always_comb,
out_always_ff );
initial begin
a=0; b=0;clk=0;
#1000 $stop;
end
always #10 clk=~clk;
always begin
#10 a=~a;
end
always begin
#20 b=~b;
end
endmodule
前仿真
后仿真直接没法看了
问题7 后仿真(功能仿真)之前最好先Start EDA netlist writer一下
HDLbits day2 一位全加器逻辑表达式原理 FPGA关于仿真相关推荐
- FPGA——1位全加器和4位全加器的实现
目录 一.认识全加器 1.半加器 2.1位全加器 3.4位全加器 二.使用原理图实现1位加法器 1.原理图实现半加器 2.半加器元件实现全加器 三.使用原理图实现4位加法器 四.Verilog HDL ...
- 一位全加器及四位全加器————FPGA
文章目录 前言 一.一位全加器 1.一位全加器的原理图设计 2.一位全加器的Verilog编程 3.上板效果 二.四位全加器 1.四位全加器的原理图设计 2.四位全加器的Verilog 编程 三.总结 ...
- FPGA(2)--例化语句--1位全加器
文章目录 一.实验目的 二.实验内容 三.实验设计 四.实验结果及仿真 一.实验目的 熟悉元件封装方法,掌握层次化电路设计方法:掌握VHDL例化语句的设计方法. 二.实验内容 1.用VHDL语言设计1 ...
- FPGA实现1位全加器设计
文章目录 一.基础知识 1. 半加器 2. 全加器 二.原理图实现1位全加器 三.Verilog实现1位全加器 四.参考
- FPGA学习日志——一位全加器full_adder
全加器 全加器能进行被加数.加数和来自低位的进位信号相加,并根据求和结果给出该位的进位信号. 在电路上可以由两个半加器和一个或门构成全加器. 值得注意的是:一位全加器实现完成后,可以根据多个1位全加器 ...
- 一位全加器 VHDL设计与实现
作者:chenjieb520 一.设计目的 熟悉Quartus II的VHDL文本设计流程全过程,学习组合电路的设计,仿真和测试. 二.设计内容 设计一位全加器,给出程序的设计.软件编译.仿真分析.硬 ...
- 用行为级描述方式实现一个加法器电路(基于ISE的设计)(2输入1位全加器电路)
准备 先用行为级描述方式实现一个2输入一位全加器电路 由于后面需要使用综合工具进行综合,这里先声明使用的FPGA是Virtex-7系列的: 目的很单纯,就是熟悉一下使用ISE进行FPGA设计的一般流程 ...
- 第三次笔记:算术逻辑单元 电路基本原理 加法器的设计 一位全加器 串行进位加法器 并行进位加法器 补码加减运算器 无符号整数加减法 标志位的生成
文章目录 算术逻辑单元 逻辑运算 一位全加器 串行进位加法器 并行进位加法器 补码加减运算器 加法器原理 补码加法器原理 无符号整数加减法 标志位的生成 算术逻辑单元 算术逻辑单元就是运算器里面的AL ...
- 原理图以及vhdl设计一位全加器
原理图设计以及VHDL设计 一位加法器 全加器原理 全加器真值 输出表达式 原理图设计法 VHDL设计法 代码如下: 全加器是用门电路实现两个二进制数相加并求出和的组合线路,称为一位全加器.一位全加器 ...
- 广工计组实验f2一位全加器
实验原理 半加器设计原理:只考虑两个一位二进制数的相加,而不考虑来自低位进位数的运算电路,称为半加器. 其中:a.b分别为被加数与加数,作为电路的输入端:s0为两数相加产生的本位和,它和两数相加产生的 ...
最新文章
- jlink的SWD与JTAG下载模式的对应接线方法
- SpringBoot 集成 clickhouse + mybatis-plus 配置及使用问题说明(含建表语句、demo源码、测试说明)
- 【v3.6.2】iNeuOS工业互联网操作系统,发布实时存储方式:实时存储、变化存储、定时存储,设备振动状态和电能状态监测驱动...
- LoRa、蓝牙、技术在电子显示牌上的应用
- [Java]中[this][super]用法总结
- partial is not defined的解决办法
- 数据库水平切分(MyCat分片)
- nosql笔记1_早前的时候
- wpe封包修改服务器数据,wpe 封包 数据包 修改实例
- 高效记忆/形象记忆(06)110数字编码表 01-10
- GD32F130之DMA
- 一键获取喜马拉雅音频文件(Python3爬虫)
- 目前人工智能技术,主要有应用于哪些领域?
- el表达式设置option标签selected
- 适合后端开发人员的html笔记
- 什么是导数和切线?以及他们的关系?
- html进行语音播报,JQuery插件制作:[2]语音播报jspeech
- Spring NoSuchBeanDefinitionException原因分析
- app测试中ios和Android的区别:
- 【Linux8系统学习】使用RAID与LVM磁盘陈列技术(一)