2. FPGA的电路结构概述
文章目录
- 1. 引言
- 2. FPGA的一般结构
- 2.1 概要
- 2.2 FPGA三部分构成间的关系:
- 3. 小结
1. 引言
- 结构决定原理。原理未必决定结构。
- 理解FPGA结构,进而能阐明其工作原理很有必要。
- FPGA产品的风云变换,其基本结构保持相对不变。
2. FPGA的一般结构
2.1 概要
- 不同FPGA厂家的产品有各自特点,但芯片结构类似
- FPGA芯片内部结构通常由如下三部分构成:
- 输入输出块(IOB,Input Output Block):为待实现的数字系统提供可编程的输入、输出端口,相当于PCB板的外部接线端子。
- 逻辑阵列块(LAB,Logic Array Block):有的厂家也称之为CLB,configurable Logic block,它是实现数字逻辑的基本单元。
- 连线资源:相当于PCB板上的导线,只不过,PCB板一旦制造好了,导线就难以更改,而FPGA的“导线”可以通过编程修改。连线资源使得我们可以将各个LAB、IOB端口按照设计合理的连线。
2.2 FPGA三部分构成间的关系:
回想一下我们在最初的数字电路实验课上,我们是如何搭建一个简单的数字电路的,例如一个模数为60、输出为8421BCD码的计数器(最终要把输出信号送往2个七段数码管驱动电路的输入端,以便显示出结果),要求通过实验箱上提供的脉冲发生器、电源、以及老师发给我们的中规模集成电路芯片(如74LS20(四输入与非门)、74LS00(二输入与非门)、74LS161(4位二进制计数器))以及互联导线,让我们设计并验证电路。
上述场景中的实验箱及所有用到的器件、导线等全部数字设计资源相当于1块FPGA开发板(上面已经焊接好了FPGA芯片及外围电路(如脉冲发生器、电源、LED灯、七段数码管等)),而我们拿到的各个中规模集成器件,就相当于FPGA芯片中的LAB,我们最终引出输出(或输入)的插线口相当于FPGA芯片的IOB,我们使用导线把元器件互联起来,并把输出信号通过导线连到信号(输入)输出端,这些导线就相当于FPGA芯片中的连线资源。
不同的是,FPGA芯片中的IOB、LAB(或CLB)、连线资源都是可编程的(可以通过EDA软件修改的)。
基于中规模数字芯片设计数字系统,是一个给定约束条件(有什么芯片,有那些连线端口,有那些连线)下的数字系统设计问题,
同样,基于FPGA设计数字系统,也是一个给定约束条件(有什么LAB块、有那些IOB块,有那些互连线资源)下的数字系统设计问题。
理解了数字电路中基于中规模芯片的电路设计实现过程,也能很好的理解FPGA三部分构成间的关系,即:
LAB相当于基本功能器件;IOB相当于信号的输入、输出端口;互连线资源相当于导线,把输入输出信号、各个基本器件的输入、输出按照逻辑综合后的网表中信号的连接关系,连接起来。
FPGA EDA软件为用户提供了巨大的便利,用户只需要按照一般原理设计出电路的门级(甚至是高级)描述,这些软件能自动帮我们完成门级到FPGA内部实现资源的映射,我们只重点关注前端逻辑的设计即可,至于类似于PCB版的布局、布线都由EDA软件自动完成,而且,也只能由他们完成。因为数字系统的规模很大,手工布局布线几乎不可行!
题外话:我们在享受着EDA的便利,但往往忘记EDA自身的开发,是一种非常具有挑战性的工作,它不仅要求开发者具备数字设计硬件知识,也具有高超的编程技术!!!
3. 小结
从总体上了解了FPGA芯片内部的电路构成,这是必要的,这就像去一个景点,先要对整体有一个宏观的了解,而后逐步了解内部。否则,已陷入“只见树木,不见森林”。
相关文章:
2. FPGA的电路结构概述
文章目录 1. 引言2. FPGA的一般结构2.1 概要2.2 FPGA三部分构成间的关系: 3. 小结 1. 引言 结构决定原理。原理未必决定结构。理解FPGA结构,进而能阐明其工作原理很有必要。FPGA产品的风云变换,其基本结构保持相对不变。 2. FPGA的一般结构…...
【Qt】Qt配置
需要云服务器等云产品来学习Linux的同学可以移步/-->腾讯云<--/-->阿里云<--/-->华为云<--/官网,轻量型云服务器低至112元/年,新用户首次下单享超低折扣。 目录 一、Qt SDK下载 二、配置环境变量 三、新建工程(QWidget) 四、QWidg…...
查看Linux系统内存、CPU、磁盘使用率和详细信息
一、查看内存占用 1、free # free -m 以MB为单位显示内存使用情况 [rootlocalhost ~]# free -mtotal used free shared buff/cache available Mem: 11852 1250 8668 410 1934 9873 Swap: 601…...
HttpServletRequest getServerPort()、getLocalPort() 、getRemotePort() 区别
getRemotePort() 、getServerPort()、getLocalPort() request.getServerPort()、request.getLocalPort() 和 request.getRemotePort() 这三个方法都是获取与HTTP请求相关的端口信息的 客户端(如浏览器)通过某个随机分配的网络连接端口(7070) 向服务器发送HTTP请求( http://exam…...
NVIDIA jetson编译opencv 源码 python版本
安装 jetson-stats 查看GPU的利用率 sudo apt-get install python3-pip sudo -H pip3 install jetson-stats 运行 jtop 进行查看 opencv 编译python版本 编译命令 cmake -D CMAKE_INSTALL_PREFIX/usr/local/opencv-4.6.0 -D CMAKE_BUILD_TYPERELEASE -D WITH_OPENGLON -D …...
TCP的三次握手,四次挥手
三次握手 第一次握手:客户端发送SYN报文,井发送seq为x序列号给服务端,等待服务端的确认第二次握手:服务端发送SYNACK报文,并发送seq为Y的序列号,在确认序列号为x1第三次握手:客户端发送ACK报文&…...
ElasticSearch高阶使用
目录 一、match_all 二、 text和keyword的区别 三、match、term的区别 四、exists query 五、 ids query 六、range query范围查询 七、prefix query前缀查询 八、 wildcard query通配符查询 九、 fuzzy query模糊查询 十、match query匹配查询 十一、multi_match q…...
美易官方:盘前:道指期货跌0.4% “恐怖数据”将发布
盘前:道指期货跌0.4% “恐怖数据”将发布 在今日的盘前交易中,道琼斯工业平均指数期货小幅下跌0.4%,市场正在等待即将发布的“恐怖数据”——美国零售销售数据。这一数据被视为衡量美国经济健康状况的重要指标,因此备受关注。 由于…...
appium之联动pycharm
前置条件: 1.java环境安装好了 2.android-sdk安装好(uiautomatorviewer 也可以把这个启动起来) 3.appium安装好 4.adb devices查看下设备是否连接 pycharm入门代码--固定写法 from appium import webdriver# 定义字典变量 desired_caps …...
Java中泛型的详细介绍
引言: Java语言中的泛型是一种强大的特性,它允许我们在编写代码时指定类、接口和方法的参数类型。通过使用泛型,我们可以提高代码的重用性、可读性和安全性。在本博客中,我们将详细介绍Java中泛型的知识。 一、泛型的基本概念 泛型…...
chrome 307状态码
问题:不知道什么原因导致http请求chrome始终307跳转到https,这个307的跳转非常恶心的地方是客户端缓存行为,并且非普通的f12下面清除缓存可以去掉 解决办法:使用chrome的清除浏览数据,通过这个方式清除,才能解决。 问…...
Redis在Windows10中安装和配置
1.首先去下载Redis 这里不给出下载地址,自己可以用去搜索一下地址 下载 下载完成后解压到D盘redis下,本人用的是3.2.100 D:\Redis\Redis-x64-3.2.100 2.解压完成后需要设置环境变量,这里新建一个系统环境变量中path 中添加一个文件所…...
华为OD机试 - 特殊的加密算法(Java JS Python C)
题目描述 有一种特殊的加密算法,明文为一段数字串,经过密码本查找转换,生成另一段密文数字串。 规则如下: 明文为一段数字串由 0~9 组成密码本为数字 0~9 组成的二维数组需要按明文串的数字顺序在密码本里找到同样的数字串,密码本里的数字串是由相邻的单元格数字组成,上…...
MySQL——性能优化与关系型数据库
文章目录 什么是性能?什么是关系型数据库?数据库设计范式 常见的数据库SQL语言结构化查询语言的六个部分版本 MySQL数据库故事历史版本5.6/5.7差异5.7/8.0差异 什么是性能? 吞吐与延迟:有些结论是反直觉的,指导我们关…...
【机器学习300问】12、为什么要进行特征归一化?
当线性回归模型的特征量变多之后,会出现不同的特征量,然而对于那些同是数值型的特征量为什么要做归一化处理呢? 一、为了消除数据特征之间的量纲影响 使得不同指标之间具有可比性。例如,分析一个人的身高和体重对健康的影响&…...
CSV文件中json列的处理2
如上所示,csv文件中包含以中括号{}包含的json字段,可用如下方法提取: import pandas as pd from datetime import date todaystr(date.today()) import jsonfilepath/Users/kangyongqing/Documents/kangyq/202401/调课功能使用统计/ file104…...
eNSP学习——部分VLAN间互通、部分VLAN间隔离、VLAN内用户隔离(MUX-VLAN)
MUX VLAN(Multiplex VLAN)提供了一种通过VLAN进行网络资源控制 的机制。通过MUX VLAN提供的二层流量隔离的机制可以实现企业内部员 工之间互相通信,而企业外来访客之间的互访是隔离的。 特点: 一、主VLAN端口可以和所有VLAN通信 二…...
【音视频】如何播放rtsp视频流
背景 现阶段直播越来越流行,直播技术发展也越来越快。Webrtc和rtsp是比较火热的技术,而且应用也比较广泛。本文通过实践来展开介绍关于rtsp、webrtc的使用过程。 概要 本文重点介绍如何播放rtsp视频流,通过ffplay方式以及VLC media player…...
Qt6入门教程 8:信号和槽机制(连接方式)
目录 一.一个信号与槽连接的例子 二.第五个参数 1.Qt::AutoConnection 2.Qt::DirectConnection 3.Qt::QueuedConnection 4.Qt::BlockingQueuedConnection 5.Qt::UniqueConnection 三.信号 四.connect函数原型 五.信号与槽的多种用法 六.槽的属性 一.一个信号与槽连接…...
Python如何操作RabbitMQ实现fanout发布订阅模式?有录播直播私教课视频教程
fanout发布订阅模式 基本用法 生产者 import json import rabbitmq# 建立连接 credentials rabbitmq.PlainCredentials(zhangdapeng,zhangdapeng520, ) # mq用户名和密码 connection_target rabbitmq.ConnectionParameters(host127.0.0.1,port5672,virtual_host/,credent…...
Docker 离线安装指南
参考文章 1、确认操作系统类型及内核版本 Docker依赖于Linux内核的一些特性,不同版本的Docker对内核版本有不同要求。例如,Docker 17.06及之后的版本通常需要Linux内核3.10及以上版本,Docker17.09及更高版本对应Linux内核4.9.x及更高版本。…...
Zustand 状态管理库:极简而强大的解决方案
Zustand 是一个轻量级、快速和可扩展的状态管理库,特别适合 React 应用。它以简洁的 API 和高效的性能解决了 Redux 等状态管理方案中的繁琐问题。 核心优势对比 基本使用指南 1. 创建 Store // store.js import create from zustandconst useStore create((set)…...
tree 树组件大数据卡顿问题优化
问题背景 项目中有用到树组件用来做文件目录,但是由于这个树组件的节点越来越多,导致页面在滚动这个树组件的时候浏览器就很容易卡死。这种问题基本上都是因为dom节点太多,导致的浏览器卡顿,这里很明显就需要用到虚拟列表的技术&…...
学校时钟系统,标准考场时钟系统,AI亮相2025高考,赛思时钟系统为教育公平筑起“精准防线”
2025年#高考 将在近日拉开帷幕,#AI 监考一度冲上热搜。当AI深度融入高考,#时间同步 不再是辅助功能,而是决定AI监考系统成败的“生命线”。 AI亮相2025高考,40种异常行为0.5秒精准识别 2025年高考即将拉开帷幕,江西、…...
Mysql8 忘记密码重置,以及问题解决
1.使用免密登录 找到配置MySQL文件,我的文件路径是/etc/mysql/my.cnf,有的人的是/etc/mysql/mysql.cnf 在里最后加入 skip-grant-tables重启MySQL服务 service mysql restartShutting down MySQL… SUCCESS! Starting MySQL… SUCCESS! 重启成功 2.登…...
虚拟电厂发展三大趋势:市场化、技术主导、车网互联
市场化:从政策驱动到多元盈利 政策全面赋能 2025年4月,国家发改委、能源局发布《关于加快推进虚拟电厂发展的指导意见》,首次明确虚拟电厂为“独立市场主体”,提出硬性目标:2027年全国调节能力≥2000万千瓦࿰…...
Caliper 负载(Workload)详细解析
Caliper 负载(Workload)详细解析 负载(Workload)是 Caliper 性能测试的核心部分,它定义了测试期间要执行的具体合约调用行为和交易模式。下面我将全面深入地讲解负载的各个方面。 一、负载模块基本结构 一个典型的负载模块(如 workload.js)包含以下基本结构: use strict;/…...
DeepSeek源码深度解析 × 华为仓颉语言编程精粹——从MoE架构到全场景开发生态
前言 在人工智能技术飞速发展的今天,深度学习与大模型技术已成为推动行业变革的核心驱动力,而高效、灵活的开发工具与编程语言则为技术创新提供了重要支撑。本书以两大前沿技术领域为核心,系统性地呈现了两部深度技术著作的精华:…...
用鸿蒙HarmonyOS5实现中国象棋小游戏的过程
下面是一个基于鸿蒙OS (HarmonyOS) 的中国象棋小游戏的实现代码。这个实现使用Java语言和鸿蒙的Ability框架。 1. 项目结构 /src/main/java/com/example/chinesechess/├── MainAbilitySlice.java // 主界面逻辑├── ChessView.java // 游戏视图和逻辑├──…...
数据库正常,但后端收不到数据原因及解决
从代码和日志来看,后端SQL查询确实返回了数据,但最终user对象却为null。这表明查询结果没有正确映射到User对象上。 在前后端分离,并且ai辅助开发的时候,很容易出现前后端变量名不一致情况,还不报错,只是单…...
