Programação
-
-
Neste vídeo são apresentados exemplos de utilização das ferramentas de simulação ModelSim (Intel FPGA Starter Edition) e EDAPlayground (Doulos).
-
-
Nesta página há exemplos de códigos em VHDL para implementação de memórias que não fazem uso de componentes específicos de FPGA e são identificados pelo Quartus como tal.
-
-
Instruções para testar os módulos no kit DE10-LITE.
-
A primeira atividade é criar um projeto denominado riscvsingle, na ferramenta Quartus (que servirá de base para testar todas as funcionalidades da arquitetura) e incluir apenas o arquivo alu.vhd, que deverá ser definido como toplevel. Realize alterações na entidade alu de forma a:
i) simplificar a linha 28;
ii) parametrizar o barramento de dados com um parâmetro genérico de nome Width;
iii) indicar se é possível propor uma melhor implementação, baseado na figura 3.
-
A segunda atividade é incluir o arquivo extend.vhd ao projeto, defini-lo como toplevel, e realizar alterações na entidade extend de forma a substituir os campos da instrução (signal) instr por alias, baseado na tabela 6.
-
A terceira atividade é criar um pacote chamado riscv_pkg (arquivo riscv_pkg), na pasta src, e incluir a declaração de componente para as entidades alu e extend. Definir no mesmo pacote uma constante global chamada RISCV_Data_Width, com valor igual a 32 e utilizá-la como valor default do parâmetro genérico criado para a entidade alu.
-
A quarta atividade é incluir o arquivo regfile.vhd ao projeto, defini-lo como toplevel, e realizar alterações na entidade regfile de forma a:
i) parametrizá-la em função de RISCV_Data_Width (da mesma forma que foi feito com a entidade alu);
ii) criar uma função, definida e declarada no pacote riscv_pkg, chamada to_integer, que converta um objeto do tipo std_logic_vector para integer.
-
A quinta atividade é incluir o arquivo mux3.vhd ao projeto, defini-lo como toplevel, e realizar alterações na entidade mux3 de forma a substituir a construção if-then-else por with-select, e parametrizá-la em função de RISCV_Data_Width (da mesma forma que foi feito com a entidade alu).
-
A sexta atividade é incluir o arquivo mux2.vhd ao projeto, defini-lo como toplevel, e realizar alterações na entidade mux2 de forma a substituir a construção when-else por case-when, e parametrizá-la em função de RISCV_Data_Width (da mesma forma que foi feito com a entidade mux3).
-
A sétima atividade é incluir o arquivo adder.vhd ao projeto, defini-lo como toplevel, e realizar alterações na entidade adder de forma a:
i) parametrizá-la em função de RISCV_Data_Width (da mesma forma que foi feito com a entidade mux2);
ii) criar uma função, definida e declarada no pacote riscv_pkg, sobrecarregando o operador “+”, que realize a soma de dois objetos do tipo std_logic_vector.
-
A oitava atividade é incluir o arquivo flopr.vhd ao projeto, defini-lo como toplevel, e realizar alterações na entidade flopr de forma a:
i) parametrizá-la em função de RISCV_Data_Width (da mesma forma que foi feito com a entidade adder);
ii) acrescentar ao pacote riscv_pkg as declarações de componente para as entidades regfile, mux3, mux2, adder e flopr.
-
A nona atividade é incluir o arquivo datapath.vhd ao projeto, defini-lo como toplevel, e realizar alterações na entidade datapath de forma a:
i) parametrizá-la em função de RISCV_Data_Width (da mesma forma que foi feito com a entidade flopr);
ii) incluir a solicitação de uso do pacote riscv_pkg, tornando visível todas as declarações.
iii) acrescentar ao pacote riscv_pkg a declaração de componente para a entidade datapath.
-
A décima atividade é incluir o arquivo maindec.vhd ao projeto, defini-lo como toplevel, e acrescentar ao pacote riscv_pkg a declaração de componente para a entidade maindec.
-
A décima primeira atividade é incluir o arquivo aludec.vhd ao projeto, defini-lo como toplevel, e acrescentar ao pacote riscv_pkg a declaração de componente para a entidade aludec.
-
A décima segunda atividade é incluir o arquivo controller.vhd ao projeto, defini-lo como toplevel, e realizar alterações na entidade controller de forma a:
i) incluir a solicitação de uso do pacote riscv_pkg, tornando visível todas as declarações.
ii) acrescentar ao pacote riscv_pkg a declaração de componente para a entidade controller.
-
A décima terceira atividade é incluir o arquivo riscvsingle.vhd ao projeto, defini-lo como toplevel, e realizar alterações na entidade riscvsingle de forma a:
i) parametrizá-la em função de RISCV_Data_Width (da mesma forma que foi feito com a entidade datapath);
ii) incluir a solicitação de uso do pacote riscv_pkg, tornando visível todas as declarações.
iii) acrescentar ao pacote riscv_pkg a declaração de componente para a entidade riscvsingle.
-
A décima quarta atividade é criar um projeto denominado riscvsingle, na ferramenta ModelSim (que servirá de base para simular todas as funcionalidades da arquitetura) e incluir todos os arquivos da pasta src e realize alterações nas entidades dmem, imem, top e testbench, de forma a:
i) incluir a solicitação de uso do pacote riscv_pkg, tornando visível todas as declarações;
ii) parametrizá-la em função de RISCV_Data_Width (da mesma forma que foi feito com a entidade riscvsingle);
iii) acrescentar ao pacote riscv_pkg a declaração de componente para as entidades top, imem e dmem.
iv) apresentar o resultado da simulação.
-
Implementar a instrução, conforme o grupo:
Grupo Instrução Integrantes bne Mateus Fonseca Piris
Carlos Henrique Craveiro Aquino Veras
Ivan Roberto Wagner Pancheniak Filholui Ricardo Almeida de Souza Albuquerque
Luis Augusto Abe
Aruan Bretas de Oliveira Filhosubi xor Lucas Batista Lopes
Eduardo Jose de Carvalho
Pedro Zarzenon Jacomassiori Davi Daniel da Silva
Joao Lucas Almeida Caldas Ferraz
Daniel Shinji Takahashixori andi Pedro Fiorese Machado Netto
Murillo Martinez Nunes
Andre Vinicius de Paulalb
-