FPGA 第4讲 初识Verilog HDL

时间:2024.11.9

一、学习内容

1.Verilog HDL简介

1.1语言简介

     Verilog HDL是一种硬件描述语言,以文本的形式来描述数字系统硬件的结构和行为的语言,用它可以表示逻辑电路图、逻辑表达式,还可以表示数字逻辑系统所完成的逻辑功能。

1.2操作思路

确定目标功能-->用Verilog HDL语言通过代码的编写对目标的逻辑功能进行描述-->使用Quartus软件对Verilog HDL语言编写的代码进行分析综合、布局布线等一系列操作-->将生成的网表文件下载到FPGA开发板中-->在FPGA中生成一个实际的硬件电路,硬件电路实现的就是我们的目标功能

1.3常用的硬件描述语言

一种是 Verilog HDL(以下简称 Verilog),另一种是 VHDL 

两种语言的对比

VHDL 与 Verilog 相比,有以下优势:

     语法比 Verilog 严谨,通过 EDA 工具自动语法检查,易排除许多设计中的疏忽。有很好的行为级描述能力和一定的系统级描述能力,而Verilog 建模时,行为与系统级抽象及相关描述能力不及 VHDL。

VHDL 与 Verilog 相比,有以下不足之处:

     VHDL 代码较冗长,在相同逻辑功能描述时,Verilog 的代码比 VHDL 少许多。VHDL 对数据类型匹配要求过于严格,初学时会感到不是很方便,编程耗时也较多;而 Verilog 支持自动类型转换,初学者容易入门。VHDL 对版图级、管子级这些较为底层的描述级别几乎不支持,无法直接作集成电路底层建模。

1.4Verilog HDL 和 C 语言的比较

       Verilog 在很多语法上都和 C 语言极其相似,甚至有些语法是通用的,这也是 Verilog 语言容易上手的一个很重要的原因。Verilog 语言本身就是从 C 语言继承并发展而来的,但是它主要用于描述硬件,和 C 语言这种软件语言思想完全不同。

       C 语言所描述的代码功能在执行时都是一行一行顺序执行的(顺序执行),而 Verilog 语言在设计完成后执行时则是并行执行的,C 语言所描述的代码功能并不会真实的映射成最后的硬件,只是对内存的操作和进行数据的搬移,而用Verilog 语言所描述的代码功能则会真真正正的生成所对应 的硬件电路,所以这也是Verilog 语言被称为“硬件描述语言”的原因,C 语言和 Verilog 语言之间的关系就是软件和硬件之间的关系,所以不要混为一谈。

       可以通过 C 语言的语法基础来辅助学习Verilog 语法,但是切不可生搬硬套,特别在代码的风格和理解上一定要区别对待。

2.Verilog HDL基础语法

2.1 标识符

       标识符用于定义常数、变量、信号、端口、子模块或参数名称。Verilog 语言是区分大小写的,也就是说同一个名称,用大写和用小写就代表了两个不同的符号,这一点与VHDL 不同,因此书写的时候要格外注意。
      在 Verilog 语言中,所有的关键字(又叫保留字)都为小写。完整的 Verilog 关键字在编辑器会以高亮的形式突出出来。Verilog 的内部信号名(又称标识符)使用大写和小写都可以。标识符可以是字母、数字、$(美元符号)和下划线的任意组合,只要第一个字符是字母或者下划线即可。

2.2 逻辑值


      在二进制计数中,单比特逻辑值只有“0”和“1”两种状态,而在 Verilog 语言中,为了对电路了进行精确的建模,又增加了两种逻辑状态,即“X”和“Z”。
      当“X”用作信号状态时表示未知,当用作条件判断时(在 casex 或 casez)表示不关心;“Z”表示高阻状态,也就是没有任何驱动,通常用来对三态总线进行建模。在综合工具眼中,或者说在实际实现的电路中,并没有什么 X 值,只存在 0、1 和 Z 三种状态。
     在实际电路中还可能出现亚稳态,它既不是 0,也不是 1,而是一种不稳定的状态。
      Verilog 语言中的所有数据都是由以上描述的 4 种基本逻辑值“0”、“1”、“X”和“Z”构成的,同时,“X”和“Z”是不区分大小写的,例如 0z1x 和 0Z1X 表示同一个数据。

2.3 常量

1.常量的类型

常量是 Verilog 中不变的数值,Verilog 中的常量有三种类型
(1) 整数型;
(2) 实数型;
(3) 字符串型。

2.整数型常量的表示

         我们可以使用简单的十进制表示一个整数型常量,例如:
(1) 直接写 16 表示位宽为 32bit 的十进制数 16;
(2) -15 表示十进制的-15,用二进制补码表示至少需要 5bit,即 1_0001,最高一位为符
号位;如果用 6bit 表示,则为 11_0001,同样最高一位为符号位。


3.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值