SignalprozessorenPeripherie: EDMA
Prof. Dr.-Ing. Franz Quint
Seite 2Prof. Dr.Prof. Dr.--Ing. Franz Quint, Dr. Naim Dahnoun (c) Texas Instruments 2002Ing. Franz Quint, Dr. Naim Dahnoun (c) Texas Instruments 2002
Lernziele
• Nutzen der DMA (EDMA)• Funktionsweise der EDMA
– Transfer-Modi
– Synchronisation
• Programmierung der EDMA– Doppelpufferbetrieb
Seite 3Prof. Dr.Prof. Dr.--Ing. Franz Quint, Dr. Naim Dahnoun (c) Texas Instruments 2002Ing. Franz Quint, Dr. Naim Dahnoun (c) Texas Instruments 2002
Nutzen der DMA
• DMA: direct memory access• EDMA: enhanced direct memory access• ein „Kopierwerk“ zum Speicherzugriff, d.h. zum Transfer
von Daten von einer Speicheradresse zu einer anderen ohne Zutun der CPU
• CPU kann während des Speichertransfers für andere Aufgaben verwendet werden
• CPU wird nur benötigt zum Parametrieren und Starten der Datentransfers
Seite 4Prof. Dr.Prof. Dr.--Ing. Franz Quint, Dr. Naim Dahnoun (c) Texas Instruments 2002Ing. Franz Quint, Dr. Naim Dahnoun (c) Texas Instruments 2002
EDMA beim C6711
• Datentransfer zwischen der Peripherie (also externer Speicher, McBSP, HPI usw.) einerseits und dem L2-Cache andererseits
• Nur bei C64x: spezieller Modus PDT zum Transfer zwischen Peripherie und externem Speicher
Seite 5Prof. Dr.Prof. Dr.--Ing. Franz Quint, Dr. Naim Dahnoun (c) Texas Instruments 2002Ing. Franz Quint, Dr. Naim Dahnoun (c) Texas Instruments 2002
EDMA bei C6711
• arbeitet unabhängig von der CPU• Konflikte nur dann, wenn CPU und EDMA zur selben Zeit
dieselbe Speicherstelle adressieren wird von der Speicherarbitrierungslogik aufgelöst
• Datentransfer in einem Zyklus, wenn Quelle und Ziel Lesen und Schreiben in einem Zyklus erlauben kein Overhead durch die EDMA
• 16 benutzbare EDMA-Kanäle• 1 HPI-Kanal (nicht dem Benutzer zugänglich)• 1 QDMA (quick DMA) Kanal• CPU hat Priorität beim Zugriff auf L2-Cache gegenüber EDMA
Seite 6Prof. Dr.Prof. Dr.--Ing. Franz Quint, Dr. Naim Dahnoun (c) Texas Instruments 2002Ing. Franz Quint, Dr. Naim Dahnoun (c) Texas Instruments 2002
Definitionen
• Basiselemente eines EDMA-Transfers sind:– element (Wort)
– frame (Rahmen)
– block (Block)
Element
ESIZE00: 32-bits01: 16-bits10: 8-bits11: rsvd
Elem 1Elem 2
Elem N
Frame
..
Frame 1Frame 2
Frame M
Block
..
N = Element count (ELECNT).M = Frame count (FRMCNT).
Seite 7Prof. Dr.Prof. Dr.--Ing. Franz Quint, Dr. Naim Dahnoun (c) Texas Instruments 2002Ing. Franz Quint, Dr. Naim Dahnoun (c) Texas Instruments 2002
EDMA - Transferarten
• es wird immer ein Block transferiert: M frames mit jeweils N Elementen
• Zwei Arten von Transfers: 1D-Transfer und 2D-Transfer• 1D-Transfer:
– M eindimensionale Vektoren (frame) mit jeweils N Elementen
– Elemente nicht unbedingt benachbart
• 2D-Transfer: – M zweidimensionale Felder (arrays) mit jeweils N Elementen
– Elemente in einer Zeile zwingend benachbart
• Transferarten auf Quell- und Zielseite beliebig mischbar
Seite 8Prof. Dr.Prof. Dr.--Ing. Franz Quint, Dr. Naim Dahnoun (c) Texas Instruments 2002Ing. Franz Quint, Dr. Naim Dahnoun (c) Texas Instruments 2002
Programmierung der EDMA
• EDMA hat PaRAM – Parameter RAM
• jeder Kanal ein Datensatz (also insgesamt 16), enthält aktuelle Parameter
• plus insgesamt 69 Vorratsparametersätze (reload parameters)
• also insgesamt 85 Parametersätze (2k Byte = 85 * 24 Byte + 8 Byte Rest
OptionsSource
DestinationIndex
Link AddrCount Reload31 16 15 0
Transfer Count
Channel 15
Channel 1...
Channel 0
…Reload 68
Reload 0
PaRAM
Seite 9Prof. Dr.Prof. Dr.--Ing. Franz Quint, Dr. Naim Dahnoun (c) Texas Instruments 2002Ing. Franz Quint, Dr. Naim Dahnoun (c) Texas Instruments 2002
Programmierung der EDMA
• ein Parametersatz enthält alle zur Durchführung der DMAnotwendigen Informationen
• der Benutzer programmiert sowohl die Kanal-Parametersätze als auch die Vorratsparametersätze
• nach Beendigung des EDMA-Transfers werden die Vorratsparametersätze automatisch in den Kanal-Datensatz geladen (Vorgang: Transfer-Verbindung, linking)
Parametrierung muß nicht zur Laufzeit, sondern kann zur Initialisierungszeit durchgeführt werden
Seite 10Prof. Dr.Prof. Dr.--Ing. Franz Quint, Dr. Naim Dahnoun (c) Texas Instruments 2002Ing. Franz Quint, Dr. Naim Dahnoun (c) Texas Instruments 2002
EDMA Parametersatz
• Source: Startadresse der Quelle• Transfer Count:
– obere 16 Bit: Anzahl der zu übertragenden Frames (arrays) (frame count FRMCNT)
– untere 16 Bit: Anzahl der Elemente in einem Frame (element count ELECNT)
• Destination: Startadresse des Ziels• Index:
– obere 16 Bit: Offset zum nächsten Frame (Array)
– untere 16 Bit: Offset zum nächsten Element
• Count Reload: nur in der Betriebsart 1D & Element-synchronisiert notwendig, um Adresse zu berechnen; =ELECNT(0)
Options
Source
Destination
Index
Link AddrCount Reload31 16 15 0
Transfer Count
Seite 11Prof. Dr.Prof. Dr.--Ing. Franz Quint, Dr. Naim Dahnoun (c) Texas Instruments 2002Ing. Franz Quint, Dr. Naim Dahnoun (c) Texas Instruments 2002
Veränderung von ELECNT und FRMCNT
Seite 12Prof. Dr.Prof. Dr.--Ing. Franz Quint, Dr. Naim Dahnoun (c) Texas Instruments 2002Ing. Franz Quint, Dr. Naim Dahnoun (c) Texas Instruments 2002
EDMA Parametersatz
• Link Addr: Adresse des reload-Parametersatzes relativ zur Adresse 0x01A0 0000
• Options:
Options
Source
Destination
Index
Link AddrCount Reload31 16 15 0
Transfer Count
ESIZE 2DS TCCTCINTSUMPRI31 29
2DD DUM LINK FS28 27 26 25 24 23 22 21 20 19 16 1 0
RSVD15 2
Seite 13Prof. Dr.Prof. Dr.--Ing. Franz Quint, Dr. Naim Dahnoun (c) Texas Instruments 2002Ing. Franz Quint, Dr. Naim Dahnoun (c) Texas Instruments 2002
EDMA Optionen
• PRI: EDMA-Priorität
– 00 : dringend, reserviert für Cache-Controller
– 01 : hoch
– 10 : niedrig
– jeder Priorität ist eine Warteschlange zugeordnet (Länge 8)
– aus jeder Warteschlange kann ein Auftrag bearbeitet werden
– Warteschlange voll EDMAsteht
Aufträge gleichmäßig auf Prioritäten verteilen!
Seite 14Prof. Dr.Prof. Dr.--Ing. Franz Quint, Dr. Naim Dahnoun (c) Texas Instruments 2002Ing. Franz Quint, Dr. Naim Dahnoun (c) Texas Instruments 2002
EDMA Optionen
• ESIZE: Elementgröße– 00 – 32 Bit; 01 – 16 Bit; 10 – 8 Bit;
• 2DS, 2DD: Transferart der EDMA, für Quelle (S) und Ziel (D)=0: 1D – Transfer; =1: 2D – Transfer
• SUM, DUM – Source/Destination Update Mode=00: kein Adressinkrement (McBSP!!)
=01: Inkrement (bei 1D-Transfer und FS=0 um Element-Size)
=10: Dekrement (bei 1D-Transfer und FS=0 um Element-Size)
=11: Inkrement um Element-Index, Frame-Index
– siehe SPRU190d.pdf, Tabelle 6-11, 6-12
ESIZE 2DS TCCTCINTSUMPRI31 29
2DD DUM LINK FS28 27 26 25 24 23 22 21 20 19 16 1 0
RSVD15 2
Seite 15Prof. Dr.Prof. Dr.--Ing. Franz Quint, Dr. Naim Dahnoun (c) Texas Instruments 2002Ing. Franz Quint, Dr. Naim Dahnoun (c) Texas Instruments 2002
EDMA Optionen
• TCINT: Transfer Complete Interrupt Enable=1: EDMA erzeugt Interrupt EDMA_INT an der CPU (eine Art GIE für
die EDMA)
– es gibt nur einen EDMA-Interrupt
– um anzuzeigen, welcher Kanal (bzw. EDMA-Parametersatz) fertig ist, wird das in TCC (Transfer Complete Code) angegebene Bit des CIPR (Channel Interrupt Pending Register) gesetzt
– um Interrupt zu erzeugen muß auch der Kanal in CIE (ChannelInterrupt Enable Register) freigegeben sein (wie bei IER)
– an der CPU muß natürlich auch der EDMA_INT zugelassen sein
• TCC: Transfer Complete Code – zum Anzeigen, welcher Kanal (Parametersatz) fertig ist 16 mögliche Werte
ESIZE 2DS TCCTCINTSUMPRI31 29
2DD DUM LINK FS28 27 26 25 24 23 22 21 20 19 16 1 0
RSVD15 2
Seite 16Prof. Dr.Prof. Dr.--Ing. Franz Quint, Dr. Naim Dahnoun (c) Texas Instruments 2002Ing. Franz Quint, Dr. Naim Dahnoun (c) Texas Instruments 2002
EDMA Optionen
• Link:=1: der mit der Link-Adresse angegebene reload-Parametersatz wird
nach Ende des Auftrags geladen
• FS: Frame Sync= 0: Element/Array – synchronisiert
• bei Auftreten des Synchronisierungsereignisses wird ein Element (1D), bzw. ein array (2D) übertragen
=1: Frame – synchronisiert
• bei Auftreten des Synchronisierungsereignisses wird ein Frame übertragen
– Achtung: FS-Signal hat Einfluß auf die Bedeutung der Index (=Offset ab Frame-Anfang bei FS=1, sonst ab Ende)
ESIZE 2DS TCCTCINTSUMPRI31 29
2DD DUM LINK FS28 27 26 25 24 23 22 21 20 19 16 1 0
RSVD15 2
Seite 17Prof. Dr.Prof. Dr.--Ing. Franz Quint, Dr. Naim Dahnoun (c) Texas Instruments 2002Ing. Franz Quint, Dr. Naim Dahnoun (c) Texas Instruments 2002
EDMA Optionen
Seite 18Prof. Dr.Prof. Dr.--Ing. Franz Quint, Dr. Naim Dahnoun (c) Texas Instruments 2002Ing. Franz Quint, Dr. Naim Dahnoun (c) Texas Instruments 2002
EDMA Optionen
Seite 19Prof. Dr.Prof. Dr.--Ing. Franz Quint, Dr. Naim Dahnoun (c) Texas Instruments 2002Ing. Franz Quint, Dr. Naim Dahnoun (c) Texas Instruments 2002
EDMA Synchronisation
• zwei Arten von Transfers– unsynchronisierte
– synchronisierte
• unsynchronisierte Transfers:– werden durch die CPU gestartet, unabhängig vom Auftreten
eines externen Ereignisses
– „normaler Kopierauftrag“
– jeder der 16 Kanäle kann verwendet werden
– Start durch Schreiben auf das entsprechende Bit im ESR(Event Set Register), welches das Setzen des Bits im ER (Event Register) veranlaßt so als ob ein Ereignis aufgetreten wäre
– analog zu ISR und IFR
Seite 20Prof. Dr.Prof. Dr.--Ing. Franz Quint, Dr. Naim Dahnoun (c) Texas Instruments 2002Ing. Franz Quint, Dr. Naim Dahnoun (c) Texas Instruments 2002
EDMA Synchronisation
• synchronisierte Transfers:– werden durch externes Ereignis gestartet
– jedem möglichen Ereignis ist genau ein DMA-Kanalzugeordnet
– externes Ereignis bedingt das Setzen des Bits im ER (Event Register)
Seite 21Prof. Dr.Prof. Dr.--Ing. Franz Quint, Dr. Naim Dahnoun (c) Texas Instruments 2002Ing. Franz Quint, Dr. Naim Dahnoun (c) Texas Instruments 2002
EDMA Events
Kanal0123456789101112131415
EventDSPINTTINT0TINT1
SD_INTEXT_INT4EXT_INT5EXT_INT6EXT_INT7
EDMA_TCC8EDMA_TCC9EDMA_TCC10EMDA_TCC11
XEVT0REVT0XEVT1REVT1
BeschreibungHost port host to DSP interruptTimer 0 interruptTimer 1 interruptEMIF SDRAM timer interruptExternal interrupt pin 4External interrupt pin 5External interrupt pin 6External interrupt pin 7EDMA transfer complete code 1000b interruptEDMA TCC 1001b interruptEDMA TCC 1010b interruptEDMA TCC 1011b interruptMcBSP0 transmit eventMcBSP0 receive eventMcBSP1 transmit eventMcBSP1 receive event
Seite 22Prof. Dr.Prof. Dr.--Ing. Franz Quint, Dr. Naim Dahnoun (c) Texas Instruments 2002Ing. Franz Quint, Dr. Naim Dahnoun (c) Texas Instruments 2002
Synchronisations-/Transferarten
• 1D-Transferarten:– Element-synchronisiert
– Frame-synchronisiert
• 1D-Transfer, Element-synchronisiert– EDMA transferiert elementweise, ein Element je Sync-Event,
bis gesamter Frame übertragen
– ELECNT wird dekrementiert und am Ende des Frames aus Count Reload erneut geladen, FRMCNT wird dekrementiert
– FRMIDX wird zur Adresse des letzten Elementes addiert, um Anfangsadresse des neuen Frames zu erhalten
Seite 23Prof. Dr.Prof. Dr.--Ing. Franz Quint, Dr. Naim Dahnoun (c) Texas Instruments 2002Ing. Franz Quint, Dr. Naim Dahnoun (c) Texas Instruments 2002
Beispiel: 1D-Transfer, Element-synchronisiert
8 Bit
891011
8-Bit Werte1 2 3 4 5 6
7 12
13 14 15 16 17 18
19 20 21 22 23 24
25 26 27 28 29 30
8 9 10 11891011
8 9 10 11
Quelle Ziel
Sync event
• EZISE = 10b 8 Bit• ELECNT = 4• FRMCNT = 0 !! FRMCNT = M-1• SUM = 01b Inkrement um ESIZE
Seite 24Prof. Dr.Prof. Dr.--Ing. Franz Quint, Dr. Naim Dahnoun (c) Texas Instruments 2002Ing. Franz Quint, Dr. Naim Dahnoun (c) Texas Instruments 2002
Beispiel: 1D-Transfer, Element-synchronisiert
• ESIZE=10b 8 Bit• ELECNT = 5, FRMCNT = 0• SUM=11b Inkrement mit ELEIDX• ELEIDX = 4• Adresse neues Frame = Adresse letztes Element +FRMIDX• DUM = 01b umsortieren!
DST:
8 Bit
610141822
8-Bit Werte1 2 3 459 10 11 12
13 14 15 1617 18 19 20
6 7 8
21 22 23 2425 26 27 28
610141822
678910
Quelle Ziel
SRC:Sync event
Seite 25Prof. Dr.Prof. Dr.--Ing. Franz Quint, Dr. Naim Dahnoun (c) Texas Instruments 2002Ing. Franz Quint, Dr. Naim Dahnoun (c) Texas Instruments 2002
Synchronisations-/Transferarten
• 1D-Transfer, Frame-synchronisiert– EDMA transferiert Frame-weise, ein ganzes Frame je Sync-Event
– ELECNT ohne Bedeutung
– FRMIDX wird zur Adresse des ersten Elementes addiert, um Anfangsadresse des neuen Frames zu erhalten
Seite 26Prof. Dr.Prof. Dr.--Ing. Franz Quint, Dr. Naim Dahnoun (c) Texas Instruments 2002Ing. Franz Quint, Dr. Naim Dahnoun (c) Texas Instruments 2002
Beispiel: 1D-Transfer, Frame-synchronisiert
• ESIZE=01b• ELECNT = 3, FRMCNT = 4• SUM = 11b, 2DS = 0, FS = 1• FRMIDX = 16, ELEIDX = 4
16 Bit
810121636...404244...
16-Bit Werte1 2 3 4 5 6 7
12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
8 9 10 11
29 30 31 32 33 34 35
36 37 38 39 40 41 42
43 44 45 46 47 48 49
81012128 10
Quelle Ziel
2016 182824 26
32 3436
16...36404244
40 4244
Sync event
Seite 27Prof. Dr.Prof. Dr.--Ing. Franz Quint, Dr. Naim Dahnoun (c) Texas Instruments 2002Ing. Franz Quint, Dr. Naim Dahnoun (c) Texas Instruments 2002
Synchronisations-/Transferarten
• 2D-Transferarten– Array-synchronisiert
– Block-synchronisiert
– keine elementweise Synchronisation bei 2D-Transfer
• Array-synchronisierter Transfer– entspricht Frame-synchronisiertem Transfer bei 1D-Transfer,
allerdings keine Lücken zwischen Elementen
– FRMCNT = Anzahl der Arrays minus 1
Seite 28Prof. Dr.Prof. Dr.--Ing. Franz Quint, Dr. Naim Dahnoun (c) Texas Instruments 2002Ing. Franz Quint, Dr. Naim Dahnoun (c) Texas Instruments 2002
2D-Transfer Array-synchronisiert
• ESIZE = 01b (16 Bit)
• ELECNT = 4, FRMCNT = 4
• SUM = 01b, 2DS = 1b
• FRMIDX = 14, ELEIDX = N/A
• Adresse neues Array = Adresse erstes Element +FRMIDX
16-Bit Werte1 2 3 4 5 6 7
12 13 1415 16 17 18 19 20 2122 23 24 25 26 27 28
8 9 10 11
29 30 31 32 33 34 3536 37 38 39 40 41 4243 44 45 46 47 48 49
16 Bit
891011
...15
40
DST:9 118 10
SRC:
Quelle Ziel
891011
16 1815 1723 2522 2430 3229 3137 4036 38
15...40
Sync event
Seite 29Prof. Dr.Prof. Dr.--Ing. Franz Quint, Dr. Naim Dahnoun (c) Texas Instruments 2002Ing. Franz Quint, Dr. Naim Dahnoun (c) Texas Instruments 2002
2D-Transfer, Block-synchronisiert
• der gesamte Block wird bei Auftreten des Sync-eventsübertragen
• Adresse neues Array = Adresse letztes Element + FRMIDX
Seite 30Prof. Dr.Prof. Dr.--Ing. Franz Quint, Dr. Naim Dahnoun (c) Texas Instruments 2002Ing. Franz Quint, Dr. Naim Dahnoun (c) Texas Instruments 2002
2D-Transfer, Block-synchronisiert
• ESIZE = 01b (16 Bit)
• ELECNT = 4, FRMCNT = 4
• SUM = 01b, 2DS = 1b
• FRMIDX = 8, ELEIDX = N/A
• Adresse neues Array = Adresse letztes Element +FRMIDX
16-Bit Werte1 2 3 4 5 6 7
12 13 1415 16 17 18 19 20 2122 23 24 25 26 27 28
8 9 10 11
29 30 31 32 33 34 3536 37 38 39 40 41 4243 44 45 46 47 48 49
16 Bit
891011
...15
40
DST:9 118 10
SRC: 891011
16 1815 1723 2522 2430 3229 3137 4036 38
15...40
Quelle Ziel
Sync event
Seite 31Prof. Dr.Prof. Dr.--Ing. Franz Quint, Dr. Naim Dahnoun (c) Texas Instruments 2002Ing. Franz Quint, Dr. Naim Dahnoun (c) Texas Instruments 2002
EDMA Interrupt
• Interrupt von der EDMA an die CPU• einen (EDMA_INT) für alle Kanäle• Bit in CIPR (Channel Interrupt Pending Register) wird
gesetzt• CPU muß alle Bit in CIPR prüfen:
– am Anfang der ISR, um festzustellen, welcher Kanal Interruptausgelöst hat
– am Ende der ISR, um festzustellen, ob während der Abarbeitung der ISR weitere Interrupts aufgetreten sind
Seite 32Prof. Dr.Prof. Dr.--Ing. Franz Quint, Dr. Naim Dahnoun (c) Texas Instruments 2002Ing. Franz Quint, Dr. Naim Dahnoun (c) Texas Instruments 2002
EDMA Interrupt
• TCINT – soll Interrupt ausgelöst werden• TCC – welcher Bit in CIPR gesetzt wird• damit Interrupt zur CPU gelangt, muß Bit des
entsprechenden Kanals in CIER (Channel Interrupt EnableRegister) gesetzt werden
TCINT TCC
31 20 19 16 0OPTIONSPTIONS
rsvd CIP15 CIP14 CIP8 CIP7 CIP6 CIP5 CIP4 CIP3 CIP2 CIP1 CIP0
31 15 14 8 7 6 5 4 3 2 1 0CIPRCIPR
CIERCIER rsvd CIE15 CIE14 CIE8 CIE7 CIE6 CIE5 CIE4 CIE3 CIE2 CIE1 CIE0
Seite 33Prof. Dr.Prof. Dr.--Ing. Franz Quint, Dr. Naim Dahnoun (c) Texas Instruments 2002Ing. Franz Quint, Dr. Naim Dahnoun (c) Texas Instruments 2002
Verkettung (chaining) von EDMA - Transfers
• Linking: derselbe EDMA Kanal wird nach Ende des Transfers mit einem Reload-Parametersatz geladen und startet neu
• Verkettung: Start eines anderen EDMA-Kanals wird durch das Ende eines Transfers ausgelöst
• quasi: EDMA-Controller gibt Interrupt an sich selbst• allerdings: nur die Kanäle 8 – 11 können mit dieser
Methode gestartet werden • durch Setzen des Bits im CCER
CCE11 CCE10 ReservedCCE8CCE9Reserved
11 10 7 08931 12
Channel Chain Enable Register (CCER)
Seite 34Prof. Dr.Prof. Dr.--Ing. Franz Quint, Dr. Naim Dahnoun (c) Texas Instruments 2002Ing. Franz Quint, Dr. Naim Dahnoun (c) Texas Instruments 2002
Programmierung der EDMA
• direktes Beschreiben der EDMA-Parametersätze und der EDMA-Register– fehleranfällig
– nicht empfohlen
• mittels CSL– EDMA-Modul der CSL
– Funktionen
– Makros zum Erzeugen von Registerwerten aus symbolischen Konstanten
– Struktur EDMA_Config
– benötigt auch IRQ-Modul
• über DSP/BIOS– graphische Variante
– erzeugt Initialisierungscode mittels CSL-Funktionen
Seite 35Prof. Dr.Prof. Dr.--Ing. Franz Quint, Dr. Naim Dahnoun (c) Texas Instruments 2002Ing. Franz Quint, Dr. Naim Dahnoun (c) Texas Instruments 2002
Programmierung der EDMA
• Übersicht EDMA-Modul der CSL
Konstanten Funktionen Makros Struktur EDMA_CHA_CNT EDMA_allocTable EDMA_ADDR (<REG>) EDMA_Config EDMA_SUPPORT EDMA_allocTableEx EDMA_RGET(<REG>)
EDMA_TABLE_CNT EDMA_chain EDMA_RSET(<REG>,X) EDMA_clearChannel EDMA_FGET(<REG>,<FIELD>)
EDMA_clearParm EDMA_FSET(<REG>,<FIELD>,fieldval) EDMA_close EDMA_FSETS(<REG>,<FIELD>,<SYM>) EDMA_config EDMA_RGETA(addr, <REG>)
EDMA_configArgs EDMA_RSETA(addr,<REG>,x) EDMA_disableChainin EDMA_FGETA(addr,<REG>,<FIELD>) EDMA_enableChainin EDMA_FSETA(addr,<REG>,<FIELD>,fieldval) EDMA_disableChanne EDMA_FSETSA(addr,<REG>,<FIELD>,<SYM>)EDMA_enableChannel EDMA_ADDRH(h,<REG>)
EDMA_freeTable EDMA_RGETH(h,<REG>) EDMA_freeTableEx EDMA_RSETH(h,<REG>,x) EDMA_getChannel EDMA_FGETH(h,<REG>,<FIELD>) EDMA_getConfig EDMA_FSETH(h,<REG>,<FIELD>,fieldval)
…
• Siehe spru401d.pdf CSL User‘s guide, Kapitel 8
Seite 36Prof. Dr.Prof. Dr.--Ing. Franz Quint, Dr. Naim Dahnoun (c) Texas Instruments 2002Ing. Franz Quint, Dr. Naim Dahnoun (c) Texas Instruments 2002
Programmierung der EDMA mit CSL
• Beispiel: einen Datenvektor im Speicher verschieben
• Schritte:– Variablendefinition für EDMA Handle und Konfigurationsstruktur
EDMA_Handle hEdma;
EDMA_Config cfgEdma;
Seite 37Prof. Dr.Prof. Dr.--Ing. Franz Quint, Dr. Naim Dahnoun (c) Texas Instruments 2002Ing. Franz Quint, Dr. Naim Dahnoun (c) Texas Instruments 2002
Programmierung der EDMA mit CSL
– Konfiguration festlegen
cfgEdma ={ EDMA_OPT_RMK(EDMA_OPT_PRI_LOW,EDMA_OPT_ESIZE_32BIT,EDMA_OPT_2DS_NO,EDMA_OPT_SUM_INC,EDMA_OPT_2DD_NO,EDMA_OPT_DUM_INC,EDMA_OPT_TCINT_YES,EDMA_OPT_TCC_OF(4),EDMA_OPT_LINK_NO, /* nur einer */EDMA_OPT_FS_YES /* alles ! */),
EDMA_SRC_OF((unsigned int)source_ptr),EDMA_CNT_OF(BUFFER_SIZE),EDMA_DST_OF((unsigned int)dest_data),EDMA_IDX_OF(0x00000004), /* 32 Bit */EDMA_RLD_OF(0x00000000)
};
Seite 38Prof. Dr.Prof. Dr.--Ing. Franz Quint, Dr. Naim Dahnoun (c) Texas Instruments 2002Ing. Franz Quint, Dr. Naim Dahnoun (c) Texas Instruments 2002
Programmierung der EDMA mit CSL
– EDMA-Kanal öffnen
– Kanal konfigurieren
– EDMA freigeben ( EDMA startet bei Eintreffen des Event)
– am Ende: EDMA-Event blockieren und EDMA schließen
hEdma = EDMA_open(EDMA_CHA_EXTINT4, EDMA_OPEN_RESET);
EDMA_config(hEdma,&cfgEdma);
EDMA_enableChannel(hEdma);
EDMA_disableChannel(hEdma);
EDMA_close(hEdma);
Seite 39Prof. Dr.Prof. Dr.--Ing. Franz Quint, Dr. Naim Dahnoun (c) Texas Instruments 2002Ing. Franz Quint, Dr. Naim Dahnoun (c) Texas Instruments 2002
Programmierung mit DSP/BIOS
• Konfiguration erzeugen
Seite 40Prof. Dr.Prof. Dr.--Ing. Franz Quint, Dr. Naim Dahnoun (c) Texas Instruments 2002Ing. Franz Quint, Dr. Naim Dahnoun (c) Texas Instruments 2002
Programmierung mit DSP/BIOS
• in den Adressfelder (SRC_ADR, DST_ADR) können auch Variablennamen angegeben werden, diese müssen dann in der CSL als extern deklariert werden
• es wird Initialisierungscode erzeugt
Seite 41Prof. Dr.Prof. Dr.--Ing. Franz Quint, Dr. Naim Dahnoun (c) Texas Instruments 2002Ing. Franz Quint, Dr. Naim Dahnoun (c) Texas Instruments 2002
Ein-/Ausgabe und Algorithmus
• typische Struktur einer Signalverarbeitungsaufgabe– Einlesen der Abtastwerte (von externen Hardware: z.B. shared
memory oder serielle Schnittstelle)
– Durchführung der Berechnungen (z.B. Filter)
– Ausgabe der berechneten Werte (meist ähnliche HW wie bei der Eingabe)
• bei der Verarbeitung eines oder weniger Abtastwerte:– im Verhältnis zu den Verarbeitungsalgorithmen großer Aufwand für
Ein- und Ausgabe sowie Funktionsaufrufe
Signalverarbeitung: soweit möglich immer Blockverarbeitung
Seite 42Prof. Dr.Prof. Dr.--Ing. Franz Quint, Dr. Naim Dahnoun (c) Texas Instruments 2002Ing. Franz Quint, Dr. Naim Dahnoun (c) Texas Instruments 2002
Ein-/Ausgabe und Algorithmus
• je größer die Blöcke, um so besser das Verhältnis der Algorithmusrechenzeit zur Rechenzeit für Verwaltungsaufgaben
• Blockgröße wird beschränkt durch:– verfügbaren Speicher
– zulässige Totzeit
• CPU-Zeit ist zu kostbar für– das Warten auf Ein- und Ausgabehardware
immer mit Interrupts arbeiten
– das Kopieren von Daten
immer mit EDMA arbeiten
Seite 43Prof. Dr.Prof. Dr.--Ing. Franz Quint, Dr. Naim Dahnoun (c) Texas Instruments 2002Ing. Franz Quint, Dr. Naim Dahnoun (c) Texas Instruments 2002
Doppelpufferbetrieb
McBSP
Bufferout_ping
DACDACCPUCPU
EDMAEDMAEDMAEDMAADCADC
McBSP
Bufferout_pong
Bufferin_ping
Bufferin_pong XEVT0
FS=08KHz
REVT0
FS=08KHz
Reload PaRAM Reload PaRAM
EDMA_INT 8 kHz / buf_len
Seite 44Prof. Dr.Prof. Dr.--Ing. Franz Quint, Dr. Naim Dahnoun (c) Texas Instruments 2002Ing. Franz Quint, Dr. Naim Dahnoun (c) Texas Instruments 2002
Aufgabe
• Schreiben Sie ein Programm, welches ein Signal mit einem FIR-Filter filtert
• Filter:– FIR, Ordnung 38 (39 Koeffizienten)
– Bandpass, Durchlassbereich 1200 Hz – 1400 Hz
– entworfen mit Matlab fdatool
– Filterkoeffizienten: bp_filter_1200_1400.h
– oder entwerfen Sie ihr Wunschfilter
• Vorgaben:– Doppelpufferbetrieb mit EDMA: EDMA liest Daten von
McBSP0 (DRR) und schreibt Daten auf McBSP0 (DXR)
– EDMA synchronisiert sich auf REVT0, bzw. XEVT0
– EDMA verwendet Interrupt zur Synchronisierung der CPU
Seite 45Prof. Dr.Prof. Dr.--Ing. Franz Quint, Dr. Naim Dahnoun (c) Texas Instruments 2002Ing. Franz Quint, Dr. Naim Dahnoun (c) Texas Instruments 2002
Zur Aufgabe: Fragen bzw. Hinweise
• Algorithmus– Rechenvorschrift für FIR-Filter
– wie verhindert man, dass das Filter mit jedem Block neu einschwingt?
• Programmstruktur– Verwendung von CSL oder DSP/BIOS?
– Initialisierung, Konfiguration von: McBSP, EDMA, HWI
– wo wird Filterfunktion aufgerufen?
– EDMA: Peripherie interner Speicher
– wo liegen die Puffer?
– wie konfiguriert man den Cache?
Seite 46Prof. Dr.Prof. Dr.--Ing. Franz Quint, Dr. Naim Dahnoun (c) Texas Instruments 2002Ing. Franz Quint, Dr. Naim Dahnoun (c) Texas Instruments 2002
Lage von Variablen im Speicher
• Cache auf z.B. 2-way konfigurieren (2 Bänke Cache, 2 Bänke Speicher)
• Erstellen eines Speicher-Segments in DSP-BIOS (oder in der Linker-Command-Datei)
• Erstellung einer eigenen lnk-cmd (die von DSP-BIOS erzeugte dort includen!)
• Platzierung eines eigenen Variablen-Segments in dem definierten Speicher-Segment (nächste Folie)
• Platzierung der gewünschten Variablen im eigenen Variablen-Segment (nächste Folie)
Seite 47Prof. Dr.Prof. Dr.--Ing. Franz Quint, Dr. Naim Dahnoun (c) Texas Instruments 2002Ing. Franz Quint, Dr. Naim Dahnoun (c) Texas Instruments 2002
Eigenes lnk-cmd
• Datei: edma_csl_puffer.cmd:/* Include des von DSP/BIOS erzeugten lnk-cmd */
-l edma_csl_puffercfg.cmd
/* meine eigene Section in meinem Speicher */
SECTIONS {
.datenpuffer: {} > Puffer
}
• C-Quelldatei:#pragma DATA_SECTION(Bufferin_ping, “.datenpuffer");
short Bufferin_ping[500];
...
Seite 48Prof. Dr.Prof. Dr.--Ing. Franz Quint, Dr. Naim Dahnoun (c) Texas Instruments 2002Ing. Franz Quint, Dr. Naim Dahnoun (c) Texas Instruments 2002
Aufgabe: Fragen bzw. Hinweise
• EDMA– welche Kanäle werden verwendet?
– Doppelpufferbetrieb: 500 Werte in einen Puffer, danach 500 in den anderen usw. linking von Transfers
– reload-Parametersätze mit edma_allocTable(-1) reservieren
– EDMA-Kanal und reload-Parametersätze entsprechend konfigurieren
– EDMA-Interrupt an die CPU freigeben
– welcher EDMA-Kanal (Parametersatz) soll Interrupt bei der CPU auslösen?