Вы находитесь на странице: 1из 14

Universidade de Braslia

Departamento de Cincia da Computao 2 Laboratrio de OAC

Laboratrio 2 - Aritmtica Computacional Inteira- ULA -

Carolina Sousa Rocha De Oliveira Flvia Monteiro Miranda Ivan Caetano Leo de Souza Jefferson Leandro Vanessa Mendes de Oliveira Turma A 1/2011

07/45006 09/38751 09/44581 08/32154 07/55389

Braslia/DF 02 de junho de 2011.

2 Laboratrio de Organizao e Arquitetura de Computadores

1 OBJETIVOS: Introduzir ao aluno a linguagem de descrio de hardware Verilog e o simulador Icarus Verilog; Familiarizar o aluno com a plataforma de desenvolvimento FPGA DE2 da Altera e o software QUARTUS II ; Desenvolver a capacidade de anlise e sntese de sistemas digitais usando uma Linguagem de Descrio de Hardware.

2 METODOLOGIA: PARTE 1 Implementao de driver para Display de 7 segmentos. 1.1) Analise a descrio Verilog do controlador do dispositivo display de 7 segmentos (decoder7.v).

O arquivo texto (decoder7.v) possui 33 linhas e seu formato aparece ilustrado na Figura 1 abaixo.

Figura 1: Representao do arquivo texto decoder7.v.

1.2)

Analise o arquivo de testbench (decoder7_tb.v) e simule no Icarus Verilog. Obs: compile com comando iverilog decoder7_tb.v e execute com vvp a.out.

As 33 linhas do arquivo texto (decoder7_tb.v) aparecem ilustradas na Figura 2 abaixo. Utilizando o comando iverilog e executando o testbench (decoder7_tb.v) com vvp a.out, tem-se a simulao total do arquivo, ilustrada na Figura 3 a seguir.

2 Laboratrio de Organizao e Arquitetura de Computadores

Figura 2: Representao do arquivo texto decoder7_tb.v.

Figura 3: Compilao e execuo do testbench (decoder7_tb.v) no Icarus.

1.3)

Crie um novo projeto (Proj1) no QUARTUS II. Insira o arquivo do dispositivo decoder7.v. Crie o arquivo de topo (top.v) com as conexes do testbench. Faa a associao dos pinos FPGA aos dispositivos externos, importando o arquivo DE2_pin_assignments.csv. Sintetize o projeto. Carregue no FPGA e verifique seu funcionamento.

Ao implementar o projeto na FPGA, foi possvel ter uma noo mais concreta do funcionamento do programa. O acendimento dos LEDs da placa de acordo com a entrada colocada foi realizado corretamente e foi uma excelente ferramenta para a visualizao da eficcia do programa. Para cada entrada de valores (variando de 0 a 15), tnhamos o acendimento dos LEDs que formavam a escrita do valor de entrada correspondente (de 0 a F). Todos os valores ativados tiverem sua implementao visual corretamente executada na placa.

2 Laboratrio de Organizao e Arquitetura de Computadores

PARTE 2 Implementao de Somador de 4 bits. 2.1) Descrio ao nvel de portas lgicas: a) Implemente um meio-somador de 1 bit (half_add.v);

Figura 4: Representao do meio-somador de 1 bit.

O meio-somador de 1 bit possui duas entradas (A e B), que so combinadas em duas portas lgicas. Da operao A xor B, obtemos a sada Sum e da operao A and B obtemos a sada Carry. De acordo com a tabela verdade para as operaes lgicas de and e xor, nota-se que a sada Sum ser igual a 1 se, e somente se, as entradas A e B possurem valores diferentes (A=0 e B=1 ou A=1 e B=0), enquanto que a sada Carry ser igual a 1 se, e somente se, ambas as entradas A e B forem iguais a 1. Os dados da tabela verdade referente ao meio-somador de 1 bit aparecem destacados na Tabela 1 abaixo e a implementao deste meio-somador de 1 bit no QUARTUS II mostrada na Figura 5 abaixo. Tabela 1: Tabela Verdade referente ao meio-somador de 1 bit.
A 0 0 1 1 B 0 1 0 1 Sum (A xor B) 0 1 1 0 Carry (A and B) 0 0 0 1

