FPGA面试笔记ba-bz
ba 简述ROM
ROM是只读存储器(Read-Only Memory的简称,是一种只能读出事先所存数据的固态半导体存储器。其特性是一旦储存资料就无法再将之改变或删除,且资料不会因为电源关闭而消失。
Altera 推出的 ROM IP 核分为两种类型:单端口 ROM 和双端口 ROM。对于单端口ROM 提供一个读地址端口和一个读数据端口,只能进行读操作;双端口 ROM 与单端口ROM 类似,区别是其提供两个读地址端口和两个读数据端口,基本上可以看做两个单口RAM 拼接而成。
bb 影响SDRAM读写速度有哪些
影响SDRAM读写速度的因素有以下几个方面(以SDR SDRAM-W9825G6KH-6芯片为例):
- SDRAM的工作频率:SDRAM的工作频率决定了其每秒可以进行多少次数据传输,一般来说,工作频率越高,读写速度越快,可以设置的时钟频率范围在100-143MHz。
- SDRAM的突发长度:突发长度是指在同一行中相邻的存储单元连续进行数据传输的数量,一般来说,突发长度越长,读写速度越快。突发长度可以通过模式寄存器来设置,可以设置的突发长度有1、2、4、8以及Full Page。
- SDRAM的CAS潜伏期:CAS潜伏期是指从列地址选通到第一个数据输出的时间间隔,一般来说,CAS潜伏期越短,读写速度越快。CAS潜伏期也可以通过模式寄存器来设置,可以设置的Latency为1、2、3。
- SDRAM的刷新时间:刷新时间是指对SDRAM内部存储阵列进行刷新操作以防止数据丢失的时间间隔,一般来说,刷新间隔越短,读写速度越慢。刷新时间由SDRAM芯片自身决定,该芯片的刷新间隔周期最大为64ms(8192 rows)
bc SDRAM中PLL时钟移相的作用
实现FPGA对SDR SDRAM的读写操作,为什么作为SDRAM控制器的工作时钟,需要进行相位偏移,主要是为了保证时钟和数据之间的时序关系,避免数据传输的错误或者不稳定。SDR SDRAM的数据传输是以时钟的上升沿为基准的,所以需要保证数据在时钟上升沿之前稳定,并且在时钟上升沿之后保持一段时间。如果时钟和数据没有相位差,那么可能会出现数据在时钟上升沿前后发生变化,导致SDRAM无法正确识别或者捕获数据。因此,需要使用PLL(锁相环)来产生一个和系统时钟频率相同,但是有一定相位差的时钟作为SDRAM控制器的工作时钟,这样就可以保证数据在时钟上升沿前后有足够的保持时间。
相位差的具体大小取决于SDRAM的参数和FPGA的延迟情况,一般需要根据实际情况进行调试和优化。有些FPGA提供了内部的专用时钟布线资源,可以减少时钟偏斜,并且可以通过软件设置不同的相位差。如果没有这样的资源,那么就需要使用外部的PLL芯片来产生相位差时钟。一般来说,相位差应该在90度到270度之间,具体可以参考SDRAM和FPGA的手册。
bd SDRAM信号线
以MT48LC32M16为例:
| Symbol | Type | Description |
|---|---|---|
| CLK | Input | Clock: CLK is driven by the system clock. |
| CKE | Input | Clock enable: CKE activates (HIGH) and deactivates (LOW) the CLK signal. |
| CS# | Input | Chip select: CS# enables (registered LOW) and disables (registered HIGH) the command decoder. |
| CAS#,RAS#,WE# | Input | Command inputs: RAS#(Row Address Strobe), CAS(Column Address Strobe)#, and WE# (along with CS#) define the command being entered. |
| x4,x8 DQM x16 DML,DQMH |
Input | Input/output mask: DQM is an input mask signal for write accesses and an output enable signal for read accesses. |
| BA[1:0] | Input | Bank address input(s): BA[1:0] define to which bank the ACTIVE, READ, WRITE, or PRECHARGE command is being applied. |
| A[12:0] | Input | Address inputs: A[12:0] are sampled during the ACTIVE command (row address A[12:0]) and READ or WRITE command (column address A[9:0], A11, and A12 for x4; A[9:0] and A11 for x8;A[9:0] for x16; with A10 defining auto precharge) to select one location out of the memory array in the respective bank. |
| x16 DQ[15:0] | I/O | Data input/output: Data bus for x16. |
| x8 DQ[7:0] | I/O | Data input/output: Data bus for x8. |
| x4 DQ[3:0] | I/O | Data input/output: Data bus for x4. |
be 常见的供电解决方案并简述各自特点
- LDO稳压器(Low Dropout Regulator):电流输出要求不高、简单廉价
- DC/DC芯片(Direct Current):能够保证较高的电源转换效率,散热容易一些、输出电流也更大,是大规模FPGA器件的最佳选择
- 电源模块:简单实用并且能够有更稳定的性能,只不过价格通常比较昂贵,对于成本要求不敏感的情况下,是FPGA电源设计的一种最为简单快捷的解决方案
bf JTAG信号线
| Name | Full Name | Description |
|---|---|---|
| TCK | Test Clock | 测试时钟信号,用于同步测试和调试操作 |
| TMS | Test Mode Select | 用于选择和控制JTAG测试模式 |
| TDI | Test Data Input | 用于输入测试数据和指令 |
| TDO | Test Data Output | 用于输出从被测试芯片中读取的测试和结果 |
| TRST | Test Reset | 用于复位JTAG状态机 |
| VCC | Voltage At The Common Collector | 电路供电电压 |
| GND | Ground | 公共接地 |
bg 时钟信号往往不只是供给单个寄存器使用,该如何分配时钟和复位引脚
由于FPGA器件内部使用的时钟信号往往不只是供给单个寄存器使用,因为在实际应用中,成百上千甚至更多的寄存器很可能共用一个时钟源,那么从时钟源到不同寄存器间的延时也可能存在较大偏差(我们通常称为时钟网络延时),而我们知道,这个时间差过大是很要命的。因此,FPGA器件内部设计了一些称之为“全局时钟网络”的走线池。通过这种专用时钟网络走线,同一时钟到达不同寄存器的时间差可以被控制到很小的范围内。(时钟信号连接到“全局时钟专用引脚”,复位信号连接到“专用复位引脚”)
bh SDRAM中英文全称
SDRAM英文全称“Synchronous Dynamic Random Access Memory”,译为“同步动态随机存储器”
bi 使用过的FPGA的内核电压是多少
以厂商Altera,Device Family为Cyclone IV E,Device Name为EP4CE10F17C为例,其内核电压为1.2V。
bj OC和OD
集电极开路输出(OC):

如图,开集的意思,就是集电极C一端什么都不接,直接作为输出端口。
如果要用这种电路带一个负载,比如一个LED,必须接一个上拉电阻,就像这样。

当Vin没有电流,Q5断开时,LED亮。 当Vin流入电流,Q5导通时,LED灭。
漏极开路输出(OD):
就是把上图中的三极管换成 场效应管(MOSFET)。
N型场效应管各个端口的名称:

场效应管 是电压控制型元器件,只要对栅极施加电压,DS就会导通。结型场效应管有一个特性就是它的输入阻抗非常大,这意味着:没有电流从控制电路流出,也没有电流进入控制电路。没有电流流入或流出,就不会烧坏控制电路。而双极型晶体管不同,是电流控制性元器件,如果使用开集电路,可能会烧坏控制电路。这大概就是我们总是听到开漏电路而很少听到开集电路的原因吧?因为开集电路被淘汰了。

OC门与OD门是十分相似的,只是将三极管换成了MOS管:
1)当INPUT输入高电平,GS>阈值电压,MOS管Q1导通,Q3的G点电位为0,Q3截止,OUTPUT高电平;
2)当INPUT输入低电平,GS<阈值电压,MOS管Q1截止,Q3的G点电位为高,Q3导通,OUTPUT低电平;
bk RT8096CH的电压转换公式
The RT8096C is a high efficiency synchronous step-down DC/DC converter. Vout=Vref×(1+R1R2)V_{out} = V_{ref} \times (1 + \frac {R_{1}} {R_{2}}) Vout=Vref×(1+R2R1)R2是接地的电阻阻值。
bl PLL(锁相环工作原理)
PLL核(锁相环)是通过硬件描述语言将上述电路元件实现逻辑关系和连接方式从而实现锁相环。给定一个输出频率,其中FD/PD(频率检测器/相位检测器)有两个输入,分别是参考时钟ref_clk和VCO(压控振荡器)的输出c0,则通过FD/PD,会在两者的频率(相位)误差内输出矩形脉冲,由于该矩形存在脉冲突变,所以需要经过LF(环路滤波器),使脉冲变得平滑,信号趋于平均值。VCO接收来自LF输出的电压输出对应的频率(VCO输出频率与接收电压成正比),由于VCO频率受电压影响,频率可能不稳定,所以需要将输出再次接入FD/PD,通过锁相环的闭环反馈系统,使输出频率趋于要求的c0。

