CN104021086B - 一种8位单片机读写16位存储单元ram的实现方法 - Google Patents

一种8位单片机读写16位存储单元ram的实现方法 Download PDF

Info

Publication number
CN104021086B
CN104021086B CN201410225644.0A CN201410225644A CN104021086B CN 104021086 B CN104021086 B CN 104021086B CN 201410225644 A CN201410225644 A CN 201410225644A CN 104021086 B CN104021086 B CN 104021086B
Authority
CN
China
Prior art keywords
address register
write
vub
cpld
ram
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.)
Active
Application number
CN201410225644.0A
Other languages
English (en)
Other versions
CN104021086A (zh
Inventor
陶涛
刘毅
梅雪松
张东升
孙挪刚
姜歌东
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Xian Jiaotong University
Original Assignee
Xian Jiaotong University
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Xian Jiaotong University filed Critical Xian Jiaotong University
Priority to CN201410225644.0A priority Critical patent/CN104021086B/zh
Publication of CN104021086A publication Critical patent/CN104021086A/zh
Application granted granted Critical
Publication of CN104021086B publication Critical patent/CN104021086B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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的实现方法
技术领域
本发明属于电子设计自动化领域,具体涉及一种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中。
CN201410225644.0A 2014-05-26 2014-05-26 一种8位单片机读写16位存储单元ram的实现方法 Active CN104021086B (zh)

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 CN104021086A (zh) 2014-09-03
CN104021086B true 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)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
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的缓存方法
CN113721858B (zh) * 2021-09-06 2023-08-29 上海星秒光电科技有限公司 一种存储器的快速读写方法、装置、电子设备及存储介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6298443A (ja) * 1985-10-25 1987-05-07 Hitachi Ltd デ−タ処理装置

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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)

* Cited by examiner, † Cited by third party
Title
8位单片机的16位外部总线扩展与应用;于良耀等;《单片机与嵌入式系统》;20061231(第6期);第69-71页 *
基于双口RAM的数据采集系统设计;孙爱东等;《电子测量技术》;20060430;第29卷(第2期);第90-94页 *
用8097单片机访问16位RAM中的奇地址字;张涛;《装甲兵工程学院学报》;19981231;第12卷(第3期);第30-34页 *

Also Published As

Publication number Publication date
CN104021086A (zh) 2014-09-03

Similar Documents

Publication Publication Date Title
CN104750619B (zh) 数据储存装置以及快闪存储器控制方法
CN105702300B (zh) 一种基于FPGA的NAND Flash容错系统
CN104951334B (zh) FPGA双片QSPI flash的程序加载方法
CN104021086B (zh) 一种8位单片机读写16位存储单元ram的实现方法
CN103136028A (zh) 一种基于fpga的flash存储器远程在线升级方法
CN101719098B (zh) Nandflash芯片组存储控制器
CN102332311A (zh) 一种基于fpga的nand flash器件单粒子效应测试方法
US20100191901A1 (en) Non-volatile storage device, host device, non-volatile storage system, data recording method, and program
CN106326171A (zh) 硬盘背板的硬盘类型识别方法和装置
CN107290654A (zh) 一种fpga逻辑测试结构及方法
CN104361143A (zh) 一种便携式数据采集卡及其方法
CN106024036A (zh) 一种基于fpga的多路音频数据格式转换方法
CN104679681A (zh) Ahb总线访问片上sram的高速桥装置及其工作方法
CN104408213A (zh) 一种便携式数据采集卡
CN106292544B (zh) 基于pcie接口硬件板卡及其总线控制方法及系统
CN110058809A (zh) 存储装置及其调试系统
CN202632525U (zh) 微波交通状态检测器
CN106774027A (zh) 一种电网智能数据处理系统
Jie et al. Design of multi-channel data acquisition system based on FPGA
CN103856210B (zh) 一种控制fpga编程新地址的方法、装置及编程电路
CN102110047B (zh) 一种在开发系统中读写ram的方法
CN201477641U (zh) 汽车数据采集sd存储装置
CN206515664U (zh) 一种电网智能数据处理系统
CN201210246Y (zh) 带sm卡存储功能的汽车esp数据采集系统
CN104346484A (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