Programowanie Układów Logicznych kod kursu: ETD623 Pamięć w układach programowalnych W6 6.4.26 dr inż. Daniel Kopiec
Plan wykładu Pamięć w układach programowalnych Zasada działania, podział pamięci Miara pojemności pamięci Pamięć w układach SPARTAN Synteza a pamięć Core Generator
Z poprzedniego wykładu. Narysuj przebiegi wyjściowe enkodera obrotowego 2. Na czym polega multipleksowanie matrycy wyświetlaczy 7- segmentowych 3. Zapisz w VHDL kod, który w wyniku syntezy pozwoli uzyskać element pamiętający wyzwalany zboczem. 4. Zapisz w VHDL kod, który w wyniku syntezy pozwoli uzyskać zatrzask wyzwalany poziomem.
Ad.3 Zapisz w VHDL kod, który w wyniku syntezy pozwoli uzyskać element pamiętający wyzwalany zboczem. proces (clk) begin if (clk event and clk = ) then q < = d; end if; end process Aby w wyniku syntezy otrzymać przerzutnik (wyzwalany zboczem), na liście czułości procesu należy umieścić sygnał zegarowy, a w warunku if testować, czy nastąpiło zbocze narastające. 4 Aby powstał element pamiętający (przerzutnik D), należy wykorzystać instrukcję if, ale bez części else. W przypadku kiedy nie jest spełniony warunek występujący po if układ ma pamiętać poprzednią wartość q.
Ad.4 Zapisz w VHDL kod, który w wyniku syntezy pozwoli uzyskać zatrzask wyzwalany poziomem. proces (clk, d) begin if (clk = ) then q < = d; end if; end process 5 Aby otrzymać zatrzask (przerzutnik sterowany poziomem), należy dodać do listy czułości sygnał wejściowy i wyrzucić testowanie narastającego zbocza zegara
Pamięć podział Pamięć rozproszona distributed Dedykowane bloki Block RAM Różnica w sposobie dostępu do pamięci, zapis/odczyt 6
7 FPGA od środka cd
Jak działa pamięć 5 4 3 2 Dane odczytane 4 Linie adresowe 8
CLB a pamięć Skąd te liczby. pamiętamy? LUT: 8 ROM: 8LUT * 6 bitów = 28 bitów Single-RAM: 4LUT * 6 bitów = 64 bity Dual-RAM: 2LUT * 6 bitów = 32 bity 9
Pamięć podział Układy SPARTAN posiadają wewnętrzną, konfigurowalną pamięć SRAM, można ją zastosować jako: jedno lub dwuportową pamięć RAM, jedno lub dwuportową pamięć ROM, CAM (Content-Adressable Memory) pamięć skojarzeniową, kolejkę FIFO. Spartan 3E (XC3S5E) zawiera w swojej strukturze 2 bloków pamięci RAM po 8 Kb każda, co daje w sumie 36 Kb dostępnej pamięci.
Pamięć jednostki pojemności Podstawową jednostką pamięci jest: bajt (ang. byte) [B] bajt, inaczej oktet zawiera 8 bitów [b] Do oznaczenia większych ilości bajtów stosuje się przedrostki dziesiętne układu SI, będące wielokrotnościami liczby. [kb] kilobit 3 czyli bity [Mb] magabit 6 czyli 2 bitów [Gb] gigabit 9 czyli 3 bitów W informatyce oraz elektronice do oznaczenia większych ilości bajtów stosuje się przedrostki binarne wg. standardu *IEC 627-2, będące potęgami liczby 2 [Kib] kibibit 2 czyli 24 bity (24 ) [Mib] mebibit 2 2 czyli 48576 bitów (24 2 ) [Gib] gibibit 2 3 czyli 7374824 bitów (24 3 ) * IEC - International Electrotechnical Commission's standard
A po teorii praktyka a więc zaczynamy kb = Kib = 3 b = b 2 b = 24 b kb = KiB = 3 B = B = 8 b 2 B = 24 B = 892 b 2
Pamięć rozproszona - distributed Implementacja w CLB (Slice, LUT) Wady: Ograniczenie uniwersalnych zasobów logicznych 3
Pamięć organizacja w LUT - pamięć rozproszona (distributed RAM) Tablice LUT w blokach CLB można skonfigurować jako pamięć: ROM, 28 bitów, typ: single, dual port SRAM, 64 bitów, DualPortRAM, 2 6 bit. RAM 6 S LUT Ilość komórek organizacja RAM6 S D WE LUT = WCLK A A OUT A2 A3 4
LUT tablica wielu zmiennych - pamięć rozproszona (distributed RAM) zmienne funkcji 6 LUT tabl. wartości OUT 5 6 LUT Za pomocą 2 LUT: 32 x single-port RAM 6 x 2 single-port RAM 6 x dual-port RAM wartości wyjściowe funkcji
Top Level: Distributed ROM Top Level: Distributed ROM
Pamięć organizacja w LUT - pamięć rozproszona (distributed RAM) Kaskadowe łączenie LUT umożliwia rozszerzanie dostępnej przestrzeni: np. za pomocą 2-LUT można stworzyć: 32 x single-port RAM, 6 x 2 single-port RAM, 6 x dual-port RAM. RAM6 D LUT LUT = RAM32 S D WE WCLK A A A2 A3 A4 O lub RAM6 2S D D WE WCLK A A A2 A3 O O lub D WE WCLK A A A2 A3 DPRA DPRA DPRA2 SPO DPO DPRA3 7
ROM przykład implementacji w VHDL - pamięć rozproszona (distributed ROM) ROM 64 x 2S 8
ROM przykład implementacji w VHDL - pamięć rozproszona (distributed ROM) W wyniku syntezy utworzona została pamięć ROM 64 x 2 bitów 9
Generator sinusa z ROM - próbki w ROM prawie jak DDS B 8 6 4 2 Wartoś -2-4 -6-8 5 5 2 25 3 Numer próbki w pamięci 2
Single-Port and Dual-Port Distributed RAM zapis danej synchronizowany zegarem wymagany jeden cykl zegara, asynchroniczny odczyt - należy zapewnić odpowiedni czas na odczyt danej, dla pamięci typu Dual-Port, zapis i odczyt są niezależne od siebie
23 Pamięć organizacja w obrębie CLB - pamięć rozproszona (distributed RAM)
Bloki pamięci RAM Pamięci RAM (Random Access Memory) umożliwiają zarówno odczyt jak i zapis informacji w trakcie działania układu, Ilość cykli zapisu i odczytu jest praktycznie nieograniczona, Nadają się do przechowywania wszelkich informacji tymczasowych, podlegających ciągłym modyfikacjom, np. wyników obliczeń cząstkowych, Cechą charakterystyczną pamięci RAM jest ulotność zgromadzonych informacji po odłączeniu zasilania wbudowane matryce pamięci Block RAM lub EAB (Embedded Array Block), ich użycie zmniejsza zapotrzebowanie na komórki logiczne (LUT), niewykorzystane bloki EAB mogą zostać użyte jako pamięć ROM, realizująca złożone układy kombinacyjne
Pamięć Block RAM - BRAM-based Dedykowane bloki pamięci RAM, Możliwość tworzenia bloków o różnej pojemności, Krótkie czasy dostępu. 25 Spartan 3E (XC3S5E) zawiera w swojej strukturze 2 bloków pamięci RAM po 8 Kb każda, co daje w sumie 36 Kb dostępnej pamięci.
Pamięć Block RAM - organizacja - BRAM-based rozmiar: 6 Kib (2 KiB kibibyte ) organizacja (data width) liczba komórek pamięci k=24 26
27 RAM przykład implementacji w VHDL - BRAM-based
Pamięć Block RAM - organizacja - BRAM-based, Port Aspect Ratios 28 linie danych bity parzystości szerokość słowa oznaczenie liczba komórek linie danych organizacja linie parzystości Spartan 3E (XC3S5E) zawiera w swojej strukturze 2 bloków pamięci RAM po 8 Kb każda, co daje w sumie 36 Kb dostępnej pamięci. 8 Kb pod warunkiem korzystania z bitów parzystości
Dual Port Block RAM operacja transportu z portu do portu zapis odczyt zapis odczyt Port A Spartan-3 Dual-Port Block RAM Port B Block RAM 29 Operacja transferu standardowego dostępu zapis/odczyt Pamięć dwuportowa jednoczesny zapis i odczyt spod/do różnych adresów. Użytkownik decyduje o szerokości i głębokości pamięci Dwa niezależne interfejsy do tej samej pamięci
3 Pamięć Block RAM - organizacja - BRAM-based, konfiguracja
Dual Port Block RAM Możliwość konfiguracji szerokości magistral każdego z portów, Łatwa konwersja szerokości danych bez dodatkowej logiki 3
Content-addressable memory - pamięć skojarzeniowa 5 4 3 2 Dane wejściowe 3 Adres komórki Podajemy wartość danej, a pamięć CAM zwraca adres (lub adresy) pod którymi znajduje się podane dana, W konsekwencji należy przeszukać całą pamięć aby otrzymać adres pod, którym znajduje się podana dana 32
Pamięć w układach SPARTAN - dokumentacja XAPP463 Using Block RAM in Spartan-3 Generation FPGAs xilinx: XAPP463 XAPP464 Using Look-Up Tables as Distributed RAM in Spartan-3 Generation FPGAs xilinx : XAPP464 XST User Guide, Section: RAMs and ROMs HDL Coding Techniques xilinx : XST User Guide (PDF) ISE In-Depth Tutorial, Section: Creating a CORE Generator Software Module xilinx : ISE In-Depth Tutorial XAPP5 Parameterizable Content-Addressable Memory xilinx : XAPP5 33
Core Generator - ROM, RAM i wiele innych
35 Core Generator w praktyce - ROM, RAM
Parametry pamięci ilość komórek szerokość słowa (liczba bitów) typ pamięci symbol, wyprowadzenia układu
Parametry pamięci Synchronizacja danych przez CLK Synchronizacja danych przez CLK
Parametry pamięci wsad wartość domyślna symbol, wyprowadzenia układu
Przygotowanie pliku wsadowego
Przykładowe pytania. Przerzutnik, zatrzask, element pamiętający struktura 2. Rodzaje pamięci w układach programowalnych (SPARTAN 3) 3. 4 wejściowy LUT ile to pamięci ROM, RAM 4. KiB, Kib, KB, Kb 5. Które elementy układu odpowiadają za pamięć rozproszoną 6. Znaczenie Block RAM 7. Pamięć jedno i dwu portowa, zasada działania 8. Pamięć skojarzeniowa zasada działania 9. Core Generator zastosowania 4