现场可编程逻辑门阵列器件的比特流图像化方法与流程

文档序号:18889494发布日期:2019-10-15 21:31阅读:535来源:国知局
本发明涉及现场可编程逻辑门阵列(fpga,fieldprogrammablegatearray)比特流的图像化领域,具体为提出一种结合fpga资源二维结构的比特流编程逻辑可配置资源部分的图像化及自动标注技术。
背景技术
::现场可编程逻辑门阵列在过去二十年间成为使用最为广泛的高级数字系统之一。其中很大的原因在于fpga产品的灵活性,主要在于fpga可使用比特流来对内部逻辑进行重配置这一特性。fpga比特流通过配置fpga内部可配置资源,包括可配置逻辑模块(configurablelogicblock,clb),输入输出模块(input/outputblock,iob),块存储器(bram)等,对fpga上知识产权核(intellectualproperty,ip)进行更新或是添加新ip核,从而实现快捷的更新换代。从fpga比特流获取信息一般分为三步:(1)获取比特流,(2)解密比特流,(3)建立fpga网表与比特流文件的映射关系。在步骤三中,最常用的是比特流的反向工程技术。在比特流图像化过程中,存在两点问题。一是图片尺寸过大;二是图像与器件的映射关系不足,即无法表现出与fpga器件结构的相关性。问题一产生的原因,一方面是fpga配置的比特流过大的问题,同一系列型号的fpga产生的比特流大小是固定的,如xilinxzynq-7000702fpga所产生的比特流固定大小为3.85m字节(即3,951k字节)。这些数据全部用于无损生成图像会导致图片像素尺寸达到2000×2000数量级以上,会导致机器学习训练时运行速度极慢;另一方面,根据fpga用户手册,实际在比特流中用于配置可配置逻辑块(clb)的内容只占到总数据量的60%,而其中实际fpga实现算法所利用到的资源更是少之又少,所以在比特流中存在大量与资源配置无关的数据,导致了图片尺寸过大。至于问题二,一方面是由于上述大量无关数据的影响产生,另一方面则是由于缺乏一个合理的,充分结合比特流结构以及fpga物理资源分布的图像化算法,无法将比特流转化为一幅直观清晰的图像。然而事实上,fpga资源本身就具有二维物理分布,若能在图像化过程中与器件的物理位置信息有机结合,将能大大改善比特流图像化的映射关系。技术实现要素:本发明要解决的技术问题是提供一种现场可编程逻辑门阵列器件的比特流图像化方法。为了解决上述技术问题,本发明提供一种现场可编程逻辑门阵列器件的比特流图像化方法,提出一种结合fpga逻辑资源二维物理分布,将比特流中用于描述可配置资源的信息转化为可读性强的二维图像的方法,并实现自动标注。现场可编程逻辑门阵列(fpga)器件作为最为广泛的数字系统之一,主要在于其内部资源可通过比特流重配置这一特性。本发明对xilinx公司zynq系列的型号fpga的比特流文件结构进行了分析,通过分析文件头和文件尾的标志符,提取出用于描述fpga可编程点和连接关系的fdri部分的内容。然后将配置信息和fpga真实的布局布线图进行对比分析,找到了硬件资源使用情况与比特流文件中二进制码值的映射关系。按照二进制码值的配置节点在实际fpga上的位置,提出了一种将比特流文件转化为反映可配置节点布局关系的可视化图像的方法,同时实现图像的标签的自动标注,产生用于机器学习的训练和测试的图片集。本发明提供的方案为:一种现场可编程逻辑门阵列器件的比特流图像化方法,包括图像化与自动标注:一、图像化:1.1)、对无关信息的去除:将数据锁定在fpga可编程逻辑的逻辑部分中的clb部分,其余信息在比特流图像化过程中舍去不予考虑;1.2)、采用对单个clb进行图像恢复,并按照device图中的二维阵列排列行数对这些单个clb恢复图进行拼接,形成整幅比特流恢复图;二、自动标注:指定实现过程所利用的资源区域范围以及比特流输出文件名。作为本发明的现场可编程逻辑门阵列器件的比特流图像化方法的改进:所述1.1)为:通过读取比特流文件的文件头(head-of-file)末尾的两个字确认fdri(framedataregister,inputregister)部分的长度;去除文件头和文件尾(end-of-flie),提取fdri部分的内容;fdri数据以帧形式作为最小配置单元存储,帧长度视fpga型号而定(当fpga型号为xilinxzynq-7000zc702时,帧长度为10008;当fpga信号为xilinxzynq-7000zc703时,帧长度为14796;当fpga型号为xilinxzynqultrascale+zcu102时,帧长度为71260);通过在综合实现时对使用的clb资源区域的左下角坐标(xmin,ymin)和右上角坐标(xmax,ymax)进行约束,比较不同约束条件下实现的比特流之间的差异,得到比特流配置原则,即clb在fdri中的具体位置;根据位置信息,提取出fdri中配置clb部分的数据,作为最终图像化的数据。所述1.2)为:对于得到的配置clb的数据,将其分割为多个数据块,每个数据块包含连续的一定数量的帧,帧长度视fpga型号而定;对于zc702和zc703,取一个数据块中所有帧相同位置的两个字构成一个clb图像块;对于zcu102,取相同位置的1.5个字构成一个clb图像块;因此一个数据块可以得到多个图像块;将所有的数据块按照上述方法构成clb图像块;将这些图像块按照其在device图中的位置进行拼接,得到完整的比特流恢复图像;通过上述方法最终恢复出的图像与device图有高度的映射关系。所述步骤二的自动标注为:在生成比特流文件过程中,使用tcl脚本语言对综合实现区域的位置及其大小进行约束,并将输出的比特流文件命名为function_xmin_ymin_xmax_ymax.bit格式,表明其包含的功能模块及其位置信息。注:在使用本发明提出的特流图像化方法的过程中,读取文件名生成标签文件,文件内容包含功能模块及其位置信息。作为本发明的现场可编程逻辑门阵列器件的比特流图像化方法的进一步改进:所述步骤二的自动标注为包括以下步骤:2.1)、新建工程,设计实现功能为function的电路;2.2)、进行功能仿真、综合;2.3)、约束物理实现所使用的资源区域(包括位置和大小,由坐标(xmin,ymin)和(xmax,ymax)决定),进行物理实现;2.4)、生成导出比特流,将比特流文件命名为function_xmin_ymin_xmax_ymax.bit格式;2.5)、读取文件名格式为function_xmin_ymin_xmax_ymax.bit的比特流文件;2.6)、根据文件名信息,生成所需的标签文件,其内容包括模块类别及其位置信息;2.7)、使用步骤一所述的图像化方法,对比特流进行图像化,得到恢复图;2.8)、按从0开始的顺序编号,将图像与标签文件命名为相同的编号;2.9)、根据计划生成的比特流图像数目,判断已生成的图像数目是否达到要求;如果判断结果为是,结束自动标注;如果判断结果为否,进入步骤2.1)。作为本发明的现场可编程逻辑门阵列器件的比特流图像化方法的进一步改进:步骤一的图像化方法具体包括以下步骤:1)、开始图像化;2)、按字节打开比特流文件并除去文件头、尾;得fdri部分;3)、读取fdri下一帧;4)、依据读取是否成功的判断规则,判断fdri是否遍历完成;如果判断结果为是,进入步骤5);如果判断结果为否,进入步骤6);5)、将所有的clb图像块按其在device图中的位置拼接,得到一幅完整的恢复图;结束图像化;6)、依据比特流配置原则作为判断规则,判断当前帧是否为配置clb的帧的起始帧;当判断结果为是,进入步骤7);当判断结果为否,进入步骤3);7)、读取并保存包括该帧在内的连续的多帧数据(对于zc702和zc703为36帧;对于zcu102,slice_l为29帧,slice_m为79帧);得到clb数据块;8)、读取clb数据块中所有帧的下一个字;9)、依据读取是否成功的判断规则,判断clb数据块是否遍历完成;如果判断结果为是,进入步骤3);如果判断结果为否,进入步骤10);10)、依据比特流文件结构分析得到的结果作为判断规则,判断这些字是否为“空闲字”(对于zc702和zc703,第51个字为空闲字;对于zcu102,第46、47、48个字为空闲字);当判断结果为是,进入步骤8);当判断结果为否,进入步骤11);11)、将这些字按照通道顺序依次填充clb图像块;进入步骤8)。本发明主要涉及图像化与自动标注两方面。自动标注主要作用于获取比特流过程。当批量生成比特流工程时,不可避免地需要使用tcl脚本语言来实现脚本批量操作。而在使用tcl对工程进行操作时,可以指定实现过程所利用的资源区域范围以及比特流输出文件名,因此,在指定实现区域后,可将比特流功能信息与区域位置信息存储下来并以比特流文件名的格式(function_xmin_ymin_xmax_ymax.bit)来输出。在获得大量比特流后对比特流进行图像化操作,并同时读取比特流文件名内容,生成标签文件,以及实现自动标注功能。在图像化过程中,针对比特流图像化工作中直接将比特流按字节转化为灰度图像所具备的两大缺点:(1)图片尺寸过大;(2)映射关系不足。因此首先需要明确比特流中的有效数据。fpga可编程逻辑可分为逻辑部分,特殊资源(bram,dsp48e1),通用输入输出(iob),通信接口,以及其它可编程逻辑扩展接口等五部分。其中逻辑部分由可配置逻辑块(clb)和用于接口的输入输出块组成,在xilinxzynq-7000zc702和zc703fpga器件中,每个clb由两个slice组成,每个slice包含4个查找表(lookuptable,lut)和8个触发器(flip-flop,ff),而在zcu102fpga器件中则每个clb由一个slice组成,且slice有slice_l与slice_m两种类型,每种类型包含8个lut以及16个ff用以实现组合电路和时序逻辑电路,并体现fpga内部逻辑连接关系。由于本发明关注的是比特流中实际用于实现组合与时序逻辑电路,以及逻辑连接部分,因此最终确定将数据锁定在逻辑部分中的clb部分,意味着其余部分与clb的配置,即fpga所实现算法的逻辑连接无关,因此在比特流图像化过程中舍去不予考虑。为了解决图像化尺寸过大的问题,根据对比特流内部结构的分析,可以去除与配置信息无关的文件头(head-of-file)和文件尾(end-of-flie),仅剩fdri(framedataregister,inputregister)数据部分。fdri部分的数据以帧形式作为最小配置单元存储,帧长度视fpga型号而定,如zc702和zc703以101字(32比特)为一帧,而zc102则以93字(32比特)为一帧。这些帧对通用输入输出、特殊资源和逻辑部分等进行配置。提取出其中配置逻辑部分的clb的数据。通常fpga中用于配置clb的帧仅占总大小的60%左右。这一步可以减小需要图像化的数据数量。通常的图像化操作即将所得数据顺序排列获得图像,但这一操作就会产生图像过大以及映射关系不足问题。为获得更好的映射关系,结合vivado工具实现设计中device图格式,fpga中的clb以二维阵列的形式分布,如xilinxzynq-7000zc702中采用150×57大小阵列分布(未填充满)。因此,为提高最终图像与fpga二维分布的映射关系,本发明采用对单个clb进行图像恢复,并按照device图中的二维阵列排列行数对这些单个clb恢复图进行拼接,形成整幅比特流恢复图。为了得到与device具有高映射关系的图像,将所得到的配置clb的数据分割为描述每个clb的部分,通过分析fpga比特流结构,fpga器件中每列clb会采用比特流中连续一定数量的帧来描述(如zc702与zc703中每36帧描述一列clb;zcu102中每29帧描述一列slice_l,每79帧描述一列slice_m),而在这段连续的帧中,zc702与zc703中每帧会提供两个字来描述一个clb,zcu102则每帧提供1.5个字(存在大小端问题),通过该规律可提取出用于描述每个clb的数据,最终再按照顺序排列的方式产生单个clb对应图像,并根据device图中的二维阵列排列行数对这些单个clb恢复图进行拼接,形成整幅比特流恢复图像。通过上述方法最终恢复出的图像与device图有高度的映射关系。本发明提供了一种全新的结合fpga逻辑资源二维物理分布,将比特流中用于描述可配置资源的信息转化为映射关系较强的二维图像的算法,并实现模块功能的自动标注。本发明最终在xilinxzynq-7000soc系列zc702和zc703,以及ultrascale+mpsoczcu102fpga成功实施。本发明具有如下技术优势:1、依靠去除比特流文件头、文件尾,去除fdri中非clb的数据,从而解决了目前现有技术中存在的图像尺寸过大的问题;2、依靠对clb数据块进行图像化,然后对clb图像块进行拼接,从而解决了目前现有技术中存在的图像与器件的映射关系不足的问题。附图说明下面结合附图对本发明的具体实施方式作进一步详细说明。图1为实施例1文件头末尾的两个字;图2为实施例1中zc702比特流文件结构;图3为实施例1xilinxzynq-7000zc702评估平台device示意图;图4为实施例1中zc702比特流配置原则;图5为实施例1中图像块对应关系;图6为实施例1中图像化流程图。具体实施方式下面结合具体实施例对本发明进行进一步描述,但本发明的保护范围并不仅限于此。本发明最终可将已知比特流中用于配置clb的信息无损转化为图像,并与原fpga二维结构具有位置对应关系,同时还可输出对应位置信息与功能信息进行自动标注,从而可在机器学习中作为训练集和测试集进行相关研究。以下实施例1即为应用本发明对xilinxzynq-7000zc702fpga器件上用于hash算法的比特流进行目标检测以及识别工作。实施例1、在xilinxzynq-7000zc702评估平台下实现比特流反向工程图像化目标识别工作:如图1所示为比特流文件头末尾的两个字0x30004000、0x500f6c78。前一个字表示向地址为00010的寄存器写入数据,即向fdri寄存器写入数据。后一个字表示写入数据的长度为0x0f6c78(十进制表示:1010808)个字。由此可以提取出fdri部分的数据(如图1中虚线框内容)。如图2所示为比特流文件结构,其fdri部分包括了6个时钟域的内容,图2中标注出了每个时钟域的起始帧,以及时钟域1中的各clb列的起始帧,每个clb列包括了50个clb。fdri完成一列clb配置后再对下一列clb进行配置。如图3为fpgadevice图,包括了ps和pl部分。pl部分中给出了6个时钟域的分布情况。每个时钟域包含的clb行、列也已在图3中给出。6个时钟域共计由150×57个clb块。每个clb块的内容都由fdri中的数据进行配置。如图4为完整的zc702的比特流配置原则,其中给出了每个时钟域、每个clb列的配置信息在fdri部分的起始帧,每个clb列由36帧完成配置。不在这个范围内的帧对非clb部分进行配置,在图像化时需要舍弃。如图5所示,xilinxzynq-7000zc702中一个clb共用36×2个字配置,而一个clb又由两个slice组成,即每个slice用了36字=36×4字节=144字节,将其分为rgb三个通道,所以每个通道的slice只包含144/3=48个字节,为使最终图像尺寸长宽尽量相近,图像像素尺寸选择为8×6×3,每个像素点值0~255恰好对应一个8位字节,将用于描述该clb模块的字节按阵列顺序拼接。最终将所有的6×8×3图像块拼接起来即为恢复图,zc702对应的整幅图像的像素大小为(150×6)×(57×8×2)×3,即900×912×3。如图6所示为完整的比特流图像化流程,对于一个比特流图像,首先去除其文件头和文件尾得到fdri部分。然后依次寻找fdri中的clb头帧,读取包括头帧在内的多帧数据,得到一个clb数据块,然后将数据块按顺序填充得到图像块,最后将所有图像块拼接得到完整的恢复图。使用该方法图像化得到的图像大小约为2.34mbyte,为比特流文件(3.85mbyte)大小的60%。解决了比特流文件直接图像化尺寸过大的问题。由于本实例的目的是通过比特流图像化来识别比特流功能,所以实际所需要的训练集是多类不同功能的比特流转化而成的图片,并以其功能和位置信息作为标签。在选取十类不同hash算法作为功能标签的工程的前提下,训练集的制作总体上可分为两步,第一步通过tcl脚本语言,批量生成多类同一功能的大量不同比特流,第二步则使用python语言将得到的比特流文件进行图像化处理,并转化为符合机器学习输入格式(图片+标签)的训练集。为了生成多类功能相同但又内容形式不同的比特流,本发明生成每类采取的办法是对一个工程的实现区域进行约束限制,即每一个工程生成不同的比特流集合作为一类,更换工程反复操作即生成多类,其操作步骤如下:1)、新建工程,设计实现一类hash算法,命名为function;2)、进行功能仿真、综合;3)、约束物理实现所使用的资源区域(包括位置和大小,由坐标(xmin,ymin)和(xmax,ymax)决定),进行物理实现;4)、生成导出比特流,将比特流文件命名为function_xmin_ymin_xmax_ymax.bit格式;5)、根据计划生成的该类比特流数量,判断已生成比特流数量是否达到要求;如果判断结果为否,进入步骤3);如果判断结果为是,进入步骤6);6)、根据计划生成的hash算法类别,判断已生成的类别是否达到要求;如果判断结果为否,进入步骤1);如果判断结果为是,进入步骤7);7)、结束比特流生成。由于本发明要生成大量比特流,图形化界面操作效率低,因此采用tcl脚本语言进行上述步骤,来自动批量生成。为了对大量的比特流文件进行图像化处理,并从比特流文件提取模块类别和位置信息生成标签文件,采用本发明提到的自动标注方法,对大量的比特流进行图像化处理。主要步骤包括:1)、读取文件名格式为function_xmin_ymin_xmax_ymax.bit的比特流文件;2)、根据文件名信息,生成所需的标签文件,其内容包括模块类别及其位置信息;3)、使用本发明提出的图像化方法(如图5所示),对比特流进行图像化,得到恢复图;4)、按从0开始的顺序编号,将图像与标签文件命名为相同的编号;5)、根据生成的比特流文件数目,判断是否对所有比特流进行了处理;如果判断结果为是,结束自动标注;如果判断结果为否,进入步骤1)。该方法可以在不需要人为操作的情况下快速、批量生成大量的比特流图像及其对应的标签文件,作为深度神经网络模型的训练集和测试集。最后,还需要值得注意的是,以上列举的仅仅是本发明的具体实施例。显然本发明不仅限于以上实施例。本领域的普通技术人员能从本发明公开的内容直接导出或者联想到的所有变形,均认为是本发明的保护范围。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1