KeyStone Training. Turbo Encoder Coprocessor (TCP3E)

Similar documents
C66x KeyStone Training HyperLink

C66x KeyStone Training HyperLink

KeyStone C66x Multicore SoC Overview. Dec, 2011

Introduction to AM5K2Ex/66AK2Ex Processors

KeyStone Training. Multicore Navigator Overview

KeyStone Training. Power Management

SoC Overview. Multicore Applications Team

Keystone Architecture Inter-core Data Exchange

KeyStone C665x Multicore SoC

KeyStone Training. Bootloader

KeyStone Training. Network Coprocessor (NETCP)

High Performance Compute Platform Based on multi-core DSP for Seismic Modeling and Imaging

Taking Advantage of Using the dmax DMA Engine in Conjunction with the McASP Peripheral on the TMS320C67x DSP

Embedded Processing Portfolio for Ultrasound

KeyStone Training. Network Coprocessor (NETCP) Packet Accelerator (PA)

KeyStone Training. Network Coprocessor (NETCP) Packet Accelerator (PA)

Multicore DSP+ARM KeyStone II System-on-Chip (SoC)

TMS320C672x DSP Dual Data Movement Accelerator (dmax) Reference Guide

KeyStone Training Serial RapidIO (SRIO) Subsystem

MSC8156 Ethernet Interface

1 66AK2H14/12/06 Features and Description

Multicore ARM KeyStone II System-on-Chip (SoC)

KeyStone II. CorePac Overview

1 TMS320C6678 Features and Description

TMS320TCI6487/8 Antenna Interface. User's Guide

TMS320C6678 Memory Access Performance

IGLOO2 Evaluation Kit Webinar

A design of real-time image processing platform based on TMS320C6678

Building heterogeneous networks of green base stations on TI s KeyStone II architecture

Integrating DMA capabilities into BLIS for on-chip data movement. Devangi Parikh Ilya Polkovnichenko Francisco Igual Peña Murtaza Ali

HyperLink Programming and Performance consideration

Keystone ROM Boot Loader (RBL)

Intelop. *As new IP blocks become available, please contact the factory for the latest updated info.

Turbo Encoder Co-processor Reference Design

Heterogeneous Multi-Processor Coherent Interconnect

DaVinci. DaVinci Processor CPU MHz

A Multimedia Streaming Server/Client Framework for DM64x

Introduction to Sitara AM437x Processors

FCQ2 - P2020 QorIQ implementation

SQL Parsers with Message Analyzer. Eric Bortei-Doku

Doing more with multicore! Utilizing the power-efficient, high-performance KeyStone multicore DSPs. November 2012

EEM478-WEEK7 PART B Bootloader

C66x KeyStone Training HyperLink

Copyright 2016 Xilinx

Programmable Logic Design Grzegorz Budzyń Lecture. 15: Advanced hardware in FPGA structures

An Interrupt is either a Hardware generated CALL (externally derived from a hardware signal)

by I.-C. Lin, Dept. CS, NCTU. Textbook: Operating System Concepts 8ed CHAPTER 13: I/O SYSTEMS

Design Choices for FPGA-based SoCs When Adding a SATA Storage }

The Nios II Family of Configurable Soft-core Processors

USB3DevIP Data Recorder by FAT32 Design Rev Mar-15

DSP Solutions For High Quality Video Systems. Todd Hiers Texas Instruments

Speeding AM335x Programmable Realtime Unit (PRU) Application Development Through Improved Debug Tools

Hercules ARM Cortex -R4 System Architecture. Processor Overview

Gigabit Ethernet Switch Subsystem

The task of writing device drivers to facilitate booting of the DSP via these interfaces is with the user.

QorIQ P4080 Processor Pre-Boot Loader Image Tool

PRU Hardware Overview. Building Blocks for PRU Development: Module 1

OpenMP Accelerator Model for TI s Keystone DSP+ARM Devices. SC13, Denver, CO Eric Stotzer Ajay Jayaraj

PRODUCT PREVIEW TNETV1050 IP PHONE PROCESSOR. description

Chapter 5 Input/Output. I/O Devices

William Stallings Computer Organization and Architecture 10 th Edition Pearson Education, Inc., Hoboken, NJ. All rights reserved.

