




版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
采用VHDL語(yǔ)言在FPGA上實(shí)現(xiàn)WolfMCU體系結(jié)構(gòu)的設(shè)計(jì)嵌入式系統(tǒng)往往執(zhí)行比較單一的任務(wù),針對(duì)某種特定應(yīng)用而專(zhuān)門(mén)設(shè)計(jì),但目前在嵌入式系統(tǒng)中采用的微處理器絕大部分都是通用嵌入式微處理器,其通用的指令集面對(duì)千差萬(wàn)別的嵌入式應(yīng)用時(shí)暴露出專(zhuān)用性差,執(zhí)行效率低的弱點(diǎn)。另一個(gè)問(wèn)題是,目前應(yīng)用的嵌入式微處理器都是硬核,功能模塊和指令集都是固定的,當(dāng)應(yīng)用發(fā)生較大變化時(shí),很難通過(guò)對(duì)微處理器功能模塊和指令集進(jìn)行擴(kuò)展來(lái)適應(yīng)變化,往往只能換用一款新的微處理器,甚至重新設(shè)計(jì)整個(gè)嵌入式系統(tǒng)的硬件和軟件,浪費(fèi)了大量的時(shí)間和金錢(qián)。因此,如何提高指令集的針對(duì)性,提高指令的執(zhí)行效率以及如何增強(qiáng)嵌入式微處理器的擴(kuò)展能力成了困擾嵌入式系統(tǒng)開(kāi)發(fā)人員的兩個(gè)難題。1.ASIP和FPGAASIP的提出是微處理器設(shè)計(jì)理念的一項(xiàng)重大創(chuàng)新。ASIP(Application-SpecificInstructionsetProcessor)即專(zhuān)用指令集處理器,它相對(duì)傳統(tǒng)微處理器最大的特點(diǎn)就是其指令集針對(duì)特定應(yīng)用專(zhuān)門(mén)設(shè)計(jì),一條指令就可以完成該種應(yīng)用常做的一系列運(yùn)算,例如一些常用算法,這樣就極大的提高了指令的執(zhí)行效率,往往若干條普通指令幾十個(gè)時(shí)鐘周期完成的操作用一條專(zhuān)用指令幾個(gè)時(shí)鐘周期就完成了。采用ASIP理念設(shè)計(jì)微處理器可以在很大程度上解決上一節(jié)提到的指令集專(zhuān)用性差,指令執(zhí)行效率低的問(wèn)題,但這是要付出代價(jià)的,因?yàn)檫@些專(zhuān)用指令一般需要專(zhuān)門(mén)硬件電路支持才能實(shí)現(xiàn)。ASIP用傳統(tǒng)的集成電路技術(shù)實(shí)現(xiàn)是不現(xiàn)實(shí)的,集成電路設(shè)計(jì)復(fù)雜,開(kāi)發(fā)周期長(zhǎng),定型后無(wú)法進(jìn)行擴(kuò)充,這樣每遇到一種新應(yīng)用,就得重新設(shè)計(jì)一款專(zhuān)用芯片,成本是不可接受的,這在一個(gè)時(shí)期內(nèi)限制了ASIP的發(fā)展,直到FPGA(FieldProgrammableGateArray,現(xiàn)場(chǎng)可編程門(mén)陣列)的出現(xiàn),才為ASIP的實(shí)現(xiàn)提供了可能。FPGA內(nèi)部包含可配置邏輯模塊CLB(ConfigurableLogicBlock),可以方便的用硬件描述語(yǔ)言進(jìn)行開(kāi)發(fā)。硬件描述語(yǔ)言描述要實(shí)現(xiàn)的電路的功能,經(jīng)過(guò)編譯、綜合形成配置FPGA芯片的字節(jié)碼文件,經(jīng)下載后就可以在CLB內(nèi)部形成一塊模擬的專(zhuān)用電路,功能與實(shí)際電路完全一樣,這樣就可以實(shí)現(xiàn)對(duì)ASIP中專(zhuān)用指令的支持。用FPGA實(shí)現(xiàn)ASIP,相對(duì)傳統(tǒng)的集成電路來(lái)說(shuō),最大的優(yōu)點(diǎn)是擴(kuò)展性好,遇到新應(yīng)用時(shí),完全可以對(duì)一個(gè)較小的軟核原型進(jìn)行擴(kuò)充,通過(guò)添加新模塊,實(shí)現(xiàn)對(duì)針對(duì)該應(yīng)用設(shè)計(jì)的專(zhuān)用指令的支持,迅速完成新的設(shè)計(jì)。此外,F(xiàn)PGA還有設(shè)計(jì)方便,開(kāi)發(fā)周期短,可重復(fù)編程等優(yōu)點(diǎn)。基于以上討論,可以看出ASIP+FPGA設(shè)計(jì)模式可以從很大程度上解決引言中提到的兩個(gè)難題。為了進(jìn)行更深入的研究,我們對(duì)該設(shè)計(jì)模式進(jìn)行了嘗試,用VHDL硬件描述語(yǔ)言在FPGA上實(shí)現(xiàn)了一個(gè)8位微處理器軟核(以下稱(chēng)為WolfMCU),并為該微處理器實(shí)現(xiàn)了6條專(zhuān)用指令,每一條專(zhuān)用指令都由FPGA芯片中的專(zhuān)用電路支持。2.WolfMCU體系結(jié)構(gòu)設(shè)計(jì)微處理器常用的體系結(jié)構(gòu)有兩種――馮氏結(jié)構(gòu)和哈佛結(jié)構(gòu)。在馮氏結(jié)構(gòu)中,指令和數(shù)據(jù)使用同一個(gè)存儲(chǔ)器,經(jīng)由同一個(gè)總線(xiàn)傳輸,而在哈佛結(jié)構(gòu)中,使用兩個(gè)獨(dú)立的存儲(chǔ)器,分別存儲(chǔ)指令和數(shù)據(jù),并且使用兩條獨(dú)立的總線(xiàn),分別作為CPU與每個(gè)存儲(chǔ)器之間的專(zhuān)用通信路徑,這樣就保證了系統(tǒng)具有較高的可靠性,嵌入式系統(tǒng)追求的就是高可靠性,因此哈佛結(jié)構(gòu)的嵌入式微處理器在嵌入式系統(tǒng)中被廣泛應(yīng)用,本文介紹的WolfMCU也采用了哈佛結(jié)構(gòu)。2.1WolfMCU的體系結(jié)構(gòu)WolfMCU由6個(gè)模塊組成,包括控制器、運(yùn)算器、定時(shí)器/計(jì)數(shù)器、存儲(chǔ)器、串口通信控制器和并行通訊接口,如圖1所示??刂破魇荳olfMCU的大腦,在它的控制下,各模塊協(xié)調(diào)有序的工作??刂破靼ㄋ膫€(gè)模塊――譯碼模塊、有限狀態(tài)機(jī)模塊、存儲(chǔ)器控制模塊和中斷處理模塊。譯碼模塊對(duì)指令進(jìn)行譯碼,產(chǎn)生相應(yīng)的控制信號(hào)。有限狀態(tài)機(jī)模塊控制WolfMCU在不同工作狀態(tài)之間進(jìn)行轉(zhuǎn)換。WolfMCU共有四種工作狀態(tài):STARTUP、FETCH、EXEC1和EXEC2。STARTUP是WolfMCU加電后的初始狀態(tài),WolfMCU復(fù)位后也回到這個(gè)狀態(tài);FETCH是取指令狀態(tài),EXEC1和EXEC2是指令執(zhí)行狀態(tài),處理器根據(jù)譯碼結(jié)果在這兩個(gè)狀態(tài)下取操作數(shù)進(jìn)行計(jì)算。存儲(chǔ)器控制模塊在譯碼模塊產(chǎn)生的控制信號(hào)的作用下取指令和操作數(shù),并送往正確的地方。中斷處理模塊接收外部中斷并進(jìn)行處理,WolfMCU共有兩個(gè)中斷源:Int0和Int0。運(yùn)算器在控制器的控制下完成指定的運(yùn)算。WolfMCU的運(yùn)算器支持8位數(shù)據(jù)的加、減、乘、與、或、非等基本運(yùn)算,還支持十進(jìn)制調(diào)整、乘加、乘減、平方后加、平方后減、取絕對(duì)值等特殊運(yùn)算,這些特殊運(yùn)算由專(zhuān)用指令實(shí)現(xiàn),由專(zhuān)用電路支持。系統(tǒng)內(nèi)不同部件的工作時(shí)鐘可能與系統(tǒng)時(shí)鐘不一致,比如串口控制器,它的工作時(shí)鐘根據(jù)不同波特率而不同,這就要求系統(tǒng)提供相應(yīng)的時(shí)鐘,以保證其正常工作,定時(shí)器/計(jì)數(shù)器可以實(shí)現(xiàn)對(duì)系統(tǒng)時(shí)鐘進(jìn)行分頻以遍提供給相應(yīng)的部件使用。存儲(chǔ)器包括100字節(jié)的ROM、和100字節(jié)RAM(ROM和RAM都可以擴(kuò)充容量)。ROM里存放要執(zhí)行的程序,RAM中存放運(yùn)算過(guò)程中產(chǎn)生的數(shù)據(jù)。ROM中的程序可由上位PC機(jī)通過(guò)串口寫(xiě)入。2.2實(shí)驗(yàn)驗(yàn)證2.1節(jié)介紹了WolfMCU的體系結(jié)構(gòu),接下來(lái)以一個(gè)小程序?yàn)槔治鯳olfMCU工作的具體過(guò)程。該程序?qū)崿F(xiàn)加法的操作,圖2所示是該程序的三條指令及其在軟核ROM中的存儲(chǔ)狀態(tài),第一條指令NOP是空操作指令,第二條指令把立即數(shù)56H送到累加器Acc中去,第三條指令給累加器Acc加上立即數(shù)5FH,結(jié)果保存在累加器Acc中,最后Acc中的結(jié)果是56H+5FH=B5H。第一條空操作指令比較簡(jiǎn)單,系統(tǒng)不進(jìn)行任何操作,只是狀態(tài)由初始狀態(tài)(STARTUP),變?yōu)槿≈噶顮顟B(tài)(FETCH),PC指針加1,指向下一條指令MOV。在第二個(gè)指令周期里,系統(tǒng)處于FETCH狀態(tài),存儲(chǔ)器控制模塊從ROM的001地址處讀出8位數(shù)據(jù)(01110100),把它送往譯碼模塊譯碼,譯碼模塊根據(jù)指令碼(01110100)識(shí)別出這是MOV_Acc_imm指令(把立即數(shù)送往累加器Acc),知道該指令需要有一個(gè)操作數(shù),所以把PC指針加1,并把系統(tǒng)下一個(gè)狀態(tài)置為EXEC1,為下一個(gè)周期取該指令的操作數(shù)做好準(zhǔn)備。第三個(gè)指令周期開(kāi)始,存儲(chǔ)器控制模塊取出操作數(shù)56H(01010110),同時(shí)譯碼模塊發(fā)出控制信號(hào),指出這是從ROM輸入的數(shù)據(jù)(因?yàn)橄到y(tǒng)處在EXEC1狀態(tài)),目標(biāo)寄存器是累加器Acc,然后PC指針加1,置系統(tǒng)下一個(gè)狀態(tài)為FETCH,為取下一條指令做好準(zhǔn)備。在這個(gè)時(shí)鐘周期內(nèi),存儲(chǔ)器控制模塊已經(jīng)把56H送到累加器Acc中了。ADD指令的執(zhí)行過(guò)程和MOV指令類(lèi)似,這里就不做詳述,唯一不同的是ADD指令執(zhí)行過(guò)程中經(jīng)過(guò)了兩次譯碼,第一次和MOV相同,第二次是在控制器把加法控制信號(hào)發(fā)送到ALU之后,ALU還要識(shí)別出這條加法指令是要把立即數(shù)和累加器中的操作數(shù)相加,這樣才能最終完成操作。至此,這段程序執(zhí)行完畢,正確輸出結(jié)果B5H。下載到MemecV2mb1000FPGA開(kāi)發(fā)板上的運(yùn)行,通過(guò)七段數(shù)碼管顯示的結(jié)果,如圖3所示:3.WolfMCU指令集設(shè)計(jì)對(duì)于桌面計(jì)算機(jī)系統(tǒng)來(lái)說(shuō),因?yàn)橐鎸?duì)不同的應(yīng)用,指令集功能越強(qiáng)大越好,通用性越強(qiáng)越好。但對(duì)于嵌入式系統(tǒng)來(lái)說(shuō),由于只面對(duì)某種特定的應(yīng)用,所以在滿(mǎn)足應(yīng)用需求的前提之下指令集越小越好,指令越專(zhuān)用,效率越高越好。綜合考慮了指令集尺寸和專(zhuān)用性,WolfMCU的指令集共有22條指令,包括16條通用指令和6條專(zhuān)用指令。16條通用指令都是最常用的指令,以后再設(shè)計(jì)其他專(zhuān)用指令集微處理器時(shí)可以在此基礎(chǔ)上進(jìn)行擴(kuò)充,通用指令包括數(shù)據(jù)傳送指令,算術(shù)運(yùn)算指令,邏輯運(yùn)算指令,控制轉(zhuǎn)移指令等四類(lèi),在這不再詳述。6條專(zhuān)用指令,如表1所列,增強(qiáng)了WolfMCU的運(yùn)算能力。除了指令的功能之外,指令的尋址方式也是指令集設(shè)計(jì)的一個(gè)重要方面,WolfMCU共支持4種尋址方式:立即尋址、寄存器尋址、直接尋址、寄存器間接尋址。ASIP的設(shè)計(jì),重點(diǎn)和難點(diǎn)是專(zhuān)用指令的實(shí)現(xiàn),下面以DA指令(十進(jìn)制調(diào)整)為例介紹一下專(zhuān)用指令的實(shí)現(xiàn)。這條指令跟在加法指令后,對(duì)累加器Acc中8位結(jié)果進(jìn)行調(diào)整,使它調(diào)整為壓縮得BCD碼的數(shù),以完成十進(jìn)制加法運(yùn)算功能。DA指令執(zhí)行的流程圖如圖4所示,具體代碼不再詳細(xì)介紹,這段代碼編譯后形成一個(gè)模塊連接在WolfMCU的控制器上,下載到FPGA芯片之后,相當(dāng)于有一塊專(zhuān)用電路支持DA指令,控制器只要把ACC中的內(nèi)容發(fā)送到這個(gè)模塊,就可以返回調(diào)整后的結(jié)果,大大提高了該指令的執(zhí)行效率。用下面的程序測(cè)試DA指令的執(zhí)行效果:程序執(zhí)行十進(jìn)制的8和9相加,在WolfMCU軟核上執(zhí)行后,輸出0107(圖5所示為通過(guò)七段數(shù)碼管顯示結(jié)果),說(shuō)明DA指令執(zhí)行正確。其他專(zhuān)用指令的實(shí)現(xiàn)方式和DA指令類(lèi)似,也是作為一個(gè)模塊連接在WolfMCU軟核之上,調(diào)用這些指令時(shí),只需把操作數(shù)傳送給這些模塊。4.專(zhuān)用指令實(shí)現(xiàn)與普通指令實(shí)現(xiàn)的性能對(duì)比上表中列出的乘加、乘減等指令也像十進(jìn)制調(diào)整指令一樣,因?yàn)橛袑?zhuān)門(mén)的電路支持這些指令,因此可以在幾個(gè)時(shí)鐘周期內(nèi)迅速輸出結(jié)果。上面提到的十進(jìn)制調(diào)整指令,首先需要判斷累加器的低四位是否大于9,輔助進(jìn)位標(biāo)志位是否為1,二者滿(mǎn)足其一就給低四位加上06H,然后判斷高四位,若高四位或進(jìn)位標(biāo)志為1,則給高四位加上60H,如果使用普通指令編程實(shí)現(xiàn),至少需要上百個(gè)時(shí)鐘周期,而采用專(zhuān)用指令之后,只需要12個(gè)時(shí)鐘周期,表2列出了采用專(zhuān)用指令和普通指令時(shí)需要的時(shí)鐘周期的對(duì)比。由表2可以看出,采用專(zhuān)用指令后,所需時(shí)鐘周期數(shù)至少降低了40%,為實(shí)現(xiàn)這些專(zhuān)用指令付出的硬件代價(jià)還是值得的。5.總結(jié)本文介紹了一種提高嵌入式微處理器指令執(zhí)行效率和擴(kuò)展性的設(shè)計(jì)思路--ASIP+FPGA,并對(duì)這種思路進(jìn)行了嘗試,實(shí)現(xiàn)了一個(gè)8位的微處理器軟核,為這個(gè)軟核設(shè)計(jì)了16條通用指令和6條專(zhuān)用指令,通過(guò)與普通指令的實(shí)現(xiàn)開(kāi)銷(xiāo)進(jìn)行對(duì)比,驗(yàn)證了ASIP+FPGA設(shè)計(jì)模式的優(yōu)勢(shì),這個(gè)簡(jiǎn)單的8位微處理器軟核可以作為設(shè)計(jì)復(fù)雜ASIP的原型,可
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度手房購(gòu)房定金及維修基金繳納合同
- 2025年度自然人股權(quán)轉(zhuǎn)讓協(xié)議書(shū)(金融投資)
- 2025年度教育資源共享認(rèn)購(gòu)書(shū)是否構(gòu)成合同
- 2025年度商業(yè)地產(chǎn)分銷(xiāo)代理合同
- 2025年度文化創(chuàng)意產(chǎn)業(yè)個(gè)人廠房租賃協(xié)議
- 2025年度專(zhuān)業(yè)市場(chǎng)委托招商與品牌培育合同
- 2025年度外賣(mài)平臺(tái)與餐飲企業(yè)聯(lián)合送餐服務(wù)協(xié)議
- 鄉(xiāng)村理發(fā)店裝修合作協(xié)議
- 2025年度會(huì)議中心房屋租賃合同轉(zhuǎn)讓及會(huì)議組織服務(wù)協(xié)議
- 2025年度安置房買(mǎi)賣(mài)合同執(zhí)行監(jiān)督協(xié)議
- 因公出國(guó)(境)管理辦法
- 別讓心態(tài)毀了你:受益一生的情緒掌控法
- 電梯控制技術(shù)PPT完整全套教學(xué)課件
- 甲狀腺旁腺分泌的激素及功能
- 中央財(cái)政成品油價(jià)格調(diào)整對(duì)漁業(yè)補(bǔ)助資金項(xiàng)目實(shí)施方案
- PFMEA模板完整版文檔
- 論生產(chǎn)安全對(duì)于家庭的重要性
- 風(fēng)力發(fā)電變槳系統(tǒng)外文翻譯
- 教學(xué)能力比賽決賽 《英語(yǔ)》教案
- ECMO IABP完整版可編輯
- 離婚糾紛證據(jù)清單
評(píng)論
0/150
提交評(píng)論