如何编写和验证简单的纯组合逻辑模块——《Verilog数字系统设计教程》读书笔记(二)
每个模块的设计工作包括3个部分:1,电路模块的设计;2,测试模块的设计;3,设计文档的编写和整理。测试模块的设计和文档编写是比电路模块设计更为重要的设计环节,测试是否严密和完整决定了系统设计的成败,设计文档的完整和准确也是系统设计成败的关键,缺少完整的设计说明文件,就不能维持设计工作的连续性,为今后的调试和维护带来困难。组合电路逻辑在数字系统中起着基本组件的作用,也可以说,如果不了解组合逻辑的构成,就不可能对数字逻辑电路系统有任何了解。采用Verilog或VHDL高层次设计方法,也是以基本组合逻辑电路为基础的。如果没有基本组合逻辑电路知识,即使对Verilog 或 VHDL 语法了如指掌,也不可能设计出结构合理的复杂系统。
1.0 加法器
要想用Verilog描述一个加法器其实很简单,但是要想知道FPGA里面到底是怎么通过最简单的与非门实现的还是有点难度的。从半加器到全加器在全加器的串联再到超前进位加法器和超前进位产生器,我们描述的加法器到底是串联的还是并联的呢?里面的布局布线是怎样的呢?时序又是怎么样的呢?这是目前我研究的重点。
在实现算法时(如卷积运算和快速傅里叶变换),常常会用到加运算。由于多位并行加法器是由多层组合逻辑构成的,加上超前进位形成的逻辑虽然减少了延时,但还是有多级门和布线的延迟,而且随着位数的增加延迟还会积累,这样就使加法器的使用频率受到限制,这里是指计算的节拍(即时钟)必须大于运算电路的延迟,只有在输出稳定后才能输入新的数据进行下一次运算。如果设计的是32位或者是64位的加法器,延迟就会更大。为了加快计算速度,可以在运算的组合逻辑层中加入多个寄存器组来暂存中间结果。也就是采用数字逻辑设计中常用的流水线(pipe-line)办法,来提高运算速度。
这样设计的加法器在行为仿真时是没有延时的。借助综合器,可以将以上代码自动将其综合成典型的加法器结构。综合器有许多选项可供设计者选择,以便来控制自动生成的电路性能。设计者可以考虑提高电路的速度或者是节省电路元件以减少电路占用硅片的面积。综合器会自动根据你的选项为你挑选一种基本加法器的结构,有的综合器还可以根据用户对运算速度的要求插入流水线结构。
1.1 乘法器
用Verilog描述一个乘法器也非常容易,想要把它是怎样实现的具体搞清楚也还是要下点功法地。乘法器的最小单元MU是由一个与门和一个全加器组成的。多位乘法器是由许多MU组成的这就有了 逐位进位并行乘法器 和 进位节省乘法器。里面具体的传输延时和进位延时我还是不会算。悲哀,但我会一天进步一点点。