十年 FPGA 开发经验工程师谈设计技巧
从大学时代第一次接触 FPGA 至今已有 10 多年的时间,至今记得当初第一次在 EDA 实验平
台上完成数字秒表、抢答器、密码锁等实验时那个兴奋劲。当时由于没有接触到 HDL 硬件
描述语言,设计都是在 MAX+plus II 原理图环境下用 74 系列逻辑器件搭建起来的。后来读研
究生,工作陆陆续续也用过 Quartus II、FoundaTIon、ISE、Libero,并且学习了 verilogHDL 语
言,学习的过程中也慢慢体会到 verilog 的妙用,原来一小段语言就能完成复杂的原理图设
计,而且语言的移植性可操作性比原理图设计强很多。
在学习一门技术之前我们往往从它的编程语言入手,比如学习单片机时,我们往往从汇编或
者 C 语言入门。所以不少开始接触 FPGA 的开发人员,往往是从 VHDL 或者 Verilog 开始入手
学习的。但我个人认为,若能先结合《数字电路基础》系统学习各种 74 系列逻辑电路,深
刻理解逻辑功能,对于学习 HDL 语言大有裨益,往往会起到事半功倍的效果。
FPGA 设计
当然,任何编程语言的学习都不是一朝一夕的事,经验技巧的积累都是在点滴中完成,FPGA
设计也无例外。下面就以我的切身体会,谈谈 FPGA 设计的经验技巧。
我们先谈一下 FPGA 基本知识:
1、硬件设计基本原则
FPGA(Field-Programmable Gate Array),即现场可编程门阵列,它是在 PAL、GAL、CPLD 等
可编程器件的基础上进一步发展的产物。它是作为专用集成电路领域中的一种半定制电路而
出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。
(1)速度与面积平衡和互换原则:
一个设计如果时序余量较大,所能跑的频率远高于设计要求,能可以通过模块复用来减少整
个设计消耗的芯片面积,这就是用速度优势换面积的节约;
反之,如果一个设计的时序要求很高,普通方法达不到设计频率,那么可以通过数据流串并
转换,并行复制多个操作模块,对整个设计采用“乒乓操作”和“串并转换”的思想进行处
理,在芯片输出模块处再对数据进行“并串转换”。从而实现了用面积复制换取速度的提高。
(2)硬件原则:理解 HDL 本质
(3)系统原则:整体把握
(4)同步设计原则:设计时序稳定的基本原则
2、Verilog 作为一种 HDL 语言,对系统行为的建模方式是分层次的。比较重要的层次有系统