FPGA线上课程平台|最全栈的FPGA学习平台|FPGA工程师认证培训
登录
首页-技术文章/快讯-技术分享-正文

Verilog 入门实践指南:从组合逻辑到时序逻辑的设计与验证

二牛学FPGA二牛学FPGA
技术分享
5小时前
0
0
1

Quick Start

  • 步骤一:安装 Vivado 或 Quartus(推荐 Vivado 2020.1+),并创建一个空白工程,选择目标器件(如 XC7A35T)。
  • 步骤二:在工程中新建一个 Verilog 源文件(top.v),编写一个简单的组合逻辑电路,例如 4 位加法器。
  • 步骤三:编写 Testbench 文件(tb.v),使用 $display$monitor 打印输入输出,验证加法器功能。
  • 步骤四:在 Vivado 中运行“Simulation” → “Run Behavioral Simulation”,观察波形或控制台输出,确认组合逻辑正确。
  • 步骤五:修改 top.v,添加一个 D 触发器(always @(posedge clk)),将加法器输出寄存,形成时序逻辑。
  • 步骤六:在 Testbench 中添加时钟生成(always #5 clk = ~clk;)和复位逻辑,重新仿真,观察时序波形。
  • 步骤七:综合(Synthesis)并查看 RTL 视图,确认组合逻辑和时序元件(触发器)的实例化。
  • 步骤八:实现(Implementation)后,查看时序报告,确认无建立时间违例(WNS ≥ 0)。
  • 步骤九:若目标板可用,生成比特流并下载,用逻辑分析仪或 LED 验证功能。

前置条件与环境

项目推荐值说明替代方案
器件/板卡Xilinx Artix-7 XC7A35T(如 Nexys4 DDR)入门级 FPGA,资源充足Intel Cyclone IV / V;任何支持 Verilog 的 FPGA
EDA 版本Vivado 2020.1 或更新提供完整仿真与综合流程Quartus Prime 18.0+;ModelSim/Questa
仿真器Vivado Simulator(xsim)集成在 Vivado 中,无需额外安装ModelSim/Questa;Verilator(仅仿真)
时钟/复位100 MHz 板载时钟;低电平有效复位常见开发板配置50 MHz 或其他;高电平复位亦可
接口依赖无外部接口要求,仅仿真纯软件验证,无需硬件若上板需连接 LED 或按键
约束文件需要 XDC 文件定义时钟周期(create_clock)上板时必需,仿真阶段可省略Quartus 使用 SDC 文件
操作系统Windows 10/11 或 Ubuntu 18.04+主流开发环境CentOS 7;macOS 通过虚拟机

目标与验收标准

  • 功能点:实现一个 4 位加法器(组合逻辑),并将其输出寄存到 D 触发器(时序逻辑)。
  • 性能指标:仿真中加法器输出在时钟上升沿后稳定,无毛刺;时序报告中 WNS ≥ 0。
  • 资源占用:使用 4 个 LUT 和 4 个触发器(FF),具体取决于综合工具。
  • 验收波形:在仿真波形中,看到加法器输出(组合)在输入变化后立即改变,而寄存输出(reg)在下一个时钟上升沿更新。

实施步骤

工程结构

project/
├── rtl/
│   └── top.v          # 顶层模块,包含组合与时序逻辑
├── sim/
│   └── tb.v           # Testbench
├── constraints/
│   └── top.xdc        # 时序约束(仅上板需要)
└── scripts/
    └── run.tcl        # 可选,自动化脚本

注意:仿真阶段无需约束文件,但上板时必须提供正确的时钟约束。

关键模块

// top.v
module top (
    input wire clk,
    input wire rst_n,
    input wire [3:0] a,
    input wire [3:0] b,
    output wire [3:0] sum_comb,  // 组合逻辑输出
    output reg [3:0] sum_reg     // 时序逻辑输出
);

// 组合逻辑:连续赋值
assign sum_comb = a + b;

// 时序逻辑:D 触发器
always @(posedge clk or negedge rst_n) begin
    if (!rst_n)
        sum_reg <= 4'b0;
    else
        sum_reg <= sum_comb;
end

endmodule

原因与机制分析:组合逻辑(assign)直接反映输入变化,无存储能力;时序逻辑(always @(posedge clk))在时钟沿采样输入并保持,实现数据同步与流水线。此设计展示了从纯组合到寄存输出的关键过渡,是时序电路设计的基础。

落地路径:在 Testbench 中生成 100 MHz 时钟(周期 10 ns),提供复位信号,并施加多组输入激励(如 a=4'b0011, b=4'b0101),观察波形确认 sum_comb 即时变化而 sum_reg 在下一个时钟沿更新。验证通过后,进行综合与实现,检查资源报告与时序报告。

风险边界:若时钟频率过高(如 >200 MHz),组合逻辑路径延迟可能导致建立时间违例(WNS < 0),需插入流水线寄存器。复位信号需满足最小脉宽要求,否则触发器可能进入亚稳态。仿真中未考虑门延迟,上板后需通过时序分析确认。

验证结果

仿真波形应显示:在输入 a、b 变化后,sum_comb 立即更新(组合逻辑),而 sum_reg 在下一个时钟上升沿才跟随变化。时序报告中 WNS ≥ 0 表示无建立时间违例。资源占用约为 4 个 LUT 和 4 个 FF,与设计预期一致。

排障指南

  • 仿真无波形:检查 Testbench 中是否添加了 initial $dumpvars; 或 Vivado 中是否启用了波形记录。
  • 时序违例:降低时钟频率或优化组合逻辑路径(如减少级联门数)。
  • 综合报错:确认模块端口声明与实例化一致,避免未连接信号。
  • 上板后无输出:检查约束文件中时钟周期定义是否正确,复位极性是否匹配。

扩展方向

  • 将 4 位加法器扩展为 8 位或 16 位,观察资源与延迟变化。
  • 添加流水线寄存器(多级 D 触发器),提高时钟频率。
  • 集成到更大系统(如状态机或数据通路),实现复杂功能。
  • 使用 IP 核(如 Xilinx 的加法器 IP)对比手动实现与自动优化的差异。

参考资源

  • Vivado Design Suite User Guide: Synthesis (UG901)
  • IEEE Std 1364-2001: Verilog Hardware Description Language
  • Xilinx Artix-7 FPGA Data Sheet (DS181)

附录

Testbench 示例(tb.v):

module tb;
    reg clk, rst_n;
    reg [3:0] a, b;
    wire [3:0] sum_comb, sum_reg;

    top uut (.*);

    always #5 clk = ~clk; // 100 MHz

    initial begin
        clk = 0; rst_n = 0;
        #10 rst_n = 1;
        a = 4'b0011; b = 4'b0101;
        #10 a = 4'b1010; b = 4'b0110;
        #10 $finish;
    end
endmodule
标签:
本文原创,作者:二牛学FPGA,其版权均为FPGA线上课程平台|最全栈的FPGA学习平台|FPGA工程师认证培训所有。
如需转载,请注明出处:https://z.shaonianxue.cn/37997.html
二牛学FPGA

二牛学FPGA

初级工程师
这家伙真懒,几个字都不愿写!
72517.70W3.94W3.67W
分享:
成电国芯FPGA赛事课即将上线
FPGA图像处理实践:基于Sobel算子的边缘检测与卷积加速设计
FPGA图像处理实践:基于Sobel算子的边缘检测与卷积加速设计上一篇
基于UART的通信模块设计与验证:FPGA实战指南下一篇
基于UART的通信模块设计与验证:FPGA实战指南
相关文章
总数:744
vivado与modelsim联合仿真

vivado与modelsim联合仿真

vivado与modelsim联合仿真modelsim安…
技术分享, 资源分享
9个月前
0
0
296
0
2026年AI芯片人才缺口分析:FPGA验证工程师需求激增与岗位实践指南

2026年AI芯片人才缺口分析:FPGA验证工程师需求激增与岗位实践指南

QuickStart:快速了解FPGA验证工程师岗位本指南面向AI芯片…
技术分享
2天前
0
0
8
0
VHDL与Verilog对比:硬件描述语言入门选择指南

VHDL与Verilog对比:硬件描述语言入门选择指南

QuickStart:快速上手对比本指南面向FPGA/ASIC设计新手…
技术分享
4小时前
0
0
2
0
评论表单游客 您好,欢迎参与讨论。
加载中…
评论列表
总数:0
FPGA线上课程平台|最全栈的FPGA学习平台|FPGA工程师认证培训
没有相关内容