基于Verilog的分頻器設(shè)計_第1頁
基于Verilog的分頻器設(shè)計_第2頁
基于Verilog的分頻器設(shè)計_第3頁
基于Verilog的分頻器設(shè)計_第4頁
免費預(yù)覽已結(jié)束,剩余1頁可下載查看

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、分頻器是指使輸出信號頻率為輸入信號頻率整數(shù)分之一的電子電路.在許多電子設(shè)備中如電子鐘、頻率合成器等,需要各種不同頻率的信號協(xié)同工作,常用的方法是以穩(wěn) 定度高的晶體振蕩器為主振源,通過變換得到所需要的各種頻率成分,分頻器是一種主 要變換手段.早期的分頻器多為正弦分頻器,隨著數(shù)字集成電路的開展,脈沖分頻器(又稱數(shù)字分頻器)逐漸取代了正弦分頻器.下面以 Verilog HDL?語言為根底介紹占空 比為50%勺分頻器.1?偶分頻偶分頻比擬簡單,假設(shè)為N分頻,只需計數(shù)到N/2-1,然后時鐘翻轉(zhuǎn)、計數(shù)清零, 如此循環(huán)就可以得到N (偶)分頻.代碼如下.module fp_even(clk_out,clk_

2、in,rst);output clk_out;input clk_in;input rst;reg 1:0 cnt;reg clk_out;parameter N=6;always (posedge clk_in or negedge rst)beginif(!rst)?begin?cnt<= 0;?clk_out <= 0;?endelse begin?if(cnt=N/2-1)?begin clk_out <= !clk_out; cnt<=0; end?else?cnt <= cnt + 1;?endendendmodule可以通過改變參量N的值和計數(shù)變量c

3、nt的位寬實現(xiàn)任意偶分頻.偶分頻(N= 6)的RTL原理圖:偶分頻(N= 6)的行為仿真結(jié)果:2?奇分頻?實現(xiàn)奇數(shù)(ND分頻,分別用上升沿計數(shù)到(N-1)/2 ,再計數(shù)到N-1;用下降沿計數(shù) 到(N-1)/2 ,再計數(shù)到N-1,得到兩個波形,然后把它們相或即可得到N分頻.代碼如下:module fp_odd(clk_out,clk_p,clk_n,clk_in,rst);output clk_out;output clk_p,clk_n;input clk_in,rst;reg 2:0 cnt_p,cnt_n;reg clk_p,clk_n;parameter N=5;always (pose

4、dge clk_in or negedge rst)begin?if(!rst)?cnt_p <= 0;?else?if(cnt_p=N-1)?cnt_p <=0;?else cnt_p <= cnt_p + 1; endalways (posedge clk_in or negedge rst)begin?if(!rst) clk_p <= 0;?else if(cnt_p=(N-1)/2)?clk_p <= !clk_p;?else if(cnt_p=N-1)?clk_p <= !clk_p;endalways (negedge clk_in or ne

5、gedge rst)begin?if(!rst)?cnt_n <= 0;?else?if(cnt_n=N-1)?cnt_n <=0;?else cnt_n <= cnt_n + 1;endalways (negedge clk_in or negedge rst)begin?if(!rst) clk_n <= 0;?else if(cnt_n=(N-1)/2)?clk_n <= !clk_n;?else if(cnt_n=N-1)?clk_n <= !clk_n;endassign clk_out = clk_p | clk_n;endmoduleRTL S

6、chematic:Simulate Behavioral Model:同理,可以通過改變參量 N的值和計數(shù)變量cnt_p和cnt_n的位寬實現(xiàn)任意奇分頻. 3?任意占空比的任意分頻在verilog程序設(shè)計中,我們往往要對一個頻率進行任意分頻,而且占空比也有一 定的要求這樣的話,對于程序有一定的要求,現(xiàn)在在前面兩個實驗的根底上做一個簡單 的總結(jié),實現(xiàn)對一個頻率的任意占空比的任意分頻.比方:?FPG碌統(tǒng)時鐘是50M Hz,而我們要產(chǎn)生的頻率是880Hz,那么,我們需要對 系統(tǒng)時鐘進行分頻.很容易想到用計數(shù)的方式來分頻:.顯然這個數(shù)字不是2的整幕次方,那么我們可以設(shè)定一個參數(shù),讓它到56818的時候

7、重新計數(shù)就可以實現(xiàn)了.程序如下:module div(clk, clk_div);input clk;output clk_div;reg 15:0 counter;always (posedge clk)if(counter=56817) counter <= 0;assign clk_div = counter15;endmodule分頻的應(yīng)用很廣泛,一般的做法是先用高頻時鐘計數(shù),然后使用計數(shù)器的某一位輸 出作為工作時鐘進行其他的邏輯設(shè)計,上面的程序就是一個表達.下面我們來算一下它的占空比:我們清楚地知道,這個輸出波形在 counter為0到 32767的時候為低,在32768到56

8、817的時候為高,占空比為40胸一些,如果我們需要 占空比為50%那么我們需要再設(shè)定一個參數(shù),使它為 56817的一半,使到達它的時候 波形翻轉(zhuǎn),就可以實現(xiàn)結(jié)果了.程序如下:module div(clk, clk_div);input clk;output clk_div;reg 14:0 counter;always (posedge clk)if(counter=28408) counter <= 0;else counter <= counter+1;reg clk_div;always (posedge clk)?if(counter=28408) clk_div <

9、= clk_div;endmodule繼續(xù)讓我們來看如何實現(xiàn)任意占空比,比方還是由50 M分頻產(chǎn)生880Hz,而分頻得到的信號的占空比為30%56818X 30%=17045module div(clk,reset,clk_div,counter);input clk,reset;output clk_div;output 15:0 counter;reg 15:0 counter;reg clk_div;always (posedge clk)if(!reset) counter <= 0;else if(counter=56817) counter <= 0;always (posedge clk)if(!reset) clk_div <= 0;else if(counter<17045) clk_div <= 1;else clk_

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論