System information

8 Special Implementations
Feature Description
Trigger Conditions PCI address and a related bus command,
manual trigger
Traced PCI Signals AD, CBE, FRAME, IRDY, TRDY,
STOP, PAR, PERR[40]
Memory (FIFO) Depth 49152 bits
Number of traced PCI cycles 1024
Table 8.1: Features of the CHARM PCI bus analyzer.
8.1.1 FPGA logic
The FPGA logic of the PCI bus analyzer is divided into three parts: a PCI trace engine,
a FIFO and an interface to the AHB bus system of the card [2]. The PCI trace engine
contains the main state machine which registers the PCI signals and analyzes the bus data.
The FIFO stores the traced PCI signals. It is also used to synchronize the data exchange
between the different clock domains. The trace module is clocked with the PCI bus clock.
In contrast, the AHB interface is synchronized with the AHB clock.
Figure 8.1 depicts the layout of the FPGA logic. The AHB slave controls the trace
module, whereas the slave is commanded by a program running on the ARM CPU.
Abbildung 1: Diagramm
Bus. Sind die Bedingungen erfüllt, geht die State Machine in den Zustand Trace
über.
Trace: Das Write Enable des FIFO wird gesetzt. Die registrierten PCI Signa-
le liegen am Dateneingang des FIFO an. Die Abbruchbedingungen des Trace
werden bei jedem Clock-Zyklus überprüft. Diese sind entweder das Write Full
Signal vom FIFO oder Frame und Initiator Ready high. Ist eine der Bedingungen
erfüllt, geht der Tracer in den Read Zustand über.
Read: Das Read Bit wird gesetzt. Dieses ergibt durch eine NAND Verknüpfung
mit Read Empty das Data_Available Signal, welches das der Software signali-
siert, dass Daten zum Auslesen zur Verfügung stehen. Dies ist notwendig, da
die Daten im FIFO aufgrund der Synchronisierung auf verschiedene Clock Do-
mänen, erst einige Zyklen nachdem sie in den FIFO geschrieben wurden an der
Read Seite zur Verfügung stehen. Aus dem gleichen Grund ist auch das Write
Empty gegenüber dem Read Empty verzögert. Erst ein Write Emtpy führt je-
doch dazu, dass die State Machine in den Zustand Idle zurückkehrt. Über die
Verknüpfung von Not Read Empty und Read Bit wird also sichergestellt, das die
Software nur versucht Daten aus dem FIFO zu lesen, wenn diese auch wirklich
zur Verfügung stehen.
Zu Debugging Zwecken wird zudem ein Zustandssignal ausgegeben. So kann soft-
wareseitig festgestellt werden, in welchem Zustand sich die State Machine befindet.
Die softwareseitige Stop Flag wird im Tracer über eine NAND Verknüpfung mit
dem Reset Signal des PCI Bus kombiniert, und fungiert als asynchrones Reset (active
high) für alle Register und die State Machine. Zudem wird dieses Reset auch an den
FIFO weitergegeben.
4
Figure 8.1: Layout of the PCI bus analyzer design [2].
104