LAB07 – Componentes Datapath: temporizador e … ascendente de 4 bits. Para limitar a contagem,...

14
Laboratório de Sistemas Digitais DEP. DE ENG.ª ELECTROTÉCNICA E DE COMPUTADORES FACULDADE DE CIÊNCIAS E TECNOLOGIA UNIVERSIDADE DE COIMBRA MiEEC, 1.º ano, 1.º semestre DEEC-FCTUC LAB07 Componentes Datapath: temporizador e calculadora com ALU i 1. Introdução ...................................................................................................................... 1 1.1 Componentes Datapath .........................................................................................................1 1.2 Módulos da biblioteca UP-Core da Altera .................................................................................2 1.2.1 CLK_DIV.......................................................................................................................................... 2 1.2.2 DEC_7SEG ....................................................................................................................................... 3 2. Somador de 4 bits com propagação do transporte ............................................................. 3 2.1 Actividades...........................................................................................................................4 3. Temporizador com contador ascendente BCD ................................................................... 5 3.1 Actividades...........................................................................................................................7 4. Controlador para cronometrar passagem de veículos ......................................................... 8 4.1 Actividades...........................................................................................................................8 5. Calculadora de 4 bits, 4 operações, com botões e 7seg ..................................................... 9 5.1 ALU de 4 bits com 4 operações ............................................................................................ 10 5.2 Actividades......................................................................................................................... 11 6. Calculadora de 8 bits, 4 operações, com botões e 7seg ....................................................11 6.1 Actividades......................................................................................................................... 11 7. Preparação do trabalho ..................................................................................................12 8. Lista de verificação .........................................................................................................12 9. Referências ....................................................................................................................13 10. Pinos principais da placa DE2 ..........................................................................................14 1. Introdução 1.1 Componentes Datapath Nas aulas de laboratório anteriores, trabalhámos com blocos de construção de circuitos digitais cada vez mais complexos: portas, multiplexers, descodificadores, registos simples, e controladores. Controladores são bons para sistemas com entradas/saídas de controlo, ou seja com entradas de apenas um bit (ou poucos). Estas podem representar algum evento ou estado do meio onde o circuito actua, como por exemplo um bit a indicar o estado de um

Transcript of LAB07 – Componentes Datapath: temporizador e … ascendente de 4 bits. Para limitar a contagem,...

Page 1: LAB07 – Componentes Datapath: temporizador e … ascendente de 4 bits. Para limitar a contagem, podemos recorrer a um registo com reset, e alterar o AND que detecta a contagem terminal,

Laboratório de Sistemas Digitais

DEP. DE ENG.ª ELECTROTÉCNICA E DE COMPUTADORES FACULDADE DE CIÊNCIAS E TECNOLOGIA

UNIVERSIDADE DE COIMBRA

MiEEC, 1.º ano, 1.º semestre DEEC-FCTUC

LAB07 – Componentes Datapath: temporizador e calculadora com ALU i

1. Introdução ...................................................................................................................... 1

1.1 Componentes Datapath ......................................................................................................... 1

1.2 Módulos da biblioteca UP-Core da Altera ................................................................................. 2 1.2.1 CLK_DIV .......................................................................................................................................... 2 1.2.2 DEC_7SEG ....................................................................................................................................... 3

2. Somador de 4 bits com propagação do transporte ............................................................. 3

2.1 Actividades........................................................................................................................... 4

3. Temporizador com contador ascendente BCD ................................................................... 5

3.1 Actividades........................................................................................................................... 7

4. Controlador para cronometrar passagem de veículos ......................................................... 8

4.1 Actividades........................................................................................................................... 8

5. Calculadora de 4 bits, 4 operações, com botões e 7seg ..................................................... 9

5.1 ALU de 4 bits com 4 operações ............................................................................................ 10

5.2 Actividades......................................................................................................................... 11

6. Calculadora de 8 bits, 4 operações, com botões e 7seg ....................................................11

6.1 Actividades......................................................................................................................... 11

7. Preparação do trabalho ..................................................................................................12

8. Lista de verificação .........................................................................................................12

9. Referências ....................................................................................................................13

10. Pinos principais da placa DE2 ..........................................................................................14

1. Introdução

1.1 Componentes Datapath

Nas aulas de laboratório anteriores, trabalhámos com blocos de construção de circuitos

digitais cada vez mais complexos: portas, multiplexers, descodificadores, registos simples, e

controladores. Controladores são bons para sistemas com entradas/saídas de controlo, ou

seja com entradas de apenas um bit (ou poucos). Estas podem representar algum evento ou

