FPGA笔试面试(五)

1、集成电路前端设计流程,写出相关的工具
数字集成电路设计主要分为前端设计和后端设计两部分,前端以架构设计为起点,得到综合后的网表为终点。后端以得到综合后的网表为起点,以生成交付Foundry进行流片的GDSII文件为终点。
前端设计:
(1)需求分析与规格制定。
对市场调研,弄清需要什么样功能的芯片。芯片规格,也就像功能列表一样,是客户向芯片设计公司(称为Fabless,无晶圆设计公司)提出的设计要求,包括芯片需要达到的具体功能和性能方面的要求。

(2)架构设计与算法设计。
根据客户提出的规格要求,对一些功能进行算法设计,拿出设计解决方案和具体实现架构,划分模块功能。

(3)HDL编码
即使用Verilog HDL(VHDL)语言分模块完成RTL级代码设计与集成。使用硬件描述语言(VHDL,Verilog HDL)分模块以代码来描述实现,RTL coding,linux环境下一般用Gvim作为代码编辑器。

(4)仿真验证
就是检验编码设计的正确性,检验的标准就是第一步制定的规格。看设计是否满足了规格中的所有要求。规格是设计正确与否的黄金标准,一切违反不符合规格要求的,就需要重新修改设计和编码。设计和仿真验证是反复迭代的过程,知道验证结果显示完全符合规格标准。仿真验证工具:Mentor公司的Modelsim,Synopsys的VCS,还有Cadence的NC-verilog均可以对RTL级的代码进行设计验证,该部分个人一般是用第一个-Modelsim。该部分称为前段仿真,接下来逻辑部分综合之后再一次进行的仿真可以称为后仿真。

(5)逻辑综合(Design Compiler)
将HDL代码转换成门级网表(netlist)的过程,综合主要包括三个步骤:转换(将HDL代码转化成一个与工艺库独立的RTL网表)、映射(根据具体的工艺库将网表映射到工艺库上,成为一个门级网表)、优化(根据面积时序等约束对网表进行优化)。
一般来说,综合完成后需要再次做仿真验证(这个也称为后仿真,之前的称为前仿真)
逻辑综合工具Synopsys的Design Compiler。

(6)静态时序分析Static Timing Analysis(STA)
这也属于验证范畴, 主要作用是从时序上对综合后的门级网表进行分析,检查出电路中是否有setup time和hold time违例。这个是数字电路基础知识,一个寄存器出现这两个时序违例时,时没有办法正确采样数据和输出数据的,所以以寄存器为基础的数字芯片功能肯定会出现问题。
STA工具有Synopsys的Prime Time。

(7)形式验证
这也是验证范畴,他是从功能上(STA是时序上)对综合后的网表进行验证。常用的就是等价性检查方法,以功能验证后的HDL设计为参考,对比综合后的网表功能,他们是否在功能上存在等价性。这样做是为了博啊正在逻辑综合过程中没有改变原先HDL描述的电路功能。性试验真工具有Synopsys的Formality。前端设计的流程暂时写到这里。从设计程度上来讲,前端设计的结果就是得到芯片的门级网表电路。
形式验证工具有Synopsys的Formality。

从设计程度上来讲,前端设计的结果就是得到了芯片的门级网表电路。

2、名词解释 如IRQ,BIOS,USB,VHDL,SDR
IRQ: Interrupt ReQuest
BIOS: Basic Input Output System
USB: Universal Serial Bus
VHDL: VHIC Hardware Description Language
SDR: Single Data Rate

3、What is PC Chipset?
芯片组(Chipset)是主板的核心组成部分,按照在主板上的排列位置的不同,通常分为北桥芯片和南桥芯片。北桥芯片提供对CPU的类型和主频、内存的类型和最大容量、ISA/PCI/AGP插槽、ECC纠错等支持。南桥芯片则提供对KBC(键盘控制器)、RTC(实时时钟控制器)、USB(通用串行总线)、Ultra DMA/33(66)EIDE数据传输方式和ACPI(高级能源管理)等的支持。其中北桥芯片起着主导性的作用,也称为主桥(Host Bridge)。
  除了最通用的南北桥结构外,目前芯片组正向更高级的加速集线架构发展,Intel的8xx系列芯片组就是这类芯片组的代表,它将一些子系统如IDE接口、音效、MODEM和USB直接接入主芯片,能够提供比PCI总线宽一倍的带宽,达到了266MB/s。

4、IC设计中同步复位与异步复位的区别.
同步复位在时钟沿才复位信号,完成复位动作。异步复位不管时钟,只要复位信号满足条件,就完成复位动作。异步复位对复位信号要求比较高,不能有毛刺,如果其与时钟关系不确定,也可能出现亚稳态。
异步复位是不受时钟影响的,需要一个全局的信号来对整个芯片进行整体的复位,到一个初始的确定状态。而同步复位需要在时钟沿来临的时候才会对整个系统进行复位。使用FPGA 设计时芯片的异步复位必须要走全局网络。
异步复位最大的优点是, 数据通路就可以不依赖于时钟而确保清洁可控。然而, 异步复位 STA (静态时序分析) 的复杂性要高于同步复位设计; 如果异步复位信号在触发器时钟有效沿附近“释放”(复位信号从有效变为无效) 的话, 可能会导致触发器输出的亚稳态。

5、说说静态、动态时序模拟的优缺点.
(1)静态时序分析:是采用穷尽分析方法来提取出整个电路存在的所有时序路径,计算信号在这些路径上的传播延时,检查信号的建立和保持时间是否满足时序要求,通过对最大路径延时和最小路径延时的分析,找出违背时序约束的错误。它不需要输入向量就能穷尽所有的路径,且运行速度很快、占用内存较少,不仅可以对芯片设计进行全面的时序功能检查,而且还可利用时序分析的结果来优化设计,因此静态时序分析已经越来越多地被用到数字集成电路设计的验证中。
静态时序分析的方法不依赖于激励,且可以穷尽所有路径,运行速度很快,占用内存很少。它完全克服了动态时序验证的缺陷,适合进行超大规模的片上系统电路的验证,可以节省多达20的设计时间。因此,静态时序分析器在功能和性能上满足了全片分析的目的。
(2)动态时序验证:是在验证功能的同时验证时序,需要输入向量作为激励。随着规模增大,所需要的向量数量以指数增长,验证所需时间占到整个设计周期的50,且这种方法难以保证足够的覆盖率,因而对片上系统芯片设计已成为设计流程的瓶颈,所以必须有更有效的时序验证技术取代之。
动态时序仿真的优点:是比较精确,而且同后者相比较,它适用于更多的设计类型。
比较明显的缺点:首先是分析的速度比较慢;其次是它需要使用输入矢量,这使得它在分析的过程中有可能会遗漏一些关键路径(critical paths),因为输入矢量未必是对所有相关的路径都敏感的。

6、一个四级的Mux,其中第二级信号为关键信号 如何改善timing.
将第二级信号放到最后输出一级输出,同时注意修改片选信号,保证其优先级未被修改。

7、时序设计的实质:
电路设计的难点在时序设计,时序设计的实质就是满足每一个触发器的建立/保持时间的要求。

