FPGA笔试必会知识点2—FPGA器件

FPGA笔试必会知识点2—FPGA器件

FPGA

综合工具并不一定保证能够充分利用芯片结构特点以达到最优目的而且工具本身也不一定非常智能,因为设计本身是复杂多样的且一直在变化,问题总会越来越多,因此在这种情况下,我们必须了解我们的器件结构了解我们的设计是如何实现的它是否充分利用到了FPGA里面的特有资源:如进位链shift register IOB中的register等。如果没有,则应当想办法充分利用,如修改代码,以适合FPGA结构特性或者采用coregen生成的module等。这在许多场合是一个非常行之有效的手段。

FPGA芯片基本结构

参考《Altera FPGA/CPLD 设计基础篇》

FPGA芯片基本由6个部分组成:

  • IOB可编程输入输出单元;
  • CLB基本可编程逻辑单元;
  • 嵌入式RAM;
  • 丰富的布线资源;
  • 底层嵌入式功能单元:PLL/DCM/CPU/DSP/乘法器等;
  • 内嵌专用硬核:SERDES等;
  1. IOB可编程输入输出单元

完成不同电气特性下对输入/输出信号的驱动与匹配需求,可以设置IO的匹配阻抗特性、上下拉电阻、驱动电流大小等;

  1. CLB基本可编程逻辑单元

Altera的FPGA一般是基于SRAM工艺的,基本可编程单元几乎由查找表LUT和寄存器组成。查找表LUT一般为4输入,完成纯组合逻辑功能,寄存器可以配置为带同步/异步复位或置位,时钟使能的触发器(Flip flop),也可以配置成锁存器,完成同步逻辑设计;

Altera:可编程逻辑单元LE

LE由一个LUT和一个寄存器构成,大多数FPGA将10个LE构成1个LAB(逻辑阵列块),LAB包含LE间的进位链、LAB控制信号、局部连线资源、LUT级联链,寄存器级联链。

Xilinx:可编程逻辑单元slice

一个slice由上下连个部分组成,每个部分称为LC(logic cell),每个LC由一个寄存器和一个LUT构成,两个LC之间包含一些公用的逻辑,完成LC之间的级联和配合;

  1. 嵌入式RAM

    单口RAM、双口RAM、伪双端口RAM、FIFO等

    Altera:M9K、M144K;

    Xilinx:4kbit、18kbit;

    简单双口ram:两个端口,一个只能读,一个只能写操作;

    真正的双口ram:两个端口,都可以用不同的时钟进行读写操作;

  2. 丰富的布线资源

全局布线资源:全局时钟、全局复位/置位的布线;

长线资源:Bank(分区)间的高速信号,第二全局时钟信号(low skew和小的jitter);

短线资源:基本逻辑单元之间的逻辑互连与布线;

基本逻辑单元内部连线:布线资源,专用时钟、复位等控制信号线;

Stratix:全局时钟网络可以由专用的时钟引脚、芯片内部的PLL进行驱动;

区域时钟网络:每个区域都有区域时钟网络rclk,可以在改区域内提供更少的时钟延迟和时钟偏斜skew;

一个PLL可以驱动两个全局时钟网络和一个IO引脚;

PLL的反馈模式:

  1. 正常反馈模式:由时钟网络末端反馈至PLL反馈时钟输入端;
  2. 0延迟反馈模式;
  3. 无补偿模式;

    1. 底层嵌入式功能单元:PLL/DCM/CPU/DSP/乘法器等
    2. 内嵌专用硬核:SERDES等

FPGA设计流程

参考《华为静态时序分析与逻辑设计》

设计输入

常用的方法有硬件描述语言(HDL)和原理图输入方法等。

功能仿真

FPGA过程中的仿真有三种:行为仿真、逻辑仿真、时序仿真。

常用的工具有ModelTech公司的ModelSim、Sysnopsys公司的VCS和Cadence公司的NC-Verilog以及NC-VHDL等软件。

综合:Synthesis