PCI-4IPM Revision C. Second Generation Intelligent IP Carrier for PCI Systems Up to Four IndustryPack Modules Dual Ported SRAM, Bus Master DMA

Chapter 13: I/O Systems

Engineer-to-Engineer Note

SECTION 1 QUICC/POWERQUICC DIFFERENCES

5 MEMORY. Overview. Figure 5-0. Table 5-0. Listing 5-0.

WS_CCESBF7-OUT-v1.00.doc Page 1 of 8

C66x CorePac: Achieving High Performance

... Application Note AN-531. PCI Express System Interconnect Software Architecture. Notes Introduction. System Architecture.

SRIO Programming and Performance Data on Keystone DSP

Section 31. DMA Controller

Getting Started With the Stellaris EK-LM4F120XL LaunchPad Workshop. Version 1.05

CEC 450 Real-Time Systems

WS_CCESSH5-OUT-v1.01.doc Page 1 of 7

Section 6 Blackfin ADSP-BF533 Memory

Tutorial Introduction

Device-Functionality Progression

Chapter 12: I/O Systems. I/O Hardware

FPQ6 - MPC8313E implementation

Wai Chee Wong Sr.Member of Technical Staff Freescale Semiconductor. Raghu Binnamangalam Sr.Technical Marketing Engineer Cadence Design Systems

Advanced Microcontrollers Grzegorz Budzyń Extras: STM32F4Discovery

Migrating from the UT699 to the UT699E

Freescale's High-Performance StarCore DSPs for the Baseband Market

Classification of Semiconductor LSI

Chapter 13: I/O Systems

Chapter 13: I/O Systems. Chapter 13: I/O Systems. Objectives. I/O Hardware. A Typical PC Bus Structure. Device I/O Port Locations on PCs (partial)

RAD55xx Platform SoC. Dean Saridakis, Richard Berger, Joseph Marshall *** *** *** *** *** *** *** photo courtesy of NASA

Product Technical Brief S3C2416 May 2008

Achieving UFS Host Throughput For System Performance

Porting BLIS to new architectures Early experiences

Introduction to the OpenCAPI Interface

PCI to SH-3 AN Hitachi SH3 to PCI bus

ARM Cortex-A9 ARM v7-a. A programmer s perspective Part1

Chapter 7. Hardware Implementation Tools

EPC -8 Highly integrated Intel486 -based VMEbus Embedded CPU

Module 12: I/O Systems

Tracing embedded heterogeneous systems

TI TMS320C6000 DSP Online Seminar

m ~~I Rt'6"'lcl ati1j4#11'" ~ silttli71 h1 ~

MSC8156 Product Brief

Transcription:

KeyStone Training Turbo Encoder Coprocessor (TCP3E) Agenda

Overview TCP3E Overview TCP3E = Turbo CoProcessor 3 Encoder No previous versions, but came out at same time as third version of decoder co processor (TCP3D) Runs in parallel with DSP Performs Turbo Encoding for forward error correction of transmitted information (downlink for basestation) Adds redundant data to transmitted message Turbo Decoder in handset uses the redundant data to correct errors Often avoids retransmission due to a noisy channel Turbo Encoder (TCP3E) Downlink Turbo Decoder in Handset

Features Supported 3GPP, WiMAX and LTE encoding 3GPP includes: WCDMA, HSDPA, and TD SCDMA Code rate: 1/3 Can achieve throughput of 250 Mbps in all three modes On the fly interleaver table generation Dual encode engines with input and output memories for increased throughput Programmable input and output format within a 32 bit word Block sizes supported: 40 to 8192 Tail biting for WiMAX CRC encoding for LTE Architecture

Memory Subsystem 64-Bit DDR3 EMIF 2MB MSM SRAM MSMC Coprocessors Debug & Trace Boot ROM RSA RSA x2 Semaphore Power Management C66x CorePac VCP2 TCP3d x4 x2 PLL EDMA x3 x3 32KB L1 P-Cache 32KB L1 D-Cache 1024KB L2 Cache 4 Cores @ 1.0 GHz / 1.2 GHz TCP3e FFTC x2 HyperLink TeraNet Multicore Navigator Queue Manager Packet DMA Others IC 2 PCIe x2 UART SPI AIF2 x6 SRIO x4 Ethernet Switch Switch Security Accelerator Packet Accelerator SGMII x2 Network Coprocessor TCP3E Block Diagram Internally, TCP3E has dual (ping/pong) encode engines, config registers, input and output memories Externally, TCP3E looks like a single set of config regs and input / output buffers Routing to ping/pong is handled internally Alternates between ping and pong from one code block to the next

