• Nie Znaleziono Wyników

Modelowanie układów sekwencyjnych w LabView - ćwiczenie 8

N/A
N/A
Protected

Academic year: 2021

Share "Modelowanie układów sekwencyjnych w LabView - ćwiczenie 8"

Copied!
6
0
0

Pełen tekst

(1)

Modelowanie układów sekwencyjnych w LabView - ćwiczenie 8

1. Cel ćwiczenia:

Celem ćwiczenia jest zapoznanie się z zasadą działania i strukturami sumatorów binarnych oraz praktyczna realizacja układów sekwencyjnych takich jak przerzutniki i liczniki w środowisku LabView.

2. Wprowadzenie

2.1. Synteza sumatora i półsumatora

Budowę sumatora zaczniemy od prostej analizy dodawania dwóch liczb A i B zapisanych w naturalnym kodzie dwójkowym. Zapis operacji przedstawiono poniżej

Carry= 11000 ---

A= 1101 | 13

B= +1100 |+12

--- --- Suma= 11001 | 25

Przedstawione działanie wykonujemy zaczynając od bitów najmniej znaczących znajdujących się po prawej stronie przesuwając się stopniowo w lewo. Wynikiem sumy logicznej pojedynczej operacji jest bit wynikowy oraz bit informujący o przepełnieniu (tak zwany bit carry) patrz tabela 1. Przeglądając wyniki operacji sumowania możemy zauważyć, że wynik zapisany jest funkcją EXOR a bit przepełnienia można wyrazić jako funkcję AND zmiennych A, B. Powstały z połączenia dwóch omawianych funktorów logicznych układ przedstawiony na rysunku 1 nosi nazwę półsumatora.

Niestety układ półsumatora można zastosować tylko w przypadku, gdy w działaniach nie trzeba uwzględniać przeniesienia wartości z młodszego bitu. W przeciwnym razie należy dodać również wartość bitu carry do aktualnie sumowanych wyrażeń. Strukturę pełnego sumatora zamodelowanego w LabView przedstawiono na rysunku 2.

Rys 1. Struktura półsumatora Rys 2. Struktura sumatora

A B Y Carry

0 0 0 0

0 1 1 0

1 0 1 0

1 1 0 1

Tab 1. Półsumator

(2)

2.2. Synteza układu odejmującego

Binarną operację odejmowania możemy przeprowadzić w dwojaki sposób. Pierwszy sposób przypomina klasyczne odejmowanie rozpoczynając od najmłodszego bitu przechodzimy stopniowo do najstarszego (w przypadku, gdy bit odjemnej jest mniejszy od bitu odjemnika stosujemy zapożyczenie wartości z bitu starszego). Drugą prostszą metodą jest zaprzeczenie odjemnika i dodanie do odjemnej. W systemie dwójkowym zaprzeczenie realizujemy poprzez negację pojedynczych bitów ciągu i dodanie 1 do najmłodszego bitu (np. jeśli B=01100 to NB=10100). Należy również pamiętać że w przypadku wykorzystania operacji sumowania do wyznaczenia różnicy pomijamy przeniesienie dla najstarszego bitu.

Metoda 1

Odjemna= 11001 | 25 Odjemnik= -1100 |-12

--- --- Różnica= 01101 | 13

Metoda 2

A= 11001

NB= +10100

---

Suma= 01101

2.3. Mnożenie liczb w kodzie dwójkowym

Mnożenie realizujemy postępując według następującego algorytmu.

1. Wprowadzamy iloczyn częściowy równy zero

2. Analizujemy bit mnożnej (rozpoczynając od najmłodszego)

a) Bit mnożnej =1 dodajemy mnożnik przesunięty w lewo o (n-1) gdzie n jest numerem analizowanego bitu

b) Bit mnożnej=0 dodajemy 0

3. Powtarzamy punkt 2 analizując wszystkie bity mnożnej

Przykład

Mnożna= 1100 | 12

Mnożnik= x1101 |x13

Krok 1 (1 bit mnożnej =0)

Iloczyn częściowy 0

+ 0

--- 0 Krok 2(2 bit mnożnej =0)

Iloczyn częściowy 0

+ 0

--- 0

(3)

Krok 3 (3 bit mnożnej =1)

Iloczyn częściowy 0

+ 110100

--- 110100 Krok 4 (4 bit mnożnej =1)

