【FPGA】面试八股

1.FPGA的底层资源有哪些

(1)可编程的逻辑资源

可编程的逻辑单元由查找表(LUT),数据选择器(MUX),进位链(Carry Chain)和触发器(Flip-Flop)

(2)可编程的IO资源

支持适配不同的电器标准。

(3)布线资源

包括全局布线资源、长线资源、短线资源、分布式的布线资源;

(4)Block RAM

支持高速、低功耗、大容量、分块存储;

(5)内嵌专用硬核

ARM-Cortex系列

DSP:用于数学运算。

2.时序约束

(1)为什么要进行时序约束

为了满足时序要求,为了满足寄存器的建立时间和保持时间;

(2)常见的时序约束

A 时钟约束

时钟周期,上升沿时刻,下降沿时刻;(占空比)

c 复制代码
	create_clock -name  时钟信号名 -period 周期 -waveform {上升沿时刻 下降沿时刻} [get_ports 端口名]

B 输入延迟约束

定义:输入数据,相较于时钟触发沿,延迟到达的时刻;

代码:

c 复制代码
    //最小值约束
	set_input_delay -clock sysclk -min 延迟值[get_ports 端口名]
	//最大值约束
	set_input_delay -clock sysclk -max 延迟值[get_ports 端口名]

确定方法:通过走线进行计算,通过示波器进行观察;

C 输出延迟

输出数据,相较于时钟触发沿,提前到达的时间;

D 异步时序约束

a 对于单bit信号

可以使用set_false_path,在综合时,终止对对应路径进行时序分析和优化;

c 复制代码
set_false_path  -from  [get_clocks clka]  -to [get_clocks  clkb]

b 对于异步fifo

将读写时钟,加入异步时钟组;

c 复制代码
set_clock_groups -name 时钟组名字 -asynchronous -group {时钟1} -group {时钟2}

c 格雷码地址的约束

E 时钟不确定性的约束

时钟抖动:时钟触发沿提前到达、滞后到达;时钟周期发生变化;占空比发生变化;

时钟偏移:时钟通过不同路径到达不同寄存器延迟不同;

时钟不确定性:两者之和

F管脚约束

分类:管脚约束、电器属性约束和其他约束

管脚约束:约束管脚编号和端口的对应关系,输入输出方向;

电器属性约束:约束电器属性,采用的工艺、工作电压;

其他约束:管脚的上拉和下拉等。

3.低功耗设计

(1)功耗的分类

静态功耗:FPGA还没有启动前,晶体管泄露的漏电流引起的功耗,维持I/O,时钟管理等引起的功耗;

动态功耗:FPGA还没有启动后,逻辑门开关活动时的功耗;

(2)降低功耗的方法

A体系结构降低功耗

采用区域电压;

动态电压频率调节:保证电路正常工作情况下,尽可能降低时钟频率;

保持寄存器:寄存器工作完成,输出保持不变,而不是清零;

门控电源:芯片区域正常工作时,打开电源;芯片区域不工作时,关闭段元;

提高阈值电压:减少漏电流。

BRTL级

状态编码:采用格雷码,状态翻转减少;

门控时钟:电路区域工作,提供时钟;电路区域不工作,关闭时钟;

模块复用:功能实现相同的电路,进行复用;

逻辑优化:优化算法。

C其他

优化布局布线

优化采用的工艺

行波计数器

禁用逻辑云

4.FPGA资源

(1)项目

LUT: 43万,使用近80%;

FF:86万个,使用近50%

BRAM:1400,用了20%

5.二进制码变为格雷码

//每一位异或其左边那位,最高位不变

6.FPGA实现频率计

(1)方法分类

周期测量发:先测被测信号的周期,然后根据f=1/T得到;

会存在一个测量时钟周期的误差,适用于被测时钟频率较低;

频率测量法:测量一定时间内的脉冲数,然后计算单位时间内的脉冲数即为频率;

会存在一个被测时钟周期的误差,适用于被测时钟频率较高。

门控测量法:一定被测时钟脉冲周期内,利用被测时钟和基准时钟的对应关系;

等精度测量法:在一定时间门控信号内,利用被测时钟和测量时钟的对应关系进行测量;

(2)实现

门控信号产生;

门控信号的跨时钟域处理;

门控信号的下降沿检测;

统计门控内时钟周期数;

计算最后的结果。

