TA的每日心情 | 开心 2019-11-19 15:19 |
---|
签到天数: 1 天 [LV.1]初来乍到
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
* B/ _5 |# H5 p( v* }/ L; R7 P I- G% z t# w
1 `7 Y! x0 t! T4 N* F( s$ ]
FPGA 入门容易, 精通难! 难的原因在在于,FPGA 的语法是描述语言(描述电路的语言), 用语言描述的电路越接近电路本身的特性,则综合后电路则越可靠!越简单的原始语言产生电路越符合电路实际特性!
" Y4 ]! r' H- j- o; e 探讨下面几种表达方法产生的电路可靠性
- A+ m+ u9 @6 }2 `+ L1 r 1.if 语句的表达方式其一
3 [4 r$ c% x0 b3 l2 ? K &1 if rst='1' then
6 H# u8 W8 ^9 s, f( i1 `' E- L* b elsif clk'event and clk='1' then# U7 L2 r' J; r
sum<='1';
% t- l5 |) r: F7 y6 c if (c='1') then E5 P% C; z ^; v. h
sum<=b;1 ^3 Z7 }+ G4 O' u" W
end if;+ c9 P; I, j! ?6 B/ \
end if;
! m; l! W8 a7 i! B& v. A上面这种表示方法意思: 在时钟上升沿,如果c='1', 则a 输出b ,否则a输出'1';
% o1 \: F! \, ^7 }. M经过Quartus @ II 综合后的电路如下:
( y3 @; z. r% @0 X: q4 S0 e- M
, [" ]- s' f& ^* @" }6 M- h上图中,我们可以看到,定义了但没使用的输入脚SEL,D,A都被接到地了. 占用端口,但都内部强制到地.IF 条件语句综合成一个选择器,连接到D触发器的输入端, 上面的电路完整表达语法想要的意思.
& L& @3 ^8 m6 ?( z- I) r对上面的语句进行修改如下,看看电路会发生改变吗?
& u, i+ T# c+ S &2 if rst='1' then elsif clk'event and clk='1' then
2 {/ {0 k8 r0 k9 H0 e2 M. M/ Q# p if (c='1') then
2 b A" `4 {4 i6 E( Q sum<=b;
5 R* L! U2 K! d+ e; v else
9 c3 v4 u1 l8 v& V sum<='1';
6 N8 [ [, S( `9 b( o& \7 w9 V4 U end if;
- ^# }5 {& x9 S8 b" }3 d end if;
+ z1 K7 T H, B* y) c综合后电路如下:# ] e; [/ U9 J5 k
) H3 B6 _+ @$ i8 v. e5 }
可以比较, 上面两个电路完全一样. 但是&1电路描述比较晦涩难懂,需要综合器正确理解设计者本来意图,才能生成正确的电路;&2电路结构简单,清晰明了!
! m$ U3 k+ u1 {. P% e 所以推荐用第二种电路描述方式!
! \( M9 ~8 `* Q- b1 `- w0 w! s4 [( I2. if 语句表达方式其二 : ]+ B9 E& C1 O; F, Y1 j q' s0 [
&1 if rst='1' then elsif clk'event and clk='1' then
! |! \4 l R) I if (c='1') then2 A6 y/ F0 F$ z& R: F
sum<=b;& d3 G! o, D: @9 k t1 m$ X
end if;
! e3 \6 [# H& y) [0 B end if;
2 y! j0 T" M0 }- k$ O' W- W上面语句设计者本意是: c='1', 输入b 赋值给sum;
( y" Y, \+ p8 c: [; A7 Y经过Quartus @ II 综合后的电路如下:
7 p; O" z$ Y) n
9 I2 b6 u2 G: x, D c9 {
上面的电路综合后,把C条件作为D触发器ENA 使用, 电路结果简单,电路符合设计者意图!
9 V# b' @5 N8 d) d如果我们上面语法修改一下,也符合设计者意图,但我们看看其电路能否有改变?- g' O; c% j! O' @
&2 if rst='1' then elsif clk'event and clk='1' then9 n. p! b* E a" D3 v% H, l
if (c='1') then
5 h/ r8 }* d w A7 [ sum<=b;
! i* x6 a2 n; J else
; V# _0 x% u7 j2 p sum<=sum;; p9 c$ C F" d" b
end if;
g; g8 ]# T; K3 f; } end if;" j9 E; ?5 V6 h" U* F
8 v/ z# O* ]: x" Z- K! P# e6 G
9 e) R( R9 I, @3 \
需要说明的,sum 需要描述为buffer 输出类型
3 w. R( v, @9 l8 I0 |2 B8 v/ {- G9 J其综合后电路如下:8 T8 b. k0 K" h3 q% Q, d
0 c1 J+ E5 ]: L9 x: i
综合后电路结构并没有发生改变, 但是后者电路不描述不符合电路本身特性,D触发器电路输入不能接输出, 否则容易造成干扰,上面电路实际产生并没有这种情况,这只是由于综合器理解了设计者意图,才能综合成楼上电路的结果!
! O7 R4 g8 @% w# |! m5 I/ I9 {( A& N: H
$ d- b, s7 [! @& V& h1 O
$ {3 c7 G* P9 g* H V" b9 I: q8 v+ p
|
|