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.

Potrzebna podpowiedź z VHDL

18 Cze 2012 20:50 1947 6
  • Poziom 8  
    Witam wszystkich!

    Zaczynam uczyć się VHDL'a i po zapoznaniu się z podstawami, postanowiłem opisać (wydaje mi się) prosty układ.

    Treść:
    Zaprojektować przy użyciu VHDL układ zamka szyfrowego z szeregowym wprowadzaniem kodu bit po bicie na wejściu D.
    Ustawiając '1' na wejściu A powoduje wpis szyfru bit po bicie do Rejestru A. Zatwierdzenie wpisu następuje narastającym zboczem sygnału WPIS. W trakcie wpisywania do tego rejestru wyświetlana jest jego zawartość. Po wprowadzeniu
    szyfru i ustawieniu '0' na wejściu A zamek jest gotowy do pracy. Użytkownik wprowadza bity kodu w taki sam sposób, ale do rejestru B. W trakcie wprowadzania kodu wyświetlana jest zawartość Rejestru B. Oba rejestry są czterobitowymi rejestrami przesuwnymi. Sygnał otwarcia zamka Q='1' zostanie ustawiony, o ile zawartość jest identyczna. Rejestry są zerowane sygnałem RST.

    Do wykonania tego opisu wiem, że potrzebuję napisać:
    - demultiplekser ( do którego doprowadzane jest Wpis oraz A, a z którego wychodzi Q0 i Q1)
    - dwa rejestry przesuwne ( z wejściem D i odpowiednio zamiast CLK - Q0 dla RejA i Q1 dla Rej B, oraz wejściem RST. Wyjścia są następujące dla RejA - Qra0, RejB - Qrb)

    - komparator (z dwoma wejściami Qra i Qrb oraz wyjściem Q)
    - multiplekser(z wejściem Qra, Qrb i A oraz wyjściem Qmulti)

    A teraz wstawiam kod, który napisałem:
    Kod: vhdl
    Zaloguj się, aby zobaczyć kod

    Czy jest ktoś w stanie powiedzieć czy dobrze jest to napisane?
    Czy rejestr jest prawidłowo napisany?


    W razie nie jasności w opisie proszę pisać.
    Za wszystkie odpowiedzi z góry dziękuję.
  • Poziom 26  
    To ja dodam od siebie: warto zrobić globalny jeden zegar, a sygnał "wpis" dać na wejście Clock Enable. Jeśli potrzebne jest jego zbocze a nie poziom to najlepiej zrobić detektor zbocza na dodatkowym rejestrze przesuwającym. Tak jest bezpieczniej, bo przy różnych zegarach w procesie routowania może się zrobić ładna masakra
  • Poziom 8  
    On ma być tak samo zrobiony jak jest tutaj jest w treści. I chcę się nauczyć robić tak jak w treści zadania ;P, nie chcę ingerować swoimi "wkładami :)
  • Poziom 26  
    Tyle, że robienie dosłownie jest imho niezgodne ze sztuką to raz.
    Dwa - nikt Ci nie broni wykrywać zbocza sygnału wpis przy pomocy globalnego clocka.
    Trzy - jak zrobisz dosłownie zgodnie z treścią to po prostu może nie zadziałać bo syntezer/placer może zrobić Ci tam siekę.
  • Poziom 30  
    skotix23 napisał:
    On ma być tak samo zrobiony jak jest tutaj jest w treści. I chcę się nauczyć robić tak jak w treści zadania ;P, nie chcę ingerować swoimi "wkładami :)

    Zadanie z studiów ? To daj telefon do wykładowcy/prowadzącego to zaraz z nim o tym porozmawiam. Potem złe nawyki zostają i ciężko jest je wyplenić. Wykładać HDL to jedno, ale przynajmniej żeby to miało odzwierciedlenie w rzeczywistych układach PLD :!:

    Dobra, przeczytaj Sobie ten artykuł: Synchronization and Edge-detection

    I kieruj się zasadą KISS - "Keep It Synchronous, Stupid".
  • Poziom 8  
    rozwiązałem zadanie, nie ze studiów, ale z neta. A zadanie okazało się proste, w sumie, to źle przeprowadziłem testbencha ;). Działa pięknie.