1、规范的文件夹

规范的文件夹划分管理也是十分重要的,若是把所有文件,例如设计文件、设计表格、图片、Quartus工程相关文件、仿真文件等不同类型的文件都统一放在一个目录下,将会使得整个文件夹臃肿不堪,而且后期找起文件来也非常不方便。所以推荐大家首先根据功能划分不同的文件夹来放不同的文件。

对于初学者,个人比较推崇的是正点原子推荐的4个文件夹的划分方法:

  • doc:主要放设计文件、设计图表、需求文件等一系列设计类文件,根据个人需求还可以进一步划分,如图片子文件夹、表类子文件夹等
  • prj:工程文件,主要放Quartus工程相关的文件,也可以再划分,如输出子文件夹、IP核文件等
  • rtl:主要放设计的Verilgo源代码,也可根据模块数量或类型继续划分成各个小的子模块,每个模块放相关的代码文件
  • sim:主要放仿真相关的文件,可以继续划分,如仿真文件testbench、仿真结果图片,生成的仿真数据txt等

本文是要带大家新建一个Quartus II的工程,所以我们给这个工程随便起个名字,既然是第一个工程,就叫first_prj吧。我们新建一个first_prj文件夹,然后在下面新建上面说的4个子文件夹,如下:

2、新建工程

打开Quartus II软件,新建一个工程有两种办法:1、点击file----new project wizard;2、直接点击 new project wizard。如下所示:

然后出现下面的界面:1、是我们工程的存储路径,选择文件夹first_prj/prj这个文件夹;2、是工程名字,之前已经想好了,工程名叫 first_prj;3、是顶层模块的设计名(这里说下,在复杂点的工程中一般有很多个设计文件,编译器为了很快的找到哪个文件是最顶层的文件,所以需要在工程建立阶段指定顶层文件的名字),建议是与工程保留一致即可,方便管理。

设置完后,点击next,进入下一页的配置

下面这一页是添加设计文件到工程中,如果设计文件已经写好了,可以在这一环节添加到工程,如果没写好也不要紧,后面再添加就是的。因为我们还没有设计文件,所以直接next

下面这一页是选择使用的FPGA信号,这个对照自己的FPGA芯片信号选择就可以了,我贴出我所使用的开发的芯片型号如下:

下面这一页是选择使用的第三方的EDA工具,我们初学者别搞得这么花里胡哨的,先把最基本的功能给学会再说,直接不管,点击next

下面这一页是我们工程的一些信号的总览。看下就可以了,然后点击finish

至此,一个基于Quartus II的工程就算建好了。但是这只是个空壳子,因为在我们的工程里什么都还没有,接下来就添加一下设计文件。

3、Verilog代码编写

我们可以先写好一个Verilog代码后,添加到工程里面,也可以直接在Quartus界面新建一个.v文件,然后将其编写好。我这里示范第一种方法。

在文件下first_prj/rtl 下新建一个txt文件,命令为first_prj.txt,然后将后缀改为.v,这样该文件就变成了一个Verilog类型的设计文件。双击打开,输入如下代码(目的是点亮一个led灯):

module first_prj(input       clk     ,       //输入时钟input     rst_n   ,       //低电平有效的异步复位信号output    reg led
);always@(posedge clk or negedge rst_n)beginif(!rst_n)                 //当复位时led <= 0;             //led灭else                      //其他时候led <= 1;             //led亮
endendmodule

然后按下图的顺序打开文件添加到工程的选项卡:

按下列步骤添加我们的设计文件:

现在我们的工程中就有了一个设计文件了,接着进行下一步。

4、编译

点击下图的图标进行代码的分析和编译,该步骤的目的是首先检查语法是否有错,其次是综合器将代码解释为电路的形式。

下图中的1处打上了√,则说明我们的编译已经完成了;2处的0 errors则说明我们的编译是正确无误的。

5、管脚绑定

在上板 之前还需要进行引脚约束,就是根据硬件原理图确定输入时钟、复位与输出led是对应FPGA芯片的哪个管脚(请查阅原理图)。如下图点击pin planner打开管脚分配界面:

根据FPGA的具体管脚分别讲对应的芯片分配,如下:

6、全编译

全编译和分析综合的不同是全编译需要进行布局布线,管脚绑定后就可以对全局进行布局布线了。点击下图的按钮进行全部的分析综合布局布线。

当界面如下时,则说明我们已经全编译完成了:左边的√表示全编译完成;后边的0 errors则表示全编译没有错误。

7、烧写下载文件

到这一步就基本完成所有的工作了,最后只需要把生成的sof文件给烧写到FPGA芯片里就可以了。如下图打开烧写界面:

烧写界面如下,按如下步骤连上我们的板卡:

一般来讲,编译器会自动添加最后一次生成的sof文件,如果没有添加的话,我们按如下步骤添加:

添加完成后,点击start,开始烧写程序,等到progress指令条到100%则表示烧写完成

8、实验现象

实验现象就是按下复位键,led灭;不按下复位键时,led常亮。

按下复位时:

没有复位时:

不错,与我们预期效果一致。所以新建第一个FPGA的工程就成功了!恭喜你,以后就正式上了FPGA开发的贼船啦!~~

9、其他

  • 创作不易,如果本文对您有帮助,还请多多点赞、评论和收藏。您的支持是我持续更新的最大动力!
  • 关于本文,您有什么想法均可在评论区留言。如果需要整个工程,请在评论留下邮箱或者私信我邮箱(注意保护隐私)。
  • 自身能力不足,如有错误还请多多指出!

