《risc_cpu的算数运算器》由会员分享,可在线阅读,更多相关《risc_cpu的算数运算器(5页珍藏版)》请在金锄头文库上搜索。
1、RISC_CPURISC_CPU 日志日志 第 1 页 共 5 页 作者:冯月清 制作日期:2012-1-10 9:50:39 PM 一一、ALU 主程序代码主程序代码 /*=* Function List: 1 CLK_GEN(); 2 REGISTER(); 3 ACCUM(); 4 ALU(); 5 DATACTL(); 6 ADDR(); 7 COUNTER(); 8 MACHINE(); 9 MACHINELE(); 这里主要是根据送来的操作码进行相应的运算,并输出给 Alu_out *=*/ timescale 1ns/100ps module ALU ( Alu_out, Zer
2、o, Data, Accum, Alu_ena, Opcode, Clk ); input Alu_ena, Clk; input 2:0 Opcode; input 7:0 Data, Accum; /输入端口 output Zero; output 7:0 Alu_out; /输出端口 reg 7:0 Alu_out; /定义寄存器 parameter HLT = 3b000, SKZ = 3b001, ADD = 3b010, RISC_CPURISC_CPU 日志日志 第 2 页 共 5 页 作者:冯月清 制作日期:2012-1-10 9:50:39 PM ANDD = 3b011,
3、XORR = 3b100, LDA = 3b101, STO = 3b110, JMP = 3b111; /参数的定义 assign Zero =! Accum; always (posedge Clk) /判断并执行相关的运算 if(Alu_ena) begin casex(Opcode) HLT : Alu_out = Accum; SKZ : Alu_out = Accum; ADD : Alu_out = Data + Accum; ANDD : Alu_out = Data XORR : Alu_out = Data Accum; LDA : Alu_out = Data; STO
4、: Alu_out = Accum; JMP : Alu_out = Accum; default:Alu_out = 8bxxxx_xxxx; endcase end endmodule 二二、仿真仿真 TB 程序代码程序代码 timescale 1ns/100ps module TB_ALU (); reg Alu_ena, Clk; reg 7:0 Data, Accum; reg 2:0 Opcode; RISC_CPURISC_CPU 日志日志 第 3 页 共 5 页 作者:冯月清 制作日期:2012-1-10 9:50:39 PM wire 7:0 Alu_out; wire Ze
5、ro; parameter T = 20; ALU U (.Alu_ena(Alu_ena),.Data(Data), .Accum(Accum),.Opcode(Opcode), .Alu_out(Alu_out),.Zero(Zero), .Clk(Clk); initial fork Alu_ena = 0; Data = 0; Accum = 0; Opcode = 0; Clk = 0; join initial fork repeat(2*T) #T Opcode = Opcode + 1; repeat(2*T) #T Data = $random%256; repeat(2*T
6、) #T Accum = $random%256; repeat(2*T) #(2*T) Alu_ena = Alu_ena; repeat(4*T) #(T/2) Clk = Clk; #(40*T) $stop; join endmodule RISC_CPURISC_CPU 日志日志 第 4 页 共 5 页 作者:冯月清 制作日期:2012-1-10 9:50:39 PM 三三、生成的生成的 SYMBOL 图图 四四、功能仿真波形图功能仿真波形图 RISC_CPURISC_CPU 日志日志 第 5 页 共 5 页 作者:冯月清 制作日期:2012-1-10 9:50:39 PM 五五、生成的生成的 RTL 电路图电路图