帶GPS授時的TMS320F2812數據采集系統(tǒng)
隨著可編程邏輯器件的廣泛應用,為數字系統(tǒng)的設計帶來了極大的靈活性,用戶可以利用fpga(現場可編程門陣列)來開發(fā)出一個精簡指令的cpu,同時對微型計算機的原理及結構進行充分研究,便于將來進行相關asic(專用集成電路)設計,也可用于計算機原理教學之中。
1 微型計算機結構及原理
以一個簡化的微型計算機為例,圖1是微型計算機的簡化結構。
1.1 微型計算機結構
微型計算機由pc(程序計數器)、ir(指令寄存器)、con(控制部件)、mar(存儲地址寄存器)、rom(只讀存儲器)、a(累加器)、alu(算術邏輯部件)、b(寄存器)、outreg(輸出寄存器)、dleddis(數碼管動態(tài)掃描模塊)及decl7s(顯示模塊)等組成。這里僅介紹有所改變或不同的模塊,其余可見文獻[1]。
圖1中:l為數據載入控制信號,e為三態(tài)輸出選通信號,clk為時鐘信號,clr為清零信號,cp為控制pc加1信號,s0-s3為控制alu進行加減或邏輯運算的選擇信號。所有的控制、時鐘及清零信號由con模塊給出,而con模塊由外部時鐘clkin及清零信號rst控制。pc可以置數,即可執(zhí)行跳轉指令。outreg可清零,便于多次調試。dleddis及decl7s用來把地址及結果在數碼管上顯示出來。
1.2 微型計算機原理
雖然這臺微型機可以實現16條指令,但本文對指令不做擴展,僅以5條指令為例。lda為將數據裝入累加器a(操作碼0000);add為進行加法運算(操作碼0001);sub為進行減法運算(操作碼0010);out為輸出結果(操作碼1110);hlt為停機(操作碼1111)。
在程序和數據裝入后,當外部給出時鐘信號及清零信號無效時,由con模塊發(fā)出信號及控制字,開始取出和執(zhí)行每條指令。如控制字順序為erlrs3s2s1soeulm lbealaei licpeplp,這里lr可用于存儲器為ram時做寫使能信號。
由于采用的是數據總線與地址總線合一的總線結構,一條指令的執(zhí)行需要6個機器節(jié)拍,即前3節(jié)拍取指周期與后3節(jié)拍執(zhí)行周期。如執(zhí)行add 0ah,機器碼為1ah(0001 1001)。第1節(jié)拍將pc內容送入mar,控制字為“0000 0001 00000010”,即ep與lm為1;第2節(jié)拍將rom中對應地址單元中的內容送到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中的內容送入累加器a中,er與la為1;第6節(jié)拍為加法運算,eu與la為1,同時s0-s3選擇為加法運算。
2 fpga實現
2.1 總線方式
總線方式是指嚴格按圖1用fpga實現相應結構的微型機。本實驗采用上海航虹公司的aedk實驗箱,fpga芯片為altera公司的epf10k20tc144-4,軟件采用quartusii4.0、max+plusii10.0及synplifypr07.5,程序設計采用vhdl語言。
由圖1可知,共有11個子模塊,最后用元件例化語句構成總模塊。以設計程序計數器模塊c-pc及控制模塊c_con為例簡單做一介紹。
當三態(tài)輸出信號es選通時,即es=“1”,pc可輸出,否則輸出為高阻態(tài)。數據或地址與總線相關的子模塊都需采用三態(tài)門。由于采用了三態(tài)門,最好用quartusⅱ軟件來進行編譯,max+plusⅱ有時不一定可以通過。
用synplify pro7.5對c_pc模塊進行rtl(寄存器傳輸級)原理圖觀察,如圖2所示。其綜合電路與一個4位二進制計數器類似,只是多了一個三態(tài)門。用synplify pro7.5不僅可以觀察rtl電路,還可以觀察門級電路結,深入了解其內部結構。
c_con模塊是最關鍵的模塊,因為所有的控制信號都由它發(fā)出。由于指令執(zhí)行需6個機器節(jié)拍,每個節(jié)拍對應相應功能,采用狀態(tài)機是實現此高效率、高可靠邏輯控制的重要途徑。如以下程序所示,每個狀態(tài)對應著不同的控制字,共有6個狀態(tài)。