Question

In: Electrical Engineering

LIBRARY ieee; USE ieee.std_logic_1164.ALL; ENTITY Vendingvhdl IS PORT( Clk                            : IN  &

LIBRARY ieee;

USE ieee.std_logic_1164.ALL;

ENTITY Vendingvhdl IS

PORT(

Clk                            : IN        STD_LOGIC;

Change                    : OUT    STD_LOGIC_VECTOR(1 downto 0);

Inputs                      : IN        STD_LOGIC_VECTOR(1 downto 0);

output                     : OUT    STD_LOGIC);

END Vendingvhdl;

ARCHITECTURE vending of Vendingvhdl IS

                              TYPE STATE_TYPE IS (empty, fivecent, tencent, ready);

                              SIGNAL current_state, next_state   : STATE_TYPE;

BEGIN

Combinational LOGIC

COMBINE: PROCESS (inputs)

BEGIN

                              CASE current_state IS

                                             When empty =>

                                                            IF inputs = “00” THEN

                                                                                          next_state <= empty;

                                                                                          output <= ‘0’;

                                                                                          change <= “00”;

                                                            ELSEIF inputs = “01” THEN

next_state <= fivecent;

                                                                                          output <= ‘0’;

                                                                                          change <= “00”;

ELSEIF inputs = “10” THEN

next_state <= tencent;

                                                                                          output <= ‘0’;

                                                                                          change <= “00”;

ELSEIF inputs = “11” THEN

next_state <= ready;

                                                                                          output <= ‘1’;

                                                                                          change <= “10”;

                                                            ENDIF;

                                             WHEN fivecent =>

                                                            IF inputs = “00” THEN

next_state <= fivecent;

                                                                                          output <= ‘0’;

                                                                                          change <= “00”;

ELSEIF inputs = “01” THEN

next_state <= tencent;

                                                                                          output <= ‘0’;

                                                                                          change <= “00”;

ELSEIF inputs = “10” THEN

next_state <= ready;

                                                                                          output <= ‘0’;

                                                                                          change <= “00”;

ELSEIF inputs = “11” THEN

next_state <= ready;

                                                                                          output <= ‘1’;

                                                                                          change <= “01”;

                                                                                          change <= “10”;

                                                            ENDIF;

                                             WHEN tencent =>

                                                            IF inputs = “00” THEN

next_state <= tencent;

                                                                                          output <= ‘0’;

                                                                                          change <= “00”;

ELSEIF inputs = “01” THEN

next_state <= ready;

                                                                                          output <= ‘1’;

                                                                                          change <= “00”;

ELSEIF inputs = “10” THEN

next_state <= ready;

                                                                                          output <= ‘1’;

                                                                                          change <= “00”;

ELSEIF inputs = “11” THEN

next_state <= ready;

                                                                                          output <= ‘1’;

                                                                                          change <= “01”;

                                                                                          change <= “10”;

Please complete the following VHDL code...I am implementing a simple vending machine FSM

Solutions

Expert Solution

-- Here it is understood from code snipet that cost of good is 15 cent. Hence two more states added to return 10 or 20 ---cents based on inputs

LIBRARY ieee;

USE ieee.std_logic_1164.ALL;

ENTITY Vendingvhdl IS

PORT(

Clk : IN STD_LOGIC;

Change : OUT STD_LOGIC_VECTOR(1 downto 0);

Inputs : IN STD_LOGIC_VECTOR(1 downto 0);

output : OUT STD_LOGIC);

END Vendingvhdl;

ARCHITECTURE vending of Vendingvhdl IS

TYPE STATE_TYPE IS (empty, fivecent, tencent, return15, return20,ready);

SIGNAL current_state, next_state : STATE_TYPE;

BEGIN

process(clk)

begin

if rising_edge (Clk) then

current_state <= next_state;

end if;

end process;

COMBINE: PROCESS (current_state, inputs)

BEGIN

CASE current_state IS

When empty =>

IF inputs = "00" then

next_state <= empty;

output <= '0';

change <= "00";

ELSIF inputs = "01" THEN

next_state <= fivecent;

output <= '0';

change <= "00";

ELSIF inputs = "10" THEN

next_state <= tencent;

output <= '0';

change <= "00";

ELSIF inputs = "11" THEN

next_state <= ready;

output <= '1';

change <= "10";

END IF;

When fivecent =>

IF inputs = "00" then

next_state <= fivecent;

output <= '0';

change <= "00";

ELSIF inputs = "01" THEN

next_state <= tencent;

output <= '0';

change <= "00";

ELSIF inputs = "10" THEN

next_state <= ready;

output <= '1';

change <= "00";

ELSIF inputs = "11" THEN

next_state <= return15;

output <= '1';

change <= "01";

END IF;

When return15 =>

next_state <= ready;

change <= "10";

When tencent =>

IF inputs = "00" then

next_state <= tencent;

output <= '0';

change <= "00";

ELSIF inputs = "01" THEN

next_state <= ready;

output <= '1';

change <= "00";

ELSIF inputs = "10" THEN

next_state <= ready;

output <= '1';

change <= "01";

ELSIF inputs = "11" THEN

next_state <= return20;

output <= '1';

change <= "10";

END IF;

When return20 => next_state <= ready;

change <= "10";

When ready => next_state <= empty;

end case;

end process;

end vending;


Related Solutions

CAN SOMEONE RUN THIS WITH VHDL AND SEND ME THE OUTPUT? LIBRARY ieee; USE ieee.std_logic_1164.ALL; ENTITY...
CAN SOMEONE RUN THIS WITH VHDL AND SEND ME THE OUTPUT? LIBRARY ieee; USE ieee.std_logic_1164.ALL; ENTITY LFSR8 IS PORT (Clk, Rst: IN std_logic; output: OUT std_logic_vector (7 DOWNTO 0)); END LFSR8; ARCHITECTURE LFSR8_beh OF LFSR8 IS SIGNAL Currstate, Nextstate: std_logic_vector (7 DOWNTO 0); SIGNAL feedback: std_logic; BEGIN StateReg: PROCESS (Clk,Rst) BEGIN IF (Rst = '1') THEN Currstate <= (0 => '1', OTHERS =>'0'); ELSIF (Clk = '1' AND Clk'EVENT) THEN Currstate <= Nextstate; END IF; END PROCESS; feedback <= Currstate(4)...
Simulate this code in ISE Simulator (ISim) and screenshot the simulation library IEEE; use IEEE.STD_LOGIC_1164.ALL; use...
Simulate this code in ISE Simulator (ISim) and screenshot the simulation library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL; entity multiplexer is Port (     din:in STD_LOGIC_VECTOR (7 downto 0);    sel:in STD_LOGIC_VECTOR (2 downto 0);    dout : out STD_LOGIC); end multiplexer; architecture Behavioral of multiplexer is begin     process (din,sel)     begin       case sel is            when "000"=> dout <= din(7);            when "001"=> dout <= din(6);            when "010"=> dout <= din(5);            when "011"=>...
Can someone run this in vhdl and send me the output? acreenshot library IEEE; use IEEE.STD_LOGIC_1164.ALL;...
Can someone run this in vhdl and send me the output? acreenshot library IEEE; use IEEE.STD_LOGIC_1164.ALL; entity VHDL_MOORE_FSM_Sequence_Detector is port ( clock: in std_logic; --- clock signal reset: in std_logic; -- reset input sequence_in: in std_logic; -- binary sequence input detector_out: out std_logic -- output of the VHDL sequence detector ); end VHDL_MOORE_FSM_Sequence_Detector; architecture Behavioral of VHDL_MOORE_FSM_Sequence_Detector is type MOORE_FSM is (Zero, One, OneZero, OneZeroZero, OneZeroZeroOne); signal current_state, next_state: MOORE_FSM; begin -- Sequential memory of the VHDL MOORE FSM Sequence...
Queens Library, an independent not-for-profit entity received $30,000 in dividends and $24,000 in interest on its...
Queens Library, an independent not-for-profit entity received $30,000 in dividends and $24,000 in interest on its investment portfolio.  In addition, the entity also accrued $6,000 in interest on the portfolio.  The decrease in fair value of the portfolio during the year was $8,000. How much should the entity report as investment at the end of the year $8,000 $52,000 $54,000 $60,000
Convert 1.8125 to IEEE-754 representation. Show all your work.
Convert 1.8125 to IEEE-754 representation. Show all your work.
Convert 1.8125 to IEEE-754 representation. Show all your work.
Convert 1.8125 to IEEE-754 representation. Show all your work.
Represent (10.375)10 as single precision IEEE 754, show all the steps
Represent (10.375)10 as single precision IEEE 754, show all the steps
Question #4 DO NOT USE ANY NON-STANDARD LIBRARY. o All the required libraries have already been...
Question #4 DO NOT USE ANY NON-STANDARD LIBRARY. o All the required libraries have already been included. O DO NOT INCLUDE ANY OTHER LIBRARY INTO THE CODE. o DO NOT ALTER THE NAMES OF THE C FILES PROVIDED. o DO NOT ALTER THE NAMES AND PROTOTYPES OF THE FUNCTIONS. DO NOT ALTER THE CODE, ONLY ADD WHATS NEEDED TO MAKE IT WORK. This is the code: #include <stdio.h> /* * This function counts and returns the number of adjacent Up...
can i use port mapping inside a process in vhdl coding
can i use port mapping inside a process in vhdl coding
Are all intra-entity tranasactions eliminated? Or some are recognized overtime?
Are all intra-entity tranasactions eliminated? Or some are recognized overtime?
ADVERTISEMENT
ADVERTISEMENT
ADVERTISEMENT