Simulace číslicových obvodů (MI-SIM) zimní semestr 2010/2011

Podobné dokumenty
Simulace číslicových obvodů (MI-SIM) zimní semestr 2010/2011

Simulace číslicových obvodů (MI-SIM) zimní semestr 2010/2011

Simulace číslicových obvodů (MI-SIM) zimní semestr 2010/2011

Simulace číslicových obvodů (MI-SIM) zimní semestr 2010/2011

Struktura a architektura počítačů (BI-SAP) 4

Simulace číslicových obvodů (MI-SIM) zimní semestr 2010/2011

Příklady popisu základních obvodů ve VHDL

Simulace číslicových obvodů (MI-SIM) zimní semestr 2010/2011

7. Popis konečného automatu

Úvod do jazyka VHDL. Jan Kořenek Návrh číslicových systémů

Y36SAP 2007 Y36SAP-4. Logické obvody kombinační a sekvenční používané v číslicovém počítači Sčítačka, půlsčítačka, registr, čítač

Souhrn Apendixu A doporučení VHDL

Simulace číslicových obvodů (MI-SIM) zimní semestr 2010/2011

Simulace číslicových obvodů (MI-SIM) zimní semestr 2010/2011

Digitální obvody. Doc. Ing. Lukáš Fujcik, Ph.D.

Koncept pokročilého návrhu ve VHDL. INP - cvičení 2

Způsoby realizace této funkce:

Konfigurace portů u mikrokontrolérů

14. Složitější konstrukce

Jazyk VHDL konstanty, signály a proměnné. Jazyk VHDL paralelní a sekvenční doména. Kurz A0B38FPGA Aplikace hradlových polí

Číslicové obvody a jazyk VHDL

Digitální obvody. Doc. Ing. Lukáš Fujcik, Ph.D.

Číselné vyjádření hodnoty. Kolik váží hrouda zlata?

Architektura počítačů Logické obvody

Architektura počítačů Logické obvody

Digitální obvody. Doc. Ing. Lukáš Fujcik, Ph.D.

12. VHDL pro verifikaci - Testbench I

Y36SAP Y36SAP-2. Logické obvody kombinační Formy popisu Příklad návrhu Sčítačka Kubátová Y36SAP-Logické obvody 1.

LOGICKÉ OBVODY 2 kombinační obvody, minimalizace

4. Elektronické logické členy. Elektronické obvody pro logické členy

Struktura a architektura počítačů (BI-SAP) 10

KOMBINAČNÍ LOGICKÉ OBVODY

PROGRAMOVATELNÉ LOGICKÉ OBVODY

Digitální obvody. Doc. Ing. Lukáš Fujcik, Ph.D.

Digitální obvody. Doc. Ing. Lukáš Fujcik, Ph.D.

Návrh ovládání zdroje ATX

Systém řízení sběrnice

Sčítačky Válcový posouvač. Demonstrační cvičení 6

Programovací jazyk Pascal

Logické obvody 10. Neúplné čítače Asynchronní čítače Hazardy v kombinačních obvodech Metastabilita Logické obvody - 10 hazardy 1

Čtvrtek 8. prosince. Pascal - opakování základů. Struktura programu:

PROGRAMOVATELNÁ LOGICKÁ POLE A JAZYKY HDL

NPRG030 Programování I, 2015/16 1 / :25:32

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

Struktura a architektura počítačů (BI-SAP) 3

Návrh. číslicových obvodů

Velmi zjednodušený úvod

Operace ALU. INP 2008 FIT VUT v Brně

Simulace číslicových obvodů (MI-SIM) zimní semestr 2010/2011

Název projektu: EU peníze školám. Základní škola, Hradec Králové, M. Horákové 258

Programy v prostředí operačního systému

Vzorový příklad. Postup v prostředí ISE. Zadání: x 1 x 0 y Rovnicí y = x 1. Přiřazení signálů:

dovolují dělení velkých úloh na menší = dekompozice

Sylabus kurzu Elektronika

Registry a čítače část 2

1 Stručný popis jazyku VHDL

Struktura a architektura počítačů (BI-SAP) 6

Jazyk VHDL zápis čísel, znaků a řetězců. Jazyk VHDL základní datové typy a operátory. Kurz A0B38FPGA Aplikace hradlových polí

Násobičky, Boothovo překódování. Demonstrační cvičení 7

Knihovna ServoLib Řízení servopohonu bez zpětné vazby. TXV první vydání březen 2009 změny vyhrazeny

type Obdelnik = array [1..3, 1..4] of integer; var M: Obdelnik;

MODERNIZACE VÝUKY PŘEDMĚTU ELEKTRICKÁ MĚŘENÍ

Struktura a architektura počítačů


10. MAPOVÁNÍ BINÁRNÍCH A ANALOGOVÝCH VSTUPŮ A VÝSTUPŮ

Kódy pro odstranění redundance, pro zabezpečení proti chybám. Demonstrační cvičení 5 INP

Přídavný modul modulárního vývojového systému MVS

Pokročilé využití jazyka VHDL. Pavel Lafata

Organizace předmětu, podmínky pro získání klasifikovaného zápočtu

Návod k obsluze výukové desky CPLD

Open-Source nástroje pro práci s FPGA

Základní znaky. - Ve srovnání se Spice jsou velmi složité a vyžadují dlouhou dobu na plné osvojení. - Velmi nákladné simulační programy.

Logické operace. Datový typ bool. Relační operátory. Logické operátory. IAJCE Přednáška č. 3. může nabýt hodnot: o true o false

Pascal. Katedra aplikované kybernetiky. Ing. Miroslav Vavroušek. Verze 7

Simulace číslicových obvodů (MI-SIM) zimní semestr 2010/2011

5. Sekvenční logické obvody

3. Sekvenční logické obvody

GFK-1913-CZ Prosinec Rozměry pouzdra (šířka x výška x hloubka) Připojení. Skladovací teplota -25 C až +85 C.

Chapter Základní principy simulace :).

Obsah přednášky. programovacího jazyka. Motivace. Princip denotační sémantiky Sémantické funkce Výrazy Příkazy Vstup a výstup Kontinuace Program

Simulace číslicových obvodů (MI-SIM) zimní semestr 2010/2011

Násobení. MI-AAK(Aritmetika a kódy)

Metody připojování periferií BI-MPP Přednáška 1

Vestavné systémy BI-VES Přednáška 5

1 z :27

1. Seznamte se s výukovou platformou FITkit (

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

Testování a spolehlivost. 3. Laboratoř Program Atalanta, BIST, testování sekvenčních obvodů

Integrované obvody. Obvody malé, střední a velké integrace Programovatelné obvody

mové techniky budov Osnova Základy logického Druhy signálů

Testování a spolehlivost. 1. Laboratoř Poruchy v číslicových obvodech

Vzorový příklad. Postup v prostředí ISE. Zadání: x 1 x 0 y. Rovnicí y = x 1. x 0. Přiřazení signálů: ČESKÉ VYSOKÉ UČENÍ TECHNICKÉ V PRAZE

Základy digitální techniky

2) Napište algoritmus pro vložení položky na konec dvousměrného seznamu. 3) Napište algoritmus pro vyhledání položky v binárním stromu.

Představení diagnostiky počítačů

Úvod do programovacích jazyků (Java)

ZÁKLADY PROGRAMOVÁNÍ. Mgr. Vladislav BEDNÁŘ /14

Boundary Scan JTAG (Joined Test Action Group) IEEE 1149.X Zápis do rozhraní

NPRG030 Programování I RNDr.Tomáš Holan, Ph.D. 4.patro, č

Logické funkce a obvody, zobrazení výstupů

Transkript:

Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti Simulace číslicových obvodů (MI-SIM) imní semestr 2/2 Jiří Douša, katedra číslicového návrhu (K83), České vysoké učení technické v Prae, fakulta informačních technologií Přednáška : VERILOG modelování struktur Stručný obsah: vestavěné primitivní elementy, jejich poždění a síly, sitě a strategie sil, vytváření struktur a hierarchických seskupení, mapování portů.

Vestavěné primitivní moduly senam typů elementárních logických modulů: primitivní moduly s jedním výstupem: and (o, i,..i n ), nand (o, i,..i n ), or (o, i,..i n ) nor (o, i,..i n ), or (o, i,..i n ), nor (o, i,..i n ) primitivní moduly s více výstupy. not (o,..o n, i )..invertující budič signálů o,..o n buf (o,..o n, i ). neinvertující budič signálů o,..o n třístavové budiče: bufif (o, i, c) třístavový budič spínaný bufif (o, i, c) třístavový budič spínaný notif (o, i, c )...invertující bufif notif (o, i, c )...invertující bufif aktuální výstup: musí být síť, aktuální vstup: reg nebo síť. Synta příkau instalace primitivního modulu: < typ logického členu> [ < síla> ] [ < poždění> ] [ < identifikátor logického členu > ] ( < senam připojených sítí či proměnných reg>, ) 2..2 MI-SIM Jiří Douša 2

Zpoždění primitivních modulů Specifikace poždění: < poždění > ::= < žádné> #(d) #( d, d2) #( d, d2, d3) #(d min : d typ, : d ma ), (d2 min : d2 typ, : d2 ma ), (d3 min :d3 typ, : d3 ma ) # ( d) společné poždění pro všechny možné měny výstupu, # ( d, d2 ) d: poždění náběžné hrany : ->, ->, ->, d2: poždění ávěrné hrany: ->, ->, ->, min (d, d2 ): poždění pro měny: ->, -> ->, ->, ->, ->, # ( d, d2, d3 ) d.poždění náběžné hrany: ->, ->, ->, d2.poždění ávěrné hrany: ->, ->, ->, d3.poždění vysoké impedance: ->, ->, -> min (d, d2, d3 ): poždění ->, ->, ->, každá hodnota d, d2, d3 je určena trojicí (d min : d typ, : d ma ) pro minimální, resp. typické, resp. maimální poždění. Příklady: instalace primitivních modulů and ( weak, pull ) # 2 A ( y, a, b, c, d ); and # ( 2, 5 ) A2 ( y, a, b, c, d ); bufif # ( 2, 5, 4 ) B ( y, a, c ); bufif # ( 2, 3, 4 ), ( 3, 4, 5 ), ( 4, 5, 6 ) B ( y, a, c ); 2..2 MI-SIM Jiří Douša 3

Síly primitivních modulů Síly primitivních modulů a budičů propojovacích sítí: identifikátor síly úroveň síly supply, 7 nejsilnější strong, 6 pull, 5 large, 4 poue pro síť typu trireg weak, 3 medium, 2 poue pro síť typu trireg small, poue pro síť typu trireg high, nejslabší high, nejslabší small, poue pro síť typu trireg medium, 2 poue pro síť typu trireg weak, 3 large 4 poue pro síť typu trireg pull, 5 strong, 6 supply, 7 nejsilnější 2..2 MI-SIM Jiří Douša 4

Funkční modely primitivních modulů 2..2 MI-SIM Jiří Douša 5 Příklady: reg a, b; wire y, y2, y3, y4; // předpokládané deklarace and (weak, strong) A ( y, a, b); // instalace modulu A typu and síly modulu a připojené sitě: St, We, 63X, HiZ, pravdivostní tabulka výstupu y ( musí být některá síť): or ( weak, pull ) O ( y2, a, b); // instalace modulu O typu or síly modulu a připojené sitě : We, Pu, 53X b a y b a y2

Funkční modely primitivních modulů Příklady: reg a,b; wire y, y2,y3,y4; not (supply, supply) N ( y3, a ); // instalace modulu N typu not síly modulu a připojené sitě : Su // vi síla budiče buf B ( y4, a ); síly modulu a připojené sitě : St // implicitní hodnota síly a y3 y4 bufif B ( y5, a, c ) ; // instalace modulu B typu bufif síly: St, HiZ c L L a H H y5 Ponámka: L = nebo, H = nebo 6 2..2 MI-SIM Jiří Douša

Reoluční funkce sítí Příklad buení růných sítí několika budiči: wire c; wand d, e; // předpokládané deklarace sítí // následují 2 budiče sítě c (síly St) not N ( c, a ); not N2 ( c, b ); // následují 2 budiče sitě d (síly St) not N3 ( d, a ); not N4 ( d, b ); // následují 2 budiče sítě e: not (weak, strong) N5 ( e, a ); not (weak, strong) N6 ( e, b ); síť e má stejné hodnoty jako síť d síly sítě: We, St, 63X Ponámky: implicitní hodnota síly je strong, implicitní hodnota poždění = Pravděpodobnostní tabulka pro sítě c a d: a b c d 2..2 MI-SIM Jiří Douša 7

Sítě a strategie sil nepřipojená síť nemá sílu, síla připojené sítě je dána silou nejsilnějšího budiče, ) síť s jedním budičem: příka assign : implicitní síla strong nebo specifikace, mapování na výstupní porty primitivního modulu: síla vyplývá e specifikace příslušné instance, mapování na výstupní porty uživatelského modulu: síla dána silou portu buení portu proměnnou typu reg : implicitní síla strong, buení portu sítí: příkaem assign ( vi výše), primitivním modulem: (vi výše). 2) síť s více budiči: největší síla vítěí, v případě stejných sil se uplatní příslušná reoluční funkce. inicialiace sítě při deklaraci : musí být eplicitní specifikace síly, jde o trvale připojený budíč dané síly ( rodíl vůči VHDL) příklad: trvalý troj nuly síly weak wire ( strong, weak ) a = b; 2..2 MI-SIM Jiří Douša 8

Sítě a strategie sil Příklady: module M2 (output reg y, input wire ); always @ y = ~ ; module M3 (output y, input wire ); not (weak, weak) n7 (y,); module M4 (output y, input wire ); not (supply, pull) n7 (y,); module M5 (output y, input wire ); assign y = ; module ukaka reg clk = ; always # 5 clk = ~ clk; // síla ST wire (supply, weak) a9 = 'b; assign a9 = 'b; // hodnota 76X: if = then a9=su else a9=st wire ; // assign = supply; // nele 2..2 MI-SIM Jiří Douša 9

Sítě a strategie sil // pokračování modulu ukáka supply s; supply s; // hodnota Su resp. Su assign s = ; // be vlivu na hodnotu Su assign a72 = 'b; // hodnota HiZ assign a73 = 'b; // hodnota St assign a74 = 'b; // hodnota St assign a75 = 'b; // hodnota StX wire a3, a3, a32, a33, a34; not (weak, weak) n7 ( a3,clk); // a3 We nebo We not (pull, pull) n7 (a35,clk); // a35 Pu nebo Pu assign a3 = a3; // a3 St nebo St assign a35 = a35; // a35 St nebo St) M2 m2 (a3, clk); // a3 St nebo St (bueni reg) M3 m3 (a32, clk); // a32 We nebo We (vnitrni not Weak) M4 m4 (a33, clk); // a33 Pu nebo Su(vnitrni not) M5 m5 (a34, clk); // a34 St, vnitrni assign assign a33 = a33; // a33 St assign (pull, weak) a34 = a33; // a34 Pu nebo We 2..2 MI-SIM Jiří Douša

Sítě a strategie sil wire a4, a4, a42; wire a43 = 'b; // trvale St assign a4 = 'b; assign a4 = 'b; // trvale St resp. St assign a42 = a4; assign a42 = a4; // a42 trvale StX wire (weak,weak) a5 = 'b; assign a5 = 'b; // a5 trvale St wire (supply, weak) a5 = 'b; // trvale Su assign a5 = 'b; // a5 trvale Su wire a52, a53, a54, a55, a56; bufif (a52,a5,a3); bufif (a53,a5,clk); // a52 HiZ nebo St // a53 HiZ nebo St // poor: a75 nebyl dosud deklarován => hodnota StX bufif (a54,clk,a75 ); // StL= St nebo StZ pro clk= // StH= St nebo StZ pro clk= bufif (supply, weak) (a55,clk,a75 ); // WeL (pro clk=), SuH (pro clk=) 2..2 MI-SIM Jiří Douša

Instalace uživatelských modulů Synta instalace : < typ modulu > # ( senam aktuálních parametrů ) < identifikátor instance modulu > ( < senam připojených sítí> ) ; Příklad: předpoklad: eistuje modul ALU s následující hlavičkou: module ALU # ( parameter sire = 8 ) ( output y [ sire- : ], input [ sire- : ], a, b, input contrl );. ; wire [ 5: ],, y ; // sítě pro mapování výstupů a vstupu instance // typu typu ALU wire f; // síť pro mapování řídícího vstupu instance typu ALU // následuje jmenné mapování parametrů a poiční mapování portů // instance alu typu ALU # ( (.sire = (6 ) ) // varianta s jmenným mapování parametrů pro alu, // # ( 6 ) ) odpovídá poičnímu mapování parametrů pro alu, alu (,, y, f ); // varianta s poičním mapování portů pro alu. 2..2 MI-SIM Jiří Douša 2

Specifikace struktur Příklad: strukturní popis půlsčítačky module Half_adder ( sum, c_out, a, b ); // formální porty input a, b; // specifikace vstupních portů (typ wire) output sum, cout; // specifikace výstupních portů (typ wire) or X (sum, a, b); // poiční mapování portů and A (c_out, a, b ); // poiční mapování portů jiná přípustná verse deklarace modulu (poue pro V) module Half_adder ( output sum, c_out, input a, b ); // specif. portů or X (sum, a, b); // síla = strong, poždění = and A (c_out, a, b ); Příklad: strukturní popis úplné binární sčítačky module Full_adder ( output sum, c_out, input a, b, c_in ); wire c, c2, c3; // lokální vodiče Half_adder AD ( c, c2, a, b ); // instalace submodulu Half_adder AD2 ( sum, c3, c_in, c); // akt. & form. porty or ( c_out, c2, c3 ); 2..2 MI-SIM Jiří Douša 3

Formální a aktuální porty Omeení formálních portů modulu: formální vstupní porty: proměnné typu sítˇ formální výstupní porty: proměnné typu sítˇ nebo register nebo integer buení portů v paralelním prostředí: sítˇ, buení portů v sekvenčním prostředí: reg, integer formální vstupně-výstupní porty: typu sítˇ nele deklarovat žádný port typu real Omeení pro mapování formálních a aktuálních portů: aktuální výstupní port (příjímá výstupy modulu): proměnná typu sítˇ, aktuální vstupní port( přivádí aktuální vstupy modulu): proměnná typu sítˇ nebo reg nebo integer, aktuální vstupně-výstupní port: proměnná typu sítˇ, Aktuální port: net / reg /integer net net Formální port: net net / reg / integer net vnitřní module mapování v paralelním prostředí 2..2 MI-SIM Jiří Douša 4

Specifikace formálních portů Příklad: ukáka specifikace portů pro V95 module Adder (sum, c_out, a, b, c_in); // poue vyjmenování portů; output [3 : ] sum ; // specifikace směru output c_out; input [3 : ] a, b ; input c_in ; reg [3 : ] sum ; //typ reg (pro buení v sekvenčním prostředí) reg c_out; wire [3 : ] a, b ;// typ wire (pro buení v paralelním prostředí) wire c_in ; Příklad: ukáky možných specifikací portů pro V module Adder ( sum, c_out, a, b, c_in ); output reg [3 : ] sum ; // porty typu reg output reg c_out input wire [3 : ] a, b ; // porty typu wire input wire c_in ;.. jiná možnost pro V: module Adder ( output reg [3 : ] sum, output reg c_out, input wire [3 : ] a, b, input wire c_in ) ;..; 2..2 MI-SIM Jiří Douša 5

