Digital Communication Protocols

Embed Size (px)

Citation preview

  • 7/25/2019 Digital Communication Protocols

    1/47

    1ni.com

  • 7/25/2019 Digital Communication Protocols

    2/47

    ni.com

    Digital Communication Protocol

    Minghui Zhang, Senior R&D Hardware EngineerKalyanramu Vemishetty, Senior Embedded Systems En

  • 7/25/2019 Digital Communication Protocols

    3/47

    3ni.com

    Agenda

    RIO Overview

    Design with Timing Software Architecture

    Q&A

  • 7/25/2019 Digital Communication Protocols

    4/47

    4ni.com

    RIO Hardware

    Expansion I/O

    MXI-Express RIO Ethernet RIO EtherCAT RIO Wireless

    CompactRIO and NI Single-Board RIO

    Value

    PXI, PC RIO (R Series, NI

    FlexRIO)

    High PerformanceValue Performance

  • 7/25/2019 Digital Communication Protocols

    5/47

    5ni.com

    RIO Hardware

    I/O Frequency

    I/O

  • 7/25/2019 Digital Communication Protocols

    6/47

    6ni.com

    RIO Hardware

  • 7/25/2019 Digital Communication Protocols

    7/47

  • 7/25/2019 Digital Communication Protocols

    8/47

    8ni.com

    SPI Example

    CPOL = 0SCK Idle as

    CPHA = 0

    Send MOS

    @ SCK Falling

    Sample MIS

    @ SCK Rising

    0 0

    Master SPI

    - Select SPI configuration Based on ADC

  • 7/25/2019 Digital Communication Protocols

    9/47

    9ni.com

    SPI Example

    - Synchronous Design

    SPIMaster

    ControlInterface

    Ba

    ckplane

    Interface

    SPI Interface

    SPI Clock Base Clock

  • 7/25/2019 Digital Communication Protocols

    10/47

    10ni.com

    SPI Example

    Synchronous deGenerate S

    @ TopClk R

    Sample MIS

    @ TopClk R

    Design with Tim

    SCTLOutput Sign

    Input Signa

    - SPI Protocol Design

  • 7/25/2019 Digital Communication Protocols

    11/47

    11ni.com

    SPI Example

    Single Cycle Tim

    - SPI Protocol Timing

  • 7/25/2019 Digital Communication Protocols

    12/47

    12ni.com

    SPI Example

    Output SignalsArbitrate

    - SPI Protocol Output Signals

  • 7/25/2019 Digital Communication Protocols

    13/47

    13ni.com

    SPI Example

    - SPI Protocol Output Signals

  • 7/25/2019 Digital Communication Protocols

    14/47

    14ni.com

    SPI Example

    Output SignalsSync Regis

    - SPI Protocol Output Signals

  • 7/25/2019 Digital Communication Protocols

    15/47

    15ni.com

    SPI Example

    Input SignalsSync Regis

    Setup time Hold time

    - SPI Protocol Input Signals

  • 7/25/2019 Digital Communication Protocols

    16/47

  • 7/25/2019 Digital Communication Protocols

    17/47

    18ni.com

    Designing FPGA Digital Communication Protoco

    Communication

    Protocol Core

    Communication

    Protocol API

    Communication

    Protocol Abstraction

  • 7/25/2019 Digital Communication Protocols

    18/47

    19ni.com

    Case Study

    Acquire Data from ADC using SPI Communication Protocol

    ADCSPI

    FPGA

  • 7/25/2019 Digital Communication Protocols

    19/47

    20ni.com

    Communication Protocol Core

    Use State Machine

    DIO 0Arbitratio

    n Logic

    True

    False

    C i i P l C

  • 7/25/2019 Digital Communication Protocols

    20/47

    21ni.com

    Communication Protocol Core

    Decouple I/O from State

    C i i P l C

  • 7/25/2019 Digital Communication Protocols

    21/47

    22ni.com

    Communication Protocol Core

    Get I/O ValuesSet I/O V

    SPI Core

    (State Machine)

    Initialize DIO Lines

    D L k C d

  • 7/25/2019 Digital Communication Protocols

    22/47

    23ni.com

    Deep Look at Code

    Read SPI Digital Lines

    D L k t C d

  • 7/25/2019 Digital Communication Protocols

    23/47

    24ni.com

    Deep Look at Code

    Write SPI Digital Lines

    C i ti P t l C

  • 7/25/2019 Digital Communication Protocols

    24/47

    25ni.com

    Communication Protocol Core

    Desktop Execution Node Simulated SPI Core Waveform

    D i i FPGA Di it l C i ti P t

  • 7/25/2019 Digital Communication Protocols

    25/47

    26ni.com

    Designing FPGA Digital Communication Protoco

    Communication

    Protocol Core

    Communication

    Protocol API

    Communication

    Protocol Abstraction

    Case Study

  • 7/25/2019 Digital Communication Protocols

    26/47

    27ni.com

    Case Study

    Acquire Data from simil r ADC using SPI Communication

    ADCSPI

    FPGA

    Why create API?

  • 7/25/2019 Digital Communication Protocols

    27/47

    28ni.com

    Why create API?

    Abstraction from Hardware Layer

    Reusable

    Easy-To-Use

    Good Practices when creating API

  • 7/25/2019 Digital Communication Protocols

    28/47

    29ni.com

    Good Practices when creating API

    Consistency

    Easy To Use

    Decoupling

    Error Handling

    Communication Protocol Messaging API

  • 7/25/2019 Digital Communication Protocols

    29/47

    30ni.com

    Communication Protocol Messaging API

    C

    P

    (

    CLo

    (1

    SPI Transaction Commands

    Communication Protocol Messaging API

  • 7/25/2019 Digital Communication Protocols

    30/47

    31

    ni.com

    Communication Protocol Messaging API

    Data tr

    FPGA

    Deep Look at Code

  • 7/25/2019 Digital Communication Protocols

    31/47

    32

    ni.com

    Deep Look at Code

    Initialize SPI References.vi

    Deep Look at Code

  • 7/25/2019 Digital Communication Protocols

    32/47

    33

    ni.com

    Deep Look at Code

    Write Data for SPI Transaction.vi

    Deep Look at Code

  • 7/25/2019 Digital Communication Protocols

    33/47

    34ni.com

    Deep Look at Code

    Start SPI Transaction.vi

    Deep Look at Code

  • 7/25/2019 Digital Communication Protocols

    34/47

    35ni.com

    Deep Look at Code

    Read Device Response.vi

    Deep Look at Code

  • 7/25/2019 Digital Communication Protocols

    35/47

    36ni.com

    Deep Look at Code

    SPI Engine.vi

    Designing FPGA Digital Communication Protoco

  • 7/25/2019 Digital Communication Protocols

    36/47

    37ni.com

    Designing FPGA Digital Communication Protoco

    Communication

    Protocol Core

    Communication

    Protocol API

    Communication

    Protocol Abstraction

    Case Study

  • 7/25/2019 Digital Communication Protocols

    37/47

    38ni.com

    Case Study

    Acquire Data from ADC using SPI/I2C Communication Proto

    ADCSPI

    FPGA

    I2C

    Communication Protocol Abstraction

  • 7/25/2019 Digital Communication Protocols

    38/47

    39ni.com

    Communication Protocol Abstraction

    SPI Engine

    Sequence of SPI

    Commands

    (Driver)

    NodeGet Data Acquired Data

    I/O Node

    Communication Protocol Abstraction

  • 7/25/2019 Digital Communication Protocols

    39/47

    40ni.com

    SPI Driver

    Data Nodes

    SPI Engine

    Communication Protocol Abstraction

    I2C E

    I2C

    Integration into an Existing System Architecture

  • 7/25/2019 Digital Communication Protocols

    40/47

    41ni.com

    Integration into an Existing System Architecture

  • 7/25/2019 Digital Communication Protocols

    41/47

    42ni.com

    SPI Abstraction

    Integration into an Existing System Architecture

  • 7/25/2019 Digital Communication Protocols

    42/47

    43ni.com

    I2C Abstraction

    Integration into an Existing System Architecture

  • 7/25/2019 Digital Communication Protocols

    43/47

    44ni.com

    Summary

  • 7/25/2019 Digital Communication Protocols

    44/47

    45ni.com

    Summary

    Design with Timing

    - Synchronous Design

    - I/O property selection

    Software Architecture

    - State Machine for Core IP

    - Command Based API- Custom I/O Node for abstracting different protocols

  • 7/25/2019 Digital Communication Protocols

    45/47

    46ni.com

    Questions?

    Related Links

  • 7/25/2019 Digital Communication Protocols

    46/47

    47ni.com

    Related Links

    Serial Peripheral Interface Bus

    http://en.wikipedia.org/wiki/Serial_Peripheral_Interface_Bus

    SPI API VI Package Manager)

    https://github.com/NISystemsEngineering/SPIAPI

    Implementing SPI Communication Protocol in LabVIEW FPGA

    http://www.ni.com/example/9117/en/#toc2

    Timing Analysis on Digital I/O

    http://www.ni.com/white-paper/13489/en/

    http://en.wikipedia.org/wiki/Serial_Peripheral_Interface_Bushttps://github.com/NISystemsEngineering/SPIAPIhttp://www.ni.com/example/9117/en/http://www.ni.com/white-paper/13489/en/http://www.ni.com/white-paper/13489/en/http://www.ni.com/white-paper/13489/en/http://www.ni.com/white-paper/13489/en/http://www.ni.com/example/9117/en/https://github.com/NISystemsEngineering/SPIAPIhttp://en.wikipedia.org/wiki/Serial_Peripheral_Interface_Bus
  • 7/25/2019 Digital Communication Protocols

    47/47

    48ni.com