80C51原始IP核內部RAM的擴展方案
第一種情況:最高位為“1”時(shí),說(shuō)明高128字節(80H~FFH)作為一般RAM來(lái)使用,此時(shí)把R0、R1中的地址賦給RAM地址,同時(shí)置RAM使能控制ram_write_en為“1”,實(shí)現對某一高位地址的寫(xiě)操作。還以85H為例,執行指令“MOV R0, #85H”, R0中內容變?yōu)?5H,然后執行“MOV @RO,#33H”,此時(shí)R0用作間接寄存器,進(jìn)行間接尋址,且寄存器中的字節最高位為“1”,對RAM區操作的地址就是間接寄存器中寄存的地址85H,從而實(shí)現對85H的數據存儲。
本文引用地址:http://dyxdggzs.com/article/85158.htm第二種情況:最高位為“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所示。
圖2 Keil運行結果
將二進(jìn)制.dua可執行文件載入ROM,使用ModelSim對其進(jìn)行功能仿真,結果如圖3所示。
圖3 ModelSim仿真結果
兩方結果對照: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ò)了相應的軟、硬件仿真測試,驗證了設計的正確性。
參考文獻
[1] http://oregano.at/ip/ip12.htm.
[2] 吳炳勝,王桂梅,等.80C51單片機原理與應用[M]. 北京: 冶金工業(yè)出版社,2001.
[3] 盧毅,賴(lài)杰.VHDL與數字電路設計[M]. 北京:科學(xué)出版社.2001:99139.
評論