一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

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

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

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

如何利用xilinx器件中LUT的結(jié)構(gòu)特征設(shè)計乘法器呢?

FPGA之家 ? 來源:AI加速 ? 2024-01-19 09:14 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

卷積占據(jù)了CNN網(wǎng)絡(luò)中絕大部分運算,進行乘法運算通常都是使用FPGA中的DSP,這樣算力就受到了器件中DSP資源的限制。比如在zynq7000器件中,DSP資源就較少,神經(jīng)網(wǎng)絡(luò)的性能就無法得到提升。利用xilinx器件中LUT的結(jié)構(gòu)特征,設(shè)計出的乘法器不但能靈活適應(yīng)數(shù)據(jù)位寬,而且能最大限度降低LUT資源使用。

01

Xilinx ultrascale器件LUT結(jié)構(gòu)

在這里簡要介紹一下ultrascale系列器件中的LUT結(jié)構(gòu),有助于后邊對乘法器設(shè)計思路的理解。CLB(configuratble logic block)是主要的資源模塊,其包含了8個LUT,16個寄存器,carry邏輯,以及多路選通器等。其中LUT可以用作6輸入1輸出,或者兩個5輸入LUT,但是這兩個LUT公用輸入,具有不同輸出。每個LUT輸出可以連接到寄存器或者鎖存器,或者從CLB輸出。LUT可以用于64x1和32X2的分布式RAM,一個CLB內(nèi)最大可以支持512X1大小的RAM。RAM的讀寫地址和輸入的讀寫數(shù)據(jù)是共享的,數(shù)據(jù)通道可以使用x和I接口。LUT還可以配置用于4:1選通器,CLB最大能夠支持到32:1的選通器。CLB中的carry邏輯含有異或門和產(chǎn)生進位的門,用于生成進位數(shù)據(jù)。

8aaad320-b65d-11ee-8b88-92fbcf53809c.png

圖1.1 LUT結(jié)構(gòu)

LUT還可以被動態(tài)配置成32bit移位寄存器,這個功能在乘法器設(shè)計中可以用于改變乘法器的乘數(shù)和被乘數(shù)。在寫入LUT數(shù)據(jù)的時候,每個時鐘周期從D接口進入數(shù)據(jù),依次寫入32bit數(shù)據(jù)。讀數(shù)據(jù)的時候,可以通過地址來定位任何32bit中的數(shù)據(jù)。這樣就可以配置成任何小于32bit的移位寄存器。移位輸出Q31可以進入下一級LUT用于串聯(lián)產(chǎn)生更大移位寄存器。在一個CLB中最大可以串聯(lián)產(chǎn)生256bit移位寄存器。

8ab02f1e-b65d-11ee-8b88-92fbcf53809c.jpg

圖1.2 移位寄存器配置

02

LUT乘法器原理

首先假設(shè)我們處理整數(shù)乘法,小數(shù)乘法也可以用這樣的方法?;舅枷刖褪菍 bit大小的數(shù)據(jù)進行分割表示:

8ab5877a-b65d-11ee-8b88-92fbcf53809c.png

其中0<=di<2^q。乘以一個常數(shù)K:

8abd2a70-b65d-11ee-8b88-92fbcf53809c.png

這樣就將兩個數(shù)據(jù)乘法分解成低bit數(shù)據(jù)乘法,結(jié)果是一個常數(shù)K和di相乘,然后再進行移位求和。M bit數(shù)據(jù)分解后的低bit數(shù)據(jù)位寬通常都適配LUT輸入寬度,這樣能最大利用LUT資源。現(xiàn)在乘法只有K*di,由于bit位寬較小,這部分可以用LUT查找表的形式來。預(yù)先將0K到(2^q-1)K的數(shù)據(jù)存儲到LUT中,然后通過di來選擇對應(yīng)的數(shù)據(jù)。如果是負數(shù)乘法,那么數(shù)據(jù)使用補碼表示,那么LUT中存儲的數(shù)據(jù)是從-2^(q-1)K到(2^(q-1)-1)K。針對以上介紹的ultrascale器件的LUT6,q可以選擇為5。但是在本論文中使用的是LUT4器件,其只有4輸入,因此選擇了q=3,為什么沒有選擇4呢?另外1bit是為了用于半加器的實現(xiàn)。

03

基本結(jié)構(gòu)

實現(xiàn)上述累加的方法有很多種,論文中采用了進位鏈加法器。圖2.1中是m bit和n bit數(shù)據(jù)乘法,每個E結(jié)構(gòu)計算di*K,并且和上一個結(jié)構(gòu)求和,輸出的低3bit直接作為最終結(jié)果,而n bit傳輸?shù)较乱患夁M行計算。q=3的計算單元E有[m/3]個。K*di是有n+3bit的查找表實現(xiàn)的。查找表的結(jié)果由di選擇,然后再通過一個求和器和之前數(shù)據(jù)求和。這是一個最基本的結(jié)構(gòu),論文又針對這個結(jié)構(gòu)做了優(yōu)化,用一個LUT同時實現(xiàn)了一個查找表和半加器。具體來講,其中3bit輸入用于di,還有1bit用于上一次輸出,LUT中存放數(shù)據(jù)是di*K和上一次結(jié)果第j bit的半加結(jié)果,實際上是第j bit數(shù)據(jù)LUT中結(jié)果的異或。而進位數(shù)據(jù)由CLB中相應(yīng)的carry邏輯來計算。相比于粗暴的進行數(shù)據(jù)求和,這樣精確的來控制LUT能夠大大節(jié)省資源。

8ac43b1c-b65d-11ee-8b88-92fbcf53809c.jpg

圖2.1 基本結(jié)構(gòu)

8acc67f6-b65d-11ee-8b88-92fbcf53809c.jpg

圖2.2 LUT實現(xiàn)乘法和半加,外圍carry邏輯實現(xiàn)進位

04

動態(tài)配置LUT內(nèi)容

Xilinx的LUT結(jié)構(gòu)允許在運行過程中改變LUT中的內(nèi)容,這樣的乘法器就能改變被乘數(shù)據(jù)K。這可以實現(xiàn)在神經(jīng)網(wǎng)絡(luò)計算中需要更新權(quán)重參數(shù)。論文中使用的是LUT4,所以一個LUT可以被配置成16bit移位寄存器。通過這16bit寄存器可以來配置LUT中的內(nèi)容,每個時鐘周期更新1bit數(shù)據(jù),16個時鐘周期可以完成一個LUT中數(shù)據(jù)更新。是否進行LUT內(nèi)容更新通過CE使能信號控制。

如何產(chǎn)生LUT中數(shù)據(jù)的值呢?如果上一次輸出數(shù)據(jù)對應(yīng)bit為0,那么LUT中就存放0*K到7*K的值,如果上一次對應(yīng)bit為1,那么存放值為對以上數(shù)據(jù)取反。圖4.1表示了獲得LUT中內(nèi)容的電路圖。首先數(shù)據(jù)被初始化為0*K,下一次對應(yīng)著求和進位為1的情況,取反,然后再加K得到1*K的值,這樣每隔兩個時鐘周期就得到下一個乘法的數(shù)據(jù)值,依次對LUT進行更新。上述中針對的是正整數(shù),如果對于負數(shù)乘法更新,可以在上述求整數(shù)乘法的電路基礎(chǔ)上做一下改進,如圖4.2。當(dāng)最高位為0的時候,輸出結(jié)果就是之前求得的乘法結(jié)果。如果最高位是1,那么負數(shù)的補碼表示是乘法的原碼結(jié)果減去最高位數(shù)值。

8ad7aa80-b65d-11ee-8b88-92fbcf53809c.png

圖4.1 LUT中內(nèi)容更新電路圖

8ae23e82-b65d-11ee-8b88-92fbcf53809c.jpg

圖4.2 負數(shù)乘法結(jié)果更新電路

05

結(jié)果分析

