Lab. 5 > Układy iteracyjne

Transkrypt

Lab. 5 > Układy iteracyjne
Technika Cyfrowa
Laboratorium 2014/15
2011/12
ćw. 5
Układy iteracyjne
Należy zbudować jeden z układów iteracyjnych, przedstawionych w dalszej części instrukcji.
Szablon układu został przygotowany wcześniej – można go pobrać tutaj.
Ze względu na powtarzalność elementów na schemacie oraz ograniczenie ekranu roboczego,
wykorzystano możliwość zgrupowania elementów składających się na pojedynczy blok
układu iteracyjnego jako „czarną skrzynkę”, która posiada określoną liczbę wejść i wyjść.
Wstępnie podłączono wejścia i wyjścia pierwotne układu. Zadaniem studentów jest m.in.
utworzenie w bloczkach dodatkowych wejść i wyjść, przez które będą nadawane i odbierane
sygnały międzyblokowe. Aby wykonać to zadanie, należy przejść do trybu edycji
któregokolwiek z bloczków, umieszczonych na schemacie, klikając na nim dwukrotnie i
wybierając Edit HB/SC. Otwiera się nowe okno ze schematem (pokazanym poniżej), w
którym znajdują się tylko porty: wejściowy (x) i wyjściowy (y).
Należy umieścić dodatkowe porty: wejścia i wyjścia sygnałów międzyblokowych. Można to
zrobić, wybierając Place>Connectors>HB/SC Connector z menu lub skrótem Ctrl+I. Liczba
wymaganych portów zależy od zadania. Załóżmy, że potrzeba dwóch linii wejściowych:
jednej, niosącej informację lewostronną (tj. przesyłanej z lewej strony na prawą) oraz jednej,
którą przesyłana jest informacja prawostronna. Niech wejście dla informacji lewostronnej
będzie oznaczone a, a dla informacji prawostronnej c. Każdy z bloków musi generować
informacje prawo- i lewo-stronne dla bloków sąsiednich: tutaj odpowiednio B i D.
UWAGA! Nie można używać oznaczeń portów typu Pk+1, Pk-1, ani też P>, L<.
Nierozróżnialne są małe i wielkie litery, pomimo, że są widoczne jako takie na schemacie.
Porty, dla wygody łączenia wewnątrz bloczków, można przerzucić w poziomie, lub obrócić
prawo-, bądź lewoskrętnie. Nie ma to jednak wpływu na położenie wyprowadzeń bloczka na
głównym schemacie.
Po wstawieniu portów, należy uzupełnić „wnętrze” bloczka elementami, realizującymi
pożądaną funkcję logiczną, np:
Po zakończeniu edycji bloczka i powrocie do głównego schematu, wszystkie bloczki zostają
uzupełnione o wyprowadzenia, odpowiadające dodanym portom wejściowym i wyjściowym.
Często zdarza się, że położenie tych wyprowadzeń jest niedogodne ze względu na sposób
doprowadzenia do nich sygnałów. Korzystnie jest więc zmienić położenie tych wyprowadzeń
w modelu bloczka. Porównaj rozmieszczenie wyprowadzeń na poniższym rysunku (korzystne
po lewej).
Aby zmienić położenie wyprowadzeń, należy kliknąć bloczek prawym p.m. i wybrać Edit
Symbol/Title Block.
Następnie, chwytając poszczególne wyprowadzenia, przesunąć je wokół bloczka w inne
miejsce:
Zadania do realizacji (wybór zadania przez prowadzącego)
1. Zbudować układ przepuszczający na wyjście jedynki: dwie pierwsze z lewej strony
oraz pierwszą z prawej strony.
UWAGA! Przykładowo dla kombinacji wejściowych 000011, 010001, 10000, 1110000 wszystkie jedynki pojawią się na
wyjściach. W pierwszym i drugim przypadku są to dwie pierwsze z lewej jedynki, w przypadku drugim występująca jedynka jest
pierwszą z prawej, a w ostatnim – dwie pierwsze z lewej i pierwsza z prawej. Natomiast dla kombinacji 0111010 ciąg na wyjściach
układu powinien być 0110010.
2. Ciągi danych transmitowane są w pakietach o długości n bitów. Bity ciągu danych
są buforowane i podawane równolegle na n wejść układu kombinacyjnego, który ma
natychmiast stwierdzić, gdzie w ciągu występuje podana sekwencja 110. Jeżeli w
pakiecie występuje taka sekwencja (lub kilka), to na wyjście podawana jest jedynka.
Występuje ona na tej pozycji, na którą przypada zero w sekwencji wejściowej.
PRZYKŁAD: Sekwencji 00111001011101 powinien odpowiadać wyjściowy ciąg 00000100000010
3. Zaprojektuj iteracyjny układ kombinacyjny, który przepuszcza na wyjście
sekwencję 101. Jeżeli w ciągu występuje kilka takich sekwencji, powinny być
przepuszczone wszystkie, np. jeśli na wejście podano ciąg 10101001, to wyjście
powinno być 10101000 (kursywą i boldem zaznaczono dwie sąsiadujące sekwencje).
4. „1 z n” jest jednym z kodów umożliwiających detekcję błędu powstałego podczas
transmisji. Zaproponuj układ kontrolujący czy podane na wejście słowo jest słowem
kodowym „1 z n”. Na n wyjść przepisywane jest wejściowe słowo o ile jest poprawne.
Jeśli zawiera więcej niż jedną jedynkę, na wszystkich wyjściach mają wystąpić
jedynki. Z kolei, jeżeli słowo zawiera same zera, wszystkie wyjścia mają pozostać
zerowe.
5. Zaprojektuj układ iteracyjny, który przepisuje na wyjścia wszystkie oprócz 3
ostatnich jedynek („najmłodszych”). Zera są przepisywane na wyjście bez zmiany.
6. Zaprojektuj układ, który zamienia n-bitowe ciągi, w których znajdują się
przynajmniej dwa sąsiadujące zera na ciągi, w których wszystkie bity są zerami. Jeśli
nie występują grupy dwóch zer, słowo wejściowe przepisywane jest na wyjście bez
zmian.
7. Zaproponuj układ, który na swoje wyjścia pierwotne przepisuje słowo wejściowe
pod warunkiem, że występują w nim nie więcej jak dwie jedynki. W przeciwnym
wypadku wszystkie bity mają być zanegowane.
8. Stwórz układ iteracyjny, który neguje wszystkie bity znajdujące się pomiędzy
skrajnymi zerami. Jeśli wystąpi tylko jedno zero, nie należy negować żadnego bitu.
PRZYKŁAD: Kombinacji wejściowej 1101001 ma odpowiadać ciąg 1100101. Wytłuszczono skrajne zera, a podreślono bity, które
należy zanegować.
9. Zbuduj układ iteracyjny, w którym k-ty bit słowa wejściowego jest negowany, jeżeli
bity k-1 oraz k-2 mają odpowiednio wartość 0 i 1, natomiast z lewej strony k-tego bitu
liczba jedynek jest nieparzysta.
10. Zbuduj układ iteracyjny, obliczający moduł liczby w konwencji U2, podawanej na
wejścia pierwotne.
11. Zaprojektuj układ iteracyjny, w którym jedynka na k-tym bicie jest przepuszczana
tylko wtedy, jeżeli z prawej strony występuje parzysta liczba jedynek, a na pozycjach
k+1 i k+2 występują zera.
12. Zbuduj układ iteracyjny, który powoduje wyzerowanie wszystkich bitów w ciągu
podanym na wejścia pierwotne, jeżeli występuje w nim sekwencja 110.
13. Stwórz układ iteracyjny, który zeruje wszystkie bity ciągu podanego na wejścia
pierwotne, jeżeli występuje w nim parzysta liczba jedynek.
* 14. Zbuduj układ iteracyjny, który mnoży liczbę bez znaku, podawaną na wejścia
pierwotne przez 3. Układ ma sygnalizować wystąpienie nadmiaru.
* 15. Zbuduj układ iteracyjny, który udostępnia wynik dzielenia przez 3 liczby bez
znaku, podawanej na wejścia pierwotne. Układ ma udostępniać także resztę z
dzielenia.
* 16. Zaprojektuj układ iteracyjny, który przesuwa wejściową liczbę o jeden bit w lewo,
jeżeli suma liczby jedynek na wszystkich wejściach jest nieparzysta. W razie
wystąpienia przesunięcia, na najmniej znaczącej pozycji ma wystąpić zero. Układ ma
sygnalizować wystąpienie nadmiaru.
* zadania dodatkowe, do realizacji po wykonaniu zadania podstawowego

Podobne dokumenty