Ćwiczenie laboratoryjne 7

Temat: projektowanie układu pamięci RAM

Celem ćwiczenia jest zaprojektowanie i kompilacja układu pamięci RAM.

Projektowana pamięć RAM posiadać będzie 8-bitową szynę adresową , 8-bitową szynę danych-dwukierunkową. Oprócz wejść adresowych i wejść danych układ pamięci posiadać powinien trzy wejścia jednobitowe :

- osb – sygnał sterujący wyboru układu pamięci RAM

osb = 1 – wyjścia bloku pamięci RAM są w stanie wysokiej impedancji

- oeb – sygnał sterujący , oeb=0 informacja z bloku pamięci RAM pojawia się na na magistrali danych

- web – sygnał strofujący zapisu danych do bloku pamięci RAM , aktywny gdy web = 0

Osiem bitów pozwala na zaadresowanie 256 komórek pamięci Wprowadzone dane ustawiamy przełącznikami SW(0)-SW(7) , adres ustawiamy przełącznikami SW(8)-SW(15) Przyciskami wprowadzamy sygnały csb , oeb , web.

Wprowadzany adres, pokazujemy szesnastkowo NA DWÓCH WYŚWIETLACZACH 7-SEGMENTOWYCH. Na kolejnych dwóch wyświetlaczach pokazujemy wprowadzane dane (szesnastkowo)

Zrealizowane ćwiczenia wymaga :

- zaprojektowania transkoderów do wyświetlania szesnastkowego

- zaprojektowanie komórki jednobajtowej (8bitowa)

- sprawdzenie poprawności działania przy pomocy symulatora

- przydzielenie pinów wejściowych i wyjściowych

- zaprogramowanie układu

- prezentacja działającego układu Przykład

Pamięć o ośmiobitowej szynie danych i ośmiobitowej szynie zegarowej p

dane[7..0]

INPUT

data[7..0]

q[7..0]

OUTPUT

wy [7..0]

VCC

zo

INPUT

wren

s

VCC

rd

a[7..0]

INPUT

address[7..0]

its

o

VCC

8 b

w562

zegar

INPUT

clock

VCC

Block ty pe: AUTO

inst1

Rys. schemat funkcjonalny pamięci LIBRARY ieee;

USE ieee.std_logic_1164.ALL;

PACKAGE ram_constants IS

constant DATA_WIDTH : INTEGER := 8; constant ADDR_WIDTH : INTEGER := 8; END ram_constants;

LIBRARY ieee;

USE ieee.std_logic_1164.ALL;

LIBRARY lpm;

USE lpm.lpm_components.ALL;

LIBRARY work;

USE work.ram_constants.ALL;

ENTITY ram256x8 IS

-- deklaracja portów pamięci

PORT ( data: IN STD_LOGIC_VECTOR (DATA_WIDTH-1 DOWNTO 0); address: IN STD_LOGIC_VECTOR (ADDR_WIDTH-1 DOWNTO 0); we, inclock, outclock: IN STD_LOGIC; q: OUT STD_LOGIC_VECTOR (DATA_WIDTH - 1 DOWNTO 0)); END ram256x8;

ARCHITECTURE example OF ram256x8 IS

BEGIN

inst_1: lpm_ram_dq

GENERIC MAP (lpm_widthad => ADDR_WIDTH, lpm_width => DATA_WIDTH)

PORT MAP (data => data, address => address, we => we, inclock => inclock, outclock => outclock, q => q); END example;