第2章:可编程逻辑器件与Verilog HDL

2.1 可编程逻辑器件概述

FPGA是可编程逻辑器件(PLD)的一种,多种工艺,不同原理的PLD如下:

  • PLA:可编程逻辑阵列
  • PAL:可编程阵列逻辑
  • GAL:通用阵列逻辑
  • PROM:可编程只读存储器
  • EPLD:可擦除可编程逻辑器件
  • CPLD:复杂可编程逻辑器件
  • FPGA:现场可编程门阵列
  1. 基于乘积项结构的PLD器件
    在这里插入图片描述
  • 原理上可实现任意的数字逻辑电路
  • 绝大多数PLD都采用乘积项
  • 多采用EEPROM或Flash工艺制作,掉电后不会丢失配置数据,器件规模一般小于5000门
  1. 基于查找表结构的PLD器件
  • 规模易于做大
  • 原理类似ROM
  • 通过查找表实现函数功能,函数值放在SRAM,其地址线即输入变量,不同输入通过MUX找到对应函数值并输出
  • 绝大多数FPGA器件都是基于SRAM结构实现,特点是集成度高,逻辑功能强,可实现带膜的数字系统设计和复杂的算术运算
  • 缺点是掉电后会丢失配置数据,需外挂非易失配置器件以存储配置数据。

2.2 基于PLD的数字系统设计流程

在这里插入图片描述

2.2.1 设计输入

  1. 原理图输入
  2. HDL文本(HDL硬件描述语言)

2.2.2 综合

将原理图或者HDL转化为逻辑电源组成的电路网表

2.2.3 布局布线

  • 将电路网络映射到具体的目标PLD器件,并产生可下载文件的过程
  • 布局布线后产生如下重要文件:
  1. 芯片资源耗用情况报告
  2. 产生延时网表结构,以便于进行精确的时序仿真
  3. 器件编程文件

2.2.4 下载

对CPLD器件的下载称为编程,对FPGA器件的下载称为配置

2.2.5 仿真

包括功能仿真和时序仿真

2.2.6 工具介绍

此书设计实现OpenMIPS处理器时使用工具如下:

  • 设计输入工具:UltraEdit
  • 仿真工具:ModelSim
  • 集成工具:Quartus II

2.3 Verilog HDL简介

  • 书籍推荐《数字系统设计与Verilog HDL》

2.4 Verilog HDL中模块的结构

  1. 模块声明
  2. 端口定义
  3. 数据类型说明
  4. 逻辑功能描述:assin,always,例化

2.5 Verilog HDL基本要素

2.5.1 常量

常量有三种:整数,实数,字符串

2.5.2 变量声明与数据类型

1.net型变量
在这里插入图片描述
2. variable型变量在这里插入图片描述

2.5.3 向量

变量位宽大于1为向量

2.5.4 运算符

算术、逻辑、位、关系、等式、缩位移位、条件运算符等

2.6 Verilog HDL行为语句

2.6.1 过程语句

  1. always过程语句
  2. initial过程语句

2.6.2 赋值语句

  1. 持续赋值语句:assign
  2. 过程赋值语句:阻塞与非阻塞赋值

2.6.3 条件语句

  1. if-else
  2. case

2.6.4循环语句

  1. for
  2. forever:用于testbench产生周期性波形
  3. repeat
  4. while

2.6.5 编译指示语句

  1. 宏替换 `define
  2. `include语句
  3. 条件编译语句:ifdef,else, `endif

2.6.6 行为语句的可综合性

在这里插入图片描述

2.7 电路设计举例

一个简化的取指令电路:PC模块,指令存储器

  1. PC模块的设计与实现
    在这里插入图片描述
  2. 指令存储器ROM的设计与实现
    在这里插入图片描述
  3. 顶层文件
    在这里插入图片描述

2.8 仿真

2.8.1 系统函数

存储器两种初始化方法,一种是对存储器中诶个存储单元依次给初值,另一种是使用系统函数$readmemh

2.8.2 Test Bench

给激励,观察响应
在这里插入图片描述

2.8.3 ModelSim仿真

  1. 建立ModelSim工程
  2. 开始仿真

猜你喜欢

转载自blog.csdn.net/tanfuz/article/details/113763032
HDL