一种8位单片机读写16位存储单元RAM的实现方法[发明专利]

(10)申请公布号 (43)申请公布日 2014.09.03
C N  104021086
A (21)申请号 201410225644.0
(22)申请日 2014.05.26
G06F 12/02(2006.01)
G06F 3/06(2006.01)
(71)申请人西安交通大学
地址710049 陕西省西安市咸宁路28号
(72)发明人陶涛  刘毅  梅雪松  张东升
孙挪刚  姜歌东
(74)专利代理机构西安通大专利代理有限责任
公司 61200
代理人
陆万寿
(54)发明名称
一种8位单片机读写16位存储单元RAM 的实
现方法
(57)摘要
本发明公开了一种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 。
(51)Int.Cl.
权利要求书1页  说明书4页  附图2页
(19)中华人民共和国国家知识产权局(12)发明专利申请权利要求书1页  说明书4页  附图2页(10)申请公布号CN 104021086 A
1/1页
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 中。权  利  要  求  书CN 104021086 A
一种8位单片机读写16位存储单元RAM的实现方法
技术领域
[0001] 本发明属于电子设计自动化领域,具体涉及一种8位单片机读写16位存储单元RAM的实现方法。
背景技术
[0002] 随着电子技术的进步和电子器件制造工艺的提高,市面上的16位和32位单片机越来越多,但是8位单片机因其制造设计工艺成熟、价格低廉等特点,市场占有率仍然很高,尤其在成本敏感和可靠性要求较高的场合,更占有绝对优势,由于大多8位单片机内部资源有限,经常需要外扩存储器,8位单片机可以很方便与8位存储单元RAM连接,但是,对16位存储单元的RAM操作不方便,一定程度限制了8位单片机的使用范围。
发明内容
[0003] 本发明的目的在于克服上述现有技术的缺点,提供了一种8位单片机读写16位存储单元RAM的实现方法,该方法可以实现8位单片机读写16位存储单元RAM。
[0004] 为达到上述目的,本发明所述的8位单片机读写16位存储单元RAM的实现方法,包括以下步骤:
[0005] 1)将16位存储单元RAM中每个存储单元的初始目标地址通过vUB分成高8位和低8位,得高低位判断标志;
[0006] 2)通过CPLD/FPGA地址缓存器将单片机与16位存储单元RAM相连接;[0007] 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中;[0008] 4)将CPLD/FPGA地址缓存器中ADDR_BUF内的初始目标地址通过0x8012操作端口写入到RAM地址寄存器的MCUwrAddr及MCUrdAddr中,同时将CPLD/FPGA地址缓存器中vUB_BUF内的高低位判断标志通过0x8015操作端口写入到vUB中;
[0009] 5)8位单片机通过0x8009操作端口将8位单片机内的8位数据写入到选通的RAM 单元中,写入完成后,写地址寄存器MCUwrAddr加1;
[0010] 6)重复步骤5),连续写入所有数据;
[0011] 7)8位单片机通过0x8008操作端口从选通的RAM单元中读取8位单片机内的8位数据,读取完成后,读地址寄存器MCUrdAddr加1;
[0012] 8)重复步骤7),连续读取所有数据。
[0013] 所述高低位判断标志为当vUB=0时,选中高8位,当vUB=1时,选中低8位。[0014] 步骤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中。
[0015] 步骤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中。
[0016] 本发明具有以下有益效果:
[0017] 本发明所述的8位单片机读写16位存储单元RAM的实现方法在实现的过程中,先将16为存储单元RAM中每个存储单元的初始目标地址分为高8位及低8位,得高低位判断标志,再通过CPLD/FPGA地址缓存器将单片机与16位存储单元RAM相连接,然后将初始目标地址及高低位判断标志分三次写入到CPLD/FPGA地址缓存器中,再将CPLD/FPGA地址缓存器中的内容存储到RAM地址寄存器及vUB中,然
后即可通过8位单片机从选通的RAM单元中读出数据以及往RAM单元中写入数据,通过数据的读出及写入各自独立,在分频时钟下,读出操作及写入操作互不干扰,并且单次读操作完成后,读地址自动加1,单次写操作完成后,写操作自动加1,连续读写操作方便,极大的提高了连续读写效率。
附图说明
[0018] 图1为本发明中实施例一的设计原理图;
[0019] 图2为本发明中实施例一的仿真实验结果图。
具体实施方式
[0020] 下面结合附图对本发明做进一步详细描述:
[0021] 本发明所述的8位单片机读写16位存储单元RAM的实现方法包括以下步骤:[0022] 1)将16位存储单元RAM中每个存储单元的初始目标地址通过vUB分成高8位和低8位,得高低位判断标志;
[0023] 2)通过CPLD/FPGA地址缓存器将单片机与16位存储单元RAM相连接;[0024] 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中;[0025] 4)将CPLD/FPGA地址缓存器中ADDR_BUF内的初始目标地址通过0x8012操作端口写入到RAM地址寄存器的MCUwrAddr及MCUrdAddr中,同时将CPLD/FPGA地址缓存器中vUB_BUF内的高低位判断标志通过0x8015操作端口写入到vUB中;
[0026] 5)8位单片机通过0x8009操作端口将8位单片机内的8位数据写入到选通的RAM 单元中,写入完成后,写地址寄存器MCUwrAddr加1;
[0027] 6)重复步骤5),连续写入所有数据;
[0028] 7)8位单片机通过0x8008操作端口从选通的RAM单元中读取8位单片机内的8位数据,读取完成后,读地址寄存器MCUrdAddr加1;
[0029] 8)重复步骤7),连续读取所有数据。
[0030] 所述高低位判断标志为当vUB=0时,选中高8位,当vUB=1时,选中低8位。[0031] 步骤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中。
[0032] 步骤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中。
[0033] 实施例一
[0034] 参考图1及图2,8位单片机向16位存储单元RAM写入的数据为0x56,RAM地址为0x3344,该存储单元高8位选通(vUB=0)。
[0035] 具体包括以下步骤:
[0036] 1)8位单片机将初始目标地址分三次写入CPLD/FPGA地址缓存器;
[0037] a)8位单片机将初始目标地址的低8位通过0x8010操作端口写入ADDR_ BUF[7..0],其中,操作数为0x44,即通过CPLD/FPGA转化,8位单片机本次写操作结束后,ADDR_BUF[7..0]的值为0x44;
[0038] b)8位单片机将初始目标地址的高8位通过0x8011操作端口写入ADDR_ BUF[15..8]中,操作数为0x33,即通过CPLD/FPGA转化,8位单片机本次写操作结束后,ADDR_BUF[15..8]的值为0x33;
[0039] c)8位单片机将高低位判断标志通过0x8014操作端口写入vUB_BUF中,操作数为0x01,即通过CPLD/FPGA转化,单片机本次写操作结束后,vUB_BUF的值为0x01;[0040] 2)将CPLD/FPGA地址缓存器ADDR_BUF内的初始目标地址通过0x8012操作端口写入RAM地址寄存器的MCUwrAddr及MCUrdAddr,操作数为0x03,即ADDR_BUF内容同时写入MCUwrAddr及MCUrdAddr,MCUwrAddr和MCUrdAddr的值都变为0x3344;
[0041] 3)将vUB_BUF内的高低位判断标志通过0x8015操作端口写入vUB中,将vUB_BUF 内的高低位判断标志同时写入MCUrd_vUB和MCUwr_vUB,MCUrd_vUB和MCUwr_vUB的值在分频时钟下分时取反赋给vUB;
[0042] 4)8位单片机将8位数据通过0x8009操作端口写入选通的RAM单元,写入数据为0x56,此过程CPLD/FPGA模拟产生一个写信号vWR,vwR低电平的时间段,vD的数据为0x5600,即RAM0x334地址单元的高8位将被写入0x56,低8位数据总线由于vUB为0而未选通,不会有数据写入,写入完成后写地址寄存器MCUwrAddr加1,MCUwrAddr由0x3344变

本文发布于:2024-09-20 21:17:07,感谢您对本站的认可!

本文链接:https://www.17tex.com/xueshu/774426.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:地址   写入   单片机   操作   存储单元   端口   数据   目标
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议