所谓综合就是将较高级抽像层次的硬件语言描述转化成较低层次的描述。综合优化根据目标与要求优化所生成的逻辑连接,使层次设计平面化,供FPGA布局布线软件进行实现。综合优化(Synthesis)是指将设计输入编译成由与门、或门、非门、RAM、触发器等基本逻辑单元组成的逻辑连接网表(Netlist Writer),而并非真实的门级电路。

综合过程的输入可以是设计源文件(.v/.vhd/.tdf/.bdf 等),也可以是第三方综合工具的输出文件,如 Synplify 综合工具输出的综合结果.edf/.vqm 文件。综合后形成工程数据库文件,用于后续的布局布线流程。

常用的综合工具有Synplicity公司的Synplify/SynplifyPro软件以及各个FPGA厂家自己推出的综合开发工具。

综合后仿真

综合后仿真检查综合结果是否和原设计一致。在仿真时,把综合生成的标准延时文件反标注到综合仿真模型中去,可估计门延时带来的影响。但这一步骤不能估计线延时,因此和布线后的实际情况还有一定的差距,并不十分准确。目前的综合工具较为成熟,对于一般的设计可以省略这一步。

布局布线place and route

布局布线:可理解为利用实现工具把逻辑连接网表映射(MAP)到目标器件结构的资源中,决定逻辑的最佳布局,选择逻辑与输入输出功能链接的布线通道进行连线,并产生相应文件(如配置文件与相关报告),实现(implementation)是将综合生成的逻辑网表配置到具体的FPGA芯片上,布局布线是其中最重要的过程。

布局将逻辑网表中的硬件原语和底层单元合理地配置到芯片内部的固有硬件结构上,并且往往需要在速度最优和面积最优之间做出选择。布线根据布局的拓扑结构,利用芯片内部的各种连线资源,合理正确地连接各个元件。

目前,FPGA的结构非常复杂,特别是在有时序约束条件时,需要利用时序驱动的引擎进行布局布线。

布局布线后,产生标准网表文件(.vo) 以及标准延时(.sdo)文件,用于对设计进行时序仿真(后仿真)。

时序仿真

时序仿真,也称为后仿真,是指将布局布线的延时信息反标注到设计网表中来检测有无时序违规(即不满足时序约束条件或器件固有的时序规则,如建立时间、保持时间等)现像。

时序仿真包含的延迟信息最全,也最精确,能较好地反映芯片的实际工作情况。由于不同芯片的内部延时不一样,不同的布局布线方案也给延时带来不同的影响。因此在布局布线后,通过对系统和各个模块进行时序仿真,分析其时序关系,估计系统性能,以及检查和消除竞争冒险是非常有必要的。

作为xilinx,第三方的综合工具可以提供EDIF或者NCF文件,自带的XST综合工具输出的是NGC,与此同时,我们可能还会用到xilinx的 core,core文件主要以edn形式存在;有了这些文件我们就进入implementation阶段,这个阶段分translate,Map,PAR 三大部分,translate是把综合得到网表和core的网表文件转化为NGD文件,作为Map的输入,Map是把网表文件映射到Xilinx中的基本元件中,如slice,blockram等等,最后PAR也就是place and route,最后就可以生成bit文件了。

asic设计前后端是如何分的呢?asic设计的前后端就如FPGA设计的Implementation之前之后(Xilinx)的区分,前端负责综合网表之前的所有事情,而后端负责Netlist到GDSII(一种时序提供格式,用于掩膜)的过程。

FPGA设计技巧(可编程逻辑设计—设计常用技巧)

FPGA器件选型

参考《Altera FPGA/CPLD 设计高级篇》

  1. Register、LUT数量;
  2. 综合性问题、设计需求、成本压力、规模、速度等级、时钟资源、I/O数量与特性、封装、专用功能模块;

FPGA单板设计与调试

参考《Altera FPGA/CPLD 设计高级篇》

FPGA配置的可靠性

  1. 配置过程的CRC校验

配置过程CRC校验有错误,nSTATUS信号拉低;

  1. 掉电重配置保护

当FPGA的VCC出现低电压的时候,信号停止工作,同时将nSTATUS拉低来指示操作错误,需要重新配置芯片。当外部检测到FPGA的nSTATUS信号为低后,将nCONFIG拉高,开始配置FPGA。

  1. Configration RAM数据的CRC校验

FPGA内部有CRC校验计算电路,对FPGA内部配置RAM中的数据不断地进行CRC校验,若有错误,将通过CRC_ERROR指示出来。

配置电路设计

  1. DCLK,TCLK

PCB设计时,DCLK、TCLK信号需要当做高速时钟信号来处理,因为DCLK、TCLK的上冲和下冲、振铃或其他的噪声都可以造成配置数据的错误。

  1. 多片配置信号处理

多片同时配置时,建议将nSTAUTS、DCLK、DATA0、nCONFIG和CONF_DONE等信号连接在一起,以保证所有器件同时开始和结束配置。

配置芯片延时

配置芯片在配置完成FPGA后,会检测nCS引脚上的电平(nCS引脚连接在FPGA的CONFIG_DONE)。增强型配置芯片会在最后一个配置bit送出后的64个时钟周期开始检测CONFIG_DONE信号,而EPC2将等待16个DCLK时钟周期。如果配置芯片没有按时接收到CONFIG_DONE信号,则会将nSTATUS拉低,指示配置出错。由此,配置芯片nCS到FPGA的CONFIG_DONE引脚之间的连线不要太长,不然容易造成容性延时,以致CONFIG_DONE信号上升时间过长。

INIT_DONE信号

INIT_DONE信号用于指示FPGA芯片是否开始接收数据,INIT_DONE是一个可选配置引脚,漏极开路输出,需要上拉电阻。使能INIT_DONE的bit位送入FPGA后,INIT_DONE出现下降,标志FPGA开始接受配置。

本文档为大西瓜FPGA所有,淘宝地址:https://daxiguafpga.taobao.com

(如需转载或使用,请注明作者信息和出处,谢谢!)

原文地址:https://www.cnblogs.com/logic3/p/8732986.html

时间: 2024-11-29 17:35:16

FPGA笔试必会知识点2—FPGA器件的相关文章

我的 FPGA 学习历程(01)—— FPGA 基础知识和 Quartus 的安装

高级的嵌入式市场主要分为以下三类:ARM.DSP 和 FPGA. 其中 ARM 是行业内的佼佼者,目前几乎所有的安卓智能手机都使用 ARM 授权的 CPU架构:而 DSP(数字信号处理器) 早年就被大面积的应用与电话.DVD.通讯基站等领域.DSP 与 ARM 的区别在于,ARM 是通用 CPU,DSP 则是专用 CPU.FPGA 则与他们不同,FPGA 的名称的由来是由于 FPGA 功能的成型是在实验室等通常工作环境下进行的:区别与专有集成电路 (ASIC)在晶圆工厂的制造,所以 FPGA 被

C语言必掌握知识点

个人总结,学c的赶快看 1-.++a 和 a++ 的区别: ++a  先加在赋值  a++ 先赋值在加  后者赋给变量b的值为a而不是a+1后的值 2-.按位与  同为1时为1,其他为0     如:  1110 & 1010 =1010 按位或 同为0时为0,其他为1     如:1110 | 1010 =1110 3-.  ~:非运算  按位取反  如: ~1111  =  0000 4-. 按位异或  相同位数字不同为1  相同为0  如:1010  ^ 0110 =110 左移一位相当于

java数据库学习路线和必学知识点!

java数据库必学知识点!?分享一下数据库的学习路线和必学的知识点! Mysql数据库基础mysql概述.优点.运行原理及内存结构mysql数据类型mysqlDDL语句的使用SQL语言的使用DML语句的介绍及使用SQL事务SQL查询机制.查询基础.技巧.查询优化:Mysql数据库高级mysql数据库引擎分类mysql事务mysql表mysql数据类型mysql视图mysql索引mysql分页SQL语句优化技巧 Oracle实战Oracle安装与调试Oracle数据类型Oracle与MySQL对比