bm 描述IIC
IIC(Inter-Inegrated Circuit)协议是一种用于集成电路之间的短距离通信的串行总线,它使用两根信号线:串行数据线(SDA)和串行时钟线(SCL)。IIC协议支持多主多从的架构,即可以有多个主设备和多个从设备同时连接到同一条总线上。主设备负责发起通信,寻址从设备,并控制数据的传输方向。从设备负责响应主设备的寻址,发送或接收数据,并在每个字节后产生应答信号。
IIC协议的通信过程包括以下几个步骤:
- 起始条件:主设备在SCL为高电平时,将SDA由高电平拉低,表示要开始一次通信。
- 器件地址:主设备发送一个7位从设备地址,加上一个读1/写0标识位,表示要读取或写入从设备的数据。从设备如果识别到自己的地址,就在下一个时钟周期产生一个低电平的应答信号。
- 数据传输:主设备和从设备按照8位一个字节的方式交换数据,每个字节后都要有一个应答信号。数据传输的方向由主设备决定,可以在通信过程中通过重复起始条件和改变读/写位来改变方向。
- 停止条件:主设备在SCL为高电平时,将SDA由低电平拉高,表示要结束一次通信。
IIC协议的优点是简单、灵活、可靠、低成本、低功耗,适用于各种低速度的外围设备之间的通信,如EEPROM、温度传感器、LCD驱动器等。
IIC协议的缺点是速度较慢、总线长度受限、需要上拉电阻、容易受干扰等。
三种传输模式:标准模式传输速率为100Kbit/s,快速模式为400Kbits/s,高速模式下可达3.4Mbit/s,但目前大多I2C设备尚不支持高速模式。
应用:我对IIC协议有一定的理解和实践经验,可以使用软件方式来实现IIC通信。我熟悉IIC协议的时序图和数据格式,可以使用示波器或逻辑分析仪来调试和分析IIC通信过程。我也了解一些常用的IIC外围设备的工作原理和寄存器配置方法,可以根据不同的应用场景选择合适的IIC设备。设计过一个可进行读写操作的IIC控制器,实现FPGA对EEPROM(Electrically Erasable Programmable Read-Only Memory, 24C64芯片)存储器的数据写入和数据读取操作,并上板验证。
bn SDRAM为什么要刷新
因为SDRAM是一种动态内存,它的数据是存储在电容中的。电容会随着时间的流逝而慢慢放电,导致数据丢失或错误。为例保证数据的完整性和正确性,SDRAM需要定期地对电容进行充放电,也就是刷新操作。刷新操作可以恢复电容的电荷状态,从而保持数据不变。(W9825G6KH-6芯片所允许的刷新间隔最大为64ms,8192 rows)
bo FSM三段式的描述
FPGA中的三段式状态机是一种常用的状态机设计方法,它可以将状态机的功能分为三个部分,分别是状态寄存器、组合逻辑和输出逻辑。这样做的好处是可以提高代码的可读性、可维护性和可优化性。
三段式状态机的一般结构如下:
- 时序逻辑描述次态赋给现态。
- 组合逻辑描述状态转移。
- 时序逻辑描述状态输出。
bp FPGA器件的电压需求以及各含义
以厂商Altera,Device Family为Cyclone IV E,Device Name为EP4CE10F17C8为例:
核心电压(内核电压):FPGA内部各种逻辑电路正常工作运行所需要的基本电压,该电压用于保证FPGA器件本身的工作。(上述板卡内核电压为1.2V)
I/O电压:FPGA的I/O引脚工作所需要的参考电压。(上述板卡I/O电压为3.3V)
辅助电压:FPGA器件工作所需要的其它电压我们通常都称为辅助电压。例如FPGA器件下载配置所需的电压。以及很多FPGA的PLL功能模块的供电会有特殊需求,也可以认为是辅助电压。(上述板卡辅助电压为2.5V)
bq FPGA中的时序约束
时序约束是一项关键的任务,它用于确保设计在FPGA上能够满足所需的时序性能和时钟要求。时序约束包括了以下几个方面:
- 时钟约束:时序约束的核心是定义时钟信号。这包括指定时钟信号的名称、频率、时钟域(如果有多个时钟域)、时钟边沿(上升沿或下降沿)等信息。时钟约束告诉综合工具和布局布线工具哪个信号是时钟,以及如何处理它。
- 时钟分配:时序约束还可以包括时钟的分配和路由信息。这可以指定时钟如何从输入引脚到达FPGA芯片,并如何从FPGA内部分布到各个逻辑元件。这确保了时钟信号的准确传播。
- 时序路径:时序约束需要定义关键路径,即在设计中必须满足的最紧迫的时序要求。这通常包括了从时钟信号到达某个输出信号的路径,以及所需的时序延迟。
- 时序分析:一旦时序约束被定义,工程师可以运行时序分析,以确保设计在FPGA上满足这些约束。时序分析工具会检查每个信号路径上的时序延迟,以确保它们满足设计要求。如果不满足,工程师需要调整设计或时序约束,以解决时序问题。
- 时序优化:时序约束还可以用于时序优化。通过更改时序约束或设计本身,可以尝试优化性能,减少延迟或提高时钟频率,以满足特定的性能目标。
- 约束文件:时序约束通常以约束文件的形式提供,这是一个文本文件,其中包含了上述信息以及其他约束信息。综合工具和布局布线工具会读取约束文件以进行设计分析和实现。
br QuartusⅡ与Vivado后缀文件对比
| 厂商\类型 | 工程文件 | 临时文件 | 固化文件 | 上板验证 | 引脚约束 |
|---|---|---|---|---|---|
| QuartusⅡ | .qpf | .sof | .jic | .stp | .tcl |
| Vivado | .xpr | .bit | .bin/.mcs | .ltx | .xdc |
bs Xilinx常见的Device Family
SPARTAN-7 十(造价单位)
ARTIX-7 百
KINTEX-7 千
VIRTEX-7 万
UltraScale ['ʌltrə] [skeɪl]
UltraScale+
Zynq-7000
bt Temperature Grade
Commercial (Tj = 0°C to +85°C)
Industrial (Tj = –40°C to +100°C)
bu Device name : XC7K160T-2FFG676I的命名规范
XC : Xilinx Commercial
7 : Generation 7
K : KINTEX-7
160 : Logic Cells
-2 : Speed Grade Mid
FF : Package Type Flip-Chip
G : RoHs 6/6
676 : Nominal Package Pin Counnt
I : Temperature Grade Industrial
bv 使用原理图实现工程的步骤
QuartusⅡ : File -> New -> Design Files -> Block Diagram/Schematic File
Vivado : Flow Navigator -> IP INTEGRATOR -> Create Block Design
bw 简述Vivado-IP核ILA
ILA(Integrated Logic Analyzer),是一种集成逻辑分析仪,它可以用来实时监测FPGA内部的数字信号波形,分析逻辑错误的原因,帮助调试设计。
bx 简述Zynq-7000

by 差分传输的特点以及其放置的电阻一般为多少
差分传输:抗共模干扰能力强(共模噪声是同时作用于正向和反向线上的噪声,但由于差分信号线会在接收端对两个信号取差,因此共模噪声会被消除或大幅减小)。传输速率大概为1.923Gbps左右。
匹配电阻(阻抗匹配):将电阻的阻值调整到与某一特定值相等或非常接近的电阻,通常为100或120欧姆,起到纠正波形的作用;通常放置在离接收端近处。
bz 实现10-20随机数
$random % 11 + 10
「智能机器人开发者大赛」官方平台,致力于为开发者和参赛选手提供赛事技术指导、行业标准解读及团队实战案例解析;聚焦智能机器人开发全栈技术闭环,助力开发者攻克技术瓶颈,促进软硬件集成、场景应用及商业化落地的深度研讨。 加入智能机器人开发者社区iRobot Developer,与全球极客并肩突破技术边界,定义机器人开发的未来范式!
更多推荐



所有评论(0)