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类型不能在定义时赋值,只能在alwaysinitial 语句中被赋值
如果该过程语句描述的是时序逻辑,即always语句带有时钟信号,则该寄存器变量对应为触发器
如果该过程语句描述的是组合逻辑,即不带时钟信号,则该寄存器变量对应为硬件连线

线网类型

  1. 表示结构实体(例如门)之间的物理连线

  2. 线网类型不能存储值,它的值是由驱动它的元件决定的

    驱动元件:门、连续赋值语句、assign赋值语句等
    没有接驱动元件到线网类型变量上,变量则为高阻状态,即z
    线网类型包括wiretri类型,常用wire

// write define
wire[1:0] key_flag;//两位位宽
wire      key1_flag;//一位位宽

参数类型

本质就是一个常量,在Verilog HDL中用parameter定义常量
例如:

parameter   H_SIGN   =   11'd21;

类似于C语言中的#define,但每个参数定义的右边必须是一个常数表达式。
含义:

  1. 采用标识符代表一个常量可以提高程序可读性和可维护性
  2. 用于表示状态机状态、表示位宽、延迟大小
  3. 在模块调用中通过参数的传递改变调用模块汇总已定义的参数

运算符

Verilog语言按照功能可分为7种类型

  1. 算术运算符
    同C语言相同,包括+-*/%

  2. 关系运算符
    同C语言相同,包括<><=>===!=

  3. 逻辑运算符
    同C语言相同,包括!&&||

  4. 条件运算符
    同C语言相同,三目运算符?:
    例:a?b:c
    如果a为真,执行b
    否则执行c

  5. 位运算符
    ~ 按位取反
    &按位与
    |按位或
    ^按位异或

  6. 移位运算符
    >>右移
    <<左移
    与C语言不同点:左移时位宽增加,右移位宽不变
    例:
    4’b1001 << 2 = 6’b100100
    4’b1001 >> 1 = 4’b0100

  7. 拼接运算符

符号 使用方法 说明
{} {a,b} 将a与b拼接起来作为一个新的信号

例:c = { a , b [ 3 : 0 ] } ;
把a和 b的低4位 拼接起来

运算优先级

同C语言类似,单目运算符优先级高,多目运算符优先级依次降低

Verilog语言基础语法相关推荐

  1. Go语言基础语法--注释、基础结构2

    章节 GO语言基础语法--注释.基础结构(重要) 1.GO语言基础语法---注释.基础结构 //程序所属的包,且必须在源文件代码第一行 package mainimport "fmt&quo ...

  2. Verilog 语言基础

    Verilog 语言基础 想要很详细的理解Verilog语言基础,建议先下载Robei软件,这样可以很形象化的把语句理解透彻. 1 Verilog 基础 1.1. 数据 (1)电路四种状态 Veril ...

  3. 一篇文章带你玩转C语言基础语法5:条件判断 if else 语句与分支 。(千字总结)

    我的个人主页:☆光之梦☆的博客_CSDN博客-C语言基础语法(超详细)领域博主 欢迎各位

  4. Go语言 基础语法学习 (未完待更......

    文章目录 一 Go语言结构 1 Go Hello world实例 2 执行Go程序 二 Go语言基础语法 1 Go标记 2 行分隔符 3 注释 4 标识符 5 一些关键字 6 Go语言的空格 7 格式 ...

  5. C语言基础语法【1】

    目录 1.在linux系统编写C语言,基本命令:变量.常量.标识符 2.数据类型.取值范围.字符串 3.短路原则.类型转换 4.switch语句.for.while循环.死循环 1.在linux系统编 ...

  6. 一篇文章带你玩转C语言基础语法。2:数据类型。千字总结

    我的个人主页:☆光之梦☆的博客_CSDN博客-C语言基础语法(超详细)领域博主 欢迎各位

  7. GO 语言基础语法一 (快速入门 Go 语言)

    Go语言基础语法 一. golang 标识符,关键字,命名规则 二. golang 变量 三. golang 常量 四. golang 数据类型 五. golang 布尔类型 六. golang 数字 ...

  8. 【Go编程语言】 Go语言基础语法

    Go语言基础语法 文章目录 Go语言基础语法 一.注释 1.单行注释 2.多行注释 二.变量 1.变量的定义 2.变量的初始化 3.理解变量(内存地址) 4.变量交换 5.匿名变量 6.变量的作用域 ...

  9. 【Day4 C语言基础语法学习-3】

    Day4 C语言基础语法学习-3 一 数组 1.1 数组的概念 1.2 一维数组 1.2.1 一维数组的定义 1.2.2 一维数组的性质 1.3 一维数组的初始化和遍历 1.4 冒泡排序法 二.二维数 ...

最新文章

  1. 树的先序遍历,中序遍历,后续遍历(递归和非递归实现)
  2. 关于blog [转贴]来自网络
  3. python定义一个1xn矩阵_Python实现的矩阵类实例
  4. NASA的10条代码编写原则
  5. day08-----------面向对象(传智视频)
  6. STM32(5)——通用定时器基本定时器
  7. axios.js post 后台木有数据
  8. 解决办法:configure: error: You requested SRTP (requires libsrtp) but not found...die
  9. IPQ8072开机wifi crash问题
  10. 数据库课设:简易图书管理系统
  11. Simhash算法介绍和应用内容
  12. 如何编辑微信文章(微信文章导出word)
  13. python数据分析知识_python数据分析:商品数据化运营(上)——知识点
  14. Endnote中文参考文献格式
  15. java eai_java与vrml在EAI接口下的配置!!成功!!!
  16. 十二要素应用宣言(The Twelve-Factor App)
  17. Web地图服务发布及运维方案
  18. 关于Could not find QtWebEngineProcess.exe 进程已结束,退出代码 -1073740791 (0xC0000409) 问题
  19. 封装继承多态(详解)
  20. 花生壳配置内网映射(linux)

热门文章

  1. 用PS擦除图片中不想要的部分,并保留图片背景
  2. 【零基础系列】了解学习 uni-app
  3. Python爬虫入门-python之jieba库制作词云图
  4. outlook技巧-常用email账号设置
  5. Arithmetic Progressions
  6. 银行系统日终结算要多久_跨行转账,银行间是怎么清算的?什么时候使用央行的清算系统?...
  7. WP7 SDK模拟器对应PC键盘的功能键
  8. 百度违规屏蔽关键词工具
  9. quick-cocos 3.5 lua banding c++
  10. linux文件系统与日志文件