Verilog刷题学习_Day 2

328 阅读3分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路


第一题: 流水线设计是verilog设计中基本功之一,是对组合逻辑系统的分割,并在各个部分之间插入寄存器,并暂存中间数据的方法,下列关于流水线说法错误的是()

A. 流水线操作的目的是把一个大操作分解为若干小操作,因为每一步操作变小了,所以时间更短,频率更快
B. 分解为若干小操作,可以让小操作并行运行,提高整体处理的速度
C. 流水线在理各个阶段都需要增加寄存器保存中间计算状态,而且多条指令并行执行会导致功耗增加,硬件复杂度增加
D .在移位相加的乘法器中,使用流水线的方法可以获得更快的速度,更小的面积

本题答案选D; 插入了寄存器,无疑增大了面积,以面积换速度;

  • 关于Verilog中运算符的优先级排序如下:

image.png

  • 将十进制数13.613转换成二进制数,要求装换误差小于1%,下面答案正确的是()
A. 1101.10010100        B. 1101.1001          
C. 1101.10011100        D. 1101.10011101

image.png 这题答案应该选D,我选了C。因为我乘到0.928时,直接抹去了最后的小数,从参考答案给出的解释来看,最后的小数如果大于0.5,那么应该需要四舍五入,最后应该取1才对。

  • 关于异步FIFO的描述,错误的是()
A. 异步FIFO是指读、写时钟完全独立且不一致,或者不同频率,或者同频但不同相
B. 异步FIFO地址产生最好采用2进制计数的方式,当读使能有效,在时钟作用下,读地址加1,
写使能有效,写地址加1
C. 当读写指针相同时,异步FIFO为空
D. 异步FIFO会出现假满的情况,但数据不会出错,会损失些性能

本题答案选B,应该使用格雷码,降低亚稳态出现的概率
如产生地址使用二进制计数的话,可能会产生地址增1时出现多位地址线变化,从而产生一些中间值,因此在比较时,可能会产生误判断,导致逻辑错误; 具体参考见这个 FIFO那些事儿_lkiller_hust的专栏-程序员资料 - 程序员资料 (4k8k.xyz)

image.png

  • 关于标识符的注意事项: 标识符必须以英文字母起头,或者用下横线起头,其中可以包括数字,$符和下横线符
  • CPLD与FPGA都是通用可编程逻辑器件。在下面关于CPLD与FPGA的选项中,正确的是()
A. CPLD的集成度和复杂度均高于FPGA     B. FPGA工艺多为EEPROM等工艺
C. CPLD多为SRAM、flash工艺           D. FPGA相对CPLD成本高

FPGA的集成度和复杂度均高于GPLD,所以FPGA可实现复杂逻辑电路设计。所以A选项是错误的。 FPGA工艺多为SRAM、flash等工艺,掉电后内信息消失,所以该类型需外配存储器,而CPLD工艺多为EEPROM等工艺,掉电后信息不消失,所以不用外配存储器。所以B选项和C选项都是错误的。

  • 逻辑左移和算术左移没有区别 算术右移的话需要格外注意最高符号位的情况,如果符号位为1,则全部补1,如果符号位为0,则全部补0