jak w temacie - chciałem napisać program w VHDL
który zlicza ilośc 1 w słowie 8 bitowym,
wynikiem jest 7bitowe słowo - które wrzucam na 7segmentówke
i wyświetla mi sie cyferka...
wg mnie powinno działać, w symulacji w modelSim nie działa.
z góry dziękuje za wzselkie uwagi.
Krzysztof
Kod: Zaznacz cały
library IEEE;
use IEEE.std_logic_1164.all;
entity vhdl_xys_last is
port (
a : in std_logic_vector(0 to 7);
y : out std_logic_vector(0 to 6)
);
end entity vhdl_xys_last;
architecture GENERATOR of vhdl_xys_last is
signal pom : std_logic;
signal i,ile : integer;
begin
ustal : process(a)
begin
pom <= '0';
ile <= 0;
for i in 0 to 7 loop
if a(i)='1' then
ile<=ile + 1;
end if;
end loop;
pom <= '1';
end process ustal;
com : process (pom) is
begin
if (rising_edge(pom)) then -- czyli wiemy ze ma generowac ILOSC,
-- tylko jesli skonczy zczytywac wszystkie 7
case ile is -- -- bitow wejsciowych
when 0 =>
y <= "0001000";
when 1 =>
y <="0110111";
when 2 =>
y <= "1000010";
when 3 =>
y <= "0010010";
when 4 =>
y <= "0110001";
when 5 =>
y <= "0011000";
when 6 =>
y <= "0001000";
when 7 =>
y <= "0110110";
when 8 =>
y <= "0000000";
when others =>
y <= "1011010";
end case;
end if;
end process com;
end architecture GENERATOR;