資源描述:
《基于verilog的分頻器設(shè)計》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在工程資料-天天文庫。
1、分頻器是指使輸出信號頻率為輸入信號頻率整數(shù)分之一的電子電路。在許多電子設(shè)備中如電子鐘、頻率合成器等,需要各種不同頻率的信號協(xié)同工作,常用的方法是以穩(wěn)定度高的晶體振蕩器為主振源,通過變換得到所需要的各種頻率成分,分頻器是一種主要變換手段。早期的分頻器多為正弦分頻器,隨著數(shù)字集成電路的發(fā)展,脈沖分頻器(又稱數(shù)字分頻器)逐漸取代了正弦分頻器。下面以VerilogHDL語言為基礎(chǔ)介紹占空比為50%的分頻器。1偶分頻偶分頻比較簡單,假設(shè)為N分頻,只需計數(shù)到N/2-1,然后吋鐘翻轉(zhuǎn)、計數(shù)清零,如此循環(huán)就可以得到N(偶)分頻。代碼如下。modulefpeven(clko
2、ut,clkin,rst);outputclkout;inputelkin;inputrst;reg[1:0]ent;regclk_out;parameterN=6;always@(posedgeclk_inornegedgerst)beginif(!rst)beginent〈二0;clk_out〈二0;endelsebeginif(cnt=N/2-l)beginclk_out<=!clk_out;cnt<=0;endelseent<=ent+1;endendendmodule可以通過改變參量N的值和計數(shù)變量ent的位寬實現(xiàn)任意偶分頻。偶分頻(N=6)的R
3、TL原理圖:偶分頻(N=6)的行為仿真結(jié)果:2奇分頻實現(xiàn)奇數(shù)(N)分頻,分別用上升沿計數(shù)到(N-l)/2,再計數(shù)到N-1;用下降沿計數(shù)到(N-1)/2,再計數(shù)到N-1,得到兩個波形,然后把它們相或即可得到N分頻。代碼如下:modulefp_odd(clk_out,clk_p,elk_n,clk_in,rst);outputclkout;outputclk_p,clk_n;inputclk_in,rst;reg[2:0]cnt_p,cnt_n;regclk_p,clkn;parameterN=5;always@(posedgeclk_inornegedger
4、st)beginif(!rst)cnt_p<=0;cnt_p<=0;elseif(cnt_p==N-l)elsecnt_p<=cnt_p+1;endalwaysbegin@(posedgeclk_inornegedgerst)if(!rst)clkp<=0;elseif(ent_p==(N~l)/2)clk_p〈二!clk_p;elseif(cnt_p二二NT)clk_p<=!clk_p;endalwaysbegin@(negedgeclk_inornegedgerst)if(!rst)entn<=0;elseif(cnt_n二二NT)cnt_n<=0;e
5、lseentn<=entn+1;endalwaysbegin@(negedgeclk_inornegedgerst)if(!rst)clk_n<=0;elseif(cnt_n二二(NT)/2)elk_n<=!clk_n;elseif(cnt_n二二NT)elkn<=!clkn;endclk_n;assignclk_out=clk_pendmoduleRTLSchematic:SimulateBehavioralModel:ConvertimXbOOlH1500mtOOOru11111I111112006、f111a1j1LtlIHbbJL—-J.1—acf?一n下r—r"5""oro&4匚1心21;?;rumTTTTnoTTl7、方式來分頻:50000000/880=56818o顯然這個數(shù)字不是2的整幕次方,那么我們可以設(shè)定一個參數(shù),讓它到56818的時候重新計數(shù)就可以實現(xiàn)了。程序如下:modulediv(elk,clk_div);inputelk;outputclk_div;reg[15:0]counter;always?(posedgeelk)if(counter==56817)counter<=0;elsecounter<=counter+1;assignclkdiv二counter[15];cndmodulc分頻的應(yīng)用很廣泛,一般的做法是先用高頻時鐘計數(shù),然后使用計數(shù)器的某
8、一位輸岀作為工作時鐘進(jìn)行其他的邏輯設(shè)計,上面的程序就是一個體現(xiàn)。下