Iloczyn częściowy 110100

+ 1101000

---

10011100 |156

3. Przebieg ćwiczenia

3.1. Synteza synchronicznego przerzutnika JK za pomocą programu LabView.

Wybierając Start>Programy>LabVIEW 2009 uruchamiamy pakiet LabView. W głównym oknie programu z paska menu wybieramy File>Open po wybraniu ścieżki …\Pulpit\Ćw 8\Start.lvproj zatwierdzamy OK. Otwarte okno projektu przedstawione na rysunku 3 umożliwia tworzenie bardziej skomplikowanych struktur programów jak również grupowanie i szybkie zarządzanie programami. W celu stworzenia nowego programu należy kliknąć prawym przyciskiem myszy na ikonie My Computer wybierając New>VI. W oknie projektu zostanie utworzony nowy wpis odpowiadający nazwie stworzonej aplikacji (domyślnie Untitled 1). Po zapisaniu programu File>Save w oknie schematu blokowego tworzymy przerzutnik JK zgodnie ze schematem przedstawionym na rysunku 4

Rys 3. Okno projektu Rys 4. Schemat przerzutnika JK

C D

A B

(4)

Do budowy wykorzystamy 3 przyciski reprezentujące wejścia J,K,CK oraz dwie diody wskazujące aktualny stan wejść Q i NQ Łącząc wyjście Q z wejściem

bramki D, a następnie NQ z wejściem B stworzony zostanie element pamięci tak zwany Feedback Node. Element ten można wstawić również ręcznie wybierając z palety funkcji Structures> Feedback Node. Stan pamięci wykorzystany w pierwszym cyklu programu możemy ustawić poprzez złącze Initializer Terminal. Zapisaną strukturę modelowanego

przerzutnika pokazano na rysunku 5. Poprawnie zbudowany przerzutnik powinien realizować funkcję przedstawioną w tabeli 2.

J K

CK Qn-1 0 0 0 1 1 0 1 1

0 0 0 0 0 0

0 1 1 1 1 1

1 0 0 0 1 N

1 1 1 0 1 N

N – stan niedozwolony występujący na wyjściach, wywołany efektem generacji

Rys 5. Budowa struktury przerzutnika JK Tab 2. Tabela prawdy przerzutnika JK 3.2. Synteza przerzutnika T

Tworząc nowy program z palety funkcyjnej wstawiamy Structures>Case Structure.

Wstawiona przez nas struktura jest funkcją wyboru wiec musi zawierać, co najmniej dwie możliwości (domyślnie true i false) W zależności od podłączonego do punktu ? warunku wynikowo wykonana zostanie odpowiednia część podprogramu przypisana do zakładki spełniającej ten warunek. W kolejnym kroku dodając do struktury (zakładka true) element not z palety Boolean>Not tworzymy dwa przyciski i jedną diodę. Całość łączymy zgodnie z rysunkiem 6 nie zapominając o połączeniu wejścia Input z wyjściem Output w zakładce false. W celu zmiany rozmiaru ikon utworzonych poprzez paletę obiektów możemy w oknie programu kliknąć prawym przyciskiem na wstawiony obiekt wybierając polecenie View As Icon.

Rys 6. Struktura podprogramu Rys 7. Struktura przerzutnika T

(5)

Zbudowany program możemy przekształcić na podprogram (tak zwany SubVI). W tym celu najprościej jest zaznaczyć wszystkie elementy wchodzące w strukturę podprogramu i z paska menu wybrać Edit>Create SubVI. Klikając dwa razy na powstały program otwieramy okno z panelem użytkownika. Aby zmienić wyświetlaną ikonę należy kliknąć prawym przyciskiem ikonę znajdującą się w prawej górnej części ekranu, oraz wybrać Edit Icon. Dla bardziej rozbudowanych podprogramów może zaistnieć konieczność dodania dodatkowego wejścia lub wyjścia w tym celu należy podobnie jak poprzednio kliknąć prawym przyciskiem myszy na ikonie programu i wybrać Show Connector. Dodając nowe przyłącze Add Terminal (lub w miarę potrzeby usuwając funkcją Remove Terminal) możemy dokonać powiązania istniejącego terminala ze zmienną.

