Verilog语法笔记_基本概念

语法经常记混淆,忘掉细节,记录一下一些易错和遗忘的地方。

一、模块
相当于函数 —— module
//语法格式

module <模块名> (<模块端口列表>);
。。。
<模块内容、功能>;
。。。
endmodule

//ripple_carry_counter(脉动进位计数器)的例子
module ripple_carry_counter (q, clock, reset);

ouput [3:0] q;
input clk, rst;

//调用子模块
T_FF tff0 (q[0], clk, rst);
T_FF tff1(q[1], q[0], rst);
T_FF tff2(q[2], q[1], rst);
T_FF tff3(q[3], q[2], rst);

endmodule

//注意点:
1. module声明最后有;分号。
2. endmodule没有分号。
3. 可以在端口列表中定义input、output端口。
4. q前面的[3:0]代表位宽为4bit,后面如有[3:0]代表为4个值的向量。
5. module内部不能定义子module。

二、基本语法
1、注释(和c一样)
一行// 或者多行
2、数字声明
指明位数的数:2'b11(二进制)、16'd255(十进制)、8'o77(八进制)、12'habc(十六进制)
不指名位数的数(位宽和计算机硬件有关):23456(32位十进制)、'hc3(32位十六进制)
高阻态和不确定值:12'h13x(12位十六进制,四个最低位不确定)、32'bz(32位高阻值)

猜你喜欢

转载自blog.csdn.net/Mys_GoldenRetriever/article/details/82113104