1 / 42

CID2 curs 2

CID2 curs 2. Verilog Folosirea şabloanelor de limbaj în Xilinx ISE. Coresponden ţ e. Schemă logică. Netlist (model structural). Tabel de adevăr. UDP (primitive definite de utilizator). Ecuaţii logice. assign (instrucţiunea). modul. module proiectul_meu(lista_porturi);

sileas
Download Presentation

CID2 curs 2

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. CID2 curs 2

  2. Verilog • Folosirea şabloanelor de limbaj în Xilinx ISE CID2 curs 2

  3. Corespondenţe Schemă logică Netlist (model structural) Tabel de adevăr UDP (primitive definite de utilizator) Ecuaţii logice assign (instrucţiunea) CID2 curs 2

  4. modul module proiectul_meu(lista_porturi); ……//declaraţi aici porturile ……//apoi daţi detaliile funcţionale endmodule CID2 curs 2

  5. Primitive • modele funcţionale predefinite în limbajul Verilog • (cele mai simple obiecte din care se poate compune un design) • 26 de primitive: • 6 porţi combinaţionale cu intrări multiple • 6 porţi cu ieşiri multiple (buffere) • comutatoare, tranzistoare de trecere etc. CID2 curs 2

  6. Primitive CID2 curs 2

  7. ….. nand gate(y, a, b, c); // sau nand(y, a, b, c); …. a b y c Atenţie! La primitive obligatoriu primul în lista de porturi este ieşirea (eventual, iesirile) *** nu e necesar pentru orice modul CID2 curs 2

  8. Inversoare şi buffere not(out1, out2…., outN, in); bufif0(out1 , out2…., outN, in, ctrl); //pentru 0 este deschis notif1(out1, out2…., outN, in, ctrl); //pentru1 este deschis (inversor) CID2 curs 2

  9. Logică cu 4 valori • 0 • 1 • x (valoare necunoscută) (roşu) • z (impedanţă înaltă) (verde) • alte simboluri: b (binar), ? (0, 1 sau x) Toate tipurile de semnale şi variabile sunt definite implicit x sau z CID2 curs 2

  10. Tabele (logică cu 4 stări) CID2 curs 2

  11. Câteva reguli • Fiecare linie se încheie cu ; • există excepţii! • case-sensitive • comentariile incep cu // • comentarii pe mai multe linii: /*…… ……………..………*/ CID2 curs 2

  12. …şi o chestiune de stil • Alegeţi nume semnificative pentru module • Folosiţi comentarii! • Daţi nume semnificative porturilor • Documentaţi conştiincios fişierele şi proiectele! CID2 curs 2

  13. Identificatori (nume) • nume de semnale, module • litere, cifre (0-9), _, $ maxim 1024 de caractere! • numele unei variabile nu poate incepe cu $ sau o cifra • (funcţiile de sistem predefinite încep cu $) CID2 curs 2

  14. Proiectarea ierarhică în Verilog • în interiorul unui modul se poate apela un alt modul (se creează automat o partiţie a designului) • evitaţi module incluse unele într-altele şi apelarea recursivă! CID2 curs 2

  15. CID2 curs 2

  16. dacă am definit un modul, numele său poate fi folosit ca şi cuvânt-cheie ex: module scanner_taste(….); INSTANŢIERE alte module ale aceluiaşi proiect pot conţine cuvântul scanner_taste(…acelaşi număr şi tip de porturi); CID2 curs 2

  17. Proiectare ierarhică • nivelul cel mai de sus: structural (top-level) • nivelurile intermediare: module definite comportamental, apelând module din ce în ce mai simple • ultimul nivel: primitive şi/sau module care nu mai conţin detalii ierarhice (unele pot fi definite structural) CID2 curs 2

  18. fiecare modul trebuie plasat într-unul sau mai multe fişiere • compilate împreună, toate acestea descriu complet funcţionalitatea modulului top-level • nu contează cum este distribuit codul sursă în fişiere (compilatorul le selectează în ordine) CID2 curs 2

  19. Proiectele (project) • majoritatea simulatoarelor folosesc “proiecte” • un fel de “directoare” care conţin toate fişierele necesare CID2 curs 2

  20. Vectorii în Verilog • ex: numar[15:0]sau numar[0:15] • când se face corespondenţa în zecimal MSB este în stânga • se pot face apelări parţiale numar[5:2] CID2 curs 2

  21. net, netlist orice identificator nedeclarat este considerat wire conectivitatea structurală CID2 curs 2

  22. Tipuri de date net CID2 curs 2

  23. Tipuri de date net (2) CID2 curs 2

  24. Porturi: reguli • conexiuni interne şi externe CID2 curs 2

  25. Porturi • input (intrări): intern sunt net-uri, pot fi conectate la net sau reg • inout (bidirecţionale): net-uri • output (ieşiri): intern sunt reg sau net, extern trebuie conectate ca net-uri CID2 curs 2

  26. Verificarea designuluiMetodologie de testare (modulele de test)

  27. definire modul compilare (verificare sintaxa) strategie test verificare funcţională CID2 curs 2

  28. Testbench (platforma de testare)DUTB (disign_unit_test_bench) Generator semnal test Unit_under_test (UUT) stimul Monitorizare răspuns CID2 curs 2

  29. Simulatorul: 3 operaţii de bază • verificarea codului sursă • raportează încălcarea regulilor de sintaxă • simulează comportamentul circuitului atunci când sunt aplicaţi anumiţi stimuli CID2 curs 2

  30. Generatoare de semnal pentru platformele de test cod special care introduce forme de undă initial begin…. end # Atenţie!!! folosiţi doar atribuiri procedurale iniţial toate valorile sunt x CID2 curs 2

  31. Evenimente • eveniment = schimbarea valorii unui semnal • event-driven simulation @ (at) always / forever $monitor CID2 curs 2

  32. Şablon pentru platforma de test module DUTB(); reg…; wire….; parameter time_out= ; UUT nume(lista porturi); initial $monitor(); initial #time_out $stop; initial …. begin … end endmodule CID2 curs 2

  33. Întârzierişi timpi de propagare • pentru primitive, implicit tp=0 • bibliotecile de componente standard definesc cu acurateţe parametrii • ex: xorf201, nandf301, invf101 CID2 curs 2

  34. and #1 (out, in1, in2) • and #(3,6) (out, in1, in2) //rise, fall • bufif0 #(3,6,5) (out, in, en) //rise, fall, turn-off • 3:4:5 //minim tipic maxim CID2 curs 2

  35. Tabele de adevăr table // a b y 0 0 : 0 0 1 : 1 1 0 : 0 1 1 : 0 endtable CID2 curs 2

  36. UDP - primitive primitive nume_functie(y, a, b); output y; input a,b; table // a b y 0 0 : 0 0 1 : 1 1 0 : 0 1 1 : 0 endtable endprimitive CID2 curs 2

  37. Atenţie!!! iesirea unei primitive UDP este scalară (1 bit) se folosesc frecvent tabele compactate CID2 curs 2

  38. Atribuirea continuă assign assign y = ~a&b; modelare data-flow de câte ori se modifică a sau b este reevaluată CID2 curs 2

  39. Ecuaţii logice ~ not & and | or assign out=enable? a:b; (dacă enable=1, out = a dacă enable=0, out = b) if-then-else CID2 curs 2

  40. Schemă logică Model structural Tabel de adevăr UDP Ecuaţii logice assign CID2 curs 2

  41. Subiecte posibile de examen • definiţi ca primitivă un multiplexor 4:1 • un modul Verilog pe care sa îl explicaţi • găsiţi greşelile într-un modul! CID2 curs 2

  42. exemplu test module nota_finala(nota, proiect, partial, examen); input partial, examen; inout proiect; output nota; reg [3:0] partial, examen, proiect; // nota este zecimala ….. endmodule CID2 curs 2

More Related