基于Quartus Prime18.1的安装与FPGA的基础仿真教程

Quartus是一种美国科技公司Intel(英特尔)公司开发的FPGA(现场可编辑门阵列)设计编译软件,用作设计、仿真、综合和布局、支持多种编程语言,包括VHDL、Verilog等,并具有丰富的功能和工具库,可广泛应用于各种数字电路设计和实现。

一、 Quartus Prime 18.1 的下载

剑指官网:Intel® Quartus® Prime Lite Edition Design Software Version 18.1 for Windows

选择好相应安装包、版本号、相应操作系统

对应下载即可,大约24GB大小下载后打开安装包

二、安装教程

2.1 quartus程序的安装

完成上述下载操作后点击如上图所框选的运行文件,打开点next

同意安装使用协议,点Next;

选择安装路径后,继续下一步;

选择需要安装的内容,进行下一步

下一步直到设备驱动程序完成

2.2 ModelSim的安装

此安装影响后续的仿真模拟,所以仍需要安装调制,打开setup,点Next

无协议,选择License is not required,选择Next

接受条款选择路径,next

默认安装内容,继续下一步直到设备驱动程序完成

三、基于Quartus 的 CPLD/FPGA 应用开发

3.1. 建立工程

打开 Quartus Prime Lite 18.1 开发环境。菜单 File->New Project
Wizard.
Directory, Name, Top-Level Entity 页选择合适的工程存储路径(路
径不要有中文,最好 不要在桌面 ),输入工程名和顶层实体名。
例如:
     工程存储路径 D:/zhidao
     工程名 zhidao
     顶层实体名 zhidao
接下来 Project Type 选 Empty project,即建立一个空的工程
Add Files 页直接 Next
Family, Device & Board Settings 页里器件 Family 选择 Cyclone IV E,在下方选择 EP4CE15F17C8 (不要选成 EP4CE15F17C8L,最后带 L为低电压版)
EDA Tool Settings 页里,Simulation 选择 ModelSim- Altera 不要选 ModelSim )和 VHDL
Summary 页点 Finish,完成工程的建立
菜单 New -> Design Files -> VHDL File。
贴入 zhidao_vhdl.txt 中的代码
下面给出自己学习当中的课程实验相关代码:三八译码器
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;

ENTITY zhidao IS
PORT(
    x: IN STD_LOGIC_VECTOR(7 DOWNTO 0);
    y: OUT STD_LOGIC_VECTOR(2 DOWNTO 0)
);
END zhidao;

ARCHITECTURE tt OF zhidao IS
BEGIN
    PROCESS(x)
    BEGIN
        CASE x IS
            WHEN "11111110" => y <= "000";
            WHEN "11111101" => y <= "001";
            WHEN "11111011" => y <= "010";
            WHEN "11110111" => y <= "011";
            WHEN "11101111" => y <= "100";
            WHEN "11011111" => y <= "101";
            WHEN "10111111" => y <= "110";
            WHEN "01111111" => y <= "111";
            WHEN OTHERS     => y <= "XXX";
        END CASE;
    END PROCESS;
END tt;

(注意:实体名保持一致)保存文件为 zhidao.vhd 到之前选择的工程目录下(D:/zhidao)

3.2 编译

如果编译只是为了做功能仿真来验证逻辑,可以直接编译。 但如果编译是为了最后下载至硬件器件中运行,则在编译前还需要做如下操作:
菜单 Assignments->Device,点击 Device and Pin Options
在 Unused Pins 里,选择 As input tri-stated, 将其它未使用的引脚 状态设置为三态输入
在 Task 栏里双击 Compile Design,全部绿色对勾编译通过

3.3 仿真

菜单 Tools->Options,General->EDA Tool Options 中设置好 ModelSim Altera 可执行程序的路径 注意不要设置为倒数第三项 ModelSim)

菜单 Processing->Start->Start Test Bench Template Writer,在工程文件夹 simulation/modelsim下自动生成了Test Bench 模 板 zhidao.vht

直接用 Quartus 打开上一步生成的文件 zhidao.vht。(File->Open 找到 并打开文件,需要选择 All Files 才能看到 .vht 文件)
将 init:PROCESS 和 always:PROCESS 两个进程删除(从 init:PROCESS一直到 END PROCESS always)
将 zhidao_vht.txt 中的 init:PROCESS 和 always:PROCESS 两个进程的代码复制到原处,保存文件。
(进程 init 用来描述一般的输入信号,按顺序书写各个输入信号的变化即可,需要等待一段时间则利用 wait for 语句)
(进程 always 用来描述时钟信号之类的周期信号,在此进程中添加语句后需要删除最后的一句 wait,从而使此进程能够反复循环执行)
菜单 Assignments->Settings,EDA Tool Settings->Simulation 中,在 NativeLink settings 里选中 Compile test bench,点击后面的 Test Benches 按钮
在弹出的 Test Benches 选项卡里点 New

Test bench name 输入 zhidao_vhd_tst、End simulation at 设置为 1ms

最下方 Test bench files 里把 simulation/modelsim 下的 zhidao.vht 添加进去。点击 OK 设置完毕

菜 单 Tools->Run RTL Simulation 会自动打开 ModelSim 并 运 行TestBench 得到仿真结果

注意

是不是有手就行?

注意!!!!

每进行一个项目,必须按照相应的流程重新操作,切不可复制新代码到源文件,否则将会报错

(本文源于学校课程学习研究总结内容)

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

17.Meta AI 大模型家族 LLaMA

Meta LLaMA 1 大模型技术解读 LLaMA 1&#xff1a;小模型大数据 LLaMA 1 在万亿 Token 公开数据集上预训练 LLaMA 1 模型网络架构改进 大模型网络架构差异性配置总览 典型大模型网络架构对比 LLaMA 1 预训练超参数配置 典型大模型训练超参数对比 LLaMA 1 预训练效率提升与成本…

net start mysql服务名无效

问题背景 起因是我的电脑因为停电烧坏了系统固态硬盘&#xff0c;再新装系统后&#xff0c;之前的MySQL服务无法通过下面的命令启动。 net start mysql # 报错&#xff1a;服务名无效 报错&#xff1a;服务名无效 报错信息 未找到&#xff1a;在Windows服务中找不到MySQL 找…

增强大型语言模型(LLM)可访问性:深入探究在单块AMD GPU上通过QLoRA微调Llama 2的过程

Enhancing LLM Accessibility: A Deep Dive into QLoRA Through Fine-tuning Llama 2 on a single AMD GPU — ROCm Blogs 基于之前的博客《使用LoRA微调Llama 2》的内容&#xff0c;我们深入研究了一种称为量化低秩调整&#xff08;QLoRA&#xff09;的参数高效微调&#xff0…

【APP_汽修宝】数据采集案例APP_数据解密分析

如果不会写代码&#xff0c;那就出书、写博客、做视频、录播客。 &#x1f4da; S35赛季末王者昭君罗 关键代码定位 使用方法【逆向-快速定位关键代码】通过hook常用函数HashMap方法 动态分析 下面是我们通过访问目标页面时 Frida hook 捕获HashMap的调…

Nginx与Gateway

Nginx与Gateway Nginx 基本介绍 Nginx 是一款轻量级的高性能 Web 服务器/反向代理服务器及电子邮件&#xff08;IMAP/POP3&#xff09;代理服务器。它由俄罗斯的 Igor Sysoev 所开发&#xff0c;最初供俄罗斯大型的门户网站及搜索引擎 Rambler 使用。 Nginx 的特点在于其占用…

RIP解决不连续子网问题

#交换设备 RIP解决不连续子网问题 一、不连续子网的概念 相同主网下的子网&#xff0c;被另一个主网分割&#xff0c;例如下面实验拓扑在某公司的网络整改项目中&#xff0c;原先R1 和RS 属于同一主网络 10.0.0.0/8&#xff0c;现被 R2、R3、R4 分离&#xff0c;整网采用了 …

从xxl-job源码中学习Netty的使用

1. 启动与Spring实例化 com.xxl.job.core.executor.impl.XxlJobSpringExecutor.java类 继承SmartInitializingSingleton 类&#xff0c;在afterSingletonsInstantiated 实例化后方法中 调用initJobHandlerMethodRepository 把所有的xxljob任务管理起来&#xff1b; private…

.net8系列-图文并茂手把手教你使用Nlog记录.net日志

Nlog是什么&#xff1f; NLog是一个为.NET平台设计的灵活且免费的日志记录库。它适用于包括.NET Framework、.NET Core和.NET Standard在内的多种.NET环境。 Nlog有什么好处或者特点&#xff1f; 配置灵活&#xff1a;NLog允许开发者通过配置文件&#xff08;通常是NLog.conf…

串口触摸屏分割字符串

分割字符串的方法1、split2、indexOf()3、substr(start,length) 分割字符串的方法 1、split&#xff1a;将一个字符串分割为子字符串&#xff0c;然后将结果作为字符串数组返回。 2、indexOf() &#xff1a;返回某个指定的字符串值在字符串中首次出现的位置&#xff08;从左向右…

机器人、人工智能相关领域 news/events (专栏目录)

Some Insights 一些机器人、人工智能或相关领域的news、events等 1. 智能制造 - 你需要了解的 10 个基本要素 2. 现实世界中的人工智能&#xff1a;工业制造的 4 个成功案例研究 3. 企业使用人工智能情况调查 4. 未来工厂中的人工智能&#xff1a;人工智能加速制造成果规模…

用React编写一个密码组件表单

theme: condensed-night-purple highlight: atelier-cave-light 背景介绍 我们在使用网站或者应用程序的登录界面或创建帐户界面时&#xff0c;往往避免不了需要用户输入密码这一步骤&#xff0c;而用户是否可以选择看见他们输入的密码是十分重要的一项功能。尤其是在当输入的…

QT绘图项目 - 汽车表盘

目录 前言: 整体代码 widget.h widget.cpp 效果演示 实现刻度文字正确排版 优化代码 达到效果 封装整理代码结构: widget.h widget.cpp 指针样式美化 优化后的指针API 效果演示 设置高速刻度为红色 优化刻度API 效果演示 速度显示优化 给内圈画上黑色 优化速度…

【学习-华为HCIA数通网络工程师真题(持续更新)】(2024-6-16更)

1、在 VRP 平台上&#xff0c;可以通过下面哪种方式访向上条历史命令&#xff1f; 上光标 &#xff08;ctrlU 为自定义快捷键&#xff0c;ctrlP 为显示历史缓存区的前一条命令&#xff0c;左光标为移动光标&#xff09; 2、主机 A &#xff08;10.1.1.2/24&#xff09;和主机 B…

在亚马逊云上部署WordPress:一个完整的LAMP环境安装教程

什么是LAMP LAMP是一个流行的开源软件堆栈&#xff0c;用于网站和网络应用程序的开发和部署。LAMP是几个主要组件的首字母缩写&#xff0c;包括&#xff1a; Linux&#xff1a;操作系统层&#xff0c;LAMP通常部署在Linux操作系统上&#xff0c;但它也可以使用其他类似Unix的…

Golang | Leetcode Golang题解之第155题最小栈

题目&#xff1a; 题解&#xff1a; type MinStack struct {stack []intminStack []int }func Constructor() MinStack {return MinStack{stack: []int{},minStack: []int{math.MaxInt64},} }func (this *MinStack) Push(x int) {this.stack append(this.stack, x)top : thi…

牛客周赛 Round 47 解题报告 | 珂学家

前言 题解 这真的是牛客周赛&#xff1f; 哭了 欢迎关注 珂朵莉 牛客周赛专栏 珂朵莉 牛客小白月赛专栏 A. 小红的葫芦 签到题 但是写起来有点变扭&#xff0c;方法应该蛮多的 统计分组 有2组一组长度为2&#xff0c;一组长度为3 def check(arr):arr.sort()if arr[0] …

Git学习2 -- VSCode中的Git

看了下&#xff0c;主要的插件有3个。自带的Source Control。第1个是Gitlens&#xff0c;第2个是Git Graph。第三个还有个git history。 首先是Source Control。界面大概是这样的。 还是挺直观的。在第一栏source control&#xff0c;可以进行基本的git操作。主要的git操作都是…

MongoDB~高可用集群介绍:复制集群(副本集)、分片集群

背景 MongoDB 的集群主要包括副本集&#xff08;Replica Set&#xff09;和分片集群&#xff08;Sharded Cluster&#xff09;两种类型。 副本集 组成&#xff1a;通常由一个主节点&#xff08;Primary&#xff09;和多个从节点&#xff08;Secondary&#xff09;构成。 功…

Objective-C 学习笔记 | init

Objective-C 学习笔记 | init Objective-C 学习笔记 | init编写 init 方法禁用 init 方法 Objective-C 学习笔记 | init init 是实例方法&#xff0c;负责初始化对象&#xff0c;并返回初始化后的对象的地址。 编写 init 方法 完整代码见于&#xff1a;UestcXiye/Objective-…

【前端:HTML+CSS+JavaScript】HTML基础(下)

一、表格标签 1.1 表格的主要作用 表格主要用于显示、展示数据。因为她可以让数据显示的非常频繁&#xff0c;可读性非常好。特别是后台展示数据的时候&#xff0c;能够熟练运用表格就线程显得很重要。表格不是用来布局页面的。而是用来展示数据的。 1.2 表格的基本语法 <…