需要轉(zhuǎn)換的代碼
存儲(chǔ)單元
存儲(chǔ)單元是必須進(jìn)行代碼轉(zhuǎn)換的,ASIC中的存儲(chǔ)單元通常用代工廠所提供的Memory Compiler來(lái)定制,它可以生成.gsp、.v等文件。.v文件只用來(lái)做功能仿真,通常不能綜合。而最后流片時(shí),只需將標(biāo)準(zhǔn)提供給代工廠。如果直接將ASIC代碼中的存儲(chǔ)單元作為FPGA的輸入,通常綜合器是綜合不出來(lái)的,即使能綜合出來(lái),也要花費(fèi)很長(zhǎng)時(shí)間,并且資源消耗多、性能不好。而FPGA廠商其實(shí)已經(jīng)提供了經(jīng)過(guò)驗(yàn)證并優(yōu)化的存儲(chǔ)單元。因此存儲(chǔ)單元要進(jìn)行代碼轉(zhuǎn)換。
時(shí)鐘單元
數(shù)字電路中,時(shí)鐘是整個(gè)電路最重要、最特殊的信號(hào)。在ASIC中,用布局布線工具來(lái)放置時(shí)鐘樹(shù),利用代工廠提供的PLL進(jìn)行時(shí)鐘設(shè)計(jì)。FPGA中通常已經(jīng)配置一定數(shù)量的PLL宏單元,并有針對(duì)時(shí)鐘優(yōu)化的全局時(shí)鐘網(wǎng)絡(luò),一般是經(jīng)過(guò)FPGA的特定全局時(shí)鐘管腳進(jìn)入FPGA內(nèi)部,后經(jīng)過(guò)全局時(shí)鐘BUF適配到全局時(shí)鐘網(wǎng)絡(luò)的,這樣的時(shí)鐘網(wǎng)絡(luò)可以保證相同的時(shí)鐘沿到達(dá)芯片內(nèi)部每一個(gè)觸發(fā)器的延遲時(shí)間差異是可以忽略不計(jì)的。因此時(shí)鐘單元也是需要進(jìn)行轉(zhuǎn)換的。
增加流水
由于實(shí)現(xiàn)結(jié)構(gòu)上的不同,FPGA器件內(nèi)部的單元延時(shí)遠(yuǎn)大于ASIC的基本門單元延時(shí)。導(dǎo)致在同樣設(shè)計(jì)的情況下,ASIC可以滿足其時(shí)序,而FPGA有可能無(wú)法滿足。為了驗(yàn)證的需要,修改ASIC代碼實(shí)現(xiàn)FPGA原型時(shí),對(duì)ASIC實(shí)現(xiàn)的流水結(jié)構(gòu)在FPGA實(shí)現(xiàn)時(shí)需要適當(dāng)增加流水。比如在一個(gè)很長(zhǎng)的組合邏輯路徑中加入寄存器。
同步設(shè)計(jì)
在FPGA設(shè)計(jì)中,同步設(shè)計(jì)是應(yīng)該遵循的重要原則。異步設(shè)計(jì)容易導(dǎo)致電路處于亞穩(wěn)態(tài),產(chǎn)生毛刺。當(dāng)從ASIC設(shè)計(jì)轉(zhuǎn)向FPGA設(shè)計(jì)時(shí),應(yīng)該進(jìn)行仔細(xì)的同步。具體體現(xiàn)在主時(shí)鐘選取、功能模塊的統(tǒng)一復(fù)位、同步時(shí)序電路設(shè)計(jì)。在FPGA設(shè)計(jì)中要使用時(shí)鐘使能代替門控時(shí)鐘。在ASIC的設(shè)計(jì)中,為了減少功耗,使用門控時(shí)鐘(clock gating),門控時(shí)鐘的結(jié)構(gòu)如圖2所示。當(dāng)寫有效時(shí),數(shù)據(jù)才寫進(jìn)存儲(chǔ)器,那么只有寫有效時(shí),寄存器才會(huì)發(fā)生翻轉(zhuǎn),這樣可以減少功耗。
評(píng)論
查看更多