verilog学习笔记- 1)Quartus软件的使用

news2024/9/21 4:34:24

目录

新建工程:

设计输入:

配置工程:

编译 :

分配引脚:

编译工程:

下载程序:

固化程序 :


在开始使用 Quartus 软件之前,我们先来了解一下 Quartus 软件的使用流程:

新建工程:

在创建工程之前,我们建议大家在硬盘中新建一个文件夹用于存放自己的 Quartus 工程,这个工程目录 的路径名应该只有字母、数字和下划线,以字母为首字符,且不要包含中文和其它符号。

接下来启动 Quartus II 软件

 

在菜单栏上选择【File】→【New Project Wizard„】来新建一个工程

接下来我们可以单击上图页面下面的【Next>】

第一栏用于指定工程所在的路径;第二栏用于指定工程名,这里我们建议大家直接使用顶 层文件的实体名作为工程名;第三栏用于指定顶层文件的实体名。这里我们设置的工程路径为 E:/Verilog/flow_led/par 文件夹,工程名与顶层文件的实体名同为 flow_led。文件名和路径设置完毕后,我们 单击【Next】按钮,进入下一个页面。

 ​​​​

在该页面中,我们可以通过点击【…】符号按钮添加已有的工程设计文件(Verilog 或 VHDL 文件), 由于我们这里是一个完全新建的工程,没有任何预先可用的设计文件,所以我们不用添加,直接单击【Next】按钮

 

这里我们要根据实际所用的 FPGA 型号来选择目标器件,由于我们新起点 FPGA 开发板主芯片是 Cyclone IV E 系列的“EP4CE10F17C8”,所以在 Device Family 一栏中选择―Cyclone IV E‖。 Cyclone IV E 系列的产品型号较多,为了方便我们在 Available device 一栏中快速找到我们开发板的芯片型号,我们在Package 一栏中选择 FBGA 封装,Pin Count 选择 256 引脚,Speed grade 速度等级一栏中选择 8,之后在可 选择的器件中只能看见四个符合要求的芯片型号了,选中―EP4CE10F17C8‖,接着我们再单击【Next】按钮

 

 在“EDA Tool Settings”页面中,我们可以设置工程各个开发环节中需要用到的第三 方 EDA 工具,比如:仿真工具 Modelsim、综合工具 Synplify。由于本实例着重介绍 Quartus II 软件,并没 有使用任何的 EDA 工具,所以此页面保持默认不添加第三方 EDA 工具,直接单击【Next>】

 

从该页面中,我们可以看到工程文件配置信息报告,接下来我们点击【Finish】完成工程的创建。


设计输入:

下面我们就来创建工程顶层文件,我们在菜单栏中找到【File】→【New】

在 Design Files 一栏中选择 Verilog HDL File,然后点击【OK】按钮

这里会出现一个 Verilog1.v 文件的设计界面,用于输入 Verilog 代码

代码编写完成后,在软件中显示的界面如图

接下来我们保存编辑完成后的代码,按快捷键【Ctrl】+【S】或选择【File】→【Save】

在上图的界面中,点击【保存】按钮即可保存代码文件,然后我们可以在工程文件导航窗口 File 一栏 中找到新建的文件

设计输入除了像上述直接创建新文件之外还可以把事先写好的源文件直接加载进工程里这里在加载源文件之前大家一定要把源文件拷贝到工程的 rtl 文件夹下(.V 文件放到 rtl 文件夹里)然后在加载到工程 里去,有些粗心的同学在移植源文件的时候源文件并没有拷贝到工程文件夹里,虽然功能也能正常执行, 但是当你将工程拷贝到另一台电脑的时候就会发现报路径错误,所以大家在移植源文件时一定要记得把文 件拷贝到工程文件夹下。下面来给大家演示以下如何把源文件添加到工程里去,这里我们还拿流水灯为例, 先把刚刚已经创建好的流水灯工程的源文件从工程中移除,如下图所示:

移除后,我们的流水灯工程就又是一个空壳工程了,但是大家需要注意,把文件从工程中移除并不意 味着删除文件,我们刚刚移除的流水灯代码源文件虽然不在工程中了,但是它依保存在我们之前创建好的 rtl 文件夹里。现在我们再把刚刚删除的源文件添加回工程如下图所示:

 

 

如上图所示我们先点击工具栏的“Project”再点击“Add/Remove Files in Project”打开添加文件选择窗 口,如下图所示:

 

如上图所示先点击“…”弹出文件选择窗口,找到要添加的文件,选中它后点击“打开”,这样就选 中了我们要添加的文件了,接下来我们把文件加载到工程去,如下图所示:

按照上图标号 1、2、3 的步骤就可以把文件加载到工程里了,加载好后我们回到 Quartus 的“Files”窗 口,可以看到刚刚移除的源文件又回来了,如下图所示:

 

到这里文件的移除和加载就跟大家演示完了,不仅仅.V 源文件可以这么加载,其他类型的文件也是同 样的步骤去移除或加载


配置工程:

在我们的工程中,需要配置双用的管脚。首先我们在 Quartus 软件的菜单栏中找到【Assignments】→ 【Device...】

 ​​​​​

 

该页面就是可以重新选择器件页面,然后点击【Device and Pin Options】按钮,会弹出一个设置页面, 在左侧 Category 一栏中选择 Dual-Purpose Pin。对于需要使用 EPCS 器件的引脚时,需要将下图页面中所有 的引脚都改成 Use as regular IO,如果大家不确定工程中是否用到 EPCS 器件时,可以全部修改。本次实验 只修改了 nCEO 一栏中,将 Use as programming pin 修改为 Use as regular I/0,设置界面如图

修改完成后,点击【OK】按钮完成设置 


编译 :

为了验证代码是否正确,我们可以在工具栏中选择【Analysis & Synthesis】图标来验证语法是否正确, 也可以对整个工程进行一次全编译,即在工具栏中选择【Start Compilation】图标,不过全编译的时间耗时 会比较长。接下来我们对工程进行语法检查,点击工具栏中的【Analysis & Synthesis】图标,图标的位置如图

在编译过程中如果没有出现语法错误,编译流程窗口【Analysis & Synthesis】前面的问号会变成对勾, 表示编译通过

最后,我们可以查看打印窗口的“Processing”里的信息,如图 4.3.27 所示。包括各种“Warning”和 “Error”。“Error”是必须要关心的,“Error”意味着代码有错误,后续的编译将无法继续,如果出现错 误,可以双击错误信息,此时编辑器会定位到语法错误的位置,修改完成后,重新开始编译;而“Warning” 则不一定是致命的,有些潜在的问题可以从“Warning”中寻找,如果一些“Warning”信息对设计没有什么 影响,也可以忽略它。信息提示窗口界面如下图所示


分配引脚:

编译通过以后,接下来我们就需要对工程中输入、输出端口进行管脚分配。可以在菜单栏中点击 【Assignments】→【Pin Planner】或者在工具栏中点击【Pin Planner】的图标

引脚分配界面如图

可以看到该界面出现了 6 个端口分别是 4 个 LED、时钟和复位,我们可以参考原理图来对引脚进行分 配,下图为 FPGA 开发板的时钟和复位引脚的原理图

 直接输入 M2 接下来按下回车键

引脚分配完成后,直接关闭引脚分配窗口,软件会在工程所在位置生成一个.qsf 文件用来存放引脚信息。 当然我们也可以生成一个 TCL 文件,这样下次在使用的时候就可以直接运行 TCL 文件自动分配引脚。

先点击“Project”然后选择“Add/Remove Files in Project”,随后弹出如下图所示界面

在上图界面中点击“…”然后弹出选择文件窗口如下图所示:

在上图的窗口中找到我们存放 TCL 的路径(大家可以把 TCL 文件从资料盘中拷贝出来放到自己的工程 文件夹中,注意我们提供的 TCL 文件是包含所有例程的引脚分配的,大家使用单个例程时要把其他多余的 引脚删除掉),找到事先写好的 TCL 文件,选中它并把它加入到工程,如下图所示:

 按上图所示步骤添加完 TCL 文件后我们就可以运行它了,如下图所示:

按照上图所示的步骤操作完后会出现 TCL 文件运行窗口如下图所示:

 

 如上图所示选中我们添加的 TCL 文件,然后点击“Run”。这样我们的引脚就自动分配好了,这里要 注意代码中的端口名和 TCL 文件中定义的是否一致,尤其要注意大小写。


 编译工程:

我们分配完引脚之后,需要对整个工程进行一次全编译,我们在工具栏中选择【Start Compilation】图 标,操作界面如图:

编译完成后的界面如图


 下载程序:

 编译完成后,我们就可以给开发板下载程序,来验证我们的程序能否正常运行。图 4.3.40 为新起点硬 件连接图。首先我们将 USB Blaster 下载器一端连接电脑,另一端与开发板上的 JTAG 接口相连接;然后连 接开发板电源线,并打开电源开关

接下来我们在工具栏上找到【Programmer】按钮或者选择菜单栏【Tools】→【Programmer】,操作界 面如图

点击上图页面中的【Hardware Setup...】按钮,选择“USB-Blaster”

