草庐IT

【FPGA】FPGA的介绍及入门

杜宇听澜 2023-09-20 原文

文章目录


FPGA应用场景

单片机应用:

日常应用广泛,多用于控制流水灯。

FPGA应用:

(1) 通信接口设计、数字信号处理等比较需要处理的数据量比较大、需要处理速度特别快或精度特别高的场合。
(2) ASIC原型验证。


一、FPGA的工作原理

FPGA通过烧写文件去配置查找表,从而在相同的电路情况下实现不同的逻辑功能。

二、FPGA的编程方式

1、并行模式: 并行PROM、Flash配置FPGA;
2、主从模式: 一片PROM配置多片FPGA;
3、串行模式: 串行PROM配置FPGA;
4、外设模式: 将FPGA作为微处理器的外设,由微处理器对其编程;

、FPGA开发流程

功能定义
设计输入
功能仿真
综合优化
综合后仿真
实现布局布线
时序仿真
静态时序仿真
板级仿真与验证
芯片编程与调试
逻辑仿真器
逻辑综合器
逻辑仿真器1
FPGA厂家工具
逻辑仿真器2

综合优化到时序优化的过程由仿真平台进行完成。

三、FPGA设计方法

1.功能定义

(1)根据待设计的项目,进行系统设计方案论证:
需要进行系统功能定义、模块划分
(2) 根据任务要求,对工作速度和器件本身的资源、成本、以及连线的可布性进行权衡,选择合适的设计方案和合适的期间类型。

采用的设计方法:

一般采用自顶向下的设计方法,把系统分成若干个基本单元,然后把每个基本单元划分为下一层级的基本单元,一直这样做下去,直到可以直接使用EDA单元。


2.设计输入

HDL语言输入法: 利用文本描述语言,分为普通HDL和行为HDL。普通HDL有ABEL、CUR等,用于简单的小型设计;行为HDL主流语言是Verilog HDL和VHDL,多用于中大型工程中。

原理图输入方法: 在可编程芯片发展的早起应用比较广泛,将所需的器件从元件库中调出来,画出原理图。直观并易于仿真,但效率很低,而且不易维护,不利于模块的构造和重用,可移植性差。

这一步就是用硬件语言去描述待设计电路的功能。

例如设计一个比赛裁判判决器

两个副裁判一个主裁判,主裁判与其中一到两个副裁判按下灯亮,主裁判不按下灯不亮

代码如下:

module work_1(
	input		x,
	input		y,
	input		z,//main
	output		led
); 

assign led = (x|y)&z;

编写仿真文件:

