Merge pull request #126 from jboone/cpld_tx_q_invert_fix
CPLD TX Q invert fix
This commit is contained in:
Binary file not shown.
@ -1,5 +1,5 @@
|
|||||||
Programmer Jedec Bit Map
|
Programmer Jedec Bit Map
|
||||||
Date Extracted: Sat Aug 16 17:13:17 2014
|
Date Extracted: Wed Aug 20 08:36:47 2014
|
||||||
|
|
||||||
QF25812*
|
QF25812*
|
||||||
QP100*
|
QP100*
|
||||||
@ -68,7 +68,7 @@ L001440 110101111111011101111111111111111111111111101111111111111111111111111111
|
|||||||
L001520 11110111111110111111110111111111111111111101111111111111111111111111111111111111*
|
L001520 11110111111110111111110111111111111111111101111111111111111111111111111111111111*
|
||||||
L001600 11010111111110110111111011111111111111111111111111111111111111111111111111111111*
|
L001600 11010111111110110111111011111111111111111111111111111111111111111111111111111111*
|
||||||
L001680 11111011110111111111111111111111111111111111111111111111111111111111111111111111*
|
L001680 11111011110111111111111111111111111111111111111111111111111111111111111111111111*
|
||||||
L001760 11111111110111111111111111111111111101111111111111111111111111111111111111111111*
|
L001760 11111111110111111111111111111111111110111111111111111111111111111111111111111111*
|
||||||
L001840 11111111111111111111111111111111111111111111111111111111111111111111111111111111*
|
L001840 11111111111111111111111111111111111111111111111111111111111111111111111111111111*
|
||||||
L001920 11111111111111111111111111111111111111111111111111111111111111111111111111111111*
|
L001920 11111111111111111111111111111111111111111111111111111111111111111111111111111111*
|
||||||
L002000 11111111111111111111111111111111111111111111111111111111111111111111111111111111*
|
L002000 11111111111111111111111111111111111111111111111111111111111111111111111111111111*
|
||||||
@ -232,21 +232,21 @@ L007056 1111111111111111*
|
|||||||
L007072 1111111111111111*
|
L007072 1111111111111111*
|
||||||
|
|
||||||
Note Block 1 PLA AND array *
|
Note Block 1 PLA AND array *
|
||||||
L007088 11111111110111111011111111111101011111111111111111111111111111111111111111111111*
|
L007088 11111111110111110111111111111101011111111111111111111111111111111111111111111111*
|
||||||
L007168 11111101111111111111111111111111101111111111111111111111111111111111111111111111*
|
L007168 11111101111111111111111111111111101111111111111111111111111111111111111111111111*
|
||||||
L007248 11111111110111111011011111111101111111111111111111111111111111111111111111111111*
|
L007248 11111111110111110111011111111101111111111111111111111111111111111111111111111111*
|
||||||
L007328 11111101111111111111101111111111111111111111111111111111111111111111111111111111*
|
L007328 11111101111111111111101111111111111111111111111111111111111111111111111111111111*
|
||||||
L007408 11111111110111111001111111111101111111111111111111111111111111111111111111111111*
|
L007408 11111111110111110101111111111101111111111111111111111111111111111111111111111111*
|
||||||
L007488 11111101111111111110111111111111111111111111111111111111111111111111111111111111*
|
L007488 11111101111111111110111111111111111111111111111111111111111111111111111111111111*
|
||||||
L007568 11111111110111111011111111111101111111111101111111111111111111111111111111111111*
|
L007568 11111111110111110111111111111101111111111101111111111111111111111111111111111111*
|
||||||
L007648 11111101111111111111111111111111111111111110111111111111111111111111111111111111*
|
L007648 11111101111111111111111111111111111111111110111111111111111111111111111111111111*
|
||||||
L007728 11111111010111111011111111111101111111111111111111111111111111111111111111111111*
|
L007728 11111111010111110111111111111101111111111111111111111111111111111111111111111111*
|
||||||
L007808 11111101101111111111111111111111111111111111111111111111111111111111111111111111*
|
L007808 11111101101111111111111111111111111111111111111111111111111111111111111111111111*
|
||||||
L007888 11110111110111111011111111111101111111111111111111111111111111111111111111111111*
|
L007888 11110111110111110111111111111101111111111111111111111111111111111111111111111111*
|
||||||
L007968 11111001111111111111111111111111111111111111111111111111111111111111111111111111*
|
L007968 11111001111111111111111111111111111111111111111111111111111111111111111111111111*
|
||||||
L008048 11011111110111111011111111111101111111111111111111111111111111111111111111111111*
|
L008048 11011111110111110111111111111101111111111111111111111111111111111111111111111111*
|
||||||
L008128 11101101111111111111111111111111111111111111111111111111111111111111111111111111*
|
L008128 11101101111111111111111111111111111111111111111111111111111111111111111111111111*
|
||||||
L008208 11111111110111111011111111110101111111111111111111111111111111111111111111111111*
|
L008208 11111111110111110111111111110101111111111111111111111111111111111111111111111111*
|
||||||
L008288 11111101111111111111111111111011111111111111111111111111111111111111111111111111*
|
L008288 11111101111111111111111111111011111111111111111111111111111111111111111111111111*
|
||||||
L008368 11111111111111111111111111111111111111111111111111111111111111111111111111111111*
|
L008368 11111111111111111111111111111111111111111111111111111111111111111111111111111111*
|
||||||
L008448 11111111111111111111111111111111111111111111111111111111111111111111111111111111*
|
L008448 11111111111111111111111111111111111111111111111111111111111111111111111111111111*
|
||||||
@ -753,5 +753,5 @@ L025810 0*
|
|||||||
Note I/O Bank 1 Vcco *
|
Note I/O Bank 1 Vcco *
|
||||||
L025811 0*
|
L025811 0*
|
||||||
|
|
||||||
CFB9B*
|
CFB93*
|
||||||
AA89
|
AA7A
|
||||||
|
@ -32,7 +32,7 @@ entity top is
|
|||||||
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;
|
||||||
HOST_DECIM_SEL : in std_logic_vector(2 downto 0);
|
HOST_DECIM_SEL : in std_logic_vector(2 downto 0);
|
||||||
HOST_Q_INVERT : in std_logic;
|
HOST_Q_INVERT : in std_logic;
|
||||||
|
|
||||||
DA : in std_logic_vector(7 downto 0);
|
DA : in std_logic_vector(7 downto 0);
|
||||||
@ -61,11 +61,12 @@ architecture Behavioral of top is
|
|||||||
signal data_to_host_o : std_logic_vector(7 downto 0);
|
signal data_to_host_o : std_logic_vector(7 downto 0);
|
||||||
|
|
||||||
signal decimate_count : std_logic_vector(2 downto 0) := "111";
|
signal decimate_count : std_logic_vector(2 downto 0) := "111";
|
||||||
signal decimate_sel_i : std_logic_vector(2 downto 0);
|
signal decimate_sel_i : std_logic_vector(2 downto 0);
|
||||||
signal decimate_en : std_logic;
|
signal decimate_en : std_logic;
|
||||||
|
|
||||||
signal q_invert : std_logic;
|
signal q_invert : std_logic;
|
||||||
signal q_invert_mask : std_logic_vector(7 downto 0);
|
signal rx_q_invert_mask : std_logic_vector(7 downto 0);
|
||||||
|
signal tx_q_invert_mask : std_logic_vector(7 downto 0);
|
||||||
|
|
||||||
begin
|
begin
|
||||||
|
|
||||||
@ -98,38 +99,39 @@ begin
|
|||||||
transfer_direction_i <= to_dac when HOST_DIRECTION = '1'
|
transfer_direction_i <= to_dac when HOST_DIRECTION = '1'
|
||||||
else from_adc;
|
else from_adc;
|
||||||
|
|
||||||
decimate_sel_i <= HOST_DECIM_SEL;
|
decimate_sel_i <= HOST_DECIM_SEL;
|
||||||
|
|
||||||
------------------------------------------------
|
------------------------------------------------
|
||||||
|
|
||||||
decimate_en <= '1' when decimate_count = "111" else '0';
|
decimate_en <= '1' when decimate_count = "111" else '0';
|
||||||
|
|
||||||
process(host_clk_i)
|
process(host_clk_i)
|
||||||
begin
|
begin
|
||||||
if rising_edge(host_clk_i) then
|
if rising_edge(host_clk_i) then
|
||||||
if codec_clk_i = '1' then
|
if codec_clk_i = '1' then
|
||||||
if decimate_count = "111" or host_data_enable_i = '0' then
|
if decimate_count = "111" or host_data_enable_i = '0' then
|
||||||
decimate_count <= decimate_sel_i;
|
decimate_count <= decimate_sel_i;
|
||||||
else
|
else
|
||||||
decimate_count <= decimate_count + 1;
|
decimate_count <= decimate_count + 1;
|
||||||
end if;
|
end if;
|
||||||
end if;
|
end if;
|
||||||
end if;
|
end if;
|
||||||
end process;
|
end process;
|
||||||
|
|
||||||
q_invert <= HOST_Q_INVERT;
|
q_invert <= HOST_Q_INVERT;
|
||||||
q_invert_mask <= X"80" when q_invert = '1' else X"7f";
|
rx_q_invert_mask <= X"80" when q_invert = '1' else X"7f";
|
||||||
|
tx_q_invert_mask <= X"7F" when q_invert = '1' else X"80";
|
||||||
|
|
||||||
process(host_clk_i)
|
process(host_clk_i)
|
||||||
begin
|
begin
|
||||||
if rising_edge(host_clk_i) then
|
if rising_edge(host_clk_i) then
|
||||||
if codec_clk_i = '1' then
|
if codec_clk_i = '1' then
|
||||||
-- I: non-inverted between MAX2837 and MAX5864
|
-- I: non-inverted between MAX2837 and MAX5864
|
||||||
data_to_host_o <= adc_data_i xor X"80";
|
data_to_host_o <= adc_data_i xor X"80";
|
||||||
else
|
else
|
||||||
-- Q: inverted between MAX2837 and MAX5864
|
-- Q: inverted between MAX2837 and MAX5864
|
||||||
data_to_host_o <= adc_data_i xor q_invert_mask;
|
data_to_host_o <= adc_data_i xor rx_q_invert_mask;
|
||||||
end if;
|
end if;
|
||||||
end if;
|
end if;
|
||||||
end process;
|
end process;
|
||||||
|
|
||||||
@ -138,7 +140,7 @@ begin
|
|||||||
if rising_edge(host_clk_i) then
|
if rising_edge(host_clk_i) then
|
||||||
if transfer_direction_i = to_dac then
|
if transfer_direction_i = to_dac then
|
||||||
if codec_clk_i = '1' then
|
if codec_clk_i = '1' then
|
||||||
dac_data_o <= (data_from_host_i xor q_invert_mask) & q_invert_mask(0) & q_invert_mask(0);
|
dac_data_o <= (data_from_host_i xor tx_q_invert_mask) & tx_q_invert_mask(0) & tx_q_invert_mask(0);
|
||||||
else
|
else
|
||||||
dac_data_o <= (data_from_host_i xor X"80") & "00";
|
dac_data_o <= (data_from_host_i xor X"80") & "00";
|
||||||
end if;
|
end if;
|
||||||
|
Reference in New Issue
Block a user