Você está na página 1de 12

UNIVERSIDADE FEDERAL DE ITAJUBÁ

Instituto de Engenharia de Sistemas e Tecnologia da Informação

Luiz Henrique Tito- 2018006198

ATIVIDADE FINAL:

Projeto de circuitos para interface com ULA

ITAJUBÁ

2022
Luiz Henrique Tito- 2018006198

ATIVIDADE FINAL: Projeto de circuitos para interface com ULA

Relatório submetido à disciplina de Laboratório de


Eletrônica Digital II (como forma de avaliação e
composição das notas do curso.

Professor: Dr. Gabriel Antônio Fanelli de Souza

ITAJUBÁ

2022
RESUMO

A atividade tem como objetivo a aplicação dos conhecimentos adquiridos em


sala de aula por meio do projeto de uma Máquina de Estados e de alguns módulos
necessários para realizar a interface com esta unidade, como registradores, Unidade
Lógica Aritmética(ULA). Para este fim é preciso do desenvolvimento de habilidades
relacionadas à simulação de circuitos digitais utilizando de arquivos de testbench e
da placa de desenvolvimento DE10-Lite (FPGA da família MAX 10). Além disso, a
implementação de conceitos fundamentais para o projeto de sistemas digitais, como
o controle do fluxo de dados, também é necessária para a obtenção do resultado
esperado.

Palavras-chave: Eletrônica digital. Circuito para interface com ULA. Descrição de


Hardware em Verilog. Placa de desenvolvimento DE10-Lite. FPGA família MAX 10.
SUMÁRIO

1 INTRODUÇÃO 4
2 METODOLOGIA 5
2.1 Diretrizes do projeto 6
3 DESENVOLVIMENTO E RESULTADOS 6
3.1 Programação dos módulos individuais 6
3.1.1 Registrador 6
3.1.2 Registrador de deslocamento 7
3.1.3 Unidade de Controle 7
3.1.4 ULA 7
3.2 Programação do sistema 8
3.2.1 Outros módulos necessários 8
3.2.2 Módulo topo do sistema 8
3.3 Resultados e simulações 8
4 CONCLUSÕES 11
1 INTRODUÇÃO

Uma Máquina de Estados Finitos são máquinas abstratas responsáveis por


alterar seu estado mediante a estímulos.

Para facilitar e automatizar a operação dos demais dispositivo, é interessante


projetar um circuito de controle, máquina de estados, que consiga selecionar entre as
diferentes funções da ULA, do Registrador de Deslocamento, do Registrador e do
MulX(Multiplexador) para armazenar e processar os dados de entrada de maneira
correta.

No projeto, os registradores recebem 4bits, armazenam e realiza somas e divisões


dos valores e apresenta o valor inteiro de até 15 em hexadecimal.

A cada pulso de clock o estado da Unidade de Controle é alterado e em cada um


dos estados ocorre a habilitação ou seleção de modo de operação dos módulos
citados.

4
2 METODOLOGIA

Nesta parte será apresentado os requisitos do projeto.

2.1 Diretrizes do projeto

Para a realização deste trabalho, foi usado como referência o circuito da Figura 1,
que apresenta as conexões desejadas e a Tabela 2.1 mostra as diferentes operações
solicitadass para o registrador de deslocamento.

Figura 1 – Diagrama do sistema projetado

5
Tabela 2.1 - Operações disponíveis para o registrados de deslocamento
Palavra Descrição
00 Mantém o valor da saída.
01 Carregar os dados no registrador
10 Deslocamento à direita com preenchimento de zeros.
11 Deslocamento à direita mantendo o bit mais significativo.

Além disso, ao final do projeto foi utilizada a placa de desenvolvimento DE10-Lite,


que contém uma FPGA da família MAX 10 (10M50DAF484C7G), para teste do
sistema. A Tabela 2.2 mostra a pinagem utilizada.

Tabela 2.2 - Mapeamento dos pinos utilizados

3 DESENVOLVIMENTO

Nesta seção será apresentado e discutido o desenvolvimento do projeto, bem


como os resultados obtidos das simulações. Todos os códigos e testes foram feitos
com auxílio do software Quartus e estão nomeados conforme solicitado na pasta .zip.

3.1 Programação dos módulos individuais

A primeira etapa para projetar o sistema desejado foi criar, individualmente, os


arquivos dos módulos necessários, bem como os respectivos arquivos de testbench.
A seguir se encontram breves explicações sobre a contrução de cada um deles.

3.1.1 Registrador

O módulo do registrador possui entradas de clock e enable, além do barramento


de 4 bits de entrada de dados. A entrada de reset, mesmo não apresentada nos
módulos da figura 1, foi implementada com intuito de iniciar a saída do registrador

6
7
com 0. A saída também tem 4 bits e recebe o valor da entrada na borda de subida do
clock se estiver habilitado ou zero, caso seja acionado o reset.

O arquivo de testbench inicia resetando, colocando o valor do rst para nível 0


,devido a construção da placa utilizada e posteriormente colocando o valor binário
1101 na entrada. Depois, o dispositivo é habilitado para apresentar o valor da entrada
na sua saída. Por fim, para testar o pino de habilitação, o valor 0110 é colocado na
entrada com o dispositivo desabilitado e posteriormente habilitado para mostrar que
somente carregara o valor da entrada em habilitação.

3.1.2 Registrador de deslocamento

Este modulo funciona de forma similar ao registrador, com a diferença de que há


também um pino de seleção para uma das quatro operações a ser realizada. A
primeira é o funcionamento normal de um registrador e as outras três são as funções
de deslocamento de bits da palavra que está armazenada, conforme a Tabela 2.1.

O arquivo de testbench também é similar ao do registrador. A diferença é que,


além da entrada e do sinal de enable, são testados os quatro modos de operação do
dispositivo. No arquivo, o o dispositivo carrega o valor binário 1101 e realiza
sequencialmente as 3 demais funções descritas na tabela 2.1.

3.1.3 Unidade de Controle

A Unidade de Controle implementa uma máquina de estado com 10 estados


denominados Sn, com n indo de 0 á 10. Os sinais de entrada são o reset e o clock.
A cada pulso o sistema, troca de estado. A cada passo ocorre a habilitação,
desabilitação ou seleção do modo de operação dos módulos. No último estado é
colocado o um bit para 1 indicando o final da operação. A máquina de estado
permanece no último estado até que o reset seja acionado. Deste modo, o sistema
retorna ao estado inicial S0.

3.1.4 ULA

Este é o módulo central do projeto. A ULA não tem sinais de clock, reset ou enable
e possui apenas dois barramentos de 4 bits como entradas (A e B), outro barramento
como saída e um sinal de 2 bits para a seleção da função a ser realizada. As

7
operações para a ULA deste projeto, são: OR, XOR, NOT A e soma.

O testbench é simples e consiste em aplicar duas palavras de 4 bits arbitrárias nas


entradas do dispositivo e circular por todas as funções da ULA, avaliando os
resultados obtidos no barramento de saída.

3.2 Programação do sistema

Na segunda parte da atividade, os módulos descritos foram utilizados para criar o


módulo topo do projeto e os tópicos a seguir explicam esse processo.

3.2.1 Outros módulos necessários

O s módulo foi adaptado da descrição Verilog fornecida do decodificador BCD para


sete segmentos. Os símbolos das letras A, b, C, d, E e F foram adicionados ao código
conforme solicitado.

Por fim, um o MUX 2x1 utilizado no final do circuito para escolher entre os sinais
de saída do registrador C ou os dados do registrador B, foi implementado no módulo
topo denominado de main.

3.2.2 Módulo topo do sistema

O módulo topo do projeto combina todos os módulos já definidos em uma


descrição estrutural.

Os sinais de entrada e saída são palavras de 4 bits. A entrada é compartilhada


entre os registradores A e B e a saída é conectada a um dos displays de sete
segmentos. Em seguida são definidas as saídas relacionadas aos displays e LEDs,
usados para melhor visualização dos resultados.

São criadas algumas variáveis do tipo wire para possibilitar as conexões


desejadas e, então, os módulos necessários são instanciados conforme as ligações
mostradas na Figura 2.1.

3.3 Resultados e simulações

Primeiramente, todos os módulos descritos na seção 3.1 foram simulados com


seus respectivos arquivos de testbench. As imagens a seguir mostram o resultado de

8
cada uma dessas simulações.

Figura 3.1 - Simulação RTL do módulo registrador

Figura 3.2 - Simulação RTL do módulo registrador de deslocamento

Figura 3.3 - Simulação RTL do módulo ULA

9
Figura 3.4 - Simulação RTL do módulo Unidade de Controle

Por fim, o módulo topo foram instanciadas todos os módulos descritos na


figura 1. A simulação do testbranch do sistema é apresentada a seguir. No arquivo
testbranch, é colocado nos dados 3 em binário e posteriormente 1. Depois do
desativação do reset é realizada a a soma de (3*3+1)/2. O resultado é valor inteiro 5
ao final do estado S9 como esperado.

Figura 3.5 - Simulação RTL do módulo topo.


4 CONCLUSÕES

Ao realizar o projeto do sistema digital por meio da linguagem de descrição de


hardware Verilog, foi possível expandir o entendimento sobre esse tipo de circuito e
sua estruturação, bem como aprofundar os conhecimentos acerca da linguagem.
Pode-se explorar os conceitos relacionados ao projeto desses sistemas, como o
controle do fluxo de dados, e também desenvolver habilidades de simulação e teste
prático dos circuitos, através da placa DE10-Lite.

11
10

Você também pode gostar