VBUS config Interfaces Used for accessing the control and status registers VBUS DMA Treated as a single interface from the point of view of memory map Internally divided into separate write and read interfaces to improve throughput by allowing the transfer of data in and out simultaneously Events TCP3E issues WEVTs to the EDMA to indicate that the input data to be encoded can be written by the EDMA TCP3E issues REVTs to the EDMA to indicate that the encoded output data can be read by the EDMA TCP3E Usage Usage overview Initialization Configuration and data EDMA setup Error detection and interrupt Debug and emulation support

Usage Overview and Dataflow Usage overview Initialization Configuration and data EDMA setup Error detection and interrupt Debug and emulation support Process & Dataflow (1/3) 1. Initialization DSP initializes TCP3E mode, etc. via VBUS config interface after TCP3E is reset (hard or soft reset). 2. EDMA setup and input configuration register transfer DSP configures EDMA to transfer the input configuration registers, input data, and output data for a set of MCNT code blocks via the 32 bit DMA VBUS interface. DSP initiates config register transfer. 3. Input data transfer and start of encoding After input config registers are loaded, TCP3E issues a write event (WEVT) to EDMA to write the input data for the first code block to be encoded. TCP3E starts encoding after code block has finished loading.

Process & Dataflow (2/3) 4. Loading next code block If another encode engine is available (not currently in use) and there are more blocks to be encoded (based on MCNT), the TCP3E issues another write event (WEVT) to transfer the next code block s input data. The TCP3E starts encoding the code block after it has finished loading. 5. Finished earlier code block When the earlier code block is finished encoding, the TCP3E issues a receive event (REVT) to EDMA that causes it to transfer the encoded block out of the TCP3E. If there are more blocks to be encoded (based on MCNT), go to previous step. Process & Dataflow (3/3) 6. Finished set of MCNT code blocks After the entire set of MCNT code blocks has been encoded and retrieved, the EDMA can generate an interrupt to the DSP to signal that the encoding process is finished if desired. 7. Start next code block set If there is another set of code blocks to be encoded, the EDMA loads the next set of input configuration registers and the processing flow repeats.

Initialization Usage overview and dataflow Initialization Configuration and data EDMA setup Error detection and interrupt Debug and emulation support Initialization Sequence Reset the TCP3E Hard reset via chip level register or external reset OR Soft reset via TCP3E_SOFT_RESET register Program control registers TCP3E_MODE 3GPP, LTE, or WiMAX TCP3E_EMU FREERUN field determines if TCP3E halts on emulation suspend SOFT field has no effect TCP3E_ERR_MODE Determines if TCP3E halts or continues running when specific error conditions are detected

Configuration & Data Usage overview and dataflow Initialization Configuration and data EDMA setup Error detection and interrupt Debug and emulation support Input Configuration Register 0 TCP3E_CFG0 Bit Name R/W Value Description 11:0 MCNT R/W 1-4095 Number of code-blocks that need to be processed (setting value to 0 is illegal) 12 Rsrvd R 0 Reserved (always reads 0) 26:13 BLOCK_SIZE R/W 28:27 IN_ORDER R/W 30:29 OUT_ORDER R/W 31 GEN_LTE_CRC R/W 40-5114 40-6144 48-4800 Un-encoded code block size (in bits) (includes the 24-bit CRC for LTE when CRC generation is enabled) WCDMA mode LTE mode WiMAX mode Controls format conversion of input data: 0 - No bit reversal on the input 32-bit word 1 - Bit reverse within the 32-bit input word 2 - Bit reverse within each byte of the 32-bit input word 3 - Byte swap, no bit reverse on 32-bit input word Controls format conversion of output data: 0 - No bit reversal on the output 32-bit word 1 - Bit reverse within the 32-bit output word 2 - Bit reverse within each byte of the 32-bit output word 3 - Byte swap, no bit reverse on 32-bit output word Only used for LTE mode to determine if CRC will be generated or not. This flag is ignored if not in LTE mode. Note that when this flag is enabled in LTE mode, the amount of input data transferred via EDMA will be 24 bits less than the specified BLOCK_SIZE. 0 - CRC NOT generated 1 - CRC IS generated

Input Configuration Register 1 TCP3E_CFG1 Bit Name R/W Value Description 15:0 INTLV_PAR0 R/W 31:16 INTLV_PAR1 R/W 3GPP mode : must be set to 0 LTE mode : f1 WiMAX mode: P0 3GPP mode : must be set to 0 LTE mode : f2 WiMAX mode: P1 Input Configuration Register 2 TCP3E_CFG2 Bit Name R/W Value Description 15:0 INTLV_PAR2 R/W 31:16 INTLV_PAR3 R/W - 3GPP mode : must be set to 0 LTE mode : must be set to 0 WiMAX mode: P2 3GPP mode : must be set to 0 LTE mode : must be set to 0 WiMAX mode: P3

Data Format The TCP3E input and output format is hard bits. If in LTE mode and CRC generation is enabled, then TCP3E will add CRC bits so number of input bits written by EDMA is BLOCK_SIZE 24 IN_ORDER and OUT_ORDER fields in the TCP3E_CFG0 register are set depending on the DSP endianness and data packing order in the system memory. Their effect is shown in the following diagram where b0 is the first data bit in time. Bit Ordering Diagram........................

Tail Bits for 3GPP / LTE The TCP3E outputs three streams of data per code block. (0) d k = x k x k z k (1) d k = z k c k (2) d k = z k for k = 0,1,2,,K-1 Tail bits are packed at the end of three streams as: ( 0) (0) K x K dk + 1 = zk+ 1 d = (0) (0) K+ 2 = xk d K + 3 = z K + 1 d c k z k ( 1) (1) K z K dk + 1 = xk+ 2 d = (1) (1) K+ 2 = zk d K + 3 = x K + 2 d x k (2) (2) d K = x K+ 1 + 1 = (2) (2) dk zk+ 2 d K + 2 = x K + 1 d K + 3 = z K + 2 EDMA Setup Usage overview and dataflow Initialization Configuration and data EDMA setup Error detection and interrupt Debug and emulation support

EDMA Setup Three types of EDMA transfers are required: 1. Input configuration registers Per code block set of MCNT code blocks All registers must be written even if not used/changed 2. Input data (per code block) 3. Output data (per code block) MCNT = 1 (Single Code Block) Example DSP initiates the process by setting the bit corresponding to EDMA channel X in the EDMA controller event set register. EDMA transfers configuration registers and links in the entry with the input data (info bits). TCP3E issues WEVT to initiate the input data transfer. TCP3E encodes data and issues REVT on channel Y, to initiate encoded data transfer to DSP. After the transfer completion, EDMA issues interrupt to DSP to signal the end of the encoding process.

MCNT = 5 Example Number of PaRAM entries is same as single code block PaRAM entries for input and output data are setup to move all five code blocks (one per WEVT/REVT) MCNT = 5 Example Dataflow

Additional EDMA Info Other examples of EDMA programming can be found in the TCP3E User Guide: Multiple code blocks of different size Large number of code blocks PaRAM entry details for each of the three transfer types are also found in the TCP3E User Guide: OPT (options field) settings Source / destination address A/B/C count parameters Index parameters Error Detection & Interrupt Usage overview and dataflow Initialization Configuration and data EDMA setup Error detection and interrupt Debug and emulation support

