找回密码
 注册
关于网站域名变更的通知
查看: 578|回复: 1
打印 上一主题 下一主题

verilog语句结构到门级的映射

[复制链接]
  • TA的每日心情
    开心
    2019-11-19 15:19
  • 签到天数: 1 天

    [LV.1]初来乍到

    跳转到指定楼层
    1#
    发表于 2019-3-14 08:30 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

    EDA365欢迎您登录!

    您需要 登录 才可以下载或查看,没有帐号?注册

    x
    verilog语句结构到门级的映射

    7 M" O' K1 Y. G; O0 F$ S: w
    # U9 P: Z1 a6 O6 m% G# U
    1、连续性赋值: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! ]
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    关闭

    推荐内容上一条 /1 下一条

    EDA365公众号

    关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

    GMT+8, 2025-7-29 02:28 , Processed in 0.125000 second(s), 23 queries , Gzip On.

    深圳市墨知创新科技有限公司

    地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

    快速回复 返回顶部 返回列表