清霜一梦

简单cpu处理器

0
阅读(1055)

在135例中有一个简单处理器的程序,稍作修改成自己的风格

//date :2013/8/22
//designer :pengxiaoen
//function get a mpc with verilog

module mpc (
             clock,reset,
                 instrction,
                 result
                 );
input clock ,reset;
input [17:0] instrction;
output reg [8:0] result;

reg [1:0] opreation;
reg [7:0] oprearand1,oprearand2;

always @ (posedge clock  or negedge reset)
if(!reset)
   begin
       opreation <= 2'd0;
         oprearand1 <= 8'd0;
         oprearand2 <= 8'd0; 
    end 
else {opreation ,oprearand1,oprearand2} <= instrction;    

always @ (posedge clock or negedge reset)
if (!reset)
    begin
         result <= 9'd0; 
     end 
else begin
         case (opreation)
                2'b00 : begin result <= {1'b0,oprearand1}; end
                 2'b01 : begin result <= {1'b0,oprearand2}; end
                 2'b10 : begin result <= oprearand1 + oprearand2; end
                 2'b11 : begin result <= oprearand1 - oprearand2; end
                 default result <= 9'bz_zzzz_zzzz;
           endcase     
     end 
endmodule

指令的前面2个bit 是操作码,后面的两个8bit 是操作数。
00表示结果输出为第一个操作数,01表示结果输出第二个操作数,10表示输出结果为两个操作数相加,11表示输出结果为两个操作数相减;