Verilog语法

verilog
在这里插入图片描述
input,output:输入输出 ,reg: 寄存器
send_controller:模块名
在这里插入图片描述

reg[4:0] cnt :名称为cnt的一维数组,共有5位,cnt=5’b0给数组赋初始值00000(5个0);
在这里插入图片描述
wire finish:名称为finish的wire型变量,wire表示实际连线。
always @(posedge Clk) : 进程块,Clk为敏感信号,进程块一直执行,内部的变量如果要赋值只能是reg类型并且在这个块执行完后更新变量的值,读取变量时(“=”右侧变量)不受类型限制。posedge :上升沿
if else :if语句,当if后不止一句时要加上begin end(相当于“{”和“}”)
<= :非阻塞赋值,意思是同时执行完才一起赋值给变量。
在这里插入图片描述
case :case语句,case(tx_cnt) tx_cnt:是待判断的变量。注意要以endcase结尾;
在这里插入图片描述
上图是verilog模块调用,en0是模块的例化名,可以例化多个名字要不同,端口以.datain()形式输入。

函数调用:在同一文件下写下函数,调用时将函数名及参数输出,直接赋值给变量即可例如:
nextCRC16_D48({rx_data_handle2,rx_data_handle3,rx_data_handle4,rx_data_handle5,rx_data_handle6,rx_data_handle7},crc) == {rx_data_handle8,rx_data_handle9}

函数原型:
在这里插入图片描述
普通变量赋值:
在这里插入图片描述
延时445ns:
在这里插入图片描述
testbench写法:
在这里插入图片描述
不等于: !=

2023.8.22 更新
Verilog 常数
常数(Constant numbers)
常数是程序运行过程中,其值不可以改变的量。Verilog HDL提供了整数常数(Integer constants)和实数常数(Real constants)两种常数类型。

整数常数可以用于描述电路的逻辑值,是可综合语句;实数常数只可以用于电路仿真,是不可综合语句。

1 整数常数(Integer constants)
整数常量可以十进制,十六进制,八进制或二进制格式。整数常量的定义的基本语法结构为:

<符号><位宽>'<基本格式><数值>

1.1 位宽(Size)
位宽定义了数值所能够占用宽度bit数,这个bit数需要用十进制来表示。位宽是可选项,如果没有指明位宽,则默认的数据位宽为32bit。

1.2 基本格式(Base format)
在Verilog HDL中可以使用的基本格式(数制)有十进制(d或D)、十六进制(h或H)、二进制(b或B)、八进制(o或O)四种,字母不区分大小写。缺省了位宽和基本格式的数字将被视为十进制数。

1.3 数值(Value)
对于十六进制的数值可以用数字 0~9 和 a~f(或 A~F)表示,字母不区分大小写。

1.4 负数(Negative numbers)
负数需要将负号( - )放在位宽前面, 基本格式和数字之间添加负号是非法语法。通常情况,负数使用二进制补码的形式表示。

1.5 下划线(Underscore)
下划线(_)可以放在数值中的任何地方,除了第一个数字之前。下划线字符的添加是出于提高代码可读性的目的,大多用在分解长度较长的数值中。下划线字符不会改变数值的大小,在综合时将被忽略。

1.6 截取(Truncate)
位宽定义了数值所能够占用宽度bit数,当位宽确定后数值的最大值就可以确定。如果出现实际的数值比最大值大的情况,即实际数值位宽超过了指定的位宽数,那么实际数值将会被截取并保留低bit数值。

整数举例

A = 8'b10101100;
B = 8'h12;
C = 6'o45;
D = 8'd100;

说明:A = 8’b10101100 //表示8bit二进制数10101100(B),用十进制表示为172
B = 8’h12 //表示8bit十六进制数12(H),用十进制表示为18
C = 6’o45 //表示6bit八进制数45(O),用十进制表示为37
D = 8’d100 //表示8bit十进制数100(D),用十进制表示为100

负整数举例

A = -8'b10101100;
B = 8'hff;

说明:A = -8’b10101100 //表示8bit二进制数-10101100(B),用十进制表示为 -172
B = 8’hff //表示8bit十六进制数 -1(H)(补码),用十进制表示为 -1

X和Z举例

A = 8'bxxxx_zzzz;
B = 8'hxz;

2023.9.14 更新:
在这里插入图片描述
$readmemh(),verilog 读取PC中文本文件的函数,需要注意斜杠不同,读取的数据存放在mem中,二维数组:reg signed [15:0] mem[1:125000] 名字为mem ,数量为125000个,单个元素为16位的数组。

在这里插入图片描述 输入16位有符号的数组。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值