基础002_V7-CLB
一、綜述
參考ug474.pdf:
7系列中,一個(gè)CLB包含兩個(gè)slice: 每個(gè)CLB的資源: CLB可配置的主要功能:二、主要功能
LUT是基本單元,例如選擇器assign muxout =? (sel) ? din_0: din_1; A-shift register 每個(gè)Slice對應(yīng)4個(gè)LUT,而每個(gè)LUT可配32bit的移位寄存器: 對應(yīng)指令: always @(posedge clk)srl <= {srl[31:0],din}; assign dout = srl[20];
當(dāng)添加復(fù)位信號:
always@ (posedge clk)if(rst)srl <= 32'd0;elsesrl <= {srl[31:0],din]}; assign dout = srl[20]
為什么結(jié)構(gòu)不一致?因?yàn)長UT沒有同步復(fù)位控制輸入端,因此綜合器無法將代碼綜合成有LUT實(shí)現(xiàn)的結(jié)構(gòu),因此寫代碼需要根據(jù)相應(yīng)結(jié)構(gòu)編寫。
每個(gè)Slice可擴(kuò)展為128bit的移位寄存器: B-Distributed RAM 每個(gè)LUT為6選1,或2個(gè)5選1,其中SLICEM掛distributed RAM以及Shift Registers,關(guān)于Distributed RAM可實(shí)現(xiàn)的功能:以下列舉了一些適用于分布式RAM的情況:
1. 深度小于64-bit
2. 在深度大于64-bit小于128-bit情況下,有時(shí)延要求并需要異步輸出(其clock-to-out時(shí)間小,并且布線比Block RAM自由)
3. 數(shù)據(jù)寬度小于16-bit
(個(gè)人觀點(diǎn):這里配置RAM調(diào)用FPGA內(nèi)部邏輯資源,而Block RAM blocks內(nèi)部的RAM只能作為RAM使用,因此在時(shí)序沒有要求,且固定RAM容量有剩余的情況下,不建議配置CLB中的RAM,固定RAM容量不夠,可用CLB配置作為補(bǔ)充)。
C-Multiplexer
CLB還有一個(gè)重要功能:多路復(fù)用器(multiplexer)。
在一個(gè)Slice中包含有三個(gè)多路復(fù)用器:F7MUXA、F7MUXB和F8MUX。其中F7MUXA組合LUT A和LUT B成為7輸入LUT,F7MUXB組合LUT C和LUT D成為7輸入LUT,而F8MUX組合1個(gè)Slice中的4個(gè)LUT成為8輸入LUT。
因此通過F7MUXA、F7MUXB和F8MUX的搭配,1個(gè)Slice可以實(shí)現(xiàn)4:1、8:1和16:1多路復(fù)用器,
- 一個(gè)LUT實(shí)現(xiàn)4:1多路復(fù)用器
- 2個(gè)LUT實(shí)現(xiàn)8:1多路復(fù)用器
- 4個(gè)LUT實(shí)現(xiàn)16:1多路復(fù)用器
如圖1、2、3所示:
? D-Carry logic
?每個(gè)slice有4bits,每個(gè)bit包含一個(gè)多路復(fù)用和一個(gè)專用異或門XOR(用于加/減運(yùn)算):?
每個(gè)SLICE的Carry logic圖:
三、原語
具體可參考ug953.pdf,原語列表:
查看CLB相關(guān)的原語用法:
?即可按需要進(jìn)行調(diào)用,例如每個(gè)LUT對應(yīng)32bit的shift register logic,查看原語:
移位計(jì)算方法:
接口說明:
模板調(diào)用:
測試:
module CLB_SRL(clk,rst,din,dout); input clk,rst; input din; output dout; // SRLC32E: 32-bit variable length cascadable shift register LUT (Mapped to a SliceM LUT6) // with clock enable // 7 Series // Xilinx HDL Libraries Guide, version 2015.2 SRLC32E #( .INIT(32'h00000000) // Initial Value of Shift Register ) SRLC32E_inst ( .Q(dout), // SRL data output .Q31(1'b0), // SRL cascade output pin .A(32'h00010100), // 5-bit shift depth select input .CE(1'b1), // Clock enable input .CLK(clk), // Clock input .D(din) // SRL data input ); // End of SRLC32E_inst instantiationendmodule綜合之后的線路圖:
總結(jié)
以上是生活随笔為你收集整理的基础002_V7-CLB的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 淘宝怎样设置不要运费险?
- 下一篇: 基础001_Xilinx V7资源