基于fpga的16位risc_cpu設(shè)計

基于fpga的16位risc_cpu設(shè)計

ID:13207182

大?。?79.82 KB

頁數(shù):10頁

時間:2018-07-21

基于fpga的16位risc_cpu設(shè)計_第1頁
基于fpga的16位risc_cpu設(shè)計_第2頁
基于fpga的16位risc_cpu設(shè)計_第3頁
基于fpga的16位risc_cpu設(shè)計_第4頁
基于fpga的16位risc_cpu設(shè)計_第5頁
資源描述:

《基于fpga的16位risc_cpu設(shè)計》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。

1、天之藍(lán)電子工作室基于FPGA的16位RISC_CPU設(shè)計一.課題的來由和設(shè)計環(huán)境介紹通過學(xué)習(xí)夏宇聞教授的《Verilog數(shù)字系統(tǒng)設(shè)計教程》的學(xué)習(xí),想自己動腦筋設(shè)計一個比較簡單的CPU,一方面熟悉了解基于FPGA開發(fā)的一些基本流程,另一方面能夠進(jìn)一步加深自己計算機基礎(chǔ)理論的學(xué)習(xí),并在此基礎(chǔ)上以后能夠進(jìn)行更高層次的設(shè)計。本文中的CPU是通過AlteraQuartusII9.0,Modelsim6.4環(huán)境下用Verilog語言進(jìn)行仿真。這個16位的CPU是在《Verilog數(shù)字系統(tǒng)設(shè)計教程》中的CPU模型通過修改得到的。本文所有的程序代碼和測試文件詳見:http://pan.bai

2、du.com/share/link?shareid=329431&uk=2467758158。二.RISC_CPU結(jié)構(gòu)RISC_CPU是一個復(fù)雜的數(shù)字邏輯電路,但是其基本部件的邏輯并不復(fù)雜,可以將其分成8個基本部件來考慮:時鐘發(fā)生器,指令寄存器,累加器,算術(shù)邏輯運算單元,數(shù)據(jù)控制器,狀態(tài)控制器,程序計數(shù)器,地址多路器。各部件的連接關(guān)系見圖1。其中時鐘發(fā)生器利用外來時鐘信號進(jìn)行分頻生成一系列時鐘信號,送往其它部件用作時鐘信號。各部件之間的相互操作關(guān)系則由狀態(tài)控制器來控制。clkrstalu_enafetchclkload_irrstdata[7..0]opc_iraddr[15

3、..0]clkload_accrstdata[7..0]accum_out[7..0]alu_clkdata[7..0]accum[7..0]opcode[3..0]zeroalu_out[7..0]clkfetchrstenaclkenazeroopcode[3..0]datactl_enahaltinc_pcload_accload_irload_pcrdwrdata_enain[7..0]data[7..0]fetchir_addr[11..0]pc_addr[11..0]addr[11..0]clkloadrstir_addr[11..0]pc_addr[11..0]

4、CLKSOURCE:m_CLKSOURCEaccum:m_accumadr:m_adrclkresethaltrdwrfetchaddr[11..0]opcode[3..0]ir_addr[11..0]pc_addr[11..0]data[7..0]counter:m_countermachine:m_machinealu:m_alumachinectl:m_machinectlirregister:m_irregisterdatactl:m_datactl圖1RISC_CPU中各部件的相互連接關(guān)系1.時鐘發(fā)生器時鐘發(fā)生器CLKSOURCE利用外來時鐘信號clk生成一系列時鐘

5、信號alu_clk,fetch,并送往cpu的其它部件。其中,fetch是控制信號,clk的6分頻信號。當(dāng)fetch高電平時,使clk能觸發(fā)cpu控制器開始執(zhí)行一條指令;同時fetch信號還將控制地址多路器輸出指令地址和數(shù)據(jù)地址。clk信號還用作指令寄存器,累加器,狀態(tài)控制器的時鐘信號。圖2為時鐘發(fā)生器原理圖。時鐘發(fā)生器的波形如圖3所示。天之藍(lán)電子工作室圖2時鐘發(fā)生器圖3時鐘發(fā)生器波形2.指令寄存器指令寄存器是用于寄存指令的寄存器,如圖4所示。圖4指令寄存器結(jié)構(gòu)指令寄存器的觸發(fā)信號時clk,在clk的正沿觸發(fā)下,寄存器將數(shù)據(jù)總線送來的指令存入16位的寄存器中,但并不是每個cl

6、k的上升沿都寄存數(shù)據(jù)總線的數(shù)據(jù),因為數(shù)據(jù)總線上有時傳輸指令,有時傳輸數(shù)據(jù)。什么時候寄存,什么時候不寄存由CPU狀態(tài)控制器的load_ir信號控制。load_ir信號通過load_ir口輸入到指令寄存器,復(fù)位后,指令寄存器被清為零。每條指令為16位。高4位是操作碼,低12位是地址(cpu的地址總線為12位,尋址空間為4K字節(jié))。本設(shè)計的數(shù)據(jù)總線為16位,所以取指令只要一次就可以了。3.累加器累加器用于存放當(dāng)前的結(jié)果,它也是雙目運算中的一個數(shù)據(jù)來源(如圖5)。復(fù)位后,累加器的值是零。當(dāng)累加器通過load_acc信號時,在clk時鐘跳變沿時就受到來自于數(shù)據(jù)總線的數(shù)據(jù)。天之藍(lán)電子工作

7、室圖5累加器結(jié)構(gòu)4.算術(shù)運算器算術(shù)邏輯運算單元如圖6所示,它根據(jù)輸入的16種不同的操作碼分別進(jìn)行加減乘,與或非等基本操作運算,利用這幾種基本運算可以實現(xiàn)很多種其它運算以及邏輯判斷等操作。圖6算術(shù)運算器結(jié)構(gòu)5.數(shù)據(jù)控制器數(shù)據(jù)控制器如圖7所示,其作用是控制累加器的數(shù)據(jù)輸出,由于數(shù)據(jù)總線是各種操作時傳送數(shù)據(jù)的公共通道,不同情況下傳送不同的內(nèi)容。有時要傳輸指令,有時要傳送RAM區(qū)或接口的數(shù)據(jù)。累加器的數(shù)據(jù)只有在需要往RAM區(qū)域或端口寫時才允許輸出,否則應(yīng)呈現(xiàn)高阻態(tài),以允許其它部件使用數(shù)據(jù)總線。所以任何部件往總線

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動畫的文件,查看預(yù)覽時可能會顯示錯亂或異常,文件下載后無此問題,請放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫負(fù)責(zé)整理代發(fā)布。如果您對本文檔版權(quán)有爭議請及時聯(lián)系客服。
3. 下載前請仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進(jìn)行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時可能由于網(wǎng)絡(luò)波動等原因無法下載或下載錯誤,付費完成后未能成功下載的用戶請聯(lián)系客服處理。