VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ BRNO UNIVERSITY OF TECHNOLOGY

Podobné dokumenty
Logické obvody. Logický obvod. Rozdělení logických obvodů - Kombinační logické obvody. - Sekvenční logické obvody

Logické obvody - kombinační Booleova algebra, formy popisu Příklady návrhu

Návrh základních kombinačních obvodů: dekodér, enkodér, multiplexor, demultiplexor

VY_32_INOVACE_CTE-2.MA-15_Sčítačky (poloviční; úplná) Střední odborná škola a Střední odborné učiliště, Dubno Ing. Miroslav Krýdl

Technická dokumentace Ing. Lukáš Procházka

H - Řízení technologického procesu logickými obvody

( t) ( t) ( t) Nerovnice pro polorovinu. Předpoklady: 7306

Úvod do Teoretické Informatiky ( UTI)

Půjdu do kina Bude pršet Zajímavý film. Jedině poslední řádek tabulky vyhovuje splnění podmínky úvodního tvrzení.

Struktura a architektura počítačů

Je regulární? Pokud ne, na regulární ji upravte. V původní a nové gramatice odvod te řetěz 1111.

Konstrukce na základě výpočtu I

3 Algebraické výrazy. 3.1 Mnohočleny Mnohočleny jsou zvláštním případem výrazů. Mnohočlen (polynom) proměnné je výraz tvaru

Vícebytová celočíselná aritmetika

Větu o spojitosti a jejich užití

Zavedení a vlastnosti reálných čísel PŘIROZENÁ, CELÁ A RACIONÁLNÍ ČÍSLA

2.8.5 Lineární nerovnice s parametrem

APLIKACE METODY RIPRAN V SOFTWAROVÉM INŽENÝRSTVÍ

Převody Regulárních Výrazů. Minimalizace Konečných. Regulární jazyky 2 p.1/35

UC485S. PŘEVODNÍK LINKY RS232 na RS485 nebo RS422 S GALVANICKÝM ODDĚLENÍM. Převodník UC485S RS232 RS485 RS422 K1. přepínače +8-12V GND GND TXD RXD DIR

Evropská unie Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti

Instalační návod. Záložní ohřívač nízkoteplotního monobloku Daikin Altherma EKMBUHCA3V3 EKMBUHCA9W1. Instalační návod. čeština

Automaty a gramatiky

Souhrn základních výpočetních postupů v Excelu probíraných v AVT listopad r r. . b = A

Automaty a gramatiky(bi-aag)

Formální jazyky. Z. Sawa (VŠB-TUO) Úvod do teoretické informatiky 7. března / 46

Podobnosti trojúhelníků, goniometrické funkce

DIGITÁLNÍ UČEBNÍ MATERIÁL. Název školy SOUpotravinářské, Jílové u Prahy, Šenflukova 220. Název materiálu VY_32_INOVACE / Matematika / 03/01 / 17

