DSP 6 EDMA - tong-cha.de · Seite 7 Prof. Dr.-Ing. Franz Quint, Dr. Naim Dahnoun (c) Texas...

48
Signalprozessoren Peripherie: EDMA Prof. Dr.-Ing. Franz Quint

Transcript of DSP 6 EDMA - tong-cha.de · Seite 7 Prof. Dr.-Ing. Franz Quint, Dr. Naim Dahnoun (c) Texas...

Page 1: DSP 6 EDMA - tong-cha.de · Seite 7 Prof. Dr.-Ing. Franz Quint, Dr. Naim Dahnoun (c) Texas Instruments 2002 EDMA - Transferarten • es wird immer ein Block transferiert: M frames

SignalprozessorenPeripherie: EDMA

Prof. Dr.-Ing. Franz Quint

Page 2: DSP 6 EDMA - tong-cha.de · Seite 7 Prof. Dr.-Ing. Franz Quint, Dr. Naim Dahnoun (c) Texas Instruments 2002 EDMA - Transferarten • es wird immer ein Block transferiert: M frames

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

Page 3: DSP 6 EDMA - tong-cha.de · Seite 7 Prof. Dr.-Ing. Franz Quint, Dr. Naim Dahnoun (c) Texas Instruments 2002 EDMA - Transferarten • es wird immer ein Block transferiert: M frames

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

Page 4: DSP 6 EDMA - tong-cha.de · Seite 7 Prof. Dr.-Ing. Franz Quint, Dr. Naim Dahnoun (c) Texas Instruments 2002 EDMA - Transferarten • es wird immer ein Block transferiert: M frames

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

Page 5: DSP 6 EDMA - tong-cha.de · Seite 7 Prof. Dr.-Ing. Franz Quint, Dr. Naim Dahnoun (c) Texas Instruments 2002 EDMA - Transferarten • es wird immer ein Block transferiert: M frames

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

Page 6: DSP 6 EDMA - tong-cha.de · Seite 7 Prof. Dr.-Ing. Franz Quint, Dr. Naim Dahnoun (c) Texas Instruments 2002 EDMA - Transferarten • es wird immer ein Block transferiert: M frames

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).

Page 7: DSP 6 EDMA - tong-cha.de · Seite 7 Prof. Dr.-Ing. Franz Quint, Dr. Naim Dahnoun (c) Texas Instruments 2002 EDMA - Transferarten • es wird immer ein Block transferiert: M frames

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

Page 8: DSP 6 EDMA - tong-cha.de · Seite 7 Prof. Dr.-Ing. Franz Quint, Dr. Naim Dahnoun (c) Texas Instruments 2002 EDMA - Transferarten • es wird immer ein Block transferiert: M frames

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

Page 9: DSP 6 EDMA - tong-cha.de · Seite 7 Prof. Dr.-Ing. Franz Quint, Dr. Naim Dahnoun (c) Texas Instruments 2002 EDMA - Transferarten • es wird immer ein Block transferiert: M frames

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

Page 10: DSP 6 EDMA - tong-cha.de · Seite 7 Prof. Dr.-Ing. Franz Quint, Dr. Naim Dahnoun (c) Texas Instruments 2002 EDMA - Transferarten • es wird immer ein Block transferiert: M frames

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

Page 11: DSP 6 EDMA - tong-cha.de · Seite 7 Prof. Dr.-Ing. Franz Quint, Dr. Naim Dahnoun (c) Texas Instruments 2002 EDMA - Transferarten • es wird immer ein Block transferiert: M frames

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

Page 12: DSP 6 EDMA - tong-cha.de · Seite 7 Prof. Dr.-Ing. Franz Quint, Dr. Naim Dahnoun (c) Texas Instruments 2002 EDMA - Transferarten • es wird immer ein Block transferiert: M frames

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

Page 13: DSP 6 EDMA - tong-cha.de · Seite 7 Prof. Dr.-Ing. Franz Quint, Dr. Naim Dahnoun (c) Texas Instruments 2002 EDMA - Transferarten • es wird immer ein Block transferiert: M frames

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!

Page 14: DSP 6 EDMA - tong-cha.de · Seite 7 Prof. Dr.-Ing. Franz Quint, Dr. Naim Dahnoun (c) Texas Instruments 2002 EDMA - Transferarten • es wird immer ein Block transferiert: M frames

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

Page 15: DSP 6 EDMA - tong-cha.de · Seite 7 Prof. Dr.-Ing. Franz Quint, Dr. Naim Dahnoun (c) Texas Instruments 2002 EDMA - Transferarten • es wird immer ein Block transferiert: M frames

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

