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

»ùÓÚQuartus II½øÐÐEDAÉè¼Æ¿ª·¢µÄÁ÷³Ì p26

Éè¼ÆÒ»¸ö°ë¼ÓÆ÷

p27

Éè¼ÆÒ»¸öÈ«¼ÓÆ÷

Á¬½ÓºÃµÄÈ«¼ÓÆ÷Ô­Àíͼf_adder.bdf

ϰ Ìâ

3-1 »ùÓÚQuartus IIÈí¼þ£¬ÓÃD´¥·¢Æ÷Éè¼ÆÒ»¸ö2·ÖƵµç·£¬²¢×ö²¨ÐηÂÕæ£¬ÔÚ´Ë»ù´¡ÉÏ£¬Éè¼ÆÒ»¸ö4·ÖƵºÍ8·ÖƵµç·£¬×ö²¨ÐηÂÕæ¡£ ¡£ 3-2 »ùÓÚQuartus IIÈí¼þ£¬ÓÃ7490Éè¼ÆÒ»¸öÄܼÆÊ±£¨12Сʱ£©¡¢¼Æ·Ö£¨60·Ö£©ºÍ¼ÆÃ루60Ã룩µÄ¼òµ¥Êý×ÖÖӵ緡£Éè¼Æ¹ý³ÌÈçÏ£º

£¨1£©ÏÈÓÃQuartus IIµÄÔ­ÀíͼÊäÈ뷽ʽ£¬ÓÃ7490Á¬½Ó³É°üº¬½øÎ»Êä³öµÄÄ£60µÄ¼ÆÊýÆ÷£¬²¢½øÐзÂÕæ£¬Èç¹û¹¦ÄÜÕýÈ·£¬Ôò½«ÆäÉú³ÉÒ»¸ö²¿¼þ£»

£¨2£©½«7490Á¬½Ó³ÉÄ£12µÄ¼ÆÊýÆ÷£¬½øÐзÂÕæ£¬Èç¹û¹¦ÄÜÕýÈ·£¬Ò²½«ÆäÉú³ÉÒ»¸ö²¿¼þ£» £¨3£©½«ÒÔÉÏÁ½¸ö²¿¼þÁ¬½Ó³ÉΪ¼òµ¥µÄÊý×ÖÖӵ緣¬ÄܼÆÊ±¡¢¼Æ·ÖºÍ¼ÆÃ룬¼ÆÂú12СʱºóϵͳÇå0ÖØÐ¿ªÊ¼¼ÆÊ±¡£

£¨4£©ÔÚʵÏÖÉÏÊö¹¦ÄܵĻù´¡ÉÏ¿ÉÒÔ½øÒ»²½Ôö¼ÓÆäËü¹¦ÄÜ£¬±ÈÈçУʱ¹¦ÄÜ£¬ÄÜËæÒâµ÷ÕûСʱ¡¢·ÖÖÓÐźţ¬Ôö¼ÓÕûµã±¨Ê±¹¦Äܵȡ£

µÚ4Õ »ùÓں깦ÄÜÄ£¿éµÄÉè¼Æ

8λÓзûºÅ³Ë·¨Æ÷µç· ¹¦ÄÜ·ÂÕæ²¨ÐÎ p31

Ä£24·½Ïò¿É¿Ø¼ÆÊýÆ÷µç·

lpm_counter¼ÆÊýÆ÷¹¦ÄÜ·ÂÕæ²¨ÐÎ

ËøÏà»·µç·

¹¦ÄÜ·ÂÕæ²¨ÐΠϰ Ìâ

4.1 ²ÉÓÃQuartus IIÈí¼þµÄºê¹¦ÄÜÄ£¿élpm_counterÉè¼ÆÒ»¸öģΪ60µÄ¼Ó·¨¼ÆÊýÆ÷£¬½øÐбàÒëºÍ·ÂÕæ£¬²é¿´·ÂÕæ½á¹û¡£

4.2 ²ÉÓÃQuartus IIÈí¼þµÄºê¹¦ÄÜÄ£¿élpm_rom£¬Óòé±íµÄ·½Ê½Éè¼ÆÒ»¸öʵÏÖÁ½¸ö8λÎÞ·ûºÅÊý¼Ó·¨µÄµç·£¬²¢½øÐбàÒëºÍ·ÂÕæ¡£

4.3 ÏÈÀûÓÃLPM_ROMÉè¼Æ4λ¡Á4λºÍ8λ¡Á8λ³Ë·¨Æ÷¸÷Ò»¸ö£¬È»ºóÓÃVerilogÓïÑÔ·Ö±ðÉè¼Æ4λ¡Á4λºÍ8λ¡Á8λ³Ë·¨Æ÷£¬±È½ÏÁ½Àà³Ë·¨Æ÷µÄÔËÐÐËٶȺÍ×ÊÔ´ºÄÓÃÇé¿ö¡£

4.4 ÓÃÊý×ÖËøÏ໷ʵÏÖ·ÖÆµ£¬¼Ù¶¨ÊäÈëʱÖÓÆµÂÊΪ10MHz£¬ÏëÒªµÃµ½6MHzµÄʱÖÓÐźţ¬ÊÔÓÃaltpllºê¹¦ÄÜÄ£¿éʵÏָõç·¡£

µÚ5Õ Verilog HDLÉè¼Æ³õ²½

5.2 VerilogÉè¼Æ¾ÙÀý

¡¾Àý1¡¿4λȫ¼ÓÆ÷

module adder4(cout,sum,ina,inb,cin); output[3:0] sum; output cout;

input[3:0] ina,inb; input cin;

assign {cout,sum}=ina+inb+cin; endmodule p36

Verilog³ÌÐòµÄÌØµã

£¨1£©Verilog³ÌÐòÊÇÓÉÄ£¿é¹¹³ÉµÄ¡£Ã¿¸öÄ£¿éµÄÄÚÈݶ¼Ç¶ÔÚmoduleºÍendmoduleÁ½¸ö¹Ø¼ü×ÖÖ®¼ä£»Ã¿¸öÄ£¿éʵÏÖÌØ¶¨µÄ¹¦ÄÜ£»Ä£¿éÊÇ¿ÉÒÔ½øÐвã´ÎǶÌ׵ġ£

£¨2£©Ã¿¸öÄ£¿éÊ×ÏÈÒª½øÐж˿ڶ¨Ò壬²¢ËµÃ÷ÊäÈëºÍÊä³ö¿Ú(input¡¢output»òinout)£¬È»ºó¶ÔÄ£¿é¹¦ÄܽøÐÐÃèÊö¡£

£¨3£©Verilog³ÌÐòÊéд¸ñʽ×ÔÓÉ£¬Ò»ÐпÉÒÔд¼¸¸öÓï¾ä£¬Ò»¸öÓï¾äÒ²¿ÉÒÔ·Ö¶àÐÐд¡£ £¨4£©³ýÁËendmoduleµÈÉÙÊýÓï¾äÍ⣬ÿ¸öÓï¾äµÄ×îºó±ØÐëÓзֺš£

£¨5£©¿ÉÒÔÓà /*??*/ ºÍ //?? ¶ÔVerilog³ÌÐò×÷×¢ÊÍ¡£ºÃµÄÔ´³ÌÐò¶¼Ó¦µ±¼ÓÉϱØÒªµÄ×¢ÊÍ£¬ÒÔÔöÇ¿³ÌÐòµÄ¿É¶ÁÐԺͿÉά»¤ÐÔ¡£ p37

Verilog Ä£¿éµÄÄ£°å

module <¶¥²ãÄ£¿éÃû> (<ÊäÈëÊä³ö¶Ë¿ÚÁбí>); output Êä³ö¶Ë¿ÚÁбí; //Êä³ö¶Ë¿ÚÉùÃ÷ input ÊäÈë¶Ë¿ÚÁбí; //ÊäÈë¶Ë¿ÚÉùÃ÷ /*¶¨ÒåÊý¾Ý£¬ÐźŵÄÀàÐÍ£¬º¯ÊýÉùÃ÷*/ reg ÐźÅÃû£» //Âß¼­¹¦Äܶ¨Òå

assign <½á¹ûÐźÅÃû>=<±í´ïʽ>£» //ʹÓÃassignÓï¾ä¶¨ÒåÂß¼­¹¦ÄÜ //ÓÃalways¿éÃèÊöÂß¼­¹¦ÄÜ always @ (<Ãô¸ÐÐźűí´ïʽ>) begin

//¹ý³Ì¸³Öµ

//if-else£¬caseÓï¾ä

//while£¬repeat£¬forÑ­»·Óï¾ä //task£¬functionµ÷Óà end

//µ÷ÓÃÆäËûÄ£¿é

<µ÷ÓÃÄ£¿éÃûmodule_name > <Àý»¯Ä£¿éÃû> (<¶Ë¿ÚÁбíport_list >); //ÃÅÔª¼þÀý»¯

ÃÅÔª¼þ¹Ø¼ü×Ö <Àý»¯ÃÅÔª¼þÃû> (<¶Ë¿ÚÁбíport_list>); endmodule p38

ϰ Ìâ

5.1 ÓÃVerilogÉè¼ÆÒ»¸ö8λ¼Ó·¨Æ÷£¬²¢½øÐÐ×ۺϺͷÂÕæ£¬²é¿´×ۺϽá¹ûºÍ·ÂÕæ½á¹û¡£ 5.2 ÓÃVerilogÉè¼ÆÒ»¸ö8λ¼ÆÊýÆ÷£¬²¢½øÐÐ×ۺϺͷÂÕæ£¬²é¿´×ۺϽá¹ûºÍ·ÂÕæ½á¹û¡£