⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 readme_xc18v00_xcf00s.txt

📁 Xilinx Jtag Configuration source code, Support *.xsvf file
💻 TXT
📖 第 1 页 / 共 2 页
字号:
                         |                                      |
TCK Type 3:     __       |________________________________      | ____________
High-Low-High     \      /      ...wait with static TCK...\     |/
TCK Pulse          \____/|                                 \____/
==NOT-GOOD==             |Waiting for falling edge to Start^.End^--Too short!!
                         |                                  ^^^^
                         |                                  NOT enough time
                                                            for operation
                                                            to complete.

How To Know Which Type of TCK Implementation You Have?

    Check the TCK activity with a scope...
    or
    Look at the XAPP058 XSVF player C code...

    Step A - Check for TCK Type 1 (Continuous TCK)
        Look at PORTS.C waitTime() function to see if a continuous TCK
        clock is implemented.  (XC18V00/XCF00S erase/program wait times are
        15000000us/14000us.)
        If waitTime() function is implemented as a continuous TCK, then
        the implementation satisfies the UMC and STMicro XC18V00/XCF00S
        requirements.
            Example continuous TCK implementation in PORTS.C, waitTime() function:
                waitTime( time )
                {
                    for ( int i = 0; i < time; i++ )
                    {
                        pulseClock();   // repeatedly pulse TCK
                    }
                }
        If waitTime() function is implemented as a simple wait that does
        nothing, i.e. that holds TCK at a static level, then go to Step B
        to determine the static TCK level and TCK type.
            Example static implementations of waitTime in PORTS.C:
                // Example 1
                waitTime( time )
                {
                    for ( int i = 0; i < time; i++ )
                    {
                        // Empty loop...do nothing while waiting
                    }
                }
                // Example 2
                waitTime( time )
                {
                    sleep( time );  // call simple sleep that does nothing
                }
    Step B - Check How MICRO.C Handles TCK
        Look at the MICRO.C code to see how it handles the TCK.
        See the #define XSVF_VERSION in MICRO.C to determine the version.
        Old versions (prior to 4.x or unspecified version) of MICRO.C
        may call the pulseClock function in the PORTS.C file.  If
        MICRO.C calls pulseClock in PORTS.C, then go to Step C.
        For recent versions (4.x or later) of MICRO.C, look at the
        xsvfTmsTransition function in MICRO.C.  (xsvfTmsTransition is used to
        set the new TMS value for transitioning to a new TAP state such
        as transitioning to the Run-Test/Idle state.)
        If the xsvfTmsTransition function calls pulseClock in PORTS.C,
        then go to Step C.  Example xsvfTmsTransition that calls pulseClock:
            xsvfTmsTransition( newTmsValue )
            {
                setPort( TMS, newTmsValue );
                pulseClock();   // Go to STEP C to determine TCK type
            }
        If the xsvfTmsTransition function implements a TCK Type 3
        (High-Low-High), then there may be a problem.
        Example xsvfTmsTransition function with TCK Type 3 (High-Low-High):
            xsvfTmsTransition( newTmsValue )
            {
                setPort( TMS, newTmsValue );
                // Assumes previous TCK == High
                setPort( TCK, 0 );
                setPort( TCK, 1 );  // Low->High transition changes TAP state
                                    // Last TCK level == High.
                // PROBLEM...May not satisfy STMicro XC18V00/XCF00S sequence
                //           requirement!!!
                //           If PORTS.C waitTime function sets TCK Low,
                //           then the STMicro requirement is satisfied.
                //           If PORTS.C waitTime function does nothing to TCK
                //           then the STMicro requirement is NOT satisfied!!!
            }
    Step C - Check the TCK type in the pulseClock function in the PORTS.C file
        Look at the pulseClock function in PORTS.C.
        TCK Type 2 (Low-High-Low) pulseClock function, example implementation:
            pulseClock()
            {
                // TCK Type 2 - Low-High-Low TCK pulse
                setPort( TCK, 0 );  // Low
                setPort( TCK, 1 );  // High
                setPort( TCK, 0 );  // Low...last TCK transition is High->Low
                // GOOD--Satisfies UMC and STMicro XC18V00/XCF00S
            }
        TCK Type 3 (High-Low-High) pulseClock function, example implementation:
            pulseClock()
            {
                // TCK Type 3 - High-Low-High TCK pulse
                // Assumes previous TCK value was High
                setPort( TCK, 0 );  // Low
                setPort( TCK, 1 );  // High...last TCK transition is Low->High
                // PROBLEM...May not satisfy STMicro XC18V00/XCF00S sequence
                //           requirement!!!
                //           If PORTS.C waitTime function sets TCK Low,
                //           then the STMicro requirement is satisfied.
                //           If PORTS.C waitTime function does nothing to TCK
                //           then the STMicro requirement is NOT satisfied!!!
            }

How To Fix a TCK Type 3 (High-Low-High) Problem:
    XSVF Player Workaround (ONLY for v5.xx XSVF Players):
        For a v5.xx XSVF player implementation that does not meet
        the Special ST Micro XC18V00/XCF00S PROM Requirement:
        Use the -xwait option when translating the iMPACT 5.2.03i SVF
        to XSVF.  For example:
            svf2xsvf502 -r 0 -xwait -i myfile.svf -o myfile.xsvf
            where
            -r 0 = Zero retries.  (Retries applicable to only XC9500 series.)
            -xwait = use the XSVF XWAIT command.
            -i myfile.svf  = input SVF file
            -o myfile.xsvf = output XSVF file

    Generic Fix (All XSVF Player Versions):
        The fix is to set the TCK to a Low value in the PORTS.C waitTime
        function prior to the wait period.  This will ensure the High->Low
        TCK transition requirement of the STMicro XC18V00/XCF00S.
            Example waitTime function fix in PORTS.C:
                waitTime( time )
                {
                    setPort( TCK, 0 );  // ***FIX:  Make sure TCK High->Low
                                        //          transition occurs within
                                        //          TAP Run-Test/Idle prior
                                        //          to the wait period.
                    // Wait for requested period
                    for ( int i = 0; i < time; i++ )
                    {
                        // Empty loop...do nothing while waiting
                    }
                }

    Alternate Generic Fix (All XSVF Player Versions):
        The alternate fix is to pulse the TCK at least once in the PORTS.C
        waitTime function prior to the wait period.  This will ensure the
        High->Low TCK transition requirement of the STMicro XC18V00/XCF00S.
            Example waitTime function alternate fix in PORTS.C:
                waitTime( time )
                {
                    pulseClock();   // ***FIX:  A full TCK clock period
                                    //          ensures a TCK High->Low
                                    //          transition occurs within
                                    //          TAP Run-Test/Idle prior
                                    //          to the wait period.
                    // Wait for requested period
                    for ( int i = 0; i < time; i++ )
                    {
                        // Empty loop...do nothing while waiting
                    }
                }



⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -