Differences

This shows you the differences between two versions of the page.

wiki:study:emr [2005/03/09 16:29]
e-razor
wiki:study:emr [2006/09/12 21:38] (current)
ello created
Line 1: Line 1:
-[[http://www.theoinf.tu-ilmenau.de/ra1/skripte/emr/]] +====== Einchipmikrorechner & digitale Signalprozessoren ======
-<code asm> +
-; * ************************************************************************************** +
-; * +
-; *  PRAKTIKUM "PROGRAMMIERUNG DER EMR-FAMILIE C166" +
-; *  ----------------------------------------------- +
-; * +
-; * zur Lehrveranstaltung "Einchipmikrorechner und Signalprozessoren+
-; *                                Bernd Daene    TU Ilmenau    5/2004 +
-; * +
-; *  +
-; *  ----- AUFGABE 1: BYTES TAUSCHEN ---- +
-; * +
-; * In dieser Datei sollen Sie eine Assemblerprozedur implementieren, welche +
-; * die in einer 16-Bit-Zahl enthaltenen Bytes miteinander vertauscht. Der  +
-; * Tausch soll nur dann ausgefuehrt werden, wenn das hoeherwertige (linke) +
-; * Byte einen groesseren Zahlenwert hat als das niederwertige (rechte) Byte! +
-; * +
-; * Alle Zahlen sind vorzeichenlose ganze Binaerzahlen. +
-; * +
-; * Das Argument befindet sich zu Beginn in R12. Der Rueckgabewert muss zum +
-; * Ende in R4 stehen. Das Register R0 darf KEINESFALLS veraendert werden. +
-; * Die sonstigen allgemeinen Register sind frei verwendbar. +
-*snip snap*+
- MOV R4,R12 +===== Gemeinsamkeiten =====
- MOV R1,R12 +
- CMPB RL4,RH4 +
- JMPA cc_NC, NOSWAP;(RL4-RH4)>=0? +
- MOVB RL4,RH1 +
- MOVB RH4,RL1 +
- NOSWAP:+
-*snip snap+  * Einchipkonzept 
-</code>+  * autonome Arbeitsweise 
 + * geringe Außenbeschaltung 
 +  * große Vielfalt 
 +  * Stromsparmaßnahmen 
 +  * breites Softwareangebot 
 +  * Realtime OS 
 +  * Cross-Werkzeuge (Werkzeug läuft auf anderer Platform als die eigentliche Zielsoftware)
-<code asm> +===== Unterschiede =====
-; * ************************************************************************************** +
-; * +
-; *  PRAKTIKUM "PROGRAMMIERUNG DER EMR-FAMILIE C166" +
-; *  ----------------------------------------------- +
-; * +
-; * zur Lehrveranstaltung "Einchipmikrorechner und Signalprozessoren" +
-; *                                Bernd Daene    TU Ilmenau    5/2004 +
-; * +
-; *  +
-; *  ----- AUFGABE 2: FELD MIT VIELFACHEN EINER ZAHL FUELLEN ---- +
-; * +
-; * In dieser Datei sollen Sie eine Assemblerprozedur implementieren, welche +
-; * einen Speicherbereich der Laenge l mit den Vielfachen einer Zahl n fuellt. +
-; * Alle Zahlen sind vorzeichenbehaftete 16-Bit-Zahlen. Der Zahlenwert fuer l +
-; * ist stets groesser als Null. +
-; * +
-; * Die Argumente ergeben sich aus unten stehender Tabelle. Ein Rueckgabewert +
-; * existiert nicht. Das Register R0 darf KEINESFALLS veraendert werden. +
-; * Die sonstigen allgemeinen Register sind frei verwendbar. +
-*snip snap*+
- MOV R11,R13 +^  µC  ^  DSP  ^ 
-NEXT_WORD: +| geringere Leistung | höhere Leistung | 
- MOV [R14],R13 +| 4, 8, 16, 32 Bit | 16, 32, 64 Bit | 
- ADD R14,#2+| weniger Speicher | mehr Speicher | 
 +| dieser bevorzugt intern | intern, häufig auch extern | 
 +| Bitbefehle | MAC-Befehle (multiply & accumulate) | 
 +| | begrenzende Arithmetik |
- ADD R13,R11+__begrenzende Arithmetik__
- CMPD1 R12,#2 ;(R12==2)?...;R12--; +^  mit  ^  ohne  ^ 
- JMPA cc_NC,NEXT_WORD+|  F0h|  F0h| 
 +|  +22h|  +22h| 
 +(1)12h|  FFh|
-*snip snap*+===== typische Einsatzfäle ===== 
 + 
 +(grafik) 
 + 
 +===== typische Baugruppen auf dem Chip ===== 
 + 
 +==== Rechnerkern ==== 
 + 
 +    * RISC oder CISC 
 +    * Register (mitunter verknüpft mit dem internen RAM) 
 +    * viele Spezialregister 
 +    * Harvard oder von Neumann 
 + 
 +==== Speicher ==== 
 + 
 +    * Intern 
 +      * ROM 
 +      * RAM 
 +    * interface für externen Speicher 
 +      * Bus-interface 
 +      * "glueless" interface 
 +      * seriell 
 + 
 +==== ROM-Varianten ==== 
 + 
 +    * Masken-ROM [[wp>Mask_rom]] 
 +    * PROM/OTP [[wpde>One_Time_Programmable]] 
 +    * EPROM [[wpde>EPROM]] 
 +    * E²PROM [[wpde>EEPROM]] 
 +    * FRAM [[wpde>Ferroelectric_Random_Access_Memory]] 
 +    * ROM-los 
 +    * bootstrap [[wpde>Bootstrap]] 
 + 
 +==== Peripherie ==== 
 +=== digital === 
 +  * parallel 
 +  * seriell 
 +    * synchron 
 +    * asynchron 
 + 
 +=== analog === 
 +  * Eingang 
 +    * A/D Wandler 
 +  * Ausgang 
 +    * D/A Wandler 
 +    * PWM 
 + 
 +=== speziell === 
 +  * Zähler 
 +    * Zähler 
 +    * Zeitgeber 
 +    * RTC 
 +    * CapCom 
 +  * Kommunikation 
 +    * LAN 
 +    * CAN 
 +    * I²C 
 +    * USB 
 +    * IRDA 
 +  * Geräte 
 +    * LCD 
 +    * Schrittmotoren 
 +  * Sonstiges 
 +    * Taktgeber 
 +    * Reset 
 +    * Powermangement 
 +    * Interrupt-System 
 +    * DMA 
 +    * Watchdog 
 + 
 +===== Speichermodell ===== 
 + 
 +  * Speicherkonfiguration 
 +    * unsegmentiert (64 kiByte) 
 +    * segmentiert (max 16 MiByte (nur bei externem Speicher)) 
 +  * Strukturierung 
 +    * festgelegte Addressen 
 +      * interner ROM 
 +      * interner RAM 
 +      * Spezialfunktions-Register (wie Speicher angesprochen) 
 +      * allgemeine Register 
 +      * reservierte Bereiche 
 +    * externer Speicher 
 +    * externe IO (memmory mapped IO) 
 + 
 +==== nichtsegmentierter Modus ==== 
 +  * lineare Addresse (flaches Modell) 16 Bit 
 +<code> 
 +Addressoperand -> physische Addresse 
 +  +--------+        +--------+ 
 +  | 16 Bit |  ->  | 16 Bit | 
 +  +--------+        +--------+
</code> </code>
-<code asm> +==== segmentierter Modus ====
-; * ************************************************************************************** +
-; * +
-; *  PRAKTIKUM "PROGRAMMIERUNG DER EMR-FAMILIE C166" +
-; *  ----------------------------------------------- +
-; * +
-; * zur Lehrveranstaltung "Einchipmikrorechner und Signalprozessoren" +
-; *                                Bernd Daene    TU Ilmenau    5/2004 +
-; * +
-; *  +
-; *  ----- AUFGABE 3: QUADRATWURZEL ---- +
-; * +
-; * In dieser Datei sollen Sie eine Assemblerprozedur implementieren, welche +
-; * aus einer vorzeichenlosen 32-Bit-Zahl den ganzzahligen Teil der Quadrat- +
-; * wurzel berechnet und als vorzeichenlose 16-bit-Zahl zurueckgibt. +
-; * +
-; * Als Berechnungsverfahren wird das Prinzip der sukzessiven Approximation  +
-; * empfohlen. Sie finden es am Ende dieser Datei naeher erlaeutert. Andere +
-; * Berechnungsverfahren sind aber auch moeglich. +
-; * +
-; * Das Argument befindet sich zu Beginn in R12 (niederwertiger Teil) und R13  +
-; * (hoeherwertiger Teil). Der Rueckgabewert muss zum Ende in R4 stehen.  +
-; * +
-; * Das Register R0 darf KEINESFALLS veraendert werden. +
-; * Die sonstigen allgemeinen Register sind frei verwendbar. +
-*snip snap*+
- MOV R1,#8000h ;i=15 
- MOV R4,#0 ;y=0 
-NEXT_BIT+Addressoperand: 16 Bit 
- ;MOV R3,R4 ; +phyische Address: 24 Bit 
- OR R4,R1 ;R3|=R1+Zusatzinformation steckt in einem Spezialfunktions-Register 
 +Datenzugriff: 
 +(graphik)
- MULU R4,R4 ;y*y +Codezugriff
-;32 bit SUB +(Graphik)
- SUB MDL,R12 ; +
- SUBC MDH,R13 ;z=y*y-x +
- JMPA cc_Z,DONE ;0=y*y-x +
- JMPA cc_C,BIT_OK ;0<y*y-x +
- XOR R4,R1 ;reset y +
-BIT_OK+
- SHR R1,#1 +
- JMPA cc_NC,NEXT_BIT  +
-DONE:+
-*snip snap*+Mapping der allgemeinen Register in den internen RAM 
 +allgemeine Register R0 - R15 je 16 Bit
 +{{:wiki:study:emr:internerrom.jpg|:wiki:study:emr:internerrom.jpg}}
 +
 +Kontextwechsel:
 +  * Austausch sämtlicher Registerinhalte
 +  * benötigt bei Interruptbearbeitung
 +  * auch mögliche Überlappung zwecks Parameterübergabe
 +
 +===== Details zur internen Preripherie =====
 +
 +  * typisch konfigurierbare Pins
 +
 +==== Paralelle digitale E/A ====
 +
 +  * max 9 Ports (P0 bis P8) 8 und 16 Bit breit
 +  * SFR für Parallelports
 +  * P0, P1 ...Datenregister
 +  * DP0, DP1 ... Richtung (auch bitweise) (0 - Eingang, 1 - Ausgang)
 +
 +Bsp Tastatur und LEDs
 +
 +==== Timer-Baugruppe ====
 +
 +  * GPT1: T2, T3, T4
 +  * GPT2: T5, T6
 +
 +Blockschaltbild:
 +
 +{{:wiki:study:emr:timer_block.jpg|:wiki:study:emr:timer_block.jpg}}
 +
 +
 +==== Speicheroperanden ====
 +
 +  * 1 Wort 4 Byte
 +Idirekte Addressierung:
 +  STW A1, *A10
 +
 +Offsetaddressierung:
 +  STW A1, *+A10(1)
 +
 +{{:wiki:study:emr:speicheroperanden.jpg|:wiki:study:emr:speicheroperanden.jpg}}
 +
 +<code>
 +STB A1, *+A10(1)
 +STB A1, *-A10(2)
 +STB A1, *+A10(A11)
</code> </code>
 +Register A10 wird nicht verändert
 +<code>
 +STB A1, *++A10(2)
 +STB A1, *A10++(2)
 +STB A1, *--A10(2)
 +STB A1, *A10--(5)
 +</code>
 +Register A10 wird verändert! Präincrement, Postincrement bzw ~decrement
 +
 +==== Prädikatierte Ausführung ====
 +
 +Klassisch:
 +<code>
 +CMP
 +JMP <cond> -> C=5 ->
 +C=1
 +JMP ->
 +</code>
 
wiki/study/emr.1110382150.txt.gz · Last modified: 2005/08/19 12:36 (external edit)
 
Except where otherwise noted, content on this wiki is licensed under the following license:CC Attribution-Noncommercial-Share Alike 3.0 Unported
Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki