Verilog编程基础练习

本文详细介绍了如何使用Verilog编程实现3-8译码器,以及与Logsim软件的电路比较。随后探讨了1位和4位全加器的逻辑门级设计,通过模块调用构建8位全加器,并以16位ALU为例展示了算术逻辑单元的电路设计。
摘要由CSDN通过智能技术生成

一、3-8译码器电路图

1.logsim绘制

使用logsim软件绘制3-8译码器电路图:
![[ae221342316f54e1deb0a040e22f258.png]]

2.3-8译码器的真值表

真值表:
![[15100c248ee4b3479955df2ee8af328.png]]

3.Verilog编程

采用Verilog编程(if-else实现)设计一个3-8译码器,生成RTL原理电路图:
![[63a883b7e2bb01ed9f90bd919c09cc4.png]]

![[57159ab7887451c6cf614118ae141e8.png]]

4.仿真测试

编写一个仿真测试文件,对3-8译码器进行仿真测试,输出测试波形图和Transcript结果:
![[Pasted image 20231217175410.png]]

![[Pasted image 20231217175521.png]]

5.结论

1)两者的电路总体思路一致,差异在于Verilog的电路图将中间接线部分合为一个整体。
仿真测试结果与真值表一致。
2)Verilog中,reg寄存器类型用于always模块内被赋值的信号,wire导线类型用于always模块内未被赋值的信号。3-8译码器模块的输出信号out是在always块中被赋值的,所以应定义为reg类型,不能改成wire类型。不能将output reg [7:0] out改为output [7:0] out,因为wire类型的信号可以有多个驱动器,而reg类型的信号只能有一个驱动器。若修改,会出现多个驱动器并发生错误。

二、 “1位全加器”和“4位全加器”逻辑门电路

1.“1位全加器”(Verilog的门级描述方式)

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

![[7ed826a03b46046e149978ffb78db9c.png]]

![[Pasted image 20231217181102.png]]

![[Pasted image 20231217181721.png]]

2.“4位全加器”(Verilog模块调用子模块)

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

![[9568363b3a7ebb0e949df969863ef37.png]]

![[236c005f3ddf3295d879fb985fa9e94.png]]

![[Pasted image 20231217182547.png]]

3.Verilog的行为级方式

1位全加器:
![[Pasted image 20231217183059.png]]

![[Pasted image 20231217183133.png]]

4位全加器:
![[Pasted image 20231217183305.png]]

![[Pasted image 20231217183356.png]]

4.Verilog设计8位全加器模块

![[Pasted image 20231217183548.png]]

![[Pasted image 20231217183612.png]]

三、16位ALU(算术逻辑单元)电路设计

[[Pasted image 20231217183926.png]]

![[Pasted image 20231217183954.png]]

  • 10
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值