Art55555 0 15 октября, 2019 Опубликовано 15 октября, 2019 · Жалоба Есть Kintex 7 и AD9697. Для такта использую AD9528 ( в связке с SI570). Со стандартом JESD204B никогда не работал, разбираюсь. Есть знающие? На данный момент на выходе вижу нули. Файл прилагаю как в теле, так и в прикреплённых. ad9697.vhd ---------------------------------------------------------------------------------- -- Company: -- Engineer: -- -- Create Date: 19.09.2019 11:47:46 -- Design Name: -- Module Name: ad9697 - Behavioral -- Project Name: -- Target Devices: -- Tool Versions: -- Description: -- -- Dependencies: -- -- Revision: -- Revision 0.01 - File Created -- Additional Comments: -- ---------------------------------------------------------------------------------- library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL; library UNISIM; use UNISIM.VComponents.all; -- Uncomment the following library declaration if using -- arithmetic functions with Signed or Unsigned values --use IEEE.NUMERIC_STD.ALL; -- Uncomment the following library declaration if instantiating -- any Xilinx leaf cells in this code. --library UNISIM; --use UNISIM.VComponents.all; entity ad9697 is Port ( clk : in STD_LOGIC; reset : in STD_LOGIC; ADC0_p : in STD_LOGIC; ADC0_n : in STD_LOGIC; ADC1_p : in STD_LOGIC; ADC1_n : in STD_LOGIC; ADC2_p : in STD_LOGIC; ADC2_n : in STD_LOGIC; ADC3_p : in STD_LOGIC; ADC3_n : in STD_LOGIC; MGT_clk_p : in STD_LOGIC; --clk_out1 MGT_clk_n : in STD_LOGIC; SYNCINB_p : out STD_LOGIC; SYNCINB_n : out STD_LOGIC; SYS_REF_CLOCK_p : in STD_LOGIC; SYS_REF_CLOCK_n : in STD_LOGIC; SYS_REF_CLOCK_OUT: out STD_LOGIC; PDWN : out STD_LOGIC; test_out0 : out std_logic_vector (15 downto 0); test_out1 : out std_logic_vector (15 downto 0); test_out2 : out std_logic_vector (15 downto 0); test_out3 : out std_logic_vector (15 downto 0); test_out4 : out std_logic_vector (15 downto 0) ); end ad9697; architecture Behavioral of ad9697 is signal ADC_p : std_logic_vector (3 downto 0); signal ADC_n : std_logic_vector (3 downto 0); signal rx_reset : STD_LOGIC; component jesd204_phy_0 is PORT( -- System Reset Inputs for each direction tx_sys_reset : in STD_LOGIC; rx_sys_reset : in STD_LOGIC; -- Reset Inputs for each direction tx_reset_gt : in STD_LOGIC; rx_reset_gt : in STD_LOGIC; -- Reset Done for each direction tx_reset_done : out STD_LOGIC; rx_reset_done : out STD_LOGIC; -- GT Common 0 I/O qpll_refclk : in STD_LOGIC; common0_qpll_lock_out : out STD_LOGIC; common0_qpll_refclk_out : out STD_LOGIC; common0_qpll_clk_out : out STD_LOGIC; rxencommaalign : in STD_LOGIC; tx_core_clk : in STD_LOGIC; txoutclk : out STD_LOGIC; rx_core_clk : in STD_LOGIC; rxoutclk : out STD_LOGIC; drpclk : in STD_LOGIC; -- PRBS mode gt_prbssel : in std_logic_vector(2 downto 0); -- Tx Ports -- Lane 0 gt0_txcharisk : in std_logic_vector(3 downto 0); gt0_txdata : in std_logic_vector(31 downto 0); -- Lane 1 gt1_txcharisk : in std_logic_vector(3 downto 0); gt1_txdata : in std_logic_vector(31 downto 0); -- Lane 2 gt2_txcharisk : in std_logic_vector(3 downto 0); gt2_txdata : in std_logic_vector(31 downto 0); -- Lane 3 gt3_txcharisk : in std_logic_vector(3 downto 0); gt3_txdata : in std_logic_vector(31 downto 0); -- Rx Ports -- Lane 0 gt0_rxcharisk : out std_logic_vector(3 downto 0); gt0_rxdisperr : out std_logic_vector(3 downto 0); gt0_rxnotintable : out std_logic_vector(3 downto 0); gt0_rxdata : out std_logic_vector(31 downto 0); -- Lane 1 gt1_rxcharisk : out std_logic_vector(3 downto 0); gt1_rxdisperr : out std_logic_vector(3 downto 0); gt1_rxnotintable : out std_logic_vector(3 downto 0); gt1_rxdata : out std_logic_vector(31 downto 0); -- Lane 2 gt2_rxcharisk : out std_logic_vector(3 downto 0); gt2_rxdisperr : out std_logic_vector(3 downto 0); gt2_rxnotintable : out std_logic_vector(3 downto 0); gt2_rxdata : out std_logic_vector(31 downto 0); -- Lane 3 gt3_rxcharisk : out std_logic_vector(3 downto 0); gt3_rxdisperr : out std_logic_vector(3 downto 0); gt3_rxnotintable : out std_logic_vector(3 downto 0); gt3_rxdata : out std_logic_vector(31 downto 0); -- Serial ports rxn_in : in std_logic_vector(3 downto 0); rxp_in : in std_logic_vector(3 downto 0); txn_out : out std_logic_vector(3 downto 0); txp_out : out std_logic_vector(3 downto 0) ); end component; component jesd204_0 is port ( rx_core_clk : in STD_LOGIC; rx_reset_done : in STD_LOGIC; rx_reset : in STD_LOGIC; rx_sysref : in STD_LOGIC; gt0_rxcharisk : in std_logic_vector(3 downto 0); gt0_rxdata : in std_logic_vector(31 downto 0); gt0_rxdisperr :in std_logic_vector(3 downto 0); gt0_rxnotintable :in std_logic_vector(3 downto 0); gt1_rxcharisk : in std_logic_vector(3 downto 0); gt1_rxdata : in std_logic_vector(31 downto 0); gt1_rxdisperr :in std_logic_vector(3 downto 0); gt1_rxnotintable :in std_logic_vector(3 downto 0); gt2_rxcharisk : in std_logic_vector(3 downto 0); gt2_rxdata : in std_logic_vector(31 downto 0); gt2_rxdisperr :in std_logic_vector(3 downto 0); gt2_rxnotintable :in std_logic_vector(3 downto 0); gt3_rxcharisk : in std_logic_vector(3 downto 0); gt3_rxdata : in std_logic_vector(31 downto 0); gt3_rxdisperr :in std_logic_vector(3 downto 0); gt3_rxnotintable :in std_logic_vector(3 downto 0); rx_aresetn : in STD_LOGIC; rx_reset_gt : out STD_LOGIC; rxencommaalign_out: out STD_LOGIC; rx_tvalid : out STD_LOGIC; rx_tdata : out std_logic_vector(127 downto 0); rx_start_of_frame : out std_logic_vector(3 downto 0); rx_end_of_frame : out std_logic_vector(3 downto 0); rx_start_of_multiframe: out std_logic_vector(3 downto 0); rx_end_of_multiframe: out std_logic_vector(3 downto 0); rx_frame_error: out std_logic_vector(15 downto 0); rx_sync: out STD_LOGIC; s_axi_aclk : in STD_LOGIC; s_axi_aresetn : in STD_LOGIC; s_axi_awaddr : in std_logic_vector(11 downto 0); s_axi_awvalid : in STD_LOGIC; s_axi_awready : out STD_LOGIC; s_axi_wdata : in std_logic_vector(31 downto 0); s_axi_wstrb : in std_logic_vector(3 downto 0); s_axi_wvalid : in STD_LOGIC; s_axi_wready : out STD_LOGIC; s_axi_bresp : out std_logic_vector(1 downto 0); s_axi_bvalid : out STD_LOGIC; s_axi_bready : in STD_LOGIC; s_axi_araddr : in std_logic_vector(11 downto 0); s_axi_arvalid : in STD_LOGIC; s_axi_arready : out STD_LOGIC; s_axi_rdata : out std_logic_vector(31 downto 0); s_axi_rresp : out std_logic_vector(1 downto 0); s_axi_rvalid : out STD_LOGIC; s_axi_rready : in STD_LOGIC ); end component; component ila_0 IS PORT ( clk : IN STD_LOGIC; probe0 : IN STD_LOGIC_VECTOR(15 DOWNTO 0); probe1 : IN STD_LOGIC_VECTOR(15 DOWNTO 0); probe2 : IN STD_LOGIC_VECTOR(15 DOWNTO 0); probe3 : IN STD_LOGIC_VECTOR(15 DOWNTO 0); probe4 : IN STD_LOGIC_VECTOR(15 DOWNTO 0) ); END component; --signal reset : std_logic := '0'; signal clk_mgt: std_logic := '0'; signal SYS_REF_CLOCK: std_logic := '0'; -- System Reset Inputs for each direction signal tx_sys_reset : STD_LOGIC; signal rx_sys_reset : STD_LOGIC; -- Reset Inputs for each direction signal tx_reset_gt : STD_LOGIC; signal rx_reset_gt : STD_LOGIC; -- Reset Done for each direction signal tx_reset_done : STD_LOGIC; signal rx_reset_done : STD_LOGIC; -- GT Common 0 I/O signal qpll_refclk : STD_LOGIC; signal common0_qpll_lock_out : STD_LOGIC; signal common0_qpll_refclk_out : STD_LOGIC; signal common0_qpll_clk_out : STD_LOGIC; signal rxencommaalign : STD_LOGIC; signal tx_core_clk : STD_LOGIC; signal txoutclk : STD_LOGIC; signal rx_core_clk : STD_LOGIC; signal rxoutclk : STD_LOGIC; signal drpclk : STD_LOGIC; -- PRBS mode signal gt_prbssel : std_logic_vector(2 downto 0); -- Tx Ports -- Lane 0 signal gt0_txcharisk : std_logic_vector(3 downto 0); signal gt0_txdata : std_logic_vector(31 downto 0); -- Lane 1 signal gt1_txcharisk : std_logic_vector(3 downto 0); signal gt1_txdata : std_logic_vector(31 downto 0); -- Lane 2 signal gt2_txcharisk : std_logic_vector(3 downto 0); signal gt2_txdata : std_logic_vector(31 downto 0); -- Lane 3 signal gt3_txcharisk : std_logic_vector(3 downto 0); signal gt3_txdata : std_logic_vector(31 downto 0); -- Rx Ports -- Lane 0 signal gt0_rxcharisk : std_logic_vector(3 downto 0); signal gt0_rxdisperr : std_logic_vector(3 downto 0); signal gt0_rxnotintable : std_logic_vector(3 downto 0); signal gt0_rxdata : std_logic_vector(31 downto 0); -- Lane 1 signal gt1_rxcharisk : std_logic_vector(3 downto 0); signal gt1_rxdisperr : std_logic_vector(3 downto 0); signal gt1_rxnotintable : std_logic_vector(3 downto 0); signal gt1_rxdata : std_logic_vector(31 downto 0); -- Lane 2 signal gt2_rxcharisk : std_logic_vector(3 downto 0); signal gt2_rxdisperr : std_logic_vector(3 downto 0); signal gt2_rxnotintable : std_logic_vector(3 downto 0); signal gt2_rxdata : std_logic_vector(31 downto 0); -- Lane 3 signal gt3_rxcharisk : std_logic_vector(3 downto 0); signal gt3_rxdisperr : std_logic_vector(3 downto 0); signal gt3_rxnotintable : std_logic_vector(3 downto 0); signal gt3_rxdata : std_logic_vector(31 downto 0); -- Serial ports signal rxn_in : std_logic_vector(3 downto 0); signal rxp_in : std_logic_vector(3 downto 0); signal txn_out : std_logic_vector(3 downto 0); signal txp_out : std_logic_vector(3 downto 0); --------------------------------------------------- ----------------------------------------------------- signal refclk0p : STD_LOGIC; signal refclk0n : STD_LOGIC; signal glblclkp : STD_LOGIC; signal glblclkn : STD_LOGIC; signal tx_reset : STD_LOGIC; signal tx_start_of_frame : std_logic_vector(3 downto 0); signal tx_start_of_multiframe: std_logic_vector(3 downto 0); signal txp : std_logic_vector(3 downto 0); signal txn : std_logic_vector(3 downto 0); signal s_axi_aclk : STD_LOGIC; signal s_axi_aresetn : STD_LOGIC; signal s_axi_awaddr : std_logic_vector(11 downto 0); signal s_axi_awvalid : STD_LOGIC; signal s_axi_awready : STD_LOGIC; signal s_axi_wdata : std_logic_vector(31 downto 0); signal s_axi_wstrb : std_logic_vector(3 downto 0); signal s_axi_wvalid : STD_LOGIC; signal s_axi_wready : STD_LOGIC; signal s_axi_bresp : std_logic_vector(1 downto 0); signal s_axi_bvalid : STD_LOGIC; signal s_axi_bready : STD_LOGIC; signal s_axi_araddr : std_logic_vector(11 downto 0); signal s_axi_arvalid : STD_LOGIC; signal s_axi_arready : STD_LOGIC; signal s_axi_rdata : std_logic_vector(31 downto 0); signal s_axi_rresp : std_logic_vector(1 downto 0); signal s_axi_rvalid : STD_LOGIC; signal s_axi_rready : STD_LOGIC; signal tx_aresetn : STD_LOGIC; signal tx_sysref : STD_LOGIC; signal tx_sync : STD_LOGIC; signal rx_aresetn : STD_LOGIC; --signal rx_reset_gt : STD_LOGIC; signal rxencommaalign_out: STD_LOGIC; signal rx_tvalid : STD_LOGIC; signal rx_tdata : std_logic_vector(127 downto 0); signal rx_start_of_frame : std_logic_vector(3 downto 0); signal rx_end_of_frame : std_logic_vector(3 downto 0); signal rx_start_of_multiframe: std_logic_vector(3 downto 0); signal rx_end_of_multiframe: std_logic_vector(3 downto 0); signal rx_frame_error: std_logic_vector(15 downto 0); signal rx_sync: STD_LOGIC; signal rx_sysref: STD_LOGIC; signal CLKFBIN,CLKFBOUT: STD_LOGIC; signal SYS_REF_CLOCK_1: STD_LOGIC; signal rx_core_4x,rx_core_4x_g: STD_LOGIC; signal rx_core_2x,rx_core_2x_g: STD_LOGIC; signal rx_core_i,rx_core: STD_LOGIC; signal trig0: std_logic_vector(15 downto 0); signal trig1: std_logic_vector(15 downto 0); signal trig2: std_logic_vector(15 downto 0); signal trig3: std_logic_vector(15 downto 0); signal trig4: std_logic_vector(15 downto 0); signal clk_mgt_g: STD_LOGIC; signal cnt_sys_ref: std_logic_vector(15 downto 0); begin SYS_REF_CLOCK_OUT<=rx_core_4x_g; process (SYS_REF_CLOCK_1) begin if(SYS_REF_CLOCK_1'event and SYS_REF_CLOCK_1='1')then cnt_sys_ref<=cnt_sys_ref+1; -- if cnt1=500 then ;end if; end if; end process; IBUFGDS_inst1 : IBUFDS_GTE2 -- generic map ( -- DIFF_TERM => TRUE, -- Differential Termination -- IBUF_LOW_PWR => TRUE) -- Low power (TRUE) vs. performance (FALSE) setting for referenced I/O standards -- IOSTANDARD => "LVDS_25") port map ( CEB =>'0', O => clk_mgt, -- Clock buffer : out I => MGT_clk_p, -- Diff_p clock buffer : in (connect directly to top-level port) IB => MGT_clk_n -- Diff_n clock buffer : in (connect directly to top-level port) ); BUFG5 : BUFG port map ( O => clk_mgt_g, -- 1-bit output: Output feedback clock (connect to feedback input of DCM/PLL) I => clk_mgt -- 1-bit input: Feedback clock input (connect to input port) ); --IBUFGDS_inst2: IBUFDS_GTE2 ---- generic map ( ---- DIFF_TERM => TRUE, -- Differential Termination ---- IBUF_LOW_PWR => TRUE) -- Low power (TRUE) vs. performance (FALSE) setting for referenced I/O standards ---- IOSTANDARD => "LVDS_25") -- port map ( -- CEB =>'0', -- O => SYS_REF_CLOCK, -- Clock buffer : out -- I => SYS_REF_CLOCK_p, -- Diff_p clock buffer : in (connect directly to top-level port) -- IB => SYS_REF_CLOCK_n -- Diff_n clock buffer : in (connect directly to top-level port) -- ); IBUFDS_inst2: IBUFDS generic map ( DIFF_TERM => TRUE, -- Differential Termination IBUF_LOW_PWR => TRUE, -- Low power (TRUE) vs. performance (FALSE) setting for referenced I/O standards IOSTANDARD => "LVDS_25") port map ( O => SYS_REF_CLOCK, -- Clock buffer : out I => SYS_REF_CLOCK_p, -- Diff_p clock buffer : in (connect directly to top-level port) IB => SYS_REF_CLOCK_n -- Diff_n clock buffer : in (connect directly to top-level port) ); OBUFGDS_inst3: OBUFDS -- generic map ( -- DIFF_TERM => TRUE, -- Differential Termination -- IBUF_LOW_PWR => TRUE) -- Low power (TRUE) vs. performance (FALSE) setting for referenced I/O standards -- IOSTANDARD => "LVDS_25") port map ( I => rx_core_i, -- Clock buffer : out O => SYNCINB_n, -- Diff_p clock buffer : in (connect directly to top-level port) OB => SYNCINB_p -- Diff_n clock buffer : in (connect directly to top-level port) ); MMCME2_BASE_inst : MMCME2_BASE generic map ( BANDWIDTH => "OPTIMIZED", -- Jitter programming (OPTIMIZED, HIGH, LOW) CLKFBOUT_MULT_F => 4.0, -- Multiply value for all CLKOUT (2.000-64.000). CLKFBOUT_PHASE => 0.0, -- Phase offset in degrees of CLKFB (-360.000-360.000). CLKIN1_PERIOD => 5.0, -- Input clock period in ns to ps resolution (i.e. 33.333 is 30 MHz). -- CLKOUT0_DIVIDE - CLKOUT6_DIVIDE: Divide amount for each CLKOUT (1-128) CLKOUT1_DIVIDE => 4, CLKOUT2_DIVIDE => 8, CLKOUT3_DIVIDE => 16, CLKOUT4_DIVIDE => 32, CLKOUT5_DIVIDE => 64, CLKOUT6_DIVIDE => 1, CLKOUT0_DIVIDE_F => 8.0, -- Divide amount for CLKOUT0 (1.000-128.000). -- CLKOUT0_DUTY_CYCLE - CLKOUT6_DUTY_CYCLE: Duty cycle for each CLKOUT (0.01-0.99). CLKOUT0_DUTY_CYCLE => 0.5, CLKOUT1_DUTY_CYCLE => 0.5, CLKOUT2_DUTY_CYCLE => 0.5, CLKOUT3_DUTY_CYCLE => 0.5, CLKOUT4_DUTY_CYCLE => 0.5, CLKOUT5_DUTY_CYCLE => 0.5, CLKOUT6_DUTY_CYCLE => 0.5, -- CLKOUT0_PHASE - CLKOUT6_PHASE: Phase offset for each CLKOUT (-360.000-360.000). CLKOUT0_PHASE => 0.0, CLKOUT1_PHASE => 0.0, CLKOUT2_PHASE => 0.0, CLKOUT3_PHASE => 0.0, CLKOUT4_PHASE => 0.0, CLKOUT5_PHASE => 0.0, CLKOUT6_PHASE => 0.0, -- CLKOUT4_CASCADE => FALSE, -- Cascade CLKOUT4 counter with CLKOUT6 (FALSE, TRUE) DIVCLK_DIVIDE => 1, -- Master division value (1-106) REF_JITTER1 => 0.0, -- Reference input jitter in UI (0.000-0.999). STARTUP_WAIT => FALSE -- Delays DONE until MMCM is locked (FALSE, TRUE) ) port map ( -- Clock Outputs: 1-bit (each) output: User configurable clock outputs CLKOUT0 => OPEN, -- 1-bit output: CLKOUT0 CLKOUT0B => OPEN, -- 1-bit output: Inverted CLKOUT0 CLKOUT1 => rx_core_4x, -- 1-bit output: CLKOUT1 CLKOUT1B => OPEN, -- 1-bit output: Inverted CLKOUT1 CLKOUT2 => rx_core_2x, -- 1-bit output: CLKOUT2 CLKOUT2B => OPEN, -- 1-bit output: Inverted CLKOUT2 CLKOUT3 => rx_core_i, -- 1-bit output: CLKOUT3 CLKOUT3B => OPEN, -- 1-bit output: Inverted CLKOUT3 CLKOUT4 => OPEN, -- 1-bit output: CLKOUT4 CLKOUT5 => OPEN, -- 1-bit output: CLKOUT5 CLKOUT6 => OPEN, -- 1-bit output: CLKOUT6 -- Feedback Clocks: 1-bit (each) output: Clock feedback ports CLKFBOUT => CLKFBOUT, -- 1-bit output: Feedback clock CLKFBOUTB => OPEN, -- 1-bit output: Inverted CLKFBOUT -- Status Ports: 1-bit (each) output: MMCM status ports LOCKED => OPEN, -- 1-bit output: LOCK -- Clock Inputs: 1-bit (each) input: Clock input CLKIN1 => SYS_REF_CLOCK_1, -- 1-bit input: Clock -- Control Ports: 1-bit (each) input: MMCM control ports PWRDWN => '0', -- 1-bit input: Power-down RST => '0', -- 1-bit input: Reset -- Feedback Clocks: 1-bit (each) input: Clock feedback ports CLKFBIN => CLKFBIN -- 1-bit input: Feedback clock ); BUFG1 : BUFG port map ( O => CLKFBIN, -- 1-bit output: Output feedback clock (connect to feedback input of DCM/PLL) I => CLKFBOUT -- 1-bit input: Feedback clock input (connect to input port) ); BUFG0 : BUFG port map ( O => SYS_REF_CLOCK_1, -- 1-bit output: Output feedback clock (connect to feedback input of DCM/PLL) I => SYS_REF_CLOCK -- 1-bit input: Feedback clock input (connect to input port) ); BUFG2 : BUFG port map ( O => rx_core_4x_g, -- 1-bit output: Output feedback clock (connect to feedback input of DCM/PLL) I => rx_core_4x -- 1-bit input: Feedback clock input (connect to input port) ); BUFG3 : BUFG port map ( O => rx_core_2x_g, -- 1-bit output: Output feedback clock (connect to feedback input of DCM/PLL) I => rx_core_2x -- 1-bit input: Feedback clock input (connect to input port) ); BUFG4 : BUFG port map ( O => rx_core_clk, -- 1-bit output: Output feedback clock (connect to feedback input of DCM/PLL) I => rx_core_i -- 1-bit input: Feedback clock input (connect to input port) ); ADC_p <=ADC3_p&ADC2_p&ADC1_p&ADC0_p; ADC_n <=ADC3_n&ADC2_n&ADC1_n&ADC0_n; x_jesd204_phy_0 : jesd204_phy_0 PORT MAP( tx_sys_reset => tx_sys_reset, rx_sys_reset => reset, ------------- tx_reset_gt => tx_reset_gt, rx_reset_gt => rx_reset_gt, ------------ tx_reset_done => tx_reset_done, rx_reset_done => rx_reset_done, qpll_refclk => SYS_REF_CLOCK_1, ------------------------qpll_refclk,--SYS_REF_CLOCK_1, ------------------------ common0_qpll_lock_out => common0_qpll_lock_out, common0_qpll_refclk_out => common0_qpll_refclk_out, common0_qpll_clk_out => common0_qpll_clk_out, rxencommaalign => rxencommaalign, ---------------- tx_core_clk => tx_core_clk, txoutclk => txoutclk, rx_core_clk => rx_core_clk, ------------------ rxoutclk => rxoutclk, drpclk => SYS_REF_CLOCK_1, ------------------------qpll_refclk,--*SYS_REF_CLOCK_1, -- gt_prbssel => "000", gt0_txcharisk => gt0_txcharisk, gt0_txdata => gt0_txdata, gt1_txcharisk => gt1_txcharisk, gt1_txdata => gt1_txdata, gt2_txcharisk => gt2_txcharisk, gt2_txdata => gt2_txdata, gt3_txcharisk => gt3_txcharisk, gt3_txdata => gt3_txdata, gt0_rxcharisk => gt0_rxcharisk, gt0_rxdisperr => gt0_rxdisperr, gt0_rxnotintable => gt0_rxnotintable, gt0_rxdata => gt0_rxdata, gt1_rxcharisk => gt1_rxcharisk, gt1_rxdisperr => gt1_rxdisperr, gt1_rxnotintable => gt1_rxnotintable, gt1_rxdata => gt1_rxdata, gt2_rxcharisk => gt2_rxcharisk, gt2_rxdisperr => gt2_rxdisperr, gt2_rxnotintable => gt2_rxnotintable, gt2_rxdata => gt2_rxdata, gt3_rxcharisk => gt3_rxcharisk, gt3_rxdisperr => gt3_rxdisperr, gt3_rxnotintable => gt3_rxnotintable, gt3_rxdata => gt3_rxdata, rxn_in => ADC_n, -------------------- rxp_in => ADC_p, ------------------- txn_out => txn_out, txp_out => txp_out ); x_jesd204_0: jesd204_0 port map ( rx_core_clk => rx_core_clk, rx_reset_done => rx_reset_done, rx_reset => rx_reset, rx_sysref => rx_sysref, gt0_rxcharisk => gt0_rxcharisk, gt0_rxdata => gt0_rxdata, gt0_rxdisperr => gt0_rxdisperr, gt0_rxnotintable => gt0_rxnotintable, gt1_rxcharisk => gt1_rxcharisk, gt1_rxdata => gt1_rxdata, gt1_rxdisperr => gt1_rxdisperr, gt1_rxnotintable => gt1_rxnotintable, gt2_rxcharisk => gt2_rxcharisk, gt2_rxdata => gt2_rxdata, gt2_rxdisperr => gt2_rxdisperr, gt2_rxnotintable => gt2_rxnotintable, gt3_rxcharisk => gt3_rxcharisk, gt3_rxdata => gt3_rxdata, gt3_rxdisperr => gt3_rxdisperr, gt3_rxnotintable => gt3_rxnotintable, rx_aresetn => rx_aresetn, rx_reset_gt => rx_reset_gt, rxencommaalign_out => rxencommaalign_out, rx_tvalid => rx_tvalid, rx_tdata => rx_tdata, rx_start_of_frame => rx_start_of_frame, rx_end_of_frame => rx_end_of_frame, rx_start_of_multiframe => rx_start_of_multiframe, rx_end_of_multiframe => rx_end_of_multiframe, rx_frame_error => rx_frame_error, rx_sync => rx_sync, s_axi_aclk => s_axi_aclk, s_axi_aresetn => s_axi_aresetn, s_axi_awaddr => s_axi_awaddr, s_axi_awvalid => s_axi_awvalid, s_axi_awready => s_axi_awready, s_axi_wdata => s_axi_wdata, s_axi_wstrb => s_axi_wstrb, s_axi_wvalid => s_axi_wvalid, s_axi_wready => s_axi_wready, s_axi_bresp => s_axi_bresp, s_axi_bvalid => s_axi_bvalid, s_axi_bready => s_axi_bready, s_axi_araddr => s_axi_araddr, s_axi_arvalid => s_axi_arvalid, s_axi_arready => s_axi_arready, s_axi_rdata => s_axi_rdata, s_axi_rresp => s_axi_rresp, s_axi_rvalid => s_axi_rvalid, s_axi_rready => s_axi_rready ); i_ILA55 : ila_0 port map ( clk => rx_core_clk,--inClk, probe0 => trig0, probe1 => trig1, probe2 => trig2, probe3 => trig3, probe4 => trig4 ); trig0(0)<=rx_tvalid; trig1<=rx_tdata(15 downto 0); trig2<=rx_tdata(31 downto 16); trig3<=rx_tdata(47 downto 32); trig4<=rx_tdata(63 downto 48); end Behavioral; Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Lmx2315 2 15 октября, 2019 Опубликовано 15 октября, 2019 · Жалоба советую начать изучать jesd204 иначе будет туго. Чтобы он заработал надо приёмную и передающую часть , перед тем как поднимется линк , настраивать на одни параметры линии : число линий, скорость, режимы работы. Причём ацп надо сначало по его spi запрограмировать. В первом приближении , если у вас всё настроено, то смотрят сигнал SYNC_N - если он в нуле , значит нет синхронизации по линку. Но для этого , повторюсь надо кучу всего настроить. Тактовые частоты , sysref и т.д. p/s/ для начала надо добиться приёма в ПЛИС служебного символа "К" (K.28.5) по линиям - это будет означать, что по крайней мере частоты работы между ПЛИС и АЦП одинаковые. Потом надо идти дальше по джезду. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
gosha-z 2 16 октября, 2019 Опубликовано 16 октября, 2019 · Жалоба Не надо изобретать лисапед Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Art55555 0 17 октября, 2019 Опубликовано 17 октября, 2019 · Жалоба 23 hours ago, gosha-z said: Не надо изобретать лисапед Как это можно мне использовать? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
gosha-z 2 18 октября, 2019 Опубликовано 18 октября, 2019 · Жалоба 22 hours ago, Art55555 said: Как это можно мне использовать? Вот так Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Art55555 0 23 октября, 2019 Опубликовано 23 октября, 2019 · Жалоба On 10/15/2019 at 10:52 AM, Lmx2315 said: советую начать изучать jesd204 иначе будет туго. Чтобы он заработал надо приёмную и передающую часть , перед тем как поднимется линк , настраивать на одни параметры линии : число линий, скорость, режимы работы. Причём ацп надо сначало по его spi запрограмировать. В первом приближении , если у вас всё настроено, то смотрят сигнал SYNC_N - если он в нуле , значит нет синхронизации по линку. Но для этого , повторюсь надо кучу всего настроить. Тактовые частоты , sysref и т.д. p/s/ для начала надо добиться приёма в ПЛИС служебного символа "К" (K.28.5) по линиям - это будет означать, что по крайней мере частоты работы между ПЛИС и АЦП одинаковые. Потом надо идти дальше по джезду. Получается, мои действия следующие: 1) По даташиту 9697 выбираю требуемый режим передачи данных с АЦП. это парамерты (L,M,S K и т.д.) 2) Ввожу эти параметры в 2 ядра (JESD PHY и просто JESD), генерю ядра, делаю битник. 3) С помощью SPI настраиваю 9697 на эти параметры. Теперь вопросы? 1) Где этот SYNC_N смотреть? 2) Где смотреть символ "К"? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Lmx2315 2 23 октября, 2019 Опубликовано 23 октября, 2019 · Жалоба 13 минут назад, Art55555 сказал: 1) Где этот SYNC_N смотреть? 2) Где смотреть символ "К"? SYNC_N - это сигнал выходной для приёмника jesd204 и входной для передатчика , у вашего АЦП это сигнал в дифф. виде - SYNCINB (20,21) нога. Символ "К" надо ловить в ПЛИС с гигабитных трансиверов после преобразования 10/8 , это служебный символ . его 16-чный код 0xBC (K.28.5 ) . Он передаётся в линию до момента синхронизации . Как только приёмник jesd204 примет Символ "К" по всем линиям джезда , приёмник переведёт SYNC_N из "0" в "1" . з.ы. советую отключить в ацп скрэмблирование. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Art55555 0 31 октября, 2019 Опубликовано 31 октября, 2019 · Жалоба On 10/23/2019 at 12:21 PM, Lmx2315 said: SYNC_N - это сигнал выходной для приёмника jesd204 и входной для передатчика , у вашего АЦП это сигнал в дифф. виде - SYNCINB (20,21) нога. Символ "К" надо ловить в ПЛИС с гигабитных трансиверов после преобразования 10/8 , это служебный символ . его 16-чный код 0xBC (K.28.5 ) . Он передаётся в линию до момента синхронизации . Как только приёмник jesd204 примет Символ "К" по всем линиям джезда , приёмник переведёт SYNC_N из "0" в "1" . з.ы. советую отключить в ацп скрэмблирование. Смотрите, что в итоге получается. Принял за основу следующие данные: N'=16, N=14, L=4, M=1, F=1, CS=0, K=32. Вопросы: 1) Я так и не нашёл где в Xilinx Core JESD PHY и JESD настраиваются N', N, M, CS? Регистрами они на АЦП настраиваются, а вот их ПЛИСная "вторая половина" отсутствует. 2) Последовательность у меня получается следующая (выложу по регистрово сегодня) сброс, powerdown link JESD, настройка (N'=16, N=14, L=4, M=1, F=1, CS=0, K=32.), powerup link JESD. Всё правильно? 3) Критерием того, что как минимум есть коннект, есть сигнал SYNC_N. Я правильно понимаю, что это выходной сигнал из порта rx_sync компонента JESD? На данный момент я его отправляю на OBUFDS, после чего, на АЦП? Так? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Lmx2315 2 31 октября, 2019 Опубликовано 31 октября, 2019 · Жалоба 1 час назад, Art55555 сказал: 3) Критерием того, что как минимум есть коннект, есть сигнал SYNC_N. Я правильно понимаю, что это выходной сигнал из порта rx_sync компонента JESD? На данный момент я его отправляю на OBUFDS, после чего, на АЦП? Так? я с xilinx -ким ждездом не работал , но что точно это то что SYNC_N - это выходной сигнал у приёмника по jesd204 . В процессе коннекта SYNC_N - сначала в нуле , а потом при синхронизации встаёт в единицу. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Art55555 0 1 ноября, 2019 Опубликовано 1 ноября, 2019 (изменено) · Жалоба Выкладываю команды. I have AD9697, Kintex 7 and AD9528 for clocking. AD9528 works with SI570 (100 MHz base). AD9528 gives me 2 clocks 1200 MHz (OUT0 and OUT 13) for ADC and FPGA. Alsow AD9528 gives m2 2 clocks 120 MHz (OUT2 and OUT 3) for ADC and FPGA for SYS_REF. Additional clk 120 MHz foe FPGA OUT1. This seems well -counters OK. All screenshots here (AD9528 parameters): https://yadi.sk/d/yStQBZxBSRFnRQ Next stage I setup AD9697: I want to setup theese parameters JESD: N'=16, N=14, L=4, M=1, F=1, CS=0, K=32. What I do: 1) PWDN hard reset '1' 2) PWDN hard reset '0'. 3) Power down via SPI ( 0002 03) (address and command) 4) Power up via SPI ( 0002 00) (address and command) 5) Soft reset 0000 81 6) JESD lind down 0571 01 7) NEXT 1228 4F 1228 0F 1222 00 1222 04 1222 00 1262 08 1262 00 8) Setup Link Parameters: 058B 03 058C 00 058D 1F 058E 10 058F 0D 0590 0F 9) JESD lind up 0571 00. SYNC low(( Скрины https://yadi.sk/d/yStQBZxBSRFnRQ Изменено 1 ноября, 2019 пользователем Art55555 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Art55555 0 2 декабря, 2019 Опубликовано 2 декабря, 2019 · Жалоба Получилось поставить линк, но теперь что-то данные плохие идут. I have AD9697, Kintex 7 and AD9528 for clocking. AD9528 works with SI570 (100 MHz base). AD9528 gives me clocks: 1000 Mhz - for AD9697 250 Mhz - Ref CLK (for Kintex) 31.25 Mhz - SysRef (for AD9697 and Kintex). I setup AD9697: N'=16, N=14, L=4, M=1, F=1, CS=0, K=32. What I do: 0571 15 058B 03 058C 00 058D 1F 058E 10 058F 0D 0590 0F 0571 14 SYNC OK (always '1')) Next: 0551 01, 0552 02, 0553 03, 0554 04, 0555 05, 0556 06, 0557 07, 0558 08 - Test pattrern refisters/ Tests: 1) 0574 01 - Result: b5b5b5b5----b5 (127 bit) 2) 0574 04, 0574 054, 0574 06 - Link down. 3) 0573 0E Result: 0705030108060402 0705030108060402 4) 0573 01 Result: aa55aa55aa55aa55aa55aa55aa55aa55 5) 0573 02 Result: ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00 6)0573 11 Result: b54ab54ab54ab54ab54ab54ab54ab54a 7) 057321 Result: aa55aa55aa55aa55aa55aa55aa55aa55 If 0571 14 - data wrong. Ramp test - fail/ Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться