CN101324861A - Rom结构及写入intel hex文件的方法 - Google Patents
Rom结构及写入intel hex文件的方法 Download PDFInfo
- Publication number
- CN101324861A CN101324861A CNA2007100419443A CN200710041944A CN101324861A CN 101324861 A CN101324861 A CN 101324861A CN A2007100419443 A CNA2007100419443 A CN A2007100419443A CN 200710041944 A CN200710041944 A CN 200710041944A CN 101324861 A CN101324861 A CN 101324861A
- Authority
- CN
- China
- Prior art keywords
- address
- ram
- rom
- data
- group
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Landscapes
- Read Only Memory (AREA)
Abstract
本发明公开了一种ROM结构及写入INTEL HEX文件的方法。所述ROM由n组RAM组成,每组包括8个双通道的RAM,每个双通道的RAM包括A、B两个通道,对每组中各个RAM的A、B两个通道的地址信号addrA、addrB分别设定同一地址;根据输入到ROM的地址信号确定输入给每组RAM的地址信号addrA和addrB;每组RAM均输出2个字节的数据;n组RAM输出2*n个字节的数据。利用该ROM结构写入INTEL HEX文件的方法是,对INTELHEX文件进行编码并进行数据填充;进行数据映射。本发明能够在一个地址信号输入后,输出多个连续的数据。适用于精简指令集计算机体系结构单片机。
Description
技术领域
本发明涉及一种半导体存储器,特别是涉及一种适合RISC(ReducedInstruction Set Computer精简指令集计算机)体系结构单片机使用的ROM(只读储存器)结构。本发明还涉及将INTEL HEX(Intel公司提出的按地址排列的数据信息)文件写入上述ROM结构的方法。
背景技术
ROM的特点是用户在使用时只能读出其中的信息,不能修改和写入新的信息,存储单元中的信息由制造厂在生产时一次写入或由用户通过编程器写入,ROM中的信息在关机后不会消失。
单片机的ROM一般用于存放控制程序,故又称为程序存储器。单片机系统在初始化后,可以执行ROM中的控制程序,从而实现对被控系统的控制。
单片机的ROM根据输入的地址而输出这个地址上的数据。现有的ROM工作时,一个地址信号输入后只输出该地址上的数据。这样不能在一个时钟周期内给单片机主机提供足够的内存数据,降低了RISC体系单片机进行流水线操作的工作效率。
发明内容
本发明要解决的技术问题是提供一种用于RISC体系结构单片机的ROM结构,能够在一个地址信号输入后,输出多个连续的数据;为此本发明还要提供一种利用该ROM写入INTEL HEX文件的方法。
为解决上述技术问题,本发明的用于RISC体系结构单片机的ROM结构,由n组RAM组成,n为任意的正整数,每组包括8个双通道的RAM,表示为R[n-1][0]~R[n-1][7],每个双通道的RAM包括A、B两个通道,对每组中各个RAM的A、B两个通道的地址信号addrA、addrB分别设定同一地址;根据输入到ROM的地址信号确定输入给每组RAM的地址信号addrA和addrB;然后每组RAM均输出2个字节的数据;n组RAM输出2*n个字节的数据。
将INTEL HEX文件写入上述ROM结构的方法是:
所述ROM结构的数据宽度为8比特,地址范围为0~16383*n;ROM上所有的值初始化为“00H”;
步骤一,对INTEL HEX文件进行编码并进行数据填充;将INTEL HEX文件每一行的数据长度域11、地址域aaaa和数据域dd取出,根据长度域11和地址域aaaa将数据域dd中的数据按照8比特的宽度进行排列,其中从INTEL HEX文件取出的每一个8比特数据DATA_HEX都有一个独立的地址ADDR_HEX;根据地址ADDR_HEX的值,把数据DATA_HEX存入到与ROM的地址相对应的ROM存储单元中;
步骤二,进行数据映射;将ROM中所有的数据都映射到各个RAM中。
将INTEL HEX文件从上述ROM结构读出的方法是:
addrA[n-1]是输入给R[n-1][0]~R[n-1][7]的A通道的地址信号addrA;addrB[n-1]是输入给R[n-1][0]~R[n-1][7]的B通道的地址信号addrB;
在对ROM进行读操作时,外部输入一个地址信号至ROM后,确定每组RAM中的地址addrA[n-1]、addrB[n-1],每组RAM均输出2个字节的数据;n组RAM输出2*n个字节的数据,将数据进行组合,则输出2*n个字节的连续数据DATA[0]~DATA[2*n-1]。
本发明的有益效果是:可以使用FPGA(Field Programmable GateArray现场可编程门阵列)内部的双通道RAM来组成ROM,这样能够减少系统开发需要的资源。
这种新的ROM结构,在输入单个地址的情况下能够输出自该地址起多个连续地址存储单元中的数据,及时地给RISC体系结构的单片机进行流水线操作提供相应的数据,大大提高了单片机的工作效率。
这种新的ROM结构有良好的可扩充性,通过设置参数的值,改变双通道的RAM的分组数量,进而改变连续输出的数据的数量。
附图说明
下面结合附图与具体实施方式对本发明作进一步详细的说明:
图1是现有的双通道RAM模块示意图;
图2是本发明的实施方式中ROM结构示意图;
图3是从图2所示的ROM结构输出数据的示意图;
图4是将INTEL HEX文件写入ROM中的步骤示意图;
图5是按照图4所示将INTEL HEX文件写入ROM后的数据示意图。
具体实施方式
1、ROM的组成结构
FPGA芯片中集成了双通道的RAM,可以用来组合成ROM。在本发明的实施方式中就是使用FPGA内部的双通道RAM模块来组成单地址输入多数据输出的ROM,即在对ROM进行读操作时,一个地址信号输入后输出多个连续的数据。
现有的双通道RAM模块如图1示,包括A、B两个通道。其中,WEA、WEB分别为输入RAM的两个通道的写信号。ENA、ENB分别为输入RAM的两个通道的使能信号。SSRA、SSRB分别为输入RAM的两个通道的复位信号。CLKA、CLKB分别为输入RAM的两个通道的时钟信号。ADDRA、ADDRB分别为输入RAM的两个通道的地址信号。DIA、DIB分别为输入RAM的两个通道的数据信号。DOA、DOB分别为输出RAM的两个通道的数据信号。
RAM的A通道的操作过程是:进行写操作时,当ENA有效,WEA=1时,就把DIA的数据写入到ADDRA所指向的地址。进行读操作时,当ENA有效,WEA=0时,DOA就等于ADDRA所指向的地址的数据(如式1所示)。
RAM的B通道的操作过程是:进行写操作时,当ENB有效,WEB=1时,就把DIB的数据写入到ADDRB所指向的地址。进行读操作时,当ENB有效,WEB=0时,DOB就等于ADDRB所指向的地址的数据(如式1所示)。
对RAM进行写时ENA=1,WEA=1:
RAM.DIA=RAM[addrA]
RAM.DIB=RAM[addrB]
对RAM进行读时ENA=1,WEA=0:(式1)
RAM.DOA=RAM[addrA]
RAM.DOB=RAM[addrB]
参见图2所示,所述的ROM结构由n组RAM组成,n为任意的正整数。
每组包括8个如图1所示的双通道的RAM,R[0][0]~R[0][7]为1组、R[1][0]~R[1][7]为1组……,R[n-1][0]~R[n-1][7]为1组。因此,当ENA有效,所有双通道RAM的WEA和WEB信号都置为“0”时,由n组双通道的RAM就可以作为ROM进行使用。
图2中,BIT表示ROM输出端口的位数,其范围为7~0。OFFSET表示ROM输出端口的行数,其范围为0~n-1。SEGMENT表示ROM输出端口的列数,其范围为0~16383。
如果需要改变输出数据个数,可以增加或减少n的值来改变RAM的数量(具体实现时可以通过参数设定的方式进行修改),按照图2对ROM的结构进行扩充或删减。
对每组中各个RAM的A、B两个通道的地址信号addrA、addrB分别设定同一地址;根据输入到ROM的地址信号确定输入给每组RAM的地址信号addrA和addrB;然后每组RAM均输出2个字节的数据;n组RAM输出2*n个字节的数据。
2、所述的ROM结构写入INTEL HEX文件的方法
INTEL HEX文件是由一行行符合INTEL HEX文件格式的文本所构成的ASCII(美国标准信息交换码)文本文件;通常用于传输将被存于ROM或者EPROM中的程序和数据。大多数EPROM编程器或模拟器使用INTEL HEX文件。
在INTEL HEX文件中,每一行包含一个以十六进制表示的记录。这些记录由对应机器语言码和/或常量数据的任意十六进制编码数字组成。每个记录包含5个域,它们按以下格式排列:
:llaaaatt[dd...]cc
每一组字母对应一个不同的域,每一个字母对应一个16进制编码的数字。每一个域由至少两个16进制编码数字组成,构成一个字节。具体结构是:
:每个INTEL HEX文件记录都由冒号开头。
11是数据长度域,它代表记录当中数据字节(dd)的数量。
aaaa是地址域,它代表记录当中数据的起始地址。
tt 是代表HEX记录类型的域,它可能是以下数据当中的一个:
00-数据记录。
01-文件结束记录。
02-扩展段地址记录。
04-扩展线性地址记录。
dd 是数据域,它代表一个字节的数据。一个记录可以有许多数据字节。记录当中数据字节的数量必须和数据长度域(11)中指定的数字相符。
cc 是校验和域,它表示这个记录的校验和。校验和的计算是通过将记录当中所有16进制编码数字对的值相加,以256为模进行补足。
INTEL HEX文件的编码以及写入ROM的过程,如图4所示,具体包括如下步骤:
步骤一,建立一个数据宽度为8比特,地址范围为0~16383*n的ROM,然后将ROM上所有的值初始化为“00H”。
步骤二,对INTEL HEX文件进行编码。将INTEL HEX文件每一行(即每个记录)的数据长度域11、地址域aaaa和数据域dd取出来。根据长度域11和地址域aaaa将数据域dd中的数据按照8比特的宽度一一排列出来,其中从INTEL HEX文件取出的每一个8比特数据DATA_HEX都有一个独立的地址ADDR_HEX。根据ADDR_HEX的值,把DATA_HEX存入到与ROM的地址相对应的ROM存储单元中,具体的操作如式2所示。
For (i=0;i<11;i++)
{
DATA_HEX[7:0]=dd[11-i];(式2)
ADDR_HEX=aaaa+i;//对INTEL HEX文件进行编码
ROM[ADDR_HEX]=DATA_HEX //将数据写入ROM
}
其中:DATA_HEX:表示从INTEL HEX文件中取出的数据。ADDR_HEX:表示在INTEL HEX文件中,取出的数据所对应的地址。
步骤三,进行数据映射。
将ROM中adr所指向的数据的第BIT位的值映射到RAM中的过程,映射函数见式3。
RAM[OFFSET][BIT][SEGMENT]=ROM[address][BIT](式3)
其中:W为输入给ROM地址数据的位宽度;L为输入给ROM地址数据的低n-1位的位宽度,用来选择OFFSET值;address为输入给ROM模块的地址;
OFFSET=address[L-1:0];SEGMENT=address[W-1:L]。
将ROM中映射后的数据以初始化参数的方式赋值给相应的RAM。例如按式3计算出RAM u7的内容为256’h168d1a3468,则其初始化参数为:
defparam u7.INIT_00=256’h168d1a3468。
将INTEL HEX文件写入ROM后的数据结构如图5所示。
3、输入给各组RAM地址的确定方法
ROM在进行读操作时,要满足接收到一个地址信号address后,ROM可以输出2*n个宽度为8比特的连续数据信号DATA[0]、DATA[1]……DATA[n]……DATA[2*n-1]。因此要确定ROM中的每组RAM中A、B两个通道的地址addrA、addrB,才能输出与输入地址相对应的数据。ROM的行数(OFFSET)的范围为[0,n-1],需要L=[log2 n-1](这里的[m]号表示大于m的最小整数)位地址进行表示;ROM的列数(SEGMENT)的范围为[0,16383],需要H=14位地址进行表示。因此输入给ROM的地址的位宽度为W=H+L。其中地址信号的高14位选择ROM的SEGMENT,低L位选择ROM的OFFSET。当输入ROM的地址信号是address,则按照式4计算输入给各组RAM的地址addrA、addrB。
对i<M:
RAM[i][7~0].addrA=address[W-1:W-14]+1;
RAM[i][7~0].addrB=address[W-1:W-14]+2;
对M≤i:(式4)
RAM[i][7~0].addrA=address[W-1:W-14];
RAM[i][7~0].addrB=address[W-1:W-14]+1
其中:
address为输入给ROM的地址信号;
n-1为ROM中OFFSET的最大值;
RAM[i][7~0].addrA表示输入给RAM[i][7]、RAM[i][6]……
RAM[i][0]A通道的地址,i∈[0,n-1];
RAM[i][7~0].addrB表示输入给RAM[i][7]、RAM[i][6]……
RAM[i][0]B通道的地址,i∈[0,n-1];
W为输入给ROM地址数据的位宽度;
M等于address[L-1:0]的值。
4、从ROM中取出数据的方法
根据输入各组RAM的地址可以从ROM中取出2*n个8比特的数据,按照式5对从ROM取出的数据进行组合,就能得到2*n个8比特连续的数据。
对n-1≥j≥0:
DATA[j]=RAM[(address+j)mod(n-1)][7~0].DOA
对n-1<j≤2*n-1: (式5)
DATA[j]=RAM[(address+j)mod(n-1)][7~0].DOB
其中,address为输入给ROM的地址信号;RAM.DOA为RAM的A通道输出的数据;RAM.DOB为RAM的B通道输出的数据;DATA[j]表示从ROM输出的第j个数据,j∈[0,2*n-1]。
本发明的ROM结构可以在一个地址信号address输入后,输出2*n个连续的数据。如式6所示:
DATA[i]=ROM[(address+i)mod(16384*n)] (式6)
其中,address为输入给ROM的地址信号,address∈[0,16383*n];DATA[i]表示从ROM输出的第i个数据,i∈[0,2*n-1]。
Claims (10)
1、一种用于精简指令集计算机体系结构单片机的ROM结构,其特征在于:所述ROM由n组RAM组成,n为任意的正整数;每组包括8个双通道的RAM,表示为R[n-1][0]~R[n-1][7],每个双通道的RAM包括A、B两个通道,对每组中各个RAM的A、B两个通道的地址信号addrA、addrB分别设定同一地址;根据输入到ROM的地址信号确定输入给每组RAM的地址信号addrA和addrB;每组RAM均输出2个字节的数据;n组RAM输出2*n个字节的数据。
2、如权利要求1所述的用于精简指令集计算机体系结构单片机的ROM结构,其特征在于:所述RAM采用现场可编程门阵列芯片内部的双通道随机访问存储器。
3、如权利要求1所述的用于精简指令集计算机体系结构单片机的ROM结构,其特征在于:所述每组RAM的地址信号addrA和addrB,按下式计算,
对i<M:
RAM[i][7~0].addrA=address[W-1:W-14]+1;
RAM[i][7~0].addrB=address[W-1:W-14]+2;
对M≤i:
RAM[i][7~0].addrA=address[W-1:W-14];
RAM[i][7~0].addrB=address[W-1:W-14]+1;
其中:
address为输入给ROM的地址信号;n-1为ROM中OFFSET的最大值;
RAM[i][7~0].addrA表示输入给RAM[i][7]、RAM[i][6]……RAM[i][0]A通道的地址,i∈[0,n-1];
RAM[i][7~0].addrB表示输入给RAM[i][7]、RAM[i][6]……RAM[i][0]B通道的地址,i∈[0,n-1];
W为输入给ROM地址数据的位宽度;L为输入给ROM地址数据的低n-1位的位宽度;M等于address[L-1:0]的值。
4、如权利要求1至3中任何一项所述的用于精简指令集计算机体系结构单片机的ROM结构,其特征在于:
从RAM中取出的2*n个字节数据,按下式进行组合,得到2*n个字节的连续的数据,
对n-1≥j≥0:
DATA[j]=RAM[(address+j)mod(n-1)][7~0].DOA
对n-1<j≤2*n-1:
DATA[j]=RAM[(address+j)mod(n-1)][7~0].DOB
其中,address为输入给ROM的地址信号;RAM.DOA为RAM的A通道输出的数据;RAM.DOB为RAM的B通道输出的数据;DATA[j]表示从ROM输出的第j个数据,j∈[0,2*n-1]。
5、如权利要求1至3中任何一项所述的用于精简指令集计算机体系结构单片机的ROM结构,其特征在于:通过参数设定的方式改变双通道的RAM的分组数量。
6、如权利要求4所述的用于精简指令集计算机体系结构单片机的ROM结构,其特征在于:通过参数设定的方式改变双通道的RAM的分组数量。
7、如权利要求4所述的用于精简指令集计算机体系结构单片机的ROM结构,其特征在于:输入ROM一个地址信号address后,按下式计算,输出2*n个连续的数据,
DATA[i]=ROM[(address+i)mod(16384*n)]
其中,address∈[0,16383*n];DATA[i]表示从ROM输出的第i个数据,i∈[0,2*n-1]。
8、一种利用权利要求1所述的ROM结构写入INTEL HEX文件的方法,其特征在于,所述ROM结构的数据宽度为8比特,地址范围为0~16383*n;ROM上所有的值初始化为“OOH”;包括如下步骤:
步骤一,对INTEL HEX文件进行编码并进行数据填充;将INTEL HEX文件每一行的数据长度域ll、地址域aaaa和数据域dd取出,根据长度域ll和地址域aaaa将数据域dd中的数据按照8比特的宽度进行排列,其中从INTEL HEX文件取出的每一个8比特数据DATA_HEX都有一个独立的地址ADDR_HEX;根据地址ADDR_HEX的值,把数据DATA_HEX存入到与ROM的地址相对应的ROM存储单元中;
步骤二,进行数据映射;将ROM中所有的数据都映射到各个RAM中。
9、如权利要求8所述的写入INTEL HEX文件的方法,其特征在于,步骤二所述的映射,按下式计算,
RAM[OFFSET][BIT][SEGMENT]=ROM[address][BIT]
其中:W为输入给ROM地址数据的位宽度;
L为输入给ROM地址数据的低n-1位的位宽度,用来选择OFFSET值;
address为输入给ROM模块的地址;
OFFSET=address[L-1:0];SEGMENT=address[W-1:L]。
10、如权利要求8或9所述的写入INTEL HEX文件的方法,其特征在于,将ROM中映射后的数据以初始化参数的方式赋值给相应的RAM。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN200710041944A CN101324861B (zh) | 2007-06-13 | 2007-06-13 | Rom结构及写入intel hex文件的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN200710041944A CN101324861B (zh) | 2007-06-13 | 2007-06-13 | Rom结构及写入intel hex文件的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101324861A true CN101324861A (zh) | 2008-12-17 |
CN101324861B CN101324861B (zh) | 2010-05-19 |
Family
ID=40188407
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN200710041944A Expired - Fee Related CN101324861B (zh) | 2007-06-13 | 2007-06-13 | Rom结构及写入intel hex文件的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101324861B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102508729A (zh) * | 2011-09-29 | 2012-06-20 | 中国航天科技集团公司第五研究院第五一三研究所 | Fpga内rom映射区动态刷新纠错方法 |
CN108491224A (zh) * | 2018-07-09 | 2018-09-04 | 深圳市路畅科技股份有限公司 | 一种车载软件更新方法及系统 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH07287668A (ja) * | 1994-04-19 | 1995-10-31 | Hitachi Ltd | データ処理装置 |
US5784698A (en) * | 1995-12-05 | 1998-07-21 | International Business Machines Corporation | Dynamic memory allocation that enalbes efficient use of buffer pool memory segments |
-
2007
- 2007-06-13 CN CN200710041944A patent/CN101324861B/zh not_active Expired - Fee Related
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102508729A (zh) * | 2011-09-29 | 2012-06-20 | 中国航天科技集团公司第五研究院第五一三研究所 | Fpga内rom映射区动态刷新纠错方法 |
CN102508729B (zh) * | 2011-09-29 | 2014-12-03 | 中国航天科技集团公司第五研究院第五一三研究所 | Fpga内rom映射区动态刷新纠错方法 |
CN108491224A (zh) * | 2018-07-09 | 2018-09-04 | 深圳市路畅科技股份有限公司 | 一种车载软件更新方法及系统 |
CN108491224B (zh) * | 2018-07-09 | 2022-02-11 | 深圳市路畅科技股份有限公司 | 一种车载软件更新方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN101324861B (zh) | 2010-05-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101162449B (zh) | Nand flash控制器及其与nand flash芯片的数据交互方法 | |
CN101739304B (zh) | 用于测量设备的设备描述的产生 | |
CN1093641C (zh) | 存贮器试验装置 | |
CN102237126B (zh) | 乐音产生设备 | |
CN102043795A (zh) | 过程控制历史数据文件结构的建立方法和数据读写方法 | |
CN110032396A (zh) | 存储器系统及其操作方法 | |
CN102637197A (zh) | 实时数据采集存储系统的文件管理方法 | |
CN107180001A (zh) | 访问动态随机存储器dram的方法和总线 | |
CN101324861B (zh) | Rom结构及写入intel hex文件的方法 | |
CN111045349A (zh) | 一种遥测采编器的动态编帧方法 | |
CN102591787B (zh) | Java卡的数据处理方法及装置 | |
CN101930402B (zh) | 具有检错/纠错电路的非挥发存储器及其读写方法 | |
CN101930799A (zh) | 具有检错/纠错电路的非挥发存储器及其读写数据的方法 | |
CN106066832A (zh) | 存取存储器模块/增加写入端口的方法以及存储器控制器 | |
CN106155914A (zh) | 实体储存对照表维护方法以及使用该方法的装置 | |
CN101903868B (zh) | 存储装置以及其控制方法 | |
CN101908378A (zh) | 闪存的控制器以及于闪存存取数据的方法 | |
CN104636119A (zh) | 用于处理混编指令的方法和设备 | |
CN102594371B (zh) | 一种Turbo编码交织处理的方法及装置 | |
CN102622963B (zh) | 简易通用的显示屏全硬件控制系统 | |
CN116029272A (zh) | 一种表格模板动态自适应智能填报方法及系统 | |
CN107463546A (zh) | 一种基于指标库的文档生成方法及系统 | |
CN105183628B (zh) | 一种嵌入式系统日志收集装置、记录系统及方法 | |
CN104793372B (zh) | 不同产线液晶模组的缺陷等级判定方法 | |
CN104063339B (zh) | 利用多核心储存机制的可携式装置以及其数据存取方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
C17 | Cessation of patent right | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20100519 Termination date: 20110613 |