Způsoby mapování portů Ponámka: dílčí moduly mohou být specifikovány v samostatných souborech Vájemné propojení modulů: poiční aktuální porty jsou přiřaeny formálním portům dle jejich pořadí, jmenné eplicitně uvádí přiřaení na ákladě jejich jmen ( neáleží na jejich pořadí ) :. <formálni port> ( <aktuální port> ) Příklad: hierarchický strukturní model čtyřbitové sčítačky module Adder_4 ( output [ 3 : ] sum, output c_out, input [ 3 : ] a, b, input c_in ) ; wire c3, c2, c; // přenosy uvnitř sekcí Full_adder FA ( sum [], c, a [], b[], c_in ); Full_adder FA ( sum [], c2, a [], b[], c ); Full_adder FA2 ( sum [2], c3, a [2], b[2], c2 ); Full_adder FA3 ( sum [3], c_out, a [3], b[3], c3 ); 2..2 MI-SIM Jiří Douša 6

Ukáky strukturních modulů Příklad: strukturní model šestnáctibitové sčítačky module Adder_6 ( output [ 5: ] sum, output c_out, input [5 : ] a, b, input c_in ) ; wire c2, c8, c4; // přenosy mei sekcemi Adder_4 S ( sum [3 : ], c4, a [3 : ], b[3 : ], c_in ); Adder_4 S ( sum [7 : 4], c8, a [7 : 4], b[7 : 4], c4 ); Adder_4 S2 ( sum [ : 8], c2, a [ : 8], b[ : 8], c8 ); Adder_4 S3 ( sum [5 : 2], c_out, a [5 : 2], b[5 : 2], c2 ); Příklad: strukturní model čtyřbitové sčítačky // použito jmenné mapování module Adder_4 ( output [ 3 : ] sum, output c_out, input [3 : ] a, b, input c_in ) ; wire c3, c2, c; // přenosy uvnitř sekcí Full_adder FA (.sum ( sum [] ),.c_out (c),.a ( a [] ),.b ( b[] ),.c_in (c_in) ); Full_adder FA (.sum ( sum [] ),.c_out (c2),.a ( a [] ),.b ( b[] ),.c_in (c) ); Full_adder FA2 (.sum ( sum [2] ),.c_out (c3),.a ( a [2] ),.b ( b[2] ),.c_in (c2) ); Full_adder FA3 (.sum ( sum [3] ),.c_out (c_out),.a ( a [3] ),.b ( b[3] ),.c_in ( c3 ) ); 2..2 MI-SIM Jiří Douša 7

Vícenásobná instalace dílčích modulů možnosti: pole instancí, příka generate, Příklad: paralelní čtyřbitová sčítačka varianta : // použito pole jednobitových sčítaček module Adder_4 ( output [ 3 : ] sum, output c_out, input [3 : ] a, b, input c_in ) ; wire c3, c2, c; // přenosy uvnitř sekce Full_adder FA [ 3 : ] ( sum, { c_out, c3, c2, c }, a, b, { c3, c2, c, c_in } ) ; varianta 2: // použit příka generate module Adder_42 ( output [ 3 : ] sum, output c_out, input [3 : ] a, b, input c_in ) ; wire [ 4: ] c; // přenosy uvnitř sekce genvar i; // pro příka generate assign c[ ] = c_in, c_out = c [ 4 ]; // odstraní nepravidelnosti generate for ( i = ; i < 4 ; i = i + ) begin : FAA // povinný label Full_adder FA ( sum [ i ], c [ i + ], a [ i ], b [ i ], c [ i ] ) ; end endgenerate 2..2 MI-SIM Jiří Douša 8

Vícenásobná instalace dílčích modulů varianta 3: parametriovaná šíře, podmíněná i nepodmíněná instalace modulu uvnitř příkau generate module # ( sire = 4 ) // parametr V Adder_43 ( output [ sire - : ] sum, output c_out, input [ sire - : ] a, b, input c_in ) ; wire [ sire - : ] c; // přenosy uvnitř sekcí genvar i; // pro příka generate generate for ( i = ; i < sire ; i = i + ) begin : FAA // povinný label if ( i == ) Full_adder FA ( sum [ i ], c [ i + ], a [ i ], b [ i ], c_in ) ; else if ( i == sire - ) Full_adder FA ( sum [ i ], c_out, a [ i ], b [ i ], c [ i ] ); else Full_adder FA ( sum [ i ], c [ i + ], a [ i ], b [ i ], c [ i ] ); end endgenerate 2..2 MI-SIM Jiří Douša 9