国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于FPGA的8位CPU設(shè)計

2014-04-01 07:14,
中原工學(xué)院學(xué)報 2014年4期
關(guān)鍵詞:譯碼存儲器時序

,

(安陽師范學(xué)院,河南 安陽 455000)

CPU作為計算機系統(tǒng)的核心,其功能與結(jié)構(gòu)設(shè)計一直是國內(nèi)外研究的熱點。近年來隨著計算機和微電子技術(shù)的發(fā)展,采用EDA技術(shù),基于FPGA器件的CPU設(shè)計成為計算機組成原理和計算機系統(tǒng)結(jié)構(gòu)實驗中的重要內(nèi)容[1]。如何使CPU更有效率地工作,使其內(nèi)部結(jié)構(gòu)更精簡,一直是研究的方向。本文研究了CPU的功能和結(jié)構(gòu)特點,完成了一個8位CPU的設(shè)計,并給出綜合仿真結(jié)果。

1 CPU功能簡介、模塊組成和指令集

本文設(shè)計的CPU是基于FPGA器件的具有完整的取指、譯碼、執(zhí)行功能的8位CPU。在此設(shè)計中,指令系統(tǒng)采用單字長結(jié)構(gòu),指令地址碼部分采用直接尋址方式,指令所能訪問的數(shù)據(jù)存儲器的地址空間為32字節(jié)。為簡化處理,所設(shè)計的指令存儲器的地址空間也為32字節(jié),用5位指令地址進行訪問取指。

1.1 CPU功能簡介

CPU的功能主要是取指令、分析指令、執(zhí)行指令。其工作過程是對所存儲的程序指令進行讀取,并進行指令譯碼,從而按照指令所代表的含義執(zhí)行相應(yīng)操作?;诖嗽O(shè)計的CPU及存儲器的大致結(jié)構(gòu)如圖1所示。在圖中可以清晰地看到整個CPU的運作過程。首先從寄存器PC中取出指令地址,根據(jù)指令地址從指令存儲器中取出指令,將指令放入寄存器IR中,再根據(jù)寄存器IR中的指令進行指令分析;其次從數(shù)據(jù)存儲器中進行數(shù)據(jù)存取,通過ALU運算器,最終按照指令要求進行數(shù)據(jù)加工操作;最后根據(jù)AC結(jié)果值,對標志位ZF進行賦值。根據(jù)整個CPU的運作過程,把CPU的功能模塊設(shè)計成取指部件、譯碼部件、執(zhí)行部件三大功能部件,然后設(shè)計一個時序信號處理部件來控制這三個部件的執(zhí)行[2]。

圖1 CPU結(jié)構(gòu)圖

1.2 CPU的模塊組成

基于FPGA的8位CPU的設(shè)計主要包括三大功能部件:取指部件、譯碼部件、執(zhí)行部件。這三大功能部件的執(zhí)行通過時序信號處理部件timer來控制,從而模擬CPU的功能。其中,取指部件的主要功能是根據(jù)指令地址從指令存儲器中取出指令,然后把取出的指令送給譯碼部件;譯碼部件進行指令功能解析,取出需要操作執(zhí)行的數(shù)據(jù);執(zhí)行部件根據(jù)譯碼部件提供的譯碼命令和數(shù)據(jù),進行最終的操作執(zhí)行[3]。

(1)取指部件:i_fetch,如圖2所示。該部件以PC中的指令地址instr_addr為輸入,在指令存儲器中讀取指令,在時鐘信號的邊沿將指令存入指令寄存器IR中,并將取指令地址+1送入pcaddl。該部分的核心為指令存儲器。

圖2 取指部件:i_fetch

