Skip to content

Commit 8960652

Browse files
authored
library/jesd204/ad_ip_jesd204_tpl_adc: Added support for PN7 and PN15 (analogdevicesinc#1019)
1 parent 56290a6 commit 8960652

File tree

6 files changed

+64
-11
lines changed

6 files changed

+64
-11
lines changed

library/jesd204/ad_ip_jesd204_tpl_adc/ad_ip_jesd204_tpl_adc.v

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,9 @@ module ad_ip_jesd204_tpl_adc #(
3838
parameter OCTETS_PER_BEAT = 4,
3939
parameter EN_FRAME_ALIGN = 1,
4040
parameter TWOS_COMPLEMENT = 1,
41-
parameter EXT_SYNC = 0
41+
parameter EXT_SYNC = 0,
42+
parameter PN7_ENABLE = 1,
43+
parameter PN15_ENABLE = 1
4244
) (
4345

4446
// jesd interface
@@ -193,7 +195,9 @@ module ad_ip_jesd204_tpl_adc #(
193195
.TWOS_COMPLEMENT (TWOS_COMPLEMENT),
194196
.DATA_PATH_WIDTH (DATA_PATH_WIDTH),
195197
.DMA_BITS_PER_SAMPLE (DMA_BITS_PER_SAMPLE),
196-
.EXT_SYNC (EXT_SYNC)
198+
.EXT_SYNC (EXT_SYNC),
199+
.PN7_ENABLE (PN7_ENABLE),
200+
.PN15_ENABLE(PN15_ENABLE)
197201
) i_core (
198202
.clk (link_clk),
199203

library/jesd204/ad_ip_jesd204_tpl_adc/ad_ip_jesd204_tpl_adc_channel.v

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,9 @@ module ad_ip_jesd204_tpl_adc_channel #(
2727
parameter CONVERTER_RESOLUTION = 14,
2828
parameter DATA_PATH_WIDTH = 2,
2929
parameter TWOS_COMPLEMENT = 1,
30-
parameter BITS_PER_SAMPLE = 16
30+
parameter BITS_PER_SAMPLE = 16,
31+
parameter PN7_ENABLE = 1,
32+
parameter PN15_ENABLE = 1
3133
) (
3234
input clk,
3335

@@ -50,7 +52,9 @@ module ad_ip_jesd204_tpl_adc_channel #(
5052
ad_ip_jesd204_tpl_adc_pnmon #(
5153
.CONVERTER_RESOLUTION (CONVERTER_RESOLUTION),
5254
.DATA_PATH_WIDTH (DATA_PATH_WIDTH),
53-
.TWOS_COMPLEMENT (TWOS_COMPLEMENT)
55+
.TWOS_COMPLEMENT (TWOS_COMPLEMENT),
56+
.PN7_ENABLE (PN7_ENABLE),
57+
.PN15_ENABLE(PN15_ENABLE)
5458
) i_pnmon (
5559
.clk (clk),
5660
.data (raw_data),

library/jesd204/ad_ip_jesd204_tpl_adc/ad_ip_jesd204_tpl_adc_core.v

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,9 @@ module ad_ip_jesd204_tpl_adc_core #(
3636
parameter LINK_DATA_WIDTH = NUM_LANES * OCTETS_PER_BEAT * 8,
3737
parameter DMA_DATA_WIDTH = DATA_PATH_WIDTH * DMA_BITS_PER_SAMPLE * NUM_CHANNELS,
3838
parameter TWOS_COMPLEMENT = 1,
39-
parameter EXT_SYNC = 0
39+
parameter EXT_SYNC = 0,
40+
parameter PN7_ENABLE = 1,
41+
parameter PN15_ENABLE = 1
4042
) (
4143
input clk,
4244

@@ -119,7 +121,9 @@ module ad_ip_jesd204_tpl_adc_core #(
119121
.DATA_PATH_WIDTH (DATA_PATH_WIDTH),
120122
.CONVERTER_RESOLUTION (CONVERTER_RESOLUTION),
121123
.TWOS_COMPLEMENT (TWOS_COMPLEMENT),
122-
.BITS_PER_SAMPLE (DMA_BITS_PER_SAMPLE)
124+
.BITS_PER_SAMPLE (DMA_BITS_PER_SAMPLE),
125+
.PN7_ENABLE (PN7_ENABLE),
126+
.PN15_ENABLE(PN15_ENABLE)
123127
) i_channel (
124128
.clk (clk),
125129

library/jesd204/ad_ip_jesd204_tpl_adc/ad_ip_jesd204_tpl_adc_hw.tcl

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -167,7 +167,14 @@ ad_ip_parameter TWOS_COMPLEMENT boolean 1 true [list \
167167
DISPLAY_NAME "Twos Complement" \
168168
GROUP $group \
169169
]
170-
170+
ad_ip_parameter PN7_ENABLE boolean 1 true [list \
171+
DISPLAY_NAME "Enable PN7" \
172+
GROUP $group \
173+
]
174+
ad_ip_parameter PN15_ENABLE boolean 1 true [list \
175+
DISPLAY_NAME "Enable PN15" \
176+
GROUP $group \
177+
]
171178

172179
# axi4 slave
173180

library/jesd204/ad_ip_jesd204_tpl_adc/ad_ip_jesd204_tpl_adc_ip.tcl

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ source ../../../scripts/adi_env.tcl
2525
source $ad_hdl_dir/library/scripts/adi_ip_xilinx.tcl
2626

2727
adi_ip_create ad_ip_jesd204_tpl_adc
28+
2829
adi_ip_files ad_ip_jesd204_tpl_adc [list \
2930
"$ad_hdl_dir/library/common/ad_rst.v" \
3031
"$ad_hdl_dir/library/common/ad_perfect_shuffle.v" \
@@ -134,6 +135,8 @@ set i 0
134135
foreach {k v w} {
135136
"TWOS_COMPLEMENT" "Use twos complement" "checkBox" \
136137
"EXT_SYNC" "Enable external sync" "checkBox" \
138+
"PN7_ENABLE" "Enable PN7" "checkBox" \
139+
"PN15_ENABLE" "Enable PN15" "checkBox" \
137140
} { \
138141
set p [ipgui::get_guiparamspec -name $k -component $cc]
139142
ipgui::move_param -component $cc -order $i $p -parent $datapath_group

library/jesd204/ad_ip_jesd204_tpl_adc/ad_ip_jesd204_tpl_adc_pnmon.v

Lines changed: 35 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,9 @@
2626
module ad_ip_jesd204_tpl_adc_pnmon #(
2727
parameter CONVERTER_RESOLUTION = 16,
2828
parameter DATA_PATH_WIDTH = 1,
29-
parameter TWOS_COMPLEMENT = 1
29+
parameter TWOS_COMPLEMENT = 1,
30+
parameter PN7_ENABLE = 1,
31+
parameter PN15_ENABLE = 1
3032
) (
3133
input clk,
3234

@@ -37,7 +39,7 @@ module ad_ip_jesd204_tpl_adc_pnmon #(
3739
output pn_oos,
3840
output pn_err,
3941

40-
// processor interface PN9 (0x0), PN23 (0x1)
42+
// processor interface PN9 (0x0), PN23 (0x1), PN7 (0x4), PN15 (0x5)
4143
input [3:0] pn_seq_sel
4244
);
4345

@@ -58,6 +60,10 @@ module ad_ip_jesd204_tpl_adc_pnmon #(
5860
wire [DW+23:0] full_state_pn23;
5961
wire [DW:0] pn9;
6062
wire [DW+9:0] full_state_pn9;
63+
wire [DW:0] pn7;
64+
wire [DW+7:0] full_state_pn7;
65+
wire [DW:0] pn15;
66+
wire [DW+15:0] full_state_pn15;
6167

6268
// pn sequence select
6369
generate if (PN_W > DW) begin
@@ -98,12 +104,37 @@ module ad_ip_jesd204_tpl_adc_pnmon #(
98104

99105
always @(posedge clk) begin
100106
if (pn_seq_sel == 4'd0) begin
101-
pn_data_pn <= PN_W > DW ? {pn_data_pn[PN_W-DW-1:0],pn9} : pn9;
102-
end else begin
107+
pn_data_pn <= PN_W > DW ? {pn_data_pn[PN_W-DW-1:0],pn9} : pn9;
108+
end else if (pn_seq_sel == 4'd1) begin
103109
pn_data_pn <= PN_W > DW ? {pn_data_pn[PN_W-DW-1:0],pn23} : pn23;
110+
end else if (pn_seq_sel == 4'd4) begin
111+
pn_data_pn <= PN_W > DW ? {pn_data_pn[PN_W-DW-1:0],pn7} : pn7;
112+
end else if (pn_seq_sel == 4'd5) begin
113+
pn_data_pn <= PN_W > DW ? {pn_data_pn[PN_W-DW-1:0],pn15} : pn15;
104114
end
105115
end
106116

117+
// specific PN sequences
118+
119+
generate
120+
if(PN7_ENABLE == 'b1) begin
121+
// PN7 x^7 + x^6 + 1
122+
assign pn7 = full_state_pn7[7+:DW+1] ^ full_state_pn7[6+:DW+1];
123+
assign full_state_pn7 = {pn_data_pn_s[6:0],pn7};
124+
end else begin
125+
assign pn7 = 'd0;
126+
assign full_state_pn7 = 'd0;
127+
end
128+
if(PN15_ENABLE == 'b1) begin
129+
// PN15 x^15 + x^14 + 1
130+
assign pn15 = full_state_pn15[15+:DW+1] ^ full_state_pn15[14+:DW+1];
131+
assign full_state_pn15 = {pn_data_pn_s[14:0],pn15};
132+
end else begin
133+
assign pn15 = 'd0;
134+
assign full_state_pn15 = 'd0;
135+
end
136+
endgenerate
137+
107138
// pn oos & pn err
108139

109140
ad_pnmon #(

0 commit comments

Comments
 (0)