Programowanie Układów Logicznych kod kursu: ETD623 Pamięć w układach programowalnych W6 4.4.28 mgr inż. Maciej Rudek opracował: dr inż. Daniel Kopiec
Plan wykładu Powtórka wiadomości 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. Przebiegi wyjściowe enkodera obrotowego 2. Multipleksowanie matrycy wyświetlaczy 7-segmentowych 3. Jak będzie wyglądać kod w VHDL w, który w wyniku syntezy pozwoli uzyskać element pamiętający wyzwalany zboczem. 4. Jak będzie wyglądać kod w VHDL u, który w wyniku syntezy pozwoli uzyskać zatrzask wyzwalany poziomem. 5. I inne
Ad. Enkoder obrotowy Sygnały wyjściowe z enkodera obrotowego
Ad. Enkoder obrotowy ¼ okresu / AB/K S / / / / S / S S / / AB/K gdzie: AB wyjścia enkodera K kierunek działania Stan początkowy automatu jest taki jak bieżące położenie pokrętła 5
Ad. 2 Wyświetlacz 7-seg. Multipleksowany - układ z PUL 6
Sterowanie katod poszczególnych segmentów Ad. 2 Wyświetlacz 7-seg. multipleksowany Cykl działania wyświetlacza ms 5 ms ¼ cyklu ¼ cyklu ¼ cyklu ¼ cyklu CYFRA CYFRA 2 CYFRA 3 CYFRA 4 7 Sterowanie anod 7 linii odpowiedzialnych za wyświetlenie cyfr
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. 8 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 9 Aby otrzymać zatrzask (przerzutnik sterowany poziomem), należy dodać do listy czułości sygnał wejściowy i wyrzucić testowanie narastającego zbocza zegara
Kwantowanie, próbkowanie Twierdzenie o próbkowaniu: częstotliwość próbkowania (f s ) powinna być dwukrotnie większa niż pasmo przenoszonych częstotliwości (f). Przykład: Sygnał akustyczny o częstotliwości do 2 khz, zgodnie z twierdzeniem Shannona- Kotielnikowa powinien być próbkowany z częstotliwością co najmniej 4 khz. W praktyce częstotliwość próbkowania jest równa 44 khz. Jeśli w sygnale pojawi się częstotliwość 46 khz to po próbkowaniu z fs=44 khz w widmie znajdziemy prążek 2 khz (tzw. alias)-czyli dźwięk słyszalny. W takiej sytuacji konieczne jest zastosowanie tzw. filtrów antyaliasingowych (dolnoprzepustowych).
Rozdzielczość w bitach Dobór przetwornika Liczba bitów N Liczba poziomów kwantyzacji Kwant dla napięcie 5V 8 256 9,5 mv 24 4,8 mv 2 496,2 mv 6 65536 76,3 µv Szybkość próbkowania Parametry wejściowe: - rozdzielczość, - rodzaj kodu - poziomy logiczne, - format danych A Glossary of Analog-to-Digital Specifications and Performance Characteristics http://www.ti.com/lit/an/sbaa47b/sbaa47b.pdf
2 DAC LTC2624 Quad DAC
DAC LTC2624 Quad DAC LTC2624: - ilość bitów N=2, tak więc 2 2 = 496 - załóżmy REFx = 3,3V, REFLO = V (GND) U OUT = k 2N REFx k = U OUT REFx 2N 3 http://cds.linear.com/docs/en/datasheet/264fd.pdf
4 ADC LTC47A-
ADC LTC47A- ilość bitów N=4, tak więc 2 4 = 6384 poziomów kwantowania, zakres przetwarzanych napięć ±,25 V (2,5 V), rozdzielczość przetwarzania: R = U IN 2 N 2, 5 V = 6384 = 53 μv Zakres przetwarzania w Spartan 3E Starter Board: k = GAIN U IN, 65V, 25V 892 wzmocnienie układu LTC692 5
Pamięci
Pamięć podział Pamięć rozproszona distributed Dedykowane bloki Block RAM Różnica w sposobie dostępu do pamięci, zapis/odczyt
FPGA od środka cd
Jak działa pamięć 5 4 3 2 Dane odczytane 4 Linie adresowe
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 2
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. 2 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 ) 22 * IEC - International Electrotechnical Commission's standard - Międzynarodowa Komisja Elektrotechniczna
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 23
Pamięć rozproszona - distributed Implementacja w CLB (Slice, LUT) Wady: Ograniczenie uniwersalnych zasobów logicznych 24
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 25
LUT tablica wielu zmiennych - pamięć rozproszona (distributed RAM) zmienne funkcji 6 LUT tabl. wartości OUT 26 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 28
ROM przykład implementacji w VHDL - pamięć rozproszona (distributed ROM) ROM 64 x 2S 29
ROM przykład implementacji w VHDL - pamięć rozproszona (distributed ROM) W wyniku syntezy utworzona została pamięć ROM 64 x 2 bitów 3
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 3
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
RAM RAM6XD
34 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. 36 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 37
38 RAM przykład implementacji w VHDL - BRAM-based
Pamięć Block RAM - organizacja - BRAM-based, Port Aspect Ratios 39 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 4 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
4 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 42
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 43
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 44
Core Generator - ROM, RAM i wiele innych
46 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 5