7.竞争冒险

(1)定义

竞争:逻辑电路中,信号由多条路径进行传输的延迟时间不同,到达逻辑汇合点的时间有先有后;

冒险:由于竞争导致输出尖峰脉冲的现象;
(2)如何识别竞争冒险
A 代数法

只有逻辑表达式可以化简为Y=AA'(1型冒险)或者Y=A+A'(0型冒险)的形式;

例子:

Y=AB+A'C,在B=C=1时,逻辑表达式可以化简为Y=A+A',存在0型冒险;
B 卡诺图法

两个卡诺圈相切,且相切处没有其他卡诺圈包围;
C 计算机辅助法
(3)如何消除竞争冒险

A 加入滤波电容;

B修改逻辑表达式,增加冗余项;

如图所示卡诺图可以化简为Y=B'C'+AC,存在竞争冒险,加入冗余项AB'就可以消除;

C对组合逻辑进行打拍

由于尖峰脉冲不满足建立保持时间,所以触发器对脉冲信号不敏感;

D使格雷码进行状态编码

相邻两个状态只有一位发生变化,可以有效避免竞争冒险;

8.亚稳态

(1)定义

由于不满足建立、保持时间,导致输出处于未知状态;
(2)产生的场景

跨时钟域数据处理;

异步复位;
(3)解决办法

A 复位信号采用异步复位、同步释放;

B 跨时钟域信号,采用fifo进行缓冲;

C 对异步信号进行同步处理;

D 采用响应更快的触发器;

9.异步复位的removal time和recovery time

(1)定义

removol time:撤销时间,为保证复位信号有效,时钟触发沿到来之后,复位信号必须保持有效的时间;

recovery time:恢复时间,复位信号释放时,在时钟触发沿到来之前,要保持无效状态的时间;

10.时序路径

(1)电路说明

Device A:是设计电路的上游器件;

Designed Unit:设计电路;

Device B:是设计电路的下游器件;

(2)时序路径

路径1:dina->FF2:D ,设计的输入端到第一级寄存器数据输入端;

路径2:FF2:cp->FF3:D, 设计电路中,时钟输入端到下一级寄存器的数据输入端;

路径3:FF3:cp->douta,设计电路中,最后一级寄存器时钟输入端到设计电路输出端;

路径4:dinb->doutb,设计电路输入端到设计电路输出端,纯组合逻辑电路;

11.D触发器的内部结构

(1)SR触发器

由4个"与非门"分两级构成;

第一级输入的S/R分别和时钟进行与非;

第二级中,第一级输出和第二级另一支路与非;

(2)D触发器

SR触发器,S输入接D,R输入接D';

12.数据选择器(2选1MUX)构成基本的门电路

(1)与门

(2)或门

(3)非门

13.CMOS构成基本的门电路

(1)非门

(2)与非门

(3)或非

(4)传输门

(5)异或门

相关推荐
嵌入式-老费30 分钟前
再谈fpga开发(fpga调试方法)
fpga开发
Sherry0072 小时前
CSS Grid 交互式指南(译)(下)
css·面试
一只毛驴2 小时前
浏览器中的事件冒泡,事件捕获,事件委托
前端·面试
一只叫煤球的猫2 小时前
你真的处理好 null 了吗?——11种常见但容易被忽视的空值处理方式
java·后端·面试
KarrySmile2 小时前
Day04–链表–24. 两两交换链表中的节点,19. 删除链表的倒数第 N 个结点,面试题 02.07. 链表相交,142. 环形链表 II
算法·链表·面试·双指针法·虚拟头结点·环形链表
一只毛驴3 小时前
谈谈浏览器的DOM事件-从0级到2级
前端·面试
在未来等你3 小时前
RabbitMQ面试精讲 Day 5:Virtual Host与权限控制
中间件·面试·消息队列·rabbitmq
XINVRY-FPGA4 小时前
XCZU4EV-1FBVB900E Xilinx FPGA AMD Zynq UltraScale+ MPSoC EV(Embedded Vision)
arm开发·嵌入式硬件·计算机视觉·fpga开发·硬件架构·硬件工程·fpga
从今天开始学习Verilog4 小时前
FFT算法实现之fft IP核
算法·fpga开发
天天摸鱼的java工程师5 小时前
🔧 MySQL 索引的设计原则有哪些?【原理 + 业务场景实战】
java·后端·面试