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

给FPGA新手的保姆级教程:用Quartus II 13.0和ModelSim-Altera点亮第一个Verilog HDL工程

给FPGA新手的保姆级教程:用Quartus II 13.0和ModelSim-Altera点亮第一个Verilog HDL工程

第一次接触FPGA开发,面对复杂的工具链和陌生的硬件描述语言,难免会感到无从下手。本文将带你从零开始,完成第一个Verilog HDL工程的创建、编码、仿真全流程,并深入解释每个步骤背后的设计逻辑,帮你避开新手常踩的坑。

1. 环境准备与项目结构规划

在开始编码之前,合理的项目结构规划能大幅提升后续开发效率。与软件开发不同,FPGA项目涉及设计文件、工程配置、仿真脚本和文档等多类资源,混放在同一目录下会导致管理混乱。

推荐采用以下目录结构(以and_gate项目为例):

and_gate/ ├── doc/ # 存放设计文档、波形截图等 ├── prj/ # Quartus工程文件(.qpf) ├── sim/ # ModelSim仿真脚本及波形文件 └── src/ # Verilog源代码(.v)

为什么需要手动分类?Quartus II不会自动归类不同文件类型,而仿真工具生成的临时文件可能多达数百个。提前建立分类目录可以:

  • 避免工程文件污染源代码
  • 方便版本控制(如Git)忽略临时文件
  • 团队协作时快速定位资源

重要提示:所有路径必须使用英文命名,避免中文或特殊字符。Quartus对非ASCII字符路径的支持不稳定,可能导致工程无法正常加载。

2. 创建Quartus II工程

启动Quartus II 13.0后,通过File > New Project Wizard进入工程创建流程:

2.1 基础配置

  1. 工程路径:选择之前创建的prj目录
  2. 工程名称:建议与顶层模块名一致(本例用and_gate
  3. 顶层实体名:保持与工程名相同(Verilog中的module名)

2.2 器件选择

对于Cyclone IV E系列开发板(如ZX-1),关键参数如下:

参数项推荐值说明
FamilyCyclone IV E芯片系列
DeviceEP4CE6E22C8具体型号(根据板卡)
PackageFBGA封装类型
Pin count144引脚数量
Speed grade8速度等级

若不确定器件型号,可查看开发板丝印或参考厂商文档。选错型号会导致后续引脚分配失败。

2.3 仿真工具设置

EDA Tool Settings页面配置:

Tool Name: ModelSim-Altera Format: Verilog HDL

这一步决定了后续能否直接调用ModelSim进行仿真。如果未正确设置,需要手动编写do文件启动仿真。

3. 编写第一个Verilog模块

src目录下新建and_gate.v文件,输入以下代码:

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

代码解析:

  • module定义了一个名为and_gate的硬件模块
  • input/output声明端口方向
  • assign持续赋值语句实现与门逻辑

保存后需将其设置为顶层实体:

  1. 在Project Navigator中右键文件
  2. 选择Set as Top-Level Entity

4. 功能仿真验证

4.1 创建测试平台

在ModelSim中新建testbench.v并保存到sim目录:

`timescale 1ns/1ps module tb_and_gate; reg a, b; wire y; and_gate uut (.*); // 实例化被测模块 initial begin a = 0; b = 0; #10 a = 1; #10 b = 1; #10 a = 0; #10 $finish; end endmodule

4.2 运行仿真

通过Quartus调用ModelSim:

  1. 点击Tools > Run Simulation Tool > RTL Simulation
  2. 在ModelSim控制台输入:
vlib work vlog ../src/and_gate.v vsim tb_and_gate add wave * run 50ns

预期波形应显示输入ab变化时,输出y符合与门真值表:

aby
000
010
100
111

5. 常见问题排查

5.1 仿真无法启动

  • 症状:点击RTL Simulation无反应
  • 检查Tools > Options > General > EDA Tool Options路径是否正确
  • 解决方案:手动指定ModelSim-Altera安装路径(通常为.../altera/13.0/modelsim_ase/win32aloem

5.2 综合警告

  • 典型警告Warning: No clocks defined in design
  • 原因:纯组合逻辑电路不需要时钟
  • 处理:可暂时忽略,时序电路需正确定义时钟域

5.3 引脚分配错误

  • 症状:程序下载后硬件无反应
  • 验证步骤
    1. 通过Assignments > Pin Planner确认引脚号
    2. 核对开发板原理图
    3. 检查Assignment Editor中的I/O标准(如LVCMOS3.3V)
http://www.cnnetsun.cn/news/1920539.html

相关文章:

  • 避坑指南:ZYNQ I2C控制器配置中DDR与EMIO的那些事儿
  • Hermes Agent,被中国团队实锤抄袭,回应方式更绝
  • 【实战指南】在WSL2中部署主流浏览器:Chrome与Edge的Linux版安装与优化
  • 第X篇 zephyr kernel之工作队列实战:从系统队列到自定义队列的进阶应用
  • Blockscout数据可视化终极指南:如何创建专业的区块链分析仪表板
  • MTK6737平台LCD驱动调试:当屏幕黑屏、花屏时,我是如何一步步定位和解决的
  • 3个步骤在pywonderland中实现弹球几何模拟:完整指南
  • 5G NR里那个不起眼的CSI-RS,到底是怎么帮你手机“看路”和“找信号”的?
  • Jasminum中文文献管理插件:从零开始的完整使用指南
  • Qwen3-TTS-12Hz-1.7B-Base语音克隆实战:3秒复刻任意人声的Python实现
  • 如何快速部署与集成Node-csv:从Node.js到Web应用的完整解决方案
  • BetterGI原神自动化工具完全指南:解放双手,轻松游戏
  • Redis可视化工具新选择 | RESP.app全面评测(2023最新版)
  • 如何快速实现 HttpRunner 与 pytest、locust、boomer 深度整合:完整指南
  • 电子类竞赛保姆级时间轴:从大一到大四,如何规划你的‘挑战杯’、‘蓝桥杯’和‘研电赛’参赛路线?
  • 如何用AutoTrain Advanced实现文本命名实体识别:从部署到知识库集成的完整指南
  • 打破Windows与Linux文件壁垒:WinBtrfs驱动完全指南
  • 西门子200smart与v90伺服驱动器Profinet通讯。 sina-pos的运用
  • 梦幻动漫魔法工坊快速部署指南:5分钟搭建你的专属二次元生成器
  • 终极小爱音箱音乐管家:打造你的私人智能音乐库
  • 终极指南:DotNetty自定义协议编解码与扩展开发实战
  • 别再手动导Jar包了!IDEA 2023.3 创建JavaWeb项目,一键搞定MySQL 5.7连接(附驱动配置避坑)
  • GitHub汉化插件终极指南:5分钟让GitHub界面变中文
  • 【实战指南】conda环境配置与优化全攻略
  • 终极CodeceptJS HTML报告器指南:打造专业级测试可视化仪表板
  • PyTorch模型部署新选择:用safetensors打包模型和配置,Hugging Face生态无缝衔接
  • 04月16日AI每日参考:Gemini Mac版上线,OpenAI Agents SDK升级沙箱隔离
  • Vue Font Awesome 与 Font Awesome 7 集成:完整配置指南与最佳实践
  • CRC并行计算与流水线优化-Verilog实现
  • CLIP-GmP-ViT-L-14部署教程:Nginx反向代理+HTTPS访问安全加固