大疆2019校招FPGA笔试总结

1.对于同步fifo,每100个cycle可以写入80个数据,每10个cycle可以读出8个数据,fifo的深度至少为? 写时钟频率 w_clk, 读时钟频率 r_clk, 写时钟周期里,每B个时钟周期会有A个数据写入FIFO 读时钟周期里,每Y个时钟周期会有X个数据读出FIFO 则,FIFO的最小深度是? 计算公式如下: fifo_depth = burst_length - burst_length * X/Y * r_clk/w_clk 例举说明: 如果100个写时钟周期可以写入80个数据

实验箱FPGA部分测试报告及A8与FPGA链接测试报告

其实,我一开始还以为实验箱不会有什么问题只是让我们多学习东西才做这个测试的,结果发现还真的有不少问题. 1.实验准备部分 安装驱动时,win10系统无法正确安装usb-blaster Windows 8及以上的系统无法正常安装USB-Blaster驱动,在网上查找后发现了相关的解决办法 按部就班完成工作后,就可以安装USB-Blaster驱动了. 2.各实验情况 实验一:拨码开关程序设计 运行结果:失败. 在程序编译.管脚分配.接线连接都没错的情况下,无法显示结果.准确情况,无论拨哪一个开关,l

架构之路—java开发必学知识点详细梳理

大家好,今天为大家带来了java开发必学的知识点的梳理,希望对小伙伴们在技术成长的道路上有所帮助. 数据库 mysql 1.sql基本语法(数据类型.增删改查.join.函数等). 2.索引(分类,失效条件,explain的使用,优化条件). 3.引擎的对比(InnoDB,MyISAM). 4.事物.隔离级别. 5.数据库的锁(行锁,表锁,读锁,写锁,悲观锁,乐观锁,以及加锁的select sql方式). 6.分库分表,主从复制,读写分离. 7.mysql的中间件 mycat nosql red

FPGA学习笔记(二)——FPGA学习路线及开发流程

###### [该随笔部分内容转载自小梅哥]       ######### 一.FPGA学习路线 工具使用 -> 语法学习 -> 逻辑设计 -> IP使用 ->接口设计 -> 时序分析 -> 片上系统 1.工具使用 Altera:Quartus II Xlinx: Vivado 2.语法学习 Verilog HDL(FPGA设计的是电路) 3. 逻辑设计 组合逻辑:多路选择器.加法器.译码器.乘法器 ······· 时序逻辑:计数器.分频器.移位寄存器.定时器 ···

MySQL面试必考知识点:揭秘亿级高并发数据库调优与最佳实践法则

做业务,要懂基本的SQL语句: 做性能优化,要懂索引,懂引擎: 做分库分表,要懂主从,懂读写分离... 数据库的使用,是开发人员的基本功,对它掌握越清晰越深入,你能做的事情就越多. 今天我们用10分钟,重点梳理一遍以下几方面: 数据库知识点汇总: 数据库事务特性和隔离级别: 详解关系型数据库.索引与锁机制: 数据库调优与最佳实践: 面试考察点及加分项. 知识点汇总 一.数据库的不同类型 1.常用的关系型数据库 Oracle:功能强大,主要缺点就是贵 MySQL:互联网行业中最流行的数据库,这不仅

ARM中13个必知知识点详解

ARM处理器的优点相信不用多说,大家都了解,其非常适合在嵌入式学习初期使用,在开始使用ARM进行实际操作之前,还是希望大家能够了解一些其使用过程中一些注意事项.接下来我们就一起来看看ARM中有哪些需要注意的事项吧. MAM使用注意事项 当改变MAM定时值时,必须先通过向MAMCR写入0来关闭MAM,然后将新值写入MAMTIM.最后,将需要的操作模式的对应值写入MAMCR,再次打开MAM.对于低于20MHz的系统时钟,MAMTIM设定为001.对于20MHz到40MHz之间的系统时钟,建议将Fla