(przykład uogólniony)

Podobne dokumenty
Politechnika Białostocka Wydział Elektryczny Katedra Automatyki i Elektroniki

Programowalne układy logiczne kod kursu: ETD Układy sekwencyjne W

Zygmunt Kubiak Instytut Informatyki Politechnika Poznańska

MAGISTRALE MIKROKONTROLERÓW (BSS) Zygmunt Kubiak Instytut Informatyki Politechnika Poznańska

Wbudowane układy komunikacyjne cz. 1 Wykład 10

MIKROKONTROLERY - MAGISTRALE SZEREGOWE

Układy cyfrowe w Verilog HDL. Elementy języka z przykładami. wersja: cz.3

Projektowanie Scalonych Systemów Wbudowanych VERILOG

Interfejsy szeregowe TEO 2009/2010

Modelowanie liczników w języku Verilog i ich implementacja w strukturze FPGA

Wykład 4. Języki Opisu Sprzętu

Konwerter 1 Wire > SPI opisany P R Ow JVerilogu

KOMPUTEROWE SYSTEMY POMIAROWE

Sterowanie wyświetlacza LCD typu HD44780

Elektroniczny sejf hotelowy

Mikroprocesory i mikrosterowniki Wydział Elektroniki Mikrosystemów i Fotoniki Politechniki Wrocławskiej Ćwiczenie nr 4

Analizowanie protokołów szeregowych oscyloskopami Rohde&Schwarz (2) SPI, I 2 C

Komunikacja w mikrokontrolerach Laboratorium

Programowany układ czasowy

Programowanie Układów Logicznych kod kursu: ETD6203. Komunikacja z układami cyfrowymi W dr inż. Daniel Kopiec

Uniwersalny asynchroniczny. UART Universal Asynchronous Receier- Transmiter

Podstawowe elementy układów cyfrowych układy sekwencyjne Rafał Walkowiak Wersja

Proste układy sekwencyjne

Język HDL - VERILOG. (Syntetyzowalna warstwa języka) Hardware Description Language Krzysztof Jasiński PRUS PRUS

Plan wykładu. Architektura systemów komputerowych. Cezary Bolek

Podstawy systemów mikroprocesorowych. Interfejs USART. Interfejsy szeregowe w mikrokontrolerach AVR

Mikroprocesory i Mikrosterowniki Laboratorium

Sumatory H D L. dr inŝ. Paweł Tomaszewicz Instytut Telekomunikacji Politechnika Warszawska

Zaliczenie Termin zaliczenia: Sala IE 415 Termin poprawkowy: > (informacja na stronie:

Pierwsze kroki z FPGA (9)

Pierwsze kroki z FPGA (9)

Projektowanie automatów z użyciem VHDL

Marek Wnuk. Interfejs SPI. materiały pomocnicze 2002

Programowany układ czasowy APSC

Układy kryptograficzne z uŝyciem rejestrów LFSR

Temat: Projektowanie i badanie liczników synchronicznych i asynchronicznych. Wstęp:

Laboratorium przedmiotu Technika Cyfrowa

MIKROKONTROLERY - MAGISTRALE SZEREGOWE

Aby w pełni przetestować układ o trzech wejściach IN_0, IN_1 i IN_2 chcemy wygenerować wszystkie możliwe kombinacje sygnałów wejściowych.

Współpraca procesora ColdFire z urządzeniami peryferyjnymi

Projektowanie i badanie liczników synchronicznych i asynchronicznych

WFiIS CEL ĆWICZENIA WSTĘP TEORETYCZNY

Linia SDA służy do dwukierunkowego. przesyłania danych zawsze inicjuje master. Slave nie może zainicjować

Synteza logiczna APSC

Laboratorium Asemblerów, WZEW, AGH WFiIS Tester NMOS ów

Charakterystyka mikrokontrolerów. Przygotowali: Łukasz Glapiński, Mateusz Kocur, Adam Kokot,

Charakterystyka mikrokontrolerów

Procesory osadzone ETD 7211 W

Układy sekwencyjne przerzutniki 2/18. Przerzutnikiem nazywamy elementarny układ sekwencyjny, wyposaŝony w n wejść informacyjnych (x 1.

WYKŁAD 5. Zestaw DSP60EX. Zestaw DSP60EX

16. Szeregowy interfejs SPI

Podstawowe moduły układów cyfrowych układy sekwencyjne cz.2 Projektowanie automatów. Rafał Walkowiak Wersja /2015

Kurs Verilog cz.1 wstęp

LABORATORIUM TECHNIKA CYFROWA. Pamięci. Rev.1.35

Magistrala SPI. Linie MOSI i MISO sąwspólne dla wszystkich urządzeńna magistrali, linia SS jest prowadzona do każdego Slave oddzielnie.

Laboratorium Podstaw Techniki Cyfrowej

Programowalne układy logiczne

Implementacja algorytmu szyfrującego

Magistrala LIN

Wykład 10. Komunikacja

Magistrala I 2 C. Podstawy systemów mikroprocesorowych. Wykład nr 5 Interfejsy szeregowe c.d.

Liczniki z zastosowaniem

LABORATORIUM TECHNIKA CYFROWA LICZNIKI I REJESTRY. Rev.1.1

Podstawy elektroniki cyfrowej dla Inżynierii Nanostruktur. Piotr Fita

Współpraca procesora z urządzeniami peryferyjnymi

TECHNIKA MIKROPROCESOROWA

Układy czasowo-licznikowe w systemach mikroprocesorowych

Sprzężenie mikrokontrolera (nie tylko X51) ze światem zewnętrznym lokalne interfejsy szeregowe

Przerzutnik ma pewną liczbę wejść i z reguły dwa wyjścia.

Wykład 3 Technologie na urządzenia mobilne. Mgr inż. Łukasz Kirchner lukasz.kirchner@cs.put.poznan.pl

Układy sekwencyjne - wiadomości podstawowe - wykład 4

Systemy cyfrowe z podstawami elektroniki i miernictwa Wyższa Szkoła Zarządzania i Bankowości w Krakowie Informatyka II rok studia dzienne

Architektura mikrokontrolera MCS51

DOKUMENTACJA PROJEKTU

Uniwersalny miernik: częstotliwości, czasu, okresu na FPGA, część 3

Interfejsy szeregowe cz. 2

PRZERZUTNIKI: 1. Należą do grupy bloków sekwencyjnych, 2. podstawowe układy pamiętające

Przerzutnik (z ang. flip-flop) jest to podstawowy element pamiętający każdego układu

Podstawy Elektroniki dla Elektrotechniki. Liczniki synchroniczne na przerzutnikach typu D

Architektura mikrokontrolera MCS51

LSB MSB dwu bajtową sumą kontrolną CRC. Ramka transmitowana jest jako pojedynczy blok danych.

Liczniki z zastosowaniem

Odbiór i dekodowanie znaków ASCII za pomocą makiety cyfrowej. Znaki wysyłane przez komputer za pośrednictwem łącza RS-232.

Programowanie mikrokontrolerów 2.0

Wykład 4. Języki Opisu Sprzętu. Prowadzący: dr inż. Andrzej Skoczeń Współrzędne: D , tel. w ,

Układy Cyfrowe projekt. Korekcja jasności obrazów w 24-bitowym formacie BMP z użyciem funkcji gamma. Opis głównych modułów sprzętowych

Podstawowe urządzenia peryferyjne mikrokontrolera ATmega8 Spis treści

Programowanie Układów Logicznych kod kursu: ETD6203 W dr inż. Daniel Kopiec. Pamięć w układach programowalnych

Programowalne układy logiczne

Opis czytnika TRD-80 CLASSIC ver Moduł czytnika transponderów UNIQUE z wbudowaną anteną

Hardware mikrokontrolera X51

THE HARDWARE IMPLMENTATION OF THE PS/2 PROTOCOL ON SPARTAN 3 FPGA DEVICE IMPLEMENTACJA SPRZĘTOWA PROTOKOŁU PS/2 W UKLADZIE FPGA SPARTAN 3

Dekoder RC5 z interfejsem SPI, opisany w języku Verilog, część 1

Programowanie mikrokontrolerów 2.0

Układy mnoŝące H D L. dr inŝ. Paweł Tomaszewicz Instytut Telekomunikacji Politechnika Warszawska

Moduł uruchomieniowy mikrokontrolera MC68HC912B32

Ćwiczenie 7 Matryca RGB

Współpraca procesora z urządzeniami peryferyjnymi

Zagadnienia zaliczeniowe z przedmiotu Układy i systemy mikroprocesorowe elektronika i telekomunikacja, stacjonarne zawodowe

Procedury obsługi monolitycznego przetwornika analogowo-cyfrowego AD 7865

Transkrypt:

Serial Peripheral Interface (przykład uogólniony) Brak standardu. Inne stosowane nazwy: Synchronous Serial Port (SSP), 4 wire SSI (Synchronous Serial Interface, Texas Instrument), Microwire (National Semiconductor). Poniżej opisano podstawowe cechy i przykładową implementację synchronicznego, szeregowego interfejsu z adresowaniem sprzętowym, przeznaczonego do komunikacji między układami scalonymi na płytkach drukowanych. Laboratorium Języków Opisu Sprzętu AGH WFiIS 2016 12 05 SPI 1

CS Sygnał FPGA Opis SCLK Serial Clock Zegar; Na zboczu narastającym (lub opadającym) do układu Slave wpisywana jest zawartość linii danych MOSI, a na przeciwnym zboczu wysyłana na linię MISO jest zawartość rejestru wyjściowego układu Slave SS Slave Select Wybór układu (chip select) aktywny stanem niskim. MOSI Master Output, Slave Input Dane szeregowe; n bity muszą mieścić się pomiędzy zboczem opadającym, a narastającym sygnału SS zaczynając od najbardziej znaczącego. MISO Master Input, Slave Output Dane szeregowe; n bitów, które wędrują od układu Slave do Układu Master. Czasami także: CLR Clear Asynchroniczny reset. 2016 12 05 SPI 2

przetwarzanie CLR SS ładowaniee bitu SCLK MOSI n 1 n 2 0 MISO n 1 n 2 0 2016 12 05 SPI 3

idle progr shdown start en clr_ctrl cnt dcnt Sygnał zapisu danej do rejestru shr Sygnał zezwolenia kasowania Licznik czasu trwania stanów Licznik bitów 2016 12 05 SPI 4

FPGA data2trans en clr_ctrl data_rec SPI (ogólny) clr ss sclk mosi miso clk rst 2016 12 05 SPI 5

module spi #(parameter bits = 8) (input clk, rst, en, miso, clr_ctrl, input [bits-1:0] data2trans, output clr, ss, sclk, mosi, output reg [bits-1:0] data_rec); `include "func.v" //funkcja logarytmująca //Parametry czasu trwania: //m - czas jednego bitu (w połowie zbocze opadające sclk) //d - opóźnienia na początku //Parametry obliczane: //bm - rozmiar licznika czasu //bdcnt - rozmiar licznika bitów localparam m = 5, d = 2, bm = clogb2(m), bdcnt = clogb2(bits); //kodowanie stanów localparam idle = 2'b00, shdown = 2'b01, progr = 2'b10, start = 2'b11; /*fsm fsm_encoding = "user"*/ reg [1:0] st, nst; reg [bits-1:0] shr; //rejestr przesuwny reg [bm-1:0] cnt; //licznik czasu trwania stanów reg [bdcnt:0] dcnt; //licznik bitów transmitowanych reg tmp, tm, cnten; //rejestr stanu //logika automatu //licznik czasu trwania stanów i poziomów zegara transmisji //logika sygnałów wyjściowych //generator zezwolenie dla rejestru przesuwnego //licznik bitów //rejestr przesuwny //generator zezwolenia zapisu na wyjście //rejestr wyjściowy endmodule 2016 12 05 SPI 6

//rejestr stanu st <= idle; else st <= nst; //logika automatu always @* begin nst = idle; cnten = 1'b1; case(st) idle: begin cnten = 1'b0; nst = en? (clr_ctrl?shdown:start):idle; end shdown: nst = (cnt == m-1)?start:shdown; start: nst = (cnt == d)?progr:start; progr: nst = (dcnt == {(bdcnt+1){1'd0}})?idle:progr; endcase end 2016 12 05 SPI 7

//licznik czasu trwania stanów //i poziomów zegara transmisji cnt <= {bm{1'b0}}; else if(cnten) if(cnt == m dcnt == {(bdcnt+1){1'd0}}) cnt <= {bm{1'b0}}; else cnt <= cnt + 1'b1; //logika sygnałów wyjściowych assign clr = (st == shdown)?1'b1:1'b0; assign ss = ((st == start) (st == progr))?1'b0:1'b1; b1; assign sclk = ((st == progr) & (cnt < (m/2 + 1)))?1'b1:1'b0; 2016 12 05 SPI 8

//generator zezwolenie dla rejestru przesuwnego tmp <= 1'b0; else tmp <= sclk; assign spi_en = ~sclk & tmp; //licznik bitów dcnt <= bits; else if(spi_en) dcnt <= dcnt - 1'b1; else if(en & dcnt == {(bdcnt+1){1'd0}}) dcnt <= bits; //rejestr przesuwny assign mosi = shr[bits-1]; shr <= {bits{1'b0}}; b0}}; else if(en) shr <= data2trans; else if(spi_en) shr <= {shr[bits-2:0],miso}; 2016 12 05 SPI 9

//generator zezwolenia zapisu na wyjście tm <= 1'b0; else tm <= ss; assign en_out = ss & ~tm; //rejestr wyjściowy data rec <= {bits{1'b0}}; else if(en_out) data_rec <= shr; 2016 12 05 SPI 10

Parametry modułu: Liczba transmitowanych bitów: bits = 8 Parametry lokalne: Czas transmisji jednego bitu: m = 5 Czas opóźnienia na początku: d = 2 Dane do testowania: Dane wysyłane przez Master: 00010001 Dane wysyłane przez Slave: 11001100 2016 12 05 SPI 11

Symulacja przykładu z dwiema transakcjami Dane do testowania: Dane wysyłane przez Master: 00010001 Dane przyjęte przez Master : 11001100 2016 12 05 SPI 12