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.

help: adding counter

Status
Not open for further replies.

saUNT

Newbie level 3
Joined
Apr 26, 2015
Messages
3
Helped
0
Reputation
0
Reaction score
0
Trophy points
1
Activity points
36
hello
please help mw to add a counter that will stop at 10 and here is the exaxt words from the proffesor
" The dispense state turn the dispense signal on to activate a stepper motor that issimulated on the red LEDR lights.Again, state machines are used for this part. Make sure to add a counter to count a number of steps (i.e. 10) before it stops. Otherwise, your vending machine will have a flaw dispensing soda to the whole population of UNT for 35 cents. A real stepper motor is connected to the board through the global IO pin (GPIO "

and here is the code:

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
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
 
entity stepper is
    Port ( dispense,reset,clk : in std_logic;
    Q : out std_logic_vector(3 downto 0));
end stepper;
 
architecture Behavioral of stepper is
type states is (three,six,twelve,nine);
signal current_state,next_state: states;
signal count: integer:=0;
begin
 
P1:process(reset,clk)
begin
    if reset='0' then 
    current_state<=three;
    elsif rising_edge(clk) then
    current_state<=next_state;
end if;
end process;
 
p2:process(current_state, dispense)
begin
    if  dispense='1' then   --check for dispense active
    case current_state is
 
    when three =>
            Q<="0011";
            next_state<=six;
    when six =>
            Q<="0110";
            next_state<=twelve;
    when twelve =>
            Q<="1100";
            next_state<=nine;
    when nine =>
            Q<="1001";
            next_state<=three;
    when others =>
            Q<="0011";
            next_state<=three;
    end case;
    end if;
end process; 
--GPIO(3 downto 0)<=Q;   --send output to the stepper motor hardware
end Behavioral;

 
Last edited by a moderator:

You know google usually works pretty good when searching for a simple query like this "bcd counter vhdl code"...the first returned link is: https://en.wikibooks.org/wiki/VHDL_for_FPGA_Design/4-Bit_BCD_Counter_with_Clock_Enable.

Unfortunately it uses the non-IEEE std_logic_arith and std_logic_unsigned packages, which are Synopsys packages. The IEEE package is numeric_std. You will have to modify the types to make it correct for numeric_std, but I'll leave that as an exercise for the student.
 

Status
Not open for further replies.

Part and Inventory Search

Welcome to EDABoard.com

Sponsor

Back
Top