2021-11-30 18:49:54 +01:00

80 lines
2.1 KiB
VHDL

----------------------------------------------------------------------------------
-- Company:
-- Engineer:
--
-- Create Date: 16.11.2021 12:02:26
-- Design Name:
-- Module Name: Gene_Position - Behavioral
-- Project Name:
-- Target Devices:
-- Tool Versions:
-- Description:
--
-- Dependencies:
--
-- Revision:
-- Revision 0.01 - File Created
-- Additional Comments:
--
----------------------------------------------------------------------------------
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
-- Uncomment the following library declaration if using
-- arithmetic functions with Signed or Unsigned values
use IEEE.NUMERIC_STD.ALL;
-- Uncomment the following library declaration if instantiating
-- any Xilinx leaf cells in this code.
--library UNISIM;
--use UNISIM.VComponents.all;
entity Gene_Position is
Port ( up : in STD_LOGIC;
down : in STD_LOGIC;
left : in STD_LOGIC;
right : in STD_LOGIC;
clk: in STD_LOGIC;
reset: in STD_LOGIC;
PosX : out unsigned (9 downto 0);
PosY : out unsigned (8 downto 0));
end Gene_Position;
architecture Behavioral of Gene_Position is
signal valPosX: unsigned (9 downto 0);
signal valPosY: unsigned (8 downto 0);
begin
process(up, down, left, right, valPosX, valPosY, clk, reset)
begin
if (reset = '0') then
valPosX <= to_unsigned(100, valPosX'length);
valPosY <= to_unsigned(100, valPosY'length);
else
if (clk'event and clk='1') then
if (up='1') then
valPosY <= valPosY + 1;
valPosX <= valPosX;
elsif ( down='1') then
valPosY <= valPosY - 1;
valPosX <= valPosX;
elsif ( left='1') then
valPosX <= valPosX - 1;
valPosY <= valPosY;
elsif ( right='1') then
valPosX <= valPosX + 1;
valPosY <= valPosY;
else
valPosX <= valPosX;
valPosY <= valPosY;
end if;
end if;
end if;
end process;
PosX <= valPosX;
PosY <= valPosY;
end Behavioral;