OpenCores
URL https://opencores.org/ocsvn/core1990_interlaken/core1990_interlaken/trunk

Subversion Repositories core1990_interlaken

[/] [core1990_interlaken/] [trunk/] [documentation/] [protocol_survey_report/] [Sections/] [Obtaining_and_building.tex] - Blame information for rev 8

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 5 N.Boukadid
\section{Core1990}
2
Core1990 is a point-to-point communication protocol using the royalty-free Interlaken protocol as it's foundation. It is designed by engineers and students of the Electronics Department of Nikhef (Amsterdam, The Netherlands) with large experiments at CERN (e.g. ATLAS) in mind. \\
3
The development of Core1990 was intended to publish an open source protocol providing high throughput with a small percentage of overhead. Certain features like flow control and error detection are included.
4
\begin{figure}[H]
5
        \centering
6 8 N.Boukadid
        \includegraphics[width=.7\textwidth]{Core1990_logo.jpg}
7 5 N.Boukadid
        \caption{Core1990 logo}
8
        \label{fig:Core1990_logo}
9
\end{figure}
10
 
11
\subsection{Features}
12 8 N.Boukadid
        Core1990 is packet with a lot of features providing data integrity and detection of errors while transmitting. These features are designed to be compliant with those featured in the interlaken protocol definition.
13
 
14
        \begin{itemize}
15
                \item Lane rate transceiver dependent
16
                \item Support framing consistent with the Interlaken Protocol Definition
17
                \item Generates CRC-24 and CRC-32 for error checking
18
                \item 58-bit independent synchronous scrambler
19
                \item 64b/67b encoding
20
                \item About 90\% bandwidth efficiency possible (depends on user configuration)
21
                \item Self-synchronizing links
22
                \item Flow control
23
        \end{itemize}
24
 
25
\newpage
26
 
27 5 N.Boukadid
\subsection{Obtaining and building Core 1990}
28 8 N.Boukadid
        Implementing the core in a design can be done easily by using the files provided with core1990.
29
        The complete process of obtaining and building Core1990 will be described including which files are required and should be included. The project has been designed in Xilinx Vivado 16.4 but should be compatible with other versions. The correct configuration of the ip cores will also be mentioned to ensure behavior as expected.
30
 
