Hey there,
Thanks for the advice on the PIO to control valid. Good suggestion! I do have a FIFO in my system. Another question, do I need a timing adapter somewhere in my setup? Can I somehow use 16bits/symbol on my custom block output or do I need to change it to 8bits per symbol (even though in reality it is a 16bit word that I need)? Here is an outline of what I have in SOPC:
AD_LVDS - ALTLVDS megafunction (just added it into SOPC builder, no changes to it)
AD_Zero_Pad_Data_Converter - my custom function. Here is where I am confused. My data is really 16bit data 8 symbols per beat. Seems like all the other stuff after wants 8 bits per symbol. Is this ok? Code is at the bottom.
Dual Clock Fifo (16 bits per symbol 8 symbols per beat)
Data format adapter(can't find a way to convert this to 8 bits per symbol)
ST bytes to Packets ( expects: Data width = 8 bits; Bits per symbol = 8.
not sure why the hell I need to make everything packets, I guess SGDMA expects this)
Data format adapter
SGDMA
Thanks for any advice/help,
Andrew
Here is my code:
ENTITY AD_Zero_Pad_Data_Converter IS
PORT
(
rx_in : IN STD_LOGIC_VECTOR (95 DOWNTO 0);
clock : IN STD_LOGIC := '0';
ready : IN STD_LOGIC;
ADC_Data_Ready : IN STD_LOGIC :='0';
valid : OUT STD_LOGIC;
rx_out : OUT STD_LOGIC_VECTOR (127 DOWNTO 0)
);
END AD_Zero_Pad_Data_Converter;
ARCHITECTURE SYN OF AD_Zero_Pad_Data_Converter IS
signal rx_outCh1 : STD_LOGIC_VECTOR(15 downto 0);
signal rx_outCh2 : STD_LOGIC_VECTOR(15 downto 0);
signal rx_outCh3 : STD_LOGIC_VECTOR(15 downto 0);
signal rx_outCh4 : STD_LOGIC_VECTOR(15 downto 0);
signal rx_outCh5 : STD_LOGIC_VECTOR(15 downto 0);
signal rx_outCh6 : STD_LOGIC_VECTOR(15 downto 0);
signal rx_outCh7 : STD_LOGIC_VECTOR(15 downto 0);
signal rx_outCh8 : STD_LOGIC_VECTOR(15 downto 0);
BEGIN
rx_outCh1 <= "0000" & rx_in(11 DOWNTO 0);
rx_outCh2 <= "0000" & rx_in(23 DOWNTO 12);
rx_outCh3 <= "0000" & rx_in(35 DOWNTO 24);
rx_outCh4 <= "0000" & rx_in(47 DOWNTO 36);
rx_outCh5 <= "0000" & rx_in(59 DOWNTO 48);
rx_outCh6 <= "0000" & rx_in(71 DOWNTO 60);
rx_outCh7 <= "0000" & rx_in(83 DOWNTO 72);
rx_outCh8 <= "0000" & rx_in(95 DOWNTO 84);
valid <= ADC_Data_Ready;
END SYN;