VHDL for FPGA Design/Decoder
Appearance
Decoder VHDL Code
[edit | edit source]
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use ieee.numeric_std.all;
entity Decoder is
port(E : in std_logic;
din : in std_logic_vector(2 downto 0);
dout : out std_logic_vector(7 downto 0));
end Decoder;
architecture descript of Decoder is
begin
dout <="00000000" when E='0' else
"00000001" when E='1' and din="000" else
"00000010" when E='1' and din="001" else
"00000100" when E='1' and din="010" else
"00001000" when E='1' and din="011" else
"00010000" when E='1' and din="100" else
"00100000" when E='1' and din="101" else
"01000000" when E='1' and din="110" else
"10000000" when E='1' and din="111";
end descript;
Decoder Testbench File
[edit | edit source]LIBRARY ieee;
USE ieee.std_logic_1164.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
-- Uncomment the following library declaration if using
-- arithmetic functions with Signed or Unsigned values
USE ieee.numeric_std.ALL;
ENTITY tb_Decoder IS
END tb_Decoder;
ARCHITECTURE behavior OF tb_Decoder IS
-- Component Declaration for the Unit Under Test (UUT)
COMPONENT Decoder
PORT(
E : IN std_logic;
din : IN std_logic_vector(2 downto 0);
dout : OUT std_logic_vector(7 downto 0)
);
END COMPONENT;
--Inputs
signal E : std_logic := '0';
signal din : std_logic_vector(2 downto 0) := (others => '0');
--Outputs
signal dout : std_logic_vector(7 downto 0);
-- No clocks detected in port list. Replace clk below with
-- appropriate port name
signal clk : std_logic;
constant clk_period : time := 10 ns;
BEGIN
-- Instantiate the Unit Under Test (UUT)
uut: Decoder PORT MAP (
E => E,
din => din,
dout => dout
);
-- Clock process definitions
clk_process :process
begin
clk <= '0';
wait for clk_period/2;
clk <= '1';
wait for clk_period/2;
end process;
-- Stimulus process
stim_proc: process
begin
-- hold reset state for 100 ns.
wait for 100 ns;
din <= "001";
wait for clk_period;
din <= "010";
wait for clk_period;
din <= "011";
wait for clk_period;
din <= "100";
wait for clk_period;
din <= "101";
wait for clk_period;
din <= "110";
wait for clk_period;
din <= "111";
wait for clk_period;
E <= '1';
wait for clk_period;
din <= "000";
wait for clk_period;
din <= "001";
wait for clk_period;
din <= "010";
wait for clk_period;
din <= "011";
wait for clk_period;
din <= "100";
wait for clk_period;
din <= "101";
wait for clk_period;
din <= "110";
wait for clk_period;
din <= "111";
-- insert stimulus here
wait;
end process;
END;
Decoder Simulation Waveform
[edit | edit source]
Link to Video of ISE Navigation to RTL Schematic
[edit | edit source]See Also
[edit | edit source]
This page or section is an undeveloped draft or outline. You can help to develop the work, or you can ask for assistance in the project room. |