欢迎光临散文网 会员登陆 & 注册

HDLBits (26) — 加法器2

2022-02-01 00:42 作者:僚机Wingplane  | 我要投稿

本题链接:

https://hdlbits.01xz.net/wiki/Module_fadd

在本练习中,你将创建具有两个层次的回路。您的top_module将实例化add16的两个副本(已提供),每个副本将实例化add1的16个副本(您必须编写)。因此,您必须编写两个模块:top_模块和add1。

module_add类似,你将获得一个执行16位加法的module add16。必须实例化其中两个才能创建32位加法器。一个add16模块计算加法结果的低16位,而第二个add16模块计算结果的高16位。您的32位加法器不需要处理进位(假定为0)或进位(忽略)。

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

在每个add16中,实例化16个全加器(模块add1,这里未提供)以实现加法。必须编写满足一下条件的全加器模块:

  • top_module - 包含两个...的顶级模块

  • add16提供 - 一个16位加法器模块,由16个组成...

  • add1 - 一个1位全加法器模块。

如果提交的内容缺少模块add1,将收到一条报错,显示错误(12006):节点实例“user_fadd[0].a1”的实例化未定义实体“add1”。


题目

提示:

全加器公式:
sum = a ^ b ^ cin
cout = a&b | a&cin | b&cin

答案

输出波形

模块是 Verilog 中基本单元的定义形式,是与外界交互的接口。

模块格式定义如下:

模块定义必须以关键字 module 开始,以关键字 endmodule 结束。

模块名,端口信号,端口声明和可选的参数声明等,出现在设计使用的 Verilog 语句(图中 Declarations_and_Statements)之前。

模块内部有可选的 5 部分组成,分别是变量声明,数据流语句,行为级语句,低层模块例化及任务和函数,如下图表示。这 5 部分出现顺序、出现位置都是任意的。但是,各种变量都应在使用之前声明。变量具体声明的位置不要求,但必须保证在使用之前的位置。

参考内容:

5.1 Verilog 模块与端口 | 菜鸟教程:

https://www.runoob.com/w3cnote/verilog-module-port.html

HDLBits (26) — 加法器2的评论 (共 条)

分享到微博请遵守国家法律