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

verilog语句结构到门级的映射

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

    [LV.1]初来乍到

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

    EDA365欢迎您登录!

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

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

    : v0 H0 p! J8 v
    5 r8 g5 I  B! f, T0 S! u; d
    1、连续性赋值: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
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    关闭

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

    EDA365公众号

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

    GMT+8, 2025-10-8 16:19 , Processed in 0.156250 second(s), 24 queries , Gzip On.

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

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

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