www.mikrocontroller.net

Forum: FPGA, VHDL & Co. Asynchronous load of non constant data for is not supported


Autor: Steffen (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich versuche gerade ein ADC Interface in VHDL zu schreiben.
library IEEE;
use IEEE.std_logic_1164.all;

entity C_ADC_LTC2296 is
 Generic (
      constant G_ClockSpeed: integer range 1 to 150*10**6 := 32 * 10**6
      );
 Port   (
       -- ADC
      ADC_A_DA: In std_logic_vector (13 downto 0);
      ADC_A_CLK: Out std_logic;
      ADC_A_OF: In std_logic;
      ADC_A_nOE: Out std_logic;
      ADC_A_SHDN: Out std_logic;
      ADC_B_DA: In std_logic_vector (13 downto 0);
      ADC_B_CLK: Out std_logic;
      ADC_B_OF: In std_logic;
      ADC_B_nOE: Out std_logic;
      ADC_B_SHDN: Out std_logic;
      
      nRESET: In std_logic;
      SYSCLK: In std_logic;
      
      Divisor_Channel_A: integer range 0 to G_ClockSpeed;
      Divisor_Channel_B: integer range 0 to G_ClockSpeed;
      
      ADC_Channel_A_Sleep: In std_logic;
      ADC_Channel_A_NewData: out std_logic;
      ADC_Channel_A: Out std_logic_vector(13 downto 0);  
      ADC_Channel_A_Overflow: out std_logic;

      ADC_Channel_B_Sleep: In std_logic;
      ADC_Channel_B_NewData: out std_logic;
      ADC_Channel_B: Out std_logic_vector(13 downto 0);
      ADC_Channel_B_Overflow: out std_logic
    );
 end C_ADC_LTC2296;
 
architecture A_ADC_LTC2296 of C_ADC_LTC2296 is

type ADC_STATE is (S_SLEEP, CLK_HIGH, CLK_LOW);

signal ADC_CurrentState_A, ADC_CurrentState_B, ADC_NextState_A, ADC_NextState_B : ADC_STATE;

signal Count_Channel_A: integer range 0 to G_ClockSpeed;
signal Count_Channel_B: integer range 0 to G_ClockSpeed;

signal Sync_ADC_A_DA:  std_logic_vector(13 downto 0);
signal Sync_ADC_A_OF: std_logic;

signal Sync_ADC_B_DA:  std_logic_vector(13 downto 0);
signal Sync_ADC_B_OF: std_logic;

signal ADC_A_CLOCK_POL: std_logic;
signal ADC_B_CLOCK_POL: std_logic;

 begin
  P_StateChangeAndSync: process(SYSCLK, nRESET)
  begin
    if(nRESET = '0') then
      ADC_CurrentState_A <= S_SLEEP;
      ADC_CurrentState_B <= S_SLEEP;
      Count_Channel_A <= 0;
      Count_Channel_B <= 0;
      
      Sync_ADC_A_DA <= (others => '0');
      Sync_ADC_A_OF <= '0';
      
      Sync_ADC_B_DA <= (others => '0');
      Sync_ADC_B_OF <= '0';

      ADC_A_CLOCK_POL <= '0';
      ADC_B_CLOCK_POL <= '0';
    elsif (SYSCLK'EVENT) then
      ADC_CurrentState_A <= ADC_NextState_A;
      ADC_CurrentState_B <= ADC_NextState_B;
      
      -- Clock Divider
      if (ADC_CurrentState_A /= S_SLEEP) then
        if (Count_Channel_A  = Divisor_Channel_A) then
          ADC_A_CLOCK_POL <= NOT ADC_A_CLOCK_POL;
          Count_Channel_A <= 0;
        else
          Count_Channel_A <= Count_Channel_A  + 1;
        end if;
      end if;
      
      if (ADC_CurrentState_B /= S_SLEEP) then
        if (Count_Channel_B  = Divisor_Channel_B) then
          ADC_B_CLOCK_POL <= NOT ADC_B_CLOCK_POL;
          Count_Channel_B <= 0;
        else
          Count_Channel_B <= Count_Channel_B + 1;
        end if;
      end if;
            
      Sync_ADC_A_DA <= ADC_A_DA after 5 ns;    
      Sync_ADC_A_OF <= ADC_A_OF after 5 ns;
      
      Sync_ADC_B_DA <= ADC_B_DA after 5 ns;    
      Sync_ADC_B_OF <= ADC_B_OF after 5 ns;
    end if;
  end process;

  P_ADC_A: process(ADC_CurrentState_A, ADC_Channel_A_Sleep, ADC_A_CLOCK_POL, Sync_ADC_A_DA, Sync_ADC_A_OF)
  begin
    ADC_NextState_A <= S_SLEEP;
    
    ADC_A_SHDN <= '0';
    ADC_A_nOE <= '0';
    ADC_A_CLK <= '0';
    ADC_Channel_A_NewData <= '0';
    
    ADC_Channel_A <= (others => '0');
    ADC_Channel_A_Overflow <= '0';

    case ADC_CurrentState_A is
      when S_SLEEP    =>        ADC_A_SHDN <= '1';
                        ADC_A_nOE <= '1';
                        if(ADC_Channel_A_Sleep = '1') then
                          ADC_NextState_A <= S_SLEEP;
                        else
                          ADC_NextState_A <= CLK_HIGH;
                        end if;
                        
      when CLK_HIGH    =>        ADC_A_CLK <= '1';
                        
                        if(ADC_A_CLOCK_POL = '1')then
                          ADC_NextState_A <= CLK_HIGH;
                        else
                          ADC_NextState_A <= CLK_LOW;
                        end if;
  
      when CLK_LOW    =>        if (ADC_Channel_A_Sleep = '1') then
                          ADC_NextState_A <= S_SLEEP;
                        elsif(ADC_A_CLOCK_POL = '0')then
                          ADC_NextState_A <= CLK_LOW;
                        else
                          ADC_NextState_A <= CLK_HIGH;
                        end if;
                        
                        ADC_Channel_A <= Sync_ADC_A_DA;
                        ADC_Channel_A_Overflow <= Sync_ADC_A_OF;
                        ADC_Channel_A_NewData <= '1';
                          
      when others      =>        ADC_NextState_A <= S_SLEEP;
    end case;
        
  end process P_ADC_A;

  P_ADC_B: process(ADC_CurrentState_B, ADC_Channel_B_Sleep, ADC_B_CLOCK_POL, Sync_ADC_B_DA, Sync_ADC_B_OF)
  begin
    ADC_NextState_B <= S_SLEEP;
    
    ADC_B_SHDN <= '0';
    ADC_B_nOE <= '0';
    ADC_B_CLK <= '0';
    ADC_Channel_B_NewData <= '0';
    
    ADC_Channel_B <= (others => '0');
    ADC_Channel_B_Overflow <= '0';

    case ADC_CurrentState_B is
      when S_SLEEP    =>        ADC_B_SHDN <= '1';
                        ADC_B_nOE <= '1';
                        if(ADC_Channel_B_Sleep = '1') then
                          ADC_NextState_B <= S_SLEEP;
                        else
                          ADC_NextState_B <= CLK_HIGH;
                        end if;
                        
      when CLK_HIGH    =>        ADC_B_CLK <= '1';
                        
                        if(ADC_B_CLOCK_POL = '1')then
                          ADC_NextState_B <= CLK_HIGH;
                        else
                          ADC_NextState_B <= CLK_LOW;
                        end if;
  
      when CLK_LOW    =>        if (ADC_Channel_B_Sleep = '1') then
                          ADC_NextState_B <= S_SLEEP;
                        elsif(ADC_B_CLOCK_POL = '0')then
                          ADC_NextState_B <= CLK_LOW;
                        else
                          ADC_NextState_B <= CLK_HIGH;
                        end if;
                        
                        ADC_Channel_B <= Sync_ADC_B_DA;
                        ADC_Channel_B_Overflow <= Sync_ADC_B_OF;
                        ADC_Channel_B_NewData <= '1';
                          
      when others      =>        ADC_NextState_B <= S_SLEEP;
    end case;
        
  end process P_ADC_B;  
  
 end A_ADC_LTC2296;

Die Simulation funktioniert super, aber bei der Synthese bekomme ich 
folgenden Output (Lattice Diamond, Synplify Pro, FPGA: Lattice XP2):
N: CD630 :"C:\Repos\Tandem\Projects\0001_Active_Electrode_V100\Software\Firmware\C_ADC_LTC2296.vhd":8:7:8:19|Synthesizing work.c_adc_ltc2296.a_adc_ltc2296 
@N: CD233 :"C:\Repos\Tandem\Projects\0001_Active_Electrode_V100\Software\Firmware\C_ADC_LTC2296.vhd":45:15:45:16|Using sequential encoding for type adc_state
@W: CD604 :"C:\Repos\Tandem\Projects\0001_Active_Electrode_V100\Software\Firmware\C_ADC_LTC2296.vhd":150:3:150:18|OTHERS clause is not synthesized 
@W: CD604 :"C:\Repos\Tandem\Projects\0001_Active_Electrode_V100\Software\Firmware\C_ADC_LTC2296.vhd":196:3:196:18|OTHERS clause is not synthesized 
Post processing for work.c_adc_ltc2296.a_adc_ltc2296
@E: CL126 :"C:\Repos\Tandem\Projects\0001_Active_Electrode_V100\Software\Firmware\C_ADC_LTC2296.vhd":64:2:64:3|Asynchronous load of non constant data for Count_Channel_B(0) is not supported
@E: CL126 :"C:\Repos\Tandem\Projects\0001_Active_Electrode_V100\Software\Firmware\C_ADC_LTC2296.vhd":64:2:64:3|Asynchronous load of non constant data for Count_Channel_B(1) is not supported
@E: CL126 :"C:\Repos\Tandem\Projects\0001_Active_Electrode_V100\Software\Firmware\C_ADC_LTC2296.vhd":64:2:64:3|Asynchronous load of non constant data for Count_Channel_B(2) is not supported
@E: CL126 :"C:\Repos\Tandem\Projects\0001_Active_Electrode_V100\Software\Firmware\C_ADC_LTC2296.vhd":64:2:64:3|Asynchronous load of non constant data for Count_Channel_B(3) is not supported
@E: CL126 :"C:\Repos\Tandem\Projects\0001_Active_Electrode_V100\Software\Firmware\C_ADC_LTC2296.vhd":64:2:64:3|Asynchronous load of non constant data for Count_Channel_B(4) is not supported
@E: CL126 :"C:\Repos\Tandem\Projects\0001_Active_Electrode_V100\Software\Firmware\C_ADC_LTC2296.vhd":64:2:64:3|Asynchronous load of non constant data for Count_Channel_B(5) is not supported
@E: CL126 :"C:\Repos\Tandem\Projects\0001_Active_Electrode_V100\Software\Firmware\C_ADC_LTC2296.vhd":64:2:64:3|Asynchronous load of non constant data for Count_Channel_B(6) is not supported
@E: CL126 :"C:\Repos\Tandem\Projects\0001_Active_Electrode_V100\Software\Firmware\C_ADC_LTC2296.vhd":64:2:64:3|Asynchronous load of non constant data for Count_Channel_B(7) is not supported
@E: CL126 :"C:\Repos\Tandem\Projects\0001_Active_Electrode_V100\Software\Firmware\C_ADC_LTC2296.vhd":64:2:64:3|Asynchronous load of non constant data for Count_Channel_B(8) is not supported
@E: CL126 :"C:\Repos\Tandem\Projects\0001_Active_Electrode_V100\Software\Firmware\C_ADC_LTC2296.vhd":64:2:64:3|Asynchronous load of non constant data for Count_Channel_B(9) is not supported
@E: CL126 :"C:\Repos\Tandem\Projects\0001_Active_Electrode_V100\Software\Firmware\C_ADC_LTC2296.vhd":64:2:64:3|Asynchronous load of non constant data for Count_Channel_B(10) is not supported
@E: CL126 :"C:\Repos\Tandem\Projects\0001_Active_Electrode_V100\Software\Firmware\C_ADC_LTC2296.vhd":64:2:64:3|Asynchronous load of non constant data for Count_Channel_B(11) is not supported
@E: CL126 :"C:\Repos\Tandem\Projects\0001_Active_Electrode_V100\Software\Firmware\C_ADC_LTC2296.vhd":64:2:64:3|Asynchronous load of non constant data for Count_Channel_B(12) is not supported
@E: CL126 :"C:\Repos\Tandem\Projects\0001_Active_Electrode_V100\Software\Firmware\C_ADC_LTC2296.vhd":64:2:64:3|Asynchronous load of non constant data for Count_Channel_B(13) is not supported
@E: CL126 :"C:\Repos\Tandem\Projects\0001_Active_Electrode_V100\Software\Firmware\C_ADC_LTC2296.vhd":64:2:64:3|Asynchronous load of non constant data for Count_Channel_B(14) is not supported
@E: CL126 :"C:\Repos\Tandem\Projects\0001_Active_Electrode_V100\Software\Firmware\C_ADC_LTC2296.vhd":64:2:64:3|Asynchronous load of non constant data for Count_Channel_B(15) is not supported
@E: CL126 :"C:\Repos\Tandem\Projects\0001_Active_Electrode_V100\Software\Firmware\C_ADC_LTC2296.vhd":64:2:64:3|Asynchronous load of non constant data for Count_Channel_B(16) is not supported
@E: CL126 :"C:\Repos\Tandem\Projects\0001_Active_Electrode_V100\Software\Firmware\C_ADC_LTC2296.vhd":64:2:64:3|Asynchronous load of non constant data for Count_Channel_B(17) is not supported
@E: CL126 :"C:\Repos\Tandem\Projects\0001_Active_Electrode_V100\Software\Firmware\C_ADC_LTC2296.vhd":64:2:64:3|Asynchronous load of non constant data for Count_Channel_B(18) is not supported
@E: CL126 :"C:\Repos\Tandem\Projects\0001_Active_Electrode_V100\Software\Firmware\C_ADC_LTC2296.vhd":64:2:64:3|Asynchronous load of non constant data for Count_Channel_B(19) is not supported
@E: CL126 :"C:\Repos\Tandem\Projects\0001_Active_Electrode_V100\Software\Firmware\C_ADC_LTC2296.vhd":64:2:64:3|Asynchronous load of non constant data for Count_Channel_B(20) is not supported
@E: CL126 :"C:\Repos\Tandem\Projects\0001_Active_Electrode_V100\Software\Firmware\C_ADC_LTC2296.vhd":64:2:64:3|Asynchronous load of non constant data for Count_Channel_B(21) is not supported
@E: CL126 :"C:\Repos\Tandem\Projects\0001_Active_Electrode_V100\Software\Firmware\C_ADC_LTC2296.vhd":64:2:64:3|Asynchronous load of non constant data for Count_Channel_B(22) is not supported
@E: CL126 :"C:\Repos\Tandem\Projects\0001_Active_Electrode_V100\Software\Firmware\C_ADC_LTC2296.vhd":64:2:64:3|Asynchronous load of non constant data for Count_Channel_B(23) is not supported
@E: CL126 :"C:\Repos\Tandem\Projects\0001_Active_Electrode_V100\Software\Firmware\C_ADC_LTC2296.vhd":64:2:64:3|Asynchronous load of non constant data for Count_Channel_B(24) is not supported
@E: CL126 :"C:\Repos\Tandem\Projects\0001_Active_Electrode_V100\Software\Firmware\C_ADC_LTC2296.vhd":64:2:64:3|Asynchronous load of non constant data for Count_Channel_A(0) is not supported
@E: CL126 :"C:\Repos\Tandem\Projects\0001_Active_Electrode_V100\Software\Firmware\C_ADC_LTC2296.vhd":64:2:64:3|Asynchronous load of non constant data for Count_Channel_A(1) is not supported
@E: CL126 :"C:\Repos\Tandem\Projects\0001_Active_Electrode_V100\Software\Firmware\C_ADC_LTC2296.vhd":64:2:64:3|Asynchronous load of non constant data for Count_Channel_A(2) is not supported
@E: CL126 :"C:\Repos\Tandem\Projects\0001_Active_Electrode_V100\Software\Firmware\C_ADC_LTC2296.vhd":64:2:64:3|Asynchronous load of non constant data for Count_Channel_A(3) is not supported
@E: CL126 :"C:\Repos\Tandem\Projects\0001_Active_Electrode_V100\Software\Firmware\C_ADC_LTC2296.vhd":64:2:64:3|Asynchronous load of non constant data for Count_Channel_A(4) is not supported
@E: CL126 :"C:\Repos\Tandem\Projects\0001_Active_Electrode_V100\Software\Firmware\C_ADC_LTC2296.vhd":64:2:64:3|Asynchronous load of non constant data for Count_Channel_A(5) is not supported
@E: CL126 :"C:\Repos\Tandem\Projects\0001_Active_Electrode_V100\Software\Firmware\C_ADC_LTC2296.vhd":64:2:64:3|Asynchronous load of non constant data for Count_Channel_A(6) is not supported
@E: CL126 :"C:\Repos\Tandem\Projects\0001_Active_Electrode_V100\Software\Firmware\C_ADC_LTC2296.vhd":64:2:64:3|Asynchronous load of non constant data for Count_Channel_A(7) is not supported
@E: CL126 :"C:\Repos\Tandem\Projects\0001_Active_Electrode_V100\Software\Firmware\C_ADC_LTC2296.vhd":64:2:64:3|Asynchronous load of non constant data for Count_Channel_A(8) is not supported
@E: CL126 :"C:\Repos\Tandem\Projects\0001_Active_Electrode_V100\Software\Firmware\C_ADC_LTC2296.vhd":64:2:64:3|Asynchronous load of non constant data for Count_Channel_A(9) is not supported
@E: CL126 :"C:\Repos\Tandem\Projects\0001_Active_Electrode_V100\Software\Firmware\C_ADC_LTC2296.vhd":64:2:64:3|Asynchronous load of non constant data for Count_Channel_A(10) is not supported
@E: CL126 :"C:\Repos\Tandem\Projects\0001_Active_Electrode_V100\Software\Firmware\C_ADC_LTC2296.vhd":64:2:64:3|Asynchronous load of non constant data for Count_Channel_A(11) is not supported
@E: CL126 :"C:\Repos\Tandem\Projects\0001_Active_Electrode_V100\Software\Firmware\C_ADC_LTC2296.vhd":64:2:64:3|Asynchronous load of non constant data for Count_Channel_A(12) is not supported
@E: CL126 :"C:\Repos\Tandem\Projects\0001_Active_Electrode_V100\Software\Firmware\C_ADC_LTC2296.vhd":64:2:64:3|Asynchronous load of non constant data for Count_Channel_A(13) is not supported
@E: CL126 :"C:\Repos\Tandem\Projects\0001_Active_Electrode_V100\Software\Firmware\C_ADC_LTC2296.vhd":64:2:64:3|Asynchronous load of non constant data for Count_Channel_A(14) is not supported
@E: CL126 :"C:\Repos\Tandem\Projects\0001_Active_Electrode_V100\Software\Firmware\C_ADC_LTC2296.vhd":64:2:64:3|Asynchronous load of non constant data for Count_Channel_A(15) is not supported
@E: CL126 :"C:\Repos\Tandem\Projects\0001_Active_Electrode_V100\Software\Firmware\C_ADC_LTC2296.vhd":64:2:64:3|Asynchronous load of non constant data for Count_Channel_A(16) is not supported
@E: CL126 :"C:\Repos\Tandem\Projects\0001_Active_Electrode_V100\Software\Firmware\C_ADC_LTC2296.vhd":64:2:64:3|Asynchronous load of non constant data for Count_Channel_A(17) is not supported
@E: CL126 :"C:\Repos\Tandem\Projects\0001_Active_Electrode_V100\Software\Firmware\C_ADC_LTC2296.vhd":64:2:64:3|Asynchronous load of non constant data for Count_Channel_A(18) is not supported
@E: CL126 :"C:\Repos\Tandem\Projects\0001_Active_Electrode_V100\Software\Firmware\C_ADC_LTC2296.vhd":64:2:64:3|Asynchronous load of non constant data for Count_Channel_A(19) is not supported
@E: CL126 :"C:\Repos\Tandem\Projects\0001_Active_Electrode_V100\Software\Firmware\C_ADC_LTC2296.vhd":64:2:64:3|Asynchronous load of non constant data for Count_Channel_A(20) is not supported
@E: CL126 :"C:\Repos\Tandem\Projects\0001_Active_Electrode_V100\Software\Firmware\C_ADC_LTC2296.vhd":64:2:64:3|Asynchronous load of non constant data for Count_Channel_A(21) is not supported
@E: CL126 :"C:\Repos\Tandem\Projects\0001_Active_Electrode_V100\Software\Firmware\C_ADC_LTC2296.vhd":64:2:64:3|Asynchronous load of non constant data for Count_Channel_A(22) is not supported
@E: CL126 :"C:\Repos\Tandem\Projects\0001_Active_Electrode_V100\Software\Firmware\C_ADC_LTC2296.vhd":64:2:64:3|Asynchronous load of non constant data for Count_Channel_A(23) is not supported
@E: CL126 :"C:\Repos\Tandem\Projects\0001_Active_Electrode_V100\Software\Firmware\C_ADC_LTC2296.vhd":64:2:64:3|Asynchronous load of non constant data for Count_Channel_A(24) is not supported
@E: CL126 :"C:\Repos\Tandem\Projects\0001_Active_Electrode_V100\Software\Firmware\C_ADC_LTC2296.vhd":64:2:64:3|Asynchronous load of non constant data for Sync_ADC_B_DA(0) is not supported
@E: CL126 :"C:\Repos\Tandem\Projects\0001_Active_Electrode_V100\Software\Firmware\C_ADC_LTC2296.vhd":64:2:64:3|Asynchronous load of non constant data for Sync_ADC_B_DA(1) is not supported
@E: CL126 :"C:\Repos\Tandem\Projects\0001_Active_Electrode_V100\Software\Firmware\C_ADC_LTC2296.vhd":64:2:64:3|Asynchronous load of non constant data for Sync_ADC_B_DA(2) is not supported
@E: CL126 :"C:\Repos\Tandem\Projects\0001_Active_Electrode_V100\Software\Firmware\C_ADC_LTC2296.vhd":64:2:64:3|Asynchronous load of non constant data for Sync_ADC_B_DA(3) is not supported
@E: CL126 :"C:\Repos\Tandem\Projects\0001_Active_Electrode_V100\Software\Firmware\C_ADC_LTC2296.vhd":64:2:64:3|Asynchronous load of non constant data for Sync_ADC_B_DA(4) is not supported
@E: CL126 :"C:\Repos\Tandem\Projects\0001_Active_Electrode_V100\Software\Firmware\C_ADC_LTC2296.vhd":64:2:64:3|Asynchronous load of non constant data for Sync_ADC_B_DA(5) is not supported
@E: CL126 :"C:\Repos\Tandem\Projects\0001_Active_Electrode_V100\Software\Firmware\C_ADC_LTC2296.vhd":64:2:64:3|Asynchronous load of non constant data for Sync_ADC_B_DA(6) is not supported
@E: CL126 :"C:\Repos\Tandem\Projects\0001_Active_Electrode_V100\Software\Firmware\C_ADC_LTC2296.vhd":64:2:64:3|Asynchronous load of non constant data for Sync_ADC_B_DA(7) is not supported
@E: CL126 :"C:\Repos\Tandem\Projects\0001_Active_Electrode_V100\Software\Firmware\C_ADC_LTC2296.vhd":64:2:64:3|Asynchronous load of non constant data for Sync_ADC_B_DA(8) is not supported
@E: CL126 :"C:\Repos\Tandem\Projects\0001_Active_Electrode_V100\Software\Firmware\C_ADC_LTC2296.vhd":64:2:64:3|Asynchronous load of non constant data for Sync_ADC_B_DA(9) is not supported
@E: CL126 :"C:\Repos\Tandem\Projects\0001_Active_Electrode_V100\Software\Firmware\C_ADC_LTC2296.vhd":64:2:64:3|Asynchronous load of non constant data for Sync_ADC_B_DA(10) is not supported
@E: CL126 :"C:\Repos\Tandem\Projects\0001_Active_Electrode_V100\Software\Firmware\C_ADC_LTC2296.vhd":64:2:64:3|Asynchronous load of non constant data for Sync_ADC_B_DA(11) is not supported
@E: CL126 :"C:\Repos\Tandem\Projects\0001_Active_Electrode_V100\Software\Firmware\C_ADC_LTC2296.vhd":64:2:64:3|Asynchronous load of non constant data for Sync_ADC_B_DA(12) is not supported
@E: CL126 :"C:\Repos\Tandem\Projects\0001_Active_Electrode_V100\Software\Firmware\C_ADC_LTC2296.vhd":64:2:64:3|Asynchronous load of non constant data for Sync_ADC_B_DA(13) is not supported
@E: CL126 :"C:\Repos\Tandem\Projects\0001_Active_Electrode_V100\Software\Firmware\C_ADC_LTC2296.vhd":64:2:64:3|Asynchronous load of non constant data for Sync_ADC_A_DA(0) is not supported
@E: CL126 :"C:\Repos\Tandem\Projects\0001_Active_Electrode_V100\Software\Firmware\C_ADC_LTC2296.vhd":64:2:64:3|Asynchronous load of non constant data for Sync_ADC_A_DA(1) is not supported
@E: CL126 :"C:\Repos\Tandem\Projects\0001_Active_Electrode_V100\Software\Firmware\C_ADC_LTC2296.vhd":64:2:64:3|Asynchronous load of non constant data for Sync_ADC_A_DA(2) is not supported
@E: CL126 :"C:\Repos\Tandem\Projects\0001_Active_Electrode_V100\Software\Firmware\C_ADC_LTC2296.vhd":64:2:64:3|Asynchronous load of non constant data for Sync_ADC_A_DA(3) is not supported
@E: CL126 :"C:\Repos\Tandem\Projects\0001_Active_Electrode_V100\Software\Firmware\C_ADC_LTC2296.vhd":64:2:64:3|Asynchronous load of non constant data for Sync_ADC_A_DA(4) is not supported
@E: CL126 :"C:\Repos\Tandem\Projects\0001_Active_Electrode_V100\Software\Firmware\C_ADC_LTC2296.vhd":64:2:64:3|Asynchronous load of non constant data for Sync_ADC_A_DA(5) is not supported
@E: CL126 :"C:\Repos\Tandem\Projects\0001_Active_Electrode_V100\Software\Firmware\C_ADC_LTC2296.vhd":64:2:64:3|Asynchronous load of non constant data for Sync_ADC_A_DA(6) is not supported
@E: CL126 :"C:\Repos\Tandem\Projects\0001_Active_Electrode_V100\Software\Firmware\C_ADC_LTC2296.vhd":64:2:64:3|Asynchronous load of non constant data for Sync_ADC_A_DA(7) is not supported
@E: CL126 :"C:\Repos\Tandem\Projects\0001_Active_Electrode_V100\Software\Firmware\C_ADC_LTC2296.vhd":64:2:64:3|Asynchronous load of non constant data for Sync_ADC_A_DA(8) is not supported
@E: CL126 :"C:\Repos\Tandem\Projects\0001_Active_Electrode_V100\Software\Firmware\C_ADC_LTC2296.vhd":64:2:64:3|Asynchronous load of non constant data for Sync_ADC_A_DA(9) is not supported
@E: CL126 :"C:\Repos\Tandem\Projects\0001_Active_Electrode_V100\Software\Firmware\C_ADC_LTC2296.vhd":64:2:64:3|Asynchronous load of non constant data for Sync_ADC_A_DA(10) is not supported
@E: CL126 :"C:\Repos\Tandem\Projects\0001_Active_Electrode_V100\Software\Firmware\C_ADC_LTC2296.vhd":64:2:64:3|Asynchronous load of non constant data for Sync_ADC_A_DA(11) is not supported
@E: CL126 :"C:\Repos\Tandem\Projects\0001_Active_Electrode_V100\Software\Firmware\C_ADC_LTC2296.vhd":64:2:64:3|Asynchronous load of non constant data for Sync_ADC_A_DA(12) is not supported
@E: CL126 :"C:\Repos\Tandem\Projects\0001_Active_Electrode_V100\Software\Firmware\C_ADC_LTC2296.vhd":64:2:64:3|Asynchronous load of non constant data for Sync_ADC_A_DA(13) is not supported
@E: CL126 :"C:\Repos\Tandem\Projects\0001_Active_Electrode_V100\Software\Firmware\C_ADC_LTC2296.vhd":64:2:64:3|Asynchronous load of non constant data for ADC_CurrentState_B(s_sleep) is not supported
@E: CL126 :"C:\Repos\Tandem\Projects\0001_Active_Electrode_V100\Software\Firmware\C_ADC_LTC2296.vhd":64:2:64:3|Asynchronous load of non constant data for ADC_CurrentState_B(clk_high) is not supported
@E: CL126 :"C:\Repos\Tandem\Projects\0001_Active_Electrode_V100\Software\Firmware\C_ADC_LTC2296.vhd":64:2:64:3|Asynchronous load of non constant data for ADC_CurrentState_A(s_sleep) is not supported
@E: CL126 :"C:\Repos\Tandem\Projects\0001_Active_Electrode_V100\Software\Firmware\C_ADC_LTC2296.vhd":64:2:64:3|Asynchronous load of non constant data for ADC_CurrentState_A(clk_high) is not supported
@E: CL126 :"C:\Repos\Tandem\Projects\0001_Active_Electrode_V100\Software\Firmware\C_ADC_LTC2296.vhd":64:2:64:3|Asynchronous load of non constant data for Sync_ADC_B_OF is not supported
@E: CL126 :"C:\Repos\Tandem\Projects\0001_Active_Electrode_V100\Software\Firmware\C_ADC_LTC2296.vhd":64:2:64:3|Asynchronous load of non constant data for Sync_ADC_A_OF is not supported
@E: CL126 :"C:\Repos\Tandem\Projects\0001_Active_Electrode_V100\Software\Firmware\C_ADC_LTC2296.vhd":64:2:64:3|Asynchronous load of non constant data for ADC_B_CLOCK_POL is not supported
@E: CL126 :"C:\Repos\Tandem\Projects\0001_Active_Electrode_V100\Software\Firmware\C_ADC_LTC2296.vhd":64:2:64:3|Asynchronous load of non constant data for ADC_A_CLOCK_POL is not supported
86 errors during synthesis

Ich verstehe nicht wo das Problem liegt. Kann mir jemand helfen?

Danke!

Gruß Steffen

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Steffen schrieb:
> elsif (SYSCLK'EVENT) then
Was ist das denn?
Bei jeder x-beliebigen Änderung soll der Prozess neu berechnet werden?
Hast du so ein _Bauteil schon mal gesehen, das z.B. auch auf einen 
Wechsel von 'X' nach 'U' reagiert?
Besser wäre hier wohl das kampferprobte
    elsif rising_edge(sysclk) then
Oder wenigstens
    elsif sysclk'event and sysclk='1' then

Autor: Steffen (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Lothar Miller schrieb:
> ist das denn?
> Bei jeder x-beliebigen Änderung soll der Prozess neu berechnet werden?

Hallo Lothar,

die Idee ist sowohl bei steigender als auch bei allender Flanke zu Daten 
zu verarbeiten (DDR). Eine Änderung zu rising_edge bringt keine 
Änderung.

Gruß Steffen

Autor: Christian R. (supachris)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Für DDR brauchts spezielle Elemente in den FPGAs, die im Normalfall 
instaziiert werden. Einfach beschreiben klappt nicht. Und intern geht 
das meines Wissens nur beim CoolRunner II, ansonsten gibts DDR nur an 
I/Os. Die Meldung ist doch eindeutig. Asynchron geht nur eine änderung 
auf konstante Werte, also ein asynchroner Reset (schauderhaft) bzw. Set. 
Sich ändernde Signale müssen synchron in die Register übernommen werden.

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Steffen schrieb:
> die Idee ist sowohl bei steigender als auch bei allender Flanke zu Daten
> zu verarbeiten (DDR)
Ja, aber solche Flipflops hast du leider im Inneren eines FPGAs nicht!
Und die DDR-Zellen im IO-Bereich sind ganz einfach 2 parallel 
geschaltete FFs, die gegenphasig angesteuert werden...

Verdopple deinen 32MHz-Takt im FPGA mit einer PLL o.ä. und du bekommst 
damit automatisch die doppelte Datenrate.

>>> OTHERS clause is not synthesized
Das kommt von:
      when others      =>        ADC_NextState_A <= S_SLEEP;
Und das ist unnötig, weil ja vorher schon alle Zustände von ADC_STATE 
verwendet sind.


>>> Asynchronous load of non constant data for ... is not supported
Dann kann deine Fehlermeldung über den asynchronen Zugriff auf die 
Register nur noch vom asynchronen Reset kommen. Mach den mal synchron:
  if rising_edge(SYSCLK) then
    if(nRESET = '0') then
      ADC_CurrentState_A <= S_SLEEP;
      ADC_CurrentState_B <= S_SLEEP;
      Count_Channel_A <= 0;
      Count_Channel_B <= 0;
      
      Sync_ADC_A_DA <= (others => '0');
      Sync_ADC_A_OF <= '0';
      
      Sync_ADC_B_DA <= (others => '0');
      Sync_ADC_B_OF <= '0';

      ADC_A_CLOCK_POL <= '0';
      ADC_B_CLOCK_POL <= '0';
    else
      ADC_CurrentState_A <= ADC_NextState_A;
      ADC_CurrentState_B <= ADC_NextState_B;
      
      -- Clock Divider
      if (ADC_CurrentState_A /= S_SLEEP) then
      :
      :

BTW: Wofür brauchst du eigentlich einen Reset?
Ich behaupte, den kannst du ohne jede Funktionseinschränkung weglassen.

Was ist das für ein FPGA?

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [vhdl]VHDL-Code[/vhdl]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.