什么是半加器,什么是全加器,请用Verilog分别实现1位半加器和1位全加器,并写TestBench仿真文件,给出WORD或PDF版本的报告,包括但不限于文字说明、代码、仿真测试图等。

【解答】

1.原理

半加器

全加器

当多位数相加时,半加器可用于最低位求和,并给出进位数。第二位的相加有两个待加数和,还有一个来自前面低位送来的进位数。这三个数相加,得出本位和数(全加和数)和进位数。这种就是“全加"真值表:

2.编程思路

(1)根据真值表编写

按照半加器和全加器的真值表写出输出端的逻辑表达式,对半加器,输出的进位端是量输入的“与”,输出的计算结果是量输入的异或;对全加器,也按照逻辑表达式做。

//半加器模块
module adder_half(
inputa,
inputb,
output regsum,
output regcout
);//这里的always @(*)搭配里面的“=”阻塞赋值符号
//实现的效果和 assign sum = a ^ b; assign cout = a & b;是一样的
always @(*)
begin
sum = a ^ b;
cout = a & b;
end
endmodule

全加器:

module all_adder(cout,sum,a,b,cin);input a,b,cin;
output sum,cout;wire sum,cout;assign sum=a^b^cin;
assign cout=(a&b)|(a&cin)|(b&cin);
endmodule

3.问题汇总

(1)`timescale 1 ns/1 ps

timescale是verilog中的一种时间尺度预编译指令,用来定义仿真时的时间单位和时间精度,左边是时间单位,右边是时间精度,时间单位是用于编写激励文件,时间精度是显示时的刻度,比如#100也就是100ns。时间精度不能大于时间单位,比如`timescale 1 ns/1 ps是正确的,而`timescale 1 ps/1 ns是错误的。

(2)#({$random}%100)

首先,#代表延时,这个语句表示延时随机的一个时间,结合`timescale 1 ns/1 ns是延时随机的ns。

$random 是 verilog 中产生随机数的系统函数,在调用时返回一个 32 位的随机数,是带符号的整形数。有几种用法:

$random 和$random()意义一样,都是产生随机数;

$random%100  在-99 到 99 之间产生随机数;

{$random}%100  采用位拼接符,在 0 到 100 之间产生随机数;

如 seed =10, $random(seed) 根据 seed 值产生随机数,而后 seed 值也会更新。

(3)add t0(.cin(cin), .a(a), .b(b), .sum(sum), .count(count));

例化的格式,先建立一个叫add的模块(module),有5个引脚,分别是cin/a/b/sum/count,例化的模块叫做t0,比较简单的例化方式就是如上所示的,括号外的引脚与括号内的引脚名称完全一致,无需区分。

实际上,括号外的引脚名称代表的是模块定义时的引脚,括号内的引脚是目前实际使用的引脚名称,如可以将测试文件改为:

`timescale 1 ns/1 nsmodule top_tb();reg a1;
reg b1;
wire sum1;
wire count1;initial
begina1 = 0;b1 = 0;foreverbegin#({$random}%100)a1 = ~a1;  #({$random}%100)b1 = ~b1;end
endtop t0(.a(a1), .b(b1), .sum(sum1), .count(count1));endmodule

(4)对于延时,可以采用直接赋值的延时,如#5,使用随机延时目前暂时不常用。

当仿真到想结束时,可以在initial块的最后加$finish,即调用系统函数结束仿真,否则,仿真在ModelSim中会一直进行下去,不方便观察(在Vivado中设置的第一次仿真结束时间停止,默认1ns)。

此外,这里建议使用$stop来代替$finish,即停止仿真,在ModelSim中是暂停了仿真,而$finish则可能会退出,看不到仿真波形。

笔试 | 数字IC设计之1bit的半加器、全加器实现相关推荐

  1. 数字IC设计工程师笔试面试经典100题

    1:什么是同步逻辑和异步逻辑? 同步逻辑是时钟之间有固定的因果关系.异步逻辑是各时钟之间没有固定的因果关系.同步时序逻辑电路的特点:各触发器的时钟端全部连接在一起,并接在系统时钟端,只有当时钟脉冲到来 ...

  2. 数字 IC 设计、FPGA 设计秋招笔试题目、答案、解析(1)2022 紫光展锐(上)

    引言 最近收到诸多粉丝的来信,要求出一版<数字 IC 设计.FPGA 设计秋招笔试题精讲>,于是,通过几天几夜的加班加点,终于出了这一版<2022 紫光展锐秋招笔试题目.答案.解析& ...

  3. 数字IC设计工程师笔试面试经典100题-有答案

    转自知乎答主ictown_数字IC设计工程师笔试面试经典100题-有答案-陈恩 1:什么是同步逻辑和异步逻辑?(汉王) 同步逻辑是时钟之间有固定的因果关系.异步逻辑是各时钟之间没有固定的因果关系. 同 ...

  4. 数字 IC 设计、FPGA 设计秋招笔试题目、答案、解析(2)2021 华为海思(上)

    引言 最近收到诸多粉丝的来信,要求出一版<数字 IC 设计.FPGA 设计秋招笔试题精讲>,于是,通过几天几夜的加班加点,终于出了这一版<2021 华为海思秋招笔试题目.答案.解析& ...

  5. 数字 IC 设计、FPGA 设计秋招笔试题目、答案、解析(3)2022 大疆创新数字芯片 B 卷

    引言 最近收到诸多粉丝的来信,要求出一版<数字 IC 设计.FPGA 设计秋招笔试题精讲>,于是,通过几天几夜的加班加点,终于出了这一版<2022 大疆创新秋招笔试题目.答案.解析& ...

  6. 中级软件测试笔试题100精讲_数字IC设计职位经典笔试面试100题(71~80)

    71.什么叫做OTP片(OTP(一次性可编程)).掩膜片,两者的区别何在? OTP与掩膜 OTP是一次性写入的单片机.过去认为一个单片机产品的成熟是以投产掩膜型单片机为标志的.由于掩膜需要一定的生产周 ...

  7. 笔试题-2023-燧原-数字IC设计【个人解答版】

    回到首页:2023 数字IC设计秋招复盘--数十家公司笔试题.面试实录 推荐内容:数字IC设计学习比较实用的资料推荐 题目背景 笔试时间:2022.07.07 应聘岗位:数字IC设计 题目评价 难易程 ...

  8. 笔试题-2023-思远半导体-数字IC设计【纯净题目版】

    回到首页:2023 数字IC设计秋招复盘--数十家公司笔试题.面试实录 推荐内容:数字IC设计学习比较实用的资料推荐 题目背景 笔试时间:2022.08.20 应聘岗位:数字IC设计工程师 笔试时长: ...

  9. 数字IC设计实现之hold violation修复大全

    数字IC设计实现之hold violation修复大全 文章右侧广告为官方硬广告,与吾爱IC社区无关,用户勿点.点击进去后出现任何损失与社区无关. 按照惯例今天这篇文章应该是昨天发出的,但是因为小编最 ...

最新文章

  1. 如何在一个背景图像上,做半透明的图。
  2. jenkins需安装插件总结
  3. OpenStack-MitakaCentos7.2双节点搭建--(二)Keystone(认证服务)
  4. python项目实战:最简单的图片转字符画
  5. linux系统构架ftp,用Linux系统构建高效FTP服务器
  6. eclipse 初步新建jsp页面笔记
  7. AT2364 Colorful Balls
  8. 带你熟悉鸿蒙轻内核Kconfig使用指南
  9. import librosa出错解决方案
  10. 增程式串联混合动力实际项目模型,本模型基于Cruise软件和Simulink软件共同搭建完成
  11. c语言 opengl函数魔方,基于OpenGL的3D旋转魔方实现汇总.docx
  12. Web服务器、Web容器、Servlet容器、Spring容器、SpringMVC容器
  13. Python创建决策树—解决隐形眼镜选择问题
  14. 根据电子设计大赛心率检测的设计实践思路
  15. eos区块链 java客户端_分享一个网友第一次开发EOS区块链总结的经验
  16. kettle java交互_java程序中给Kettle传参数,其实很简单
  17. 图像调整亮度饱和度 c语言,数据增强-亮度-对比度-色彩饱和度-色调-锐度 不改变图像大小...
  18. 谁能淘汰微信?除了它还有谁?
  19. 使用Quartz实现定时任务(包含管理界面)
  20. 迅雷7.9版本缺少wlanapi等dll解决方法

热门文章

  1. firefly-rk3288j开发板--linux I2C实验之eeprom驱动
  2. 关于我本人阳了个阳一事
  3. Unity3D 光照系统(一)
  4. iOS 音乐 锁屏显示 控制
  5. SAP smartforms打印图片
  6. APP切换到后台时的运行规则以及如何实现后台运行
  7. 如何管理团队任务?如何跟踪任务进度?2023全新任务交办场景手册(免费领取)
  8. python的运算符(上)
  9. IO与文件读写---使用Apache commons io包提高读写效率
  10. RTL8211F 硬件配置