Page 16: DSP 6 EDMA - tong-cha.de · Seite 7 Prof. Dr.-Ing. Franz Quint, Dr. Naim Dahnoun (c) Texas Instruments 2002 EDMA - Transferarten • es wird immer ein Block transferiert: M frames

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

Page 17: DSP 6 EDMA - tong-cha.de · Seite 7 Prof. Dr.-Ing. Franz Quint, Dr. Naim Dahnoun (c) Texas Instruments 2002 EDMA - Transferarten • es wird immer ein Block transferiert: M frames

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

Page 18: DSP 6 EDMA - tong-cha.de · Seite 7 Prof. Dr.-Ing. Franz Quint, Dr. Naim Dahnoun (c) Texas Instruments 2002 EDMA - Transferarten • es wird immer ein Block transferiert: M frames

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

Page 19: DSP 6 EDMA - tong-cha.de · Seite 7 Prof. Dr.-Ing. Franz Quint, Dr. Naim Dahnoun (c) Texas Instruments 2002 EDMA - Transferarten • es wird immer ein Block transferiert: M frames

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

Page 20: DSP 6 EDMA - tong-cha.de · Seite 7 Prof. Dr.-Ing. Franz Quint, Dr. Naim Dahnoun (c) Texas Instruments 2002 EDMA - Transferarten • es wird immer ein Block transferiert: M frames

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)

Page 21: DSP 6 EDMA - tong-cha.de · Seite 7 Prof. Dr.-Ing. Franz Quint, Dr. Naim Dahnoun (c) Texas Instruments 2002 EDMA - Transferarten • es wird immer ein Block transferiert: M frames

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

Page 22: DSP 6 EDMA - tong-cha.de · Seite 7 Prof. Dr.-Ing. Franz Quint, Dr. Naim Dahnoun (c) Texas Instruments 2002 EDMA - Transferarten • es wird immer ein Block transferiert: M frames

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

Page 23: DSP 6 EDMA - tong-cha.de · Seite 7 Prof. Dr.-Ing. Franz Quint, Dr. Naim Dahnoun (c) Texas Instruments 2002 EDMA - Transferarten • es wird immer ein Block transferiert: M frames

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

Page 24: DSP 6 EDMA - tong-cha.de · Seite 7 Prof. Dr.-Ing. Franz Quint, Dr. Naim Dahnoun (c) Texas Instruments 2002 EDMA - Transferarten • es wird immer ein Block transferiert: M frames

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

Page 25: DSP 6 EDMA - tong-cha.de · Seite 7 Prof. Dr.-Ing. Franz Quint, Dr. Naim Dahnoun (c) Texas Instruments 2002 EDMA - Transferarten • es wird immer ein Block transferiert: M frames

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

Page 26: DSP 6 EDMA - tong-cha.de · Seite 7 Prof. Dr.-Ing. Franz Quint, Dr. Naim Dahnoun (c) Texas Instruments 2002 EDMA - Transferarten • es wird immer ein Block transferiert: M frames

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

Page 27: DSP 6 EDMA - tong-cha.de · Seite 7 Prof. Dr.-Ing. Franz Quint, Dr. Naim Dahnoun (c) Texas Instruments 2002 EDMA - Transferarten • es wird immer ein Block transferiert: M frames

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

Page 28: DSP 6 EDMA - tong-cha.de · Seite 7 Prof. Dr.-Ing. Franz Quint, Dr. Naim Dahnoun (c) Texas Instruments 2002 EDMA - Transferarten • es wird immer ein Block transferiert: M frames

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

Page 29: DSP 6 EDMA - tong-cha.de · Seite 7 Prof. Dr.-Ing. Franz Quint, Dr. Naim Dahnoun (c) Texas Instruments 2002 EDMA - Transferarten • es wird immer ein Block transferiert: M frames

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

Page 30: DSP 6 EDMA - tong-cha.de · Seite 7 Prof. Dr.-Ing. Franz Quint, Dr. Naim Dahnoun (c) Texas Instruments 2002 EDMA - Transferarten • es wird immer ein Block transferiert: M frames

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

Page 31: DSP 6 EDMA - tong-cha.de · Seite 7 Prof. Dr.-Ing. Franz Quint, Dr. Naim Dahnoun (c) Texas Instruments 2002 EDMA - Transferarten • es wird immer ein Block transferiert: M frames

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