8、系统最高速度计算(最快时钟频率)和流水线设计思想:
同步电路的速度是指同步系统时钟的速度,同步时钟愈快,电路处理数据的时间间隔越短,电路在单位时间内处理的数据量就愈大。假设 Tco 是触发器的输入数据被时钟打 入到触发器到数据到达触发器输出端的延时时间;Tdelay 是组合逻辑的延时;Tsetup 是 D触发器的建立时间。假设数据已被时钟打入 D 触发器,那么数据到达第一个触发器 的Q输出端需要的延时时间是 Tco,经过组合逻辑的延时时间为 Tdelay,然后到达第二 个触发器的D端,要希望时钟能在第二个触发器再次被稳定地打入触发器,则时钟的延 迟必须大于 Tco+Tdelay+Tsetup,也就是说最小的时钟周期 Tmin =Tco+Tdelay+ Tsetup,即最快的时钟频率 Fmax=1/Tmin。FPGA 开发软件也是通过这种方法来计算系 统最高运行速度 Fmax。因为 Tco 和Tsetup 是由具体的器件工艺决定的,故设计电路 时只能改变组合逻辑的延迟时间 Tdelay,所以说缩短触发器间组合逻辑的延时时间是 提高同步电路速度的关键所在。由于一般同步电路都大于一级锁存,而要使电路稳定工 作,时钟周期必须满足最大延时要求。故只有缩短最长延时路径,才能提高电路的工作 频率。可以将较大的组合逻辑分解为较小的 N 块,通过适当的方法平均分配组合逻辑, 然后在中间插入触发器,并和原触发器使用相同的时钟,就可以避免在两个触发器之间 出现过大的延时,消除速度瓶颈,这样可以提高电路的工作频率。
这就是所谓"流水线"技术的基本设计思想,即原设计速度受限部分用一个时钟周期实现,采用流水线技术插入触发器后,可用 N 个时钟周期实现,因此系统的工作速度可以加快,吞吐量加大。注意,流水线设计会在原数据通路上加入延时,另外硬件面积也会稍有增加。

9、时序约束的概念和基本策略?
时序约束主要包括周期约束,偏移约束,静态时序路径约束三种。通过附加时序约束可以综合布线工具调整映射和布局布线,是设计达到时序要求。
附加时序约束的一般策略是先附加全局约束,然后对快速和慢速例外路径附加专门约束。附加全局约束时,首先定义设计的所有时钟,对各时钟域内的同步元件进行分组, 对分组附加周期约束,然后对 FPGA/CPLD 输入输出 PAD附加偏移约束、对全组合逻辑 的PAD TOPAD 路径附加约束。附加专门约束时,首先约束分组之间的路径,然后约束 快、慢速例外路径和多周期路径,以及其他特殊路径。

10、附加约束的作用?
(1)提高设计的工作频率(减少了逻辑和布线延时);
(2)获得正确的时序分析报告;(静态时序分析工具以约束作为判断时序是否满足设计要求的标准,因此要求设计者正确输入约束,以便静态时序分析工具可以正确的输出时序报告)
(3)指定 FPGA/CPLD 的电气标准和引脚位置。

11、FPGA 设计工程师努力的方向:
SOPC,高速串行 I/O,低功耗,可靠性,可测试性和设计验证流程的优化等方面。随着芯片工艺的提高,芯片容量、集成度都在增加,FPGA 设计也朝着高速、高度集成、低功耗、高可靠性、高可测、可验证性发展。芯片可测、可验证,正在成为复杂设计所必备的条件,尽量在上板之前查出 bug,将发现 bug 的时间提前,这也是一些公司花 大力气设计仿真平台的原因。另外随着单板功能的提高、成本的压力,低功耗也逐渐进 入 FPGA 设计者的考虑范围,完成相同的功能下,考虑如何能够使芯片的功耗最低,据说 altera、xilinx 都在根据自己的芯片特点整理如何降低功耗的文档。高速串行 IO 的应用,也丰富了 FPGA 的应用范围,象 xilinx 的 v2pro 中的高速链路也逐渐被应用。 总之,学无止境,当掌握一定概念、方法之后,就要开始考虑 FPGA 其它方面的问题 了。

12、对于多位的异步信号如何进行同步?
对以一位的异步信号可以使用“一位同步器进行同步”,而对于多位的异步信号,可以采用如下方法:
(1)可以采用保持寄存器加握手信号的方法(多数据,控制,地址);
(2)特殊的具体应用电路结构,根据应用的不同而不同 ;
(3)异步 FIFO。(最常用的缓存单元是DPRAM)

13、FPGA 和 CPLD 的区别?
FPGA 是可编程 ASIC。
ASIC:专用集成电路,它是面向专门用途的电路,专门为一个用户设计和制造的。根据一个用户的特定要求,能以低研制成本,短、交货周期供货的全定制,半定制集成电路。 与门阵列等其它 ASIC(Application Specific IC)相比,它们又具有设计开发周期短、设计制 造成本低、开发工具先进、标准产品无需测试、质量稳定以及可实时在线检验等优点。
比较 CPLD FPGA
内部结构 Product-term Look-up Table
程序存储 内部 EEPROM SRAM,外挂 EEPROM
资源类型 组合电路资源丰富 触发器资源丰富
集成度 低 高
使用场合 完成控制逻辑 能完成比较复杂的算法
速度 慢 快

14、FPGA 芯片内有哪两种存储器资源?
FPGA 芯片内有两种存储器资源:一种叫 block ram,另一种是由 LUT 配置成的内部存储器(也就是分布式 ram)。Block ram 由一定数量固定大小的存储块构成的,使用 BLOCK RAM资源不占用额外的逻辑资源,并且速度快。但是使用的时候消耗的 BLOCK RAM 资源是其块大小的整数倍。

15、什么是时钟抖动?
时钟抖动是指芯片的某一个给定点上时钟周期发生暂时性变化,也就是说时钟周期在不同的周期上可能加长或缩短。它是一个平均值为 0 的平均变量。

16、FPGA 设计中对时钟的使用?(例如分频等)
FPGA 芯片有固定的时钟路由,这些路由能有减少时钟抖动和偏差。需要对时钟进行相位移动或变频的时候,一般不允许对时钟进行逻辑操作,这样不仅会增加时钟的偏差和抖动,还会使时钟带上毛刺。一般的处理方法是采用 FPGA 芯片自带的时钟管理器如 PLL,DLL 或DCM,或者把逻辑转换到触发器的 D 输入(这些也是对时钟逻辑操作的替代方案)。

17、FPGA 设计中如何实现同步时序电路的延时?
首先说说异步电路的延时实现:异步电路一半是通过加 buffer、两级与非门等(我还没用过所以也不是很清楚),但这是不适合同步电路实现延时的。在同步电路中,对于比较大的和特殊要求的延时,一半通过高速时钟产生计数器,通过计数器来控制延时;对于比较小的延时,可以通过触发器打一拍,不过这样只能延迟一个时钟周期。
其他资源 - PLL、RAM 和乘法器等
保密性 可加密 一般不能保密

18、FPGA 中可以综合实现为 RAM/ROM/CAM 的三种资源及其注意事项?
三种资源:block ram; 触发器(FF),查找表(LUT);
注意事项:
1)在生成 RAM 等存储单元时,应该首选 block ram 资源;其原因有二:第一是使用 block ram 等资源,可以节约更多的 FF 和 4-LUT 等底层可编程单元。使用 block ram可以说是“不用白不用”,是最大程度发挥器件效能,节约成本的一种体现;第二:block ram是一种可以配置的硬件结构,其可靠性和速度与用 LUT 和 register 构建的存储器更有优势。
2)弄清 FPGA 的硬件结构,合理使用 block ram 资源;
3)分析 block ram 容量,高效使用block ram 资源;
4)分布式 ram 资源(distribute ram)

