news 2026/7/17 13:46:35

verilog HDLBits刷题“Module cseladd”--模块 cseladd---Carry-select adder 进位选择adder

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
verilog HDLBits刷题“Module cseladd”--模块 cseladd---Carry-select adder 进位选择adder

一、题目

ripple carry adder 的一个缺点(参见上一个练习) 是 adder 计算 carry out 的延迟(在最坏的情况下从 carry-in 开始)相当慢,并且第二阶段 adder 在第一阶段 adder 完成之前无法开始计算carry-out。这会使加法器变慢。一项改进是 carry-select adder,如下所示。第一级加法器与以前相同,但我们复制了第二级加法器,一个假设 carry-in=0,另一个假设 carry-in=1,然后使用快速的 2 对 1 多路复用器来选择哪个结果恰好是正确的。

在本练习中,您将获得与上一个练习相同的模块,该模块将两个 16 位数字与进位相加,并产生一个进出和 16 位总和。您必须使用您自己的 16 位 2 对 1 多路复用器实例化其中的三个来构建 carry-select 加法器。add16

如下图所示,将模块连接在一起。提供的模块具有以下声明:add16

module add16 ( input[15:0]a, input[15:0]b, inputcin, output[15:0]sum, outputcout);

模块声明

module top_module( input [31:0] a, input [31:0] b, output [31:0] sum );

二、分析

1、例化三个16位加法器,低16位进位为0,高16位的进位原本应来自低16位加法器的进位cout,为提高加法器的速度,分别假设高16位加法器的进位为0或1,可得到高16位加法器的输出。

2、根据低16位的进位输出(sel), 选择高16位加法器的输出作为32位加法器的高16位输出。

三、代码实现

module top_module( input [31:0] a, input [31:0] b, output [31:0] sum ); wire [15:0]sum_hi0,sum_hi1; wire [15:0]sum_low; reg [15:0]sum_hi_sel; wire sel; add16 inst1(.a(a[15:0]),.b(b[15:0]),.cin(1'b0),.cout(sel),.sum(sum_low)); add16 inst2(.a(a[31:16]),.b(b[31:16]),.cin(1'b0),.cout(),.sum(sum_hi0)); add16 inst3(.a(a[31:16]),.b(b[31:16]),.cin(1'b1),.cout(),.sum(sum_hi1)); always@(*)begin case(sel) 1'b0:sum_hi_sel<=sum_hi0; 1'b1:sum_hi_sel<=sum_hi1; endcase end assign sum={sum_hi_sel,sum_low}; endmodule 或者 module top_module( input [31:0] a, input [31:0] b, output [31:0] sum ); wire cout_sel; wire [15:0]sum1,sum2,sum3; add16 instance1(.a(a[15:0]),.b(b[15:0]),.cin(1'b0),.sum(sum1),.cout(cout_sel)); add16 instance2(.a(a[31:16]),.b(b[31:16]),.cin(1'b0),.sum(sum2),.cout()); add16 instance3(.a(a[31:16]),.b(b[31:16]),.cin(1'b1),.sum(sum3),.cout()); always@(*)begin case(cout_sel) 0:sum={sum2,sum1}; 1:sum={sum3,sum1}; endcase end endmodule

四、时序

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/17 13:46:26

intel-ice最佳实践:提升Intel E810设备稳定性的5个建议

intel-ice最佳实践&#xff1a;提升Intel E810设备稳定性的5个建议 【免费下载链接】intel-ice Intel Network Adapter Driver for Intel E810 Ethernet Series Devices 项目地址: https://gitcode.com/openeuler/intel-ice 前往项目官网免费下载&#xff1a;https://ar…

作者头像 李华
网站建设 2026/7/17 13:41:40

Cerebras 内部知识库的实战构建 混合检索如何驯服企业信息洪流

在 Cerebras 这家快速扩张的 AI 芯片公司&#xff0c;每天都有新同事加入。工程师们在 Slack、GitHub、Jira 等不同平台上反复遇到同样的问题&#xff1a;“这个 flag 在哪定义的&#xff1f;”“谁是这个 kernel 的专家&#xff1f;”“这个部署流程最新状态是什么&#xff1f…

作者头像 李华
网站建设 2026/7/17 13:41:25

VokoscreenNG终极指南:免费开源屏幕录制神器快速上手

VokoscreenNG终极指南&#xff1a;免费开源屏幕录制神器快速上手 【免费下载链接】vokoscreenNG vokoscreenNG is a powerful screencast creator in many languages to record the screen, an area or a window (Linux only). Recording of audio from multiple sources is su…

作者头像 李华
网站建设 2026/7/17 13:40:37

CANN/asc-devkit h2log2函数文档

h2log2 【免费下载链接】asc-devkit 本项目是CANN 推出的昇腾AI处理器专用的算子程序开发语言&#xff0c;原生支持C和C标准规范&#xff0c;主要由类库和语言扩展层构成&#xff0c;提供多层级API&#xff0c;满足多维场景算子开发诉求。 项目地址: https://gitcode.com/can…

作者头像 李华