Verilog, Verilog HDL (անգլ.՝ Verilog Hardware Description Language), կիսահաղորդչային և էլեկտրոնային նախագծման արդյունաբերությունում ապարատային նկարագրման լեզու (ԱՆԼ), որը օգտագործվում է էլեկտրոնային համակարգերի մոդելավորման համար։ Այն օգտագործվում է թվային, անալոգային և խառը-ազդանշանային սխեմաների նախագծման, իրականացման և թեսթավորման համար, աբստրակցիայի տարբեր մակարդակներում։

Պատմություն խմբագրել

Սկիզբ խմբագրել

Verilog-ը ստեղծվել է Phil Moorby և Prabhu Goel կողմից 1983/1984 թ. Automated Integrated Design Systems ընկերության կողմից (1985 թ. վերանվանվել է Gateway Design Automation ) որպես ապարատային նկարագրման լեզու (ԱՆԼ)։ 1990 թ. Gateway Design Automation ընկերությունը գնվել է Cadence Design Systems կողմից։

Verilog-95 խմբագրել

Այդ ժամանակ VHDL լեզվի աճող հաջողությանը զուգընթաց Cadence որոշում է կայացնում հասնել լեզվի ստանդարտացմանը։ Verilog-ը ուղարկվում է IEEE և ընդունվում որպես ստանդարտ IEEE 1364-1995 (հաճախ անվանում են Verilog-95)։

Verilog-2001 խմբագրել

Оգտագործողների կողմից Verilog-95-ում հայտնավերված թերությունները ծածկելու համար լրացումներ ուղարկվեցին IEEE, որոնք ընդունվեցին IEEE 1364-1995 ստանդարտում (հաճախ անվանում են Verilog-2001)։

Verilog-2001 զգալի նորացվել է Verilog-95 հետ համեմատած։ Նախ, ավելացվել է նշանով (2-ական լրացում) գործողություններ կատարելու հնարավորությունը գծերի (nets) և փոփոխականների հետ։ Նախկինում, ծրագրավորողը պետք է կատարեր նշանով գործողություններ օգտագործելով բիթային տրամաբանական օպերացիաներ։ Այժմ նույն գործողությունները Verilog-2001-ում կարող են ավելի հստակ նկարագրվել ներդրված օպերատորների միջոցով +, -, /, *, »> ։

Verilog 2005 խմբագրել

Verilog 2005-ում (IEEE Standard 1364-2005) կատարվել են չնչին ուղղումներ և ավելացվել են մի քանի լեզվական առանձնահատկություններ (օրինակ uwire բանալի բառը)։

Verilog ստանդարտի մի առանձին մաս, Verilog-AMS, հրարավորություն է տալիս մոդելավորել անալոգային և խառը ազդանշանային սարքեր։

Օրինակներ խմբագրել

Ներքևում բերված է Verilog լեզվով գրված "Hello world" ծրագիրը։

module main;
 initial 
 begin
 $display("Hello world!");
 $finish;
 end
endmodule

Կիսագումարիչ

module half_adder(S, C, A, B);
 output S, C;
 input A, B;

 wire S, C, A, B;

 assign S = A ^ B;
 assign C = A & B;

endmodule

Լրիվ գումարիչ օգտագործելով երկու կիսագումարիչ

module full_adder(sum, cout, in1, in2, cin);
 output sum, cout;
 input in1, in2, cin;

 wire sum, cout, in1, in2, cin;
 wire I1, I2, I3;

 half_adder ha1(I1, I2, in1, in2);
 half_adder ha2(sum, I3, I1, cin);

 assign cout = I2 || I3;

endmodule

Հղումներ խմբագրել

Ուսուցողական ռեսուրսներ խմբագրել