SPRAD62 February   2023 TMS320F280023C , TMS320F280025C , TMS320F280025C-Q1 , TMS320F280037C , TMS320F280037C-Q1 , TMS320F280038C-Q1 , TMS320F280039C , TMS320F280039C-Q1 , TMS320F28386D , TMS320F28386D-Q1 , TMS320F28386S , TMS320F28386S-Q1 , TMS320F28388D , TMS320F28388S , TMS320F28P650DH , TMS320F28P650DK , TMS320F28P650SH , TMS320F28P650SK , TMS320F28P659DK-Q1

 

  1.   Abstract
  2.   Trademarks
  3. 1Introduction
  4. 2Serial Port Design Methodology
    1. 2.1 Step 1: Understand Design Requirements
    2. 2.2 Step 2: Identify Required Inputs to the CLB Tile
      1. 2.2.1 GPIO Input Qualification
      2. 2.2.2 CLB Input Settings
    3. 2.3 Step 3: Identify Required Outputs from CLB Logic
      1. 2.3.1 Synchronizing Outputs Signals
      2. 2.3.2 Output Signal Conditioning
    4. 2.4 Step 4: Design the CLB Logic
      1. 2.4.1 Resource Allocation
      2. 2.4.2 Exchanging Data Between CLB FIFOs and MCU RAM
      3. 2.4.3 CLB Logic Status and Trigger Flags
        1. 2.4.3.1 Status/Flag Bits
        2. 2.4.3.2 Trigger Bits
    5. 2.5 Step 5: Simulate the Logic Design
    6. 2.6 Step 6: Test the CLB Logic
  5. 3Example A: Using the CLB to Input and Output a TDM Stream in Audio Applications
    1. 3.1 Example Overview
    2. 3.2 Step 1: Understand Design Requirements
    3. 3.3 Step 2: Identify Required Inputs to the CLB Tile
    4. 3.4 Step 3: Identify Required Outputs from CLB Logic
    5. 3.5 Step 4: Design the CLB Logic
      1. 3.5.1 Resource Allocation
      2. 3.5.2 TDM Word Counter
      3. 3.5.3 FSYNC and DATA1 Output Synchronization
    6. 3.6 Step 5: Simulate the Logic Design
    7. 3.7 Step 6: Test the CLB Logic
      1. 3.7.1 Hardware Setup and Connections
      2. 3.7.2 Software Setup
      3. 3.7.3 Testing Output Setup and Hold Times
      4. 3.7.4 Testing Data Integrity
  6. 4Example B: Using the CLB to Implement a Custom Communication Bus for LED Driver in Lighting Applications
    1. 4.1 Example Overview
    2. 4.2 Step 1: Understand Design Requirements
    3. 4.3 Step 2: Identify Required Inputs to the CLB Tile
    4. 4.4 Step 3: Identify Required Outputs From CLB Logic
    5. 4.5 Step 4: Design the CLB Logic
      1. 4.5.1 TX Tile Logic
      2. 4.5.2 RX Tile Logic
      3. 4.5.3 Data Clocking
    6. 4.6 Step 5: Simulate the Logic Design
    7. 4.7 Step 6: Test the CLB Logic
      1. 4.7.1 Hardware Setup and Connections
      2. 4.7.2 Software Setup
      3. 4.7.3 Testing Output Setup and Hold Times
  7. 5References

Resource Allocation

The CLB tile resources are allocated as follows:

  • COUNTER0 is used to receive the input data. It is operated in serializer mode. DATA_IN is shifted in on BCLK_IN falling edges.
  • COUNTER1 is used to output the transmit data. It is operated in serializer mode. COUNTER1 is shifted on BCLK_IN rising edges.
  • COUNTER2 is used to count falling edges on BCLK_IN. It is operated in normal counter mode. It resets when an FSYNC + BCLK (low edge) condition is detected OR when the bit count reaches 32.
  • LUT1 is used to reset COUNTER2 on FSYNC_IN and word boundaries. FSYNC_IN is logically ANDed with BCLK_IN falling edges to ensure FSYNC_IN is sampled only when it is guaranteed to be valid. LUT1 also triggers the HLC to pull new data from the PULL FIFO.
  • FSM1 is used to generate an event to the HLC once 4 32-bit words have been received/transmitted. It resets its count when FSYNC_IN is detected.
  • LUT0 and FSM0 are used to generate the FSYNC_OUT signal when FSYNC_IN is detected. The FSYNC_OUT signal is aligned to the BCLK_IN rising edge. Note that FSYNC_OUT is not a pass-through signal of FSYNC_IN as this was not a design requirement.
  • FSM2 is used to align the output the DATA1_OUT signal to the BCLK_IN rising edge.
  • The HLC is used to move data between the CLB push/pull FIFOs and the two serializer counters (COUNTER0 and COUNTER1). It also generates an interrupt to the CPU when 4 32-bit words are received/transmitted.