简单cpu处理器
0赞
发表于 2013/8/22 13:58:39
阅读(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表示输出结果为两个操作数相减;