±±º½verilogʵÑ鱨¸æ - ͼÎÄ

endmodule //²âÊÔÄ£¿é´úÂë

`timescale 1ns/100ps `define clk_cycle 50 module tryfunctTop; reg [3:0]n,i; reg reset,clk; wire [31:0]result; initial begin clk=0; n=0; reset=1;

#100 reset=0; #100 reset=1;

for(i=0;i<=15;i=i+1) begin

#200 n=i; end

#100 $stop; end

always #`clk_cycle clk=~clk;

tryfunct m(.clk(clk),.n(n),.result(result),.reset(reset)); endmodule

Î壮×ۺϷÂÕæ½á¹û

Á·Ï°Ìâ·ÂÕæ½á¹û

ʵÑéÆß ÔÚVerilog HDLÖÐʹÓÃÈÎÎñ(task)

Ò»£®ÊµÑéÄ¿µÄ£º

1£®ÕÆÎÕÈÎÎñÔÚVerilogÄ£¿éÉè¼ÆÖеÄÓ¦Óá£

2£®Ñ§»áÔÚµçÆ½Ãô¸ÐÁбíµÄalwaysÖÐʹÓÃÆ´½Ó²Ù×÷¡¢ÈÎÎñºÍ×èÈû¸³ÖµµÈ

Óï¾ä£¬²¢Éú³É¸´ÔÓ×éºÏÂß¼­µÄ¸ß¼¶·½·¨¡£

¶þ£®ÊµÑéÉ豸£º

°²×°Modelsim-6.2bµÄPC»ú¡£ Èý£®ÊµÑéÄÚÈÝ£º

ÀûÓÃµçÆ½Ãô¸ÐµÄalways¿éºÍÒ»¸ö±È½ÏÁ½±äÁ¿´óСÅÅÐòµÄÈÎÎñ£¬Éè¼Æ³ö£´¸ö²¢ÐÐÊäÈëÊýµÄ¸ßËÙÅÅÐò×éºÏÂß¼­¡£

ËÄ£®ÊµÑé´úÂë

module sort4(ra,rb,rc,rd,a,b,c,d); output [3:0]ra,rb,rc,rd; input [3:0]a,b,c,d; reg [3:0]ra,rb,rc,rd; reg [3:0]va,vb,vc,vd;

always @(a or b or c or d) begin

{va,vb,vc,vd}={a,b,c,d};

sort2(va,vc); sort2(vb,vd); sort2(va,vb); sort2(vc,vd); sort2(vb,vc);

{ra,rb,rc,rd}={va,vb,vc,vd}; end task sort2;

inout [3:0]x,y; reg [3:0]tmp; if(x>y) begin tmp=x; x=y; y=tmp; end endtask endmodule

`timescale 1ns/100ps module task_Top; reg [3:0]a,b,c,d;

wire [3:0] ra,rb,rc,rd; initial begin a=0; b=0; c=0; d=0;

repeat(50) begin

#100 a={$random}; b={$random}; c={$random}; d={$random}; end

#100 $stop; end

sort4 sort4(.a(a),.b(b),.c(c),.d(d),.ra(ra),.rb(rb),.rc(rc),.rd(rd)); endmodule

Î壮×ۺϷÂÕæ½á¹û

Á·Ï°Ìâ·ÂÕæ½á¹û

ÁªÏµ¿Í·þ£º779662525#qq.com(#Ìæ»»Îª@)