Page 32: DSP 6 EDMA - tong-cha.de · Seite 7 Prof. Dr.-Ing. Franz Quint, Dr. Naim Dahnoun (c) Texas Instruments 2002 EDMA - Transferarten • es wird immer ein Block transferiert: M frames

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

Page 33: DSP 6 EDMA - tong-cha.de · Seite 7 Prof. Dr.-Ing. Franz Quint, Dr. Naim Dahnoun (c) Texas Instruments 2002 EDMA - Transferarten • es wird immer ein Block transferiert: M frames

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)

Page 34: DSP 6 EDMA - tong-cha.de · Seite 7 Prof. Dr.-Ing. Franz Quint, Dr. Naim Dahnoun (c) Texas Instruments 2002 EDMA - Transferarten • es wird immer ein Block transferiert: M frames

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

Page 35: DSP 6 EDMA - tong-cha.de · Seite 7 Prof. Dr.-Ing. Franz Quint, Dr. Naim Dahnoun (c) Texas Instruments 2002 EDMA - Transferarten • es wird immer ein Block transferiert: M frames

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

Page 36: DSP 6 EDMA - tong-cha.de · Seite 7 Prof. Dr.-Ing. Franz Quint, Dr. Naim Dahnoun (c) Texas Instruments 2002 EDMA - Transferarten • es wird immer ein Block transferiert: M frames

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;

Page 37: DSP 6 EDMA - tong-cha.de · Seite 7 Prof. Dr.-Ing. Franz Quint, Dr. Naim Dahnoun (c) Texas Instruments 2002 EDMA - Transferarten • es wird immer ein Block transferiert: M frames

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)

};

Page 38: DSP 6 EDMA - tong-cha.de · Seite 7 Prof. Dr.-Ing. Franz Quint, Dr. Naim Dahnoun (c) Texas Instruments 2002 EDMA - Transferarten • es wird immer ein Block transferiert: M frames

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);

Page 39: DSP 6 EDMA - tong-cha.de · Seite 7 Prof. Dr.-Ing. Franz Quint, Dr. Naim Dahnoun (c) Texas Instruments 2002 EDMA - Transferarten • es wird immer ein Block transferiert: M frames

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

Page 40: DSP 6 EDMA - tong-cha.de · Seite 7 Prof. Dr.-Ing. Franz Quint, Dr. Naim Dahnoun (c) Texas Instruments 2002 EDMA - Transferarten • es wird immer ein Block transferiert: M frames

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

Page 41: DSP 6 EDMA - tong-cha.de · Seite 7 Prof. Dr.-Ing. Franz Quint, Dr. Naim Dahnoun (c) Texas Instruments 2002 EDMA - Transferarten • es wird immer ein Block transferiert: M frames

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

Page 42: DSP 6 EDMA - tong-cha.de · Seite 7 Prof. Dr.-Ing. Franz Quint, Dr. Naim Dahnoun (c) Texas Instruments 2002 EDMA - Transferarten • es wird immer ein Block transferiert: M frames

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

Page 43: DSP 6 EDMA - tong-cha.de · Seite 7 Prof. Dr.-Ing. Franz Quint, Dr. Naim Dahnoun (c) Texas Instruments 2002 EDMA - Transferarten • es wird immer ein Block transferiert: M frames

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

Page 44: DSP 6 EDMA - tong-cha.de · Seite 7 Prof. Dr.-Ing. Franz Quint, Dr. Naim Dahnoun (c) Texas Instruments 2002 EDMA - Transferarten • es wird immer ein Block transferiert: M frames

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

Page 45: DSP 6 EDMA - tong-cha.de · Seite 7 Prof. Dr.-Ing. Franz Quint, Dr. Naim Dahnoun (c) Texas Instruments 2002 EDMA - Transferarten • es wird immer ein Block transferiert: M frames

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?

Page 46: DSP 6 EDMA - tong-cha.de · Seite 7 Prof. Dr.-Ing. Franz Quint, Dr. Naim Dahnoun (c) Texas Instruments 2002 EDMA - Transferarten • es wird immer ein Block transferiert: M frames

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)

Page 47: DSP 6 EDMA - tong-cha.de · Seite 7 Prof. Dr.-Ing. Franz Quint, Dr. Naim Dahnoun (c) Texas Instruments 2002 EDMA - Transferarten • es wird immer ein Block transferiert: M frames

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];

...

Page 48: DSP 6 EDMA - tong-cha.de · Seite 7 Prof. Dr.-Ing. Franz Quint, Dr. Naim Dahnoun (c) Texas Instruments 2002 EDMA - Transferarten • es wird immer ein Block transferiert: M frames

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?