使用Verilog可以方便地实现复杂的设计。现在,设计复杂性增加,设计需要针对低功率、高速和最小面积进行优化~
在大多数实际的ASIC/FPGA和SOC设计中,Verilog RTL用于描述协议行为。要求和目标是设计的功能正确性以及定时和循环精确模型。在大多数实际应用中,需要检测奇偶校验才能报告奇偶校验。如果任何字符串中存在偶数个1,则奇偶校验被视为偶数奇偶校验;如果字符串中存在奇数个1,则奇偶校验将被视为奇数奇偶校验。接下来重点介绍奇偶校验生成器和校验器。
示例7.8中描述了高效的Verilog RTL。如RTL中所述,偶数或奇数奇偶校验在输出“q_out”处生成。偶数奇偶校验由逻辑“0”表示,奇数奇偶校验由逻辑“1”表示。
示例7.8奇偶校验生成器的Verilog RTL
图7.9奇偶校验生成器的综合逻辑
综合结果如图7.9所示,在触发器的数据输入端具有组合逻辑的寄存器逻辑。综合器可根据边缘敏感“always”块内的非阻塞分配数推断出多个寄存器。
考虑设计中使用多个功能块的实际场景。设计要求是在“add_sub=1”时补充输入“add_sub”,然后补充输入补码“b”。对于“add_sub=0”,按原样传递输入“b”。加法器对两个操作数和补码逻辑的结果进行运算。加法器生成一个输出“cy_out and sum”。奇偶校验在输出阶段用于查找字符串中1的偶数或奇数。
示例7.9用于加法器奇偶校验的Verilog RTL
示例7.10
Verilog RTL使用RTL进行描述,如示例7.9所示。逻辑输入为a、b、add_sub,输出为“p”。
部分综合逻辑如图7.10所示。整体综合逻辑包括三个块“补码器”、“加法器”和一个“奇偶校验器”。 示例7.8奇偶校验生成器的Verilog RTL
在大多数DSP应用中,组合移位器用于对数据输入执行移位操作。组合移位器称为桶形移位器。桶形移位器的优点在于,它根据所需的位数或控制输入执行移位操作,而无需任何时钟逻辑。大多数桶形移位器采用多路复用器逻辑设计。
示例7.10如下文所述,具有8位输入“d_in”、3位控制输入“c_in”和8位输出“q_out”。综合结果如图7.11所示。
示例7.10桶形移位器的Verilog RTL
图7.11综合桶形移位器
以下是总结Verilog复杂逻辑设计指南的要点: