好文档 - 专业文书写作范文服务资料分享网站

FPGA入门教程 - 图文

天下 分享 时间: 加入收藏 我要投稿 点赞

设计系统对产生的错误是否敏感。

2. 异步FIFO或DPRAM

因为异步FIFO或DPRAM使用格雷码计数器设计读写地址的指针,所以它可以很

好地避免亚稳态的发生。使用方法如下,将上级芯片提供的数据随路时钟作为写信号,将数据写入异步FIFO或DPRAM,然后使用本级的采样时钟将数据读出即可。唯一需要注意的是,当两级时钟频率不同时,需要设计好缓冲区,并通过监控full、half、empty、useword信号,保证数据不会溢出,也不会被读空。

3. 调整时钟相位

这种方法的设计难度较大,而且适用面有限。首先需对跨时钟域数据的路径进行详

细的静态时序分析,然后将违反setup 时间和hold 时间的情况一一列出,在不影响其它设计性能的前提下,综合考虑调整两级时钟的相位关系,最终使其setup 时间和hold 时间满足要求。

2.FPGA简介

2.1什么是FPGA

FPGA是Field Programmable Gate Array 的缩写,即现场可编程门阵列, 是一种可编程的IC

芯片(集成电路芯片),以下是目前项目中使用的几种FPGA芯片:

2.2 FPGA的结构与组成

通常FPGA由布线资源分隔的可编程逻辑单元构成阵列,又由可编程I/O单元围绕阵

列构成整个芯片,排成阵列的逻辑单元由布线通道中的可编程内连线连接起来实现一定的逻辑功能。

目前我们使用的FPGA的可编程逻辑单元一般由查找表和触发器构成。下图所示即为Cyclone系列FPGA芯片的逻辑单元(LE)组成。

查找表(Look-Up-Table)简称为LUT,其本质上就是一个静态存储器SRAM。 对于下图左边所示的电路,查找表是这样实现的:首先FPGA开发软件会自动计算逻辑电路的所有可能的结果,然后把结果事先写入查找表中,FPGA工作时,输入信号所进行的逻辑运算就等于输入一个地址进行查表,找出地址对应的内容后输出,即实现了该逻辑功能。

实际逻辑电路 LUT的实现方式

a,b,c,d 输入

0000 0001 .... 1111

逻辑输出

0 0 0 1

地址 0000 0001 ... 1111

RAM中存储的内容

0 0 0 1

如果所设计的是时序电路,需要触发器,则FPGA开发软件会自动将触发器配置在查

找表的后面,实现组合逻辑时就将触发器旁路掉。

当然,对于复杂的设计,一个LUT是无法完成的,FPGA可以通过进位逻辑将多个LUT相连起来,实现n输入的查找表,实现设计要求。 通俗地说,FPGA就是由查找表、触发器和布线资源组成。下图是一个Cyclone系列FPGA芯片的内部结构,其中一对查找表和触发若干个LE组器构成逻辑单元LE,

成逻辑阵列块LAB,最后再配上各种布线资源,就是一个FPGA芯片了。

详细的介绍请见:补充教程6 FPGA PLD 结构与原理。

2.3 FPGA与ASIC设计的区别

ASIC是Application Specific Integrated Circuit 的缩写,即专用集成电路。ASIC和FPGA属于SOC(System on a chip片上系统)的两个发展方向,两者唯一的区别在于,ASIC的逻辑电路是固化在其芯片中的,我们可以将ASIC理解为不可编程的FPGA。

由于FPGA设计是基于固有的硬件结构(如逻辑单元、块RAM、PLL/DLL、时钟资源等)的;而ASIC设计结构灵活,目标多样,所以ASIC设计的代码风格和FPGA设计的代码风格有明显差异,特别是在功耗、速度、时序等要求上。例如ASIC设计中根据要求会有意识地采用某些组合逻辑、门控时钟等,以降低功耗或提高速度。

3. FPGA开发流程

HDL(Hardware Design Language)和原理图是两种最常用的数字硬件电路描述方法,HDL设计法具有更好的可移植性、通用性和模块划分与重用性的特点,在目前的工程设计中被广泛使用。所以,我们在使用FPGA设计数字电路时,其开发流程是基于HDL的。 设计修改 Design Modification需求定义(功能定义) Design Specification Register Transfer Level寄存器传输级Tools: HDL 编译器 , Text Editor Block & Symbol (QuartusⅡ) Pre-synthesis Simulation RTL级HDL描述 RTL Design Entry 功能仿真(前仿真) RTL Simulation Tools: ModelSim Synopsys VCS , Active HDL Tools: Assignment Editor (QuartusⅡ) Pin Planner (QuartusⅡ) 管脚分配与设计约束Assign Pins & Settings Settings Tools :Synplify Synplify Pro 综 合 Synthesis Synopsys DC Analysis & Synthesis(QuartusⅡ) Post-synthesis Simulation 门级仿真(综合后仿真)Gate Level Simulation PrimeTime Tools: Synopsys DC, ModelSim Simulation (QuartusⅡ) 布局布线 Place & Route Tools : Fitter (QuartusⅡ) 时序/时延分析 Timing Analysis Tools: Timing Analyzer (QuartusⅡ) 配置与下载 Configuration.Download Tools: ByteBlasterⅡ (QuartusⅡ)

3.1需求定义(功能定义)

设计和实现一个系统的第一步,是明确整个系统的性能指标,然后进一步将系统功能划分为可实现的具体功能模块,同时明确各模块的功能与基本时序,还可大致确定模块间的接口,如时钟、读写信号、数据流和控制信号等。

3.2 RTL级HDL描述

RTL级(寄存器传输级)指不关注寄存器和组合逻辑的细节(如使用了多少逻辑门、逻辑门的连接拓扑结构等),通过描述寄存器到寄存器之间的逻辑功能的HDL设计方法。RTL级比门级更抽象,同时也更简单和高效。RTL级的最大特点是可以直接用综合工具将其综合为门级网表。RTL级设计直接决定着系统的功能和效率。我们使用的HDL语言是verilog。

3.3功能仿真(前仿真)

功能仿真也称综合前仿真,其目的是验证RTL级描述是否与设计意图一致。为了提高效率,功能仿真需要建立testbench,其测试激励一般使用行为级HDL语言描述。

3.4管脚分配与设计约束

无论是RTL级还是门级的HDL设计方法,在实现该逻辑时都需要与实际的FPGA芯片相匹配。管脚分配是指将设计文件的输入输出信号指定到器件的某个管脚,设置此管脚的电平标准、电流强度等。设计约束指对设计的时序约束和在综合、布局布线阶段附加的约束等。

3.5综合

将RTL级HDL语言翻译成由与、或、非门等基本逻辑单元组成的门级连接(网表),并根据设计目标与要求(约束条件)优化所生成的逻辑连接,输出门级网表文件。

3.6门级仿真(综合后仿真)

在综合后通过后仿真来检查综合结果是否与原设计一致。一般,综合后仿真和功能仿真的测试激励相同。由于综合工具日益完善,在目前的FPGA设计中,这一步骤被省略掉。

3.7布局布线

布局布线就是使用综合后的网表文件,将工程的逻辑与时序要求与器件的可用资源相匹配。也可以简单地将布局布线理解为对FPGA内部查找表和寄存器资源的合理配置,那么‘布

FPGA入门教程 - 图文

设计系统对产生的错误是否敏感。2.异步FIFO或DPRAM因为异步FIFO或DPRAM使用格雷码计数器设计读写地址的指针,所以它可以很好地避免亚稳态的发生。使用方法如下,将上级芯片提供的数据随路时钟作为写信号,将数据写入异步FIFO或DPRAM,然后使用本级的采样时钟将数据读出即可。唯一需要注意的是,当两级时钟频率不同时,需要设
推荐度:
点击下载文档文档为doc格式
7z8sj0f2p46m3qp9y5qe
领取福利

微信扫码领取福利

微信扫码分享