TA的每日心情 | 开心 2019-11-19 15:19 |
---|
签到天数: 1 天 [LV.1]初来乍到
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
# F) Q! r6 x1 K, A( _# X9 W: k3 T' C v' O& D+ y
$ Q( w% q. w, T7 kFPGA 入门容易, 精通难! 难的原因在在于,FPGA 的语法是描述语言(描述电路的语言), 用语言描述的电路越接近电路本身的特性,则综合后电路则越可靠!越简单的原始语言产生电路越符合电路实际特性!4 n: k. D! ~6 f+ ?' ~0 z; Y
探讨下面几种表达方法产生的电路可靠性) I3 V! _ W# Y/ b" J1 o7 W3 C6 U
1.if 语句的表达方式其一
8 n7 N' w2 s8 B2 X- \ &1 if rst='1' then % j% ?: A! `8 V! i5 W# o; H/ u2 N
elsif clk'event and clk='1' then
6 f# k4 N; X" y7 f: h# ` sum<='1';2 }2 H# a* U- ?" q( D- N
if (c='1') then
% o% s: A0 D0 y9 P ? sum<=b;8 g% a7 Z/ V W0 j/ ~
end if;3 v) U+ n( h" b7 F9 p9 I
end if;
1 K+ s+ j: C' X1 X9 i! K' }- ^上面这种表示方法意思: 在时钟上升沿,如果c='1', 则a 输出b ,否则a输出'1';4 c2 B' l; L$ G" |% t
经过Quartus @ II 综合后的电路如下:
, `: b- W: }% ^
; f) |9 P j7 l' f上图中,我们可以看到,定义了但没使用的输入脚SEL,D,A都被接到地了. 占用端口,但都内部强制到地.IF 条件语句综合成一个选择器,连接到D触发器的输入端, 上面的电路完整表达语法想要的意思.# g: ?0 p* R% O0 ?+ M8 u, s
对上面的语句进行修改如下,看看电路会发生改变吗?
6 l- K8 q4 h1 J0 W' o2 E &2 if rst='1' then elsif clk'event and clk='1' then
/ l8 M, b" a S; @) z if (c='1') then
$ h" p9 A! g; _: M* a5 ^- I! e sum<=b;' }4 O( V5 o3 o7 e5 h
else
5 B5 Q' T) |7 k B/ U1 \+ U) G sum<='1';
- ^( A) Y D8 r4 `( |& M: S end if;
( a, c$ m8 E" A3 l. |: P" f" @/ v end if;
) C( y( w- I4 b综合后电路如下:
4 u1 q& L8 M* n% G
/ W5 v; L* H, J7 j. Y; W2 }0 K
可以比较, 上面两个电路完全一样. 但是&1电路描述比较晦涩难懂,需要综合器正确理解设计者本来意图,才能生成正确的电路;&2电路结构简单,清晰明了!
: ]8 O& j. b/ @& I$ Z* Y2 f0 Z 所以推荐用第二种电路描述方式!' D# s& a0 S/ l
2. if 语句表达方式其二
* a1 H$ p3 ], q6 Q& [ &1 if rst='1' then elsif clk'event and clk='1' then
/ J- j9 r# R' {1 w if (c='1') then; Z+ D% i/ E4 B+ [- ?2 O
sum<=b;
1 |6 o- X$ w( i# d j. f end if;
/ G/ I0 S) Q0 Q end if;
7 C; ^( e3 L! w8 l" V- p上面语句设计者本意是: c='1', 输入b 赋值给sum;( s/ ?; W: g& E0 z7 `1 G' |
经过Quartus @ II 综合后的电路如下:5 H1 \0 b2 l+ J0 m$ o
' w7 Y1 j5 S/ Y5 D' }" R8 `% W
上面的电路综合后,把C条件作为D触发器ENA 使用, 电路结果简单,电路符合设计者意图!# q1 C) K' L. V5 x: J
如果我们上面语法修改一下,也符合设计者意图,但我们看看其电路能否有改变?6 {0 E; k/ @1 D
&2 if rst='1' then elsif clk'event and clk='1' then
6 y2 E$ O0 M0 n5 P4 Y5 u, b if (c='1') then2 V7 d1 ?3 u$ f& ^- k% X& o* {
sum<=b;( V+ @/ l; q/ O% b8 }* x
else
, x# K/ i9 ~& E; O! Z1 Q+ { sum<=sum;
9 ^+ M4 M2 h0 ? end if; z% p, T# R7 I( S* e
end if;# _ m4 A4 c# X
3 Y6 _/ ?5 k1 H, v* X, C3 a
) o7 D; y1 V- ~5 u8 D: n需要说明的,sum 需要描述为buffer 输出类型
1 l. B/ M" N3 M( A) K/ f! ^其综合后电路如下:
6 J. }& T. V* D H/ J) D4 r
& G& K l8 I$ Z$ f/ \& `
综合后电路结构并没有发生改变, 但是后者电路不描述不符合电路本身特性,D触发器电路输入不能接输出, 否则容易造成干扰,上面电路实际产生并没有这种情况,这只是由于综合器理解了设计者意图,才能综合成楼上电路的结果!
* g8 d( y3 B N; b/ u9 O
' D" h O: n' I+ @
* M: o7 B) @, `% C+ t; D! } Y2 C& J6 B3 {( i
|
|