• 已解决 73482 个问题
  • 已帮助 5993 位优秀工程师

reg wire区别

guyuemao 2017-04-20 浏览量:654
reg wire区别 
0 0 收起

我来回答

上传资料:
选择文件 文件大小不超过15M(格式支持:doc、ppt、xls、pdf、zip、rar、txt)
最佳答案
  • 组合逻辑输出变量,可以直接用assign。

    如果不指定为reg类型,那么就默认为1位wire类型,故无需指定1位wire类型的变量。

    专门指定出wire类型,可能是多位或为使程序易读。

    wire只能被assign连续赋值,reg只能在initial和always中赋值。


    其实他们是不同的抽象级别,wire 如同vhdl中的signal类型,是和实际的物理连接对应的,而reg属于算法描述层次用的类型,和实际电路没有直接的对应关系,也就是说它相当于c语言中的变量(int,float等),vhdl中的variable。reg不和实际的电路如寄存器对应,高层次的描述时用。而always其实算是算法级描述的语句,所以其中的变量必须声明为reg


    具体的可以参考这篇文章http://blog.sina.com.cn/s/blog_5400f7380100hie4.html​

    • 发布于 2017-04-20
    • 举报
    • 评论 0
    • 0
    • 0

其他答案 数量:2
  • wire,可以當輸出輸入上的連線,不可暫存,不可驅動狀態,使用assign或者=

    reg,可以當輸出輸入,可暫存,並可用來驅動下一個狀態,使用<=賦值,放置在always和initial來指定下一狀態/初始值

    如果是combinational circuit,基本上兩者都可以使用

    但如果是sequential circuit,則需要暫存的狀態值需要reg存放,wire則否

    以上供參考

    • 发布于2017-04-20
    • 举报
    • 评论 0
    • 0
    • 0

  • 在Verilog中,wire永远是wire,就是相当于一条连线,用来连接电路,不能存储数据,无驱动能力,是组合逻辑,只能在assign左侧赋值,不能在always @ 中赋值;
    reg可以综合成register,latch,甚至wire(当其只是中间变量的时候),可以用于组合逻辑或者时序逻辑,能存储数据,有驱动能力,在always @模块表达式左侧被赋值。
    两个共同具有性质:都能用于assign与always @模块表达式的右侧。

    -----------------------------------------------------------------------------
    看到一篇讲两者区别的很棒的文章inst.eecs.berkeley.edu/
    • 发布于2017-04-20
    • 举报
    • 评论 0
    • 0
    • 0

相关问题

问题达人换一批

reg wire区别