TA的每日心情 | 开心 2019-11-19 15:19 |
---|
签到天数: 1 天 [LV.1]初来乍到
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
verilog语句结构到门级的映射
: v0 H0 p! J8 v
5 r8 g5 I B! f, T0 S! u; d1、连续性赋值:assign
- z- e! I; v- ~3 r- H n4 W连续性赋值语句逻辑结构上就是将等式右边的驱动左边的结点。因此连续性赋值的目标结点总是综合成由组合逻辑驱动的结点。Assign语句中的延时综合时都将忽视。
9 h! p; t% T6 u, L0 W; f& ` E2、过程性赋值:
* C! ?4 }8 n( B7 V& l8 t4 D过程性赋值只出现在always语句中。
8 C: h! S/ K0 @; h6 k V6 `# }阻塞赋值和非阻塞赋值就该赋值本身是没有区别的,只是对后面的语句有不同的影响。 ^& u2 C0 M" Y. o
建议设计组合逻辑电路时用阻塞赋值,设计时序电路时用非阻塞赋值。
- I0 ]. d& ~7 x2 J% q9 \过程性赋值的赋值对象有可能综合成wire, latch,和flip-flop,取决于具体状况。如,时钟控制下的非阻塞赋值综合成flip-flop。 9 I( @: ^1 x: c3 m
过程性赋值语句中的任何延时在综合时都将忽略。
5 v S% I- D' t$ l/ ^建议同一个变量单一地使用阻塞或者非阻塞赋值。
5 }" A# O/ R& L- G" _3、逻辑操作符: * K O( F1 x9 O3 S
逻辑操作符对应于硬件中已有的逻辑门,一些操作符不能被综合:===、!==。 |& r$ z1 D' z5 w2 f* ?+ t
4、算术操作符: 3 b) G2 M4 n( W
Verilog中将reg视为无符号数,而integer视为有符号数。因此,进行有符号操作时使用integer,使用无符号操作时使用reg。
b2 |" w8 N9 F6 [* Z) Q5、进位: # u8 s$ p/ S: [# x. z: P p
通常会将进行运算操作的结果比原操作数扩展一位,用来存放进位或者借位。如: & X2 T6 {' f: C# z
Wire [3:0] A,B; ; a& E- \ [# ~. A& p0 L7 {) N9 o2 Y
Wire [4:0] C; ; X3 }* q1 ~* i# f5 G6 b; v3 H
Assign C=A+B;
( Y5 W: X' I& ^+ N. q# zC的最高位用来存放进位。
9 {: E* {) r! X$ W8 }6、关系运算符:
. G- z+ V: ]7 H( t: [8 c关系运算符:<,>,<=,>= - x! s- B, l2 U2 e# y9 ^, B! X+ R
和算术操作符一样,可以进行有符号和无符号运算,取决于数据类型是reg,net还是integer。
& K; {: ^7 q8 i- b7、相等运算符:==,!= : `) B7 c; o! R/ G% g/ w8 s
注意:===和!==是不可综合的。 2 x( J2 h" w+ v4 [( S$ J: w
可以进行有符号或无符号操作,取决于数据类型 , V' ^( G$ }3 W: C# w, n
8、移位运算符:
4 I1 J) |: \4 |左移,右移,右边操作数可以是常数或者是变量,二者综合出来的结果不同。
4 H |' A, R T9、部分选择: + V/ n" d e. V' m& `% X
部分选择索引必须是常量。 % @5 w% q7 W" o4 i+ ^( G
10、BIT选择:
# a. b# o2 I; o) UBIT选择中的索引可以用变量,这样将综合成多路(复用)器。 - s: O& y- J+ w' \& N: Y
11、敏感表:Always过程中,所有被读取的数据,即等号右边的变量都要应放在敏感表中,不然,综合时不能正确地映射到所用的门。
8 [$ W! I7 R1 \1 J. @12、IF:
. P: J9 g1 [5 S9 _6 g如果变量没有在IF语句的每个分支中进行赋值,将会产生latch。如果IF语句中产生了latch,则IF的条件中最好不要用到算术操作。Case语句类似。Case的条款可以是变量。
/ ]6 H0 M+ |: ~& M. O如果一个变量在同一个IF条件分支中先赎值然后读取,则不会产生latch。如果先读取,后赎值,则会产生latch。 7 ?) G/ G5 [7 L; O
13、循环:
+ ~0 o7 U# ^) e9 w0 X$ J, U只有for-loop语句是可以综合的。 / {! N7 q8 D, `* `8 t- N/ D
14、设计时序电路时,建议变量在always语句中赋值,而在该always语句外使用,使综合时能准确地匹配。建议不要使用局部变量。 , k p9 c. i: G$ H
15、不能在多个always块中对同一个变量赎值 & r) g+ }; s# E/ N) j& @/ F- x
16、函数
4 i1 @5 O& L$ r$ }& K* a* d1 ?7 u函数代表一个组合逻辑,所有内部定义的变量都是临时的,这些变量综合后为wire。 4 r5 V6 I7 o, |
17、任务: 6 N: E) Z- v5 H8 r7 s' n3 y
任务可能是组合逻辑或者时序逻辑,取决于何种情况下调用任务。 ; v7 G4 ]$ G6 @6 w/ d- |" a% q
18、Z: / [5 O: q! S5 i- c1 U8 ^- j
Z会综合成一个三态门,必须在条件语句中赋值
% K. B7 F# `4 ^1 H5 y: Z19、参数化设计:
/ }/ L0 A; L4 j1 q b, ^% w q优点:参数可重载,不需要多次定义模块 |
% M1 A- C& ?0 x# [1 N+ p) m& z& M6 F |
|