J
john
Guest
Hello, I am getting 47 cominational feedback loops for the section of
my code that I am attaching with this message. I am using QuartusII.
Would anyone advice me that how to get rid of these combinational feed
back loops. I have Else for every IF/Else construct. Please advice!
Thanks
John
Process (DPR_CLK, sel_14bit_mux )
Begin
If (DPR_CLK 'event And DPR_CLK='1') Then
If (sel_14bit_mux = "11") Then
-- Frame Counter --
Address_bus( 5 ) <= Frame_cntr(0);
Address_bus( 6 ) <= Frame_cntr(1);
Address_bus( 7 ) <= Frame_cntr(2);
Address_bus( 8 ) <= Frame_cntr(3);
Address_bus( 9 ) <= Frame_cntr(4);
Address_bus( 10 ) <= Frame_cntr(5);
Address_bus( 11 ) <= Frame_cntr(6);
Address_bus( 12 ) <= Frame_cntr(7);
Address_bus( 13 ) <= Frame_cntr(8);
Address_bus( 14 ) <= Frame_cntr(9); Address_bus( 15
) <= Frame_cntr(10);
Address_bus( 16 ) <= Frame_cntr(11);
Address_bus( 17 ) <= Frame_cntr(12);
Address_bus( 18 ) <= Frame_cntr(13);
-- Channel Counter --
Address_bus( 4 downto 0 ) <= countb_mux_datain;
Else If ( sel_14bit_mux="00")Then
Address_bus( 18 downto 5 ) <= TEMP;
-- Sample Counter --
Address_bus( 4 downto 0 ) <= countc_mux_datain;
Else If ( sel_14bit_mux = "01") Then
Address_bus( 5 ) <= '1';
Address_bus( 6 ) <= '0';
Address_bus( 7 ) <= '0';
Address_bus( 8 ) <= '0';
Address_bus( 9 ) <= '0';
Address_bus( 10 ) <= '0';
Address_bus( 11 ) <= '0';
Address_bus( 12 ) <= '0';
Address_bus( 13 ) <= '0';
Address_bus( 14 ) <= '0';
Address_bus( 15 ) <= '0';
Address_bus( 16 ) <= '0';
Address_bus( 17 ) <= '0';
Address_bus( 18 ) <= '0';
Address_bus( 4 downto 0 ) <= countb_mux_datain;
End If;
End If;
End If;
End If;
If (DPR_CLK 'event And DPR_CLK='1')Then
If( latch_enable ='1') Then
TEMP <= Data_Bus;
Else
End If;
End If;
If (DPR_CLK 'event And DPR_CLK='1')Then
If( latch_CPLD ='1') Then
Final_Temp <= Data_Bus;
Else
End If;
End If;
If (DPR_CLK 'event And DPR_CLK='1')Then
If( P2S_load ='1') Then
Ser_buff(18) <= Final_Temp(0);
Ser_buff(17) <= Final_Temp(1);
Ser_buff(16) <= Final_Temp(2);
Ser_buff(15) <= Final_Temp(3);
Ser_buff(14) <= Final_Temp(4);
Ser_buff(13) <= Final_Temp(5);
Ser_buff(12) <= Final_Temp(6);
Ser_buff(11) <= Final_Temp(7);
Ser_buff(10) <= Final_Temp(8);
Ser_buff(9) <= Final_Temp(9);
Ser_buff(8) <= Final_Temp(10);
Ser_buff(7) <= Final_Temp(11);
Ser_buff(6) <= Final_Temp(12);
Ser_buff(5) <= Final_Temp(13);
Ser_buff(4) <= countb_mux_datain(0) ;
--(LSB....MSB)
Ser_buff(3) <= countb_mux_datain(1) ;
Ser_buff(2) <= countb_mux_datain(2) ;
Ser_buff(1) <= countb_mux_datain(3) ;
Ser_buff(0) <= countb_mux_datain(4) ;
Else
End If;
End If;
-- Reading the counter number (New Addition) --
If (DPR_CLK 'event And DPR_CLK='1') Then
If (Addr_active='1') Then
Address_bus <= "0000000000000000001";
Else
End If;
End If;
my code that I am attaching with this message. I am using QuartusII.
Would anyone advice me that how to get rid of these combinational feed
back loops. I have Else for every IF/Else construct. Please advice!
Thanks
John
Process (DPR_CLK, sel_14bit_mux )
Begin
If (DPR_CLK 'event And DPR_CLK='1') Then
If (sel_14bit_mux = "11") Then
-- Frame Counter --
Address_bus( 5 ) <= Frame_cntr(0);
Address_bus( 6 ) <= Frame_cntr(1);
Address_bus( 7 ) <= Frame_cntr(2);
Address_bus( 8 ) <= Frame_cntr(3);
Address_bus( 9 ) <= Frame_cntr(4);
Address_bus( 10 ) <= Frame_cntr(5);
Address_bus( 11 ) <= Frame_cntr(6);
Address_bus( 12 ) <= Frame_cntr(7);
Address_bus( 13 ) <= Frame_cntr(8);
Address_bus( 14 ) <= Frame_cntr(9); Address_bus( 15
) <= Frame_cntr(10);
Address_bus( 16 ) <= Frame_cntr(11);
Address_bus( 17 ) <= Frame_cntr(12);
Address_bus( 18 ) <= Frame_cntr(13);
-- Channel Counter --
Address_bus( 4 downto 0 ) <= countb_mux_datain;
Else If ( sel_14bit_mux="00")Then
Address_bus( 18 downto 5 ) <= TEMP;
-- Sample Counter --
Address_bus( 4 downto 0 ) <= countc_mux_datain;
Else If ( sel_14bit_mux = "01") Then
Address_bus( 5 ) <= '1';
Address_bus( 6 ) <= '0';
Address_bus( 7 ) <= '0';
Address_bus( 8 ) <= '0';
Address_bus( 9 ) <= '0';
Address_bus( 10 ) <= '0';
Address_bus( 11 ) <= '0';
Address_bus( 12 ) <= '0';
Address_bus( 13 ) <= '0';
Address_bus( 14 ) <= '0';
Address_bus( 15 ) <= '0';
Address_bus( 16 ) <= '0';
Address_bus( 17 ) <= '0';
Address_bus( 18 ) <= '0';
Address_bus( 4 downto 0 ) <= countb_mux_datain;
End If;
End If;
End If;
End If;
If (DPR_CLK 'event And DPR_CLK='1')Then
If( latch_enable ='1') Then
TEMP <= Data_Bus;
Else
End If;
End If;
If (DPR_CLK 'event And DPR_CLK='1')Then
If( latch_CPLD ='1') Then
Final_Temp <= Data_Bus;
Else
End If;
End If;
If (DPR_CLK 'event And DPR_CLK='1')Then
If( P2S_load ='1') Then
Ser_buff(18) <= Final_Temp(0);
Ser_buff(17) <= Final_Temp(1);
Ser_buff(16) <= Final_Temp(2);
Ser_buff(15) <= Final_Temp(3);
Ser_buff(14) <= Final_Temp(4);
Ser_buff(13) <= Final_Temp(5);
Ser_buff(12) <= Final_Temp(6);
Ser_buff(11) <= Final_Temp(7);
Ser_buff(10) <= Final_Temp(8);
Ser_buff(9) <= Final_Temp(9);
Ser_buff(8) <= Final_Temp(10);
Ser_buff(7) <= Final_Temp(11);
Ser_buff(6) <= Final_Temp(12);
Ser_buff(5) <= Final_Temp(13);
Ser_buff(4) <= countb_mux_datain(0) ;
--(LSB....MSB)
Ser_buff(3) <= countb_mux_datain(1) ;
Ser_buff(2) <= countb_mux_datain(2) ;
Ser_buff(1) <= countb_mux_datain(3) ;
Ser_buff(0) <= countb_mux_datain(4) ;
Else
End If;
End If;
-- Reading the counter number (New Addition) --
If (DPR_CLK 'event And DPR_CLK='1') Then
If (Addr_active='1') Then
Address_bus <= "0000000000000000001";
Else
End If;
End If;