1)注释
单行注释://
多行注释:/* */
2)常用关键字
module / endmodule
input
output
inout 双向端口定义
parameter 定义参数
wire 定义线类型数据
reg 定义寄存器类型数据
always 产生reg信号(有时钟时是reg,无时钟时是wire)
assign 产生wire信号
begin / end 语句的起始和结束
edge / posedge / negedge
case
default
endcase
if / else
for
3)程序框架
基本单元模块(block):端口定义+IO说明+内部信号声明+功能定义
4)
always:既可定义组合逻辑又可定义时序逻辑
assign :只能定义组合逻辑
always块内部是顺序执行的,多个always块之间是并列执行的
5)模块的调用(例化)
time_count #( //调用模块名称
.MAX_NUM (TIME_SHOW) //参数传递(带参数传递时,前面必须加#)
)u_time_count( //给例化的模块重新起一个名字
.clk (sys_clk), //端口连接
.rst_n (sys_rst_n), //端口连接
.flag (add_flag) //端口连接
);
模块例化输入端可以是wire或是reg,但输出端必须是wire类型的数据类型。
用于传递信号的变量位宽必须保持一致