Á·Ï°ÎåÓÃalways¿éʵÏֽϸ´ÔÓµÄ×éºÏÂß¼µç· ʵÑéÄ¿µÄ£º
£¨1£©ÕÆÎÕÓÃalwaysʵÏֽϴó×éºÏÂß¼µç·µÄ·½·¨£»
£¨2£©½øÒ»²½Á˽âassignÓëalwaysÁ½ÖÖ×éºÏµç·ʵÏÖ·½·¨µÄÇø±ðºÍ×¢Òâµã£» £¨3£©Ñ§Ï°²âÊÔÄ£¿éÖÐËæ»úÊýµÄ²úÉúºÍÓ¦Óã» £¨4£©Ñ§Ï°×ۺϲ»Í¬²ã´ÎµÄ·ÂÕ棬²¢±È½Ï½á¹û¡£
ʵÑéÔÀí£º
£¨1£©×Ô´¥·¢always¿é£º
Àý£º²ÉÓ÷Ç×èÈû¸³ÖµµÄ×Ô´¥·¢Õñµ´Æ÷ module osc2(clk); outputclk; regclk;
initial #10 clk=0;
always @(clk) #10 clk<=~clk; endmodule
@(clk)µÄµÚÒ»´Î´¥·¢Ö®ºó£¬·Ç×èÈû¸³ÖµµÄRHS±í´ïʽ±ã¼ÆËã³öÀ´£¬²¢°ÑÖµ¸³¸øLHSµÄʱ¼ä²¢°²ÅÅÔÚ¸üÐÂʼþ¶ÓÁÐÖС£ÔÚ·Ç×èÈû¸³Öµ¸üÐÂʼþ¶ÓÁб»¼¤»î֮ǰ£¬ÓÖÓöµ½ÁË@(clk)´¥·¢Óï¾ä£¬²¢ÇÒalways¿éÔٴζÔclkµÄÖµ±ä»¯²úÉú·´Ó¦¡£µ±·Ç×èÈûLHSµÄÖµÔÚͬһʱ¿Ì±»¸üÐÂʱ£¬@(clk)ÔÙÒ»´Î´¥·¢¡£
±¾ÊµÑéʾÀýÖÐʹÓÃÁ˵çƽÃô¸ÐµÄalways¿é£¬ËùνµçƽÃô¸ÐµÄ´¥·¢Ìõ¼þ£º@ºóµÄÀ¨ºÅÄÚµçƽÀï±íÖеÄÈκÎÒ»¸öµçƽ·¢Éú±ä»¯£¨ÓëʱÐòÂß¼²»Í¬£¬ËüÔÚ@ºóµÄÀ¨ºÅÄÚûÓÐÑØÃô¸Ð¹Ø¼ü´Ê£¬Èçposedge»ònegedge£©£¬¾ÍÄÜ´¥·¢always¿éµÄ¶¯×÷¡£
£¨2£©assignÓëalways
ʹÓÃassign½á¹¹À´ÊµÏÖ×éºÏÂß¼µç·£¬Èç¹ûÂß¼¹Øϵ±È½Ï¸´ÔÓ£¬²»ÈÝÒ×Àí½âÓï¾äµÄ¹¦ÄÜ£¬¶øÊʵ±²ÉÓÃalwaysÀ´Éè¼Æ×éºÏÂß¼£¬Ê¹Ô´´úÂëÓï¾äµÄ¹¦ÄÜÈÝÒ×Àí½â¡£
ͬһ×éºÏÂß¼µç··Ö±ðÓÃalways¿éºÍÁ¬Ðø¸³ÖµÓï¾äassignÃèÊöʱ£¬´úÂëµÄÐÎʽ´óÏྶͥ£¬µ«ÔÚalwaysÖУ¬ÈôÊʵ±ÔËÓÃdefault£¨ÔÚcase½á¹¹ÖУ©ºÍelse£¨ÔÚif?else½á¹¹ÖУ©Óï¾äʱ£¬Í¨³£¿ÉÒÔ×ÛºÏΪ´¿×éºÏÂß¼£¬¾¡¹Ü±»¸³ÖµµÄ±äÁ¿Ò»¶¨Òª¶¨ÒåΪregÐÍ£»Èô²»Ê¹ÓÃdefault»òelse¶ÔĬÈÏÏî½øÐÐ˵Ã÷£¬ÔòÒ×Éú³ÉÒâÏë²»µ½µÄËø´æÆ÷£¬ÕâÒ»µãÒ»¶¨×¢Ò⣡
ʵÑéÄÚÈÝ£º
ÔËÓÃalways¿éÉè¼ÆÒ»¸ö8·Êý¾ÝÑ¡ÔñÆ÷¡£ÒªÇó£ºÃ¿Â·ÊäÈëÊý¾ÝÓëÊä³öÊý¾Ý¾ùΪ4λ2½øÖÆÊý£¬µ±Ñ¡Ôñ¿ª¹Ø£¨ÖÁÉÙ3룩»òÊäÈëÊý¾Ý±ä»¯Ê±£¬Êä³öÊý¾ÝÒ²ÏàÓ¦µÄ±ä»¯¡£
13
ʵÑé´úÂ룺
module choice(a,b,c,d,e,f,g,h,n,out); input[2:0] n; input[3:0] a,b,c,d,e,f,g,h; output[3:0] out; reg[3:0] out;
always @(n,a,b,c,d,e,f,g,h) begin
case(n)
0: out = a; 1: out = b; 2: out = c; 3: out = d; 4: out = e; 5: out = f; 6: out = g; 7: out = h;
default: out=4'hx;//δÊÕµ½Ö¸Áîʱ£¬Êä³öÈÎÒâ̬¡£
endcase end
endmodule
`timescale 1ns/100ps module five; wire [3:0] out; reg [2:0] n; reg [3:0] a,b,c,d,e,f,g,h;
initial begin a={$random,$random,$random,$random}; b={$random,$random,$random,$random}; c={$random,$random,$random,$random}; d={$random,$random,$random,$random}; e={$random,$random,$random,$random}; f={$random,$random,$random,$random}; g={$random,$random,$random,$random};
14
h={$random,$random,$random,$random};
#50 n =3'b000; #50 n =3'b001; #50 n =3'b010; #50 n =3'b011; #50 n =3'b100; #50 n =3'b101; #50 n =3'b110; #50 n =3'b111; #50 $stop; end choice m (a,b,c,d,e,f,g,h,n,out);
endmodule
ʵÑé·ÂÕ棺
15
Á·Ï°ÁùÔÚVerilog HDLÖÐʹÓú¯Êý
ʵÑéÄ¿µÄ£º
£¨1£©Á˽⺯ÊýµÄ¶¨ÒåºÍÔÚÄ£¿éÉè¼ÆÖеÄʹÓã» £¨2£©Á˽⺯ÊýµÄ×ÛºÏÐÔÎÊÌ⣻
£¨3£©Á˽âÐí¶à×ÛºÏÆ÷²»ÄÜ×ۺϸ´ÔÓµÄËãÊõÔËËã¡£
ʵÑéÔÀí£º
ÓëÒ»°ãµÄ³ÌÐòÉè¼ÆÓïÑÔÒ»Ñù£¬Verilog HDLÖÐÒ²¿ÉʹÓú¯ÊýÒÔÊÊÓ¦¶Ô²»Í¬±äÁ¿²ÉȡͬһÖÖÔËËãµÄ²Ù×÷¡£Verilog HDLº¯ÊýÔÚ×ÛºÏʱ±»Àí½â³É¾ßÓжÀÁ¢ÔËË㹦Äܵĵç·£¬Ã¿µ÷ÓÃÒ»´Îº¯ÊýÏ൱ÓڸıäÕⲿ·Öµç·µÄÊäÈëÒԵõ½ÏàÓ¦µÄ¼ÆËã½á¹û¡£º¯ÊýµÄÄ¿µÄÊÇ·µ»ØÒ»¸öÓÃÓÚ±í´ïʽµÄÖµ¡£
£¨1£©º¯Êý¶¨Òå
Function<·µ»ØÖµµÄÀàÐÍ»ò·¶Î§>£¨º¯ÊýÃû£©£» <¶Ë¿Ú˵Ã÷Óï¾ä> <±äÁ¿ÀàÐÍ˵Ã÷Óï¾ä> Begin
<Óï¾ä> ¡¡ End
Endfuction
£¨2£©º¯Êýµ÷ÓÃ
<º¯ÊýÃû>£¨<±í´ïʽ>£¬?<±í´ïʽ>£©
ʵÑéÄÚÈÝ£º
Éè¼ÆÒ»¸ö´ø¿ØÖƶ˵ÄÂß¼ÔËËãµç·£¬·Ö±ðÍê³ÉÕýÕûÊýµÄƽ·½¡¢Á¢·½ºÍ×î´óÊýΪ5µÄ½×³ËµÄÔËË㣬ҪÇó¿É×ۺϡ£±àд²âÊÔÄ£¿é£¬²¢¸ø³ö¸÷ÖÖ²ã´ÎµÄ·ÂÕ沨ÐΣ¬±È½ÏËüÃǵIJ»Í¬¡£
ʵÑé´úÂ룺
module funct(clk,data,n,result,reset);
output[8:0] result; input[3:0] n; input[3:0] data; input reset,clk; reg[8:0] result;
16