基于FPGA的8085A CPU結(jié)構(gòu)分析與實(shí)現(xiàn)-設(shè)計(jì)應(yīng)用_第1頁(yè)
基于FPGA的8085A CPU結(jié)構(gòu)分析與實(shí)現(xiàn)-設(shè)計(jì)應(yīng)用_第2頁(yè)
基于FPGA的8085A CPU結(jié)構(gòu)分析與實(shí)現(xiàn)-設(shè)計(jì)應(yīng)用_第3頁(yè)
基于FPGA的8085A CPU結(jié)構(gòu)分析與實(shí)現(xiàn)-設(shè)計(jì)應(yīng)用_第4頁(yè)
基于FPGA的8085A CPU結(jié)構(gòu)分析與實(shí)現(xiàn)-設(shè)計(jì)應(yīng)用_第5頁(yè)
已閱讀5頁(yè),還剩6頁(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)介

精品文檔-下載后可編輯基于FPGA的8085ACPU結(jié)構(gòu)分析與實(shí)現(xiàn)-設(shè)計(jì)應(yīng)用1引言

微型計(jì)算機(jī)原理幾乎是所有理工科類(lèi)大學(xué)生的必修課目之一,其重要性不言而喻。然而大多數(shù)教學(xué)側(cè)重于應(yīng)用方面,對(duì)計(jì)算機(jī)的結(jié)構(gòu)及工作原理涉之不深,因?yàn)闊o(wú)法做一個(gè)CPU來(lái)演示。這樣學(xué)生不能真正了解其性能特點(diǎn),掌握內(nèi)部結(jié)構(gòu),在學(xué)習(xí)匯編語(yǔ)言的時(shí)候增加了難度,影響學(xué)習(xí)興趣。隨著可編程邏輯器件的廣泛應(yīng)用,給數(shù)字系統(tǒng)的設(shè)計(jì)帶來(lái)了極大的靈活性,用戶可以利用現(xiàn)場(chǎng)可編程門(mén)陣列FPGA來(lái)開(kāi)發(fā)出一個(gè)適合自己的專(zhuān)用CPU,對(duì)微型計(jì)算機(jī)的原理及結(jié)構(gòu)進(jìn)行充分理解與研究,便于將來(lái)從事相關(guān)ASIC設(shè)計(jì),開(kāi)發(fā)出創(chuàng)新型的產(chǎn)品,為我國(guó)計(jì)算機(jī)發(fā)展做貢獻(xiàn)。

現(xiàn)場(chǎng)可編程門(mén)陣列FPGA門(mén)數(shù)眾多,人們可以將合適的IP軟核或其他形式的核作為嵌入式模塊裝在自己的設(shè)計(jì)中。但通常IP軟核需要門(mén)數(shù)較多的FPGA器件支持,作為學(xué)習(xí)來(lái)說(shuō)的FPGA芯片往往資源有限,需要節(jié)約FPGA的成本與面積;并且沒(méi)必要實(shí)現(xiàn)所有功能,只要做出關(guān)鍵部分及重要結(jié)構(gòu),明白其運(yùn)行機(jī)理,又能與真實(shí)的CPU緊密相聯(lián)即可。實(shí)驗(yàn)箱上采用的FPGA芯片為Altera公司的EPF10K20TC144-4。這里以Intel的8085A為例來(lái)說(shuō)明8位計(jì)算機(jī)的工作原理。

28085ACPU設(shè)計(jì)及實(shí)現(xiàn)

2.1FPGA芯片及外圍電路簡(jiǎn)介

Altera的FLEX10K器件是工業(yè)界首例嵌入式PLD,基于可重配置CMOSSRAM元件。EPF10K20帶有144個(gè)LAB(邏輯陣列塊)和1152個(gè)邏輯單元,I/O數(shù)目為189。另外,芯片中嵌入式陳列塊(EAB)有6個(gè),其RAM總位數(shù)為12288。

實(shí)驗(yàn)涉及到FPGA芯片的外圍部分包括控制開(kāi)關(guān)、2*8鍵盤(pán)輸入、6個(gè)數(shù)碼管輸出、8個(gè)輸入端口、8個(gè)輸出端口及2個(gè)中斷開(kāi)關(guān)等。主要用來(lái)增添程序設(shè)計(jì)的靈活性及形象性,使其可現(xiàn)場(chǎng)調(diào)試,驗(yàn)證結(jié)果,避免單純用軟件仿真的不足。外圍電路控制模塊及結(jié)構(gòu)可參見(jiàn)文獻(xiàn)[1]。

現(xiàn)場(chǎng)調(diào)試時(shí)可以通過(guò)控制開(kāi)關(guān),手動(dòng)從鍵盤(pán)輸入相應(yīng)的地址及數(shù)據(jù)(通過(guò)數(shù)碼管顯示),輸錯(cuò)可以修改;用寫(xiě)使能開(kāi)關(guān)給RAM寫(xiě)入相應(yīng)程序。當(dāng)輸入完所有程序后,按下運(yùn)行開(kāi)關(guān)即可執(zhí)行程序,在數(shù)碼管上顯示地址、數(shù)據(jù)及終結(jié)果。控制開(kāi)關(guān)用于配合鍵盤(pán)通過(guò)手動(dòng)方式輸入程序,可以形象化的現(xiàn)場(chǎng)編程。在軟件后不使用計(jì)算機(jī),通過(guò)按鈕、鍵盤(pán)就能將程序輸入到RAM中,然后運(yùn)行,顯示出結(jié)果。

2.2CPU模塊

2.2.1內(nèi)部結(jié)構(gòu)

CPU模塊的內(nèi)部結(jié)構(gòu)如圖1所示。微型計(jì)算機(jī)由下面幾個(gè)部分組成:8位通用寄存器H、L,16位程序計(jì)數(shù)器(PC),16位堆棧指示器(SP),一個(gè)加1/減1地址鎖存器(ADD/ADR),8位NL寄存器(NL),8位中斷時(shí)間寄存器(TIMER);算術(shù)邏輯單元(ALU),累加器(A),標(biāo)志寄存器(FR),數(shù)據(jù)選擇器(SEL);指令寄存器(IR),控制器(CON),4選1多路選擇器(MUX),存儲(chǔ)地址寄存器(MAR),8位數(shù)據(jù)寄存器(MDR);輸入數(shù)據(jù)寄存器(INDT),輸出數(shù)據(jù)寄存器(OUTDT)等部分組成。其中標(biāo)志寄存器有4位,分別是:進(jìn)位位(Cy)、零位(Z)、符號(hào)位(S)、奇偶位(P),微機(jī)通過(guò)檢測(cè)這些標(biāo)志位的1位或多位來(lái)判斷程序是否需要轉(zhuǎn)移。

圖1微型計(jì)算機(jī)CPU結(jié)構(gòu)圖

圖中字母L為數(shù)據(jù)載入控制信號(hào),E為三態(tài)輸出選通信號(hào),clk為時(shí)鐘信號(hào),clr為清零信號(hào),W為數(shù)據(jù)載入PC信號(hào),Cpc為控制PC加1信號(hào),S3-S0為控制ALU進(jìn)行加減、邏輯運(yùn)算或移位運(yùn)算的選擇信號(hào),Iadr、Dadr為加1/減1地址鎖存器加1減1控制信號(hào),Isp、Dsp為堆棧指示器的加1減1控制信號(hào),Eram、Wram為讀寫(xiě)RAM控制信號(hào)。另外,累加器(A),標(biāo)志寄存器(FR)增加了專(zhuān)用的清零信號(hào)。

所有的控制、時(shí)鐘及清零信號(hào)由控制器(CON)模塊給出,而CON模塊由外部時(shí)鐘clkin、清零信號(hào)rst及使能信號(hào)enable控制。存儲(chǔ)地址寄存器(MAR)用來(lái)給RAM輸送地址,從RAM讀指令和數(shù)據(jù),也可以給RAM寫(xiě)數(shù)據(jù)。

Altera公司的EPF10K20TC144-4芯片中有6個(gè)嵌入式陳列塊,其RAM總位數(shù)為12288。這里RAM可配置為1024*8(1024個(gè)地址,8位數(shù)據(jù)),直接調(diào)用參數(shù)可設(shè)置模塊庫(kù)中LPM_RAM_IO的LPM_FILE文件,用文本編輯器編輯mif文件來(lái)初始化數(shù)據(jù)。如果不用FPGA的內(nèi)部RAM,可外接64K的8位RAM,即尋址空間為64K。

2.2.2指令系統(tǒng)

內(nèi)部工作原理和指令系統(tǒng)緊密相聯(lián)。本微機(jī)共有54條指令,可分為8類(lèi),即數(shù)據(jù)傳送指令、算術(shù)與邏輯運(yùn)算指令、移位指令、增量與減量指令、堆棧操作及中斷指令、轉(zhuǎn)移指令、子程序調(diào)用及返回指令、其它指令等。指令系統(tǒng)與8080/8085的指令系統(tǒng)表基本一致,標(biāo)志位的變化(無(wú)輔助進(jìn)位位)與其相同,可參見(jiàn)文獻(xiàn)。

由于資源所限,沒(méi)有使用8085A所有的寄存器及某些功能,如B、C、D、E寄存器等,但是這并不妨礙本微機(jī)能夠?qū)崿F(xiàn)其絕大多數(shù)功能。從時(shí)鐘周期數(shù)(狀態(tài)數(shù))來(lái)說(shuō),比8085A更少,也就是說(shuō)速度更快。

數(shù)據(jù)傳送指令有14條(一個(gè)n表示一個(gè)8位二進(jìn)制數(shù)據(jù)):3個(gè)狀態(tài)數(shù)的movah(將H的內(nèi)容存入A)、movha、movla(將A的內(nèi)容存入L)、mova;l4狀態(tài)的mvian(將數(shù)據(jù)n存入A)、mvihn、mviln、mvitn(將數(shù)據(jù)n存入time寄存器,此指令為新增);5狀態(tài)的movma(將A的內(nèi)容裝入HL所指的地址)、movam;4狀態(tài)數(shù)的sphl(將HL寄存器的內(nèi)容裝入SP);6狀態(tài)的inn(n所指地址的內(nèi)容給A)、outn;4狀態(tài)的cd_out(A內(nèi)容給PC+1,停機(jī),此指令為新增)等。

算術(shù)與邏輯運(yùn)算指令有13條:3狀態(tài)的cmc(Cy符號(hào)取反)、stc(Cy置1)、cma(寄存器A內(nèi)容取反);4狀態(tài)的addh(將A與H相加后給A)、adin(將A與n相加后給A)、subh、suin、cmph(將A與H相比較(只影響符號(hào)))、adch(將A與H及符號(hào)Cy相加后給A)、sbbh、anah(將A與H寄存器的內(nèi)容相與后給A)、orah、xrah(將A與H異或后給A)等。

移位指令有4條,同8085A。增量與減量指令有4條,只針對(duì)H、L寄存器。堆棧操作及中斷指令有8條:7狀態(tài)的pushh(HL壓入堆棧)、pushp(AF壓入堆棧);6狀態(tài)的poph、popp;8狀態(tài)的rsta(重新啟動(dòng));3狀態(tài)的etime(T寄存器使能,此指令為新增)、eint(中斷使能)、dint等。轉(zhuǎn)移指令有5條:7狀態(tài)的jmpn(無(wú)條件轉(zhuǎn)移至程序nn,低位在前);不跳轉(zhuǎn)時(shí)5狀態(tài),跳轉(zhuǎn)時(shí)7狀態(tài)的jnn(Z=1時(shí)轉(zhuǎn)移至程序nn)、jcn、jmn、jpen等。子程序調(diào)用及返回指令有2條:11狀態(tài)的calln(保留當(dāng)前PC,轉(zhuǎn)移至程序nn,低位在前)、7狀態(tài)的ret(返回)。其它指令有4條:3狀態(tài)的nop、clrF(標(biāo)志寄存器清零,此指令為新增)、clrA(A清零,此指令為新增)、hlt等。

狀態(tài)數(shù)的計(jì)算,若本次指令的前面一指令為3狀態(tài)數(shù)時(shí),本指令將會(huì)減少1狀態(tài)。如:movha,adin;若第1指令movha前沒(méi)有其它3狀態(tài)指令時(shí),它是3個(gè)狀態(tài),而adin會(huì)減少1狀態(tài),由原來(lái)的4狀態(tài)變?yōu)?狀態(tài)。再如:movla,movha;則后一狀態(tài)由3狀態(tài)變成2狀態(tài)。其余類(lèi)似(但不包括rsta)。

2.2.3工作原理

由圖1可知,不同的子模塊一共有20個(gè),每個(gè)模塊用VHDL程序來(lái)實(shí)現(xiàn),用元件例化語(yǔ)句構(gòu)成總模塊。下面以設(shè)計(jì)算術(shù)邏輯部件模塊c_alu及控制模塊c_con為例簡(jiǎn)要介紹一下思路。

(1)算術(shù)邏輯部件c_alu。

算術(shù)邏輯部件c_alu非常占用FPGA的邏輯單元logiccells,需要盡量?jī)?yōu)化。S3-S0為控制ALU進(jìn)行加減、邏輯或移位運(yùn)算的選擇信號(hào),一共可得到16種運(yùn)算,這里用了13種:6種算術(shù)、3種邏輯運(yùn)算和4種移位指令。如加法、減法、加1、減1、帶符號(hào)位加法、帶符號(hào)位減法;A或B、A與B、A異或B;A左移、A右移、A帶Cy左移、A帶Cy右移等。另外,ALU的運(yùn)算直接影響到符號(hào)位的變化,運(yùn)算結(jié)果存入標(biāo)志寄存器(FR)。有關(guān)alu的運(yùn)算多為4個(gè)狀態(tài)。

(2)控制模塊c_con。

占用FPGA的邏輯單元logiccells多的是控制模塊c_con。在參考文獻(xiàn)[3]中的思路不再適合于稍大型的CPU設(shè)計(jì),但它是理解如何控制CPU信號(hào)的一個(gè)起點(diǎn)。對(duì)于一條指令應(yīng)該細(xì)化到每一個(gè)步驟及每一位,而不再是以一個(gè)控制字的方式去實(shí)現(xiàn)。以指令movah為例,首先把PC值送入MAR寄存器,此為狀態(tài)s0,這時(shí)起作用的是Lmar;然后在狀態(tài)s1時(shí),PC值加1,將存儲(chǔ)器單元中的內(nèi)容讀入到IR,這時(shí)Cpc、Eram、Lir起作用,Lmar不再起作用,需要置0;接著在狀態(tài)s2時(shí),對(duì)IR寄存器中的指令進(jìn)行譯碼,所有的操作指令都是在此狀態(tài)譯碼(不包括rsta)。對(duì)于3狀態(tài)指令,不保存指令,直接執(zhí)行,然后跳轉(zhuǎn)到狀態(tài)s1。因此對(duì)于下一條指令來(lái)說(shuō),其狀態(tài)數(shù)減1。

指令中狀態(tài)數(shù)多的是子程序調(diào)用calln指令。

Calln指令要保存PC值到SP-1及SP-2中,然后跳轉(zhuǎn)到子程序。考慮到返回指令ret執(zhí)行后,PC要重新在原位置執(zhí)行,那么存入SP中的PC值應(yīng)該是在得到其指令后加3。對(duì)PC進(jìn)行單獨(dú)加3是一種思路,但需要另外耗費(fèi)資源,并且增加狀態(tài)。這里采用了先把calln后的nn存入16位的加1/減1地址鎖存器,然后保存PC到SP,再將nn賦值給PC,跳轉(zhuǎn)到子程序的方法。返回指令ret不僅可以用作子程序調(diào)用后的返回,還可用于中斷的返回。

2.3..FPGA實(shí)現(xiàn)及編程思路

由于使用內(nèi)部RAM,其地址空間為0000-03FFH。通常在00H中放入28(即jmpn,跳轉(zhuǎn)指令),將程序跳轉(zhuǎn)到從40H開(kāi)始。把03-0EH作為放常用變量的空間,用inn及outn指令來(lái)調(diào)用,以解決寄存器不足的缺陷。這也是一種編程思路,可參見(jiàn)文獻(xiàn)[4]。0FH、1FH、2FH分別為外部中斷0(int0),外部中斷1(int1),定時(shí)器中斷(time)的起始位置。Int0優(yōu)先級(jí),int1次之,time。中斷信號(hào)高電平有效。中斷功能的實(shí)現(xiàn)是為了學(xué)習(xí)其工作原理,只做了一個(gè)定時(shí)器中斷。計(jì)時(shí)為減1方式,當(dāng)計(jì)時(shí)為0時(shí),發(fā)出中斷信號(hào)。Time中斷的使用方法:首先關(guān)中斷(dint),給T賦值(mvitn),再開(kāi)中斷(eint),T寄存器使能(etime)。此后,T寄存器正常工作。若要再次使用,首先給T賦值,然后T寄存器使能。

初始時(shí)的PC為0000H,SP為03FFH。SP的更改可通過(guò)指令sphl來(lái)執(zhí)行。針對(duì)實(shí)驗(yàn)箱,將8000-0FFFFH作為輸出口地址,4000-7FFFH作為輸入口地址。而實(shí)際實(shí)驗(yàn)箱上只定義了1個(gè)8位輸入,1個(gè)8位輸出。IO口的操作可通過(guò)movam及movma指令去實(shí)現(xiàn)。

由于鍵盤(pán)輸入時(shí),要進(jìn)行去抖動(dòng)處理,使用了兩種不同的時(shí)鐘頻率。鍵盤(pán)處理采用1KHz的頻率,而CPU的工作時(shí)鐘可選擇實(shí)驗(yàn)箱上的不同頻率,從1Hz到10MHz皆可,甚至可以外接其它更高頻率。

如果采用1Hz的clkin頻率,可以清楚地看到CPU工作的每一過(guò)程。

將本微機(jī)到實(shí)驗(yàn)箱上,已成功實(shí)現(xiàn)了乘法(用減1或右移的方法),調(diào)用子程序,IO口的使用,中斷的使用等多項(xiàng)實(shí)驗(yàn),驗(yàn)證了CPU設(shè)計(jì)的正確性。

3結(jié)束語(yǔ)

QuartusII對(duì)微機(jī)進(jìn)行編譯,其邏輯單元LE用到1151,占100%。用FPGA來(lái)實(shí)現(xiàn)CPU的功能,研究其工作原理,然后用Synplifypro軟件對(duì)其進(jìn)行門(mén)級(jí)研究,對(duì)CPU的面紗將不再感

溫馨提示

  • 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)論