TA的每日心情 | 开心 2019-11-19 15:19 |
---|
签到天数: 1 天 [LV.1]初来乍到
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
verilog语句结构到门级的映射
7 M" O' K1 Y. G; O0 F$ S: w
# U9 P: Z1 a6 O6 m% G# U1、连续性赋值:assign
; W$ W6 n, u! k" i u& ]连续性赋值语句逻辑结构上就是将等式右边的驱动左边的结点。因此连续性赋值的目标结点总是综合成由组合逻辑驱动的结点。Assign语句中的延时综合时都将忽视。 - g( }$ S* r5 d) i. w
2、过程性赋值: 4 _4 U0 f$ R) i" p
过程性赋值只出现在always语句中。 ( b4 ]& e1 x- P6 [! ], v
阻塞赋值和非阻塞赋值就该赋值本身是没有区别的,只是对后面的语句有不同的影响。
6 Y) T* h6 P$ D! L) C建议设计组合逻辑电路时用阻塞赋值,设计时序电路时用非阻塞赋值。
3 i# N/ F, ]* t过程性赋值的赋值对象有可能综合成wire, latch,和flip-flop,取决于具体状况。如,时钟控制下的非阻塞赋值综合成flip-flop。
$ g, Z% e# ]$ Y$ }' S) c过程性赋值语句中的任何延时在综合时都将忽略。
4 W; a" Z5 w5 r# O( c" J9 `建议同一个变量单一地使用阻塞或者非阻塞赋值。
) ]4 l( Z) |! X' R- s) w! P3、逻辑操作符:
* J5 g0 f6 ]5 D+ n逻辑操作符对应于硬件中已有的逻辑门,一些操作符不能被综合:===、!==。 % z5 k$ K; @* M! D! R9 v: ]# x
4、算术操作符:
/ Y2 L- S% I, \/ p# L4 _8 t+ [1 rVerilog中将reg视为无符号数,而integer视为有符号数。因此,进行有符号操作时使用integer,使用无符号操作时使用reg。 S2 B* q# c3 e- x+ C: l
5、进位: $ A9 g6 Y U3 {- D' Z, g
通常会将进行运算操作的结果比原操作数扩展一位,用来存放进位或者借位。如: ! T5 O$ j, F& P% p3 v
Wire [3:0] A,B; / q! l* z' h% z# k0 Z, X8 Q3 c
Wire [4:0] C;
: |/ |& c, U- x8 LAssign C=A+B;
" `! d8 U7 d8 v Y$ v/ X1 z* JC的最高位用来存放进位。 , y( Q- J3 g( T& i: t
6、关系运算符: " W8 O7 y1 {0 D4 K5 A* R' Y8 d
关系运算符:<,>,<=,>= 6 z6 x+ Z4 h; g* U
和算术操作符一样,可以进行有符号和无符号运算,取决于数据类型是reg,net还是integer。 ( K" I, ~. A/ r' S' X
7、相等运算符:==,!= * X6 f% {8 q1 [ k2 y
注意:===和!==是不可综合的。 + C& G1 T) _0 O% K% ]; x/ p! C
可以进行有符号或无符号操作,取决于数据类型
: \/ y6 E+ h; `/ x3 ?: z/ |8、移位运算符: 8 I4 e' o8 |. k
左移,右移,右边操作数可以是常数或者是变量,二者综合出来的结果不同。 ; i8 u/ g9 {$ g8 Q( B) x, k! T* T
9、部分选择:
/ i# y; Q$ S; ^( o) w8 t* v ?部分选择索引必须是常量。 8 j* k" \; h8 R2 @% @. E
10、BIT选择:
8 S, [% t& X, d+ a; _' z* a" W0 TBIT选择中的索引可以用变量,这样将综合成多路(复用)器。 0 T3 y! [8 \/ e3 q
11、敏感表:Always过程中,所有被读取的数据,即等号右边的变量都要应放在敏感表中,不然,综合时不能正确地映射到所用的门。
3 M. m/ E! L7 Q. H V12、IF: 5 A+ }$ a$ P3 [, U7 x
如果变量没有在IF语句的每个分支中进行赋值,将会产生latch。如果IF语句中产生了latch,则IF的条件中最好不要用到算术操作。Case语句类似。Case的条款可以是变量。 " _" t, E. [; f% c
如果一个变量在同一个IF条件分支中先赎值然后读取,则不会产生latch。如果先读取,后赎值,则会产生latch。 6 ?' E! D% E b/ l, k. X
13、循环: 9 @# H; b$ x- g* C* M) ?
只有for-loop语句是可以综合的。 . M; U% F# M( p9 j; P, c
14、设计时序电路时,建议变量在always语句中赋值,而在该always语句外使用,使综合时能准确地匹配。建议不要使用局部变量。
$ v' H; g7 T& x1 B' j$ s) J15、不能在多个always块中对同一个变量赎值 & c8 e0 R% g+ L
16、函数 7 Z: {0 M, y$ _2 _2 N4 ]" Z' r- b
函数代表一个组合逻辑,所有内部定义的变量都是临时的,这些变量综合后为wire。
/ b* c; Y6 D* {; l) c6 {4 d# J17、任务:
9 X# ^$ K- B7 v" |" L任务可能是组合逻辑或者时序逻辑,取决于何种情况下调用任务。 ' E5 Q) r# R _ x! f7 v$ v$ g7 b6 ~
18、Z:
% `- r8 Z2 A/ S# b# f6 X: dZ会综合成一个三态门,必须在条件语句中赋值
7 S3 @! s6 g6 ?! s+ c. [4 I19、参数化设计: ! ?9 p- F# ^ @6 \! |" D8 K4 u3 @
优点:参数可重载,不需要多次定义模块 | . t4 Q5 m1 A( k9 R! ]
|
|