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