Sie sind auf Seite 1von 6

Experimento 5

Memria ROM
Disciplina: EN3723 Lgica Programvel.

Discentes:
Fernando Henrique Gomes Zucatelli
Fernando Soler
Turma: A/Diurno
Prof Dr. Rodrigo Reina Muoz.

Santo Andr, 01 de Dezembro de 2014

Sumrio
1.
2.
3.
4.
5.

OBJETIVOS ....................................................................................................................... 2
PARTE EXPERIMENTAL ................................................................................................ 2
RESULTADOS E DISCUSSO ....................................................................................... 2
CONCLUSO .................................................................................................................... 3
REFERNCIAS BIBLIOGRFICAS ............................................................................... 4

1. OBJETIVOS
O objetivo deste experimento programar duas memrias ROM, uma 8x8 e
outra 8x16, sendo a ltima implementao parametrizvel, ou seja, o tamanho da
palavra ser determinado por um parmetro interno do programa.

2. PARTE EXPERIMENTAL
2.1.

Memria 8x8

Uma memria 8x8 se configura como 8 palavras de 8 bits cada, assim, so


necessrios 3 bits (23 = 8) para o endereamento. Assim, a varivel addr foi criada
com o tipo IN STD_LOGIC_VECTOR(2 DOWNTO 0) e foi alocada nos switches 2, 1
e 0. A varivel de sada o dado armazenado no endereo, que representado pela
varivel dado, definida como OUT STD_LOGIC_VECTOR(7 DOWNTO 0). A sada
foi alocada nos LEDs vermelhos de LED0 a LED7.
Para efeitos de testes, foram armazenados os valores de 61 a 68, em
hexadecimal, na memria.

2.2.

Memria 8x16 parametrizvel

A implementao da memria 8x8, foi adicionado um parmetro p, que


representa o tamanho de cada palavra, dessa forma o programador tem a
possibilidade de alterar a configurao da memria atravs do software.

3. RESULTADOS E DISCUSSO
3.1.

Programa da memria 8x8

A tabela 1 mostra o estado dos LEDs de sada para cada endereo, conforme
dados carregados na memria previamente, por software.

Tabela 1: Sada de dados da memria 8x8

Endereo LED7 LED6 LED5 LED4 LED3 LED2 LED1 LED0


000
0
1
1
0
0
0
0
0
001
0
1
1
0
0
0
0
1
010
0
1
1
0
0
0
1
0
011
0
1
1
0
0
0
1
1
100
0
1
1
0
0
1
0
0
101
0
1
1
0
0
1
0
1
110
0
1
1
0
0
1
1
0
111
0
1
1
0
0
1
1
1
.

Adicionalmente foi inserida uma entrada nomeada CE, do tipo IN STD_LOGIC,


que funciona como enable da memria, assim os dados s podem ser lidos quando
CE estiver no nvel lgico 1.

3.2.

Programa da memria 8x16 parametrizvel

Como os dados desta memria so compostos por dois bytes, para fim de
teste, aos dados inseridos na memria 8x8 anteriormente, foi adicionado um byte
mais significativo zerado, assim, por exemplo, onde se lia o dado 68H, agora se l
0068H. A sada foi alocada nos mesmos LEDs, mais 8 LEDs referente ao byte
adicional. No entanto estes LEDs no sero acionados, conforme os dados
carregados. Assim a tabela de sada da memria 8x16 idntica da memria 8x8,
cabendo somente a alterao do nmero de LEDs.

4. CONCLUSO
O projeto de memrias ROM utilizando FPGAs extremamente simples: por
meio de comandos simples, possvel simular memrias de capacidades variveis,
podendo contar com elementos parametrizveis que facilitam o projeto em termos
de alteraes.

5. REFERNCIAS BIBLIOGRFICAS

DE2 115 Altera, Manual do Usurio. Disponvel em:


<ftp://ftp.altera.com/up/pub/Altera_Material/13.0/Boards/DE2115/DE2_115_User_Manual.pdf>. Acesso em 04 de Nov. 2014

6. ANEXOS
6.1.

Programa da memria 8x8

Library ieee;
use IEEE.STD_LOGIC_1164.all;
use ieee.numeric_std.all;

ENTITY mem_rom IS

PORT( ce

: IN STD_LOGIC;
addr : IN STD_LOGIC_VECTOR (2 DOWNTO 0);
dado : OUT STD_LOGIC_VECTOR(7 DOWNTO 0)
);

END mem_rom;

ARCHITECTURE behave OF mem_rom IS

TYPE arranjo IS ARRAY (INTEGER RANGE 0 to 7) of STD_LOGIC_VECTOR(7 DOWNTO 0);

CONSTANT conteudo : arranjo :=


(x"61", x"62", x"63", x"64",
x"65", x"66", x"67", x"68");
-- endereo 0, 1, 2, 3,
-- endereo 4, 5, 6, 7.

Begin

-- Leitura do contedo armazenado:


Dado <= conteudo (to_integer(unsigned(addr))) when ce = '0' else(others => 'Z');

End behave;

6.2.

Programa da memria 8x16 parametrizavel

Library ieee;
use IEEE.STD_LOGIC_1164.all;
use ieee.numeric_std.all;

ENTITY mem_rom IS
GENERIC(p

: INTEGER := 16);

PORT( ce : IN STD_LOGIC;
addr: IN STD_LOGIC_VECTOR (2 DOWNTO 0);
dado: OUT STD_LOGIC_VECTOR(p-1 DOWNTO 0)
);

END mem_rom;

ARCHITECTURE behave OF mem_rom IS

TYPE arranjo IS ARRAY (INTEGER RANGE 0 to 7) of STD_LOGIC_VECTOR(p-1 DOWNTO 0);


CONSTANT conteudo : arranjo :=
(x"0061", x"0062", x"0063", x"0064",
x"0065", x"0066", x"0067", x"0068");
-- endereo 0, 1, 2, 3,
-- endereo 4, 5, 6, 7.

Begin

-- Leitura do contedo armazenado:


Dado <= conteudo (to_integer(unsigned(addr))) when ce = '0' else(others => 'Z');

End behave;

Das könnte Ihnen auch gefallen