Quartus II 操作入门

2023-10-31

使用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,测试硬件功能是否正确吧。


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Quartus II 操作入门 的相关文章

  • x 和 z 值在 Verilog 中到底代表什么?

    Verilog 标准定义了四种类型的位值 0 1 x 和 z 其中 0 表示低 1 表示高 x 表示未知 z 表示未驱动网络 有几个问题 x 是否意味着我们不知道该值是 0 还是 1 0 或 1 或 z 或者该值是未知的并且可以是 0 1
  • 信号连接到以下多个驱动器

    我尝试运行以下命令并收到此错误 这是 Verilog 代码 module needle input referrence input penalty output index 7 0 inout input itemsets input r
  • 如何生成异步复位verilog总是阻塞凿子

    Chisel 始终生成敏感度列表中仅包含时钟的块 always posedge clk begin end 是否可以将模块配置为使用异步重置并生成这样的始终块 always posedge clk or posedge reset begi
  • 将枚举转换为逻辑

    考虑以下模块声明 module DFF d q CLK RESET parameter W 2 input W 1 0 d input CLK input RESET output logic W 1 0 q endmodule 当 d 和
  • PyOpenCL 中的时间测量

    我正在 FPGA 和 GPU 中使用 PyOpenCL 运行内核 为了测量执行所需的时间 我使用 t1 time event mykernel queue c width c height block size block size d c
  • 在逻辑中使用单端端口期待差异对?

    我使用的逻辑被设置为需要一个差分对时钟端口 然而 对于一个特定的应用程序 我只能输入一个单端时钟 由于硬件限制 修改逻辑以接受单端时钟不是一种选择 因为涉及许多文件和代码行 有没有办法可以输入单端端口并以某种方式将其馈送到模块的差异对端口
  • 在verilog中将wire值转换为整数

    我想将电线中的数据转换为整数 例如 wire 2 0 w 3 b101 我想要一个将其转换为 5 并将其存储在整数中的方法 我怎样才能以比这更好的方式做到这一点 j 1 for i 0 i lt 2 i i 1 begin a a w i
  • 如何将时钟门映射到技术库单元

    我的设计中有以下时钟门 module my clkgate clko clki ena Clock gating latch triggered on the rising clki edge input clki input ena ou
  • 如何使用 Verilog 和 FPGA 计算一系列组合电路的传播延迟?

    我是 FPGA 和 HDL 的新手 但我正在尝试学习 但无法弄清楚这一点 如何通过多个级别的组合逻辑来计算或估计传播延迟 我可以仅凭经验确定这一点 还是可以在设计时弄清楚 在这种情况下 我使用 FPGA 来实现奇偶校验设置和检查电路 该电路
  • 赋值语句中的“others=>'0'”是什么意思?

    cmd register process rst n clk begin if rst n 0 then cmd r lt others gt 0 elsif clk event and clk 1 then cmd r lt end if
  • 始终块中的 Veriloggenerate/genvar

    我试图让一个模块通过 ISE 12 4 中的语法检查 但它给了我一个我不明白的错误 首先是代码片段 parameter ROWBITS 4 reg ROWBITS 1 0 temp genvar c generate always pose
  • FPGA大输入数据

    我正在尝试向 FPGA 发送 4 KB 字符串 最简单的方法是什么 是我正在使用的fpga的链接 我正在使用 Verilog 和 Quartus 您的问题的答案在很大程度上取决于将数据输入 FPGA 的内容 即使没有您需要遵守的特定协议 S
  • 为什么 Verilog 不被视为编程语言? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 教授在课堂上说学生不应该说他们学会了用Verilog 编程 他说 Verilog 之类的东西不是用来编程的 而是用来设计的 那么 Verilog
  • Verilog 中的 If 语句和分配连线

    我试图弄清楚基于组合逻辑分配电线的基础知识 I have wire val wire x wire a wire b always begin if val 00 I want to assign x a if val 01 I want
  • 我怎样才能让我的verilog移位器更通用?

    这里我有一个移位器 但现在它最多只能工作 3 位 我一直在寻找 但不知道如何让它工作最多 8 位 module shifter a b out input 7 0 a b output 7 0 out wire 7 0 out1 out2
  • verilog 中的案例陈述

    我遇到了优先级编码器设计 并找到了一种使用 case 语句来实现它的新方法 唯一令人困惑的是 case语句是否优先考虑case 例子 case 1 b1 A 3 Y lt 4 b1000 A 2 Y lt 4 b0100 A 1 Y lt
  • 使用正则表达式进行 Verilog 端口映射

    我有一个很长的端口映射 我想在其中替换一堆 SignalName i with SignalName SignalName i 我想我可以用正则表达式轻松地做到这一点 但我无法弄清楚如何做到这一点 有任何想法吗 假设 SignalData
  • 系统 verilog 中没有类型的输入

    我在一个系统 verilog 代码的输入和输出的示例中遇到过module没有说明它们的类型 例如logic wire module mat to stream input 2 0 2 0 2 0 a b input newdata inpu
  • 如何在 icarus verilog 中包含文件?

    我知道基本的 include filename v 命令 但是 我试图包含另一个文件夹中的模块 现在 该模块还包括同一文件夹中存在的其他模块 但是 当我尝试在最顶层运行该模块时 出现错误 C Users Dell Desktop MIPS
  • 学习 Verilog 的资源 [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我是 Verilog 新手 有人可以推荐学习资源 书籍 视频 博客或任何他们有良好个人经验并帮助他们更

随机推荐

  • linux内核编程入门之proc文件读写

    my proc dir proc create myproc 0666 NULL proc ops 在 proc 根目录下创建文件myproc 文件的权限为0666 文件的读写操作定位在proc ops中 具体可以看下面源码 可以使用 ec
  • 蜂群算法论文【matlab代码与仿真】

    一 算法流程 蜂群算法 Bee Algorithm 是一种启发式优化算法 灵感来源于蜜蜂在寻找食物和选择巢穴的行为 这种算法模拟了蜜蜂群体中的集体智能 用于解决各种优化问题 蜂群算法的基本思想是通过模拟蜜蜂的搜索行为来寻找最优解 算法中的蜜
  • 仙境传说RO:添加自定义道具

    仙境传说RO 添加自定义道具 大家好 我是艾西今天和大家聊一下仙境传说RO怎么添加自定义道具 在我们开服时加入一些道具模组等往往会让我们的服务器更有特色以及消费点 那么让我们直接进入正题开始操作 此处我们讲的过程中以红色药水举例 喜欢的可以
  • php弹窗一次,网站广告弹出层(每天弹出一次)

    网站广告弹出层 每天弹出一次 可以有两种做法 一 是标识符存入数据库 二 利用Jquery cookie 我这里做的是比较简单的用到的知识是Jquery cookie 这里要注意的一点是jquery cookie的值 火狐能够获取 IE 3
  • VMware桥接模式无法识别英特尔AX200无线网卡解决办法

    1 先到英特尔网站下载最新驱动 更新网卡驱动适用于 Intel 无线网络卡的 Windows 10 和 Windows 11 Wi Fi 驱动程序 2 到控制面板查看无线网卡属性是否有下图组件 没有的话 依次操作 安装 服务 添加 从磁盘安
  • Unidbg系列--Ollvm字符串解密

    Ollvm字符串解密 原理 使用unidbg框架 模拟调用So文件 并Hook内存写操作 当so解密操作写入内存时 回调获取解密字符串 并将其写入新so文件中 达到反OLLVM字符串加密的目的 解密脚本 package com xCrack
  • openmvs编译

    OpenMVG 和OpenMVS在Widows下使用Vs2019编译 black world 博客园 cnblogs com cmake src G Visual Studio 16 2019 A x64 DCMAKE TOOLCHAIN
  • pyspark-ml学习笔记:模型评估

    问题是这样的 如果我们想基于pyspark开发一个分布式机器训练平台 那么肯定需要对模型进行评估 而pyspark本身自带模型评估的api很少 想进行扩展的话有几种方案 1 使用udf自行编写代码进行扩展 2 使用现有的 像sklearn中
  • CentOS安装Docker

    Docker是一个开源的容器引擎 它有助于更快地交付应用 Docker可将应用程序和基础设施层隔离 并且能将基础设施当作程序一样进行管理 使用 Docker可更快地打包 测试以及部署应用程序 并可以缩短从编写到部署运行代码的周期 CentO
  • 相机标定实战之双目标定

    相机标定原理 文章目录 相机标定原理 前言 一 采集图像 二 基于Matlab单双目标定流程 采集棋盘图 三 基于OpenCV Python双目标定流程 检测棋盘格角点 对角点进行亚像素精细化 单目标定 双目标定 双目校正 保存标定参数 读
  • 服务器系统怎么设置第一启动项,服务器怎么设置启动项

    服务器怎么设置启动项 内容精选 换一换 华为云帮助中心 为用户提供产品简介 价格说明 购买指南 用户指南 API参考 最佳实践 常见问题 视频帮助等技术文档 帮助您快速上手使用华为云服务 您需要在源端服务器上安装迁移Agent并且输入目的端
  • java: 非法字符: ‘\ufeff‘解决方法

    出现问题 在使用idea时候会出现java 非法字符 ufeff 这样的情况 原因 出现这样的问题来源于这个BOM 一般在编写时候会给你默认添加这样的一个BOM头 是隐藏起来的 编译时候会给出现编码混乱问题 详见了解BOM 隐藏字符 百度百
  • 三调与二调图斑叠加分析,筛选不同地类面积占比,筛选举证图斑

    主要步骤 标识数据 叠加分析 用标识 生成所有相交图斑 属性有原图斑的地类和国家的地类 以及原图斑的面积 生成的面域 增加4个字段 图斑的三调一级类 图斑的国家NYYPDL 是否相同 标识后的图斑面积 转换三调地类为二调的一级类 转换国家地
  • 《最强大脑第九季》C#手撸傅立叶残影题目

    在最新一季的最强大脑总决赛中 有一个比赛项目 傅立叶残影 感觉印象深刻 原理就是五根针首尾相连 按照自身的转速和杆长运动 根据提供的每根杆的转速和杆长来判断出尾部运动的残影轨迹 原理比较简单 就是一个连杆运行 好吧 知道原理就可以动手开始撸
  • 整数除法JS

    param number a param number b return number var divide function a b const MIN Math pow 2 31 const MAX Math pow 2 31 1 判断
  • Redis的事务学习及用Redis实现乐观锁,redis数据类型总结

    一 Redis的事务操作 1 Redis 事务可以一次执行多个命令 并且带有以下三个重要的保证 批量操作在发送 EXEC 命令前被放入队列缓存 收到 EXEC 命令后进入事务执行 事务中任意命令执行失败 其余的命令 依然被执行 但是如果队列
  • C语言基础知识--变量

    目录 一 C语言变量 1 局部变量 1 什么是局部变量 2 代码示例 3 代码讲解 2 全局变量 1 什么是全局变量 2 代码示例 3 代码讲解 3 静态变量 1 全局静态变量 2 局部静态变量 3 代码示例 4 代码讲解 4 const常
  • 用Python制作一个自动抢票脚本

    前言 大麦网 是中国综合类现场娱乐票务营销平台 业务覆盖演唱会 话剧 音乐剧 体育赛事等领域 但是因为票数有限 还有黄牛们不能丢了饭碗 所以导致了 很多人都抢不到票 那么 今天带大家用Python来制作一个自动抢票的脚本小程序 知识点 面向
  • 死锁产生的条件及其如何处理

    一 原因与条件 产生死锁的原因主要是 因为系统资源不足 进程运行推进的顺序不合适 资源分配不当等 发生死锁的四个必要条件 相互排斥 所涉及的资源必须不可共享 否则 将不会阻止进程在必要时使用资源 保留并等待或部分分配 进程在等待其他 请求的
  • Quartus II 操作入门

    使用Quartus设计FPGA 简单包括以下流程 新建工程 写代码 编译工程 找错误 分配引脚 重编译 下载配置 到硬件 为保证设计的正确性 在编译后 一般还需要做仿真验证 然后下载至硬件 有两种仿真方式 功能仿真 时序仿真 新建工程 写代