±±º½Êý×ÖEDAʵÑé1-8+Êý×ÖÈ¥ÔëÆ÷ ÏÂÔØ±¾ÎÄ

reg [8:0]n; always @ (posedge F10M) if (!reset) begin clk_out<=0; n<=0; end else begin n<=n+1; if ((n==200)||(n==300)) clk_out<=~clk_out; if (n==500) n<=0; end endmodule

`timescale 1ns/100ps module three; reg clk; reg reset; wire clk_out; always #50 clk=~clk; initial begin

clk=1'b0; reset=1'b0;

#100 reset =1'b1; end fdivision m(.clk_out(clk_out),.F10M(clk),.reset(reset)); endmodule

ʵÑé·ÂÕæ£º

9

Á·Ï°ËÄ×èÈû¸³ÖµÓë·Ç×èÈû¸³ÖµµÄÇø±ð

ʵÑéÄ¿µÄ£º

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

ʵÑéÔ­Àí£º

Ôڽ̲ÄÖÐÎÒÃÇÒѾ­Á˽âÁËËüÃÇÖ®¼äÔÚÓï·¨ÉϵÄÇø±ðÒÔ¼°×ۺϺóËùµÃµ½µÄµç·½á¹¹ÉϵÄÇø±ð¡£ÔÚalways¿éÖУ¬×èÈû¸³Öµ£¨=£©¿ÉÒÔÀí½âΪ¸³ÖµÓï¾äÊÇ˳ÐòÖ´Ðе쬶ø·Ç×èÈû¸³Öµ£¨<=£©¿ÉÒÔÀí½âΪ¸³ÖµÓï¾äÊDz¢·¢Ö´Ðеġ£Êµ¼ÊµÄʱÐòÂß¼­Éè¼ÆÖУ¬Ò»°ãµÄÇé¿öÏ·Ç×èÈû¸³ÖµÓï¾ä±»¸ü¶àµØÊ¹Óã¬ÓÐʱΪÁËÔÚͬһÖÜÆÚʵÏÖÏ໥¹ØÁªµÄ²Ù×÷£¬Ò²Ê¹ÓÃÁË×èÈû¸³ÖµÓï¾ä¡£

ʵÑéÄÚÈÝ£º

ÔÚblockingÄ£¿éÖа´ÈçÏÂÁ½ÖÖд·¨£¬·ÂÕæºÍ×ۺϵĽá¹û»áÓÐʲôÑùµÄ²´°¶»¨£¿×÷³ö·ÂÕæ²¨ÐΣ¬·ÖÎö·ÂÕæ½á¹û¡£

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

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

ʵÑé´úÂ룺

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

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

10

endmodule

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

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

endmodule

`timescale 1ns/100ps

module four;

wire [3:0] b1,c1,b2,c2; reg [3:0] a; reg clk;

initial begin clk = 0;

forever #50 clk = ~clk; end

initial begin

a = 4'h3;

$display(\ # 100 a = 4'h7;

$display(\ # 100 a = 4'hf;

$display(\ # 100 a = 4'ha;

$display(\ # 100 a = 4'h2;

$display(\

# 100 $display(\ $stop; end

ex4_1 m1 (clk,a,b1,c1); ex4_2 m2 (clk,a,b2,c2);

11

endmodule

ʵÑé·ÂÕæ£º

12