Buscar

Continue navegando


Prévia do material em texto

Laborato´rio de Sistemas, Processadores e Perife´ricos (SPP)
MIC-1: Unidade Lo´gica e Aritme´tica (ULA) - Parte II
Prof. Luiz T. S. Mendes, Prof. Gustavo G. Parma
Objetivos: Implementar e simular o deslocador, parte integrante da ULA do MIC-1
1 Introduc¸a˜o Teo´rica
Na arquitetura do MIC-1, a sa´ıda da ULA e´ injetada num deslocador (shifter) que pode executar as
seguintes ac¸o˜es:
• Deslocamento aritme´tico de 1 bit para a direita (sinal SAR1 ativo);
• Deslocamento lo´gico de 8 bits para a esquerda (sinal SLL8 ativo);
• Manter inalterado o valor.
A posic¸a˜o dos sinais SAR1 e SLL8 esta˜o definidos na figura 4.5 do livro texto.
No caso do deslocamento aritme´tico, deve-se ter em mente que o sinal do operando deve ser
preservado. Para tal, basta preservar o valor original do bit de sinal (bit mais significativo) apo´s a
operac¸a˜o de deslocamento.
Frequentemente o bloco composto pela ULA desenvolvida na pra´tica anterior acrescido pelo des-
locador e´ simplesmente referenciado por ULA, uma vez que a operac¸a˜o de deslocamento pode ser
entendida como uma operac¸a˜o lo´gica ou aritme´tica. A figura 1 apresenta o diagrama combinado da
ULA+deslocador:
Como a ULA ja´ foi criada na etapa anterior, na˜o e´ necessa´rio refazer sua lo´gica: basta definirmos a
mesma como um componente, criarmos o deslocador como um outro componente, e realizar a junc¸a˜o
destes dois componentes. Este processo e´ descrito no item seguinte.
Figura 1: Ula final composta pelo bloco anterior da ULA acrescido do deslocador.
Figura 2: Diagrama em blocos utilizado para exemplificar a utilizac¸a˜o de componentes em VHDL.
2 Utilizac¸a˜o de componentes em VHDL
Componentes sa˜o usualmente referidos em VHDL como ”pacotes”(packages). Uma colec¸a˜o de ”pa-
cotes”forma uma biblioteca (library). Os elementos de uma biblioteca, assim, ficam dispon´ıveis para
uso pela aplicac¸a˜o corrente desde que declaremos a biblioteca (declarac¸a˜o LIBRARY) e os pacotes
individuais que queremos usar (declarac¸a˜o USE). Por tratar-se de conceitos mais avanc¸ados de VHDL,
na˜o entraremos em detalhes quanto a` criac¸a˜o de ”pacotes”/bibliotecas e, ao inve´s, utilizaremos uma
forma mais simples de lidar com componentes, na qual todos os componentes sa˜o definidos no mesmo
arquivo VHDL.
Considere a figura 2, na qual sa˜o definidos dois componentes ba´sicos denominados C1 e C2 (lado
esquerdo da figura) a partir dos quais queremos criar um componente final mais complexo (lado direito
da figura). Estude atentamente o co´digo VHDL que exemplifica esta construc¸a˜o, mostrado na figura
3.
Observe os seguintes detalhes no co´digo anterior:
• E´ necessa´rio re-declarar as bibliotecas necessa´rias a cada entidade, imediatamente antes das
mesmas;
• As instanciac¸o˜es dos componentes, na arquitetura do elemento final, devem ser unicamente
identificadas atrave´s de um nome (label) particular;
• As interconexo˜es dos componentes internos, por corresponderem a uma conexa˜o f´ısica interna,
devem ser declaradas como SIGNAL;
• O mapeamento dos sinais de entrada/sa´ıda do dispositivo final com relac¸a˜o aos sinais de en-
trada/sa´ıda dos componentes e´ feito atrave´s da diretiva PORT MAP. A notac¸a˜o X =¿ Y nesta
diretiva indica que o sinal/pino Y esta´ conectado ao pino X, sendo que X pertence ao compo-
nente (lado esquerdo do s´ımbolo ”=>”) e Y pertence ao dispositivo final (lado direito do s´ımbolo
”=>”);
• Cada instaˆncia dos componentes precisa receber um nome identificador. Neste exemplo, Nome1,
Nome2 e Nome3 simplesmente identificam que voceˆ esta´ utilizando treˆs componentes, dois do
tipo C1 e um do tipo C2.
• O arquivo VHDL final tem de ter o MESMO NOME da entidade final.
2
Figura 3: Co´digo VHDL para a implementac¸a˜o da Figura 2.
3
3 Parte Experimental
A parte experimental consiste da elaborac¸a˜o e simulac¸a˜o da entidade final correspondente a` ULA e
deslocador. Para tal, siga os seguintes passos:
• Considerando que voceˆ ja´ possui um arquivo contendo a ULA, abra um novo arquivo no editor
VHDL do Quartus II.
• Neste novo arquivo crie o co´digo correspondente a` entidade deslocador. Lembre-se de escolher um
nome adequado para o arquivo. Salve este arquivo no seu direto´rio, o mesmo que conte´m a ULA.
E´ interessante compilar somente o deslocador para evitar poss´ıveis erros que, posteriormente,
possam ficar dif´ıcieis de serem identificados. Para isto basta definir este arquivo como sendo a
entidade ”top level”no Quartus II.
• Abra um novo arquivo no editor de VHDL e crie o co´digo da entidade responsa´vel pela unia˜o
da ULA e deslocador. Compile e simule esta entidade final.
4