新聞中心

EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 關(guān)于高阻態(tài)和OOC(out of context)綜合方式

關(guān)于高阻態(tài)和OOC(out of context)綜合方式

作者: 時(shí)間:2017-10-11 來(lái)源:網(wǎng)絡(luò) 收藏

Vivado工具支持僅將系統(tǒng)設(shè)計(jì)的一部分進(jìn)行綜合,即(out of context)綜合方式。綜合方式的流程就是將設(shè)計(jì)的某個(gè)模塊單獨(dú)完成綜合操作,這會(huì)帶來(lái)如下可能性:

本文引用地址:http://butianyuan.cn/article/201710/365492.htm

通過(guò)綜合實(shí)現(xiàn)這個(gè)模塊的快速迭代,不用綜合系統(tǒng)的其余部分整個(gè)設(shè)計(jì)的迭代也更快了

利于系統(tǒng)其余部分的快速迭代,如果某部分確定穩(wěn)定不變了,可以對(duì)這個(gè)模塊進(jìn)行綜合操作,保留這個(gè)綜合版本,這樣就可以方便迭代其余部分

某個(gè)模塊的改變只需要再對(duì)此模塊進(jìn)行綜合即可,節(jié)省的時(shí)間用于模塊功能設(shè)計(jì)

OOC綜合方式非常適合IP核的設(shè)計(jì),我們可以將自己的IP核采用OOC方式進(jìn)行綜合然后使用綜合后的輸出結(jié)果

這意味著當(dāng)我們使用IP核時(shí)我們不需要在進(jìn)行IP核的綜合操作,就可以完善系統(tǒng)設(shè)計(jì)

然而如果設(shè)計(jì)中存在三態(tài)(),OOC綜合操作就會(huì)受到影響

FPGA僅支持I/O輸出端口的,在器件內(nèi)部是不允許的

如果你使用OOC綜合方式,Vivado工具并不知道某個(gè)具體的信號(hào)是連接I/O輸出還是在器件內(nèi)部進(jìn)行連接

最后,綜合工具會(huì)將這個(gè)高阻信號(hào)轉(zhuǎn)換為某個(gè)邏輯值,而不是最為進(jìn)行綜合

舉個(gè)例子,下面的代碼就會(huì)帶來(lái)不好的影響:
assign my_signal = enable?din1:1’bz;

通過(guò)OOC方式綜合后,my_signal信號(hào)值就不會(huì)是高阻值Z了

Vivado綜合有兩個(gè)選擇:
1. 綜合操作完全符合HDL代碼
(當(dāng)這個(gè)模塊單元與其余部分有連接時(shí),如果這個(gè)信號(hào)會(huì)最為I/O輸出,那么就不會(huì)有什么影響)
2. 不保留三態(tài)

Vivado工具會(huì)選擇第2項(xiàng),原因是有可能出現(xiàn)任何問(wèn)題之前最好讓用戶知道

這種OOC使用模式比較受到IP開(kāi)發(fā)者的歡迎,但是如果IP集成到大型系統(tǒng)中出現(xiàn)問(wèn)題就比較麻煩了,因此應(yīng)該避免第1項(xiàng)

這同時(shí)也會(huì)給我們帶來(lái)如下問(wèn)題:
如果my_signal信號(hào)只連接到外部輸出I/O呢?
舉個(gè)例子,所有可用的情況下my_signal都連接到I/O接口,我想讓它驅(qū)動(dòng)一個(gè)三態(tài)
我也希望能夠使用OOC方式對(duì)這部分模塊進(jìn)行綜合——同時(shí)保留三態(tài)

滿足上述需求的方式就是在RTL中實(shí)例化一個(gè)三態(tài)緩存(buffer)

具體如下所示:
OBUF u1(.l(din1), .T(n_enable), .O(my_signal));

這樣就能夠保證即使采用OOC綜合方式,my_signal也會(huì)保持三態(tài)值

同時(shí),如果該模塊與其他部分有連接,那么這個(gè)連接也是不可用的(例如my_signal信號(hào)與“內(nèi)部”模塊有連接),綜合過(guò)程會(huì)報(bào)錯(cuò)



關(guān)鍵詞: 高阻態(tài) OOC Xilinx

評(píng)論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