Skip to content

Pacote RISC-V para inteiros 32-bit

Abrir arquivo fonte ⧉

Parâmetros e funções que descrevem o conjunto de instruções RISC-V de 32 bits para inteiros. Abstrato em relação a implementação.

Subtipos

NomeTipoDescrição
XLEN_RANGEnatural range 31 downto 0Largura do vetor de dados
INSTRUCTION_RANGEnatural range 31 downto 0Largura do vetor de programa
FUNCT3_RANGEnatural range 14 downto 12Largura do vetor de seleção de função
FUNCT7_RANGEnatural range 31 downto 25Largura do vetor de seleção de função
OPCODE_FULL_RANGEnatural range 6 downto 0Largura do vetor de opcode completo
OPCODE_RANGEnatural range 6 downto 2Largura do vetor de opcode truncado
REGISTER_RANGEnatural range 4 downto 0Largura do vetor de seleção de registrador
t_DATAstd_logic_vector(XLEN_RANGE)Vetor de dados
t_PROGRAMstd_logic_vector(INSTRUCTION_RANGE)Vetor de programa
t_FUNCT3std_logic_vector(FUNCT3_RANGE)Vetor de seleção de função
t_FUNCT7std_logic_vector(FUNCT7_RANGE)Vetor de seleção de função
t_OPCODE_FULLstd_logic_vector(OPCODE_FULL_RANGE)Vetor de opcode completo
t_OPCODEstd_logic_vector(OPCODE_RANGE)Vetor de opcode truncado
t_REGISTERstd_logic_vector(REGISTER_RANGE)Vetor de seleção de registrador

Constantes

NomeTipoDescrição
XLENnaturalTamanho do vetor de dados
INSTRUCTION_WIDTHnaturalTamanho do vetor de instrução
FUNCT3_WIDTHnaturalTamanho do vetor de seleção de função
FUNCT7_WIDTHnaturalTamanho do vetor de seleção de função
OPCODE_FULL_WIDTHnaturalTamanho do vetor de opcode completo
OPCODE_WIDTHnaturalTamanho do vetor de opcode truncado
REGISTER_WIDTHnaturalTamanho do vetor de seleção de registrador
OPCODE_FULL_OPt_OPCODE_FULLOpcode completo do tipo OP
OPCODE_FULL_OP_IMMt_OPCODE_FULLOpcode completo do tipo OP_IMM
OPCODE_FULL_JALRt_OPCODE_FULLOpcode completo do tipo JALR
OPCODE_FULL_SYNCHt_OPCODE_FULLOpcode completo do tipo SYNC
OPCODE_FULL_SYSTEMt_OPCODE_FULLOpcode completo do tipo SYSTEM
OPCODE_FULL_STOREt_OPCODE_FULLOpcode completo do tipo STORE
OPCODE_FULL_LOADt_OPCODE_FULLOpcode completo do tipo LOAD
OPCODE_FULL_BRANCHt_OPCODE_FULLOpcode completo do tipo BRANCH
OPCODE_FULL_LUIt_OPCODE_FULLOpcode completo do tipo LUI
OPCODE_FULL_AUIPCt_OPCODE_FULLOpcode completo do tipo AUIPC
OPCODE_FULL_JALt_OPCODE_FULLOpcode completo do tipo JAL
OPCODE_OPt_OPCODEOpcode truncado do tipo OP
OPCODE_OP_IMMt_OPCODEOpcode truncado do tipo OP_IMM
OPCODE_JALRt_OPCODEOpcode truncado do tipo JALR
OPCODE_SYNCHt_OPCODEOpcode truncado do tipo SYNC
OPCODE_SYSTEMt_OPCODEOpcode truncado do tipo SYSTEM
OPCODE_STOREt_OPCODEOpcode truncado do tipo STORE
OPCODE_LOADt_OPCODEOpcode truncado do tipo LOAD
OPCODE_BRANCHt_OPCODEOpcode truncado do tipo BRANCH
OPCODE_LUIt_OPCODEOpcode truncado do tipo LUI
OPCODE_AUIPCt_OPCODEOpcode truncado do tipo AUIPC
OPCODE_JALt_OPCODEOpcode truncado do tipo JAL
FUNCT3_JALRt_FUNCT3Seletor de função da instrução JALR
FUNCT3_BEQt_FUNCT3Seletor de função da instrução BEQ
FUNCT3_BNEt_FUNCT3Seletor de função da instrução BNE
FUNCT3_BLTt_FUNCT3Seletor de função da instrução BLT
FUNCT3_BGEt_FUNCT3Seletor de função da instrução BGE
FUNCT3_BLTUt_FUNCT3Seletor de função da instrução BLTU
FUNCT3_BGEUt_FUNCT3Seletor de função da instrução BGEU
FUNCT3_LBt_FUNCT3Seletor de função da instrução LB
FUNCT3_LHt_FUNCT3Seletor de função da instrução LH
FUNCT3_LWt_FUNCT3Seletor de função da instrução LW
FUNCT3_LBUt_FUNCT3Seletor de função da instrução LBU
FUNCT3_LHUt_FUNCT3Seletor de função da instrução LHU
FUNCT3_SBt_FUNCT3Seletor de função da instrução SB
FUNCT3_SHt_FUNCT3Seletor de função da instrução SH
FUNCT3_SWt_FUNCT3Seletor de função da instrução SW
FUNCT3_ADDIt_FUNCT3Seletor de função da instrução ADDI
FUNCT3_SLTIt_FUNCT3Seletor de função da instrução SLTI
FUNCT3_SLTIUt_FUNCT3Seletor de função da instrução SLTIU
FUNCT3_XORIt_FUNCT3Seletor de função da instrução XORI
FUNCT3_ORIt_FUNCT3Seletor de função da instrução ORI
FUNCT3_ANDIt_FUNCT3Seletor de função da instrução ANDI
FUNCT3_SLLIt_FUNCT3Seletor de função da instrução SLLI
FUNCT3_SRLIt_FUNCT3Seletor de função da instrução SRLI
FUNCT3_SRAIt_FUNCT3Seletor de função da instrução SRAI
FUNCT3_ADDt_FUNCT3Seletor de função da instrução ADD
FUNCT3_SUBt_FUNCT3Seletor de função da instrução SUB
FUNCT3_SLLt_FUNCT3Seletor de função da instrução SLL
FUNCT3_SLTt_FUNCT3Seletor de função da instrução SLT
FUNCT3_SLTUt_FUNCT3Seletor de função da instrução SLTU
FUNCT3_XORt_FUNCT3Seletor de função da instrução XOR
FUNCT3_SRLt_FUNCT3Seletor de função da instrução SRL
FUNCT3_SRAt_FUNCT3Seletor de função da instrução SRA
FUNCT3_ORt_FUNCT3Seletor de função da instrução OR
FUNCT3_ANDt_FUNCT3Seletor de função da instrução AND
FUNCT3_FENCEt_FUNCT3Seletor de função da instrução FENCE
FUNCT3_ECALLt_FUNCT3Seletor de função da instrução ECALL
FUNCT3_EBREAKt_FUNCT3Seletor de função da instrução EBREAK
FUNCT7_SLLIt_FUNCT7Seletor de função da instrução SLLI
FUNCT7_SRLIt_FUNCT7Seletor de função da instrução SRLI
FUNCT7_SRAIt_FUNCT7Seletor de função da instrução SRAI
FUNCT7_ADDt_FUNCT7Seletor de função da instrução ADD
FUNCT7_SUBt_FUNCT7Seletor de função da instrução SUB
FUNCT7_SLLt_FUNCT7Seletor de função da instrução SLL
FUNCT7_SLTt_FUNCT7Seletor de função da instrução SLT
FUNCT7_SLTUt_FUNCT7Seletor de função da instrução SLTU
FUNCT7_XORt_FUNCT7Seletor de função da instrução XOR
FUNCT7_SRLt_FUNCT7Seletor de função da instrução SRL
FUNCT7_SRAt_FUNCT7Seletor de função da instrução SRA
FUNCT7_ORt_FUNCT7Seletor de função da instrução OR
FUNCT7_ANDt_FUNCT7Seletor de função da instrução AND
NULL_INSTRUCTIONt_PROGRAMVetor de instrução nula (NOP)

Registros

t_INSTRUCTION

Atributos decodificáveis de um vetor de instrução

NomeTipoDescrição
funct_3t_FUNCT3Vetor de seleção de função
funct_7t_FUNCT7Vetor de seleção de função
select_source_2t_REGISTERVetor de seleção de dados
select_source_1t_REGISTERVetor de seleção de dados
select_destinationt_REGISTERVetor de seleção de dados
immediate_it_DATAVetor de imediato tipo I
immediate_st_DATAVetor de imediato tipo S
immediate_bt_DATAVetor de imediato tipo B
immediate_ut_DATAVetor de imediato tipo U
immediate_jt_DATAVetor de imediato tipo J
shamtstd_logic_vector(4 downto 0)Seletor de shift
opcodet_OPCODEVetor de Opcode
encodingt_INSTRUCTION_TYPETipo de instrução

Enums

t_INSTRUCTION_TYPE

Enumerador de tipos de instrução

NomeDescrição
INSTRUCTION_R_TYPEInstrução tipo R
INSTRUCTION_I_TYPEInstrução tipo I
INSTRUCTION_S_TYPEInstrução tipo S
INSTRUCTION_B_TYPEInstrução tipo B
INSTRUCTION_U_TYPEInstrução tipo U
INSTRUCTION_J_TYPEInstrução tipo J

Funções

to_immediate_i

Decodifica um vetor de instrução para um vetor de imediato do tipo I.

vhdl
to_immediate_i ( in_vec : std_logic_vector(INSTRUCTION_RANGE) ) return t_DATA

to_immediate_s

Decodifica um vetor de instrução para um vetor de imediato do tipo S.

vhdl
to_immediate_s ( in_vec : std_logic_vector(INSTRUCTION_RANGE) ) return t_DATA

to_immediate_b

Decodifica um vetor de instrução para um vetor de imediato do tipo B.

vhdl
to_immediate_b ( in_vec : std_logic_vector(INSTRUCTION_RANGE) ) return t_DATA

to_immediate_u

Decodifica um vetor de instrução para um vetor de imediato do tipo U.

vhdl
to_immediate_u ( in_vec : std_logic_vector(INSTRUCTION_RANGE) ) return t_DATA

to_immediate_j

Decodifica um vetor de instrução para um vetor de imediato do tipo J.

vhdl
to_immediate_j ( in_vec : std_logic_vector(INSTRUCTION_RANGE) ) return t_DATA

to_instruction_type

Decodifica um vetor de opcode truncado para o tipo de instrução.

vhdl
to_instruction_type ( in_vec : t_OPCODE ) return t_INSTRUCTION_TYPE

to_instruction

Decodifica um vetor de instrução para um record t_INSTRUCTION.

vhdl
to_instruction ( in_vec : std_logic_vector(INSTRUCTION_RANGE) ) return t_INSTRUCTION

Publicado sob a Licença MIT.