CID Seminar 1

De la WikiLabs

În acest seminar veţi învăţa să descrieţi unele circuite digitale simple în limbajul Verilog şi să folosiţi programul Xilinx ISim pentru a simula funcţionarea acestora.


Cuvinte cheie: formă de undă, proiect, modul, instanţiere, testbench

Sintaxa Verilog: module, assign, initial, $stop


În domeniul digital, toate sistemele, circuitele şi blocurile funcţionale sunt conectate între ele numai prin semnale digitale, adică dreptunghiulare (care pot lua doar două valori, 0 si 1). Cum obţinem formele de undă de la ieşirea unui circuit? Descriem circuitul într-o manieră inteligibilă (folosind un HDL – în cazul nostru, Verilog). Aplicăm semnale pe intrare şi apoi simulăm funcţionarea, folosind un simulator (aici, Xilinx ISim).


Exemplul 1

Descrieţi în Verilog un circuit de incrementare pentru numere binare pe 4 biţi şi testaţi funcţionarea acestui circuit, folosind modulul test_inc, cu ajutorul programului Model Sim.

Schema bloc pentru exemplul 1

Explicaţii suplimentare

Descrierea unui circuit include:

  • descrierea interfetei (declararea porturilor)
  • descrierea funcţiei (ce face circuitul? în esenţă, cum depind ieşirile de intrări)

Circuitul din acest exemplu are o intrare (in), pe 4 biţi şi o ieşire (out), pe 5 biţi. Bus-urile sunt semnale pe mai mulţi biţi care au o semnificaţie comună, este mai avantajos să îi definim împreună. Funcţia realizată de circuit este out = in + 1.

Regulă: Descrierile circuitelor în Verilog sunt alcătuite din module.

Intrările în Verilog se definesc cu cuvântul input, ieşirile sunt output. Orice modul începe cu cuvântul module şi se termină cu endmodule. Modulele nu se pot suprapune şi nu pot fi incluse unele în altele.

module circuitul_meu(lista_porturi); /* porturile sunt conexiunile externe ale circuitului*/

	……//declaraţi mai întâi porturile
	……//apoi daţi detaliile funcţionale
endmodule

Liniile de cod în Verilog se încheie cu ";" (există şi excepţii pe care le vom menţiona explicit, de exemplu după ultima linie – endmodule – de mai sus. În principiu, ";" determină o acţiune). Comentariile se introduc cu // sau cu /*....*/, vor apărea scrise în editorul programului cu verde şi sunt ignorate la compilare.

Un scurt tutorial pentru folosirea programului Xilinx ISim găsiţi aici.