»ùÓÚfpgaµÄ¸ß¶¯Ì¬Èý½×ËøÏà»·Éè¼Æ ÏÂÔØ±¾ÎÄ

3.5 N·ÖƵÆ÷µÄÉè¼Æ

N·ÖƵÆ÷ÔòÊÇÒ»¸ö¼òµ¥µÄ³ýN¼ÆÊýÆ÷¡£N·ÖƵÆ÷¶ÔÂö³å¼Ó¼õµç·µÄÊä³öÂö³åÔÙ½øÐÐN·ÖƵ£¬µÃµ½Õû¸ö»·Â·µÄÊä³öÐźÅfout¡£Í¬Ê±£¬ÒòΪfout=clk/2N=fc£¬Òò´Ëͨ¹ý¸Ä±ä·ÖƵֵN¿ÉÒԵõ½²»Í¬µÄ»·Â·ÖÐÐÄÆµÂÊfc¡£³ýN¼ÆÊýÆ÷¶ÔÂö³å¼Ó¼õµç·µÄÊä³öIDOUTÔÙ½øÐÐN·ÖƵ£¬µÃµ½Õû¸ö»·Â·µÄÊä³öÐźÅFout¡£Í¬Ê±£¬ÒòΪfc=IDCLOCK/2N£¬Òò´Ëͨ¹ý¸Ä±ä·ÖƵֵN¿ÉÒԵõ½²»Í¬µÄ»·Â·ÖÐÐÄÆµÂÊfc¡£

N·ÖƵÆ÷Ä£¿é¶Ë¿ÚÉè¼ÆÊ²Ã´ÈçÏ£º

module div_N (clkin,n,reset,clkout); //N·ÖƵģ¿é input clkin,reset; input [14:0] n; output clkout;

N·ÖƵÆ÷Ä£¿é·ÂÕæÈçÏ£º

ͼ3.9 ÊäÈë·ÖƵ±¶ÊýΪn=10ʱµÄÊä³ö²¨ÐÎͼ

ͼ3.10 ÊäÈë·ÖƵ±¶ÊýΪn=20ʱµÄÊä³ö²¨ÐÎͼ

- 16 -

ͼ3.11 ÊäÈë·ÖƵ±¶ÊýΪn=50ʱµÄÊä³ö²¨ÐÎͼ

3.6 ÊýÄ£DACת»»Ä£¿éµÄÉè¼Æ

ÕâÀïʹÓÃÊýģת»»Ä£¿éÊÇΪÁËÔÚ·ÂÕæ¹ý³Ì¸üºÃµÄÖ±¹ÛµÄ¹Û²ìËøÏàµÄÇé¿ö¡£°ÑÊäÈëÐźźÍÊä³öÐźŶ¼¾­¹ýÒ»¸öÊýģת»»Ä£¿é£¬È»ºóÓþ­¹ýÈí¼þµÄÉèÖÿÉÒÔ¿´µ½ÕýÏÒ²¨µÄͼÐΣ¬»òÕß¿ÉÒÔͨ¹ýʾ²¨Æ÷À´¿´Í¼ÐΡ£ÕâÑù¿ÉÒÔ±íÕ÷Á½¸öÐÅºÅµÄÆµÂʺÍÏàλµÄ²î¡£

ÊýÄ£DACת»»Ä£¿é¶Ë¿ÚÉè¼ÆËµÃ÷ÈçÏ£º module dac (clk,dout,dd); //Êýģת»»Ä£¿é input clk; //ÊäÈëת»»µÄÐźŠoutput[7:0] dout; //λ¿íΪ°ËλµÄÊä³ö output[7:0] dd; reg [7:0] dout; reg [7:0] dd;

ÊýÄ£DACת»»Ä£¿é·ÂÕæÈçÏ£º

¿ÉÒÔ¿´µ½clk¾­¹ýdacÄ£¿é¿ÉÒÔÓÃÕýÏÒ²¨À´ÏÔʾ£¬ÈçÏÂͼ2.12

ͼ3.12 ÊäÈë·ÖƵ±¶ÊýΪn=50ʱµÄÊä³ö²¨ÐÎͼ

- 17 - 3.7 Èý½×ËøÏà»·µÄ¶¥²ãÄ£¿é

Èý½×ËøÏà»·µÄ¶¥²ãÄ£¿éÖ÷ÒªÊǰÑÇ°ÃæÉè¼ÆµÄ¼¸¸öÄ£¿éÁ¬½ÓÆðÀ´¡£Èý½×ËøÏà»·¶¥²ãÄ£¿é¶Ë¿ÚÉè¼ÆÈçÏ£º

module pll_top(fin,fout,se,clk,reset,enable,Kmode,fin_dac,fout_dac); input fin,clk; //ÊäÈëclkʱÖÓÖÜÆÚ100ns(10Mhz£© input reset,enable; //reset¸ßµçƽ¸´Î»£¬enable¸ßµçƽÓÐЧ input [2:0]Kmode; //Â˲¨¼ÆÊýÆ÷µÄ¼ÆÊýÄ£ÖµÉ趨 output fout; //foutÊÇËøÆµËøÏàÊä³ö output [7:0]fin_dac,fout_dac;

//fin_dac,fout_dac·Ö±ðÊÇÁ½¸öÊäÈëÊä³öÐźž­¹ýÊýÄ£dacµÄÊä³ö output se; //ÓÃÓÚ¹Û²ìËøÏàÓë·ñ ¶¥²ãÎļþ³ÌÐòÉú³ÉµÄÁ¬½ÓÈçͼ2.13£º

ͼ3.13 Èý½×ËøÏà»·µÄ¶¥²ãÁ¬½Óͼ

- 18 - µÚËÄÕ Èý½×ËøÏà»··ÂÕæ

4.1 Èý½×ËøÏà»·µÄ¹¦ÄÜ·ÂÕæ

ÀûÓÃÒµ½çÇ¿´óµÄModelSim6.0Èí¼þ½øÐй¦ÄÜ·ÂÕæ£º

ͼ4.1 Èý½×ËøÏà»·¹¦ÄÜ·ÂÕæ½á¹û

ͼ4.2 Èý½×ËøÏà»·¹¦ÄÜ·ÂÕæ½á¹û

ÉÏÃæÍ¼3.1ºÍͼ3.2·Ö±ðÊÇ´Ó²»Í¬µÄ±ä»¯µÄfinÊäÈëÆµÂʵķÂÕæ£¬¸ù¾Ý²¨ÐοÉÒÔ¿´µ½foutƵÂÊÄܹ»¸úËæfinÊäÈëµÄ±ä»¯¡£ 4.2 Èý½×ËøÏà»·µÄʱÐò·ÂÕæ

ÔÚʱÐò·ÂÕæÇ°£¬ÏÈÀûÓÃQuartusII7.2Èí¼þ±àÒëÈçÏÂͼÊDZàÒëµÄ±¨¸æ£¬´Ó¸ø³öµÄ±àÒë½á

- 19 -