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

verilog语句结构到门级的映射

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

    [LV.1]初来乍到

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

    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
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    关闭

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

    EDA365公众号

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

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

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

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

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