(2)指令譯碼部件:i_decoder,如圖3所示。該部件以IR中的指令代碼為輸入,完成指令譯碼分析,產(chǎn)生各種控制命令。因為指令系統(tǒng)中的各指令地址都采用直接尋址,所以譯碼階段可直接使用該地址處理,以完成數(shù)據(jù)在數(shù)據(jù)存儲器上的存取操作。在執(zhí)行指令譯碼部件功能時,需要考慮PC值的變化情況。在指令地址沒有發(fā)生跳轉(zhuǎn)時,需對PC置入取指部件送來的指令地址pcaddl,產(chǎn)生后繼指令地址;在轉(zhuǎn)移執(zhí)行時,需對PC置入轉(zhuǎn)移地址,同時在系統(tǒng)執(zhí)行指令時,無論指令地址是否發(fā)生跳轉(zhuǎn),如果系統(tǒng)的復(fù)位信號RESET產(chǎn)生復(fù)位,都需要對PC清0;在執(zhí)行動態(tài)停機指令halt時,可使PC值保持不變。

圖3 指令譯碼部件:i_decoder

(3)指令執(zhí)行部件:i_exe,如圖4所示。該部件包括ALU與累加器AC,ALU為核心部件。對AC值的打入使用時序信號控制,同時執(zhí)行部件會根據(jù)AC結(jié)果值,對標志位ZF進行賦值,該標志會被送回指令譯碼部件,當執(zhí)行jz指令時,決定是否轉(zhuǎn)移。

圖4 指令執(zhí)行部件:i_exe

(4)時鐘信號處理部件:timer,如圖5所示。該部件本來是控制器的一個組成部分,現(xiàn)在單獨作為一個模塊來設(shè)計??紤]到前面的3個模塊的劃分,每個部件都需要一個時鐘信號來控制其中寄存器、存儲器部分數(shù)據(jù)的寫入和讀出。每個部件所需要的時鐘信號分別稱為T1、T2、T3,它們是由時鐘信號處理部件timer根據(jù)時鐘信號clock周期性地依次產(chǎn)生的,但在系統(tǒng)復(fù)位時不產(chǎn)生時鐘信號。

圖5 時鐘信號處理部件:timer

1.3 指令集

設(shè)指令字長為8位,每字節(jié)存放一條完整的指令,指令操作碼為高3位,地址碼為低5位,CPU的尋址方式為直接尋址,CPU設(shè)計中的機器指令主要支持如下指令,如表1所示。

2 關(guān)鍵模塊的設(shè)計

2.1 指令譯碼部件的設(shè)計

在該CPU設(shè)計中,指令譯碼部件通過取指部件取得指令,根據(jù)指令集將指令進行譯碼,產(chǎn)生控制指令執(zhí)行的一系列命令,同時完成存取數(shù)據(jù)的處理。其VHDL程序?qū)嶓w部分定義如圖6所示。

表1 指令系統(tǒng)表

圖6 指令譯碼部件VHDL程序?qū)嶓w部分定義截圖

在指令譯碼部件程序截圖中,zf為0標志位,reset為復(fù)位信號,wr_data為要寫入數(shù)據(jù)存儲器中的數(shù)據(jù),t2為時鐘,pcadd1為加1后的指令地址,instr_coder為IR中存儲的指令代碼,pc為輸出的指令地址,dmem_out為輸出的數(shù)據(jù),fun_alu為控制執(zhí)行部件的操作命令,ac_in用來控制執(zhí)行部件是否打入AC值。

2.2 時序控制部件的設(shè)計

時序控制部件應(yīng)依次產(chǎn)生控制各功能部件操作的時序信號。應(yīng)用VHDL語言完成其設(shè)計后,其VHDL程序結(jié)構(gòu)體部分定義如圖7所示。

圖7 時序信號處理部件timer的VHDL程序結(jié)構(gòu)體部分定義截圖

在時序控制部件程序截圖中,t1、t2、t3通過信號count來依次獲取時鐘,獲取時鐘后,t1用來控制取指部件,t2用來控制指令譯碼部件,t3用來控制執(zhí)行部件。在代碼中,獲取時鐘的順序為t1、t2、t3,所以在CPU執(zhí)行中,先執(zhí)行取指部件,再執(zhí)行譯碼部件,最后執(zhí)行執(zhí)行部件。

3 軟件仿真綜合與硬件實現(xiàn)

3.1 軟件綜合與仿真

此次設(shè)計的CPU總共有四大模塊,首先對每個模塊進行單獨的設(shè)計和仿真,實現(xiàn)其功能,然后將各個模塊進行連接,創(chuàng)建頂層的設(shè)計文件simcom.bdf。頂層模塊連接圖如圖8所示。

圖8 頂層模塊連接圖

在完成總體設(shè)計的情況下,用 QuartusII9.0對其進行綜合和仿真,根據(jù)之前對存儲器中指令和數(shù)據(jù)的設(shè)置,得到仿真結(jié)果,如圖9所示。

圖9 仿真結(jié)果圖

其仿真所用程序指令可理解如下:

pc 指令 指令含義 數(shù)據(jù)地址 數(shù)據(jù)

0 00000100 load 4 00000100 00000111

1 01000100 add4

2 00100100 store 4

3 11000000 halt 4

3.2 CPU設(shè)計的硬件實現(xiàn)

基于FPGA的8位CPU設(shè)計,其硬件最終實現(xiàn)是在Altera公司的Cyclone系列FPGA芯片EP1C3T100A8上完成的,而最后的硬件仿真結(jié)果,也如預(yù)期的那樣,得到了實現(xiàn)和驗證。

4 結(jié) 語

基于FPGA的8位CPU設(shè)計,完成了對CPU功能模塊的設(shè)計和仿真,充分展示了使用FPGA和VHDL進行EDA數(shù)字系統(tǒng)設(shè)計的優(yōu)越性。該設(shè)計中使用獨立的指令存儲器和數(shù)據(jù)存儲器,這相當于在CPU內(nèi)使用獨立的指令CACHE和數(shù)據(jù)CACHE,為后繼進行基于哈佛結(jié)構(gòu)的復(fù)雜CPU設(shè)計或帶CACHE結(jié)構(gòu)的CPU設(shè)計打下了基礎(chǔ)。

參考文獻:

[1] 湯志忠,楊春武.開放式實驗CPU設(shè)計[M].北京:清華大學(xué)出版社,2007.

[2] 李強,潘明,許勇.基于FPGA的RISC微處理器的設(shè)計和實現(xiàn)[J].廣西科學(xué)院學(xué)報, 2005(11): 294-297 .

[3] 馬輝,王丁磊.計算機組成原理[M].北京:中國水利水電出版社,2010.

猜你喜歡
譯碼存儲器時序
顧及多種弛豫模型的GNSS坐標時序分析軟件GTSA
清明
基于對數(shù)似然比與極化信道可靠度的SCF 譯碼算法
基于擴大候選碼元范圍的非二元LDPC加權(quán)迭代硬可靠度譯碼算法
靜態(tài)隨機存儲器在軌自檢算法
分段CRC 輔助極化碼SCL 比特翻轉(zhuǎn)譯碼算法
基于校正搜索寬度的極化碼譯碼算法研究
基于不同建設(shè)時序的地鐵互聯(lián)互通方案分析
基于FPGA 的時序信號光纖傳輸系統(tǒng)
任意2~k點存儲器結(jié)構(gòu)傅里葉處理器
鄂伦春自治旗| 长顺县| 岗巴县| 仙居县| 深州市| 望谟县| 垦利县| 长治市| 图木舒克市| 呼图壁县| 镇平县| 麻江县| 油尖旺区| 扎鲁特旗| 正阳县| 曲松县| 盐津县| 仁怀市| 定西市| 晋城| 修文县| 万州区| 子洲县| 惠东县| 鹤岗市| 万全县| 斗六市| 东安县| 凌海市| 麻江县| 克什克腾旗| 徐闻县| 台南县| 咸宁市| 平凉市| 贡嘎县| 邯郸县| 彭泽县| 湘阴县| 延津县| 友谊县|