简体   繁体   中英

If statement using vhdl

I am designing counter using vhdl using planahead software, anyway I am using if statment but it gave many errors . the purpose of the counter is to count Ascending/Descending from 1 to 10 and the opposite. In case of Ascending I reset the out when it get to 9 to count again from 0. And in case Descending reset the out when it gets 0 and give 9 as new value . and I am using switch button on the board to switch between Ascending/Descending counting. Below the if statment and the errors . I dont know if I use it on the write form . Plz if anyone have an idea would be perfect.

 Line:27-   if(inc_dec='1') then
 Line:28    if (r_reg=M-1) then
            r_next<=(others=>'0')
 Line:30    else r_reg+1;
 Line: 31   elsif (inc_dec='0')then
 Line:32    if (r_reg=M-10) then
            r_next<=(others=>'9')
 Line:34    else
            r_reg-1;

           end if;
           end if;
           end if;

The errors :

 Line:27 [HDLCompiler 806] Syntax error near "if". 
 Line:28[HDLCompiler 806] Syntax error near "then". 
 Line:30[HDLCompiler 806] Syntax error near "else". 
 Line:31[HDLCompiler 806] Syntax error near "then". 

 Line:32[HDLCompiler 806] Syntax error near "then". 
 Line:34[HDLCompiler 806] Syntax error near "else". 

As pointed out by Morten Zilmer , you need to terminate the if/else with an end if. Also there have been some missing semicolons. The code below should work.

if (inc_dec='1') then
   if (r_reg=(M-1)) then
        r_next <= (others=>'0');
   else 
        r_reg+1;
   end if; 
elsif (inc_dec='0') then
   if (r_reg=(M-10)) then
        r_next <=  to_unsigned(9, r_next'length);
   else
        r_reg-1;
   end if;
end if;

Update: Jonathan Drolet is right. Changed

r_next <= (others=>'9');

to

r_next <=  to_unsigned(9, r_next'length)

in the code

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM