当前位置: 首页 > news >正文

从零上手Quartus II 13.0:一个完整Verilog项目的创建、仿真与实现

1. 环境准备与项目规划

第一次接触FPGA开发的朋友可能会被一堆专业术语吓到,但其实只要跟着步骤操作,很快就能上手。我刚开始用Quartus II 13.0时也犯过不少错误,后来发现合理的项目规划能避免90%的麻烦。这里以至芯科技ZX-1开发板(Cyclone IV E芯片)为例,带大家从零开始搭建一个简单的与门项目。

建议在开始前先准备好这些:

  • 安装好的Quartus II 13.0软件(建议默认路径安装)
  • ModelSim-Altera仿真工具(安装时记得勾选)
  • 开发板配套的USB-Blaster驱动
  • 一个清爽的工作目录

我习惯在D盘创建FPGA_Projects总文件夹,里面按日期建立子文件夹。比如今天的项目就放在D:\FPGA_Projects\20230820_and_gate。这个路径要注意两点:绝对不要用中文不要有空格。有些新手喜欢用"我的项目"这样的文件夹名,后期仿真时会出现各种奇怪错误。

2. 创建Quartus II工程

打开软件后别急着新建文件,我们先做件重要的事——建立规范的目录结构。在刚才创建的日期文件夹里,手动新建四个子文件夹:

  • doc:存放设计文档、引脚分配表等
  • prj:存放Quartus工程文件(.qpf)
  • sim:仿真相关文件
  • src:Verilog源代码

这个习惯是我踩过几次坑后养成的。有次项目文件散落在各处,更新版本时差点把旧代码覆盖了。现在每次新建工程都坚持这个结构,找文件特别方便。

点击菜单栏的File > New Project Wizard,会看到五个配置页面:

  1. 工程路径:定位到刚才建的prj文件夹,工程名填and_gate(注意命名规范:小写字母+下划线)
  2. 添加已有文件:跳过这步(我们还没写代码)
  3. 芯片选型:Family选Cyclone IV E,具体型号选EP4CE6E22C8(这是ZX-1开发板的芯片)
  4. 仿真设置:把Tool Name改为ModelSim-Altera,Format选Verilog HDL
  5. 总结页:直接点Finish

有个细节要注意:工程名称必须和顶层模块名一致。比如我们之后要写个and_gate模块,这里工程名就得用and_gate。我第一次用的时候没注意这个规则,仿真时一直报错。

3. 编写Verilog代码

现在可以创建源文件了。按Ctrl+N选择Verilog HDL File,会打开一个空白编辑器。先别急着写代码,记得先保存文件到src文件夹,文件名建议和模块名相同(如and_gate.v)。

一个基础的与门模块代码长这样:

module and_gate( input a, input b, output y ); assign y = a & b; endmodule

保存后需要设置顶层模块:在Project Navigator里右键and_gate.v,选择Set as Top-Level Entity。很多新手会漏掉这一步,导致后续编译失败。

这里分享一个实用技巧:在代码开头添加如下注释模板,后期维护会轻松很多:

// 文件名:and_gate.v // 功能:2输入与门 // 作者:你的名字 // 版本:v1.0 // 日期:2023-08-20

4. 功能仿真验证

写好的代码需要先用ModelSim验证功能是否正确。在Quartus中点击Tools > Run Simulation Tool > RTL Simulation会自动启动ModelSim,但第一次使用需要配置:

  1. 点击Assignments > Settings
  2. 在左侧选择EDA Tool Settings > Simulation
  3. 确认Tool name是ModelSim-Altera
  4. NativeLink settings里勾选Compile test bench
  5. 点击Test Benches...新建测试文件

测试文件要放在sim文件夹里,例如and_gate_tb.v

`timescale 1ns/1ns module and_gate_tb; reg a, b; wire y; and_gate uut (.a(a), .b(b), .y(y)); initial begin a=0; b=0; #10; a=0; b=1; #10; a=1; b=0; #10; a=1; b=1; #10; $stop; end endmodule

仿真时我习惯把波形窗口的栅格设为10ns,这样能清晰看到四个测试组合。如果一切正常,你会看到y只在a和b都为1时输出高电平。

5. 引脚分配与编译

仿真通过后,需要告诉编译器哪个物理引脚对应代码里的信号。点击Assignments > Pin Planner打开分配界面:

  1. Location列输入开发板对应的引脚号(参考ZX-1的原理图)
  2. 比如把a分配到PIN_25,b分配到PIN_26,y分配到PIN_30
  3. 记得保存分配(Ctrl+S

有个常见问题:引脚分配后需要重新全编译。我遇到过只点Start Analysis & Synthesis导致配置没生效的情况,所以建议直接点Start Compilation(那个紫色三角图标)。

6. 程序下载与调试

最后用USB-Blaster连接开发板,点击Tools > Programmer

  1. 确认编程器显示USB-Blaster
  2. 勾选.sof文件(在output_files文件夹里)
  3. 点击Start按钮

如果一切顺利,这时拨动开发板上的对应开关,LED灯会按与门逻辑亮灭。遇到问题可以先检查:

  • 开发板供电是否正常
  • USB-Blaster驱动是否安装
  • 引脚分配是否与原理图一致

第一次成功点亮LED的感觉特别棒!虽然只是个简单与门,但完整走完这个流程后,你会发现更复杂的项目也是类似的开发模式。建议把这个项目作为模板保存,以后新建工程时可以直接复制目录结构。

http://www.jsqmd.com/news/624400/

相关文章:

  • 大学物理(上)-期末实战演练(5)——刚体力学核心概念与解题技巧:从转动惯量到角动量守恒
  • 科哥Face Fusion镜像:UI界面自定义修改,实现边框特效的保姆级教程
  • 5分钟学会Windows安装APK文件:告别模拟器的终极解决方案
  • 你的QQ空间青春记忆正在消失?这个工具能一键永久备份所有说说![特殊字符]
  • Windows注册表深度解析:核心结构与关键应用场景
  • 重新思考输入边界:QKeyMapper如何颠覆Windows平台输入设备协作范式
  • 深入探讨Android Framework开发工程师:职责、技术与面试指南
  • 如何用优雅的PHP支付SDK统一处理支付宝、微信、抖音等7大平台支付接口
  • Phi-4-mini-reasoning在C++高性能计算中的应用:模型推理与业务逻辑无缝集成
  • 基于S7-200 PLC与MCGS组态技术的灌装贴标生产线自动化系统设计与实现:梯形图程序、接...
  • 详细介绍一下静态分析工具 SonarQube
  • KK-HF Patch:为什么200+模组集成补丁能彻底改变你的Koikatu游戏体验?
  • GLM-4.1V-9B-Base效果展示:中文菜单图片→菜品识别→价格/辣度/推荐指数
  • RIGOL DS2302A-S数字示波器:高性能信号分析的终极解决方案
  • Piggy_Packages V2026.1 帮助文档(九)模式评估
  • Windows Subsystem for Android (WSA) 终极指南:在Windows上轻松运行Android应用
  • MediaCreationTool.bat:终极Windows安装自动化工具,三步完成系统部署
  • 告别手动整理!5分钟搞定原神圣遗物管理的终极方案
  • Linux I/O 演进史:从管道到零拷贝,一篇串起个服务端核心原语于
  • 深入解析 AP2 与 W3C 的技术衔接:从规范原理到任意支付通道的实现框架
  • Canal 1.1.7实战:基于canal-adapter构建MySQL数据同步链路
  • LLM推理链路可观测性实战手册(全链路Trace+Log+Metric融合架构首次公开)
  • 如何在 Go 中构建支持持久化存储的权威 DNS 服务器
  • 从“能用”到“好用”:贝加莱AutomationStudio中PID模块的5个高级配置与避坑指南
  • 如何一周掌握Claude全家桶
  • 根据WFWORKITEM 表的< PROCESSDEFNAME>字段关联WFPROCESSDEFPROPERTIES表获取对应app_code
  • FPGA调试效率翻倍!活用ModelSim的.do脚本与Wave窗口技巧(基于Vivado联调)
  • 西瓜矮砧密植水肥一体化系统铺设全指南
  • Qwen3.5-9B解决C盘清理难题:智能分析与自动化脚本生成
  • BF16与FP16:大模型时代的精度选择与实战权衡