FPGA开发:初识FPGA × 开发环境
FPGA是什么?
FPGA的全称是现场可编程门阵列(Field Programmable Gate Array),一种以数字电路为主的集成芯片,属于可编程逻辑器件PLD的一种。简单来说,就是能用代码编程,直接修改FPGA芯片中数字电路的逻辑功能。
那这样就怎么了呢?因为早期芯片生产出来后,电路就固定好不会改变了,于是功能也就固定了,这种芯片就是ASIC(专用集成电路,Application Specific Integrated Circuit)。
而要想改变电路结构就需要重新设计芯片、重新“流片”、测试等,整个过程非常的 耗钱 耗时间。那突然间FPGA横空出世,支持通过修改软件代码来改变硬件电路结构,是不是就非常具有开创性!😎
半定制电路
- 电路分类
集成电路就是我们常说的IC,它就是把一定数量的电子元件(电容、电阻、晶体管、二极管、MOS管等)以及这些元件之间的连线通过半导体工艺把它们集成到一起,使它们具有特定的功能。
按照应用领域,可将集成电路分为通用集成电路和专用集成电路。这两者的区别,可理解为前者为大众版,后者为私人定制版。
专业集成电路又可向下分,分为全定制电路和半定制电路。区别为用户在使用过程中能否更改内部电路(能更改即为半定制)。而FPGA就是属于半定制电路。
发展历程
1970年:PLD 是第一款进入人们视野的可编程逻辑器件,采用PROM结构,输入接口少。
1978年:可编程逻辑阵列PAL和通用阵列逻辑GAL采用了反熔丝技术、EPROM和EEPROM技术,结构功能仍然相对简单。
1984年:Altera公司于发明了基于CMOS和EPROM技术相结合的CPLD,可以胜任复杂性较高、速度也较快的逻辑功能。
1985年:Xilinx创始人之一Ross Freeman发明了现场可编程门阵列FPGA,开启了可编程逻辑的“高速”发展时代。Freeman先生发明的FPGA是一块全部由“开放式门”组成的计算机芯片。可灵活编程,添加各种新功能,以满足不断发展的协议标准或规范,甚至可以在设计的最后阶段对它进行修改和升级。
开发环境搭建
FPGA的开发环境主要包括:Quartus II开发软件、ModelSim仿真软件、Visio绘图软件、NotePad++代码编辑器的安装。
- Quartus II开发软件是对FPGA代码进行编译,通过综合、布局布线将FPGA代码转化为硬件电路。可实现程序的下载以及固化。
- ModelSim仿真软件主要是对编写的FPGA代码进行仿真验证,验证代码的正确性。
- Visio绘图软件主要是对我们的程序框图以及波形图进行绘制,方便我们对模块功能的理解以及代码的编写。
- NotePad++代码编辑器就是实现FPGA代码的编写。
1、Quartus II开发软件
- 软件简介
Quartus II是Altera公司(已被Intel收购)开发的综合性CPLD/FPGA开发软件,支持原理图、VHDL、Verilog HDL以及ADHL等多种设计输入形式,内嵌自有的综合器以及仿真器,可以完成从设计输入到硬件配置的完整PLD设计流程。
【注意】使用Altera公司开发的FPGA或CPLD芯片,就得使用其开发的Quartus II软件。
- USB Blaster
USB Blaster通过USB接口将计算机与FPGA开发板连接起来,使得工程师能够使用计算机上的设计工具(如Quartus II或Intel Quartus Prime IDE)对FPGA进行编程、调试和硬件验证。
驱动程序负责在计算机和USB Blaster硬件设备之间建立稳定、高效的数据传输通道,确保设计文件能够顺利下载到FPGA板卡上。且USB Blaster支持多种工作电压,包括1.8V、2.5V、3.3V和5.0V,满足不同FPGA和CPLD器件的编程需求。
【注意】通常在Quartus II软件安装的过程中就已经将USB Blaster驱动写入安装文件,我们只需要更新一些驱动文件即可。
- 器件库
Quartus II器件库是一个包含多种电子元器件和模型的集合,专为数字电路设计和FPGA(现场可编程门阵列)开发而设计。这个库是Quartus II软件的重要组成部分,为设计师提供了丰富的资源,以便他们能够快速、高效地创建和验证电路设计。
Quartus II器件库包含多种类型的电子元器件和模型,包括但不限于:
- 逻辑元件:如逻辑门(与门、或门、非门等)、触发器(D触发器、JK触发器等)、计数器等。
- 算术电路:用于执行算术运算的电路,如加法器、乘法器等。
- 存储元件:如RAM(随机存取存储器)、ROM(只读存储器)等,用于存储数据和指令。
- I/O接口:包括各种输入输出接口,如UART、SPI、I2C等,用于与外部设备通信。
- 时钟电路:用于生成和管理时钟信号的电路,是时序逻辑电路的重要组成部分。
- 复合器件:集成了多个功能的复杂器件模型。
2、ModelSim仿真软件
ModelSim是一款由Mentor Graphics公司(现为Siemens EDA的一部分)开发的高性能、交互式和可扩展的硬件描述语言(HDL)仿真工具。它以其强大的功能和灵活的调试选项,在数字电路设计和验证领域得到了广泛应用。
ModelSim提供多种版本,包括SE(标准版)、PE(专业版)、LE(轻量级版)和OEM(原始设备制造商版)等。不同版本在功能和性能上有所差异,用户可以根据自己的需求选择合适的版本。同时,ModelSim支持多种操作系统平台,如Windows、Linux和UNIX等。
【注意】其中的OEM版本已经集成在Quartus II软件中,但单独下载SE版本能比OEM版本仿真更快。
3、Visio绘图软件
Visio软件是office全家桶的一员,它的定位是专业画图软件,可实现流程图和示意图的绘制。在FPGA学习中,Visio用于模块框图、波形图的绘制,目的是方便读者对RTL代码的理解和编写。
4、NotePad++代码编辑器
NotePad++软件是Windows操作系统下的一套文本编辑器,除了可以用来制作一般的纯文字说明文件,也十分适合编写计算机程序代码。
其支持多种编程和标记语言的语法高亮,如C/C++、Java、JavaScript、Python、HTML、CSS等,提高代码的可读性和可维护性。同时支持语法折叠功能,可以折叠代码块,使代码结构更加清晰。
相关文章:

FPGA开发:初识FPGA × 开发环境
FPGA是什么? FPGA的全称是现场可编程门阵列(Field Programmable Gate Array),一种以数字电路为主的集成芯片,属于可编程逻辑器件PLD的一种。简单来说,就是能用代码编程,直接修改FPGA芯片中数字…...

电脑驱动分类
电脑驱动程序(驱动程序)是操作系统与硬件设备之间的桥梁,用于使操作系统能够识别并与硬件设备进行通信。以下是常见的驱动分类: 1. 设备驱动程序 显示驱动程序:控制显卡和显示器的显示功能,负责图形渲染和…...

理解C++全局对象析构顺序与 IPC 资源管理:避免 coredump
文章目录 0. 概述1. 问题背景2. 问题分析3. 解决方案:手动释放资源4. 深入剖析:为什么手动调用 reset() 有效?5. 延伸思考:如何避免全局对象带来的问题?6. 总结 0. 概述 在编写 C 程序时,使用全局或静态对…...

云计算之大数据(下)
目录 一、Hologres 1.1 产品定义 1.2 产品架构 1.3 Hologres基本概念 1.4 最佳实践 - Hologres分区表 1.5 最佳实践 - 分区字段设置 1.6 最佳实践 - 设置字段类型 1.7 最佳实践 - 存储属性设置 1.8 最佳实践 - 分布键设置 1.9 最佳实践 - 聚簇键设置 1.10 最佳实践 -…...

硬件工程师笔试面试知识器件篇——二极管
目录 4、二极管 4.1、基础 二极管原理图 二极管实物图 4.1.1、基本特性 4.1.2、常见类型 4.1.3、工作原理 4.1.4、应用领域 4.2、相关问题 4.2.1、二极管的PN结是如何形成的? 4.2.2、发光二极管(LED)的工作原理是什么? 4.2.3、在电子电路中,二极管通常如何应用?…...

操作系统安全保护
操作系统安全概述 概念:满足安全策略要求,具有响应安全机制及安全功符合特定安全标准,在一定约束条件下 能抵御常见网络安全威胁,保障自身安全运行及资源安全 安全等级:根据安全功能和安全保障要求分为 用户自主保护…...

