FPGA的基本理论

CPLD: 复杂可编程逻辑器件:基于乘积项技术,EEPROM(或者Flash)工艺的中小规模CPLD
FPGA:现场可编程门阵列:基于查找表技术,SRAM工艺的大规模FPGA

1、FPGA内部结构

(1)CLM模块:用于实现FPGA的大部分逻辑功能;主要由多功能LUT5、寄存器以及扩展功能选择器等组成。
(2)DRM模块:RAM资源;
(3)APM模块:数字信号处理能力;
(4)多功能I/O模块:提供封装引脚与内部逻辑之间的接口。

2、同步电路和异步电路设计

2.1、同步电路

又称时序逻辑电路,指电路的稳定输出信号不仅取决于电路的输入信号,还与电路当时所处的状态有关。同步电路通常由寄存器来实现。
设计要点:
(1)使用always语句以及非阻塞赋值语句<=对reg型的变量进行赋值操作;
(2)always语句的敏感列表中含有一个以上的posedge或者negedge沿关键词;
(3)一个always语句至多含有三个沿采样信号,一个对应复位reset,一个对应置位set,一个对应时钟clk。

2.2、异步电路

又称组合逻辑电路,指该电路在任一时刻的输出状态仅由该时刻的输入信号状态决定,与电路的状态无关。异步电路在硬件上通常是由逻辑门电路实现的。
设计要点:
(1)使用assign语句以及阻塞赋值语句“=”对wire型的变量进行赋值运算;
(2)使用always语句以及阻塞赋值语句“=”对reg型的变量进行赋值运算。注意:此处的reg型变量代表的仍然是连线资源,而不是寄存器。
(3)always的敏感列表中没有posedge或者negedge等沿关键词并且所有源信号必须出现在always的敏感列表中,或者用“*”表示所有信号。

2. 3、双向I/O接口电路

设计要点:
(1)双向I/O接口信号必须用wire型定义;
(2)使用always语句以及输出使能信号来控制三态门的工作状态,输出使能信号为“1”,三态门输出;输出使能信号为“0”,三态门关闭,对外输出高阻,信号可以输入。
(3)双向I/O信号只能用在真正接口信号,FPGA内部的信号必须是单向传输。
4、锁存器Latch:是在输入信号不变时,输出信号保持不变的异步电路。产生锁存器的原因是不完整的case或者if-else语句。
5、阻塞与非阻塞语句在同步与异步电路中的应用
(1)用assign语句描述的异步电路使用阻塞赋值语句“=”;
(2)用always语句描述以及沿采样信号描述的同步电路使用非阻塞赋值语句“<=”;
(3)用always语句描述的异步电路使用阻塞赋值语句“=”。

3、时钟、复位与临界设计——分析逻辑中的竞争、冒险以及亚稳态

3.1、时钟系统的设计:全局时钟、门控时钟、多时钟系统

3.2、复位电路的设计

复位的作用是确保同步电路在每次复位后有一个固定而可靠的初始状态。
复位在硬件电路中共有2种形式:同步复位和异步复位。
• 同步复位:复位信号在时钟的沿(上升沿或者下降沿)处起作用的电路;
• 异步复位:复位信号的作用与时钟不相关,即复位信号只要有效,电路立即进行复位状态的电路称为异步复位电路。

3.3、临界设计

(1)建立时间:在时钟跳变前数据必现保持稳定(无跳变)的时间;
(2)保持时间:在时钟跳变后数据必须保持稳定的时间。
注:在FPGA设计中,应对信号的建立时间和保持时间做充分考虑,尽量避免在数据建立时间内或其附近读取数据。
(3)临界设计是指一个设计的建立时间、保持时间以及各种时间约束处于临界状态的一种情况。所谓临界设计就是指标刚刚达到要求,或者与具体要求相差不大的设计。
包括两种情况:
• 竞争与冒险现象:产生原因:(1)信号通过连线和逻辑单元时有延时;(2)信号的高低电平转换需要一定的过渡时间。
由于延时和过渡时间原因,多路信号电平发生变化时,在信号变化的瞬间,组合逻辑的输出状态不确定,会出现“毛刺”信号。
• 亚稳定现象:亚稳定是指一个寄存器的输入信号不满足建立时间、保持时间,而导致输出信号不稳定的现象。
设计准则:
(1)竞争冒险是针对异步电路而言的,因此减少异步电路的数量,多采用同步电路设计可以减少竞争冒险现象。
(2)亚稳定是针对同步电路而言的,在同步电路时钟域切换时,可以通过两级寄存器转换解决亚稳定问题。

4、有限状态机FSM设计

FSM是时序电路设计中常用方法,尤其适合用于设计数字系统的控制模块,是许多数字电路的核心。
用Verilog HDL的case语句可以很好的设计有限状态机。
根据输出信号产生不同,状态机分为Mealy型和Moore型。
根据Verilog HDL描述方式不同,状态机分为同步状态机和异步状态机。

5、速度与资源——折中设计方案

5.1、速度——并行处理

速度指标:一个设计在具体的某个芯片中可以运行的最高工作频率。
提高速度指标的几个具体方法:
(1)并行处理:就是将所有的输入条件全译码,然后直接输出结果。
设计要点:并行处理的优点是并行处理所有的条件,延时小,速度快;缺点是并行处理时将所有条件全部展开,会消耗大量的硬件资源。
并行处理的特点就是使用case语句将所有的条件全部展开。
(2)流水线处理:类似DSP器件中的流水线的概念,就是将一个复杂的逻辑运算分解成几个简单的逻辑运算,以寄存器分割大延时的处理方式来提高工作频率。
设计要点:流水线处理提高速度的原理就是缩短Tlogic,将一个大的Tlogic分解成几个小的Tlogic。流水线提高系统运行频率是以牺牲资源和增加系统处理时延为代价的。
(3)“位运算”——最底层的逻辑设计
数字设计中最基本的运算结构是与&&、或||、非~,其他所有的运算都是构建在这3种运算基础上的。
(4)“先到先得”——关键路径的提取
在设计中,延时大的逻辑设计有:加减法运算、比较运算、乘法运算、逻辑条件级数多的路径。

5.2、资源——串行处理

资源指标:就是设计一个代码所使用的芯片硬件资源。又称为“面积”。
提高资源利用率的方法:
(1)串行处理:就是将条件按照优先级的关系,一级一级的展开。
设计要点:缺点是要串行处理一级一级的条件,延时大、速度慢;优点是将一级一级的条件分次执行,消耗的硬件资源比较少。串行处理的特点是使用if-else语句将一级一级的条件分次执行。
(2)状态机——资源的超级杀手
速度快,最消耗资源。


本博文只能阅读,谢绝转载,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 2963033731@qq.com

文章标题:FPGA的基本理论

字数:2.2k

本文作者:Soaring Lee

发布时间:2025-01-19, 16:00:00

最后更新:2025-01-19, 16:47:32

原始链接:https://soaringleefighting.github.io/2025/01/19/【FPGA系列】FPGA的基本理论/

版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。

×

喜欢就点赞,疼爱就打赏

相册