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