TTC Standalone Driver


Introduction

This page gives an overview of ttcps driver which is available as part of the Xilinx Vivado and SDK distribution

Source path for the driver:
https://github.com/Xilinx/embeddedsw/tree/master/XilinxProcessorIPLib/drivers/ttcps

Driver source code is organized into different folders. Below diagram shows the ttcps driver source organization

ttcps
|
-- Doc - Provides the API and data structure details
|
- Examples - Reference application to show how to use the driver APIs and calling sequence
|
- Source - Driver source files

Features Supported


Controller/Driver features supported

  • Three independent 32-bit timer/counters for ZynqMP/Versal and 16-bit timer/counter for Zynq
  • Clock can be selected from:
    • Internal PS bus clock (CPU_1x)
    • Internal clock (from PL)
    • External clock (from MIO)
  • 16-bit pre-scalar for clock
  • Three interrupts, one for each counter
  • Support both increment and decrement counting
  • Interrupt on overflow, at regular interval, or counter matching programmable values
  • Ability to generate waveform output (e.g. PWM) through the MIO
  • Support waveform output to the PL

Known issues and Limitations
  • None

Test cases


TTC interrupt example:

https://github.com/Xilinx/embeddedsw/blob/master/XilinxProcessorIPLib/drivers/ttcps/examples/xttcps_intr_example.c
This example uses two timer counters in the Triple Timer Counter (TTC) module in the Ps block in interrupt mode.
Output

TTC rtc example:

https://github.com/Xilinx/embeddedsw/blob/master/XilinxProcessorIPLib/drivers/ttcps/examples/xttcps_rtc_example.c
This example uses one timer/counter to make a real time clock. The number of seconds elapsed are displayed on
the console till 121 seconds are elapsed.
Output

TTC low level example:

https://github.com/Xilinx/embeddedsw/blob/master/XilinxProcessorIPLib/drivers/ttcps/examples/xttcps_low_level_example.c
This example uses triple timer counter in polled mode to generate square wave output on waveform out pin.
Output

TTC tapp example:

https://github.com/Xilinx/embeddedsw/blob/master/XilinxProcessorIPLib/drivers/ttcps/examples/xttcps_tapp_example.c
This example uses triple timer counter to generate interrupt and update a flag which is checked in the interrupt example to confirm whether the interrupt is generated or not.
Output

Changelog

2020.2

  • Updated makefile for parallel make execution and incremental build support.

2020.1

  • Fixed the warnings reported by ARMCC compiler

2019.2

  • Added interrupt handler in driver. Updated examples to use driver's  interrupt handler.

2019.1

  • Fixed bug in XTtcPs_ClearInterruptStatus function

2018.3

  • Fixed bug in XTtcPs_CalcIntervalFromFreq API to use  correct maximum interval count (32 bit) for ZynqMP .

2017.3

  • Updated ttcps.tcl to append 'U' to all constant definitions exported from the ttcps driver to the xparameters.h

2017.2

  • No changes for 2017.2

2017.1

  • Updated the ttcps.tcl script to generate the canonical names and constant defines in xparameters.h, based on the ttcps instance number.
  • Updated ttcps_tapp.tcl to check whether ttc device is interrupting current processor or not.If device is not interrupting the current processor then,do not include ttc driver instance and interrupt example source/header files to peripheral test application.
  • Updated gen_testfunc_call proc in ttcps_tapp.tcl script, to fix bug in the instance number calculation

2016.4

  • Modified XTtcPs_GetCounterValue,XTtcPs_GetInterval and XTtcPs_CalcIntervalFromFreq functions to use 32 bit counter/interval values for Zynq Ultrascale+ MPSoC

2016.3

  • No changes for 2016.3

Related Links