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

Dzielnie dwóch liczb 4 bitowych kod NKB

15 Sty 2017 20:52 657 10
  • Poziom 15  
    Witam, mam do zaprojektowania układ, który będzie dzielił mi dwie liczby cztero bitowe A i B. Do tej pory stworzyłem taki układ, jednak nie działa poprawnie. Np gdy liczba A=15, a B=3, to w raporcie symulacji mam liczbę 14, reszta 1.
    Co robię źle ?

    Dzielnie dwóch liczb 4 bitowych kod NKB

    Dodam że wzorowałem się na tym schemacie :

    Link
    Link

    Pozdrawiam
  • Poziom 21  
    Odejmujesz czy dodajesz bity w sumatorach?
  • Poziom 15  
    Z układu wynika że chyba odejmuję ( nie jestem zbyt dobry w cyfrówce )
  • Specjalista elektronik
    Pewnie trzeba dokładniej poczytać opis tego, na czym się wzorujesz. Nie wiem np. co ma robić wewnętrzny kwadracik z divider-block2 (ten, który ma wejścia A, B, Li, wyjścia Lo i D), bo to nie jest opisane w linkach, które podałeś (być może to jest 1-bitowy układ odejmowania z wejściem i wyjściem "pożyczki"); widzę, że OS wybiera, czy D' ma być D (dla OS=1), czy X (dla OS=0).
  • Poziom 15  
    Dokładniej jest to ta strona: Link
  • Poziom 21  
    Pokaż schemat wewnętrzny tych sumatorów v2
  • Poziom 15  
    Już pokazuję, wygląda to tak ( sumator i sumatorv2)
    Dzielnie dwóch liczb 4 bitowych kod NKB Dzielnie dwóch liczb 4 bitowych kod NKB
  • Poziom 21  
    A jednak sumujesz. Musisz zbudować 1-bitowy układ odejmujący, który ma dwa wejścia X i Y (odjemna i odjemnik), wejście pożyczki Li, wyjście pożyczki Lo, oraz wejście OS, które steruje multiplekserem podającym na wyjście D - albo wynik odejmowania X-Y, albo odjemną X. Napisz sobie tabelę prawdy takiego układu i po zbudowaniu zasymuluj.
  • Specjalista elektronik
    A ja bym proponował napisać w jakimś języku programowania (do takich prostych rzeczy wygodne są języki skryptowe, jak Tcl, czy Python, bo np. C wymaga kompilowania programu, co jest dużą niedogodnością, jeśli program ma być często poprawiany) symulację działania takiego układu, i sprawdzić: działanie pojedynczego modułu "sumatora" (i wypisać jego tabelę prawdy), i działanie całości (wyniki dla wszystkich możliwych dzieleń - jest tego raptem 240, bo przez 0 dzielić nie można). Można w nim wyodrębnić procedurę opisującą działanie modułu - na początek napisać ją tak, by dawała wyniki zgodne z tabelą prawdy, i sprawdzić, czy wyniki dzielenia będą prawidłowe.

    Dla układu odejmującego X-Y tabela prawdy powinna wyglądać tak (mam nadzieję, że nie pomyliłem):










    XYLiDLo
    00000
    10010
    01011
    11000
    00111
    10100
    01101
    11111


    Ten układ może dzielić liczbę 7-bitową przez 4-bitową - ale wtedy ma 7 wyjść "reszty", które należałoby sprawdzić - czy "reszta" jest mniejsza od dzielnika, bo jeśli nie, to jest błąd - dzielna była za dużo, żeby wynik mógł się zmieścić (tak będzie przy próbie dzielenia przez 0).
  • Poziom 15  
    Witam, chodzi w tym wszystkim o to że ten ukłąd musi być zbudowany na bramkach, i w tym konkretnym programie. Także napisanie tego w np. w C nie wchodzi w grę raczej.

    Pytanie brzmi co muszę zmienić/dodać aby przerobić ten układ który już został zrobiony działał poprawnie?