estado do meio onde o circuito actua, como por exemplo um bit a indicar o estado de um

Page 2: LAB07 – Componentes Datapath: temporizador e … ascendente de 4 bits. Para limitar a contagem, podemos recorrer a um registo com reset, e alterar o AND que detecta a contagem terminal,

LAB07 – Componentes Datapath: temporizador e calculadora com ALU Laboratório de Sistemas Digitais

MiEEC, 1.º ano, 1.º semestre Pág. 2/14 DEEC-FCTUC

botão. Mas em muitos casos, o circuito digital a implementar tem que lidar com entradas

mais complexas, entradas de dados, ou seja, múltiplos bits representando colectivamente

uma só entidade, como por exemplo 7 bits a indicar um valor de temperatura em binário. É

então necessário ter blocos de construção para circuitos digitais que manipulam dados.

Os componentes de datapath, ou componentes para projecto ao nível da transferência

de registos (RTL register-transfer-level), armazenam ou transformam dados. A sua

interligação forma o datapath (caminho ou fluxo de dados). Existem diversos componentes

datapath: registos, deslocadores (shifters), somadores (adders), comparadores, contadores,

multiplicadores, subtractores, unidades aritméticas e lógicas (ALUs arithmetic-logic units),

ficheiros de registos. Juntando controladores com datapaths obtemos “processadores”,

circuitos digitais dedicados para processar dados.

Neste trabalho, vamos implementar alguns destes componentes e também trabalhar

com alguns componentes da biblioteca disponibilizada com as placas FPGA da Altera

apresentados na secção seguinte.

1.2 Módulos da biblioteca UP-Core da Altera

Para trabalhar com algumas das funcionalidades da placa DE2 da Altera [3], como

VGA, teclado e rato, existe uma biblioteca de módulos UP-Core da Altera [2]. Estes módulos

estão disponíveis na página da cadeira no InforEstudante (ficheiro de2.zip). Os respectivos

ficheiros devem ficar na directoria c:\altera\90\quartus\libraries\de2, devendo

indicar a localização da biblioteca no projecto, através do comando: Project >

Add/Remove Files in Project > User Libraries (Current Project).

1.2.1 CLK_DIV

As placas da Altera geram sinais de relógio internamente, mas têm uma frequência

demasiado elevada para muitas aplicações, sendo necessário colocar divisores de frequência

para gerar os valores pretendidos. O módulo CKL_DIV implementa contadores para efectuar

essa divisão, disponibilizando um conjunto de sinais de relógio com frequências em

potências de 10. Na Fig. 1 é representado o símbolo deste módulo, que tem como pino de

entrada um clock de 50 MHz (pino PIN_N2 da DE2 [3]).

Page 3: LAB07 – Componentes Datapath: temporizador e … ascendente de 4 bits. Para limitar a contagem, podemos recorrer a um registo com reset, e alterar o AND que detecta a contagem terminal,

LAB07 – Componentes Datapath: temporizador e calculadora com ALU Laboratório de Sistemas Digitais

MiEEC, 1.º ano, 1.º semestre Pág. 3/14 DEEC-FCTUC

Fig. 1. CLK_DIV: divisor de relógio para DE2.

1.2.2 DEC_7SEG

Um outro módulo disponível é o descodificador hexadecimal para 7 segmentos

DEC_7SEG (Fig. 2), que tem uma entrada em bus para o número binário

(hex_digit[3..0]) e 7 saídas para os segmentos. No Quartus II, as ligações de bus são

feitas por nome e não por ligação gráfica. Na Fig. 2, temos uma entrada IN_BYTE[7..0] a

indicar o valor de dois dígitos enviados para dois visores de 7 segmentos.

Fig. 2. DEC_7SEG: descodificador de hexadecimal para 7 segmentos.

Na página da cadeira no InforEstudante está disponível um ficheiro VHDL

(dec_7seg_b.vhd) com a implementação deste descodificador considerando uma entrada

em bus para o número binário (hex_digit[3..0]) e uma saída em bus para os 7

segmentos (HEX0[6..0]).

2. Somador de 4 bits com propagação do transporte

Projectar um circuito somador seguindo o método standard de projecto de lógica

combinacional leva a tabelas de verdade muito extensas e com muitos 1s/0s nas saídas, o

que se traduz em muita lógica combinacional. Por exemplo, um somador de 8 bits tem uma

Page 4: LAB07 – Componentes Datapath: temporizador e … ascendente de 4 bits. Para limitar a contagem, podemos recorrer a um registo com reset, e alterar o AND que detecta a contagem terminal,

