FPGA面试问题整理

1. 逻辑设计中竞争与冒险概念,如何识别和消除?

竞争:在组合逻辑电路中,信号经过多条路径到达输出端,每条路径经过的逻辑门不同存在时差,在信号变化的瞬间存在先后顺序。这种现象叫竞争。

冒险:由于竞争而引起电路输出信号中出现了非预期信号,产生瞬间错误的现象称为冒险。表现为输出端出现了原设计中没有的窄脉冲,即毛刺。

常见的逻辑代数法判断是否有竞争冒险存在:只要输出逻辑表达式中含有某个信号的原变量A和反变量/A之间的"与"或者"或"关系,且A和/A经过不同的传播路径,则存在竞争。解决办法一是修改逻辑表达式避免以上情况,二是采样时序逻辑,仅在时钟边沿采样,三是在芯片外部并联电容消除窄脉冲。

2. 亚稳态的产生原因及消除方式?

在异步系统中,寄存器建立保持时间不满足引起亚稳态。典型的场合为数据跨时钟域传输和异步复位电路。在异步传输过程中,通过单比特信号双寄存器同步,多比特信号FIFO桥接的方式消除亚稳态(实际上异步信号同步方式即为异步传输过程中亚稳态的消除方式)。通过异步复位,同步释放可消除异步复位引起的亚稳态。

3. FPGA中有哪些资源?

可编程输入/输出单元 (I/O 单元): 用于与其他设备和系统进行通信和数据交换。支持多种电气标准,如LVCMOS, LVDS, PCI Express等。可配置匹配阻抗、上下拉电阻、输出驱动电流等。
可编程逻辑单元: 包括查找表(LUT)和寄存器(Register)。

查找表用于实现组合逻辑功能。寄存器用于实现同步时序逻辑,可以配置为带有同步/异步复位和置位、时钟使能等功能的触发器。
存储资源: 可配置为单端口RAM、双端口RAM、内容地址存储器(CAM)、FIFO等。

有些FPGA还提供更高级的存储资源,例如UltraRAM。
丰富的布线资源: 用于连接FPGA内部的各种资源。包括高速布线、全局布线、局部布线等。
底层嵌入功能单元: 如数字时钟管理模块(DCM)、锁相环(PLL)、延迟锁定环(DLL)等,用于时钟管理和信号同步。
内嵌专用硬核: 包括乘法器、数字信号处理(DSP)模块、微处理器内核等。

4. 为什么触发器要满足建立时间和保持时间?

因为触发器内部数据的形成是需要一定的时间的,如果不满足建立和保持时间,触发器将进入亚稳态,进入亚稳态后触发器的输出将不稳定,在0和1之间变化,这时需要经过一个恢复时间,其输出才能稳定,但稳定后的值并不一定是你的输入值。这就是为什么要用两级触发器来同步异步输入信号。这样做可以防止由于异步输入信号对于本级时钟可能不满足建立保持时间而使本级触发器产生的亚稳态传播到后面逻辑中,导致亚稳态的传播。

5. FPGA设计中,有哪几种功耗?有哪些低功耗设计方法?
有三种功耗:

芯片静态功耗(Chip Static Power):

这是指FPGA在上电但未配置时的功耗,主要是由晶体管的泄漏电流所消耗的功耗。

设计静态功耗(Design Static Power):

当FPGA配置完成后,但在设计还未启动时,需要维持I/O的静态电流、时钟管理和其它部分电路的静态功耗。

设计动态功耗(Design Dynamic Power):

这是在FPGA内设计正常启动后产生的功耗,这部分功耗的多少主要取决于芯片所用电平、FPGA内部逻辑和布线资源的占用情况。
低功耗设计方法:

逻辑优化:

通过高级综合工具优化逻辑,减少逻辑门的数量。

使用多级流水线设计,减少每个阶段的复杂度。

时钟管理:

使用时钟门控技术来关闭不活动模块的时钟信号。

采用动态时钟调整,在满足性能要求的前提下降低时钟频率。

物理布局与布线:

优化布局布线,减少信号传输距离,从而降低布线电容和功耗。

软件辅助:

在FPGA中集成微控制器或软核处理器,通过软件控制硬件行为,实现更精细的功耗管理。

相关推荐
KaifuZeng2 小时前
通信与接口协议面试五、RS422
嵌入式硬件·面试·通信与接口
Frostnova丶3 小时前
(12)LeetCode 76. 最小覆盖子串
算法·leetcode·职场和发展
旧曲重听14 小时前
为什么现在 RAG 越少越少提及了
数据库·程序人生·职场和发展·agent
SamDeepThinking4 小时前
组合还是继承?我在项目里主要看这两个判断
java·后端·面试
wear工程师4 小时前
setState 到底是不是异步的?这题从 React 16 问到 18,标准答案早就变了
react.js·面试
凯瑟琳.奥古斯特5 小时前
力扣1013三等分解法与C++实现
开发语言·c++·算法·leetcode·职场和发展
凯瑟琳.奥古斯特6 小时前
力扣1012数位DP解法详解
开发语言·c++·算法·leetcode·职场和发展
尤老师FPGA7 小时前
HDMI数据的接收发送实验(十八)
fpga开发
SamDeepThinking7 小时前
为什么很多人学了Java,还是没真正理解类和对象?
java·后端·面试
阿新聊ai7 小时前
Claude Code 为什么总不懂你的项目?缺一张「项目地图」
前端·后端·面试