概述
文章目录
- Verilog常用关键字
- 逻辑值
- 变量
- 参数
- 常量
- 赋值方式
- always语句
- assign语句
- 算术运算符
- 归约运算符、按位运算符
- 逻辑运算符
- 逻辑运算符
Verilog常用关键字
逻辑值
0:逻辑低电平,条件为假
1:逻辑高电平,条件为真
z:高阻态,无驱动
x:未知逻辑电平(不存在)
module:模块开始(模块名一般和文件名字相同)
endmodule:模块结束
input //输入信号关键字
output //输出信号关键字
inout //输入输出信号
变量
wire //线网型变量,可以看作为直接的连接,映射成一条真实的物理连线
reg //寄存器型变量,对某一时间状态点进行保存,真实的物理寄存器
参数
parameter和localparam都可以进行参数的定义
parameter实例化时参数可以修改
常量
基数表示法
格式:[换算为二进制后位宽的总长度] [`] [数值进制符号] [与数值进制符号对应的数值]
h:十六进制 d:十进制 o:八进制 b:二进制
8`d171:位宽是8bit,十进制的171
当总位宽大于实际位宽,则自动在左边补0,总位宽小于实际位宽,则自动截断左边超出的位数。
d7与 8
d7表示相同数值
8`d7换算为二进制2·d7为8·b7为8·b0000_0111,自动补五个0
2`d7换算为二进制则为2·b11,超过两位的部分被截断
若直接写参数,例如100,则表示位宽为32bit的十进制数100.
赋值方式
阻塞赋值:"="
a=1;
b=2;
c=3;
begin
a=b;
c=a;//每条语句顺序执行,执行完毕后才执行下一条语句
end
a=2;
b=2;
c=2;
非阻塞赋值:"<="
a=1;
b=2;
c=3;
begin
a<=b;
c<=a;//每条语句并行执行,互不干扰。
end
a=2;
b=2;
c=1;
always语句
always(posedge sys_clk or negedge sys_rst_n)
if(sys_rst_n==1`b0)//当复位信号rst有效时
cnt <=8`d0;
//给变量cnt赋初值为0
else
if(cnt==CNT_MAX)//当cnt达到设定的参数CNT_MAX的最大值时
cnt<=CNT_MAX
//cnt一直保持最大值
else
cnt<=cnt+8`d1;//每个计数周期加1
assign语句
assign po_flag=(cnt==CNT_MAX) ? 1`b1:1`b0;
//如果cnt满足cnt==CNT_MAX则将1`b1赋值给po_flag
如果不满足则将1`b0赋值给po_flag
算术运算符
+(assign c=a+b)
/
%(求模,或称为求余,要求%两侧均为整型数据,5%3的值为2,用在测试文件中)
//一般不用*和/
归约运算符、按位运算符
&作一元运算时表示归约运算符,&m表示将m中所有比特相与,最后结果为1bit。
&4`b111=1&1&1&1=1·b1
&4`b1101=1&1&0&1=1·b0
&作二元运算符时表示按位与,m&n是将m中每个比特和n中相对应的比特相与,
做运算时要保证m和n的比特数相等,最后的结果和m(n)的比特数相同。
4`b1010&4·b0101=4·b000
4`b1101&4·b1111=4·b1101
逻辑运算符
逻辑运算符两边都不为零结果为1,否则为0。
相与,
做运算时要保证m和n的比特数相等,最后的结果和m(n)的比特数相同。
4`b1010&4·b0101=4·b000
4`b1101&4·b1111=4·b1101
逻辑运算符
逻辑运算符两边都不为零结果为1,否则为0。
最后
以上就是威武手机为你收集整理的【FPGA】初识Verilog的全部内容,希望文章能够帮你解决【FPGA】初识Verilog所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复