← 2022 · 芯海科技 笔试

推荐答案 测试一下

如下verilog描述中哪个或者哪几个会生成寄存器

A、always@(clk) B、always@(negedge clk) C、always@(posedge clk) D、assignreg_a=reg_b;
多选题 中等 笔试真题多选

参考答案

正确答案是B和C。 解析:在Verilog中,生成寄存器(即触发器)的关键条件是使用always块且敏感列表包含时钟边沿(posedge或negedge),并且在块内对变量进行赋值(通常使用非阻塞赋值<=)。 选项A:always@(clk)敏感列表是电平敏感(clk变化即触发),而不是边沿敏感。这种写法通常用于组合逻辑或锁存器生成,若块内条件语句不完整可能综合为锁存器,但不会生成寄存器(触发器)。因此A不会生成寄存器。 选项B:always@(negedge clk)是下降沿敏感,属于时序逻辑的典型写法,赋值语句reg_a<=reg_b会综合为下降沿触发的寄存器(D触发器)。 选项C:always@(posedge clk)是上升沿敏感,同样会综合为上升沿触发的寄存器。 选项D:assign reg_a=reg_b;是连续赋值语句,用于描述组合逻辑,生成的是连线(wire)或组合逻辑输出,不会生成寄存器。 因此,只有B和C会生成寄存器。 易错点:注意区分电平敏感与边沿敏感;注意assign语句对应组合逻辑;注意always@(clk)可能综合为锁存器而非寄存器。

涉及知识点

  • always块的边沿敏感与电平敏感
  • 寄存器(触发器)的生成条件
  • 非阻塞赋值与阻塞赋值的区别
  • 组合逻辑与时序逻辑的区分
  • 连续赋值语句assign的特性
← 上一题
登录后反馈错题
下一题 →