Quartus II 操作入门[通俗易懂]

Quartus II 操作入门[通俗易懂]使用Quartus设计FPGA,简单包括以下流程:新建工程,写代码编译工程,找错误分配引脚,重编译下载配置,到硬件为保证设计的正确性,在编译后,一般还需要做仿真验证,然后下载至硬件,有两种仿真方式:-功能仿真-时序仿真新建工程,写代码创建工程文件夹在电脑上新建一个文件夹,例如E:\Lianxi_1。工程的文件将全都存在这个文件夹内,便于管理。一个工程对应一个文件夹。新建

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

使用Quartus设计FPGA,简单包括以下流程:

  1. 新建工程写代码
  2. 编译工程找错误
  3. 分配引脚重编译
  4. 下载配置到硬件

为保证设计的正确性,在编译后,一般还需要做仿真验证,然后下载至硬件,有两种仿真方式:
– 功能仿真
– 时序仿真


新建工程,写代码

创建工程文件夹
在电脑上新建一个文件夹,例如E:\Lianxi_1。工程的文件将全都存在这个文件夹内,便于管理。一个工程对应一个文件夹。
新建工程
打开QuartusII,File->New Project Wizard…如下图:
第1个,选择工作目录:选刚才建立的空文件夹.
第2个,填入工程名称。要有意义,比如要做一个38译码器,工程名就叫decoder3_8,不要使用中文。
第3个,顶层设计实体名,默认。
这里写图片描述

Next… 下图,添加已有的源代码文件,没有的话,点Next
这里写图片描述

下图,选FPGA型号,根据你FPGA芯片上印刷的型号选择。
比如,我使用的芯片型号如下:
Family: Cyclone II
Device:EP2C5T144C8
这里写图片描述

Next…下图,选择综合、仿真、时序分析工具. 此处如果全部选择None,表示用Quartus自带的工具。
注:Quartus 9.1以后的版本不再自带仿真工具,需要安装Modelsim之类的软件来仿真。
这里写图片描述

Next.. 下图,是前面设置的信息的总览,检查无误就点Finish
这里写图片描述

  • 写代码
    这里写图片描述

    新建VerilogHDL文件,写代码,保存时,文件名要与module后面定义的实体名一致。即,保存decoder3_8.v到你的工程文件夹内。
module decoder3_8 (data_out, data_in ) ;
input [2:0] data_in;
output [7:0] data_out;
reg [7:0] data_out;

    always @(data_in)
    begin
        case (data_in )
        3'b000: data_out=8'b11111110;
        3'b001: data_out=8'b11111101;
        3'b010: data_out=8'b11111011;
        3'b011: data_out=8'b11110111;
        3'b100: data_out=8'b11101111;
        3'b101: data_out=8'b11011111;
        3'b110: data_out=8'b10111111;
        3'b111: data_out=8'b01111111;
        default: data_out=8'bxxxxxxxx;
        endcase
    end
endmodule

保存为 decoder3_8.v
将此源文件设置为顶层文件,如下图:
导航窗口Project Navigator下边→点Files
右击文件decoder3_8.v
设为顶层实体Set Top-Level Entity
这里写图片描述
这里写图片描述
再点击工程架构Hierachy,检查顶层架构是否为当前顶层文件。
说明:一个工程内,可以有多个源代码文件。但只有一个是顶层文件,代表最顶层设计,它可以引用工程目录内的其他源文件。
这里写图片描述

编译工程,找错误

编译:Processing–>Start Compilation
编译不成功时,下方会有红色提示信息,请仔细检查语法,双击红色提示信息,可以直接定位到错误代码附近位置。
修改后重新编译,直至修改完所有错误。
编译成功,只是语法没有错误,但并不代表设计就是完全正确的。
我们可以通过仿真来检查设计是否符合预计的功能。
这里写图片描述

分配引脚,重编译

