我是靠谱客的博主 威武手机,最近开发中收集的这篇文章主要介绍【FPGA】初识Verilog,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

文章目录

          • 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与 8d7表示相同数值

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所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(32)

评论列表共有 0 条评论

立即
投稿
返回
顶部