Verilog语言基础语法
Verilog基础知识
- 数字进制格式
- 标识符
- 数据类型
- 寄存器类型
- 线网类型
- 参数类型
- 运算符
- 运算优先级
数字进制格式
Verilog数字进制格式包括二进制,八进制,十进制,十六进制。常用为二进制,十进制,十六进制
- 二进制表示为: 4’b101 代表4位二进制数1010
- 十进制表示为:4’d10 代表4位十进制数10(二进制数1010)
- 十六进制表示为4’ha 代表4位十六进制数a(二进制数1010)
4
代表位宽, b o d h
分别代表2、8、10、16进制(位宽默认为32)
同时可用_
增加程序可读性,如16’b1010_1001_1010_1001=16’ha9a9
标识符
用于定义模块名、端口名、信号名等
标识符第一个字符必须为字母或者下划线,同时标识符只能含有字母、数字、$、_。区分大小写。
数据类型
数据类型包括三大类:寄存器、线网、参数数据类型
寄存器、线网 数据类型在数字电路中真正起作用
参数 数据类型为给编译器识别的数据类型
寄存器类型
寄存器表示一个抽象的数据存储单元,可以通过赋值语句改变寄存器存储的值,关键字reg,默认初始值x,例如:
//reg definereg[31:0] delay_cnt;//定义一个名称为delay_cnt的32位寄存器reg key_reg;//定义一个名称为key_cnt的1位寄存器
reg类型不能在定义时赋值,只能在always 和initial 语句中被赋值
如果该过程语句描述的是时序逻辑,即always语句带有时钟信号,则该寄存器变量对应为触发器
如果该过程语句描述的是组合逻辑,即不带时钟信号,则该寄存器变量对应为硬件连线
线网类型
表示结构实体(例如门)之间的物理连线
线网类型不能存储值,它的值是由驱动它的元件决定的
驱动元件:门、连续赋值语句、assign赋值语句等
没有接驱动元件到线网类型变量上,变量则为高阻状态,即z
线网类型包括wire和tri类型,常用wire
// write define
wire[1:0] key_flag;//两位位宽
wire key1_flag;//一位位宽
参数类型
本质就是一个常量,在Verilog HDL中用parameter定义常量
例如:
parameter H_SIGN = 11'd21;
类似于C语言中的#define,但每个参数定义的右边必须是一个常数表达式。
含义:
- 采用标识符代表一个常量可以提高程序可读性和可维护性
- 用于表示状态机状态、表示位宽、延迟大小
- 在模块调用中通过参数的传递改变调用模块汇总已定义的参数
运算符
Verilog语言按照功能可分为7种类型
算术运算符
同C语言相同,包括+-*/%关系运算符
同C语言相同,包括<><=>===!=逻辑运算符
同C语言相同,包括!&&||条件运算符
同C语言相同,三目运算符?:
例:a?b:c
如果a为真,执行b
否则执行c位运算符
~ 按位取反
&按位与
|按位或
^按位异或移位运算符
>>右移
<<左移
与C语言不同点:左移时位宽增加,右移位宽不变
例:
4’b1001 << 2 = 6’b100100
4’b1001 >> 1 = 4’b0100拼接运算符
符号 | 使用方法 | 说明 |
---|---|---|
{} | {a,b} | 将a与b拼接起来作为一个新的信号 |
例:c = { a , b [ 3 : 0 ] } ;
把a和 b的低4位 拼接起来
运算优先级
同C语言类似,单目运算符优先级高,多目运算符优先级依次降低
Verilog语言基础语法相关推荐
- Go语言基础语法--注释、基础结构2
章节 GO语言基础语法--注释.基础结构(重要) 1.GO语言基础语法---注释.基础结构 //程序所属的包,且必须在源文件代码第一行 package mainimport "fmt&quo ...
- Verilog 语言基础
Verilog 语言基础 想要很详细的理解Verilog语言基础,建议先下载Robei软件,这样可以很形象化的把语句理解透彻. 1 Verilog 基础 1.1. 数据 (1)电路四种状态 Veril ...
- 一篇文章带你玩转C语言基础语法5:条件判断 if else 语句与分支 。(千字总结)
我的个人主页:☆光之梦☆的博客_CSDN博客-C语言基础语法(超详细)领域博主 欢迎各位
- Go语言 基础语法学习 (未完待更......
文章目录 一 Go语言结构 1 Go Hello world实例 2 执行Go程序 二 Go语言基础语法 1 Go标记 2 行分隔符 3 注释 4 标识符 5 一些关键字 6 Go语言的空格 7 格式 ...
- C语言基础语法【1】
目录 1.在linux系统编写C语言,基本命令:变量.常量.标识符 2.数据类型.取值范围.字符串 3.短路原则.类型转换 4.switch语句.for.while循环.死循环 1.在linux系统编 ...
- 一篇文章带你玩转C语言基础语法。2:数据类型。千字总结
我的个人主页:☆光之梦☆的博客_CSDN博客-C语言基础语法(超详细)领域博主 欢迎各位
- GO 语言基础语法一 (快速入门 Go 语言)
Go语言基础语法 一. golang 标识符,关键字,命名规则 二. golang 变量 三. golang 常量 四. golang 数据类型 五. golang 布尔类型 六. golang 数字 ...
- 【Go编程语言】 Go语言基础语法
Go语言基础语法 文章目录 Go语言基础语法 一.注释 1.单行注释 2.多行注释 二.变量 1.变量的定义 2.变量的初始化 3.理解变量(内存地址) 4.变量交换 5.匿名变量 6.变量的作用域 ...
- 【Day4 C语言基础语法学习-3】
Day4 C语言基础语法学习-3 一 数组 1.1 数组的概念 1.2 一维数组 1.2.1 一维数组的定义 1.2.2 一维数组的性质 1.3 一维数组的初始化和遍历 1.4 冒泡排序法 二.二维数 ...
最新文章
- 树的先序遍历,中序遍历,后续遍历(递归和非递归实现)
- 关于blog [转贴]来自网络
- python定义一个1xn矩阵_Python实现的矩阵类实例
- NASA的10条代码编写原则
- day08-----------面向对象(传智视频)
- STM32(5)——通用定时器基本定时器
- axios.js post 后台木有数据
- 解决办法:configure: error: You requested SRTP (requires libsrtp) but not found...die
- IPQ8072开机wifi crash问题
- 数据库课设:简易图书管理系统
- Simhash算法介绍和应用内容
- 如何编辑微信文章(微信文章导出word)
- python数据分析知识_python数据分析:商品数据化运营(上)——知识点
- Endnote中文参考文献格式
- java eai_java与vrml在EAI接口下的配置!!成功!!!
- 十二要素应用宣言(The Twelve-Factor App)
- Web地图服务发布及运维方案
- 关于Could not find QtWebEngineProcess.exe 进程已结束,退出代码 -1073740791 (0xC0000409) 问题
- 封装继承多态(详解)
- 花生壳配置内网映射(linux)