亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        16位嵌入式RISC微處理器設(shè)計

        2013-05-14 11:33:58雷少波
        關(guān)鍵詞:譯碼寄存器中斷

        雷少波,黃 民

        (北京信息科技大學(xué) 機(jī)電工程學(xué)院,北京 100192)

        隨著微電子及EDA技術(shù)的高速發(fā)展,可編程邏輯器件的研發(fā)與應(yīng)用也取得了長足的進(jìn)步。其中,基于現(xiàn)場可編程門陣列(FPGA)的片上系統(tǒng)(System on Chip)在嵌入式系統(tǒng)中得到了廣泛的應(yīng)用。與傳統(tǒng)的專用集成電路(ASIC)相比,其具有開發(fā)周期短、設(shè)計簡單靈活等特點(diǎn)。

        本文描述了基于FPGA的16 bit嵌入式微處理器的結(jié)構(gòu)設(shè)計。該處理器采用程序存儲器與數(shù)據(jù)存儲器分離的哈佛型結(jié)構(gòu),采用精簡指令集(RISC),指令面向寄存器操作,加快了運(yùn)行速度,簡化了控制邏輯。

        1 系統(tǒng)結(jié)構(gòu)設(shè)計

        該處理器執(zhí)行指令時按照取指(IF)、譯碼(ID)、執(zhí)行(EX)和結(jié)果保存(WR)4個階段依次進(jìn)行。由于采用4級流水線結(jié)構(gòu),每個時鐘周期能完成一條指令的執(zhí)行。

        1.1 指令系統(tǒng)

        該處理器采用RISC型指令,設(shè)置了數(shù)據(jù)傳送、算術(shù)邏輯運(yùn)算和程序控制3大類共21條指令,指令格式固定,每條指令長度為32 bit。

        1.2 硬件結(jié)構(gòu)

        該處理器共有4級流水線,因此可將硬件基本劃分為取指、譯碼、執(zhí)行和結(jié)果保存4部分。

        1.2.1 取指

        取指部分結(jié)構(gòu)如圖1所示。與參考文獻(xiàn)[1]中提及的處理器取指部分相比,其增加了PC選擇生成器G_PC,通過它實(shí)現(xiàn)了無延遲的程序轉(zhuǎn)移指令。

        G_PC是本部分的核心,其部分Verilog HDL實(shí)現(xiàn)代碼如下:

        圖1 處理器取指部分結(jié)構(gòu)

        優(yōu)先編碼器coder則從硬件電路上實(shí)現(xiàn)了中斷源的優(yōu)先級,即3號中斷優(yōu)先級最高,然后依次遞減(3號中斷的優(yōu)先級值為 4,2號中斷的優(yōu)先級值為 3,1號中斷為2,0號中斷為 1)。coder的輸出信號 s0既代表了中斷的優(yōu)先級,又起到了選擇中斷入口地址的作用。

        取指部分的具體工作流程如下。

        (1)假設(shè)此時指令地址add_pc在ROM中對應(yīng)的指令inst為sub r0,r1,r2,此類語句不會使下一條指令地址發(fā)生轉(zhuǎn)移。同時假設(shè)沒有中斷信號產(chǎn)生,于是當(dāng)下一個時鐘上升沿到達(dá)時,由G_PC生成的控制信號s1將add_pc+4選通送入PC寄存器中,即取出物理地址相鄰的下一條指令 (加4是因?yàn)橐粭l指令有 32 bit,共4 B)。

        假設(shè) add_pc在 ROM中對應(yīng)的指令 inst為 sub r0,r1,r2,且中斷狀態(tài)棧 status頂部單元數(shù)據(jù)為 0。此時有中斷信號0和中斷信號2產(chǎn)生,優(yōu)先編碼器coder生成的s0為 2號中斷的優(yōu)先級 3(大于status頂部數(shù)據(jù) 0),于是中斷請求信號inta有效。當(dāng)下一個時鐘上升沿到達(dá)時,G_PC生成的 s2信號和epc_down信號將add_pc+4壓入返回地址棧EPC中,s0和由G_PC產(chǎn)生的信號s1將2號中斷的入口地址v2送入PC寄存器中(0號中斷被忽略掉),同時將s0的值 3(即2號中斷的優(yōu)先級)壓入中斷狀態(tài)棧status頂部。

        (2)假設(shè)此時add_pc在 ROM中對應(yīng)的指令 inst為絕對跳轉(zhuǎn)jump 100,即程序轉(zhuǎn)移到地址100處開始執(zhí)行,且沒有中斷信號產(chǎn)生。則當(dāng)下一個時鐘上升沿來臨時,由 G_PC產(chǎn)生的 s1等控制信號將 inst[23:16](此時為100)送入PC寄存器中開始執(zhí)行。

        假設(shè)此時add_pc在ROM中對應(yīng)的指令inst為絕對跳轉(zhuǎn)jump 100,但此時有中斷信號1產(chǎn)生(且假設(shè)此時status頂部值小于 2),則 inta為 1。于是 G_PC產(chǎn)生的控制信號將 inst[23:16](即 100)壓入 EPC頂,將中斷 1的優(yōu)先級(即s0的值2)壓入 status頂部,將中斷1的入口地址送入PC寄存器中,開始響應(yīng)中斷。如果之后又產(chǎn)生優(yōu)先級大于2的中斷,則將相關(guān)數(shù)據(jù)壓棧后響應(yīng)中斷,若產(chǎn)生中斷的優(yōu)先級小于或等于2,則被忽略不執(zhí)行。

        條件轉(zhuǎn)移jz、jnz與jump指令類似,只是當(dāng)譯碼階段產(chǎn)生的Z信號為1時,jz跳轉(zhuǎn),Z為0時jnz跳轉(zhuǎn)。通常比較指令comp后面緊跟條件轉(zhuǎn)移指令來實(shí)現(xiàn)程序轉(zhuǎn)移控制。

        (3)假設(shè)此時add_pc在 ROM中對應(yīng)的指令 inst為調(diào)用指令call 100,執(zhí)行此條指令時忽略所有中斷請求信號,將 add_pc+4壓入 EPC中后,將 inst[23:16](即100)送入PC寄存器中開始執(zhí)行調(diào)用程序。

        (4)假設(shè)此時add_pc在 ROM中對應(yīng)的指令 inst為中斷返回指令int_ret,且沒有高優(yōu)先級的中斷產(chǎn)生,則EPC頂部的數(shù)據(jù)add_ret送入PC寄存器中,同時,EPC和status中的頂部數(shù)據(jù)彈出,其余數(shù)據(jù)依次上移一位。

        假設(shè)此時add_pc在ROM中對應(yīng)的指令inst為中斷返回指令int_ret,但有優(yōu)先級比status頂部單元數(shù)據(jù)高的中斷信號產(chǎn)生,則G_PC產(chǎn)生的cover信號有效,status頂部數(shù)據(jù)被新的中斷優(yōu)先級值所覆蓋,EPC維持不變,同時響應(yīng)新中斷。

        (5)調(diào)用返回指令call_ret與中斷返回指令 int_ret類似,不過執(zhí)行時status中的數(shù)據(jù)不彈出。

        1.2.2 譯碼

        譯碼部分結(jié)構(gòu)如圖2所示。

        圖2 處理器譯碼部分結(jié)構(gòu)

        譯碼部分核心是控制單元ctrl。為了解決流水線的數(shù)據(jù)相關(guān),采用了內(nèi)部前推的方法,將執(zhí)行部分產(chǎn)生的數(shù)據(jù)result回送至本部分。將比較單元comp產(chǎn)生的信號Z送至譯碼部分,使得條件跳轉(zhuǎn)指令(jz、jnz)在取指階段就能實(shí)現(xiàn),從而實(shí)現(xiàn)無延遲跳轉(zhuǎn)。

        本部分中的寄存器堆reg_file在時鐘下降沿且寫信號l_e_w_reg有效時執(zhí)行寫數(shù)據(jù)操作(實(shí)現(xiàn)結(jié)果保存WR這一部分的功能)。ctrl產(chǎn)生的一部分控制信號通過執(zhí)行控制寄存器EXR送至下一級使用。

        1.2.3 執(zhí)行

        執(zhí)行部分的結(jié)構(gòu)如圖3所示。此部分核心是算術(shù)邏輯運(yùn)算單元ALU,前面譯碼部分的ctrl產(chǎn)生的運(yùn)算控制碼alu_code指定運(yùn)算操作,運(yùn)算結(jié)果c_out送入5/1選擇器mux6。關(guān)于mux6的其余4路數(shù)據(jù)對應(yīng)的指令為:dout對應(yīng)load ra,imme即將數(shù)據(jù)存儲器中指定地址單元M[imme]的數(shù)據(jù)送入 ra號寄存器中;ds對應(yīng) pop ra,即將數(shù)據(jù)堆棧stake棧頂?shù)臄?shù)據(jù)彈入ra號寄存器中;e_imme對應(yīng)指令 val ra,imme送立即數(shù) imme入 ra號寄存器;e_db對應(yīng)mov ra,rb即將rb號寄存器中的數(shù)據(jù)送入ra號寄存器中。

        圖3 處理器執(zhí)行部分結(jié)構(gòu)

        1.2.4 結(jié)果保存

        這里的結(jié)果保存是針對目的地址為寄存器的指令,如算術(shù)邏輯運(yùn)算指令、寄存器之間的數(shù)據(jù)傳輸指令等。工作流程即將圖3中 RSR的 l_e_ra、l_e_w_reg、l_result信號送入圖2中的reg_file。當(dāng)時鐘下降沿到達(dá)且l_e_w_reg有效時,數(shù)據(jù)l_result被寫入l_e_ra號寄存器中。

        2 仿真驗(yàn)證

        為了驗(yàn)證該設(shè)計,利用Altera公司的Quartus II軟件進(jìn)行仿真驗(yàn)證。仿真時設(shè)計在取地址為32的指令時出現(xiàn)0號中斷,在取地址為52的指令時出現(xiàn)1號中斷。實(shí)際執(zhí)行時,1號中斷嵌套在0號中斷之中。對應(yīng)中斷的入口地址分別為48、68。仿真結(jié)果如圖4所示。

        圖4中a0~a6分別顯示的是r0~r6號寄存器中的數(shù)據(jù);v0、v1分別是0號中斷、1號中斷的入口地址;pc_num是處在取指階段的指令的地址;ints是中斷輸入信號,ints=1、ints=2分別表示外設(shè)請求 1號中斷、外設(shè)請求2號中斷。從圖4中可以看出:

        (1)幾乎每條處在取指階段的指令都要經(jīng)過3個時鐘上升沿和一個時鐘下降沿后才執(zhí)行完畢。這是因?yàn)橹噶钊≈竿瓿珊?,還要經(jīng)過譯碼、執(zhí)行和結(jié)果保存3個階段,并且結(jié)果保存是在時鐘下降沿完成的。但由于是流水線結(jié)構(gòu),故等效于每一個時鐘執(zhí)行一條指令。

        (2)當(dāng)取到地址為 pc_num=32的指令時,中斷信號1產(chǎn)生,于是下條指令的取指地址為1號中斷入口地址48。執(zhí)行1號中斷的子程序到52時,中斷信號2產(chǎn)生,于是響應(yīng)2號中斷,下條指令地址為2號中斷入口地址68(2號中斷子程序就一條返回指令)。

        (3)當(dāng)執(zhí)行地址為 24的 jump 0指令時,下條指令地址為0,實(shí)現(xiàn)了無延遲轉(zhuǎn)移。

        綜上所述,經(jīng)初步驗(yàn)證,該設(shè)計能實(shí)現(xiàn)4級流水線結(jié)構(gòu),并具備中斷及其嵌套、無延遲轉(zhuǎn)移等功能。

        本文設(shè)計了一種基于FPGA的16 bit嵌入式RISC微處理器。該處理器主要特點(diǎn)是通過增加硬件結(jié)構(gòu)實(shí)現(xiàn)了對轉(zhuǎn)移指令的無延遲實(shí)現(xiàn)以及對中斷及調(diào)用指令的支持。在下一步工作中將優(yōu)化結(jié)構(gòu)設(shè)計,增加外圍設(shè)備,逐步構(gòu)成一個高性能的單片系統(tǒng)。

        [1]李亞民.計算機(jī)原理與設(shè)計[M].北京:清華大學(xué)出版社,2011.

        [2]鄭緯民,湯志忠.計算機(jī)系統(tǒng)結(jié)構(gòu)[M].北京:清華大學(xué)出版社,1998.

        [3]夏宇聞.Verilog數(shù)字系統(tǒng)設(shè)計教程[M].北京:北京航空航天大學(xué)出版社,2008.

        [4]于洋,肖鐵軍,丁偉.面向教學(xué)的 16位 CISC微處理器的設(shè)計[J].計算機(jī)工程與設(shè)計,2010,31(16):3584-3587.

        [5]張英武,袁國順.32位嵌入式RISC處理器的設(shè)計與實(shí)現(xiàn)[J].微電子學(xué)與計算機(jī),2008,25(6):14-17.

        [6]曾舒婷,楊志家.高性能PLC專用指令集處理器設(shè)計與仿真[J].微電子學(xué)與計算機(jī),2011,28(7):76-81.

        猜你喜歡
        譯碼寄存器中斷
        基于校正搜索寬度的極化碼譯碼算法研究
        Lite寄存器模型的設(shè)計與實(shí)現(xiàn)
        跟蹤導(dǎo)練(二)(5)
        千里移防,衛(wèi)勤保障不中斷
        解放軍健康(2017年5期)2017-08-01 06:27:44
        分簇結(jié)構(gòu)向量寄存器分配策略研究*
        從霍爾的編碼譯碼理論看彈幕的譯碼
        新聞傳播(2016年3期)2016-07-12 12:55:27
        LDPC 碼改進(jìn)高速譯碼算法
        遙測遙控(2015年2期)2015-04-23 08:15:19
        基于概率裁剪的球形譯碼算法
        AT89C51與中斷有關(guān)的寄存器功能表解
        FPGA內(nèi)嵌PowerPC的中斷響應(yīng)分析
        97精品国产手机| 久久夜色国产精品噜噜亚洲av| 国产人妖乱国产精品人妖| 爆爽久久久一区二区又大又黄又嫩| 人妻少妇偷人精品无码| 亚洲精品在线观看一区二区| 91日韩东京热中文字幕| 国模无码一区二区三区不卡| 亚洲福利视频一区| 国产亚洲青春草在线视频| 蜜桃91精品一区二区三区| 最新系列国产专区|亚洲国产| a毛片全部免费播放| 久久爱91精品国产一区| 东北女人一级内射黄片| 亚洲国产精品第一区二区| 亚洲av无码成人网站www | 亚洲精品成人一区二区三区| 久久精品人人做人人爱爱| 国产乱人伦av在线a| 国产思思久99久精品| 亚洲成人激情深爱影院在线| 国产成人亚洲综合无码品善网| 成人区人妻精品一区二区不卡网站| 强d乱码中文字幕熟女1000部| 人妻熟女翘屁股中文字幕| 国产探花在线精品一区二区| 国产偷国产偷高清精品| 中文无字幕一本码专区| 色综合久久久无码中文字幕| 四虎影视永久在线精品| 久久av一区二区三区下| 男女真人后进式猛烈视频网站| 婷婷五月六月综合缴情| 乱人伦中文字幕在线不卡网站| 亚洲长腿丝袜中文字幕| 少妇中文字幕乱码亚洲影视| 三上悠亚免费一区二区在线| 中文字幕一区二区三区四区久久| 成熟了的熟妇毛茸茸 | 国内最真实的xxxx人伦|