原创 Xilinx FPGA学习笔记(2)——verilog中wire 和 reg

2017-10-22 15:07 4007 11 11 分类: FPGA/CPLD

一、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 [8:0] 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 [8:0] 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.两者都可以连接到模块实例的输入端口;








PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
EE直播间
更多
我要评论
0
11
关闭 站长推荐上一条 /3 下一条