<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > EDA/PCB > 設(shè)計(jì)應(yīng)用 > 基于FPGA的簡易微型計(jì)算機(jī)結(jié)構(gòu)分析與實(shí)現(xiàn)

          基于FPGA的簡易微型計(jì)算機(jī)結(jié)構(gòu)分析與實(shí)現(xiàn)

          作者: 時(shí)間:2012-10-15 來源:網(wǎng)絡(luò) 收藏

          引 言

          本文引用地址:http://www.ex-cimer.com/article/189850.htm

          通常,人們對(duì)的工作原理及硬件結(jié)構(gòu)的了解來源于書本知識(shí),深入理解掌握其功能特點(diǎn)比較困難,要自己親手去做一個(gè)類似功能的更是不可能。隨著可編程邏輯器件的廣泛應(yīng)用,為數(shù)字系統(tǒng)的設(shè)計(jì)帶來了極大的靈活性,用戶可以利用(現(xiàn)場可編程門陣列)來開發(fā)出一個(gè)精簡指令的CPU,同時(shí)對(duì)的原理及結(jié)構(gòu)進(jìn)行充分研究,便于將來進(jìn)行相關(guān)ASIC(專用集成電路)設(shè)計(jì),也可用于計(jì)算機(jī)原理教學(xué)之中。

          1 微型計(jì)算機(jī)結(jié)構(gòu)及原理

          以一個(gè)簡化的微型計(jì)算機(jī)為例,微型計(jì)算機(jī)的簡化結(jié)構(gòu)。

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

          微型計(jì)算機(jī)由PC(程序計(jì)數(shù)器)、IR(指令寄存器)、CON(控制部件)、MAR(存儲(chǔ)地址寄存器)、ROM(只讀存儲(chǔ)器)、A(累加器)、ALU(算術(shù)邏輯部件)、B(寄存器)、OUTREG(輸出寄存器)、DLEDDIS(數(shù)碼管動(dòng)態(tài)掃描模塊)及DECL7S(顯示模塊)等組成。這里僅介紹有所改變或不同的模塊,其余可見文獻(xiàn)[1]。

          L為數(shù)據(jù)載入控制信號(hào),E為三態(tài)輸出選通信號(hào),clk為時(shí)鐘信號(hào),clr為清零信號(hào),Cp為控制PC加1信號(hào),S0-S3為控制ALU進(jìn)行加減或邏輯運(yùn)算的選擇信號(hào)。所有的控制、時(shí)鐘及清零信號(hào)由CON模塊給出,而CON模塊由外部時(shí)鐘clkin及清零信號(hào)rst控制。PC可以置數(shù),即可執(zhí)行跳轉(zhuǎn)指令。OUTREG可清零,便于多次調(diào)試。DLEDDIS及DECL7S用來把地址及結(jié)果在數(shù)碼管上顯示出來。

          1.2 微型計(jì)算機(jī)原理

          雖然這臺(tái)微型機(jī)可以實(shí)現(xiàn)16條指令,但本文對(duì)指令不做擴(kuò)展,僅以5條指令為例。LDA為將數(shù)據(jù)裝入累加器A(操作碼0000);ADD為進(jìn)行加法運(yùn)算(操作碼0001);SUB為進(jìn)行減法運(yùn)算(操作碼0010);OUT為輸出結(jié)果(操作碼1110);HLT為停機(jī)(操作碼1111)。

          在程序和數(shù)據(jù)裝入后,當(dāng)外部給出時(shí)鐘信號(hào)及清零信號(hào)無效時(shí),由CON模塊發(fā)出信號(hào)及控制字,開始取出和執(zhí)行每條指令。如控制字順序?yàn)镋rLrS3S2S1SOEuLm LbEaLaEi LiCpEpLp,這里L(fēng)r可用于存儲(chǔ)器為RAM時(shí)做寫使能信號(hào)。由于采用的是數(shù)據(jù)總線與地址總線合一的總線結(jié)構(gòu),一條指令的執(zhí)行需要6個(gè)機(jī)器節(jié)拍,即前3節(jié)拍取指周期與后3節(jié)拍執(zhí)行周期。如執(zhí)行ADD 0AH,機(jī)器碼為1AH(0001 1001)。第1節(jié)拍將PC內(nèi)容送入MAR,控制字為“0000 0001 00000010”,即Ep與Lm為1;第2節(jié)拍將ROM中對(duì)應(yīng)地址單元中的內(nèi)容送到IR,IR高4位送至CON,控制字為“1000 0000 0000 1000”,即Er與Li為1;第3節(jié)拍使PC加1,控制字中Cp為1,其余為0;第4節(jié)拍將IR的低4位送至MAR,Ei與Lm為1;第5節(jié)拍將ROM中的內(nèi)容送入累加器A中,Er與La為1;第6節(jié)拍為加法運(yùn)算,Eu與La為1,同時(shí)S0-s3選擇為加法運(yùn)算。

          2 實(shí)現(xiàn)

          2.1 總線方式

          總線方式是指嚴(yán)格按圖1用實(shí)現(xiàn)相應(yīng)結(jié)構(gòu)的微型機(jī)。本實(shí)驗(yàn)采用上海航虹公司的AEDK實(shí)驗(yàn)箱,F(xiàn)PGA芯片為Altera公司的EPF10K20TC144-4,軟件采用QuartusII4.0、Max+plusII10.0及synplifypr07.5,程序設(shè)計(jì)采用VHDL語言。

          共有11個(gè)子模塊,最后用元件例化語句構(gòu)成總模塊。以設(shè)計(jì)程序計(jì)數(shù)器模塊C-PC及控制模塊C_CON為例簡單做一介紹。

          當(dāng)三態(tài)輸出信號(hào)es選通時(shí),即es=“1”,PC可輸出,否則輸出為高阻態(tài)。數(shù)據(jù)或地址與總線相關(guān)的子模塊都需采用三態(tài)門。由于采用了三態(tài)門,最好用QuartusⅡ軟件來進(jìn)行編譯,Max+plusⅡ有時(shí)不一定可以通過。

          用synplify pro7.5對(duì)C_PC模塊進(jìn)行RTL(寄存器傳輸級(jí))原理圖觀察,如圖2所示。其綜合電路與一個(gè)4位二進(jìn)制計(jì)數(shù)器類似,只是多了一個(gè)三態(tài)門。用synplify pro7.5不僅可以觀察RTL電路,還可以觀察門級(jí)電路結(jié),深入了解其內(nèi)部結(jié)構(gòu)。

          C_CON模塊是最關(guān)鍵的模塊,因?yàn)樗械目刂菩盘?hào)都由它發(fā)出。由于指令執(zhí)行需6個(gè)機(jī)器節(jié)拍,每個(gè)節(jié)拍對(duì)應(yīng)相應(yīng)功能,采用狀態(tài)機(jī)是實(shí)現(xiàn)此高效率、高可靠邏輯控制的重要途徑。如以下程序所示,每個(gè)狀態(tài)對(duì)應(yīng)著不同的控制字,共有6個(gè)狀態(tài)。

          只讀存儲(chǔ)器模塊可使用LPM_ROM的LPM_FILE文件,便于調(diào)試不同的程序。


          上一頁 1 2 下一頁

          評(píng)論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();