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 5

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
        \includegraphics[width=.6\textwidth]{Core1990_logo.jpg}
7
        \caption{Core1990 logo}
8
        \label{fig:Core1990_logo}
9
\end{figure}
10
 
11
\subsection{Features}
12
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
\subsection{Obtaining and building Core 1990}
26
Implementing the core in a design can be done easily by using the files provided with core1990.
27
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.
28
 
29
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.\\
30
 
31
 \begin{forest}
32
        pic dir tree,
33
        where level=0{}{% folder icons by default; override using file for file icons
34
                directory,
35
        },
36
        [Core1990
37
                [constraints]
38
                [scripts]
39
                [simulation]
40
                [sources
41
                        [Interlaken\_Interface.vhd, file, label=right: \small{The main file}]
42
                        [ip\_cores
43
                                [clk\_40MHz.xci, file]
44
                                [RX\_FIFO.xci, file]
45
                                [Transceiver\_10g\_64b67b.xci, file]
46
                                [TX\_FIFO.xci, file] ]
47
                        [CRC
48
                                [crc-24.vhd,file]
49
                                [crc-32.vhd, file] ]
50
                        [Receiver
51
                                [interlaken\_receiver.vhd,file]
52
                                [decoder.vhd, file]
53
                                [deframing\_burst.vhd, file]
54
                                [deframing\_meta.vhd, file]
55
                                [descrambler.vhd, file] ]
56
                        [Transmitter
57
                                [interlaken\_transmitter.vhd,file]
58
                                [encoder.vhd, file]
59
                                [framing\_burst.vhd, file]
60
                                [framing\_meta.vhd, file]
61
                                [scrambler.vhd, file] ]
62
                ]
63
        ]
64
 \end{forest}
65
 
66
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.
67
 
68
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.
69
 
70
\begin{forest}
71
        pic dir tree,
72
        where level=0{}{% folder icons by default; override using file for file icons
73
                directory,
74
        },
75
        [Core1990
76
                [constraints
77
                        [Core1990\_Constraints.xdc, file] ]
78
                [scripts
79
                        [implementation.tcl, file]
80
                        [simulation.tcl, file]
81
                        [vivado\_import\_virtex7.tcl, file]     ]
82
                [simulation]
83
                [sources]
84
        ]
85
\end{forest}
86
 
87
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.
88
 
89
Simulation can be done with a separate script which can be run by the 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.
90
 
91
\subsection{Transceiver IP Core}
92
Configuring the transceiver right is essential for the functional behavior of the protocol. In case wrong configuration is used, no data or corrupted data will arrive at the receiving side. This section will guide the user to setting up the transceiver in an easy way without adjusting too many clocks, targeting the VC707 board.\\
93
 
94
When configuring the core a separate window 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.
95
 
96
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.
97
 
98
\begin{figure}[H]
99
        \centering
100
        \includegraphics[width=.8\textwidth]{IP_TransceiverConf1.png}
101
        \caption{Transceiver lane rate and reference clock selection}
102
        \label{fig:IP_TransceiverConf1}
103
\end{figure}
104
 
105
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.
106
 
107
\begin{figure}[H]
108
        \centering
109
        \includegraphics[width=.8\textwidth]{IP_TransceiverConf2.png}
110
        \caption{Transceiver encoding and system clock selection}
111
        \label{fig:IP_TransceiverConf2}
112
\end{figure}
113
 
114
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.
115
 
116
\begin{figure}[H]
117
        \centering
118
        \includegraphics[width=.8\textwidth]{IP_TransceiverConf3.png}
119
        \caption{Transceiver summary of configuration}
120
        \label{fig:IP_TransceiverConf3}
121
\end{figure}
122
 
123
\newpage
124
 
125
\subsection{System Clock IP Core}
126
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.
127
 
128
\begin{figure}[H]
129
        \centering
130
        \includegraphics[width=\textwidth]{IP_CLK40Conf1.png}
131
        \caption{System clock setting the board interface}
132
        \label{fig:IP_CLK40Conf1}
133
\end{figure}
134
 
135
\begin{figure}[H]
136
        \centering
137
        \includegraphics[width=\textwidth]{IP_CLK40Conf2.png}
138
        \caption{System clock setting the options}
139
        \label{fig:IP_CLK40Conf2}
140
\end{figure}
141
 
142
\begin{figure}[H]
143
        \centering
144
        \includegraphics[width=\textwidth]{IP_CLK40Conf3.png}
145
        \caption{System clock configuring the output clock}
146
        \label{fig:IP_CLK40Conf3}
147
\end{figure}
148
 
149
\begin{figure}[H]
150
        \centering
151
        \includegraphics[width=\textwidth]{IP_CLK40Conf4.png}
152
        \caption{System clock summary of configuration}
153
        \label{fig:IP_CLK40Conf4}
154
\end{figure}
155
 
156
\newpage
157
 
158
\subsection{FIFO IP Cores}
159
 
160
\subsection{Simulating the core}
161
Simulation of the core1990 protocol can easily be configure by running the simulation script.
162
 
163
\newpage
164
Core 1990 explores state of the art point-to-point communication protocols.
165
It proposes a simple and standard solution, which is as much as possible vendor independent, and based on the Open Source Interlaken protocol.
166
\url{https://null.53bits.co.uk/index.php?page=encoding-schemes}

powered by: WebSVN 2.1.0

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