国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

任意分頻器電路設計

這篇具有很好參考價值的文章主要介紹了任意分頻器電路設計。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

目錄

任意分頻器電路設計

1、任意偶數(shù)分頻器電路設計

1.2、實驗任務

1.3、程序設計

1.3.1、代碼如下:

1.3.2、編寫仿真 TB 文件

2、任意奇數(shù)分頻器電路設計

2.1、實驗任務

2.2、程序設計

2.2.1、奇數(shù)分頻電路代碼

2.2.2、編寫仿真 TB 文件

2.2.3、仿真驗證


任意分頻器電路設計

1、任意偶數(shù)分頻器電路設計

? ? ? ?偶數(shù)分頻實現(xiàn)比較簡單,假設為 N(偶數(shù))分頻,只需計數(shù)到 N/2-1,然后時鐘翻轉(zhuǎn)、計數(shù)器清零,如此循環(huán)就可以得到 N(偶)分頻。舉個例子,比如晶振時鐘是 100Mhz 時鐘,想得到一個 25Mhz 的時鐘, 那么這個是一個 100/25=4 的四分頻設計,那么按照我們剛說的計數(shù)到 4/2-1=1,然后時鐘翻轉(zhuǎn)、計數(shù)器清零, 就可以得到一個 24Mhz 的時鐘。

1.2、實驗任務

使用 Verilog 語言設計一個任意偶數(shù)分頻電路,默認進行 4 分頻。

1.3、程序設計

? ? ? ?根據(jù)簡介介紹的分頻電路設計思路,假設為 N(偶數(shù))分頻,只需計數(shù)到 N/2-1,然后時鐘翻轉(zhuǎn)、計數(shù)清零,如此循環(huán)就可以得到 N(偶)分頻,可以通過改變參量 N 的值和計數(shù)變量 cnt 的位寬實現(xiàn)任意偶分頻,由于默認為 4 分頻,因此 N 初始值為 4。我們由此可以寫出如下代碼。

1.3.1、代碼如下:

//********************************************
module divide_2 
( 
    input        clk , // system clock 50Mhz on board
    input        rst_n, // system rst, low active 
    output reg   out_clk // output signal
);

parameter N = 4 ;

reg [N/2-1:0] cnt ;

//===============================================================
// ------------------------- MAIN CODE -------------------------
//===============================================================
always @ (posedge clk or negedge rst_n) begin
    if(!rst_n) begin
        cnt <= 0;
        out_clk <= 0;
    end
    else begin
        if(cnt==N/2-1) begin
        out_clk <= ~out_clk;
        cnt <= 0;
    end
    else
        cnt <= cnt + 1;
    end
end

endmodule

1.3.2、編寫仿真 TB 文件

? ? ? 只需要對時鐘以及復位信號進行激勵,代碼編寫如下:

//*************TB****************
`timescale 1ns / 1ps

module TB();

reg       sys_clk ;
reg       sys_rst_n;
wire      out_clk ;

initial begin
    sys_clk = 1'b0;
    sys_rst_n = 1'b0;
    #200
    sys_rst_n = 1'b1;
end

always #10 sys_clk = ~sys_clk;

divide_2 u_divide_2(
    .clk       (sys_clk   ),
    .rst_n     (sys_rst_n ),
    .out_clk   (out_clk   )
);

endmodule

運行后的波形如下顯示:

任意分頻器電路設計,Verilog數(shù)字電路與邏輯設計,fpga開發(fā),dsp開發(fā),嵌入式硬件,硬件工程,算法

? ? ? 可以看出,N 初始為 4,當復位撤銷(復位信號低有效)之后,cnt 即開始計數(shù),在計數(shù)器計到 1 的時候,out_clk 進行取反操作,即得到一個四分頻時鐘,大家可以改變 N 參數(shù)看下,看下 N 參數(shù)不一樣,最終分頻的時鐘是多少。

2、任意奇數(shù)分頻器電路設計

? ? ? ?有偶數(shù)分頻就有奇數(shù)分頻,僅實現(xiàn)分頻功能來講其中的差別和實現(xiàn)方式還是很大的,奇數(shù)分頻相對于偶數(shù)分頻要復雜一些,并不是簡單的用計數(shù)器計數(shù)就可以實現(xiàn)的。

? ? ? ?奇數(shù)分頻,顧名思義,是說分頻后的頻率和分頻前的頻率比例是奇數(shù),比如 100Mhz 時鐘,進行三分頻后,就是 33.33Mhz。

? ? ? ?實現(xiàn)奇數(shù)分頻原理是分別用上升沿計數(shù)到 N/2+1,分頻后輸出時鐘進行翻轉(zhuǎn),再計數(shù)到 N/2 輸出 out_clk1,再用下降沿計數(shù)到 N/2+1,分頻后輸出時鐘再進行翻轉(zhuǎn),再計數(shù)到 N/2 輸出out_clk2,將 out_clk1 和 out_clk2 相或即可。我們可以通過修改 N 的值和計數(shù)器的位寬來實現(xiàn)其他奇數(shù)分頻。 其實 out_clk1 和 out_clk2 都已經(jīng)是奇數(shù)分頻的時鐘,只不過占空比不是 50%。

? ? ? 下面在進行奇數(shù)分頻設計之前,我們先來了解下占空比的概念。占空比指的是時鐘信號在一個周期內(nèi)高電平和低電平的比例。如下是一個 50%占空比的一個時鐘波形。

任意分頻器電路設計,Verilog數(shù)字電路與邏輯設計,fpga開發(fā),dsp開發(fā),嵌入式硬件,硬件工程,算法

如下是一個 30%占空比的一個時鐘波形。

任意分頻器電路設計,Verilog數(shù)字電路與邏輯設計,fpga開發(fā),dsp開發(fā),嵌入式硬件,硬件工程,算法

? ? ? ?一般高質(zhì)量的時鐘信號都是要求有 50%占空比的,50%占空比的時鐘信號對時序分析是非常有好處的。

2.1、實驗任務

使用 Verilog 語言設計一個任意奇數(shù)分頻電路,默認進行 3?分頻,要求輸出時鐘的占空比是50%。

2.2、程序設計

? ? ? ?根據(jù)簡介介紹的奇數(shù)分頻電路設計思路,我們需要新增兩個計數(shù)器,cnt_1 和 cnt_2。初始化 cnt_1 和 cnt_2 為 1,out_clk1 為 0,out_clk2 為 0。

? ? ? ?當 out_clk1 0 時,cnt_1 在 clk 時鐘上升沿進行計數(shù),當計數(shù)到 N/2+1 out_clk1 進行翻轉(zhuǎn),同時 cnt_1 賦值為初始值 1,out_clk1 1 時,cnt_1 在 clk 時鐘上升沿進行計數(shù),當計數(shù)到 N/2 時 out_clk1 進行翻轉(zhuǎn),同時 cnt_1 賦值為初始值 1。

? ? ? ?當 out_clk2 0 時,cnt_2 在 clk 時鐘下降沿進行計數(shù),當計數(shù)到 N/2+1 out_clk2 進行翻轉(zhuǎn),同時 cnt_2 賦值為初始值 1out_clk2 1 時,cnt_2 在 clk 時鐘下降沿進行計數(shù),當計數(shù)到 N/2 時 out_clk2 進行翻轉(zhuǎn),同時 cnt_2 賦值為初始值 1。

? ? ? ?這樣 N(奇數(shù))分頻就可以通過改變參量 N 的值和計數(shù)變量 cnt 的位寬實現(xiàn)任意奇數(shù)分頻,由于默認為 3 分頻,因此 N 初始值為 3。3 分頻的 cnt_1 和 cnt_2 計數(shù)到 N/2+1 是計數(shù)到 2,小數(shù)舍棄掉, cnt_1 和 cnt_2 計數(shù)到 N/2 是計數(shù)到 1。

我們由此可以寫出如下代碼。

2.2.1、奇數(shù)分頻電路代碼


//**********任意奇數(shù)分頻*******START***************************
module divide_3 
( 
    input     clk,    // system clock 50Mhz on board
    input     rst_n,  // system rst, low active 
    output    out_clk // output signal
);

parameter N = 3 ;

reg [N/2 :0]   cnt_1;
reg [N/2 :0]   cnt_2;

reg out_clk1;
reg out_clk2;

//=====================================================================
// ------------------------- MAIN CODE -------------------------------
//=====================================================================
always @(posedge clk or negedge rst_n) begin //上升沿輸出 out_clk1
    if(!rst_n) begin
        out_clk1 <= 0;
        cnt_1 <= 1; //這里計數(shù)器從 1 開始
    end
    else begin
        if(out_clk1 == 0) begin
            if(cnt_1 == N/2+1) begin
                out_clk1 <= ~out_clk1;
                cnt_1 <= 1;
            end
            else
                cnt_1 <= cnt_1+1;
        end
        else if(cnt_1 == N/2) begin
            out_clk1 <= ~out_clk1;
            cnt_1 <= 1;
        end
        else
            cnt_1 <= cnt_1+1;
    end
end

always @(negedge clk or negedge rst_n) begin //下降沿輸出 out_clk2
    if(!rst_n) begin
        out_clk2 <= 0;
        cnt_2 <= 1; //這里計數(shù)器從 1 開始
    end
    else begin
        if(out_clk2 == 0) begin
            if(cnt_2 == N/2+1) begin
                out_clk2 <= ~out_clk2;
                cnt_2 <= 1;
            end
            else
                cnt_2 <= cnt_2+1;
            end
        else if(cnt_2 == N/2) begin
            out_clk2 <= ~out_clk2;
            cnt_2 <= 1;
        end
        else
        cnt_2 <= cnt_2+1;
    end
end

assign out_clk = out_clk1 | out_clk2;

endmodule

? ? ?使用 Vivado 綜合后也可以看到電路結(jié)構(gòu),在 RTL ANALYSIS 的?Schematic 中來看下綜合的電路結(jié)構(gòu)。

? ? ? ?可以看出,cnt_1 和 cnt_2 是一個 3bit 的計數(shù)器,out_clk1 和 out_clk2 的電路結(jié)構(gòu)基本是完全相同的,只是 cnt_1 和 cnt_2 計數(shù)器變化的時鐘沿不一樣,大家可以看出 cnt_2 的寄存器的 clk 前面有一個取反的標記,表示 cnt_2 是在時鐘下降沿進行變化,然后 out_clk1 和 out_clk2 進行或操作,即得到一個 50%占空比的奇數(shù) 3 分頻時鐘。

2.2.2、編寫仿真 TB 文件

? ? ? 只需要對時鐘以及復位信號進行激勵,代碼編寫如下:

`timescale 1ns / 1ps
//


