80C51原始IP核內(nèi)部RAM的擴(kuò)展方案
第一種情況:最高位為“1”時(shí),說明高128字節(jié)(80H~FFH)作為一般RAM來使用,此時(shí)把R0、R1中的地址賦給RAM地址,同時(shí)置RAM使能控制ram_write_en為“1”,實(shí)現(xiàn)對(duì)某一高位地址的寫操作。還以85H為例,執(zhí)行指令“MOV R0, #85H”, R0中內(nèi)容變?yōu)?5H,然后執(zhí)行“MOV @RO,#33H”,此時(shí)R0用作間接寄存器,進(jìn)行間接尋址,且寄存器中的字節(jié)最高位為“1”,對(duì)RAM區(qū)操作的地址就是間接寄存器中寄存的地址85H,從而實(shí)現(xiàn)對(duì)85H的數(shù)據(jù)存儲(chǔ)。
本文引用地址:http://m.butianyuan.cn/article/85158.htm第二種情況:最高位為“0”時(shí),說明只是對(duì)低128字節(jié)進(jìn)行間接尋址操作,執(zhí)行過程如一般8051。
2 64 KB內(nèi)部RAM的擴(kuò)展設(shè)計(jì)
通過對(duì)一個(gè)特殊移存器(選取84H,記為SRAM0)的軟件配置,在高128字節(jié)內(nèi)部RAM擴(kuò)展設(shè)計(jì)的基礎(chǔ)上,可以實(shí)現(xiàn)內(nèi)部64 KB RAM的擴(kuò)展。在對(duì)高128字節(jié)內(nèi)部RAM的擴(kuò)展設(shè)計(jì)中,通過對(duì)s_address_ram最高位進(jìn)行判斷,確定地址信號(hào)s_address1,進(jìn)而作為內(nèi)部RAM地址ram_address_out輸出。以這個(gè)方法為基礎(chǔ),將ram_address_out改為16位長(zhǎng),SRAM0中內(nèi)容與s_address1的值并置作為ram_address_out輸出,即ram_address_out<= SRAM0&s_address1,可以實(shí)現(xiàn)對(duì)內(nèi)部RAM 64 KB的擴(kuò)展。此時(shí)對(duì)數(shù)據(jù)進(jìn)行存取時(shí),每次對(duì)84H賦值后,CPU對(duì)數(shù)據(jù)進(jìn)行存取,對(duì)64 KB內(nèi)部RAM的尋址,就相當(dāng)于以SRAM0為頁地址指針,以256字節(jié)為頁深度進(jìn)行頁面尋址操作。相比較于以XRAM作為數(shù)據(jù)存儲(chǔ)區(qū),本設(shè)計(jì)有兩個(gè)優(yōu)勢(shì): 其一,除SRAM0中為全0的情況,其余地址空間均可直接尋址,而XRAM地址空間只能間接尋址,在進(jìn)行大量數(shù)據(jù)反復(fù)存儲(chǔ)調(diào)用時(shí),可以縮短代碼長(zhǎng)度,有效提高執(zhí)行速度;其二,由于內(nèi)部數(shù)據(jù)傳輸指令MOV大多為單指令周期指令,而外部數(shù)據(jù)傳輸指令MOVX全部是雙指令周期指令,所以在進(jìn)行大量數(shù)據(jù)存取時(shí),執(zhí)行速度會(huì)有較大提高。
3 軟硬件仿真測(cè)試
采用由Model技術(shù)公司開發(fā)的ModelSim SE 6.0進(jìn)行功能仿真,利用Keil公司的Keil uVision2編寫51匯編測(cè)試程序,編譯產(chǎn)生可執(zhí)行文件載入ROM進(jìn)行功能測(cè)試,最終的仿真結(jié)果與Keil uVision2中編譯執(zhí)行結(jié)果相對(duì)照,驗(yàn)證設(shè)計(jì)功能的正確性。對(duì)設(shè)計(jì)的測(cè)試采取黑盒測(cè)試法,測(cè)試程序是已有的一些比較復(fù)雜的算法,如DES、AES。以DES為例,明密文存取、密鑰生成、中間值暫存和結(jié)果都放在高128字節(jié)來處理,僅用到低128字節(jié)區(qū)的可位尋址區(qū),密文地址空間為90H~97H ,明文地址空間為98H~9FH, 明文數(shù)據(jù)為38H、33H、32H、37H、31H、34H、32H、33H,密鑰地址空間為80H~87H,密鑰數(shù)據(jù)為00H、31H、31H、33H、34H、35H、36H、07H,最后將80H~87H和90H~97H地址空間中的數(shù)據(jù)結(jié)果送入地址空間48H~5FH中,如圖2所示。
圖2 Keil運(yùn)行結(jié)果
將二進(jìn)制.dua可執(zhí)行文件載入ROM,使用ModelSim對(duì)其進(jìn)行功能仿真,結(jié)果如圖3所示。
圖3 ModelSim仿真結(jié)果
兩方結(jié)果對(duì)照:128~135這8個(gè)高位寄存數(shù)為:00H、00H、7EH、E1H、CCH、F0H、00H、8EH,144~159這16個(gè)高位寄存數(shù)為:26H、33H、21H、3DH、31H、0FH、1DH、4DH、00H、88H、1EH、5FH、E6H、E7H、21H、F1H,圖中的160~163位, 是用于暫存32位圈子密鑰的,這里不作詳細(xì)介紹,通過對(duì)照可知結(jié)果正確。硬件實(shí)現(xiàn)采用Altera公司的CycloneII系列的EP2C35F672C6器件作為設(shè)計(jì)載體,在QuartusII 5.0下對(duì)系統(tǒng)進(jìn)行編譯綜合下載,使用RS232串口,在每次復(fù)位時(shí),對(duì)RAM的明文和初始密鑰進(jìn)行重新配置,利用串口輸出驗(yàn)證結(jié)果。實(shí)驗(yàn)結(jié)果均正確。
結(jié)語
針對(duì)8051現(xiàn)有的RAM內(nèi)部數(shù)據(jù)緩存不能滿足實(shí)際應(yīng)用要求的現(xiàn)況,本文給出了一種新的對(duì)內(nèi)部RAM高128字節(jié)的擴(kuò)展實(shí)現(xiàn)方案,并以此為基礎(chǔ),對(duì)內(nèi)部RAM進(jìn)行了64 KB的擴(kuò)展設(shè)計(jì);通過了相應(yīng)的軟、硬件仿真測(cè)試,驗(yàn)證了設(shè)計(jì)的正確性。
參考文獻(xiàn)
[1] http://oregano.at/ip/ip12.htm.
[2] 吳炳勝,王桂梅,等.80C51單片機(jī)原理與應(yīng)用[M]. 北京: 冶金工業(yè)出版社,2001.
[3] 盧毅,賴杰.VHDL與數(shù)字電路設(shè)計(jì)[M]. 北京:科學(xué)出版社.2001:99139.
評(píng)論