我是靠谱客的博主 完美小懒猪,最近开发中收集的这篇文章主要介绍Verilog HDL语法篇1一、Verilog HDL简介二、数据类型三、运算符,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

Verilog HDL基础知识

  • 一、Verilog HDL简介
    • 1、什么是HDL?
    • 2、什么是Verilog?
    • 3、Verilog基础
  • 二、数据类型
    • 1、寄存器类型
    • 2、线网类型
    • 3、参数类型
  • 三、运算符
    • 1、算术运算符
    • 2、关系运算符
    • 3、逻辑运算符
    • 4、条件运算符
    • 5、位运算符
    • 6、移位运算符
    • 7、拼接运算符

一、Verilog HDL简介

1、什么是HDL?

数字系统设计的流程:

逻辑设计 -- 前端
电路实现 -- 后端
系统验证

(1)逻辑设计(前端)

① HDL(Hardware Description Language),硬件描述语言,用于描述数字电路结构和功能的语言。
② HDL可以在不同层次对数字电路的结构、功能和行为进行描述。

(2)电路实现(后端)

HDL所描述的电路可以通过综合工具将其转换为门级电路网表,然后将其与某种工艺的基本元件逐一对应起来,再通过布局布线工具转换为电路布线结构。

2、什么是Verilog?

常见的硬件描述语言:Verilog HDL和VHDL。
美国和中国的集成电路设计公司常用Verilog HDL,而欧洲常用VHDL,相比较而言,Verilog HDL比VHDL更灵活,适合初学者学习。

(1)Verilog标准

Verilog语言最初于1983年由Gateway Design Automation 公司为其模拟器产品开发的硬件建模语言。

Verilog语言于1995年成为IEEE标准,称为IEEE Std 1364 -1995,也就是常说的Verilog-95

Verilog-2001是对Verilog-95的重大改进版本。

(2)Verilog与C语言的区别

① Verilog是硬件描述语言,编译下载到FPGA后,会生成电路,所以Verilog是并行运行的;
② C语言是软件编程语言,编译下载到单片机后,是存储器中的一组指令。单片机处理软件指令需要取指、译码、执行,这个过程是串行执行的;
③ Verilog与C语言的区别也就是FPGA和单片机/CPU的区别。

3、Verilog基础

(1)数值

① 逻辑值

状态含义
0低电平、逻辑0或“假” ,对应电路GND
1高电平、逻辑1或“真” ,对应电路VCC
x不确定或未知的逻辑状态,可能是高电平,也可能是低电平
z高阻态,外部没有激励信号,是一个悬空状态

② 进制

数制基数符号举例
二进制b4’b0101表示4位二进制数字0101
十进制o4’d2表示4位十进制数字2(二进制0010)
十六进制h4’ha表示4位十六进制数字a(二进制1010)

(2)标识符

标识符用于定义模块名、端口名、信号名等。
① 标识符可以是任意一组字母数字、$符号和_(下划线)符号的组合;
② 标识符第一个字符必须是字母或下划线;
③ 标识符区分大小写。

(3)常用关键字

关键字含义关键字含义
module模块开始定义begin语句的起始标志
input输入端口定义end语句的结束标志
output输出端口定义casecase语句的起始标记
inout双向端口定义defaultcase语句的默认分支标志
parameter信号参数定义endcasecase语句的结束标记
wirewire信号定义ifif/else语句标记
regreg信号定义elseif/else语句标记
always产生reg信号语句的关键字forfor语句标记
assign产生wire信号语句的关键字endmodule模块结束定义
posedge/negedge上升沿/下降沿,时序电路的标志integer有符号数

二、数据类型

Verilog语言中,主要有三大数据类型:
寄存器数据类型、线网数据类型和参数数据类型。

1、寄存器类型

(1)寄存器表示一个抽象的数据存储单元,通过赋值语句assign可以改变寄存器存储的值。关键字是reg,默认初始值为x;

(2)reg类型的数据只能在always语句和initial语句中被赋值。

①如果该过程语句描述的是时序逻辑,即always语句带有时钟信号,则该寄存器变量对应为触发器;
②如果该过程语句描述的是组合逻辑,即always语句不带有时钟信号,则该寄存器变量对应为硬件连线;

(3)例如:reg [31:0] delay_cnt;
reg表示数据存储类型为reg, [31:0] 表示数据存储位宽为32位,delay_cnt为数据名称(由标识符构成)。

2、线网类型

(1)线网数据类型表示结构实体(例如门)之间的物理连线,线网类型的变量不能存储值,它的值由驱动它的元件所决定。

(2)驱动线网类型变量的元件有门、连续赋值语句、assign等。如果没有驱动元件连接到线网类型的变量上,则该变量就是高阻的,其值为x。

(3)最常用线网类型是wire类型,例如:wire [3:0] key;
wire表示数据存储类型为wire, [3:0] 表示数据存储位宽为4位,key为数据名称(由标识符构成)。

3、参数类型

(1)参数其实就是一个常量,关键字是parameter,每个参数定义的右边必须是一个常数表达式。

(2)参数型数据常用于定义状态机的状态、数据位宽和延迟大小等。

(3)在模块调用时,可以通过参数传递来改变被调用模块中已定义的参数。

(4)例如:parameter H_BACK = 11’d2;
parameter表示数据存储类型为parameter, H_BACK 为数据名称(由标识符构成),11表示数据位宽为11位(二进制),d表示数据类型为十进制,2表示十进制的数字2。

三、运算符

1、算术运算符

符号使用方法说明
+a+ba加上b
-a-ba减去b
*a*ba乘以b
/a/ba除以b
%a%ba模除b

2、关系运算符

符号使用方法说明
>a>ba大于b
<a<ba小于b
<=a<=ba小于等于b
>=a>=ba大于等于b
==a==ba等于b
!=a!=ba不等于b

3、逻辑运算符

符号使用方法说明
!! aa的非,如果a为0,那么a的非是1
&&a && ba与b,如果a和b都为1,a && b结果为1,表示真
lla ll ba或b,如果a或者b有一个为1,a ll b结果为1,表示真

4、条件运算符

符号使用方法说明
? :a ? b : c如果a为真,选择b,否则选择c

5、位运算符

符号使用方法说明
~~ a将a的每个位进行取反
&a & b将a的每个位与b相同的位进行相与
la l b将a的每个位与b相同的位进行相或
^a ^ b将a的每个位与b相同的位进行异或

6、移位运算符

符号使用方法说明
<<a << b将a左移b位
>>a >> b将a右移b位

例如:4’b1001 << 2 = 6’b100100;
4’b1001 >> 2 = 4’b0010;

7、拼接运算符

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

例如:c = { a , b[3:0] };

最后

以上就是完美小懒猪为你收集整理的Verilog HDL语法篇1一、Verilog HDL简介二、数据类型三、运算符的全部内容,希望文章能够帮你解决Verilog HDL语法篇1一、Verilog HDL简介二、数据类型三、运算符所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(50)

评论列表共有 0 条评论

立即
投稿
返回
顶部