Advertisement

Verilog学习笔记1--基础知识

阅读量:

1语言要素

一、空白符

包括空格符(\b)、制表符(\t)、换行符、换页符
目的:为了程序的易读性

二、注释符

单行注释‘//’
多行注释以‘/’开头到‘/’结束

三、标识符

用于命名信号名称、模块名称和参数名称等的规则如下:所命名的名称必须由字母、数字以及符号$和下划线组成,并且每个名称都必须以字母或下划线作为开头。

四、转义标示符

以''符号开头,空白结尾

五、关键字

verilog规定无法被用户定义

六、数值

状态 含义
0 低电平,逻辑假
1 高电平,逻辑真
x或X 不确定
z或Z 高阻态

(1)整数及其表示方式

数制 基本符号
二进制 b或B
八进制 o或O
十进制 d或D
十六进制 h或H

宽度是8的二进制数值'b' $$

' '
'
'
'
'
'


'
' '

; 宽度是$'h'$ $a6; 五维八运算符o35; 四位二运算符$b'$ x_{{ o} }^{{ s} }$。 (2)实数及其表示 十进制表示法,小数点两边必须都有数字 科学计数法 1.2数据类型 物理数据类型:线连接型、寄存器类和存储器类 信号强度用于表征数字电路中不同水平的驱动源,用于解决赋值冲突问题 ![](https://ad.itadn.com/c/weblog/blog-img/images/2025-02-08/8cLgVqePT0srxuIHR3COEkaiBjfv.png) 一、连线型 ![](https://ad.itadn.com/c/weblog/blog-img/images/2025-02-08/hndfyaR0AuYkW76b3lmowGQF2sTZ.png) 二、寄存器型(reg) reg型代表数据存储单元的抽象类型,在硬件设计中被广泛采用以模拟状态保持功能。 在行为级描述中常用reg型变量,在Verilog语言中通常通过赋值语句在其身上进行赋值。 例如: // 定义一个一位名为a的寄存器变量 reg a; // 定义一个四位名为b的寄存器变量 reg [3:0] b; // 定义三个命名分别为c、d、e并各有八位宽度的寄存器变量 reg [8:1] c, d, e; 当向寄存器赋予负数值时,默认会将其转换为二进制补码形式。 三、连线型数据类型的声明 该系统支持多种网络声明类型:wire(线)、tri(三态)、trio(三态高电平)、tril(四态高电平)、wand(宽电平)、triand(三态与电平结合)、tior(四态)及wor(超宽电平)。这些网络声明用于定义不同类型的信号传输特性。 该系统支持两种数据类型:标量及矢量形式的数据。 该系统支持三种主要的工作模式: 1. 瞬态模拟 2. 时序分析 3. 功耗分析 这些模式均基于相同的电路模型构建。 该系统采用先进的算法来实现高效的时序分析。 四、寄存器型数据类型的声明 register 其中 range 是一个可选参数, 被指定为 register 型变量的位宽, 缺省值为 1 位. 是一个变量名称列表, 可以定义多个名称, 之间用逗号分隔. ![](https://ad.itadn.com/c/weblog/blog-img/images/2025-02-08/K7oyB1IGO5xwUNThsPQmLl0qR8ar.png) 五、存储器型 存储器型变量主要用于描述民RAM型、ROM型存储设备及其reg文件等信息。 存储器变量的一般声明格式如下: reg ; 其中 range1 和 range2 均为可选参数,默认值均为 1。 srange1 表示存储设备中寄存器所占位宽([msb:lsb] 格式)。 若 range2 未被指定,则其默认值为 1;若被指定则取值范围为 [msb:lsb](即有 msb - ls6 + 1 个寄存器)。 name_of_register 则是用于定义变量名称的一组列表,在单次声明中最多可定义多个名称(用逗号分隔)。 ![](https://ad.itadn.com/c/weblog/blog-img/images/2025-02-08/nJsytQwk0DRGN36giEmAdf5FVLWI.png) ![](https://ad.itadn.com/c/weblog/blog-img/images/2025-02-08/Ysjhpq76oVn2QdIZ1UcLk4taMe3N.png) 六、抽象数据类型

全部评论 (0)

还没有任何评论哟~