学习笔记1:认识Verilog中的数据类型与数字的表达方式

这篇具有很好参考价值的文章主要介绍了学习笔记1:认识Verilog中的数据类型与数字的表达方式。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

写在前面:我对于verilog的学习只是足够编写一个简单的多周期cpu,对于verilog属于是浅浅的接触了一下了,其中可能会有一些写的不够准确的地方,欢迎指正讨论相互学习。

目录

数据类型

常量

整数的表示

X和Z

负数

 下划线

参数类型-parameter

 变量

wire

 reg


 

数据类型

最常用最基本的四种:(我也只用到了这四种)

reg、wire、integer、parameter

其他的数据类型:

verilog数字表示,Verilog,fpga开发

常量

整数的表示

按照进制分为四种:二进制,八进制,十进制,十六进制,分别用b/B,o/O,d/D,h/H表示。

位宽:将数字转换为二进制后有多少位就是该数字的位宽,一位只能是0或1

表示方式有如下三种

一、位宽+进制+数字

        位宽和进制之间用一个英文单引号作分隔,这是必须的!进制后直接跟数字,该数字必须符合该进制的要求!

        例如:二进制的1001可以表示为 4'b1001

        例如:十六进制的7f可以表示为8'h7f (因为一位16进制数占4位,所以两位16进制数字位宽为8)

二、进制+数字

        采用默认位宽,通常是32位

三、数字

        默认为32位宽,十进制

X和Z

一、X代表不定值,Z代表高阻值

二、一个X 或 Z 可以代表一个任意进制的数字,Z 也可以用 ?代替

三、当 X 或 Z 代替16进制数字时一个 X 或 Z 占4位,表示二进制数字时则占1位,同理8进制3位

根据下方的例子来理解这两个类型 

verilog数字表示,Verilog,fpga开发

 这两个类型的数据用的比较少,当然在编写CPU时可以不用(我就没用哈哈),把状态机的不定值默认当0即可。

负数

在位宽前加一个负号即可将一个整数定义为负数

verilog数字表示,Verilog,fpga开发

 下划线

可以用来分割数字达到更好的可读性,只能用在两个具体数字之间!

例如:8'b10010010 等于 8'b1001_0010

前面这个一看就让人眼花,后面这个是不是就好多啦,而且他们两个在程序里其实是一样的哦。

一些默认的情况 

verilog数字表示,Verilog,fpga开发

参数类型-parameter

 用来定义一个常量(嗯,就这么简单)

定义的方式

verilog数字表示,Verilog,fpga开发

 就像c/c++里定义一个常量方式一样,类似与 const int 吧。

每次定义参数时都要给定初值,初值可以是确定的数字,也可以是之前定义过的参数 或者 常数表达式

示例: 

verilog数字表示,Verilog,fpga开发

 变量

这里要明确且牢记,verilog是面向硬件的编程语言,这里的wire和reg最后都会是实际存在的器件,wire会被例化为一条导线,reg会例化为一个寄存器…这对以后的学习都有帮助。

wire

用来表示用以 assign 关键字指定的组合逻辑信号,模块中的输入、输出默认定义为 wire 型,wire 可以用作任何方程式的输入,也可以作assign语句或实例元件的输出。(这里提到的以后都会用到,如果暂时不理解什么是模块,assign之类的就先记住吧,反正以后还会具体说)

定义方式 

verilog数字表示,Verilog,fpga开发

那个中括号的意思是索引,从左到右依次为 第n-1位,…… ,第0位,一共是n位。也可以是wire[n:1] ,从左到右依次为 第n位,…… ,第1位,一共也是n位。

如果是wire [0:0]意思就是从0到0,一共是1位,这就等价于只写wire。

你也可以把0放在左边,n-1放在右边,例如:wire [0:n-1] 这也是定义一个n位的wire类型数据,只不过索引时低位在左边。

在一个程序里定义方式应该统一(为了清晰不出错),建议使用左高右低的定义方式。

示例 

 verilog数字表示,Verilog,fpga开发

 reg

寄存器数据类型,可以用来存储数据,可以通过赋值语句改变其值,默认初始值为不定值( X ),always 块内所有被赋值的信号都必须是 reg 型,reg 型表达式内运算时将被当作无符号数,比如一个 4 位 reg 型变量,赋初值 -1 ,那么其值实际上会被认为是 +15。(还是那句话,都会用到,都很重要)

定义方式 

verilog数字表示,Verilog,fpga开发

示例 

verilog数字表示,Verilog,fpga开发

 存储器类型的另一种用法叫memory,我习惯直接叫它数组因为用起来和c/c++数组没啥区别

verilog数字表示,Verilog,fpga开发

 这里定义了一个memory,元素个数为m个,每个元素是位宽为n的reg变量。

在定义寄存器堆的时候会用到这个。

对存储器进行地址索引的表达式必须是常数表达式(就是第二个中括号内的内容)

注意分辨如下两个定义方式,完全不同哦!! 

verilog数字表示,Verilog,fpga开发

赋值操作

 verilog数字表示,Verilog,fpga开发

赋值时必须指明存储单元的标号,也就是确定存储单元的地址文章来源地址https://www.toymoban.com/news/detail-545247.html

到了这里,关于学习笔记1:认识Verilog中的数据类型与数字的表达方式的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【FPGA学习记录3-1】Verilog语法之Verilog的数据类型

    写在前面 本科时学过FPGA的相关课程,因此对于Verilog相关语法的学习重在回顾。 1.Verilog的数据类型 Verilog 最常用的 2 种数据类型就是 线(wire)与寄存器(reg) ,其余类型可以理解为这两种数据类型的扩展或辅助。 1.1wire类型 wire 类型表示硬件单元之间的物理连线,由其连接

    2024年02月02日
    浏览(42)
  • 编程笔记 Golang基础 016 数据类型:数字类型

    在Go语言中,数字类型是其丰富数据类型的一部分,主要用于表示数值。 以下是Go语言中主要的数字类型详解: 1. 整数类型(Integer Types) a) 固定长度整数: 有符号整数 : int8 :8位带符号整数,范围从-128到127。 int16 :16位带符号整数,范围从-32,768到32,767。 int32 :32位带符号

    2024年02月22日
    浏览(45)
  • 数字通信中的编码(学习笔记)

    也称为归零码,就是在 一个周期内,用二进制传输数据位,在数据脉冲结束后,需要维持一段时间的低电平。 RZ编码又分为两种: 单极性归零码 低电平表示0,正电平表示1,如下图: 红色的线表示数据,只占据一部分的周期,剩下周期部分为归零段 双极性归零码 高电平表

    2024年02月11日
    浏览(44)
  • Verilog基础:表达式中的整数常量(integer)

    相关文章 Verilog基础专栏 https://blog.csdn.net/weixin_45791458/category_12263729.html ​         整数常量可以由十进制、十六进制、八进制或二进制格式指定。         整数常量有两种表现形式。         第一种表现形式是一个简单的十进制数,应指定为0到9的数字序列,可以选

    2024年02月08日
    浏览(49)
  • Verilog HDL中的数字进制(Verilog数字表示方法&&X/Y态解析)

    在Verilog中的数字表示方式,最常用的格式是: 位宽\\\'基数常量 ,如4’b1011 位宽 :描述常量所含位数的十进制整数。注意,位宽是将进制转化为二进制之后的位数。(如4’d10,表示十进制的10,转换为二进制就是4’b1010,其常量的二进制是4位) 例如4’b1011中的4就是位宽,通

    2024年02月11日
    浏览(38)
  • 「Verilog学习笔记」使用握手信号实现跨时钟域数据传输

    专栏前言 本专栏的内容主要是记录本人学习Verilog过程中的一些知识点,刷题网站用的是牛客网

    2024年02月04日
    浏览(45)
  • 数字信号处理教程学习笔记1-第2章时域中的离散信号和系统

    信号处理的任务示意方框图 模拟信号和数字信号分别是啥样的,有啥区别

    2024年01月22日
    浏览(52)
  • Postgresql中的jsonb数据类型学习使用

    pgsql是在9.2版本中引入了对于json的支持 一般情况下使用到json数据格式的时候,99%都是查询,所以接下来看一下项目中对于json类型的数据是如何查询的 定义表 对应的实体模型 对于简单数据类型的查询 一下这些sql 都是在Java代码中写的 对于复杂数据类型的查询 其他一些函数

    2024年01月24日
    浏览(55)
  • 【数字IC/FPGA】Verilog中的force和release

    在Verilog中,将 force 用于variable会覆盖掉 过程赋值 ,或者assign引导的 连续(procedural assign)赋值 ,直到 release 。 下面通过一个简单的例子展示其用法: 加法器代码 测试平台代码(主要用于产生激励) 如上所示,正常情况下,u_adder模块的a和b端口由testbench中的a和b信号驱动,

    2024年02月09日
    浏览(43)
  • 数字电路EDA综合设计verilog笔记(持续更新)

    目录 1、常用组合电路模块的设计 1、基本门电路(常用3种描述方法) 2、译码器与编码器 (1)译码器(decoder) (2)编码器(encoder) 2、常用时序电路模块的设计 1、D触发器 2、数据锁存器 3、实用电路设计 1、基本门电路 2、译码器与编码器 3、数据选择器 4、奇偶校验产生器

    2024年02月09日
    浏览(47)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包