verilog 从入门到看得懂---verilog 的基本语法数据和运算

这篇具有很好参考价值的文章主要介绍了verilog 从入门到看得懂---verilog 的基本语法数据和运算。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

        笔者之前主要是使用c语言和matab 进行编程,从2024年年初开始接触verilog,通过了一周的学习,基本上对verilog 的语法有了基本认知。总统来说,verilog 的语法还是很简单的,主要难点是verilog是并行运行,并且强烈和硬件实际电路相关,在设计到的时候需要考虑时序问题和可综合问题。

时序问题:因为verilog 是基于硬件实现,在实现的时候要考虑到硬件电路的建立时间和稳定时间,所以会遇到锁存器。并且在多个并行的运算在耦合到一起时,需要考虑时序。

可综合:指的是是否可以生成对应的电路,如果一段程序无法生成对应的电路,那么这个程序可能只能进行仿真,最后实际无法在硬件上实际运行。

 

基本设计单元

对于c语言中一个最基本的设计单元称为函数

void functionname(parameter)

{

funtion description

}

对于verilog 基本设计单元则称为模块,结构也类似

module block(parameter)

block desription

endmodule

具体实例:

module test(a,b,c,d)

input a,b,c;// 可以在block 内部进行输入输出定义 这里没有指明为宽 则默认a,b,c,d 宽带为1bit

output d;

assign d=a|b|c; // 这里 是对输入的三个信号线 abc 进行按位求或,主要有一个问题高电平,则输出d为高电平

endmodule

如果输入输出的数据位宽不为1,可以按照如下方式进行定义

input [信号位宽-1:0] 端口名字1;

output[信号位宽-1:0] 输出端口名字;

inout[信号位宽-1:0]  端口名字;// 这个端口即是输入端口又是输出端口

数据定义

数字表现形式

数子常用的表现形式包括二进制十进制和十六进制,下面展示了用不同进制表示一个字为10

二进制  4'b1010;

十进制 4’d10;

十六进制 4‘hA;

如果直接写10,则默认是十进制。

对于负数则如下表示:

二进制  -4'b1010;

十进制 -4’d10;

十六进制 -4‘hA;

对于c编程中一个bit只能有两种情况 true或者false 也即 1或者0.但是对于实际电路中出了0或者1 还有另外两个值,使用x表示不定值,使用z/?代表高阻值

二进制  4'b101z;

十进制 4’dz;

十六进制 4‘hx;

另外一个让我感觉verilog 很贴心的是增加了_ 来对数据进行分隔,从而提高可读性,

32’b1111_1110_0001_1101_1011_0011_0101_1101,

希望其他语言中也早点支持这种分隔符,有的时候真是数的让人眼花缭乱。

数据类型

verilog 中一共有19个数据类型,其中最常用的为wire,reg,integer和parameter。

1. wire 数据类型 常用在表示以assign 关键字指定的组合逻辑信号,verilog 程序模块中输入和输出默认为wire 类型,wire 数据可以作为任何方程的输入,但是输出的时候需要用到assign

wire[3:0] b;

assign b=10;//定义了一个wire类型的b 并且给b赋值为10,注意 给wire 赋值的时候必须用assign。

2. reg型数据,register  是数据存储对象的抽象,通过赋值语句可以修改寄存器储存的数据,reg数据常和always 使用,

reg[3:0] b;

always* 

 b=10;

3. parameter 型数据是用来定义常量

module Test()

parameter b=7;// 定义了一个 参数 为7  这个参数可以通过上层的模块修改

........

endmodule

module Topfun()

Test #(10) testexample;//在这里实例化了Test 并且修改b=10

endmodule

运算符和表达式

verilog 从入门到看得懂---verilog 的基本语法数据和运算,fpga开发

verilog 从入门到看得懂---verilog 的基本语法数据和运算,fpga开发

verilog 中的运算符基本都和c语言中使用方法一致,唯有拼接运算符是一个新的。

reg [7:0] var1;
reg [15:0] var2;

wire [22:0] combined = {var1, var2};// 通过拼接运算符把var1和var2 合并到了一起文章来源地址https://www.toymoban.com/news/detail-841117.html

到了这里,关于verilog 从入门到看得懂---verilog 的基本语法数据和运算的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 【FPGA入门】第一篇、Verilog基本语法常识

    目录 第一部分、不同的变量类型 1、wire和reg的区别  2、如何对变量进行赋值呢? 3、什么是阻塞?什么是非阻塞? 第二部分、变量位宽的定义 1、各种系统默认情况 2、变量位宽声明方式 3、表明位宽的情况下,赋值方式 4、两个模块之间例化,不定义变量直接用的方式 5、常

    2024年02月04日
    浏览(49)
  • 【机器学习】什么是GAN 小孩都看得懂的 GAN

    以下内容来自:王圣元 王的机器 0   GAN 是什么 GAN 的全称是 Generative Adversarial Network,中文是 生成对抗网络 。 一言以蔽之,GAN 包含了两个神经网络, 生成器 (generator)和 辨别器 (discriminator),两者互相博弈不断变强,即生成器产出的东西越来越逼真,辨别器的识别能力

    2024年02月01日
    浏览(43)
  • 【可乐荐书】有趣的矩阵:看得懂又好看的线性代数

    本栏目将推荐一些经典的、有趣的、有启发性的书籍,这些书籍涵盖了各个领域,包括文学、历史、哲学、科学、技术等等。相信这些书籍不仅可以让你获得知识,还可以让你感受到阅读的乐趣和魅力。 今天给大家推荐的书籍是:《有趣的矩阵:看得懂又好看的线性代数》

    2024年02月05日
    浏览(54)
  • 看得懂的猪周期,牧原们却不一定跨得过

    2022年2月16日,全国各省三元猪均价为12.34元/公斤,较昨日下跌0.13元/公斤,较上周同期猪价(2月9日)下跌1.20元/公斤。 在供需关系的支配下,猪肉价格上涨,散户蜂拥而上,猪肉供给大增,肉价下跌,一个无解的循环就此形成。 猪周期,是一个典型的和面加水问题。在繁荣中

    2024年02月04日
    浏览(30)
  • 零基础也能看得懂的AI绘画教程!灵魂画师MJ咒语案例展示!

    当谈到人工智能技术应用场景时,除了ChatGPT,另外让人着迷的应用就是AI绘画,随着图像生成器的不断升级和更迭,图片生成的质量也得到了显著提升。 目前画图支持Midjourney和Stable Diffusion,风景、人物、动物、建筑、梦境等等,都可以用MJ和SD生成,同聊天一样,只有掌握正

    2024年04月23日
    浏览(53)
  • [免费专栏] Android安全之Android Xposed插件开发,小白都能看得懂的教程

    也许每个人出生的时候都以为这世界都是为他一个人而存在的,当他发现自己错的时候,他便开始长大 少走了弯路,也就错过了风景,无论如何,感谢经历 转移发布平台通知:将不再在CSDN博客发布新文章,敬请移步知识星球 感谢大家一直以来对我CSDN博客的关注和支持,但

    2024年02月09日
    浏览(40)
  • Verilog语法(二)——运算符

    Verilog HDL 中支持多种运算符,包括算术运算符、比较运算符、逻辑运算符、位运算符等等。以下是一些常用的运算符及其用法。 Verilog 中的算术运算符包括加法、减法、乘法、除法、取模等。它们的用法与常见的编程语言类似,如: 加法:+ 减法:- 乘法:* 除法:/ 取模:

    2024年02月01日
    浏览(49)
  • Verilog语法——2.模块例化、运算符

    参考资料 【明德扬_verilog零基础入门语法HDL仿真快速掌握-手把手教你写FPGA/ASIC代码设计流程中的应用】 2.1.1 什么是模块例化 例化,即将项目不断拆分成次级功能模块,然后从最简单的模块开始实现,进而完成整个复杂项目 2.1.2 模块例化的方法 针对已经抽象好的模块,需要

    2024年01月16日
    浏览(41)
  • 想要成为 NLP 领域的大牛?从 ChatGPT 的 5 大自然语言模型开始了解吧(LM、Transformer、GPT、RLHF、LLM)——小白也能看得懂

      如果想在自然语言处理(Natural Language Processing,NLP)领域内脱颖而出,那么你一定不能错过 ChatGPT 的 5 大自然语言模型:LM、Transformer、GPT、RLHF 和 LLM。这些模型是 NLP 领域中最为重要的基础,涵盖了 语言模型、预训练模型、生成模型 等关键知识点。即使你是一个 NLP 小白

    2024年02月09日
    浏览(48)
  • Verilog语法学习——LV5_位拆分与运算

    题目来源于牛客网 [牛客网在线编程_Verilog篇_Verilog快速入门 (nowcoder.com)](https://www.nowcoder.com/exam/oj?page=1tab=Verilog篇topicId=301) 题目描述: 现在输入了一个压缩的16位数据,其实际上包含了四个数据,[3:0],[7:4],[11:8],[15:12] 现在请按照sel选择输出四个数据的相加结果,并输出valid_out信号

    2024年02月15日
    浏览(40)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包