PPT - ECE For You

advertisement
Architecture and Instruction Set
of the C6x Processor
Module 1
Reference
• R. Chassaing, DSP applications using C and the
TMS 320C6x DSK, Wiley, 2002
•
•
•
•
•
•
•
•
DSP
TMS320 Introduction
Architecture
Functional Unit
Fetch & Execute Packet
Pipelining
Registers
Addressing Modes
DSP
• Digital Signal Processing : Application of
mathematical operations to digitally
represented signal
• Signals represented digitally as sequence of
samples.
• Digital Signal Processor: Electronics System
that process digital Signal.
DSP System
DSP tasks
• Most DSP tasks Require
–
–
–
–
Repetitive numeric computation
Real time processing
High memory
System flexibility
• DSP must perform these tasks efficiently while
minimizing
–
–
–
–
Cost
Power
Memory use
Development time
TMS DSP IC
• TMS 320 C6X
– TMX – experimental device
– TMP – prototype
– TMS – Qualified device
– 320- TI DSP family
– C- CMOS with ROM
– E- CMOS with EPROM
– 5- Generation
– X- version number
TMS320 Introduction
• Texas Instruments introduced the first
generation TMS32010 digital signal processor
in 1982, the TMS320C25 in 1986 , and the
TMS320C50 in 1991.
• These 16-bit processors are all fixed
pointprocessors and are code-compatible.
• Von neumann VS Harvard
• The fixed-point processors C1x, C2x, and C5x
are based on a modified Harvard architecture
with separate memory spaces for data and
instructions that allow concurrent accesses.
• Quantization error or round-off noise from an
ADC is a concern with a fixed point processor.
• The TMS320C30 floating-point processor was
introduced in the late 1980s.
• The TMS320C6201 (C62x), announced in 1997.
• C62x is based on a very-long-instruction-word
(VLIW) architecture, still using separate memory
spaces for instructions and data as with the
Harvard architecture.
• The C62x is not code-compatible with the
previous generation of fixed-point processors.
TMS320C6x ARCHITECTURE
• The TMS320C6711 is a floating-point processor
based on the
• VLIW architecture .
• Internal memory includes a two-level cache
architecture with 4kB of level 1 program cache
(L1P), 4kB of level 1 data cache (L1D), and 64kB of
RAM or level 2 cache for data/program allocation
(L2).
• It has a direct interface to both synchronous
memories and asynchronous memories
•
• On-chip peripherals include two multichannel buffered serial ports
(McBSPs),two timers, a 16-bit host port interface (HPI), and a 32-bit
external memory interface (EMIF).
• It requires 3.3V for I/O and 1.8V for the core (internal).
• Internal buses
–
–
–
–
–
32-bit program address bus
256-bit program data bus (eight 32-bit instructions),
two 32-bit data address buses,
two 64-bit data buses
two 64-bit store data buses.
• With a 32-bit address bus, the total memory space is 2^32
• = 4GB, including four external memory spaces: CE0, CE1, CE2, and
CE3.
3-Access level of Memory Map
1. L1 Memory
-Cache-based Architecture
-Program Cache & Data Cache
-Size : PC(4Kbyte), DC(4Kbyte)
2. L2 Memory
- Size : 64Kbyte
- Program & Data
3. L3 Memory
External Memory
Internal Memory
• Independent memory banks on the C6x allow for two
memory accesses within one instruction cycle.
• Two independent memory banks can be accessed using
two independent buses.
• Two loads or two stores instructions can be performed
in parallel.
• No conflict results if the data accessed are in different
memory banks.
• Separate buses for program, data, and direct memory
access (DMA) allow the C6x to perform concurrent
program fetches, data read and write, and DMA
operations.
• C6x has a byte-addressable memory space.
• Internal memory is organized as separate
program and data memory spaces, with two 32bit internal ports (two 64-bit ports with the C64x)
to access internal memory.
• With a clock of 150MHz onboard the DSK, one
can ideally achieve two multiplies and
accumulates per cycle, for a total of 300 million
multiplies and accumulates (MACs) per second.
• With six of the eight functional units capable
of handling floating-point operations, it is
possible to perform 900 million floating-point
operations per second (MFLOPS).
• 1200 million instructions per second (MIPS)
FUNCTIONAL UNITS
• The CPU consists of eight independent functional
units divided into two data paths
• Each path has a unit for
– multiply operations (.M),
– logical and arithmetic operations (.L),
– branch, bit manipulation, and arithmetic operations
(.S),
– loading/storing and arithmetic operations (.D).
• The .S and .L units are for arithmetic, logical, and
branch instructions.
• All data transfers make use of the .D units.
• The arithmetic operations, such as subtract or
add (SUB or ADD), can be performed by all the
units except the .M units.
• The eight functional units consist of four
floating/fixed-point ALUs (two .L and two .S),
two fixed-point ALUs (.D units), and two
floating/fixed-point multipliers (.M units).
• Each path includes a set of sixteen 32-bit
registers, A0 through A15 and B0 through B15.
• Two cross-paths (1x and 2x) allow functional units
from one data path to access a 32-bit operand
from the register file on the opposite side.
• Each functional unit side can access data from the
registers on the opposite side using a cross-path.
• There are 32 general purpose registers, but some
of them are reserved for specific addressing or
are used for conditional instructions.
VelociTI™
• VLIW modification done by TI is called VelociTI
– Reduces code size
– Increases performance when instructions reside off-chip
• C6X architecture is based on the high-performance advanced
VelociTI very-long-instruction-word (VLIW) architecture developed
by Texas Instruments (TI)
• an excellent choice for multichannel and multifunction applications
(Several instructions captured & processed simultaneously)
VelociTI™
• VLIW modification done by TI is called VelociTI
– Reduces code size
– Increases performance when instructions reside off-chip
• C6X architecture is based on the high-performance advanced
VelociTI very-long-instruction-word (VLIW) architecture developed
by Texas Instruments (TI)
• an excellent choice for multichannel and multifunction applications
(Several instructions captured & processed simultaneously)
FETCH AND EXECUTE PACKETS
• The architecture VELOCITI, introduced by TI, is
derived from the VLIW architecture.
• An execute packet (EP) consists of a group of
instructions that can be executed in parallel
within the same cycle time.
• The number of EPs within a fetch packet (FP)
can vary from one to eight
• The VLIW architecture was modified to allow
more than one EP to be included within an FP.
• The least significant bit of every 32-bit
instruction is used to determine if the next or
subsequent instruction belongs in the same EP
(if 1) or is part of the next EP if 0).
• EP1 contains the two parallel instructions A and B; EP2
contains the three parallel instructions C, D, and E; and
EP3 contains the three parallel instructions F, G, and H.
• Bit 0 (LSB) of each 32-bit instruction contains a “p” bit
that signals whether it is in parallel with a subsequent
instruction.
• The “p” bit of instruction B is zero, denoting that it is
not within the same EP as the subsequent instruction
C.
• Similarly, instruction E is not within the same EP as
instruction F.
Pipelining
• Pipelining is a key feature in a digital signal
processor to get parallel instructions working
properly.
• There are three stages of pipelining:
– program fetch, decode, and execute.
• non-pipelined scalar architecture
- A processor that executes every instruction one after the
other
- may use processor resources inefficiently, potentially
leading to poor performance.
• pipelining
- executing different sub-steps of sequential instructions
simultaneously
• superscalar architectures
- executing multiple instructions entirely simultaneously
• Pipelining does not decrease the time for individual
instruction execution. Instead, it increases instruction
throughput.
• The throughput of the instruction pipeline is determined by
how often an instruction exits the pipeline
• If the stages are perfectly balanced, then the time per
instruction on the pipelined machine is equal to
Time per instruction on nonpipelined machine
Number of pipe stages
Program Fetch
• The program fetch stage is composed of four
phases:
• (a) PG: program address generate (in the CPU) to
fetch an address
• (b) PS: program address send (to memory) to
send the address
• (c) PW: program address ready wait (memory
read) to wait for data
• (d) PR: program fetch packet receive (at the CPU)
to read opcode from memory
Decode Stage
• The decode stage is composed of two phases:
• (a) DP: to dispatch all the instructions within
an FP to the appropriate functional units
• (b) DC: instruction decode
Execute Stage
• The execute stage is composed of from six
phases (with fixed point) to 10 phases (with
floating point), due to delays (latencies)
associated with following instructions:
• (a) Multiply instruction, which consists of two
phases due to one delay
• (b) Load instruction, which consists of five phases
due to four delays
• (c) Branch instruction, which consists of six
phases due to five delays
Pipeline phases
Program fetch
PG PS
PW
execute
decode
PR
DP
E1- E6 (E1-E10 for double
DC
precision)
Pipelining effects
Clock cycles
1
2
3
4
5
6
7
8
9
10
PG
PS
PW
PR
DP
DC
E1
E2
E3
E4
PG
PS
PW
PR
DP
DC
E1
E2
E3
PG
PS
PW
PR
DP
DC
E1
E2
PG
PS
PW
PR
DP
DC
E1
PG
PS
PW
PR
DP
DC
PG
PS
PW
PR
DP
PG
PS
PW
PR
• Each row represents an FP
• PG of first FP starts in cycle 1,PG of second FP starts in cycle 2 and so
on….
• Each FP has 4 phases for fetch ,2 phases for decode and execution
phases can take from 1 to 10 phases
• At cycle 7,
instruction in the first FP are in the first execution phase E1,
instruction in the second FP is in decoding phase,
instruction in the third FP is in dispatching phase
and so on…..
All the instructions are proceeding through various phases
Therefore pipeline is FULL
• Most instructions have 1 execute phase
• Multiply (MPY) has 2
Load (LDH/LDW) has 5
Branch (B) has 6 phases
• Additional execute phases are associated with floating point and double
precision type instructions (upto 10 phases)
eg: MPYDP has 9 delay slots and a total 10 phases
Functional unit latency:
• The number of cycles that an instruction ties up a functional unit.
• it is 1 for all instructions except double precision instructions
• no other instructions can use the functional unit
• it is different from delay slot
eg: MPYDP has 4 functional unit latency but 9 delay slots
delay slot: some instructions that are physically after the instruction are executed
as if they were located before it.
Classic examples are branch and call instructions, which often execute the following
instruction before the branch or call is performed.
Registers
– The two register files each contain 16 32-bit registers for a total
of 32 general-purpose registers (A0~A15, B0~B15)
– Interaction with the CPU must be done through these registers
– The four functional units on each side of the CPU can freely
share the 16 registers belonging to that side.
– two cross paths 1x and 2x connects all the registers on the
other side
–
(which can access data from the register files on the
opposite side.)
– If register access is by functional units on the same side of the
CPU, register file can service all the units in a single clock cycle
• Registers A0, A1, B0, B1 are used as
conditional registers.
• Registers A4 through A7 and B4 through B7
are used for circular addressing.
• Registers A0 through A9 and B0 through B9
(except B3) are temporary registers.
• Any of the registers A10 through A15 and B10
through B15 used fsubroutine.
• A 40-bit data value can be contained across a
register pair.
• The 32 least significant bits (LSBs) are stored
in the even register (e.g.,A2) and the
remaining 8 bits are stored in the 8LSBs of the
next-upper (odd) register (A3).
• A similar scheme is used to hold a 64-bit
double-precision value within a pair of
registers (even and odd).
Addressing modes
• Determines how one access memory
• Addressing refers to means to specify location of operands for
instructions
- types of addressing are called addressing modes
- operands may be input operands for the operation as well as
results of the operation
• Addressing modes supported by the TMS320C67x include
register-indirect,
indexed register-indirect,
and modulo addressing (circular addressing).
Immediate data is also supported.
• The TMS320C67x does not support modulo addressing for 64-bit
data.
• Immediate
– The operand is part of the
instruction
• Register
– The operand is specified in a
register
• Direct
– The address of the operand is
part of the instruction (added
to imply memory page)
• Indirect
– The address of the operand is
stored in a register
ADD .L1 -13,A1,A6
(implied)
ADD .L1 A7,A6,A7
not supported
LDW .L1 *A5++[8],A1
Register-Indirect Addressing
•
Operand is located in memory address stored in a register
•
Special group of registers can be used to store addresses
(address registers)
Most important addressing mode in DSPs
Efficient from instruction set point of view
Few bits are needed to indicate address of operand
32 registers(A0-A15,B0-B15) are used as pointers
•
•
•
•
• Indirect addressing uses ‘*’ in conjunction with one of the 32
registers
1. *R
– register R contains address of a memory location
where a data value is stored
2. *R++ (d) - register R contains memory address
- after the memory address is used, R is
postincremented such that new address is R+1 if d=1
- double minus (- -) update the address by d-1
3. * ++ R(d) - address is preincremented or offset by d
- current address is R+d or R-d
4. * + R(d) - address is preincremented by d, such that the current
address is R+d
- however R pre increments without modification
- unlike previous case, R is not updated or modified
Delay Line implemented with shifting
of sample
Delay Line pointer manipulation using
Circular Addressing
Circular addressing
• Circular addressing is used to create a circular buffer
• Buffer is created in hardware and is very useful for applications like
digital filtering
• This addressing mode in conjunction with circular buffer updates
samples by shifting data without creating overhead as in direct
shifting
• When pointer reaches bottom location, and when incremented the
pointer is automatically wrapped around to the top location.
• Two independent buffers are available using BK0 and BK1 within the
AMR register
• Registers A4-A7 and B4-B7 in conjunction with .D unit can be used as
pointers
• MVC (move constant) is the only instruction to access AMR and other
control registers
Circular Buffer
At the beginning of each
sample period,
a new sample will be read into the
circular buffer,overwriting the
oldest sample.
The newest sample x(n) will be
stored at the memory location
pointed at by auxiliary register
AR(i).
• The need of processing the digital signals in real time,
evolves the concept of Circular Buffering.
• Circular buffers are used to store the most recent values of
a continually updated signal.
• Circular buffering allows processors to access a block of
data sequentially and then automatically wrap around to
the beginning address exactly the pattern used to access
coefficients in FIR filter.
• Circular buffering also very helpful in implementing first-in,
first-out buffers, commonly used for I/O and for FIR delay
lines.
• Most DSP Implement Circular addressing in hardware in
order to conserve memory and minimizing software
overhead.
Addressing Mode Register (AMR)
• For each of the eight registers (A4–A7, B4–B7) that can perform linear
or circular addressing, the addressing mode register (AMR) specifies
the addressing mode.
• A 2-bit field for each register selects the address modification mode:
linear (the default) or circular mode.
• With circular addressing, the field also specifies which BK (block size)
field to use for a circular buffer.
• In addition, the buffer must be aligned on a byte boundary equal to
the block size.
AMR mode and description
Mode
00
01
•
•
description
for linear addressing
for circular addressing using BK0
For circular addressing using BK1
reserved
Block size = 2N+1 bytes
Eg:
MVK
.S2 0X0004,B2
; lower 16 bits to B2
MVKLH .S2 0x0005,B2
; upper 16 bits to B2
The value 0x0004 =(0100) into 16 LSB of AMR sets bit 2 (third bit) to 1
and all other bits to zero.
This sets the mode to 01 and selects register A5 as pointer to buffer
using BK0
The value 0x0005 =(0101) into 16 MSB of AMR sets bits 16 and 18 to 1.
This corresponds to value of N used to select size of buffer = 2 N+1
= 64 bytes using BKO
Instruction set
• They are designed to make maximum use of the
processors’ resources and at the same time minimize the
memory space required to store the instructions.
• Minimizing the storage space ensures the cost effectiveness
of the overall system.
• To ensure the maximum use of hardware of the DSP, the
instructions are designed to perform several parallel
operations in a single instruction, typically including
fetching of data in parallel with main arithmetic operation.
Assembly Format
• Label || [ ] Instruction Unit Operands ;comments
• A label, if present, represents a specific address or
memory location that contains an instruction or data.
• The parallel bars (||) are there if the instruction is
being executed in parallel with the previous
instruction.
• The subsequent field is optional to make the associated
instruction conditional. Eg: [A2] specifies that the
associated instruction executes if A2 is not zero.
• On the other hand, with [!A2], the associated
instruction executes if A2 is zero.
'C6x Instruction Set (by category)
Arithmetic
Logical
ABS
ADD
ADDA
ADDK
ADD2
MPY
MPYH
NEG
SMPY
SMPYH
SADD
SAT
SSUB
SUB
SUBA
SUBC
SUB2
ZERO
AND
CMPEQ
CMPGT
CMPLT
NOT
OR
SHL
SHR
SSHL
XOR
Bit Mgmt
CLR
EXT
LMBD
NORM
SET
Data Mgmt
LDB/H/W
MV
MVC
MVK
MVKL
MVKH
MVKLH
STB/H/W
Program Ctrl
B
IDLE
NOP
'C6x Instruction Set (by unit)
.L Unit
.S Unit
ADD
ADDK
ADD2
AND
B
CLR
EXT
MV
MVC
MVK
MVKL
MVKH
MVKLH
NEG
NOT
OR
SET
SHL
SHR
SSHL
SUB
SUB2
XOR
ZERO
.M Unit
MPY
MPYH
SMPY
SMPYH
Other
NOP
IDLE
ABS
ADD
AND
CMPE
Q
CMPG
T
CMPLT
LMBD
MV
NEG
NORM
NOT
OR
SADD
SAT
SSUB
SUB
SUBC
XOR
ZERO
ADD
ADDA
LDB/H/W
MV
NEG
STB/H/W
SUB
SUBA
ZERO
.D Unit
‘C67x Add’l Instructions (by unit)
.S Unit
ABSSP
ABSDP
CMPGTSP
CMPEQSP
CMPLTSP
CMPGTDP
CMPEQDP
CMPLTDP
RCPSP
RCPDP
RSQRSP
RSQRDP
SPDP
.L Unit
ADDDP
ADDSP
DPINT
DPSP
INTDP
INTDPU
INTSP
INTSPU
SPINT
SPTRUNC
SUBSP
SUBDP
.D Unit
.M Unit
MPYSP
MPYDP
MPYI
MPYID
ADDAD
LDDW
Add/Subtract/Multiply
• ADD .L1 A3,A7,A7 ;add A3 + A7 = A7 (accum in
A7)
• adds the values in registers A3 and A7 and
places the result in register A7.
• The unit .L1 is optional. If the destination or
result is in B7, the unit would be .L2.
• SUB .S1 A1,1,A1 ;subtract 1 from A1
• MPY .M2 A7,B7,B6 ;multiply 16 LSBs of A7,B7 =>
B6
• || MPYH .M1 A7,B7,A6 ;multiply 16MSBs of
A7,B7 =>A6
• multiplies the lower or least significant 16 bits
(LSBs) of both A7 and B7 and places the product
in B6, in parallel with a second instruction that
multiplies the higher or most significant 16 bits
(MSBs) of A7 and B7 and places the result in A6.
Load/Store
• LDH .D2 *B2++,B7 ;load (B2) =>B7, increment B2
• || LDH .D1 *A2++,A7 ;load (A2) -> A7, increment
A2
• The instruction LDW loads a 32-bit word. Two
paths using D1 and .D2 allow for the loading of
data from memory to registers A and B using the
instruction LDW.
• The double-word load floating-point instruction
LDDW on the C6711 can simultaneously load two
32-bit registers into side A and two 32-bit
registers into side B.
Store
• STW .D1 A1,*+A4[20] ;store A1->(A4) offset by
20
• The address register A4 is preincremented with offset, but it is not modified (two plus
signs are used if A4 is to be modified).
Branch
Assembler Directive
• An assembler directive is a message for the
assembler and is not an instruction.
• It is resolved during the assembling process
and does not occupy memory space as an
instruction does.
• It does not produce executable code.
• 1) .short: to initialize a 16-bit integer.
• 2) .int: to initialize a 32-bit integer (also .word
or .long).
• 3) .float: to initialize a 32-bit IEEE singleprecision constant.
• 4) .double: to initialize a 64-bit IEEE doubleprecision constant.
ASM STATEMENT WITHIN C
• Assembly instructions and directives can be incorporated
within a C program using the asm statement.
• The syntax is asm (“assembly code”);
• The assembly line of code within the set of quotes has the
same format as a valid assembly statement.
• If the instruction has a label, the first character of the label
must start after the first quote so that it is in column 1.
• The assembly statement should be valid since the compiler
does not check it for syntax error but copies it directly into
the compiled output file.
• If the assembly statement has a syntax error, the
assembler would detect it.
C-CALLABLE ASSEMBLY FUNCTION
• Register B3 is preserved and is used to contain
the return address of the calling function.
• An external declaration of an assembly
function called within a C program using
extern is optional.
• For example, extern int func();
• is optional with the assembly function func
returning an integer value.
Timer
• Two 32-bit timers can be used to time and count
events or to interrupt the CPU.
• A timer can direct an external ADC to start
conversion or the DMA controller to start a data
transfer.
• Registers
– Time period register, - specifies the timer’s frequency
– Timer counter register, - contains the value of the
incrementing counter;
– Timer control register, - monitors the timer’s status.
Timer
• The ’C67x has two 32-bit general-purpose timers that can be used to:
– Time events
– Count events
– Generate pulses
– Interrupt the CPU
– Send synchronization events to the DMA controller
• The timer works in one of the two signaling modes depending on
whether clocked by an internal or an external source.
• The timer has an input pin (TINP) and an output pin (TOUT).
• The TINP pin can be used as a general purpose input, and the TOUT
pin can be used as a general-purpose output.
• When an internal clock is provided, the timer generates timing
sequences to trigger peripheral or external devices such as DMA
controller or A/D converter respectively.
• When an external clock is provided, the timer can count external
events and interrupt the CPU after a specified number of events.
Interrupts
The C6711device supports 16 prioritized interrupts
Types of interrupts:
• Reset
• Maskable
• Non maskable
Interrupt process
• An interrupt can be issued internally or externally.
• An interrupt stops the current CPU process so that it
can perform a required task initiated by the interrupt.
• The program flow is redirected to an interrupt service
routine (ISR).
• The conditions of the current process must be saved so
that they can be restored after the interrupt task is
performed.
• On interrupt, registers are saved and processing
continues to an ISR. Then the registers are restored.
• Reset (RESET)
Reset is the highest priority interrupt and is used to halt
the CPU and return it to a known state.
The reset interrupt is unique in a number of ways:
- RESET is an active-low signal. All other interrupts
are
active-high signals.
- RESET must be held low for 10 clock cycles before it goes
high again to reinitialize the CPU properly.
- The instruction execution in progress is aborted and all
registers are returned to their default states. -
• Nonmaskable Interrupt (NMI)
- NMI is the second-highest priority interrupt
- generally used to alert the CPU of a serious hardware
problem such as imminent power failure.
- For NMI processing to occur, the non maskable interrupt
enable (NMIE) bit in the interrupt enable register must be
set to 1.
Maskable interrupt process
•
•
•
•
1. The GIE bit is set to 1.
2. The NMIE bit is set to 1.
3. The appropriate IE bit is set to 1.
4. The corresponding IFR bit is set to 1.
• Maskable Interrupts (INT4−INT15)
- These have lower priority than the NMI and reset
interrupts.
- These interrupts can be associated with external devices,
on-chip peripherals, software control etc.
• The interrupt source for interrupts 4-15 can be
programmed by modifying the selector value (binary value)
in the corresponding fields of the Interrupt
• CSR (control status register): contains the global
interrupt enable (GIE) bit and other control/status bits
• IER (interrupt enable register): enables/disables
individual interrupts
• IFR (interrupt flag register): displays status of interrupts
• ISR (interrupt set register): sets pending interrupts
• ICR (interrupt clear register): clears pending interrupts
• ISTP (interrupt service table pointer): locates an ISR
• IRP (interrupt return pointer)
• NRP (nonmaskable interrupt return pointer)
Interrupt Acknowledgment
• The signals IACK and INUMx (INUM0 through INUM3) are pins on
the C6x that acknowledge an interrupt has occurred and is being
processed.
• The four INUMx signals indicate the number of the interrupt being
processed.
• INUM3 = 1 (MSB), INUM2 = 0, INUM1 = 1, INUM0 = 1 (LSB)
corresponds to (1011)b = 11, indicating that INT11 is being
processed.
• The IE11 bit is set to 1 to enable INT11.
• The interrupt flag register (IFR) can be read to verify that bit IF11 is
set to 1.
• Writing a 1 to a bit in the interrupt set register (ISR) causes the
corresponding interrupt flag to be set in IFR; whereas a 1 to a bit in
the interrupt clear register (ICR) causes the corresponding interrupt
to be cleared.
Multichannel Buffered Serial Port (McBSP)
• The standard serial port interface provides:
– Full-duplex communication
– Double-buffered data registers, which allow a continuous data stream
– Independent framing and clocking for reception and transmission
– Direct interface to industry-standard codecs, analog interface chips
(AICs), and other serially connected A/D and D/A devices
-
Multi channel transmission and reception of up to 128 channels.
– An element sizes of 8, 12, 16, 20, 24, or 32-bit.
- 8-bit data transfers with LSB or MSB first.
• The McBSP consists of a data path and a control path that connect to
external devices.
• Separate pins for transmission and reception communicate data to
these external devices.
• Four other pins communicate control information (clocking and frame
synchronization).
• The device communicates to the McBSP using 32-bit-wide control
and data registers accessible via the internal peripheral bus.
Pin
Description
CLKR
CLKX
CLKS
DR
DX
FSR
FSX
Receive clock
Transmit clock
External clock
Received serial data
Transmitted serial data
Receive frame synchronization
Transmit frame synchronization
• CPU or DMA write the DATA to be transmitted to the Data transmit
register (DXR) which is shifted out to DX via the transmit shift register
(XSR).
• Similarly, receive data on the DR pin is shifted into the receive shift
register (RSR) and copied into the receive buffer register (RBR).
• RBR is then copied to DRR, which can be read by the CPU or the DMA
controller.
• This allows internal data movement and external data
communications simultaneously.
• The following control registers are used in multichannel operation:
The multi channel control register (MCR)
The transmit channel enable register (XCER)
The receive channel enable register (RCER)
• Other registers for clock generation, frame synchronization and
control are:
serial port control register (SPCR)
receive control register (RCR)
transmit control register (XCR)
pin control register (PCR)
Sample rate generator register (SRGR)
DMA
• Direct Memory Access transfers data to or from the
processor’s memory without the involvement of the
processor itself.
• DMA is commonly used to provide improved performance
with input/output devices.
• Rather than have the processor read data from an I/O
device and copy the data into memory or vice versa, a
separate DMA controller can handle such transfers in
parallel.
• The processor loads the DMA controller with control
information including the starting address for the transfer,
the number of words to be transferred, the source and the
destination.
• The DMA controller uses the bus request pin to notify the
DSP core that it is ready to make a transfer to or from
external memory.
• The DSP core completes its current instruction, releases
control of external memory and signals the DMA controller
via the bus grant pin that the DMA transfer can proceed.
• The DMA controller then transfers the specified number of
data words and optionally signals completion through an
interrupt.
• Some processor can also have multiple channels DMA
managing DMA transfers in parallel.
Data Allocation
• Blocks of code and data can be allocated in
memory within sections specified in
• the linker command file. These sections can
be either initialized or uninitialized.
• Initialized or uninitialized sections, except
.text, cannot be allocated into internal
• program memory.
•
•
•
•
•
•
•
•
•
•
The initialized sections are:
1. .cinit: for global and static variables
2. .const: for global and static constant variables
3. .switch: contains jump tables for large switch statements
4. .text: for executable code and constants
The uninitialized sections are:
1. .bss: for global and static variables
2. .far: for global and static variables declared far
3. .stack: allocates memory for the system stack
4. .sysmem: reserves space for dynamic memory allocation
used by the malloc, calloc, and realloc functions
Data Alignment
• The C6x always accesses aligned data which
allows it to address bytes, half-words, and
words (32 bits)
Control Register File
Addressing mode register (AMR)
- specifies the addressing mode
Control status register (CSR)
- contains control and status bits.
Interrupt clear register (ICR)
- allows you to manually clear the maskable interrupts
INT4) in the interrupt flag register (IFR).
- Writing a 1 to any of the bits in ICR causes the
corresponding interrupt flag (IFn) to be cleared in IFR.
- Writing a 0 to any bit in ICR has no effect.
- You cannot set any bit in ICR to affect NMI or reset.
Interrupt enable register (IER)
- enables and disables individual interrupts.
(INT15-
The interrupt flag register (IFR)
- contains the status of INT4-INT15 and NMI interrupt.
- Each corresponding bit in the IFR is set to 1 when that
interrupt
occurs; otherwise, the bits are cleared to 0.
- If you want to check the status of interrupts, use the MVC
instruction to read the IFR.
The interrupt return pointer register (IRP)
- contains the return pointer that directs the CPU to the
proper
location to continue program execution after
processing a maskable interrupt.
- A branch using the address in IRP (B IRP) in your
interrupt
service routine returns to the program flow when interrupt
servicing is complete.
The interrupt set register (ISR)
- allows you to manually set the maskable interrupts
(INT15INT4) in the interrupt flag register (IFR).
- Writing a 1 to any of the its in ISR causes the
corresponding interrupt flag (IFn) to be set in IFR.
- Writing a 0 to any bit in ISR has no effect.
- You cannot set any bit in ISR to affect NMI or reset.
The interrupt service table pointer register (ISTP)
- is used to locate the interrupt service routine (ISR).
The NMI return pointer register (NRP)
- contains the return pointer that directs the CPU to the
proper
location to continue program execution after NMI processing.
- A branch using the address in NRP (B NRP) in your
interrupt
service routine returns to the program flow
when NMI servicing
is complete.
The E1 phase program counter (PCE1)
- contains the 32-bit address of the fetch packet in the E1 pipeline
phase.
Download