Skip to content

Pacote CPU

Abrir arquivo fonte ⧉

Para a topologia, um conjunto de registros foi criado para definir o fluxo de dados em alto nível. Isso possibilita simplificar a implementação de pipelining e manter o código limpo. A partir dos seguintes registros é possível declarar todos os pontos de controle e de dados de todo o fluxo de execução da arquitetura. Além disso, também são especificados valores que caracterizem o comportamento ocioso da arquitetura.

Subtipos

NomeTipoDescrição
DATA_RANGEnatural range (DATA_WIDTH - 1) downto 0Faixa do vetor de dados
INSTRUCTION_RANGEnatural range (INSTRUCTION_WIDTH - 1) downto 0Faixa do vetor de programa
OPCODE_RANGEnatural range (OPCODE_WIDTH - 1) downto 0Faixa do vetor de Opcode
REGISTER_ADDRESS_RANGEnatural range (REGISTER_ADDRESS_WIDTH - 1) downto 0Faixa do vetor de seleção de registrador
FUNCTION_RANGEnatural range (EXECUTION_CONTROL_WIDTH - 1) downto 0Faixa do vetor de seleção de função
t_DATAstd_logic_vector(DATA_RANGE)Vetor de dados
t_PROGRAMstd_logic_vector(INSTRUCTION_RANGE)Vetor de programa
t_OPCODEstd_logic_vector(OPCODE_RANGE)Vetor de Opcode
t_REGISTERstd_logic_vector(REGISTER_ADDRESS_RANGE)Vetor de seleção de registrador
t_FUNCTIONstd_logic_vector(FUNCTION_RANGE)Vetor de seleção de função

Constantes

NomeTipoDescrição
DATA_WIDTHnaturalLargura do vetor de dados
INSTRUCTION_WIDTHnaturalLargura do vetor de programa
OPCODE_WIDTHnaturalLargura do vetor de Opcode
REGISTER_ADDRESS_WIDTHnaturalLargura do vetor de seleção de registrador
EXECUTION_CONTROL_WIDTHnaturalLargura do vetor de seleção de função
NULL_CONTROL_IFt_CONTROL_IFRegistro nulo de t_CONTROL_IF
NULL_CONTROL_IDt_CONTROL_IDRegistro nulo de NULL_CONTROL_ID
NULL_CONTROL_EXt_CONTROL_EXRegistro nulo de NULL_CONTROL_EX
NULL_CONTROL_MEMt_CONTROL_MEMRegistro nulo de NULL_CONTROL_MEM
NULL_CONTROL_WBt_CONTROL_WBRegistro nulo de NULL_CONTROL_WB
NULL_SIGNALS_IF_IDt_SIGNALS_IF_IDRegistro nulo de NULL_SIGNALS_IF_ID
NULL_SIGNALS_ID_EXt_SIGNALS_ID_EXRegistro nulo de NULL_SIGNALS_ID_EX
NULL_SIGNALS_EX_MEMt_SIGNALS_EX_MEMRegistro nulo de NULL_SIGNALS_EX_MEM
NULL_SIGNALS_MEM_WBt_SIGNALS_MEM_WBRegistro nulo de NULL_SIGNALS_MEM_WB
NULL_FORWARD_BRANCHt_FORWARD_BRANCHRegistro nulo de NULL_FORWARD_BRANCH
NULL_FORWARD_EXECUTIONt_FORWARD_EXECUTIONRegistro nulo de NULL_FORWARD_EXECUTION

Registros

t_CONTROL_IF

Pontos de controle do estágio Busca Instrução (Instruction Fetch)

NomeTipoDescrição
enable_stallstd_logicTrava a contagem do programa
select_sourcestd_logicSeleciona a origem do contador de programa

t_CONTROL_ID

Pontos de controle do estágio Decodifica Instrução (Instruction Decode)

NomeTipoDescrição
enable_branchstd_logicIndica que é uma instrução do tipo B
enable_jalrstd_logicIndica que é uma instrução JALR
enable_jumpstd_logicIndica que é uma instrução do tipo J
select_jumpstd_logicSeleciona um endereço de desvio

t_CONTROL_EX

