80C51原始IP核內(nèi)部RAM的擴(kuò)展方案
發(fā)布時間:2008/8/16 0:00:00 訪問次數(shù):1335
引言
80c51系列單片機(jī)是一類經(jīng)典的8位微處理器,其設(shè)計方法和體系結(jié)構(gòu)一直是其他各類單片機(jī)設(shè)計的參考典范,自從20世紀(jì)80年代面世以后,得到了極大的發(fā)展與應(yīng)用。
直到今天,市場上還有一大部分單片機(jī)應(yīng)用成品將其作為處理核心。基于80c51系列單片機(jī)無知識產(chǎn)權(quán)保護(hù)、市場應(yīng)用廣泛等優(yōu)點,對其進(jìn)行功能拓展,既有利于經(jīng)濟(jì)上節(jié)約成本,也有利于成果的推廣使用。而隨著單片機(jī)應(yīng)用日趨復(fù)雜化,傳統(tǒng)的51系列單片機(jī)在設(shè)計上的不足逐漸顯現(xiàn)出來。如在現(xiàn)有128字節(jié)內(nèi)部ram基礎(chǔ)上,處理一些比較復(fù)雜的算法就顯不足。鑒于此,本文在oregano公司設(shè)計的8051 ip核(即下述mc8051)基礎(chǔ)上,進(jìn)行了對其內(nèi)部ram高128字節(jié)擴(kuò)展。給出一種新的擴(kuò)展設(shè)計方法,實現(xiàn)了對與一般ram區(qū)地址空間相連的高128字節(jié)的間接尋址操作,并以此為基礎(chǔ),對內(nèi)部ram進(jìn)行了可達(dá)64 kb的擴(kuò)展實現(xiàn),通過了相應(yīng)的軟硬件仿真測試。
1 對mc8051高位128字節(jié)的擴(kuò)展設(shè)計
對mc8051高位128字節(jié)的擴(kuò)展設(shè)計主要分3個方面加以說明:一是傳統(tǒng)80c51系列的內(nèi)部基本結(jié)構(gòu);二是高128字節(jié)的尋址方式;三是對ip核內(nèi)部的ram地址選擇控制。
1.1 傳統(tǒng)80c51系列的內(nèi)部基本結(jié)構(gòu)
80c51是經(jīng)典的單片機(jī)系列,具有典型的單片機(jī)體系結(jié)構(gòu),由cpu系統(tǒng)、rom、ram、i/o口以及特殊功能寄存器sfr、2個16位定時/計數(shù)器、5個中斷源和1個串口組成。針對本文所要討論的內(nèi)容,這里介紹一下80c51存儲結(jié)構(gòu)和尋址方式:80c51系列單片機(jī)存儲器結(jié)構(gòu)采用哈佛型結(jié)構(gòu),物理上共分片內(nèi)外程序存儲器、片內(nèi)外數(shù)據(jù)存儲器4個存儲空間。對于數(shù)據(jù)存儲器,片內(nèi)外數(shù)據(jù)存儲器地址彼此獨立,指令尋址各自不同,這里主要關(guān)注片內(nèi)數(shù)據(jù)存儲單元的結(jié)構(gòu)。
8051單片機(jī)共有7種尋址方式,這里只對其中3種作一下簡要介紹:立即尋址,操作碼后的一個字節(jié)就是實際操作數(shù)本身;寄存器尋址,操作碼后為某一寄存器編號,寄存器的內(nèi)容為操作數(shù);寄存器間接尋址,其與寄存器尋址的區(qū)別在于前者寄存器中的內(nèi)容就是操作數(shù),而后者寄存器中的內(nèi)容為操作數(shù)地址,此地址指向的寄存器中存入的數(shù)據(jù)才是實際操作數(shù)本身。
1.2 高128字節(jié)的尋址方式
由前面介紹內(nèi)容可知,mc8051內(nèi)部ram分為地址相連、功能不同的兩部分:低128字節(jié)的內(nèi)部用戶ram區(qū)和高128字節(jié)的特殊功能寄存器區(qū)(sfr)。這兩部分均可用寄存器直接、間接尋址方式進(jìn)行尋址操作。經(jīng)過設(shè)計修改的8051,低128字節(jié)的功能和操作方式完全不變,對其高128字節(jié),分為地址重疊和功能不同的兩部分,以不同的尋址方式加以區(qū)別,控制操作。高128字節(jié)如果作為內(nèi)部用戶ram使用,只可以通過寄存器r0、r1進(jìn)行尋址,以地址為85h的寄存器單元為例,若此時85h作為sfr,則用命令“mov 85h, #33h”;若此時作為一般內(nèi)部用戶ram單元,則用命令:
mov r0,# 85h
mov @r0,#33h
在mc8051中,寄存器r0、r1只應(yīng)用于寄存器間接尋址使用,即r0、r1中存儲的內(nèi)容為間接尋址中操作數(shù)的地址。對高128地址空間,如果作為一般的ram寄存區(qū)使用,只采用間接尋址;如果作為特殊功能寄存器區(qū)(sfr),則采取除間接尋址外的其他尋址方式。這樣就可以通過只對r0、r1中內(nèi)容進(jìn)行條件判定,確定是否觸發(fā)對高128地址空間進(jìn)行一般ram數(shù)據(jù)操作。
1.3 ip核內(nèi)部的ram地址選擇控制
在mc8051中,對低128字節(jié)用戶ram區(qū)的讀寫有專門的地址輸出ram_address_out。由于1個字節(jié)的尋址長度為256,所以ram_address_out只取內(nèi)部地址s_adr低7位,即ram_address_out<=s_adr(6 downto 0),輔以ram寫使能控制,實現(xiàn)對低128字節(jié)的讀寫。這里由于要對ram區(qū)擴(kuò)展成為256字節(jié),所以用戶ram區(qū)的地址應(yīng)該可以尋址256字節(jié)長度。這就要求對ip核中對ram區(qū)的地址傳遞有相應(yīng)的修改,修改后地址的具體傳遞過程如圖1所示。
一個完整的執(zhí)行過程如下所述:首先cpu從rom讀取指令,然后到內(nèi)部狀態(tài)機(jī)進(jìn)行指令解釋,送入譯碼器執(zhí)行具體的數(shù)據(jù)和地址的存取操作(譯碼器中通過地址多路選擇器adr_mux和數(shù)據(jù)多路選擇器data_mux來實現(xiàn)對地址和數(shù)據(jù)的控制)。如果此時命令不涉及寄存器間接尋址,由圖1可知,取到的ram地址就是一般8051的執(zhí)行結(jié)果。如果此時進(jìn)行寄存器間接尋址,則可分為兩種情況:一是對高128字節(jié)的間接尋址,此時的操作目的,是要對高128字節(jié)進(jìn)行一般ram的數(shù)據(jù)操作;二是除第一種情況外的一般寄存器間接尋址操作。由于sfr不能使用寄存器間接尋址,所以這兩種情況可以根據(jù)r0、r1中存儲的地址的最高位進(jìn)行判別。
第一種情況:最高位為“1”時,說明高128字節(jié)(80h~ffh)作為一般ram來使用,此時把r0、r1中的地址賦給ram地址,同時置ram使能控制ram_write_en為“1”,實現(xiàn)對某一高位地址的寫操作。還以85h為例,執(zhí)行指令“mov r0, #85h”, r0中內(nèi)容變?yōu)?5h,然后執(zhí)行“mov @ro,#33h”,此時r0用作間接寄存器,進(jìn)行間接尋址,且寄存器中的字節(jié)最高位為“1”,對ram區(qū)操作的地址就是
引言
80c51系列單片機(jī)是一類經(jīng)典的8位微處理器,其設(shè)計方法和體系結(jié)構(gòu)一直是其他各類單片機(jī)設(shè)計的參考典范,自從20世紀(jì)80年代面世以后,得到了極大的發(fā)展與應(yīng)用。
直到今天,市場上還有一大部分單片機(jī)應(yīng)用成品將其作為處理核心。基于80c51系列單片機(jī)無知識產(chǎn)權(quán)保護(hù)、市場應(yīng)用廣泛等優(yōu)點,對其進(jìn)行功能拓展,既有利于經(jīng)濟(jì)上節(jié)約成本,也有利于成果的推廣使用。而隨著單片機(jī)應(yīng)用日趨復(fù)雜化,傳統(tǒng)的51系列單片機(jī)在設(shè)計上的不足逐漸顯現(xiàn)出來。如在現(xiàn)有128字節(jié)內(nèi)部ram基礎(chǔ)上,處理一些比較復(fù)雜的算法就顯不足。鑒于此,本文在oregano公司設(shè)計的8051 ip核(即下述mc8051)基礎(chǔ)上,進(jìn)行了對其內(nèi)部ram高128字節(jié)擴(kuò)展。給出一種新的擴(kuò)展設(shè)計方法,實現(xiàn)了對與一般ram區(qū)地址空間相連的高128字節(jié)的間接尋址操作,并以此為基礎(chǔ),對內(nèi)部ram進(jìn)行了可達(dá)64 kb的擴(kuò)展實現(xiàn),通過了相應(yīng)的軟硬件仿真測試。
1 對mc8051高位128字節(jié)的擴(kuò)展設(shè)計
對mc8051高位128字節(jié)的擴(kuò)展設(shè)計主要分3個方面加以說明:一是傳統(tǒng)80c51系列的內(nèi)部基本結(jié)構(gòu);二是高128字節(jié)的尋址方式;三是對ip核內(nèi)部的ram地址選擇控制。
1.1 傳統(tǒng)80c51系列的內(nèi)部基本結(jié)構(gòu)
80c51是經(jīng)典的單片機(jī)系列,具有典型的單片機(jī)體系結(jié)構(gòu),由cpu系統(tǒng)、rom、ram、i/o口以及特殊功能寄存器sfr、2個16位定時/計數(shù)器、5個中斷源和1個串口組成。針對本文所要討論的內(nèi)容,這里介紹一下80c51存儲結(jié)構(gòu)和尋址方式:80c51系列單片機(jī)存儲器結(jié)構(gòu)采用哈佛型結(jié)構(gòu),物理上共分片內(nèi)外程序存儲器、片內(nèi)外數(shù)據(jù)存儲器4個存儲空間。對于數(shù)據(jù)存儲器,片內(nèi)外數(shù)據(jù)存儲器地址彼此獨立,指令尋址各自不同,這里主要關(guān)注片內(nèi)數(shù)據(jù)存儲單元的結(jié)構(gòu)。
8051單片機(jī)共有7種尋址方式,這里只對其中3種作一下簡要介紹:立即尋址,操作碼后的一個字節(jié)就是實際操作數(shù)本身;寄存器尋址,操作碼后為某一寄存器編號,寄存器的內(nèi)容為操作數(shù);寄存器間接尋址,其與寄存器尋址的區(qū)別在于前者寄存器中的內(nèi)容就是操作數(shù),而后者寄存器中的內(nèi)容為操作數(shù)地址,此地址指向的寄存器中存入的數(shù)據(jù)才是實際操作數(shù)本身。
1.2 高128字節(jié)的尋址方式
由前面介紹內(nèi)容可知,mc8051內(nèi)部ram分為地址相連、功能不同的兩部分:低128字節(jié)的內(nèi)部用戶ram區(qū)和高128字節(jié)的特殊功能寄存器區(qū)(sfr)。這兩部分均可用寄存器直接、間接尋址方式進(jìn)行尋址操作。經(jīng)過設(shè)計修改的8051,低128字節(jié)的功能和操作方式完全不變,對其高128字節(jié),分為地址重疊和功能不同的兩部分,以不同的尋址方式加以區(qū)別,控制操作。高128字節(jié)如果作為內(nèi)部用戶ram使用,只可以通過寄存器r0、r1進(jìn)行尋址,以地址為85h的寄存器單元為例,若此時85h作為sfr,則用命令“mov 85h, #33h”;若此時作為一般內(nèi)部用戶ram單元,則用命令:
mov r0,# 85h
mov @r0,#33h
在mc8051中,寄存器r0、r1只應(yīng)用于寄存器間接尋址使用,即r0、r1中存儲的內(nèi)容為間接尋址中操作數(shù)的地址。對高128地址空間,如果作為一般的ram寄存區(qū)使用,只采用間接尋址;如果作為特殊功能寄存器區(qū)(sfr),則采取除間接尋址外的其他尋址方式。這樣就可以通過只對r0、r1中內(nèi)容進(jìn)行條件判定,確定是否觸發(fā)對高128地址空間進(jìn)行一般ram數(shù)據(jù)操作。
1.3 ip核內(nèi)部的ram地址選擇控制
在mc8051中,對低128字節(jié)用戶ram區(qū)的讀寫有專門的地址輸出ram_address_out。由于1個字節(jié)的尋址長度為256,所以ram_address_out只取內(nèi)部地址s_adr低7位,即ram_address_out<=s_adr(6 downto 0),輔以ram寫使能控制,實現(xiàn)對低128字節(jié)的讀寫。這里由于要對ram區(qū)擴(kuò)展成為256字節(jié),所以用戶ram區(qū)的地址應(yīng)該可以尋址256字節(jié)長度。這就要求對ip核中對ram區(qū)的地址傳遞有相應(yīng)的修改,修改后地址的具體傳遞過程如圖1所示。
一個完整的執(zhí)行過程如下所述:首先cpu從rom讀取指令,然后到內(nèi)部狀態(tài)機(jī)進(jìn)行指令解釋,送入譯碼器執(zhí)行具體的數(shù)據(jù)和地址的存取操作(譯碼器中通過地址多路選擇器adr_mux和數(shù)據(jù)多路選擇器data_mux來實現(xiàn)對地址和數(shù)據(jù)的控制)。如果此時命令不涉及寄存器間接尋址,由圖1可知,取到的ram地址就是一般8051的執(zhí)行結(jié)果。如果此時進(jìn)行寄存器間接尋址,則可分為兩種情況:一是對高128字節(jié)的間接尋址,此時的操作目的,是要對高128字節(jié)進(jìn)行一般ram的數(shù)據(jù)操作;二是除第一種情況外的一般寄存器間接尋址操作。由于sfr不能使用寄存器間接尋址,所以這兩種情況可以根據(jù)r0、r1中存儲的地址的最高位進(jìn)行判別。
第一種情況:最高位為“1”時,說明高128字節(jié)(80h~ffh)作為一般ram來使用,此時把r0、r1中的地址賦給ram地址,同時置ram使能控制ram_write_en為“1”,實現(xiàn)對某一高位地址的寫操作。還以85h為例,執(zhí)行指令“mov r0, #85h”, r0中內(nèi)容變?yōu)?5h,然后執(zhí)行“mov @ro,#33h”,此時r0用作間接寄存器,進(jìn)行間接尋址,且寄存器中的字節(jié)最高位為“1”,對ram區(qū)操作的地址就是
熱門點擊
- 單片機(jī)驅(qū)動蜂鳴器原理與設(shè)計
- 51單片機(jī)8*8點陣LED顯示原理及程序
- 80C51原始IP核內(nèi)部RAM的擴(kuò)展方案
- 單片機(jī)的圖形化編程方法探討
- 用AT89S51單片機(jī)來制作的手動計數(shù)器
- Proteus在單片機(jī)系統(tǒng)設(shè)計中的應(yīng)用
- TEA5767收音機(jī)模塊的C51控制程序
- pic單片機(jī)的模擬I2C通信
- ST推出基于STM8內(nèi)核的STM8S系列8位
- 單片機(jī)相關(guān)常用名詞解釋
推薦技術(shù)資料
- 硬盤式MP3播放器終級改
- 一次偶然的機(jī)會我結(jié)識了NE0 2511,那是一個遠(yuǎn)方的... [詳細(xì)]
- MOSFET 電感單片降壓開關(guān)模式變換器優(yōu)勢
- SiC MOSFET 和 IG
- 新型 電隔離無芯線性霍爾效應(yīng)電
- 業(yè)界超小絕對位置編碼器技術(shù)參數(shù)設(shè)計
- 高帶寬、更高分辨率磁角度傳感技術(shù)應(yīng)用探究
- MagAlpha 角度位置傳感
- 多媒體協(xié)處理器SM501在嵌入式系統(tǒng)中的應(yīng)用
- 基于IEEE802.11b的EPA溫度變送器
- QUICCEngine新引擎推動IP網(wǎng)絡(luò)革新
- SoC面世八年后的產(chǎn)業(yè)機(jī)遇
- MPC8xx系列處理器的嵌入式系統(tǒng)電源設(shè)計
- dsPIC及其在交流變頻調(diào)速中的應(yīng)用研究