Error Detection TCP3E checks for several types of error conditions and can halt and/or generate an interrupt if they are detected. Error conditions include: Programming errors (such as setting a control parameter in a register to an invalid value) Incorrect DSP accesses to the TCP3E memories When a specific error condition is detected, the TCP3E will either halt or continue running based on the setting of the bits in the TCP3E_ERR_MODE register Error Conditions Bit Index in Registers Error Condition Description 0 ILLEGAL_MODE Mode is set to an illegal value (not 1,2 or 4). This error condition may occur when writing to the TCP3E_MODE register or when the TCP3E starts a new encode operation. 1 MCNT_ZERO MCNT is zero. This error condition may occur when writing to the TCP3E_CFG0 register. 2 BLKSIZE_TOO_LARGE_OR_TOO_SMALL Block size too large or too small. This error condition may occur when writing to the TCP3E_CFG0 register. 3 MODE_WRITE_DURING_ENCODE Mode set during encode operation. This error condition may occur when writing to the TCP3E_MODE register. 4 INPUT_MEM_READ Input buffer read in non-emulation mode. This error condition may occur when reading from the TCP3E input memory. 5 INPUT_BUFFER_WRITE_ACCESS_RANGE Write to input buffer beyond current access range. This error condition may occur when writing to the TCP3E input memory. 6 OUTPUT_BUFFER_WRITE Write to output buffer in non-emulation mode. This error condition may occur when writing to the TCP3E output memory. 7 OUTPUT_BUFFER_READ_ACCESS_RANGE Read from output buffer beyond current access range. This error condition may occur when reading from the TCP3E output memory.

Error Interrupt and Recovery If an error condition has been enabled in the TCP3E_EINT_EN register, an interrupt will be generated when the error condition occurs. The following four steps should be followed when an error interrupt occurs: 1. Identify the source of the interrupt by reading the TCP3E Error Interrupt Enabled Status register. 2. If the error has not caused TCP3E to halt, the DSP clears the interrupt by writing to the TCP3E Error Interrupt Clear register. 3. If the error has caused the TCP3E to halt, a soft reset must be issued at this time to clear the error source. There is no need to write to the TCP3E Error Interrupt Clear register. The EDMA should also be re programmed. 4. The DSP then writes an 8 bit vector to the TCP3E End of Interrupt register to acknowledge that it has serviced the TCP3E error interrupt condition. Debug and Emulation Support Usage overview and dataflow Initialization Configuration and data EDMA setup Error detection and interrupt Debug and emulation support

Debug And Emulation Support TCP3E supports emulation suspend mode to enable debug, which forces a halt after all MCNT blocks in the current code block set are done encoding. In emulation suspend mode, the user can write to and read from every memory and register in the TCP3E. Transactions MUST be 32 bit aligned! (automatic if EDMA is used) The emulation suspend mode RAM memory map is different from the normal mode RAM mapping: Since the selection is done internally during normal mode, the ping and pong memories are accessed at the same address. Since both of the ping and pong memories have to be accessible in emulation suspend mode, separate memory addressing has to be used. All memory accesses in emulation suspend mode will be performed as if the IN_ORDER and OUT_ORDER fields in the TCP3E_CFG0 register were set to 0, meaning that no bit reversal or byte swapping will be performed. TCP3E Driver Usage overview and dataflow Initialization Configuration and data EDMA setup Error detection and interrupt Debug and emulation support

TCP3E Driver Overview The TCP3E driver was created to abstract some of the hardware interface and optimize the code block scheduling to maximize throughput. Requirements: BIOS 6.21 EDMA driver QMSS driver Multiple input code block sets can be queued via Tcp3e_enqueue() function call. can optionally write output data descriptor address to a QMSS queue as a notification mechanism. TCP3E Driver Diagram

TCP3E Driver Initialization 1. Initialize EDMA driver. 2. Optionally initialize QMSS driver, setup memory region, and allocate descriptors. 3. Setup TCP3E driver interrupt chain path within CP_INTC. 4. Open EDMA channels used by TCP3E driver and register magazine done ISR. Use Tcp3e_getNumLinkedEdmaCh() to get number of linked channels required. 5. Allocate memory for the TCP3E driver instance. Use Tcp3e_getNumBuf() to get number of memory buffers required. Use Tcp3e_getBufDesc() to get memory buffer size, etc. 6. Call Tcp3e_init() TCP3E Usage 1. Make sure driver is ready to accept more input blocks via Tcp3e_getFreeEntryCount() 2. Submit a list of code block sets via Tcp3e_enqueue() 3. Start TCP3E if not currently active via Tcp3e_start() Use Tcp3e_getState() to check if active 4. Wait for completion of processing. Magazine done interrupt Optionally check QMSS queue if used (polling or accumulator interrupt)

For More Information For more information, please refer to the TCP3E User Guide. http://www.ti.com/lit/sprugys1 For questions regarding topics covered in this training, visit the support forums at the TI E2E Community website.