FPGA 配置原理
用户编程控制的FPGA 是通过加载比特位流配置内部的存储单元实现的。该存储单元就是所谓的配置单元,它必须在器件上电后进行配置,从而设置查找表(LUT)的属性、连线方式、IOB 电压标准和其它的用户设计。
1.配置帧
以Xilinx 公司的Virtex-II 系列为例,配置数据是以配置帧(Frame)为配置单元进行读写的。每一帧以一个比特为宽度,从器件的最顶端一直延伸到最底端。
不同器件型号的尺寸和容量不同,所以,对应的帧长也不同。但在同一器件中,所有类型的帧,其长度一致。
下表列出不同型号的帧长度以及总的帧数,单位为32bit 字。
2.配置列
多个配置帧构成了更大的配置单位称为配置列(Column)。以配置列为单位,可以将FPGA 资源分成三类:类一,CLB 列、IOB 列、IOI 列、GCLK 列;类二,BRAM 列;类三,BRAM Interconnect 列。下图展示了三类资源在FPGA 上的物理映射。
在Virtex-II 系列FPGA 中,IOB、IOI 和GCLK 列数是一致的,而CLB、BRAM和BRAM Interconnect 的列数则是根据器件的尺寸有所差异。对于不同类别的列所含有的帧数以及不同器件型号所含有的列数由下表所示。
IOB 列:配置器件最左和最右两端的I/O 电平标准;
IOI 列:配置乘法器、器件最左端和最右端IOB 中的三态缓冲、IOB 中的寄存器;
CLB 列:配置CLB 单元、布线、大部分的内连和器件最上端和最下端IOB;
BRAM 列:配置在BRAM 中的用户存储空间属性;
BRAM Interconnect 列:配置除了用户存储空间以外的BRAM 空间以及乘法器的属性;
GCLK 列:配置大部分的全局时钟资源,包括时钟缓冲和数字时钟管理器(DCM)。
3.配置单元的寻址
在整个配置过程中,每个配置帧都有唯一的32 位地址与之相对应。该地址由块地址(Block Address,BA)、主地址(Major Address,MJA)、次地址(Minor Address,MNA)和字节数(Byte number)组成。其中,字节数为全‘0’,它是在配置过程中,自动为器件中的帧长计数器所使用,用户不能够对其进行设置。下表说明了地址的组成。
根据块地址(BA),可以将地址划分为三类(BA00,BA01,BA10),对应着FPGA 三类的内部资源:
BA00 包括了所有的CLB 列、IOB 列、IOI 列、GCLK 列;
BA01 包括了所有的BRAM 列;
BA10 包括了所有的BRAM Interconnect 列。
主地址(MJA)指定了一列在某块中的位置,次地址(MNA)则是说明一帧在某一列中的次序。下图说明了帧地址的映射,需要注意的是,帧的排列并不是硬件上的映射,而是逻辑上的映射。在配置过程中,帧地址会自动累加,即:帧的配置顺序在下图中是从左到右的一个配置过程。
4.比特流的组成
配置 Virtex-II 的比特流由同步字和大量的数据包组成,其长度均为以32bit 字为单位。同步字(0xAA995566)对配置逻辑进行同步,当FPGA 接收到这一同步字后,数据通道打开,开始以32bit 字为基本单位进行数据包的接收。在比特文件中的位置由下图所示。
而数据包则是先指定相应寄存器然后再对其进行配置,它是由包头和不定长的实体构成,其仍然以32bit 字进行基本的操作。
数据包的包头分为两种类型:TYPE1 和TYPE2。
TYPE1的包头如下表所示,在TYPE1 包头中,“WR”或“RD”指定了读写操作,“Register Address”指定配置寄存器的地址,“Word Count”指定了跟在TYPE1 包头后面的32bit 字的字数,对应需要配置到“Register Address”所指定的寄存器。
TYPE2的包头如下表所示。
通常,TYPE1 用于比较小的包的配置,例如对地址寄存器(FAR)的配置。而TYPE2 则是用于较大包的配置,例如对FPGA 三类资源的配置。
但在全比特位流中,通常是两种类型的包头结合使用,组织形式为“TYPE1+TYPE2”,形式如下图所示。
5.配置控制逻辑
Virtex-II FPGA 的配置控制逻辑是由包处理器、一系列的配置寄存器及其控制的全局信号组成。其中,包处理器将从数据通道进来的数据流配置到相应的寄存器,而配置寄存器则是根据不同的值进行配置过程中的相应操作。
5.1包处理器
上电后,识别到同步字后,包处理器开始等待有效的包头。接收到有效包头后,包处理器就会将包头后的数据配置到其所指定的寄存器中,直至包头中的字计数器(Word Count)减到零,才会去等待下一个有效的包头。数据通道的数据流在进入包处理器之前都会经过一个64bit 的缓冲单元,如下图所示。
包处理器本身则是以32bit 字为基本单位去识别所有的指令。所以,在比特流中配置指令的结束位置必须有至少2 个32bit 的无效字,如下表所示,从而将还位于缓冲区的的指令送至包处理器中
5.2配置寄存器
FPGA 配置的实现过程也是所有配置指令的执行过程。根据写入配置寄存器不同的值,就可以执行相应的操作。下表就给出了FPGA 一些关键的内部配置寄存器及其对应的地址。
学习例程
我给小白们准备了一份礼物,下面是我精心整理的n多verilog代码。帮助小白们由浅至深的“模仿”。在模仿的过程中能够进一步的巩固之前了解的语法知识。
这些Verilog例程基本涵盖了以后可能遇到的所有用法,参考这些代码,可以做出你想要的任何设计。
当你想要用Verilog编写一段代码实现某个功能时,如果你能够想到参考哪段代码能够实现你的设计,那么恭喜你,你已经入门了!!!
所有示例代码,点击链接获取。
01-锁存器、触发器、寄存器、移位寄存器等
【免费】VerilogHDL示例代码之01-锁存器、触发器、寄存器、移位寄存器等资源-CSDN文库
02-逻辑门、三态门、mux等
【免费】VerilogHDL示例代码之02-逻辑门、三态门、mux等资源-CSDN文库
03-各种计数器
【免费】VerilogHDL示例代码之03-各种计数器资源-CSDN文库
04-各类加法器
【免费】VerilogHDL示例代码之04-各类加法器资源-CSDN文库
05-乘法器
【免费】VerilogHDL示例代码之05-乘法器资源-CSDN文库
06-异步复位同步释放
【免费】VerilogHDL示例代码之06-异步复位同步释放资源-CSDN文库
07-分频
【免费】VerilogHDL示例代码之07-分频资源-CSDN文库
08-语法语句
【免费】VerilogHDL示例代码之08-语法语句资源-CSDN文库
09-串并转换
【免费】VerilogHDL示例代码之09-串并转换资源-CSDN文库
10-状态机设计
【免费】VerilogHDL示例代码之10-状态机设计资源-CSDN文库
11-编解码应用
【免费】VerilogHDL示例代码之11-编解码应用资源-CSDN文库
12-仿真语法举例
【免费】VerilogHDL示例代码之12-仿真语法举例资源-CSDN文库
13-进阶设计
【免费】VerilogHDL示例代码之13-进阶设计资源-CSDN文库
我将Verilog的语法进行了总结,写了13篇文章,让小白“快速见识猪如何跑”,每一篇讲解一类语法,结合正确的示例代码和错误的示例代码,有的章节对个别语法进行了归纳总结,帮助初学者加深理解。详情点击
小白如何快速入门Verilog?-CSDN博客
Verilog语法之〇:Verilog HDL简介/Verilog语法介绍-CSDN博客
Verilog语法之一:简单的Verilog HDL模块-CSDN博客
Verilog语法之二:常量-CSDN博客
Verilog语法之三:变量-CSDN博客
Verilog语法之四:运算符-CSDN博客
。。。。。。
更多课程,敬请期待
相关文章:

FPGA 配置原理
用户编程控制的FPGA 是通过加载比特位流配置内部的存储单元实现的。该存储单元就是所谓的配置单元,它必须在器件上电后进行配置,从而设置查找表(LUT)的属性、连线方式、IOB 电压标准和其它的用户设计。 1.配置帧 以Xilinx 公司的…...

企业级虚拟化数据库基础平台自动化部署项目
一、项目简介及准备工作 1.1.虚拟化平台简介 1.1.1.ESXi 8 是什么? 定义: ESXi 8 是 VMware 推出的最新版本 裸机虚拟化管理程序(Hypervisor),属于 VMware vSphere 产品线的核心组件。 核心功能: 在物理…...
关于elementui的时间组件与后端时间和oracle数据库时间的对应格式
前端: <el-date-pickerv-model"formInline.startTime"type"date"value-format"yyyy-MM-dd"placeholder"选择日期"> </el-date-picker> 后端: private String startTime; private String endTime…...

一周学会Flask3 Python Web开发-WTForms表单验证
锋哥原创的Flask3 Python Web开发 Flask3视频教程: 2025版 Flask3 Python web开发 视频教程(无废话版) 玩命更新中~_哔哩哔哩_bilibili 我们可以通过WTForms表单类属性的validators属性来实现表单验证。 常用的WTForms验证器 验证器说明DataRequired(messageNo…...

qt open3dBPA重建
qt open3dBPA重建 效果展示二、流程三、代码效果展示 二、流程 创建动作,链接到槽函数,并把动作放置菜单栏 参照前文 三、代码 1、槽函数实现 void on_actionBPA_triggered();//bpa重建 void MainWindow::...
Unity游戏开发中的网格简化与LOD技术(Mesh Simplification LOD)
在Unity游戏开发中,网格简化(Mesh Simplification)和LOD(Level of Detail)技术是优化渲染性能的关键手段,尤其在处理复杂场景和高精度模型时至关重要。以下是一套系统的实现方案与优化策略: 一、…...

基于YOLO11深度学习的运动品牌LOGO检测与识别系统【python源码+Pyqt5界面+数据集+训练代码】
《------往期经典推荐------》 一、AI应用软件开发实战专栏【链接】 项目名称项目名称1.【人脸识别与管理系统开发】2.【车牌识别与自动收费管理系统开发】3.【手势识别系统开发】4.【人脸面部活体检测系统开发】5.【图片风格快速迁移软件开发】6.【人脸表表情识别系统】7.【…...

纯html文件实现目录和文档关联
目录结构 效果图 代码 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><title>项目结题报告</title><style lang"scss">::-webkit-scrollbar {width: 6px;height: 6px;}::-webkit-scro…...
C# | 委托 | 事件 | 异步
委托(Delegate)和事件(Event) 在C#和C中,委托(Delegate)与事件(Event)以及函数对象(Function Object)是实现回调机制或传递行为的重要工具。虽然…...

数据结构——顺序表与链表
1. 基础介绍 1、线性结构: 如果一个数据元素序列满足: (1)除第一个和最后一个数据元素外,每个数据元素只有一个前驱数据元素和一个后继数据元素; (2)第一个数据元素没有前驱数据…...

【uniapp】图片添加canvas水印
目录 需求&背景实现地理位置添加水印 ios补充 需求&背景 需求:拍照后给图片添加水印, 水印包含经纬度、用户信息、公司logo等信息。 效果图: 方案:使用canvas添加水印。 具体实现:上传图片组件是项目里现有的ÿ…...
ElementUI 级联选择器el-cascader启用选择任意一级选项,选中后关闭下拉框
1、启用选择任意一级选项 在 el-cascader 标签上加上配置项: :props"{ checkStrictly: true }"例如: <el-cascaderref"selectedArrRef"v-model"selectedArr":options"optionsList":props"{ checkStri…...

【音视频】ffplay常用命令
一、 ffplay常用命令 -x width:强制显示宽度-y height:强制显示高度 强制以 640*360的宽高显示 ffplay 2.mp4 -x 640 -y 360 效果如下 -fs 全屏显示 ffplay -fs 2.mp4效果如下: -an 禁用音频(不播放声音)-vn 禁…...
5人3小时复刻Manus?开源OpenManus项目全解剖,我的DeepSeek股票报告这样诞生
大家好,我是大 F,深耕AI算法十余年,互联网大厂技术岗。分享AI算法干货、技术心得。 更多文章可关注《大模型理论和实战》、《DeepSeek技术解析和实战》,一起探索技术的无限可能! OpenManus是什么 1. 项目背景 OpenManus 是由 MetaGPT 核心团队仅用 3 小时复刻而成的开源…...
【Python运维】用Python自动化AWS资源管理:利用boto3实现高效管理S3桶和EC2实例
《Python OpenCV从菜鸟到高手》带你进入图像处理与计算机视觉的大门! 解锁Python编程的无限可能:《奇妙的Python》带你漫游代码世界 随着云计算的普及,AWS(Amazon Web Services)已经成为许多企业和开发者首选的云平台。为了提高工作效率,自动化管理AWS资源成为了一个热…...
django各种mixin用法
在 Django 中,Mixin 是一种用于扩展类功能的设计模式。通过 Mixin,可以在不修改原有类的情况下,为其添加新的方法或属性。Django 中的 Mixin 广泛应用于视图(View)、表单(Form)、模型(Model)等组件中。以下是 Django 中常见 Mixin 的用法和示例: 一、视图(View)中的…...

Java 大视界 -- Java 大数据在智能教育考试评估与学情分析中的应用(112)
💖亲爱的朋友们,热烈欢迎来到 青云交的博客!能与诸位在此相逢,我倍感荣幸。在这飞速更迭的时代,我们都渴望一方心灵净土,而 我的博客 正是这样温暖的所在。这里为你呈上趣味与实用兼具的知识,也…...

Manus AI : Agent 元年开启.pdf
Manus AI : Agent 元年开启.pdf 是由华泰证券出品的一份调研报告,共计23页。报告详细介绍了Manus AI 及 Agent,主要包括Manus AI 的功能、优势、技术能力,Agent 的概念、架构、应用场景,以及 AI Agent 的类型和相关案例࿰…...

【计算机网络】计算机网络的性能指标——时延、时延带宽积、往返时延、信道利用率
计算机网络的性能指标 导读 大家好,很高兴又和大家见面啦!!! 在上一篇内容中我们介绍了计算机网络的三个性能指标——速率、带宽和吞吐量。用大白话来说就是:网速、最高网速和实时网速。 相信大家看到这三个词应该就…...
FreeRTOS第15篇:FreeRTOS链表实现细节03_List_t与ListItem_t的奥秘
文/指尖动听知识库-星愿 文章为付费内容,商业行为,禁止私自转载及抄袭,违者必究!!! 文章专栏:深入FreeRTOS内核:从原理到实战的嵌入式开发指南 1 FreeRTOS列表的核心数据结构 FreeRTOS的列表实现由两个关键结构体组成:List_t(列表)和ListItem_t(列表项)。它们共同…...

XML Group端口详解
在XML数据映射过程中,经常需要对数据进行分组聚合操作。例如,当处理包含多个物料明细的XML文件时,可能需要将相同物料号的明细归为一组,或对相同物料号的数量进行求和计算。传统实现方式通常需要编写脚本代码,增加了开…...

springboot 百货中心供应链管理系统小程序
一、前言 随着我国经济迅速发展,人们对手机的需求越来越大,各种手机软件也都在被广泛应用,但是对于手机进行数据信息管理,对于手机的各种软件也是备受用户的喜爱,百货中心供应链管理系统被用户普遍使用,为方…...

Qt/C++开发监控GB28181系统/取流协议/同时支持udp/tcp被动/tcp主动
一、前言说明 在2011版本的gb28181协议中,拉取视频流只要求udp方式,从2016开始要求新增支持tcp被动和tcp主动两种方式,udp理论上会丢包的,所以实际使用过程可能会出现画面花屏的情况,而tcp肯定不丢包,起码…...

解决Ubuntu22.04 VMware失败的问题 ubuntu入门之二十八
现象1 打开VMware失败 Ubuntu升级之后打开VMware上报需要安装vmmon和vmnet,点击确认后如下提示 最终上报fail 解决方法 内核升级导致,需要在新内核下重新下载编译安装 查看版本 $ vmware -v VMware Workstation 17.5.1 build-23298084$ lsb_release…...
【论文笔记】若干矿井粉尘检测算法概述
总的来说,传统机器学习、传统机器学习与深度学习的结合、LSTM等算法所需要的数据集来源于矿井传感器测量的粉尘浓度,通过建立回归模型来预测未来矿井的粉尘浓度。传统机器学习算法性能易受数据中极端值的影响。YOLO等计算机视觉算法所需要的数据集来源于…...

【Java_EE】Spring MVC
目录 Spring Web MVC 编辑注解 RestController RequestMapping RequestParam RequestParam RequestBody PathVariable RequestPart 参数传递 注意事项 编辑参数重命名 RequestParam 编辑编辑传递集合 RequestParam 传递JSON数据 编辑RequestBody …...

微软PowerBI考试 PL300-在 Power BI 中清理、转换和加载数据
微软PowerBI考试 PL300-在 Power BI 中清理、转换和加载数据 Power Query 具有大量专门帮助您清理和准备数据以供分析的功能。 您将了解如何简化复杂模型、更改数据类型、重命名对象和透视数据。 您还将了解如何分析列,以便知晓哪些列包含有价值的数据,…...

NXP S32K146 T-Box 携手 SD NAND(贴片式TF卡):驱动汽车智能革新的黄金组合
在汽车智能化的汹涌浪潮中,车辆不再仅仅是传统的交通工具,而是逐步演变为高度智能的移动终端。这一转变的核心支撑,来自于车内关键技术的深度融合与协同创新。车载远程信息处理盒(T-Box)方案:NXP S32K146 与…...

Golang——7、包与接口详解
包与接口详解 1、Golang包详解1.1、Golang中包的定义和介绍1.2、Golang包管理工具go mod1.3、Golang中自定义包1.4、Golang中使用第三包1.5、init函数 2、接口详解2.1、接口的定义2.2、空接口2.3、类型断言2.4、结构体值接收者和指针接收者实现接口的区别2.5、一个结构体实现多…...
Kubernetes 网络模型深度解析:Pod IP 与 Service 的负载均衡机制,Service到底是什么?
Pod IP 的本质与特性 Pod IP 的定位 纯端点地址:Pod IP 是分配给 Pod 网络命名空间的真实 IP 地址(如 10.244.1.2)无特殊名称:在 Kubernetes 中,它通常被称为 “Pod IP” 或 “容器 IP”生命周期:与 Pod …...