FPGA面试总结(八股文)_fpga八股文
ps:内容都是自己总结的,如果有错误的话请及时联系我修改,谢谢~
后续有补充的话我会持续的更新
1.什么是FPGA
FPGA是一种可以重构电路的芯片,是一种硬件可重构的体系结构;
中文名是 现场可编程门阵列
2.FPGA的设计流程
系统规划 ---> RTL输入(写代码)---> 行为仿真/功能仿真 ---> 逻辑综合
---> 综合后设计分析(检查时序及资源占用情况)---> 设计实现 ---> 布线后仿真
---> 板级调试 ---> bistream固化
3.查找表(LUTS) look-up-tables
其本质就是一个RAM
当用户通过原理图或HDL语言描述了一个逻辑电路以后,FPGA开发软件就会自动计算逻辑电路的所有可能得结果,并把结果事先写入RAM当中,这样在每输入一个信号进行逻辑计算就等于输入一个地址来进行查表,找出地址对应的内容,然后输出即可。
4.毛刺如何消除
去除毛刺可以利用D触发器的输入端D对毛刺信号不敏感的特点;因为当输入信号有毛刺时,只要该毛刺不发生在时钟的上升沿时刻,输出就不会有毛刺产生。
5.锁存器/触发器
latch 属于异步电路设计,是电平触发
register 属于同步电路,是边沿触发
but 锁存器:1)对毛刺不敏感,很容易在信号上产生毛刺
2)没有时钟信号,不容易进行静态时序分析
D触发器可用做:数字信号的寄存、移位寄存、分频和波形发生器等。
6.组合逻辑/时序逻辑
组合逻辑:任意时刻的输出仅取决于该时刻的输入,与电路原本的状态无关,逻辑中不牵涉跳变沿信号的处理。
时序逻辑:任意时刻的输出不仅取决于该时刻的输入,而且还和电路原来的状态有关。
7.竞争与冒险
两个输入信号同时向两个相反的方向的逻辑状态转换就称为竞争;
由于竞争,从而在电路的输出端可能产生尖峰脉冲的现象称为冒险;
竞争不一定会产生冒险,但有冒险就一定有竞争。
8.建立时间/保持时间
建立时间Tsu:触发器在时钟上升沿到来之前,其数据输入端的数据必须保持不变的时间就称为建立时间。
建立时间决定了该触发器之间组合逻辑的最大延迟。
保持时间Th:触发器在时钟上升沿到来之后,其数据输入端的数据必须保持不变的时间。
保持时间决定了该触发器之间组合逻辑的最小延迟。
如果不满足建立时间和保持时间,触发器就会进入亚稳态。
9.亚稳态
亚稳态,是因为违反寄存器的建立时间和保持时间而产生的。
如果信号在建立时间和保持时间这段时期发生变化,那么信号的输出是未知的,这个未知的状态便称为亚稳态。
解决方法:1)降低时钟频率;
2)使用两级触发器;
3)采用FIFO对跨时钟域数据通信进行缓冲;
4)对复位电路采用异步复位,同步释放。
10.同步FIFO/异步FIFO
同步FIFO的写时钟和读时钟为同一个时钟,内部逻辑都是同步逻辑,常用于交互数据缓冲。
异步FIFO的写时钟和读时钟为异步时钟(就是不是共用同一个时钟),FIFO内部的写逻辑和读逻辑的交互需要异步处理,异步FIFO常用于跨时钟域交互。
11.有限状态机FSM设计
1)一段式:整个状态机写到一个always模块中,在该模块中既描述状态转移,又描述状态的输入和输出。
2)二段式:第一个always模块采用同步时序描述状态转移(时序逻辑);第二个模块采用组合逻辑判断状态转移条件,描述状态转移规律以及输出。
3)三段式:第一个always模块采用同步时序(时序逻辑)来描述状态转移;一个always采用组合逻辑判断状态转移条件,描述状态转移规律;一个always模块用来描述状态输出。
12.PLL(锁相环)
锁相环作为一种反馈控制电路,其特点是利用外部输入的参考信号控制环路内部震荡信号的频率和相位。
13.BRAM/DRAM
1)BRAM:由一定数量固定大小的存储卡构成,使用BRAM资源不占用额外的逻辑资源,且速度快。
2)DRAM:分布式RAM,可以实现BRAM不能实现的异步访问。
14.SPI协议
SPI通讯设备的通讯模式是主从通讯模式,通讯双方有主从之分。
可以分为一主一从或者一主多从。
SPI协议中没有设备地址,它使用CS_N片选信号线来寻址,当主机要选择从设备时,把该从设备的CS_N信号线设置为低电平,则该从设备被选中,即片选有效。
所以SPI通讯以CS_N线置低电平为开始信号,以CS_N线被拉高作为结束信号。