在135例中有一个简单处理器的程序,稍作修改成自己的风格
//date :2013/8/22
//designer :pengxiaoen
//function get a mpc with verilog module mpc (
clock,reset,
instrction,
result
);
input clock ,reset;
input [:] instrction;
output reg [:] result; reg [:] opreation;
reg [:] oprearand1,oprearand2; always @ (posedge clock or negedge reset)
if(!reset)
begin
opreation <= 'd0;
oprearand1 <= 'd0;
oprearand2 <= 'd0;
end
else {opreation ,oprearand1,oprearand2} <= instrction; always @ (posedge clock or negedge reset)
if (!reset)
begin
result <= 'd0;
end
else begin
case (opreation)
'b00 : begin result <= {1'b0,oprearand1}; end
'b01 : begin result <= {1'b0,oprearand2}; end
'b10 : begin result <= oprearand1 + oprearand2; end
'b11 : begin result <= oprearand1 - oprearand2; end
default result <= 'bz_zzzz_zzzz;
endcase
end
endmodule
指令的前面2个bit 是操作码,后面的两个8bit 是操作数。
00表示结果输出为第一个操作数,01表示结果输出第二个操作数,10表示输出结果为两个操作数相加,11表示输出结果为两个操作数相减;