Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
G
gtxe2_gpl
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Commits
Issue Boards
Open sidebar
Elphel
gtxe2_gpl
Commits
fedd4e5b
Commit
fedd4e5b
authored
9 years ago
by
Alexey Grebenkin
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Few cleanups
parent
eb870af3
Changes
10
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
10 changed files
with
156 additions
and
108 deletions
+156
-108
GTXE2_CHANNEL.v
GTXE2_CHANNEL.v
+78
-54
GTXE2_CHANNEL_GPL.v
gtxe2_channel/GTXE2_CHANNEL_GPL.v
+21
-11
gtxe2_chnl.v
gtxe2_channel/gtxe2_chnl.v
+22
-3
gtxe2_chnl_clocking.v
gtxe2_channel/gtxe2_chnl_clocking.v
+17
-3
gtxe2_chnl_cpll.v
gtxe2_channel/gtxe2_chnl_cpll.v
+7
-7
gtxe2_chnl_rx.v
gtxe2_channel/gtxe2_chnl_rx.v
+4
-4
gtxe2_chnl_rx_align.v
gtxe2_channel/gtxe2_chnl_rx_align.v
+1
-22
gtxe2_chnl_rx_dataiface.v
gtxe2_channel/gtxe2_chnl_rx_dataiface.v
+4
-3
gtxe2_chnl_rx_des.v
gtxe2_channel/gtxe2_chnl_rx_des.v
+1
-0
gtxe2_chnl_tx.v
gtxe2_channel/gtxe2_chnl_tx.v
+1
-1
No files found.
GTXE2_CHANNEL.v
View file @
fedd4e5b
This diff is collapsed.
Click to expand it.
gtxe2_channel/GTXE2_CHANNEL_GPL.v
View file @
fedd4e5b
...
...
@@ -49,12 +49,12 @@ module GTXE2_CHANNEL(
output
CPLLLOCK
,
output
CPLLREFCLKLOST
,
output
TSTOUT
,
input
GTRSVD
,
input
PCSRSVDIN
,
input
PCSRSVDIN2
,
input
PMARSVDIN
,
input
PMARSVDIN2
,
input
TSTIN
,
input
[
15
:
0
]
GTRSVD
,
input
[
15
:
0
]
PCSRSVDIN
,
input
[
4
:
0
]
PCSRSVDIN2
,
input
[
4
:
0
]
PMARSVDIN
,
input
[
4
:
0
]
PMARSVDIN2
,
input
[
19
:
0
]
TSTIN
,
// Reset Mode ports, ug476 p.62
input
GTRESETSEL
,
input
RESETOVRD
,
...
...
@@ -130,11 +130,11 @@ module GTXE2_CHANNEL(
output
TXPHALIGNDONE
,
output
TXPHINITDONE
,
output
TXDLYSRESETDONE
,
input
TXSYNCMODE
,
/*
input TXSYNCMODE,
input TXSYNCALLIN,
input TXSYNCIN,
output TXSYNCOUT,
output
TXSYNCDONE
,
output TXSYNCDONE,
*/
// TX Pattern Generator, ug476 p.147
input
[
2
:
0
]
TXPRBSSEL
,
input
TXPRBSFORCEERR
,
...
...
@@ -713,17 +713,27 @@ channel(
.
CPLLLOCK
(
CPLLLOCK
)
,
.
CPLLREFCLKLOST
(
CPLLREFCLKLOST
)
,
.
TXOUTCLKPMA
(
TXOUTCLKPMA
)
,
.
GTRSVD
(
GTRSVD
)
,
.
PCSRSVDIN
(
PCSRSVDIN
)
,
.
PCSRSVDIN2
(
PCSRSVDIN2
)
,
.
PMARSVDIN
(
PMARSVDIN
)
,
.
PMARSVDIN2
(
PMARSVDIN2
)
,
.
TSTIN
(
TSTIN
)
,
.
TSTOUT
(
TSTOUT
)
,
.
TXOUTCLKPMA
()
,
.
TXOUTCLKPCS
(
TXOUTCLKPCS
)
,
.
TXOUTCLK
(
TXOUTCLK
)
,
.
TXOUTCLKFABRIC
(
TXOUTCLKFABRIC
)
,
.
tx_serial_clk
()
,
.
RXOUTCLKPMA
(
RXOUTCLKPMA
)
,
.
RXOUTCLKPMA
()
,
.
RXOUTCLKPCS
(
RXOUTCLKPCS
)
,
.
RXOUTCLK
(
RXOUTCLK
)
,
.
RXOUTCLKFABRIC
(
RXOUTCLKFABRIC
)
,
.
rx_serial_clk
()
.
rx_serial_clk
()
,
.
RXDLYBYPASS
(
RXDLYBYPASS
)
)
;
...
...
This diff is collapsed.
Click to expand it.
gtxe2_channel/gtxe2_chnl.v
View file @
fedd4e5b
...
...
@@ -139,7 +139,16 @@ module gtxe2_chnl(
output
wire
RXOUTCLKPCS
,
output
wire
RXOUTCLK
,
output
wire
RXOUTCLKFABRIC
,
output
wire
rx_serial_clk
output
wire
rx_serial_clk
,
// additional ports to pll
output
TSTOUT
,
input
[
15
:
0
]
GTRSVD
,
input
[
15
:
0
]
PCSRSVDIN
,
input
[
4
:
0
]
PCSRSVDIN2
,
input
[
4
:
0
]
PMARSVDIN
,
input
[
4
:
0
]
PMARSVDIN2
,
input
[
19
:
0
]
TSTIN
)
;
parameter
[
23
:
0
]
CPLL_CFG
=
29'h00BC07DC
;
parameter
integer
CPLL_FBDIV
=
4
;
...
...
@@ -312,12 +321,22 @@ clocking(
.
TXOUTCLK
(
TXOUTCLK
)
,
.
TXOUTCLKFABRIC
(
TXOUTCLKFABRIC
)
,
.
tx_serial_clk
(
tx_serial_clk
)
,
.
tx_piso_clk
()
,
.
GTRSVD
(
GTRSVD
)
,
.
PCSRSVDIN
(
PCSRSVDIN
)
,
.
PCSRSVDIN2
(
PCSRSVDIN2
)
,
.
PMARSVDIN
(
PMARSVDIN
)
,
.
PMARSVDIN2
(
PMARSVDIN2
)
,
.
TSTIN
(
TSTIN
)
,
.
TSTOUT
(
TSTOUT
)
,
.
RXOUTCLKPMA
(
RXOUTCLKPMA
)
,
.
RXOUTCLKPCS
(
RXOUTCLKPCS
)
,
.
RXOUTCLK
(
RXOUTCLK
)
,
.
RXOUTCLKFABRIC
(
RXOUTCLKFABRIC
)
,
.
rx_serial_clk
(
rx_serial_clk
)
.
rx_serial_clk
(
rx_serial_clk
)
,
.
rx_sipo_clk
()
)
;
endmodule
This diff is collapsed.
Click to expand it.
gtxe2_channel/gtxe2_chnl_clocking.v
View file @
fedd4e5b
...
...
@@ -67,7 +67,16 @@ module gtxe2_chnl_clocking(
output
wire
RXOUTCLK
,
output
wire
RXOUTCLKFABRIC
,
output
wire
rx_serial_clk
,
output
wire
tx_sipo_clk
output
wire
rx_sipo_clk
,
// additional ports to cpll
output
TSTOUT
,
input
[
15
:
0
]
GTRSVD
,
input
[
15
:
0
]
PCSRSVDIN
,
input
[
4
:
0
]
PCSRSVDIN2
,
input
[
4
:
0
]
PMARSVDIN
,
input
[
4
:
0
]
PMARSVDIN2
,
input
[
19
:
0
]
TSTIN
)
;
// CPLL
parameter
[
23
:
0
]
CPLL_CFG
=
29'h00BC07DC
;
...
...
@@ -148,7 +157,6 @@ tx_toserialclk_div(
.
div
(
tx_serial_divider
)
)
;
wire
rx_sipo_clk
;
clock_divider
#(
// .divide_by (rx_serial_divider),
.
divide_by_param
(
0
)
...
...
@@ -168,6 +176,7 @@ clock_divider #(
.
divide_by
(
tx_pma_divider1
)
)
tx_pma_div1
(
.
div
(
1
)
,
.
clk_in
(
tx_piso_clk
)
,
.
clk_out
(
tx_pma_div1_clk
)
)
;
...
...
@@ -176,6 +185,7 @@ clock_divider #(
.
divide_by
(
tx_pma_divider2
)
)
tx_pma_div2
(
.
div
(
1
)
,
.
clk_in
(
tx_pma_div1_clk
)
,
.
clk_out
(
TXOUTCLKPMA
)
)
;
...
...
@@ -187,6 +197,7 @@ clock_divider #(
.
divide_by
(
rx_pma_divider1
)
)
rx_pma_div1
(
.
div
(
1
)
,
.
clk_in
(
rx_sipo_clk
)
,
.
clk_out
(
rx_pma_div1_clk
)
)
;
...
...
@@ -195,6 +206,7 @@ clock_divider #(
.
divide_by
(
rx_pma_divider2
)
)
rx_pma_div2
(
.
div
(
1
)
,
.
clk_in
(
rx_pma_div1_clk
)
,
.
clk_out
(
RXOUTCLKPMA
)
)
;
...
...
@@ -204,6 +216,7 @@ clock_divider #(
.
divide_by
(
2
)
)
txpllrefclk_div2
(
.
div
(
1
)
,
.
clk_in
(
TXPLLREFCLK_DIV1
)
,
.
clk_out
(
TXPLLREFCLK_DIV2
)
)
;
...
...
@@ -211,6 +224,7 @@ clock_divider #(
.
divide_by
(
2
)
)
rxpllrefclk_div2
(
.
div
(
1
)
,
.
clk_in
(
RXPLLREFCLK_DIV1
)
,
.
clk_out
(
RXPLLREFCLK_DIV2
)
)
;
...
...
@@ -274,7 +288,7 @@ cpll(
.
ref_clk
(
clk_mux_out
)
,
.
clk_out
(
cpll_clk_out
)
,
.
pll_locked
(
pll_locked
)
.
pll_locked
()
)
;
endmodule
This diff is collapsed.
Click to expand it.
gtxe2_channel/gtxe2_chnl_cpll.v
View file @
fedd4e5b
...
...
@@ -30,13 +30,13 @@ module gtxe2_chnl_cpll(
output
wire
CPLLLOCK
,
output
wire
CPLLREFCLKLOST
,
input
wire
GTRSVD
,
input
wire
PCSRSVDIN
,
input
wire
PCSRSVDIN2
,
input
wire
PMARSVDIN
,
input
wire
PMARSVDIN2
,
input
wire
TSTIN
,
output
wire
TSTOUT
,
input
wire
[
15
:
0
]
GTRSVD
,
input
wire
[
15
:
0
]
PCSRSVDIN
,
input
wire
[
4
:
0
]
PCSRSVDIN2
,
input
wire
[
4
:
0
]
PMARSVDIN
,
input
wire
[
4
:
0
]
PMARSVDIN2
,
input
wire
[
19
:
0
]
TSTIN
,
output
wire
TSTOUT
,
// internal
input
wire
ref_clk
,
...
...
This diff is collapsed.
Click to expand it.
gtxe2_channel/gtxe2_chnl_rx.v
View file @
fedd4e5b
...
...
@@ -229,10 +229,10 @@ begin: asdadfdsf
end
endgenerate
assign
RXDATA
[
63
:
iface_databus_width
]
=
{
64
-
iface_databus_width
{
1'bx
}};
assign
RXDISPERR
[
7
:
interface_isk_width
]
=
{
7
-
interface_isk_width
{
1'bx
}};
assign
RXCHARISK
[
7
:
interface_isk_width
]
=
{
7
-
interface_isk_width
{
1'bx
}};
assign
RXCHARISCOMMA
[
7
:
interface_isk_width
]
=
{
7
-
interface_isk_width
{
1'bx
}};
assign
RXNOTINTABLE
[
7
:
interface_isk_width
]
=
{
7
-
interface_isk_width
{
1'bx
}};
assign
RXDISPERR
[
7
:
interface_isk_width
]
=
{
8
-
interface_isk_width
{
1'bx
}};
assign
RXCHARISK
[
7
:
interface_isk_width
]
=
{
8
-
interface_isk_width
{
1'bx
}};
assign
RXCHARISCOMMA
[
7
:
interface_isk_width
]
=
{
8
-
interface_isk_width
{
1'bx
}};
assign
RXNOTINTABLE
[
7
:
interface_isk_width
]
=
{
8
-
interface_isk_width
{
1'bx
}};
gtxe2_chnl_rx_dataiface
#(
.
internal_data_width
(
internal_data_width
+
internal_data_extra
)
,
...
...
This diff is collapsed.
Click to expand it.
gtxe2_channel/gtxe2_chnl_rx_align.v
View file @
fedd4e5b
...
...
@@ -61,27 +61,6 @@ always @ (posedge clk)
wire
[
comma_width
-
1
:
0
]
comma_window
[
window_size
-
1
:
0
]
;
//initial
// for (idx = 0; idx < window_size; idx = idx + 1) $dumpvars(0, comma_width[idx]);
wire
[
comma_width
-
1
:
0
]
comma_window0
=
comma_window
[
0
]
;
wire
[
comma_width
-
1
:
0
]
comma_window1
=
comma_window
[
1
]
;
wire
[
comma_width
-
1
:
0
]
comma_window2
=
comma_window
[
2
]
;
wire
[
comma_width
-
1
:
0
]
comma_window3
=
comma_window
[
3
]
;
wire
[
comma_width
-
1
:
0
]
comma_window4
=
comma_window
[
4
]
;
wire
[
comma_width
-
1
:
0
]
comma_window5
=
comma_window
[
5
]
;
wire
[
comma_width
-
1
:
0
]
comma_window6
=
comma_window
[
6
]
;
wire
[
comma_width
-
1
:
0
]
comma_window7
=
comma_window
[
7
]
;
wire
[
comma_width
-
1
:
0
]
comma_window8
=
comma_window
[
8
]
;
wire
[
comma_width
-
1
:
0
]
comma_window9
=
comma_window
[
9
]
;
wire
[
comma_width
-
1
:
0
]
comma_window10
=
comma_window
[
10
]
;
wire
[
comma_width
-
1
:
0
]
comma_window11
=
comma_window
[
11
]
;
wire
[
comma_width
-
1
:
0
]
comma_window12
=
comma_window
[
12
]
;
wire
[
comma_width
-
1
:
0
]
comma_window13
=
comma_window
[
13
]
;
wire
[
comma_width
-
1
:
0
]
comma_window14
=
comma_window
[
14
]
;
wire
[
comma_width
-
1
:
0
]
comma_window15
=
comma_window
[
15
]
;
wire
[
comma_width
-
1
:
0
]
comma_window16
=
comma_window
[
16
]
;
wire
[
comma_width
-
1
:
0
]
comma_window17
=
comma_window
[
17
]
;
wire
[
comma_width
-
1
:
0
]
comma_window18
=
comma_window
[
18
]
;
wire
[
comma_width
-
1
:
0
]
comma_window19
=
comma_window
[
19
]
;
wire
[
window_size
-
1
:
0
]
comma_match
;
// shows all matches
wire
[
window_size
-
1
:
0
]
comma_pos
;
// shows the first match
wire
[
window_size
-
1
:
0
]
pcomma_match
;
...
...
@@ -159,7 +138,7 @@ assign RXBYTEREALIGN = RXCOMMADETEN & is_aligned & pointer_set;
always
@
(
posedge
clk
)
begin
is_aligned
<=
rst
|
pointer_set
===
1'bx
|
rxelecidle
?
1'b0
:
~
is_aligned
&
pointer_set
|
is_aligned
;
pointer_latched
<=
rst
?
1'b0
:
pointer_set
?
pointer
:
pointer_latched
;
pointer_latched
<=
rst
?
{
pwidth
{
1'b0
}}
:
pointer_set
?
pointer
:
pointer_latched
;
end
endmodule
This diff is collapsed.
Click to expand it.
gtxe2_channel/gtxe2_chnl_rx_dataiface.v
View file @
fedd4e5b
...
...
@@ -51,23 +51,24 @@ wire empty_rd;
wire
full_wr
;
wire
val_wr
;
wire
val_rd
;
wire
almost_empty_rd
;
always
@
(
posedge
usrclk
)
wordcounter
<=
reset
?
32'h0
:
realign
&
~
(
div
==
0
)
?
3
1'b
1
:
wordcounter
==
(
div
-
1
)
?
32'h0
:
wordcounter
+
1'b1
;
wordcounter
<=
reset
?
32'h0
:
realign
&
~
(
div
==
0
)
?
3
2'd
1
:
wordcounter
==
(
div
-
1
)
?
32'h0
:
wordcounter
+
1'b1
;
genvar
ii
;
generate
for
(
ii
=
0
;
ii
<
div
;
ii
=
ii
+
1
)
begin:
splicing
always
@
(
posedge
usrclk
)
inbuffer_data
[(
ii
+
1
)
*
internal_data_width
-
1
-:
internal_data_width
]
<=
reset
?
{
inter
face
_data_width
{
1'b0
}}
:
((
wordcounter
==
ii
)
|
realign
&
(
0
==
ii
))
?
indata
:
inbuffer_data
[(
ii
+
1
)
*
internal_data_width
-
1
-:
internal_data_width
]
;
inbuffer_data
[(
ii
+
1
)
*
internal_data_width
-
1
-:
internal_data_width
]
<=
reset
?
{
inter
nal
_data_width
{
1'b0
}}
:
((
wordcounter
==
ii
)
|
realign
&
(
0
==
ii
))
?
indata
:
inbuffer_data
[(
ii
+
1
)
*
internal_data_width
-
1
-:
internal_data_width
]
;
end
endgenerate
generate
for
(
ii
=
0
;
ii
<
div
;
ii
=
ii
+
1
)
begin:
splicing2
always
@
(
posedge
usrclk
)
inbuffer_isk
[(
ii
+
1
)
*
internal_isk_width
-
1
-:
internal_isk_width
]
<=
reset
?
{
inter
face
_isk_width
{
1'b0
}}
:
((
wordcounter
==
ii
)
|
realign
&
(
0
==
ii
))
?
inisk
:
inbuffer_isk
[(
ii
+
1
)
*
internal_isk_width
-
1
-:
internal_isk_width
]
;
inbuffer_isk
[(
ii
+
1
)
*
internal_isk_width
-
1
-:
internal_isk_width
]
<=
reset
?
{
inter
nal
_isk_width
{
1'b0
}}
:
((
wordcounter
==
ii
)
|
realign
&
(
0
==
ii
))
?
inisk
:
inbuffer_isk
[(
ii
+
1
)
*
internal_isk_width
-
1
-:
internal_isk_width
]
;
end
endgenerate
...
...
This diff is collapsed.
Click to expand it.
gtxe2_channel/gtxe2_chnl_rx_des.v
View file @
fedd4e5b
...
...
@@ -40,6 +40,7 @@ wire full_wr;
wire
val_wr
;
wire
val_rd
;
wire
bitcounter_limit
;
wire
almost_empty_rd
;
assign
bitcounter_limit
=
trim
?
bitcounter
==
(
trimmed_width
-
1
)
:
bitcounter
==
(
width
-
1
)
;
...
...
This diff is collapsed.
Click to expand it.
gtxe2_channel/gtxe2_chnl_tx.v
View file @
fedd4e5b
...
...
@@ -165,6 +165,7 @@ wire [internal_data_width - 1:0] dataiface_data_out;
wire
[
interface_data_width
-
1
:
0
]
dataiface_data_in
;
//assign dataiface_data_in = {TXCHARDISPMODE[interface_isk_width - 1:0], TXCHARDISPVAL[interface_isk_width - 1:0], TXDATA[iface_databus_width - 1:0]};
genvar
ii
;
localparam
outdiv
=
interface_data_width
/
internal_data_width
;
generate
for
(
ii
=
1
;
ii
<
(
outdiv
+
1
)
;
ii
=
ii
+
1
)
...
...
@@ -201,7 +202,6 @@ dataiface
wire
[
internal_data_width
-
1
:
0
]
polarized_data
;
// invert data (get words as [abdceifghj] after 8/10, each word shall be transmitter in a reverse bit order)
genvar
ii
;
genvar
jj
;
generate
for
(
ii
=
0
;
ii
<
internal_data_width
;
ii
=
ii
+
10
)
...
...
This diff is collapsed.
Click to expand it.
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment