Procesory Blackfin. Część 2

Podobne dokumenty
Urządzenia peryferyjne RS-232. Wykład 2

Wykład 10. Komunikacja

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

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

MIKROKONTROLERY - MAGISTRALE SZEREGOWE

Pamięci i urządzenia peryferyjne Wprowadzenie do przedmiotu

Zygmunt Kubiak Instytut Informatyki Politechnika Poznańska

Struktura QSM (Queued Serial Module)

Podstawowe urządzenia peryferyjne mikrokontrolera ATmega8 Spis treści

Wykład 4. Przegląd mikrokontrolerów 16-bit: - PIC24 - dspic - MSP430

Współpraca procesora ColdFire z urządzeniami peryferyjnymi

Politechnika Białostocka Wydział Elektryczny Katedra Automatyki i Elektroniki

Interfejsy szeregowe TEO 2009/2010

Mikrokontroler AVR ATmega32 - wykład 9

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

Praktyka programowania w C Laboratorium 5.

Systemy wbudowane Wykład 6 - transmisje szeregowe: UART i pochodne. Komunikacja szeregowa Notes. Rodzaje transmisji Notes. Rodzaje transmisji Notes

Wstęp. Opis ATMEGA128 MINI MODUŁ VE-APS-1406

System interfejsu RS 232C opracowali P. Targowski i M. Rębarz

HC541 8-bitowy bufor jednokierunkowy HC245 8-bitowy bufor dwukierunkowy HC244 dwa 4-bitowe bufory jednokierunkowe

Procesory osadzone ETD 7211 W

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

Współpraca procesora z urządzeniami peryferyjnymi

TECHNIKA MIKROPROCESOROWA

Uniwersalny asynchroniczny. UART Universal Asynchronous Receier- Transmiter

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

Struktura mikrokontrolera MC68332

Procesory Blackfin. Część 1

Wstęp: Interfejs portu równoległego 6821 i portu szeregowego 6850 firmy Motorola

Wykład 12. Przetwornik ADC

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

Plan wykładu. 1. Urządzenia peryferyjne 2. Rodzaje transmisji danych 3. Interfejs COM 4. Interfejs LPT 5. Plug and Play

Komunikacja w mikrokontrolerach Laboratorium

Programowanie mikrokontrolerów AVR

Współpraca procesora z urządzeniami peryferyjnymi

1. Tworzenie nowego projektu.

4 Transmisja szeregowa na przykładzie komunikacji dwukierunkowej z komputerem PC, obsługa wyświetlacza LCD.

Moduł komunikacyjny Modbus RTU do ciepłomierza SonoMeter 30

(przykład uogólniony)

Zastosowania mikrokontrolerów w przemyśle

Technika Mikroprocesorowa

DATAPROVIDER DLA PROTOKOŁU MODBUS (RS) - INSTRUKCJA

Podstawowe urządzenia peryferyjne mikrokontrolera ATmega8 Spis treści

Inż. Kamil Kujawski Inż. Krzysztof Krefta. Wykład w ramach zajęć Akademia ETI

Procesory sygnałowe (Analog Devices)

Start Bity Bit Stop 1 Bit Par Rys. 1

Kompilator języka C na procesor 8051 RC51 implementacja

Mini Modbus 1AI. Moduł rozszerzający 1 wejście analogowe, 1 wyjście cyfrowe. Wyprodukowano dla

Komunikacja z urzadzeniami zewnętrznymi

Wyświetlacz alfanumeryczny LCD zbudowany na sterowniku HD44780

Problematyka sieci miejscowej LIN

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

Mikroprocesory i Mikrosterowniki Laboratorium

Współpraca procesora z urządzeniami peryferyjnymi

NX700 PLC

Typy złożone. Struktury, pola bitowe i unie. Programowanie Proceduralne 1

TECHNIKA MIKROPROCESOROWA II

2. PORTY WEJŚCIA/WYJŚCIA (I/O)

Szczegółowy opis przedmiotu zamówienia. Część 1 - Laboratoryjny zestaw prototypowy

1. Cel ćwiczenia. Celem ćwiczenia jest zestawienie połączenia pomiędzy dwoma sterownikami PLC za pomocą protokołu Modbus RTU.

Poradnik programowania procesorów AVR na przykładzie ATMEGA8

Interfejsy szeregowe. Dariusz Chaberski

Systemy Wbudowane. Raspberry Pi Sterowanie serwomechanizmem (wersja 2019) Serwomechanizm. Serwomechanizm z silnikiem krokowym

Zewnętrzne układy peryferyjne cz. 1 Wykład 12

4 Transmisja szeregowa, obsługa wyświetlacza LCD.

Mikroprocesory i Mikrosterowniki Magistrala szeregowa I2C / TWI Inter-Integrated Circuit Two Wire Interface

Magistrala LIN

WYKŁAD 5. Zestaw DSP60EX. Zestaw DSP60EX

Sterownik procesorowy S-2 Komunikacja RS485 MODBUS

Komputery klasy PC. Dariusz Chaberski

1.10 MODUŁY KOMUNIKACYJNE

Wykład 2. Przegląd mikrokontrolerów 8-bit: -AVR -PIC

Architektura Systemów Komputerowych. Transmisja szeregowa danych Standardy magistral szeregowych

Komunikacja w mikrokontrolerach. Magistrala szeregowa I2C / TWI Inter-Integrated Circuit Two Wire Interface

1. Wartość, jaką odczytuje się z obszaru przydzielonego obiektowi to: a) I - wartość b) definicja obiektu c) typ oboektu d) p - wartość

. Rodzaje transmisji sygnału i RS-232

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

Podstawy programowania. Wykład Co jeszcze... Przypomnienia, uzupełnienia. Krzysztof Banaś Podstawy programowania 1

Grzegorz Cygan. Wstęp do programowania mikrosterowników w języku C

Zmienne, stałe i operatory

Podstawowa konfiguracja routerów. Interfejsy sieciowe routerów. Sprawdzanie komunikacji w sieci. Podstawy routingu statycznego

Systemy wbudowane - wykład 7

Organizacja pamięci VRAM monitora znakowego. 1. Tryb pracy automatycznej

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

Systemy Wbudowane. Arduino C. Arduino C - stałe. Arduino C - Stałe. Arduino C - Stałe. Funkcje matematyczne. Arduino C - Stałe

Architektura komputerów. Układy wejścia-wyjścia komputera

Interfejs urządzeń peryferyjnych

Instrukcja dla: Icomsat v1.0 SIM900 GSM/GPRS shield for Arduino oraz dla GPRS Shield produkcji Seeedstudio.

Expandery wejść MCP23S17 oraz MCP23017

Podsumowanie. semestr 1 klasa 2

Niektóre piny mogą pełnić różne role, zależnie od aktualnej wartości sygnałów sterujących.

MIKROKONTROLERY - MAGISTRALE SZEREGOWE

ADVANCE ELECTRONIC. Instrukcja obsługi aplikacji. Modbus konfigurator. Modbus konfigurator. wersja 1.1

ZiMSK. mgr inż. Artur Sierszeń mgr inż. Łukasz Sturgulewski ZiMSK 1

RS485 MODBUS Module 8AI

RS485 MODBUS Module 8I8O

KONCENTRATOR DANYCH Z PROTOKO EM MODBUS. Typu PD x 94 x 58 mm INSTRUKCJA OBS UGI

METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE. Wykład 02

2018 Marcin Kukliński. Niesforne bity i bajty

MiniModbus 4DO. Moduł rozszerzający 4 wyjścia cyfrowe. Wyprodukowano dla. Instrukcja użytkownika

Transkrypt:

Procesory Blackfin. Część 2 Wykład 8 Projektowanie cyfrowych układów elektronicznych Olgierd Stankiewicz olgierd.stankiewicz@cs.put.poznan.pl http://www.cs.put.poznan.pl/~wswitala

Urządzenia peryferyjne i interfejsy wejścia/wyjścia procesorów Blackfin Konfiguracja elektryczna procesorów Blackfin Optymalizacja kodu

http://www.analog.com/processors/blackfin/ http://www.blackfin.org/phorum/index.php

PORTx_FER

PORTx_DIR 0-input 1-output PORTxIO_INEN 0-inp buffer disabled 1-enabled PORTxIO_EDGE 0-level 1-edge PORTxIO_POLAR 0-high/rising 1-low/falling PORTxIO_CLEAR czyści zapisane bity PORTxIO_SET ustawia zapisane bity PORTxIO_TOGGLE przełącza zapisane bity

PORTxIO POLAR EDGE BOTH Effect of MMR Settings 0 0 X 0 1 0 1 0 X 1 1 0 X 1 1 Pin that is high reads as 1; pin that is low reads as 0 If rising edge occurred, pin reads as 1; otherwise, pin reads as 0 Pin that is low reads as 1; pin that is high reads as 0 If falling edge occurred, pin reads as 1; otherwise, pin reads as 0 If any edge occurred, pin reads as 1; otherwise, pin reads as 0

Universal Asynchronous Receiver/Transmitter: Port zgodny ze standardem RS-232C 5-8 bitów danych 1 lub 2 bity stopu Wszystkie tryby bitu parzystości Kolejki FIFO Brak sprzętowego wsparcia dla kontroli przepływu Na płycie ewaluacyjnej BF-537 piny kontroli przepływu NIE SĄ PODŁĄCZONE

UARTx_THR UARTx_RBR UARTx_DLL UARTx_DLH UARTx_IER UARTx_IIR UARTx_LCR UARTx_MCR UARTx_LSR UARTx_SCR UARTx_GCTL Transmit Holding registers Receive Buffer registers Divisor Latch Low Byte registers Divisor Latch High Byte registers Interrupt Enable registers Interrupt Identification registers Line Control registers Modem Control registers Line Status registers 8-bit Scratch register Global Control registers

Jak włączyć: PORTF_FER włączyć piny UART PORT_MUX ustawić multiplekser UART0_DL, UART0_GCTL, UART0_LCR Dzielnik zegara Bity stopu, danych, parzystości

BF-537, UART0: BIT_SET(*pPORTF_FER,0); //RX BIT_SET(*pPORTF_FER,1); //TX BIT_CLEAR(*pPORT_MUX, 3); // RX/TX *puart0_gctl = UCEN; // enable UART clock *puart0_lcr = DLAB; *puart0_dll = divisor; *puart0_dlh = divisor>>8; *puart0_lcr = WLS(8); // Clear DLAB again and set UART frame to: // 8 bits, no parity, 1 stop bit.

Serial Peripheral Interface: Full-duplex, transfer synchroniczny Słowa 8 lub 16 bit Programowalny tryb MSB/LSB Praca w trybie Master lub Slave Dedykowane linie MISO,MOSI,SCK Master-In-Slave-Out Master-Out-Slave-In Serial-Clock Sugerowane linie dla SS (Slave-Select)

SPI_CTL SPI_FLG SPI_STAT SPI_TDBR SPI_RDBR SPI_BAUD SPI_SHADOW Control register Flag register Status register Transmit Data Buffer register Receive Data Buffer register Baud Rate register RDBR Shadow register

Jak włączyć: BIT_SET(*pPORTF_FER,11); // MOSI BIT_SET(*pPORTF_FER,12); // MISO BIT_SET(*pPORTF_FER,13); // SCK BIT_SET(*pPORTF_FER,4); // SSEL6 BIT_SET(*pPORT_MUX,5); // SSEL6 BIT_SET(*pSPI_FLG,6); // SSEL6

*pspi_baud = divisor; *pspi_ctl = BIT(0) BIT(3) BIT(10) BIT(11) BIT(12) BIT(14); // [0]: start transfer on write // [3]: get more data // [10]: CPHA // [11]: active LOW // [12]: master // [14]: SPI enable

Serial Port: Synchroniczny transfer danych Half-duplex Synchronizowany zegarem wewnętrznym lub zewnętrznym Programowalny tryb MSB/LSB Programowalna szerokość słowa 3-32bit Kompandorowanie dla zastosowań telefonicznych Kolejki FIFO

Przykład: BIT_CLEAR(*pPORT_MUX,0); BIT_CLEAR(*pPORT_MUX,1); BIT_CLEAR(*pPORT_MUX,2); // Sport0 transmit configuration // External CLK, External Frame sync, MSB first, Active Low // 24-bit data, Secondary side enable, Stereo frame sync enable *psport0_tcr1 = TFSR TCKFE; *psport0_tcr2 = SLEN_24 TSFSE; *psport0_tclkdiv = 0x0013; *psport0_tfsdiv = 0x001F; // Sport0 receive configuration // External CLK, External Frame sync, MSB first, Active Low // 24-bit data, Secondary side enable, Stereo frame sync enable *psport0_rcr1 = RFSR RCKFE; *psport0_rcr2 = SLEN_24 RSFSE; *psport0_rclkdiv = 0x0013; *psport0_rfsdiv = 0x001F;

Controlled Area Network: Spełnia standard CAN 2.0B Wsparcie dla identyfikatorów: Standardowych 11-bitowych Rozszerzonych 29-bitowych Maksymalny transfer: 1Mbit/s 32 skrzynki pocztowe (8 wysyłanie, 8 odbiór, 16 konfigurowalnych)

Parallel Peripheral Interface: Half-duplex Dwukierunkowe linie danych Maksymalnie 16-bitowa szyna danych Możliwość multipleksacji do 8-bitów Kompatybilny z BT.656 Może być wykorzystany do dowolnej praktycznej transmisji równoległej Wyzwalanie wewnętrzne lub zewnętrzne Kolejki FIFO

Ethernet Media Access Control: Interfejs pomiędzy standardem interfejsem standardu MII/RMII a procesorem Blackfin Marvell Gigabit Ethernet (88E8001 PHY) w trybie 100Mbit/s SMSC LAN83C185 10/100 Full- lub half-duplex 10Mbit/s lub 100Mbit/s Walidacja sum kontrolnych TCP/IP Wake-ON-LAN Kolejki FIFO

Moduł zapewnia dostęp do pakietów warstwy Ethernet-owej na poziomie pamięci Oprogramowanie ADI umożliwia wykorzystanie standardowych gniazd: - recv, send, listen, accept, bind

Filtracja napięcia systemowego

Regulator napięcia rdzenia

Filtracja zasilania rdzenia

Zegar

Zegar RTC

Reset

Typy danych char unsigned char short unsigned short int unsigned int long unsigned long 8-bit signed integer 8-bit unsigned integer 16-bit signed integer 16-bit unsigned integer 32-bit signed integer 32-bit unsigned integer 32-bit signed integer 32-bit unsigned integer Brak wsparcia sprzętowego: float, double Oba 32-bitowe IEEE754

Zalecenia: Unikać arytmetyki zmiennoprzecinkowej Unikać operacji dzielenia i modulo Kompilator automatycznie wyłapuje 2^N Inicjalizować stałe statycznie static int val = 3; Dbać o alignowanie pamięci Zapis/odczyt tylko 16-bitowych słów z pamięci zewnętrznej

Adresowanie tablic: void va_ind( short a[], short b[], short out[], int n) { int i; for (i = 0; i < n; ++i) out[i] = a[i] + b[i]; } void va_ptr( short a[], short b[], short out[], int n) { int i; short *pout = out, *pa = a, *pb = b; for (i = 0; i < n; ++i) *pout++ = *pa++ + *pb++; }

Adresowanie tablic Lepiej zacząć od zapisu indeksowego W zewnętrznych pętlach używać zapisu indeksowego Używać trybu indeksowego dla buforów cyklicznych Jednocześnie pętle przetwarzania ze skomplikowanym adresowaniem lepszy tryb wskaźnikowy

Nie rozwijać pętli! (ładowanie 16-bit) void va1(short a[], short b[], short c[], int n) { int i; for (i = 0; i < n; ++i) { c[i] = b[i] + a[i]; } } void va2(short a[], short b[], short c[], int n) { short xa, xb, xc, ya, yb, yc; int i; for (i = 0; i < n; i+=2) { xb = b[i]; yb = b[i+1]; xa = a[i]; ya = a[i+1]; xc = xa + xb; yc = ya + yb; c[i] = xc; c[i+1] = yc; } }

Dalsze uwagi do pętli Nie obracać pętli Unikać aliasów Unikać zależności for (i = 0; i < n; ++i) a[i] = b[i] * a[c[i]];

Wektoryzacja pętli void copy(short *a, short *b) { int i; #pragma vector_for for (i=0; i<100; i++) a[i] = b[i]; } }

Bufory cykliczne Umożliwiają uniknąć kopiowania pamięci Lub operacji modulo/iloczynu logicznego Zazwyczaj kompilator sam wykorzystuje konstrukcje Indeksowanie & N CIRCULAR_BUF[i%1000] = xyz;

Fractional 16 int sp(short *a, short *b) { int i; int sum=0; for (i=0; i<100; i++) { sum += ((a[i]*b[i]) >> 15); } return sum; } #include <fract.h> fract32 sp(fract16 *a, fract16 *b) { int i; fract32 sum=0; for (i=0; i<100; i++) { sum = add_fr1x32(sum, mult_fr1x32(a[i],b[i])); } return sum; }

Dziękuję za uwagę!