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

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

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

vLUT表:寫 讀地址輸入、數(shù)據(jù)輸出 入這里面包括

FPGA之家 ? 來源:陳年麗 ? 2019-07-13 09:24 ? 次閱讀

最近的項目邏輯資源不夠,因為應(yīng)用需求,要一組256個四輸入的模塊,后來改吧改吧,改成了一組165個6輸入的模塊,解決了需求問題,為什么啊,因為四輸入的那個模塊浪費xilinx的資源了,xilinx的LUT是六輸入的,xilinx在7系列前的LUT還是五輸入的,現(xiàn)在都變成了六輸入(其實是兩個五輸入共享連接線)。

具體應(yīng)用不說了,來看看關(guān)于LUT表這件事。

LUT表是最基本的邏輯單元,入門書籍必有的內(nèi)容,基本原理這里不說了。

一般的,有SLICEM和SLICEL兩種,M代表存儲,L代表邏輯,好記吧。

L的功能M也能實現(xiàn),M比L更復(fù)雜,所以我們直接去看SLICEM。

圖上面時直接從工具里面截的,這里面包括了:

6位讀地址輸入(A1-A6)

8位寫地址輸入(WA1-WA7)

時鐘(CLK)

寫使能(WEN)

數(shù)據(jù)輸入(DI1)

數(shù)據(jù)輸出(O6)

移位寄存器輸出(MC31)

除此之外,由于DI2輸入線和O5輸出的存在,這片LUT還可以被配置為32-depth,2-bit-data-wide的RAM

為什么寫是8位,讀是6位呢?有疑惑就看datasheet或者user guide啊,翻出UG474,里面有張圖,看了就明白了:

拿一個SLICEM的四個LUT搭一個256的單口RAM,看到了吧,寫地址8位直接用,讀地址用6位,然后高兩bit,一個給F7MUX,一個給F8MUX,相當(dāng)于做了兩級二選一。

還有一個重點要說的是移位寄存器,移位寄存器用的最多的地方就是做delay 了。

下面是簡單的兩段代碼:

always @(posedge clk )begin

shift_r <= {shift_r[62:0],rxp} ;

end

always @(posedge clk )begin

txp <= shift_r[63];

end

大概的意思就是將rxp輸入延遲64個時鐘周期,然后輸出。在很多文檔里面都說過了,LUT單元是可以直接生成移位寄存器的,當(dāng)然必須是SLICEM里面的LUT的,我們看看最后生成的結(jié)果是啥樣的:

有點不好看啊,我倆簡單解釋一下:

1.紅線代表LTU讀地址輸入,讀地址代表了移位寄存器輸出的位數(shù),寫31就是延遲32位,可見所有的地址都被連接在一個高電平上,5h11111=31,一般情況下,是A[5:1]表征地址,A[0]固定為高

2.青色是時鐘,這對于SLICEL來說是沒有的,因為有了時鐘,才可能同步操作;

3.藍色是需要移位的數(shù)據(jù),程序里面的rxp,直接輸入到了LUT-B的數(shù)據(jù)DI1口

4.黃色從LUT-B的MC31輸出的結(jié)果,一個LUT可以作為32位的移位寄存器,因為需要移位64次, 所以需要兩個LUT級聯(lián)才能完成完整的移位結(jié)果

5.白色是最后的輸出,注意是從O6輸出的,即級聯(lián)之后64位移位后的結(jié)果,再過一級FF之后,就是txp 。

這種寫法比較簡單直觀,也有一些同學(xué)想要規(guī)范,那我們調(diào)用一下官方的原語試試:

SRL16E #(

