将内部结构时钟输出到LVDS(xilinx zynq器件)

时间:2017-09-16 23:03:21

标签: vhdl xilinx

我正在尝试将我的结构时钟推到ZedBoard上的输出LVDS对。我正在使用scary_jeff提供的解决方案here

FCLK_CLK1正在使用设置为150 MHz的DDR PLL。我为IP创建了一个测试平台,显示了已经输出的输出(输入时钟之后的lvds对以及对之间的预期反转)。

vhdl用于生成ip:

library ieee;
use ieee.std_logic_1164.all;
use ieee.numeric_std.all;

library UNISIM;
use UNISIM.Vcomponents.all;

entity clk_to_lvds_v1_0 is
    port (
        clk_in  : in std_logic;
        clk_out_p : out std_logic;
        clk_out_n : out std_logic
    );
end clk_to_lvds_v1_0;

architecture arch_imp of clk_to_lvds_v1_0 is

signal clk_buf : std_logic;
signal clk_inv : std_logic;

begin

-- V1
--    oddr_inst : oddr
--    generic map(
--        DDR_CLK_EDGE => "SAME_EDGE",
--        INIT => '0',
--        SRTYPE => "SYNC"
--    )
--    port map (
--        Q => clk_buf,
--        C => clk_in,
--        CE => '1',
--        D1 => '1',
--        D2 => '0',
--        R => '0',
--        S => '0'
--    );

-- V2

clk_inv <= not clk_in;

ODDR_pxlclk_p : ODDR2
generic map(
    DDR_ALIGNMENT => "NONE",
    INIT          => '0',
    SRTYPE        => "SYNC")
port map(
    Q  => clk_buf,
    C0 => clk_in,
    C1 => clk_inv,
    CE => '1',
    D0 => '1',
    D1 => '0',
    R  => '0',
    S  => '0'
);

    obufds_inst : obufds
    generic map ( IOSTANDARD=>"LVDS_25" ) 
    port map(
        O  => clk_out_p,
        OB => clk_out_n,
        I  => clk_buf
    );

end arch_imp;

使用LVDS_25标准将输出推送到JC1_P / N pmod端口。

set_property PACKAGE_PIN AB7 [get_ports {clk_out_p[0]}]
set_property IOSTANDARD LVDS_25 [get_ports {clk_out_p[0]}]

我用示波器测量输出(6 GHz,20 GS / s),我看到的都是噪音。我打开了设计中的一些LED,以确保正确加载比特流。

这仍然是Xilinx在I / O上输出时钟的首选方法吗?

vivado design

1 个答案:

答案 0 :(得分:1)

问题是我没有在ARM内核上初始化ps7_init,因此无法启动时钟。完成之后,我看到示波器上的输出时钟。