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;
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;