加油站| FPGA设计中时序收敛的准则你知道吗(大疆FPGA逻辑岗)
达尔闻加油站,充分利用你的碎片时间涨知识。
本期加油站解析题目来源大疆硬件逻辑岗,共5道选择题,涉及知识点包含:奈奎斯特采样定理、逻辑分析的作用、环形振荡器的计算、FPGA和CPLD的区别等。
本次5道题目更偏向于FPGA相关知识的了解,题目不难,看看你是否都做对了。
15、从奈奎斯特采样定理得出,要使实信号采样后能够不失真还原,采样频率f与信号最高频率fs的关系是:( )。(大疆FPGA逻辑岗B卷)
A f大于等于2fs B f小于等于2fs
C f大于等于fs D f小于等于fs
解析:本题目主要考察了奈奎斯特采样定理
采样定理为采样过程所应遵循的规律,又称取样定理、抽样定理、奈奎斯特定理、科捷利尼科夫采样定理、香农采样定理、奈奎斯特-香农采样定理。采样定理说明采样频率与信号频谱之间的关系,是连续信号离散化的基本依据。
在进行模拟/数字信号的转换过程中,当采样频率f大于信号中最高频率fs的2倍时(f > 2fs),采样之后的数字信号可以完整地保留原始信号中的信息,但一般实际应用中保证采样频率为信号最高频率的2.56~4倍,否则采样数据中就会出现虚假的低频成分,产生频谱的混叠(相位/频率模糊),所以A选项正确。
16、以下哪种异常可以用逻辑分析仪测试( )。(大疆FPGA逻辑岗B卷)
A 信号间串扰过大 B 6个信号的异常组合
C 信号占空比超标 D 信号上升沿缓慢
解析:本题目主要考察了逻辑分析仪的作用
逻辑分析仪是分析数字系统逻辑关系的仪器。逻辑分析仪是属于数据域测试仪器中的一种总线分析仪,即以总线(多线)概念为基础,同时对多条数据线上的数据流进行观察和测试的仪器,这种仪器对复杂的数字系统的测试和分析十分有效。逻辑分析仪是利用时钟从测试设备上采集和显示数字信号的仪器,最主要作用在于时序判定。由于逻辑分析仪不像示波器那样有许多电压等级,通常只显示两个电压(逻辑1和0),因此设定了参考电压后,逻辑分析仪将被测信号通过比较器进行判定,高于参考电压者为High,低于参考电压者为Low,在High与Low之间形成数字波形。
在对数字信号进行观察时,尤其是对FPGA中的内部、接口信号进行观察时,我们常常会用到逻辑分析仪,因为我们的数字信号只有高(1)和低(0),且很多信号是并行执行的,用逻辑分析仪来观察再适合不过了,且还可以通过FPGA开发工具在FPGA内部搭建在线逻辑分析仪(Intel的FPGA开发工具Quartus中的在线逻辑分析仪叫SignalTap、Xilinx的FPGA开发工具ISE中的在线逻辑分析仪叫ChipScopes、Xilinx的FPGA开发工具Vivado中的在线逻辑分析仪叫ILA、Lattice的FPGA开发工具Diamond中的在线逻辑分析仪叫Reveal),来抓取FPGA内部的信号,十分的方便。
然后来看一下选项,首先是A选项说的串扰问题,我们先来了解下什么是串扰。串扰是两条信号线之间的耦合、信号线之间的互感和互容引起线上的噪声。容性耦合引发耦合电流,而感性耦合引发耦合电压。PCB板层的参数、信号线间距、驱动端和接收端的电气特性及线端接方式对串扰都有一定的影响。检查这种问题用示波器是最好的了。所以A选项错误。
然后再看看D选项,信号上升沿缓慢是一个过程变化,不是所谓的只有高(1)和低(0)的情况,应该用示波器来观察,而不是逻辑分析仪,也应该立刻排除掉。所以D选项错误。
很多同学拿不准B、C两个选项。这两个选项看上去都有道理,也都和数字逻辑有些关系。对于B选项来说,如果说6个信号是并行的且还是数字信号,那无疑是用逻辑分析仪来找问题,平时我们仿真也是这么做的,但如果是模拟信号6个模拟信号之间的组合的话那用逻辑分析仪就很难分析了,虽然这种情况很少见,更多的是数字信号之间的组合。对于C选项来说逻辑分析仪是可以观察到波形占空比不同的,但是想要观察占空比的细微差别是很难做到的,题目中所谓的“超标”其实表述不太准确,出题人应该更多是想表达如测试时钟的抖动导致占空比这种细微误差的现象,这就很难用逻辑分析仪来观察了,必须通过示波器测量来发现问题。所以综合对比,答案选择B更为贴切,也符合出题人的本意。
17、下图所示环形振荡器,单个反相器延时为3us,稳定震荡后,输出的周期信号频率为多少?( )。(大疆FPGA逻辑岗B卷)
A 60us B 15us
C 20us D 30us
解析:本题目主要考察了环形振荡器的计算
上图为一个简单的环形振荡器,由奇数个反相器输出端和输入端首尾相接构成,反相器的每一级都会进行一次取反。之所以使用奇数个反相器是因为偶数个(输入是什么输出就是什么)反相器会形成正反馈,会出现电路锁定问题,无法形成振荡。而奇数个(输出是输入的取反值)反相器形成负反馈,可以形成振荡。
环形振荡器的振荡周期=单个反相器延迟时间*反相器*2,所产生的方波频率=1/(单个反相器延迟时间*反相器*2),题目中给出的单个反相器延迟时间为3us,图中的反相器是5个,带入公式得振荡周期=(3*5*2)us=30us,振荡频率≈33.333KHz,所以答案选D。
这种振荡器的特点是线路简单,起振容易,如果不加延迟网络则不需要阻容元件,便于集成化,缺点是没有延迟网络频率不便于灵活选择,要实现低频振荡需要很多的反相器因而不易实现,另外由于门电路延迟时间有一定误差,制作时频率不太准确。如果加上阻容网络,则与同样需要阻容元件的对称多谐振荡器或非对称多谐振荡器相比,所需芯片面积和成本不占优势。主要应用于集成电路内部集成的要求不高的高频振荡,以及普通数字电路中的简易振荡器。
18、下列说法正确的是:( )。(大疆FPGA逻辑岗B卷)
A Altera的MAX7000系列属于FPGA结构
B FPGA全称为复杂可编程门阵列
C 基于SRAM的FPGA器件,每次上电之后必须重新进行配置
D FPGA是基于乘积项结构的可编程逻辑器件
解析:本题目主要考察了FPGA和CPLD的区别
该题目是FPGA的基本常识,对做FPGA的人来说是一道送分题。首先来说A选项,Altera(15年被Intel收购)的MAX系列:Intel MAX 10FPGA 在低成本的瞬时接通小外形可编程逻辑设备中提供了先进的处理功能,能够革新非易失集成。它们提供支持模数转换器(ADC) 的瞬时接通双配置,和特性齐全的FPGA功能,针对各种成本敏感性的大容量应用进行了优化,包括工业、汽车和通信等。除了MAX10以外,其他的该系列产品都是CPLD。所以A选项错误。
FPGA是Field Programmable Gate Array的缩写,全称为现场可编程门阵列;CPLD是Complex Programmable Logic Device的缩写,全称为复杂可编程逻辑器件。所以B选项错误。
FPGA大部分是基于SRAM结构的,程序在系统断电时丢失,每次上电时需从器件外部的EEPROM或Flash等存储器将程序重新写入SRAM中,可以实现板级和系统级的动态配置;CPLD主要是基于EEPROM或Flash存储器结构的,系统断电时程序也不会丢失。所以C选项正确。
FPGA是基于查找表结构的可编程逻辑器件,而CPLD是基于乘积项的可编程逻辑器件。所以D选项错误。
FPGA主要应用于中高端领域;而CPLD主要应用于低成本、小规模、低端领域。但随着FPGA成本的降低,在低端领域FPGA也使用的很广泛。FPGA和CPLD还有一些不同,如下表所示:
19、在数字电路设计中,要求模块设计中保持寄存器输入输出的好处( )。(大疆FPGA逻辑岗B卷)
A 没有好处 B 降低亚稳态概率
C 提高仿真速度 D 利于时序收敛
解析:本题目主要考察了时序收敛的一些准则
很多同学第一眼的感觉可能会选择B,因为他们知道单比特信号从慢速时钟域同步到快速时钟域会使用打两拍的方式消除亚稳态,但是这里情况却不一样,这里没说是用两个寄存器,且还有提到了“输出”,这显然就不是简单的跨时钟域问题了,这样A选项和B选项肯定就不对了。提高仿真速度和RTL代码中保持寄存器输入输出没有明显的关系,所以C选项也不对。
我们来说一下D选项为什么正确。模块的边界尽量使用寄存器来做数据的交互,UG949中给出了参考建议:层级边界输出加寄存器是为了将关键路径限定在单个模块或边界之内。也可以在层级边界考虑输入加寄存器。通常而言,分析并修复位于一个模块中的时序路径比跨多个模块的路径要容易得多。任何在层级边界上的路径为寄存器化,都应在重建层级或扁平化层级的条件下完成综合,以实现跨层级优化。在逻辑边界上寄存数据路径有助于在整个设计进程中保持(用于调试的)可跟踪性,因为这样可以尽量避免跨层级优化,逻辑也不必跨模块移动。这样才能使系统保持更好的时序。
关于Xilinx器件和Vivado适用的代码风格,《Vivado使用误区与进阶》有以下建议:
多使用Vivado自带的代码模板; 尽量避免使用异步复位; 在模块边界上使用寄存器而非组合逻辑; 使用流水结构来降低逻辑层数; 采用适当的RAM和DSP的实现方式(是否选用硬核); 在综合后或是逻辑优化(opt_design)后的时序报告上分析代码优化的方向。
下期预告
下期会解析一道FPGA逻辑题,同样来自大疆笔试题(FPGA逻辑岗)。
20、如下图,当CLK1为100MHz时,约束set_input_delay -clocks CLK1 -max 5 sig_a,如果CLK1变成50MHz,需要保证的约束效果不变,此时input_delay应该设置为多少?( )
A 15ns B 20ns
C 5ns D 10ns
21、下列关于代码覆盖率描述错误的是( )。
A 代码覆盖率包括条件覆盖率
B 代码覆盖率达到百分之一百仍然可能有bug
C 代码覆盖率包括功能覆盖率
D 代码覆盖率包括语句覆盖率
22、以下哪些手段可以降低SRAM的动态功耗( )。(多选)
A 不访问SRAM时关闭时钟
B 不访问SRAM时地址线不翻转
C 不访问SRAM时写数据线不翻转
D不访问SRAM时,将其Power down
Test Development Engineer
Algorithm Application EngineerEND
目前,我们正在通过大疆硬件岗和FPGA逻辑岗的题目,为大家带来笔试题的解析,以及知识的补充。如果有想要解析的题目,可以发给达尔闻安排。同时,欢迎加入达尔闻求职技术交流群,进群方式:添加妮姐微信(459888529),并备注求职,即可邀请进群。
达尔闻求职“加油站”系列: