加入星計劃,您可以享受以下權(quán)益:

  • 創(chuàng)作內(nèi)容快速變現(xiàn)
  • 行業(yè)影響力擴(kuò)散
  • 作品版權(quán)保護(hù)
  • 300W+ 專業(yè)用戶
  • 1.5W+ 優(yōu)質(zhì)創(chuàng)作者
  • 5000+ 長期合作伙伴
立即加入
  • 正文
    • 加法器相關(guān)
    •  
    • 分頻電路相關(guān)
  • 相關(guān)推薦
  • 電子產(chǎn)業(yè)圖譜
申請入駐 產(chǎn)業(yè)圖譜

備戰(zhàn)秋招[一]

2020/12/01
206
閱讀需 8 分鐘
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點資訊討論

加法器相關(guān)

半加器全加器的區(qū)別在于,是否有進(jìn)位輸入端,可以直觀地理解為,半加器是兩個一比特相加,而全加器是三個一比特相加,輸出結(jié)果和進(jìn)位信號。

?

半加器

半加器的真值表如下圖

輸入 輸出
A B C S
0 0 0 0
0 1 0 1
1 0 0 1
1 1 1 0

其邏輯表達(dá)式為

根據(jù)邏輯表達(dá)式,可以使用如下門電路實現(xiàn)

全加器

全加器真值表如下

輸入 輸出
A B Ci C S
0 0 0 0 0
0 1 0 0 1
1 0 0 0 1
1 1 0 1 0
0 0 1 0 1
0 1 1 1 0
1 0 1 1 0
1 1 1 1 1

其邏輯表達(dá)式為:

使用門電路搭建

?

使用加法器計算 7bit 中 1 的數(shù)量,最少用幾個?

有 7 個 1bit 的數(shù),為他們編號,從 b0 到 b6,一共七個。

使用 1bit 全加器可以將 3 個 bit 相加,得到 2bit 的結(jié)果,那么 b0,b1,b2 使用一個加法器,b3,b4,b5 使用一個加法器。

現(xiàn)在 7 個 1bit 變成了 2 個 2bit 和一個 1bit(b6)。

然后使用一個 2bit 全加器將兩個 2bit 數(shù)進(jìn)行相加,1bit 的 b6 作為進(jìn)位輸入。相加后結(jié)果為 3 位,最大可以表示到 7 個 1bit。

而 2bit 全加器可以有 2 個 1bit 全加器組成,所以一共使用 4 個 1bit 全加器可以完成 1 的數(shù)量的統(tǒng)計。

?

行波進(jìn)位加法器

以 4bit 的行波進(jìn)位加法器為例,需要使用 4 個 1bit 加法器實現(xiàn),如下圖所示。在進(jìn)行加法運算時,首先準(zhǔn)備好的是 1 號全加器的 3 個 input。而 2、3、4 號全加器的 Cin 全部來自前一個全加器的 Cout,只有等到 1 號全加器運算完畢,2、3、4 號全加器才能依次進(jìn)行進(jìn)位運算,最終得到結(jié)果。這樣進(jìn)位輸出,像波浪一樣,依次從低位到高位傳遞, 最終產(chǎn)生結(jié)果的加法器,也因此得名為行波進(jìn)位加法器(Ripple-Carry Adder,RCA)。

如果將全加器內(nèi)部打開,我們可以看到,關(guān)鍵路上有 9 個門,門延遲非常高

?

超前進(jìn)位加法器

為了改進(jìn)行波僅為加法器的延遲問題,可以將全加器的進(jìn)位信號轉(zhuǎn)化為 G 和 P 以及本級進(jìn)位輸入組成的邏輯。如下圖

將四個加法器串聯(lián),迭代可以得到

可以看到,每一級的進(jìn)位都不依賴于上一級的進(jìn)位,因此不需要等待上一個加法器完成計算,超前得到進(jìn)位結(jié)果。同時,顯然如果要實現(xiàn)大位寬加法器,邏輯將會變得更加復(fù)雜。

通過超強進(jìn)位的方法,實現(xiàn)四位全加器的原理圖如下

單 bit 全加器的輸出改為輸出 P、G 和 S,而每一級的進(jìn)位可以有下方的邏輯得到。因此最終延遲為 4 個門。

對比行波進(jìn)位加法器(RCA)和超前進(jìn)位加法器(CLA)

- RCA CLA
結(jié)構(gòu)特點 低位全加器的 Cout 連接到高一位全加器 Cin 每個全加器的進(jìn)位輸入并不來自于前一級的全加器,而是來自超前進(jìn)位的邏輯
優(yōu)點 電路布局簡單,設(shè)計方便 計算 Ci+1 的延遲時間固定為三級門延遲,與加法器的位數(shù)無關(guān)
缺點 高位的運算必須等待低位的運算完成,延遲時間長 如果進(jìn)一步拓寬加法器的位數(shù),則電路變得非常復(fù)雜

?

分頻電路相關(guān)

偶數(shù)分頻

偶數(shù)分頻器的實現(xiàn)簡單,用計數(shù)器在上升沿或者下降沿計數(shù),當(dāng)計數(shù)器的值等于分頻系數(shù)的一半或等于分頻系數(shù)時,信號翻轉(zhuǎn)。偶數(shù)分頻器分頻原理如下圖所示:

上圖的的分頻系數(shù)是 4,就是 4 分頻。電路原理是用一個上升沿計數(shù)的計數(shù)器,每次計數(shù)到 2 時輸出信號 clkout 翻轉(zhuǎn)一次,每次計數(shù)到 4 時 clkout 再翻轉(zhuǎn)一次,一直周期重復(fù)下去。其他的偶數(shù)分頻器原理也是一樣。

如果偶數(shù)分頻系數(shù)是 2 的冪,就可以用 2 分頻器級聯(lián)得到;例如 4 分頻就是兩個 2 分頻級聯(lián),下圖就是用兩個 2 分頻器級聯(lián)得到 4 分頻器。

?

奇數(shù)分頻

如果不要求占空比為 50%的話,也比較容易實現(xiàn),如進(jìn)行三分頻,通過待分頻時鐘上升沿觸發(fā)計數(shù)器進(jìn)行模三計數(shù),當(dāng)計數(shù)器計數(shù)到鄰近值進(jìn)行兩次翻轉(zhuǎn),比如可以在計數(shù)器計數(shù)到 1 時,輸出時鐘進(jìn)行翻轉(zhuǎn),計數(shù)到 2 時再次進(jìn)行翻轉(zhuǎn)。即在計數(shù)值在鄰近的 1 和 2 進(jìn)行了兩次翻轉(zhuǎn)。這樣實現(xiàn)的三分頻占空比為 1/3 或者 2/3。

對于實現(xiàn)占空比為 50%的 N 倍奇數(shù)分頻,可以分解為兩個通道:

?上升沿觸發(fā)進(jìn)行模 N 計數(shù),計數(shù)選定到某一個值進(jìn)行輸出時鐘翻轉(zhuǎn),然后經(jīng)過(N-1)/2 再次進(jìn)行翻轉(zhuǎn)得到一個占空比為非 50%奇數(shù) N 分頻時鐘;?下降沿觸發(fā)進(jìn)行模 N 計數(shù),到和上升沿觸發(fā)輸出時鐘翻轉(zhuǎn)選定值相同值時,進(jìn)行輸出時鐘時鐘翻轉(zhuǎn),同樣經(jīng)過(N-1)/2 時,輸出時鐘再次翻轉(zhuǎn)生成占空比非 50%的奇數(shù) N 分頻時鐘。

將這兩個占空比非 50%的 N 分頻時鐘或運算,得到占空比為 50%的奇數(shù) n 分頻時鐘。

具體例子:5 分頻等占空比,可以通過待分頻時鐘下降沿和上升沿觸發(fā) 0~4 計數(shù),

?對于待分頻時鐘的上升沿,當(dāng)計數(shù)器 cnt1 計數(shù)到 1 時,clk_p 翻轉(zhuǎn);當(dāng)計數(shù)器計數(shù)到 3(1 + (5 - 1) / 2 = 3)時,clk_p 再次反轉(zhuǎn);?對于待分頻時鐘的下降沿,當(dāng)計數(shù)器 cnt2 計數(shù)到 1 時,clk_n 翻轉(zhuǎn);當(dāng)計數(shù)器計數(shù)到 3(1 + (5 - 1) / 2 = 3)時,clk_n 再次反轉(zhuǎn);?然后下降沿產(chǎn)生的 5 分頻時鐘和上升沿產(chǎn)生的 5 分頻時鐘進(jìn)行或運算,即可得到占空比為 50%的 N 分頻時鐘。

這種方法可以實現(xiàn)任意的奇數(shù)分頻。

下面給出 5 分頻的具體代碼:

`timescale 1ns/1ps
module CLK_DIV5(    input   clk_i,    input   rst_n,    output  clk_o    );    reg [2:0] cnt1,cnt2;    reg clk_p,clk_n;
//*********************//MAIN CORE//*********************        always @(posedge clk_i,negedge rst_n)    if(!rst_n) begin        cnt1 <= 3'b0;        clk_p <= 1'b0;    end     else begin        if(cnt1 == 3'b100) begin            cnt1 <= 3'b0;            clk_p <= clk_p;        end        else begin            cnt1 <= cnt1 + 1'b1;            if(cnt1 == 3'b1 || cnt1 == 3'b11)                clk_p <= ~clk_p;        end    end
always @(negedge clk_i,negedge rst_n)    if(!rst_n) begin        cnt2 <= 3'b0;        clk_n <= 1'b0;    end     else begin        if(cnt2 == 3'b100) begin            cnt2 <= 3'b0;            clk_n <= clk_n;        end        else begin            cnt2 <= cnt2 + 1'b1;            if(cnt2 == 3'b1 || cnt2 == 3'b11)                clk_n <= ~clk_n;        end    end
    assign clk_o = clk_p | clk_n;endmodule

?

分?jǐn)?shù)分頻

對于要求相位以及占空比嚴(yán)格的分?jǐn)?shù)分頻(小數(shù)分頻),建議采用模擬電路實現(xiàn)。而使用數(shù)字電路實現(xiàn)只能保證盡量均勻,在長時間內(nèi)進(jìn)行分頻。

對于一個分?jǐn)?shù),把他它分為整數(shù)部分和小數(shù)部分的形式。例如 N=M.D>1 分頻,分為整數(shù) M 和小數(shù) D,我們使用 M 分頻和 M+1 分頻來構(gòu)成 M.D 分頻。

設(shè) M 分頻的次數(shù)為 N1,M+1 分頻的次數(shù)為 N2。

將 M 分頻進(jìn)行 N1 次和 M+1 分頻進(jìn)行 N2 次,那么在 M*N1+(M+1)*N2 個周期內(nèi),整體可以看作(M*N1+(M+1)*N2)/(N1+N2)=N 分頻。

可以通過均勻分布 M 分頻和 M+1 分頻,使得相位較為均勻。

結(jié)構(gòu)圖可以參考下圖

相關(guān)推薦

電子產(chǎn)業(yè)圖譜