( a, { } Intervaly. Předpoklady: , , , Problém zapíšeme snadno i výčtem: { 2;3; 4;5}?

Měření objektů pozorovaných v průběhu endoskopického vyšetření systémem FOTOM 2008

Digitální učební materiál

2.5.4 Věta. Každý jazyk reprezentovaný regulárním výrazem je regulárním jazykem.

METODICKÝ NÁVOD MODULU

{ } ( ) ( ) Vztahy mezi kořeny a koeficienty kvadratické rovnice. Předpoklady: 2301, 2508, 2507

13. Exponenciální a logaritmická funkce

Doc. Ing. Vlastimil Jáneš, CSc., K620

SYLABUS MODULU UPLATNĚNÍ NA TRHU PRÁCE DÍLČÍ ČÁST II BAKALÁŘSKÝ SEMINÁŘ + PŘÍPRAVA NA PRAXI. František Prášek

P2 Číselné soustavy, jejich převody a operace v čís. soustavách

10. Suffixové stromy

MATA Př 2. Složené výroky: Jsou dány výroky: a: Číslo 5 je prvočíslo. b: Číslo 5 je sudé. c: Číslo 5 je liché. d: Číslo 5 je záporné.

Vektorový editor automatů. Bc. Milan Kříž

Jak již bylo uvedeno v předcházející kapitole, můžeme při výpočtu určitých integrálů ze složitějších funkcí postupovat v zásadě dvěma způsoby:

Matice. a B =...,...,...,...,..., prvků z tělesa T (tímto. Definice: Soubor A = ( a. ...,..., ra

R n výběr reprezentantů. Řekneme, že funkce f je Riemannovsky integrovatelná na

GENEROVÁNÍ VÍCEKANÁLOVÉHO DITHERU

( ) ( ) Sinová věta II. β je úhel z intervalu ( 0;π ). Jak je vidět z jednotkové kružnice, úhly, pro které platí. Předpoklady:

Studijní informační systém. Elektronický zápis předmětů a rozvrhu. I. Postup zápisu předmětů a rozvrhu

Nosné stavební konstrukce Výpočet reakcí

MULTIDIMENSIONÁLNÍ JAZYKY A JEJICH AUTOMATY MULTI-DIMENSIONAL LANGUAGES AND THEIR AUTOMATA

Definice. Necht M = (Q, T, δ, q 0, F ) je konečný automat. Dvojici (q, w) Q T nazveme konfigurací konečného automatu M.

Automaty a gramatiky. Úvod do formáln. lních gramatik. Roman Barták, KTIML. Příklady gramatik

( ) ( ) ( ) Exponenciální rovnice Řeš v R rovnici: = ŘEŠENÍ: Postup z předešlého výpočtu doplníme využitím dalšího vztahu: ( ) t s t

Neurčité výrazy

4. přednáška 22. října Úplné metrické prostory. Metrický prostor (M, d) je úplný, když každá cauchyovská posloupnost bodů v M konverguje.

MINISTERSTVO PRO MÍSTNÍ ROZVOJ Národní orgán pro koordinaci POKYN PRO TVORBU A OBSAH ZPRÁVY O REALIZACI OPERAČNÍHO PROGRAMU PRO MONITOROVACÍ VÝBOR

Instalační návod. Záložní ohřívač pro venkovní jednotky s integrovanými hydraulickými součástmi EKMBUHCA3V3 EKMBUHCA9W1.

Zvyšování kvality výuky technických oborů

9 - Zpětná vazba. Michael Šebek Automatické řízení

Lineární nerovnice a jejich soustavy

Teorie jazyků a automatů I

Datamining a AA (Above Average) kvantifikátor

NAŘÍZENÍ KOMISE V PŘENESENÉ PRAVOMOCI (EU) č. /.. ze dne ,

( a) Okolí bodu

Automaty a gramatiky. Organizační záležitosti. Přednáška: na webu ( Proč chodit na přednášku?

Prostorové nároky Zatížení Velikost zatížení Směr zatížení Nesouosost Přesnost Otáčky Tichý chod...

Integrály definované za těchto předpokladů nazýváme vlastní integrály.

Konstrukce na základě výpočtu II

PRINCIP ZÁPISU AKORDU POMOCÍ AKORDOVÝCH ZNAČEK

Petriho sítě PES 2007/2008. Doc. Ing. Tomáš Vojnar, Ph.D.

2.2.9 Grafické řešení rovnic a nerovnic

56. ročník Matematické olympiády. b 1,2 = 27 ± c 2 25

Technická kybernetika. Obsah

JAN VÁLEK, PETR SLÁDEK Katedra fyziky, chemie a odborného vzdělávání, Pedagogická fakulta, Masarykova univerzita, Poříčí 7, Brno

Definice limit I

Obecně: K dané funkci f hledáme funkci ϕ z dané množiny funkcí M, pro kterou v daných bodech x 0 < x 1 <... < x n. (δ ij... Kroneckerovo delta) (4)

+ c. n x ( ) ( ) f x dx ln f x c ) a. x x. dx = cotgx + c. A x. A x A arctgx + A x A c

Psychologická metodologie. NMgr. obor Psychologie

Regulace f v propojených soustavách

6. Setrvačný kmitový člen 2. řádu

Spojitost funkce v bodě, spojitost funkce v intervalu

Laboratorní práce č. 6 Úloha č. 5. Měření odporu, indukčnosti a vzájemné indukčnosti můstkovými metodami:

Přednáška 9: Limita a spojitost

Konstrukce na základě výpočtu I

x + F F x F (x, f(x)).

LINEÁRNÍ DIFERENCIÁLNÍ ROVNICE 2.ŘÁDU

return n; 3/29 Ing. Miroslav Balík, Ph.D. - BI-PA1-05 if (n<1) { printf("%d neni prirozene cislo\n", n); exit(0); }

Minimalizace automatů. M. Kot, Z. Sawa (VŠB-TU Ostrava) Úvod do teoretické informatiky 28. března / 31

Křivkový integrál funkce

VYHLÁŠKA ze dne 6. prosince 2016 o požadavcích na systém řízení

2. Funkční řady Studijní text. V předcházející kapitole jsme uvažovali řady, jejichž členy byla reálná čísla. Nyní se budeme zabývat studiem

Jsou to rovnice, které obsahují neznámou nebo výraz s neznámou jako argument logaritmické funkce.

2. INTEGRÁLNÍ POČET FUNKCE JEDNÉ PROMĚNNÉ

íslicová technika Radek Maík Maík Radek 1

Hyperbola, jejíž střed S je totožný s počátkem soustavy souřadnic a jejíž hlavní osa je totožná

Až dosud jsme se zabývali většinou reálnými posloupnostmi, tedy zobrazeními s definičním

Formální jazyky. M. Kot, Z. Sawa (VŠB-TU Ostrava) Úvod do teoretické informatiky 6. března / 48

Riemannův určitý integrál.

Minimální záznam RDA/MARC 21 pro speciální (netextové) monografické zdroje

Vzdělávací materiál. vytvořený v projektu OP VK. Název školy: Gymnázium, Zábřeh, náměstí Osvobození 20. Číslo projektu: CZ.1.07/1.5.00/34.

Regulace v ES na výroby

Transkript:

VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ BRNO UNIVERSITY OF TECHNOLOGY FAKULTA INFORMAČNÍCH TECHNOLOGIÍ ÚSTAV POČÍTAČOVÝCH SYSTÉMŮ FACULTY OF INFORMATION TECHNOLOGY DEPARTMENT OF COMPUTER SYSTEMS JEDNODUCHÝ SIMULÁTOR ČÍSLICOVÝCH OBVODŮ BAKALÁŘSKÁ PRÁCE BACHELOR S THESIS AUTOR PRÁCE AUTHOR ALEŠ KOLMAN BRNO 2009

VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ BRNO UNIVERSITY OF TECHNOLOGY FAKULTA INFORMAČNÍCH TECHNOLOGIÍ ÚSTAV POČÍTAČOVÝCH SYSTÉMŮ FACULTY OF INFORMATION TECHNOLOGY DEPARTMENT OF COMPUTER SYSTEMS JEDNOUCHÝ SIMULÁTOR ČÍSLICOVÝCH OBVODŮ NÁZEV BAKALÁŘSKÉ PRÁCE ANGLICKY BAKALÁŘSKÁ PRÁCE BACHELOR S THESIS AUTOR PRÁCE AUTHOR VEDOUCÍ PRÁCE SUPERVISOR ALEŠ KOLMAN doc. Ing. Lukáš Seknin, Ph.D. BRNO 2009

Astrkt Tto práce je zmřen n simulování číslicových ovodů, především menších kominčních sekvenčních ovodů. Je orientován zejmén n dosžení co nejvyšší rychlosti simulce, z tohoto důvodu yl nimplementován v jzyce C. Vstupním formátem pro tento projekt yl zvolen zápis číslicového ovodu v EDIFu. Výstup neyl specifikován. Astrct This work is oriented on the simultion of digitl circuits, especilly smll comintionl nd sequentil circuits. This project is focused prticulrly on chieving the highest possile speed of simultion, for this reson ws chosen progrmming lnguge C. As Input formt for this project ws selected EDIF formt of digitl circuits. Output hs not een specified. Klíčová slov číslicový ovod, simulátor, EDIF Keywords Digitl circuits, simultor, EDIF Citce Aleš Kolmn: Jednoduchý simulátor číslicových ovodů, klářská práce, Brno, FIT VUT v Brně, 2009

Jednoduchý simulátor číslicových ovodů Prohlášení Prohlšuji, že jsem tuto klářskou práci vyprcovl smosttně pod vedením doc. Ing. Lukáše Sekniny Ph. D. Uvedl jsem všechny literární prmeny pulikce, ze kterých jsem čerpl. Aleš Kolmn 20. květn 2009 Poděkování Z odorné vedení, připomínky návrhy ych chtěl poděkovt doc. Ing. Lukáši Sekninovi, Ph. D., který trpělivě dohlížel n průěh zprcování mé klářské práce. Aleš Kolmn, 2009 Tto práce vznikl jko školní dílo n Vysokém učení technickém v Brně, Fkultě informčních technologií. Práce je chráněn utorským zákonem její užití ez udělení oprávnění utorem je nezákonné, s výjimkou zákonem definovných přípdů..

Osh Osh...1 1 Úvod...2 2 Číslicové ovody...3 2.1 Booleov lger...3 2.1.1 Zákldní Axiomy...3 2.1.2 Odvozené vlstnosti...4 2.2 Rozdělení číslicových ovodů...5 2.2.1 Kominční ovody...5 2.2.2 Sekvenční ovody...5 2.2.3 Klopné ovody...5 2.3 Zákldní komponenty číslicových ovodů...6 2.3.1 Logický součin AND...7 2.3.2 Logický součet OR...7 2.3.3 Logická negce NOT...7 2.3.4 Exkluzivní logický součet XOR...8 2.3.5 Asynchronní klopný ovod typu RS...8 3 Simulátory simulce...10 3.1 Pohled n simulci simulátor oecně...10 3.2 Simulce simulátor číslicových ovodů...10 3.2.1 Rozdělení simulátorů dle počtu simulovných stvů...11 3.2.2 Rozdělení dle zohlednění zpoždění...11 3.3 EDIF...12 4 Návrh simulátoru...13 4.1 Specifikce zdání...13 4.2 Vlstní návrh implementce...14 4.2.1 Návrh dtových struktur...15 4.2.2 Implementce...16 4.3 Experimentální ověření simulátoru...17 4.3.1 Příkld s kominčním ovodem...17 4.3.2 Příkld s synchronním sekvenčním ovodem...20 4.3.3 Příkld se synchronním sekvenčním ovodem...21 4.3.4 Příkld s klopným ovodem...22 5 Závěr...24 1

1 Úvod V dnešní doě se n trhu vyskytuje veliké množství simulátorů číslicových ovodů npř. modelsim, multisim, dsch simulátor pod. Proč jsem se tedy rozhodl oohtit, už tk dost osáhlý trh o dlší simulátor? Hlvním podnětem yl snh vytvořit simulátor, který y se dl využít především při evolučním návrhu číslicových ovodu ve fázi testování. Cílem projektu ylo vytvořit velice rychlý simulátor specificky směrován n jednodušší, menší, diskrétních systémy, tedy tkový, který y zytečně neoshovl oecné, nepotřené, funkce hlvně tkový, kde ych si mohl kdykoliv eztrestně jednoduše zshovt do zdrojového kódu (měnit simulční lgoritmy, přidávt podporovné komponenty td.. Bklářská práce je strukturován následovně: Druhá kpitol vysvětluje zákldní pojmy z olsti číslicových ovodů. Poté, co se dozvíme, co to jsou číslicové ovody, čím sou chrkteristické, čím výhodné jk se dělí, přejdeme k otázce jejich simulce, kterou se zývá třetí kpitol. Třetí kpitol popisuje nejen simulci číslicových ovodů, le snží se (stejně jko druhá kpitol nejprve definovt zákldní pojmy týkjící se oecné simulce. Poté zmiňuje specifik simulce číslicových ovodů uvádí elektronické formáty používjících se pro popis číslicových ovodů. Následuje čtvrtá kpitol, která popisuje proces návrhu, implementce ověření jednoduchého simulátoru číslicového ovodu. N konec práce je zřzeno zhodnocení dosžených výsledků výpis nápdů možných inovcí či rozšíření pro konečný progrm. 2

2 Číslicové ovody Číslicové ovody, diskrétní ovody, jsou podmnožinou elektrických ovodů. Hlvním rysem tkovýchto ovodů je, že reprezentují informci diskrétně, to znmená pouze dvěm hodnotmi. V počítčové terminologii se tké čsto používá oznčení 0, logická nul, 1, logická jedničk. Přínosných vlstností číslicových ovodů je celá řd. Mezi nejevidentnější ych zřdil skutečnost, že v číslicových systémech může ýt representován informce v teoreticky neomezeném rozshu s neomezenou přesností, dále zde přecházejí do pozdní hlvní prolémy nlogových ovodů, jko prolém šumu, rušení, teplotních výkyvů td., tké návrh těchto ovodů je znčně jednodušší, než návrh nlogových ovodů, kde je nutné znát mtemtické modely složitých součástek jko je trnzistor, kondensátor pod. N závěr ych uvedl prgmtickou vlstnost, která vedl k jejich msivnímu využití, kterou je ekonomická výhodnost. V mnoh přípdech dokáží číslicové ovody vyřešit stejně složité prolémy jko ovody nlogové z jednoznčně nižší cenu. Logik číslicových ovodů je odvozen z Booleovy lgery právě Booleově lgeře je věnován následující podkpitol. Číslicové ovody můžeme modelovt různými způsoy: prvdivostní tulkou, Krnughovou mpou či výrzem Booleovy lgery. 2.1 Booleov lger Hned ze zčátku této kpitoly ych rád podotkl, že inspirci pro tuto podkpitolu jsem čerpl především z [3]. Booleov lger je lgerická struktur, nzvná podle irského mtemtik George Boole. Mimo jiné se používá pro popis logických ovodů. Logické výrzy, které popisují logické ovody, oshují hodnoty prvd neprvd, což můžeme chápt jko hodnotu logická 1 hodnotu logická 0. Booleov lger je uspořádná šestice: B symolizuje neprázdnou množinu ( B,0,1,,, 0 symolizuje tzv. nejmenší prvek množiny B 1 symolizuje tzv. největší prvek množiny B symolizuje inární operci n množině B (logický součet symolizuje inární operci n množině B (logický součin - symolizuje unární operce n množině B (negce Ay tto šestice yl Booleovou lgerou, musí splňovt všechny zákldní xiomy (viz následující podkpitol. 2.1.1 Zákldní Axiomy Pro všechn,, c z množiny B pltí: 1. Komuttivit 3

= = 2. Distriutivit ( ( ( ( ( ( c c c c = = 3. Neutrlit 0, 1 = = 1 0 4. Komplementrit 0 1 = = 5. Nedegenerovnost 1 0 2.1.2 Odvozené vlstnosti Pro všechn,, c z množiny B pltí: 6. Asocitivit ( ( ( ( c c c c = = 7. Asorce ( ( = = 8. Asorce negce ( ( = = 9. Agresivit 0, 1 0 0 1 1 = = 10. Idempotence = = 11. de Morgnovy zákony ( ( = = 12. Dvojitá negce ( = 4

2.2 Rozdělení číslicových ovodů U číslicových ovodů se můžeme setkt s děleními ovodů n ovody kominční, sekvenční, synchronní, synchronní, úrovňové hrnové. Následující podkpitoly se zývjí vysvětlením těchto pojmů. 2.2.1 Kominční ovody Kominční logické ovody jsou specifické tím, že stvy n výstupech závisí pouze n okmžitých komincích vstupních proměnných nezávisí n jejich předchozích hodnotách, s výjimkou krátkého přechodového děje. Jedné kominci vstupních proměnných odpovídá jediná výstupní komince funkčních hodnot. Kominční logické ovody nemjí žádnou pměť předchozích stvů. Pro popis kominčního ovodu se čsto používjí výrzy Booleovy lgery. Ovod s n vstupy m výstupy, které relizují funkce f 1.. f m, popíšeme pomocí m výrzů Booleovy lgery. 2.2.2 Sekvenční ovody Sekvenční logické ovody jsou složeny ze dvou částí, části kominční části pměťové, t může ýt relizován uďto jednoduchou zpětnou vzou neo klopným ovodem, nejčstěji se pro tyto účely využívá klopný ovod typu D. Aychom mohli určit hodnotu výstupní proměnné, je potře u sekvenčních ovodů sledovt kromě vstupních proměnných ještě jejich vnitřní proměnné, vnitřní stvy. Tyto proměnné, stvy jsou uchovány v pměťových členech. Existence vnitřních proměnných způsouje, že stejné hodnoty vstupních proměnných přivedené n vstup ovodu, nevyvolávjí vždy stejnou odezvu n výstupu ovodu, čili u sekvenčních ovodů záleží n pořdí v jkém vstupní komince přichází. Sekvenční ovody nejčstěji modelujeme pomocí Moorov neo Melyho utomtu. Melyho utomt se vyznčuje tím, že hodnot výstupní proměnné je závislá jk n hodnotách vstupních proměnných, tk n vnitřních proměnných. Oproti tomu Kokrův utomt je hodnot výstupu závislá pouze n stvu vnitřních proměnných. Sekvenční ovody můžeme dále rozdělit n sekvenční ovody synchronní sekvenční ovody synchronní. U synchronních sekvenčních ovodů se změn vstupní proměnné promítne ihned do stvu sekvenčního ovodu. U synchronních sekvenčních ovodů je zveden řídicí synchronizční, respektive hodinový signál. Změn vstupní proměnné se promítne do stvu sekvenčního ovodu, ž při příchodu hodinového signálu. Co když le dojde hned k několik změnám vstupních hodnot ěhem jednoho hodinového pulsu, jk se s tím ovod vypořádá? Existují dvě rekce n tuto situci, jednk sekvenční ovod může sledovt hodnoty vstupních proměnných tím i jejich změny po celou dou trvání hodinového signálu průěžně n ně regovt, pk tkovému sekvenčnímu ovodu říkáme Úrovňový, neo sekvenční ovod může regovt n hodnoty vstupních proměnných jen při příchodu hrny hodinového signálu (náěžná neo sestupná hrn, poté tento ovod spdá do ktegorie hrnových synchronních sekvenčních ovodů. 2.2.3 Klopné ovody Klopné ovody se mohou ncházet v několik stvech, ze kterých mohou ýt vstupem přepnuty do stvu jiného. Podle počtu stvů způsou přepínní se dělí n následující druhy: 1. Astilní klopný ovod (AKO - nemá žádný stilní stv neustále se přepíná mezi dvěm nestilními stvy. Tento typ ovodu lze použít npříkld jko generátor impulsů. 5

2. Monostilní klopný ovod (MKO - má jeden stilní stv, ze kterého je možné jej přepnout do stvu nestilního. Ovod se sám po určité doě přepne zpět do stilního stvu. Tento typ ovodu je možné použít npříkld pro relizci zpoždění. 3. Bistilní klopný ovod (BKO - se může ncházet v dvou stilních stvech, přičemž je možné jej mezi těmito stvy liovolně přepínt. Tento typ ovodu lze použít npříkld jko pměť, neoť ž do přepnutí zůstává v předchozím stilním stvu. Tto skupin je pro číslicové ovody nejvýznmnější, proto uvedu i hlvní předstvitele, mezi které ptří klopné ovody typu RS, JK, D T. Komponent RS je stvením kmenem pro všechny osttní vyjmenovné komponenty, proto klopnému ovodu RS ude ještě věnován vlstní podkpitol. 2.3 Zákldní komponenty číslicových ovodů Stejně jko jsou všechny elektrické ovody složeny z elektrických prvků, součástek, jsou i číslicové ovody tvořeny součástkmi, s tím rozdílem, že u číslicových ovodů je škál součástek znčně specifičtější. Mezi zákldní součástky číslicových ovodů ptří logické členy, hrdl. Zákldní logická hrdl se vyznčují skutečností, že je možné kterékoliv z nich povžovt z určitou logickou funkci v Booleove lgeře y = f,... ( 1, 2 n Mezi zákldní logické členy diskrétních systémů ptří hrdl: NOT, AND, OR, XOR, NAND, NOR, XNOR. Všechny tyto komponenty číslicových ovodů opisují svůj vzor z Booleovy lgery. Logické členy NAND, NOR XNOR jsou pouze negcí členů zákldních, rozhodl jsem se tedy nevěnovt těmto třem členům vlstní podkpitoly. Jk plyne z Booleovy lgery pomocí logických členů AND, OR NOT je možné relizovt liovolný logický ovod tedy i zylá logická hrdl. Dále pltí, že z pomoci pouze hrdel NOT AND, neo NOT OR, lze relizovt jkákoliv hrdl, respektive jkýkoliv číslicový ovod, Tto poslední skutečnost poukzuje n komplementárnost hrdel, respektive logických funkci AND OR. Pro převod výrzu, který oshuje pouze hrdl OR (resp. NAND n výrz, který oshuje pouze hrdl AND (resp. OR se používá následující postup: Nhrzení hrdl OR hrdlem AND - Vycházíme z Booleovského výrzu pro logickou funkci OR, n který použijeme vlstnost dvojité negce, poté výrz uprvíme pomocí de Morgnových prvidel do finálního stvu. ( ( = ( = Nhrzení hrdl AND hrdlem OR - Vyjdeme z Booleovského výrzu pro logickou funkci AND, n který použijeme vlstnost dvojité negce, poté výrz uprvíme pomocí de Morgnových prvidel do finálního stvu. = ( ( = ( Dále následuje popis vyrných komponent, mezi vyrné komponenty jsem zřdil kromě zákldních logických hrdel ještě hrdlo XOR synchronní klopný ovod typu RS, relizovný pomocí hrdel NAND. 6

2.3.1 Logický součin AND Výstup nývá hodnoty 1 pouze když mjí všechny vstupy hodnotu 1, jink nývá hodnoty 0, jinými slovy hodnot 0 n kterémkoliv ze vstupů dělá hodnotu 0 n výstupu. Ekvivlent logické funkce y =... Schémtická znčk: 1 2 n Orázek 2.1Schémtická znčk hrdl AND IEC znčení "Americké" znčení Připojením hrdl NOT n výstup hrdl AND získáme logickou funkci NAND, která má tedy nlogickou definici jko logická funkce AND, s jediným rozdílem, že hodnot výstupu je pro všechny komince invertován. 2.3.2 Logický součet OR Výstup nývá hodnoty 0 pouze když mjí všechny vstupy hodnotu 0, jink nývá hodnoty 1, jinými slovy hodnot 1 n kterémkoliv ze vstupů dělá hodnotu 1 n výstupu. Ekvivlent logické funkce y =... Schémtická znčk: 1 2 n Orázek 2.2 Schémtická znčk hrdl OR IEC znčení "Americké" znčení Připojením hrdl NOT n výstup hrdl OR získáme logickou funkci NOR, která má tedy nlogickou definici jko logická funkce OR, s jediným rozdílem, že hodnot výstupu je pro všechny komince invertován. 2.3.3 Logická negce NOT Když vstup má hodnotu 0, tk výstup nývá hodnoty 1, nopk, jinými slovy výstup nývá opčné hodnoty než jká je n vstupu Ekvivlent logické funkce y = Schémtická znčk: Orázek 2.3 Schémtická znčk hrdl NOT IEC znčení "Americké" znčení 7

2.3.4 Exkluzivní logický součet XOR Výstup nývá hodnoty 1 právě tehdy, když je n vstupech lichý počet hodnot 1, jinými slovy sudý počet hodnot 1 n vstupech dává n výstup hodnotu 0. Ekvivlent logické funkce y =... Schémtická znčk: 1 2 n Orázek 2.4 Schémtická znčk hrdl XOR IEC znčení "Americké" znčení Připojením hrdl NOT n výstup hrdl XOR získáme logickou funkci XNOR, která má tedy nlogickou definici jko logická funkce XOR s jediným rozdílem, že hodnot výstupu je pro všechny komince invertován. 2.3.5 Asynchronní klopný ovod typu RS Funkce ovodu RS je následující, pokud přivedeme logickou 1 n vstup R logickou 0, do klopného ovodu se uloží logická 1. A oráceně: pokud n vstup S přivedeme logickou 0 n vstup R logickou 1, dojde k uložení logické 0. Když n o vstupy přivedeme logickou 0, uložená hodnot se nezmění (ovod si pmtuje svůj minulý stv. Poslední možná komince, což jsou dvě logické 1, je tzv. zkázným stvem. Jelikož Hrdlo NAND je nejjednodušší pro relizci (v technologii CMOS je tvořeno pouhými čtyřmi trnzistory, tk zde uvedu relizci RS klopného ovodu právě prostřednictvím hrdel NAND. Zpojení schémtická znčk. Orázek 2.5 RS-KO: schém zpojeni c možné schémtické znčky 8

Příkld popisu klopného ovodu prvdivostní tulkou: R S Příští stv Význm 0 0 Q = Q Zchovej stv 0 1 Q = 1 Nstv logickou 1 1 0 Q = 0 Nstv logickou 0 1 1 Q = X Zkázný stv Příkld popisu klopného ovodu chrkteristickou rovnicí: Q i +1 = S + R Q Příkld popisu klopného ovodu Moorovým utomtem: Orázek 2.6 Moorův utomt pro RS KO Příkld popisu klopného ovodu Krnughovou mpou: Orázek 2.7 Krnghov mp pro RS KO 9

3 Simulátory simulce 3.1 Pohled n simulci simulátor oecně Ještě před omezením pouze n simulci číslicových ovodů jsem se rozhodl zde připomenout šíři pojmu simulce uvést zde i oecné vysvětlení slov simulce, dle přednášek kurzu Modelovní simulce n Vysokém Učení Technickém v Brně (odkz n literturu, ze které tento předmět čerpá je uveden v [6]. Modelování je proces vytváření modelů systémů n zákldě nšich znlostí. Tento proces je oecně velmi náročný čsto vyžduje znlosti z více oorů. Kvlit vytvořeného modelu zásdním způsoem ovlivní výsledky získné experimentováním s modelem. Simulce je metod získávání nových znlostí o systému experimentováním s jeho modelem. Pro účely simulce musí ýt model popsán odpovídjícím způsoem, le ne kždý model je pro simulci vhodný. Pro získání potřených informcí ovykle potřeujeme opkovt simulční experimenty vícekrát s různými prmetry. Proces experimentování v reálném světě je vždy ztížen chymi měření dlšími fktory, které mohou způsoit prolémy při interpretci výsledků. Nvíc jsou experimenty s reálnými systémy někdy neekonomické, neezpečné, nevhodné neo vůec neproveditelné. Proto používáme metod počítčové simulce, která tyto nevýhody nemá. Olsti použití simulce: Biologie lékřství: npř. modely půsoení léků v orgnismu, modelování růstu kterií Fyzik: npř. model jderného rektoru, model šíření zvuku v místnosti Chemie: npř. modely chemických rekcí, výpočty vlstností látek Astronomie: npř. model srážky glxií, simulce pohyu plnet kolem Slunce Meteorologie: npř. modely pro předpověď počsí Geologie: npř. model zemětřesení Technik oecně: npř. simulovné crsh testy utomoilů, model mikroprocesoru, modely tomů, simulce elektrických ovodů, simulce číslicových ovodů 3.2 Simulce simulátor číslicových ovodů Specilizce zákldních pojmu do prolemtiky číslicových ovodů y vypdl následovně: Modelování je vytváření, vytvoření schém zpojení jeho následné zjednodušení pomocí metod minimlizce. Simulce je numerické řešení mtemtických modelů, potžmo schémtu číslicových systémů. Simulátor je výpočetní systém provádějící numerický výpočet chování modelu. Hlvní dělení simulce číslicových ovodů je podle rozshu simulovných hodnot podle přístupu k simulci zpoždění. 10

3.2.1 Rozdělení simulátorů dle počtu simulovných stvů N zčátku této podkpitoly je si nejvhodnější prostor pro zmínku o existenci rezoluční (rozhodovcí funkci, která se používá k řeší konfliktů mezi více udiči jednoho signálu. Bývá zvykem tkovouto funkci dodt do specifikce číslicového ovodu nejčstěji formou tulky. Rozdělení dle počtu stvů pk vypdá následovně: dvoustvové (0,1 - nevystihují všechny události, které v simulovném ovodu mohou nstt třístvové (0,1,X - X: je symol pro stv neznámé hodnoty, npříkld pokud vstup přichází z jednoho konce hodnot 0 z druhého konce hodnot 1 čtyřstvové (0,1,X,Z Z je symol pro stv vysoké impednce 3.2.2 Rozdělení dle zohlednění zpoždění Ještě před smotným rozdělením, zde uvedu zákldní pojmy spojené se zpožděním: Zpoždění hrdl -zákldní komponenty číslicových ovodů, hrdl, stejně jko všechny reálné elektrické součástky, mjí určité zpoždění, vymezující dou, po kterou proíhá vyhodnocení výstupu komponenty. Hzrd - krátká neočekávná změn výstupního signálu, způsoená šířením signálu ze vstupu n výstup různými, le konvergujícími cestmi, které mjí různé čsové ohodnocení, způsoené zpožděním hrdel. Sttický hzrd - výstup má ýt trvle v 0 neo 1, místo toho se ojeví krátká změn do opčné úrovně. Tento hzrd je způsoen dvěm komplementárními signály, které jsou z důvodů různých zpoždění stejné, čkoliv stejné ýt nemjí. Změn 0 1 0 = sttický hzrd v nule, Změn 1 0 1 = sttický hzrd v jedničce Sttické hzrdy můžeme odhlit v čsovém digrmu neo v mpě. Dynmický hzrd - nstne, jestliže dv signály, které mjí ýt stejné, n chvíli stejné nejsou. Tto situce nstne, když se proměnná šíří ze vstupu n výstup různými cestmi s různým zpožděním. Dynmický hzrd se projeví při změně výstupu (tj. 0 1 0 1 neo 1 0 1 0. Dynmický hzrd nelze zjistit z mpy, le lze ho zjistit z několik mp. Náěžná hrn signálu změn signálu z hodnoty 0 n hodnotu 1. Sestupná hrn signálu změn signálu z hodnoty 1 n hodnotu 0. Předstih - do před ktivní hodinovou hrnu, kdy už musí ýt vstup stilní. Přesh - do po ktivní hodinové hrně, kdy musí ýt vstup ještě stále stilní. Doprvní zpoždění - Zchovává všechny pulzy, pouze je zpozdí - posune. Vhodné pro modelování vodičů, důležitou vlstností tohoto druhu simulce je, že se neztrácí žádné pulzy. Setrvčné zpoždění - modeluje reálné součástky (hrdl. Nmísto kolmých náěžných sestupných hrn pulsů šikmé, pozvolné hrny. Filtruje úzké pulsy (puls "nestihne" dosáhnout log. 1. 3.2.2.1 Synchronní simulce Synchronní simulce neuvžuje zpoždění, pro se zde dá použít metod pevného čsového kroku, to znmená že jediná změn výstupu může nstt při změně vstupu, není zde žádný čsový intervl, ve kterém se hodnot dostává postupně od vstupu k výstupu. 11

Řízení synchronní simulce lze oddělit výpočet kominční části pměťové části. Oecný lgoritmus má dvoufázový průchod, zprvé výpočet zpmtování si nových hodnot zdruhé přenos nových hodnot do skutečných výstupů 3.2.2.2 Asynchronní simulce Asynchronní simulce zpoždění uvžuje. Musí se zde použít metod proměnného čsového kroku, čs, kdy dochází ke změně některého z výstupů je ovlivněn nejen krokem změny vstupů, le i zpožděním s jkým se promítá vliv změněného vstupu n výstup. Asynchronní simulce předstvuje podronější přístup k simulci systému, umožňuje zjistit sttické dynmické hzrdy, umožňují ověřit dodržení předstihů přeshů, umožňují tké ověřit správnost frekvence hodinových pulsů Druhy zpoždění uváděných pro synchronní simulci v [5] jsou následující: jednotkové - stejné pro všechny ovody, násoné násoky jednotkového neo liovolné. 3.3 EDIF Před popisem smotného EDIFu je nutné definovt pojem netlist: Slovo netlist lze použít v různých kontextech, já zde o něm udu le uvžovt pouze ve spojitosti s popisem elektrických ovodů, konkrétně diskrétních ovodů. V této souvislosti se netlist užívá pro popis číslicových ovodů, konkrétně poskytuje informce o jednotlivých komponentách ovodu jednotlivých spojích mezi komponentmi, jinými slovy definuje komponenty jejich vzájemné propojení. Toto může ýt mnohdy nedostčující popis, proto se číslicové ovody popisují i jinými způsoy, npříkld jzykem VHDL čí Verilog. EDIF (kronym z nglického Electronic Design Interchnge Formt je potom stndrdem stnovujícím formát výše definovného netlistu. První verze yl vytvořen v roce 1985, první stndrdizovná verze, stndrd IEEE, yl verze 2 0 0. Verze 2 0 0 yl vydán v roce 1988 konkrétně jí popisuje stndrd ANSI/EIA-548-1988. N tuto verzi dále nvázly verze 3 0 0 (rok vydání 1993 4 0 0 (rok vydání 1996. Popis stěžejní syntxe EDIFu příkld netlistu v tomto formátu je uveden v příloze č. 3 příloze číslo 4. 12

4 Návrh simulátoru 4.1 Specifikce zdání Byl zdán poždvek n simulci jednoduchých kominčních sekvenčních ovodů. Jednoduchost yl specifikován omezením n počet primárních vstupů výstupů. Dodtečná specifikce se týkl poždvku n formát vstupních ovodů. Tento simulátor si tto omezení definovl následovně: Ovod může oshovt mximálně 64 primárních vstupů, 64 primárních výstupů 128 komponent. Vstupní ovod pro simulci musí ýt zpsán ve vstupním souoru ve formátu EDIF. Pokud chceme dodefinovt zpoždění pro jednotlivé komponenty vstupního, je nutné dopst je explicitně do speciálního souoru. Pokud nechceme ovod simulovt n všechny možné komince vstupů generovné utomticky musíme dodt speciální souor s vlstními předpřiprvenými hodnotmi vstupních vektorů. Pokud chceme simulci ukončit, před projitím všech vstupních vektorů (ť už generovných utomticky neo explicitně je nutné dodtečně zdt čs skončení simulce jko rgument při spuštění progrmu. Dlší informce o implicitních předvolách simulátoru už nejsou ntolik stěžejní ych je zde opkovl, všechn implicitní nstvení simulátoru možnosti jejich změny jsou popsné v příloze č. 1. 13

4.2 Vlstní návrh implementce Rozhodl jsem se tento simulátor nvrhnout pro simulci tříhodnotového druhu, (0, 1, X, komponent co možná nejližších relitě, z tohoto důvodu simulátor uvžuje i zpoždění těchto komponent. Dlším velmi důležitým rozhodnutím pro návrh simulátoru yl vol formátu pro zápis vstupního simulovného ovodu. Tto vol yl specifikován v zdání. Od této voly se odvíjeli návrh implementce překldče, což nkonec stálo stejné úsilí jko návrh implementce vlstního simulátoru. Překldč je nvržen tk, y jkkoliv nekorektní schém nepustil k smotnému simulátoru ukončil ěh progrmu se stručnou chyovou hláškou vypisovnou n stndrdní chyový výstup. Výstupem simulce je jednoslovná informce o úspěchu, či neúspěchu simulce podávná n stndrdní výstup především souor s výsledkem simulce. Formát výstupního souoru oproti formátu vstupního souoru neyl specifikován, porto je zde zvolen vlstní form zápisu. Stručný popis formy zápisu: hodnoty všech primárních vstupů výstup pro dný simulční čs jsou zznmenány n jeden řádek zčínjící hodnotou tohoto čsu. Čili záznmy pro různé čsy jsou mezi seou odděleny konci řádků záznmy pro jeden dný čs jsou mezi seou odděleny tulátory, respektive mezermi. Tto form výstupu je volen cíleně, jelikož je velice vhodná pro dlší zprcování pomocí některého z dávkovcích progrmů, npříkld gnuplot, který z dt dokáže sndno rychle vytvořit přehledný grf (oecné ohtě okomentovné šlony pro tvoru grfu přes progrm gnuplotu jsou dodávány s progrmem v sekci exmples. Protože simulátor musí podporovt spoustu nstvení definujících průěh simulce několik pro dlší doplnění definice simulovného ovodu, ylo nutné vytvořit rozumný návrh pro získávání těchto vole. Tento návrh, je zde vyřešen kominci získávání hodnot ze vstupních prmetrů příkzové řádky získávání hodnot z implicitních vstupních souorů. Mezi implicitní souory ptří: delys.txt input_vritions.txt. Jk již překld názvů těchto souorů npovídá, souor delys.txt oshuje informce o zpoždění komponent použitých v simulovném ovodu. Pouhé nhlédnutí do tohoto souoru stčí k pochopení jednoduchých prvidel pro vytvoření vlstních záznmů. Druhý stndrdní souor input_vritions.txt plní funkci explicitního generátoru hodnot pro primární vstupy simulovného ovodu. Pojem explicitní generátor je chápn jko souor s předem vygenerovnými hodnotmi, které jsou zpsány dle jednoduché syntxe (definice formátu zápisu hodnot je uveden v hlvním komentáři původního souoru input_vritions.txt. Druhou metodou zisku vole o které yl řeč, je získávání z rgumentů příkzové řádky. Tto metod zde neude rozeírán, jelikož celou prolemtikou prmetrů příkzové řádky se zývá příloh č. 1. Následuje konkrétní popis simulční rutiny v pseudokódu: SimulujOvod( vlstní struktur: uživtelskánstvenízpříkzovéřádky, ukztel n souor: výstupnísouor, vlstní typ pro chyy: příznkchyy Zčátek rutiny Vyhodnoť uživtelská nstvení Nuluj počet průchodů Nuluj příznk konce Nuluj příznk výpisu Dokud je ktuální čs menší než celkový čs součsně klendář není prázdný součsně počet průchodů je menší než mximální povolený Inkrementuj počet průchodů Pokud je nplánován v ktuálním čse inkrementce Pokud je nstven příznk konce 14

Vyskoč z cyklu Inkrementuj vstupy Pokud není zdán vol příkzového řádku nstvující čs simulce součsně pokud ylo dosženo konce souoru se vstupními hodnotmi Nstv příznk konce Pokud je nplánován změn CLK vstupu Proveď změnu CLK vstupu Pokud uživtel zvolil příznk chudého výstupu Pokuj je nplánován událost výpis hodnot Nstv příznk výpisu Jink (pokud není zvolen příznk chudého výpisu Nstv příznk výpisu Dokud je nplánován událost ktivce výstupu komponenty Vyjmi z klendáře první výstup k ktivci Přidej do seznmu všechny spoje, které ovlivnil ktivovný výstup Konec vnořeného cyklu Osluž všechny ovlivněné spoje Osluž všechny ovlivněná hrdl Pokud osluh hrdel ovlivnil dlší spoje Pokrčuj n zčátek hlvního cyklu Pokud čs následujícího záznmu klendáře je rozdílný od čsu ktuálního Pokud je nstven výpis Zznmenej hodnoty do výstupního souoru Konec hlvního cyklu Návrt z rutiny 4.2.1 Návrh dtových struktur Byl nvržen řd dtových struktur, je možné je rozdělit z hledisk účelu použití n: 1. Dtové struktury pro uložení simulovného ovodu: v hierrchii nejvýše postveným zástupcem této skupiny je struktur pro uložení všech prvků ze kterých je simulovný ovodu složen, mezi její zákldní členy ptří seznm komponent, seznm vstupních spojů, seznm výstupních spojů, seznm vnitřních spojů záznm o čsovém spoji (spoj, který není ovlivňován generátorem vstupních vektorů. Dlším zástupcem pro tuto skupinu je struktur zštiťující informce týkjící se jedné komponenty, mezi členy této struktury ptří informce o druhu komponenty (nd, or, jk, informce o vstupech výstupech komponenty, informce o zpoždění komponenty informce o stvu komponenty. Posledním důležitým zástupcem je dtová struktur pro uložení jednoho spoje tvořená záznmy informujícími o ktuální hldině spoje (0, 1, X o vstupech výstupech spoje. Mezi metody nvržené pro práci s tímto druhem dtových struktur ptří pouze metody relizující inicilizci uvolňování záznmu. 2. Struktury pro vlstní implementci hlvního lgoritmu překldče: z prvé sem ptří struktury nesoucí dodtečné informce ke všem strukturám z předešlé ktegorie, týkjících se především oznčení ve schémtu. Dále sem ptří struktur používná k uložení vole pro jednotlivé loky, mezi její záznmy ptří typ EDIF loku, znoření loku, stv loku záznmy definující podporu pro různé konstrukce loku. Mezi metody pro touto skupinou dt ptří nejen metody pro inicilizci uvolňování, le i metody řešící korektnost loku, korektnost pořdí loků korektnost schémtických znček. 3. Struktur pro uchování uživtelských nstvení průěhu simulce: Do této skupiny ptří struktur pro uchovávání uživtelských dt, zdných přes příkzovou řádku. Záznmy této struktury v podsttě přesně kopírují podporovné prmetry příkzového řádku plus ukládjí dodtečné informce k prmetrům, které si to žádjí. Tto skupin nevyžduje implementci speciálních metod, postčily metody pro inicilizci uvolňování záznmu. 15

4. Struktury nutné pro vlstní implementci simulčního lgoritmu: hierrchicky nejvýše postveným zástupcem této skupiny je struktur nesoucí informci o seznmu událostí, které se mjí v udoucnu vykont, této struktuře se v simulční terminologii přezdívá klendář. Dlší v hierrchii je struktur zpouzdřující informce jedné události. Oshem této struktury jsou záznmy pro čs, n který je událost plánován, druh plánovné události seznm dt, nd kterými se mjí dné události provést (prvek seznmu dt se skládá z reference n měněný prvek ovodu informce o typu události, respektive typu kce, která se má s prvkem ovodu provést. V této skupině si nevystčíme s pouhými zákldními metodmi pro inicilizci uvolňování záznmů, proto zde ylo nutné npst doplňující metody, mezi hlvní ptří: funkce pro vkládání nových záznmů s jejich zřzením n správné místo, výěr prvního záznmu s nejmenším čsem ktivce, výěr poždovného konkrétního záznmu, toto je nutné v přípdě, že potřeujeme již nplánovnou událost z klendáře zrušit. 4.2.2 Implementce Progrm je konzolová plikce npsná v čistém jzyce C. Progrm neoshuje universální inární souor, je nutného jeho přeložení před prvním spuštěním n kždé stnici, k přeložení poslouží skript Mkefile, stndrdně dodáván se zdrojovými souory tohoto progrmu. Simulátor je spouštěn příkzem./simul v operčním systému Linux příkzem simul v operčním sytému Microsoft Windows. Snžil jsem se progrm vytvořit tk, y při spuštění ez rgumentů vyhovovl co nejvyšší škále uživtelů, přesto mi le ylo jsné, že pro důkldnější testování, je možnost voly nutnost. Proto progrm podporuje dosti uživtelských vole, zdných při spuštění simulátoru jko rgumenty příkzového řádku. Pro rychlé zorientování v prvidlech správného používání rgumentů je vhodné si před prvním spuštěním progrmu přečíst přílohu č. 5. Podronější popis podporovných rgumentech nleznete v příloze č. 1. Vlstní progrm je tvořen ze dvou částí: první část, překldč, se strá o nplnění pměťových struktur (použitým dtovým strukturám je věnován poslední odstvec této podkpitoly, dle zdného vstupního schémtu. Druhá část, simulátor, se strá o vlstní simulování ovodu. Překldč zprcovává pouze zákldní příkzy EDIF, osttní klíčová slov vyhodnotí jko nepodporovné loky (více o EDIFu jeho o podporovných nepodporovných příkzech jejich omezeních, respektive přizpůsoeních, nleznete v příloze č. 4. Překldč všk kontroluje správnou souslednost všech příkzů, kontroluje správnost znořování, respektive vynořování do, respektive z jednotlivých loků, kontroluje správné definice deklrce komponent, portů spojů. Ve všech locích, podporovných i nepodporovných, proíhá kontrol výskytu klíčových slov n nesprávných pozicích. Druhá část progrmu, simulátor očekává již správně nplněné dtové struktury nesoucí informce o simulovném ovodě. Tkto nplněné dtové struktury vyhodnotí simulčním lgoritmem. Podronost výpisu závisí n uživtelských nstveních má mírný vliv n rychlost simulce. Výpis je prováděn do souoru ve formátu popsném v předešlé sekci. Simulovný ovod je po přeložení uchováván v hlvní dynmické struktuře TSimulovnyOvod, popsné v předešlé sekci jko struktur pro uložení všech komponent spojů simulovného ovodu. Progrm je nvržený pro sndné přidávání vlstních komponent pomocí přidání vlstních modulů. Pro npsání vlstních modulů stčí prozkoumt, jk jsou koncipovány moduly stávjící, (sic_opertions.c, rs.c, jk.c, d.c, t.c. Po pochopení zákldních zásd psní modulu dle příkldů, stčí npst vlstní modul v hlvním simulčním modulu rozšířit podporovnou instrukční sdu o nově připsné funkce. Detilněji je prolemtik rozšíření instrukční sdy popsán v příloze 2. 16

Metriky kódu: Počet zdrojových souorů: 17 Počet hlvičkových souorů: 20 Počet spustitelných souorů: 1 Počet modulů: 17 Počet řádků celkem: 9539 Procentní zstoupení kódu: 0,52 Procentní zstoupení komentářů 0,26 Procentní zstoupení prázdných řádků: 0,21 4.3 Experimentální ověření simulátoru Pro ověření simulátoru jsem si připrvil několik demonstrčních příkldů (nchází se v příloze č. 6. V této sekci uvedu pouze čtyři z těchto příkldů: příkld s kominčním ovodem, příkld s synchronním sekvenčním ovodem, příkld se synchronním sekvenčním ovodem přikld relizce klopného ovodu. Testování proěhlo n noteooku: Procesor: Intel Core Solo T1350, 1.86 GHz RAM: 2048MB, sdílená Operční systém: Linux, distriuce Dein. 4.3.1 Příkld s kominčním ovodem Jko příkld n kominční ovod jsem si vyrl čtyřitovou sčítčku MSI 7483 s urychleným výpočtem crry itu (vysvětlení npř. viz. [4], crry není generováno postupně, le prlelně, příkld převztý z [4]. Rovnice příkldu: c c + c + Schém příkldu: i = i 1 i i 1 i i i 17

Orázek 4.1 Schém - 4 itová sčítčk s prlelním crry Umístění schém přepsného do vstupního formátu n CD: CD:\prktick_implementce\exmples\01-dd_4\01.edif Spuštěná dávk: time./simul --inc=1 -i 01.edif -eig e01-input_vritions.txt -o 01.dt Výstup dávky SUCCESS rel user sys 0m0.005s 0m0.004s 0m0.000s Ukázk několik řádku výstupu: time [ms] A1 A2 A3 A4 B1 B2 B3 B4 CI S1 S2 S3 S4 C4 0.000000 0 0 0 0 0 0 0 0 0 0.5 0.5 0.5 0.5 0.5 0.020000 0 0 0 0 0 0 0 0 0 0.5 0.5 0.5 0.5 0.5 18

0.040000 0 0 0 0 0 0 0 0 0 0.5 0.5 0.5 0.5 0 0.060000 0 0 0 0 0 0 0 0 0 0.5 0.5 0.5 0.5 0 0.080000 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.000000 1 0 0 0 0 0 0 0 0 0.5 0 0 0 0 1.020000 1 0 0 0 0 0 0 0 0 0.5 0 0 0 0 1.040000 1 0 0 0 0 0 0 0 0 1 0 0 0 0 2.000000 0 0 0 0 1 0 0 0 0 1 0 0 0 0 Grfické zorzení výstupu: Orázek 4.2 Průěh simulce k příkldu 3 Pro tento příkld jsem se rozhodl provést zátěžový test s nstvením doy simulce n extrémní hodnotu. Z pochopitelných důvodů zde neudu uvádět grfický výstup ukázku několik řádků výstupu. Spouštěná dávk výstup z této dávky potom vypdá následovně: 19

Spuštěná dávk: time./simul -i 06.edif -eig 06-input_vritions.txt --inc=0.2 --time=3600000 Výstup dávky Pocet zznmennych rdku: 58400021 SUCCESS rel user sys 3m58.825s 3m7.764s 0m5.824s 4.3.2 Příkld s synchronním sekvenčním ovodem Jko příkld n synchronní sekvenční ovod jsem si vyrl čtyřitový čítč, příkld je z [5]. Schém příkldu: Orázek 4.3 Schém - synchronní 4 itový čítč Umístění schém přepsného do vstupního formátu n CD: CD:\prktick_implementce\exmples\sekv03-synchronni_citc\input-sekv03.edif Spuštěná dávk: time./simul --inc=1 --time=100 -i 02.edif -eig 02-input_vritions.txt -o 02.dt Výstup dávky SUCCESS rel user sys 0m0.006s 0m0.000s 0m0.008s Ukázk několik řádku výstupu: time [ms] H CLK Q1 Q2 Q3 Q4 0.000000 1 0 0 0 0 0 1.000000 1 1 0 0 0 0 2.000000 1 0 0.5 0 0 0 2.020000 1 0 1 0 0 0 3.000000 1 1 1 0 0 0 4.000000 1 0 0.5 0 0 0 4.020000 1 0 0 0.5 0 0 4.040000 1 0 0 1 0 0 5.000000 1 1 0 1 0 0 20

Grfické zorzení výstupu: Orázek 4.4 Průěh simulce k příkldu 1 4.3.3 Příkld se synchronním sekvenčním ovodem Jko příkld n synchronní sekvenční ovod jsem si vyrl úmyslně tké čtyřitový čítč, v rámci srovnání. Schém příkldu: Orázek 4.5 Schém - synchronní 4 itový čítč Umístění schém přepsného do vstupního formátu n CD: CD:\prktick_implementce\exmples\03-count_syn\03.edif Spuštěná dávk: time./simul --inc=1 --time=100 -i 03.edif -eig 03-input_vritions.txt -o 03.dt Výstup dávky SUCCESS 21

rel user sys 0m0.010s 0m0.004s 0m0.000s Ukázk několik řádku výstupu: time [ms] H CLK Q1 Q2 Q3 Q4 0.000000 1 0 0 0 0 0 1.000000 1 1 0 0 0 0 2.000000 1 0 0.5 0 0 0 2.020000 1 0 1 0 0 0 3.000000 1 1 1 0 0 0 4.000000 1 0 0.5 0.5 0 0 4.020000 1 0 0 1 0 0 4.040000 1 0 0 1 0 0 5.000000 1 1 0 1 0 0 Grfické zorzení výstupu: Orázek 4.6 Průěh simulce k příkldu 2 4.3.4 Příkld s klopným ovodem Jko příkld n klopný ovod jsem si vyrl dvoufázovou implementci dvoufázového klopného ovodu JK, pomocí dvou RS klopných ovodů. Schém příkldu: Orázek 4.7 Schém JK KO dvoufázový Umístění schém přepsného do vstupního formátu n CD: CD:\prktick_implementce\exmples\06-jk_2phse\06.edif 22

Spuštěná dávk pod Linuxem: time./sim09 --inc=0.25 -i 06.edif -eig 06-input_vritions.txt -o 06.dt Výstup dávky SUCCESS rel user sys 0m0.029s 0m0.004s 0m0.004s Ukázk několik řádku výstupu: time [ms] J K C Q NQ 0.000000 0 0 0 0.5 0.5 0.020000 0 0 0 0.5 0.5 0.040000 0 0 0 0 0.5 0.250000 1 1 1 0.5 0.5 0.270000 1 1 1 0.5 0.5 0.290000 1 1 1 0 1 0.310000 1 1 1 0 1 0.330000 1 1 1 0 1 0.500000 1 1 0 0 1 Grfické zorzení výstupu: Orázek 4.8 Průěh simulce k příkldu 4 23

5 Závěr Se svou prcí jsem v konečné fázi spokojený, podřilo se mi splnit zákldní úkol to implementovt simulátor, dokonce se mi podřilo i držet se zákldní motivce pro tvoru tohoto simulátoru, tedy klást důrz především n rychlost jednoduchost simulátoru. Jko dlší pokrčování práce y ylo vhodné použít formát výstupu komptiilní s některým široce používným simulčním prostředím, npříkld modelsimem, dále ych doldil překldč EDIFu, y se stl více univerzálnějším, v třetím kroku ych přistoupil k podpoře více vstupních formátů, npříkld VHDL, ve čtvrtém kroku ych se zývl prozkoumáním možnosti dlšího vylepšení simulčního lgoritmu n závěr ych znovu prozkouml možnosti zrychlení překldu. Po solvování všech těchto kroků ych se možná ještě zmyslel nd tvorou dlšího kooperujícího progrmu, který y zprostředkovl jednk tvoru vstupních souorů skrze grfické návrhové prostředí jednk grfické zorzení všech podporovných výstupních formátů. Nkonec chci ještě poznment, že tento projekt mě zujl, umožnil mi prcovt n rozsáhlejším projektu, který je n tisíce řádků pomohl mi uvědomit si, jk může ýt těžké projekt tkového rozshu uhlídt jk moc velkou cenu progrmátor zpltí, když všechn úsklí důkldně nepromyslí. 24

Litertur [1] Seknin L.: Evolvle Components. Nturl Computing Series, Springer-Verlg, Berlin, 2004 [2] Wkerly J. F.: Digitl Design: Principles nd Prctices, Prentice-Hll, 2000 [3] Hordějčuk V.:Mtemtik, Booleov lger, [online]. c2009. Dostupné n URL: <http://voho.cz/ooleov-lger/> [4] Fučík O.: podkldy k přednáškám předmětu INC přednášeném n VUT FIT Brno, [online]. Brno c2003-2006. Dostupné n URL: <https://wis.fit.vutr.cz/fit/st/course-files-st.php/course/inc-it/lectures> [5] Anonymní zdroj, [online]. Dostupné n URL: <http://lo.felk.cvut.cz/x36lo/downlods/s_lo10.pdf> [6] Peringr P.: Modelov nı simulce - Studijnı opor, [online].brno c2008. Dostupné n URL: <https://wis.fit.vutr.cz/fit/st/course-files-st.php/course/ims-it/texts/oporims.pdf> 25

Seznm příloh Příloh 1. CD:\prktick_implementce\doc\Redme.txt Příloh 2. CD:\prktick_implementce\doc\OwnModules.txt Příloh 3. CD:\prktick_implementce\exmples\06-jk_2phse\06.edif Následující přílohy jsou pouze v elektronické podoě: Příloh 4. CD:\prktick_implementce\doc\Minimum_jk_npst_vstupni_edif.txt Příloh 5. CD:\prktick_implementce\doc\QuicStr.txt Příloh 6. CD:\prktick_implementce\src\ zdrojové souory Příloh 7. CD:\prktick_implementce\src\exmples\ 26

Příloh 1.oooooo..o o8o oooo d8p' `Y8 `"' `888 Y88o. oooo ooo..oo..oo. oooo oooo 888 `"Y8888o. `888 `888P"Y88P"Y88 `888 `888 888 `"Y88 888 888 888 888 888 888 888 oo.d8p 888 888 888 888 888 888 888 8""88888P' o888o o888o o888o o888o `V88V"V8P' o888o Tento progrm získává veškeré informce o uživtelských potřeách simulce přes rgumenty příkzového řádku. Podporuje následující prmetry: -i cest k vstupnimu souoru Volitelný prmetr, pokud není zdán, je rán defultní souor: /exmples/00-defult/00.edif Pokud je prmetr zdán, musí ýt ezprostředně následován cestou k vstupnímu souoru. prikld:./simul -i exmples/01-dd_4/01.edif -o cest k vystupnimu souoru Volitelný prmetr, pokud není zdán ude výstup posílán do implicitního souoru vystup.dt Pokud je prmetr zdán, musí ýt ezprostředně následován cestou k výstupnímu sooru *Pozor: simulátor neřeší složkování, proto musí cílová složk předem existovt!* prikld:./simul -o exmples/01-dd_4/01.dt -eig cest k sourou s predpriprvenymi vstupnímy vektory Volitelný prmetr, pokud není zdán ude simulátor postupně generovt všechny možné komince vstupů Pokud je prmetr zdán, sám, ez zdání cesty k souoru, ude rán jko souor s externě definovnými vstupními vektory souor input_vritions.txt Prmetr le může ýt zdán s ezprostředně následující cestou k souoru s externími komincemi vstupů, poté jsou vstupy čerpány z tohoto souoru. prikld:./simul -o exmples/01-dd_4/input_vritions.txt --dont-show-hzrds Volitelny prmetr, pokud je zdn vypin se detekce hzrdu, coz zrychluje eh vlstni simulce --dont-show-x Volitelný prmetr, vyuziti si njde hlvne u ovodu ve kterych pouzijeme hrdl s nulovym spozdenim, tento prmetr urychli simulci 27

--inc=(vlue [ms] Prmetr pro urceni csoveho kroku, se kterym se mji generovt vstupy, pokud neude zdn simultor spocit krok co nejvice vyhovujici, tk y se stihli zmeni n vstupu projevit n vystupu le soucsne y zmeny n vystupu nevisely zytecne dlouho --time=(vlue [ms] Prmetr pro urceni celkove delky simulce, pokud neude zdn simultor spocit sm tuto hodnotu, to tk y to co nejlepe vyhovovlo dnemu schemtu. To znmen y se stihly vygenerovt vsechny komince vstupu soucsne y se vsechny tyto komince stihli v ovodu projevit Nselduji tri volitelne prmetry pro ty kterym nestci vypisy hodnot pri zmene, le chteji si vypisi nejk sesynchornizovt, ci chteji vypisi pouze po jedne vterine od toho toho csu Bez techto prmetru udou ve vystupnim souoru zznmenny vsechny udlosti v nichz se menil nejky vstup ci vystup --report-step=(vlue [ms] Volitelny prmetr pro frekvenci vypisu pozdovnych hodnot, pokud neni zvolen nstvi se n stejnou frekvenci jko krok se kterym se generuji vstupni hodnoty --report-dely=(vlue [ms] Volitelny prmetr pro zpozdeni s jkym m zcit vypisovni pozdovnych hodnot, nejlepe vyhovuje kdyz mu nstvime hodnotu jko m nejvetsi zpozdeni hrdl v ovodu pote soucsne prmetr poor-output, pote vystupni souor oshuje pouze pltne hodnoty s prvidelnym intervlem --poor-output Volitelny prmetr, jeho zdnim vypneme veskere stndrtni vypisy udou se provdet pouze vypis urcene prmetry report, pokud neni zdn ni jeden prmetr report, teto prmetr je ignorovn. 28

Příloh 2 Záshy v implicitních zdrojových kódech nutných pro rozšíření instrukční sdy Pro přidáni vlstního modulu je nutný zásh v následujících implicitních zdrojových souorech: hlvni_rozhrni.h, simultor.c, min.c hlvni_rozhrni.h Slovní popis úprv v souorech: hlvni_rozhrni.h: zde je nutné přidt n konec výčtového seznmu E_SimOperce konstntu pro přidávnou komponentu s indexem o jedn větším, než má konstnt předcházející. min.c: zde je nutné přidt n konec textového řetězce g_prefixy název, respektive zkrtku odvozenou z názvu komponenty. Omezeni plynoucí pro tuto kci: 1. je nutné použít kominci pouze dvou písmen. Tto komince musí ýt v řetězci jedinečná 2. je nutné novou zkrtku přidt n konec řetězce, z důvodu komptiility mezi indexem nové zkrtky, respektive nového podřetězce, v řetězci všech zkrtek mezi konstntou ve výčtovém typu E_SimOperce simultor.h: zde je nutné inkrementovt define konstntu SIM_POCET_PODPOROVANYCH_ OPEARACI o počet přidávných opercí (ve většině přípdech o jedn. simultor.c: zde je nutné doplnit pole funkcí OperceHrdel o nově vytvořenou vývozní funkci modulu, respektive hlvni funkci komponenty Prktická ukázk úprvy v souorech: úprvy pro souory: hlvni_rozhrni.h: typedef enum esimoperce { SIM_AND = 0, SIM_OR = 1, SIM_XOR = 2, SIM_NAND = 3, SIM_NOR = 4, SIM_NEG = 5, SIM_RS = 6, SIM_D = 7, SIM_JK = 8, SIM_T = 9, SIM_BF = 10, SIM_NK = 11 } E_SimOperce; 29

min.c: const chr g_prefixy[50] = " AN OR XO NA NO NG RS DD JK TT BF NK "; simultor.h: #define SIM_POCET_PODPOROVANYCH_OPERACI 12 //původně 11 simultor.c: void InicilizujSimultorMemory(TSimulovnyOvod *simovod, TSimultorMemory *simmem { simmem->opercehrdel[sim_and] = OperceAND; simmem->opercehrdel[sim_or] = OperceOR; simmem->opercehrdel[sim_xor] = OperceXOR; simmem->opercehrdel[sim_nand] = OperceNAND; simmem->opercehrdel[sim_nor] = OperceNOR; simmem->opercehrdel[sim_neg] = OperceNEG; simmem->opercehrdel[sim_rs] = OperceRS; simmem->opercehrdel[sim_d] = OperceD; simmem->opercehrdel[sim_jk] = OperceJK; simmem->opercehrdel[sim_t] = OperceT; simmem->opercehrdel[sim_bf] = OperceBuffer; simmem->opercehrdel[sim_nk] = NzevFunkceNoveKomponentyZNovehoModulu; 30

Příloh 3 Ukázk jednoduchého netlistu v EDIFu Ukázk se vzthuje k příkldu uvedeném v sekci 4.3.4: (edif moxon_edif (edifversion 2 0 0 (ediflevel 0 (keywordmp (keywordlevel 0 (sttus (written (timestmp 2009 17 05 13 3 27 (progrm "vim" (Version "6.0" (dtorigin "moxon design" (uthor "tom moxon" (externl generic_gtes (ediflevel 0 (technology (numerdefinition (cell n02d1 (celltype GENERIC (view Netlist_representtion (viewtype NETLIST (interfce (port A1 (direction INPUT (port A2 (direction INPUT (port Z (direction OUTPUT (cell rs03d2 (celltype GENERIC (view Netlist_representtion (viewtype NETLIST (interfce (port S (direction INPUT (port R (direction INPUT (port C (direction INPUT (port Q (direction OUTPUT (port NQ (direction OUTPUT (cell ng01d1 (celltype GENERIC (view Netlist_representtion (viewtype NETLIST (interfce (port A1 (direction INPUT (port Z (direction OUTPUT 31

(lirry DESIGNS (ediflevel 0 (technology (numerdefinition (cell jk-dvoufzovy (celltype GENERIC (view Netlist_representtion (viewtype NETLIST (interfce (port J (direction INPUT (port K (direction INPUT (port C (direction INPUT (port Q (direction OUTPUT (port NQ (direction OUTPUT (contents (instnce U1 (viewref Netlist_representtion (cellref n02d1 (lirryref generic_gtes (instnce U2 (viewref Netlist_representtion (cellref n02d1 (lirryref generic_gtes (instnce U3 (viewref Netlist_representtion (cellref rs03d2 (lirryref generic_gtes (instnce U4 (viewref Netlist_representtion (cellref rs03d2 (lirryref generic_gtes (instnce U5 (viewref Netlist_representtion (cellref ng01d1 (lirryref generic_gtes (net J (joined (portref J (portref A2 (instnceref U1 (net K (joined 32

(portref K (portref A1 (instnceref U2 (net C (joined (portref C (portref C (instnceref U3 (portref A1 (instnceref U5 (net NET1 (joined (portref Z (instnceref U1 (portref S (instnceref U3 (net NET2 (joined (portref Z (instnceref U2 (portref R (instnceref U3 (net NET3 (joined (portref Q (instnceref U3 (portref S (instnceref U4 (net NET4 (joined (portref NQ (instnceref U3 (portref R (instnceref U4 (net NET5 (joined (portref Z (instnceref U5 (portref C (instnceref U4 33

(net Q (joined (portref Q (portref Q (instnceref U4 (portref A2 (instnceref U2 (net NQ (joined (portref NQ (portref NQ (instnceref U4 (portref A1 (instnceref U1 (design moxon_edif (cellref full_dder (lirryref DESIGNS 34