Êý×ÖϵͳÉè¼ÆÓëVerilog HDL ÏÂÔØ±¾ÎÄ

6.2 ÏÂÁÐÊý×ֵıíʾÊÇ·ñÕýÈ·£¿

6'd18, 'Bx0, 5'b0x110, 'da30, 10'd2, 'hzF 6.3 ¶¨ÒåÈçϵıäÁ¿ºÍ³£Á¿£º £¨1£©¶¨ÒåÒ»¸öÃûΪcountµÄÕûÊý£»

£¨2£©¶¨ÒåÒ»¸öÃûΪABUSµÄ8λwire×ÜÏߣ»

£¨3£©¶¨ÒåÒ»¸öÃûΪaddressµÄ16λregÐͱäÁ¿£¬²¢½«¸Ã±äÁ¿µÄÖµ¸³ÎªÊ®½øÖÆÊý128£» £¨4£©¶¨Òå²ÎÊýDelay_time, ²ÎÊýֵΪ8£» £¨5£©¶¨ÒåÒ»¸öÃûΪDELAYµÄʱ¼ä±äÁ¿£» £¨6£©¶¨ÒåÒ»¸ö32λµÄ¼Ä´æÆ÷MYREG£»

£¨7£©¶¨ÒåÒ»¸öÈÝÁ¿Îª128£¬×Ö³¤Îª32λµÄ´æ´¢Æ÷MYMEM£» µÚ7Õ VerilogÐÐΪÓï¾ä p61

Verilog HDLÐÐΪÓï¾ä

Àà±ð ¿éÓï¾ä

¸³ÖµÓï¾ä

Ñ­»·Óï¾ä

±àÒëÏòµ¼Óï¾ä p62

7.1 ¹ý³ÌÓï¾ä initial always

ÔÚÒ»¸öÄ£¿é£¨module£©ÖУ¬Ê¹ÓÃinitialºÍalwaysÓï¾äµÄ´ÎÊýÊDz»ÊÜÏÞÖÆµÄ¡£initialÓï¾ä³£ÓÃÓÚ·ÂÕæÖеijõʼ»¯£¬initial¹ý³Ì¿éÖеÄÓï¾ä½öÖ´ÐÐÒ»´Î£»always¿éÄÚµÄÓï¾äÔòÊDz»¶ÏÖØ¸´Ö´Ðеġ£ p63

initial always

Óï¾ä

´®Ðпébegin-end ²¢Ðпéfork-join ³ÖÐø¸³Öµassign ¹ý³Ì¸³Öµ=¡¢<= if-else case for repeat while forever `define `include

`ifdef, `else, `endif

¿É×ÛºÏÐÔ

¡Ì ¡Ì

¡Ì ¡Ì ¡Ì ¡Ì ¡Ì

¡Ì ¡Ì ¡Ì

always¹ý³ÌÓï¾äʹÓÃÄ£°å

always @(<Ãô¸ÐÐźűí´ïʽevent-expression>) begin

//¹ý³Ì¸³Öµ

//if-else£¬case£¬casex£¬casezÑ¡ÔñÓï¾ä //while£¬repeat£¬forÑ­»· //task£¬functionµ÷Óà end

¡°always¡±¹ý³ÌÓï¾äͨ³£ÊÇ´øÓд¥·¢Ìõ¼þµÄ£¬´¥·¢Ìõ¼þдÔÚÃô¸ÐÐźűí´ïʽÖУ¬Ö»Óе±´¥·¢Ìõ¼þÂú×ãʱ£¬ÆäºóµÄ¡°begin-end¡±¿éÓï¾ä²ÅÄܱ»Ö´ÐС£ p64

7.2 ¿éÓï¾ä

¿éÓï¾äÊÇÓÉ¿é±êÖ¾·ûbegin-end»òfork-join½ç¶¨µÄÒ»×éÓï¾ä£¬µ±¿éÓï¾äÖ»°üº¬Ò»ÌõÓï¾äʱ£¬¿é±êÖ¾·û¿ÉÒÔȱʡ¡£

begin-end´®ÐпéÖеÄÓï¾ä°´´®Ðз½Ê½Ë³ÐòÖ´ÐС£±ÈÈ磺 begin

regb=rega; regc=regb; end

ÓÉÓÚbegin-end¿éÄÚµÄÓï¾ä˳ÐòÖ´ÐУ¬ÔÚ×îºó£¬½«regb¡¢regc µÄÖµ¶¼¸üÐÂΪregaµÄÖµ£¬¸Ãbegin-end¿éÖ´ÐÐÍêºó£¬regb¡¢regc µÄÖµÊÇÏàͬµÄ¡£ p65

7.3 ¸³ÖµÓï¾ä

³ÖÐø¸³ÖµÓï¾ä£¨Continuous Assignments£©

assignΪ³ÖÐø¸³ÖµÓï¾ä£¬Ö÷ÒªÓÃÓÚ¶ÔwireÐͱäÁ¿µÄ¸³Öµ¡£ ±ÈÈ磺assign c=a&b;

ÔÚÉÏÃæµÄ¸³ÖµÖУ¬a¡¢b¡¢cÈý¸ö±äÁ¿½ÔΪwireÐͱäÁ¿£¬aºÍbÐźŵÄÈκα仯£¬¶¼½«ËæÊ±·´Ó³µ½cÉÏÀ´¡£ p66

7.4 Ìõ¼þÓï¾ä £¨ if-elseÓï¾ä£©

if-elseÓï¾äʹÓ÷½·¨ÓÐÒÔÏÂ3ÖÖ£º £¨1£©if£¨±í´ïʽ£© Óï¾ä1£» £¨2£©if£¨±í´ïʽ£© Óï¾ä1£» else Óï¾ä2£»

£¨3£©if£¨±í´ïʽ1£© Óï¾ä1£» else if£¨±í´ïʽ2£© Óï¾ä2£» else if£¨±í´ïʽ3£© Óï¾ä3£» ??

else if£¨±í´ïʽn£© Óï¾än£» else Óï¾än+1; p67

caseÓï¾äµÄʹÓøñʽÈçÏ¡£

case £¨Ãô¸Ð±í´ïʽ£©

Öµ1£º Óï¾ä1£» //case·ÖÖ§Ïî Öµ2£º Óï¾ä2£» ??

Öµn£º Óï¾än;

default£ºÓï¾än+1£» endcase caseÓï¾ä p68

7.5 Ñ­»·Óï¾ä repeat loop initial begin

for(i=0;i<4;i=i+1) out = out +1; end initial begin

repeat(5)

out = out +1; end initial begin i=0;

while(i<0) i=i+1; end for loop while loop

ÔÚVerilogÖдæÔÚËÄÖÖÀàÐ͵ÄÑ­»·Óï¾ä£¬ÓÃÀ´¿ØÖÆÓï¾äµÄÖ´ÐдÎÊý¡£ÕâËÄÖÖÓï¾ä·Ö±ðΪ: £¨1£©forever£ºÁ¬ÐøµØÖ´ÐÐÓï¾ä£»¶àÓÃÔÚ¡°initial¡±¿éÖУ¬ÒÔÉú³ÉʱÖÓµÈÖÜÆÚÐÔ²¨ÐΡ£ £¨2£©repeat£ºÁ¬ÐøÖ´ÐÐÒ»ÌõÓï¾än´Î¡£

£¨3£©while£ºÖ´ÐÐÒ»ÌõÓï¾äÖ±µ½Ä³¸öÌõ¼þ²»Âú×ã¡£ £¨4£©for£ºÓÐÌõ¼þµÄÑ­»·Óï¾ä¡£ p69

forÓï¾ä

forÓï¾äµÄʹÓøñʽÈçÏ£¨Í¬CÓïÑÔ£©£º

for£¨±í´ïʽ1£»±í´ïʽ2£»±í´ïʽ3£©Óï¾ä£»

¼´£ºfor£¨Ñ­»·±äÁ¿¸³³õÖµ£»Ñ­»·½áÊøÌõ¼þ£»Ñ­»·±äÁ¿ÔöÖµ£©Ö´ÐÐÓï¾ä£» p70

7.6 ±àÒëָʾÓï¾ä

VerilogÔÊÐíÔÚ³ÌÐòÖÐʹÓÃÌØÊâµÄ±àÒëÏòµ¼£¨Compiler Directives£©Óï¾ä£¬ÔÚ±àÒëʱ£¬Í¨³£ÏȶÔÕâЩÏòµ¼Óï¾ä½øÐС°Ô¤´¦Àí¡±£¬È»ºóÔÙ½«Ô¤´¦ÀíµÄ½á¹ûºÍÔ´³ÌÐòÒ»Æð½øÐбàÒë¡£

Ïòµ¼Óï¾äÒÔ·ûºÅ¡°`¡±¿ªÍ·£¬ÒÔÇø±ðÓÚÆäËüÓï¾ä¡£VerilogÌṩÁËÊ®¼¸Ìõ±àÒëÏòµ¼Óï¾ä£¬È磺`define¡¢`ifdef¡¢`else¡¢`endif¡¢`restallµÈ¡£±È½Ï³£ÓõÄÓÐ`define£¬`includeºÍ`ifdef¡¢`else¡¢`endifµÈ¡£ p71

