Add CN0363 project

Add support for the CN0363 (colorimeter) board connected to the ZED board.

Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
main
Lars-Peter Clausen 2015-04-01 12:13:49 +02:00
parent d43ba44d0f
commit c53f8c15ee
15 changed files with 2660 additions and 3 deletions

View File

@ -39,6 +39,8 @@ clean:
make -C axi_mc_current_monitor clean
make -C axi_mc_speed clean
make -C axi_spdif_tx clean
make -C cn0363/cn0363_dma_sequencer clean
make -C cn0363/cn0363_phase_data_sync clean
make -C controllerperipheralhdladi_pcore clean
make -C cordic_demod clean
make -C spi_engine/axi_spi_engine clean
@ -97,6 +99,8 @@ lib:
-make -C axi_mc_current_monitor
-make -C axi_mc_speed
-make -C axi_spdif_tx
-make -C cn0363/cn0363_dma_sequencer
-make -C cn0363/cn0363_phase_data_sync
-make -C controllerperipheralhdladi_pcore
-make -C cordic_demod
-make -C spi_engine/axi_spi_engine

View File

@ -0,0 +1,42 @@
####################################################################################
####################################################################################
## Copyright 2011(c) Analog Devices, Inc.
## Auto-generated, do not modify!
####################################################################################
####################################################################################
M_DEPS := cn0363_dma_sequencer_ip.tcl
M_DEPS += ../../scripts/adi_env.tcl
M_DEPS += ../../scripts/adi_ip.tcl
M_DEPS += cn0363_dma_sequencer.v
M_VIVADO := vivado -mode batch -source
M_FLIST := *.cache
M_FLIST += *.data
M_FLIST += *.xpr
M_FLIST += *.log
M_FLIST += component.xml
M_FLIST += *.jou
M_FLIST += xgui
M_FLIST += .Xil
.PHONY: all clean clean-all
all: cn0363_dma_sequencer.xpr
clean:clean-all
clean-all:
rm -rf $(M_FLIST)
cn0363_dma_sequencer.xpr: $(M_DEPS)
rm -rf $(M_FLIST)
$(M_VIVADO) cn0363_dma_sequencer_ip.tcl >> cn0363_dma_sequencer_ip.log 2>&1
####################################################################################
####################################################################################

View File

@ -0,0 +1,160 @@
module cn0363_dma_sequencer (
input clk,
input resetn,
input [31:0] phase,
input phase_valid,
output reg phase_ready,
input [23:0] data,
input data_valid,
output reg data_ready,
input [31:0] data_filtered,
input data_filtered_valid,
output reg data_filtered_ready,
input [31:0] i_q,
input i_q_valid,
output reg i_q_ready,
input [31:0] i_q_filtered,
input i_q_filtered_valid,
output reg i_q_filtered_ready,
output overflow,
output reg [31:0] dma_wr_data,
output reg dma_wr_en,
output reg dma_wr_sync,
input dma_wr_overflow,
input dma_wr_xfer_req,
input [13:0] channel_enable,
output processing_resetn
);
reg [3:0] count = 'h00;
assign overflow = dma_wr_overflow;
assign processing_resetn = dma_wr_xfer_req;
always @(posedge clk) begin
if (processing_resetn == 1'b0) begin
count <= 'h0;
end else begin
case (count)
'h0: if (phase_valid) count <= count + 1;
'h1: if (data_valid) count <= count + 1;
'h2: if (data_filtered_valid) count <= count + 1;
'h3: if (i_q_valid) count <= count + 1;
'h4: if (i_q_valid) count <= count + 1;
'h5: if (i_q_filtered_valid) count <= count + 1;
'h6: if (i_q_filtered_valid) count <= count + 1;
'h7: if (phase_valid) count <= count + 1;
'h8: if (data_valid) count <= count + 1;
'h9: if (data_filtered_valid) count <= count + 1;
'ha: if (i_q_valid) count <= count + 1;
'hb: if (i_q_valid) count <= count + 1;
'hc: if (i_q_filtered_valid) count <= count + 1;
'hd: if (i_q_filtered_valid) count <= 'h00;
endcase
end
end
always @(posedge clk) begin
case (count)
'h0: dma_wr_data <= phase;
'h1: dma_wr_data <= {8'h00,data[23:0]};
'h2: dma_wr_data <= data_filtered;
'h3: dma_wr_data <= i_q;
'h4: dma_wr_data <= i_q;
'h5: dma_wr_data <= i_q_filtered;
'h6: dma_wr_data <= i_q_filtered;
'h7: dma_wr_data <= phase;
'h8: dma_wr_data <= {8'h00,data[23:0]};
'h9: dma_wr_data <= data_filtered;
'ha: dma_wr_data <= i_q;
'hb: dma_wr_data <= i_q;
'hc: dma_wr_data <= i_q_filtered;
'hd: dma_wr_data <= i_q_filtered;
endcase
end
always @(posedge clk) begin
if (processing_resetn == 1'b0 || channel_enable[count] == 1'b0) begin
dma_wr_en <= 1'b0;
end else begin
case (count)
'h0: dma_wr_en <= phase_valid;
'h1: dma_wr_en <= data_valid;
'h2: dma_wr_en <= data_filtered_valid;
'h3: dma_wr_en <= i_q_valid;
'h4: dma_wr_en <= i_q_valid;
'h5: dma_wr_en <= i_q_filtered_valid;
'h6: dma_wr_en <= i_q_filtered_valid;
'h7: dma_wr_en <= phase_valid;
'h8: dma_wr_en <= data_valid;
'h9: dma_wr_en <= data_filtered_valid;
'ha: dma_wr_en <= i_q_valid;
'hb: dma_wr_en <= i_q_valid;
'hc: dma_wr_en <= i_q_filtered_valid;
'hd: dma_wr_en <= i_q_filtered_valid;
endcase
end
end
always @(posedge clk) begin
if (count == 'h00) begin
dma_wr_sync <= 1'b1;
end else if (dma_wr_en == 1'b1) begin
dma_wr_sync = 1'b0;
end
end
always @(*) begin
case (count)
'h0: phase_ready <= 1'b1;
'h7: phase_ready <= 1'b1;
default: phase_ready <= 1'b0;
endcase
end
always @(*) begin
case (count)
'h1: data_ready <= 1'b1;
'h8: data_ready <= 1'b1;
default: data_ready <= 1'b0;
endcase
end
always @(*) begin
case (count)
'h2: data_filtered_ready <= 1'b1;
'h9: data_filtered_ready <= 1'b1;
default: data_filtered_ready <= 1'b0;
endcase
end
always @(*) begin
case (count)
'h3: i_q_ready <= 1'b1;
'h4: i_q_ready <= 1'b1;
'ha: i_q_ready <= 1'b1;
'hb: i_q_ready <= 1'b1;
default: i_q_ready <= 1'b0;
endcase
end
always @(*) begin
case (count)
'h5: i_q_filtered_ready <= 1'b1;
'h6: i_q_filtered_ready <= 1'b1;
'hc: i_q_filtered_ready <= 1'b1;
'hd: i_q_filtered_ready <= 1'b1;
default: i_q_filtered_ready <= 1'b0;
endcase
end
endmodule

View File

@ -0,0 +1,72 @@
source ../../scripts/adi_env.tcl
source $ad_hdl_dir/library/scripts/adi_ip.tcl
adi_ip_create cn0363_dma_sequencer
adi_ip_files cn0363_dma_sequencer [list \
"cn0363_dma_sequencer.v"
]
adi_ip_properties_lite cn0363_dma_sequencer
adi_add_bus "phase" "slave" \
"xilinx.com:interface:axis_rtl:1.0" \
"xilinx.com:interface:axis:1.0" \
{
{"phase_valid" "TVALID"} \
{"phase_ready" "TREADY"} \
{"phase" "TDATA"} \
}
adi_add_bus "data" "slave" \
"xilinx.com:interface:axis_rtl:1.0" \
"xilinx.com:interface:axis:1.0" \
{
{"data_valid" "TVALID"} \
{"data_ready" "TREADY"} \
{"data" "TDATA"} \
}
adi_add_bus "data_filtered" "slave" \
"xilinx.com:interface:axis_rtl:1.0" \
"xilinx.com:interface:axis:1.0" \
{
{"data_filtered_valid" "TVALID"} \
{"data_filtered_ready" "TREADY"} \
{"data_filtered" "TDATA"} \
}
adi_add_bus "i_q" "slave" \
"xilinx.com:interface:axis_rtl:1.0" \
"xilinx.com:interface:axis:1.0" \
{
{"i_q_valid" "TVALID"} \
{"i_q_ready" "TREADY"} \
{"i_q" "TDATA"} \
}
adi_add_bus "i_q_filtered" "slave" \
"xilinx.com:interface:axis_rtl:1.0" \
"xilinx.com:interface:axis:1.0" \
{
{"i_q_filtered_valid" "TVALID"} \
{"i_q_filtered_ready" "TREADY"} \
{"i_q_filtered" "TDATA"} \
}
adi_add_bus "dma_wr" "master" \
"analog.com:interface:fifo_wr_rtl:1.0" \
"analog.com:interface:fifo_wr:1.0" \
{
{"dma_wr_en" "EN"} \
{"dma_wr_sync" "SYNC"} \
{"dma_wr_data" "DATA"} \
{"dma_wr_overflow" "OVERFLOW"} \
{"dma_wr_xfer_req" "XFER_REQ"} \
}
adi_add_bus_clock "clk" "phase:data:data_filtered:i_q:i_q_filtered:dma_wr" "resetn:processing_resetn"
ipx::save_core [ipx::current_core]

View File

@ -0,0 +1,42 @@
####################################################################################
####################################################################################
## Copyright 2011(c) Analog Devices, Inc.
## Auto-generated, do not modify!
####################################################################################
####################################################################################
M_DEPS := cn0363_phase_data_sync_ip.tcl
M_DEPS += ../../scripts/adi_env.tcl
M_DEPS += ../../scripts/adi_ip.tcl
M_DEPS += cn0363_phase_data_sync.v
M_VIVADO := vivado -mode batch -source
M_FLIST := *.cache
M_FLIST += *.data
M_FLIST += *.xpr
M_FLIST += *.log
M_FLIST += component.xml
M_FLIST += *.jou
M_FLIST += xgui
M_FLIST += .Xil
.PHONY: all clean clean-all
all: cn0363_phase_data_sync.xpr
clean:clean-all
clean-all:
rm -rf $(M_FLIST)
cn0363_phase_data_sync.xpr: $(M_DEPS)
rm -rf $(M_FLIST)
$(M_VIVADO) cn0363_phase_data_sync_ip.tcl >> cn0363_phase_data_sync_ip.log 2>&1
####################################################################################
####################################################################################

View File

@ -0,0 +1,131 @@
module cn0363_phase_data_sync (
input clk,
input resetn,
input processing_resetn,
output s_axis_sample_ready,
input s_axis_sample_valid,
input [7:0] s_axis_sample_data,
input sample_has_stat,
input conv_done,
input [31:0] phase,
output reg m_axis_sample_valid,
input m_axis_sample_ready,
output [23:0] m_axis_sample_data,
output reg m_axis_phase_valid,
input m_axis_phase_ready,
output [31:0] m_axis_phase_data,
output reg overflow
);
reg [1:0] data_counter = 'h00;
reg [31:0] phase_hold = 'h00;
reg [23:0] sample_hold = 'h00;
reg sample_hold_valid = 1'b0;
reg conv_done_d1 = 1'b0;
reg synced = 1'b0;
wire sync;
/* The ADC will do conversions regardless of whether the pipeline is ready or
not. So we'll always accept new samples and assert overflow if necessary if
the pipeline is not ready. */
assign s_axis_sample_ready = 1'b1;
// Conversion from offset binary to signed on data
assign m_axis_sample_data = {~sample_hold[23],sample_hold[22:0]};
assign m_axis_phase_data = phase_hold;
always @(posedge clk) begin
if (conv_done_d1 == 1'b0 && conv_done == 1'b1) begin
// Is the processing pipeline ready to accept data?
if (m_axis_sample_valid | m_axis_phase_valid | ~processing_resetn) begin
overflow <= 1'b1;
end else begin
phase_hold <= phase;
overflow <= 1'b0;
end
end else begin
overflow <= 1'b0;
end
conv_done_d1 <= conv_done;
end
always @(posedge clk) begin
if (processing_resetn == 1'b0) begin
m_axis_phase_valid <= 1'b0;
m_axis_sample_valid <= 1'b0;
end else begin
/* Data and phase become valid once we have both */
if (sample_hold_valid == 1'b1) begin
m_axis_phase_valid <= 1'b1;
m_axis_sample_valid <= 1'b1;
end else begin
if (m_axis_phase_ready == 1'b1) begin
m_axis_phase_valid <= 1'b0;
end
if (m_axis_sample_ready == 1'b1) begin
m_axis_sample_valid <= 1'b0;
end
end
end
end
/* If the STAT register is included in the sample we get 4 bytes per sample and
* are able to detect channel swaps and synchronize the first output sample to
* the first channel. If the STAT register is not included we only get 3 bytes
* per sample and rely on that the first sample will always be from the first
* channel */
always @(posedge clk) begin
sample_hold_valid <= 1'b0;
if (sample_has_stat == 1'b0) begin
if (s_axis_sample_valid == 1'b1 && data_counter == 2'h2) begin
sample_hold_valid <= 1'b1;
end
end else begin
if (s_axis_sample_valid == 1'b1 && data_counter == 2'h3 &&
(sync == 1'b1 || synced == 1'b1)) begin
sample_hold_valid <= 1'b1;
end
end
end
always @(posedge clk) begin
if (s_axis_sample_valid == 1'b1 && data_counter != 2'h3) begin
sample_hold <= {sample_hold[15:0],s_axis_sample_data};
end
end
always @(posedge clk) begin
if (s_axis_sample_valid == 1'b1) begin
if (data_counter == 2'h2 && sample_has_stat == 1'b0) begin
data_counter <= 2'h0;
end else begin
data_counter <= data_counter + 1'b1;
end
end
end
assign sync = s_axis_sample_data[3:0] == 'h00 && data_counter == 'h3;
always @(posedge clk) begin
if (processing_resetn == 1'b0) begin
synced <= ~sample_has_stat;
end else begin
if (s_axis_sample_valid == 1'b1 && sync == 1'b1) begin
synced <= 1'b1;
end
end
end
endmodule

View File

@ -0,0 +1,41 @@
source ../../scripts/adi_env.tcl
source $ad_hdl_dir/library/scripts/adi_ip.tcl
adi_ip_create cn0363_phase_data_sync
adi_ip_files cn0363_phase_data_sync [list \
"cn0363_phase_data_sync.v"
]
adi_ip_properties_lite cn0363_phase_data_sync
adi_add_bus "S_AXIS_SAMPLE" "slave" \
"xilinx.com:interface:axis_rtl:1.0" \
"xilinx.com:interface:axis:1.0" \
{
{"s_axis_sample_valid" "TVALID"} \
{"s_axis_sample_ready" "TREADY"} \
{"s_axis_sample_data" "TDATA"} \
}
adi_add_bus "M_AXIS_SAMPLE" "master" \
"xilinx.com:interface:axis_rtl:1.0" \
"xilinx.com:interface:axis:1.0" \
{
{"m_axis_sample_valid" "TVALID"} \
{"m_axis_sample_ready" "TREADY"} \
{"m_axis_sample_data" "TDATA"} \
}
adi_add_bus "M_AXIS_PHASE" "master" \
"xilinx.com:interface:axis_rtl:1.0" \
"xilinx.com:interface:axis:1.0" \
{
{"m_axis_phase_valid" "TVALID"} \
{"m_axis_phase_ready" "TREADY"} \
{"m_axis_phase_data" "TDATA"} \
}
adi_add_bus_clock "clk" "S_AXIS_SAMPLE:M_AXIS_SAMPLE:M_AXIS_PHASE" "resetn"
ipx::save_core [ipx::current_core]

View File

@ -15,6 +15,7 @@ all:
-make -C adv7511 all
-make -C cftl_cip all
-make -C cftl_std all
-make -C cn0363 all
-make -C daq1 all
-make -C daq2 all
-make -C daq3 all
@ -43,6 +44,7 @@ clean:
make -C adv7511 clean
make -C cftl_cip clean
make -C cftl_std clean
make -C cn0363 clean
make -C daq1 clean
make -C daq2 clean
make -C daq3 clean
@ -71,6 +73,7 @@ clean-all:
make -C adv7511 clean-all
make -C cftl_cip clean-all
make -C cftl_std clean-all
make -C cn0363 clean-all
make -C daq1 clean-all
make -C daq2 clean-all
make -C daq3 clean-all

View File

@ -0,0 +1,520 @@
# Created by Octave 3.6.2, Tue Apr 07 15:22:27 2015 CEST <lars@lars-adi-laptop>
# name: hpf
# type: matrix
# rows: 513
# columns: 1
3.125005230091648e-06
1.272922340541526e-05
2.228713693195711e-05
3.167779216011667e-05
4.077961244411042e-05
4.947137642943441e-05
5.763325048199676e-05
6.514788075089597e-05
7.190154838608252e-05
7.778538895546582e-05
8.269667417994694e-05
8.654015080185192e-05
8.922942780916198e-05
9.068839945428162e-05
9.08526876417122e-05
8.967108343167956e-05
8.710696373934456e-05
8.31396559266987e-05
7.776572001057323e-05
7.10001157651276e-05
6.287722019308129e-05
5.345165977858958e-05
4.279892170430391e-05
3.101570888773e-05
1.822000532066107e-05
4.550820812408257e-06
-9.832412147642556e-06
-2.475081209436057e-05
-4.000741000162233e-05
-5.538890912794365e-05
-7.066784679851554e-05
-8.560515373469779e-05
-9.99530981024648e-05
-0.0001134585926214486
-0.0001258668340284109
-0.0001369252351103039
-0.0001463876006107109
-0.0001540184897749483
-0.0001595977003420989
-0.0001629248016241761
-0.0001638236381350631
-0.0001621467202360717
-0.0001577794146271059
-0.0001506438453893505
-0.000140702415810303
-0.0001279608625005721
-0.0001124707564189372
-9.433137039859016e-05
-7.369083961788524e-05
-5.074655014992576e-05
-2.574470118459376e-05
1.021001367446387e-06
2.921154855695993e-05
5.844574309182635e-05
8.83042227368199e-05
0.0001183343732310121
0.0001480560941027056
0.00017696836307978
0.0002045565271902877
0.0002303002314649907
0.0002536818797387624
0.0002741955067508388
0.0002913559269085423
0.0003047080130365351
0.0003138359484954938
0.0003183722885058195
0.0003180066616061862
0.0003124939401271251
0.0003016617095355854
0.0002854168706271628
0.000263751215874352
0.0002367458317905825
0.0002045741928902602
0.0001675038296030595
0.0001258964721636327
8.02065948128383e-05
3.097830932236822e-05
-2.115941645489572e-05
-7.549921099837507e-05
-0.0001312633890032865
-0.0001876136150627972
-0.0002436620471188746
-0.0002984838356482688
-0.0003511308254522837
-0.0004006462792827283
-0.0004460804169125378
-0.000486506540183834
-0.0005210374945492769
-0.0005488422011396879
-0.0005691619808723867
-0.0005813263839361632
-0.0005847682344632428
-0.0005790376015678585
-0.0005638144143596582
-0.0005389194501093796
-0.0005043234414478701
-0.0004601540702210987
-0.0004067006422150833
-0.0003444162681259722
-0.0002739174115124618
-0.0001959807035748319
-0.0001115369669204825
-2.166243538897479e-05
7.243279615690694e-05
0.0001694190101474898
0.0002678636623760837
0.0003662505574471283
0.0004630011784455728
0.000556497900968934
0.0006451087798755067
0.0007272135590392522
0.0008012305208387391
0.000865643763768108
0.0009190304741012456
0.0009600877415469292
0.0009876584597926978
0.001000755851137096
0.0009985861603306616
0.0009805690764431024
0.0009463554630791427
0.0008958420064800135
0.000829182427740599
0.000746794949180355
0.0006493657553356397
0.0005378482454722772
0.0004134579362112905
0.000277662938968418
0.0001321700064808016
-2.109378530311862e-05
-0.0001800035803687027
-0.0003422632977266256
-0.0005054359129148229
-0.0006669771101848824
-0.0008242718829334016
-0.0009746735978983282
-0.001115544982429431
-0.001244300444855416
-0.001358449096621753
-0.001455637812376969
-0.00153369364133737
-0.00159066487072372
-0.00162486004035257
-0.00163488421693376
-0.001619671857457259
-0.001578515623252026
-0.001511090549689093
-0.001417473030717752
-0.001298154141920757
-0.001154046899825392
-0.0009864871379123442
-0.0007972277700615966
-0.0005884263088514231
-0.0003626256078366379
-0.0001227279022125844
0.0001280376704367039
0.0003861537799360087
0.0006478594481216446
0.0009091999291447866
0.001166081327714818
0.001414329265246448
0.001649750819594216
0.001868198889304729
0.002065638069512015
0.002238211075031133
0.00238230470799775
0.00249461434350539
0.002572205897856948
0.002612574250807783
0.002613697115840601
0.002574083391145649
0.002492815078407197
0.002369581926295045
0.002204708040057977
0.001999169796903386
0.001754604517780124
0.00147330946839616
0.001158230894232211
0.0008129429342058163
0.0004416164035860973
4.897758671114303e-05
-0.0003597426681351423
-0.0007788691078999633
-0.00120235089542199
-0.001623838355148398
-0.002036766770808102
-0.002434446234645613
-0.0028101564320049
-0.003157245142691349
-0.003469229153445804
-0.003739896205660857
-0.003963406550560174
-0.004134392651607886
-0.004248055561811812
-0.004300256512443262
-0.004287602279830854
-0.004207522948301982
-0.004058340759735648
-0.003839328832932692
-0.003550758648172448
-0.003193935322674972
-0.002771219849704404
-0.002286037635939587
-0.001742872846463814
-0.00114724825202435
-0.0005056904666314446
0.0001743193375068106
0.0008844089490174293
0.001615392380013163
0.002357360183266049
0.00309978194183994
0.003831619864751356
0.004541452249209853
0.005217605410943741
0.005848292541506266
0.006421757827543688
0.006926424063816506
0.00735104191105742
0.007684838892986746
0.007917666195128625
0.008040141322278479
0.008043784692005907
0.007921148288511141
0.007665934574189153
0.007273103954721745
0.006738969216376796
0.006061275500050979
0.005239264543715391
0.004273722111261321
0.003167007728954381
0.001923066068186815
0.0005474195421422539
-0.0009528580786604669
-0.002569186984358145
-0.004291545285057392
-0.006108551075948811
-0.008007561834025704
-0.009974790141468893
-0.01199543451114901
-0.01405382388429277
-0.01613357418205645
-0.01821775512422723
-0.02028906538195169
-0.02233001400939951
-0.02432310600341163
-0.02625102977190857
-0.0280968442522217
-0.02984416341024535
-0.03147733587067356
-0.03298161747745753
-0.03434333466146606
-0.03555003659821667
-0.03659063427114725
-0.03745552471351821
-0.0381366988826302
-0.03862783182124412
-0.03892435398024356
0.960978170818749
-0.03892435398024355
-0.03862783182124412
-0.0381366988826302
-0.03745552471351822
-0.03659063427114725
-0.03555003659821667
-0.03434333466146606
-0.03298161747745753
-0.03147733587067356
-0.02984416341024535
-0.0280968442522217
-0.02625102977190857
-0.02432310600341163
-0.02233001400939951
-0.0202890653819517
-0.01821775512422723
-0.01613357418205645
-0.01405382388429278
-0.01199543451114901
-0.009974790141468893
-0.008007561834025706
-0.006108551075948813
-0.004291545285057393
-0.002569186984358146
-0.0009528580786604681
0.0005474195421422553
0.001923066068186814
0.003167007728954382
0.004273722111261321
0.00523926454371539
0.006061275500050979
0.006738969216376797
0.007273103954721746
0.007665934574189151
0.007921148288511145
0.008043784692005911
0.008040141322278481
0.007917666195128624
0.007684838892986746
0.00735104191105742
0.006926424063816509
0.00642175782754369
0.005848292541506266
0.005217605410943741
0.004541452249209852
0.003831619864751356
0.00309978194183994
0.002357360183266048
0.001615392380013164
0.0008844089490174289
0.0001743193375068114
-0.0005056904666314445
-0.001147248252024348
-0.001742872846463813
-0.002286037635939588
-0.002771219849704404
-0.003193935322674973
-0.003550758648172445
-0.003839328832932695
-0.004058340759735646
-0.004207522948301984
-0.004287602279830852
-0.00430025651244326
-0.004248055561811813
-0.004134392651607885
-0.003963406550560174
-0.003739896205660857
-0.003469229153445805
-0.003157245142691347
-0.002810156432004902
-0.002434446234645613
-0.002036766770808102
-0.001623838355148398
-0.001202350895421991
-0.0007788691078999633
-0.0003597426681351431
4.897758671114329e-05
0.0004416164035860963
0.0008129429342058163
0.001158230894232211
0.001473309468396159
0.001754604517780124
0.001999169796903387
0.002204708040057977
0.002369581926295047
0.002492815078407196
0.002574083391145648
0.0026136971158406
0.002612574250807783
0.002572205897856949
0.00249461434350539
0.002382304707997752
0.002238211075031133
0.002065638069512017
0.001868198889304729
0.001649750819594217
0.001414329265246448
0.001166081327714817
0.0009091999291447868
0.0006478594481216453
0.0003861537799360089
0.0001280376704367042
-0.0001227279022125848
-0.0003626256078366383
-0.0005884263088514236
-0.0007972277700615969
-0.0009864871379123437
-0.001154046899825392
-0.001298154141920757
-0.001417473030717752
-0.001511090549689093
-0.001578515623252026
-0.001619671857457259
-0.001634884216933761
-0.001624860040352571
-0.00159066487072372
-0.00153369364133737
-0.001455637812376968
-0.001358449096621754
-0.001244300444855416
-0.001115544982429432
-0.0009746735978983282
-0.000824271882933401
-0.0006669771101848829
-0.0005054359129148226
-0.0003422632977266253
-0.0001800035803687026
-2.109378530311863e-05
0.0001321700064808015
0.0002776629389684176
0.0004134579362112899
0.0005378482454722768
0.0006493657553356388
0.0007467949491803551
0.0008291824277405987
0.0008958420064800141
0.0009463554630791429
0.0009805690764431031
0.0009985861603306612
0.001000755851137095
0.0009876584597926974
0.0009600877415469287
0.000919030474101246
0.0008656437637681078
0.0008012305208387395
0.0007272135590392521
0.000645108779875507
0.000556497900968934
0.0004630011784455728
0.000366250557447128
0.0002678636623760838
0.0001694190101474897
7.243279615690695e-05
-2.166243538897482e-05
-0.0001115369669204827
-0.000195980703574832
-0.0002739174115124617
-0.0003444162681259722
-0.0004067006422150834
-0.0004601540702210986
-0.0005043234414478702
-0.0005389194501093795
-0.0005638144143596589
-0.0005790376015678585
-0.0005847682344632429
-0.0005813263839361631
-0.0005691619808723874
-0.0005488422011396883
-0.0005210374945492773
-0.0004865065401838346
-0.0004460804169125375
-0.0004006462792827283
-0.0003511308254522837
-0.0002984838356482691
-0.0002436620471188746
-0.0001876136150627973
-0.0001312633890032869
-7.549921099837517e-05
-2.11594164548956e-05
3.097830932236811e-05
8.020659481283845e-05
0.0001258964721636328
0.0001675038296030591
0.0002045741928902604
0.0002367458317905824
0.0002637512158743521
0.0002854168706271633
0.0003016617095355856
0.0003124939401271255
0.0003180066616061862
0.0003183722885058197
0.0003138359484954939
0.0003047080130365348
0.0002913559269085423
0.0002741955067508387
0.0002536818797387624
0.0002303002314649904
0.0002045565271902877
0.0001769683630797799
0.0001480560941027055
0.0001183343732310123
8.830422273682008e-05
5.844574309182661e-05
2.921154855695988e-05
1.021001367446466e-06
-2.574470118459365e-05
-5.074655014992584e-05
-7.369083961788525e-05
-9.433137039859023e-05
-0.0001124707564189372
-0.0001279608625005723
-0.000140702415810303
-0.0001506438453893508
-0.0001577794146271058
-0.0001621467202360716
-0.0001638236381350631
-0.0001629248016241757
-0.0001595977003420991
-0.0001540184897749484
-0.0001463876006107111
-0.000136925235110304
-0.0001258668340284108
-0.0001134585926214485
-9.99530981024649e-05
-8.560515373469783e-05
-7.066784679851552e-05
-5.538890912794357e-05
-4.000741000162236e-05
-2.475081209436051e-05
-9.832412147642465e-06
4.550820812408254e-06
1.822000532066115e-05
3.101570888773004e-05
4.279892170430388e-05
5.345165977858958e-05
6.287722019308122e-05
7.10001157651276e-05
7.77657200105732e-05
8.313965592669855e-05
8.710696373934461e-05
8.967108343167962e-05
9.085268764171233e-05
9.068839945428176e-05
8.922942780916201e-05
8.65401508018519e-05
8.269667417994688e-05
7.778538895546572e-05
7.190154838608245e-05
6.514788075089595e-05
5.763325048199691e-05
4.947137642943435e-05
4.077961244411042e-05
3.167779216011675e-05
2.228713693195696e-05
1.272922340541508e-05
3.125005230091648e-06

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,300 @@
source $ad_hdl_dir/projects/common/zed/zed_system_bd.tcl
proc load_fir_filter_vector {filter_file} {
set fp [open $filter_file r]
set data [split [read $fp] "\n"]
set filter ""
close $fp
foreach line $data {
set line [string trim $line]
if {[string equal -length 1 $line "#"] || $line eq ""} {
continue
}
if {$filter ne ""} {
append filter ","
}
append filter $line
}
return $filter
}
set_property -dict [list CONFIG.PCW_GPIO_EMIO_GPIO_IO {35}] $sys_ps7
set_property LEFT 34 [get_bd_ports GPIO_I]
set_property LEFT 34 [get_bd_ports GPIO_O]
set_property LEFT 34 [get_bd_ports GPIO_T]
set axi_dma [create_bd_cell -type ip -vlnv analog.com:user:axi_dmac:1.0 axi_dma]
set_property -dict [list \
CONFIG.C_FIFO_SIZE 2 \
CONFIG.C_DMA_TYPE_SRC 2 \
CONFIG.C_DMA_TYPE_DEST 0 \
CONFIG.C_CYCLIC 0 \
CONFIG.C_SYNC_TRANSFER_START 1 \
CONFIG.C_AXI_SLICE_SRC 0 \
CONFIG.C_AXI_SLICE_DEST 0 \
CONFIG.C_CLKS_ASYNC_DEST_REQ 0 \
CONFIG.C_CLKS_ASYNC_SRC_DEST 0 \
CONFIG.C_CLKS_ASYNC_REQ_SRC 0 \
CONFIG.C_2D_TRANSFER 0 \
CONFIG.C_DMA_DATA_WIDTH_SRC 32 \
CONFIG.C_DMA_DATA_WIDTH_DEST 64 \
CONFIG.C_DMA_AXI_PROTOCOL_DEST 1 \
] $axi_dma
# Create SPI engine controller with offload
create_bd_cell -type hier spi
current_bd_instance /spi
create_bd_pin -dir I -type clk clk
create_bd_pin -dir I -type rst resetn
create_bd_pin -dir O conv_done
create_bd_pin -dir O irq
create_bd_intf_pin -mode Master -vlnv analog.com:interface:spi_master_rtl:1.0 m_spi
create_bd_intf_pin -mode Master -vlnv xilinx.com:interface:axis_rtl:1.0 M_AXIS_SAMPLE
set spi_engine [create_bd_cell -type ip -vlnv analog.com:user:spi_engine_execution:1.0 execution]
set axi_spi_engine [create_bd_cell -type ip -vlnv analog.com:user:axi_spi_engine:1.0 axi]
set spi_engine_offload [create_bd_cell -type ip -vlnv analog.com:user:spi_engine_offload:1.0 offload]
set spi_engine_interconnect [create_bd_cell -type ip -vlnv analog.com:user:spi_engine_interconnect:1.0 interconnect]
set util_sigma_delta_spi [create_bd_cell -type ip -vlnv analog.com:user:util_sigma_delta_spi:1.0 util_sigma_delta_spi]
set_property -dict [list CONFIG.NUM_CS 2] $spi_engine
set_property -dict [list CONFIG.NUM_CS 2] $util_sigma_delta_spi
ad_connect axi/spi_engine_offload_ctrl0 offload/spi_engine_offload_ctrl
ad_connect offload/spi_engine_ctrl interconnect/s0_ctrl
ad_connect axi/spi_engine_ctrl interconnect/s1_ctrl
ad_connect interconnect/m_ctrl execution/ctrl
ad_connect offload/offload_sdi M_AXIS_SAMPLE
ad_connect util_sigma_delta_spi/data_ready offload/trigger
ad_connect util_sigma_delta_spi/data_ready conv_done
ad_connect execution/active util_sigma_delta_spi/spi_active
ad_connect execution/spi util_sigma_delta_spi/s_spi
ad_connect util_sigma_delta_spi/m_spi m_spi
connect_bd_net \
[get_bd_pins clk] \
[get_bd_pins offload/spi_clk] \
[get_bd_pins offload/ctrl_clk] \
[get_bd_pins execution/clk] \
[get_bd_pins axi/s_axi_aclk] \
[get_bd_pins axi/spi_clk] \
[get_bd_pins interconnect/clk] \
[get_bd_pins util_sigma_delta_spi/clk]
connect_bd_net \
[get_bd_pins axi/spi_resetn] \
[get_bd_pins offload/spi_resetn] \
[get_bd_pins execution/resetn] \
[get_bd_pins interconnect/resetn] \
[get_bd_pins util_sigma_delta_spi/resetn]
connect_bd_net [get_bd_pins resetn] [get_bd_pins axi/s_axi_aresetn]
ad_connect irq axi/irq
current_bd_instance /
create_bd_intf_port -mode Master -vlnv analog.com:interface:spi_master_rtl:1.0 spi
ad_connect spi/m_spi spi
set phase_gen [create_bd_cell -type ip -vlnv xilinx.com:ip:c_counter_binary:12.0 phase_gen]
set phase_slice [create_bd_cell -type ip -vlnv xilinx.com:ip:xlslice:1.0 phase_slice]
create_bd_port -dir O excitation
set excitation_freq 1020
set_property -dict [list \
CONFIG.Output_Width 32 \
CONFIG.Increment_Value [format "%x" [expr $excitation_freq * (1<<32) / 100000000]] \
] $phase_gen
set_property -dict [list \
CONFIG.DIN_TO {31} \
CONFIG.DIN_FROM {31} \
CONFIG.DOUT_WIDTH {1} \
] $phase_slice
ad_connect /phase_gen/Q /phase_slice/Din
ad_connect /phase_slice/Dout excitation
create_bd_cell -type hier processing
current_bd_instance /processing
create_bd_pin -dir I -type clk clk
create_bd_pin -dir I -type rst resetn
create_bd_pin -dir I conv_done
create_bd_pin -dir I -from 31 -to 0 phase
create_bd_pin -dir O overflow
create_bd_pin -dir I -from 13 -to 0 channel_enable
create_bd_intf_pin -mode Slave -vlnv xilinx.com:interface:axis_rtl:1.0 S_AXIS_SAMPLE
create_bd_intf_pin -mode Master -vlnv analog.com:interface:fifo_wr_rtl:1.0 DMA_WR
create_bd_cell -type ip -vlnv analog.com:user:cn0363_phase_data_sync:1.0 phase_data_sync
create_bd_cell -type ip -vlnv analog.com:user:cn0363_dma_sequencer:1.0 sequencer
create_bd_cell -type ip -vlnv analog.com:user:cordic_demod:1.0 cordic_demod
create_bd_cell -type ip -vlnv xilinx.com:ip:axis_broadcaster:1.1 phase_broadcast
create_bd_cell -type ip -vlnv xilinx.com:ip:axis_broadcaster:1.1 sample_broadcast
create_bd_cell -type ip -vlnv xilinx.com:ip:axis_broadcaster:1.1 sample_filtered_broadcast
create_bd_cell -type ip -vlnv xilinx.com:ip:axis_broadcaster:1.1 i_q_broadcast
create_bd_cell -type ip -vlnv xilinx.com:ip:axis_combiner:1.1 phase_sample_combine
set i_q_resize [create_bd_cell -type ip -vlnv analog.com:user:util_axis_resize:1.0 i_q_resize]
set_property -dict [list \
CONFIG.C_M_DATA_WIDTH 32 \
CONFIG.C_S_DATA_WIDTH 64 \
] $i_q_resize
set hpf [create_bd_cell -type ip -vlnv xilinx.com:ip:fir_compiler:7.2 hpf]
set lpf [create_bd_cell -type ip -vlnv xilinx.com:ip:fir_compiler:7.2 lpf]
set_property -dict [list \
CONFIG.Data_Fractional_Bits.VALUE_SRC USER \
CONFIG.Data_Sign.VALUE_SRC USER \
CONFIG.Data_Width.VALUE_SRC USER \
CONFIG.M_DATA_Has_TREADY true \
CONFIG.Number_Channels 2 \
CONFIG.Sample_Frequency 0.025 \
CONFIG.Clock_Frequency 100 \
CONFIG.Coefficient_Width 16 \
CONFIG.Data_Width 24 \
CONFIG.Output_Width 32 \
CONFIG.Output_Rounding_Mode Truncate_LSBs \
CONFIG.Has_ARESETn true \
CONFIG.Reset_Data_Vector false \
CONFIG.CoefficientVector [load_fir_filter_vector "filters/hpf.mat"] \
] $hpf
set_property -dict [list \
CONFIG.Data_Fractional_Bits.VALUE_SRC USER \
CONFIG.Data_Sign.VALUE_SRC USER \
CONFIG.Data_Width.VALUE_SRC USER \
CONFIG.M_DATA_Has_TREADY true \
CONFIG.Number_Channels 4 \
CONFIG.Sample_Frequency 0.025 \
CONFIG.Clock_Frequency 100 \
CONFIG.Coefficient_Width 24 \
CONFIG.Data_Width 32 \
CONFIG.Output_Width 32 \
CONFIG.Output_Rounding_Mode Truncate_LSBs \
CONFIG.Has_ARESETn true \
CONFIG.Reset_Data_Vector false \
CONFIG.CoefficientVector [load_fir_filter_vector "filters/lpf.mat"] \
] $lpf
set overflow_or [create_bd_cell -type ip -vlnv xilinx.com:ip:util_vector_logic:2.0 overflow_or]
set_property -dict [list \
CONFIG.C_SIZE 1 \
CONFIG.C_OPERATION {or} \
] $overflow_or
ad_connect S_AXIS_SAMPLE phase_data_sync/S_AXIS_SAMPLE
ad_connect conv_done phase_data_sync/conv_done
ad_connect phase phase_data_sync/phase
ad_connect phase_data_sync/M_AXIS_PHASE phase_broadcast/S_AXIS
ad_connect phase_broadcast/M00_AXIS sequencer/phase
ad_connect phase_broadcast/M01_AXIS phase_sample_combine/S01_AXIS
ad_connect phase_data_sync/M_AXIS_SAMPLE sample_broadcast/S_AXIS
ad_connect sample_broadcast/M00_AXIS sequencer/data
ad_connect sample_broadcast/M01_AXIS hpf/S_AXIS_DATA
ad_connect hpf/M_AXIS_DATA sample_filtered_broadcast/S_AXIS
ad_connect sample_filtered_broadcast/M00_AXIS sequencer/data_filtered
ad_connect sample_filtered_broadcast/M01_AXIS phase_sample_combine/S00_AXIS
ad_connect phase_sample_combine/M_AXIS cordic_demod/S_AXIS
ad_connect cordic_demod/M_AXIS i_q_resize/s_axis
ad_connect i_q_resize/m_axis i_q_broadcast/S_AXIS
ad_connect i_q_broadcast/M00_AXIS sequencer/i_q
ad_connect i_q_broadcast/M01_AXIS lpf/S_AXIS_DATA
ad_connect lpf/M_AXIS_DATA sequencer/i_q_filtered
connect_bd_net \
[get_bd_pins clk] \
[get_bd_pins phase_data_sync/clk] \
[get_bd_pins sequencer/clk] \
[get_bd_pins cordic_demod/clk] \
[get_bd_pins phase_broadcast/aclk] \
[get_bd_pins sample_broadcast/aclk] \
[get_bd_pins sample_filtered_broadcast/aclk] \
[get_bd_pins i_q_broadcast/aclk] \
[get_bd_pins phase_sample_combine/aclk] \
[get_bd_pins i_q_resize/clk] \
[get_bd_pins hpf/aclk] \
[get_bd_pins lpf/aclk]
connect_bd_net \
[get_bd_pins resetn] \
[get_bd_pins sequencer/resetn] \
[get_bd_pins phase_data_sync/resetn] \
connect_bd_net \
[get_bd_pins sequencer/processing_resetn] \
[get_bd_pins phase_data_sync/processing_resetn] \
[get_bd_pins cordic_demod/resetn] \
[get_bd_pins phase_broadcast/aresetn] \
[get_bd_pins sample_broadcast/aresetn] \
[get_bd_pins sample_filtered_broadcast/aresetn] \
[get_bd_pins i_q_broadcast/aresetn] \
[get_bd_pins phase_sample_combine/aresetn] \
[get_bd_pins i_q_resize/resetn] \
[get_bd_pins hpf/aresetn] \
[get_bd_pins lpf/aresetn]
ad_connect channel_enable sequencer/channel_enable
ad_connect sequencer/dma_wr DMA_WR
ad_connect phase_data_sync/overflow overflow_or/Op1
ad_connect sequencer/overflow overflow_or/Op2
ad_connect overflow_or/Res overflow
ad_connect phase_data_sync/sample_has_stat GND
current_bd_instance /
ad_connect /spi/M_AXIS_SAMPLE /processing/S_AXIS_SAMPLE
ad_connect /spi/conv_done /processing/conv_done
ad_connect /phase_gen/Q /processing/phase
set axi_adc [create_bd_cell -type ip -vlnv analog.com:user:axi_generic_adc:1.0 axi_adc]
set_property -dict [list \
CONFIG.NUM_CHANNELS 14 \
] $axi_adc
ad_connect processing/overflow axi_adc/adc_dovf
ad_connect axi_adc/adc_enable processing/channel_enable
connect_bd_net -net sys_cpu_clk \
[get_bd_pins /spi/clk] \
[get_bd_pins /processing/clk] \
[get_bd_pins /axi_dma/m_dest_axi_aclk] \
[get_bd_pins /axi_dma/fifo_wr_clk] \
[get_bd_pins /phase_gen/CLK] \
[get_bd_pins /axi_adc/adc_clk]
connect_bd_net -net sys_cpu_resetn \
[get_bd_pins /spi/resetn] \
[get_bd_pins /processing/resetn] \
[get_bd_pins /axi_dma/m_dest_axi_aresetn]
ad_connect /processing/dma_wr /axi_dma/fifo_wr
ad_cpu_interconnect 0x43c00000 /axi_adc
ad_cpu_interconnect 0x44a00000 /spi/axi
ad_cpu_interconnect 0x44a30000 /axi_dma
ad_cpu_interrupt "ps-13" "mb-13" /axi_dma/irq
ad_cpu_interrupt "ps-12" "mb-12" /spi/irq
ad_mem_hp2_interconnect sys_cpu_clk sys_ps7/S_AXI_HP2
ad_mem_hp2_interconnect sys_cpu_clk axi_dma/m_dest_axi

View File

@ -0,0 +1,23 @@
# PMOD JA
set_property PACKAGE_PIN Y11 [get_ports gain0_o]
set_property IOSTANDARD LVCMOS33 [get_ports gain0_o]
set_property PACKAGE_PIN AA11 [get_ports gain1_o]
set_property IOSTANDARD LVCMOS33 [get_ports gain1_o]
set_property PACKAGE_PIN AA9 [get_ports led_clk_o]
set_property IOSTANDARD LVCMOS33 [get_ports led_clk_o]
set_property PACKAGE_PIN Y10 [get_ports {spi_cs[1]}]
set_property IOSTANDARD LVCMOS33 [get_ports {spi_cs[1]}]
set_property PACKAGE_PIN AB11 [get_ports {spi_cs[0]}]
set_property IOSTANDARD LVCMOS33 [get_ports {spi_cs[0]}]
set_property PACKAGE_PIN AB10 [get_ports spi_sdo]
set_property IOSTANDARD LVCMOS33 [get_ports spi_sdo]
set_property PULLUP true [get_ports spi_sdo]
set_property PACKAGE_PIN AB9 [get_ports spi_sdi]
set_property IOSTANDARD LVCMOS33 [get_ports spi_sdi]
set_property PULLUP true [get_ports spi_sdi]
set_property PACKAGE_PIN AA8 [get_ports spi_sclk]
set_property IOSTANDARD LVCMOS33 [get_ports spi_sclk]

View File

@ -0,0 +1,12 @@
source ../../scripts/adi_env.tcl
source $ad_hdl_dir/projects/scripts/adi_project.tcl
source $ad_hdl_dir/projects/scripts/adi_board.tcl
adi_project_create cn0363_zed
adi_project_files cn0363_zed [list \
"system_top.v" \
"system_constr.xdc" \
"$ad_hdl_dir/projects/common/zed/zed_system_constr.xdc" \
"$ad_hdl_dir/library/common/ad_iobuf.v"]
adi_project_run cn0363_zed

View File

@ -0,0 +1,276 @@
// ***************************************************************************
// ***************************************************************************
// Copyright 2011(c) Analog Devices, Inc.
//
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without modification,
// are permitted provided that the following conditions are met:
// - Redistributions of source code must retain the above copyright
// notice, this list of conditions and the following disclaimer.
// - Redistributions in binary form must reproduce the above copyright
// notice, this list of conditions and the following disclaimer in
// the documentation and/or other materials provided with the
// distribution.
// - Neither the name of Analog Devices, Inc. nor the names of its
// contributors may be used to endorse or promote products derived
// from this software without specific prior written permission.
// - The use of this software may or may not infringe the patent rights
// of one or more patent holders. This license does not release you
// from the requirement that you obtain separate licenses from these
// patent holders to use this software.
// - Use of the software either in source or binary form, must be run
// on or directly connected to an Analog Devices Inc. component.
//
// THIS SOFTWARE IS PROVIDED BY ANALOG DEVICES "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
// INCLUDING, BUT NOT LIMITED TO, NON-INFRINGEMENT, MERCHANTABILITY AND FITNESS FOR A
// PARTICULAR PURPOSE ARE DISCLAIMED.
//
// IN NO EVENT SHALL ANALOG DEVICES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, INTELLECTUAL PROPERTY
// RIGHTS, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
// BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
// STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
// THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
// ***************************************************************************
// ***************************************************************************
// ***************************************************************************
// ***************************************************************************
`timescale 1ns/100ps
module system_top (
ddr_addr,
ddr_ba,
ddr_cas_n,
ddr_ck_n,
ddr_ck_p,
ddr_cke,
ddr_cs_n,
ddr_dm,
ddr_dq,
ddr_dqs_n,
ddr_dqs_p,
ddr_odt,
ddr_ras_n,
ddr_reset_n,
ddr_we_n,
fixed_io_ddr_vrn,
fixed_io_ddr_vrp,
fixed_io_mio,
fixed_io_ps_clk,
fixed_io_ps_porb,
fixed_io_ps_srstb,
gpio_bd,
hdmi_out_clk,
hdmi_vsync,
hdmi_hsync,
hdmi_data_e,
hdmi_data,
i2s_mclk,
i2s_bclk,
i2s_lrclk,
i2s_sdata_out,
i2s_sdata_in,
spdif,
iic_scl,
iic_sda,
iic_mux_scl,
iic_mux_sda,
spi_sdo,
spi_sdi,
spi_cs,
spi_sclk,
led_clk_o,
gain0_o,
gain1_o,
otg_vbusoc);
inout [14:0] ddr_addr;
inout [ 2:0] ddr_ba;
inout ddr_cas_n;
inout ddr_ck_n;
inout ddr_ck_p;
inout ddr_cke;
inout ddr_cs_n;
inout [ 3:0] ddr_dm;
inout [31:0] ddr_dq;
inout [ 3:0] ddr_dqs_n;
inout [ 3:0] ddr_dqs_p;
inout ddr_odt;
inout ddr_ras_n;
inout ddr_reset_n;
inout ddr_we_n;
inout fixed_io_ddr_vrn;
inout fixed_io_ddr_vrp;
inout [53:0] fixed_io_mio;
inout fixed_io_ps_clk;
inout fixed_io_ps_porb;
inout fixed_io_ps_srstb;
inout [31:0] gpio_bd;
output hdmi_out_clk;
output hdmi_vsync;
output hdmi_hsync;
output hdmi_data_e;
output [15:0] hdmi_data;
output spdif;
output i2s_mclk;
output i2s_bclk;
output i2s_lrclk;
output i2s_sdata_out;
input i2s_sdata_in;
inout iic_scl;
inout iic_sda;
inout [ 1:0] iic_mux_scl;
inout [ 1:0] iic_mux_sda;
input spi_sdi;
inout spi_sdo;
output spi_sclk;
output [ 1:0] spi_cs;
output led_clk_o;
output gain0_o;
output gain1_o;
input otg_vbusoc;
// internal signals
wire [34:0] gpio_i;
wire [34:0] gpio_o;
wire [34:0] gpio_t;
wire [ 1:0] iic_mux_scl_i_s;
wire [ 1:0] iic_mux_scl_o_s;
wire iic_mux_scl_t_s;
wire [ 1:0] iic_mux_sda_i_s;
wire [ 1:0] iic_mux_sda_o_s;
wire iic_mux_sda_t_s;
wire [23:0] offload_sdi_data;
wire spi_sdo_o;
wire spi_sdo_t;
wire excitation;
assign gain0_o = gpio_o[32];
assign gain1_o = gpio_o[33];
assign gpio_i[34] = spi_sdi; // Interrupt
assign led_clk_o = excitation;
ad_iobuf #(
.DATA_WIDTH(1)
) i_sdo_iobuf (
.dt(spi_sdo_t),
.di(spi_sdo_o),
.dio(spi_sdo)
);
ad_iobuf #(
.DATA_WIDTH(32)
) i_iobuf (
.dt(gpio_t[31:0]),
.di(gpio_o[31:0]),
.do(gpio_i[31:0]),
.dio(gpio_bd)
);
ad_iobuf #(
.DATA_WIDTH(2)
) i_iic_mux_scl (
.dt({iic_mux_scl_t_s, iic_mux_scl_t_s}),
.di(iic_mux_scl_o_s),
.do(iic_mux_scl_i_s),
.dio(iic_mux_scl)
);
ad_iobuf #(
.DATA_WIDTH(2)
) i_iic_mux_sda (
.dt({iic_mux_sda_t_s, iic_mux_sda_t_s}),
.di(iic_mux_sda_o_s),
.do(iic_mux_sda_i_s),
.dio(iic_mux_sda)
);
system_wrapper i_system_wrapper (
.ddr_addr (ddr_addr),
.ddr_ba (ddr_ba),
.ddr_cas_n (ddr_cas_n),
.ddr_ck_n (ddr_ck_n),
.ddr_ck_p (ddr_ck_p),
.ddr_cke (ddr_cke),
.ddr_cs_n (ddr_cs_n),
.ddr_dm (ddr_dm),
.ddr_dq (ddr_dq),
.ddr_dqs_n (ddr_dqs_n),
.ddr_dqs_p (ddr_dqs_p),
.ddr_odt (ddr_odt),
.ddr_ras_n (ddr_ras_n),
.ddr_reset_n (ddr_reset_n),
.ddr_we_n (ddr_we_n),
.fixed_io_ddr_vrn (fixed_io_ddr_vrn),
.fixed_io_ddr_vrp (fixed_io_ddr_vrp),
.fixed_io_mio (fixed_io_mio),
.fixed_io_ps_clk (fixed_io_ps_clk),
.fixed_io_ps_porb (fixed_io_ps_porb),
.fixed_io_ps_srstb (fixed_io_ps_srstb),
.gpio_i (gpio_i),
.gpio_o (gpio_o),
.gpio_t (gpio_t),
.hdmi_data (hdmi_data),
.hdmi_data_e (hdmi_data_e),
.hdmi_hsync (hdmi_hsync),
.hdmi_out_clk (hdmi_out_clk),
.hdmi_vsync (hdmi_vsync),
.i2s_bclk (i2s_bclk),
.i2s_lrclk (i2s_lrclk),
.i2s_mclk (i2s_mclk),
.i2s_sdata_in (i2s_sdata_in),
.i2s_sdata_out (i2s_sdata_out),
.iic_fmc_scl_io (iic_scl),
.iic_fmc_sda_io (iic_sda),
.iic_mux_scl_i (iic_mux_scl_i_s),
.iic_mux_scl_o (iic_mux_scl_o_s),
.iic_mux_scl_t (iic_mux_scl_t_s),
.iic_mux_sda_i (iic_mux_sda_i_s),
.iic_mux_sda_o (iic_mux_sda_o_s),
.iic_mux_sda_t (iic_mux_sda_t_s),
.ps_intr_00 (1'b0),
.ps_intr_01 (1'b0),
.ps_intr_02 (1'b0),
.ps_intr_03 (1'b0),
.ps_intr_04 (1'b0),
.ps_intr_05 (1'b0),
.ps_intr_06 (1'b0),
.ps_intr_07 (1'b0),
.ps_intr_08 (1'b0),
.ps_intr_09 (1'b0),
.ps_intr_10 (1'b0),
.spi_sdo (spi_sdo_o),
.spi_sdo_t (spi_sdo_t),
.spi_sdi (spi_sdi),
.spi_cs (spi_cs),
.spi_sclk (spi_sclk),
.excitation (excitation),
.otg_vbusoc (otg_vbusoc),
.spdif (spdif));
endmodule
// ***************************************************************************
// ***************************************************************************

View File

@ -25,12 +25,12 @@ proc ad_connect_type {p_name} {
set m_name ""
if {$m_name eq ""} {set m_name [get_bd_pins -quiet $p_name]}
if {$m_name eq ""} {set m_name [get_bd_intf_pins -quiet $p_name]}
if {$m_name eq ""} {set m_name [get_bd_ports -quiet $p_name]}
if {$m_name eq ""} {set m_name [get_bd_pins -quiet $p_name]}
if {$m_name eq ""} {set m_name [get_bd_intf_ports -quiet $p_name]}
if {$m_name eq ""} {set m_name [get_bd_nets -quiet $p_name]}
if {$m_name eq ""} {set m_name [get_bd_ports -quiet $p_name]}
if {$m_name eq ""} {set m_name [get_bd_intf_nets -quiet $p_name]}
if {$m_name eq ""} {set m_name [get_bd_nets -quiet $p_name]}
return $m_name
}