31
        The complete project can be downloaded through the download link on the OpenCores site itself or through SVN. For OpenCores the link is \href{https://opencores.org/project/core1990_interlaken}{https://opencores.org/project/core1990\\\_interlaken} and the SVN links is \href{https://opencores.org/ocsvn/core1990_interlaken/core1990_interlaken/trunk}{https://opencores.org/ocsvn/core1990\_interlaken/core1990\\\_interlaken/trunk} in case this is preferred.\\
32
 
33
         \begin{forest}
34
                pic dir tree,
35
                where level=0{}{% folder icons by default; override using file for file icons
36
                        directory,
37
                },
38
                [Core1990
39
                        [constraints]
40
                        [scripts]
41
                        [simulation]
42
                        [sources
43
                                [Interlaken\_Interface.vhd, file, label=right: \small{The main file}]
44
                                [ip\_cores
45
                                        [clk\_40MHz.xci, file]
46
                                        [RX\_FIFO.xci, file]
47
                                        [Transceiver\_10g\_64b67b.xci, file]
48
                                        [TX\_FIFO.xci, file] ]
49
                                [CRC
50
                                        [crc-24.vhd,file]
51
                                        [crc-32.vhd, file] ]
52
                                [Receiver
53
                                        [interlaken\_receiver.vhd,file]
54
                                        [decoder.vhd, file]
55
                                        [deframing\_burst.vhd, file]
56
                                        [deframing\_meta.vhd, file]
57
                                        [descrambler.vhd, file] ]
58
                                [Transmitter
59
                                        [interlaken\_transmitter.vhd,file]
60
                                        [encoder.vhd, file]
61
                                        [framing\_burst.vhd, file]
62
                                        [framing\_meta.vhd, file]
63
                                        [scrambler.vhd, file] ]
64
                        ]
65
                ]
66
         \end{forest}
67
 
68
        The directory tree depicts the file structure in the sources folder. This should contain several files to configure the ip cores, a folder containing two crc error detection modules, a receiver and transmitter folder containing the module files. A main file is included in the folder that is meant for the top level connecting all modules correctly to each other.
69
 
70
        Besides these files there are also three different folders. One contains the constraints which are responsible for connecting the physical pins to the signals in the package and providing clock information to the fitter of the design. Another folder contains several scripts to build the project by just running a single script. Another script will be able to generate testbenches on request of the user and a script generates the implementation of the design. The simulation folder contains a lot of testbenches used to simulate all the components included in the design.\\
71
 
72
        \begin{forest}
73
                pic dir tree,
74
                where level=0{}{% folder icons by default; override using file for file icons
75
                        directory,
76
                },
77
                [Core1990
78
                        [constraints
79
                                [Core1990\_Constraints.xdc, file] ]
80
                        [scripts
81
                                [implementation.tcl, file]
82
                                [simulation.tcl, file]
83
                                [vivado\_import\_virtex7.tcl, file]     ]
84
                        [simulation]
85
                        [sources]
86
                ]
87
        \end{forest}
88 5 N.Boukadid
 
89 8 N.Boukadid
        \vspace{1mm}
90
        For building the project Vivado has to be opened and the vivado\_import\_virtex7.tcl has to be executed. This can be done by changing the directory in the tcl console to the scripts folder and then giving the command 'source vivado\_import\_virtex7.tcl'. This will add the project folder to the directory tree and contains the just generated project.
91 5 N.Boukadid
 
92 8 N.Boukadid
\newpage
93 5 N.Boukadid
\subsection{Transceiver IP Core}
94 8 N.Boukadid
        Configuring the transceiver is an essential step in setting up the core. This will describe the correct settings to use for the functional behavior of the protocol. In case the transceiver is configured in a wrong way, no data or corrupted data will arrive at the receiving side. This section will guide the user to set up the transceiver in an easy way without adjusting too many clocks, targeting the VC707 board.\\
95
 
96
        The transceiver core can be configured by browsing through a separate window that will pop up. The fist tab named GT Selection should already have the GTX as GT Type selected and the shared logic should be included in the core, not the example design.
97
 
98
        After this the second tab will provide more important options. The line rate should be set to 10 Gbps while the reference clock can be set at 125 MHz. This clock is available on the board at IO pins AH7 and AH8, REFCLK0\_Q0. Using the QPLL GTX X1Y2 can be used. Figure \ref{fig:IP_TransceiverConf1} shows the correct configuration.
99
 
100
        \begin{figure}[H]
101
                \centering
102
                \includegraphics[width=\textwidth]{IP_TransceiverConf1.png}
103
                \caption{Transceiver lane rate and reference clock selection}
104
                \label{fig:IP_TransceiverConf1}
105
        \end{figure}
106
 
107
        The encoding and clocking tab shows other important settings. For both the TX and RX, the external data width should be set at 64-bits while the internal data width is 32 bits. Encoding has to be set at 64B/67B with Internal Sequence Counter and decoding has to be set at 64B/67B. The DRP/System Clock Frequency has to be set at 40 MHz. Figure \ref{fig:IP_TransceiverConf2} shows the right settings.
108
 
109
        \begin{figure}[H]
110
                \centering
111
                \includegraphics[width=0.95\textwidth]{IP_TransceiverConf2.png}
112
                \caption{Transceiver encoding and system clock selection}
113
                \label{fig:IP_TransceiverConf2}
114
        \end{figure}
115
 
116
        The other tabs are not important and no settings should be changed in these tabs. Figure \ref{fig:IP_TransceiverConf3} shows a complete summary of the features included with the transceiver when this core will be generate. The user should have the same settings on screen.
117
 
118
        \begin{figure}[H]
119
                \centering
120
                \includegraphics[width=0.95\textwidth]{IP_TransceiverConf3.png}
121
                \caption{Transceiver summary of configuration}
122
                \label{fig:IP_TransceiverConf3}
123
        \end{figure}
124 5 N.Boukadid
 
125
\newpage
126
 
127
\subsection{System Clock IP Core}
128 8 N.Boukadid
        The system clock will be generated using a 200 MHz input at IO pins E18 and E19. The frequency will be scaled down using the Xilinx Clocking Wizard which generates an IP core. This is one of the clocks that will be used by the transceiver.
129
 
130
        \begin{figure}[H]
131
                \centering
132
                \includegraphics[width=\textwidth]{IP_CLK40Conf1.png}
133
                \caption{System clock setting the board interface}
134
                \label{fig:IP_CLK40Conf1}
135
        \end{figure}
136
 
137
        The input clock is differential and this should be configured like seen in Figure \ref{fig:IP_CLK40Conf1}. The second tab contains clocking options and this core makes use of a MMCM (Mixed-Mode Clock Manager). From clocking features only Frequency synthesis and phase alignment are selected. The jitter optimization is balanced and the input frequency of the primary clock is 200MHz. The secondary clock is not important. Figure \ref{fig:IP_CLK40Conf2} shows this configuration.
138
 
139
        \begin{figure}[H]
140
                \centering
141
                \includegraphics[width=\textwidth]{IP_CLK40Conf2.png}
142
                \caption{System clock setting the options}
143
                \label{fig:IP_CLK40Conf2}
144
        \end{figure}
145
 
146
        \begin{figure}[H]
147
                \centering
148
                \includegraphics[width=\textwidth]{IP_CLK40Conf3.png}
149
                \caption{System clock configuring the output clock}
150
                \label{fig:IP_CLK40Conf3}
151
        \end{figure}
152
 
153
        Only one output clock is required so this one will be selected with a 40MHz output. The duty cycle should remain 50\% which can be seen in Figure \ref{fig:IP_CLK40Conf3}. From the optional outputs only the reset and locked pins are required.
154
 
155
        The summary tab give an overview that contains the same information and values as depicted in Figure \ref{fig:IP_CLK40Conf4}. When another value is noted in the summary, there is a chance the clock won't be of the same frequency.
156
 
157
        \begin{figure}[H]
158
                \centering
159
                \includegraphics[width=\textwidth]{IP_CLK40Conf4.png}
160
                \caption{System clock summary of configuration}
161
                \label{fig:IP_CLK40Conf4}
162
        \end{figure}
163
 
164
        \newpage
165 5 N.Boukadid
 
166
\subsection{FIFO IP Cores}
167
 
168
\subsection{Simulating the core}
169 8 N.Boukadid
        Simulation of the core1990 protocol can easily be configure by running the simulation script. This can be done by browsing to the scripts folder again and running the tcl command 'source simulation.tcl'. After this a short explanation of the command this script accepts should appear. For example if the user would like to simulate the decoder, this can be done by giving the command 'simulate decoder' in the tcl console. \\
170
 
171
        If the link doesn't behave as expected or is malfunctioning, the situation can be analyzed in simulation. This makes locating the error easier.
172
 
173
\subsection{Example design}
174
        During the design stage of Core1990 multiple tests have been run to inspect how the link behaves, whether the correct data arrives or how robust the link itself is. These tests have been performed by implementing a data generator connected to the Core1990 inputs. A VIO (Virtual Input/Output) is used to control the length of bursts and an ILA (Integrated Logic Analyzer) is used to sample the input and output data (ChipScope). The input data will be pipelined for alignment between the two. This will make it easier to detect errors and ensure data integrity.\\
175
 
176
        \begin{forest}
177
                pic dir tree,
178
                where level=0{}{% folder icons by default; override using file for file icons
179
                        directory,
180
                },
181
                [Core1990
182
                        [constraints]
183
                        [scripts]
184
                        [simulation]
185
                        [sources
186
                                [ip\_cores
187
                                        [ILA.xci, file]
188
                                        [vio.xci, file] ]
189
                                [tests
190
                                        [Core1990\_Test.vhd, file]
191
                                        [data\_generator.vhd, file]
192
                                        [pipeline.vhd, file] ]  ] ]
193
        \end{forest}
194 5 N.Boukadid
 
195 8 N.Boukadid
        \vspace{1mm}
196
        The additional IP cores and VHDL components are all included in the Core1990\_Test.vhd file. This top level only requires two clocks to run, two differential signals for RX and TX are defined and a valid signal is noted as an output and connected to an external led.
197
 
198
        \newpage
199
 

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.