TA的每日心情 | 开心 2019-11-19 15:19 |
---|
签到天数: 1 天 [LV.1]初来乍到
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
verilog语句结构到门级的映射
+ r7 N& Z1 X3 L3 p* k4 P1 h9 s. [9 A2 h' F# K0 q* O8 E
1、连续性赋值:assign # {; b2 N! K1 F4 P; z
连续性赋值语句逻辑结构上就是将等式右边的驱动左边的结点。因此连续性赋值的目标结点总是综合成由组合逻辑驱动的结点。Assign语句中的延时综合时都将忽视。
4 s/ U' w4 j$ ]2 J6 R2、过程性赋值:
, e) u: u# D8 x过程性赋值只出现在always语句中。
7 C" O: d2 j: g X$ P0 Z阻塞赋值和非阻塞赋值就该赋值本身是没有区别的,只是对后面的语句有不同的影响。 ) _0 ^# I/ W# K3 K& O
建议设计组合逻辑电路时用阻塞赋值,设计时序电路时用非阻塞赋值。 1 {" s- l' u& m( S9 v j* R% h
过程性赋值的赋值对象有可能综合成wire, latch,和flip-flop,取决于具体状况。如,时钟控制下的非阻塞赋值综合成flip-flop。 ! A' T) {" G, l* d8 `' Q
过程性赋值语句中的任何延时在综合时都将忽略。
$ @7 C5 d" ]3 D" R9 l, e建议同一个变量单一地使用阻塞或者非阻塞赋值。
( X$ q' g' P4 ]+ A8 x: e3、逻辑操作符:
) M( P4 }% ?. C5 f# b/ f" G逻辑操作符对应于硬件中已有的逻辑门,一些操作符不能被综合:===、!==。
% z8 G8 j% S+ l3 Q$ j% a4、算术操作符: ! e6 p) v% C' V8 c
Verilog中将reg视为无符号数,而integer视为有符号数。因此,进行有符号操作时使用integer,使用无符号操作时使用reg。 & i& ]: x3 w% w' g. x
5、进位: ' i9 z8 b/ }& m# l9 ~9 `$ T* d
通常会将进行运算操作的结果比原操作数扩展一位,用来存放进位或者借位。如:
; d( A8 n Q& [' F$ Q& B/ vWire [3:0] A,B;
4 V5 Y' D) K$ D# ]3 ~/ vWire [4:0] C; 4 b3 @8 J8 ^" q! v
Assign C=A+B;
% G# `8 y& N# z, {; _C的最高位用来存放进位。 6 d/ }% L7 u- @% o5 F4 V- {' L
6、关系运算符:
) V, A L1 |, O: S( {关系运算符:<,>,<=,>= 8 ^7 V# D4 X" h4 A* o4 G
和算术操作符一样,可以进行有符号和无符号运算,取决于数据类型是reg,net还是integer。 # W% s# v7 P4 P: M0 a' ]
7、相等运算符:==,!= ; p# u, q; B# `3 J
注意:===和!==是不可综合的。 ' a; a* h9 c4 J6 b0 h
可以进行有符号或无符号操作,取决于数据类型
! N7 Q5 g3 A+ A8、移位运算符: 3 b. ^: m, i8 \
左移,右移,右边操作数可以是常数或者是变量,二者综合出来的结果不同。 ; M5 A5 Z* A3 W, e
9、部分选择:
. H/ `# h- x8 ^$ d# C部分选择索引必须是常量。
. |/ \2 a: U) l& e! b8 E9 E$ o10、BIT选择:
+ ]4 L0 w y0 d* i- v% F- d) K1 mBIT选择中的索引可以用变量,这样将综合成多路(复用)器。
) n, }: U: z( {) `- @5 C11、敏感表:Always过程中,所有被读取的数据,即等号右边的变量都要应放在敏感表中,不然,综合时不能正确地映射到所用的门。
8 S; D7 n" `* N0 L1 A. A+ x* b12、IF: " l: z( \+ V% o$ v
如果变量没有在IF语句的每个分支中进行赋值,将会产生latch。如果IF语句中产生了latch,则IF的条件中最好不要用到算术操作。Case语句类似。Case的条款可以是变量。 9 @2 @& z* n( V+ w3 B0 Z
如果一个变量在同一个IF条件分支中先赎值然后读取,则不会产生latch。如果先读取,后赎值,则会产生latch。
9 r' v: m# V# n" ^& p/ z13、循环: 1 \ Y! k" v9 x: r
只有for-loop语句是可以综合的。
- ]' p- C+ F$ K2 [, v* s# B1 E14、设计时序电路时,建议变量在always语句中赋值,而在该always语句外使用,使综合时能准确地匹配。建议不要使用局部变量。 4 y; V; K, E9 }' s
15、不能在多个always块中对同一个变量赎值
& |0 l2 A/ F/ H# w16、函数
5 K; X7 W' E1 R0 j; [5 |+ K! V函数代表一个组合逻辑,所有内部定义的变量都是临时的,这些变量综合后为wire。
4 d" ]4 Y V, O4 X' L' m( S+ J0 E17、任务: i, ]9 w7 S9 G( e, |
任务可能是组合逻辑或者时序逻辑,取决于何种情况下调用任务。
* r+ A$ e/ @: a; A" Z. W9 A" ^7 s18、Z: $ X6 U) I: x4 R0 x' u
Z会综合成一个三态门,必须在条件语句中赋值
5 N2 g" c, I) D) a- L19、参数化设计: ) E: ]& ^* Y# T
优点:参数可重载,不需要多次定义模块 |
; N3 D4 y8 l3 _9 r/ e( O |
|