CN104021086A - 一种8位单片机读写16位存储单元ram的实现方法 - Google Patents
一种8位单片机读写16位存储单元ram的实现方法 Download PDFInfo
- Publication number
- CN104021086A CN104021086A CN201410225644.0A CN201410225644A CN104021086A CN 104021086 A CN104021086 A CN 104021086A CN 201410225644 A CN201410225644 A CN 201410225644A CN 104021086 A CN104021086 A CN 104021086A
- Authority
- CN
- China
- Prior art keywords
- address register
- vub
- cpld
- ram
- written
- 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
Landscapes
- Information Transfer Systems (AREA)
- Microcomputers (AREA)
Abstract
本发明公开了一种8位单片机读写16位存储单元RAM的实现方法包括以下步骤:1)将16位RAM每个存储单元通过vUB分成高8位和低8位两部分;2)用CPLD/FPGA连接单片机和RAM;3)单片机将初始目标地址分三次写入CPLD/FPGA地址缓存器;4)将CPLD/FPGA地址缓存器中地址写入RAM地址寄存器MCUwrAddr、MCUrdAddr;5)单片机将8位数据写入选通的RAM单元,写入完成后写地址寄存器MCUwrAddr加1;6)单片机从选通单元读取8位数据,读取完成后读地址寄存器MCUrdAddr加1,重复5)可连续写入数据,重复6)可连续读取数据。本发明可以实现8位单片机读写16位存储单元RAM。
Description
技术领域
本发明属于电子设计自动化领域,具体涉及一种8位单片机读写16位存储单元RAM的实现方法。
背景技术
随着电子技术的进步和电子器件制造工艺的提高,市面上的16位和32位单片机越来越多,但是8位单片机因其制造设计工艺成熟、价格低廉等特点,市场占有率仍然很高,尤其在成本敏感和可靠性要求较高的场合,更占有绝对优势,由于大多8位单片机内部资源有限,经常需要外扩存储器,8位单片机可以很方便与8位存储单元RAM连接,但是,对16位存储单元的RAM操作不方便,一定程度限制了8位单片机的使用范围。
发明内容
本发明的目的在于克服上述现有技术的缺点,提供了一种8位单片机读写16位存储单元RAM的实现方法,该方法可以实现8位单片机读写16位存储单元RAM。
为达到上述目的,本发明所述的8位单片机读写16位存储单元RAM的实现方法,包括以下步骤:
1)将16位存储单元RAM中每个存储单元的初始目标地址通过vUB分成高8位和低8位,得高低位判断标志;
2)通过CPLD/FPGA地址缓存器将单片机与16位存储单元RAM相连接;
3)8位单片机将初始目标地址及高地位判断标志分三次写入到CPLD/FPGA地址缓存器中,其中,第一次,8位单片机通过0x8010操作端口将初始目标地址的低8位写入到CPLD/FPGA地址缓存器的ADDR_BUF[7..0]中;第二次,8位单片机通过0x8011操作端口将初始目标地址的高8位写入到CPLD/FPGA地址缓存器的ADDR_BUF[15..8]中;第三次,8位单片机将高低位判断标志通过0x8014操作端口写入CPLD/FPGA地址缓存器的vUB_BUF中;
4)将CPLD/FPGA地址缓存器中ADDR_BUF内的初始目标地址通过0x8012操作端口写入到RAM地址寄存器的MCUwrAddr及MCUrdAddr中,同时将CPLD/FPGA地址缓存器中vUB_BUF内的高低位判断标志通过0x8015操作端口写入到vUB中;
5)8位单片机通过0x8009操作端口将8位单片机内的8位数据写入到选通的RAM单元中,写入完成后,写地址寄存器MCUwrAddr加1;
6)重复步骤5),连续写入所有数据;
7)8位单片机通过0x8008操作端口从选通的RAM单元中读取8位单片机内的8位数据,读取完成后,读地址寄存器MCUrdAddr加1;
8)重复步骤7),连续读取所有数据。
所述高低位判断标志为当vUB=0时,选中高8位,当vUB=1时,选中低8位。
步骤4)所述将CPLD/FPGA地址缓存器中ADDR_BUF内的初始目标地址通过0x8012操作端口写入到RAM地址寄存器的MCUwrAddr及MCUrdAddr中的具体操作过程为:当0x8012端口写入数据的第0位为1,即bit0=1时,将CPLD/FPGA地址缓存器中ADDR_BUF内的初始目标地址写入到RAM地址寄存器的MCUrdAddr中,当0x8012端口写入数据的第1位为1,即bit1=1时,CPLD/FPGA地址缓存器中ADDR_BUF内的初始目标地址写入到RAM地址寄存器的MCUwrAddr中。
步骤4)所述将CPLD/FPGA地址缓存器中vUB_BUF内的高低位判断标志通过0x8015操作端口写入到vUB中的具体操作为:当0x8015端口写入数据的第0位为1,即bit0=1时,将CPLD/FPGA地址缓存器中vUB_BUF内的高低位判断标志写入vUB的MCUrd_vUB中,当0x8015端口写入数据的第1位为1,即bit1=1时,将CPLD/FPGA地址缓存器中vUB_BUF内的高低位判断标志写入到vUB的MCUwr_vUB中。
本发明具有以下有益效果:
本发明所述的8位单片机读写16位存储单元RAM的实现方法在实现的过程中,先将16为存储单元RAM中每个存储单元的初始目标地址分为高8位及低8位,得高低位判断标志,再通过CPLD/FPGA地址缓存器将单片机与16位存储单元RAM相连接,然后将初始目标地址及高低位判断标志分三次写入到CPLD/FPGA地址缓存器中,再将CPLD/FPGA地址缓存器中的内容存储到RAM地址寄存器及vUB中,然后即可通过8位单片机从选通的RAM单元中读出数据以及往RAM单元中写入数据,通过数据的读出及写入各自独立,在分频时钟下,读出操作及写入操作互不干扰,并且单次读操作完成后,读地址自动加1,单次写操作完成后,写操作自动加1,连续读写操作方便,极大的提高了连续读写效率。
附图说明
图1为本发明中实施例一的设计原理图;
图2为本发明中实施例一的仿真实验结果图。
具体实施方式
下面结合附图对本发明做进一步详细描述:
本发明所述的8位单片机读写16位存储单元RAM的实现方法包括以下步骤:
1)将16位存储单元RAM中每个存储单元的初始目标地址通过vUB分成高8位和低8位,得高低位判断标志;
2)通过CPLD/FPGA地址缓存器将单片机与16位存储单元RAM相连接;
3)8位单片机将初始目标地址及高地位判断标志分三次写入到CPLD/FPGA地址缓存器中,其中,第一次,8位单片机通过0x8010操作端口将初始目标地址的低8位写入到CPLD/FPGA地址缓存器的ADDR_BUF[7..0]中;第二次,8位单片机通过0x8011操作端口将初始目标地址的高8位写入到CPLD/FPGA地址缓存器的ADDR_BUF[15..8]中;第三次,8位单片机将高低位判断标志通过0x8014操作端口写入CPLD/FPGA地址缓存器的vUB_BUF中;
4)将CPLD/FPGA地址缓存器中ADDR_BUF内的初始目标地址通过0x8012操作端口写入到RAM地址寄存器的MCUwrAddr及MCUrdAddr中,同时将CPLD/FPGA地址缓存器中vUB_BUF内的高低位判断标志通过0x8015操作端口写入到vUB中;
5)8位单片机通过0x8009操作端口将8位单片机内的8位数据写入到选通的RAM单元中,写入完成后,写地址寄存器MCUwrAddr加1;
6)重复步骤5),连续写入所有数据;
7)8位单片机通过0x8008操作端口从选通的RAM单元中读取8位单片机内的8位数据,读取完成后,读地址寄存器MCUrdAddr加1;
8)重复步骤7),连续读取所有数据。
所述高低位判断标志为当vUB=0时,选中高8位,当vUB=1时,选中低8位。
步骤4)所述将CPLD/FPGA地址缓存器中ADDR_BUF内的初始目标地址通过0x8012操作端口写入到RAM地址寄存器的MCUwrAddr及MCUrdAddr中的具体操作过程为:当0x8012端口写入数据的第0位为1,即bit0=1时,将CPLD/FPGA地址缓存器中ADDR_BUF内的初始目标地址写入到RAM地址寄存器的MCUrdAddr中,当0x8012端口写入数据的第1位为1,即bit1=1时,CPLD/FPGA地址缓存器中ADDR_BUF内的初始目标地址写入到RAM地址寄存器的MCUwrAddr中。
步骤4)所述将CPLD/FPGA地址缓存器中vUB_BUF内的高低位判断标志通过0x8015操作端口写入到vUB中的具体操作为:当0x8015端口写入数据的第0位为1,即bit0=1时,将CPLD/FPGA地址缓存器中vUB_BUF内的高低位判断标志写入vUB的MCUrd_vUB中,当0x8015端口写入数据的第1位为1,即bit1=1时,将CPLD/FPGA地址缓存器中vUB_BUF内的高低位判断标志写入到vUB的MCUwr_vUB中。
实施例一
参考图1及图2,8位单片机向16位存储单元RAM写入的数据为0x56,RAM地址为0x3344,该存储单元高8位选通(vUB=0)。
具体包括以下步骤:
1)8位单片机将初始目标地址分三次写入CPLD/FPGA地址缓存器;
a)8位单片机将初始目标地址的低8位通过0x8010操作端口写入ADDR_BUF[7..0],其中,操作数为0x44,即通过CPLD/FPGA转化,8位单片机本次写操作结束后,ADDR_BUF[7..0]的值为0x44;
b)8位单片机将初始目标地址的高8位通过0x8011操作端口写入ADDR_BUF[15..8]中,操作数为0x33,即通过CPLD/FPGA转化,8位单片机本次写操作结束后,ADDR_BUF[15..8]的值为0x33;
c)8位单片机将高低位判断标志通过0x8014操作端口写入vUB_BUF中,操作数为0x01,即通过CPLD/FPGA转化,单片机本次写操作结束后,vUB_BUF的值为0x01;
2)将CPLD/FPGA地址缓存器ADDR_BUF内的初始目标地址通过0x8012操作端口写入RAM地址寄存器的MCUwrAddr及MCUrdAddr,操作数为0x03,即ADDR_BUF内容同时写入MCUwrAddr及MCUrdAddr,MCUwrAddr和MCUrdAddr的值都变为0x3344;
3)将vUB_BUF内的高低位判断标志通过0x8015操作端口写入vUB中,将vUB_BUF内的高低位判断标志同时写入MCUrd_vUB和MCUwr_vUB,MCUrd_vUB和MCUwr_vUB的值在分频时钟下分时取反赋给vUB;
4)8位单片机将8位数据通过0x8009操作端口写入选通的RAM单元,写入数据为0x56,此过程CPLD/FPGA模拟产生一个写信号vWR,vwR低电平的时间段,vD的数据为0x5600,即RAM0x334地址单元的高8位将被写入0x56,低8位数据总线由于vUB为0而未选通,不会有数据写入,写入完成后写地址寄存器MCUwrAddr加1,MCUwrAddr由0x3344变为0x3345,重复上述操作,即可连续写入数据;
5)8位单片机通过0x8008操作端口从选通的RAM单元中读取8位数据,读取完成后读地址寄存器MCUrdAddr加1,MCUrdAddr由0x3344变为0x3345,重复上述步骤,即可连续读取数据。
Claims (4)
1.一种8位单片机读写16位存储单元RAM的实现方法,其特征在于,包括以下步骤:
1)将16位存储单元RAM中每个存储单元的地址通过vUB分成高8位和低8位,得高低位判断标志;
2)通过CPLD/FPGA地址缓存器将单片机与16位存储单元RAM相连接;
3)8位单片机将初始目标地址及高地位判断标志分三次写入到CPLD/FPGA地址缓存器中,其中,第一次,8位单片机通过0x8010操作端口将初始目标地址的低8位写入到CPLD/FPGA地址缓存器的ADDR_BUF[7..0]中;第二次,8位单片机通过0x8011操作端口将初始目标地址的高8位写入到CPLD/FPGA地址缓存器的ADDR_BUF[15..8]中;第三次,8位单片机将高低位判断标志通过0x8014操作端口写入CPLD/FPGA地址缓存器的vUB_BUF中;
4)将CPLD/FPGA地址缓存器中ADDR_BUF内的初始目标地址通过0x8012操作端口写入到RAM地址寄存器的MCUwrAddr及MCUrdAddr中,同时将CPLD/FPGA地址缓存器中vUB_BUF内的高低位判断标志通过0x8015操作端口写入到vUB中;
5)8位单片机通过0x8009操作端口将8位单片机内的8位数据写入到选通的RAM单元中,写入完成后,写地址寄存器MCUwrAddr加1;
6)重复步骤5),连续写入所有数据;
7)8位单片机通过0x8008操作端口从选通的RAM单元中读取8位单片机内的8位数据,读取完成后,读地址寄存器MCUrdAddr加1;
8)重复步骤7),连续读取所有数据。
2.根据权利要求1所述的8位单片机读写16位存储单元RAM的实现方法,其特征在于,所述高低位判断标志为当vUB=0时,选中高8位,当vUB=1时,选中低8位。
3.根据权利要求1所述的8位单片机读写16位存储单元RAM的实现方法,其特征在于,步骤4)所述将CPLD/FPGA地址缓存器中ADDR_BUF内的初始目标地址通过0x8012操作端口写入到RAM地址寄存器的MCUwrAddr及MCUrdAddr中的具体操作过程为:当0x8012端口写入数据的第0位为1,即bit0=1时,将CPLD/FPGA地址缓存器中ADDR_BUF内的初始目标地址写入到RAM地址寄存器的MCUrdAddr中,当0x8012端口写入数据的第1位为1,即bit1=1时,CPLD/FPGA地址缓存器中ADDR_BUF内的初始目标地址写入到RAM地址寄存器的MCUwrAddr中。
4.根据权利要求3所述的8位单片机读写16位存储单元RAM的实现方法,其特征在于,步骤4)所述将CPLD/FPGA地址缓存器中vUB_BUF内的高低位判断标志通过0x8015操作端口写入到vUB中的具体操作为:当0x8015端口写入数据的第0位为1,即bit0=1时,将CPLD/FPGA地址缓存器中vUB_BUF内的高低位判断标志写入vUB的MCUrd_vUB中,当0x8015端口写入数据的第1位为1,即bit1=1时,将CPLD/FPGA地址缓存器中vUB_BUF内的高低位判断标志写入到vUB的MCUwr_vUB中。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410225644.0A CN104021086B (zh) | 2014-05-26 | 2014-05-26 | 一种8位单片机读写16位存储单元ram的实现方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410225644.0A CN104021086B (zh) | 2014-05-26 | 2014-05-26 | 一种8位单片机读写16位存储单元ram的实现方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104021086A true CN104021086A (zh) | 2014-09-03 |
CN104021086B CN104021086B (zh) | 2016-12-07 |
Family
ID=51437851
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410225644.0A Active CN104021086B (zh) | 2014-05-26 | 2014-05-26 | 一种8位单片机读写16位存储单元ram的实现方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104021086B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107358804A (zh) * | 2017-09-04 | 2017-11-17 | 吴世贵 | 一种交通灯车流量检测方法 |
CN107729269A (zh) * | 2017-09-28 | 2018-02-23 | 西安交通大学 | 一种NANDFlash到FPGA内部块RAM的缓存方法 |
CN113721858A (zh) * | 2021-09-06 | 2021-11-30 | 上海星秒光电科技有限公司 | 一种存储器的快速读写方法、装置、电子设备及存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS6298443A (ja) * | 1985-10-25 | 1987-05-07 | Hitachi Ltd | デ−タ処理装置 |
CN1731371A (zh) * | 2005-09-07 | 2006-02-08 | 大唐微电子技术有限公司 | 数字信号处理系统中访问存储单元的方法及其处理系统 |
CN101308697A (zh) * | 2008-07-10 | 2008-11-19 | 哈尔滨工业大学 | 基于sdram的大容量fifo突发缓存器及数据存储方法 |
US8037292B2 (en) * | 2006-06-30 | 2011-10-11 | Lenovo (Beijing) Limited | Method for accelerating BIOS running |
-
2014
- 2014-05-26 CN CN201410225644.0A patent/CN104021086B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS6298443A (ja) * | 1985-10-25 | 1987-05-07 | Hitachi Ltd | デ−タ処理装置 |
CN1731371A (zh) * | 2005-09-07 | 2006-02-08 | 大唐微电子技术有限公司 | 数字信号处理系统中访问存储单元的方法及其处理系统 |
US8037292B2 (en) * | 2006-06-30 | 2011-10-11 | Lenovo (Beijing) Limited | Method for accelerating BIOS running |
CN101308697A (zh) * | 2008-07-10 | 2008-11-19 | 哈尔滨工业大学 | 基于sdram的大容量fifo突发缓存器及数据存储方法 |
Non-Patent Citations (3)
Title |
---|
于良耀等: "8位单片机的16位外部总线扩展与应用", 《单片机与嵌入式系统》 * |
孙爱东等: "基于双口RAM的数据采集系统设计", 《电子测量技术》 * |
张涛: "用8097单片机访问16位RAM中的奇地址字", 《装甲兵工程学院学报》 * |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107358804A (zh) * | 2017-09-04 | 2017-11-17 | 吴世贵 | 一种交通灯车流量检测方法 |
CN107729269A (zh) * | 2017-09-28 | 2018-02-23 | 西安交通大学 | 一种NANDFlash到FPGA内部块RAM的缓存方法 |
CN113721858A (zh) * | 2021-09-06 | 2021-11-30 | 上海星秒光电科技有限公司 | 一种存储器的快速读写方法、装置、电子设备及存储介质 |
CN113721858B (zh) * | 2021-09-06 | 2023-08-29 | 上海星秒光电科技有限公司 | 一种存储器的快速读写方法、装置、电子设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN104021086B (zh) | 2016-12-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN203909710U (zh) | 一种适用于SoC芯片的多功能低电平复位电路 | |
US20140019670A1 (en) | Data writing method, memory controller, and memory storage device | |
CN103218338B (zh) | 一种信号处理机系统实时多dsp调试系统 | |
CN103984560A (zh) | 基于大规模粗粒度嵌入式可重构系统及其处理方法 | |
CN106776458B (zh) | 基于fpga和hpi的dsp间的通信装置及通信方法 | |
CN103956994A (zh) | 一种基于fpga的dds任意波形信号发生器 | |
CN104021099B (zh) | 一种控制数据传输的方法及dma控制器 | |
CN104021086A (zh) | 一种8位单片机读写16位存储单元ram的实现方法 | |
CN104679681A (zh) | Ahb总线访问片上sram的高速桥装置及其工作方法 | |
CN105045335A (zh) | 一种内嵌8051ip核的fpga信息处理系统 | |
CN206211976U (zh) | 一种时序控制全数字dll控制电路 | |
CN102789424B (zh) | 基于fpga的外扩ddr2的读写方法及基于fpga的外扩ddr2颗粒存储器 | |
CN104409099A (zh) | 基于FPGA的高速eMMC阵列控制器 | |
CN105487953A (zh) | 一种总线性能分析方法和装置 | |
CN203250312U (zh) | 一种接口形式可扩展的通用核心处理子板 | |
CN105527889A (zh) | 一种采用stt-mram作为单一存储器的微控制器 | |
CN205228473U (zh) | 一种基于现场可编程门阵列的微型导航计算机 | |
CN104461959A (zh) | 区分NOR Flash与NAND Flash的方法和装置 | |
US10672492B2 (en) | Data sampling circuit module, data sampling method and memory storage device | |
CN103544079A (zh) | 基于可编程控制器实现闪存芯片数据恢复的系统及方法 | |
CN204066106U (zh) | 一种pci总线转本地总线通用电路 | |
CN203102274U (zh) | 一种高速数据传输连接器 | |
CN103577205B (zh) | 基于mcs文件的arinc659芯片加载方法 | |
CN101866695A (zh) | 一种Nandflash U盘控制器读写Norflash存储器的方法 | |
CN206515664U (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 |