Figura 5: Implementao do half_add de 1 bit no QUARTUS II.

2 Laboratrio de Organizao e Arquitetura de Computadores

Baseando-se na anlise da Figura 5, nota-se que a implementao de um meiosomador de 1 bit bastante simples. Basta declarar no programa quais so as entradas e quais so as sadas do sistema e realizar as operaes lgicas sobre as entradas corretas, atribuindo uma sada a cada uma das operaes lgicas existentes no programa (neste caso, duas, uma xor e uma and). A compilao dessas linhas de cdigo no QUARTUS II foi efetuada com sucesso, indicando a funcionalidade das declaraes e funes utilizadas. Posteriormente, a implementao do half_add na placa Altera permitir observar a funcionalidade deste meio-somador. b) Implemente um somador completo de 1 bit (full_add.v);

Figura 6: Representao do somador completo de 1 bit.

O somador completo de 1 bit possui trs entradas (A, B e Cin), que so combinadas em dois meio-somadores (implementados no item anterior) e em uma porta lgica or. As entradas A e B so combinadas em um meio-somador de 1 bit, resultando nas sadas intermedirias L1 e L2. Vale ressaltar que, no interior do meiosomador, temos uma porta lgica xor e uma porta lgica and, de modo que a sada intermediria L1 resultado da operao A xor B, enquanto que a sada intermediria L2 resulta da combinao A and B. O segundo meio-somador recebe como entradas a sada intermediria L1 e a entrada Cin. Da operao L1 xor Cin resulta a sada Sum do somador completo de 1 bit. A segunda sada do meio-somador igual a L3 que, ao ser combinada com a sada intermediria L2 (vinda do primeiro meio-somador) em uma operao or, fornece a sada final Carry do somador completo de 1 bit. De acordo com a Tabela verdade para as operaes lgicas and, xor e or, nota-se que a sada Sum ser igual a 1 se, e somente se, os valores de L1 e Cin forem diferentes (L1 = 0 e Cin = 1 ou L1 = 1 e Cin = 0), enquanto que a sada Carry ser igual a 0 se, e somente se, os valores de L 2 e L3 forem ambo iguais a 0. Os dados da tabela verdade referente somador completo de 1 bit e sua implementao no QUARTUS II aparecem destacados na Tabela 2 e na Figura 7 abaixo, respectivamente. Tabela 2: Tabela Verdade referente ao somador completo de 1 bit.
A 0 0 1 1 0 0 1 1 B 0 1 0 1 0 1 0 1 Cin 0 0 0 0 1 1 1 1 L1 (A xor B) 0 1 1 0 0 1 1 0 L2 (A and B) 0 0 0 1 0 0 0 1 L3 (Cin and L1) 0 0 0 0 0 1 1 0 Sum (Cin xor L1) 0 1 1 0 1 0 0 1 Carry (L3 or L2) 0 0 0 1 0 1 1 1

2 Laboratrio de Organizao e Arquitetura de Computadores

Figura 7: Implementao do full_add de 1 bit no QUARTUS II.

Baseando-se na anlise da Figura 7, nota-se que a implementao de um somador completo de 1 bit bastante simples, se utilizarmos o cdigo do half_add como implementao auxiliar. Basta declarar no programa quais so as entradas e quais so as sadas do sistema e realizar as operaes lgicas sobre as entradas corretas, atribuindo uma sada a cada uma das operaes lgicas existentes no programa (uma xor e uma and dentro de cada mdulo meio-somador e uma or para gerar a sada Carry, totalizando cinco operaes). A compilao dessas linhas de cdigo no QUARTUS II foi efetuada com sucesso, indicando a funcionalidade das declaraes e funes utilizadas. Posteriormente, a implementao do full_add na placa Altera permitir observar se o somador completo est corretamente implementado tambm em termos de funcionamento. c) Implemente um somador completo de 4 bits (add4.v);

Figura 8: Representao do somador completo de 4 bits composto por 4 somadores completos de 1 bit em cascata.

O somador completo de 4 bits pode ser implementado utilizando-se quatro somadores completos de 1 bit ordenados em cascata. Sabe-se que o somador

2 Laboratrio de Organizao e Arquitetura de Computadores

completo de 1 bit possui trs entradas (A, B e C in) e duas sadas, uma representando o resultado da soma das entradas (Sum) e outra representando o valor de Cout gerado pela soma dessas entradas. Para implementar o somador completo de quatro bits, basta unir em cascata quatro somadores de 1 bit, de modo que o C out do somador anterior seja o Cin do somador seguinte. Por exemplo, no primeiro somador completo de 1 bit, teramos como entradas os valores A 0, B0 e Cin que combinados no interior do somador geram as sadas S0 e F0. O segundo somador completo de 1 bit receber mais trs entradas: A1, B1 e o carry in igual a F0, que foi o carry out do somador anterior e assim sucessivamente, at atingir o quarto somador, onde as sadas sero os valores de S3 e Cout. Os bits S3S2S1S0 constituem o resultado da soma dos valores de A 3A2A1A0 com B3B2B1B0 e o bit Cout o valor de carry out oriundo dessa soma. Os dados da tabela verdade referente somador completo de 4 bits sero omitidos neste relatrio. Considerando que temos trs variveis de entrada (A, B e C in) e que A e B possuem 4 bits cada, a Tabela verdade relativa a todas as combinaes possveis dessas entradas seria muito extensa, constituindo um trabalho braal desnecessrio. Basta ter em mente que o somador de 4 bits um agrupamento de 4 somadores de 1 bit, cuja Tabela verdade aparece descrita na Tabela 2 do item anterior. A implementao do somador completo de 4 bits no QUARTUS II mostrada na Figura 9 abaixo.

Figura 9: Implementao do add4 de 1 bit no QUARTUS II.

Baseando-se na anlise da Figura 9, nota-se que a implementao de um somador completo de 4 bits no to trivial, j que depende da correta implementao de um somador de 1 bit, o qual depende da correta implementao de um meio-somador de um bit. No entanto, se os somadores de 1 bit estiverem funcionando adequadamente, basta que eles sejam cascateados de maneira correta para que o somador de 4 bits funcione. Se o carry out do somador de 1 bit anterior for igual ao carry in do somador de 1 bit seguinte, ento a soma para nmeros de 4 bits ser executada satisfatoriamente. A compilao dessas linhas de cdigo no QUARTUS II

2 Laboratrio de Organizao e Arquitetura de Computadores

foi efetuada com sucesso, indicando a funcionalidade das declaraes e funes utilizadas. Posteriormente, a implementao do add4 na placa Altera permitir observar se o meio-somador est corretamente implementado tambm em termos de funcionamento. d) Gere um testbench e simule no Icarus (add4_tb.v); Usando os comandos listados abaixo, gerou-se um testebench para simulao. O resultado desta simulao aparece ilustrado na Figura 10 abaixo.

Figura 10: Compilao e execuo do testbench (add4_tb.v) no Icarus.

e) Crie um novo projeto (Proj2) e gere um testbench (top.v), implemente no QUARTUS II, compile, carregue e teste na placa DE2; Criamos um projeto chamado add4 no QUARTUS chamando o arquivo add4.v:

2 Laboratrio de Organizao e Arquitetura de Computadores

Ao passar para a FPGA obtivemos a mesma resposta que esta simulao:

