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


von Steffen (Gast)


Lesenswert?

Hallo,

ich versuche gerade ein ADC Interface in VHDL zu schreiben.
1
library IEEE;
2
use IEEE.std_logic_1164.all;
3
4
entity C_ADC_LTC2296 is
5
 Generic (
6
      constant G_ClockSpeed: integer range 1 to 150*10**6 := 32 * 10**6
7
      );
8
 Port   (
9
       -- ADC
10
      ADC_A_DA: In std_logic_vector (13 downto 0);
11
      ADC_A_CLK: Out std_logic;
12
      ADC_A_OF: In std_logic;
13
      ADC_A_nOE: Out std_logic;
14
      ADC_A_SHDN: Out std_logic;
15
      ADC_B_DA: In std_logic_vector (13 downto 0);
16
      ADC_B_CLK: Out std_logic;
17
      ADC_B_OF: In std_logic;
18
      ADC_B_nOE: Out std_logic;
19
      ADC_B_SHDN: Out std_logic;
20
      
21
      nRESET: In std_logic;
22
      SYSCLK: In std_logic;
23
      
24
      Divisor_Channel_A: integer range 0 to G_ClockSpeed;
25
      Divisor_Channel_B: integer range 0 to G_ClockSpeed;
26
      
27
      ADC_Channel_A_Sleep: In std_logic;
28
      ADC_Channel_A_NewData: out std_logic;
29
      ADC_Channel_A: Out std_logic_vector(13 downto 0);  
30
      ADC_Channel_A_Overflow: out std_logic;
31
32
      ADC_Channel_B_Sleep: In std_logic;
33
      ADC_Channel_B_NewData: out std_logic;
34
      ADC_Channel_B: Out std_logic_vector(13 downto 0);
35
      ADC_Channel_B_Overflow: out std_logic
36
    );
37
 end C_ADC_LTC2296;
38
 
39
architecture A_ADC_LTC2296 of C_ADC_LTC2296 is
40
41
type ADC_STATE is (S_SLEEP, CLK_HIGH, CLK_LOW);
42
43
signal ADC_CurrentState_A, ADC_CurrentState_B, ADC_NextState_A, ADC_NextState_B : ADC_STATE;
44
45
signal Count_Channel_A: integer range 0 to G_ClockSpeed;
46
signal Count_Channel_B: integer range 0 to G_ClockSpeed;
47
48
signal Sync_ADC_A_DA:  std_logic_vector(13 downto 0);
49
signal Sync_ADC_A_OF: std_logic;
50
51
signal Sync_ADC_B_DA:  std_logic_vector(13 downto 0);
52
signal Sync_ADC_B_OF: std_logic;
53
54
signal ADC_A_CLOCK_POL: std_logic;
55
signal ADC_B_CLOCK_POL: std_logic;
56
57
 begin
58
  P_StateChangeAndSync: process(SYSCLK, nRESET)
59
  begin
60
    if(nRESET = '0') then
61
      ADC_CurrentState_A <= S_SLEEP;
62
      ADC_CurrentState_B <= S_SLEEP;
63
      Count_Channel_A <= 0;
64
      Count_Channel_B <= 0;
65
      
66
      Sync_ADC_A_DA <= (others => '0');
67
      Sync_ADC_A_OF <= '0';
68
      
69
      Sync_ADC_B_DA <= (others => '0');
70
      Sync_ADC_B_OF <= '0';
71
72
      ADC_A_CLOCK_POL <= '0';
73
      ADC_B_CLOCK_POL <= '0';
