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

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

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

在FPGA設(shè)計(jì)中可以用LUT組建分布式的RAM

FPGA設(shè)計(jì)論壇 ? 來(lái)源:FPGA設(shè)計(jì)論壇 ? 作者:FPGA設(shè)計(jì)論壇 ? 2022-05-13 16:33 ? 次閱讀

一、查找表

LUT就是查找表,對(duì)于4輸入的LUT而言,實(shí)際上就是4位地址位,一位數(shù)據(jù)位的存儲(chǔ)器,能夠存儲(chǔ)16位數(shù)據(jù),所以我們?cè)?a href="http://www.ttokpm.com/soft/data/30-91/" target="_blank">FPGA設(shè)計(jì)中可以用LUT組建分布式的RAM。

這樣也可以解釋我們?cè)谠O(shè)計(jì)中為什么要采用流水線的實(shí)現(xiàn)方法

因?yàn)楫?dāng)輸入數(shù)據(jù)的位數(shù)遠(yuǎn)大于一個(gè)LUT的輸入時(shí),就需要用多個(gè)LUT級(jí)聯(lián)來(lái)實(shí)現(xiàn)邏輯,那么級(jí)聯(lián)產(chǎn)生的延時(shí)也就不可避免了,這樣就會(huì)制約系統(tǒng)的運(yùn)行頻率。那么為了避免級(jí)聯(lián)數(shù)過(guò)于多,就采用插入寄存器的方法來(lái)實(shí)現(xiàn)。

舉一個(gè)簡(jiǎn)單的例子,如果要實(shí)現(xiàn)一個(gè)6*1的mux可以用一個(gè)6輸入的LUT或者是2個(gè)4輸入的LUT來(lái)實(shí)現(xiàn),6輸入的LUT相當(dāng)于是6位地址線一位數(shù)據(jù)位,能夠存儲(chǔ)64bit的數(shù)據(jù),而采用兩個(gè)4輸入的LUT的話,它的總?cè)萘看笮?2位數(shù)據(jù)。

如果用6輸入的LUT實(shí)現(xiàn)4輸入LUT的功能,那么就浪費(fèi)了1-16/64=75%的資源,所以采用少輸入的LUT可以更好的節(jié)省面積和資源,但是呢如果LUT采用的是2輸入的呢,那樣豈不是更好嗎,不是的,因?yàn)閷?duì)于多輸入的信號(hào)處理的時(shí)候,就需要有多個(gè)LUT的級(jí)聯(lián)來(lái)實(shí)現(xiàn),而級(jí)聯(lián)有不可避免的會(huì)導(dǎo)致延時(shí)過(guò)分,導(dǎo)致時(shí)序不滿足。因此在實(shí)際的FPGA產(chǎn)品中多采用的是4輸入或者6輸入的LUT。

5cda9be4-d291-11ec-bce3-dac502259ad0.jpg

圖 4輸入的LUT

CLB是xilinx基本邏輯單元,每個(gè)CLB包含兩個(gè)slices,每個(gè)slices由4個(gè)(A,B,C,D)6輸入LUT和8個(gè)寄存器組成(中間應(yīng)該還有一些選擇器、與非門、或非門之類的東西)。放一個(gè)slices的內(nèi)部圖

5cf78ed4-d291-11ec-bce3-dac502259ad0.png

同一CLB中的兩片slices沒有直接的線路連接,分屬于兩個(gè)不同的列。每列擁有獨(dú)立的快速進(jìn)位鏈資源。

5d195668-d291-11ec-bce3-dac502259ad0.png

slice分為兩種類型 SLICEL, SLICEM

(1)SLICEL可用于產(chǎn)生邏輯,算術(shù),ROM。

(2)SLICEM除以上作用外還可配置成分布式RAM或32位的移位寄存器。每個(gè)CLB可包含兩個(gè)SLICEL或者一個(gè)SLICEL與一個(gè)SLICEM.

分布式RAM

SLICEM可以配置成分布式RAM,一個(gè)SLICEM可以配置成以下容量的RAM

5d2cd698-d291-11ec-bce3-dac502259ad0.jpg

多bit的情況需要增加相應(yīng)倍數(shù)的LUT進(jìn)行并聯(lián)。

分布式RAM和 BLOCK RAM的選擇遵循以下方法:

1. 小于或等于64bit容量的的都用分布式實(shí)現(xiàn)

2. 深度在64~128之間的,若無(wú)額外的block可用分布式RAM。要求異步讀取就使用分布式RAM。數(shù)據(jù)寬度大于16時(shí)用block ram.

3. 分布式RAM有比block ram更好的時(shí)序性能。分布式RAM在邏輯資源CLB中。而BLOCK RAM則在專門的存儲(chǔ)器列中,會(huì)產(chǎn)生較大的布線延遲,布局也受制約。

移位寄存器(SLICEM)

SLICEM中的LUT能在不使用觸發(fā)器的情況下設(shè)置成32bit的移位寄存器, 4個(gè)LUT可級(jí)聯(lián)成128bit的移位寄存器。并且能夠進(jìn)行SLICEM間的級(jí)聯(lián)形成更大規(guī)模的移位寄存器。

5d3d92a8-d291-11ec-bce3-dac502259ad0.jpg

MUX

一個(gè)LUT可配置成4:1MUX.

兩個(gè)LUT可配置成最多8:1 MUX

四個(gè)LUT可配置成16個(gè)MUX

5d6e35f2-d291-11ec-bce3-dac502259ad0.jpg

同樣可以通過(guò)連接多個(gè)SLICES達(dá)成更大規(guī)模設(shè)計(jì),但是由于SLICE沒有直接連線,需要使用布線資源,會(huì)增加較大延遲。

進(jìn)位鏈

每個(gè)SLICE有4bit的進(jìn)位鏈。每bit都由一個(gè)進(jìn)位MUX(MUXCY)和一個(gè)異或門組成,可在實(shí)現(xiàn)加法/減法器時(shí)生成進(jìn)位邏輯。該MUXCY與XOR也可用于產(chǎn)生一般邏輯。

設(shè)計(jì)中我們可以用vivado查看設(shè)計(jì)底層的LUT實(shí)現(xiàn)圖,具體的差看方法https://blog.csdn.net/qijitao/article/details/51371434

二、LUT實(shí)現(xiàn)原理

LUT中文名字叫查找表。以7系列的FPGA為例,每一個(gè)Slice里面有四個(gè)LUT。FPGA就是通過(guò)LUT實(shí)現(xiàn)大量的組合邏輯,以及SLICEM里面的LUT還可以構(gòu)成RAM,Shift Register,以及Multiplexers。這篇文章我們一起來(lái)學(xué)習(xí)LUT如何構(gòu)成組合邏輯。

LUT,中文名字叫做查找表,其原理其實(shí)也就是一個(gè)一個(gè)查找表,根據(jù)輸入去找到相應(yīng)位置的信號(hào),然后做輸出。說(shuō)白了就好像一個(gè)小容量的ROM,把輸入當(dāng)作地址信號(hào),對(duì)LUT里面預(yù)存的內(nèi)容進(jìn)行尋址。

7系列的FPGA的LUT有6個(gè)輸入端口(A1-6),然后有兩個(gè)輸出端口(O5,O6)。下圖是SLICEL里面的LUT。


5de5c00e-d291-11ec-bce3-dac502259ad0.jpg

其可以實(shí)現(xiàn)6輸入的布爾組合邏輯函數(shù),輸入信號(hào)為A1,A2,A3,A4,A5,A6,輸出端口為O6。如下

O6=f(A1,A2,A3,A4,A5,A6)

其實(shí)現(xiàn)方式就是將輸入(A1,A2…A6)對(duì)應(yīng)的輸出在LUT里面預(yù)存好(這一步在我們用bit文件配置FPGA時(shí)實(shí)現(xiàn)),然后把輸入信號(hào)當(dāng)作地址信號(hào)去把對(duì)應(yīng)的輸出信號(hào)調(diào)出來(lái)。

同樣其還可以構(gòu)成兩個(gè)5輸入的布爾組合邏輯函數(shù),其中這兩個(gè)函數(shù)共用5個(gè)輸入信號(hào)(A1,A2,A3,A4,A5),A6被拉高,O5,O6分別是兩個(gè)布爾邏輯的輸出。

O5=f(A1,A2,A3,A4,A5)

O6=f(A1,A2,A3,A4,A5)

故這也相當(dāng)于實(shí)現(xiàn)的是一個(gè)5輸入2輸出的邏輯函數(shù)。

[O5,O6]=f(A1,A2,A3,A4,A5)

二、LUT提升

總結(jié)一下,就好比單個(gè)LUT里面可以預(yù)存 2^6=64個(gè)結(jié)果。那么單個(gè)LUT可以實(shí)現(xiàn)

(1)輸入信號(hào)最多為6bit,輸出信號(hào)為1bit的的布爾邏輯函數(shù);

