PR
Category
Keyword Search
Comments
Freepage List
今日は、ALUの右側入力に接続されているデータセレクタです。このデータセレクタは、演算系の命令で、オペランドをファイルレジスタからとるか、リテラル(イミディエイト)として、インストラクションの一部からとるかを選択するものです。記述は下記のように単純なものです。例によって、alwaysブロックの最初で、出力にx(Don't care)を代入して、必要に応じて、ファイルレジスタから(read_bus_i)か、インストラクションのLSB8ビット(instruction_i[7:0])からかを選択し、ALUの右側入力(bbus)に出力します。命令によっては(たとえばGOTO命令)ALUは使われないため、このような場合は、xを出力しています。 あと、今回からmoduleのポート宣言は、いわゆるANSI C式に変えました(Verilog2000).
---
本日の御託
うちの家内が好きなカワイイ動物は
-シロクマ(ホッキョククマ)
-シマリス
-ミナミコアリクイ(マニアックだな...笑)
もちろん、子猫とかも好きだけど・・・で、ベルリン動物園のホームページからシロクマの赤ちゃん、「クヌート」の動画をダウンロードしてきてあげたら喜んでいた。確かにかわいい。ベルリン動物園は株式会社で、クヌート人気で株価が急上昇したそうである。
そういえば、クヌート(Knut)はクヌース(Knuth,アルゴリズムの大家、TeXとか作った人)と 一字違い
だな。(それだけ)
//
// Literal data seledctor
// (c)2007 BakaOyaji
// $Id
//
//
`include "pic_instructions.h"
`include "pic_def.h"
module literal_dsel(
input [(`Instruction_Len-1):0] instruction_i,
input [7:0] read_bus_i , // data from READ BUS
output [7:0] b_o // feeding data to b_bus
);
reg [7:0] b_o ;
always@( instruction_i or read_bus_i) begin
b_o <= 8'bxxxx_xxxx ;
casex( instruction_i)
// Byte oriented File Register Operations
`INST_ADDWF ,
`INST_ANDWF ,
`INST_COMF ,
`INST_DECF ,
`INST_DECFSZ ,
`INST_INCF ,
`INST_INCFSZ ,
`INST_IORWF ,
`INST_MOVF ,
`INST_RLF ,
`INST_RRF ,
`INST_SUBWF ,
`INST_SWAPF ,
`INST_XORWF ,
`INST_BCF ,
`INST_BSF ,
`INST_BTFSC ,
`INST_BTFSS :
b_o <= read_bus_i ;
`INST_ADDLW ,
`INST_ANDLW ,
`INST_IORLW ,
`INST_MOVLW ,
`INST_RETLW ,
`INST_SUBLW ,
`INST_XORLW :
b_o <= instruction_i[7:0] ;
default :
b_o <= 8'bxxxx_xxxx ;
endcase // casex
end // always
endmodule //literal_dsel
// EOF literal_dsel.v
アメリカでも「ポチ」る… 2010.05.20
Bluray diskの値段… 2009.11.16
NRTにて 2009.11.15