版本信息

文件:V1.0

编号:0001

Quartus II:Quartus II 13.1 (64-bit)

FPGA极易入门教程----工具篇(1)建立你的第一个FPGA工程(点亮LED)相关推荐

  1. FPGA极易入门教程----工具篇(2)Quartus II 的在线调试工具 In-System Sources and Probes(ISSP)

    1.什么是ISSP?ISSP有什么用? Quartus II提供了In-System Sources and Probes Editor调试工具,通过JTAG接口使用该工具可以驱动和采样内部节点的逻辑 ...

  2. FPGA极易入门教程----汇总篇(直达链接)

    为什么要写这个系列? 根据费曼学习法,最好的学习方法就是教会一个外行人(初学者).知识分享,独乐乐不如众乐乐.现在FPGA市场巨大,人才缺口很大.我本着能拉一个上贼船就拉一个上贼船的想法来写这个系列文 ...

  3. FPGA极易入门教程----数码管篇(1)静态显示

    1.数码管简介 数码管是一种半导体发光器件,其基本单元是发光二极管.数码管按段数一般分为七段数码管和八段数码管,八段数码管比七段数码管多一个发光二极管(多一个小数点显 示).当然也还有一些其他类型的数 ...

  4. FPGA极易入门教程----LED篇(1)跑马灯(流水灯)跑起来

    1.LED的基本原理 LED,又名发光二极管.LED灯工作电流很小(有的仅零点几毫安即可发光),抗冲击和抗震性能好,可靠性高,寿命长.由于这些优点,LED灯被广泛用在仪器仪表中作指示灯.液晶屏背光源等 ...

  5. Python极简入门教程

    前言 为了方便各位小白能轻松入门Python,同时加深自己对Python的理解,所以创造了"Python极简入门教程",希望能帮到大家,若有错误请多指正,谢谢.极简入门教程代表着不 ...

  6. ESP32-C3入门教程 IoT篇⑥——阿里云 物联网平台 EspAliYun RGB LED 实战之设备批量生产工具

    阿里云物联网平台ESP32设备批量工具 文章目录 一.前言 二.软件框架 三.阿里云物联网平台API 3.1 查询设备 3.2 添加设备 四.二维码生成 五.csv生成 六.csv转bin 七.bin ...

  7. tensorflow平台极简方式_TensorFlow极简入门教程

    原标题:TensorFlow极简入门教程 随着 TensorFlow 在研究及产品中的应用日益广泛,很多开发者及研究者都希望能深入学习这一深度学习框架.本文介绍了TensorFlow 基础,包括静态计 ...

  8. linux usb3.0改2.0,TX1入门教程硬件篇-切换USB2.0与USB3.0

    TX1入门教程硬件篇-切换USB2.0与USB3.0 说明: 介绍如何切换TX1USB口的为2.0或3.0版本 步骤: 编辑extlinux.conf文件,修改usb_port_owner_info= ...

  9. 微信公众号开发入门教程第一篇

    微信公众号开发入门教程第一篇 关键字:微信公众平台开发 作者:方倍工作室 在这篇微信公众平台开发教程中,我们假定你已经有了PHP语言程序.MySQL数据库.计算机网络通讯.及HTTP/XML/CSS/ ...

最新文章

  1. 一个鼠标类( Using C# and Win32API)
  2. 没有熙熙攘攘,百度VR在世界大会的一场奇妙之旅
  3. 重磅丨2018年中国人工智能行业研究报告(77页PPT)
  4. python无法读取文件-Python读取文件
  5. python 依据某几列累加求和_关于Python数组求和的四个问题及详解,让你更加爱Python!...
  6. ubuntukylin14安装ns-allinone-2.35教程(虚拟机ubuntu同理)
  7. 【acwing210 异或运算】
  8. IntelliJ IDEA for Mac 如何在当前的普通Java项目中创建新的模块/添加模块/创建模块
  9. Hive 行转列,列传行 - Impala 暂不支持
  10. java arraylist 初始化_Java面试整理-基础篇8.集合1
  11. ISV客户博客系列:iVoteSports通过Windows Azure扩展它的面向棒球的移动游戏应用程序...
  12. Apache Kafka 2.7.0 稳定版发布
  13. lua 获得系统时间
  14. Windows Server 2003成员服务器基准用户权限分配策略
  15. 标准模板库 STL—— set 列传
  16. c语言不用临时变量交换两个数程序分析
  17. javaweb图书管理系统源码
  18. 苹果手机如何投屏到电脑【无线有线】
  19. 英文科技论文各部分的时态和语态
  20. 4G模块发送短信流程

热门文章

  1. c++ - 第18节 - 哈希
  2. c语言的实验报告 实验4,C语言实验四实验报告
  3. pycharm单步调试
  4. rs232接口_RS232协议和RS485协议的区别与应用,看这一篇就够了!
  5. SqlServer清理缓存方法
  6. python交换两个值原理_python如何交换两个变量的值
  7. 新媒体专员必备素材网站,没有灵感,找它就对了!
  8. 综述总结:稀疏集成的卷积神经网络学习
  9. 【Unity编辑器扩展】(一)PSD转UGUI Prefab, Aspose.PSD和Harmony库的使用
  10. 概率统计——期望、方差与最小二乘法