Documente Academic
Documente Profesional
Documente Cultură
Veriwell - Porti
Veriwell - Porti
IMPLEMENTATE N VERILOG
1. Scopul lucrrii
Introducere n limbajul de descriere hardware Verilog HDL i folosirea
simulatorului Veriwell pentru sinteza structurilor combinaionale implementate cu pori
logice.
2. Aparate necesare
- calculator compatibil Pentium
- sistem de operare Windows 95 sau superior
- programul VeriWell 2.0, produs de Wellspring Solutions, versiunea
freeware, disponibil pe Internet
3. Consideraii teoretice
Metodele manuale de sintez a sistemelor numerice, care presupun tehnici de
minimizare a funciilor binare, utilizarea tabelelor de tranziii etc., nu permit
proiectantului conceperea unor sisteme de mare complexitate. Pentru automatizarea
proiectrii au fost concepute instrumente sub forma unor limbaje de descriere a
hardware-ului, numite limbaje HDL (Hardware Description Languages). Aceste
limbaje permit specificarea riguroas a funcionalitii sistemelor numerice, permit
simularea acestor circuite (prin vizualizarea formelor de und n timp se verific dac
funcionarea circuitului corespunde ateptrilor noastre), precum i sinteza circuitelor,
genernd conexiunile necesare pentru o structur programabil, sau mtile necesare
pentru construcia unui circuit integrat ASIC. Rezultatul compilrii programului nu este
un cod main, ci schema de conexiuni a unui circuit numeric.
Sursele HDL-urilor nu sunt reprezentri grafice de scheme logice, ci fiiere
text, care respect sintaxa limbajului respectiv, i care ofer, asemenea unui limbaj de
nivel nalt, o descriere comportamental a circuitelor. Este posibil i o descriere
structural, legat mai mult de schema circuitului, preferat de unii proiectani, mcar
pentru unele poriuni ale sistemului numeric.
La ora actual sunt standardizate dou limbaje HDL: Verilog HDL, uor de
nvat, cu o sintax asemntoare limbajului C (chiar dac mai exist i unele
instruciuni care mai amintesc de Pascal), care ocup circa jumtate din aplicaiile
comerciale HDL din Statele Unite, i limbajul VHDL (Very High Speed Integrated
Circuit Hardware Description Language), ceva mai dificil, cu o sintax bazat pe
limbajul Ada, care ocup cealalt jumtate din pia. Simulatorul de Verilog pe care l
vom folosi se numete Veriwell i poate fi descrcat gratuit din Internet. Singura
limitare a acestei versiuni gratuite este limitatea surselor la circa 1000 linii de cod.
S considerm circuitul combinaional simplu cu 3 intrri i o ieire din figura
3.1. Pentru sinteza i analiza acestui circuit trebuie s generm dou fiiere surs, pe
care le-am numit clc1.v i test_clc1.v, iar coninutul lor este reprezentat n figura
3.3. Cele dou fiiere sunt incluse ntr-un proiect nou, numit clc1.prj.
A
B
C
p1
p2
S1
p3
S2
clc1.v
test_clc1.v
module CLC_1(inA,inB,inC,outF);
input inA,inB,inC;
output outF;
wire outF,S1,S2;
nor p3(outF,S1,S2);
and p1(S1,inA,inB);
not p2(S2,inC);
endmodule
module test_CLC_1;
reg A,B,C;
wire F;
initial
begin
$vw_dumpvars;
$monitor ($time,
"A = %b B = %b C = %b F = %b",
A, B, C, F);
#10 A = 0; B = 0; C = 0;
#10 C = 1;
#10 A = 1;
#10 B = 1;
#10 A = 0;
#10 B = 0;
#10 C = 0;
#10 $finish;
end
CLC_1 testat(A,B,C,F);
endmodule
a[3] b[3]
b[3:0]
4
a[3:0]
4
xor_3
comp_4
a[2] b[2]
xor_2
w3
a[1] b[1]
xor_1
w2 w1
a[0] b[0]
xor_0
w0
nor_1
out
out
nor
endmodule
Un modul de testare pentru acest circuit este propus mai jos. El poate fi
introdus n acelai fiier, sau ntr-un fiier separat, aa cum am procedat la exemplul
anterior.
module test_comp;
reg[3:0] number_1, number_2; // cele doua numere de intrare
wire out_;
// firul de conectare la monitor
initial begin
end
number_1 = 4d5;
number_2 = 4d7;
#1 number_1 = 4d7;
#2 number_2 = 4d12;
#3 number_1 = 4d12;
#4 number_1 = 4d1;
a
b
carry_in
nand_2
xor_2
carry_out
carry_in
adder
w1
w2
nand_3
xor_1
w3
sum
nand_1
sum
carry_out
end
signals = 3b000;
#10 signals = 3b001;
#10 signals = 3b010;
#10 signals = 3b011;
#10 signals = 3b100;
#10 signals = 3b101;
#10 signals = 3b110;
#10 signals = 3b111;
4. Modul de lucru
4.1. Se lanseaz n execuie VeriWell 2.0, se deschide proiectul clc1.prj i se
vizualizeaz fiierele componente clc1.v i test_clc1.v. Studiai meniul principal,
consultnd i opiunea Help. Facei simularea circuitului i verificai c nu avei erori.
Vizualizai formele de und, folosind fereastra wavefile.vwf, aa cum se vede n figura
3.3. Modificai fiierele proiectului, dar salvai-le cu alte nume ntr-un subdirector nou,
creat de dumneavoastr, i reluai simularea pentru diverse tipuri de pori logice i
pentru diverse secvene de intrare. Repetai simulrile innd seama i de timpii de
propagare nenuli prin porile logice. Verificai i descrierea comportamentala a
circuitului.