大家好!今天给大家分享的是4位全加器的代码以及仿真程序。俗话说:“千里之行,始于足下。”对于初学者来说, 加法器是fpga初学者入门必须掌握的内容。我们很多朋友在入门时囫囵吞枣,一些基础的东西没有掌握好,导致后面在做大型项目的时候漏洞百出。因此,大家在开始学习或者正在学习fpga的过程中,一定要把一些基础的模块理解透彻。我会给大家分享一些常见的模块代码以及仿真程序,希望能帮助到大家更好的去学习fpga!下面一起来看下4位加法器的代码以及仿真程序:
4位全加器代码:
module adder4(cout,sum,ina,inb,cin); output cout; output [3:0] sum; input [3:0] ina,inb; input cin; assign {cout,sum}=ina+inb+cin; endmodule
4位全加器的仿真程序:
`timescale 1ns/1ns module tb; // 测试模块的名字 reg [3:0] ina,inb; // 测试输入信号定义为 reg 型 reg cin; wire [3:0] sum; // 测试输出信号定义为 wire 型 wire cout; integer i,j; adder4 adder(cout,sum[3:0],ina[3:0],inb[3:0],cin); // 调用测试对象 always #5 cin=~cin; // 设定 cin 的取值 initial begin ina=0;inb=0;cin=0; for (i=1;i<16;i=i+1) #10 ina=i; // 设定 a 的取值 end initial begin for (j=1;j<16;j=j+1) #10 inb=j; // 设定 b 的取值 end initial // 定义结果显示格式 begin $monitor($time,,,"%d+%d+%b={%b,%d}",ina,inb,cin,cout,sum); #160 $finish; end endmodule
modelsim仿真结果:
具体的代码细节我就不详细阐述了,大家一定要学会思考,在这个代码中,主要要理解清楚这样几个问题:
什么叫全加器?
半加器和全加器的区别是什么?
什么叫低位进位?什么叫高位进位?
为什么仿真出来的波形图感觉和modelsim打印出来的结果不一样?比如感觉数据没对齐?
$monitor是什么意思?怎么使用?格式是什么?
这个4位全加器的电路图是什么样的?
就这样一个“简单”的4位全加器,你真的掌握了吗?如果你能快速回答出我上面提出的几个问题,那你就掌握了;如果不能,那还要好好看下!其实,我们很多的公司笔试就是考这些简单的题目,但是却可以难倒一大片同学!再次提醒大家!重视基础!
审核编辑:汤梓红
全部0条评论
快来发表一下你的评论吧 !