LAB07 – Componentes Datapath: temporizador e calculadora com ALU Laboratório de Sistemas Digitais

MiEEC, 1.º ano, 1.º semestre Pág. 4/14 DEEC-FCTUC

tabela de verdade com 2(8+8) = 65,536 linhas, cuja implementação implica cerca de 8 mil

transístores. Um projecto alternativo para este somador seria seguir os mesmos passos que

o algoritmo de adição manual, ou seja uma coluna de cada vez. Para cada coluna basta

calcular a soma e adicionar o transporte (carry) à coluna seguinte. Temos pois que

projectar um componente que permita somar dois bits mais o transporte (os bits da coluna),

e que gere o bit de soma (sum) e o bit de transporte (carry). Este componente designa-se

por somador completo (full-adder). A Fig. 3 apresenta a sua tabela de verdade e o

respectivo circuito. A Fig. 4 mostra como podemos criar uma cascata de somadores

completos para implementar um somador de 4 bits.

Fig. 3. Somador completo (full-adder).

Fig. 4. Somador de 4 bits com propagação do transporte (carry-ripple).

2.1 Actividades

a) Num novo projecto, crie em VHDL um componente SomaCompl que implemente a

funcionalidade de um somador completo (full-adder), descrevendo o seu

comportamento e não a sua estrutura.

a0

c o s F A

c o

b3

a2

b2

s3

s2

s1

ci

b a

c o s F A

ci

b a

a1

b1

c o s F A

ci

b a

s0

a0

b0

ci

c o s F A

ci

b a

( a )

a3

a2

a1

a0

b3

s3

s2

s1

s0

c o ci

b2

b1

b0

( b )

4-bit adder

c o

ci b a

s

Full

adder

s 0 1 1 0 1 0 0 1

c o 0 0 0 1 0 1 1 1

ci 0 1 0 1 0 1 0 1

b 0 0 1 1 0 0 1 1

a 0 0 0 0 1 1 1 1

I nputs O utputs

Page 5: LAB07 – Componentes Datapath: temporizador e … ascendente de 4 bits. Para limitar a contagem, podemos recorrer a um registo com reset, e alterar o AND que detecta a contagem terminal,

LAB07 – Componentes Datapath: temporizador e calculadora com ALU Laboratório de Sistemas Digitais

MiEEC, 1.º ano, 1.º semestre Pág. 5/14 DEEC-FCTUC

b) Crie um novo componente Soma4bit, a partir da composição gráfica de 4 somadores

completos, ou seja um somador de 4 bits com propagação do transporte (4 bit carry-

ripple adder).

c) Utilizando o componente anterior, projecte um circuito para somar dois números

binários de 4 bits e apresentar o resultado. Recorrendo a 4 visores de 7 segmentos, e

ao módulo DEC_7SEG da biblioteca UP-Core ou ao módulo dec_7seg_b, deve

visualizar os dois números a somar, especificados por dois conjuntos de 4

interruptores. Os dois visores mais à direita deverão mostrar os dois valores a somar.

Os dois visores mais à esquerda deverão ser utilizados para visualizar o resultado da

soma dos dois números − o dígito mais à esquerda será 1 quando a soma

“transbordar” e tiver carry out a 1.

Notas: Não esquecer de indicar o novo ficheiro do desenho esquemático do seu circuito como

o principal do seu projecto (top-level entity), seleccionando essa opção com o botão do lado

direito do rato sobre o ficheiro na janela do Project Navigator. Para a atribuição de pinos da

FPGA às entradas e saídas do circuito, utilize nomes de acordo com a lista standard DE2, de

forma a poder utilizar o ficheiro DE2_pin_assignments.csv1 para importar a atribuição

de pinos.

d) Compile o projecto. Se ocorrer algum erro, volte atrás para corrigir os erros de

projecto.

e) Programe a FPGA e teste o circuito.

3. Temporizador com contador ascendente BCD

Um contador BCD (decimal codificado em binário: Binary Coded Decimal) limita a

contagem de grupos de 4 bits aos dígitos decimais, ou seja em vez de contar de 0 a 15 com

4 bits (16 valores) só conta de 0 a 9 (10 valores). Consegue-se assim uma correspondência

directa entre grupos de bits e dígitos decimais do número representado, facilitando por

exemplo a visualização em visores de 7 segmentos. A Fig. 5 mostra a estrutura interna de

um contador ascendente de 4 bits que facilmente podemos adaptar para BCD.

1 Consultar a última página deste enunciado.