(2)輸入信號(hào)最多為5bit,輸出信號(hào)為2bit的邏輯。

一個(gè)SLICE里面有四個(gè)LUT故最多可以預(yù)存的輸出信號(hào)個(gè)數(shù)為 26*4=28。

因此在一個(gè)SLICE里面,借助選擇器將多個(gè)LUT進(jìn)行互連,可以實(shí)現(xiàn)輸入數(shù),輸出數(shù)最多為如下所示的邏輯。

(1)2個(gè)LUT通過(guò)互連可以構(gòu)成7bit輸入,單bit輸出的邏輯。實(shí)現(xiàn)方式為兩個(gè)LUT的輸入信號(hào)A1,A2,A3,A4,A5,A6接到一起,輸出信號(hào)經(jīng)過(guò)選擇器選擇輸出,選擇器的選擇信號(hào)也是邏輯函數(shù)的一個(gè)輸入信號(hào)。

將邏輯函數(shù)的輸出送到Storage Element便可以形成同步時(shí)序邏輯。

5dfadf84-d291-11ec-bce3-dac502259ad0.jpg


(2)4個(gè)LUT通過(guò)互連可以構(gòu)成8bit輸入,單bit輸出的邏輯。實(shí)現(xiàn)方式大家可以根據(jù)上面的實(shí)現(xiàn)方式自行推理。

(3)2個(gè)LUT通過(guò)互連可以構(gòu)成6bit輸入,2bit輸出的邏輯。實(shí)現(xiàn)方式自行推理。

(4)4個(gè)LUT通過(guò)互連可以構(gòu)成7bit輸入,2bit輸出的邏輯。實(shí)現(xiàn)方式自行推理。

審核編輯 :李倩

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

    關(guān)注

    9

    文章

    428

    瀏覽量

    26421
  • RAM
    RAM
    +關(guān)注

    關(guān)注

    8

    文章

    1344

    瀏覽量

    114214
  • 分布式
    +關(guān)注

    關(guān)注

    1

    文章

    824

    瀏覽量

    74396

原文標(biāo)題:FPGA學(xué)習(xí)- LUT查找表原理和編程方式

