2009年8月13日 星期四

交換連結

用小畫家隨便畫一畫的成果。

Mahdi's Blog

歡迎交換連結,原始碼如下

<a href="http://mahdi0828.blogspot.com/" target="_blank">
<img border="0" height="15" width="80" alt="Mahdi's Blog" src="http://sites.google.com/site/hayden0828/blog/logo1.png"/>
</a>

2009年8月2日 星期日

用Verilog描述MiniMIPS

沒東西寫就拿作業來貼XD

這次的Project是用Verilog來描述一個MiniMIPS的CPU,而我Verilog的編寫又不太熟,所以程式中有相當多的贅行,整個程式看起來亂糟糟的。



特色:

1.Memory 的介面我們使用了市面上的RAM&ROM 所具備的 peripheral interface,包括了RD、WR、雙向的I/O PORT、和Address界面,同時我們也有注意到時序的問題,我們把CPI設為二,於第一個stage取指令,第二個stage時做資料的存取,(類似von Neumann architecture),不讓Memory同時做輸入輸出的動作,當電路合成於FPGA時,能方便地使用外部的記憶體來做program & data的存取。

2.我們在撰寫Behavior的時候相當注重合成規則,盡量使單時脈通過的暫存器數降低,降低時脈交互作用的影響。

3.支援的指令有26條,涵蓋了大部分的基礎常用指令。雖然沒有全部包涵,但是一般的運算和判斷都已經足夠使用了。

4.所有的單元都是獨立並且各擁有其完整的輸入輸出宣告,並有宣告許多觸發旗標,使其在觸發時能執行相對應的動作,對於程式的模組化是有相當大的幫助。

##CONTINUE##
支援的指令如下

instructionOPcode Fn    
lui15  
add032 
sub034 
slt042 
addi8  
slti10  
sll00 
srl02 
sra03use operation “<<<”,which is not support in Verilogger.
sllv04 
srlv06 
srav07use operation “<<<”,which is not support in Verilogger.
and036 
or037 
xor038 
nor039 
andi120 
ori130 
xori140 
lw350 
sw430 
j2  
jal3  
bltz1 rs[31](sign bit) is 1 then branch.
beq4 (rs – rt) is 0 then branch.
bne5 (rs – rt) is not 0 then branch.
   


詳細的MIPS資料可以參考Wiki的MIPS architecture


程式原始碼可以在這裡下載