<?xml version="1.0" encoding="utf-8" ?>
<TrbNet xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-xsi:noNamespaceSchemaLocation="TrbNet.xsd"
- name="JtagController"
- offset="1000"
- >
-<group name="JtagCommonControl"
- address="0000" size="37" function="config" mode="rw" continuous="true">
-
- <register name="WaitBeforeStart"
- address="0007" mode="rw" function ="config" >
- <description>Wait time between write sequence and start signal.</description>
- <field name="WaitBeforeStart"
- start="0" size="20" mode="rw" type="config" format="integer" defaultValue="0" >
- <description>The number of MAPS clock cycles to wait after last write before sending the start signal. </description>
- </field>
- </register>
-
- <register name="TriggerInitSeq"
- address="000c" mode="w" function ="trigger" >
- <description>Trigger the init sequence.</description>
- <field name="TriggerInitSeq"
- start="0" size="5" mode="w" type="trigger" format="bitmask" defaultValue="0" >
- <description>A bitmask to trigger the init sequence on individual JTAG chains. </description>
- </field>
- </register>
-
- <register name="TriggerReset"
- address="000d" mode="w" function ="trigger" >
- <description>Trigger the init sequence.</description>
- <field name="TriggerReset"
- start="0" size="5" mode="w" type="trigger" format="bitmask" defaultValue="0" >
- <description>A bitmask to trigger sending a reset pulse on individual JTAG chains </description>
- </field>
- </register>
-
- <register name="TriggerStart"
- address="000e" mode="w" function ="trigger" >
- <description>Trigger sending a start pulse.</description>
- <field name="TriggerStart"
- start="0" size="5" mode="w" type="trigger" format="bitmask" defaultValue="0" >
- <description>A bitmask to trigger sending a start pulse on individual JTAG chains </description>
- </field>
- </register>
-
- <register name="TriggerJtagRun"
- address="000f" mode="w" function ="trigger" >
- <description>Trigger running JTAG write.</description>
- <field name="TriggerJtagRun"
- start="0" size="5" mode="w" type="trigger" format="bitmask" defaultValue="0" >
- <description>A bitmask to trigger writing the JTAG registers three times on individual JTAG chains </description>
- </field>
- </register>
-
- <register name="ResetBeforeInit"
- address="0010" mode="rw" function ="config" >
- <description>Generate a reset before doing init sequence</description>
- <field name="ResetBeforeInit"
- start="0" size="1" mode="rw" type="config" format="boolean" defaultValue="0" >
- <description>Enable to send a reset pulse before starting init sequence</description>
- </field>
- </register>
-
- <register name="ResetAfterFirstWrite"
- address="0011" mode="rw" function ="config" >
- <description>Generate a reset after first register write sequence</description>
- <field name="ResetAfterFirstWrite"
- start="0" size="1" mode="rw" type="config" format="boolean" defaultValue="0" >
- <description>Enable to send a reset pulse after the first writing of JTAG registers</description>
- </field>
- </register>
-
- <register name="TriggerWriteOnce"
- address="0014" mode="w" function ="trigger" >
- <description>Trigger writing all JTAG registers once</description>
- <field name="TriggerWriteOnce"
- start="0" size="5" mode="w" type="trigger" format="bitmask" defaultValue="0" >
- <description>Trigger writing all JTAG registers once on individual JTAG chains</description>
- </field>
- </register>
-
- <group name="JtagOverride"
- address="0020" size="5" function="config" mode="rw" continuous="true">
- <description>Sets fixed values for all outputs for JTAG and sensor control and inverts the outputs if needed. One register for each JTAG chain.</description>
-
- <!--
- MAPS_RESET_OUT(i) <= (maps_reset(i) xor signals_invert(i)(10)) when signals_invert(i)(11) = '1' else signals_invert(i)(10);
- MAPS_START_OUT(i) <= (maps_start(i) xor signals_invert(i)(8)) when signals_invert(i)(9) = '1' else signals_invert(i)(8);
- JTAG_TCK_OUT(i) <= (jtag_tck(i) xor signals_invert(i)(6)) when signals_invert(i)(7) = '1' else signals_invert(i)(6);
- JTAG_TMS_OUT(i) <= (jtag_tms(i) xor signals_invert(i)(4)) when signals_invert(i)(5) = '1' else signals_invert(i)(4);
- JTAG_TDI_OUT(i) <= (jtag_tdi(i) xor signals_invert(i)(2)) when signals_invert(i)(3) = '1' else signals_invert(i)(2);
- jtag_tdo(i) <= (JTAG_TDO_IN(i) xor signals_invert(i)(0)) when signals_invert(i)(1) = '1' else signals_invert(i)(0);
-
- clk_maps_tmp_p(i) <= signals_invert(i)(12) when signals_invert(i)(13) = '1' else signals_invert(i)(12);
- clk_maps_tmp_n(i) <= not signals_invert(i)(12) when signals_invert(i)(13) = '1' else signals_invert(i)(12);
- -->
+ xsi:noNamespaceSchemaLocation="TrbNet.xsd"
+ name="JtagController"
+ offset="0000"
+ >
+ <!--===========================================-->
+ <!-- Common JTAG control registers -->
+ <!--===========================================-->
+ <group name="JtagCommonControl"
+ address="1000" size="37" function="config" mode="rw" continuous="true">
+ <register name="WaitBeforeStart"
+ address="0007" mode="rw" function ="config" >
+ <description>Wait time between write sequence and start signal.</description>
+ <field name="WaitBeforeStart"
+ start="0" size="20" mode="rw" type="config" format="integer" defaultValue="0" >
+ <description>The number of MAPS clock cycles to wait after last write before sending the start signal. </description>
+ </field>
+ </register>
+ <register name="TriggerInitSeq"
+ address="000c" mode="w" function ="trigger" >
+ <description>Trigger the init sequence.</description>
+ <field name="TriggerInitSeq"
+ start="0" size="5" mode="w" type="trigger" format="bitmask" defaultValue="0" >
+ <description>A bitmask to trigger the init sequence on individual JTAG chains. </description>
+ </field>
+ </register>
+ <register name="TriggerReset"
+ address="000d" mode="w" function ="trigger" >
+ <description>Trigger the init sequence.</description>
+ <field name="TriggerReset"
+ start="0" size="5" mode="w" type="trigger" format="bitmask" defaultValue="0" >
+ <description>A bitmask to trigger sending a reset pulse on individual JTAG chains </description>
+ </field>
+ </register>
+ <register name="TriggerStart"
+ address="000e" mode="w" function ="trigger" >
+ <description>Trigger sending a start pulse.</description>
+ <field name="TriggerStart"
+ start="0" size="5" mode="w" type="trigger" format="bitmask" defaultValue="0" >
+ <description>A bitmask to trigger sending a start pulse on individual JTAG chains </description>
+ </field>
+ </register>
+ <register name="TriggerJtagRun"
+ address="000f" mode="w" function ="trigger" >
+ <description>Trigger running JTAG write.</description>
+ <field name="TriggerJtagRun"
+ start="0" size="5" mode="w" type="trigger" format="bitmask" defaultValue="0" >
+ <description>A bitmask to trigger writing the JTAG registers three times on individual JTAG chains </description>
+ </field>
+ </register>
+ <register name="ResetBeforeInit"
+ address="0010" mode="rw" function="config" >
+ <description>Generate a reset before doing init sequence</description>
+ <field name="ResetBeforeInit"
+ start="0" size="1" mode="rw" type="config" format="boolean" defaultValue="0" >
+ <description>Enable to send a reset pulse before starting init sequence</description>
+ </field>
+ </register>
+ <register name="ResetAfterFirstWrite"
+ address="0011" mode="rw" function="config" >
+ <description>Generate a reset after first register write sequence</description>
+ <field name="ResetAfterFirstWrite"
+ start="0" size="1" mode="rw" type="config" format="boolean" defaultValue="0" >
+ <description>Enable to send a reset pulse after the first writing of JTAG registers</description>
+ </field>
+ </register>
+ <register name="TriggerWriteOnce"
+ address="0014" mode="w" function ="trigger" >
+ <description>Trigger writing all JTAG registers once</description>
+ <field name="TriggerWriteOnce"
+ start="0" size="5" mode="w" type="trigger" format="bitmask" defaultValue="0" >
+ <description>Trigger writing all JTAG registers once on individual JTAG chains</description>
+ </field>
+ </register>
+ <group name="JtagOverride"
+ address="0020" size="5" function="config" mode="rw" continuous="true">
+ <description>Sets fixed values for all outputs for JTAG and sensor control and inverts the outputs if needed. One register for each JTAG chain.</description>
+ <register name="JtagOverride"
+ address="0020" repeat="5" function="config" mode="rw" >
+ <description>Sets fixed values for all outputs for JTAG and sensor control and inverts the outputs if needed. One register for each JTAG chain.</description>
+ <field name="InvertTDO"
+ start="0" size="1" mode="rw" type="config" format="boolean" defaultValue="0" >
+ <description>Invert TDO input signal</description>
+ </field>
+ <field name="InvertTDI"
+ start="2" size="1" mode="rw" type="config" format="boolean" defaultValue="0" >
+ <description>Invert TDI output signal</description>
+ </field>
+ <field name="InvertTMS"
+ start="4" size="1" mode="rw" type="config" format="boolean" defaultValue="0" >
+ <description>Invert TMS output signal</description>
+ </field>
+ <field name="InvertTCK"
+ start="6" size="1" mode="rw" type="config" format="boolean" defaultValue="0" >
+ <description>Invert TCK output signal</description>
+ </field>
+ <field name="InvertStart"
+ start="8" size="1" mode="rw" type="config" format="boolean" defaultValue="0" >
+ <description>Invert Start output signal</description>
+ </field>
+ <field name="InvertReset"
+ start="10" size="1" mode="rw" type="config" format="boolean" defaultValue="0" >
+ <description>Invert Reset output signal</description>
+ </field>
+ <field name="InvertClock"
+ start="12" size="1" mode="rw" type="config" format="boolean" defaultValue="0" >
+ <description>Invert Clock output signal</description>
+ </field>
+ <field name="EnableTDO"
+ start="1" size="1" mode="rw" type="config" format="boolean" defaultValue="0" >
+ <description>Enable TDO input signal</description>
+ </field>
+ <field name="EnableTDI"
+ start="3" size="1" mode="rw" type="config" format="boolean" defaultValue="0" >
+ <description>Enable TDI output signal</description>
+ </field>
+ <field name="EnableTMS"
+ start="5" size="1" mode="rw" type="config" format="boolean" defaultValue="0" >
+ <description>Enable TMS output signal</description>
+ </field>
+ <field name="EnableTCK"
+ start="7" size="1" mode="rw" type="config" format="boolean" defaultValue="0" >
+ <description>Enable TCK output signal</description>
+ </field>
+ <field name="EnableStart"
+ start="9" size="1" mode="rw" type="config" format="boolean" defaultValue="0" >
+ <description>Enable Start output signal</description>
+ </field>
+ <field name="EnableReset"
+ start="11" size="1" mode="rw" type="config" format="boolean" defaultValue="0" >
+ <description>Enable Reset output signal</description>
+ </field>
+ <field name="EnableClock"
+ start="13" size="1" mode="rw" type="config" format="boolean" defaultValue="0" >
+ <description>Enable Clock output signal</description>
+ </field>
+ </register>
+ </group>
+ </group>
+ <!--===========================================-->
+ <!--JTAG Status registers for each chain -->
+ <!--===========================================-->
+ <group name="JtagStatus"
+ address="1800" size="40" function="status" mode="r" continuous="true">
+ <group name="JtagChainStatus"
+ address="1800" size="8" repeat="5" function="status" mode="r" continuous="true">
+ <register name="JtagErrorCount1"
+ address="0002" function="status" mode="r" >
+ <field name="ErrorsReadId"
+ start="0" size="16" mode="r" type="status" format="integer" >
+ <description>Number of read errors during "read id" operation</description>
+ </field>
+ <field name="ErrorsWrite"
+ start="16" size="16" mode="r" type="status" format="integer" >
+ <description>Number of read errors during write operation</description>
+ </field>
+ </register>
+ <register name="JtagErrorCount2"
+ address="0003" function="status" mode="r" >
+ <field name="ErrorsDataChanged"
+ start="0" size="16" mode="r" type="status" format="integer" >
+ <description>Number of times data read back from the sensor was not identical to the data written to the sensor.</description>
+ </field>
+ <field name="ErrorsSampling"
+ start="16" size="16" mode="r" type="status" format="integer" >
+ <description>Number of sampling errors of TDI signal. The signal from the sensor is sampled three times for each bit, all occurrences must be equal.</description>
+ </field>
+ </register>
+ <register name="JtagRunCounter"
+ address="0004" function="status" mode="r" >
+ <field name="JtagRunCounter"
+ start="0" size="32" mode="r" type="status" format="integer" >
+ <description>Number of times the JTAG controller run a full sequence</description>
+ </field>
+ </register>
+ <register name="JtagStatusFlags"
+ address="0005" function="status" mode="r" >
+ <field name="JtagStarted"
+ start="0" size="1" mode="r" type="status" format="boolean" >
+ <description>JTAG has been started</description>
+ </field>
+ <field name="JtagLastSuccesful"
+ start="4" size="1" mode="r" type="status" format="boolean" >
+ <description>Last JTAG run was successful</description>
+ </field>
+ <field name="JtagLastDataChanged"
+ start="8" size="1" mode="r" type="status" format="boolean" >
+ <description>Data in the sensor was corrupted at last JTAG run</description>
+ </field>
+ <field name="JtagLastWriteError"
+ start="12" size="1" mode="r" type="status" format="boolean" >
+ <description>Last run had a JTAG write error</description>
+ </field>
+ <field name="JtagLastReadError"
+ start="16" size="1" mode="r" type="status" format="boolean" >
+ <description>Last run had a JTAG read error</description>
+ </field>
+ <field name="JtagCrcError"
+ start="20" size="1" mode="r" type="status" format="boolean" >
+ <description>Last run had a JTAG CRC error</description>
+ </field>
+ </register>
+ </group>
</group>
-
-</group>
-
</TrbNet>