Politechnika Białostocka Wydział Elektryczny Katedra Automatyki i Elektroniki ĆWICZENIE Nr 10 (3h) Implementacja interfejsu SPI w strukturze programowalnej Instrukcja pomocnicza do laboratorium z przedmiotu Programowalne Struktury Logiczne studiów stacjonarnych I stopnia kierunku: Elektronika i Telekomunikacja specjalność: Aparatura elektroniczna Kod przedmiotu: TS1C420301 Instrukcję opracował: dr inż. Marian Gilewski Białystok 2014
1. Cel ćwiczenia Celem ćwiczenia jest implementacja trójprzewodowego interfejsu SPI do obsługi potencjometru cyfrowego. 2. Część pierwsza podstawy funkcjonowania magistrali SPI SPI (Serial Peripheral Interface) jest to przemysłowym standardem szeregowej synchronicznej transmisji systemów wbudowanych. Układ z magistralą SPI może pracować jako master i slave. Obecnie magistrala używana do obsługi min: układów zegarowych czasu rzeczywistego, szeregowych pamięci EEPROM, przetworników AC i CA, sterowników LCD i wielokanałowych sterowników LED. Uzyskiwane szybkości transmisji wynoszą powyżej 10 Mbps. Do transmisji w SPI używane są trzy sygnały: SCK (CLK, SCLK) sygnał zegarowy, SDI (DI,SI,MISO) szeregowe dane wejściowe, SDO (DO,SO,MOSI) szeregowe dane wyjściowe, CS sygnał zezwolenia układu. Transmisja danych odbywa się w takt sygnału SCK - jeden bit informacji przypada na okres SCK. Transmisja danych może następować w trybie full duplex, czyli może odbywać się w obu kierunkach jednocześnie liniami SDI i SDO. Transmisja jest typu master - slave, z jednym sterującym układem master. Sygnały SDI, SDO i SCK są typowymi wejściami/wyjściami cyfrowymi. SDO układu slave najczęściej jest bramką trójstanową. Długość słów transmitowanych może być większa niż 8 bitów. Układ slave nie potrzebuje unikalnego adresu, jest wybierany poprzez sygnał chip select (CS). W systemie nie ma potwierdzania poprawności transmisji (master nie wie czy slave odbiera poprawnie informacje). Urządzenie slave korzysta z sygnału CLK master. Większość nowych na rynku układów cyfrowych wyposażonych jest w sprzętowy interfejs SPI oparty na rejestrze przesuwnym, który może być skonfigurowany jako master lub slave. Sygnał MOSI (Master Output Slave Input), gdy układ pracuje jako master pełni role wyjścia, gdy skonfigurowany jest jako slave jest wejściem. Sygnał MISO (Master Input Slave Output) pełni odwrotne role.
Przykładem użycia interfejsu SPI może być obsługa 8-kanałowego przetwornika AC o rozdzielczości 12-bitów. Żeby zainicjować przetwarzanie określonego kanału pomiarowego oraz odczytać wynik pomiaru sterownik musi wysłać 3 bajty danych w formacie jak poniżej. Bit SGL/DIFF określa czy pomiar będzie różnicowy czy też odniesiony do masy analogowej, a bity D2, D1, D0 wyznaczają, który kanał analogowy został wybrany do pomiaru. Drugi i trzeci bajt przesłany z przetwornika zawiera informację o wyniku przetwarzania. Sygnał SCL interfejsu jest wykorzystywany nie tylko do komunikacji, ale również do taktowania układu przetwarzania. 3. Część druga opis obsługiwanego układu W niniejszym ćwiczeniu obsługiwanym układem z magistralą SPI będzie potencjometr cyfrowy 10kΩ typu MCP41010 Microchip. Układ może być zasilany napięciem od 3,3V do 7V przy częstotliwości sygnału zegarowego do 10 MHz. Na poniższym rysunku przedstawiono zależności czasowe sygnałów w układzie. Wartości czasowe sygnałów nie są krytyczne, wystarczy przyjąć iż zmiana sygnału SI może następować w połowie czasu trwania poziomu wysokiego sygnału zegarowego, zbocze opadające sygnału CS inicjujące transmisję może wystąpić również w połowie czasu trwania poziomu wysokiego sygnału zegarowego zaś zbocze narastające CS kończy transmisję. Szczegółowy opis parametrów potencjometru można znaleźć na stronie producenta www.microchip.com. Stronę analogową potencjometru należy polaryzować w sposób przedstawiony na rysunku niżej:
Znaczenie poszczególnych wyprowadzeń potencjometru przedstawia poniższa tabela : Obsługiwany potencjometr ustawia proporcjonalnie jedną z 256 wartości rezystancji w zależności od zawartości wysłanego bajtu danych (Data Byte), przy czym wartości "00000000" odpowiada rezystancja wyjściowa PW0 równa 50 Ω zaś wartości "11111111" rezystancja 10 kω. Obsługa potencjometr sprowadza się do: ustawienia sygnału CS w stan niski, wysłania 1 i 2 taktu zegarowego, wysłania bitów "01" w 3 i 4 takcie zagarowym (COMMAND Byte), wysłania 5 i 6 taktu zegarowego, wysłania bitów "01" w 7 i 8 takcie zegarowym (Channel Select Bits), wysłania bajtu wartości rezystancji (Data Byte) w 9 16 taktach zegarowych oraz zakończenie transmisji w wyniku podniesienia sygnału CS do poziomu wysokiego.
4. Część trzecia zadanie projektowe Realizacja ćwiczenia odbywa się w następujących krokach: 1. Należy przygotować aplikację sterującą potencjometrem w strukturze FPGA, wprowadzając sygnały sterujące na złącze GPIO modułu DE2. 2. Układ należy skompilować i przebadać symulacyjnie. 3. Przed podłączeniem potencjometru należy oscyloskopem zbadać sygnały na odpowiednich pinach GPIO. 4. Układ scalony należy połączyć ze złączem GPIO DE2 w sposób następujący: - masę układu V SS (Pin 4) należy połączyć z masą GPIO, - wejścia sygnałów sterujących CS, SCK i SI z odpowiednimi portami IO GPIO, - zasilanie układu V DD z wyprowadzeniem VCC33 GPIO, - PA0 potencjometru z VCC33 GPIO, - PB0 potencjometru z masą GPIO. 5. Pomiędzy piny PW0 i PB0 potencjometru należy włączyć woltomierz. 6. Należy zdjąć charakterystykę napięcia wyjściowego potencjometru w funkcji wartości nastaw Data Byte. Literatura: 1. Barski M., Jędruch W.: Układy cyfrowe, podstawy projektowania i opisu w języku VHDL, Wydawnictwo Politechniki Gdańskiej, 2007. 2. IEEE-SA Standars Board: IEEE Standard VHDL Language reference manual, ieeexplore.ieee.org/iel5/7180/19335/00893288.pdf, USA, 2000. 3. Łuba T.: Synteza układów cyfrowych, WKiŁ, Warszawa, 2004. 4. Mano M.M., Kime Ch.R.: Podstawy projektowania układów logicznych i komputerów, NT, Warszawa 2007. 5. Skahill K.: Język VHDL Projektowanie programowalnych układów logicznych, WNT, Warszawa, 2001.