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

FPGA毕业设计选题指南:从数字钟到AI加速器的项目设计与实现

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

Quick Start

  1. 确定选题方向:根据自身能力与时间,从数字钟(基础)、DDS信号发生器(进阶)、CNN加速器(高阶)中选择一个。
  2. 安装开发环境:下载Vivado(推荐2019.1或更高版本)并安装对应器件库(如XC7A35T)。
  3. 购买或申请开发板:推荐Nexys 4 DDR或Basys 3(Xilinx Artix-7系列),或国产EG4S20。
  4. 创建Vivado工程:选择对应器件,添加Verilog/VHDL源文件,设置约束文件(XDC)。
  5. 编写顶层模块:例化所有子模块,连接时钟、复位、输入输出端口。
  6. 编写测试激励(Testbench):使用$display或仿真波形验证功能正确性。
  7. 运行行为仿真:在Vivado Simulator或ModelSim中运行仿真,检查波形是否与预期一致。
  8. 综合与实现:运行Synthesis和Implementation,检查资源利用率与时序是否满足(Setup Slack > 0)。
  9. 生成比特流并下载:生成.bit文件,通过JTAG下载到开发板。
  10. 上板验证:观察LED、数码管、VGA输出或串口打印,确认功能正常。

前置条件与环境

在开始项目之前,请确保已准备以下工具与资源。下表列出了推荐配置与可选替代方案。

项目推荐值说明替代方案
器件/板卡Xilinx Artix-7 XC7A35T(Nexys 4 DDR)主流学习平台,资源充足Altera Cyclone IV / 国产EG4S20
EDA版本Vivado 2019.1 或更高支持Artix-7系列Quartus Prime 18.1 / Gowin IDE
仿真器Vivado Simulator(内置)集成在Vivado中,无需额外安装ModelSim / QuestaSim / Verilator
时钟/复位100MHz板载时钟,高电平有效复位典型配置,易于同步设计50MHz晶振,低电平复位(需调整约束)
接口依赖UART(USB转串口)、VGA、PMOD基础外设,适合验证HDMI(需IP核)、以太网(需MAC核)
约束文件XDC文件(引脚分配与时钟周期约束)Vivado标准格式SDC文件(Altera)

目标与验收标准

毕业设计完成的标准如下,请根据选题类型对照验收。

  • 功能点:数字钟需实现时、分、秒显示,可手动校时;DDS需输出正弦波/方波,频率可调;CNN加速器需完成MNIST手写数字识别,准确率≥90%。
  • 性能指标:数字钟无时序要求;DDS最高输出频率≥10MHz(100MHz系统时钟);CNN加速器帧率≥60fps(图像尺寸28×28)。
  • 资源与Fmax:数字钟资源占用<100个LUT,Fmax无要求;DDS资源占用<500个LUT,Fmax≥100MHz;CNN加速器资源占用<5000个LUT,Fmax≥50MHz。

实施步骤

以下步骤以数字钟为例,DDS与CNN加速器可参照类似流程,仅在模块设计部分有所不同。

  1. 模块划分:将数字钟拆分为时钟分频器、计数器(时/分/秒)、按键消抖模块、数码管驱动模块。每个模块独立编写Verilog代码。
  2. 编写分频器:将100MHz系统时钟分频至1Hz,用于秒计数。使用计数器实现,注意复位逻辑。
  3. 实现计数器:秒计数器模60,分计数器模60,时计数器模24。每个计数器带使能信号和进位输出。
  4. 按键校时:添加两个按键,分别用于调整小时和分钟。按键输入需经过消抖处理(延时约20ms)。
  5. 数码管显示:将时、分、秒值转换为七段码,通过动态扫描方式驱动4位或6位数码管。
  6. 顶层连接:在顶层模块中例化所有子模块,连接时钟、复位、按键、数码管端口。
  7. 编写Testbench:模拟时钟和按键输入,检查计数器是否正常进位,数码管输出是否正确。
  8. 仿真验证:运行行为仿真,观察波形中秒计数器是否每1秒加1,分计数器是否每60秒加1。
  9. 综合与实现:运行Synthesis,检查资源利用率;运行Implementation,确保时序收敛(Setup Slack > 0)。
  10. 下载与上板:生成比特流,通过JTAG下载到开发板,观察数码管显示是否正常,按键校时是否有效。

验证结果

