首页 > 其他分享 >FPGA bit转bin文件

FPGA bit转bin文件

时间:2024-07-09 15:57:06浏览次数:21  
标签:bin 文件 FPGA 配置 比特流 bit

首先科普一下

什么是bitstream文件

FPGA比特流(bitstream)是一种用于配置可编程逻辑器件的数据格式,特别是现场可编程门阵列(FPGA)。比特流包含了硬件逻辑电路、路由信息以及芯片上寄存器和存储器(如查找表LUT)的初始值。通常认为比特流具有厂商特定的格式,因此很难反向工程或理解其内部细节。然而,这种观点并不完全正确。

比特流文件不仅仅是一串配置FPGA的位数据,它还包含了一些人类可读的信息字段,用来描述这些位数据。实际上,比特流有一种类似汇编语言的指令集,用以描述FPGA的配置过程。从高层次上看,比特流文件类似于一个可执行程序。与ELF格式的可执行文件类似,比特流也有自己的文件格式来描述内容,而这种格式是公开的,因此可以分析比特流文件的内容,理解配置FPGA的具体步骤。

然而,比特流中未公开的部分在于位映射——即配置位的具体格式,尤其是比特流中的位如何映射到芯片上的具体LUT、连线等资源。可以将此比作,虽然汇编指令能够让你理解某段代码是在进行寄存器上的加法操作,但指令本身并没有明确指出是哪些寄存器参与了运算。

对于大多数FPGA用户而言,了解比特流的内部结构并非必要。只有当你要进行比特流回读、抢占调度或是类似的高级应用时,才需要深入理解比特流的工作原理和格式。例如,在进行比特流回读时,你可能需要验证配置是否正确;在抢占调度中,你可能需要在运行时动态地改变FPGA的部分配置而不影响其余部分的正常工作。

配置文件的格式

UG580 ,可以看到BIN文件相对BIT文件就是少了文件头信息。

参考

https://support.xilinx.com/s/article/14468?language=en_US

http://lastweek.io/fpga/bitstream/

有些开源工程在详细的研究如何去解密bit文件,分析FPGA电路结构,对我们理解bit文件的结构很有价值

bitstream文件结构

如下图所示,0x00-0x80地址区间为文件描述信息,描述该文件对应的器件型号、生成时间等等。

bitstream 可以直接烧录到FLASH吗?

答案是可以,将bit文件重命名为bin文件即可。但是前面不是说bit相对于bin 没有文件头信息吗?也就是说常规烧录到FLASH的bin文件相对于bit要小一些,按道理应该不可以才对,但实际上可以的,为什么呢?

FPGA配置过程SYNC

看一下FPGA的配置过程,尤其是sync 这个步骤。

必须向配置逻辑发送一个特殊的32位同步字(0xAA995566)。这个同步字通知设备即将接收配置数据,并将配置数据与内部配置逻辑对齐。除了总线宽度自动检测序列之外,在同步之前出现在配置输入引脚上的任何数据都将被忽略。 (所以这里即使烧录的文件多了文件头信息也会被忽略掉,这样即使你烧录的是bit文件也是可以的)

在FPGA配置过程中,这个32位的同步字起到关键作用,它标志着配置数据流的开始。配置逻辑在接收到这个特定的同步字后,会准备接收并处理随后到来的比特流数据。这是因为在配置过程中,FPGA的配置逻辑需要知道何时数据流真正开始,以正确地捕获和解释配置信息。如果没有正确的同步,FPGA可能会错误地解析配置数据,导致配置失败或者不正确的功能实现。

总线宽度自动检测序列是一个例外,因为它发生在同步字之前,用于确定配置接口的总线宽度,从而确保后续的数据传输能够正确进行。一旦同步字被识别,FPGA就会根据已知的总线宽度开始接收和解码配置比特流。

https://docs.amd.com/v/u/en-US/ug570-ultrascale-configuration

推荐个小工具 https://hexed.it/ ,如果需要查看bit或者bin的二进制文件,可以在线查看,比较方便

标签:bin,文件,FPGA,配置,比特流,bit
From: https://www.cnblogs.com/xingce/p/18292136

相关文章

  • Go项目实战—RabbitMq篇
    技术栈gingormrabbitmq数据库表结构:CREATETABLE`article`(`id`intNOTNULLAUTO_INCREMENT,`article_name`varchar(64)COLLATEutf8mb4_unicode_ciNOTNULL,`content`varchar(255)COLLATEutf8mb4_unicode_ciNOTNULL,`user_id`intNOTNULL,`......
  • Java版Flink使用指南——定制RabbitMQ数据源的序列化器
    大纲新建工程新增依赖数据对象序列化器接入数据源测试修改Slot个数打包、提交、运行工程代码在《Java版Flink使用指南——从RabbitMQ中队列中接入消息流》一文中,我们从RabbitMQ队列中读取了字符串型数据。如果我们希望读取的数据被自动化转换为一个对象,则需要定制序......
  • 使用Python下载Bing每日一图并设置为壁纸
    简介Bing搜索引擎每天都会展示一张精美的图片,这些图片不仅美丽,而且常常包含有趣的信息。想象一下,每天打开电脑,都能看到这样的美景,是不是很棒呢?本文将介绍如何使用Python脚本自动化下载Bing每日一图,并将其设置为我们的桌面壁纸。环境准备在开始之前,请确保你的计算机上安装了Pyth......
  • 2U上架式信创网安设备:搭载国产CPU+FPGA高性能信创设备
        在中国信息技术应用创新(简称“信创”)背景下,由本土企业研发和生产的网络安全设备。旨在满足国家安全自主可控的战略需求,减少对外国技术和产品的依赖,提升网络基础设施的信息安全水平。为了响应国家的发展战略,近期为客户定制了一批高性能的2U网安设备,搭载国产CPU+FPGA......
  • FPGA以太网学习-RGMII与GMII
    以太网口都叫RJ45接口,从功能角度说,网口只是信号连接,本身没有通信能力。PHY(物理层),这边需要一个芯片,将并行的以太网数据到符合以太网物理层链路数据传输格式的电平信号转换。上图PHY右边是经过编码后的串行数据信号,左侧是提供多种并行信号。网络变压器连接串行信号和网口。MII接......
  • 基于FPGA的A律压缩解压缩verilog实现,包含testbench
    1.算法仿真效果VIVADO2019.2仿真结果如下(完整代码运行后无水印):   RTL图如下所示:   2.算法涉及理论知识概要       A律压缩是一种广泛应用于语音编码的非均匀量化技术,尤其在G.711标准中被欧洲和中国等国家采纳。该技术的核心目的是在有限的带宽下高效传输......
  • LVGL一键打包图片工具,全部图片打包成一个bin文件,支持nor flash XIP模式下直接访问数据
    最近做工程项目,需要用到LVGL,但是搜了很长时间没有看到合适的图片打包工具,大多都是生成数组或者单个的bin文件,这样烧录到norflash很麻烦后来看到一篇博客,博主的想法与我类似,不过他后面部分就做的麻烦了,所以,我直接从头写了一个工具,他的博客地址:https://www.wpgdadatong.com.cn/blo......
  • MySQL 主从报错“Got fatal error 1236 from master when reading data from binary l
    1、背景一主一从报错,测试环境从库执行showslavestatus\Gmysql>showslavestatus\G***************************1.row***************************Slave_IO_State:Master_Host:10.0.0.51Master_User:repl......
  • makefile for循环 /bin/sh: -c: line 3: syntax error: unexpected end of file
    1.错误makefile示例,有syntaxerror:unexpectedendoffilefo=onethreefivetest:forjin$(fo);do\echo$$j;\end在写for循环的时候,注意格式for之前用tab键do前后有空格在命令行中输入maketest运行结果如下所示2.修改了makefile,没有error......
  • 题解:CF1256D Binary String Minimizing
    贪心。数据范围\(n\le10^{6}\),因此我们要用时间复杂度为\(\mathcal{O}\left(n\right)\)的算法来解决这个问题。思路从左至右扫一遍序列,如果遇到\(10\),则要将这个\(0\)交换到前面的位置。由于是字典序最小,\(0\)应该尽量在最高位。现在需要知道这个\(0\)被交换到哪......