`timescale 1ns / 1ps
module test_1();
reg     x;
reg     y;
reg     z;
wire    led;
work_1 work(
    .x          (x  ),
    .y          (y  ),
    .z          (z  ),
    .led        (led)
    );
initial
    begin
        y=0;
        #200 y=1;
        #400 y=0;
    end
initial
    begin
        x=0;
        #100 x=1;
        #300 x=0;
        #500 x=0;
    end
initial 
    begin
        z=0;
        #100 z=1;
        #200 z=0;
        #300 z=1;
        #400 z=0;
    end
endmodule

观察到仿真结果:


3、功能仿真

功能仿真: 也称为综合前仿真,实在编译之前对用户所设计的电路进行逻辑功能验证,此时的仿真没有延迟信息,仅对初步的功能进行检测。
常用的工具: ModelSim,VCS,NC-Verilog,NC-VHDL等。


4、综合优化

把代码变成电路的过程被称为综合
综合优化 是指将设计输入编译成由与门、或门、非门、RAM、触发器等基本逻辑单元组成的逻辑连接网表,而非真实的门级电路。综合的结果得到的是一个硬件电路的设计方案。

常用的综合工具: Synpify以及各个FPGA厂家自己推出的综合开发工具。

经过综合,得到了所涉及的电路实现方案:


五、综合后仿真

综合后仿真是对上一步的综合结果(代码便编程一个电路模型)进行仿真,检查是否实现了预期的功能。

  1. 在仿真时,把综合生成的标准延时文件反标注到综合仿真模型中去可估计门延时带来的影响。但这一步骤不能估计线延时,因此和布线后的实际情况还有一定的差距,并不十分准确;
  2. 目前的综合工具较为成熟,对于一般的设计可以省略这一步,但如果在布局布线后发现电路结构和设计意图不符,则需要回溯到综合后仿真来确认问题之所在。在功能仿真中介绍的软件工具一般都支持综合后仿真。

六、布局布线

布局布线 可理解为利用实现工具把逻辑映射到目标器件结构的资源中,决定逻辑的最佳布局,选择逻辑与输入输出功能链接的布线通道进行连线,并产生相应的文件(如配置文件与相关报告),实现是将综合生成的逻辑网表配置到具体的FPGA芯片上,布局布线是其中最重要的过程。


七、时序仿真

时序仿真: 也称为后仿真,是将布局布线的延时信息反标注到设计网表中来检测有无时序违规(即不满足时序约束或期间固有的时序规则,如建立时间、保持时间等)现象。

  1. 时序仿真包含的延迟信息最全,也最精确,能较好地反映芯片的实际工作情况。
  2. 不同芯片的内部延时不同,不同的布局布线方案延时影响不同。

八、板级仿真与验证

板级仿真 主要应用于高速电路设计中。对高速系统的信号完整性、电磁干扰等特征进行分析,一般都以第三方工具进行仿真和验证。


九、编程与调试

芯片编程 是指将FPGA开发工具最后产生的数据文件(位数据流文件)加载到FPGA芯片中。如果上板之后发现功能不正确,尝尝采用逻辑分析仪进行调试。


总结

FPGA开发入门准备:

  1. 数字电路基本知识;
  2. 硬件描述语言入门学习;
  3. 仿真平台的使用;
  4. FPGA开发板;

有关【FPGA】FPGA的介绍及入门的更多相关文章

  1. Unity 热更新技术 | (三) Lua语言基本介绍及下载安装 - 2

    ?博客主页:https://xiaoy.blog.csdn.net?本文由呆呆敲代码的小Y原创,首发于CSDN??学习专栏推荐:Unity系统学习专栏?游戏制作专栏推荐:游戏制作?Unity实战100例专栏推荐:Unity实战100例教程?欢迎点赞?收藏⭐留言?如有错误敬请指正!?未来很长,值得我们全力奔赴更美好的生活✨------------------❤️分割线❤️-------------------------

  2. LC滤波器设计学习笔记(一)滤波电路入门 - 2

    目录前言滤波电路科普主要分类实际情况单位的概念常用评价参数函数型滤波器简单分析滤波电路构成低通滤波器RC低通滤波器RL低通滤波器高通滤波器RC高通滤波器RL高通滤波器部分摘自《LC滤波器设计与制作》,侵权删。前言最近需要学习放大电路和滤波电路,但是由于只在之前做音乐频谱分析仪的时候简单了解过一点点运放,所以也是相当从零开始学习了。滤波电路科普主要分类滤波器:主要是从不同频率的成分中提取出特定频率的信号。有源滤波器:由RC元件与运算放大器组成的滤波器。可滤除某一次或多次谐波,最普通易于采用的无源滤波器结构是将电感与电容串联,可对主要次谐波(3、5、7)构成低阻抗旁路。无源滤波器:无源滤波器,又称

  3. 微信小程序开发入门与实战(Behaviors使用) - 2

    @作者:SYFStrive @博客首页:HomePage📜:微信小程序📌:个人社区(欢迎大佬们加入)👉:社区链接🔗📌:觉得文章不错可以点点关注👉:专栏连接🔗💃:感谢支持,学累了可以先看小段由小胖给大家带来的街舞👉微信小程序(🔥)目录自定义组件-behaviors    1、什么是behaviors    2、behaviors的工作方式    3、创建behavior    4、导入并使用behavior    5、behavior中所有可用的节点    6、同名字段的覆盖和组合规则总结最后自定义组件-behaviors    1、什么是behaviorsbehaviors是小程序中,用于实现

  4. 【Java入门】使用Java实现文件夹的遍历 - 2

    遍历文件夹我们通常是使用递归进行操作,这种方式比较简单,也比较容易理解。本文为大家介绍另一种不使用递归的方式,由于没有使用递归,只用到了循环和集合,所以效率更高一些!一、使用递归遍历文件夹整体思路1、使用File封装初始目录,2、打印这个目录3、获取这个目录下所有的子文件和子目录的数组。4、遍历这个数组,取出每个File对象4-1、如果File是否是一个文件,打印4-2、否则就是一个目录,递归调用代码实现publicclassSearchFile{publicstaticvoidmain(String[]args){//初始目录Filedir=newFile("d:/Dev");Datebeg

  5. ES基础入门 - 2

    ES一、简介1、ElasticStackES技术栈:ElasticSearch:存数据+搜索;QL;Kibana:Web可视化平台,分析。LogStash:日志收集,Log4j:产生日志;log.info(xxx)。。。。使用场景:metrics:指标监控…2、基本概念Index(索引)动词:保存(插入)名词:类似MySQL数据库,给数据Type(类型)已废弃,以前类似MySQL的表现在用索引对数据分类Document(文档)真正要保存的一个JSON数据{name:"tcx"}二、入门实战{"name":"DESKTOP-1TSVGKG","cluster_name":"elasticsear

  6. 区块链入门教程(6)--WeBASE-Front节点前置服务安装 - 2

    文章目录1.任务背景2.任务目标3.相关知识点4.任务实操4.1安装配置JDK4.2启动FISCOBCOS4.3下载解压WeBASE-Front4.4拷贝sdk证书文件4.5启动节点4.6访问节点4.7检查运行状态5.任务总结1.任务背景FISCOBCOS其实是有控制台管理工具,用来对区块链系统进行各种管理操作。但是对于初学者来说,还是可视化界面更友好,本节就来介绍WeBASE管理平台,这是一款微众银行开源的自研区块链中间件平台,可以降低区块链使用的门槛,大幅提高区块链应用的开发效率。微众银行是腾讯牵头设立的民营银行,在国内民营银行里还是比较出名的。微众银行参与FISCOBCOS生态建设,一定

  7. Tcl脚本入门笔记详解(一) - 2

    TCL脚本语言简介•TCL(ToolCommandLanguage)是一种解释执行的脚本语言(ScriptingLanguage),它提供了通用的编程能力:支持变量、过程和控制结构;同时TCL还拥有一个功能强大的固有的核心命令集。TCL经常被用于快速原型开发,脚本编程,GUI和测试等方面。•实际上包含了两个部分:一个语言和一个库。首先,Tcl是一种简单的脚本语言,主要使用于发布命令给一些互交程序如文本编辑器、调试器和shell。由于TCL的解释器是用C\C++语言的过程库实现的,因此在某种意义上我们又可以把TCL看作C库,这个库中有丰富的用于扩展TCL命令的C\C++过程和函数,所以,Tcl是

  8. Simulink方法总结和避坑指南(一)——Simulink入门与基本调试方法 - 2

    文章目录一、项目场景二、基本模块原理与调试方法分析——信源部分:三、信号处理部分和显示部分:四、基本的通信链路搭建:四、特殊模块:interpretedMATLABfunction:五、总结和坑点提醒一、项目场景  最近一个任务是使用simulink搭建一个MIMO串扰消除的链路,并用实际收到的数据进行测试,在搭建的过程中也遇到了不少的问题(当然这比vivado里面的debug好不知道多少倍)。准备趁着这个机会,先以一个很基本的通信链路对simulink基础和相关的debug方法进行总结。  在本篇中,主要记录simulink的基本原理和基本的SISO通信传输链路(QPSK方式),计划在下篇记

  9. H2数据库配置及相关使用方式一站式介绍(极为详细并整理官方文档) - 2

    目录H2数据库入门以及实际开发时的使用1.H2数据库的初识1.1H2数据库介绍1.2为什么要使用嵌入式数据库?1.3嵌入式数据库对比1.3.1性能对比1.4技术选型思考2.H2数据库实战2.1H2数据库下载搭建以及部署2.1.1H2数据库的下载2.1.2数据库启动2.1.2.1windows系统可以在bin目录下执行h2.bat2.1.2.2同理可以通过cmd直接使用命令进行启动:2.1.2.3启动后控制台页面:2.1.3spring整合H2数据库2.1.3.1引入依赖文件2.1.4数据库通过file模式实际保存数据的位置2.2H2数据库操作2.2.1Mysql兼容模式2.2.2Mysql模式

  10. FPGA 之 时钟,时钟域, 以及复位系统的设计 - 2

    FPGA时钟和时钟域时钟树所谓时钟树为FPGA内部资源,分:全局时钟树,区域时钟树,IO时钟树原则上优先使用全局时钟树,在GT接口上使用IO时钟树,一般工具也会对GT时钟加以限制;时钟树使用方式正确的物理连接FPGA会由物理管脚专门用于全局时钟设置,通过查询数据手册可以在PCB设计阶段进行确认,当外部时钟接入此管脚时,工具会自动占有全局时钟树资源,当接入普通信号时不会分配时钟树资源;恰当的代码描述原语的使用,即BUFG的使用,可以将PLL的输出等内部时钟进行全局时钟资源的分配;IO时钟资源需要参考相应接口手册,以ultrascale的GTH为例,其JESD204的时钟方案针对不同的子类会由不同

随机推荐