找到“output_files”下面的“flow_led.sof”文件点击【Open】即可。

下载程序时,我们可以在 Process 一栏中观察下载进度,程序下载完成后,可以看到下载进度为 100%


固化程序 :

这里下载的程序是.sof 文件格式,开发板断电后程序将会丢失。如果我们想要程序断电不丢失的话,就 必须将程序保存在开发板的片外 Flash 中,Flash 的引脚是和 FPGA 固定的引脚相连接,FPGA 会在上电后 自动读取 Flash 中存储的程序,这个过程不需要我们编写驱动代码和人为干预,只需要通过 JTAG 下载 jic 文件即可。需要注意的是,jic 文件不是软件自动生成的,而是需要我们手动的将 sof 文件转换成 jic 文件。 首先在 Quartsu 软件的菜单栏【File】→【Convert Programming Files„】,操作界面如图

首先修改“programming file type”为【JTAG Indirect ConfigurationFile (.jic)】;然后修改“Configuration device”为【EPCS16】 然后选中窗口中的“Flash Loader”点击右边的【Add Device..】按钮出现如图

选择开发板器件(这里我们新起点开发板为 Cyclone IV E EP4CE10)点击【OK】按钮。然后选中“SOF Data”,点击右边的按钮【Add file„.】

找到“output_files”下面的“flow_led.sof”文件点击【Open】即可。最后完成所有设置界面

点击【Generate】按钮

点击【OK】,这时.jic 文件就已经生成了,关闭“Convert Programming File”页面。点击菜单栏【Tools】 下的【Programmer】(如果下载界面关闭了的话),选中.sof 文件,点击左侧按钮【Delete】删去之前添加 的 sof 文件

点击左边的【Add File..】找到“output_files”文件下的“output_file.jic” 

 添加完成后发现【start】不能点击,需要在【Program/Configure】方框下面点击打勾

点击【Start】,开始固化程序,当下载进度显示 100%之后,即可固化成功。

当点击勾选【Erase】方框后,【Program/Configure】下面第一个方框也会自动勾选,这个时候点击【Start】 即可开始擦除程序 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/134944.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Windows10 下的docker和Kubernetes安装

Docker官网Docker Desktop 安装 Docker官网 进入docker官网,下载windows版 docker desktop建议使用win10专业版在任务管理器查看是否开启了windows虚拟化如果没有开启,则在控制面板,启用或关闭windows功能,勾选Hyper-v&#xff…

面向对象1(类的成员变量的默认值规则、private、this、构造方法、基本数据类型和引用数据类型)

1、定义类的注意事项 类的成员变量的默认值规则 2、private 3、this关键字 语法是this. 4、构造方法 先Constructor生成构造方法,select无参构造,Ctrla全参构造 再Getter and Setter生成每个成员变量的getter 和 setter方法 也可以使用插件右键Ptg To …

java开发的美食菜谱网

简介 Java开发美食菜谱分享网站,健康专题分享,菜谱网源码。用户可以发布菜谱,可以评论,可以发布关于健康饮食的文章,还可以查看自己的主页。管理员可以管理所有的数据,审核数据。 演示视频 https://www.b…

ROS机器人底盘坐标像素变换

对于ROS小车底盘地图数据需要知道的点 1.整幅地图处于第三象限 2.坐标值代表距离,单位米。 3.分辨率单位(米/像素) 因此通过地图坐标得到像素坐标的办法: 像素坐标(实时坐标-初始坐标)/分辨率 实时坐标的获取: 触发条…

20230102单独编译Toybrick的TB-RK3588X开发板的Android12的内核【失败】

20230102单独编译Toybrick的TB-RK3588X开发板的Android12的内核【失败】 现阶段已经验证通过的编译指令: 直接使用build.sh编译了。 rootrootrootroot-adol-ADOLBOOK-I421UAY-ADOL14UA:~/toybrick3588_discrete$ source build/envsetup.sh rootrootrootroot-adol-A…

windows下编译opencv_contrib

文章目录基本环境二. 准备1. 下载所需各软件的安装文件2. 安装所需软件三.编译opencv步骤基本环境 cmaker:3.22.0vs2019:16.11.10CUDA:11.4.1cudnn:8.2.4opencv_source:4.5.4opencv_contrib:4.5.4python&a…

给程序员友人,2022投资总结的6000字评论

程序员友人的2022投资总结 以下是我的评论、回复。 友情提示:不好意思,长篇大论了,先长篇铺垫,再到正题。 下午说道:以我的最新投资原则方法,对你的持股情况,略显忧虑。 “一直放心不下”&#…

Ubuntu 18.04使用CMake编译可执行文件、动态链接库

目录准备新建文件编辑源文件编译生成可执行文件编译生成动态链接库准备 新建文件 在开始之前,我们先准备一个项目所需要的基本结构。 新建一个项目的文件夹test_so在项目文件夹中新建一个src文件夹存放源代码(并新建一个test.cpp文件)&…

基于 Prometheus 的监控平台简介

1. Prometheus 体系架构简介 Prometheus 是 CNCF 基金会的一款开源产品,主要用做监控系统,通常用来和 Zabbix 等监控系统做比较,以其简单易用、架构灵活著称。整个 Prometheus 的架构如上,分为几个重要的部分: 指标收…

Kubernetes:Ingress

文章目录1、安装 Ingress 控制器2、Ingress 扇出3、基于名称的虚拟托管4、Ingress TLSIngress 是一组路由规则,公开从集群外部到集群内服务的 HTTP 和 HTTPS 路由。 Ingress 控制器是一组 pod,负责通过负载均衡器来解析 Ingress 路由规则,将请…

序列到序列学习(seq2seq,BLEU)

根据“编码器-解码器”架构的设计, 我们可以使用两个循环神经网络来设计一个序列到序列学习的模型。 在实现编码器和解码器时,我们可以使用多层循环神经网络。 我们可以使用遮蔽来过滤不相关的计算,例如在计算损失时。 在“编码器&#xf…

crackme01——Acid_burn

最近对逆向稍微有点兴趣,自学了一点。写这个文章主要用于记录学习的过程。 首先看一下这个程序,其实就是个简单的比对程序,主界面按左侧按钮进入Name Serial界面,点击【Check it Baby】,则弹出窗口【Sorry, The seria…

[Java]JDBC学习笔记(尚硅谷康师傅JDBC)

文章目录🥽 视频链接及资源下载🥽 JDBC简介🥽 JDBC程序访问数据库步骤🥽 获取数据库连接🌊 导入jar包🌊 Driver 接口🌊 JDBC URL🌊 方式1:🌊 方式2&#xff1…

educoder数据结构与算法 线性表 第2关:实现一个链接存储的线性表

本文已收录于专栏 🌲《educoder数据结构与算法_大耳朵宋宋的博客-CSDN博客》🌲 目录 本文已收录于专栏 🌲《educoder数据结构与算法_大耳朵宋宋的博客-CSDN博客》🌲 🍐任务描述🍐 🍐相关知识…

Java基础学习笔记(九)—— 常用API(2)

常用API1 Math类2 system类3 Object类3.1 概述3.2 常用方法3.3 常见面试题4 Objects类5 BigDecimal类5.1 构造方法5.2 常用方法6 时间日期类6.1 Date类6.2 SimpleDateFormat类6.3 JDK8新增日期类1 Math类 Math 包含执行基本数字运算的方法 Math中方法的调用方式:M…

Markdown 使用语法(详细)

想要学习Markdown,这篇文章就够了。 Markdow简介 Markdown 是一种轻量级标记语言,创始人为约翰格鲁伯(John Gruber)。 它允许人们使用易读易写的纯文本格式编写文档,然后转换成有效的 XHTML(或者HTML&…

IEEE期刊投稿流程

一、注册过程 1.1、确定期刊。 首先可以通过IEEE搜索需要投稿的期刊(以TMC为例),然后点击Submit Manuscript ,进入ScholarOne主页 1.2、账号注册。 进入到ScholarOne之后,若没有注册过需要先注册一个账号。 1.3、创建账户。 点击Create an Account&a…

【LeetCode每日一题】【2023/1/2】1801. 积压订单中的订单总数

文章目录1801. 积压订单中的订单总数方法1:模拟优先队列part1priority_queue的使用part2求余代码1801. 积压订单中的订单总数 LeetCode: 1801. 积压订单中的订单总数 中等\color{#FFB800}{中等}中等 给你一个二维整数数组 orders ,其中每个 orders[i] …

基于springboot+Vue学生宿舍管理系统(程序+数据库+文档+代码解读)

大家好✌!我是CZ淡陌。一名专注以理论为基础实战为主的技术博主,将再这里为大家分享优质的实战项目,本人在Java毕业设计领域有多年的经验,陆续会更新更多优质的Java实战项目,希望你能有所收获,少走一些弯路…

使用Cramer-Rao和Athley边界分析到达角阵列的质量(Matlab代码实现)

目录 💥1 概述 📚2 运行结果 🎉3 参考文献 👨‍💻4 Matlab代码 💥1 概述 此代码用于使用Cramer-Rao和Athley边界分析到达角阵列的质量。 📚2 运行结果 🎉3 参考文献 [1]王凯欣…