Verilog编程基础练习

一、用Logisim绘制一个3-8译码器电路图并列出3-8译码器的逻辑真值表

3-8译码器电路图如下所示:

3-8译码器真值表如图所示:

二、用Verilog编程(if-else或者case语句)设计一个3-8译码器,并生成一个RTL原理电路图 

Verilog编程源代码如图所示:

生成RTL原理图如图所示:

三、用Verilog编写一个仿真测试文件,对3-8译码器进行仿真测试并输出测试波形图

仿真测试原代码如图所示:

用ModelSm输出波形图如图所示:

四、问题分析

1、Verilog 综合生成的3-8译码器电路原理图与原始设计电路存在什么差异? 仿真测试生成的结果是否与真值表一致?

原始设计的3-8译码器电路图是基本的门电路未进行封装;而Verilog综合生成的3-8译码器电路是在基本门电路的基础上进行了封装;两者仿真测试生成的结果鱼真值表一致。

2、Verilog代码设计的3-8译码器模块的输出信号为何要定义为reg类型而不用默认wire(导线)类型?改成wire型是否可以?(即是否可以把 output reg [7:0] out 改为 output [7:0] out) 修改后会出现什么错误?为什么会出错?

wire类型用以表示以assign关键字指定的组合逻辑,其模块的输入和输出端口类型都默认为wire类型,wire类型相当于物理连线,默认初始值是高组态;reg类型表示的寄存器类型,always模块内被赋值的信号,必须定义为reg型,代表触发器,常用于时序逻辑电路,reg类型相当于存储单元,默认初始值是未知状态;3-8译码器中使用always语句,应该使用reg类型的输出模块,若替换成wir类型,那么综合器会报错。

五、Verilog编程与Logisim绘制电路的对比

1、用Verilog的门级描述方式写一个“1位全加器”, 生成RTL电路,与Logisim的“1位全加器”进行对比

Logisim的”1位全加器“电路如图所示:

Verilog门级描述方式的”1位全加器“电路代码和电路图如图所示:

2、用Verilog模块调用子模块的方式,用4个上面的“1位全加器”级联方式,构成一个“4位全加器”(即串行全加器),生成RTL电路,与Logisim的“4位全加器”电路进行对比

Logisim的“4位全加器”电路如图所示:

Verilog模块调用子模块方式的”4位全加器“电路代码和电路图如图所示:

3、用Verilog的行为级描述方式写一个“1位全加器”, 生成RTL电路,与Logisim的“1位全加器”进行对比

Verilog行为级描述方式的”1位全加器“电路代码和电路图如图所示:

4、用Verilog模块调用子模块的方式,用4个上面行为级描述的“1位全加器”级联方式,构成一个“4位全加器”(即串行全加器),生成RTL电路,与Logisim的“4位全加器”电路进行对比

Verilog模块调用子模块方式行为级的”4位全加器“电路代码和电路图如图所示:

六、用Verilog编程设计一个8位全加器

Verilog行为级描述的”8位全加器“电路代码和电路图如图所示:

  • 10
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值