Verilog RTL
级语法常用概念整理
RTL
级语法就是可综合的那部分语法内容,它主要用于描述数据如何在寄存器之间传输、
控制和处理。所谓
RTL
级建模也就是用这部分语法内容区描述实际电路的行为。
RTL
级编码过程是心中先有电路,再将它翻译成
Verilog
代码。电路行为的先后顺序通过时
钟节拍的顺序来实现。
RTL
级语法:能综合成门级电路
一、语法基本概念
1
、
模块基本结构:基本单元是“模块(
module
)
”
,一个
Verilog
里可以有很多
module
。
2
、
端口定义:在顶层模块中,端口对应的物理模型是芯片的管脚,在内部子模块中,端
口对应的物理模型则为内部连线。
3
、
三态输出端口:信号设三态,相当于与总线断开。
4
、
对双向口(
inout
)建模:
FPGA
内部没有双向端口,内部信号均为单一流向,输入输
出采用单独信号表示,不能复用在一起,只有芯片接口的信号才能定义为双向口。
二、
数据类型
1
、
数据宽度:
wire[15:0] a; //
描述了一个位宽为
16
的信号。
2
、
接线(
Net
)
:凡电路连接支点均称为接线,声明用
wire
型,并以
Z
为
default
值。总
线(
Bus
)则是接线的组合,声明也用
wire
型(
wire
型数据不能赋值)
。在实际应用中,
凡
是使用连续赋值语句(
assign
)赋值的信号都定义为
wire
型,在模块例化时,要将具有连线
意义的信号定义为
wire
型。
3
、
寄存器型(
reg
型)
:在时序逻辑中它对应的是寄存器,在组合逻辑中表示一个节点,在
实际应用中,凡是在
initial/always
块中的被赋值信号都必须定义为
reg
型。
reg[31:0]
mem[1023:0];//
定义了一个位宽为
32
,深度为
1024
的存储单元。
4
、
参数型(
parameter
)
:用来定义在程序内部仿真时保持不变的常数,以增进程序的可读
性。
三、
语句
1
、
assign
语句:无论等式右端怎样变化,等式左端的值马上产生相应变化。连续赋值是对
组合逻辑的描述。等式左端的数据必须是