Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.


Table of Contents

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
Code Block
themeMidnight
TTC Interrupt Example Test
Successfully ran TTC Interrupt Example Test

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
Code Block
themeMidnight
Starting Timer RTC Example
Successfully ran ttcps rtc Example

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
Code Block
themeMidnight
TTC Lowlevel Interrupt Example Test
Successfully ran Lowlevel TTC Interrupt Example Test

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
Code Block
themeMidnight
Starting Timer interrupt Example
Successfully ran ttcps tapp Example

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