Changes between Initial Version and Version 1 of Ex04_CA_S2_2021


Ignore:
Timestamp:
Apr 26, 2021 3:39:51 PM (5 years ago)
Author:
nakasato
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • Ex04_CA_S2_2021

    v1 v1  
     1= 補足2: レジスタファイルについて補足 =  
     2MIPSプロセッサにおいて、プログラマから見える汎用レジスタには $0 から $31 までの32個があります。 
     3このうち $0 は値が常にゼロである仮想的なレジスタなので、実際のハードウェアでは31個のレジスタからなるレジスタファイルが使われます。 
     4各レジスタの入出力データのビット幅は32ビットです。 
     5 
     6レジスタファイルに対する書き込み口や読み出し口のことをポートと呼びます。 
     7今回利用するレジスタファイルは2つの読み出しポートと1つの書き込みポートを備えています。 
     8このことは、2つの異なるレジスタの読み出しと、さらに異なる1つのレジスタへの書き込みを、 
     91つのクロックサイクルの中で同時に行えるということを意味します。 
     10 
     11[[Image(http://web-int.u-aizu.ac.jp/course/comparch/kadai2_1.gif)]] 
     12 
     13=== 入出力信号の説明 === 
     14* ReadReg1 と ReadData1 は1つ目の読み出しポートのための信号です。ReadReg1 にレジスタ番号を (0~31) を入力すると該当するレジスタの値が ReadData1 から出力されます(レジスタ番号が 0 のときは常に 0 が出力される)。 
     15* ReadReg2 と ReadData2 は2つ目の読み出しポートのための信号です。動作は1つ目の読み出しポートと同じです。 
     16* !WriteData、!WriteEn、および!WriteRegは書き込みポートを構成します。WriteRegにレジスタ番号を入力し、WriteDataには書き込むデータをセットして、!WriteEn を 1 にすると、次のクロックの立ち上がりでデータが該当レジスタに書き込まれます。!WriteEN が 0 のときは、クロックの立ち上がりがあってもデータは書き込まれません。また、レジスタ番号が 0 のときは、レジスタへの書き込みは行われません。 
     17* CK はクロック信号、CLR はクリア信号です。 CLR が 1 になると全てのレジスタが 0 に初期化されます。 
     18 
     19= レジスタの利用のためのテストベンチ例 = 
     20以下のテストベンチは、$a0レジスタに"0xffffffff"を書き込んでいる。(そのまま使うことはできない) 
     21{{{ 
     22   initial 
     23     begin 
     24        #0 
     25        ck = 1'b1; 
     26        clr = 1'b1; 
     27 
     28        #110 
     29        clr = 1'b0; 
     30 
     31        #190 
     32        readreg1 = 5'b00100; 
     33 
     34        #100 
     35        writeen = 1'b1; 
     36        writereg  = 5'b00100; 
     37        writedata = 32'hffffffff; 
     38  
     39        #100 
     40        writeen = 1'b0; 
     41  
     42        #900 
     43 
     44        $finish; 
     45     end // initial begin 
     46 
     47   always #50 ck = ~ck; 
     48}}} 
     49 
     50