一、3-8译码器电路图
1.logsim绘制
使用logsim软件绘制3-8译码器电路图:
2.3-8译码器的真值表
真值表:
3.Verilog编程
采用Verilog编程(if-else实现)设计一个3-8译码器,生成RTL原理电路图:
4.仿真测试
编写一个仿真测试文件,对3-8译码器进行仿真测试,输出测试波形图和Transcript结果:
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位全加器”进行对比:
2.“4位全加器”(Verilog模块调用子模块)
采用Verilog模块调用子模块的方式,用4个上面的“1位全加器”级联方式,构成一个“4位全加器”(即串行全加器),生成RTL电路,与Logsim的“4位全加器”电路进行对比:
3.Verilog的行为级方式
1位全加器:
4位全加器: