Procesor z rdzeniem ARM9TDMI firmy ATMEL

Studenci analizują charakterystyki czasowe i częstotliwościowe podstawowych obiektów dynamicznych, analizują funkcje typowych regulatorów ciągłych i cyfrowych, przygotowują opis w języku HDL i implementują mikrokontroler w strukturze FPGA, opracowują i poznają zasady implementacji w strukturze FPGA oprogramowania dla mikrokontrolera pełniącego funkcję sterującą w systemie wbudowanym, poznają zasady dokumentowania. Studenci w zespołach wykonują projekt systemu wbudowanego o niewielkim stopniu złożoności.
Ćw. 0.
Ćw. 1.
Ćw. 2.
Ćw. 3.
Ćw. 4.
Ćw. 5.
Ćw. 6.

Literatura:

  1. Z. Hajduk, Wprowadzenie do języka Verilog, Wyd. BTC, 2009.

  2. W. Wrona, Język Verilog w projektowaniu układów cyfrowych, Wyd. SKALMIERSKI, 2009.

  3. J. Bieganowski, G. Wawrzyniak, Język Verilog w projektowaniu układów FPGA, http://willow.iie.uz.zgora.pl/~jbiegano/verilog/index.html.

  4. F. Vahid, R. Lysecky, Verilog for Digital Design, Wiley, 2007.

  5. M. Nowakowski, PicoBlaze. Mikroprocesor w FPGA, Wyd. BTC, 2009.

  6. A. Urbaniak, Systemy wbudowane, http://wazniak.mimuw.edu.pl.

  7. R. Sass, A.G. Schmidt: Embedded Systems Design with Platform FPGAs, Elsevier, 2010.

  8. J.K. Peckol, Embedded Systems: A Contemporary Design Tool, Wiley, 2008.

  9. F. Vahid, Digital Design, Wiley, 2007.

  10. F. Vahid, T. Givargis, Embedded Systems Design: A Unified Hardware/Software Introduction, Wiley, 2001.

  11. M.Pawłowski, A. Skorupski, Projektowanie złożonych układów cyfrowych, WKiŁ, 2010.

  12. Pong. P. Chu, FPGA Prototyping by Verilog examples, Wiley, 2008.

  13. P.J. Ashenden, Digital Design: An Embedded Systems Approach Using Verilog, Elsevier, 2008.

  14. R.C. Dorf, R.H. Bishop: Modern Control Systems, Prentice Hall, 2010.

  15. WikiBooks: http://en.wikibooks.org/wiki/Embedded_Systems.

  16. Wikiversity: http://en.wikiversity.org/wiki/Embedded_System_Engineering.

  17. OpenEmbedded: http://en.wikiversity.org/wiki/Embedded_System_Engineering.

  18. Xilinx Tutorial: http://www.ece.rice.edu/~kmram/elec326/Project/tutorialXilinx11.ppt.

  19. Xilinx ISE WebPack: http://www.xilinx.com/tools/webpack.htm.

  20. Xilinx University Program: http://www.xilinx.com/university/index.htm.

  21. Xilinx ISE Design Suite: Intellectual Property: http://www.xilinx.com/ipcenter/index.htm.

  22. Digilent Nexys2: http://www.digilentinc.com .

  23. Nexys2 Reference: www.digilentinc.com/Data/Products/NEXYS2/Nexys2_rm.pdf.

  24. Xilinx UG129 PicoBlaze 8-bit Embedded Microcontroller User Guide: ug129.pdf.

  25. Xilinx PicoBlaze for Nexys2: nexys_pblaze.zip.

  26. OpenCores: http://www.opencores.org.

  27. J.O. Hamblen, Introduction to Embedded Systems using Windows CE, http://users.ece.gatech.edu/~hamblen/wemap2/CDROM_IMAGE/IntroEmbSysII.pdf.

  28. Phidgets: http://www.phidgets.com.

  29. Phidgets software: http://www.phidgets.com/programming_resources.php.

  30. .NET Micro Framework: http://www.microsoft.com/netmf/about/gettingstarted.mspx.

  31. Design for Testability Guidelines: http://www.xjtag.com/support-jtag/dft-guidelines.php.

  32. P.A. Carter, PC Assembly Language, http://www.drpaulcarter.com/pcasm/.

  33. D.W. Lewis, Między asemblerem a językiem C. Podstawy oprogramowania wbudowanego, RM, 2004.

  34. A. Troelsen, Język C# 2008 i platforma .NET 3.5 (tłum. z j. ang.), PWN, 2009.

Laboratoria:

[Edytuj]

http://wazniak.mimuw.edu.pl/index.php?title=Systemy_wbudowane/Wyk%C5%82ad_9

http://wazniak.mimuw.edu.pl/index.php?title=Sw3.6-m9-1.2-Slajd1

http://wazniak.mimuw.edu.pl/index.php?title=Systemy_wbudowane

http://wazniak.mimuw.edu.pl/index.php?title=Sw3.6-l2-1.2-Slajd2

http://www.forbot.pl/forum/topics20/kurs-programowania-procesorow-arm-lpc21xx-vt2269.htm

Do oceny końcowej brane są pod uwagę oceny szczątkowe wystawione w czasie zajęć laboratoryjnych z uwzględnieniem następujących wag:

Lab_1: Programowanie w językach asemblera i C

Dodawanie dwóch liczb - program

Założenia wstępne

Algorytm programu

Algorytm programu(1)

Napisać program w języku asemblera a następnie w języku C, którego zadaniem będzie zsumowanie dwóch liczb. Obie liczby należy umieścić w rejestrach. Następnie za pomocą odpowiedniego rozkazu należy dodać zawartości obu rejestrów i wynik umieścić w rejestrze. Wynik dodawania należy wyświetlić na wyświetlaczu 7-segmentowym. W celu wyświetlenia liczby wykorzystać układ wejścia/wyjścia 8255, który odpowiada za wysyłanie cyfr na odpowiednio zaadresowane wyświetlacze.

Do napisania i przetestowania programu należy użyć symulatora C51. Należy wykorzystać wiadomości na temat programowalnego układu wejścia/wyjścia równoległego 8255. Układ 8255 posiada 8-bitowe porty PA i PB., które mogą być ustawiane jako wejścia lub jako wyjścia. Natomiast port PC podzielony jest na dwie 4-bitowe części, które można oddzielnie programować jako wejście lub jako wyjście. Sygnał RESET zeruje wszystkie rejestry układu oraz porty, dodatkowo ustawiając je jako wyjścia. Sygnałami A0 i A1 wybiera się port lub rejestr sterujący do odczytu lub zapisu danych. W trybie 1 i 2 poszczególne bity PC mogą być ustawiane lub zerowane poprzez rejestr zerujący. Jest to wykorzystywane w celu programowego blokowania i odblokowywania żądań przerwań. Układ 8255 może pracować w 3 trybach. W trybie 0 każdy z portów może pracować jako wejście lub wyjście proste. W trybie 1 Porty PA i PB mogą pracować jako wejście lub wyjście z potwierdzeniem, a port PC jako port sterujący. W ostatnim z trybów Pa pracuje jako port z możliwością transmisji dwukierunkowej z potwierdzeniem, PB w trybie 0 lub 1, a port PC jako port sterujący. W zadaniu należy wybrać odpowiedni tryb pracy. Stos wykorzystać dla zapamiętania zawartości rejestrów z grupy rejestrów specjalnego przeznaczenia SFR - DPL i DPH. Rejestry DPL i DPH tworzą razem rejestr DPTR, który jest nazywany wskaźnikiem danych. Wybór portów PB i PC wynika z trybów pracy układu 8255.

Na slajdzie podany jest przykładowy algorytm programu. W pierwszym kroku należy przesłać pierwszą liczbę do rejestru. Następnie przesyłamy drugą liczbę do innego rejestru. Po tych operacjach następuje operacja dodawania obu liczb. Wynik należy umieścić w rejestrze. Sygnałem CS wybieramy układ 8255 – na szynie mikrokontrolera pojawia się adres 800xh. Rejestr PA układu 8255 ma wówczas adres 8000h, rejestr PB ma adres 8001h, zaś rejestr PC – adres 8002h. Rejestr kontrolny ma przyporządkowany adres 8003h. System sterowania jest układem dynamicznym, gdyż każdy z wyświetlaczy jest obsługiwany tylko przez jeden port i w danej chwili może być aktywny tylko jeden z nich. Wyświetlanie informacji na wyświetlaczach wymaga więc okresowego wysyłania cyfr na poszczególne wyświetlacze. Dane są przesyłane przez port PB, który jest ustawiony jako wyjście. Port PA nie jest wykorzystywany. Najbardziej znaczące bity portu PC służą do wyboru wyświetlacza. Zatem porty PCH i PB powinny być ustawione jako wyjścia pracujące w trybie 0. Konfiguracj aportów PA i PCl jest nieistotna.

Cykl wyświetlania informacji powinien przebiegać w następujący sposób: Mikrokontroler wysyła 7-mio segmentowy kod cyfry do portu PB. Wysyłany kod pojawia się na wejściach informacyjnych wszystkich wyświetlaczy, jednak żaden z nich nie jest aktywny. Na pinie portu od PC4 do PC6 należy podać adres wyświetlacza. Linia PC7 powinna być w stanie wysokim. Następnie należy wysterować odpowiedni wyświetlacz. Wadą takiego rozwiązania jest stałe zaangażowanie jednostki centralnej, natomiast zaletą możliwość programowego regulowania jasności świecenia poszczególnych wyświetlaczy. Jasność wyświetlaczy zależy od częstotliwości pobudzania wyświetlaczy w pętli programowej.

Lab_2:

Obsługa przerwań

Program – zliczanie czasu rzeczywistego

Założenia wstępne

Algorytm programu.

Napisać program zliczający czas rzeczywisty – sekundy, minuty i godziny wykorzystując do tego celu przerwania generowane przez jeden z dwóch układów czasowo-licznikowych mikrokontrolera 8051. Dokładne odmierzanie czasu zapewnione będzie dzięki połączeniu właściwości zliczania wewnętrznych impulsów zegarowych przez układ licznikowy. Układ licznikowy generował po wystąpieniu przepełnienia generował będzie przerwania. Bardzo istotny jest priorytet danego przerwania nad innymi. W przypadku zaistnienia większej ilości przerwań o kolejności przyjęcia przerwania decyduje priorytet. Przerwanie o niższym priorytecie będzie oczekiwało na przyjęcie przez system przerwań.

Rezerwujemy 3 komórki pamięci, które będą zliczały odpowiednio sekundy, minuty i godziny. Zliczanie powinno odbywać się w kodzie BCD – dzięki temu zarówno sekundy jak i minuty i godziny przechowywane będą na czterech bitach danej komórki pamięci. Inkrementacją sekund, minut i godzin zajmie się procedura obsługi przerwania od układu czasowo-licznikowego. W pętli głównej programu należy realizować prezentację aktualnej zliczonej wartości czasu rzeczywistego. Należy również zadbać o korektę dziesiętnej wartości akumulatora po inkrementacji danej jednostki czasu w celu wyeliminowania wartości 0Ah po wartości 09h. Do wygenerowania odpowiedniej, powtarzającej się procedury obsługi przerwania, który zapewniała będzie inkrementację wykorzystać należy układ czasowo-licznikowy T1.

Na samym początku należy dokonać obliczenia czasu trwania pojedynczego cyklu maszynowego mikrokontrolera. Przy założeniu, że mikrokontroler pracuje z częstotliwością x [Hz] wyznaczamy czas trwania cyklu maszynowego z zależności 12/x. Liczniki mikrokontrolera T0 i T1 pracując w trybie czasomierza zliczają wewnętrzne impulsy zegarowe z częstotliwością x/12, co jest odwrotnością obliczonego wcześniej okresu cyklu maszynowego. Aby więc przepełnić licznik T1 co jedną sekundę i generować w tym momencie przerwanie należy zliczyć x/12 impulsów. Jednak licznik pracujący w trybie 16-bitowym przepełnia się częściej niż co sekundę. Należy więc przepełniać licznik częściej niż co sekundę używając dodatkowej zmiennej – rejestru. Rejestr ten będzie inkrementowany wystąpieniem przepełnienia licznika T1. Do uaktywniania lub blokowania wybranych przerwań służy rejestr IE w obszarze SFR-ów. W rejestrze tym na odpowiedniej pozycji ustawia się bit maskujący przerwanie z licznika T1. Po resecie mikrokontrolera rejestr IE jest wyzerowany.

Lab_9: Realizacja rejestru w układzie FPGA

  1. Realizacja rejestru w układzie FPGA

  2. Realizacja rejestru w układzie FPGA(1)

  3. Rejestr przesuwający 74194

  4. Topologia wyprowadzeń rejestru 74194

  5. Rejestr 74194 – tabela stanów

Ad 1 Wykorzystując uniwersalny system uruchomieniowy NanoBoard NB1 należy zaimplementować w układzie FPGA dwukierunkowy rejestr przesuwny. Ćwiczenie należy zrealizować wykorzystując uniwersalny system uruchomieniowy NanoBoard NB1 oraz aplikację Altium Designer.

Ad. 2 Podstawowe funkcje rejestru:

Wprowadzanie równoległe,

Przesuwanie w lewo,

Przesuwanie w prawo,

Blokada zegara.

Rejestr jest układem, który służy do przechowywania informacji cyfrowej. Podstawowym elementem rejestru jest przerzutnik, który umożliwia zapamiętanie jednego bitu informacji cyfrowej.

Rejestr 74194 posiada równoległe wejścia i wyjścia, szeregowe wejścia dla przesuwu w prawo i w lewo, wejścia rodzaju pracy oraz asynchroniczne i niezależne od innych wejść oraz wejście zerowania.

Na slajdzie została przedstawiona topologia wyprowadzeń układu 74194. Wprowadzanie równoległe jest realizowane synchronicznie z narastaniem zbocza impulsu zegarowego przez podanie czterech bitów danych na wejścia równoległe oraz ustawienie wejść rodzaju pracy S0 i S1 w stan wysoki. W czasie wprowadzania równoległego wejścia szeregowe SR i SL są zablokowane. Przesuwanie w prawo jest realizowane w momencie, gdy S0 jest w stanie wysokim, a wejście S1 jest w stanie niskim. Dane są wprowadzane wejściem SR. W trakcie przesuwania w prawo wejścia równoległe danych są zablokowane. Przesuwanie w lewo jest realizowane, gdy S0 jest w stanie niskim, a wejście S1 w stanie wysokim. Dane są wprowadzane wejściem SL. W czasie przesuwania w lewo wejścia równoległe są zablokowane. Blokada wejścia zegarowego występuje gdy S0 i S1 sa w stanie niskim. Zmiany na wejściach trybu pracy S0 i S1 powinny występować w momencie, gdy na wejściu zegarowym podany jest stan wysoki.

Na slajdzie została przedstawiona tabela stanów rejestru przesuwającego.

H – stan wysoki

L – stan niski

X – stan dowolny

? - zmiana stanu z niskiego na wysoki

QA0, QB0, QC0, QD0 – wartości odpowiednio QA, QB, QC, QD, które istniały przed ustaleniem warunków podanych na wejściach

QAn, QBn, QCn, QDn – wartości odpowiednio QA, QB, QC, QD, które były ustalone na wyjściach przerzutników przed ostatnią zmianą na wejściu zegarowym ze stanu niskiego na wysoki

a, b, c, d – wartości ustalone odpowiednio na wejściach A, B, C, D.

Z – zerowanie

WR – wprowadzanie równoległe

PP – przesuwanie w prawo

PL – przesuwanie w lewo

B - blokada


Wyszukiwarka

Podobne podstrony:
PRZEGLAD PROCESOROW RODZINY x86 FIRMY AMDd
Wykaz mikroprocesorów AVR firmy ATMEL
OCENA PROCESÓW LOGISTYCZNYCH PRZYJĘĆ I WYDAŃ W MAGAZYNIE FIRMY
projekt implentacji koncepcji zarządzania procesami z wykor, Firmy i Przedsiębiorstwa
Architektura procesorow firmy AMD
Mapa procesow Firmy(druk), ISO, ISO
Zarządzanie procesami pomoc, nauka, Adam Stabryła, Zarządzanie strategiczne w teorii i praktyce firm
27. Elementy procesu komunikacji firmy z klientem, Materiały PSW Biała Podlaska, ZiPM- ćwiczenia
Procesory firmy Intel i AMD
proces rekrutacji i selekcji na przykładzie firmy Coniveo, Magdalena Cupryjak
proces rekrutacji i selekcji na przykładzie firmy Coniveo, Magdalena Cupryjak
PROCESY LOGISTYCZNE NA PRZYKŁADZIE FIRMY
Biegun negatyw a proces emanacji rdzenia istoty spiralnej
W4 Proces wytwórczy oprogramowania
WEWNĘTRZNE PROCESY RZEŹBIĄCE ZIEMIE
Obwody rdzenia kręgowego

więcej podobnych podstron