トップ:http://galaxy.u-aizu.ac.jp/note/wiki/CAEX2015 = 準備 = 今週から、MIPSプロセッサを設計します。 そのために、VerilogHDLを用いた記述方法、シミュレータ、波形ビューアなどの各種CADツールの使いかたを習得します。 == シミュレーションのためのログイン == {{{ ssh -X hdw1dc }}} simvisionのウインドウが開かない場合には、 {{{ /bin/ssh -X hdw1dc }}} でログインすること。 hostnameは各自の目の前の計算機にすること。 = ALUモジュールの設計と検証 = 算術論理演算ユニット(arithmetic logic unit, ALU)は、加算や減算などの算術演算や、 ANDやORなどの論理演算を行うプロセッサの中枢部分です。 今週はMIPSプロセッサで使われる32ビットのALUを作成し、 さらにシミュレーションによって動作検証をします。 今回設計するALUの入出力信号は次の図の通りです。 AとBは入力でどちらも32ビット幅です。 ALU制御入力(ALUoperation)は4ビット幅の入力で、演算の種類を指定します。 演算結果(ALUresult)も32ビットで出力されます。 ゼロ判定出力(Zero)は演算結果が32ビットとも0であるときに1となる信号です。 [[Image(http://galaxy.u-aizu.ac.jp/comparch2014/alu.gif)]] このALUでは下に示す6種類の演算をサポートします。第4版上巻p.290参照。 || ALU制御入力 || 機能 || || 0b0000 || AND || || 0b0001 || OR || || 0b0010 || 加算 || || 0b0110 || 減算 || || 0b0111 || Set on less than || || 0b1100 || NOR || ANDは2つの入力の各ビットの論理積、ORは論理和を実行することを意味します。 Set on less than は比較命令で利用される演算で、2つの入力の大小関係によって 0 または 1 を次の表のように出力します。 || || ALUの出力 || || A < B || 0x00000001 || || A ≧ B || 0x00000000 || 今回作成するプロセッサでは、加算、減算実行時にはオーバフローは想定しません。 オーバフローが発生した場合でも、下位のbitは正しい値が出力されるように設計します。 == ALUモジュールの作成 ==