| Version 6 (modified by nakasato, 6 years ago) (diff) |
|---|
トップ:http://galaxy.u-aizu.ac.jp/note/wiki/CAEX2020
sshによる端末利用方法
Cadenceのツールを使うためには、sshgateに接続した後、cadsvX.u-aizu.ac.jpにログインしてください。なおサーバーにはcadsv1, cadsv2, cadsv3, cadsv4まであります。Macから接続するときには、sshgateにも"-X"オプションをつけてログインしてください。
ssh -X cadsv2.u-aizu.ac.jp
以下、web-intのURLは学外からアクセスする場合、IDとパスーワードが必要です。
Cadenceの設定
http://web-int.u-aizu.ac.jp/course/comparch/xc4000.html
起動コマンド
cadsvに接続した上で
/home/course/logictut/bin/icds.comparch
を実行する。
Cadenceの設定
http://web-int.u-aizu.ac.jp/~nisim/logictut/top.html
New Libraryの作成 http://web-int.u-aizu.ac.jp/~nisim/logictut/tutorial1.html ~/CadenceComparch2020 の中に作成される
XC4000の追加 http://web-int.u-aizu.ac.jp/course/comparch/xc4000.html
起動に問題があるとき http://web-int.u-aizu.ac.jp/course/comparch/startup.html
Ex04 課題1
http://web-int.u-aizu.ac.jp/course/comparch/ALU.html
Ex04 課題2
http://web-int.u-aizu.ac.jp/course/comparch/mipsreg.html
レポートの内容
ALUシミュレーションの testfixture ファイルとシミュレーション結果。シミュレーションの波形には、それぞれの演算についての時間区間を明示し、演算結果に対しては “加算の結果” 等の説明を書き入れる。レジスタファイルのシミュレーションのtestfixtureファイルとシミュレーション結果。結果には要所要所に説明を書き込むこと。
補足1: xc4000のライブラリを利用して出力がzになる場合の対処
Run Directoryを作り直してください。そのためには、シミュレータのウィンドウに表示されているRun Directoryの末尾を、run1, run2などの存在しないものに変更し、Initialize Designボタンを2度押してください。その後出てくるダイアログには"No"を選んでください。
補足2: レジスタファイルについて補足
MIPSプロセッサにおいて、プログラマから見える汎用レジスタには $0 から $31 までの32個があります。 このうち $0 は値が常にゼロである仮想的なレジスタなので、実際のハードウェアでは31個のレジスタからなるレジスタファイルが使われます。 各レジスタの入出力データのビット幅は32ビットです。
レジスタファイルに対する書き込み口や読み出し口のことをポートと呼びます。 今回利用するレジスタファイルは2つの読み出しポートと1つの書き込みポートを備えています。 このことは、2つの異なるレジスタの読み出しと、さらに異なる1つのレジスタへの書き込みを、 1つのクロックサイクルの中で同時に行えるということを意味します。
入出力信号の説明
- ReadReg1 と ReadData1 は1つ目の読み出しポートのための信号です。ReadReg1 にレジスタ番号を (0~31) を入力すると該当するレジスタの値が ReadData1 から出力されます(レジスタ番号が 0 のときは常に 0 が出力される)。
- ReadReg2 と ReadData2 は2つ目の読み出しポートのための信号です。動作は1つ目の読み出しポートと同じです。
- WriteData、WriteEn、および!WriteRegは書き込みポートを構成します。WriteRegにレジスタ番号を入力し、WriteDataには書き込むデータをセットして、WriteEn を 1 にすると、次のクロックの立ち上がりでデータが該当レジスタに書き込まれます。!WriteEN が 0 のときは、クロックの立ち上がりがあってもデータは書き込まれません。また、レジスタ番号が 0 のときは、レジスタへの書き込みは行われません。
- CK はクロック信号、CLR はクリア信号です。 CLR が 1 になると全てのレジスタが 0 に初期化されます。
レジスタの利用のためのテストベンチ例
以下のテストベンチは、$a0レジスタに"0xffffffff"を書き込んでいる。(そのまま使うことはできない)
`timescale 1ns/1ps
`include "Registers.v"
module RegTest;
reg [4:0] readreg1, readreg2, writereg;
reg [31:0] writedata;
reg writeen;
reg ck,clr;
wire [31:0] readdata1, readdata2;
initial
begin
#0
ck = 1'b1;
clr = 1'b1;
#110
clr = 1'b0;
#190
readreg1 = 5'b00100;
#100
writeen = 1'b1;
writereg = 5'b00100;
writedata = 32'hffffffff;
#100
writeen = 1'b0;
#900
$finish;
end // initial begin
always #50 ck = ~ck;
endmodule

