【FPGA】面试八股

news/2024/10/8 6:38:00/

1.FPGA的底层资源有哪些

(1)可编程的逻辑资源
可编程的逻辑单元由查找表(LUT),数据选择器(MUX),进位链(Carry Chain)和触发器(Flip-Flop)
(2)可编程的IO资源
支持适配不同的电器标准。
(3)布线资源
包括全局布线资源、长线资源、短线资源、分布式的布线资源;
(4)Block RAM
支持高速、低功耗、大容量、分块存储;
(5)内嵌专用硬核
ARM-Cortex系列
DSP:用于数学运算。

2.时序约束

(1)时钟约束
时钟周期,上升沿时刻,下降沿时刻。(占空比)
(2)输入延迟
数据,相较于时钟出触发沿,延迟到达的时间。
约束:最大值和最小值
确定: 通过走线进行计算,或用示波器进行测量;
(3)输出延迟
数据,相较于时钟触发沿,提前到达的时间;
(4)异步约束
单bit数据打两拍跨时钟域处理:
set_false_path:禁止对指定路径进行时序分析;
async_reg:进行约束
异步fifo:
将读写时钟加入异步时钟组;
(5)时钟不确定性约束
时钟抖动:时钟触发沿提前到达、滞后到达;时钟周期发生变化;占空比发生变化;
时钟偏移:时钟通过不同路径到达不同寄存器延迟不同;
时钟不确定性:两者之和
(6)管脚约束
分类:管脚约束、电器属性约束和其他约束
管脚约束:约束管脚编号和端口的对应关系,输入输出方向;
电器属性约束:约束电器属性,采用的工艺、工作电压;
其他约束:管脚的上拉和下拉等。

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)异或门
在这里插入图片描述


http://www.ppmy.cn/news/1535998.html

相关文章

Python | 由高程计算坡度和坡向

写在前面 之前参加一个比赛,提供了中国的高程数据,可以基于该数据进一步计算坡度和坡向进行相关分析。 对于坡度和坡向,这里分享一个找到的库,可以方便快捷的计算。这个库为:RichDEM,官网地址如下 https…

SparkCore与FlinkCore的区别有哪些

1.架构理念方面: Spark Core: Spark 基于 RDD(弹性分布式数据集)的概念构建。RDD 是一个不可变的、分布式的对象集合,它可以在集群中的多个节点上进行并行计算。例如,在处理大规模的日志文件时,Spark 可以将日志文件…

前端组件化开发

假设这个页面是vue开发的,如果一整个页面都是编写在一个vue文件里面,后期不好维护,会特别的庞大,那么如何这个时候需要进行组件化开发。组件化开发后必然会带来一个问题需要进行组件之间的通信。组要是父子组件之间通信&#xff0…

基于SpringBoot博物馆游客预约系统【附源码】

基于SpringBoot博物馆游客预约系统 效果如下: 主页面 注册界面 展品信息界面 论坛交流界面 后台登陆界面 后台主界面 参观预约界面 留言板界面 研究背景 随着现代社会的快速发展和人们生活水平的提高,文化生活需求也在日益增加。博物馆作为传承文化、…

【MySQL】--数据类型

文章目录 1. 选择数据库1.1 语法 2. 查询当前选中的数据库2.1 语法 3. 常见数据类型分类4. 数据值类型4.1 类型列表4.2 数据类型取值范围 5. 字符串类型5.1 类型列表5.2 关于排序5.3 CHAR和VARCHAR的区别5.4 如何选择CHAR和VARCHAR5.5 VARCHAR与TEXT的区别 6. 日期类型6.1 类型…

【RockyLinux 9.4】CentOS也可以用。安装教程(使用U盘,避免踩坑简略版本)

一、制作一个镜像安装盘 1.下载镜像(本教程使用9.4版本) 官网: https://rockylinux.org/zh-CN 2.使用 UltraISO,制作写入硬盘镜像 二、调整相关参数,准备进入安装流程 1.关闭 Secure Boot(BIOS 里面关…

C/C++简单编译原理

我们写的头文件和.cpp文件究竟是如何在电脑中运行的? 先明确几个文件类型: 1、头文件(.h .hpp) 第三方头文件、系统头文件、自编头文件…… 2、编译单位(.cpp .c cu) 自己写的脚本文件 3、目标文件&…

ArcGIS中分区统计栅格值前需要进行投影吗(在投影坐标系下进行吗),为什么?

最近,我接到了一个分区统计栅格数值前需要进行投影,或者说是必须需要在投影坐标系下进行吗的咨询。 答案是不需要刻意去变。 但是他又说他把地理坐标系下分区统计结果与投影坐标系下的分区统计结果分别做了一遍,并进行了对比,两个…