Verilog设计4位CLA加法器电路,并仿真测试 |
您所在的位置:网站首页 › 四位串行加法器电路图怎么画 › Verilog设计4位CLA加法器电路,并仿真测试 |
设计4位CLA加法器电路,并仿真测试
使用Quartus+modelsim完成本次设计 文章目录 设计4位CLA加法器电路,并仿真测试分析代码实现Testbench结果 分析对于超前进位加法器 (CLA)加法器,它不同于普通加法器。如果对于两个1024位的数字进行相加,那么普通的串行加法器因为只有算出 C x C_{x} Cx才能继续计算 C x + 1 C_{x+1} Cx+1,这会导致整体的效率非常低。如果使用超前进位加法器,那么所有的 C x C_{x} Cx会同时计算得到,每级进位由附加的组合电路产生,高位的运算不需要等待低位运算完成,大大加快了整体的运行速度。对于每一个进位 C x C_{x} Cx的计算方法如图提示可以轻松得到。 题目中也给出了端口定义,及输入a[3:0],b[3:0],c0;输出s[3:0],c4 代码实现 //4bit CLA module CLA4( input [3:0] a, input [3:0] b, input c0, output [3:0] s, output c4 ); wire [4:0] g,p,c; assign c[0] = c0; assign p = a^b; assign g = a&b; assign c[1] = g[0]|(p[0]&c[0]); assign c[2] = g[1]|(p[1]&(g[0]|(p[0]&c[0]))); assign c[3] = g[2]|(p[2]&(g[1]|(p[1]&(g[0]|(p[0]&c[0]))))); assign c[4] = g[3]|(p[3]&(g[2]|(p[2]&(g[1]|(p[1]&(g[0]|(p[0]&c[0]))))))); assign s = p[3:0]^c[3:0]; assign c4 = c[4]; endmodule Testbench编写testbench对CLA4进行验证,选取部分值进行测试。 `timescale 1 ns/ 1 ns module CLA4_vlg_tst(); // constants // general purpose registers // test vector input registers reg [3:0] a; reg [3:0] b; reg c0; // wires wire c4; wire [3:0] s; // assign statements (if any) CLA4 i1 ( // port map - connection between master ports and signals/registers .a(a), .b(b), .c0(c0), .c4(c4), .s(s) ); initial begin a = 4'b1111; b = 4'b1111; c0 = 1'b0; #10 a = 4'b1010; #10 c0 = 1'b1; #10 b = 4'b0100; #10 b = 4'b0101; #10 b = 4'b0110; #10 b = 4'b0111; #50 $stop; end initial $monitor($time,": a+b+cin=%b+%b+%b=%b%b",a,b,c0,c4,s); endmodule 结果对代码进行编译,查看RTL Viewer,观察电路结构如下图所示,通过对比,与题目中的提示相同 在modelsim中观察波形以及monitor输出如下图所示,结果显示 a + b + c 0 = { c 4 , s } a+b+c0=\{c4,s\} a+b+c0={c4,s},及实现了目标功能 下图位monitor输出结果,均为2进制表示最右边结果为 { c 4 , s } \{c4,s\} {c4,s},及进位加4bit结果 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |