← 2022 · MTK联发科 笔试

推荐答案 测试一下

Verilog开发。

编程题 中等 笔试真题

参考答案

Verilog开发常见编程题覆盖数字逻辑核心模块设计。以同步复位D触发器为例:`always @(posedge clk) if(rst) q <= 1'b0; else q <= d;` 关键在非阻塞赋值(<=)用于时序逻辑,阻塞赋值(=)用于组合逻辑。混合使用易导致仿真与综合结果不一致。有限状态机推荐三段式:状态寄存器用非阻塞赋值,次态逻辑和输出逻辑用组合逻辑(阻塞赋值)或时序逻辑。易错:状态转移条件漏写或优先级错误,未列出所有状态导致锁存器。计数器需注意位宽与溢出,同步复位与异步复位选择(异步复位需敏感列表包含rst)。分频器:偶数分频用计数器翻转,奇数分频需组合逻辑产生占空比50%时钟。序列检测器用移位寄存器或状态机,注意重叠匹配与Non-overlapping区别。异步FIFO跨时钟域同步需两级寄存器+格雷码,防止亚稳态。仿真验证:写testbench时应初始化、时钟生成、随机激励、自检比较。综合约束:时序路径、时钟分组、false_path。代码规范:模块端口用input/output,参数化设计用parameter,避免不可综合语句(initial, #delay, for循环需确定次数)。调试技巧:用$monitor打印关键信号,波形观察毛刺。

涉及知识点

  • 阻塞与非阻塞赋值区别
  • 三段式状态机设计
  • 同步与异步复位
  • 组合逻辑中的锁存器避免
  • 跨时钟域同步与亚稳态
  • 仿真测试与综合约束
← 上一题
登录后反馈错题
下一题 →