Powiązanie tworzymy poprzez wskazanie wolnego przyłącza a następnie odpowiadającej mu zmiennej. Niestety w większości sytuacji dodanie nowego terminala do podprogramu spowoduje błąd powiązania w głównym programie, aby go usunąć klikamy prawym klawiszem na ikonie podprogramu i wybieramy Relink To SubVI.

Gotowe podprogramy możemy wstawiać również z okna projektu (rysunek 3) przeciągając ich nazwy na program, w którym chcemy je wykorzystać (w ten

sposób tworzymy strukturę odwołań pomiędzy podprogramami).

W kolejnym kroku w panelu użytkownika tworzymy wykres Waveform Chart (Graph>Waveform Chart). W górnej części utworzonego wykresu (patrz rysunek obok) „rozciągamy” pole z nazwą wyświetlanej funkcji tworząc opis dla dwóch funkcji wejściowych. Aby stworzyć dwa niezależne przebiegi klikamy prawym przyciskiem w polu utworzonej kontrolki wybierając

Stack Plots. Jak większość układów sekwencyjnych przerzutnik T wymaga zastosowania elementu pamięci w tym celu wykorzystamy Shift Register. W pierwszym kroku tworzymy pętlę Structures>While Loop następnie klikając na jej prawym lub lewym obrzeżu wybieramy Add Shift Register. Wartość początkową rejestru możemy ustalić podłączając odpowiednią stałą do lewego przyłącza utworzonego rejestru Wstawiając Express>Sig Manip>Merge Signals pozostałe połączenia tworzymy zgodnie z rysunkiem 7. Po uruchomieniu programy zauważamy, że zarejestrowane przebiegi przypominają trójkąty, aby tego uniknąć należy zmienić sposób łączenia poszczególnych punktów charakterystyk. Klikając prawym przyciskiem myszy na kontrolce wykresu wybieramy Properties następnie w zakładce plots definiujemy parametry wyświetlania dla poszczególnych przebiegów

3.3. Budowa licznika modulo 11 liczącego od 10 do 20

Wykorzystując przygotowane podprogramy generatora, sumatora, oraz bloki zawierające struktury przerzutników JK i D zbuduj układ realizujący licznik liczący od 10 do 20 (rysunek 8).

Wyniki symulacji osobno dla generatora oraz kolejnych wyjść sumatorów przedstaw na wykresach wykorzystując kontrolkę Waveform Chart.

4. Sprawozdanie

W sprawozdaniu należy umieścić zrealizowane na zajęciach struktury sumatorów wraz z ich tabelami stanów i funkcjami logicznymi, zrealizowane struktury przerzutników i liczników (wraz z przebiegami czasowymi) oraz wnioski końcowe.

(6)

Rys 8. Przykład struktury zamodelowanego licznika

Cytaty

Powiązane dokumenty

Aby rozłączyć połączenie VPN, klikamy prawym przyciskiem myszy na ikonkę OpenVPN klienta i z rozwijanej listy wybieramy serwer VPN (jeśli jest ich więcej niż jeden) , a

W tym celu należy kliknąć prawym przyciskiem myszy na nazwę projektu i wybrać opcję New Python File oraz wprowadzić nazwę pliku.. Utworzony zostanie pusty plik z

W przypadku układów kombinacyjnych rozpatrywane są algorytmy syntezy zfeżonych układów, dla których brakuje odpowiedniej liczby wejść i termów związanych

3. Musisz zadbać o spełnienie podstawowych praw takich jak twierdzenie o próbkowaniu, zapewnienie odpowiedniej rozdzielczości czasowej sygnałów oraz

W tym celu należy kliknąć prawym przyciskiem myszy folder główny o nazwie odpowiadającej twojemu adresowi email i i wybrać Menadżer subskrypcji...... Na liście folderów

W oknie schematu blokowego klikamy prawym przyciskiem myszy na białym polu i wybieramy ikonę Programming > Exec Ctrl>While Loop.. Trzymając lewy przycisk myszy tworzymy

Rozwiń foldery nowego projektu i zmień nazwę klasy głównej na Obliczenia, klikając na nazwie klasy WeWy prawym przyciskiem myszy i wybierając kolejno polecenia Refactor |

• wpisz w polu A1 „Nasza pierwsza tabela”, zaznacz obszar od pola A1 do F1, kliknij na zaznaczonym obszarze prawym przyciskiem myszy, zaznacz opcj „Formatuj komórki”