我一直沒搞明白BUFIO是干嘛用的。
官方解釋有這么一段話,如下:(virtex的)
“BUFIO是用來驅(qū)動I/O列內(nèi)的專用時鐘網(wǎng)絡(luò),這個專用的時鐘網(wǎng)絡(luò)獨(dú)立于全局時鐘資源,適合采集源同步數(shù)據(jù)。BUFIO只能由位于同一時鐘區(qū)域的Clock-Capable I/O驅(qū)動。一個時鐘區(qū)域有4個BURIO,其中的2個可以驅(qū)動相鄰區(qū)域的I/O時鐘網(wǎng)絡(luò)。BUFIO不能驅(qū)動邏輯資源(CLB、BRAM等),因?yàn)镮/O時鐘網(wǎng)絡(luò)只存在于I/O列中。”
就是如果BUFIO只能驅(qū)動IO,到達(dá)不了CLB和RAM,可是數(shù)據(jù)最終是要進(jìn)邏輯的啊,為什么呢?
首先、需要明確BUFIO是輸入用的。BUFIO是用來驅(qū)動輸入時鐘的,將外部時鐘引入FPGA的!與IOBUF不同啊,但與IBUFG類似,時鐘信號進(jìn)FPGA也可以經(jīng)過IBUFG。
其次、再來看BUFIO的輸入和輸出:SPARTAN6 的UG382手冊里這么寫的,如下:
BUFIO2 can drive ISERDES2 and OSERDES2 for either SDR or DDR clocking. BUFIO2 can
also route clock inputs from either a GCLK or a GTP_DUAL tile to a BUFG, DCM, or PLL
clock input. BUFIO2_2CLK can be used to replace one of the BUFIO2s required for DDR
clocking of the ISERDES2 and OSERDES2
(SDR:單邊沿,DDR:雙邊沿)
就是說BUFIO2輸入可以是GCLK(全局時鐘)和GTP_DUAL。然后輸出到BUFG或者,DCM ,PLL的時鐘輸入。
也就是說數(shù)據(jù)流順序 PAD-->BUFIO-->BUFG或者PAD-->BUFIO-->DCM(PLL)--->BUFG不知道有這樣用的嗎。
但實(shí)際應(yīng)用可以這樣,BUFIO配和ISERDES2使用,ISERDES2是將串行數(shù)據(jù)轉(zhuǎn)成并行數(shù)據(jù),相當(dāng)于分頻了。而BUFIO具有分頻的功能。
舉例串行數(shù)據(jù)轉(zhuǎn)成4bit并行數(shù)據(jù):串行數(shù)據(jù)相當(dāng)4分頻,同樣將隨路時鐘clk_in(就是和串行數(shù)據(jù)同步進(jìn)來的時鐘,,作為串行數(shù)據(jù)的采集時鐘)同步BUFIO接進(jìn)FPGA,
BUFIO可以將輸入的隨路時鐘clk_in進(jìn)行4分頻為clk_in4。這樣把clk_in4給BUFG,然后就可以同步將4bit的數(shù)據(jù)輸入采集到邏輯FIFO中去了。
配個圖,看看BUFIO的輸入輸出可以接什么:
輸出鏈接示意圖,如下:可以看到PN-->BUFIO-->BUFG(DCM)或者PN-->BUFIO-->IO,驅(qū)動IO(PN只差分對的P和N)
結(jié)合一下BUFIO的原語結(jié)構(gòu):
可以看出:
- IOCLK就去驅(qū)動IO了或者IOSERDES2的CLK0,1;IODDR2等
- DIVCLK可以去接BUFG或者PLL。
- SERDESSTROB可以去驅(qū)動IOSERDES2的IOCE使能腳了。
以上是對SP6講的,在virtex里面,有文章開頭那句話:BUFIO是用來驅(qū)動I/O列內(nèi)的專用時鐘網(wǎng)絡(luò),這個專用的時鐘網(wǎng)絡(luò)獨(dú)立于全局時鐘資源,適合采集源同步數(shù)據(jù)。BUFIO只能由位于同一時鐘區(qū)域的Clock-Capable I/O驅(qū)動。一個時鐘區(qū)域有4個BURIO,其中的2個可以驅(qū)動相鄰區(qū)域的I/O時鐘網(wǎng)絡(luò)。BUFIO不能驅(qū)動邏輯資源(CLB、BRAM等),因?yàn)镮/O時鐘網(wǎng)絡(luò)只存在于I/O列中。”
就是說virtex里面BUFIO好像只能由Clock-Capable I/O驅(qū)動了。
-
時鐘
+關(guān)注
關(guān)注
11文章
1891瀏覽量
133015 -
CLB
+關(guān)注
關(guān)注
0文章
29瀏覽量
6127 -
i/o
+關(guān)注
關(guān)注
0文章
33瀏覽量
4690
發(fā)布評論請先 登錄
Xilinx FPGA無痛入門,海量教程免費(fèi)下載
如何從Virtex原語切換到Spartan原語?
為什么當(dāng)我將錯誤降級為警告時, 在FPGA編輯器中就找不到BUFIO2了?
請問ISERDESE2原語支持多少位輸入?
FPGA上有哪些額外的原語?
FPGA雙沿采樣之IDDR原語實(shí)現(xiàn) 精選資料推薦
STM32入門之RCC與復(fù)位
Xilinx 7 Series FPGA時鐘網(wǎng)絡(luò)的區(qū)別(BUFG,BUFGR,BUFIO)

Xilinx FPGA常用原語介紹

Vivado IDDR與ODDR原語的使用

(29)FPGA原語設(shè)計(jì)(差分時鐘轉(zhuǎn)單端時鐘)

(30)FPGA原語設(shè)計(jì)(單端時鐘轉(zhuǎn)差分時鐘)

評論