.INIT(16'h0000), // Initial contents of shift register

.IS_CLK_INVERTED(1'b0) // Optional inversion for CLK

)

SRL16E_inst (

.Q(SRL10_r), // 1-bit output: SRL Data

.CE(1), // 1-bit input: Clock enable

.CLK(clk), // 1-bit input: Clock

.D(rxp ), // 1-bit input: SRL Data

// Depth Selection inputs: A0-A3 select SRL depth

.A0(0),

.A1(1),

.A2(0),

.A3(1) //0x1010= 10

);

這是一個經(jīng)典的16位寄存器的小模塊,看看布線后成啥樣:

1.紅線代表LTU讀地址輸入,讀地址代表了移位寄存器輸出,一般情況下,是A[5:1]表征地址,但是我們看到黃色線代表的數(shù)據(jù)激怒的是DI2,也就是用了兩個5輸入LUT中的一個,所以真實的地址是4‘h1010 = 10,也就是移位10+1次,A[0]固定為高

2.青色是時鐘;

3.黃色是輸入,rxp ,注意是從DI2口輸入的

4.白色是最后的輸出,注意是從O6輸出的,即10位移位后的結(jié)果,也就是SRL10_r。

7系列因為LUT表地址位增加,因此還支持32位移位的原語,我們來看看:

SRLC32E #(

.INIT(32'h00000000), // Initial contents of shift register

.IS_CLK_INVERTED(1'b0) // Optional inversion for CLK

)

SRLC32E_inst (

.Q(SRL20_r), // 1-bit output: SRL Data

.Q31(SRL31_r), // 1-bit output: SRL Cascade Data

.A(5'd20), // 5-bit input: Selects SRL depth

.CE(1), // 1-bit input: Clock enable

.CLK(clk), // 1-bit input: Clock

.D(rxp ) // 1-bit input: SRL Data

);

看看會是怎樣布線的:

1.紅線代表LTU讀地址輸入,讀地址代表了移位寄存器輸出,一般情況下,是A[5:1]表征地址,是5‘h10100 = 20,也就是移位20次,A[0]固定為高

2.青色是時鐘;

3.黃色是輸入,rxp ,注意是從DI1口輸入的

4.白色時最后的輸出,注意是從O6輸出的,即20+1位移位后的結(jié)果,也就是SRL20_r。

5.咖啡色是32位移位后的結(jié)果,也就是SRL31_r

這個移位跟信號實際delay的關(guān)系,還要看個仿真才能看明白:

圖要放大看,rxp_r信號delay了11個時鐘節(jié)拍(計數(shù)器從750到761)得到信號SRL10_r,delay了21個時鐘節(jié)拍得到了信號SRL20_r,delay了32個時鐘節(jié)拍得到信號SRL31_r。

也就是delay的時鐘節(jié)拍N,與配置的LUT地址A之間的關(guān)系為:

N = A + 1

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

    關(guān)注

    2

    文章

    257

    瀏覽量

    22197

原文標(biāo)題:二大爺聊FPGA(8).LUT與移位寄存器

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

收藏 人收藏

    評論

    相關(guān)推薦

    labview基于的簡單的循環(huán)采集數(shù)據(jù)包括命令及報警功

    (Resource Name)、比特率(Baud Rate)、命令輸入欄(Write String)及其開關(guān)控件、命令輸出欄(Read String)及其開關(guān)控件、關(guān)閉采集函數(shù)開關(guān)
    發(fā)表于 12-05 12:14

    I2C 隨機 地址的問題

    I2C 隨機 操作過程 開始--發(fā)送器件地址)--ack--發(fā)送字節(jié)地址--ack--開始--發(fā)送器件地址
    發(fā)表于 12-05 08:59

    零基礎(chǔ)學(xué)FPGA(十一)初江湖之i2c通信

    位,這里要送地址,即1010_0000;下面我來解釋一下上圖的代碼為什么這樣(1)首先在SCL在低電平期間屬于數(shù)據(jù)穩(wěn)定期,我們可以向
    發(fā)表于 04-07 17:09

    FIFO使能問題

    , wr, rst, clk; //,,復(fù)位,時鐘output [7:0] dataout;//數(shù)據(jù)輸出output full, empty;//滿,空wire [7:0] dat
    發(fā)表于 10-07 15:02

    電池管理器件的/操作

    電池管理器件的/操作 Dallas Semiconductor 的電池管理IC 采用相同的通信協(xié)議和相同的存儲器地址不同類型的存儲器可以分別進行/
    發(fā)表于 04-12 08:50 ?21次下載

    Linux下flash操作、、擦除步驟

    的一段區(qū)域。 需要注意的是,在對NOR FLASH進行讀寫數(shù)據(jù)時,需要參考對應(yīng)的datasheet,例如這里選用的NOR FLASH、、擦除步驟如下: 通過上面的表格就知道進行相應(yīng)
    發(fā)表于 06-30 09:49 ?1.5w次閱讀
    Linux下flash操作<b class='flag-5'>讀</b>、<b class='flag-5'>寫</b>、擦除步驟

    如何使用寄存器級&控制基于PXI平臺的FPGA

    如何使用寄存器級&控制基于PXI平臺的FPGA
    發(fā)表于 10-16 15:20 ?14次下載
    如何使用寄存器級<b class='flag-5'>讀</b>&<b class='flag-5'>寫</b>控制基于PXI平臺的FPGA

    MCS-51單片機指令系統(tǒng)“-改-”指令

    單片機首先將欲修改的寄存器的內(nèi)容回ALU,對相應(yīng)位進行修改,然后再整個寫回原來的寄存器地址,完成該功能的指令就叫做“-改-”指令。
    發(fā)表于 11-23 13:38 ?1611次閱讀

    利用VHDL語言和格雷碼對地址進行編碼的異步FIFO的設(shè)計

    信號包括異步的時鐘(wr_clk)和時鐘(rd_clk)、與時鐘同步的寫有效(wren)和數(shù)據(jù)
    的頭像 發(fā)表于 08-02 08:10 ?2167次閱讀
    利用VHDL語言和格雷碼對<b class='flag-5'>地址</b>進行編碼的異步FIFO的設(shè)計

    具有/遙測功能的μ模塊調(diào)節(jié)器

    具有/遙測功能的μ模塊調(diào)節(jié)器
    發(fā)表于 04-30 11:18 ?3次下載
    具有<b class='flag-5'>讀</b>/<b class='flag-5'>寫</b>遙測功能的μ模塊調(diào)節(jié)器

    PIC何謂-修改-,導(dǎo)致的問題及其解決之道

    何謂-修改-,導(dǎo)致的問題及其解決之道: 只要PICmicro的命令,所處理的FILE (暫存器,內(nèi)存,和I/O的統(tǒng)稱),其最終的值,和命令處理前的值有關(guān),那么,這種命令便是所謂的-修改-
    發(fā)表于 11-16 15:51 ?2次下載
    PIC何謂<b class='flag-5'>讀</b>-修改-<b class='flag-5'>寫</b>,導(dǎo)致的問題及其解決之道

    單片機里面“”32bit地址“”與所指向的“8bit數(shù)據(jù)“的關(guān)系

    單片機里面“”地址“”與所指向的"數(shù)據(jù)"的關(guān)系單片機里面“”地址“”與所指向的"數(shù)據(jù)"的關(guān)系對于
    發(fā)表于 11-18 20:06 ?10次下載
    單片機<b class='flag-5'>里面</b>“”32bit<b class='flag-5'>地址</b>“”與所指向的“8bit<b class='flag-5'>數(shù)據(jù)</b>“的關(guān)系

    車載ECU嵌入式設(shè)備的診斷測試–

    本篇講述UDS中的服務(wù),讀寫服務(wù)幾乎是工程師日常使用最為頻繁的服務(wù),特別是服務(wù)。
    的頭像 發(fā)表于 10-28 15:43 ?823次閱讀
    車載ECU嵌入式設(shè)備的診斷測試–<b class='flag-5'>讀</b>和<b class='flag-5'>寫</b>

    優(yōu)化數(shù)據(jù)庫性能使用LSI MegaRAID CacheCade Pro 2.0/緩存軟件

    電子發(fā)燒友網(wǎng)站提供《優(yōu)化數(shù)據(jù)庫性能使用LSI MegaRAID CacheCade Pro 2.0/緩存軟件.pdf》資料免費下載
    發(fā)表于 08-10 17:38 ?0次下載
    優(yōu)化<b class='flag-5'>數(shù)據(jù)</b>庫性能使用LSI MegaRAID CacheCade Pro 2.0<b class='flag-5'>讀</b>/<b class='flag-5'>寫</b>緩存軟件

    為什么異步fifo中地址同步在時鐘域時序分析不通過?

    只考慮了地址的同步,而未考慮其他相關(guān)的電路。例如,當(dāng)地址同步到時鐘域時,需要同時將指針和
    的頭像 發(fā)表于 10-18 15:23 ?633次閱讀