74
    elsif (SYSCLK'EVENT) then
75
      ADC_CurrentState_A <= ADC_NextState_A;
76
      ADC_CurrentState_B <= ADC_NextState_B;
77
      
78
      -- Clock Divider
79
      if (ADC_CurrentState_A /= S_SLEEP) then
80
        if (Count_Channel_A  = Divisor_Channel_A) then
81
          ADC_A_CLOCK_POL <= NOT ADC_A_CLOCK_POL;
82
          Count_Channel_A <= 0;
83
        else
84
          Count_Channel_A <= Count_Channel_A  + 1;
85
        end if;
86
      end if;
87
      
88
      if (ADC_CurrentState_B /= S_SLEEP) then
89
        if (Count_Channel_B  = Divisor_Channel_B) then
90
          ADC_B_CLOCK_POL <= NOT ADC_B_CLOCK_POL;
91
          Count_Channel_B <= 0;
92
        else
93
          Count_Channel_B <= Count_Channel_B + 1;
94
        end if;
95
      end if;
96
            
97
      Sync_ADC_A_DA <= ADC_A_DA after 5 ns;    
98
      Sync_ADC_A_OF <= ADC_A_OF after 5 ns;
99
      
100
      Sync_ADC_B_DA <= ADC_B_DA after 5 ns;    
101
      Sync_ADC_B_OF <= ADC_B_OF after 5 ns;
102
    end if;
103
  end process;
104
105
  P_ADC_A: process(ADC_CurrentState_A, ADC_Channel_A_Sleep, ADC_A_CLOCK_POL, Sync_ADC_A_DA, Sync_ADC_A_OF)
106
  begin
107
    ADC_NextState_A <= S_SLEEP;
108
    
109
    ADC_A_SHDN <= '0';
110
    ADC_A_nOE <= '0';
111
    ADC_A_CLK <= '0';
112
    ADC_Channel_A_NewData <= '0';
113
    
114
    ADC_Channel_A <= (others => '0');
115
    ADC_Channel_A_Overflow <= '0';
116
117
    case ADC_CurrentState_A is
118
      when S_SLEEP    =>        ADC_A_SHDN <= '1';
119
                        ADC_A_nOE <= '1';
120
                        if(ADC_Channel_A_Sleep = '1') then
121
                          ADC_NextState_A <= S_SLEEP;
122
                        else
123
                          ADC_NextState_A <= CLK_HIGH;
124
                        end if;
125
                        
126
      when CLK_HIGH    =>        ADC_A_CLK <= '1';
127
                        
128
                        if(ADC_A_CLOCK_POL = '1')then
129
                          ADC_NextState_A <= CLK_HIGH;
130
                        else
131
                          ADC_NextState_A <= CLK_LOW;
132
                        end if;
133
  
134
      when CLK_LOW    =>        if (ADC_Channel_A_Sleep = '1') then
135
                          ADC_NextState_A <= S_SLEEP;
136
                        elsif(ADC_A_CLOCK_POL = '0')then
137
                          ADC_NextState_A <= CLK_LOW;
138
                        else
139
                          ADC_NextState_A <= CLK_HIGH;
140
                        end if;
141
                        
142
                        ADC_Channel_A <= Sync_ADC_A_DA;
143
                        ADC_Channel_A_Overflow <= Sync_ADC_A_OF;
144
                        ADC_Channel_A_NewData <= '1';
145
                          
146
      when others      =>        ADC_NextState_A <= S_SLEEP;
147
    end case;
148
        
149
  end process P_ADC_A;
150
151
  P_ADC_B: process(ADC_CurrentState_B, ADC_Channel_B_Sleep, ADC_B_CLOCK_POL, Sync_ADC_B_DA, Sync_ADC_B_OF)
152
  begin
153
    ADC_NextState_B <= S_SLEEP;
154
    
155
    ADC_B_SHDN <= '0';
156
    ADC_B_nOE <= '0';
157
    ADC_B_CLK <= '0';
158
    ADC_Channel_B_NewData <= '0';
159
    
160
    ADC_Channel_B <= (others => '0');
161
    ADC_Channel_B_Overflow <= '0';
162
163
    case ADC_CurrentState_B is
164
      when S_SLEEP    =>        ADC_B_SHDN <= '1';
165
                        ADC_B_nOE <= '1';
166
                        if(ADC_Channel_B_Sleep = '1') then
167
                          ADC_NextState_B <= S_SLEEP;
168
                        else
169
                          ADC_NextState_B <= CLK_HIGH;
170
                        end if;
171
                        
172
      when CLK_HIGH    =>        ADC_B_CLK <= '1';
173
                        
174
                        if(ADC_B_CLOCK_POL = '1')then
175
                          ADC_NextState_B <= CLK_HIGH;
176
                        else
177
                          ADC_NextState_B <= CLK_LOW;
178
                        end if;
179
  
180
      when CLK_LOW    =>        if (ADC_Channel_B_Sleep = '1') then
181
                          ADC_NextState_B <= S_SLEEP;
182
                        elsif(ADC_B_CLOCK_POL = '0')then
183
                          ADC_NextState_B <= CLK_LOW;
184
                        else
185
                          ADC_NextState_B <= CLK_HIGH;
186
                        end if;
187
                        
188
                        ADC_Channel_B <= Sync_ADC_B_DA;
189
                        ADC_Channel_B_Overflow <= Sync_ADC_B_OF;
190
                        ADC_Channel_B_NewData <= '1';
191
                          
192
      when others      =>        ADC_NextState_B <= S_SLEEP;
193
    end case;
194
        
195
  end process P_ADC_B;  
196
  
197
 end A_ADC_LTC2296;

Die Simulation funktioniert super, aber bei der Synthese bekomme ich 
folgenden Output (Lattice Diamond, Synplify Pro, FPGA: Lattice XP2):
1
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 
2
@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
3
@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 
4
@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 
5
Post processing for work.c_adc_ltc2296.a_adc_ltc2296
6
@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
7
@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
8
@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
9
@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
10
@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
11
@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
12
@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
13
@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
14
@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
15
@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
16
@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
17
@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
18
@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
19
@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
20
@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
21
@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
22
@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
23
@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
24
@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
25
@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
26
@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
27
@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
28
@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
29
@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
30
@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
31
@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
32
@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
33
@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
34
@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
35
@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
36
@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
37
@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
38
@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
39
@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
40
@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
41
@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
42
@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
43
@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
44
@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
45
@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
46
@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
47
@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
48
@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
49
@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
50
@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
51
@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
52
@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
53
@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
54
@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
55
@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
56
@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
57
@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
58
@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
59
@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
60
@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
61
@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
62
@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
63
@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
64
@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
65
@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
66
@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
67
@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
68
@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
69
@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
70
@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
71
@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
72
@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
73
@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
74
@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
75
@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
76
@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
77
@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
78
@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
79
@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
80
@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
81
@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
82
@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
83
@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
84
@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
85
@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
86
@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
87
@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
88
@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
89
@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
90
@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
91
@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
92
86 errors during synthesis

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

Danke!

Gruß Steffen

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


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

von Steffen (Gast)


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

von Christian R. (supachris)


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.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


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:
1
  if rising_edge(SYSCLK) then
2
    if(nRESET = '0') then
3
      ADC_CurrentState_A <= S_SLEEP;
4
      ADC_CurrentState_B <= S_SLEEP;
5
      Count_Channel_A <= 0;
6
      Count_Channel_B <= 0;
7
      
8
      Sync_ADC_A_DA <= (others => '0');
9
      Sync_ADC_A_OF <= '0';
10
      
11
      Sync_ADC_B_DA <= (others => '0');
12
      Sync_ADC_B_OF <= '0';
13
14
      ADC_A_CLOCK_POL <= '0';
15
      ADC_B_CLOCK_POL <= '0';
16
    else
17
      ADC_CurrentState_A <= ADC_NextState_A;
18
      ADC_CurrentState_B <= ADC_NextState_B;
19
      
20
      -- Clock Divider
21
      if (ADC_CurrentState_A /= S_SLEEP) then
22
      :
23
      :

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?

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.