Changes between Initial Version and Version 1 of Ex04_CA_2020


Ignore:
Timestamp:
May 8, 2020 2:45:26 PM (6 years ago)
Author:
nakasato
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • Ex04_CA_2020

    v1 v1  
     1= sshによる端末利用方法 = 
     2Cadenceのツールを使うためには、sshgateに接続した後、cadsvX.u-aizu.ac.jpにログインしてください。なおサーバーにはcadsv1, cadsv2, cadsv3, cadsv4まであります。Macから接続するときには、sshgateにも"-X"オプションをつけてログインしてください。  
     3{{{ 
     4ssh -X cadsv2.u-aizu.ac.jp 
     5}}} 
     6 
     7以下、web-intのURLは学外からアクセスする場合、IDとパスーワードが必要です。 
     8 
     9= Cadenceの設定 = 
     10http://web-int.u-aizu.ac.jp/course/comparch/xc4000.html 
     11 
     12== 起動コマンド == 
     13cadsvに接続した上で 
     14{{{ 
     15/home/course/logictut/bin/icds.comparch 
     16}}} 
     17 
     18== Cadenceの復習 == 
     19http://web-int.u-aizu.ac.jp/~nisim/logictut/top.html 
     20 
     21= Ex04 課題1 = 
     22http://web-int.u-aizu.ac.jp/course/comparch/ALU.html 
     23 
     24= Ex04 課題2 = 
     25http://web-int.u-aizu.ac.jp/course/comparch/mipsreg.html 
     26 
     27= レポートの内容 = 
     28ALUシミュレーションの testfixture ファイルとシミュレーション結果。シミュレーションの波形には、それぞれの演算についての時間区間を明示し、演算結果に対しては “加算の結果” 等の説明を書き入れる。レジスタファイルのシミュレーションのtestfixtureファイルとシミュレーション結果。結果には要所要所に説明を書き込むこと。 
     29 
     30= レジスタファイルについて補足 =  
     31 
     32MIPSプロセッサにおいて、プログラマから見える汎用レジスタには $0 から $31 までの32個があります。 
     33このうち $0 は値が常にゼロである仮想的なレジスタなので、実際のハードウェアでは31個のレジスタからなるレジスタファイルが使われます。 
     34各レジスタの入出力データのビット幅は32ビットです。 
     35 
     36レジスタファイルに対する書き込み口や読み出し口のことをポートと呼びます。 
     37今回利用するレジスタファイルは2つの読み出しポートと1つの書き込みポートを備えています。 
     38このことは、2つの異なるレジスタの読み出しと、さらに異なる1つのレジスタへの書き込みを、 
     391つのクロックサイクルの中で同時に行えるということを意味します。 
     40 
     41[[Image(http://web-int.u-aizu.ac.jp/course/comparch/kadai2_1.gif)]] 
     42 
     43=== 入出力信号の説明 === 
     44* ReadReg1 と ReadData1 は1つ目の読み出しポートのための信号です。ReadReg1 にレジスタ番号を (0~31) を入力すると該当するレジスタの値が ReadData1 から出力されます(レジスタ番号が 0 のときは常に 0 が出力される)。 
     45* ReadReg2 と ReadData2 は2つ目の読み出しポートのための信号です。動作は1つ目の読み出しポートと同じです。 
     46* !WriteData、!WriteEn、および!WriteRegは書き込みポートを構成します。WriteRegにレジスタ番号を入力し、WriteDataには書き込むデータをセットして、!WriteEn を 1 にすると、次のクロックの立ち上がりでデータが該当レジスタに書き込まれます。!WriteEN が 0 のときは、クロックの立ち上がりがあってもデータは書き込まれません。また、レジスタ番号が 0 のときは、レジスタへの書き込みは行われません。 
     47* CK はクロック信号、CLR はクリア信号です。 CLR が 1 になると全てのレジスタが 0 に初期化されます。 
     48 
     49= レジスタの利用のためのテストベンチ例 = 
     50以下のテストベンチは、$a0レジスタに"0xffffffff"を書き込んでいる。(そのまま使うことはできない) 
     51{{{ 
     52`timescale 1ns/1ps 
     53`include "Registers.v" 
     54 
     55module  RegTest; 
     56   reg [4:0]  readreg1,  readreg2,  writereg; 
     57   reg [31:0] writedata; 
     58   reg        writeen; 
     59   reg        ck,clr; 
     60   wire [31:0] readdata1, readdata2; 
     61 
     62   initial 
     63     begin 
     64        #0 
     65        ck = 1'b1; 
     66        clr = 1'b1; 
     67 
     68        #110 
     69        clr = 1'b0; 
     70 
     71        #190 
     72        readreg1 = 5'b00100; 
     73 
     74        #100 
     75        writeen = 1'b1; 
     76        writereg  = 5'b00100; 
     77        writedata = 32'hffffffff; 
     78  
     79        #100 
     80        writeen = 1'b0; 
     81  
     82        #900 
     83 
     84        $finish; 
     85     end // initial begin 
     86 
     87   always #50 ck = ~ck; 
     88endmodule 
     89}}} 
     90 
     91