基于FPGA實現VLIW微處理器的設計與實現
2.1 取指令模塊的設計
取指令模塊的功能是從外部指令/數據的Catch取得VLIW指令和數據,將取得的信息傳輸給譯碼模塊,讓指令進行譯碼,同時也將取得的信息傳輸給寄存器堆模塊,讓執行模塊執行操作進入內部寄存器而從寄存器堆取回數據。取指令模塊設計實現如圖3所示。將指令和數據通過選擇器分配到3個操作并行單元中,然后細分操作執行的方式。具體劃分為頂層模塊和3種并行操作模塊。頂層模塊主要實現對指令和數據進行分流,分成操作碼和操作地址的形式。由于都是并行操作,只需要寫出操作1的功能,其余的操作功能一致,只是輸入的操作指令和操作地址不一樣。
2.2 譯碼操作模塊的設計
譯碼操作模塊的功能是將取指令模塊傳輸來的信息進行譯碼操作,將所進行譯碼操作傳輸給執行模塊。由于在進行譯碼操作時,操作1、操作2、操作3的指令與數據沒有相互沖突,而且每一種操作的功能都是對16種操作進行相對應的譯碼,不同在于輸入的各個操作的數據或指令的不相同,因此,在實現譯碼模塊時,只需要實現一個操作譯碼的功能就可以。在改變輸入的情況下就實現操作2、操作3的2種操作譯碼的功能,從而可實現譯碼模塊的整個功能。譯碼模塊其劃分原理如圖4所示。
2.3 執行模塊的設計
執行模塊是在VLIW微處理器所有模塊中最復雜的模塊,其主要功能是執行VLIW指令操作,并將執行的操作結果送到寫回模塊中。在執行模塊中采用寄存器旁路的特點,寄存器旁路用于處理指令或者數據之間的相互沖突問題。
將執行模塊劃分為:頂層模塊、操作1模塊、操作2模塊、操作3模塊、功能執行模塊、異常處理模塊。頂層模塊實現3種操作的數據與指令分流和中間變量的處理;操作1模塊實現寄存器旁路的功能和數據的處理;操作2模塊和操作3模塊實現的功能與操作1模塊相同,不同點在于中間數據沖突處理不一樣;功能執行模塊實現16種操作的具體功能;異常處理模塊實現數據或指令的異常處理的具體功能。將各個模塊連接就實現執行單元的整個功能。
2.4 寄存器堆的實現
寄存器堆的結構如圖5所示。輸入端的數據、指令是來自2個單元,一個是取指令單元數據和指令,另一個是寫回單元的數據;輸出的指令、數據要傳輸到執行單元中進行執行操作。因為3種操作是并行執行的,每一種操作功能都是一樣,因此在某個輸入信號下,經由某種操作單元時,在選擇器MUX下,選擇某種具體操作運算。在功能單元FU中,對取出的存儲器數據進行相應的操作運算處理,并將操作處理的結果輸出送到執行單元中。圖中虛線表示將寫回單元輸送來的操作數據直接存儲到存儲器中。實現時,要注意處理數據的相關問題。
評論