tag 标签: wire VS reg

相关博文
  • 热度 11
    2017-10-22 15:07
    3995 次阅读|
    0 个评论
    一、wire (组合逻辑) 1.wire用来连接模块实例化的输入和输出端口; 2.wire用作实际模块声明中输入和输出; 3.wire 元素必须由某些东西驱动,并且在没有被驱动的情况下,无法存储值; 4.wire 元素必须由某些东西驱动,并且在没有被驱动的情况下,无法存储值; 5.wire元素是 assign语句左侧 唯一 的合法类型; 6.wire 元素是在基于Verilog的设计中连接两片的无状态方式; 7.wire 元素是在基于Verilog的设计中连接两片的无状态方式; // wire 的一些正确使用         wire A,B,C,D,E ; //1-bit wide         wire Wide; //9-bit         assign A= B C;         always @(B or C)          begin          I=B | C;         end         mymodule mymodule_instance(.In(D),Out(E)); 二、reg (组合和时序逻辑) 1.reg可以连接到模块实例化的输入端口; 2.reg 不能 连接到 模块实例化的输出端口 ; 3.reg 可以用作实际模块声明中的输出; 4.reg 不能 用作实际模块声明中的输入; 5.reg是always 模块中 = 或者 = 左侧 的 唯一 正确类型; 6.reg是initial模块中 = 左侧唯一的合法类型; 7.reg**不能 用在assign的 左边**; 8.reg 当与always @(posedge Clock)块结合使用时,reg可用于创建寄存器。 //reg一些合法使用  wire A,B;  reg I,J,K;  // 1-bi treg Wide; // 9-bit always @(A or B) begin     I=A | B; // using a reg as the left - hand side of an always  initial begin // using a reg in an initial block     J=1'b1;     #1     J=1'b0; end  always @(posedge Clock) begin// using a reg to create a positive -edge - triggered register     K=I; end 三、wire 和 reg 何时可以互换 1.两者都可以出现在assign语句和 always 模块中=或=的右侧; 2.两者都可以连接到模块实例的输入端口; ​ ​