使用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
桶形移位器Barrel Shifters
在大多数DSP应用中,组合移位器用于对数据输入执行移位操作。组合移位器称为桶形移位器。桶形移位器的优点在于,它根据所需的位数或控制输入执行移位操作,而无需任何时钟逻辑。大多数桶形移位器采用多路复用器逻辑设计。
示例7.10如下文所述,具有8位输入“d_in”、3位控制输入“c_in”和8位输出“q_out”。综合结果如图7.11所示。
示例7.10桶形移位器的Verilog RTL
图7.11综合桶形移位器
总结
以下是总结Verilog复杂逻辑设计指南的要点:
- 设计划分可以为ASIC/FPGA设计提供良好且清晰的数据和控制路径可见性。
- 用于复杂设计的Verilog RTL应具有用于数据路径和控制路径的单独模块。
- 在为逻辑单元编码时使用资源共享概念。所有的逻辑运算都可以通过使用带附加组合逻辑的全加器组件来执行。
- 编写可综合代码时不要使用函数和任务。
- 函数不包含延迟或定时控制结构。任务包括时间控制和延迟结构。
- 奇偶校验生成器用于为数据输入字符串生成偶数或奇数奇偶校验。
- 桶形移位器是一种组合移位器,采用基于mux的逻辑设计。
原文:OpenFPGA
作者:碎碎思
相关文章推荐
更多FPGA技术干货请关注FPGA 的逻辑技术专栏。