begin a = 8'b00000100; b = 8'b00000010; #200 a = 8'b00001111; b = 8'b11110000; #200 a = 8'b01010101; b = 8'b01010101; #200 $stop; end compare m (.out (out), .a(a), .b(b));
endmodule
ʵÑé·ÂÕæ£º
5
Á·Ï°¶þ¼òµ¥·ÖƵʱÐòÂß¼µç·µÄÉè¼Æ
ʵÑéÄ¿µÄ£º
£¨1£©ÕÆÎÕ×î»ù±¾Ê±Ðòµç·µÄʵÏÖ·½·¨ £¨2£©Ñ§Ï°Ê±Ðòµç·²âÊÔÄ£¿éµÄ±àд £¨3£©Ñ§Ï°×ۺϺͲ»Í¬²ã´ÎµÄ·ÂÕæ
ʵÑéÔÀí£º
¶ÔÓÚ×éºÏÂß¼µç·£¬¿É×ۺϳɾßÌåµç·½á¹¹µÄʱÐòÂß¼µç·ҲÓÐ׼ȷµÄ±í´ï·½Ê½¡£ÔÚ¿É×ۺϵÄÄ£ÐÍÖУ¬Í¨³£ÓÃalways¿é»òÕß@£¨posedgeclk£©»ò£¨negedgeclk£©½á¹¹±í´ïʱÐòÂß¼¡£ÊµÑéΪ¶þ·ÖÖ®Ò»·ÖƵÆ÷Ä£ÐÍ¡£
ÔÚalways¿éÖУ¬±»¸³ÖµÐźŶ¼±ØÐ붨ÒåΪregÐÍ£¬¶ÔÓÚregÐÍÊý¾Ý£¬Èç¹ûδ¶ÔËü½øÐи³Öµ£¬·ÂÕæ¹¤¾ß»áÈÏΪËüÊDz»¶¨Ì¬µÄ¡£ÎªÁËÕýÈ·¹Û²ì½á¹û£¬ÔÚ¿É×ÛºÏÄ£¿éÖУ¬³£¶¨ÒåÒ»¸ö¸´Î»ÐźÅreset,ÆäΪµÍµçƽʱ¶Ô¼Ä´æÆ÷½øÐи´Î»¡£
ʵÑéÄÚÈÝ£º
ÒÀÈ»×÷clk_inµÄ2·ÖƵclk_out£¬ÒªÇóÊä³öʱÖÓµÄÏàλÓëÉÏÃæµÄµÄ1/2·ÖƵÆ÷µÄÊä³öÕýºÃÏà·´¡£
ʵÑé´úÂ룺
module half_clk (reset,clk_in,clk_out); input reset; input clk_in; output clk_out; reg clk_out; always @ (posedge clk_in) if (!reset) clk_out<=1'b1; else clk_out<=~clk_out; endmodule
`timescale 1ns/100ps `define clk_cycle 50
module two;
6
reg clk,reset; wire clk_out;
always #`clk_cycle clk=~clk;
initial begin
clk=0; reset=1; #10 reset=0; #110 reset=1; #100000 $stop; end
half_clk m0(.reset(reset),.clk_in(clk),.clk_out(clk_out));
endmodule
ʵÑé·ÂÕæ£º
7
Á·Ï°ÈýÀûÓÃÌõ¼þÓï¾äʵÏÖ¼ÆÊý·ÖƵʱÐòµç·
ʵÑéÄ¿µÄ£º
£¨1£©ÕÆÎÕÌõ¼þÓï¾äÔÚ¼òµ¥Ê±ÐòÄ£¿éÉè¼ÆÖеÄʹÓà £¨2£©Ñ§Ï°ÔÚVerilogÄ£¿éÖÐÓ¦ÓüÆÊýÆ÷
£¨3£©Ñ§Ï°²âÊÔÄ£¿éµÄ±àд¡¢×ۺϺͲ»Í¬²ã´ÎµÄ·ÂÕæ
ʵÑéÔÀí£º
ÔÚ¿É×ۺϵÄVerilog HDLÄ£ÐÍÖУ¬³£ÓõÄÌõ¼þÓï¾äÓÐif ?elseºÍcase?endcaseÁ½Öֽṹ£¬Ó÷¨ºÍCÓïÑÔÏàËÆ¡£
1. ifÓï¾ä
£¨1£© if£¨±í´ïʽ£©Óï¾ä £¨2£© if£¨±í´ïʽ£©Óï¾ä1 elseÓï¾ä2
£¨3£© if£¨±í´ïʽ1£©Óï¾ä1£»
else if£¨±í´ïʽ2£©Óï¾ä2£» else if£¨±í´ïʽ3£©Óï¾ä3£» ¡¡ 2. caseÓï¾ä
£¨1£©case£¨±í´ïʽ£©
ʵÑéÄÚÈÝ£º
ÀûÓÃ10MµÄʱÖÓ£¬Éè¼ÆÒ»¸öµ¥ÖÜÆÚÐÎ×´µÄÖÜÆÚ²¨ÐΡ£
ʵÑé´úÂ룺
module fdivision(clk_out,F10M,reset); output clk_out; input reset; input F10M; reg clk_out;
8