关于 [size=0.9em]wire (可描述组合逻辑) 在Verilog中, wire 可以纯粹看作一根导线(或者任意位宽的总线)。在使用 wire 时需要注意以下几点语法规则: - [size=0.9em]wire 类型用于将模块例化时的输入输出端口连接到你设计的电路的其他地方。
- [size=0.9em]wire 类型在模块声明也作为输入输出。
- [size=0.9em]wire 类型必须被其他东西驱动而不能用于存储数据。
- [size=0.9em]wire 类型在 always@ 块中不能作为 = 或 <= 的左值。
- [size=0.9em]wire 类型是 [size=0.9em]assign 语句中左值的唯一合法类型。
- [size=0.9em]wire 类型可以将两个基于Verilog的设计相结合,是一种无状态的方法(并不是很明白这里指的是什么意思)。
- [size=0.9em]wire 类型只能用于组合逻辑建模。
下面这段程序给出了几种 wire 类型合法使用的例子 关于 [size=0.9em]reg (既可描述组合逻辑也可描述时序逻辑)reg 和wire有点类似,但能够存储信息(状态),类似寄存器。在使用 reg 时有以下这些语法规则: - [size=0.9em]reg 类型可以用于在模块例化时连接其输入。
- [size=0.9em]reg 类型不能用于在模块例化时连接其输出。
- [size=0.9em]reg 类型可以在模块声明时作为输出。
- [size=0.9em]reg 类型不能在模块声明时作为输入。
- [size=0.9em]reg 类型是 always@ 块中作为 = 或 <= 左值的唯一合法类型。
- [size=0.9em]reg 类型是 initial 块中作为 = 左值的唯一合法类型(用于Test Bench)。
- [size=0.9em]reg 类型不能作为 [size=0.9em]assign 语句的左值。
- [size=0.9em]reg 类型能用于创建寄存器,以用于 always@(posedge Clock) 块。
- [size=0.9em]reg 类型既可以描述组合逻辑也可以描述时序逻辑。
下面这段程序给出了几种 reg 类型合法使用的例子 [size=0.9em]wire 和 [size=0.9em]reg 的共性在下面这几种情况下 wire 和 reg 可以通用: - 都可以作为 [size=0.9em]assign 语句的右值以及 always@ 块中作为 = 或 <= 的右值。
- 都可以接到模块例化的输入端口。
|