module tb_divider_3();  //仿真模塊

//輸入 reg 定義
reg         sys_clk;
reg         sys_rst_n;

//輸出 wire 定義
wire        out_clk;

//設置初始化條件
initial begin
    sys_clk = 1'b0;     //初始化時鐘為0
    sys_rst_n <= 1'b0;  //初始復位
    #200                //200個時間單位后
    sys_rst_n <= 1'b1;  //拉高復位
end

always #10 sys_clk = ~sys_clk;


//例化被測試模塊
divider_3 u_divider_3
(
    .sys_clk           (sys_clk       ),
    .sys_rst_n         (sys_rst_n     ),
    
    .out_clk           (out_clk       )
);

endmodule

2.2.3、仿真驗證

? ? ? ?測試程序在 Xilinx 的 Vivado 軟件 或者其他仿真工具運行后的波形如下顯示:

任意分頻器電路設計,Verilog數(shù)字電路與邏輯設計,fpga開發(fā),dsp開發(fā),嵌入式硬件,硬件工程,算法

? ? ? ??可以看出,N 初始為 3,當復位撤銷(復位信號低有效)之后,cnt_1 cnt_2 即開始計數(shù), 當 out_clk1 0 時,在 cnt_1 計數(shù)器計到 2 的時候,out_clk1 進行取反操作,當 out_clk1 1 時,在 cnt_1 計數(shù)器計到 1 的時候,out_clk1 進行取反操作。

? ? ? ?當 out_clk2 0 時,在 cnt_2 計數(shù)器計到 2 的時候,out_clk2 進行取反操作,當 out_clk2 1 時,在 cnt_2 計數(shù)器計到 1 的時候,out_clk2 進行取反操作。

? ? ? ?我們可以看出 out_clk1 和 out_clk2 都不是 50%占空比的時鐘,大概是 30%占空比。然后 out_clk1 和 out_clk2 進行或操作,即得到一個 50%占空比的奇數(shù) 3 分頻時鐘。

大家可以改變 N 參數(shù)看下,看下 N 參數(shù)不一樣,最終分頻的時鐘是多少。文章來源地址http://www.zghlxwxcb.cn/news/detail-576035.html

到了這里,關于任意分頻器電路設計的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權(quán),不承擔相關法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • 數(shù)字分頻器設計(偶數(shù)分頻、奇數(shù)分頻、小數(shù)分頻、半整數(shù)分頻、狀態(tài)機分頻|verilog代碼|Testbench|仿真結(jié)果)

    數(shù)字分頻器設計(偶數(shù)分頻、奇數(shù)分頻、小數(shù)分頻、半整數(shù)分頻、狀態(tài)機分頻|verilog代碼|Testbench|仿真結(jié)果)

    目錄 一、前言 二、偶數(shù)分頻 2.1 觸發(fā)器級聯(lián)法 2.2 計數(shù)器法 2.3 verilog代碼 2.4 Testbench 2.5 仿真結(jié)果 三、奇數(shù)分頻 3.1 占空比非50%奇數(shù)分頻 3.2 占空比50%奇數(shù)分頻 3.3 Verilog代碼 3.4 Testbench 3.5 仿真結(jié)果 四、小數(shù)分頻 4.1 雙模前置分頻法 4.2 Verilog代碼 4.3 Testbench 4.4 仿真結(jié)果 五、半整

    2024年02月04日
    瀏覽(32)
  • 數(shù)字分頻器設計(偶數(shù)分頻、奇數(shù)分頻、小數(shù)分頻、半整數(shù)分頻、狀態(tài)機分頻|verilog代碼|Testbench|仿真結(jié)果)

    數(shù)字分頻器設計(偶數(shù)分頻、奇數(shù)分頻、小數(shù)分頻、半整數(shù)分頻、狀態(tài)機分頻|verilog代碼|Testbench|仿真結(jié)果)

    數(shù)字IC經(jīng)典電路設計 經(jīng)典電路設計是數(shù)字IC設計里基礎中的基礎,蓋大房子的第一部是打造結(jié)實可靠的地基,每一篇筆者都會分門別類給出設計原理、設計方法、verilog代碼、Testbench、仿真波形。然而實際的數(shù)字IC設計過程中考慮的問題遠多于此,通過本系列希望大家對數(shù)字I

    2024年02月08日
    瀏覽(19)
  • 分頻器——(任意奇分頻(50%占空比、非50%占空比),任意偶分頻,任意小數(shù)分頻)

    分頻器——(任意奇分頻(50%占空比、非50%占空比),任意偶分頻,任意小數(shù)分頻)

    ????????在數(shù)字系統(tǒng)的設計中經(jīng)常會碰到 需要使用多個時鐘 的情況。時鐘信號的產(chǎn)生通常具有兩種方法,一種是使用PLL(Phase Locked Loop,鎖相環(huán)),可生成 倍頻、分頻信號 ;另一種則是使用硬件描述語言構(gòu)建一個分頻電路。 ????????分頻器的設計通常分為以下 三類:

    2023年04月23日
    瀏覽(23)
  • FPGA學習——實現(xiàn)任意倍分頻器(奇數(shù)/偶數(shù)倍分頻器均可實現(xiàn))

    FPGA學習——實現(xiàn)任意倍分頻器(奇數(shù)/偶數(shù)倍分頻器均可實現(xiàn))

    在FPGA(可編程邏輯門陣列)中,分頻器是一種用于將時鐘信號的頻率降低的電路或模塊。它可以根據(jù)輸入的時鐘信號生成一個較低頻率的輸出時鐘信號。 常見的分頻器可以按照固定比例來進行分頻,例如將輸入時鐘頻率除以2、除以4等。因此,如果輸入時鐘信號的頻率為10

    2024年02月05日
    瀏覽(21)
  • FPGA【Verilog分頻器】

    FPGA【Verilog分頻器】

    ????????在數(shù)字系統(tǒng)的設計中經(jīng)常會碰到需要使用多個時鐘的情況。時鐘信號的產(chǎn)生通常具有兩種方法,一種是使用PLL(Phase Locked Loop,鎖相環(huán)),可生成倍頻、分頻信號;另一種則是使用硬件描述語言構(gòu)建一個分頻電路。 ????????分頻器的設計通常分為以下三類:奇

    2024年02月20日
    瀏覽(30)
  • Verilog手撕代碼(6)分頻器

    Verilog手撕代碼(6)分頻器

    分頻就是生成一個新時鐘,該新時鐘的頻率是原有時鐘頻率的整數(shù)分之一倍,新周期是原有周期的整數(shù)倍。 再簡單來說,讓你手撕一個四分頻電路,就是寫代碼生成一個周期是原來四倍的時鐘,如果手撕一個三分頻電路,就是寫代碼生成一個周期是原來三倍的時鐘。 如圖為

    2024年02月08日
    瀏覽(23)
  • 【FPGA & Verilog】奇數(shù)分頻器 (50%)

    【FPGA & Verilog】奇數(shù)分頻器 (50%)

    2.1 設計輸? 1. 模塊名稱:FrequencyDivider 2. 輸?輸出:CLK、RSTn、CLK_15 2.2 引腳約束 1. 輸?端 ?定義 2. 輸出端 ?定義 2.3 設計要求 1. 輸出時鐘的周期是輸?時鐘的15倍(15分頻器) 2. 分別實現(xiàn)?7/15?占空?和 50% 占空?兩種分頻?式 3. 使?RTL View分析電路的區(qū)別 2.4 電路仿真1.

    2024年02月03日
    瀏覽(26)
  • FPGA學習日記——verilog實現(xiàn)分頻器

    FPGA學習日記——verilog實現(xiàn)分頻器

    主要思想是利用計數(shù)器實現(xiàn)分頻器功能,其中按原理不同可分為分頻和降頻 一、先說分頻。 1、第一種實現(xiàn)方式 輸入信號為系統(tǒng)時鐘50MHz,本例子先以偶數(shù)倍六分頻為例實現(xiàn)分頻的第一種方式:計數(shù)器對系統(tǒng)時鐘的上升沿進行計數(shù),最大計數(shù)M=5,即count取值范圍為0~5,當計數(shù)

    2024年02月04日
    瀏覽(21)
  • 【實驗室學習】時鐘分頻器,2、3、4、8分頻 verilog實現(xiàn)

    【實驗室學習】時鐘分頻器,2、3、4、8分頻 verilog實現(xiàn)

    記錄時鐘分頻器的Verilog代碼編寫,主要掌握分頻器設計思路 2、4、8分頻設計較為容易: 2分頻—設計一個1位的寄存器,當原時鐘上升沿時取反即可 代碼展示: 4分頻與8分頻—設計一個兩位的計數(shù)器,4分頻只需在計數(shù)器計數(shù)到00B或者10B時跳變電平即可,8分頻只需在計數(shù)器計

    2024年02月11日
    瀏覽(30)
  • 常用數(shù)字電路模塊:計數(shù)器與分頻器(一)

    分頻器的原理就是計數(shù),翻轉(zhuǎn),計數(shù),翻轉(zhuǎn),所以我們先來了解一下計數(shù)器! (1)計數(shù)器代碼 ??計數(shù)器,顧名思義就是在時鐘的節(jié)拍下進行計數(shù),一個簡單的N位計數(shù)器的代碼如下所示,這個計數(shù)器從0計數(shù)到2 N -1(共計數(shù)了2 N 個數(shù),也就是N位計數(shù)器。例如0,1,2,3,計

    2024年02月16日
    瀏覽(22)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包