基于FPGA的八位RISC CPU的設(shè)計(jì)_第1頁(yè)
已閱讀5頁(yè),還剩2頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

第第頁(yè)基于fpga的八位risccpu的設(shè)計(jì)隨著數(shù)字通信和工業(yè)控制領(lǐng)域的高速進(jìn)展,要求專(zhuān)用(asic)的功能越來(lái)越強(qiáng),功耗越來(lái)越低,生產(chǎn)周期越來(lái)越短,這些都對(duì)芯片設(shè)計(jì)提出了巨大的挑戰(zhàn),傳統(tǒng)的芯片設(shè)計(jì)辦法已經(jīng)不能適應(yīng)復(fù)雜的應(yīng)用需求了。(systemonachip)以其高集成度,低功耗等優(yōu)點(diǎn)越來(lái)越受歡迎。開(kāi)發(fā)人員不必從單個(gè)規(guī)律門(mén)開(kāi)頭去設(shè)計(jì)asic,而是應(yīng)用己有ic芯片的功能模塊,稱(chēng)為核(core),或?qū)W問(wèn)產(chǎn)權(quán)(ip)宏單元舉行迅速設(shè)計(jì),效率大為提高。cpu的ip核是soc技術(shù)的核心,開(kāi)發(fā)出具有自主學(xué)問(wèn)產(chǎn)權(quán)的cpuip核對(duì)我國(guó)在技術(shù)方面跟上世界先進(jìn)的步子,提高信息產(chǎn)業(yè)在世界上的核心竟?fàn)幜τ兄卮笠饬x。

精簡(jiǎn)命令集計(jì)算機(jī)risc(reducedinstructionsetcomputer)是針對(duì)復(fù)雜命令集計(jì)算機(jī)cisc(complexinstructionsetcomputer)提出的,具備如下特征

1)一個(gè)有限的容易的命令集;

2)強(qiáng)調(diào)寄存器的用法或cpu配備大量的能用的寄存器;

3)強(qiáng)調(diào)對(duì)命令流水線的用法。

2cpuip核的組成

盡管各種cpu的性能指標(biāo)和結(jié)構(gòu)詳情不同,但所要完成的基本功能相同,從整體上可分為八個(gè)基本的部件:時(shí)鐘發(fā)生器、命令寄存器、累加器、risccpu算術(shù)規(guī)律運(yùn)算單元、數(shù)據(jù)控制器、狀態(tài)控制器、程序控制器、程序計(jì)數(shù)器、地址多路器。狀態(tài)控制器負(fù)責(zé)控制每一個(gè)部件之間的互相操作關(guān)系,詳細(xì)的結(jié)構(gòu)和規(guī)律關(guān)系1所示。

時(shí)鐘發(fā)生器利用外部時(shí)鐘信號(hào),經(jīng)過(guò)分頻生成一系列時(shí)鐘信號(hào)給cpu中的各個(gè)部件用法。為了保證分頻后信號(hào)的跳變性能,在設(shè)計(jì)中采納了同步狀態(tài)機(jī)的辦法。

命令寄存器在觸發(fā)時(shí)鐘clk1的正跳變觸發(fā)下,將數(shù)據(jù)送來(lái)的命令存入寄存器中。數(shù)據(jù)總線分時(shí)復(fù)用傳遞數(shù)據(jù)和命令,由狀態(tài)控制器的load_ir信號(hào)負(fù)責(zé)判別。load_ir信號(hào)通過(guò)使能信號(hào)ena口線輸入到命令寄存器。復(fù)位后,命令寄存器被清為零。每條命令為兩個(gè)字節(jié)16位,高3位是操作碼,低13位是地址線。cpu的地址總線為是13位,位尋址空間為8k字節(jié)。本設(shè)計(jì)的數(shù)據(jù)總線是8位,每條命令取兩次,每次由變量state控制。