ºêÌæ»»`define

`defineÓï¾äÓÃÓÚ½«Ò»¸ö¼òµ¥µÄÃû×Ö»ò±êÖ¾·û£¨»ò³ÆÎªºêÃû£©À´´úÌæÒ»¸ö¸´ÔÓµÄÃû×Ö»ò×Ö·û´®£¬ÆäʹÓøñʽΪ£º

`define ºêÃû£¨±êÖ¾·û£© ×Ö·û´® È磺`define sum ina+inb+inc+ind

ÔÚÉÏÃæµÄÓï¾äÖУ¬Óüòµ¥µÄºêÃûsumÀ´´úÌæÁËÒ»¸ö¸´Ôӵıí´ïʽina+inb+inc+ind£¬²ÉÓÃÁËÕâÑùµÄ¶¨ÒåÐÎʽºó£¬ÔÚºóÃæµÄ³ÌÐòÖУ¬¾Í¿ÉÒÔÖ±½ÓÓÃsumÀ´´ú±í±í´ïʽina+inb+inc+indÁË¡£ p72

Îļþ°üº¬`include

`includeÊÇÎļþ°üº¬Óï¾ä£¬Ëü¿É½«Ò»¸öÎļþÈ«²¿°üº¬µ½ÁíÒ»¸öÎļþÖС£Æä¸ñʽΪ£º `include ¡°ÎļþÃû¡±

ʹÓÃ`includeÓï¾äʱӦעÒâÒÔϼ¸µã£º

£¨1£©Ò»¸ö`includeÓï¾äÖ»ÄÜÖ¸¶¨Ò»¸ö±»°üº¬µÄÎļþ¡£

£¨2£©`includeÓï¾ä¿ÉÒÔ³öÏÖÔÚÔ´³ÌÐòµÄÈκεط½¡£±»°üº¬µÄÎļþÈôÓë°üº¬Îļþ²»ÔÚͬһ¸ö×ÓĿ¼Ï£¬±ØÐëÖ¸Ã÷Æä·¾¶Ãû¡£

£¨3£©Îļþ°üº¬ÔÊÐí¶àÖØ°üº¬£¬±ÈÈçÎļþ1°üº¬Îļþ2£¬Îļþ2ÓÖ°üº¬Îļþ3µÈ¡£ p73

7.7 ÈÎÎñÓ뺯Êý ÈÎÎñ£¨task£© ÈÎÎñ¶¨Òå¸ñʽ£º

task <ÈÎÎñÃû>£» //×¢ÒâÎÞ¶Ë¿ÚÁÐ±í ¶Ë¿Ú¼°Êý¾ÝÀàÐÍÉùÃ÷Óï¾ä£» ÆäËüÓï¾ä£» endtask ÈÎÎñµ÷ÓõĸñʽΪ£º

<ÈÎÎñÃû>£¨¶Ë¿Ú1£¬¶Ë¿Ú2£¬??£©;

ÐèҪעÒâµÄÊÇ£ºÈÎÎñµ÷ÓÃʱºÍ¶¨ÒåʱµÄ¶Ë¿Ú±äÁ¿Ó¦ÊÇÒ»Ò»¶ÔÓ¦µÄ¡£ p74

º¯ÊýµÄÄ¿µÄÊÇ·µ»ØÒ»¸öÖµ£¬ÒÔÓÃÓÚ±í´ïʽ¼ÆËã º¯ÊýµÄ¶¨Òå¸ñʽ£º

function <·µ»ØÖµÎ»¿í»òÀàÐÍ˵Ã÷> º¯ÊýÃû£» ¶Ë¿ÚÉùÃ÷£» ¾Ö²¿±äÁ¿¶¨Ò壻 ÆäËüÓï¾ä£» endfunction

<·µ»ØÖµÎ»¿í»òÀàÐÍ˵Ã÷>ÊÇÒ»¸ö¿ÉÑ¡ÏÈç¹ûȱʡ£¬Ôò·µ»ØÖµÎª1λ¼Ä´æÆ÷ÀàÐ͵ÄÊý¾Ý¡£ º¯Êý£¨function£© p75

ÈÎÎñÓ뺯ÊýµÄ±È½Ï