Para tal colocamos as entradas como chaves a as sadas como leds. 2.2) Descrio ao nvel comportamental: a) Implemente um somador completo de 4 bits (add4comp.v); Tendo como base a anlise a nvel comportamental, o somador completo de 4 bits pode ser implementado a partir do cdigo ilustrado na Figura 11 abaixo.

Figura 11: Representao do arquivo texto add4comp.v.

b) Gere um testbench e simule no Icarus (add4comp_tb.v);

2 Laboratrio de Organizao e Arquitetura de Computadores

A partir do testbench gerado, obteve-se a seguinte resposta, a partir dos comandos listados abaixo.

Figura 12: Compilao e execuo do testbench (add4comp_tb.v) no Icarus.

c) Crie um novo projeto (Proj3) e gere um testbench (top.v), implemente no QUARTUS II, compile, carregue e teste na placa DE2; Criamos um projeto chamado add4 no QUARTUS chamando o arquivo add4.v:

Ao passar para a FPGA obtivemos a mesma resposta que esta simulao:

2 Laboratrio de Organizao e Arquitetura de Computadores

Para tal colocamos as entradas como chaves a as sadas como leds.

2.3)

Qual das duas implementaes mais eficiente? Analise o nmero de Elementos Lgicos necessrios e o maior tempo de atraso.

A implementao baseada no nvel comportamental a mais eficiente, visto que exige muito menos instrues para ser devidamente executada. Como, de maneira geral, o aumento no nmero de instrues reduz a eficincia do programa, prefere-se uma implementao em que esse nmero seja reduzido. Quanto anlise de tempo de atraso, ele ser maior na implementao com uso de portas lgicas, j que essa estruturao necessita de muito mais instrues para ser executada e o uso de portas lgicas sempre tem tempos de atraso que so quase inerentes suas aplicaes e vo se acumulando a medida em que as portas vo sendo usadas de modo encadeado. PARTE 3 Implementao da Unidade Lgica Aritmtica - ULA. 3.1) Implemente ao nvel comportamental a ULA com as operaes de add, sub, or, nor, slt, deteco de igualdade e overflow (ula.v);

O cdigo gerado para a implementao a nvel comportamental da nossa ULA (Unidade Lgica Aritmtica), com os todos os opcodes especificados, aparece ilustrado na Figura 13 abaixo. Nota-se, no final da sequncia, os mdulos de deteco de zero e de overflow.

2 Laboratrio de Organizao e Arquitetura de Computadores

Figura 13: Representao do arquivo texto ula.v e ulaop.v.

3.2)

Acrescente dois registradores de 32 bits Hi e Lo na sua ULA e os mdulos necessrios para implementar as operaes mult, div, mfhi e mflo. Obs: cuidar o ajuste dos sinais dos resultados!

Para a nova ULA, observa-se uma pequena alterao nos parmetros do cdigo ilustrado na Figura 13.

3.3)

Gere um testbench completo e simule no Icarus (ula_tb.v);

2 Laboratrio de Organizao e Arquitetura de Computadores

Figura 14: Compilao e execuo do testbench (ula_tb) no Icarus.

3.4)

Crie um novo projeto (Proj4) e gere um testbench (top.v), implemente no QUARTUS II, compile, carregue e teste na placa DE2 explicitando os passos para validao completa do projeto;

Criamos o projeto ula no QUARTUS II:

Passamos para a FPGA usando chaves e leds e obtivemos uma resposta igual a da simulao abaixo, realizada no icarus pois o QUARTUS teve problemas em simular tal projeto.

2 Laboratrio de Organizao e Arquitetura de Computadores

3 REFERNCIAS BIBLIOGRFICAS: Patterson, D.A., Hennessy, J.L., Organizao e Projeto de Computadores - A Interface Hardware/Software, terceira edio, Editora Campus, 2005; Slides da aula Professor Marcus Vincius Lamar.

Вам также может понравиться