累加器用于存放當(dāng)前的運(yùn)算結(jié)果,是雙目運(yùn)算中的一個(gè)數(shù)據(jù)來(lái)源。復(fù)位后,累加器的值為零。當(dāng)累加器通過(guò)使能信號(hào)ena口線收到來(lái)自cpu狀態(tài)控制器load_acc信號(hào)后,在clk1時(shí)鐘正跳沿時(shí)就接收來(lái)自數(shù)據(jù)總線的數(shù)據(jù)。

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

算術(shù)規(guī)律運(yùn)算單元按照輸入的不同的操作碼分離實(shí)現(xiàn)相應(yīng)的加、與、異或、跳轉(zhuǎn)等基本運(yùn)算。

數(shù)據(jù)控制器其作用是控制累加器的數(shù)據(jù)輸出,因?yàn)閿?shù)據(jù)總線是各種操作傳送數(shù)據(jù)的公共通道,分時(shí)復(fù)用,有時(shí)傳輸命令,有時(shí)要傳送數(shù)據(jù)。其余時(shí)候,數(shù)據(jù)總線應(yīng)呈高阻態(tài),以允許其他部件用法。所以,任何部件向總線上輸出數(shù)據(jù)時(shí),都需要一個(gè)控制信號(hào)的,而此控制信號(hào)的啟、停則由cpu狀態(tài)控制器輸出的各信號(hào)控制打算。控制信號(hào)datactl_ena打算何時(shí)輸出累加器中的數(shù)據(jù)。

地址多路器用于輸出的地址是pc(程序計(jì)數(shù)器)地址還是數(shù)據(jù)/端口地址。每個(gè)命令周期的前4個(gè)時(shí)鐘周期用于從rom中讀取命令,輸出的應(yīng)是pc地址,后4個(gè)時(shí)鐘周期用于對(duì)ram或端口的讀寫(xiě),該地址由命令給出,地址的挑選輸出信號(hào)由時(shí)鐘信號(hào)的8分頻信號(hào)fecth提供。

程序計(jì)數(shù)器用于提供命令地址,以便讀取命令,命令按地址挨次存放在存儲(chǔ)器中,有兩種途徑可形成命令地址,一是挨次執(zhí)行程序的狀況,二是執(zhí)行jmp命令后,獲得新的命令地址。

狀態(tài)機(jī)控制器接受復(fù)位信號(hào)rst,當(dāng)rst有效時(shí),能通過(guò)信號(hào)ena使其為0,輸入到狀態(tài)機(jī)中以停止?fàn)顟B(tài)機(jī)的工作。狀態(tài)機(jī)是cpu的控制核心,用于產(chǎn)生一系列的控制信號(hào),啟動(dòng)或停止某些部件,cpu何時(shí)舉行讀命令來(lái)讀寫(xiě)i/o端口及ram區(qū)等操作,都是由狀態(tài)機(jī)來(lái)控制的。狀態(tài)機(jī)的當(dāng)前狀態(tài),由變量state記錄,state的值就是當(dāng)前這個(gè)命令周期中已經(jīng)過(guò)的時(shí)鐘數(shù)。命令周期是由8個(gè)時(shí)鐘組成,每個(gè)時(shí)鐘都要完成固定的操作。

3系統(tǒng)時(shí)序

risccpu的復(fù)位和啟動(dòng)操作是通過(guò)rst引腳的信號(hào)觸發(fā)執(zhí)行的,當(dāng)rst信號(hào)一進(jìn)入高電平,risccpu就會(huì)結(jié)束現(xiàn)行操作,并且只要rst停歇在高電平狀態(tài),cpu就維持在復(fù)位狀態(tài),cpu各狀態(tài)寄存器都設(shè)為無(wú)效狀態(tài)。當(dāng)信號(hào)rst回到低電平,接著到來(lái)的第一個(gè)fetch升高沿將啟動(dòng)risccpu開(kāi)頭工作,從rom的000處的開(kāi)頭讀取命令并執(zhí)行相應(yīng)的操作。

