基于FPGA的簡(jiǎn)易微型計(jì)算機(jī)結(jié)構(gòu)分析與實(shí)現(xiàn)
發(fā)布時(shí)間:2008/5/28 0:00:00 訪問(wèn)次數(shù):633
通常,人們對(duì)微型計(jì)算機(jī)的工作原理及硬件結(jié)構(gòu)的了解來(lái)源于書(shū)本知識(shí),深入理解掌握其功能特點(diǎn)比較困難,要自己親手去做一個(gè)類似功能的微型計(jì)算機(jī)更是不可能。隨著可編程邏輯器件的廣泛應(yīng)用,為數(shù)字系統(tǒng)的設(shè)計(jì)帶來(lái)了極大的靈活性,用戶可以利用fpga(現(xiàn)場(chǎng)可編程門陣列)來(lái)開(kāi)發(fā)出一個(gè)精簡(jiǎn)指令的cpu,同時(shí)對(duì)微型計(jì)算機(jī)的原理及結(jié)構(gòu)進(jìn)行充分研究,便于將來(lái)進(jìn)行相關(guān)asic(專用集成電路)設(shè)計(jì),也可用于計(jì)算機(jī)原理教學(xué)之中。
1 微型計(jì)算機(jī)結(jié)構(gòu)及原理
以一個(gè)簡(jiǎn)化的微型計(jì)算機(jī)為例,微型計(jì)算機(jī)的簡(jiǎn)化結(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(顯示模塊)等組成。這里僅介紹有所改變或不同的模塊,其余可見(jiàn)文獻(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用來(lái)把地址及結(jié)果在數(shù)碼管上顯示出來(lái)。
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)無(wú)效時(shí),由con模塊發(fā)出信號(hào)及控制字,開(kāi)始取出和執(zhí)行每條指令。如控制字順序?yàn)閑rlrs3s2s1soeulm lbealaei licpeplp,這里lr可用于存儲(chǔ)器為ram時(shí)做寫(xiě)使能信號(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 fpga實(shí)現(xiàn)
2.1 總線方式
總線方式是指嚴(yán)格按圖1用fpga實(shí)現(xiàn)相應(yīng)結(jié)構(gòu)的微型機(jī)。本實(shí)驗(yàn)采用上海航虹公司的aedk實(shí)驗(yàn)箱,fpga芯片為altera公司的epf10k20tc144-4,軟件采用quartusii4.0、max+plusii10.0及synplifypr07.5,程序設(shè)計(jì)采用vhdl語(yǔ)言。
共有11個(gè)子模塊,最后用元件例化語(yǔ)句構(gòu)成總模塊。以設(shè)計(jì)程序計(jì)數(shù)器模塊c-pc及控制模塊c_con為例簡(jiǎn)單做一介紹。
當(dāng)三態(tài)輸出信號(hào)es選通時(shí),即es=“1”,pc可輸出,否則輸出為高阻態(tài)。數(shù)據(jù)或地址與總線相關(guān)的子模塊都需采用三態(tài)門。由于采用了三態(tài)門,最好用quartusⅱ軟件來(lái)進(jìn)行編譯,max+plusⅱ有時(shí)不一定可以通過(guò)。
用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)試不同的程序。
2.2 多路選擇器方式
多路選擇器方式是對(duì)總線方式的一種改進(jìn),可以實(shí)現(xiàn)地址總線與數(shù)據(jù)總線分離,一條指令的執(zhí)行只需4個(gè)機(jī)器節(jié)拍,極大地提高了運(yùn)行速度。對(duì)圖1進(jìn)行略微改變,如圖3所示。其中程序計(jì)數(shù)器模塊duolu_pc及指令寄存器模塊duolu_ir不再有三態(tài)門,對(duì)其控制也相應(yīng)簡(jiǎn)化。增加了2個(gè)二選一多路選擇器。下面介紹其工作原理。
狀態(tài)s0(第1節(jié)拍)時(shí),首先
通常,人們對(duì)微型計(jì)算機(jī)的工作原理及硬件結(jié)構(gòu)的了解來(lái)源于書(shū)本知識(shí),深入理解掌握其功能特點(diǎn)比較困難,要自己親手去做一個(gè)類似功能的微型計(jì)算機(jī)更是不可能。隨著可編程邏輯器件的廣泛應(yīng)用,為數(shù)字系統(tǒng)的設(shè)計(jì)帶來(lái)了極大的靈活性,用戶可以利用fpga(現(xiàn)場(chǎng)可編程門陣列)來(lái)開(kāi)發(fā)出一個(gè)精簡(jiǎn)指令的cpu,同時(shí)對(duì)微型計(jì)算機(jī)的原理及結(jié)構(gòu)進(jìn)行充分研究,便于將來(lái)進(jìn)行相關(guān)asic(專用集成電路)設(shè)計(jì),也可用于計(jì)算機(jī)原理教學(xué)之中。
1 微型計(jì)算機(jī)結(jié)構(gòu)及原理
以一個(gè)簡(jiǎn)化的微型計(jì)算機(jī)為例,微型計(jì)算機(jī)的簡(jiǎn)化結(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(顯示模塊)等組成。這里僅介紹有所改變或不同的模塊,其余可見(jiàn)文獻(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用來(lái)把地址及結(jié)果在數(shù)碼管上顯示出來(lái)。
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)無(wú)效時(shí),由con模塊發(fā)出信號(hào)及控制字,開(kāi)始取出和執(zhí)行每條指令。如控制字順序?yàn)閑rlrs3s2s1soeulm lbealaei licpeplp,這里lr可用于存儲(chǔ)器為ram時(shí)做寫(xiě)使能信號(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 fpga實(shí)現(xiàn)
2.1 總線方式
總線方式是指嚴(yán)格按圖1用fpga實(shí)現(xiàn)相應(yīng)結(jié)構(gòu)的微型機(jī)。本實(shí)驗(yàn)采用上海航虹公司的aedk實(shí)驗(yàn)箱,fpga芯片為altera公司的epf10k20tc144-4,軟件采用quartusii4.0、max+plusii10.0及synplifypr07.5,程序設(shè)計(jì)采用vhdl語(yǔ)言。
共有11個(gè)子模塊,最后用元件例化語(yǔ)句構(gòu)成總模塊。以設(shè)計(jì)程序計(jì)數(shù)器模塊c-pc及控制模塊c_con為例簡(jiǎn)單做一介紹。
當(dāng)三態(tài)輸出信號(hào)es選通時(shí),即es=“1”,pc可輸出,否則輸出為高阻態(tài)。數(shù)據(jù)或地址與總線相關(guān)的子模塊都需采用三態(tài)門。由于采用了三態(tài)門,最好用quartusⅱ軟件來(lái)進(jìn)行編譯,max+plusⅱ有時(shí)不一定可以通過(guò)。
用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)試不同的程序。
2.2 多路選擇器方式
多路選擇器方式是對(duì)總線方式的一種改進(jìn),可以實(shí)現(xiàn)地址總線與數(shù)據(jù)總線分離,一條指令的執(zhí)行只需4個(gè)機(jī)器節(jié)拍,極大地提高了運(yùn)行速度。對(duì)圖1進(jìn)行略微改變,如圖3所示。其中程序計(jì)數(shù)器模塊duolu_pc及指令寄存器模塊duolu_ir不再有三態(tài)門,對(duì)其控制也相應(yīng)簡(jiǎn)化。增加了2個(gè)二選一多路選擇器。下面介紹其工作原理。
狀態(tài)s0(第1節(jié)拍)時(shí),首先
熱門點(diǎn)擊
- PLC和PLD的區(qū)別與聯(lián)系
- Xilinx FPGA全局時(shí)鐘和第二全局時(shí)鐘
- 基于FPGA片上PowerPC和VxWork
- 使用C編譯器+ICD2調(diào)試程序需要注意的問(wèn)題
- Altera發(fā)布低成本低功耗CPLD EPM
- 基于VHDL的彩燈控制
- 32位單精度浮點(diǎn)乘法器的FPGA實(shí)現(xiàn)
- FPGA與DDR3 SDRAM的接口設(shè)計(jì)
- DesignWare® USB 2.
- 基于IP模塊的PCI接口設(shè)計(jì)及FPGA實(shí)現(xiàn)
推薦技術(shù)資料
- 聲道前級(jí)設(shè)計(jì)特點(diǎn)
- 與通常的Hi-Fi前級(jí)不同,EP9307-CRZ這臺(tái)分... [詳細(xì)]
- 超低功耗角度位置傳感器參數(shù)技術(shù)
- 四路輸出 DC/DC 降壓電源
- 降壓變換器和升降壓變換器優(yōu)特點(diǎn)
- 業(yè)界首創(chuàng)可在線編程電源模塊 m
- 可編程門陣列 (FPGA)智能 電源解決方案
- 高效先進(jìn)封裝工藝
- 多媒體協(xié)處理器SM501在嵌入式系統(tǒng)中的應(yīng)用
- 基于IEEE802.11b的EPA溫度變送器
- QUICCEngine新引擎推動(dòng)IP網(wǎng)絡(luò)革新
- SoC面世八年后的產(chǎn)業(yè)機(jī)遇
- MPC8xx系列處理器的嵌入式系統(tǒng)電源設(shè)計(jì)
- dsPIC及其在交流變頻調(diào)速中的應(yīng)用研究