Forum Discussion
Altera_Forum
Honored Contributor
12 years agoThis is the first part:
library ieee;
use IEEE.std_logic_1164.all;
use IEEE.std_logic_signed.all;
use IEEE.std_logic_arith.all;
use IEEE.std_logic_unsigned.all;
use IEEE.numeric_std.all;
use ieee.math_real.all;
use work.VISDIS3.all;
entity FunzioneP13 is
port (
SW: in STD_LOGIC_VECTOR (9 downto 0);
HEX0: out STD_LOGIC_VECTOR (0 to 6);
HEX1: out STD_LOGIC_VECTOR (0 to 6);
HEX2: out STD_LOGIC_VECTOR (0 to 6);
HEX3: out STD_LOGIC_VECTOR (0 to 6)
);
end FunzioneP13;
architecture Behavior of FunzioneP13 is
signal x0: std_logic;
signal x1: std_logic;
signal x2: std_logic;
signal x3: std_logic;
signal x4: std_logic;
signal first: std_logic_vector(0 to 4);
signal temp: integer;
begin
x0<= SW(9);
x1<= SW(8);
x2<= SW(7);
x3<= SW(6);
x4<= SW(5);
PROCESS(X0,X1,X2,X3,X4)
BEGIN
for i in 0 to 4 loop
first(i)<=SW(I);
END LOOP;
temp<=VEC_TOINT(first);
HEX0<=INT_TO7SEG(temp);
END PROCESS;
end architecture;
And this is the package
library ieee;
use ieee.std_logic_1164.all;
use ieee.numeric_std.all;
PACKAGE VISDIS3 IS
FUNCTION INT_TO7SEG (A:INTEGER) RETURN STD_LOGIC_VECTOR;
FUNCTION VEC_TOINT (A: in STD_LOGIC_VECTOR) RETURN INTEGER;
END VISDIS3;
PACKAGE BODY VISDIS3 IS
FUNCTION INT_TO7SEG (A:INTEGER) RETURN STD_LOGIC_VECTOR IS
VARIABLE RESULT: STD_LOGIC_VECTOR(6 downto 0);
BEGIN
CASE A IS
WHEN 0 => RESULT:="0000001";
WHEN 1 => RESULT:="1111001";
WHEN 2 => RESULT:="0100100";
WHEN 3 => RESULT:="0110000";
WHEN 4 => RESULT:="0011001";
WHEN 5 => RESULT:="0010010";
WHEN 6 => RESULT:="0000010";
WHEN 7 => RESULT:="1111000";
WHEN 8 => RESULT:="0000000";
WHEN 9 => RESULT:="0010000";
WHEN OTHERS => RESULT:=(OTHERS=>'0');
END CASE;
RETURN RESULT;
END INT_TO7SEG;
--------------------------------------------------
FUNCTION VEC_TOINT (A: in STD_LOGIC_VECTOR) RETURN INTEGER IS
variable temp: bit_vector(A'range);
variable result: integer :=0;
BEGIN
for index in A'range loop
result :=result * 2 + bit'pos(temp(index));
end loop;
if A(A'left) = '1' then
result :=(-result)-1;
end if;
return result;
END VEC_TOINT;
---------------------------------------------------
END VISDIS3;