66'AaA;0^i
V/t-
NBO&VYs|
#IxCI)!I{[
'_%`0p1
Ombvp;
一、wire(组合逻辑) u<nPJeE
1.wire用来连接模块实例化的输入和输出端口; ;mXw4_{
2.wire用作实际模块声明中输入和输出; /;9]LC.g
3.wire 元素必须由某些东西驱动,并且在没有被驱动的情况下,无法存储值; 3ms{gZbw
4.wire 元素必须由某些东西驱动,并且在没有被驱动的情况下,无法存储值; htHnQ4Q
5.wire元素是assign语句左侧唯一的合法类型; 8EAkM*D w
6.wire 元素是在基于Verilog的设计中连接两片的无状态方式; uDG#L6
7.wire 元素是在基于Verilog的设计中连接两片的无状态方式; (Q6}N'T
// 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));
qh9Ix
]y<<zQ_fhY
二、reg(组合和时序逻辑) KHt.g`1:R
1.reg可以连接到模块实例化的输入端口; Uv(Uj3D
2.reg 不能连接到模块实例化的输出端口; 5Y(f7,JX
3.reg 可以用作实际模块声明中的输出; 2z[A&s_
4.reg 不能 用作实际模块声明中的输入; AV^Sla7|_
5.reg是always 模块中 = 或者 <= 左侧的唯一正确类型; 3NC-)S
6.reg是initial模块中 = 左侧唯一的合法类型; R{A$hnhW6
7.reg**不能用在assign的左边**; Pdw[#X<[`
8.reg 当与always @(posedge Clock)块结合使用时,reg可用于创建寄存器。 4O'X+dv^I
//reg一些合法使用 wire A,B; reg I,J,K; // 1-bitreg [8:0] Wide; // 9-bitalways @(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 ~$Pz`amT|
m@^!?/as
三、wire 和 reg 何时可以互换 :,BKB*a\
1.两者都可以出现在assign语句和 always 模块中=或<=的右侧; Z4@GcdZ
2.两者都可以连接到模块实例的输入端口; A?/(W_Gt^M
a5# B&|#q
&ZUV=q%g9n