def alu_controller(alu_op,funct7,funct3): #alu_op来自主控制器,funct7和funct3来自指令的特定部位 返回alu_ctrl if alu_op=='00': opreation='00000' #lw.sw.auipc elif alu_op=='01': if funct3=='000': opreation='00101' #beq elif funct3=='001': opreation='00110' #bne elif funct3=='100': opreation='00111' #blt elif funct3=='101': opreation='01000' #bge elif funct3=='110': opreation='01001' #bltu elif funct3=='111': opreation='01010' #bgeu else: opreation='00000' elif alu_op=='10': if funct3=='000': if funct7=='0100000': #sub opreation='00001' else: #add,addi opreation='00000' elif funct3=='100': opreation='01100' #xor,xori elif funct3=='110': opreation='00010' #or,ori elif funct3=='111': opreation='00011' #and, andi elif funct3=='010': opreation='00100' #slt,slti elif funct3=='001': opreation='01101' #sll,slli 未存在 elif funct3=='011': opreation='01110' #sliu,sltiu 未存在 elif funct3=='101': if funct7=='0100000': #sra,srai opreation='01111' else: #srl,srli opreation='10000' else: opreation='00000' elif alu_op=='11': #jal opreation='01011' else: opreation='00000' return opreation