19、FPGA 的基本结构
目前主流 FPGA 都采用了基于 SRAM 工艺的查找表结构,LUT 本质上就是一个 RAM。目前FPGA中多使用4输入的LUT,所以每一个LUT可以看成一个有4位地址线的RAM。当用户通过原理图或 HDL 语言描述了一个逻辑电路以后,PLD/FPGA 开发软件会自动 计算逻辑电路的所有可能结果,并把真值表(即结果)事先写入 RAM,这样,每输入 一个信号进行逻辑运算就等于输入一个地址进行查表,找出地址对应的内容,然后输出即可。
其组成部分主要有可编程输入/输出单元、基本可编程逻辑单元、嵌入式块 RAM、丰富的布线资源、底层嵌入功能单元、内嵌专用硬核等。
1)可编程输入输出单元(IOB)
可编程输入/输出单元简称 I/O 单元,是芯片与外界电路的接口部分,完成不同电气特性下对输入/输出信号的驱动与匹配要求。FPGA 内的 I/O 按组分类,每组都能够独立 地支持不同的 I/O 标准。通过软件的灵活配置,可适配不同的电气标准与 I/O 物理特性,可 以调整驱动电流的大小,可以改变上、下拉电阻。目前,I/O 口的频率也越来越高,一些高端的 FPGA,通过 DDR 寄存器技术可以支持高达 2Gbps 的数据速率。为了便于管理和适应多种电器标准,FPGA 的 IOB 被划分为若干个组(bank),每个 bank的接口 标准由其接口电压 VCCO 决定,一个 bank 只能有一种 VCCO,但不同 bank 的 VCCO 可以不同。只有相同电气标准的端口才能连接在一起,VCCO 电压相同是接口标准的基 本条件。
2)可配置逻辑块(CLB)
FPGA 的基本可编程逻辑单元是由查找表和寄存器组成的,查找表完成纯组合逻辑功能。FPGA 内部寄存器可配置成触发器或锁存器。Altera 基本可编程单元 LE 配置为 1 寄存器加一个查找表。
3)嵌入式块 RAM(BRAM)
块 RAM 可被配置为单端口 RAM、双端口 RAM、内容地址存储器(CAM)以及 FIFO等常用存储结构。CAM 存储器在其内部的每个存储单元中都有一个比较逻辑,写入 CAM中的数据会和内部的每一个数据进行比较,并返回与端口数据相同的所有数据的 地址,因而在路由的地址交换器中有广泛的应用。除了块 RAM,还可以将 FPGA 中的 LUT 灵活地配置成 RAM、ROM 和FIFO 等结构。
4)丰富的布线资源
布线资源连通 FPGA 内部的所有单元,而连线的长度和工艺决定着信号在连线上的驱动能力和传输速度。FPGA 芯片内部有着丰富的布线资源,根据工艺、长度、宽度和分 布位置的不同而划分为4类不同的类别。第一类是全局布线资源,用于芯片内部全局时 钟和全局复位/置位的布线;第二类是长线资源,用以完成芯片 Bank 间的高速信号和 第二全局时钟信号的布线;第三类是短线资源,用于完成基本逻辑单元之间的逻辑互连 和布线;第四类是分布式的布线资源,用于专有时钟、复位等控制信号线。
5)底层内嵌功能单元
内嵌功能模块主要指 DLL(Delay Locked Loop)、PLL(Phase Locked Loop)、DSP 和CPU 等软处理核(Soft Core)。现在越来越丰富的内嵌功能单元,使得单片 FPGA 成为 了系统级的设计工具,使其具备了软硬件联合设计的能力,逐步向 SOC 平台过渡。
6)内嵌专用硬核
内嵌专用硬核是相对底层嵌入的软核而言的,指 FPGA 处理能力强大的硬核(HardCore),等效于 ASIC 电路。为了提高 FPGA 性能,芯片生产商在芯片内部集成了一些 专用的硬核。例如:为了提高 FPGA 的乘法速度,主流的 FPGA 中都集成了专用乘法 器;为了适用通信总线与接口标准,很多高端的 FPGA 内部都集成了串并收发器 (SERDES),可以达到数十 Gbps 的收发速度。

20、程序下载到 FPGA 的方式有哪几种,JTAG 有哪几条线。
JTAG:下载 sof 文件,掉电丢失。可以将 sof 转换为 jic 文件,用 EPCSx 配置,掉电不丢失。
AS:下载 pof 文件,配置 EPCSx,掉电不丢失。
PS:由外部计算机或控制器控制配置过程。
JTAG 有以下几条线:
TCK:测试时钟输入,用于移位控制,上升沿将测试指令、测试数据和控制输入信号移入芯片;下降沿时将数据从芯片移出。
TMS:测试模式选择,串行输入端,用于控制芯片内部的 JTAG 状态机。
TDI:测试数据输入,串行输入端,用于指令和编程数据的输入,在时钟上升沿,数据被捕获。
TDO:测试数据输出,串行输出端,时钟下降沿,数据被驱动输出。
TRST:测试复位输入(仅用于扩展 JTAG),异步、低电平有效,用于JTAG 初始化时。

参考:
(1)https://blog.csdn.net/whm0077/article/details/6141886
(2)https://blog.csdn.net/mochenbaobei/article/details/82730726

你可能感兴趣的:(FPGA学习总结)