Program w VHDL-u

Dyskusje ogólne na temat "cyfrówki" czyli wszystko o TTL/CMOS, językach VHDL i VERILOG, bramkach, rejestrach, przerzutnikach... Dobre miejsce na pytania odnośnie uniwersalnych programatorów (np. Willem) a także podłączania własnych peryferiów do komputera PC.
ODPOWIEDZ
Fr3di
-
Posty: 1
Rejestracja: 15 sty 2007, 19:02

Program w VHDL-u

Post autor: Fr3di » 15 sty 2007, 19:15

Witam. Potrzebuje waszej pomocy.
Za kilka dni mam do oddania projekt, w którym muszę zrobić generator PWM diody LED. W zasadzie od strony teoretycznej wszystko mam już zrobione ale brakuje najważniejszego czyli programu.
Powinien on ustawiać jasność głównej diody w 16 stanach, sterowane to powinno być dwoma przyciskami (up, down), a aktualnie ustawiony stan powinien być pokazywany na osobnych 4 diodkach.
Czy byłby ktoś w stanie taki (podobny prosty) program napisać z komentarzami i algorytmem działania gdyż ja jeszcze nie za bardzo chwytam ten język programowania? Algorytm ostatecznie mogę sobie stworzyć sam na podstawie programu.
Będę bardzo wdzięczny za pomoc.

[ Dodano: 2007-01-21, 19:34 ]
To moze inaczej. Znalazlem na gdzies w internecie taki oto kod. Z tego co sie orientuje to dziala on jako regulator 8 bitowy. Moze ktos by pomogl mi przerobic to, zeby dzialalo w 16 stanach (za pomoca przyciskow gora, dol) i wytlumaczyl dzialanie jednej linii z tego kodu?

library IEEE;
use IEEE.STD_LOGIC_1164.all;
use IEEE.STD_LOGIC_UNSIGNED.ALL;

entity PWM is
port (
clk : in std_logic;
PWM_in : in std_logic_vector (7 downto 0) := "00000000";
PWM_out : out std_logic
);
end PWM;

architecture PWM_arch of PWM is
signal PWM_Accumulator : std_logic_vector(8 downto 0); -- tutaj to chyba opisuje ze moze byc 8 stanow i jakis dodatkowy bit
begin
process(clk, PWM_in)
begin
if rising_edge(clk) then
PWM_Accumulator <= ("0" & PWM_Accumulator(7 downto 0)) + ("0" & PWM_in); -- tego nie rozumiem co ta linia robi
end if;
end process;

PWM_out <= PWM_Accumulator(8); -- a to wyrzucam na diode ktora ma sterowac?
end PWM_arch;

ODPOWIEDZ