一種8位單片機(jī)讀寫16位存儲(chǔ)單元ram的實(shí)現(xiàn)方法
【專利摘要】本發(fā)明公開(kāi)了一種8位單片機(jī)讀寫16位存儲(chǔ)單元RAM的實(shí)現(xiàn)方法包括以下步驟:1)將16位RAM每個(gè)存儲(chǔ)單元通過(guò)vUB分成高8位和低8位兩部分;2)用CPLD/FPGA連接單片機(jī)和RAM;3)單片機(jī)將初始目標(biāo)地址分三次寫入CPLD/FPGA地址緩存器;4)將CPLD/FPGA地址緩存器中地址寫入RAM地址寄存器MCUwrAddr、MCUrdAddr;5)單片機(jī)將8位數(shù)據(jù)寫入選通的RAM單元,寫入完成后寫地址寄存器MCUwrAddr加1;6)單片機(jī)從選通單元讀取8位數(shù)據(jù),讀取完成后讀地址寄存器MCUrdAddr加1,重復(fù)5)可連續(xù)寫入數(shù)據(jù),重復(fù)6)可連續(xù)讀取數(shù)據(jù)。本發(fā)明可以實(shí)現(xiàn)8位單片機(jī)讀寫16位存儲(chǔ)單元RAM。
【專利說(shuō)明】—種8位單片機(jī)讀寫16位存儲(chǔ)單元RAM的實(shí)現(xiàn)方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明屬于電子設(shè)計(jì)自動(dòng)化領(lǐng)域,具體涉及一種8位單片機(jī)讀寫16位存儲(chǔ)單元RAM的實(shí)現(xiàn)方法。
【背景技術(shù)】
[0002]隨著電子技術(shù)的進(jìn)步和電子器件制造工藝的提高,市面上的16位和32位單片機(jī)越來(lái)越多,但是8位單片機(jī)因其制造設(shè)計(jì)工藝成熟、價(jià)格低廉等特點(diǎn),市場(chǎng)占有率仍然很高,尤其在成本敏感和可靠性要求較高的場(chǎng)合,更占有絕對(duì)優(yōu)勢(shì),由于大多8位單片機(jī)內(nèi)部資源有限,經(jīng)常需要外擴(kuò)存儲(chǔ)器,8位單片機(jī)可以很方便與8位存儲(chǔ)單元RAM連接,但是,對(duì)16位存儲(chǔ)單元的RAM操作不方便,一定程度限制了 8位單片機(jī)的使用范圍。
【發(fā)明內(nèi)容】
[0003]本發(fā)明的目的在于克服上述現(xiàn)有技術(shù)的缺點(diǎn),提供了一種8位單片機(jī)讀寫16位存儲(chǔ)單元RAM的實(shí)現(xiàn)方法,該方法可以實(shí)現(xiàn)8位單片機(jī)讀寫16位存儲(chǔ)單元RAM。
[0004]為達(dá)到上述目的,本發(fā)明所述的8位單片機(jī)讀寫16位存儲(chǔ)單元RAM的實(shí)現(xiàn)方法,包括以下步驟:
[0005]I)將16位存儲(chǔ)單元RAM中每個(gè)存儲(chǔ)單元的初始目標(biāo)地址通過(guò)vUB分成高8位和低8位,得高低位判斷標(biāo)志;
[0006]2)通過(guò)CPLD/FPGA地址緩存器將單片機(jī)與16位存儲(chǔ)單元RAM相連接;
[0007]3) 8位單片機(jī)將初始目標(biāo)地址及高地位判斷標(biāo)志分三次寫入到CPLD/FPGA地址緩存器中,其中,第一次,8位單片機(jī)通過(guò)0x8010操作端口將初始目標(biāo)地址的低8位寫入到CPLD/FPGA地址緩存器的ADDR_BUF[7..0]中;第二次,8位單片機(jī)通過(guò)0x8011操作端口將初始目標(biāo)地址的高8位寫入到CPLD/FPGA地址緩存器的ADDR_BUF[15..8]中;第三次,8位單片機(jī)將高低位判斷標(biāo)志通過(guò)0x8014操作端口寫入CPLD/FPGA地址緩存器的vUB_BUF中;
[0008]4)將CPLD/FPGA地址緩存器中ADDR_BUF內(nèi)的初始目標(biāo)地址通過(guò)0x8012操作端口寫入到RAM地址寄存器的MCUwrAddr及MCUrdAddr中,同時(shí)將CPLD/FPGA地址緩存器中vUB_BUF內(nèi)的高低位判斷標(biāo)志通過(guò)0x8015操作端口寫入到vUB中;
[0009]5) 8位單片機(jī)通過(guò)0x8009操作端口將8位單片機(jī)內(nèi)的8位數(shù)據(jù)寫入到選通的RAM單元中,寫入完成后,寫地址寄存器MCUwrAddr加I ;
[0010]6)重復(fù)步驟5),連續(xù)寫入所有數(shù)據(jù);
[0011]7)8位單片機(jī)通過(guò)0x8008操作端口從選通的RAM單元中讀取8位單片機(jī)內(nèi)的8位數(shù)據(jù),讀取完成后,讀地址寄存器MCUrdAddr加I ;
[0012]8)重復(fù)步驟7),連續(xù)讀取所有數(shù)據(jù)。
[0013]所述高低位判斷標(biāo)志為當(dāng)vUB = O時(shí),選中高8位,當(dāng)vUB = I時(shí),選中低8位。
[0014]步驟4)所述將CPLD/FPGA地址緩存器中ADDR_BUF內(nèi)的初始目標(biāo)地址通過(guò)0x8012操作端口寫入到RAM地址寄存器的MCUwrAddr及MCUrdAddr中的具體操作過(guò)程為:當(dāng)0x8012端口寫入數(shù)據(jù)的第O位為1,即bitO = I時(shí),將CPLD/FPGA地址緩存器中ADDR_BUF內(nèi)的初始目標(biāo)地址寫入到RAM地址寄存器的MCUrdAddr中,當(dāng)0x8012端口寫入數(shù)據(jù)的第I位為1,即bitl = I時(shí),CPLD/FPGA地址緩存器中ADDR_BUF內(nèi)的初始目標(biāo)地址寫入到RAM地址寄存器的MCUwrAddr中。
[0015]步驟4)所述將CPLD/FPGA地址緩存器中vUB_BUF內(nèi)的高低位判斷標(biāo)志通過(guò)0x8015操作端口寫入到vUB中的具體操作為:當(dāng)0x8015端口寫入數(shù)據(jù)的第O位為1,即bitO = I時(shí),將CPLD/FPGA地址緩存器中vUB_BUF內(nèi)的高低位判斷標(biāo)志寫入vUB的MCUrd_vUB中,當(dāng)0x8015端口寫入數(shù)據(jù)的第I位為1,即bitl = I時(shí),將CPLD/FPGA地址緩存器中vUB_BUF內(nèi)的高低位判斷標(biāo)志寫入到vUB的MCUwr_vUB中。
[0016]本發(fā)明具有以下有益效果:
[0017]本發(fā)明所述的8位單片機(jī)讀寫16位存儲(chǔ)單元RAM的實(shí)現(xiàn)方法在實(shí)現(xiàn)的過(guò)程中,先將16為存儲(chǔ)單元RAM中每個(gè)存儲(chǔ)單元的初始目標(biāo)地址分為高8位及低8位,得高低位判斷標(biāo)志,再通過(guò)CPLD/FPGA地址緩存器將單片機(jī)與16位存儲(chǔ)單元RAM相連接,然后將初始目標(biāo)地址及高低位判斷標(biāo)志分三次寫入到CPLD/FPGA地址緩存器中,再將CPLD/FPGA地址緩存器中的內(nèi)容存儲(chǔ)到RAM地址寄存器及vUB中,然后即可通過(guò)8位單片機(jī)從選通的RAM單元中讀出數(shù)據(jù)以及往RAM單元中寫入數(shù)據(jù),通過(guò)數(shù)據(jù)的讀出及寫入各自獨(dú)立,在分頻時(shí)鐘下,讀出操作及寫入操作互不干擾,并且單次讀操作完成后,讀地址自動(dòng)加1,單次寫操作完成后,寫操作自動(dòng)加1,連續(xù)讀寫操作方便,極大的提高了連續(xù)讀寫效率。
【專利附圖】
【附圖說(shuō)明】
[0018]圖1為本發(fā)明中實(shí)施例一的設(shè)計(jì)原理圖;
[0019]圖2為本發(fā)明中實(shí)施例一的仿真實(shí)驗(yàn)結(jié)果圖。
【具體實(shí)施方式】
[0020]下面結(jié)合附圖對(duì)本發(fā)明做進(jìn)一步詳細(xì)描述:
[0021]本發(fā)明所述的8位單片機(jī)讀寫16位存儲(chǔ)單元RAM的實(shí)現(xiàn)方法包括以下步驟:
[0022]I)將16位存儲(chǔ)單元RAM中每個(gè)存儲(chǔ)單元的初始目標(biāo)地址通過(guò)vUB分成高8位和低8位,得高低位判斷標(biāo)志;
[0023]2)通過(guò)CPLD/FPGA地址緩存器將單片機(jī)與16位存儲(chǔ)單元RAM相連接;
[0024]3) 8位單片機(jī)將初始目標(biāo)地址及高地位判斷標(biāo)志分三次寫入到CPLD/FPGA地址緩存器中,其中,第一次,8位單片機(jī)通過(guò)0x8010操作端口將初始目標(biāo)地址的低8位寫入到CPLD/FPGA地址緩存器的ADDR_BUF[7..0]中;第二次,8位單片機(jī)通過(guò)0x8011操作端口將初始目標(biāo)地址的高8位寫入到CPLD/FPGA地址緩存器的ADDR_BUF[15..8]中;第三次,8位單片機(jī)將高低位判斷標(biāo)志通過(guò)0x8014操作端口寫入CPLD/FPGA地址緩存器的vUB_BUF中;
[0025]4)將CPLD/FPGA地址緩存器中ADDR_BUF內(nèi)的初始目標(biāo)地址通過(guò)0x8012操作端口寫入到RAM地址寄存器的MCUwrAddr及MCUrdAddr中,同時(shí)將CPLD/FPGA地址緩存器中vUB_BUF內(nèi)的高低位判斷標(biāo)志通過(guò)0x8015操作端口寫入到vUB中;
[0026]5) 8位單片機(jī)通過(guò)0x8009操作端口將8位單片機(jī)內(nèi)的8位數(shù)據(jù)寫入到選通的RAM單元中,寫入完成后,寫地址寄存器MCUwrAddr加I ;[0027]6)重復(fù)步驟5),連續(xù)寫入所有數(shù)據(jù);
[0028]7) 8位單片機(jī)通過(guò)0x8008操作端口從選通的RAM單元中讀取8位單片機(jī)內(nèi)的8位數(shù)據(jù),讀取完成后,讀地址寄存器MCUrdAddr加I ;
[0029]8)重復(fù)步驟7),連續(xù)讀取所有數(shù)據(jù)。
[0030]所述高低位判斷標(biāo)志為當(dāng)vUB = O時(shí),選中高8位,當(dāng)vUB = I時(shí),選中低8位。[0031 ] 步驟4)所述將CPLD/FPGA地址緩存器中ADDR_BUF內(nèi)的初始目標(biāo)地址通過(guò)0x8012操作端口寫入到RAM地址寄存器的MCUwrAddr及MCUrdAddr中的具體操作過(guò)程為:當(dāng)0x8012端口寫入數(shù)據(jù)的第O位為1,即bitO = I時(shí),將CPLD/FPGA地址緩存器中ADDR_BUF內(nèi)的初始目標(biāo)地址寫入到RAM地址寄存器的MCUrdAddr中,當(dāng)0x8012端口寫入數(shù)據(jù)的第I位為1,即bitl = I時(shí),CPLD/FPGA地址緩存器中ADDR_BUF內(nèi)的初始目標(biāo)地址寫入到RAM地址寄存器的MCUwrAddr中。
[0032]步驟4)所述將CPLD/FPGA地址緩存器中vUB_BUF內(nèi)的高低位判斷標(biāo)志通過(guò)0x8015操作端口寫入到vUB中的具體操作為:當(dāng)0x8015端口寫入數(shù)據(jù)的第O位為1,即bitO = I時(shí),將CPLD/FPGA地址緩存器中vUB_BUF內(nèi)的高低位判斷標(biāo)志寫入vUB的MCUrd_vUB中,當(dāng)0x8015端口寫入數(shù)據(jù)的第I位為1,即bitl = I時(shí),將CPLD/FPGA地址緩存器中vUB_BUF內(nèi)的高低位判斷標(biāo)志寫入到vUB的MCUwr_vUB中。
[0033]實(shí)施例一
[0034]參考圖1及圖2,8位單片機(jī)向16位存儲(chǔ)單元RAM寫入的數(shù)據(jù)為0x56,RAM地址為0x3344,該存儲(chǔ)單元高8位選通(vUB = O)。
[0035]具體包括以下步驟:
[0036]I) 8位單片機(jī)將初始目標(biāo)地址分三次寫入CPLD/FPGA地址緩存器;
[0037]a) 8位單片機(jī)將初始目標(biāo)地址的低8位通過(guò)0x8010操作端口寫入ADDR_BUF[7..0],其中,操作數(shù)為0x44,即通過(guò)CPLD/FPGA轉(zhuǎn)化,8位單片機(jī)本次寫操作結(jié)束后,ADDR_BUF[7..0]的值為 0x44 ;
[0038]b) 8位單片機(jī)將初始目標(biāo)地址的高8位通過(guò)0x8011操作端口寫入ADDR_BUF[15..8]中,操作數(shù)為0x33,即通過(guò)CPLD/FPGA轉(zhuǎn)化,8位單片機(jī)本次寫操作結(jié)束后,ADDR_BUF[15..8]的值為 0x33 ;
[0039]c) 8位單片機(jī)將高低位判斷標(biāo)志通過(guò)0x8014操作端口寫入vUB_BUF中,操作數(shù)為0x01,即通過(guò)CPLD/FPGA轉(zhuǎn)化,單片機(jī)本次寫操作結(jié)束后,vUB_BUF的值為0x01 ;
[0040]2)將CPLD/FPGA地址緩存器ADDR_BUF內(nèi)的初始目標(biāo)地址通過(guò)0x8012操作端口寫入RAM地址寄存器的MCUwrAddr及MCUrdAddr,操作數(shù)為0x03,即ADDR_BUF內(nèi)容同時(shí)寫入MCUwrAddr 及 MCUrdAddr, MCUwrAddr 和 MCUrdAddr 的值都變?yōu)?0x3344 ;
[0041 ] 3)將vUB_BUF內(nèi)的高低位判斷標(biāo)志通過(guò)0x8015操作端口寫入vUB中,將vUB_BUF內(nèi)的高低位判斷標(biāo)志同時(shí)寫入MCUrd_vUB和MCUwr_vUB,MCUrd_vUB和MCUwr_vUB的值在分頻時(shí)鐘下分時(shí)取反賦給vUB ;
[0042]4) 8位單片機(jī)將8位數(shù)據(jù)通過(guò)0x8009操作端口寫入選通的RAM單元,寫入數(shù)據(jù)為0x56,此過(guò)程CPLD/FPGA模擬產(chǎn)生一個(gè)寫信號(hào)vWR,vwR低電平的時(shí)間段,vD的數(shù)據(jù)為0x5600,即RAM0x334地址單元的高8位將被寫入0x56,低8位數(shù)據(jù)總線由于vUB為O而未選通,不會(huì)有數(shù)據(jù)寫入,寫入完成后寫地址寄存器MCUwrAddr加1,MCUwrAddr由0x3344變?yōu)?x3345,重復(fù)上述操作,即可連續(xù)寫入數(shù)據(jù);
[0043]5) 8位單片機(jī)通過(guò)0x8008操作端口從選通的RAM單元中讀取8位數(shù)據(jù),讀取完成后讀地址寄存器MCUrdAddr加LMCUrdAddr由0x3344變?yōu)?x3345,重復(fù)上述步驟,即可連續(xù)讀取數(shù)據(jù)。
【權(quán)利要求】
1.一種8位單片機(jī)讀寫16位存儲(chǔ)單元RAM的實(shí)現(xiàn)方法,其特征在于,包括以下步驟: 1)將16位存儲(chǔ)單元RAM中每個(gè)存儲(chǔ)單元的地址通過(guò)vUB分成高8位和低8位,得高低位判斷標(biāo)志; 2)通過(guò)CPLD/FPGA地址緩存器將單片機(jī)與16位存儲(chǔ)單元RAM相連接; 3)8位單片機(jī)將初始目標(biāo)地址及高地位判斷標(biāo)志分三次寫入到CPLD/FPGA地址緩存器中,其中,第一次,8位單片機(jī)通過(guò)0x8010操作端口將初始目標(biāo)地址的低8位寫入到CPLD/FPGA地址緩存器的ADDR_BUF[7..0]中;第二次,8位單片機(jī)通過(guò)0x8011操作端口將初始目標(biāo)地址的高8位寫入到CPLD/FPGA地址緩存器的ADDR_BUF[15..8]中;第三次,8位單片機(jī)將高低位判斷標(biāo)志通過(guò)0x8014操作端口寫入CPLD/FPGA地址緩存器的vUB_BUF中; 4)將CPLD/FPGA地址緩存器中ADDR_BUF內(nèi)的初始目標(biāo)地址通過(guò)0x8012操作端口寫入到RAM地址寄存器的MCUwrAddr及MCUrdAddr中,同時(shí)將CPLD/FPGA地址緩存器中vUB_BUF內(nèi)的高低位判斷標(biāo)志通過(guò)0x8015操作端口寫入到vUB中; 5)8位單片機(jī)通過(guò)0x8009操作端口將8位單片機(jī)內(nèi)的8位數(shù)據(jù)寫入到選通的RAM單元中,寫入完成后,寫地址寄存器MCUwrAddr加I ; 6)重復(fù)步驟5),連續(xù)寫入所有數(shù)據(jù); 7)8位單片機(jī)通過(guò)0x8008操作端口從選通的RAM單元中讀取8位單片機(jī)內(nèi)的8位數(shù)據(jù),讀取完成后,讀地址寄存器MCUrdAddr加I ; 8)重復(fù)步驟7),連續(xù)讀取所有數(shù)據(jù)。
2.根據(jù)權(quán)利要求1所述的8位單片機(jī)讀寫16位存儲(chǔ)單元RAM的實(shí)現(xiàn)方法,其特征在于,所述高低位判斷標(biāo)志為當(dāng)vUB = O時(shí),選中高8位,當(dāng)vUB = I時(shí),選中低8位。
3.根據(jù)權(quán)利要求1所述的8位單片機(jī)讀寫16位存儲(chǔ)單元RAM的實(shí)現(xiàn)方法,其特征在于,步驟4)所述將CPLD/FPGA地址緩存器中ADDR_BUF內(nèi)的初始目標(biāo)地址通過(guò)0x8012操作端口寫入到RAM地址寄存器的MCUwrAddr及MCUrdAddr中的具體操作過(guò)程為:當(dāng)0x8012端口寫入數(shù)據(jù)的第O位為1,即bitO = I時(shí),將CPLD/FPGA地址緩存器中ADDR_BUF內(nèi)的初始目標(biāo)地址寫入到RAM地址寄存器的MCUrdAddr中,當(dāng)0x8012端口寫入數(shù)據(jù)的第I位為1,即bitl = I時(shí),CPLD/FPGA地址緩存器中ADDR_BUF內(nèi)的初始目標(biāo)地址寫入到RAM地址寄存器的 MCUwrAddr 中。
4.根據(jù)權(quán)利要求3所述的8位單片機(jī)讀寫16位存儲(chǔ)單元RAM的實(shí)現(xiàn)方法,其特征在于,步驟4)所述將CPLD/FPGA地址緩存器中vUB_BUF內(nèi)的高低位判斷標(biāo)志通過(guò)0x8015操作端口寫入到vUB中的具體操作為:當(dāng)0x8015端口寫入數(shù)據(jù)的第O位為1,即bitO = I時(shí),將CPLD/FPGA地址緩存器中vUB_BUF內(nèi)的高低位判斷標(biāo)志寫入vUB的MCUrd_vUB中,當(dāng)0x8015端口寫入數(shù)據(jù)的第I位為1,即bitl = I時(shí),將CPLD/FPGA地址緩存器中vUB_BUF內(nèi)的高低位判斷標(biāo)志寫入到vUB的MCUwr_vUB中。
【文檔編號(hào)】G06F12/02GK104021086SQ201410225644
【公開(kāi)日】2014年9月3日 申請(qǐng)日期:2014年5月26日 優(yōu)先權(quán)日:2014年5月26日
【發(fā)明者】陶濤, 劉毅, 梅雪松, 張東升, 孫挪剛, 姜歌東 申請(qǐng)人:西安交通大學(xué)