验证结果应记录以下内容:

  • 仿真波形:截图保存关键波形,如秒计数器从59跳变到0时,分计数器加1。
  • 上板照片/视频:记录数码管显示的时间,以及按键校时前后的变化。
  • 资源报告:从Vivado中导出资源利用率表,确认LUT、FF、IO等使用量。
  • 时序报告:检查Setup Slack和Hold Slack,确保均为正值。

排障指南

  • 数码管不显示或显示乱码:检查扫描时钟频率是否合适(通常1kHz~10kHz),以及七段码映射表是否正确。
  • 按键无反应:确认消抖模块的延时参数是否合理,以及按键电平是否与复位逻辑匹配。
  • 仿真结果与预期不符:检查Testbench中时钟周期是否设置正确,以及模块间连接是否遗漏。
  • 时序不收敛:优化关键路径,减少组合逻辑级数;或降低时钟频率(如从100MHz改为50MHz)。

扩展方向

完成基础数字钟后,可尝试以下扩展:

  • 增加闹钟功能:添加比较器,当时间匹配时驱动蜂鸣器。
  • 使用VGA显示:将时间信息叠加到VGA画面中,提升视觉效果。
  • 连接RTC模块:通过I2C接口与外部RTC芯片通信,实现掉电保持时间。
  • 升级为DDS信号发生器:替换计数器模块为相位累加器,配合查找表输出波形。

参考资源

  • Xilinx Vivado官方文档:UG900(Vivado Logic Simulation)
  • 《FPGA数字电子系统设计与实践》——王建农
  • Nexys 4 DDR原理图与约束文件(Digilent官网)
  • Verilog HDL语法参考:IEEE Std 1364-2005

附录

附录A:数字钟顶层模块示例代码(Verilog)

module digital_clock (
    input clk,           // 100MHz
    input rst_n,         // 低电平复位
    input btn_hour,      // 校时按键
    input btn_min,       // 校分按键
    output [6:0] seg,    // 七段码
    output [3:0] an       // 位选
);
    wire clk_1hz;
    wire [5:0] sec, min;
    wire [4:0] hour;
    // 实例化子模块
    clk_div #(.DIV(100_000_000)) u_div (.clk(clk), .rst_n(rst_n), .clk_out(clk_1hz));
    counter_mod60 u_sec (.clk(clk_1hz), .rst_n(rst_n), .en(1'b1), .q(sec), .co(sec_co));
    // ... 其他模块
endmodule

附录B:常见错误代码与修正

  • 错误:always块中同时使用阻塞赋值和非阻塞赋值 → 修正:统一使用非阻塞赋值(<=)
  • 错误:组合逻辑中遗漏敏感信号列表 → 修正:使用always @(*)
  • 错误:未定义输入输出端口方向 → 修正:在模块声明中明确input/output
标签:
本文原创,作者:二牛学FPGA,其版权均为FPGA线上课程平台|最全栈的FPGA学习平台|FPGA工程师认证培训所有。
如需转载,请注明出处:https://z.shaonianxue.cn/37999.html
二牛学FPGA

二牛学FPGA

初级工程师
这家伙真懒,几个字都不愿写!
72517.69W3.94W3.67W
分享:
成电国芯FPGA赛事课即将上线
基于UART的通信模块设计与验证:FPGA实战指南
基于UART的通信模块设计与验证:FPGA实战指南上一篇
FPGA毕业设计选题指南:从数字钟到AI加速器的实践路径下一篇
FPGA毕业设计选题指南:从数字钟到AI加速器的实践路径
相关文章
总数:744
2026年FPGA在数据中心异构计算中的角色:从AI推理到数据库加速

2026年FPGA在数据中心异构计算中的角色:从AI推理到数据库加速

随着数据中心工作负载日益复杂化,CPU+GPU的经典异构架构在能效比、延…
技术分享
5天前
0
0
29
0
2026年IC验证工程师面试真题解析:FPGA核心考点与实战指南

2026年IC验证工程师面试真题解析:FPGA核心考点与实战指南

QuickStart:面试准备最短路径面试准备需聚焦高频FPGA考点,…
技术分享
2天前
0
0
6
0
基于卷积神经网络的图像分类系统 FPGA 设计与实现指南

基于卷积神经网络的图像分类系统 FPGA 设计与实现指南

QuickStart准备硬件平台:选用XilinxArtix-7…
技术分享
2天前
0
0
8
0
评论表单游客 您好,欢迎参与讨论。
加载中…
评论列表
总数:0
FPGA线上课程平台|最全栈的FPGA学习平台|FPGA工程师认证培训
没有相关内容