Fixing VHDL Syntax Error: Creating Up/Down Counter

  • Thread starter Thread starter ineedmunchies
  • Start date Start date
  • Tags Tags
    Error
AI Thread Summary
The discussion focuses on resolving syntax errors in a VHDL code for an Up/Down counter. Key issues identified include incorrect use of single quotes versus double quotes for binary representations, with suggestions to replace '0' and '1' with "0" and "1". Additionally, the user was advised to check the structure of their if-then statements and ensure proper syntax. The conversation highlights the importance of syntax accuracy in VHDL programming, especially for beginners. Overall, the thread emphasizes common pitfalls in VHDL coding and the need for careful attention to detail.
ineedmunchies
Messages
42
Reaction score
0

Homework Statement


Creating an Up/Down counter with an output for both units and tens. (which can then be displayed on 7 segnment displays)


Homework Equations





The Attempt at a Solution



Code:
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_arith.all;
use ieee.std_logic_unsigned.all;

entity UpDownCount is
  port(Clk, UpDown, reset: in std_logic;
  unit, tens: out std_logic_vector(3 downto 0)
  );
End UpDownCount;

Architecture behv2 of UpDownCount is
signal units1, tens1: unsigned(3 downto 0);
begin
  
  process(UpDown, Clk, reset)
  variable CountUnits, CountTens : unsigned (3 downto 0);
  begin
      
  if (Clk'event and UpDown='1') then
     ****if CountUnits ='1111' then
      CountTens := CountTens + '1';
    else
     ****CountUnits := CountUnits + '1';  
    end if;
  elsif (Clk'event and UpDown='0') then
    if CountUnits = '0000' then
      CountTens := CountTens - '1';
    else CountUnits := CountUnits - '1';
  end if;
end if;
  end process
end architecture

The two lines with the stars are the ones where there are errors apparently. For the first one it says there is a syntax error near " ' ", and the second one it says it is expecting an "end" near "elseif". So I'm thinking is there a problem with my if-then statements? Do I need to use parenthesis to wrap the code that's included in the then part? I know its probably something quite simple, but I can't figure it out.
 
Physics news on Phys.org
I've got very limited experience with VHDL (and don't have a simulator installed), but rather than CountUnits = '1111', try using CountUnits = "1111". Same goes for CountUnits ='0000'. Did this help?
 
It did indeed, I forgot that youe need to use " when dealing with 0000 instead of just 0 etc.
Thank you! There's also a ton of other mistakes in there, but I cleared them up too.
 
Back
Top