Verilog编程基础练习
一.
1)Verilog 综合生成的3-8译码器电路原理图与原始设计电路存在什么差异? 仿真测试生成的结果是否与真值表一致?
Verilog综合生成的电路原理图与原始设计电路之间有一些差异。这些差异可能是由于综合工具的优化、映射和布局等过程引起的,这些过程的目标是在尽可能小的芯片面积和功耗的情况下满足设计约束。因此,综合后的电路原理图可能与原始设计电路存在结构和布局上的差异。
至于仿真测试生成的结果是否与真值表一致,要根据具体的情况来确定。在设计中,输入的真值表会被转换为逻辑门的连接方式,并经过综合生成电路结构。在仿真测试中,输入信号会被应用到综合后的电路中,并且观察电路的输出是否与预期的真值表一致。
但是需要注意的是,由于综合过程的优化和近似性质,以及仿真过程中可能存在的信号延迟和时序问题,仿真测试生成的结果不一定与真值表完全一致。因此,在电路设计中,综合和仿真都是必不可少的步骤,用来评估电路的功能和性能,并进行必要的优化和调整。
2) Verilog代码设计的3-8译码器模块的输出信号 为何要定义为 reg类型而不用默认wire(导线)类型?改成wire型是否可以? (即是否可以把 output reg [7:0] out 改为 output [7:0] out) 修改后会出现什么错误?为什么会出错?
3-8译码器是一个组合逻辑电路,其中输出信号的值仅取决于输入信号的当前值,并且在时钟边沿时立即更新。因此,在这种情况下,使用reg类型是合适的,因为它表示寄存器,可以在组合逻辑电路中保存输出信号的值,并在需要时更新。而wire类型通常用于表示连线,在时钟边沿更新值的行为不适用于组合逻辑电路。虽然可以在输出端口上使用wire类型,但这并不符合逻辑上的正确性,所以不能改成wire类型,即使修改后不会报错,但运行起来也可能产生意外的结果。
二.
1)然后用Verilog的门级描述方式写一个“1位全加器”, 生成RTL电路,与Logsim的“1位全加器”进行对比。
Verilog的门级描述:
RTL电路:
Logsim的“1位全加器”:
2)采用Verilog模块调用子模块的方式,用4个上面的“1位全加器”级联方式,构成一个“4位全加器”(即串行全加器),生成RTL电路,与Logsim的“4位全加器”电路进行对比;
Verilog的描述:
RTL电路:
Logsim的“4位全加器”:
3)采用Verilog的行为级方式重新完成上面的1)和2)。
1)Verilog的行为级描述:
RTL电路:
2)Verilog的行为级描述:
RTL电路:
4)采用Verilog设计一个8位全加器模块。
扩展实验(先模仿调试通过,后续再加深理解)。学习教材上的 并行加法器原理(先行进位加法器),参考附件资料,完成一个16位ALU(算术逻辑单元)的电路设计,采用Verilog设计模式,生成RTL电路。
Verilog的描述:
RTL电路: