色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

最為常見的分頻器分4種分析

FPGA之家 ? 來源:博客園 ? 作者:super_star123 ? 2021-06-13 17:11 ? 次閱讀

分頻器是用的最廣的一種FPGA電路了,我最初使用的是crazybingo的一個任意分頻器,可以實現高精度任意分頻的一個通用模塊,他的思想在于首先指定計數器的位寬比如32位,那么這個計數器的最大值就是2^32=4294967296,

假設系統時鐘為50MHz,那么假如要想實現輸出頻率為fout,那么可以使用的頻率控制字為:

K滿足關系:

ad35649a-c5fc-11eb-9e57-12bb97331649.png,那么設計計數器在每個時鐘上升沿累加的值為K,當計數值為2^31時,clkout=1;否則clkout=0.最終即可以實現任意頻率的輸出,精度的計算方法為當K=1時,可以得到clkout=0.0116415321826934814453125Hz,也即是說可以輸出的最小頻率為0.011Hz

此外我們最為常見的分頻器分為以下4種分析:

1.偶數分頻

最簡單,要想得到分頻系數為N的頻率輸出,設定一個計數器,這個計數器從零開始加1,當加到N/2-1時計數器清零,或者clkout翻轉,以此循環,即可實現偶數倍分頻。

2.奇數分頻(分占空比不確定以及占空比50%)

方法一:分頻系數為N,占總比不確定:以三(N)分頻為例,上升沿觸發計數,計數器計數到1(N-1)/2時輸出時鐘翻轉,計數到2(N-1)時再次翻轉。代碼為產生1/11占空比為十一分頻時鐘:在計數值為9和10時均反轉時鐘,是產生抽樣脈沖的有效方法:

always @(posedge clk or posedge rst) begin

if(rst)begin //復位

cnt《=0;

clk_div11《=0;

end

elseif(cnt==9) begin

clk_div11《=~clk_div11; //時鐘翻轉

cnt《=cnt+1; //繼續計數

end

elseif(cnt==10) begin

clk_div11《=~clk_div11; //時鐘翻轉

cnt《=0; //計數清零

end

else

cnt《=cnt+1;

end

占空比50% ,則可以在上面的基礎上,加上一個下降沿觸發計數,然后將上升沿和下降沿產生的時鐘進行相或運算,即可得到奇數分頻輸出。

reg clk1;

reg[1:0]cnt1;

always@(posedge clk or posedge rst) begin

if(rst)begin //復位

cnt1《=0;

clk1《=0;

end

elseif(cnt1==1) begin

clk1《=~clk1; //時鐘翻轉

cnt1《=cnt1+1; //繼續計數

end

elseif(cnt1==2) begin

clk1《=~clk1; //時鐘翻轉

cnt1《=0; //計數清零

end

else

cnt1《=cnt1+1;

end

reg clk2;

reg[1:0]cnt2;

always@(negedge clk or posedge rst) begin

if(rst)begin //復位

cnt2《=0;

clk2《=0;

end

elseif(cnt2==1) begin

clk2《=~clk2; //時鐘翻轉

cnt2《=cnt2+1; //繼續計數

end

elseif(cnt2==2) begin

clk2《=~clk2; //時鐘翻轉

cnt2《=0; //計數清零

end

else

cnt2《=cnt2+1;

end

assign clk_div3=clk1 | clk2; //或運算

方法二:對進行奇數倍n分頻時鐘,先進行n/2分頻,然后在二分頻得到(這部分先講半整數分頻)

親測有效代碼:

module ModuloN_Cntr(input clk,rst,output clk_out);

reg [1:0]cnt1;

reg [1:0]cnt2;

reg temp1,temp2;

always@(posedge clk or negedge rst)

begin

if(~rst)

begin

cnt1《=0;

temp1《=0;

end

else

begin

if(cnt1==2)

begin

temp1《=1;

cnt1《=0;

end

else

begin

cnt1《=cnt1+1;

temp1《=0;

end

end

end

always@(negedge clk or negedge rst)

begin

if(~rst)

begin

cnt2《=0;

temp2《=0;

end

else

begin

if(cnt2==2)

begin

temp2《=1;

cnt2《=0;

end

else

begin

cnt2《=cnt2+1;

temp2《=0;

end

end

end

assign clk_out=temp1|temp2;

endmodule

仿真波形:

3.半整數分頻

半整數指的是N+0.5分頻器設計:先進行模N+1計數,計數到N時輸出時鐘賦值為1,然后當計數到0時,輸出時鐘賦值為0,因此保持計數值為N的時間為半個時鐘周期即為設計的關鍵,從中可以發現,計數器是在時鐘的上升沿計數,那么我們可以讓時鐘在計數值為N時,將計數觸發時鐘翻轉,時鐘的下降沿變為上升沿,因此計數值為0,所以每產生一個N+0.5分頻時鐘周期,觸發時鐘都要翻轉一次,以2.5分頻為例程序如下:

//異或運算

assignclk_in=clk^clk_div2;

//模3計數器

reg clk_out;

reg [1:0]cnt;

always@(posedge clk_in or posedge rst) begin

if(rst)begin //復位

cnt《=0;

clk_out《=0;

end

elseif(cnt==1) begin

clk_out《=~clk_out; //時鐘翻轉

cnt《=cnt+1; //繼續計數

end

elseif(cnt==2) begin

clk_out《=~clk_out; //時鐘翻轉

cnt《=0; //計數清零

end

else

cnt《=cnt+1;

end

//2分頻

reg clk_div2;

always@(posedge clk_out or posedge rst) begin

if(rst) clk_div2《=0; //復位

else clk_div2=~clk_div2;

end

那么5.5分頻呢:

代碼:通用的這里N=5;

module ModuloN_Cntr(clk,clk_div,temp1,temp2);//N+0.5

input clk;

output clk_div;

reg[31:0]cnt1=0;

reg[31:0]cnt2=0;

output reg temp1,temp2;

initial begin temp1=0;temp2=1;end //首先進行初始化,temp1=0;temp2=1

parameter N=5; //設定分頻系數為N+0.5

always @(posedge clk) //temp1上升沿跳變

begin

if(cnt1==2*N) //2*N

begin cnt1[31:0]《=32‘d0;end

else begin cnt1[31:0]《=cnt1[31:0]+32’d1;end

if(cnt1==32‘d0) begin temp1《=1;end //高電平時間為N+1;

if(cnt1==N+1) begin temp1《=0;end //低電平時間為N;

end

always@(negedge clk) //temp2下降沿跳變

begin

if(cnt2==2*N) //2*N

begin cnt2[31:0]《=32’d0;end

else begin cnt2[31:0]《=cnt2[31:0]+32‘d1;end

if(cnt2==32’d0) begin temp2《=0;end //低電平時間為N;

if(cnt2==N) begin temp2《=1;end //高電平時間為N+1;

end

assign clk_div=temp1&&temp2; //邏輯與

endmodule

//如果要進行N+0.5分頻

//思路:總的來說要進行N+1+N=2N+1次分頻

//在時鐘的上升沿和下降沿都進行跳變

//上升沿進行占空比為N+1比N的時鐘temp1;

//下降沿進行占空比為N比N+1的時鐘temp2;

//最后div=temp1&&temp2 即可得到所需要的半整數分頻

仿真波形:

4.任意小數分頻

小數分頻器的實現方法有很多中,但其基本原理都一樣的,即在若干個分頻周期中采取某種方法使某幾個周期多計或少計一個數,從而在整個計數周期的總體平均意義上獲得一個小數分頻比。一般而言,這種分頻由于分頻輸出的時鐘脈沖抖動很大,故在設計中的使用已經非常少。但是,這也是可以實現的。以8.7倍分頻為例,本文僅僅給出雙模前置小數分頻原理的verilog代碼及其仿真圖(如圖6),具體原理可以參考劉亞海的《基于FPGA的小數分頻器的實現》以及毛為勇的《基于FPGA的任意小數分頻器的設計》。

//8分頻

reg clk_div8;

reg[2:0]cnt_div8;

always@(posedge clk or posedge rst) begin

if(rst)begin //復位

clk_div8《=0;

cnt_div8《=0;

end

elseif(cnt_div8==3‘d7) begin

clk_div8《=1; //置1

cnt_div8《=0;

end

elseif(cnt_div8==3’d0) begin

clk_div8《=0; //置0

cnt_div8《=cnt_div8+1;

end

else

cnt_div8《=cnt_div8+1;

end

//9分頻

reg clk_div9;

reg[3:0]cnt_div9;

always@(posedge clk or posedge rst) begin

if(rst)begin //復位

clk_div9《=0;

cnt_div9《=0;

end

elseif(cnt_div9==3‘d8) begin

clk_div9《=1; //置1

cnt_div9《=0;

end

elseif(cnt_div9==3’d0) begin

clk_div9《=0; //置0

cnt_div9《=cnt_div9+1;

end

else

cnt_div9《=cnt_div9+1;

end

//控制信號

parameterDiv8Num=3;

reg ctrl;

reg[3:0]AddValue;

always@(posedge clk or posedge rst) begin

if(rst)begin //復位

ctrl《=0;

AddValue《=10-7;

end

elseif(AddValue《10) begin

ctrl《=0;

AddValue《=AddValue+Div8Num;

end

else begin

ctrl《=1;

AddValue《=AddValue-10;

end

end

//選擇輸出

reg clk_out;

always @(ctrlor posedge clk or posedge rst) begin

if(rst) clk_out《=0; //復位

elseif(ctrl) clk_out《=clk_div8;

elseclk_out《=clk_div9;

end

4、總結分頻器是FPGA的基礎,而且在FPGA邏輯電路設計的時候是經常使用的,希望大家對以上的整數倍分頻和半整數倍分頻能熟練掌握

原文標題:關于分頻器的FPGA實現整理思路

文章出處:【微信公眾號:FPGA之家】歡迎添加關注!文章轉載請注明出處。

責任編輯:haq

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • FPGA
    +關注

    關注

    1629

    文章

    21759

    瀏覽量

    604272
  • 分頻器
    +關注

    關注

    43

    文章

    447

    瀏覽量

    49987

原文標題:關于分頻器的FPGA實現整理思路

文章出處:【微信號:zhuyandz,微信公眾號:FPGA之家】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    分頻器的定義和作用

    分頻器是一電子電路或裝置,其核心功能是將輸入信號分離成多個具有不同頻率范圍的輸出信號。這些輸出信號的帶寬均小于原始輸入信號的帶寬,使得每個頻段的信號都能針對性地進行處理或應用。分頻器廣泛應用于通信、測量、音頻處理等領域,是電子
    的頭像 發表于 10-09 15:12 ?2889次閱讀

    UPB586B分頻器規格書

    電子發燒友網站提供《UPB586B分頻器規格書.pdf》資料免費下載
    發表于 09-30 14:34 ?0次下載

    DC/DC轉換中電阻反饋分頻器的設計考慮

    電子發燒友網站提供《DC/DC轉換中電阻反饋分頻器的設計考慮.pdf》資料免費下載
    發表于 08-26 14:52 ?0次下載
    DC/DC轉換<b class='flag-5'>器</b>中電阻反饋<b class='flag-5'>分頻器</b>的設計考慮

    CDCE906 PLL頻率合成器/乘法器/分頻器數據表

    電子發燒友網站提供《CDCE906 PLL頻率合成器/乘法器/分頻器數據表.pdf》資料免費下載
    發表于 08-22 09:30 ?0次下載
    CDCE906 PLL頻率合成器/乘法器/<b class='flag-5'>分頻器</b>數據表

    LMK01000高性能時鐘緩沖分頻器和分配器數據表

    電子發燒友網站提供《LMK01000高性能時鐘緩沖分頻器和分配器數據表.pdf》資料免費下載
    發表于 08-21 09:53 ?0次下載
    LMK01000高性能時鐘緩沖<b class='flag-5'>器</b>、<b class='flag-5'>分頻器</b>和分配器數據表

    CDCM6208V2G具有小數分頻器的2:8時鐘發生/抖動消除數據表

    電子發燒友網站提供《CDCM6208V2G具有小數分頻器的2:8時鐘發生/抖動消除數據表.pdf》資料免費下載
    發表于 08-20 09:14 ?0次下載
    CDCM6208V2G具有小數<b class='flag-5'>分頻器</b>的2:8時鐘發生<b class='flag-5'>器</b>/抖動消除<b class='flag-5'>器</b>數據表

    具有小數分頻器的CDCM6208 2:8時鐘生成器/抖動消除數據表

    電子發燒友網站提供《具有小數分頻器的CDCM6208 2:8時鐘生成器/抖動消除數據表.pdf》資料免費下載
    發表于 08-20 09:07 ?0次下載
    具有小數<b class='flag-5'>分頻器</b>的CDCM6208 2:8時鐘生成器/抖動消除<b class='flag-5'>器</b>數據表

    PE35400高性能超CMOS預分頻器英文手冊

    電子發燒友網站提供《PE35400高性能超CMOS預分頻器英文手冊.pdf》資料免費下載
    發表于 07-31 13:21 ?0次下載

    ESP8266EX PWM時鐘預分頻器可以修改嗎?

    ESP8266EX文件表明最大PWM頻率為1Khz。我需要 20Khz 到 100Khz。PWM時鐘預分頻器可以修改嗎? 我對Delta_Sigma硬件有同樣的問題。
    發表于 07-19 10:53

    一個簡單的分頻器電路分享

    這是一個簡單的分頻器電路,該電路的優點是電路小,它僅使用晶體管和其他幾個組件。
    的頭像 發表于 06-10 15:55 ?1474次閱讀
    一個簡單的<b class='flag-5'>分頻器</b>電路分享

    CMOS24級分頻器CD4521B TYPES數據表

    電子發燒友網站提供《CMOS24級分頻器CD4521B TYPES數據表.pdf》資料免費下載
    發表于 05-22 09:47 ?0次下載
    CMOS24級<b class='flag-5'>分頻器</b>CD4521B TYPES數據表

    CMOS十進計數/分頻器CD4026B CD4033B TYPES數據表

    電子發燒友網站提供《CMOS十進計數/分頻器CD4026B CD4033B TYPES數據表.pdf》資料免費下載
    發表于 05-21 09:16 ?0次下載
    CMOS十進計數<b class='flag-5'>器</b>/<b class='flag-5'>分頻器</b>CD4026B CD4033B TYPES數據表

    CMOS計數/分頻器CD4017B CD4022B TYPES 數據表

    電子發燒友網站提供《CMOS計數/分頻器CD4017B CD4022B TYPES 數據表.pdf》資料免費下載
    發表于 05-20 10:20 ?1次下載
    CMOS計數<b class='flag-5'>器</b>/<b class='flag-5'>分頻器</b>CD4017B CD4022B TYPES 數據表

    分頻器的作用 分頻器的功率是不是越大越好

    分頻器是一電子設備,用于將輸入信號分成不同頻率的輸出信號。其主要作用是將原始輸入信號分離成多個頻率范圍內的信號,以供不同的電路進行處理。分頻器廣泛應用于通信、測量和音頻系統中。 分頻器
    的頭像 發表于 02-01 11:19 ?3609次閱讀

    CAN時鐘分頻器在CANbus模塊上不執行任何操作的原因?

    我一直在使用 dsPIC33CH128MP506 進行一些 CANbus 通信。 它能夠進行CAN-FD,并且有兩個獨立的波特率分頻器,用于標稱波特率和數據波特率。它們是:C1NBTCFGH 內
    發表于 01-22 06:36
    主站蜘蛛池模板: 啊…嗯啊好深男男高h文总受| 青青草原伊人网| 中文字幕欧美一区| 帅哥操帅哥| 美女裸露100%奶头视频| 国产学生无码中文视频一区| caoporn免费视频在线| 亚洲免费国产在线日韩| 肉动漫无码无删减在线观看| 久久综合老色鬼网站| 国产学生无码中文视频一区| 超碰最新地址| 99久久国产综合精品| 一级毛片皇帝 宫女| 午夜亚洲WWW湿好爽| 肉蒲团从国内封禁到日本成经典| 蜜臀色欲AV无人A片一区| 精品国产乱码久久久久久人妻| 夫妻日本换H视频| 99免费在线| 18禁止看的免费污网站| 亚洲三级在线视频| 亚洲国产成人精品无码区5566 | 老师真棒无遮瑕版漫画免费| 国产在线精品视频二区| 国产精品久久久久久久人热| 春药按摩人妻中文字幕| xfplay 无码专区 亚洲| 70岁妇女牲交色牲片| 中文字幕乱码一区AV久久| 一抽一出BGM免费50分动漫| 亚洲精品黄色| 无码AV精品久久一区二区免费| 欧美午夜a级精美理论片| 你是淫荡的我的女王| 鲁大师影院在线视频在线观看| 久久精品视频在线看15| 久久电影午夜| 久久青青草原| 久久视热频这里只精品| 老湿机一区午夜精品免费福利 |