FPGA开发:初识FPGA × 开发环境

devtools/2024/12/21 22:09:46/

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等,提高代码的可读性和可维护性。同时支持语法折叠功能,可以折叠代码块,使代码结构更加清晰。



http://www.ppmy.cn/devtools/108917.html

相关文章

Spring Boot集成PageHelper分页插件详解

文章目录 Spring Boot集成PageHelper分页插件详解一、引言二、集成PageHelper1、添加依赖2、配置PageHelper 三、使用PageHelper1、基本使用2、高级特性 四、总结 Spring Boot集成PageHelper分页插件详解 一、引言 在现代的Web开发中,分页功能是不可或缺的一部分&…

USB驱动程序知识介绍

USB驱动程序是一类专门用于管理和控制USB(通用串行总线)设备的驱动程序,它使得操作系统能够与各种USB设备进行通信,如键盘、鼠标、存储设备、打印机等。USB驱动程序的主要作用是处理数据传输、设备识别和资源分配等任务&#xff0…

Python可视化集大成之作 - Seaborn 介绍

我今天要介绍一款让你在数据可视化中游刃有余的利器——Seaborn包。作为Python数据可视化库中的一员,Seaborn不仅美观易用,而且功能丰富,是生物信息学中数据探索的好帮手。 为什么选择Seaborn? 1. 美观简洁 Seaborn的默认主题和颜…

黑马JavaWeb开发笔记13——Springboot入门(创建、运行测试项目)、Http协议(请求响应协议)、HTTP协议解析

文章目录 前言一、SpringBoot介绍二、SpringBootWeb入门1. 需求2. 开发步骤2.1 创建SpringBoot工程(需要联网)2.2 定义请求处理类2.3 运行测试 三、HTTP协议1. Http-概述1.1 介绍1.2 特点 2. Http-请求协议2.1 GET方式的请求协议2.2 POST方式的请求协议2…

<Rust>egui学习之小部件(十):如何在窗口中添加复选框checkbox部件?

前言 本专栏是关于Rust的GUI库egui的部件讲解及应用实例分析,主要讲解egui的源代码、部件属性、如何应用。 环境配置 系统:windows 平台:visual studio code 语言:rust 库:egui、eframe 概述 本文是本专栏的第十篇博…

全面掌握PythonJava分层自动化测试:从单元测试到安全检测的完整指南

分层自动化(Layered Automation)是一种软件测试策略,通过将自动化测试分为不同层次或阶段,针对不同类型的测试需求,确保测试覆盖的全面性以及提高测试效率。这种方法通过分解复杂的测试任务,将其分配到适当的层级,从而降低测试的维护成本并提高自动化测试的稳定性和复用…

shell编程--正则表达式

正则表达式 正则表达式都被置于两个正斜杠之间;如/l[oO]ve/ 示例 匹配数字的脚本,用户输入创建账号的数量 语法: [[ ^[0-9]$ ]] 表示必须输入数字 #!/bin/bashwhile : do read -p "输入数字:" numif [[ $num ~ ^[…

Windows下Python和PyCharm的应用(三)__Numpy与矩阵

1、背景介绍 矩阵运算是Python语言的基石。 而支持矩阵运算的基础语言包就是Numpy。 参考链接: Python中Numpy的使用_numpy在python中的用法-CSDN博客 这篇博客介绍的numpy比我的这篇博客介绍的更加的详细。本博客只是根据本人 的实际应用,对最关键的…