← 数字IC设计工程师笔试面试经典100题(大部分有答案)

推荐答案 测试一下

用verilog编程,语法要符合 FPGA设计的要求

编程题 中等 笔试真题

参考答案

本题看似未给出具体编程任务,但核心是考察对FPGA设计约束下的Verilog语法掌握。FPGA设计要求代码可综合、高效、可靠,需注意以下要点: 1. 使用always块时区分组合逻辑(@(*)或@(敏感列表))和时序逻辑(@(posedge clk)),组合逻辑中所有输入必须出现在敏感列表或使用@(*),避免生成锁存器;时序逻辑中赋值使用非阻塞赋值(<=)。 2. 避免混合阻塞和非阻塞赋值,同一always块内仅使用一种赋值方式,且时序逻辑必须使用非阻塞赋值。 3. 寄存器变量默认初始化在FPGA中是异步复位/置位,推荐使用同步复位或异步复位同步释放,避免亚稳态。复位信号应列在敏感列表。 4. 三态缓冲器需使用特定写法:assign data = oe ? reg_data : 'bz;避免在always块中驱动高阻态。 5. 避免生成不必要的latch:在组合逻辑always块中,所有分支必须覆盖所有输入条件,且每个输出都要赋值;在时序逻辑中,if-else或case必须完整,否则综合出latch。 6. 使用参数化设计(parameter/localparam)提高可重用性;避免使用for循环(除非循环次数可静态确定);避免使用function/task中的wait、fork等不可综合语句。 7. FPGA中时钟和复位网络需专用资源,不要用组合逻辑产生时钟,尽量使用全局时钟缓冲器(BUFG)。 8. 推荐采用同步设计风格,所有跨时钟域信号需同步化(两级触发器打拍)。 9. 模块化设计,端口方向明确,避免在顶层模块中使用内部信号直接连接外部引脚。 10. 仿真和综合时注意仿真延迟(#delay)和initial块不可综合,仅用于testbench。 以上是编写可综合、符合FPGA设计规范的Verilog代码的核心原则。

涉及知识点

  • 可综合Verilog语法
  • 阻塞与非阻塞赋值
  • 避免锁存器(latch)
  • 同步设计原则
  • 跨时钟域同步处理
  • FPGA时钟与复位规范
← 上一题
登录后反馈错题
下一题 →