80C51原始IP核內部RAM的擴展方案
引 言
本文引用地址:http://dyxdggzs.com/article/82699.htm80C51系列單片機是一類(lèi)經(jīng)典的8位微處理器,其設計方法和體系結構一直是其他各類(lèi)單片機設計的參考典范,自從20世紀80年代面世以后,得到了極大的發(fā)展與應用。直到今天,市場(chǎng)上還有一大部分單片機應用成品將其作為處理核心?;?0C51系列單片機無(wú)知識產(chǎn)權保護、市場(chǎng)應用廣泛等優(yōu)點(diǎn),對其進(jìn)行功能拓展,既有利于經(jīng)濟上節約成本,也有利于成果的推廣使用。而隨著(zhù)單片機應用日趨復雜化,傳統的51系列單片機在設計上的不足逐漸顯現出來(lái)。如在現有128字節內部RAM基礎上,處理一些比較復雜的算法就顯不足。鑒于此,本文在Oreg-ano公司設計的8051 IP核(即下述MC8051)基礎上,進(jìn)行了對其內部RAM高128字節擴展。給出一種新的擴展設計方法,實(shí)現了對與一般RAM區地址空間相連的高128字節的間接尋址操作,并以此為基礎,對內部RAM進(jìn)行了可達64 KB的擴展實(shí)現,通過(guò)了相應的軟硬件仿真測試。
1 對MC8051高位128字節的擴展設計
對MC8051高位128字節的擴展設計主要分3個(gè)方面加以說(shuō)明:一是傳統80C51系列的內部基本結構;二是高128字節的尋址方式;三是對IP核內部的RAM地址選擇控制。
1.1 傳統80C51系列的內部基本結構
80C51是經(jīng)典的單片機系列,具有典型的單片機體系結構,由CPU系統、ROM、RAM、I/O口以及特殊功能寄存器SFR、2個(gè)16位定時(shí)/計數器、5個(gè)中斷源和1個(gè)串口組成。針對本文所要討論的內容,這里介紹一下80C51存儲結構和尋址方式:80C51系列單片機存儲器結構采用哈佛型結構,物理上共分片內外程序存儲器、片內外數據存儲器4個(gè)存儲空間。對于數據存儲器,片內外數據存儲器地址彼此獨立,指令尋址各自不同,這里主要關(guān)注片內數據存儲單元的結構。
8051單片機共有7種尋址方式,這里只對其中3種作一下簡(jiǎn)要介紹:立即尋址,操作碼后的一個(gè)字節就是實(shí)際操作數本身;寄存器尋址,操作碼后為某一寄存器編號,寄存器的內容為操作數;寄存器間接尋址,其與寄存器尋址的區別在于前者寄存器中的內容就是操作數,而后者寄存器中的內容為操作數地址,此地址指向的寄存器中存入的數據才是實(shí)際操作數本身。
1.2 高128字節的尋址方式
由前面介紹內容可知,MC8051內部RAM分為地址相連、功能不同的兩部分:低128字節的內部用戶(hù)RAM區和高128字節的特殊功能寄存器區(SFR)。這兩部分均可用寄存器直接、間接尋址方式進(jìn)行尋址操作。經(jīng)過(guò)設計修改的8051,低128字節的功能和操作方式完全不變,對其高128字節,分為地址重疊和功能不同的兩部分,以不同的尋址方式加以區別,控制操作。高128字節如果作為內部用戶(hù)RAM使用,只可以通過(guò)寄存器R0、R1進(jìn)行尋址,以地址為85H的寄存器單元為例,若此時(shí)85H作為SFR,則用命令“MOV 85H,#33H”;若此時(shí)作為一般內部用戶(hù)RAM單元,則用命令:
MOV R0,#85H
MOV @R0,#33H
在MC8051中,寄存器R0、R1只應用于寄存器間接尋址使用,即R0、R1中存儲的內容為間接尋址中操作數的地址。對高128地址空間,如果作為一般的RAM寄存區使用,只采用間接尋址;如果作為特殊功能寄存器區(SFR),則采取除間接尋址外的其他尋址方式。這樣就可以通過(guò)只對.R0、R1中內容進(jìn)行條件判定,確定是否觸發(fā)對高128地址空間進(jìn)行一般RAM數據操作。
1.3 IP核內部的RAM地址選擇控制
在MC8051中,對低128字節用戶(hù)RAM區的讀寫(xiě)有專(zhuān)門(mén)的地址輸出ram_address_out。由于1個(gè)字節的尋址長(cháng)度為256,所以ram_addreSS_out只取內部地址s_adr低7位,即ram_address_out<=s_adr(6 downto 0),輔以RAM寫(xiě)使能控制,實(shí)現對低128字節的讀寫(xiě)。這里由于要對RAM區擴展成為256字節,所以用戶(hù)RAM區的地址應該可以尋址256字節長(cháng)度。這就要求對IP核中對RAM區的地址傳遞有相應的修改,修改后地址的具體傳遞過(guò)程如圖1所示。
一個(gè)完整的執行過(guò)程如下所述:首先CPU從ROM讀取指令,然后到內部狀態(tài)機進(jìn)行指令解釋?zhuān)腿胱g碼器執行具體的數據和地址的存取操作(譯碼器中通過(guò)地址多路選擇器adr__mux和數據多路選擇器data_mux來(lái)實(shí)現對地址和數據的控制)。如果此時(shí)命令不涉及寄存器間接尋址,由圖1可知,取到的RAM地址就是一般8051的執行結果。如果此時(shí)進(jìn)行寄存器間接尋址,則可分為兩種情況:一是對高128字節的間接尋址,此時(shí)的操作目的,是要對高128字節進(jìn)行一般RAM的數據操作;二是除第一種情況外的一般寄存器間接尋址操作。由于SFR不能使用寄存器間接尋址,所以這兩種情況可以根據R0、R1中存儲的地址的最高位進(jìn)行判別。
第一種情況:最高位為“1”時(shí),說(shuō)明高128字節(80H~FFH)作為一般RAM來(lái)使用,此時(shí)把R0、R1中的地址賦給RAM地址,同時(shí)置RAM使能控制ram_write_en為“1”,實(shí)現對某一高位地址的寫(xiě)操作。還以85H為例,執行指令“MOVR0,#85H”,R0中內容變?yōu)?5H,然后執行“MOV @R0,#33H”,此時(shí)R0用作間接寄存器,進(jìn)行間接尋址,且寄存器中的字節最高位為“1”,對RAM區操作的地址就是間接寄存器中寄存的地址85H,從而實(shí)現對85H的數據存儲。
第二種情況:最高位為“0”時(shí),說(shuō)明只是對低128字節進(jìn)行間接尋址操作,執行過(guò)程如一般8051。
2 64 KB內部RAM的擴展設計
通過(guò)對一個(gè)特殊移存器(選取84H,記為SRAM0)的軟件配置,在高128字節內部RAM擴展設計的基礎上,可以實(shí)現內部64 KB RAM的擴展。在對高128字節內部RAM的擴展設計中,通過(guò)對s_address_ram最高位進(jìn)行判斷,確定地址信號s_address1,進(jìn)而作為內部RAM地址ram_address_out輸出。以這個(gè)方法為基礎,將ram_address_out改為16位長(cháng),SRAM0中內容與s_address1的值并置作為ram_address_out輸出,即ram_address_out<=SRAM0&s_address1,可以實(shí)現對內部RAM 64 KB的擴展。此時(shí)對數據進(jìn)行存取時(shí),每次對84H賦值后,CPU對數據進(jìn)行存取,對64 KB內部RAM的尋址,就相當于以SRAM0為頁(yè)地址指針,以256字節為頁(yè)深度進(jìn)行頁(yè)面尋址操作。相比較于以XRAM作為數據存儲區,本設計有兩個(gè)優(yōu)勢:其一,除SRAM0中為全0的情況,其余地址空間均可直接尋址,而XRAM地址空間只能間接尋址,在進(jìn)行大量數據反復存儲調用時(shí),可以縮短代碼長(cháng)度,有效提高執行速度;其二,由于內部數據傳輸指令MOV大多為單指令周期指令,而外部數據傳輸指令MOVX全部是雙指令周期指令,所以在進(jìn)行大量數據存取時(shí),執行速度會(huì )有較大提高。
3 軟硬件仿真測試
采用由Model技術(shù)公司開(kāi)發(fā)的ModelSim SE 6.0進(jìn)行功能仿真,利用Keil公司的Keil uVision2編寫(xiě)51匯編測試程序,編譯產(chǎn)生可執行文件載入ROM進(jìn)行功能測試,最終的仿真結果與Keil uVision2中編譯執行結果相對照,驗證設計功能的正確性。對設計的測試采取黑盒測試法,測試程序是已有的一些比較復雜的算法,如DES、AES。以DES為例,明密文存取、密鑰生成、中間值暫存和結果都放在高128字節來(lái)處理,僅用到低128字節區的可位尋址區,密文地址空間為90H~97H,明文地址空間為98H~9FH,明文數據為38H、33H、32H、37H、31H、34H、32H、33H,密鑰地址空間為80H~87H,密鑰數據為00H、31H、31H、33H、34H、35H、36H、07H,最后將80H~87H和90H~97H地址空間中的數據結果送入地址空間48H~5FH中,如圖2所示。
將二進(jìn)制.dua可執行文件載入ROM,使用ModelSim對其進(jìn)行功能仿真,結果如圖3所示。
兩方結果對照:128~135這8個(gè)高位寄存數為:00H、00H、7EH、E1H、CCH、F0H、00H、8EH,144~159這16個(gè)高位寄存數為:26H、33H、21H、3DH、31H、0FH、1DH、 4DH、00H、88H、1EH、5FH、E6H、E7H、21H、F1H,圖中的160~163位,是用于暫存32位圈子密鑰的,這里不作詳細介紹,通過(guò)對照可知結果正確。硬件實(shí)現采用Altera公司的CycloneII系列的EP2C35F672C6器件作為設計載體,在QuartusII 5.0下對系統進(jìn)行編譯綜合下載,使用RS232串口,在每次復位時(shí),對RAM的明文和初始密鑰進(jìn)行重新配置,利用串口輸出驗證結果。實(shí)驗結果均正確。
結 語(yǔ)
針對8051現有的RAM內部數據緩存不能滿(mǎn)足實(shí)際應用要求的現況,本文給出了一種新的對內部RAM高128字節的擴展實(shí)現方案,并以此為基礎,對內部RAM進(jìn)行了64 KB的擴展設計;通過(guò)了相應的軟、硬件仿真測試,驗證了設計的正確性。
tcp/ip相關(guān)文章:tcp/ip是什么
評論