Hello,
Your advice did solve the data problem but the "Tag" signal is not
synchronized at all. I need the "DCLK" to be OFF (zero) when "Tag" is
high for one clock cycle then "Data" (SER_OUT) has to be at the output
for half of the "DCLK" clock cycle before the "DCLK" gets to the
output pin of the FPGA. I got this waveform as you can see in the
following figure 1
http://img100.imageshack.us/my.php?image=waveformfq8.png
I got figure 1 using the state mode of the logic analyzer. But when I
use the timing mode I get everything same except the Tag repeats
itself several time during serial outing the one set of data which is
wrong. Please advice! My code is following
serialcount : process ( clk_b, Reset_counter)
begin
if ( Reset_counter = '1') Then
p2s_counter <= ( others =>'0');
elsif rising_edge (clk_b) then
p2s_counter <= p2s_counter + 1;
ser_out_sig_1<= ser_buff ( to_integer ( p2s_counter ) );
else
end if;
end process;
-- Data Clock Delay
serial_count_delay : process (clk_b, Reset_counter)
Begin
if ( Reset_counter = '1') then
elsif rising_edge(clk_b) then
ser_out_sig_2 <= ser_out_sig_1;
else
end if;
End process;
-- Data Clock Second Delay
process (clk_b, Reset_counter)
Begin
if ( Reset_counter = '1') then
elsif falling_edge(clk_b) then
ser_out <= ser_out_sig_2;
else
end if;
End process;
div : process ( clk1x)
begin
If ( Reset_counter = '1') Then
clk_divider <= "00000000000";
elsIf rising_edge (clk1x) then
clk_divider <= clk_divider + 1;
end if;
end process;
process(Reset_counter)
begin
If ( Reset_counter = '1') Then
Tag_out_0 <= '1';
Tag_out_1 <= '1';
elsif falling_edge (clk_b) then
Tag_out_1 <= Tag_out_0;
Tag_out_0 <= '0';
end if;
Tag <= Tag_out_1;
end process;
Regards,
John