STM32硬件篇:W25Q64
W25Q64简介 W25Qxx系列是一种低成本、小型化、使用简单(使用SPI通信协议)的非易失性(掉电不丢失)存储器,常用于数据存储、字库存储、固件程序存储等场景。 【注意】W25Qxx芯片只支持SPI的模式0和模式3。 存储介质&am…...

uni-app 获取当前位置的经纬度以及地址信息
文章目录 uni.getLocation(objc)获取经纬度和地址调试结果问题 uni-app 获取当前位置的经纬度以及地址信息 uni.getLocation(objc) uni-app官方文档定位API: uni.getLocation(OBJECT) uni.getLocation({type: wgs84,success: function (res) {console.log(当前位置的经度&…...

【CSS】尺寸单位
在 CSS 中,常见的尺寸单位有以下几种: 像素(px): 这是最常用的绝对单位。例如 width: 200px; 表示宽度为 200 像素。像素是固定的尺寸,不会随着屏幕分辨率或设备的不同而变化。 备注: 在不同的…...

Agent(智能体)和 MetaGPT,一句话实现整个需求应用代码
前面 2 篇文章,我们使用文生文、文生图和文生音频三个大模型共同实现了图文并茂的儿童绘本故事和绘本故事音频需求: 第一篇 根据主题生成儿童绘本故事:GLM-4-Flash 大模型 API 免费了,手把手构建“儿童绘本”应用实战(…...

[数据结构] 哈希结构的哈希冲突解决哈希冲突
标题:[C] 哈希结构的哈希冲突 && 解决哈希冲突 水墨不写bug 目录 一、引言 1.哈希 2.哈希冲突 3.哈希函数 二、解决哈希冲突 1.闭散列 I,线性探测 II,二次探测 2.开散列 正文开始: 一、引言 哈希表是一种非常实用而…...

Wimdows使用Appium IOS自动化
启动appium服务器: appium -a 127.0.0.1 -p 4724 配置 { "platformName": "iOS", "appium:platformVersion": "16.5.1", "appium:deviceName": "(★StatTrak™) |午夜黑(崭新出厂&#…...

C语言深度剖析--不定期更新的第四弹
哈哈哈哈哈哈,今天一天两更! void关键字 void关键字不能用来定义变量,原因是void本身就被编译器解释为空类型,编译器强制地不允许定义变量 定义变量的本质是:开辟空间 而void 作为空类型,理论上不应该开…...

【手撕数据结构】八大排序神功(上)
目录 冒泡排序【有点拉胯】动图演示:思路解析单趟算法图解代码详解性能优化复杂度分析 直接插入排序【还阔以】动图演示思路解析代码分析与讲解复杂度分析 希尔排序【有点强】动图演示思路讲解排序过程总览代码分析讲解复杂度分析 堆排序【太有石粒啦】动图演示堆的概念与结构向…...

【2024高教社杯全国大学生数学建模竞赛】B题模型建立求解
目录 1问题重述1.1问题背景1.2研究意义1.3具体问题 2总体分析3模型假设4符号说明(等四问全部更新完再写)5模型的建立与求解5.1问题一模型的建立与求解5.1.1问题的具体分析5.1.2模型的准备 目前B题第一问的详细求解过程以及对应论文部分已经完成ÿ…...

OpenHarmony鸿蒙开发( Beta5.0)智能手表应用开发实践
样例简介 本项目是基于BearPi套件开发的智能儿童手表系统,该系统通过与GSM模块(型号:SIM808)的通信来实现通话和定位功能。 智能儿童手表系统可以通过云和手机建立连接,同步时间和获取天气信息,通过手机下…...

共享单车轨迹数据分析:以厦门市共享单车数据为例(一)
共享单车数据作为交通大数据的一个重要组成部分,在现代城市交通管理和规划中发挥着越来越重要的作用。通过对共享单车的数据进行深入分析,城市管理者和规划者能够获得大量有价值的洞察,这些洞察不仅有助于了解城市居民的日常出行模式…...

SprinBoot+Vue在线商城微信小程序的设计与实现
目录 1 项目介绍2 项目截图3 核心代码3.1 Controller3.2 Service3.3 Dao3.4 application.yml3.5 SpringbootApplication3.5 Vue3.6 uniapp代码 4 数据库表设计5 文档参考6 计算机毕设选题推荐7 源码获取 1 项目介绍 博主个人介绍:CSDN认证博客专家,CSDN平…...

4--SpringBootWeb-请求响应
目录 postman 1.简单参数 请求参数名与形参变量名一致时 请求参数名与形参变量名不一致时 2.实体参数 简单实体对象 复杂实体对象 3.数组集合参数 数组 集合 4.日期参数 5.JSON参数 6.路径参数 1 2 postman Postman值一款功能强大的网页调试与发送网页HTTP请求的…...

电脑点击关机之后,又自动重启开机了。根本就关不了?
前言 有个小姐姐说,她家的电脑好生奇怪:点击【关机】按钮之后,电脑提示【正在关机】,过了几秒,电脑又自动开机了…… 好家伙!也就是说关机和重启根本就没区别,电脑完全无法断电。 最后忍无可…...

强化网络安全:通过802.1X协议保障远程接入设备安全认证
随着远程办公和移动设备的普及,企业网络面临着前所未有的安全挑战。为了确保网络的安全性,同时提供无缝的用户体验,我们的 ASP 身份认证平台引入了先进的 802.1X 认证协议,确保只有经过认证的设备才能接入您的网络。本文档将详细介…...

链动2+1模式AI智能名片S2B2C商城小程序源码在社群商业价值构建中的应用探索
摘要:在数字经济浪潮的推动下,社群作为商业生态的核心组成部分,其商业价值正以前所未有的速度增长。本文深入探讨了如何通过“链动21模式AI智能名片S2B2C商城小程序源码”这一前沿技术工具,深度挖掘并优化社群的商业价值。通过详细…...

基于SpringBoot+Vue+MySQL的校园周边美食探索及分享平台
系统背景 在当今数字化时代,校园生活正日益融入信息技术的浪潮之中,学生们对于便捷、高效且富有趣味性的生活方式有着越来越高的追求。特别是在饮食文化方面,随着校园周边餐饮业态的日益丰富,学生们渴望一个能够集美食探索、分享与…...

“设计模式双剑合璧:工厂模式与策略模式在支付系统中的完美结合”
工厂模式(Factory Pattern)和策略模式(Strategy Pattern)都是常见的设计模式,但它们解决的问题和应用场景不同。下面是它们的区别: 1. 目的不同: 工厂模式(Factory Pattern…...

第二百一十九节 JPA 教程 - JPA 字段映射示例
JPA 教程 - JPA 字段映射示例 当将 Java bean 字段映射到数据库列时,我们可以选择标记字段,标记 getter 方法并标记两者。 标记字段 以下代码来自 Professor.java。 它显示如何将主键列标记为 Java bean 字段标识。 package cn.w3cschool.common; im…...

目标检测-YOLOv6
YOLOv6 YOLOv6 是 YOLO 系列的一个新版本,相比 YOLOv5 进行了大量的优化与改进。YOLOv6 的设计目标是在提高模型检测精度的同时,进一步优化速度和效率,特别是在推理速度和部署便捷性方面。它采用了更先进的网络架构和优化技巧,在…...

Java面向对象与多态
目录 Java面向对象与多态 多态介绍 形成多态的前提 多态下成员访问的特点 成员变量 成员方法 访问特点总结 多态对比普通继承 普通继承优点与缺点 多态优点与缺点 向上转型与向下转型 向下转型存在的问题 多态接口练习 Java面向对象与多态 多态介绍 在前面学习到…...

redis分布式锁和lua脚本
业务场景:多个线程对共同资源的访问:库存超卖/用户重复下单的原因 解决方法一:利用jvm内置锁,将非原子性操作变成原子性操作 Synchronized锁的是对象,对象必须是单例的。锁的是this,代表当前所在的类,这个…...

项目实战 ---- 商用落地视频搜索系统(5)---service层核心
目录 背景 向下service 层 描述 功能 代码实现 核心阐述 向上service层 描述 功能 代码实现 核心阐述 背景 之前的 1-4 重点在介绍系统的实现架构,录入数据的组织形式,存储模式,search 方式,以及后期算法等。重点都是聚焦在后端。现在来看,基本的后端实现我们…...

Win32远线程注入
远线程注入 远线程(RemoteThread)注入是指一个进程在另一个进程中创建线程的技术,这是一种很经典的DLL注入技术。 虽然比较古老,但是很实用。通过远线程注入,再配合api函数的hook技术,可以实现很多有意思的功能。 实现远线程注入…...