文章目录

前言

一、简单的Verilog HDL模块

1.1 Verilog HDL程序

1.2 Verilog 语法小结

总结​​​​​​​


前言

Verilog HDL是一种硬件描述语言,以文本形式来描述数字系统硬件的结构和行为的语言,是一种被用于数字逻辑电路设计的语言。用Verilog HDL描述的电路设计就是该电路的Verilog HDL模型。Verilog 模型可以是实际电路的不同级别的抽象,这些抽象的级别和它们所对应的模型类型共有以下五种:

① 系统级(system):用高级语言结构实现设计模型的外部性能的模型;

② 算法级(algorithm):用高级语言结构实现设计算法的模型;

③ RTL级(Register Transfer Level):描述数据在寄存器之间流动和如何处理这些数据的模型;

④ 门级(gate-level):描述逻辑门以及逻辑门之间的连接的模型;

⑤ 开关级(switch-level):描述器件中三极管和储存节点以及它们之间连接的模型。

一个复杂的电路系统的完整Verilog HDL模型是由若干个Verilog HDL模块构成的,每一个模块又可以由若干个子模块构成。其中有些模块需要综合成具体电路,而有些模块只是与用户所设计的模块交互的现存电路或者激励信号源。利用Verilog HDL语言进行电路设计,可以对大型的复杂系统进行系统性地设计与仿真,相比于传统的原理图设计输入这种方式,在设计效率上有着很大地提升。到目前为止,Verilog 语言可以说是风靡全球,特别是在FPGA开发/IC设计领域占有绝对的领导地位。

一、简单的Verilog HDL模块

1.1 Verilog HDL程序

下面是一个简单的Verilog HDL语言编写的程序,我们尝试这在代码的基础上去学习Verilog语法知识;

module decoder_3_8(input               a     ,//输入input               b     ,input               c     ,output reg [7:0]    out   //输出
);always @(*)begincase({a,b,c})3'b000 : out = 8'b0000_0001;3'b001 : out = 8'b0000_0010; 3'b010 : out = 8'b0000_0100; 3'b011 : out = 8'b0000_1000; 3'b100 : out = 8'b0001_0000; 3'b101 : out = 8'b0010_0000; 3'b110 : out = 8'b0100_0000; 3'b111 : out = 8'b1000_0000; default: out = 8'b0000_0000;endcase
endendmodule

这是一个简单的实现38译码器的程序,从这个程序中就可以看到很多的Verilog语法的运用。

① Verilog模块的定义:module与endmodule是成对出现的,同时也是一个Verilog程序的开头,这就相当于一个模块;当然一个代码段中也可以有多个module/endmodule模块,但是个人不建议这样写。

② 模块名:紧跟着module后面的就是这个模块的模块名了,这就是这个模块的身份证,例化引用这些都需要用到模块名;个人建议给模块起名做到读名知其意,即模块名最好和这个模块所实现的功能有一定的关系,不然时间久了自己都不知道这个模块是干什么的了!

③ 敏感列表:模块名后面括号里面的就是敏感信号了,两个敏感信号间用逗号隔开,这里共有4个敏感信号,在下面always @后面括号里面的也是敏感信号,*号代表对所有信号敏感。这里还定义了输入输出端口,这里也可以在敏感信号外进行端口定义,根据个人喜好而来。

④ 端口定义:input表示输入端口,output表示输出端口,inout表示双向端口(这里没有),端口定义还伴随这信号类型定义,信号类型主要有reg(寄存器型)和wire(线网型),端口信号没有定义信号类型时,默认为线网型,我们这里的输出就是寄存器类型的信号。

⑤ 位拼接:{a,b,c}表示将a,b,c进行位拼接,{}是位拼接符号,假如a,b,c的位宽均是一位,则{a,b,a}的位宽就是3位。

⑥ begin/end语句:相当于括号,当有两句语句一起执行时,需要加begin/end,如果只有一句,可加可不加。

⑦ case语句:case语句时一种多分支选择语句,是并行执行的。

1.2 Verilog 语法小结

① Verilog HDL程序是由模块构成的。每个模块的内容都是嵌在module和endmodule两个语句之间。每个模块实现特定的功能,模块是可以进行层次嵌套的。

② 每个模块要进行端口定义,并说明输入输出端口,然后对模块的功能进行行为逻辑描述。

③ Verilog HDL程序的书写格式自由,一行可以多谢几个语句,一个语句也可以分写多行。

④ 除了endmodule语句外,每个语句和数据定义的最后必须要有分号。

⑤ 可以用/*.....*/和//......//对Verilog HDL程序的任何部分注释。一个好的,有使用价值的程序都应答加上注释,以增强代码的可读性和可维护性。

总结

这里通过一个简单的Verilog HDL程序对Verilog语法进行了简单的讲解,但这只是Verilog语法的一小部分,更多的语法知识我会一一分享,若有讲得不对的地方还望各位大佬指出,后续我也会进行更新改正!

