Eliminate ill-conceived HOST_CLK from CPLD.
Rearrange clocks to not use AC-coupled CLK1 from Si5351C. Move CODEC_CLK to GCLK1, CODEC_X2_CLK (now HOST_CLK, too) to GCLK2. Add trace on Jellybean PCB to connect GCLK2 to LPC4330 pin 56 (P1_12) -- a different SGPIO8.
This commit is contained in:
@ -18,9 +18,9 @@
|
|||||||
# the Free Software Foundation, Inc., 51 Franklin Street,
|
# the Free Software Foundation, Inc., 51 Franklin Street,
|
||||||
# Boston, MA 02110-1301, USA.
|
# Boston, MA 02110-1301, USA.
|
||||||
|
|
||||||
NET "CODEC_CLK" LOC="22" |FAST |IOSTANDARD=LVCMOS18;
|
NET "CODEC_CLK" LOC="23" |FAST |IOSTANDARD=LVCMOS18;
|
||||||
NET "CODEC_X2_CLK" LOC="23" |FAST |IOSTANDARD=LVCMOS18;
|
NET "CODEC_X2_CLK" LOC="27" |FAST |IOSTANDARD=LVCMOS18;
|
||||||
#NET "GCLK2" LOC="27" |FAST |IOSTANDARD=LVCMOS18;
|
#NET "GCLK0" LOC="22" |FAST |IOSTANDARD=LVCMOS18;
|
||||||
|
|
||||||
NET "CODEC_X2_CLK" TNM_NET = CODEC_X2_CLK;
|
NET "CODEC_X2_CLK" TNM_NET = CODEC_X2_CLK;
|
||||||
TIMESPEC TS_codec_x2_data = PERIOD "CODEC_X2_CLK" 50 ns;
|
TIMESPEC TS_codec_x2_data = PERIOD "CODEC_X2_CLK" 50 ns;
|
||||||
@ -61,7 +61,7 @@ NET "B1AUX<9>" LOC="49" |FAST |IOSTANDARD=LVCMOS18;
|
|||||||
NET "HOST_DIRECTION" LOC="71" |FAST |IOSTANDARD=LVCMOS33;
|
NET "HOST_DIRECTION" LOC="71" |FAST |IOSTANDARD=LVCMOS33;
|
||||||
NET "HOST_DISABLE" LOC="76" |FAST |IOSTANDARD=LVCMOS33;
|
NET "HOST_DISABLE" LOC="76" |FAST |IOSTANDARD=LVCMOS33;
|
||||||
NET "HOST_CAPTURE" LOC="91" |FAST |IOSTANDARD=LVCMOS33;
|
NET "HOST_CAPTURE" LOC="91" |FAST |IOSTANDARD=LVCMOS33;
|
||||||
NET "HOST_CLK" LOC="68" |FAST |IOSTANDARD=LVCMOS33;
|
#NET "HOST_CLK" LOC="68" |FAST |IOSTANDARD=LVCMOS33;
|
||||||
NET "HOST_DATA<7>" LOC="77" |FAST |IOSTANDARD=LVCMOS33;
|
NET "HOST_DATA<7>" LOC="77" |FAST |IOSTANDARD=LVCMOS33;
|
||||||
NET "HOST_DATA<6>" LOC="61" |FAST |IOSTANDARD=LVCMOS33;
|
NET "HOST_DATA<6>" LOC="61" |FAST |IOSTANDARD=LVCMOS33;
|
||||||
NET "HOST_DATA<5>" LOC="64" |FAST |IOSTANDARD=LVCMOS33;
|
NET "HOST_DATA<5>" LOC="64" |FAST |IOSTANDARD=LVCMOS33;
|
||||||
|
@ -27,7 +27,6 @@ use UNISIM.vcomponents.all;
|
|||||||
entity top is
|
entity top is
|
||||||
Port(
|
Port(
|
||||||
HOST_DATA : inout std_logic_vector(7 downto 0);
|
HOST_DATA : inout std_logic_vector(7 downto 0);
|
||||||
HOST_CLK : out std_logic;
|
|
||||||
HOST_CAPTURE : out std_logic;
|
HOST_CAPTURE : out std_logic;
|
||||||
HOST_DISABLE : in std_logic;
|
HOST_DISABLE : in std_logic;
|
||||||
HOST_DIRECTION : in std_logic;
|
HOST_DIRECTION : in std_logic;
|
||||||
@ -50,7 +49,6 @@ architecture Behavioral of top is
|
|||||||
signal dac_data_o : std_logic_vector(9 downto 0);
|
signal dac_data_o : std_logic_vector(9 downto 0);
|
||||||
|
|
||||||
signal host_clk_i : std_logic;
|
signal host_clk_i : std_logic;
|
||||||
signal host_clk_o : std_logic;
|
|
||||||
|
|
||||||
type transfer_direction is (from_adc, to_dac);
|
type transfer_direction is (from_adc, to_dac);
|
||||||
signal transfer_direction_i : transfer_direction;
|
signal transfer_direction_i : transfer_direction;
|
||||||
@ -90,7 +88,6 @@ begin
|
|||||||
else (others => 'Z');
|
else (others => 'Z');
|
||||||
data_from_host_i <= HOST_DATA;
|
data_from_host_i <= HOST_DATA;
|
||||||
|
|
||||||
HOST_CLK <= host_clk_o;
|
|
||||||
HOST_CAPTURE <= host_data_capture_o;
|
HOST_CAPTURE <= host_data_capture_o;
|
||||||
host_data_enable_i <= not HOST_DISABLE;
|
host_data_enable_i <= not HOST_DISABLE;
|
||||||
transfer_direction_i <= to_dac when HOST_DIRECTION = '1'
|
transfer_direction_i <= to_dac when HOST_DIRECTION = '1'
|
||||||
@ -98,10 +95,6 @@ begin
|
|||||||
|
|
||||||
------------------------------------------------
|
------------------------------------------------
|
||||||
|
|
||||||
host_clk_o <= host_clk_i;
|
|
||||||
|
|
||||||
------------------------------------------------
|
|
||||||
|
|
||||||
process(host_clk_i)
|
process(host_clk_i)
|
||||||
begin
|
begin
|
||||||
if rising_edge(host_clk_i) then
|
if rising_edge(host_clk_i) then
|
||||||
|
@ -29,7 +29,6 @@ ARCHITECTURE behavior OF top_tb IS
|
|||||||
COMPONENT top
|
COMPONENT top
|
||||||
PORT(
|
PORT(
|
||||||
HOST_DATA : INOUT std_logic_vector(7 downto 0);
|
HOST_DATA : INOUT std_logic_vector(7 downto 0);
|
||||||
HOST_CLK : OUT std_logic;
|
|
||||||
HOST_CAPTURE : OUT std_logic;
|
HOST_CAPTURE : OUT std_logic;
|
||||||
HOST_DISABLE : IN std_logic;
|
HOST_DISABLE : IN std_logic;
|
||||||
HOST_DIRECTION : IN std_logic;
|
HOST_DIRECTION : IN std_logic;
|
||||||
@ -56,14 +55,12 @@ ARCHITECTURE behavior OF top_tb IS
|
|||||||
|
|
||||||
--Outputs
|
--Outputs
|
||||||
signal DD : std_logic_vector(9 downto 0);
|
signal DD : std_logic_vector(9 downto 0);
|
||||||
signal HOST_CLK : std_logic;
|
|
||||||
signal HOST_CAPTURE : std_logic;
|
signal HOST_CAPTURE : std_logic;
|
||||||
|
|
||||||
begin
|
begin
|
||||||
|
|
||||||
uut: top PORT MAP (
|
uut: top PORT MAP (
|
||||||
HOST_DATA => HOST_DATA,
|
HOST_DATA => HOST_DATA,
|
||||||
HOST_CLK => HOST_CLK,
|
|
||||||
HOST_CAPTURE => HOST_CAPTURE,
|
HOST_CAPTURE => HOST_CAPTURE,
|
||||||
HOST_DISABLE => HOST_DISABLE,
|
HOST_DISABLE => HOST_DISABLE,
|
||||||
HOST_DIRECTION => HOST_DIRECTION,
|
HOST_DIRECTION => HOST_DIRECTION,
|
||||||
@ -126,10 +123,10 @@ begin
|
|||||||
|
|
||||||
for i in 0 to 10 loop
|
for i in 0 to 10 loop
|
||||||
HOST_DATA <= (others => '0');
|
HOST_DATA <= (others => '0');
|
||||||
wait until rising_edge(host_clk) and HOST_CAPTURE = '1';
|
wait until rising_edge(CODEC_CLK) and HOST_CAPTURE = '1';
|
||||||
|
|
||||||
HOST_DATA <= (others => '1');
|
HOST_DATA <= (others => '1');
|
||||||
wait until rising_edge(host_clk) and HOST_CAPTURE = '1';
|
wait until rising_edge(CODEC_CLK) and HOST_CAPTURE = '1';
|
||||||
end loop;
|
end loop;
|
||||||
|
|
||||||
wait;
|
wait;
|
||||||
|
Reference in New Issue
Block a user