Programowanie Układów Logicznych kod kursu: ETD6203 Komunikacja z układami cyfrowymi W5 30.03.2016 dr inż. Daniel Kopiec
Plan wykładu 1 2 3 4 5 6 Standard komunikacji RS232 Enkoder obrotowy Wyświetlacz 7-segmentowy Przetworniki ADC, DAC wiadomości ogólne DAC LTC2624 ADC LTC1407A-1 2
Peryferia port szeregowy RS232 Pin Sygnał Nazwa Kierunek 1 DCD Data Carrier Detect In 2 RXD Receive Data In 3 TXD Transmit Data Out 4 DTR Data Terminal Ready Out 5 GND Ground - 6 DSR Data Set Ready In 7 RTS Request to Send Out 8 CTS Clear to Send In 9 RI Ring Indicator In 3 LPC2368: UART0/2/3 UART1 możliwość budowy modemu
RS232 ramka danych UART Universal Asynchronous Receiver Transmitter 3,3 V 0 1 2 3 4 5 6 7 P +8 V stan IDLE bit startu 0 8 bitów danych bit parzystości -8 V 4 bity stopu: 1, 2 lub 1.5
Peryferia port szeregowy RS232 Transmisja synchroniczna Transmisja asynchroniczna 5
Peryferia port szeregowy RS232 - szybkość transmisji Szybkość transmisji (Baud Rate) podawana zazwyczaj jako: np.9600 bodów czyli 9600 bitów na sekundę czas transmisji 1-bitu -> 1/9600 -> 104,16 µs 0 1 2 3 4 5 6 7 P STOP 12 x 104,16 µs = 1,25 ms Inne typowe szybkości transmisji danych: 110, 150, 300, 1200, 2400, 4800, 9600, 19200, 38400, 57600, 115200, 230400, 460800, 921600. 6
Dlaczego stan X..? entity LED_blink is port ( CLK_50MHz : in std_logic; LED : out std_logic; nreset : in std_logic); end LED_blink; architecture Behavioral of LED_blink is signal counter: std_logic_vector (2 downto 0); signal CLK_1Hz: std_logic := '0'; begin prescaler: process (nreset, CLK_50MHz) begin if (nreset = '0') then counter <=(others => '0'); LED <= '0 ; elsif rising_edge(clk_50mhz) then if counter < "111" then counter <= counter + 1; else CLK_1Hz <= not CLK_1Hz; counter <=(others => '0'); end if; end if; end process prescaler; LED <= CLK_1Hz; end Behavioral; stim_proc: process begin nreset <='1'; LED <= '1'; wait for 100 ns; assert false severity failure; end process; Ten sygnał otrzymujemy jako rezultat działania kodu z pliku *.vhd
Enkoder obrotowy Sygnały wyjściowe z enkodera obrotowego
Enkoder obrotowy zasada działania sygnał kwadraturowy pomiędzy wyjściami A, B, alternatywa dla klasycznych potencjometrów, klawiatur itp. sygnał na wyjściach A oraz B a dokładniej faza i częstotliwość sygnału niosą informację o: kierunku obrotu osi enkodera oraz szybkości jego obracania 9
Enkoder obrotowy drgania styków Oscylogram przedstawiający drgania styków mechanicznych 1 http://www.onsemi.com/pub_link/collateral/mc14490-d.pdf
Usuwanie drgań mechanicznych Jednym z możliwych sposobów usuwanie drgań styków jest zapamiętanie stanu wejścia w kilku kolejnych cyklach zegara 11 Wyjście out zmienia się tylko wtedy gdy wejście ma tą samą wartość przez N kolejnych zboczy narastających zegara, Okres zegara musi być jednak dłuższy od czasu drgania styków mechanicznych, zegar 50 MHz (T=20 ns), drgania mechaniczne ~1ms!!!
Enkoder obrotowy pełen okres 12 źródło: EP 11/2002
Enkoder obrotowy ¼ okresu 00/1 AB/K S00 01/0 10/1 00/0 01/1 S01 11/0 S11 S10 10/0 11/1 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 13
Wyświetlacz 7-segmentowy wspólny minus stan aktywny: 1 wspólny plus stan aktywny: 0 14
15 Wyświetlacz 7-seg. multipleksowany
16 Wyświetlacz 7-seg. multipleksowany - układ z PUL
Sterowanie katod poszczególnych segmentów Wyświetlacz 7-seg. multipleksowany Cykl działania wyświetlacza 1 ms 50 ms ¼ cyklu ¼ cyklu ¼ cyklu ¼ cyklu CYFRA 1 CYFRA 2 CYFRA 3 CYFRA 4 17 Sterowanie anod 7 linii odpowiedzialnych za wyświetlenie cyfr
18 Wyświetlacz 7-seg. multipleksowany
Wyświetlacz 7-seg. multipleksowany btn(3) btn(2) btn(1) btn(0) s(1) s(0) 0 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 X 0 0 1 1 X 0 1 0 1 s(1) = btn(2) or btn(3); s(0) = btn(1) or btn(3); 19
Przetworniki AC, CA Rozróżniamy 2 typy przetworników: analogowo-cyfrowe AC (ADC), cyfrowo-analogowe CA (DAC). 20 http://www.analog.com/library/analogdialogue/archives/3906/data_conversion_handbook.html
21 Kwantowanie, próbkowanie
22 Przetwornik AC typ wejścia
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 20 khz, zgodnie z twierdzeniem Shannona- Kotielnikowa powinien być próbkowany z częstotliwością co najmniej 40 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). 23
Rozdzielczość w bitach Dobór przetwornika Liczba bitów N Liczba poziomów kwantyzacji Kwant dla napięcie 5V 8 256 19,5 mv 10 1024 4,8 mv 12 4096 1,2 mv 16 65536 76,3 µv Szybkość próbkowania Parametry wejściowe: - rozdzielczość, - rodzaj kodu - poziomy logiczne, - format danych 24 A Glossary of Analog-to-Digital Specifications and Performance Characteristics http://www.ti.com/lit/an/sbaa147b/sbaa147b.pdf
Rozdzielczość w bitach Dobór przetwornika Szybkość próbkowania 25
26 Zastosowania
Spartan 3E Starter Board DAC LTC2624 MOSI (T4) MISO (N10) SCK (U16) CS (N8) CLR (P8) ADC LTC1407A-1 SCK (U16) MISO (N10) CONV (P11) 27 Dual Programmable Gain Amplifiers with Serial Digital Interface LTC6912 MOSI (T4) CS (N7) SCK (U16) SHDN (P7) DOUT (E18)
28 DAC LTC2624 Quad DAC
DAC LTC2624 Quad DAC 29 http://cds.linear.com/docs/en/datasheet/2604fd.pdf
DAC LTC2624 Quad DAC 30 http://cds.linear.com/docs/en/datasheet/2604fd.pdf
31 DAC LTC2624 Quad DAC
DAC LTC2624 Quad DAC LTC2624: - ilość bitów N=12, tak więc 2 12 = 4096 - załóżmy REFx = 3,3V, REFLO = 0V (GND) U OUT = k 2N REFx k = U OUT REFx 2N 32 http://cds.linear.com/docs/en/datasheet/2604fd.pdf
DAC LTC2624 ramka danych k = U OUT REFx 2N 33
34
Sygnały pomocnicze w architekturze: Złożenie ramki danych 35
36 DAC LTC2624 Quad DAC - na pokładzie Spartan 3E Starter Board
DAC LTC2624 Quad DAC - maszyna stanów rst= 1 IDLE CHECK index < 32 READY SEND 37
38 ADC LTC1407A-1
39 ADC LTC1407A-1
40 ADC LTC1407A-1
ADC LTC1407A-1 Wzmacniacz wejściowy LTC6912-1, kondycjonowanie sygnału Przetwornik ADC LTC 1407A-1 41
ADC LTC1407A-1 ilość bitów N=14, tak więc 2 14 = 16384 poziomów kwantowania, zakres przetwarzanych napięć ± 1,25 V (2,5 V), rozdzielczość przetwarzania: R = U IN 2 N 2, 5 V = 16384 = 153 μv Zakres przetwarzania w Spartan 3E Starter Board: k = GAIN U IN 1, 65V 1, 25V 8192 wzmocnienie układu LTC6912 42
43 ADC LTC1407A-1
Przykładowe pytania 1. Zasada działania enkodera obrotowego 2. Metody eliminacji drgań styków 3. Na czym polega multipleksowanie wyświetlacze segmentowego 4. Przetworniki AC, CA szybkość, rozdzielczość 5. Przykłady zastosowań przetworników AC, CA 6. Interfejs SPI przykład maszyny stanów 7. W jaki sposób określane jest słowo cyfrowe przetworników AC, CA 44