求职攻略| FPGA两种RAM的区别与用法

本期继续解析中兴FPGA岗不定项选择和单选部分的笔试题。点击这里回看前两期解析:第一期第二期

下面是不定项选择:
13下列关于FPGA中分布式RAM的描述正确的是(  )
A 相对于BRAM,分布式RAM的读写速度更快
B 分布式RAM由Slice中的LUT构成
C 相对于BRAM,分布式RAM对FPGA时序的影响更小
D 相对于BRAM,分布式RAM的更适合构成容量较小的RAM
解析:本题主要考察了块RAM(Block RAM,BRAM)和分布式RAM(Distributed RAM)的区别
块RAM(Block RAM,BRAM)和分布式RAM(Distributed RAM)是FPGA中常用的两种RAM资源,可以构成RAM、ROM、FIFO、移位寄存器等。分布式RAM可以是纯组合逻辑,即给出地址马上出数据,也可以加上寄存器变成有时钟的RAM,而BRAM一定是有时钟的。分布式RAM使用多少,综合后就会消耗多少。而BRAM是块RAM,它的大小和位置是固定的,即使只使用了一点点BRAM,综合后同样会消耗一整块RAM。
从物理上看,BRAM是FPGA中固定的RAM资源,由大块的SRAM构成,常见的有M4K、M9K、M18K、M36K。分布式RAM是用LUT拼出来的,而LUT本质上讲也是一个SRAM,只不过是容量较小的SRAM。同样都是由SRAM构成,所以读写速度理论上都是一样的,所以A选项错误。
CLB是指可编程逻辑功能块(Configurable Logic Blocks),顾名思义就是可编程的数字逻辑电路。CLB是FPGA内的三个基本逻辑单元。CLB的实际数量和特性会依器件的不同而不同,但是每个CLB都可配置,在Xilinx公司的FPGA器件中,一个CLB由4个Slice组成,这4个Slice又分SliceM和SliceL,其中M是Memory的首字母,L是Logic的首字母,比较SliceM和SliceL,他们的区别就是SliceM的查找表具有RAM和ROM的功能,而SliceL的则不具备。所以SliceM比SliceL多的功能就是做存储器和移位。于是有:SliceM可实现分布式RAM,而分布式RAM是由SliceM中的LUT实现,B选项正确。
BRAM是一列一列分布的,这样可能造成用户逻辑模块和BRAM直接的距离较长,延时较长,最终导致性能下降。但这并不意味着用分布式RAM的性能就一定比BRAM的性能好,由于LUT单元并不一定是连续的,构成的分布式RAM之间会有线延迟。所以具体谁对FPGA的时序影响更小还要看具体的布局布线情况,所以C选项错误。
如果需要使用较大的存储空间建议用BRAM;如果只是需要比较小的零散的存储空间一般就用分布式RAM。但这只是个一般原则,具体的使用得看整个设计中资源的冗余度和性能要求,所以D选项正确。
14以下标识符中,不合法的有(   )
A Many_2   B 6Real
C COunT?     D \**1
解析:本题主要考察了Verilog HDL语言中标识符的书写规则
题目中虽然没有明确说明是考察什么语言的标识符规则,但因为本套题目解析的是FPGA岗的题目并结合四个选项,所以我们以Verilog HDL语言来解析。
Verilog HDL中的标识符是指用来声明数据,变量,端口,例化名等除关键字外的所有名称的组合。如:input a, 这里a就是一个标识符,用来代表一个输入端口的名称。Verilog HDL中的标识符(identifier)可以是任意一组字母、数字、$符号和_(下划线)符号的组合,但不能是Verilog HDL语法中规定的关键字,且标识符的第一个字符必须是字母或者下划线。标识符最长可以是1023个字符,并且标识符区分大小写。在<a target="_blank" href="http://mp.weixin.qq.com/s?__biz=Mzg5MDIwNjIwMA==&mid=2247486174&idx=2&sn=4ea5742c24cbc34ca0d02ce29e26a11c&chksm=cfe16849f896e15fb2a4d1b671e1e7de7bcabc6dcb88a9c9c934fc8c2a3f69cc4ec7e4220008&scene=21#wechat_redirect" textvalue="“求职" 笔试经’第十一弹:华为硬件逻辑岗”'="" data-itemshowtype="0" tab="innerlink" data-linktype="2">“求职'笔试经’第十一弹:华为硬件逻辑岗”第24题有关于VHDL语言中标识符的书写规则,可以对比学习。B选项以数字开头不合法、C选项以问号结尾也不合法。
15使用异步复位时候需要注意(    )
A 异步复位信号时序不容易满足要求,需要代码设计时充分加以考虑
B 异步复位与时钟信号无关,所以需要保证复位信号干净无毛刺,以防出现误复位的情形C 当释放异步复位的时候,该触发器时钟可能马上跳转,引起触发器的建立时间不够
D 由于异步复位与时钟无关,在释放异步复位后,由于时钟和复位信号传播的微小延时,可能会引起寄存器没有同时释放复位
解析:本题主要考察了异步复位信号的特点
异步复位在FPGA的设计中经常会用到,但在开发FPGA的EDA工具都是基于同步逻辑的设计,对异步相关的设计无法进行时序的分析,所以也无法判断时序是否满足要求,A选项看上去没什么问题,其实源头就错了。B选项的描述完全正确。C选项和D选项都是说的复位释放没做好,会产生系统亚稳态的现象,所以异步复位和时钟需要有一个稳定的关系,即复位恢复时间(recovery time)和复位解除时间(remove time),详细请参考“求职攻略| 建立时间VS保持时间,竞争VS冒险(紫光展锐IC笔试题)”第4题。为了解决这个问题,我们一般采用异步复位同步释放的方法,在“求职攻略| 笔试必考:异步复位与同步释放”中有详细的讲解。所以正确答案选B、C、D。
最后关于FPGA中复位的相关用法,可以参考<a target="_blank" href="http://mp.weixin.qq.com/s?__biz=Mzg5MDIwNjIwMA==&mid=2247486602&idx=1&sn=24b08ceaea977611f7ded99082de8f3b&chksm=cfe16e1df896e70b506da4bb1e6f93bfd961fb06aee2c860e003865cebd20416c080ae26d172&scene=21#wechat_redirect" textvalue="“求职" 笔试经’第十五弹:fpga设计中复位用法(华为硬件逻辑岗)”'="" data-itemshowtype="0" tab="innerlink" data-linktype="2">“求职'笔试经’第十五弹:FPGA设计中复位用法(华为硬件逻辑岗)”第41题的解析。
16下面哪些属于时序约束(   )
A 偏移约束(IPAD到FF5、FF5到OPAD)
B 静态路径约束(IPAD到OPAD)
C 周期约束(FF5到FF5,即触发器到触发器)
解析:本题主要考察了时序约束的知识点
通俗来讲时序约束就是在FPGA逻辑设计中设计者需要告诉EDA开发工具(Quartus、Vivado、ISE等工具)应该从哪个引脚输入信号、输入信号需要延迟多长时间、时钟周期是多少。这样EDA开发工具在布局布线的时候就知道怎么去操作,从而满足设计要求。
时序约束主要包括:时钟周期约束、I/O延迟约束、跨时钟域路径约束、多周期路径约束、伪路径约束、最大/最小延迟约束。从题目选项中给的名字来看我们并不容易一一对应上,但括号里面的内容给了我们提示,这就好理解了,其实在“加油站|FPGA时序分析看这篇就够了(大疆逻辑岗)”第4题中就有对这些路径的介绍,一共包括:从输入到输出的路径、从输入到寄存器的路径、从寄存器到寄存器的路径、从寄存器到输出的路径、异步清零信号和时钟存在异步的进入和退出的时序问题。所以A选项对应的是I/O延迟约束,也是从输入到寄存器的路径、从寄存器到寄存器的路径;B选项对应的是最大/最小延迟约束,从输入到输出的路径;C选项对应的是时钟周期约束,从寄存器到寄存器的路径。所以A、B、C选项都正确。
以下是单选题:
17关于多bit信号跨时钟操作正确的是(   )
A 从高速时钟域到低速时钟域,可以采用打两拍的方式
B 对于错误敏感的关键数据,最好用RAM进行时钟域转换
C 从低速时钟域到高速时钟域,可以不用打两拍
D 从低速时钟域到高速时钟与,也需要打两拍
解析:本题主要考察了多bit信号跨时钟域的处理方法
关于跨时钟域的处理方法在“求职攻略| 建立时间VS保持时间,竞争VS冒险(紫光展锐IC笔试题)”第5题有过总结,多比特跨时钟域不能直接使用打两拍的方式,所以和打拍相关的选项都错误,所以只有B选项正确。
(0)

相关推荐