Verilog设计4位CLA加法器电路,并仿真测试

您所在的位置:网站首页 四位串行加法器电路图怎么画 Verilog设计4位CLA加法器电路,并仿真测试

Verilog设计4位CLA加法器电路,并仿真测试

2024-07-17 09:01| 来源: 网络整理| 查看: 265

设计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