Continue to Site

Welcome to EDAboard.com

Welcome to our site! EDAboard.com is an international Electronics Discussion Forum focused on EDA software, circuits, schematics, books, theory, papers, asic, pld, 8051, DSP, Network, RF, Analog Design, PCB, Service Manuals... and a whole lot more! To participate you need to register. Registration is free. Click here to register now.

Bad condition in wait statement, or only one clock per process

Status
Not open for further replies.

ashwini012

Newbie level 3
Joined
Mar 27, 2015
Messages
4
Helped
0
Reputation
0
Reaction score
0
Trophy points
1
Activity points
38
Hi,
I am now working on the some VHDL program,but i have faced the error:


Code VHDL - [expand]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
Sensor_fusion_1_output : PROCESS 
    VARIABLE z : vector_of_real(0 TO 11);
    VARIABLE xapriori : vector_of_real(0 TO 11);
    VARIABLE residual : vector_of_real(0 TO 11);
    VARIABLE papriori : vector_of_real(0 TO 11);
    VARIABLE K : vector_of_real(0 TO 11);
    VARIABLE paposteriori : vector_of_real(0 TO 11);
    VARIABLE xaposteriori1 : vector_of_real(0 TO 11);
    VARIABLE add_temp : real;
    VARIABLE div_temp : real;
    VARIABLE add_temp_0 : vector_of_real(0 TO 10);
    VARIABLE div_temp_0 : vector_of_real(0 TO 10);
 
  BEGIN
 
    z := temp;
    xapriori := (OTHERS => 0.0);
    residual := (OTHERS => 0.0);
    papriori := (OTHERS => 0.0);
    K := (OTHERS => 0.0);
    paposteriori := (OTHERS => 0.0);
    xaposteriori1 := (OTHERS => 0.0);
    xapriori(0) := 0.0;
    residual(0) := z(0);
    papriori(0) := 4.3;
    add_temp := 4.3 + 0.1;
 
    IF add_temp = 0.0 THEN 
      div_temp := C_divbyzero_p;
    ELSE 
      div_temp := One / add_temp;
    END IF;
      K(0) := div_temp;
      paposteriori(0) := 4.3 * (1.0 - K(0));
     xaposteriori1(0) := K(0) * z(0);
 
    FOR k_0 IN 0 TO 10 LOOP
      xapriori(1 + k_0) := xaposteriori1(k_0);
      residual(1 + k_0) := z(1 + k_0) - xapriori(1 + k_0);
      papriori(1 + k_0) := paposteriori(k_0) + 2.8;
      add_temp_0(k_0) := papriori(1 + k_0) + 0.1;
      IF add_temp_0(k_0) = 0.0 THEN 
        IF (papriori(1 + k_0) < 0.0) XOR (add_temp_0(k_0) < 0.0) THEN 
          div_temp_0(k_0) := C_divbyzero_n;
        ELSE 
          div_temp_0(k_0) := C_divbyzero_p;
        END IF;
      ELSE 
        div_temp_0(k_0) := papriori(1 + k_0) / add_temp_0(k_0);
      END IF;
 
      K(1 + k_0) := div_temp_0(k_0);
      paposteriori(1 + k_0) := papriori(1 + k_0) * (1.0 - K(1 + k_0));
      xaposteriori1(1 + k_0) := xapriori(1 + k_0) + (K(1 + k_0) * residual(1 + k_0));
    END LOOP;
 
   xaposteriori <= xaposteriori1;
 
    WAIT;
 
    END PROCESS Sensor_fusion_1_output;




I got the error as "Bad condition in wait statement, or only one clock per process."
Can any one help me please....

Thank you
 
Last edited by a moderator:

I assume you know this code is not synthesisable as a single wait statement is no use for synthesis, it is for simulation only. So is the real type. This code looks far to much like software code, and hence will never work.

I suggest finding a good text book on digital logic design. Working through the exercises and starting your code again. Before you write any more code, you need to draw a circuit diagram. This is hardware description language, not programming.
 

Status
Not open for further replies.

Part and Inventory Search

Welcome to EDABoard.com

Sponsor

Back
Top