⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 supercpsr.v

📁 arm7内核的verilog代码
💻 V
字号:
// To specify a specific mode, set SC_CTRL_Type = 10000 and SC_CTRL_Source to the mode you want// See the defines file to see the available mode definitions, are in the form SC_CTRL_SELECT_SOURCE_XXX_MODE// To update a specific field, set SC_CTRL_Type = 0NZVC where N, Z,V,C are set if you want to update that bit// For any questions, contact Isaac Sanchez at iisanche@uiuc.edu`include "defines.v"module Super_CPSR( SC_CTRL_Source, SC_CTRL_Type, SC_current_CPSR, SC_alu_result, SC_alu_flags, SC_shift_flags, SC_PSR_out);	   input [31:0] SC_current_CPSR;   input [31:0] SC_alu_result;   input [3:0]  SC_alu_flags;   input        SC_shift_flags;   input [3:0]  SC_CTRL_Source;   input [4:0]  SC_CTRL_Type;		   output [10:0] SC_PSR_out;   wire [31:0]  SC_current_CPSR;   wire [31:0]  SC_alu_result;   wire [3:0]   SC_alu_flags;   wire 	     SC_shift_flags;   wire [3:0] 	SC_CTRL_Source;   wire [4:0] 	SC_CTRL_Type;   reg [10:0] 	SC_PSR_out, temp;   always @(SC_CTRL_Source or SC_CTRL_Type or SC_current_CPSR or SC_alu_result or SC_shift_flags or SC_alu_flags or SC_PSR_out)     begin       if (SC_CTRL_Type[4] == 0)         begin           temp[10] = SC_current_CPSR[31];           temp[9] = SC_current_CPSR[30];           temp[8] = SC_current_CPSR[29];           temp[7] = SC_current_CPSR[28];           temp[6] = SC_current_CPSR[7];           temp[5] = SC_current_CPSR[6];           temp[4] = SC_current_CPSR[4];           temp[3] = SC_current_CPSR[3];           temp[2] = SC_current_CPSR[2];           temp[1] = SC_current_CPSR[1];           temp[0] = SC_current_CPSR[0];					           if (SC_CTRL_Source == `SC_CTRL_SELECT_SOURCE_ALU_FLAGS)             begin					               if (SC_CTRL_Type[3] == 1)                  temp[10] = SC_alu_flags[3];               if(SC_CTRL_Type[2] == 1)                  temp[9] = SC_alu_flags[2];               if(SC_CTRL_Type[1] == 1)                  temp[8] = SC_alu_flags[1];               if(SC_CTRL_Type[0] == 1)                  temp[7] = SC_alu_flags[0];             end           else if (SC_CTRL_Source == `SC_CTRL_SELECT_SOURCE_SFT_FLAGS)             begin               if (SC_CTRL_Type[3] == 1)                 temp[10] = SC_alu_flags[3];               if (SC_CTRL_Type[2] == 1)                 temp[9] = SC_alu_flags[2];               if (SC_CTRL_Type[1] == 1)                 temp[7] = SC_alu_flags[1];               if (SC_CTRL_Type[0] == 1)                 temp[8] = SC_shift_flags;             end         end       else  // (SC_CTRL_Type[4] != 0)         begin           if (SC_CTRL_Source == `SC_CTRL_SELECT_SOURCE_USR_MODE)              temp = `SC_USR_MODE;           else if (SC_CTRL_Source == `SC_CTRL_SELECT_SOURCE_SVC_MODE)              temp = `SC_SVC_MODE;           else if (SC_CTRL_Source == `SC_CTRL_SELECT_SOURCE_ALU)             begin               temp[10] = SC_alu_result[31];               temp[9] = SC_alu_result[30];               temp[8] = SC_alu_result[29];               temp[7] = SC_alu_result[28];               temp[6] = SC_alu_result[7];               temp[5] = SC_alu_result[6];               temp[4] = SC_alu_result[4];               temp[3] = SC_alu_result[3];               temp[2] = SC_alu_result[2];               temp[1] = SC_alu_result[1];               temp[0] = SC_alu_result[0];             end           else if (SC_CTRL_Source == `SC_CTRL_SELECT_SOURCE_ABT_MODE)              temp = `SC_ABT_MODE;           else if (SC_CTRL_Source == `SC_CTRL_SELECT_SOURCE_FIQ_MODE)              temp = `SC_FIQ_MODE;           else if (SC_CTRL_Source == `SC_CTRL_SELECT_SOURCE_IRQ_MODE)              temp = `SC_IRQ_MODE;           else if (SC_CTRL_Source == `SC_CTRL_SELECT_SOURCE_UND_MODE)              temp = `SC_UND_MODE;				         end       SC_PSR_out = temp;     end endmodule

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -