日B视频 亚洲,啪啪啪网站一区二区,91色情精品久久,日日噜狠狠色综合久,超碰人妻少妇97在线,999青青视频,亚洲一区二卡,让本一区二区视频,日韩网站推荐

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

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

3天內(nèi)不再提示

深度解析FPGA時序的進位鏈

454398 ? 來源: 科學計算 technomania ? 作者:貓叔 ? 2020-11-16 16:35 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

FPGA中我們寫的最大的邏輯是什么?相信對大部分朋友來說應該是計數(shù)器,從最初板卡的測試時我們會閃爍LED,到復雜的AXI總線中產(chǎn)生地址或者last等信號,都會用到計數(shù)器,使用計數(shù)器那必然會用到進位鏈。

可能很多剛開始接觸FPGA的同學沒聽過進位鏈,也就是Carry Chain,我們這里再回顧一下。FPGA的三個主要資源為:

1. 最低邏輯單元

可配置邏輯單元(CLB)

存儲單元

運算單元(DSP48)

2. 一流的I / O資源

3. 布線資源

其中,CLB在FPGA中最豐富,在7系列的FPGA中,一個CLB中有兩個Slice,Slice中包含4個LUT6、3個數(shù)據(jù)選擇器MUX,兩個獨立進位鏈(Carry4,Ultrascale是CARRY8)和8個主軸。

首先,我們來看下Carry Chain的結構原理,其輸入輸出接口如下:

其中,

CI是上一個CARRY4的進位輸出,位寬為1;

CYINT是進位的初始化值,位寬為1;

DI是數(shù)據(jù)的輸入(兩個加數(shù)的任意一個),位寬為4;

SI是兩個加數(shù)的異或,位寬為4;

O是加法結果輸出,位寬為4;

CO是進位輸出,位寬為4;(為什么進位輸出是4bit?后面有解釋)

Carry4的內(nèi)部結構如下圖所示:

這里我們要先解釋一下FPGA中利用卡里鏈(Carry Chain)實現(xiàn)加法的原理,比如兩個加數(shù)分別為a = 4'b1000和b=4'b1100,其結果應該是8+12=20。

a = 4'b1000;
b = 4'b1100;

S = a ^ b = 4'b0100;
D = b = 4'b1100;          //D取a也可以
CIN = 0;                  //沒有上一級的進位輸入
CYINIT = 0;               //初始值為0
// 下面為CARRY4的計算過程,具體的算法跟上圖中過程一樣
S0 = 0;                  //S的第0位
O0 = S0 ^ 0 = 0 ^ 0 = 0;
CO0 = DI0 = 0;            //上圖中的MUXCY,S0為0時,選擇1,也就是DI0,S0為1是選擇2
S1 = 0;
O1 = S1 ^ CO0 = 0 ^ 0 = 0;
CO1 = DI1 = 0;
S2 = 1;
O2 = S2 ^ CO1 = 0 ^ 1 = 1;
CO2 = CO1 = 0;
S3 = 0;
O3 = S3 ^ CO2 = 0 ^ 0 = 0;
CO3 = DI3 = 1;

加法最終的輸出結果為:{CO3,O3,O2,O1,O0} = 5'b10100 =20。進位輸出在CARRY4的內(nèi)部也使用到了,因此有4個位的進位輸出CO,但輸出給下一級的只是CO [3]。

再來看完下面的例子就更清晰了。Example的代碼如下:

module top(

 input clk,
 input [7:0] din_a,
 input [7:0] din_b,
 output reg[7:0] dout
    );

 always @ ( posedge clk )
 begin
    dout <= din_a + din_b;
 end  
endmodule

綜合之后的電路如下:

在本程序中,加數(shù)為din_a和din_b,圖中

1 表示CARRY4的進位輸出到下一級的進入輸入;

2 表示輸入的一個加數(shù)din_a(換成din_b也是可以的);

3 表示第二級輸入的DI端口,因為第二級CARRY是通過第一級的進位輸出進行累加,因此該接口為0;

4 表示輸入兩個加數(shù)的異或結果。

可以拋光,當進行兩個兩個bit的數(shù)據(jù)進行加法操作時,會使用兩個CARRY4級聯(lián),那如果是對48位的數(shù)據(jù)進行相加,那就會用到12個的CARRY4的級聯(lián),這樣(此處需要注意的是,在Vivado的設置下,如果進行的是12bit以下的數(shù)據(jù)加1'b1的操作,那么Vivado綜合的結果并不會使用CARYY4,或者使用LUT來實現(xiàn)加法器)。

那如何解決這種問題呢?我們可以把加法操作進行拆解,比如拆解成3個16bit的計數(shù)器,那這樣就會只有4個CARRY4的級聯(lián),時序情況就好了很多。

對比程序如下:

module top(

 input clk,
 input [47:0] din1,
 input [47:0] din2,
 output reg[47:0] dout1,
 output    [47:0] dout2
 );

 always @ ( posedge clk )
 begin
    dout1 <= din1 + 1'b1;
 end  

 genvar i;
 generate
 for(i = 0;i < 3;i=i+1) begin:LOOP
    wire carry_co;
    reg [15:0] carry_o=0;
    wire ci;
    if(i==0)  begin
        always @ ( posedge clk )
         begin
            carry_o <= din2[i*16+:16] + 1'b1;
         end
     end //if
     else begin
        always @ (posedge clk) begin
            if(LOOP[i-1].carry_co == 1)
                carry_o <= carry_o + 1'b1;
        end
     end //else
    assign LOOP[i].carry_co = (LOOP[i].carry_o==16'hffff)?1'b1:1'b0;
    assign dout2[i*16+:16] = LOOP[i].carry_o;

 end //for

 endgenerate

endmodule

:綜合后的schematic后可以發(fā)現(xiàn),在dout2的輸出中,每4個CARRY4后都會有一級的觸發(fā),這樣時序就會好很多,但造成的代價是LUT會增加。

編輯:hfy

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

    關注

    1664

    文章

    22519

    瀏覽量

    639732
  • 計數(shù)器
    +關注

    關注

    32

    文章

    2321

    瀏覽量

    98634
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    XILINXPWR - 082 EVM電源管理解決方案深度解析

    XILINXPWR - 082 EVM電源管理解決方案深度解析 在電子設計領域,電源管理解決方案對于FPGA等關鍵器件的穩(wěn)定運行至關重要。今天,我們來深入探討XILINXPWR - 082 EVM
    的頭像 發(fā)表于 04-26 13:15 ?242次閱讀

    SHARP LZ9FD534:TFT - LCD模塊時序控制IC深度解析

    SHARP LZ9FD534:TFT - LCD模塊時序控制IC深度解析 在電子設備飛速發(fā)展的今天,TFT - LCD模塊作為顯示設備的核心部件,其性能的優(yōu)劣直接影響著顯示效果。SHARP推出
    的頭像 發(fā)表于 04-15 12:40 ?204次閱讀

    LZ9FC23:TFT - LCD模塊時序控制IC的深度解析

    LZ9FC23:TFT - LCD模塊時序控制IC的深度解析 在電子設備的設計中,TFT - LCD模塊的正常運行離不開時序控制IC的精準調(diào)控。今天我們就來深入了解一下Sharp
    的頭像 發(fā)表于 04-15 12:40 ?195次閱讀

    深入解析DM74LS83A 4位二進制快速進位加法器

    深入解析DM74LS83A 4位二進制快速進位加法器 在數(shù)字電路設計中,加法器是一種基礎且關鍵的組件。今天我們來詳細探討FAIRCHILD公司的DM74LS83A 4位二進制快速進位加法器,了解它
    的頭像 發(fā)表于 04-10 16:45 ?714次閱讀

    74F182 進位超前發(fā)生器:高速運算的核心助力

    74F182 進位超前發(fā)生器:高速運算的核心助力 在數(shù)字電路設計中,高速運算一直是追求的目標。而 74F182 進位超前發(fā)生器,正是實現(xiàn)高速運算的關鍵組件之一。今天,我們就來深入了解一下這款器件
    的頭像 發(fā)表于 04-10 14:15 ?172次閱讀

    深入解析IGLOO2 FPGA與SmartFusion2 SoC FPGA:性能、規(guī)格與應用考量

    深入解析IGLOO2 FPGA與SmartFusion2 SoC FPGA:性能、規(guī)格與應用考量 在當今電子設計領域,FPGA(現(xiàn)場可編程門陣列)和SoC
    的頭像 發(fā)表于 04-07 12:05 ?199次閱讀

    賽靈思FPGA電源解決方案全解析

    賽靈思FPGA電源解決方案全解析 在當今的電子設計領域,現(xiàn)場可編程門陣列(FPGA)憑借其出色的設計靈活性和較低的工程成本,在眾多應用和終端市場中占據(jù)了重要地位。然而,FPGA的電源設
    的頭像 發(fā)表于 04-02 15:45 ?255次閱讀

    FPGA時序收斂的痛點與解決之道——從一次高速接口調(diào)試談起

    FPGA開發(fā)中,時序收斂往往是項目后期最令人頭疼的環(huán)節(jié)。許多工程師都有過這樣的經(jīng)歷:RTL仿真通過,綜合布線后卻出現(xiàn)大量時序違例,為了滿足時序不得不反復修改代碼、調(diào)整約束,甚至重構設
    的頭像 發(fā)表于 03-11 11:43 ?357次閱讀

    深度解析:為什么 OPC UA 通訊總是由于“時間偏差”隨機斷開?

    深度解析:為什么 OPC UA 通訊總是由于“時間偏差”隨機斷開?
    的頭像 發(fā)表于 03-10 15:23 ?288次閱讀
    <b class='flag-5'>深度</b><b class='flag-5'>解析</b>:為什么 OPC UA 通訊總是由于“時間偏差”隨機斷開?

    Microsemi IGLOO2 FPGA與SmartFusion2 SoC FPGA深度剖析

    Microsemi IGLOO2 FPGA與SmartFusion2 SoC FPGA深度剖析 作為一名電子工程師,在日常的設計工作中,FPGA與SoC
    的頭像 發(fā)表于 02-09 17:20 ?548次閱讀

    TLK10081:10Gbps 1 - 8 通道多速率串行路聚合器的深度解析

    TLK10081:10Gbps 1 - 8 通道多速率串行路聚合器的深度解析 在高速數(shù)據(jù)傳輸?shù)念I域中,路聚合技術對于提升數(shù)據(jù)吞吐量和優(yōu)化物理
    的頭像 發(fā)表于 12-23 10:20 ?554次閱讀

    從直流到高頻:深度解析電流探頭的關鍵性能指標與選型指南

    深度解析電流探頭的關鍵性能指標與選型指南
    的頭像 發(fā)表于 12-17 14:54 ?551次閱讀

    深度解析 | 低抖動高精度EtherCAT多軸控制的實現(xiàn)與實踐案例

    深度解析 | 低抖動高精度EtherCAT多軸控制的實現(xiàn)與實踐案例 在工業(yè)自動化領域,運動控制的精度和穩(wěn)定性直接決定了生產(chǎn)效率和產(chǎn)品質(zhì)量。其中EtherCAT多軸控制技術尤為引人注目。今天,我們
    發(fā)表于 12-09 17:17

    數(shù)字IC/FPGA設計中的時序優(yōu)化方法

    在數(shù)字IC/FPGA設計的過程中,對PPA的優(yōu)化是無處不在的,也是芯片設計工程師的使命所在。此節(jié)主要將介紹performance性能的優(yōu)化,如何對時序路徑進行優(yōu)化,提高工作時鐘頻率。
    的頭像 發(fā)表于 12-09 10:33 ?3598次閱讀
    數(shù)字IC/<b class='flag-5'>FPGA</b>設計中的<b class='flag-5'>時序</b>優(yōu)化方法

    Nginx核心功能深度解析

    Nginx核心功能深度解析
    的頭像 發(fā)表于 05-09 10:50 ?1050次閱讀
    宁德市| 鲜城| 高陵县| 含山县| 安乡县| 平谷区| 仲巴县| 富川| 曲靖市| 江川县| 北碚区| 南昌市| 麻栗坡县| 连南| 怀安县| 浙江省| 武鸣县| 历史| 金秀| 招远市| 西昌市| 松桃| 汉源县| 敖汉旗| 湖口县| 新乡市| 新野县| 沁源县| 临西县| 保康县| 老河口市| 突泉县| 黄浦区| 龙门县| 道真| 清远市| 太保市| 宝鸡市| 青岛市| 沭阳县| 临朐县|