最后我們來看看這種乘法器的實現(xiàn)效果,圖5.1表示對多級進位不適用pipeline結(jié)構(gòu)的時鐘頻率隨著被乘數(shù)K位寬變化,可以看到隨著級數(shù)E的增加,頻率降低很多,這主要是進位鏈邊長導(dǎo)致。而隨著K位寬增加,頻率也有降低,這主要是因為實現(xiàn)di*K乘法的LUT資源增加導(dǎo)致。

8ae9753a-b65d-11ee-8b88-92fbcf53809c.jpg

圖5.1 沒有pipeline下頻率MHz

圖5.2是不同乘法位寬下的使用slice數(shù)量。論文中考慮了兩種極端情況,一種是完全pipeline下,即每級計算單元都經(jīng)過寄存器,另外一種是完全沒有pipeline,所有級E都是串聯(lián)。

8af1322a-b65d-11ee-8b88-92fbcf53809c.jpg

圖5.2 slice資源

結(jié)論

上述通過LUT來設(shè)計乘法器的方法,可以應(yīng)用于CNN中的卷積運算當(dāng)中,因為權(quán)重可以被當(dāng)做被乘數(shù),用于LUT內(nèi)容的配置,在更換權(quán)重時,可以對LUT內(nèi)容更新,這樣就能避免了DSP資源的限制,不失為一種增加算力的方法。







審核編輯:劉清

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

    關(guān)注

    556

    文章

    8158

    瀏覽量

    357609
  • 移位寄存器
    +關(guān)注

    關(guān)注

    3

    文章

    293

    瀏覽量

    22745
  • 鎖存器
    +關(guān)注

    關(guān)注

    8

    文章

    926

    瀏覽量

    42395
  • 乘法器
    +關(guān)注

    關(guān)注

    9

    文章

    212

    瀏覽量

    37969
  • LUT
    LUT
    +關(guān)注

    關(guān)注

    0

    文章

    50

    瀏覽量

    12851

原文標(biāo)題:用LUT來搭建乘法器

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

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

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    應(yīng)用于CNN卷積運算的LUT乘法器設(shè)計

    。利用xilinx器件LUT結(jié)構(gòu)特征,設(shè)計出的
    的頭像 發(fā)表于 11-30 11:45 ?3181次閱讀
    應(yīng)用于CNN<b class='flag-5'>中</b>卷積運算的<b class='flag-5'>LUT</b><b class='flag-5'>乘法器</b>設(shè)計

    乘法器和混頻器的區(qū)別

    乘法器和混頻器的區(qū)別  表面上看,都是做“乘法”了,其實區(qū)別很大。     乘法器,一般叫模擬乘法器,是用于
    發(fā)表于 11-13 16:37

    FPGA乘法器設(shè)計

    剛接觸學(xué)習(xí)FPGA,懂得verilog HDL的基礎(chǔ)語法,有一塊帶XILINX的ZYNQ xc7z020的開發(fā)板,開發(fā)軟件用的是vivado;現(xiàn)在要設(shè)計一個16位的乘法器,功能已經(jīng)實現(xiàn)。但需要考查
    發(fā)表于 02-25 16:03

    如何分析傳統(tǒng)乘法器和vedic乘法器的時序延遲?

    我正在研究一種適用于Vedic Maths算法的乘法器。我想對傳統(tǒng)乘法器和vedic乘法器的時序延遲進行比較分析。我有spartan 3e和Xilinx 12.1時序分析器。請任何人都
    發(fā)表于 07-04 06:36

    怎么設(shè)計基于FPGA的WALLACETREE乘法器

    在數(shù)字信號處理,乘法器是整個硬件電路時序的關(guān)鍵路徑。速度和面積的優(yōu)化是乘法器設(shè)計過程的兩個主要考慮因素。由于現(xiàn)代可編程邏輯芯片F(xiàn)PGA的集成度越來越高,及其相對于ASIC設(shè)計難度較低和產(chǎn)品設(shè)計
    發(fā)表于 09-03 07:16

    乘法器的基本概念

    乘法器的基本概念 乘法器是一種完成兩個互不相關(guān)的模擬信號相乘作用的電子器件。理想乘法器的輸出特性方程可由下式表示: UO
    發(fā)表于 05-18 14:03 ?1.5w次閱讀
    <b class='flag-5'>乘法器</b>的基本概念

    1/4平方乘法器

    1/4平方乘法器 這種乘法器是根據(jù)數(shù)學(xué)關(guān)系設(shè)計而成的,因此稱為1/4平方乘法電路,或稱1/4平方乘法器。其
    發(fā)表于 05-18 14:08 ?2146次閱讀
    1/4平方<b class='flag-5'>乘法器</b>

    脈沖-寬度-高度調(diào)制乘法器

    脈沖-寬度-高度調(diào)制乘法器 脈沖-寬度-高度調(diào)制乘法器雙稱為時間分割乘法器。這類乘法器電路原理圖如圖5.4-24A所示。圖中,三角波電壓UT和模擬輸入電壓UY
    發(fā)表于 05-18 14:23 ?2210次閱讀
    脈沖-寬度-高度調(diào)制<b class='flag-5'>乘法器</b>

    變跨導(dǎo)乘法器

    變跨導(dǎo)乘法器 這種乘法器現(xiàn)在已經(jīng)成為一種工業(yè)上的標(biāo)準(zhǔn)方法,是應(yīng)用極為廣泛的優(yōu)質(zhì)乘法器。
    發(fā)表于 05-18 16:00 ?1374次閱讀

    乘法器在通信電路的應(yīng)用

    乘法器在通信電路的應(yīng)用 普通振幅調(diào)制
    發(fā)表于 05-18 17:46 ?1487次閱讀

    基于IP核的乘法器設(shè)計

    實驗?zāi)康?1、熟悉Xilinx的ISE 軟件的使用和設(shè)計流程; 2、掌握Modelsim仿真軟件的使用方法; 3、用乘法運算符實現(xiàn)一個16*16 乘法器模塊; 4、用IP核實現(xiàn)一個16*16
    發(fā)表于 05-20 17:00 ?68次下載
    基于IP核的<b class='flag-5'>乘法器</b>設(shè)計

    進位保留Barrett模乘法器設(shè)計

    在有限域上的模算術(shù)運算,乘法運算最基礎(chǔ)且最耗時,因此為提高公鑰密碼體質(zhì)的運算速度,設(shè)計出運算速度快、消耗時間少的模乘法器非常關(guān)鍵。該文設(shè)計出進位保留Barrett模乘法器,
    發(fā)表于 11-08 15:18 ?32次下載
    進位保留Barrett模<b class='flag-5'>乘法器</b>設(shè)計

    硬件乘法器是什么?

    硬件乘法器是現(xiàn)代計算機必不可少的一部分,其基礎(chǔ)是加法器結(jié)構(gòu)。
    的頭像 發(fā)表于 05-11 10:52 ?9176次閱讀

    使用verilogHDL實現(xiàn)乘法器

    本文在設(shè)計實現(xiàn)乘法器時,采用了4-2和5-2混合壓縮器對部分積進行壓縮,減少了乘法器的延時和資源占 用率;經(jīng)XilinxISE和QuartusII兩種集成開發(fā)環(huán)境下的綜合仿真測試,與用
    發(fā)表于 12-19 13:30 ?1.1w次閱讀
    使用verilogHDL實現(xiàn)<b class='flag-5'>乘法器</b>

    乘法器原理_乘法器的作用

    乘法器(multiplier)是一種完成兩個互不相關(guān)的模擬信號相乘作用的電子器件。它可以將兩個二進制數(shù)相乘,它是由更基本的加法器組成的。乘法器可以通過使用一系列計算機算數(shù)技術(shù)來實現(xiàn)。
    發(fā)表于 02-18 15:08 ?2.8w次閱讀
    <b class='flag-5'>乘法器</b>原理_<b class='flag-5'>乘法器</b>的作用