NOTICE: The Processors Wiki will End-of-Life on January 15, 2021. It is recommended to download any files or other content you may need that are hosted on processors.wiki.ti.com. The site is now set to read only.

Introduction to uPP

From Texas Instruments Wiki
Jump to: navigation, search

This topic describes the basic features and operation of the universal parallel port, or uPP. For more detailed information about the uPP peripheral, see the Universal Parallel Port User Guide.

Overview[edit]

The uPP peripheral is a new addition to certain devices with the C674x DSP core: C6746, C6748, and OMAP-L138. It offers a high-speed parallel data bus with several important features:

  • Two independent channels with separate data buses
    • Channels can operate in same or opposing directions simultaneously
  • I/O speeds up to 75 MHz with 8-16 bit data width per channel
  • Internal DMA – leaves CPU EDMA free
  • Simple protocol with few control pins (configurable: 2-4 per channel)
  • Single and double data rates (use one or both edges of clock signal)
    • Double data rate imposes a maximum clock speed of 37.5 MHz
  • Multiple data packing formats for 9-15 bit data widths
  • Data interleave mode (single channel only)

All of these features are described in detail by the Universal Parallel Port User Guide.

Simplified Block Diagram[edit]

Upp block simple.PNG

Comparison with Other Peripherals[edit]

Unlike SPI, UART, and other serial peripherals, uPP features a parallel data bus. This fact, combined with a maximum clock speed of 75 MHz, makes uPP transfers very fast compared to some peripherals. (For instance, a single uPP channel operating at 50 MHz is as much as 16 times faster than a SPI peripheral operating at the same clock speed.)

Like HPI, the uPP peripheral is a high-speed parallel data bus. Unlike HPI, uPP requires I/O transfers to be queued by device software; it does not grant direct memory access to an external device. Additionally, uPP is considerably faster than HPI (more on this later) and has a considerably simpler protocol.

The video port is sometimes "tricked" into sending and receiving arbitrary data at high speeds. The uPP peripheral allows comparable if not superior speed to the video port. The key advantage of uPP is that it does not require data to be massaged into and out of false video frames. Also, uPP is more flexible in that its two data buses may be configured to operate in either direction. They may also be operated in the same direction simultaneously.

Signal Descriptions[edit]

Each uPP channel has four control pins in addition to its data bus. These signals implement the uPP protocol, which is designed for simplicity and to interface readily with high-speed analog-to digital converters (ADCs) and digital-to-analog converters (DACs).

Signal Description
ENABLE Driven by transmitter. Asserts while data bus is active
START Driven by transmitter. Asserts at start of DMA line(s)
WAIT Driven by receiver. Asserts to request a pause in the current transfer
CLOCK Driven by transmitter

Example Signal Diagrams[edit]

Transmit Mode[edit]

Upp transmit sig.PNG

Receive Mode[edit]

Upp receive sig.PNG

Sample Use Cases[edit]

Connection to ADC or DAC[edit]

  1. Connect to high-speed data converters (DAC, ADC)
  2. EVM add-on card features 10-bit DAC (shown) and ADC

Upp dac connection.PNG

High-Speed Data Transfer to FPGA or External uPP[edit]

  1. Connect to FPGA or another uPP-equipped DSP for high-speed digital data transfer

Upp fpga connection.PNG

Internal DMA Concepts[edit]

The uPP peripheral features an internal DMA controller that services uPP transfers without consuming system EDMA resources. The uPP DMA is based on the standard 2D model. Each transfer consists of the following parameters:

  • Window Address - A pointer to the first data word in the buffer
  • Line Size - The number of bytes per data line
  • Line Count - The number of data lines in the entire transfer
  • Line Offset - The offset address between the start of each data line

These parameters allow some flexibility in organizing uPP data buffers.

  1. The simplest case is a single line transfer, in which all of the data resides in a contiguous buffer with size equal to the line size parameter. Then, Line count is set to one (1) and the line offset is irrelevant.
  2. To generate interrupt events within the transfer of a contiguous buffer, split it into multiple lines. In this case, be sure to set the line offset equal to the line size.
  3. To repeatedly send a data buffer with minimal overhead, set the line count to an arbitrarily high number and set the line offset to zero (0). This will cause a single line to be transferred repeatedly.

uPP Interrupts[edit]

All uPP peripheral interrupt events are tied to the internal DMA controller. There are five interrupt events per channel. Each event may be separately enabled or disabled.

  • End of Window - This event occurs when a transfer completes. This will only occur once per DMA transfer.
  • End of Line - This event occurs at the end of each line within a transfer.
  • Underrun/Overflow, Internal Error, and DMA Programming Error - These events indicate various error conditions

Throughput Estimates[edit]

The following table provides throughput estimates and compares theoretical numbers with more realistic numbers derived through preliminary experimentation.

Mode Theoretical (MB/s) Realistic (MB/s)
1 Ch, 8-bit 75 60
1 Ch, 16-bit 150 120
2 Ch, 1 Way, 8-bit 150 120
2 Ch, 1 Way, 16-bit(*) 200 160
2 Ch, 2 Way, 8-bit 150 120
2 Ch, 2 Way, 16-bit 300 240
HPI (16-bit) -- 50

Note: The uPP peripheral supports a maximum clock of 50 MHz in the configuration marked with (*).

See Also[edit]

Using the uPP DSP/BIOS Driver

Universal Parallel Port User Guide

uPP Introduction Video (requires registration on my.ti.com)

E2e.jpg {{
  1. switchcategory:MultiCore=
  • For technical support on MultiCore devices, please post your questions in the C6000 MultiCore Forum
  • For questions related to the BIOS MultiCore SDK (MCSDK), please use the BIOS Forum

Please post only comments related to the article Introduction to uPP here.

Keystone=
  • For technical support on MultiCore devices, please post your questions in the C6000 MultiCore Forum
  • For questions related to the BIOS MultiCore SDK (MCSDK), please use the BIOS Forum

Please post only comments related to the article Introduction to uPP here.

C2000=For technical support on the C2000 please post your questions on The C2000 Forum. Please post only comments about the article Introduction to uPP here. DaVinci=For technical support on DaVincoplease post your questions on The DaVinci Forum. Please post only comments about the article Introduction to uPP here. MSP430=For technical support on MSP430 please post your questions on The MSP430 Forum. Please post only comments about the article Introduction to uPP here. OMAP35x=For technical support on OMAP please post your questions on The OMAP Forum. Please post only comments about the article Introduction to uPP here. OMAPL1=For technical support on OMAP please post your questions on The OMAP Forum. Please post only comments about the article Introduction to uPP here. MAVRK=For technical support on MAVRK please post your questions on The MAVRK Toolbox Forum. Please post only comments about the article Introduction to uPP here. For technical support please post your questions at http://e2e.ti.com. Please post only comments about the article Introduction to uPP here.

}}

Hyperlink blue.png Links

Amplifiers & Linear
Audio
Broadband RF/IF & Digital Radio
Clocks & Timers
Data Converters

DLP & MEMS
High-Reliability
Interface
Logic
Power Management

Processors

Switches & Multiplexers
Temperature Sensors & Control ICs
Wireless Connectivity