±±º½verilogʵÑ鱨¸æ

ʵÑéÈý ÀûÓÃÌõ¼þÓï¾äʵÏÖ¼ÆÊý·ÖƵʱÐòµç·

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

1£®ÕÆÎÕÌõ¼þÓï¾äÔÚ¼òµ¥Ê±ÐòÄ£¿éÉè¼ÆÖеÄʹÓá£

2£®Ñ§Ï°ÔÚVerilogÄ£¿éÖÐÓ¦ÓüÆÊýÆ÷¡£

3£®Ñ§Ï°²âÊÔÄ£¿éµÄ±àд¡¢×ۺϺͲ»Í¬²ã´ÎµÄ·ÂÕæ¡£ ¶þ£®ÊµÑéÉ豸£º

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

·ÂÕæÒ»¸ö¿É×ۺϷç¸ñµÄ·ÖƵÆ÷£¬½«10MBµÄʱÖÓ·ÖÆµÎª500KBµÄʱÖÓ£¬¶¨ÒåÒ»¸ö¼ÆÊýÆ÷£¬Ô­Àíͬ1/2·ÖƵÆ÷Ò»Ñù£¬Ö»²»¹ý·ÖƵ±äΪ1/20¡£

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

module fdivision(RESET,F10M,F500K); input RESET,F10M; output F500K; reg F500K; reg[7:0]j;

always @(posedge F10M) if(!RESET) begin

F500K <= 0; j<=0; end else begin if(j==9) begin j<=0;

F500K =~ F500K; end else

j<=j+1; end endmodule

`timescale 1ns/1ps `define clk_cycle 50 module division_Top; reg F10M,RESET; wire F500K_clk;

always #`clk_cycle F10M=~F10M; initial begin

RESET=1; F10M=0;

#100 RESET=0; #100 RESET=1; #10000 $stop; end

fdivision fdivision(.RESET(RESET),.F10M(F10M),.F500K(F500K_clk)); endmodule

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

ʵÑéËÄ ×èÈû¸³ÖµÓë·Ç×èÈû¸³ÖµµÄÇø±ð

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

1£®Í¨¹ýʵÑé,ÕÆÎÕ×èÈû¸³ÖµÓë·Ç×èÈû¸³ÖµµÄ¸ÅÄîºÍÇø±ð¡£ 2£®Á˽â·Ç×èÈûºÍ×èÈû¸³ÖµµÄ²»Í¬Ê¹Óó¡ºÏ¡£ 3£®Ñ§Ï°²âÊÔÄ£¿éµÄ±àд¡¢×ۺϺͲ»Í¬²ã´ÎµÄ·ÂÕæ¡£ ¶þ£®ÊµÑéÉ豸£º

°²×°Modelsim-6.5cµÄPC»ú¡£

Èý£®ÊµÑéÄÚÈÝ£º

Á½¸öÄ£¿é£¬Ò»¸ö×èÈû¸³Öµ£¬Ò»¸ö·Ç×èÈû¸³Öµ£¬¹Û²ìÁ½ÕßÖ®¼äµÄÇø±ð

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

module blocking(clk,a,b,c); output [3:0]b,c; input [3:0]a; input clk; reg [3:0]b,c;

always @(posedge clk) begin b=a; c=b;

$display(\ end endmodule //non_blocking.v

module non_blocking(clk,a,b,c); output [3:0]b,c; input [3:0]a; input clk; reg [3:0]b,c;

always @(posedge clk) begin b<=a; c<=b;

$display(\ end endmodule

//comepareTop.v `timescale 1ns/100ps module conpareTop; wire[3:0]b1,c1,b2,c2; reg[3:0]a; reg clk; initial begin clk=0;

forever #50 clk=~clk; end initial

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