讀命令時(shí)序,每個(gè)命令的前3個(gè)時(shí)鐘周期用于讀命令,4~6周期讀信號(hào)rd有效,第7個(gè)周期讀信號(hào)無(wú)效,第8個(gè)周期地址總線輸出pc地址,為下一個(gè)命令作預(yù)備。

寫(xiě)命令時(shí)序,每個(gè)命令的第3.5個(gè)時(shí)鐘周期建立寫(xiě)地址,第四個(gè)周期輸出數(shù)據(jù),第5個(gè)時(shí)鐘周期輸出寫(xiě)信號(hào),第6個(gè)時(shí)鐘結(jié)束,第7.5個(gè)時(shí)鐘周期輸出為pc地址,為下個(gè)命令做預(yù)備。

2所示,這是se6.0舉行波形的結(jié)果。

4微處理器命令

數(shù)據(jù)處理命令:數(shù)據(jù)處理命令完成寄存器中數(shù)據(jù)的算術(shù)和規(guī)律操作,其他命令只是傳送數(shù)據(jù)和控制程序執(zhí)行的挨次.因此,數(shù)據(jù)處理命令是唯一可以修改數(shù)據(jù)值的命令,數(shù)據(jù)處理命令普通需兩個(gè)源操作數(shù),產(chǎn)生單個(gè)結(jié)果.全部的操作數(shù)都是8位寬,或者來(lái)自寄存器,或者來(lái)自命令中定義的立刻數(shù).每一個(gè)源操作數(shù)寄存器和結(jié)果寄存器都在命令中自立的指定。

圖2讀寫(xiě)命令時(shí)序

數(shù)據(jù)傳送和控制轉(zhuǎn)移類(lèi)命令:共有17條,不包括按布爾變量控制程序轉(zhuǎn)移的命令。其中有全存儲(chǔ)空間的長(zhǎng)調(diào)用、長(zhǎng)轉(zhuǎn)移和按2kb分塊的程序空間內(nèi)的肯定調(diào)用和肯定轉(zhuǎn)移;全空間的長(zhǎng)度相對(duì)轉(zhuǎn)移及一頁(yè)范圍內(nèi)的短相對(duì)轉(zhuǎn)移;還有條件轉(zhuǎn)移命令。這類(lèi)命令用到的助記符有acall,ajmp,lcall,ljmp,sjmp,m,jz,jnz,one,djnz。控制轉(zhuǎn)移類(lèi)命令主要用來(lái)修改1x指針從而達(dá)到對(duì)程序流的控制,所用到的寄存器主要有sp,pc,ir等寄存器。

命令由操作碼和操作數(shù)組成,取命令的目的就是把命令碼和操作數(shù)分開(kāi)。組成電路由3所示。取命令電路由程序指針,程序指針解析模塊、rom,ir(命令寄存器),控制器狀態(tài)寄存器組成。取命令命令的過(guò)程如下:pc指針的值經(jīng)過(guò)pc_mux模塊賦值,把rom中的命令取出來(lái),送到命令寄存器的數(shù)據(jù)輸入口。命令寄存器受狀態(tài)寄存器的控制,當(dāng)取命令信號(hào)有效時(shí),rom中的命令碼被保存在命令寄存器中,然后經(jīng)控制器譯碼,產(chǎn)生控制信號(hào),對(duì)pc指針的增量加以控制取出下一條命令。

圖3取命令電路5匯編

匯編程序是為了調(diào)試軟核而開(kāi)發(fā)的,手工編寫(xiě)機(jī)器碼很簡(jiǎn)單出錯(cuò)并且工作量很大。在調(diào)試過(guò)程中修改命令集時(shí),匯編程序也要作相應(yīng)的修改。所以要求編譯器的結(jié)構(gòu)容易性能牢靠,在程序中須要的地方可以用堆疊代碼辦法實(shí)現(xiàn),不必考慮編程技巧和匯編器效率問(wèn)題。匯編程序用于測(cè)試risccpu的基本命令集,假如cpu的各條命令執(zhí)行正確,停止在hlt命令處。假如程序在其它地址暫停運(yùn)行,則有一個(gè)命令出錯(cuò)。程序中,@符號(hào)后的十六進(jìn)制表示存儲(chǔ)器的地址,每行的//后表示注釋。下面是一小段程序代碼,編譯好的匯編機(jī)器代碼裝入虛擬rom,要參與運(yùn)算的數(shù)據(jù)裝入虛擬ram就可以開(kāi)頭舉行仿真。

機(jī)器碼地址匯編助記符注釋

@00//地址聲明

101_11000//00begin:ldadata_2

0000_0001

011_11000//02anddata_3

0000_0010

100_11000//04xordata_2

0000_0001001_00000//06skz

0000_0000

000_00000//08hlt//anddoes'twork

6調(diào)試

最基本的調(diào)試手段是基于廠商提供的開(kāi)發(fā)和仿真環(huán)境,用硬件描述語(yǔ)言編寫(xiě)testbench,構(gòu)成一個(gè)最小運(yùn)行環(huán)境。testbench產(chǎn)生對(duì)目標(biāo)軟核的激勵(lì),同時(shí)記錄軟核的輸出,和預(yù)期值舉行比對(duì),可以確定核的設(shè)計(jì)錯(cuò)誤。這種辦法的益處是實(shí)現(xiàn)簡(jiǎn)單,結(jié)果精確?????,但硬件描述語(yǔ)言編碼量較大。為了仿真結(jié)果的精確?????性,無(wú)論功能仿真還是時(shí)序仿真,仿真的步長(zhǎng)都不能太小,結(jié)果導(dǎo)致囫圇系統(tǒng)仿真時(shí)光太長(zhǎng)。本設(shè)計(jì)中先對(duì)risccpu的各個(gè)子模塊舉行了分離綜合,檢查正確性,假如發(fā)覺(jué)錯(cuò)誤可以在較小的范圍內(nèi)來(lái)檢查并驗(yàn)證。子模塊綜合完畢后,把要綜合的risccpu的模塊與外圍器件以及測(cè)試模塊分別出來(lái)組成一個(gè)大模塊,綜合后的的risccpu模塊4所示,這是ise7.1所綜合生成的技術(shù)原理圖。

綜合的結(jié)果只是通用的門(mén)級(jí)網(wǎng)表,只是一些與、或、非門(mén)的規(guī)律關(guān)系,和芯片實(shí)際的配置狀況還有差距。此時(shí)應(yīng)當(dāng)用法fpga/廠商提供的實(shí)現(xiàn)與布局布線工具,按照所選芯片的型號(hào),舉行芯片內(nèi)部功能單元的實(shí)際銜接與映射。這種實(shí)現(xiàn)與布局布線工具普通要選用所選器件的生產(chǎn)商開(kāi)發(fā)的工具,由于惟獨(dú)生產(chǎn)者最了解器件內(nèi)部的結(jié)構(gòu),如在ise的集成環(huán)境中完成實(shí)現(xiàn)與布局布線的工具是flowengine。

圖4cpu技術(shù)原理圖

sta(statictiminganalysis)靜態(tài)時(shí)序分析,完成fpga設(shè)計(jì)時(shí)必需的一個(gè)步驟。在fpga加約束、綜合、布局布線后,在ise中可以運(yùn)行timinganalyzer生成具體的時(shí)序報(bào)告,本設(shè)計(jì)中minimumperiod:12.032ns(umfrequency:83.112mhz),minimuminputarrivaltimebeforeclock:6.479ns,maximumoutputrequiredtimeafterclock:9.767ns。然后,設(shè)計(jì)人員檢查時(shí)序報(bào)告,按照工具的提醒找出不滿足setup/holdtime的路徑,以及不符合約束的路徑,舉行修改保證數(shù)據(jù)能被正確的采樣。

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論