FPGA设计中的编程技巧
随着
电子技术的发展,芯片的复杂程度越来越高,人们对数万门乃至数百万门
电路设计的需求也越来越多;采用硬件描述语言HDL的设计方式应运而生,而在利用硬件描述语言HDL进行FPGA设计时,高效的代码有利于得到较为理想的电路。" I% H* A; a' f# W6 8 o
Verilog HDL因其提供了非常精炼和易读的语法而受到广大硬件工程师的青睐。本文讨论了在进行FPGA设计中,如何通过编写VerilogHDL代码达到预期的设计要求。
2 设计技巧5 c) l5 |% x B% v: y
+ D/ _& L$ a9 m
2.1 如何减少关键路径上的组合逻辑单元数: Y$ E* E8 Y" R/ m! U2 t
; G/ V. [+ C n6 R; }9 U4 M: ?& r: q
在FPGA中每条关键路径上的逻辑单元都会增加一定的时延。因此为了保证关键路径能满足时序约束,设计时必须考虑在关键路径上如何减少逻辑单元的使用。下面的例子说明了如何减少关键路径上的逻辑单元个数。 G8 l, u1 L, U7 l
$ l3 s* k; V3 L
首先假设"cri
tical"所经的路径是一条关键路径,在下面的例子中"critical"经过了2个逻辑单元。
2.2 资源共享
8 e4 M, F3 v& d
资源共享能减少宏单元的使用数量,因此在设计时同样可以通过编写合适的程序来达到资源共享的目的。下面举一个简单的例子来说明。
下面是1个二选—选择器和2个加法器。
! ?6 3 k9 w* p. q4 N- I' r
2.3 为优化逻辑而进行的复制7 x5 J9 {! Q' b1 K, _; 9 f6 d
3 @9 Q/ N$ Y' D& K9 g6 H
设计人员在利用综合工具对可编程逻辑器件进行综首时,都会面临一个问题,即综合工具并不能对复杂的设计实现最佳的布局、布线结果。大多数综合工具都有一个扇出控制.因此,为了优化设计,建议在设计代码中产生复制逻辑,许多综合工具都可以优化复制,但必须告诉综合
工具保持其重复逻辑.
9 G- c3 N8 {# P- e* O. K% w5 [1 G
2.3.1 复制组合逻辑
如果一个扇出大于1的组合逻辑不能在CLB内部实现,这时需要对组合逻辑进行复制。下面给出组合逻辑复制的例子。5 N+ }" z0 C8 S: x
& r8 ^) q! }& s9 s
可以重新书写代码达到组合逻辑复制的目的。/ z* b# L- s/ ]. z) I& ~$ A; ~0 n8 b
2.3.2复制触发器
3 B4 d8 w# ( u8 a" z5 H*
为了优化设计,可对大扇出信号的触发器进行复制。因为大扇出信号能减缓布线速度,并增加布线的难度。可以通过复制触发器解决2个问题:减小扇出,缩短布线延迟;复制后每个触发器可以驱动芯片的不同区域,有利于布线。下面给出复制触发器的例子。5 d. C- I; W. ?. I
3 结 语: g% u* G6 z3 q# a
随着硬件描述语言HDL被广泛接受,掌握好硬件描述语言HDL对缩短开发时间,提高设计效率大有裨益