文章出處:【微信號(hào):gh_9d70b445f494,微信公眾號(hào):FPGA設(shè)計(jì)論壇】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    FPGARAM分布和特性

    選擇FPGA時(shí),關(guān)注LUT(Look-Up Table)和BRAM(Block RAM)是非常重要的,因?yàn)樗鼈兪?b class='flag-5'>FPGA架構(gòu)
    的頭像 發(fā)表于 11-21 15:03 ?1663次閱讀
    <b class='flag-5'>FPGA</b><b class='flag-5'>中</b>塊<b class='flag-5'>RAM</b>的<b class='flag-5'>分布</b>和特性

    分布式軟件系統(tǒng)

    降到最低。負(fù)載各處理機(jī)之間分擔(dān),可以避免臨界瓶頸。 4、當(dāng)現(xiàn)有機(jī)構(gòu)已存在幾個(gè)數(shù)據(jù)庫(kù)系統(tǒng),而且實(shí)現(xiàn)全局應(yīng)用的必要性增加時(shí),就可以由這些數(shù)據(jù)庫(kù)自下而上構(gòu)成
    發(fā)表于 07-22 14:53

    Quartus II 定制的RAM分布式的還是塊的

    Quartus II 定制的RAM分布式的還是塊的
    發(fā)表于 03-10 17:51

    FPGALUT設(shè)計(jì)

    ,能夠存儲(chǔ)16bit數(shù)據(jù),這也是LUT能被用于組建分布式RAM的原因。如果要構(gòu)成一個(gè)6輸入1輸出MUX,可以通過(guò)兩片4輸入查找表級(jí)聯(lián),也可直
    發(fā)表于 07-30 18:11

    FPGARAM有與其他產(chǎn)品有什么不同?

    實(shí)現(xiàn)了不同的邏輯功能。查找表(Look-Up-Table) 簡(jiǎn)稱為LUT,LUT 本質(zhì)上就是一個(gè)RAM。目前FPGA 多使用4 輸入的
    發(fā)表于 08-23 09:14

    分布式RAM怎么異步讀取

    使用分布式RAM,因?yàn)槲臋n說(shuō)只要“我們”為低,讀取地址就可以在任何時(shí)間被斷言,讀取存儲(chǔ)器數(shù)據(jù)延遲后可用,Tilo ..請(qǐng)幫忙..問(wèn)候KAPS以上來(lái)自于谷歌翻譯以下為原文I plan
    發(fā)表于 04-16 09:52

    分布式RAM綜合問(wèn)題

    大家好 ...我實(shí)現(xiàn)大小為65535 * 3的分布式RAM時(shí)出現(xiàn)問(wèn)題,大約2小時(shí)內(nèi)合成時(shí)發(fā)生了很大的延遲并且沒有停止,對(duì)這個(gè)問(wèn)題有什么解釋嗎?提前致謝以上來(lái)自于谷歌翻譯以下為原文H
    發(fā)表于 06-25 11:03

    如何利用FPGA設(shè)計(jì)無(wú)線分布式采集系統(tǒng)?

    近些年來(lái),隨著電子技術(shù)的發(fā)展,無(wú)線通信技術(shù)、計(jì)算機(jī)網(wǎng)絡(luò)的發(fā)展,分布式無(wú)線數(shù)據(jù)采集網(wǎng)絡(luò)技術(shù)開始興起,并迅速的應(yīng)用到各個(gè)領(lǐng)域。一些地形復(fù)雜,不適合人類出現(xiàn)的區(qū)域需要進(jìn)行數(shù)據(jù)采集的情況下,都可以適當(dāng)
    發(fā)表于 10-14 07:10

    分布式RAM和Block RAM之間究竟有什么區(qū)別?

    您好!分布式RAM和Block RAM之間究竟有什么區(qū)別??jī)烧叨贾皇切酒瑑?nèi)存,對(duì)吧?但我不知道兩者之間的區(qū)別。和..下一個(gè)問(wèn)題.. isaboutMUX ..根據(jù)7系列概述,7系列FPGA
    發(fā)表于 07-19 06:37

    FPGA設(shè)計(jì)如何用LUT組建分布式RAM

    一、查找表LUT就是查找表,對(duì)于4輸入的LUT而言,實(shí)際上就是4位地址位,一位數(shù)據(jù)位的存儲(chǔ)器,能夠存儲(chǔ)16位數(shù)據(jù),所以我們FPGA設(shè)計(jì)
    發(fā)表于 07-28 08:42

    3系列FPGA中使用LUT構(gòu)建分布式RAM(2)

    帶有異步寫/同步讀的SRAM,其中的同步讀取可以使用與分布式RAM相關(guān)聯(lián)的觸發(fā)器實(shí)現(xiàn)。
    發(fā)表于 02-11 13:54 ?2342次閱讀
    3系列<b class='flag-5'>FPGA</b>中使用<b class='flag-5'>LUT</b>構(gòu)建<b class='flag-5'>分布式</b><b class='flag-5'>RAM</b>(2)

    3系列FPGA中使用LUT構(gòu)建分布式RAM(3)

    前面簡(jiǎn)要介紹了Spartan-3系列FPGA分布式RAM的基本特性。為什么不從更高級(jí)的Virtex系列入手呢?我仔細(xì)看了一下各個(gè)系列的介紹、對(duì)比,Spartan系列基本就是Virtex系列的精簡(jiǎn)版,其基本原理是一樣的,所以從簡(jiǎn)
    發(fā)表于 02-11 13:57 ?1245次閱讀
    3系列<b class='flag-5'>FPGA</b>中使用<b class='flag-5'>LUT</b>構(gòu)建<b class='flag-5'>分布式</b><b class='flag-5'>RAM</b>(3)

    3系列FPGA中使用LUT構(gòu)建分布式RAM(4)

    前面講了分布式RAM的方方面面,下面以RAM_16S為例,分別給出其VHDL和Verilog HDL下面的模板代碼(ISE Projec
    發(fā)表于 02-11 13:59 ?1468次閱讀

    使用FPGA調(diào)用RAM資源的詳細(xì)說(shuō)明

    FPGA可以調(diào)用分布式RAM和塊RAM兩種RAM,當(dāng)我們編寫verilog代碼的時(shí)候如果合理的編
    發(fā)表于 12-30 16:27 ?9次下載

    zookeeper分布式原理

    Zookeeper是一個(gè)開源的分布式協(xié)調(diào)服務(wù),可以用于構(gòu)建高可用、高性能的分布式系統(tǒng)。它提供了一個(gè)簡(jiǎn)單且高效的層次命名空間,可以用來(lái)存儲(chǔ)配置信息、狀態(tài)信息、命名服務(wù)等。Zookeepe
    的頭像 發(fā)表于 12-03 16:33 ?519次閱讀