前面的设计完成后,开始分配引脚
说明:FPGA引脚众多,大部分引脚都可以任意设置为输入或输出,我们可以将本工程中输入输出分配到任意可分配的引脚上。当然,对于已经做好的硬件开发版来说,有些按键、显示灯等已经事先与FPGA连接好了,所以分配引脚的时候要根据硬件电路原理图正确分配引脚。
分配引脚操作:Assignment -> Pin Planner,如图。分配完引脚,关闭窗口,重新编译工程。
这里写图片描述

下载配置,到硬件

下载程序到FPGA,有多种方式,我们一般用USB-Blaster。
这里写图片描述
连接下载器
• 将USB-Blaster的USB端插电脑上,另一端10针接头接FPGA板上的JTAG插座。
• 用一根USB线给FPGA板供电。
如果你的电脑第一次使用USB-Blaster下载器,需要为它安装驱动:
方法:我的电脑右键->设备管理器->USB-Blaster右键->更新驱动->定位到Quartus安装目录C:\altera\9.0\quartus\drivers\usb-blaster,等待安装完成。
下载
菜单Tools -> Programmer,下图
这里写图片描述
左上方,点Hardware Setup…->下拉选择USBBlaster->Close.
界面顶部中间选下载方式,Mode: JTAG
左侧,按Start下载 .sof文件。
OK,测试硬件功能是否正确吧。


版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/181618.html原文链接:https://javaforall.net

(0)
上一篇 2022年10月15日 下午7:16
下一篇 2022年10月15日 下午7:36


相关推荐

  • location.hash详解[通俗易懂]

    location.hash详解[通俗易懂]了解vue-router原理中更新URL但不重载页面原理之一location.hash1.存在形式及意义一般情况下为URL后"#"及其后面一部分组成,如http://www.test.com/#/something,其中http://www.test.com为真实的路径,而#/something则为网页中的位置,称之为锚点在访问锚点时会自动跳刀锚点所在的网页位置,通常有两种方式作为锚点<…

    2022年7月13日
    19
  • python保留小数位的两种方法总结[通俗易懂]

    python保留小数位的两种方法总结[通俗易懂]题目背景:方法一:format函数format有不同用法,代码如下,前者使用了占位符{},使用占位符可以同时输出多个,后者一次只能输出一个importmathres=math.sqrt(a**2+b**2)#使用占位符print(‘{:.3f}’.format(res))#可以同时输出多个print(‘{:.3f}\n{:.2f}’.format(res,res))#不使用占位符只能输出一个print(format(res,’.3f’))运行结果:方法二:’%

    2022年8月12日
    6
  • linux load average负载详细解释「建议收藏」

    linux load average负载详细解释「建议收藏」转载至linuxloadaverage负载详细解释一、loadaveragetop命令中loadaverage显示的是最近1分钟、5分钟和15分钟的系统平均负载。系统平均负载表示  系统平均负载被定义为在特定时间间隔内运行队列中(在CPU上运行或者等待运行多少进程)的平均进程数。如果一个进程满足以下条件则其就会位于运行队列中:  -它没有在等待I/O操作的结果  -它没有主动…

    2022年7月17日
    18
  • Go string 转map

    Go string 转map最近用 go 重构 python 项目 遇见一些问题 简单记录一下 1 string 转 map 为什么要想到这个转换方式呢 主要是 python 项目中用到的是 string 转字典 比如 前端传过来的 book python 基础教程 用 python 简单接收之后 用 json load 很简单转为字典 用 go 的话 最简单的方式是 string 转 map class detail

    2026年3月18日
    3
  • Java List的remove()方法陷阱

    Java List的remove()方法陷阱Java 的 List 在删除元素时 一般会用 list remove o remove i 方法 在使用时 容易触碰陷阱 得到意想不到的结果

    2026年3月17日
    2
  • 高德地图标记点要注意的问题

    高德地图标记点要注意的问题高德地图标记点要注意的问题当打开高德地图的时候,使用API进行获取自身位置坐标,然后再进行setCenter设置中心是这样的。直接看代码:initMap(){//初始化地图map=newAMap.Map(‘map-gaode’,{resizeEnable:true,zoom:13})//初始化中心点//1、无坐标有详细地址时letsure=this.initAddress()

    2022年5月11日
    125

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号