Modelowanie układów sekwencyjnych w LabView


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
A B Y Carry
funkcję AND zmiennych A, B. Powstały z połączenia
0 0 0 0
dwóch omawianych funktorów logicznych układ
0 1 1 0
przedstawiony na rysunku 1 nosi nazwę półsumatora.
1 0 1 0
Niestety układ półsumatora można zastosować tylko w
1 1 0 1
przypadku, gdy w działaniach nie trzeba uwzględniać
Tab 1. Półsumator
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
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 Metoda 2
Odjemna= 11001 | 25 A= 11001
Odjemnik= -1100 |-12 NB= +10100
-------- ------ --------
Różnica= 01101 | 13 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
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
A
B
D
C
Rys 3. Okno projektu Rys 4. Schemat przerzutnika JK
Do budowy wykorzystamy 3 przyciski reprezentujące wejścia J,K,CK oraz dwie diody
wskazujące aktualny stan wejść Q i NQ Aą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
0 0 0 1 1 0 1 1
CK Q
n-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
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.
Rys 8. Przykład struktury zamodelowanego licznika


Wyszukiwarka

Podobne podstrony:
Modelowanie układów mechatronicznych w środowiskach obliczeniowych WYKŁAD
L3 Modelowanie układów mechanicznych
Wykład IX Synteza układów sekwencyjnych
IMiU W03 Modelowanie układów
modelowanie ukladow dynamicznych material do sciagi
MODELOWANIE UKŁADÓW KOMBINACYJNYCH ZA POMOCĄ FUNKTORÓW LOGICZNYCH
13 Projektowanie układów sekwencyjnych procesowo–zależnych o programach liniowych na przykładzie u
Sterowanie sekwencyjne układów hydraulicznych
lab Modelownie liniowych układów dyskretnych2
02 Modelowanie matematyczne układów dynamicznych
Problem modelowania i analizy układów płytowo słupowych w ujęciu MES
Politechnika Białostocka 05 Realizacja pneumatycznych układów sterowania sekwencyjnego
Analizowanie działania układów mikroprocesorowych
,Modelowanie i symulacja systemów, Model dynamiczny

więcej podobnych podstron