Page 6: LAB07 – Componentes Datapath: temporizador e … ascendente de 4 bits. Para limitar a contagem, podemos recorrer a um registo com reset, e alterar o AND que detecta a contagem terminal,

LAB07 – Componentes Datapath: temporizador e calculadora com ALU Laboratório de Sistemas Digitais

MiEEC, 1.º ano, 1.º semestre Pág. 6/14 DEEC-FCTUC

Fig. 5. Contador ascendente de 4 bits.

Para limitar a contagem, podemos recorrer a um registo com reset, e alterar o AND

que detecta a contagem terminal, tc, para detectar o último valor de contagem pretendido

e ligar esta saída ao reset. Mas isto só funcionará se o reset for síncrono, pois se for

assíncrono perdemos este último patamar de contagem, transitando logo para zero. Com

reset assíncrono temos que detectar o primeiro valor não desejado, ou seja um à frente do

último.

Uma outra abordagem é descrever o comportamento pretendido em VHDL, e deixar a

tarefa de síntese para as ferramentas de CAD (computer aided design). Podemos declarar

um módulo VHDL com as entradas e saídas apropriadas para um contador BCD, indicando

no comportamento as transições de estado para cada valor de contagem. A Fig. 6 apresenta

uma descrição comportamental mais compacta, recorrendo à biblioteca aritmética sem sinal

para standard logic. Esta define operadores aritméticos como adição e subtracção para

vectores de bits.

1 -- contador BCD (4 bits, 1 digitos decimal)

2 library ieee;

3 use ieee.std_logic_1164.all;

4 use ieee.std_logic_arith.all;

5 use ieee.std_logic_unsigned.all;

6

7 entity contaBCD is

8 port ( clk, reset, cnt: in std_logic;

9 dec: out std_logic_vector(3 downto 0);

10 carry: out std_logic

11 );

12 end contaBCD;

13

14 architecture behavior of contaBCD is

15 -- registo interno

ld 4-bit register

C t c 4

4 4

4

c n t

4-bit up-counter

+1

Page 7: LAB07 – Componentes Datapath: temporizador e … ascendente de 4 bits. Para limitar a contagem, podemos recorrer a um registo com reset, e alterar o AND que detecta a contagem terminal,

LAB07 – Componentes Datapath: temporizador e calculadora com ALU Laboratório de Sistemas Digitais

MiEEC, 1.º ano, 1.º semestre Pág. 7/14 DEEC-FCTUC

16 signal dec_reg: std_logic_vector(3 downto 0);

17 begin

18 process(clk, reset, cnt)

19 begin

20 if (reset = '0') then

21 dec_reg <= "0000";

22 carry <= '0';

23 elsif (cnt = '1' and (clk'event and clk = '1')) then

24 if ( dec_reg = 9) then

25 dec_reg <= "0000";

26 carry <= '1';

27 else

28 dec_reg <= dec_reg + 1;

29 carry <= '0';

30 end if;

31 end if;

32 end process;

33

34 process(dec_reg)

35 begin

36 -- colocar valor do registo interno na saída.

37 dec <= dec_reg;

38 end process;

39 end behavior;

40

Fig. 6. contaBCD.vhd com descrição comportamental recorrendo à biblioteca

aritmética sem sinal para simplificar a especificação do comportamento pretendido.

Nota: Este ficheiro está disponível na página da cadeira no InforEstudante, no material de apoio a este trabalho.

3.1 Actividades

a) Num novo projecto, crie em VHDL um componente ContaBCD, um contador com

entradas cnt (conta se estiver a 1), reset asserido a zero e clk, e saídas

dec[3..0] e carry (transporte de saída). Sendo um contador BCD ao chegar a 9

(10012) passa para 0 (00002) e carry vai a 1.

b) Utilizando o componente anterior, projecte um circuito temporizador com resolução de

0.1 segundos que conte de 0 a 9 segundos. Como entrada de relógio pode escolher a

frequência apropriada do módulo CLK_DIV da biblioteca UP-Core, e recorrer a dois

visores de 7 segmentos para indicar a contagem. Deve ainda utilizar dois botões: um

para accionar/parar a contagem e outro para reset.

Não esquecer de indicar o novo ficheiro do desenho esquemático do seu circuito como o

principal do seu projecto (top-level entity), seleccionando essa opção com o botão do lado

direito do rato sobre o ficheiro na janela do Project Navigator. Para a atribuição de pinos da

FPGA às entradas e saídas do circuito, utilize nomes de acordo com a lista standard DE2, de

Page 8: LAB07 – Componentes Datapath: temporizador e … ascendente de 4 bits. Para limitar a contagem, podemos recorrer a um registo com reset, e alterar o AND que detecta a contagem terminal,

LAB07 – Componentes Datapath: temporizador e calculadora com ALU Laboratório de Sistemas Digitais

MiEEC, 1.º ano, 1.º semestre Pág. 8/14 DEEC-FCTUC

forma a poder utilizar o ficheiro DE2_pin_assignments.csv2 para importar a atribuição

de pinos.

c) Compile o projecto. Se ocorrer algum erro, volte atrás para corrigir os erros de

projecto.

d) Programe a FPGA e teste o circuito.

4. Controlador para cronometrar passagem de veículos

Pretende-se cronometrar a passagem de veículos num determinado percurso, dispondo

de um par de sensores e de um temporizador. Inicialmente o controlador deve ter o

temporizador a zero e aguardar que o veículo accione o primeiro sensor s1, neste instante

inicia a contagem, asserindo a entrada cnt do temporizador, e depois só quando detectar a

passagem no segundo sensor, s2, é que pára o temporizador. Só passa um veículo de cada

vez, e para cronometrar uma nova passagem, temos que pulsar um botão cron.

4.1 Actividades

a) Projecte a máquina de estados finitos para o controlador de cronometragem de

veículos. Considere que dispõe de um temporizador BCD com entradas de contagem e

reset controladas pela máquina de estados finitos, ficando o valor de contagem sempre

ligado directamente ao mostrador.

Importante: O projecto do controlador deve ser realizado previamente, antes de vir para a

aula prática de laboratório em que se realizará este trabalho. Caso contrário, não terá tempo de

cumprir todos os objectivos do trabalho durante as 3h da aula prática laboratorial.

b) Siga os restantes passos de projecto de controladores para obter a arquitectura e a

lógica combinacional necessária para o cronómetro de passagem de veículos.

c) Crie um novo projecto no qual deve incluir um componente CombLogic, que

implementa a parte da lógica combinacional do controlador, o registo de estado do

controlador, e o temporizador composto por décadas ContaBCD, já implementado no

ponto 3.1. Deve agora utilizar dois botões para simular os sensores de passagem dos

veículos s1 e s2, e um outro para re-armar o circuito, cron.

2 Consultar a última página deste enunciado.

Page 9: LAB07 – Componentes Datapath: temporizador e … ascendente de 4 bits. Para limitar a contagem, podemos recorrer a um registo com reset, e alterar o AND que detecta a contagem terminal,

LAB07 – Componentes Datapath: temporizador e calculadora com ALU Laboratório de Sistemas Digitais

MiEEC, 1.º ano, 1.º semestre Pág. 9/14 DEEC-FCTUC

Não esquecer de indicar o novo ficheiro do desenho esquemático do seu circuito como o

principal do seu projecto (top-level entity), seleccionando essa opção com o botão do lado

direito do rato sobre o ficheiro na janela do Project Navigator. Para a atribuição de pinos da

FPGA às entradas e saídas do circuito, utilize nomes de acordo com a lista standard DE2, de

forma a poder utilizar o ficheiro DE2_pin_assignments.csv3 para importar a atribuição

de pinos.

d) Compile o projecto. Se ocorrer algum erro, volte atrás para corrigir os erros de

projecto.

e) Programe a FPGA e teste o circuito.

5. Calculadora de 4 bits, 4 operações, com botões e 7seg

Uma unidade aritmética e lógica (ALUs arithmetic-logic units) é um componente que

pode fazer várias operações aritméticas (adição, subtracção, incrementar, etc.) e lógicas

(AND, OR, etc.), mediante a selecção das entradas de controlo. Por exemplo, podemos ter

uma ALU que implemente as funções indicadas na Fig. 7.

Fig. 7. Tabela de operações para ALU.

Podemos construir esta ALU com componentes separados para cada operação e

multiplexers. Mas ficamos com demasiados fios e desperdiçamos energia nos circuitos que

realizam todas as operações, quando só um dos resultados é utilizado de cada vez.

Um projecto mais eficiente utiliza apenas um somador e alguma lógica adicional a

condicionar as entradas A e B do somador (Fig. 8). A lógica adicional designa-se por

3 Consultar a última página deste enunciado.

Page 10: LAB07 – Componentes Datapath: temporizador e … ascendente de 4 bits. Para limitar a contagem, podemos recorrer a um registo com reset, e alterar o AND que detecta a contagem terminal,

LAB07 – Componentes Datapath: temporizador e calculadora com ALU Laboratório de Sistemas Digitais

MiEEC, 1.º ano, 1.º semestre Pág. 10/14 DEEC-FCTUC

extensor aritmético e lógico (arithmetic-logic extender). O extensor modifica as entradas A e

B, de forma que o resultado da operação desejada fique à saída do somador.

Fig. 8. Implementação da ALU com somador e extensor aritmético e lógico.

O extensor processa bit a bit em função das entradas de selecção, sendo todos iguais

os módulos abext da Fig. 2. Para completar o projecto do extensor para a ALU, temos que

criar lógica para ia(x,y,z,a,b) e ib(x,y,z,a,b) para abext, e criar lógica para

cin(x,y,z).

5.1 ALU de 4 bits com 4 operações

Pretende-se implementar uma ALU de 4 bits que permita somar, subtrair e realizar as

operações lógicas AND e OR. A ALU tem as entradas A e B de 4 bits, os bits de selecção de

operação x e y, e as saídas S de 4 bits. A sua implementação deve recorrer a um extensor

aritmético e lógico, descrito anteriormente. A Fig. 9 indica a tabela de operações pretendida.

Fig. 9. Tabela de operações para ALU de 4 bits.

x y Operação

0 0 A+B

0 1 A-B

1 0 A OR B (bit a bit)

1 1 A AND B (bit a bit)

Page 11: LAB07 – Componentes Datapath: temporizador e … ascendente de 4 bits. Para limitar a contagem, podemos recorrer a um registo com reset, e alterar o AND que detecta a contagem terminal,

LAB07 – Componentes Datapath: temporizador e calculadora com ALU Laboratório de Sistemas Digitais

MiEEC, 1.º ano, 1.º semestre Pág. 11/14 DEEC-FCTUC

5.2 Actividades

a) Tendo em conta o funcionamento do extensor aritmético e lógico e a tabela de

operações da Fig. 9, crie a tabela de verdade para ia(x,y,a,b), ib(x,y,a,b),

cin(x,y). Num novo projecto, crie em VHDL um componente ab_ext, que

implemente a funcionalidade do extensor, descrevendo o seu comportamento e não a

sua estrutura.

b) Crie um novo componente ALU_4bit_ext a partir da composição gráfica de 4

ab_ext e da lógica adicional necessária para gerar a saída do cin.

c) Utilizando o componente anterior e o Soma4bit construído em 2.1 b), crie um novo

componente ALU_4bit que implemente a ALU de 4 bits pretendida.

d) Utilizando o componente anterior, projecte um circuito para testar a ALU de 4 bits com

dois números indicados por SW[3..0] e SW[7..4], e a operação seleccionada por

KEY[1..0]. O resultado deve ser indicado no visor de 7 segmentos (HEX0[6..0]).

e) Compile o projecto. Se ocorrer algum erro, volte atrás para corrigir os erros de

projecto.

f) Programe a FPGA e teste o circuito.

6. Calculadora de 8 bits, 4 operações, com botões e 7seg

Pretende-se agora aumentar a capacidade da calculadora para 8 bits e dois dígitos

hexadecimais. É necessário uma nova ALU de 8 bits, que se pode construir com os mesmos

componentes anteriores, associando dois Soma4bit para ter um somador de 8 bits e

acrescentando mais extensores nos bits de entrada.

6.1 Actividades4

a) No mesmo projecto, crie um novo componente ALU_8bit com as mesmas operações

da ALU_4bit, recorrendo aos mesmos sub-componentes para a implementar, como

descrito acima.

4 A execução das actividades até à secção 5, inclusive, permite obter uma classificação de 100% no trabalho. A realização deste último conjunto de actividades (6.1) será valorizada através duma bonificação que pode ir até 120% da cotação do trabalho.

Page 12: LAB07 – Componentes Datapath: temporizador e … ascendente de 4 bits. Para limitar a contagem, podemos recorrer a um registo com reset, e alterar o AND que detecta a contagem terminal,

LAB07 – Componentes Datapath: temporizador e calculadora com ALU Laboratório de Sistemas Digitais

MiEEC, 1.º ano, 1.º semestre Pág. 12/14 DEEC-FCTUC

b) Utilizando o componente anterior, e adaptando o circuito anterior da calculadora que

permitia indicar os dígitos com interruptores, implemente uma nova calculadora de 8

bits com a mesma ALU. Agora, é necessário ler um total de 4 dígitos hexadecimais,

dois para cada número de entrada, indicados por SW[7..0] e SW[15..8]. A

operação pretendida é indicada mais uma vez com KEY[1..0].

c) Programe a FPGA e teste o circuito.

7. Preparação do trabalho

Com o objectivo de preparar convenientemente este trabalho que irá realizar na aula

de laboratório, deverá:

1. Ler atentamente este documento até ao fim.

2. Consultar as referências indicadas na introdução do trabalho e outras referências

bibliográficas que sejam relevantes para o trabalho.

3. Executar as actividades 4.1 a), b) do projecto do controlador.

4. Pedir ao docente da aula de laboratório, no início da aula, para esclarecer eventuais

dúvidas.

Facultativamente, se tiver o SW de CAD Quartus II instalado no seu PC (o Quartus II é

distribuído gratuitamente através do sítio Web da Altera5), poderá desenhar previamente

parte dos esquemáticos solicitados ao longo do trabalho e escrever o código VHDL solicitado

na actividade 2.1 a) e trazê-los para a aula.

A preparação mais ou menos cuidada do trabalho será tida em conta na

avaliação que o docente realizará durante a aula.

8. Lista de verificação

Deverá chamar o docente no final de cada conjunto de actividades propostas neste

documento (ex. no final do ponto 2.1).

Importante: Antes de dar por terminado este trabalho laboratorial, ou abandonar a

aula laboratorial, verifique se o docente verificou e avaliou a execução de todas as

actividades sumariadas na tabela seguinte. Só assim poderá dar o trabalho por terminado.

5 www.altera.com

Page 13: LAB07 – Componentes Datapath: temporizador e … ascendente de 4 bits. Para limitar a contagem, podemos recorrer a um registo com reset, e alterar o AND que detecta a contagem terminal,

LAB07 – Componentes Datapath: temporizador e calculadora com ALU Laboratório de Sistemas Digitais

MiEEC, 1.º ano, 1.º semestre Pág. 13/14 DEEC-FCTUC

Actividade

Somador de 4 bits com propagação do transporte

1 2.1 a), b) SomaCompl: somador completo em VHDL,

Soma4bit: somador de 4 bits com propagação do transporte

2 2.1 c), d), e) Circuito para visualizar e somar dois números.

Implementação e teste na FPGA.

Temporizador com contador ascendente BCD

3 3.1 a) ContaBCD: contador BCD de 4 bits

4 3.1 b), c), d) Temporizador de dois dígitos com start/stop e reset.

Implementação e teste na FPGA

Controlador para cronometrar passagem de veículos

5 4.1 a), b) Projecto do controlador para cronometrar passagem de veículos

6 4.1 c)

4.1 d), e)

Circuito para cronometrar passagem de veículos com visor de 7 segmentos.

Implementação e teste na FPGA.

Calculadora de 4 bits, 4 operações, com botões e 7seg

7 5.1 a) ab_ext: componente para extensor aritmético e lógico

8 5.1 b) ALU_4bit_ext: extensor aritmético e lógico para ALU de 4 bits

9 5.1 c) ALU_4bit: unidade aritmética e lógica de 4 bits com 4 operações

10 5.1 d), e), f) Calculadora de 4 bits, 4 operações, com botões e 7seg

Implementação e teste na FPGA

Calculadora de 8 bits, 4 operações, com botões e 7seg

11 6.1 a) ALU_8bit: unidade aritmética e lógica de 8 bits com 4 operações

12 6.1 b), c) Calculadora de 8 bits, 4 operações, com teclado e VGA.

Implementação e teste na FPGA

9. Referências

[1] Digital Design. Frank Vahid, John Wiley & Sons, 2006.

[2] Rapid Prototyping of Digital Systems – A Tutorial Approach. James Hamblen e

Michael Furman, Kluwer Academic Publishers, 2001.

[3] DE2 Development and Education Board. Altera, 72 páginas, 2006.

i Conteúdo pedagógico preparado em Setembro de 2011 pelos docentes Jorge Lobo e Rui P. Rocha do DEEC-FCTUC, que asseguram a leccionação da unidade curricular Laboratório de Sistemas Digitais (MiEEC, 1.º ano, 1.º semestre).

Page 14: LAB07 – Componentes Datapath: temporizador e … ascendente de 4 bits. Para limitar a contagem, podemos recorrer a um registo com reset, e alterar o AND que detecta a contagem terminal,

LAB07 – Componentes Datapath: temporizador e calculadora com ALU Laboratório de Sistemas Digitais

MiEEC, 1.º ano, 1.º semestre Pág. 14/14 DEEC-FCTUC

10. Pinos principais da placa DE2

( Dispositivo: Cyclone II, EP2C35F672C6 | Ficheiro: DE2_pin_assignments.csv )

# Altera’s DE2 board

To,Location

# push-buttons

KEY[0],PIN_G26

KEY[1],PIN_N23

KEY[2],PIN_P23

KEY[3],PIN_W26

# Switches

SW[0],PIN_N25

SW[1],PIN_N26

SW[2],PIN_P25

SW[3],PIN_AE14

SW[4],PIN_AF14

SW[5],PIN_AD13

SW[6],PIN_AC13

SW[7],PIN_C13

SW[8],PIN_B13

SW[9],PIN_A13

SW[10],PIN_N1

SW[11],PIN_P1

SW[12],PIN_P2

SW[13],PIN_T7

SW[14],PIN_U3

SW[15],PIN_U4

SW[16],PIN_V1

SW[17],PIN_V2

# Red LEDs

LEDR[0],PIN_AE23

LEDR[1],PIN_AF23

LEDR[2],PIN_AB21

LEDR[3],PIN_AC22

LEDR[4],PIN_AD22

LEDR[5],PIN_AD23

LEDR[6],PIN_AD21

LEDR[7],PIN_AC21

LEDR[8],PIN_AA14

LEDR[9],PIN_Y13

LEDR[10],PIN_AA13

LEDR[11],PIN_AC14

LEDR[12],PIN_AD15

LEDR[13],PIN_AE15

LEDR[14],PIN_AF13

LEDR[15],PIN_AE13

LEDR[16],PIN_AE12

LEDR[17],PIN_AD12

# Green LEDs

LEDG[0],PIN_AE22

LEDG[1],PIN_AF22

LEDG[2],PIN_W19

LEDG[3],PIN_V18

LEDG[4],PIN_U18

LEDG[5],PIN_U17

LEDG[6],PIN_AA20

LEDG[7],PIN_Y18

LEDG[8],PIN_Y12

#

# 7 segments

# hex0

HEX0[0],PIN_AF10

HEX0[1],PIN_AB12

HEX0[2],PIN_AC12

HEX0[3],PIN_AD11

HEX0[4],PIN_AE11

HEX0[5],PIN_V14

HEX0[6],PIN_V13

# hex1

HEX1[0],PIN_V20

HEX1[1],PIN_V21

HEX1[2],PIN_W21

HEX1[3],PIN_Y22

HEX1[4],PIN_AA24

HEX1[5],PIN_AA23

HEX1[6],PIN_AB24

# hex2

HEX2[0],PIN_AB23

HEX2[1],PIN_V22

HEX2[2],PIN_AC25

HEX2[3],PIN_AC26

HEX2[4],PIN_AB26

HEX2[5],PIN_AB25

HEX2[6],PIN_Y24

# hex3

HEX3[0],PIN_Y23

HEX3[1],PIN_AA25

HEX3[2],PIN_AA26

HEX3[3],PIN_Y26

HEX3[4],PIN_Y25

HEX3[5],PIN_U22

HEX3[6],PIN_W24

# hex4

HEX4[0],PIN_U9

HEX4[1],PIN_U1

HEX4[2],PIN_U2

HEX4[3],PIN_T4

HEX4[4],PIN_R7

HEX4[5],PIN_R6

HEX4[6],PIN_T3

# hex5

HEX5[0],PIN_T2

HEX5[1],PIN_P6

HEX5[2],PIN_P7

HEX5[3],PIN_T9

HEX5[4],PIN_R5

HEX5[5],PIN_R4

HEX5[6],PIN_R3

# hex6

HEX6[0],PIN_R2

HEX6[1],PIN_P4

HEX6[2],PIN_P3

HEX6[3],PIN_M2

HEX6[4],PIN_M3

HEX6[5],PIN_M5

HEX6[6],PIN_M4

# hex7

HEX7[0],PIN_L3

HEX7[1],PIN_L2

HEX7[2],PIN_L9

HEX7[3],PIN_L6

HEX7[4],PIN_L7

HEX7[5],PIN_P9

HEX7[6],PIN_N9

# 50MHz clock

CLOCK_50,PIN_N2

# PS2

PS2_CLK,PIN_D26

PS2_DAT,PIN_C24

# VGA

VGA_R[9],PIN_E10

VGA_G[9],PIN_D12

VGA_B[9],PIN_B12

VGA_HS,PIN_A7

VGA_VS,PIN_D8

VGA_CLK,PIN_B8

VGA_BLANK,PIN_D6