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中集成微控制器或软核处理器,通过软件控制硬件行为,实现更精细的功耗管理。

相关推荐
007php0075 小时前
某大厂跳动面试:计算机网络相关问题解析与总结
java·开发语言·学习·计算机网络·mysql·面试·职场和发展
倔强青铜三5 小时前
苦练Python第63天:零基础玩转TOML配置读写,tomllib模块实战
人工智能·python·面试
倔强青铜三6 小时前
苦练Python第62天:零基础玩转CSV文件读写,csv模块实战
人工智能·python·面试
AAA修煤气灶刘哥6 小时前
服务器指标多到“洪水泛滥”?试试InfluxDB?
数据库·后端·面试
uzong7 小时前
技术面试,时间不足15分钟,面试官就挂掉了电话,原因竟然是……
后端·面试
zycoder.8 小时前
力扣面试经典150题day1第一题(lc88),第二题(lc27)
算法·leetcode·面试
Dream it possible!8 小时前
LeetCode 面试经典 150_哈希表_存在重复元素 II(46_219_C++_简单)
leetcode·面试·散列表
GISer_Jing8 小时前
计算机基础——浏览器、算法、计算机原理和编译原理等
前端·javascript·面试
Jabes.yang9 小时前
Java求职面试:从Spring Boot到Kafka的技术探讨
java·spring boot·面试·kafka·互联网大厂
我命由我123459 小时前
Photoshop - Photoshop 工具栏(10)透视裁剪工具
经验分享·笔记·学习·ui·职场和发展·职场发展·photoshop