資源描述:
《實用設計一:分頻器的設計.ppt》由會員上傳分享,免費在線閱讀,更多相關內容在教育資源-天天文庫。
1、第五講分頻器設計實驗目的熟悉QUARTUSII軟件的使用方法,并熟悉FPGA的設計流程。VHDL語言設計其邏輯功能。在數字電路中,常需要對較高頻率的時鐘進行分頻操作,得到較低頻率的時鐘信號。我們知道,在硬件電路設計中時鐘信號時非常重要的。??下面我們介紹分頻器的VHDL描述,在源代碼中完成對時鐘信號CLK的2分頻,4分頻,8分頻,16分頻。LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_ARITH.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;E
2、NTITYclkdivISPORT(clk:INSTD_LOGIC;clk_div2:OUTSTD_LOGIC;clk_div4:OUTSTD_LOGIC;clk_div8:OUTSTD_LOGIC;clk_div16:OUTSTD_LOGIC);ENDclk_div;ARCHITECTURErtlOFclk_divISSIGNALcount:STD_LOGIC_VECTOR(3DOWNTO0);BEGINPROCESS(clk)BEGINIF(clk’eventANDclk=’1’)THENIF(count=”1111”)THENCo
3、unt<=(OTHERS=>’0’);ELSECount<=count+1;ENDIF;ENDIF;ENDPROCESS;clk_div2<=count(0);clk_div4<=count(1);clk_div8<=count(2);clk_div16<=count(3);ENDrtl;對于分頻倍數不是2的整數次冪的情況,我們只需要對源代中的計數器進行一下計數控制就可以了,如下面源代碼描述一個對時鐘信號進行6分頻的分頻器。ENTITYclkdivISPORT(clk:INSTD_LOGIC;clk_div6:OUTSTD_LOGIC)
4、;ENDclk_div;ARCHITECTURErtlOFclk_divISSIGNALcount:STD_LOGIC_VECTOR(1DOWNTO0);SIGNALclk_temp:STD_LOGIC;BEGINPROCESS(clk)BEGINIF(clk’eventANDclk=’1’)THENIF(count=”10”)THENcount<=(OTHERS=>’0’);clk_temp<=NOTclk_temp;ELSEcount<=count+1;ENDIF;ENDIF;ENDPROCESS;clk_div6<=clk_tem
5、p;ENDrtl;前面兩個分頻器的例子描述的將時鐘信號進行分頻,分頻后得到的時鐘信號的占空比為1:1。在進行硬件設計的時候,往往要求得到一個占空比不是1:1的分頻信號,這時仍采用計數器的方法來產生占空比不是1:1的分頻信號。下面源代碼描述的是這樣一個分頻器:將輸入的時鐘信號進行16分頻,分頻信號的占空比為1:15,也就是說,其中高電位的脈沖寬度為輸入時鐘信號的一個周期。LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_ARITH.ALL;USEIEEE.STD_LOGIC_
6、UNSIGNED.ALL;ENTITYclkdivISPORT(clk:INSTD_LOGIC;clk_div16:OUTSTD_LOGIC);ENDclk_div;ARCHITECTURErtlOFclk_divISSIGNALcount:STD_LOGIC_VECTOR(3DOWNTO0);BEGINPROCESS(clk)BEGINIF(clk’eventANDclk=’1’)THENIF(count=”1111”)THENCount<=(OTHERS=>’0’);ELSECount<=count+1;ENDIF;ENDIF;EN
7、DPROCESS;PROCESS(clk)BEGINIF(clk’eventANDclk=’1’)THENIF(count=”1111”)THENClk_div16<=‘1’;ELSEClk_div<=‘0’;ENDIF;ENDIF;ENDPROCESS;ENDrtl;實驗:利用自行給定輸入時鐘,然后進行12分頻和9分頻等。通過波形仿真觀察是否為12分頻和9分頻。