Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek dla www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Uniwibrator w VHDL. W jaki sposób opisać? Wykrycie narastającego zbocza.

25 Kwi 2006 00:23 1185 6
  • Poziom 21  
    witam
    czy ktos moglby mi napisac jak opisac uniwibrator w vhdlu
    potrzebuje bardzo prosty model posiadajacy jedno wejscie i jedno wyjscie, po wykryciu narastajacego zbocza na wejsciu uklad daje 1 na wyjsciu na okreslony z gory przeze mnie czas,
    z gory dzieki za pomoc
  • Poziom 15  
    Witam!

    Można zrobić to tak jak w pliku , który załączam (uniwibrator.pdf). Działa to tak, że wykrycie narastającego zbocza sygnału wejściowego ustawia wyjście na '1' i uruchamia licznik. Licznik zlicza takty zegarowe i kiedy odliczy zadaną z góry liczbę taktów (zadany z góry czas), wyjście zmienia się na '0'. Dołączam też plik z wynikiem symulacji działania projektu (symulacja.pdf)
  • Poziom 21  
    dzieki za odpowiedz, ten uniwibrator jest troche skomplikowany, pewnie dziala ale czy nie da sie tego zrobic jakos prosciej? dopiero zaczynam z vhdlem i mam problem z tym uniwibratorem ale wiem ze mozna zrobic np. czas propagacji czegos dopisujac after x ns, nie mozna by jakos w ten sposob tego zrobic? zeby po wykryciu narastajacego zbocza dal jedynke na wyjsciu na czas x?
  • Pomocny post
    Poziom 15  
    Witam !
    Polecenie after x ns nie jest syntezowane. Oznacza to ,że w kodzie vhdl może wystąpić zapis after x ns ale podczas syntezy zapis ten zostanie pominięty. Polecenie after x ns można użyć przy pisaniu symulacji. Określasz wtedy np moment zmiany jakiegoś sygnału wejściowego.

    Tak więc może da się zrobić ten uniwibrator prościej, ale na pewno nie da się go zrobić tak prosto jak myślisz.
  • Poziom 21  
    a czy po instrukcji (if - then) mozna podac kilka instrukcji do wykonania czy tylko jedna? bo cos nie moge sobie z tym poradzic?
  • Pomocny post
    Poziom 15  
    Witam!
    Po instrukcji można podać więcej niż jedną instrukcję, np. tak jak na poniższym przykładzie.

    process(reset,clk)
    begin
    if reset='0' then
    e<='0';
    f<='0';
    g<='0';
    elsif clk'event and clk='1' then
    e<=(a and b) or c;
    f<=d or (c and a);
    g<=c and d and a;
    end if;
    end process;

    Próbowałeś robić to w ten sposób ?
    Pozdrawiam
  • Poziom 21  
    mam male problemy ze skladnia w tym jezyku, ale juz dziala dzieki za pomoc