Pontos de controle do estágio Executa (Execute)

NomeTipoDescrição
select_source_1std_logic_vector<2>Seleciona a fonte da entrada source_1
select_source_2std_logic_vector<2>Seleciona a fonte da entrada source_2

t_CONTROL_MEM

Pontos de controle do estágio Acessa a Memória (Memory Access)

NomeTipoDescrição
enable_readstd_logicHabilita a leitura da memória
enable_writestd_logicHabilita a escrina na memória

t_CONTROL_WB

Pontos de controle do estágio Escrita de Retorno (Write Back)

NomeTipoDescrição
enable_destinationstd_logicHabilita a escrita no Arquivo de Registradores
select_destinationstd_logicSeleciona a fonte da escrita no Arquivo de Registradores

t_SIGNALS_IF_ID

Sinais passados do estágio Busca Instrução para o estágio Decodifica Instrução, contendo os dados e pontos de controle registrados no pipeline

NomeTypeDescrição
address_programt_DATAVetor do Contador de Programa
data_instructiont_DATAValor de instrução

t_SIGNALS_ID_EX

Sinais passados do estágio Decodifica Instrução para o estágio Executa, contendo os dados e pontos de controle registrados no pipeline

NomeTipoDescrição
control_ext_CONTROL_EXPontos de controle do estágio Executa
control_memt_CONTROL_MEMPontos de controle do estágio Acessa a memória
control_wbt_CONTROL_WBPontos de controle do estágio Escrita de Retorno
address_programt_DATAVetor do Contador de Programa
data_source_1t_DATAVetor source_1 do arquivo de registradores
data_source_2t_DATAVetor source_2 do arquivo de registradores
data_immediatet_DATAVetor do Imediato
funct_7WORK.RV32I.t_FUNCT7Vetor do funct_7
funct_3WORK.RV32I.t_FUNCT3Vetor do funct_3
opcodeWORK.RV32I.t_OPCODEVetor do Opcode
select_destinationt_REGISTERVetor do seletor do destination
select_source_1t_REGISTERVetor do seletor do source_1
select_source_2t_REGISTERVetor do seletor do source_2

t_SIGNALS_EX_MEM

Sinais passados do estágio Executa para o estágio Acessa a Memória, contendo os dados e pontos de controle registrados no pipeline

NomeTipoDescrição
control_memt_CONTROL_MEMPontos de controle do estágio Acessa a memória
control_wbt_CONTROL_WBPontos de controle do estágio Escrita de Retorno
data_destinationt_DATAVetor destination do Executa
data_source_2t_DATAVetor do seletor do source_2
select_destinationt_REGISTERVetor do seletor do destination
funct_3WORK.RV32I.t_FUNCT3Vetor do funct_3

t_SIGNALS_MEM_WB

Sinais passados do estágio Acessa a Memória para o estágio Escrita de Retorno, contendo os dados e pontos de controle registrados no pipeline

NomeTipoDescrição
control_wbt_CONTROL_WBPontos de controle do estágio Escrita de Retorno
data_memoryt_DATAVetor destination da Memória
data_destinationt_DATAVetor destination do Executa
select_destinationt_REGISTERVetor do seletor do destination

t_FORWARD_BRANCH

Dados e pontos de controle de forwarding do comparador de desvio no estágio Decodifica Instrução

NomeTipoDescrição
select_source_1std_logicVetor do seletor de forwarding do source_1
select_source_2std_logicVetor do seletor de forwarding do source_2
source_memWORK.RV32I.t_DATAVetor destination do estágio Acessa a Memória

t_FORWARD_EXECUTION

Dados e pontos de controle de forwarding da Unidade Lógica e Aritmética no estágio Executa

NomeTipoDescrição
select_source_1std_logic_vector<2>Vetor do seletor de forwarding do source_1
select_source_2std_logic_vector<2>Vetor do seletor de forwarding do source_2
source_memWORK.RV32I.t_DATAVetor destination do estágio Acessa a Memória
source_wbWORK.RV32I.t_DATAVetor destination do estágio Escrita de Retorno

Relação entre os registros

Publicado sob a Licença MIT.