野火FPGA学习笔记-08 Verilog HDL语言基础语法

目录

8.3.3、常量

1. 常量是 Verilog 中不变的数值,Verilog 中的常量有三种类型

3. 整数型常量也可以采用基数表示法表示,

4. 基数表示法的基本格式

8.3.4 变量

8.3.6 赋值语句

8.3.12 优先级

8.3.13 位拼接运算符 

 8.3.16 Verilog 语言中的系统任务和系统函数


8.3.3、常量

1. 常量是 Verilog 中不变的数值,Verilog 中的常量有三种类型

(1) 整数型; (2) 实数型; (3) 字符串型。

3. 整数型常量也可以采用基数表示法表示,

例如: (1) 8’hab 表示 8bit 的十六进制数,换算成二进制是 1010_1011;

(2) 8’d171 表示 8bit 的十进制数,换算成二进制是 1010_1011;

(3) 8’o253 表示 8bit 的八进制数,换算成二进制是 1010_1011;

(4) 8’b1010_1011 表示 8bit 的二进制数,二进制就是 1010_1011。

4. 基数表示法的基本格式

(1) [换算为二进制后位宽的总长度][’][数值进制符号][与数值进制符号对应的数值] 其中[位宽的总长度]可有可无,[数值进制符号]中如果是[h]则表示十六进制,如果 是[o]则表示八进制,如果是[b]则表示二进制,如果[d]则表示十进制。当[换算为 二进制后位宽的总长度]比[与数值进制符号对应的数值]的实际位数多,则自动在 [与数值进制符号对应的数值]的左边补足 0,如果位数少,则自动截断[与数值进 制符号对应的数值]左边超出的位数。

(2) 如果将数字写成“’haa”,那么这个十六进制数的[换算为二进制后位宽的总长 度]就取决于[与数值进制符号对应的数值]的长度。

(3) 在基数表示法中如果遇到 x,则在十六进制数中表示 4 个 x,在八进制中表示 3 个 x。

(4) 另外,数字中的下划线没有任何意义,但是可以很好的增强可读性,推荐每 4 个 bit 后加一个下划线,例如:4’b11011011 和 4’b1101_1011 表示的是一样的 值,但是后面的看上去更容易识别。

8.3.4 变量

1. 线网型:表示电路间的物理连接;

2. 寄存器型:Verilog 中一个抽象的数据存储单元。 线网型和寄存器类型具体又包含很多种变量,线网型变量最常用的变量就是 wire,而 寄存器型最常用的变量是 reg。wire 可以看成直接的连接,在可综合的逻辑中会被映射成一 根真实的物理连线;而 reg 具有对某一个时间点状态进行保持的功能,如果在可综合的时 序逻辑中表达,会被映射成一个真实的的物理寄存器,而在 Verilog 仿真器中,寄存器类型 的变量通常要占据一个仿真内存空间。

因此在设计逻辑的时候要明确定义每个信号是 wire 还是 reg 属性。凡是在 always 或 initial 语句中被赋值的变量(赋值号左边的变量),不论表达的是组合逻辑还是时序逻辑, 都一定是 reg 型变量;凡是在 assign 语句中被赋值的变量,一定是 wire 型变量。

testbench中待测试RTL模块的输入永远是reg型

testbench中待测试RTL模块的输出永远是wire型

8.3.6 赋值语句

赋值语句的赋值方式有两种,分别为“<=”(非阻塞赋值,只能用于书序语句中)和“=”(阻塞赋值,顺序执行)。

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;

8.3.12 优先级

总的优先级关系为:归约运算符 > 算数运算符 > 移位运算符 > 关系运算符 > “= =” 和“!=”> 按位运算符 > “&&”和“||”> 条件运算符,总的来说是一元运算符 > 二元运 算符 > 三元运算符。

8.3.13 位拼接运算符 

位拼接运算符由一对花括号加逗号组成“{ , }”,拼接的不同数据之间用“,”隔 开。位拼接运算符的作用主要有两种,一种是将位宽较短的数据拼接成一个位宽长的数 据;另一种是可以通过位拼接实现移位的效果。 

 8.3.16 Verilog 语言中的系统任务和系统函数

`timescale 1ns/1ns //时间尺度预编译指令 时间单位/时间精度

时间单位和时间精度由值 1、10、和 100 以及单位 s、ms、us、ns、ps 和 fs 组成。

时间单位:定义仿真过程所有与时间相关量的单位。

仿真中使用“#数字”表示延时相应时间单位的时间,例#10 表示延时 10 个单位的时间, 即 10ns。

时间精度:决定时间相关量的精度及仿真显示的最小刻度。

`timescale 1ns/10ps 精度 0.01,#10.11 表示延时10.11ns也就是延时 10110ps。

下面这种写法就是错误的,因为时间单位不能比时间精度小。

`timescale 100ps/1ns

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值