【Verilog】一、Verilog概述相关推荐

  1. 再说System Verilog 与 Verilog 的关系

    System Verilog 与 Verilog 的关系 标准 当前的System Verilog标准是由IEEE(国际电子电气工程师协会)和Accellera(基于工业的标准协会)两个国际组织制定的 ...

  2. (69)FPGA模块调用(system Verilog调用Verilog)

    (69)FPGA模块调用(system Verilog调用Verilog) 1.1 目录 1)目录 2)FPGA简介 3)Verilog HDL简介 4)FPGA模块调用(system Verilog ...

  3. (66)FPGA模块调用(Verilog调用Verilog)

    (66)FPGA模块调用(Verilog调用Verilog) 1.1 目录 1)目录 2)FPGA简介 3)Verilog HDL简介 4)FPGA模块调用(Verilog调用Verilog) 5)结 ...

  4. 【Verilog】——Verilog简介

    目录 1.简介 2.什么是HDL以及HDL的功能 3.Verilog和C语言的比较 4.Verilog的用途 5.数字系统的抽象层次 1.系统级 2.算法级 3.RTL级(寄存器变换级) 6.数字系统 ...

  5. linux verilog 编译,Verilog 编译指令简介

    导读 以反引号 ` 开始的某些标识符是 Verilog 系统编译指令.编译指令为 Verilog 代码的撰写.编译.调试等提供了极大的便利. 下面介绍下完整的 8 种编译指令,其中前 4 种使用频率较 ...

  6. verilog HDLBits Verilog语法

    逐位逻辑运算符(&,|)和逻辑运算符(&&,||)之间的差别: 逐位逻辑运算符:对于 N 比特输入向量之间的逻辑比较,会在 N 比特上逐位进行,并产生一个 N 比特长的运算结果 ...

  7. 【Verilog】Verilog的八个经典入门例题

    Verilog的八个经典入门例题 文章目录 Verilog的八个经典入门例题 前言 一.7人表决器设计 二.8位的ALU设计 三.JK触发器的设计 四.环形计数器 五.二进制整数除法器设计 六.排序任 ...

  8. verilog/system verilog语法

    1,Verilog有变量类型和线网类型.变量类型比如reg,integer和time.线网类型比如wire,wor,wand等.system verilog使用了Verilog的变量类型:reg,in ...

  9. 【Verilog】Verilog定义二维数组(2D Array)

    目录 定义的种类 第一种 赋值方法 第二种 赋值方法 第三种 赋值方法 定义的种类 首先看几组定义类型 第一种 定义一个位宽为8的 data1(reg) 和 data2(wire) 的变量. reg ...

  10. Verilog 概述

    Verilog 常用的仿真软件为VCS,仿真分为前仿真和后仿真: 前仿真:通过RTL实现的Verilog代码,通过VCS仿真工具实现的编译,仿真: 后仿真:通过综合工具,将RTL代码综合成门级网表,门 ...

最新文章

  1. Android 入门开发
  2. 对于css的简化属性
  3. Computer Browser服务不能启动
  4. linux如何挂载windows共享文件,linux如何挂载windows下的共享文件
  5. 将数字转化为电话号码(忽略全局属性)
  6. uni app 录音结束监听_全新重构,uni-app实现微信端性能翻倍
  7. Windows VS Linux,Linux或将成为最终赢家?
  8. 如何提高大数据分析的效果
  9. 关于解决Windows server系统用户无法远程的问题
  10. 最全的 Charles 抓包工具详解
  11. 重写弹幕射击游戏的记录
  12. 【嵌入式】Libmodbus源码分析(四)-RTU相关函数分析
  13. 干货——MRD(市场需求文档)模板
  14. 修改select2未搜索到数据时的提示语
  15. 在计算机中添加用户时提示拒绝访问,教你怎么解决打印机拒绝访问问题
  16. 人工智能轨道交通行业周刊-第9期(2022.8.8-8.14)
  17. DC-DC buck降压电路 电压电流双闭环PI控制matlab仿真模型
  18. JavaScript斐波那契数列兔子问题
  19. css3 匀速运动的圆
  20. 计算机切屏的三种快捷键,小技巧:笔记本切换屏幕快捷键_计算机的基本知识_IT /计算机_信息...

热门文章

  1. moses 编译_Ubuntu 8.10下moses测试平台搭建全记录
  2. 计算机表格要学些什么,刚学电脑,不知道在电脑上怎么制作各种表格, – 手机爱问...
  3. 4.46-47访问控制4/5
  4. 计算机开机后黑屏鼠标显示桌面图标,win10系统电脑启动开机黑屏不显示只有鼠标图标的处理办法...
  5. Linux SD卡/SDIO驱动开发-dw_mci_probe
  6. Web 开发人员需知的 Web 缓存知识
  7. C++ - _T含义 C++语言中“_T”是什么意思?
  8. 如何用LaTeX写一个PPT
  9. SQLyog 报错2058 :连接 mysql 8.0.11 解决方法
  10. 用fun函数实现s=(ln(1)+ln(2)+...+ln(m))^1/2,函数返回s