Commit db8e4ac1 authored by Denia Bouhired-Ferrag's avatar Denia Bouhired-Ferrag

Merge remote-tracking branch 'origin/proposed-master'

parents f7b39015 95c30838
*pyc
*swp
*pdf
*bin
*bit
*mcs
*txt
*cfi
*prm
*tps
*tcp
\ No newline at end of file
conv-ttl-blo-gw @ 0998df2c
Subproject commit c25835d2faf9b349c7bf3b6589e86cf53e207d44
Subproject commit 0998df2cb2e9ecb573e8ead301f0668479d0699d
conv-ttl-blo-tst @ 94d1363d
Subproject commit 5988404a66aff28278683bc181afb35ff81c2a41
Subproject commit 94d1363deac50b6386dd5f7fbb817e8dc8eea0ff
......@@ -9,7 +9,7 @@
\noindent \rule{\textwidth}{.1cm}
\hfill February 09, 2017
\hfill September 27, 2018
\vspace*{3cm}
......@@ -24,8 +24,7 @@
%---------------------------------------------------------------
% name
%---------------------------------------------------------------
\noindent {\Large \textbf{Theodor-Adrian Stana (CERN/BE-CO-HT)}}\\
\noindent { \textit{Last modified by Denia Bouhired-Ferrag (CERN/BE-CO-HT)}}
\noindent {\Large \textbf{(CERN/BE-CO-HT)}}\\
\noindent \rule{\textwidth}{.05cm}
......
......@@ -21,18 +21,18 @@ Base address: 0x000
0x4& Note(1)& SR & Status Register\\
0x8& 0x00000000 & ERR & Error Register\\
0xc& 0x00000000 & CR & Control Register\\
0x10& 0x00000000 & CH1TTLPCR & Channel 1 TTL Pulse Counter Register\\
0x14& 0x00000000 & CH2TTLPCR & Channel 2 TTL Pulse Counter Register\\
0x18& 0x00000000 & CH3TTLPCR & Channel 3 TTL Pulse Counter Register\\
0x1c& 0x00000000 & CH4TTLPCR & Channel 4 TTL Pulse Counter Register\\
0x20& 0x00000000 & CH5TTLPCR & Channel 5 TTL Pulse Counter Register\\
0x24& 0x00000000 & CH6TTLPCR & Channel 6 TTL Pulse Counter Register\\
0x28& 0x00000000 & CH1BLOPCR & Channel 1 BLO Pulse Counter Register\\
0x2c& 0x00000000 & CH2BLOPCR & Channel 2 BLO Pulse Counter Register\\
0x30& 0x00000000 & CH3BLOPCR & Channel 3 BLO Pulse Counter Register\\
0x34& 0x00000000 & CH4BLOPCR & Channel 4 BLO Pulse Counter Register\\
0x38& 0x00000000 & CH5BLOPCR & Channel 5 BLO Pulse Counter Register\\
0x3c& 0x00000000 & CH6BLOPCR & Channel 6 BLO Pulse Counter Register\\
0x10& 0x00000000 & CH1FPPCR & Channel 1 TTL Pulse Counter Register\\
0x14& 0x00000000 & CH2FPPCR & Channel 2 TTL Pulse Counter Register\\
0x18& 0x00000000 & CH3FPPCR & Channel 3 TTL Pulse Counter Register\\
0x1c& 0x00000000 & CH4FPPCR & Channel 4 TTL Pulse Counter Register\\
0x20& 0x00000000 & CH5FPPCR & Channel 5 TTL Pulse Counter Register\\
0x24& 0x00000000 & CH6FPPCR & Channel 6 TTL Pulse Counter Register\\
0x28& 0x00000000 & CH1RPPCR & Channel 1 BLO Pulse Counter Register\\
0x2c& 0x00000000 & CH2RPPCR & Channel 2 BLO Pulse Counter Register\\
0x30& 0x00000000 & CH3RPPCR & Channel 3 BLO Pulse Counter Register\\
0x34& 0x00000000 & CH4RPPCR & Channel 4 BLO Pulse Counter Register\\
0x38& 0x00000000 & CH5RPPCR & Channel 5 BLO Pulse Counter Register\\
0x3c& 0x00000000 & CH6RPPCR & Channel 6 BLO Pulse Counter Register\\
0x40& 0x00000000 & TVLR & Time Value Low Register\\
0x44& 0x00000000 & TVHR & Time Value High Register\\
0x48& 0x00000000 & TBMR & Tag Buffer Meta Register\\
......@@ -164,9 +164,9 @@ Eg: SW1.1-- SR.SWITCHES[0] \\ SW1.2-- SR.SWITCHES[1] \\
\item \begin{small}
{\bf
RTM
} [\emph{read-only}]: RTM detection lines \cite{rtm-det}
} [\emph{read-only}]: RTM detection lines cite{rtm-det}
\\
Signals RTM presence and type of RTM board. See~\cite{rtm-det} for interpretation \\ 1 -- line active \\ 0 -- line inactive
1 bit per RTM output channel \\ 1 -- line active \\ 0 -- line inactive
\end{small}
\item \begin{small}
{\bf
......@@ -276,7 +276,7 @@ RST\_UNLOCK
\item \begin{small}
{\bf
RST
} [\emph{read/write}]: Reset bit - active only if RST-UNLOCK is 1
} [\emph{read/write}]: Reset bit - active only if RST\_UNLOCK is 1
\\
1 -- initiate logic reset \\ 0 -- no reset
\end{small}
......@@ -292,27 +292,27 @@ Write the following sequence to trigger a pulse: \\ 0xde --
\end{small}
\end{itemize}
\subsubsection{CH1TTLPCR - Channel 1 Pulse Counter Register for TTL pulses}
\label{app:conv-regs-CH1TTLPCR}
\subsubsection{CH1FPPCR - Channel 1 Pulse Counter Register for TTL pulses}
\label{app:conv-regs-CH1FPPCR}
\vspace{11pt}
\noindent
\resizebox{\textwidth}{!}{
\begin{tabular}{>{\centering\arraybackslash}p{1.5cm} >{\centering\arraybackslash}p{1.5cm} >{\centering\arraybackslash}p{1.5cm} >{\centering\arraybackslash}p{1.5cm} >{\centering\arraybackslash}p{1.5cm} >{\centering\arraybackslash}p{1.5cm} >{\centering\arraybackslash}p{1.5cm} >{\centering\arraybackslash}p{1.5cm} }
31 & 30 & 29 & 28 & 27 & 26 & 25 & 24\\
\hline
\multicolumn{8}{|c|}{\cellcolor{gray!25}CH1TTLPCR[31:24]}\\
\multicolumn{8}{|c|}{\cellcolor{gray!25}CH1FPPCR[31:24]}\\
\hline
23 & 22 & 21 & 20 & 19 & 18 & 17 & 16\\
\hline
\multicolumn{8}{|c|}{\cellcolor{gray!25}CH1TTLPCR[23:16]}\\
\multicolumn{8}{|c|}{\cellcolor{gray!25}CH1FPPCR[23:16]}\\
\hline
15 & 14 & 13 & 12 & 11 & 10 & 9 & 8\\
\hline
\multicolumn{8}{|c|}{\cellcolor{gray!25}CH1TTLPCR[15:8]}\\
\multicolumn{8}{|c|}{\cellcolor{gray!25}CH1FPPCR[15:8]}\\
\hline
7 & 6 & 5 & 4 & 3 & 2 & 1 & 0\\
\hline
\multicolumn{8}{|c|}{\cellcolor{gray!25}CH1TTLPCR[7:0]}\\
\multicolumn{8}{|c|}{\cellcolor{gray!25}CH1FPPCR[7:0]}\\
\hline
\end{tabular}
}
......@@ -320,14 +320,14 @@ Write the following sequence to trigger a pulse: \\ 0xde --
\begin{itemize}
\item \begin{small}
{\bf
CH1TTLPCR
CH1FPPCR
} [\emph{read/write}]: TTL pulse counter value
\end{small}
\end{itemize}
\subsubsection{CH2TTLPCR - Channel 2 Pulse Counter Register for TTL pulses}
\label{app:conv-regs-CH2TTLPCR}
\subsubsection{CH2FPPCR - Channel 2 Pulse Counter Register for TTL pulses}
\label{app:conv-regs-CH2FPPCR}
\vspace{11pt}
\noindent
......@@ -335,19 +335,19 @@ CH1TTLPCR
\begin{tabular}{>{\centering\arraybackslash}p{1.5cm} >{\centering\arraybackslash}p{1.5cm} >{\centering\arraybackslash}p{1.5cm} >{\centering\arraybackslash}p{1.5cm} >{\centering\arraybackslash}p{1.5cm} >{\centering\arraybackslash}p{1.5cm} >{\centering\arraybackslash}p{1.5cm} >{\centering\arraybackslash}p{1.5cm} }
31 & 30 & 29 & 28 & 27 & 26 & 25 & 24\\
\hline
\multicolumn{8}{|c|}{\cellcolor{gray!25}CH2TTLPCR[31:24]}\\
\multicolumn{8}{|c|}{\cellcolor{gray!25}CH2FPPCR[31:24]}\\
\hline
23 & 22 & 21 & 20 & 19 & 18 & 17 & 16\\
\hline
\multicolumn{8}{|c|}{\cellcolor{gray!25}CH2TTLPCR[23:16]}\\
\multicolumn{8}{|c|}{\cellcolor{gray!25}CH2FPPCR[23:16]}\\
\hline
15 & 14 & 13 & 12 & 11 & 10 & 9 & 8\\
\hline
\multicolumn{8}{|c|}{\cellcolor{gray!25}CH2TTLPCR[15:8]}\\
\multicolumn{8}{|c|}{\cellcolor{gray!25}CH2FPPCR[15:8]}\\
\hline
7 & 6 & 5 & 4 & 3 & 2 & 1 & 0\\
\hline
\multicolumn{8}{|c|}{\cellcolor{gray!25}CH2TTLPCR[7:0]}\\
\multicolumn{8}{|c|}{\cellcolor{gray!25}CH2FPPCR[7:0]}\\
\hline
\end{tabular}
}
......@@ -355,31 +355,31 @@ CH1TTLPCR
\begin{itemize}
\item \begin{small}
{\bf
CH2TTLPCR
CH2FPPCR
} [\emph{read/write}]: TTL pulse counter value
\end{small}
\end{itemize}
\subsubsection{CH3TTLPCR - Channel 3 Pulse Counter Register for TTL pulses}
\label{app:conv-regs-CH3TTLPCR}
\subsubsection{CH3FPPCR - Channel 3 Pulse Counter Register for TTL pulses}
\label{app:conv-regs-CH3FPPCR}
\vspace{11pt}
\noindent
\resizebox{\textwidth}{!}{
\begin{tabular}{>{\centering\arraybackslash}p{1.5cm} >{\centering\arraybackslash}p{1.5cm} >{\centering\arraybackslash}p{1.5cm} >{\centering\arraybackslash}p{1.5cm} >{\centering\arraybackslash}p{1.5cm} >{\centering\arraybackslash}p{1.5cm} >{\centering\arraybackslash}p{1.5cm} >{\centering\arraybackslash}p{1.5cm} }
31 & 30 & 29 & 28 & 27 & 26 & 25 & 24\\
\hline
\multicolumn{8}{|c|}{\cellcolor{gray!25}CH3TTLPCR[31:24]}\\
\multicolumn{8}{|c|}{\cellcolor{gray!25}CH3FPPCR[31:24]}\\
\hline
23 & 22 & 21 & 20 & 19 & 18 & 17 & 16\\
\hline
\multicolumn{8}{|c|}{\cellcolor{gray!25}CH3TTLPCR[23:16]}\\
\multicolumn{8}{|c|}{\cellcolor{gray!25}CH3FPPCR[23:16]}\\
\hline
15 & 14 & 13 & 12 & 11 & 10 & 9 & 8\\
\hline
\multicolumn{8}{|c|}{\cellcolor{gray!25}CH3TTLPCR[15:8]}\\
\multicolumn{8}{|c|}{\cellcolor{gray!25}CH3FPPCR[15:8]}\\
\hline
7 & 6 & 5 & 4 & 3 & 2 & 1 & 0\\
\hline
\multicolumn{8}{|c|}{\cellcolor{gray!25}CH3TTLPCR[7:0]}\\
\multicolumn{8}{|c|}{\cellcolor{gray!25}CH3FPPCR[7:0]}\\
\hline
\end{tabular}
}
......@@ -387,14 +387,14 @@ CH2TTLPCR
\begin{itemize}
\item \begin{small}
{\bf
CH3TTLPCR
CH3FPPCR
} [\emph{read/write}]: TTL pulse counter value
\end{small}
\end{itemize}
\subsubsection{CH4TTLPCR - Channel 4 Pulse Counter Register for TTL pulses}
\label{app:conv-regs-CH4TTLPCR}
\subsubsection{CH4FPPCR - Channel 4 Pulse Counter Register for TTL pulses}
\label{app:conv-regs-CH4FPPCR}
\vspace{11pt}
\noindent
......@@ -402,19 +402,19 @@ CH3TTLPCR
\begin{tabular}{>{\centering\arraybackslash}p{1.5cm} >{\centering\arraybackslash}p{1.5cm} >{\centering\arraybackslash}p{1.5cm} >{\centering\arraybackslash}p{1.5cm} >{\centering\arraybackslash}p{1.5cm} >{\centering\arraybackslash}p{1.5cm} >{\centering\arraybackslash}p{1.5cm} >{\centering\arraybackslash}p{1.5cm} }
31 & 30 & 29 & 28 & 27 & 26 & 25 & 24\\
\hline
\multicolumn{8}{|c|}{\cellcolor{gray!25}CH4TTLPCR[31:24]}\\
\multicolumn{8}{|c|}{\cellcolor{gray!25}CH4FPPCR[31:24]}\\
\hline
23 & 22 & 21 & 20 & 19 & 18 & 17 & 16\\
\hline
\multicolumn{8}{|c|}{\cellcolor{gray!25}CH4TTLPCR[23:16]}\\
\multicolumn{8}{|c|}{\cellcolor{gray!25}CH4FPPCR[23:16]}\\
\hline
15 & 14 & 13 & 12 & 11 & 10 & 9 & 8\\
\hline
\multicolumn{8}{|c|}{\cellcolor{gray!25}CH4TTLPCR[15:8]}\\
\multicolumn{8}{|c|}{\cellcolor{gray!25}CH4FPPCR[15:8]}\\
\hline
7 & 6 & 5 & 4 & 3 & 2 & 1 & 0\\
\hline
\multicolumn{8}{|c|}{\cellcolor{gray!25}CH4TTLPCR[7:0]}\\
\multicolumn{8}{|c|}{\cellcolor{gray!25}CH4FPPCR[7:0]}\\
\hline
\end{tabular}
}
......@@ -422,12 +422,12 @@ CH3TTLPCR
\begin{itemize}
\item \begin{small}
{\bf
CH4TTLPCR
CH4FPPCR
} [\emph{read/write}]: TTL pulse counter value
\end{small}
\end{itemize}
\subsubsection{CH5TTLPCR - Channel 5 Pulse Counter Register for TTL pulses}
\label{app:conv-regs-CH5TTLPCR}
\subsubsection{CH5FPPCR - Channel 5 Pulse Counter Register for TTL pulses}
\label{app:conv-regs-CH5FPPCR}
\vspace{11pt}
\noindent
......@@ -435,19 +435,19 @@ CH4TTLPCR
\begin{tabular}{>{\centering\arraybackslash}p{1.5cm} >{\centering\arraybackslash}p{1.5cm} >{\centering\arraybackslash}p{1.5cm} >{\centering\arraybackslash}p{1.5cm} >{\centering\arraybackslash}p{1.5cm} >{\centering\arraybackslash}p{1.5cm} >{\centering\arraybackslash}p{1.5cm} >{\centering\arraybackslash}p{1.5cm} }
31 & 30 & 29 & 28 & 27 & 26 & 25 & 24\\
\hline
\multicolumn{8}{|c|}{\cellcolor{gray!25}CH5TTLPCR[31:24]}\\
\multicolumn{8}{|c|}{\cellcolor{gray!25}CH5FPPCR[31:24]}\\
\hline
23 & 22 & 21 & 20 & 19 & 18 & 17 & 16\\
\hline
\multicolumn{8}{|c|}{\cellcolor{gray!25}CH5TTLPCR[23:16]}\\
\multicolumn{8}{|c|}{\cellcolor{gray!25}CH5FPPCR[23:16]}\\
\hline
15 & 14 & 13 & 12 & 11 & 10 & 9 & 8\\
\hline
\multicolumn{8}{|c|}{\cellcolor{gray!25}CH5TTLPCR[15:8]}\\
\multicolumn{8}{|c|}{\cellcolor{gray!25}CH5FPPCR[15:8]}\\
\hline
7 & 6 & 5 & 4 & 3 & 2 & 1 & 0\\
\hline
\multicolumn{8}{|c|}{\cellcolor{gray!25}CH5TTLPCR[7:0]}\\
\multicolumn{8}{|c|}{\cellcolor{gray!25}CH5FPPCR[7:0]}\\
\hline
\end{tabular}
}
......@@ -455,12 +455,12 @@ CH4TTLPCR
\begin{itemize}
\item \begin{small}
{\bf
CH5TTLPCR
CH5FPPCR
} [\emph{read/write}]: TTL pulse counter value
\end{small}
\end{itemize}
\subsubsection{CH6TTLPCR - Channel 6 Pulse Counter Register for TTL pulses}
\label{app:conv-regs-CH6TTLPCR}
\subsubsection{CH6FPPCR - Channel 6 Pulse Counter Register for TTL pulses}
\label{app:conv-regs-CH6FPPCR}
\vspace{11pt}
......@@ -469,19 +469,19 @@ CH5TTLPCR
\begin{tabular}{>{\centering\arraybackslash}p{1.5cm} >{\centering\arraybackslash}p{1.5cm} >{\centering\arraybackslash}p{1.5cm} >{\centering\arraybackslash}p{1.5cm} >{\centering\arraybackslash}p{1.5cm} >{\centering\arraybackslash}p{1.5cm} >{\centering\arraybackslash}p{1.5cm} >{\centering\arraybackslash}p{1.5cm} }
31 & 30 & 29 & 28 & 27 & 26 & 25 & 24\\
\hline
\multicolumn{8}{|c|}{\cellcolor{gray!25}CH6TTLPCR[31:24]}\\
\multicolumn{8}{|c|}{\cellcolor{gray!25}CH6FPPCR[31:24]}\\
\hline
23 & 22 & 21 & 20 & 19 & 18 & 17 & 16\\
\hline
\multicolumn{8}{|c|}{\cellcolor{gray!25}CH6TTLPCR[23:16]}\\
\multicolumn{8}{|c|}{\cellcolor{gray!25}CH6FPPCR[23:16]}\\
\hline
15 & 14 & 13 & 12 & 11 & 10 & 9 & 8\\
\hline
\multicolumn{8}{|c|}{\cellcolor{gray!25}CH6TTLPCR[15:8]}\\
\multicolumn{8}{|c|}{\cellcolor{gray!25}CH6FPPCR[15:8]}\\
\hline
7 & 6 & 5 & 4 & 3 & 2 & 1 & 0\\
\hline
\multicolumn{8}{|c|}{\cellcolor{gray!25}CH6TTLPCR[7:0]}\\
\multicolumn{8}{|c|}{\cellcolor{gray!25}CH6FPPCR[7:0]}\\
\hline
\end{tabular}
}
......@@ -489,31 +489,31 @@ CH5TTLPCR
\begin{itemize}
\item \begin{small}
{\bf
CH6TTLPCR
CH6FPPCR
} [\emph{read/write}]: TTL pulse counter value
\end{small}
\end{itemize}
\subsubsection{CH1BLOPCR - Channel 1 Pulse Counter Register for BLO pulses}
\label{app:conv-regs-CH1BLOPCR}
\subsubsection{CH1RPPCR - Channel 1 Pulse Counter Register for BLO pulses}
\label{app:conv-regs-CH1RPPCR}
\vspace{11pt}
\noindent
\resizebox{\textwidth}{!}{
\begin{tabular}{>{\centering\arraybackslash}p{1.5cm} >{\centering\arraybackslash}p{1.5cm} >{\centering\arraybackslash}p{1.5cm} >{\centering\arraybackslash}p{1.5cm} >{\centering\arraybackslash}p{1.5cm} >{\centering\arraybackslash}p{1.5cm} >{\centering\arraybackslash}p{1.5cm} >{\centering\arraybackslash}p{1.5cm} }
31 & 30 & 29 & 28 & 27 & 26 & 25 & 24\\
\hline
\multicolumn{8}{|c|}{\cellcolor{gray!25}CH1BLOPCR[31:24]}\\
\multicolumn{8}{|c|}{\cellcolor{gray!25}CH1RPPCR[31:24]}\\
\hline
23 & 22 & 21 & 20 & 19 & 18 & 17 & 16\\
\hline
\multicolumn{8}{|c|}{\cellcolor{gray!25}CH1BLOPCR[23:16]}\\
\multicolumn{8}{|c|}{\cellcolor{gray!25}CH1RPPCR[23:16]}\\
\hline
15 & 14 & 13 & 12 & 11 & 10 & 9 & 8\\
\hline
\multicolumn{8}{|c|}{\cellcolor{gray!25}CH1BLOPCR[15:8]}\\
\multicolumn{8}{|c|}{\cellcolor{gray!25}CH1RPPCR[15:8]}\\
\hline
7 & 6 & 5 & 4 & 3 & 2 & 1 & 0\\
\hline
\multicolumn{8}{|c|}{\cellcolor{gray!25}CH1BLOPCR[7:0]}\\
\multicolumn{8}{|c|}{\cellcolor{gray!25}CH1RPPCR[7:0]}\\
\hline
\end{tabular}
}
......@@ -521,12 +521,12 @@ CH6TTLPCR
\begin{itemize}
\item \begin{small}
{\bf
CH1BLOPCR
CH1RPPCR
} [\emph{read/write}]: BLO pulse counter value
\end{small}
\end{itemize}
\subsubsection{CH2BLOPCR - Channel 2 Pulse Counter Register for BLO pulses}
\label{app:conv-regs-CH2BLOPCR}
\subsubsection{CH2RPPCR - Channel 2 Pulse Counter Register for BLO pulses}
\label{app:conv-regs-CH2RPPCR}
\vspace{11pt}
......@@ -535,19 +535,19 @@ CH1BLOPCR
\begin{tabular}{>{\centering\arraybackslash}p{1.5cm} >{\centering\arraybackslash}p{1.5cm} >{\centering\arraybackslash}p{1.5cm} >{\centering\arraybackslash}p{1.5cm} >{\centering\arraybackslash}p{1.5cm} >{\centering\arraybackslash}p{1.5cm} >{\centering\arraybackslash}p{1.5cm} >{\centering\arraybackslash}p{1.5cm} }
31 & 30 & 29 & 28 & 27 & 26 & 25 & 24\\
\hline
\multicolumn{8}{|c|}{\cellcolor{gray!25}CH2BLOPCR[31:24]}\\
\multicolumn{8}{|c|}{\cellcolor{gray!25}CH2RPPCR[31:24]}\\
\hline
23 & 22 & 21 & 20 & 19 & 18 & 17 & 16\\
\hline
\multicolumn{8}{|c|}{\cellcolor{gray!25}CH2BLOPCR[23:16]}\\
\multicolumn{8}{|c|}{\cellcolor{gray!25}CH2RPPCR[23:16]}\\
\hline
15 & 14 & 13 & 12 & 11 & 10 & 9 & 8\\
\hline
\multicolumn{8}{|c|}{\cellcolor{gray!25}CH2BLOPCR[15:8]}\\
\multicolumn{8}{|c|}{\cellcolor{gray!25}CH2RPPCR[15:8]}\\
\hline
7 & 6 & 5 & 4 & 3 & 2 & 1 & 0\\
\hline
\multicolumn{8}{|c|}{\cellcolor{gray!25}CH2BLOPCR[7:0]}\\
\multicolumn{8}{|c|}{\cellcolor{gray!25}CH2RPPCR[7:0]}\\
\hline
\end{tabular}
}
......@@ -555,12 +555,12 @@ CH1BLOPCR
\begin{itemize}
\item \begin{small}
{\bf
CH2BLOPCR
CH2RPPCR
} [\emph{read/write}]: BLO pulse counter value
\end{small}
\end{itemize}
\subsubsection{CH3BLOPCR - Channel 3 Pulse Counter Register for BLO pulses}
\label{app:conv-regs-CH3BLOPCR}
\subsubsection{CH3RPPCR - Channel 3 Pulse Counter Register for BLO pulses}
\label{app:conv-regs-CH3RPPCR}
\vspace{11pt}
......@@ -569,19 +569,19 @@ CH2BLOPCR
\begin{tabular}{>{\centering\arraybackslash}p{1.5cm} >{\centering\arraybackslash}p{1.5cm} >{\centering\arraybackslash}p{1.5cm} >{\centering\arraybackslash}p{1.5cm} >{\centering\arraybackslash}p{1.5cm} >{\centering\arraybackslash}p{1.5cm} >{\centering\arraybackslash}p{1.5cm} >{\centering\arraybackslash}p{1.5cm} }
31 & 30 & 29 & 28 & 27 & 26 & 25 & 24\\
\hline
\multicolumn{8}{|c|}{\cellcolor{gray!25}CH3BLOPCR[31:24]}\\
\multicolumn{8}{|c|}{\cellcolor{gray!25}CH3RPPCR[31:24]}\\
\hline
23 & 22 & 21 & 20 & 19 & 18 & 17 & 16\\
\hline
\multicolumn{8}{|c|}{\cellcolor{gray!25}CH3BLOPCR[23:16]}\\
\multicolumn{8}{|c|}{\cellcolor{gray!25}CH3RPPCR[23:16]}\\
\hline
15 & 14 & 13 & 12 & 11 & 10 & 9 & 8\\
\hline
\multicolumn{8}{|c|}{\cellcolor{gray!25}CH3BLOPCR[15:8]}\\
\multicolumn{8}{|c|}{\cellcolor{gray!25}CH3RPPCR[15:8]}\\
\hline
7 & 6 & 5 & 4 & 3 & 2 & 1 & 0\\
\hline
\multicolumn{8}{|c|}{\cellcolor{gray!25}CH3BLOPCR[7:0]}\\
\multicolumn{8}{|c|}{\cellcolor{gray!25}CH3RPPCR[7:0]}\\
\hline
\end{tabular}
}
......@@ -589,12 +589,12 @@ CH2BLOPCR
\begin{itemize}
\item \begin{small}
{\bf
CH3BLOPCR
CH3RPPCR
} [\emph{read/write}]: BLO pulse counter value
\end{small}
\end{itemize}
\subsubsection{CH4BLOPCR - Channel 4 Pulse Counter Register for BLO pulses}
\label{app:conv-regs-CH4BLOPCR}
\subsubsection{CH4RPPCR - Channel 4 Pulse Counter Register for BLO pulses}
\label{app:conv-regs-CH4RPPCR}
\vspace{11pt}
\noindent
......@@ -602,19 +602,19 @@ CH3BLOPCR
\begin{tabular}{>{\centering\arraybackslash}p{1.5cm} >{\centering\arraybackslash}p{1.5cm} >{\centering\arraybackslash}p{1.5cm} >{\centering\arraybackslash}p{1.5cm} >{\centering\arraybackslash}p{1.5cm} >{\centering\arraybackslash}p{1.5cm} >{\centering\arraybackslash}p{1.5cm} >{\centering\arraybackslash}p{1.5cm} }
31 & 30 & 29 & 28 & 27 & 26 & 25 & 24\\
\hline
\multicolumn{8}{|c|}{\cellcolor{gray!25}CH4BLOPCR[31:24]}\\
\multicolumn{8}{|c|}{\cellcolor{gray!25}CH4RPPCR[31:24]}\\
\hline
23 & 22 & 21 & 20 & 19 & 18 & 17 & 16\\
\hline
\multicolumn{8}{|c|}{\cellcolor{gray!25}CH4BLOPCR[23:16]}\\
\multicolumn{8}{|c|}{\cellcolor{gray!25}CH4RPPCR[23:16]}\\
\hline
15 & 14 & 13 & 12 & 11 & 10 & 9 & 8\\
\hline
\multicolumn{8}{|c|}{\cellcolor{gray!25}CH4BLOPCR[15:8]}\\
\multicolumn{8}{|c|}{\cellcolor{gray!25}CH4RPPCR[15:8]}\\
\hline
7 & 6 & 5 & 4 & 3 & 2 & 1 & 0\\
\hline
\multicolumn{8}{|c|}{\cellcolor{gray!25}CH4BLOPCR[7:0]}\\
\multicolumn{8}{|c|}{\cellcolor{gray!25}CH4RPPCR[7:0]}\\
\hline
\end{tabular}
}
......@@ -622,12 +622,12 @@ CH3BLOPCR
\begin{itemize}
\item \begin{small}
{\bf
CH4BLOPCR
CH4RPPCR
} [\emph{read/write}]: BLO pulse counter value
\end{small}
\end{itemize}
\subsubsection{CH5BLOPCR - Channel 5 Pulse Counter Register for BLO pulses}
\label{app:conv-regs-CH5BLOPCR}
\subsubsection{CH5RPPCR - Channel 5 Pulse Counter Register for BLO pulses}
\label{app:conv-regs-CH5RPPCR}
\vspace{11pt}
\noindent
......@@ -635,19 +635,19 @@ CH4BLOPCR
\begin{tabular}{>{\centering\arraybackslash}p{1.5cm} >{\centering\arraybackslash}p{1.5cm} >{\centering\arraybackslash}p{1.5cm} >{\centering\arraybackslash}p{1.5cm} >{\centering\arraybackslash}p{1.5cm} >{\centering\arraybackslash}p{1.5cm} >{\centering\arraybackslash}p{1.5cm} >{\centering\arraybackslash}p{1.5cm} }
31 & 30 & 29 & 28 & 27 & 26 & 25 & 24\\
\hline
\multicolumn{8}{|c|}{\cellcolor{gray!25}CH5BLOPCR[31:24]}\\
\multicolumn{8}{|c|}{\cellcolor{gray!25}CH5RPPCR[31:24]}\\
\hline
23 & 22 & 21 & 20 & 19 & 18 & 17 & 16\\
\hline
\multicolumn{8}{|c|}{\cellcolor{gray!25}CH5BLOPCR[23:16]}\\
\multicolumn{8}{|c|}{\cellcolor{gray!25}CH5RPPCR[23:16]}\\
\hline
15 & 14 & 13 & 12 & 11 & 10 & 9 & 8\\
\hline
\multicolumn{8}{|c|}{\cellcolor{gray!25}CH5BLOPCR[15:8]}\\
\multicolumn{8}{|c|}{\cellcolor{gray!25}CH5RPPCR[15:8]}\\
\hline
7 & 6 & 5 & 4 & 3 & 2 & 1 & 0\\
\hline
\multicolumn{8}{|c|}{\cellcolor{gray!25}CH5BLOPCR[7:0]}\\
\multicolumn{8}{|c|}{\cellcolor{gray!25}CH5RPPCR[7:0]}\\
\hline
\end{tabular}
}
......@@ -655,12 +655,12 @@ CH4BLOPCR
\begin{itemize}
\item \begin{small}
{\bf
CH5BLOPCR
CH5RPPCR
} [\emph{read/write}]: BLO pulse counter value
\end{small}
\end{itemize}
\subsubsection{CH6BLOPCR - Channel 6 Pulse Counter Register for BLO pulses}
\label{app:conv-regs-CH6BLOPCR}
\subsubsection{CH6RPPCR - Channel 6 Pulse Counter Register for BLO pulses}
\label{app:conv-regs-CH6RPPCR}
\vspace{11pt}
......@@ -669,19 +669,19 @@ CH5BLOPCR
\begin{tabular}{>{\centering\arraybackslash}p{1.5cm} >{\centering\arraybackslash}p{1.5cm} >{\centering\arraybackslash}p{1.5cm} >{\centering\arraybackslash}p{1.5cm} >{\centering\arraybackslash}p{1.5cm} >{\centering\arraybackslash}p{1.5cm} >{\centering\arraybackslash}p{1.5cm} >{\centering\arraybackslash}p{1.5cm} }
31 & 30 & 29 & 28 & 27 & 26 & 25 & 24\\
\hline
\multicolumn{8}{|c|}{\cellcolor{gray!25}CH6BLOPCR[31:24]}\\
\multicolumn{8}{|c|}{\cellcolor{gray!25}CH6RPPCR[31:24]}\\
\hline
23 & 22 & 21 & 20 & 19 & 18 & 17 & 16\\
\hline
\multicolumn{8}{|c|}{\cellcolor{gray!25}CH6BLOPCR[23:16]}\\
\multicolumn{8}{|c|}{\cellcolor{gray!25}CH6RPPCR[23:16]}\\
\hline
15 & 14 & 13 & 12 & 11 & 10 & 9 & 8\\
\hline
\multicolumn{8}{|c|}{\cellcolor{gray!25}CH6BLOPCR[15:8]}\\
\multicolumn{8}{|c|}{\cellcolor{gray!25}CH6RPPCR[15:8]}\\
\hline
7 & 6 & 5 & 4 & 3 & 2 & 1 & 0\\
\hline
\multicolumn{8}{|c|}{\cellcolor{gray!25}CH6BLOPCR[7:0]}\\
\multicolumn{8}{|c|}{\cellcolor{gray!25}CH6RPPCR[7:0]}\\
\hline
\end{tabular}
}
......@@ -689,7 +689,7 @@ CH5BLOPCR
\begin{itemize}
\item \begin{small}
{\bf
CH6BLOPCR
CH6RPPCR
} [\emph{read/write}]: BLO pulse counter value
\end{small}
\end{itemize}
......
......@@ -38,10 +38,10 @@
ENABLED = False
# Hostname, username and password
HNAME = ""
USER = ""
PWD = ""
SLOT = 0
HNAME = "" # Add host name here Eg: HNAME = "cfv-774-celma3"
USER = "" # Add host username here Eg: USER = "admin"
PWD = "" # Add host password here Eg: PWD = "ADMIN"
SLOT = 0 # Add slot number here Eg: SLOT = 5
# Boolean to tell the ei2c.py module whether to create a dump file for the ELMA
# command replies
......
Procedure for JTAG gateware upgrade for conv-ttl-xxx boards
-------------------------------------------------------------
This procedure is used to upgrade gateware on conv-ttl-xxx boards.
After upgrade a log file will be saved in the ./log folder recording board unique ID, previous and new gateware version and hardware version.
The target version for Golden and Release bitstreams needs to be maually entered in the gw-upgrade.py file,
by editing the lines:
# Target version
gwvers_target = 4.1
gwvers_gold_target = 0.3
In the same directory, binaries for release and golden bitstreams should be saved in folders ./gw-blo or ./gw-485 depending on which board should be upgraded.
Additionally the file ei2cdefine.py should be edited for local crate used for upgrade:
# Hostname, username and password
HNAME = "cfvm-774-elma3"
USER = "admin"
PWD = "ADMIN"
SLOT = 5
Once the target version and crate information has been entered, follow the procedure below to upgrade board version:
* At the prompt, run script gw-upgrade.py, by running the command:
>> python gw-upgrade.py
* Type "y"+Enter if you have a board you would like to upgrade gateware for, "n"+Enter if not.
* Place ESD strap on your wrist.
* Take conv-ttl-xxx board carefully out of box and ESD bag.
* Scan with the barcode reader the LHC barcode on the board. Press Enter after scan.
* Place board on slot 5 of Elma crate, without engaging it all the way.
* Plug the Xilinx Cable on the Xiling connector (JTAG) of the conv-ttl-xxx board.
* Engage the conv-ttl-xx board all the way in the VME crate, and press the front panel handles until they make a clicking noise.
* Type "ok"+Enter on the terminal prompt.
* The script checks the board ID and states whether the board in the slot is a conv-ttl-blo or conv-ttl-rs485. If board information is correct, type "y"+Enter, if not type "n"+Enter and restart the script with the correct board.
* The script then checks the current board hardware and gateware version number. If the the hardware version is older than v4.0 then the script will not be able to identify the exact version number, only that it is v3.0 or earlier.
* The script checks that the gateware version is different than the target upgrade. If it is the same as the target version, then upgrade is not necessary and the script aborts. If the current version does not match target version, than script proceeds with upgrade.
* Once upgrade starts, you need to wait a approx 7 minutes for it to be completed. The script will then display the new gateware version (hardware version WILL NOT change). The information is all saved in the log file.
* The script will ask you to remove the board and type "ok"+Enter. Make sure you are wearing the ESD bracelet. Put the board back in ESD bag and then in the box if any.
* If more boards need upgrading, type "y"+Enter and start the procedure from the top again.
--------------------------------------------------------------------------------------------------------------
Note:
The log file is created with the current date. All tests for the day are appended to the same file.
If you want to restart a new log file, it needs to be manually renamed and the script will write on a new one
Procedure for remote gateware upgrade for conv-ttl-xxx boards
-------------------------------------------------------------
This procedure is used to upgrade gateware on conv-ttl-xxx boards REMOTELY.
After upgrade a log file will be saved in the ./log folder recording with the crate name, slot number, unique board ID and hw and gw version information.
The target version for Golden and Release bitstreams needs to be maually entered in the remote-mass-gw-upgrade.py file,
by editing the lines:
# Target version
gwvers_target = 4.1
gwvers_gold_target = 0.3
Individual card information can be added by creatnig/editing crate_list.txt file in the following format:
Remote_crate_name Username Password Slot_number
The file can contain any number of lines, one per board. If a crate contains multiple boards, then the same line has to be repeated as many times, but with a different slot number.
Eg:
cfvm-361-cbaos13 admin ADMIN 16
cfvm-361-cbaos13 admin ADMIN 3
ctd-361-c01 admin ADMIN 12
Procedure for JTAG gateware upgrade for conv-ttl-xxx boards
-------------------------------------------------------------
This procedure is used to upgrade gateware on conv-ttl-xxx boards.
After upgrade a log file will be saved in the ./log folder recording board unique ID, previous and new gateware version and hardware version.
The target version for Golden and Release bitstreams needs to be maually entered in the gw-upgrade.py file,
by editing the lines:
# Target version
gwvers_target = 4.1
gwvers_gold_target = 0.3
In the same directory, binaries for release and golden bitstreams should be saved in folders ./gw-blo or ./gw-485 depending on which board should be upgraded.
Additionally the file ei2cdefine.py should be edited for local crate used for upgrade:
# Hostname, username and password
HNAME = "cfvm-774-elma3"
USER = "admin"
PWD = "ADMIN"
SLOT = 5
Once the target version and crate information has been entered, follow the procedure below to upgrade board version:
* At the prompt, run script gw-upgrade.py, by running the command:
>> python gw-upgrade.py
* Type "y"+Enter if you have a board you would like to upgrade gateware for, "n"+Enter if not.
* Place ESD strap on your wrist.
* Take conv-ttl-xxx board carefully out of box and ESD bag.
* Scan with the barcode reader the LHC barcode on the board. Press Enter after scan.
* Place board on slot 5 of Elma crate, without engaging it all the way.
* Plug the Xilinx Cable on the Xiling connector (JTAG) of the conv-ttl-xxx board.
* Engage the conv-ttl-xx board all the way in the VME crate, and press the front panel handles until they make a clicking noise.
* Type "ok"+Enter on the terminal prompt.
* The script checks the board ID and states whether the board in the slot is a conv-ttl-blo or conv-ttl-rs485. If board information is correct, type "y"+Enter, if not type "n"+Enter and restart the script with the correct board.
* The script then checks the current board hardware and gateware version number. If the the hardware version is older than v4.0 then the script will not be able to identify the exact version number, only that it is v3.0 or earlier.
* The script checks that the gateware version is different than the target upgrade. If it is the same as the target version, then upgrade is not necessary and the script aborts. If the current version does not match target version, than script proceeds with upgrade.
* Once upgrade starts, you need to wait a approx 7 minutes for it to be completed. The script will then display the new gateware version (hardware version WILL NOT change). The information is all saved in the log file.
* The script will ask you to remove the board and type "ok"+Enter. Make sure you are wearing the ESD bracelet. Put the board back in ESD bag and then in the box if any.
* If more boards need upgrading, type "y"+Enter and start the procedure from the top again.
--------------------------------------------------------------------------------------------------------------
Note:
The log file is created with the current date. All tests for the day are appended to the same file.
If you want to restart a new log file, it needs to be manually renamed and the script will write on a new one
cfvm-774-elma3 admin ADMIN 3
\ No newline at end of file
#===============================================================================
# CERN (BE-CO-HT)
# EI2C global definitions file
#===============================================================================
# author: Theodor Stana (t.stana@cern.ch)
#
# date of creation: 2014-03-05
#
# version: 1.0
#
# description:
#
# This module defines some global constants that are used by other scripts in
# the software suite. The constants and their definitions are in the code
# below.
#
#===============================================================================
# GNU LESSER GENERAL PUBLIC LICENSE
#===============================================================================
# This source file is free software; you can redistribute it and/or modify it
# under the terms of the GNU Lesser General Public License as published by the
# Free Software Foundation; either version 2.1 of the License, or (at your
# option) any later version. This source is distributed in the hope that it
# will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty
# of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
# See the GNU Lesser General Public License for more details. You should have
# received a copy of the GNU Lesser General Public License along with this
# source; if not, download it from http://www.gnu.org/licenses/lgpl-2.1.html
#===============================================================================
# last changes:
# 2014-03-05 Theodor Stana File created
# 2017-02-15 Maciej Suminski Added 'SLOT' parameter
#===============================================================================
# TODO: -
#===============================================================================
# Boolean to specify whether hostname, user & password are used
ENABLED = False
# Hostname, username and password
HNAME = "cfvm-774-elma3"
USER = "admin"
PWD = "ADMIN"
SLOT = 5
# Boolean to tell the ei2c.py module whether to create a dump file for the ELMA
# command replies
DUMP = False
In this folder you need to add one single binary for your upgrades.
The binary file should be the concatenated version of the golden and release gateware.
Usually in the format:
golden-v0.x_release-vx.y.bin
Got to https://www.ohwr.org/projects/conv-ttl-blo-gw/wiki/ For latest release
In this folder you need to add one single binary for your upgrades.
The binary file should be the concatenated version of the golden and release gateware.
Usually in the format:
golden-v0.x_release-vx.y.bin
Got to https://www.ohwr.org/projects/conv-ttl-rs485-gw/wiki/ For latest release
#!/usr/bin/python
#===============================================================================
# CERN (BE-CO-HT)
# Pulse test script
#===============================================================================
# author: Denia Bouhired(t.stana@cern.ch)
#
# date of creation:
#
# version: 1.0
#
# description:
# This script is used during manual upgrade of conv-ttl boards.
# It is used to:
# - Scan barcode of board
# - Read hw version
# - Read gw version
# - Read unique temperature chip ID
# - Output information on log file
#
#===============================================================================
# GNU LESSER GENERAL PUBLIC LICENSE
#===============================================================================
# This source file is free software; you can redistribute it and/or modify it
# under the terms of the GNU Lesser General Public License as published by the
# Free Software Foundation; either version 2.1 of the License, or (at your
# option) any later version. This source is distributed in the hope that it
# will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty
# of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
# See the GNU Lesser General Public License for more details. You should have
# received a copy of the GNU Lesser General Public License along with this
# source; if not, download it from http://www.gnu.org/licenses/lgpl-2.1.html
#===============================================================================
#===============================================================================
# TODO:
#===============================================================================
import sys
sys.path.append("../ei2c")
import time
from ei2c import *
import ei2cdefine
import binascii
import re
import subprocess
import os
import traceback
##-------------------------------------------------------------------------------------------------
## Method to turn on the VME crate.
##-------------------------------------------------------------------------------------------------
## It calls the men-on script which sends the necessary SMTP commands to the ELMA crate to turn on
## power to the VME backplane.
##-------------------------------------------------------------------------------------------------
def men_on():
print("Switching on the ELMA crate")
subprocess.call("./men-on", shell=True, stdout=None, stderr=None)
time.sleep(1)
##-------------------------------------------------------------------------------------------------
## Method to turn off the VME crate.
##-------------------------------------------------------------------------------------------------
## It calls the men-off script which sends the necessary SMTP commands to the ELMA crate to turn off
## power to the VME backplane.
##-------------------------------------------------------------------------------------------------
def men_off():
print("Switching off the ELMA crate")
subprocess.call("./men-off", shell=True, stdout=None, stderr=None)
time.sleep(1)
##-------------------------------------------------------------------------------------------------
# Define registers memory address
IDREG = 0x00 # Board ID register
SRREG = 0x04 # Status register
UIDREGLS = 0xac # 1-wire chip Unique ID - LSB
UIDREGMS = 0xb0 # 1-wire chip Unique ID - MSB
# Status register offsets
CSR_GWVERS_OFS = 0
CSR_HWVERS_OFS = 22
# Target version
gwvers_target = 0.0 # Add release version here Eg: gwvers_target = 1.0
gwvers_gold_target = 0.0 # Add golden version here Eg: gwvers_gold_target = 0.2
##-------------------------------------------------------------------------------------------------
## Method to check hardware and gateware version
##-------------------------------------------------------------------------------------------------
def gw_hw_version():
hwvers = (testelma.read(slot, SRREG) & 0x0fc00000) >> CSR_HWVERS_OFS
gwvers = (testelma.read(slot, SRREG) & 0xFF) >> CSR_GWVERS_OFS
#print ("maj is %d, min is %d" % int(hwvers >> 2), int(hwvers & 0x03))
hwvers = int(hwvers >> 2)+float(hwvers & 0x03)/10
gwvers = int(gwvers >> 4)+float(gwvers & 0xF)/10
return hwvers, gwvers;
##-------------------------------------------------------------------------------------------------
## Main "method" of upgrade module
##-------------------------------------------------------------------------------------------------
if __name__ == "__main__":
men_off()
# Get the IP, user and password for the ELMA crate from ei2cdefine.py
ip = ei2cdefine.HNAME
user = ei2cdefine.USER
pwd = ei2cdefine.PWD
slot = ei2cdefine.SLOT
testelma = EI2C(ip, user, pwd)
testelma.open()
while True:
print "=============================================\n"
ans = raw_input("Would you like to upgrade conv-ttl-xxx board (y/n): ")
if (ans == "y"):
upgrade = True
elif (ans == "n"):
upgrade = False
break
else:
print ("Wrong input !\n")
sys.exit(1)
print ("Start conv-ttl-xxx gateware upgrade")
print "=============================================\n"
# Scan the barcode
while True:
sn1 = raw_input("--> Scan the PCB barcode: ")
if (not len(sn1)):
sn1 = "0"
m = re.search(r"[^a-z\-A-Z0-9_]+",sn1)
if m:
print "Bad character in barcode"
else:
break
# Ask the user to plug in the board, turn on the crate and call the script to download bitstream
# to FPGA
msg = "\n--> Plug the CONV-TTL-XXX board '%s' into the VME crate.\n Then type 'ok': " % (sn1)
ok = raw_input(msg)
while True:
if ok.find("ok") != -1 or ok.find("OK") != -1:
break
else:
ok = raw_input("--> Please type 'ok' to continue: ")
print "\n"
print "=============================================\n"
men_on()
time.sleep(8)
# Get board ID and gateware version, fail if incorrect
bloid = testelma.read(slot, IDREG)
if ( bloid == 0x54424c4f ):
print("This is a CONV-TTL-BLO board \n ")
gwpath = "gw-blo"
elif ( bloid == 0x54343835):
print("This is a CONV-TTL-RS485 board \n ")
gwpath = "gw-rs485"
else:
print("Wrong board ID (%s)" % binascii.unhexlify("%s" % \
"{0:x}".format(bloid)))
sys.exit(1)
#Check that the board inserted is correct
while True:
check = raw_input("--> Is this correct (y/n): ")
if (check == "y"):
print ("Current board information: \n")
break
elif (check == "n"):
print ("Wrong board inserted... Aborting ...")
sys.exit(1)
else:
print ("Wrong input !\n")
(hwvers, gwvers) = gw_hw_version()
if (hwvers == 0.0):
print("Hardware version is (v3.0) or earlier\n" )
else:
print("Hardware version is (%2.1f)\n" % hwvers )
print("Gateware version is (%2.1f)\n" % gwvers )
print "=============================================\n"
#Check whether upgrade is required
if (gwvers == gwvers_target):
print("Board gateware already at latest version ... Nothing to do ...\n ")
#print("Script Exiting ...")
upgrade=False
else:
print("Gateware version does not match target ... Gateware will be upgraded ...\n")
#ans = raw_input("Would you like to upgrade (y/n): ")
#if (ans == "y"):
# upgrade = True
#elif (ans == "n"):
# upgrade = False
#else:
#print ("Wrong input !\n")
#sys.exit(1)
if (upgrade== True):
print "=============================================\n"
print "Loading FPGA bitstream... \n"
#ret = subprocess.call(["cd ./" + gwpath + "; ./flash;"], shell=True, stdout=None, stderr=None)
ret = subprocess.call(["cd ./" + gwpath + "; xc3sprog -c xpc flash_load.bit; xc3sprog -c xpc -I golden-v" + str(gwvers_gold_target)+".bin:w:0:bin; xc3sprog -c xpc flash_load.bit; xc3sprog -c xpc -I release-v" + str(gwvers_target) +".bin:w:1507328:bin"], shell=True, stdout=None, stderr=None)
print "Bitstream successfully loaded... \n"
print "Crate restarting... \n"
# Turn off the VME crate
men_off()
# Turn on the VME crate
men_on()
time.sleep(10)
print "=============================================\n"
print ("Upgrade complete: \n")
(hwvers_new, gwvers_new) = gw_hw_version()
if (hwvers_new == 0.0):
print("Hardware version is (v3.0) or earlier\n" )
else:
print("Hardware version is (%2.1f)\n" % hwvers_new )
print("Gateware version is (%2.1f)\n" % gwvers_new )
print "=============================================\n"
#Read unique board ID
IDMS = testelma.read(slot, UIDREGMS)
IDLS = testelma.read(slot, UIDREGLS)
#Generate log file
#subprocess.call("cd./log; chmod 777 log", shell=True, stdout=None, stderr=None)
# Generate output file named according to current time
fname = time.strftime("gw-upgrade-%Y-%m-%d", time.localtime()) + ".txt"
ret = subprocess.call(["ls ./log | grep " + fname], shell=True, stdout=None, stderr=None)
#print ("%d" % ret)
if (ret != 0):
f = open("./log/" + fname, "w")
print(" File not found ... Create new one \n ")
f.write("\n")
f.write("CONV-TTL-XXX Upgrade log created on %s \n" % time.strftime("%Y-%m-%d-%Hh%Mm%Ss", time.localtime()))
f.write("--------------------------------------------------------------------------------- \n")
f.write("* Target version is (v%2.1f)\n" % gwvers_target)
f.write("* Hardware (v0.0) means board is (v3.0) or earlier \n")
f.write("\n")
f.write("--------------------------------------------------------------------------------- \n")
f.write("Barcode | PCB ID | HW version | Old gw version | New gw version\n")
f.write("--------------------------------------------------------------------------------- \n")
f.close()
print("Upgrade log can be found in ./log/%s \n" % fname)
f = open("./log/" + fname, "a")
f.write("%s \t %x%x \t (%2.1f) \t (%2.1f) \t (%2.1f) \n" % (sn1, IDMS, IDLS, hwvers, gwvers, gwvers_new) )
f.close()
men_off()
#Remove board from crate
msg = "\n--> Remove the CONV-TTL-XXX board '%s' from the VME crate.\n Then type 'ok': " % (sn1)
ok = raw_input(msg)
while True:
if ok.find("ok") != -1 or ok.find("OK") != -1:
break
else:
ok = raw_input("--> Please type 'ok' to continue: ")
print "\n"
#!/bin/bash
echo Power OFF ELMA crate
snmpset -v2c -c ADMIN cfvm-774-elma3 1.3.6.1.4.1.37968.1.1.7.2.1.3.1 i 1
#!/bin/bash
echo Power ON ELMA crate
snmpset -v2c -c ADMIN cfvm-774-elma3 1.3.6.1.4.1.37968.1.1.7.2.1.3.1 i 0
#!/usr/bin/python
#===============================================================================
# CERN (BE-CO-HT)
# Pulse test script
#===============================================================================
# author: Denia Bouhired(t.stana@cern.ch)
#
# date of creation:
#
# version: 1.0
#
# description:
# This script is used during manual upgrade of conv-ttl boards.
# It is used to:
# - Scan barcode of board
# - Read hw version
# - Read gw version
# - Read unique temperature chip ID
# - Output information on log file
#
#===============================================================================
# GNU LESSER GENERAL PUBLIC LICENSE
#===============================================================================
# This source file is free software; you can redistribute it and/or modify it
# under the terms of the GNU Lesser General Public License as published by the
# Free Software Foundation; either version 2.1 of the License, or (at your
# option) any later version. This source is distributed in the hope that it
# will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty
# of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
# See the GNU Lesser General Public License for more details. You should have
# received a copy of the GNU Lesser General Public License along with this
# source; if not, download it from http://www.gnu.org/licenses/lgpl-2.1.html
#===============================================================================
#===============================================================================
# TODO:
#===============================================================================
import sys
sys.path.append("../ei2c")
sys.path.append("../multiboot/lib-multiboot")
import time
from ei2c import *
from ei2cexcept import *
import binascii
import re
import subprocess
import os
import traceback
from xil_multiboot import *
##-------------------------------------------------------------------------------------------------
## Method to turn on the VME crate.
##-------------------------------------------------------------------------------------------------
## It calls the men-on script which sends the necessary SMTP commands to the ELMA crate to turn on
## power to the VME backplane.
##-------------------------------------------------------------------------------------------------
def men_on():
print("Switching on the ELMA crate")
subprocess.call("./men-on", shell=True, stdout=None, stderr=None)
time.sleep(1)
##-------------------------------------------------------------------------------------------------
## Method to turn off the VME crate.
##-------------------------------------------------------------------------------------------------
## It calls the men-off script which sends the necessary SMTP commands to the ELMA crate to turn off
## power to the VME backplane.
##-------------------------------------------------------------------------------------------------
def men_off():
print("Switching off the ELMA crate")
subprocess.call("./men-off", shell=True, stdout=None, stderr=None)
time.sleep(1)
##-------------------------------------------------------------------------------------------------
# Define registers memory address
IDREG = 0x00 # Board ID register
SRREG = 0x04 # Status register
UIDREGLS = 0xac # 1-wire chip Unique ID - LSB
UIDREGMS = 0xb0 # 1-wire chip Unique ID - MSB
# Status register offsets
CSR_GWVERS_OFS = 0
CSR_HWVERS_OFS = 22
# Target version
gwvers_target = 0.0 # Add release version here Eg: gwvers_target = 1.0
gwvers_gold_target = 0.0 # Add golden version here Eg: gwvers_gold_target = 0.2
#gateware to write
#gw_file="golden-v"+str(gwvers_gold_target)+".bin"
gw_file="golden-v"+str(gwvers_gold_target)+"_release-v"+str(gwvers_target)+".bin"
##-------------------------------------------------------------------------------------------------
## Method to check hardware and gateware version
##-------------------------------------------------------------------------------------------------
def gw_hw_version():
hwvers = (elma.read(slot, SRREG) & 0x0fc00000) >> CSR_HWVERS_OFS
gwvers = (elma.read(slot, SRREG) & 0xFF) >> CSR_GWVERS_OFS
#print ("maj is %d, min is %d" % int(hwvers >> 2), int(hwvers & 0x03))
hwvers = int(hwvers >> 2)+float(hwvers & 0x03)/10
gwvers = int(gwvers >> 4)+float(gwvers & 0xF)/10
return hwvers, gwvers;
##-------------------------------------------------------------------------------------------------
## Main "method" of upgrade module
##-------------------------------------------------------------------------------------------------
if __name__ == "__main__":
crate_list = "crate_list.txt"
fin = open ('./crate_list.txt', 'r')
for crate_line in fin:
#Split each line into list of strings
crate_info=crate_line.split()
# Get the IP, user and password for the ELMA crate from ei2cdefine.py
ip = crate_info[0]
user = crate_info[1]
pwd = crate_info[2]
slot = int(crate_info[3])
elma = EI2C(ip, user, pwd)
try:
elma.open()
print ("---------------------------------")
print ("Connecting to crate %s ... \n" % ip)
# Get board ID and gateware version, fail if incorrect
bid = elma.get_bid(slot)
(hwvers, gwvers) = gw_hw_version()
upgrade=True
#Check whether upgrade is required
if (gwvers == gwvers_target):
upgrade=False
baseaddr = 0x100
if (bid == "TBLO"):
gw_path="./gw-blo/"
elif (bid == "T485"):
gw_path="./gw-rs485/"
if upgrade==True:
print("Upgrade file is %s \n" % gw_path+gw_file)
mb = XilMultiboot(ELMA_I2C_MULTIBOOT, elma, slot, baseaddr, "")
mb.set_bitstream_file(gw_path+gw_file)
multiboot_addr = "0x0"
multiboot_addr = int(multiboot_addr, 16)
mb.write(multiboot_addr)
mb.iprog(multiboot_addr)
time.sleep(10)
(hwvers_new, gwvers_new) = gw_hw_version()
if (hwvers_new == 0.0):
hwvers_new_str = "<4.0"
else:
hwvers_new_str = str(hwvers_new)
IDMS = elma.read(slot, UIDREGMS)
IDLS = elma.read(slot, UIDREGLS)
except BadHostnameError:
print("... Bad crate name ... \n")
(IDMS, IDLS, hwvers_new_str, gwvers, gwvers_new) = (0,0,"BadHostname",0,0)
except BadUsernameError:
print("... Bad user name ... \n")
(IDMS, IDLS, hwvers_new_str, gwvers, gwvers_new) = (0,0,"BadUsername",0,0)
except BadPasswordError:
print("... Bad password ... \n")
(IDMS, IDLS, hwvers_new_str, gwvers, gwvers_new) = (0,0,"BadPassword",0,0)
except NAckError:
print("... Board not responding... \n")
(IDMS, IDLS, hwvers_new_str, gwvers, gwvers_new) = (0,0,"NAckError",0,0)
#Generate log file
# Generate output file named according to current time
fname = bid+"-"+time.strftime("remote-gwupgrade-%s-%Y-%m-%d", bid, time.localtime()) + ".txt"
ret = subprocess.call(["ls ./log | grep " + fname], shell=True, stdout=None, stderr=None)
print ("%d" % ret)
if (ret != 0):
f = open("./log/" + fname, "w")
f.write("\n")
f.write("CONV-TTL-XXX Upgrade log created on %s \n" % time.strftime("%Y-%m-%d-%Hh%Mm%Ss", time.localtime()))
f.write("--------------------------------------------------------------------------------- \n")
f.write("* Target version is (v%2.1f)\n" % gwvers_target)
f.write("* Hardware (v0.0) means board is (v3.0) or earlier \n")
f.write("\n")
f.write("--------------------------------------------------------------------------------- \n")
f.write("Crate name| Slot |Barcode | PCB ID | HW version | Old gw version | New gw version\n")
f.write("--------------------------------------------------------------------------------- \n")
f.close()
print("Upgrade log can be found in ./log/%s \n" % fname)
f = open("./log/" + fname, "a")
f.write("%s \t %d \t %x%x \t (%s) \t (%2.1f) \t (%2.1f) \n" % (ip, slot, IDMS, IDLS, hwvers_new_str, gwvers, gwvers_new) )
f.close()
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment