TCL脚本存取二进制文件应用举例

来源:本站
导读:目前正在解读《TCL脚本存取二进制文件应用举例》的相关信息,《TCL脚本存取二进制文件应用举例》是由用户自行发布的知识型内容!下面请观看由(电工技术网 - www.9ddd.net)用户发布《TCL脚本存取二进制文件应用举例》的详细说明。
简介:之前介绍了本人研究如何使用TCL脚本来存取二进制文件,这是因为我们在具体项目中实际使用得到,今天就给大家介绍下如何使用。

先来简单介绍下我们项目的基本要求吧,如图1所示,项目中有22个FPGA,每个FPGA存有3种表格,而每种表格都有6个block,每一个block的表格在实际产品使用的时候都有可能需要更新,这时候就需要生成表格,然后写入到FPGA,具体如何写入FPGA不是本文的内容,这里主要谈谈如何生成表格文件。

TCL脚本存取二进制文件应用举例

图1:二进制文件格式定义

图1中头和尾的内容就是单个32-bit数据,由于是预先定义好的,所以可以在代码中用常数概念,也即使用TCL脚本插入常数即可。而中间的LUT由于数据庞大,所以必须从另外的文件里读进来,由于每一次需要更新的LUT个数不一样,所以每次更新都需要单独生成。这个工作并不是fpga硬件工程师的任务,但是在最终产品交付之前,我又必须测试我的FPGA逻辑,所以必须自己产生文件进行测试。为了不打扰软件工程师,我自己使用TCL脚本来按照图1格式产生测试文件。

最终使用TCL脚本生成的工具如图2所示。

TCL脚本存取二进制文件应用举例

图2:脚本生成的产生LUT更新文件的工具

以下是插入Header的代码片段:;##插入头proc Ins_Header {} {     set lutfile [open "lut_file.dat" a+]     set header_file [open "header.txt" r]     fconfigure $lutfile -translation binary     gets $header_file line     set HeadSel [.par1 get]     set b [expr $line +$HeadSel]     set a [binary format "i1" $b]     puts -nonewline $lutfile $a      close $lutfile     close $header_file}

上述代码是插入头的参考代码,我们看到在二进制文件中每次插入LUT之前先插入头,而头的具体内容则由菜单命令控制,不同的菜单命令针对不同的FPGA,一共22个FPGA.

图3显示的是一个已经生成的查找表的二进制文件,注意第一个32-bit数据为header,二进制数据格式是little-endian。

TCL脚本存取二进制文件应用举例

图3:二进制文件

提醒:《TCL脚本存取二进制文件应用举例》最后刷新时间 2024-03-14 00:57:28,本站为公益型个人网站,仅供个人学习和记录信息,不进行任何商业性质的盈利。如果内容、图片资源失效或内容涉及侵权,请反馈至,我们会及时处理。本站只保证内容的可读性,无法保证真实性,《TCL脚本存取二进制文件应用举例》该内容的真实性请自行鉴别。