原理图(tú)和(hé)HDL(Hardware description language,硬(yìng)件(jiàn)描述語(yǔ)言)是(shì)两(liǎng)種(zhǒng)最(zuì)常用(yòng)的(de)數字(zì)硬(yìng)件(jiàn)電(diàn)路(lù)描述方(fāng)法,其中(zhōng)HDL設計(jì)法具有(yǒu)更(gèng)好(hǎo)的(de)可(kě)移植性(xìng)、通(tòng)用(yòng)性(xìng)和(hé)模块(kuài)劃(huà)分(fēn)與(yǔ)重(zhòng)用(yòng)性(xìng)的(de)特(tè)點(diǎn),在(zài)目前(qián)的(de)工程設計(jì)中(zhōng)被(bèi)廣泛使用(yòng),下(xià)面(miàn)对(duì)FPGA設計(jì)熟悉電(diàn)路(lù)时(shí)的(de)開(kāi)發(fà)流程是(shì)基于(yú)HDL的(de)。

FPGA的(de)開(kāi)發(fà)流程
1) 系(xì)統功能(néng)設計(jì)
在(zài)系(xì)統設計(jì)之前(qián),首先(xiān)要(yào)進(jìn)行的(de)是(shì)方(fāng)案(àn)論證、系(xì)統設計(jì)和(hé)FPGA芯片(piàn)選擇等準備工作。系(xì)統工程师(shī)根(gēn)據(jù)任务要(yào)求,如(rú)系(xì)統的(de)指标(biāo)和(hé)複雜度(dù),对(duì)工作速度(dù)和(hé)芯片(piàn)本(běn)身(shēn)的(de)各(gè)種(zhǒng)資源、成(chéng)本(běn)等方(fāng)面(miàn)進(jìn)行權衡,選擇合理的(de)設計(jì)方(fāng)案(àn)和(hé)合适的(de)器件(jiàn)類(lèi)型。一(yī)般都采用(yòng)自(zì)頂向(xiàng)下(xià)的(de)設計(jì)方(fāng)法,把系(xì)統分(fēn)成(chéng)若干(gàn)个(gè)基本(běn)單元(yuán),然後(hòu)再把每个(gè)基本(běn)單元(yuán)劃(huà)分(fēn)为(wèi)下(xià)一(yī)层次(cì)的(de)基本(běn)單元(yuán),一(yī)直(zhí)这(zhè)樣(yàng)做下(xià)去(qù),直(zhí)到(dào)可(kě)以(yǐ)直(zhí)接使用(yòng)EDA元(yuán)件(jiàn)庫为(wèi)止。
2) RTL級HDL設計(jì)
RTL級(Register Transfer Level,寄存器傳輸級)指不(bù)關(guān)注寄存器和(hé)組合邏輯的(de)细(xì)节(jié)(如(rú)使用(yòng)了(le)多(duō)少(shǎo)个(gè)邏輯門(mén)、邏輯門(mén)的(de)連(lián)接拓撲結構等),通(tòng)过(guò)描述數據(jù)在(zài)寄存器之間(jiān)的(de)流動(dòng)和(hé)如(rú)何处理、控制这(zhè)些數據(jù)流動(dòng)的(de)模型的(de)HDL設計(jì)方(fāng)法。RTL級比門(mén)級更(gèng)抽象(xiàng),同(tóng)时(shí)也(yě)更(gèng)簡單和(hé)高(gāo)效。RTL級的(de)最(zuì)大特(tè)點(diǎn)是(shì)可(kě)以(yǐ)直(zhí)接用(yòng)綜合工具将其綜合成(chéng)为(wèi)門(mén)級网(wǎng)表(biǎo),其中(zhōng)RTL級設計(jì)直(zhí)接決定(dìng)着系(xì)統的(de)功能(néng)和(hé)效率。
3) RTL級仿真(zhēn)
也(yě)稱为(wèi)功能(néng)(行为(wèi))仿真(zhēn),或(huò)是(shì)綜合前(qián)仿真(zhēn),是(shì)在(zài)編譯之前(qián)对(duì)用(yòng)戶所(suǒ)設計(jì)的(de)電(diàn)路(lù)進(jìn)行邏輯功能(néng)验(yàn)證,此(cǐ)时(shí)的(de)仿真(zhēn)沒(méi)有(yǒu)延遲信(xìn)息,僅对(duì)初步的(de)功能(néng)進(jìn)行檢测。仿真(zhēn)前(qián),要(yào)先(xiān)利用(yòng)波(bō)形編輯器和(hé)HDL等建立波(bō)形文(wén)件(jiàn)和(hé)测試向(xiàng)量(liàng)(即将所(suǒ)關(guān)心(xīn)的(de)輸入(rù)信(xìn)号(hào)組合成(chéng)序列),仿真(zhēn)結果(guǒ)将会(huì)生(shēng)成(chéng)報告文(wén)件(jiàn)和(hé)輸出(chū)信(xìn)号(hào)波(bō)形,從中(zhōng)便可(kě)以(yǐ)观察各(gè)个(gè)节(jié)點(diǎn)信(xìn)号(hào)的(de)變(biàn)化(huà)。如(rú)果(guǒ)發(fà)現(xiàn)錯誤,則返回(huí)設計(jì)修改邏輯設計(jì)。常用(yòng)的(de)工具有(yǒu)Model Tech公司的(de)ModelSim、Sysnopsys公司的(de)VCS和(hé)Cadence公司的(de)NC-Verilog以(yǐ)及(jí)NC-VHDL等软(ruǎn)件(jiàn)。虽然功能(néng)仿真(zhēn)不(bù)是(shì)FPGA開(kāi)發(fà)过(guò)程中(zhōng)的(de)必需步驟,但卻是(shì)系(xì)統設計(jì)中(zhōng)最(zuì)關(guān)鍵的(de)一(yī)步。
为(wèi)了(le)提(tí)高(gāo)功能(néng)仿真(zhēn)的(de)效率,需要(yào)建立测試平台(tái)testbench,其测試激勵一(yī)般使用(yòng)行为(wèi)級HDL語(yǔ)言描述,其中(zhōng)RTL級模块(kuài)是(shì)可(kě)綜合的(de),它(tā)是(shì)行为(wèi)級模块(kuài)的(de)一(yī)个(gè)子集合。
4) 綜合
所(suǒ)謂綜合就(jiù)是(shì)将較高(gāo)級抽象(xiàng)层次(cì)的(de)描述轉(zhuǎn)化(huà)成(chéng)較低层次(cì)的(de)描述。綜合优化(huà)根(gēn)據(jù)目标(biāo)與(yǔ)要(yào)求优化(huà)所(suǒ)生(shēng)成(chéng)的(de)邏輯連(lián)接,使层次(cì)設計(jì)平面(miàn)化(huà),供FPGA布(bù)局(jú)布(bù)線(xiàn)软(ruǎn)件(jiàn)進(jìn)行实現(xiàn)。就(jiù)目前(qián)的(de)层次(cì)来(lái)看(kàn),綜合优化(huà)(Synthesis)是(shì)指将設計(jì)輸入(rù)編譯成(chéng)由(yóu)與(yǔ)門(mén)、或(huò)門(mén)、非(fēi)門(mén)、RAM、觸發(fà)器等基本(běn)邏輯單元(yuán)組成(chéng)的(de)邏輯連(lián)接网(wǎng)表(biǎo),而(ér)并非(fēi)真(zhēn)实的(de)門(mén)級電(diàn)路(lù)。真(zhēn)实具體(tǐ)的(de)門(mén)級電(diàn)路(lù)需要(yào)利用(yòng)FPGA制造商的(de)布(bù)局(jú)布(bù)線(xiàn)功能(néng),根(gēn)據(jù)綜合後(hòu)生(shēng)成(chéng)的(de)标(biāo)準門(mén)級結構网(wǎng)表(biǎo)来(lái)産生(shēng)。为(wèi)了(le)能(néng)轉(zhuǎn)換成(chéng)标(biāo)準的(de)門(mén)級結構网(wǎng)表(biǎo),HDL程序的(de)編写必須符合特(tè)定(dìng)綜合器所(suǒ)要(yào)求的(de)风格。由(yóu)于(yú)門(mén)級結構、RTL級的(de)HDL程序的(de)綜合是(shì)很成(chéng)熟的(de)技術(shù),所(suǒ)有(yǒu)的(de)綜合器都可(kě)以(yǐ)支持(chí)到(dào)这(zhè)一(yī)級别的(de)綜合。常用(yòng)的(de)綜合工具有(yǒu)Synplicity公司的(de)Synplify/Synplify Pro软(ruǎn)件(jiàn)以(yǐ)及(jí)各(gè)个(gè)FPGA廠(chǎng)家(jiā)自(zì)己推出(chū)的(de)綜合開(kāi)發(fà)工具。
5) 門(mén)級仿真(zhēn)
也(yě)稱为(wèi)綜合後(hòu)仿真(zhēn),綜合後(hòu)仿真(zhēn)檢查綜合結果(guǒ)是(shì)否和(hé)原設計(jì)一(yī)致(zhì)。在(zài)仿真(zhēn)时(shí),把綜合生(shēng)成(chéng)的(de)标(biāo)準延时(shí)文(wén)件(jiàn)反(fǎn)标(biāo)注到(dào)綜合仿真(zhēn)模型中(zhōng)去(qù),可(kě)估計(jì)門(mén)延时(shí)带(dài)来(lái)的(de)影響。但这(zhè)一(yī)步驟不(bù)能(néng)估計(jì)線(xiàn)延时(shí),因(yīn)此(cǐ)和(hé)布(bù)線(xiàn)後(hòu)的(de)实際情(qíng)況還(huán)有(yǒu)一(yī)定(dìng)的(de)差距,并不(bù)十(shí)分(fēn)準确。目前(qián)的(de)綜合工具較为(wèi)成(chéng)熟,对(duì)于(yú)一(yī)般的(de)設計(jì)可(kě)以(yǐ)省(shěng)略这(zhè)一(yī)步,但如(rú)果(guǒ)在(zài)布(bù)局(jú)布(bù)線(xiàn)後(hòu)發(fà)現(xiàn)電(diàn)路(lù)結構和(hé)設計(jì)意(yì)图(tú)不(bù)符,則需要(yào)回(huí)溯到(dào)綜合後(hòu)仿真(zhēn)来(lái)确認問(wèn)題(tí)之所(suǒ)在(zài)。在(zài)功能(néng)仿真(zhēn)中(zhōng)介紹的(de)软(ruǎn)件(jiàn)工具一(yī)般都支持(chí)綜合後(hòu)仿真(zhēn)。
6) 布(bù)局(jú)布(bù)線(xiàn)
实現(xiàn)是(shì)将綜合生(shēng)成(chéng)的(de)邏輯网(wǎng)表(biǎo)配置到(dào)具體(tǐ)的(de)FPGA芯片(piàn)上(shàng),将工程的(de)邏輯和(hé)时(shí)序與(yǔ)器件(jiàn)的(de)可(kě)用(yòng)資源匹(pǐ)配。布(bù)局(jú)布(bù)線(xiàn)是(shì)其中(zhōng)最(zuì)重(zhòng)要(yào)的(de)过(guò)程,布(bù)局(jú)将邏輯网(wǎng)表(biǎo)中(zhōng)的(de)硬(yìng)件(jiàn)原語(yǔ)和(hé)底层單元(yuán)合理地(dì)配置到(dào)芯片(piàn)內(nèi)部(bù)的(de)固有(yǒu)硬(yìng)件(jiàn)結構上(shàng),并且往往需要(yào)在(zài)速度(dù)最(zuì)优和(hé)面(miàn)積最(zuì)优之間(jiān)作出(chū)選擇。布(bù)線(xiàn)根(gēn)據(jù)布(bù)局(jú)的(de)拓撲結構,利用(yòng)芯片(piàn)內(nèi)部(bù)的(de)各(gè)種(zhǒng)連(lián)線(xiàn)資源,合理正(zhèng)确地(dì)連(lián)接各(gè)个(gè)元(yuán)件(jiàn)。也(yě)可(kě)以(yǐ)簡單地(dì)将布(bù)局(jú)布(bù)線(xiàn)理解(jiě)为(wèi)对(duì)FPGA內(nèi)部(bù)查找(zhǎo)表(biǎo)和(hé)寄存器資源的(de)合理配置,布(bù)局(jú)可(kě)以(yǐ)被(bèi)理解(jiě)挑選可(kě)实現(xiàn)設計(jì)网(wǎng)表(biǎo)的(de)最(zuì)优的(de)資源組合,而(ér)布(bù)線(xiàn)就(jiù)是(shì)将这(zhè)些查找(zhǎo)表(biǎo)和(hé)寄存器資源以(yǐ)最(zuì)优方(fāng)式連(lián)接起来(lái)。
目前(qián),FPGA的(de)結構非(fēi)常複雜,特(tè)别是(shì)在(zài)有(yǒu)时(shí)序約束(shù)条(tiáo)件(jiàn)时(shí),需要(yào)利用(yòng)时(shí)序驅動(dòng)的(de)引擎進(jìn)行布(bù)局(jú)布(bù)線(xiàn)。布(bù)線(xiàn)結束(shù)後(hòu),软(ruǎn)件(jiàn)工具会(huì)自(zì)動(dòng)生(shēng)成(chéng)報告,提(tí)供有(yǒu)關(guān)設計(jì)中(zhōng)各(gè)部(bù)分(fēn)資源的(de)使用(yòng)情(qíng)況。由(yóu)于(yú)只(zhī)有(yǒu)FPGA芯片(piàn)生(shēng)産商对(duì)芯片(piàn)結構最(zuì)为(wèi)了(le)解(jiě),所(suǒ)以(yǐ)布(bù)局(jú)布(bù)線(xiàn)必須選擇芯片(piàn)開(kāi)發(fà)商提(tí)供的(de)工具。
7) 时(shí)序仿真(zhēn)
是(shì)指将布(bù)局(jú)布(bù)線(xiàn)的(de)延时(shí)信(xìn)息反(fǎn)标(biāo)注到(dào)設計(jì)网(wǎng)表(biǎo)中(zhōng)来(lái)檢测有(yǒu)无时(shí)序違規(即不(bù)滿足时(shí)序約束(shù)条(tiáo)件(jiàn)或(huò)器件(jiàn)固有(yǒu)的(de)时(shí)序規則,如(rú)建立时(shí)間(jiān)、保持(chí)时(shí)間(jiān)等)現(xiàn)象(xiàng)。时(shí)序仿真(zhēn)包(bāo)含的(de)延遲信(xìn)息最(zuì)全(quán),也(yě)最(zuì)精确,能(néng)較好(hǎo)地(dì)反(fǎn)映芯片(piàn)的(de)实際工作情(qíng)況。由(yóu)于(yú)不(bù)同(tóng)芯片(piàn)的(de)內(nèi)部(bù)延时(shí)不(bù)一(yī)樣(yàng),不(bù)同(tóng)的(de)布(bù)局(jú)布(bù)線(xiàn)方(fāng)案(àn)也(yě)給(gěi)延时(shí)带(dài)来(lái)不(bù)同(tóng)的(de)影響。因(yīn)此(cǐ)在(zài)布(bù)局(jú)布(bù)線(xiàn)後(hòu),通(tòng)过(guò)对(duì)系(xì)統和(hé)各(gè)个(gè)模块(kuài)進(jìn)行时(shí)序仿真(zhēn),分(fēn)析其时(shí)序關(guān)系(xì),估計(jì)系(xì)統性(xìng)能(néng),以(yǐ)及(jí)檢查和(hé)消除競争冒险是(shì)非(fēi)常有(yǒu)必要(yào)的(de)。
8) FPGA板級調試
通(tòng)过(guò)編程器将布(bù)局(jú)布(bù)線(xiàn)後(hòu)的(de)配置文(wén)件(jiàn)下(xià)载至(zhì)FPGA中(zhōng),对(duì)其硬(yìng)件(jiàn)進(jìn)行編程。配置文(wén)件(jiàn)一(yī)般为(wèi).pof或(huò).sof文(wén)件(jiàn)格式,下(xià)载的(de)方(fāng)式包(bāo)括AS(主(zhǔ)動(dòng))、PS(被(bèi)動(dòng))、JTAG(邊(biān)界掃描)等方(fāng)式。
邏輯分(fēn)析儀(Logic Analyzer,LA)是(shì)FPGA設計(jì)的(de)主(zhǔ)要(yào)調試工具,但需要(yào)引出(chū)大量(liàng)的(de)测試管(guǎn)脚,且LA價格昂貴。目前(qián),主(zhǔ)流的(de)FPGA芯片(piàn)生(shēng)産商都提(tí)供了(le)內(nèi)嵌的(de)在(zài)線(xiàn)邏輯分(fēn)析儀(如(rú)Xilinx ISE中(zhōng)的(de)ChipScope、Altera QuartusII中(zhōng)的(de)SignalTapII以(yǐ)及(jí)SignalProb)来(lái)解(jiě)決上(shàng)述矛盾,它(tā)们(men)只(zhī)需要(yào)占用(yòng)芯片(piàn)少(shǎo)量(liàng)的(de)邏輯資源,具有(yǒu)很高(gāo)的(de)实用(yòng)價值。
温(wēn)馨提(tí)示:明(míng)德揚2023推出(chū)了(le)全(quán)新課程——
邏輯設計(jì)基本(běn)功修煉課,降低学習FPGA門(mén)檻的(de)同(tóng)时(shí),增加了(le)学習的(de)趣味性(xìng)
http://old.mdy-edu.com/chanpinzhongxin/peixunkecheng/2023/0215/1889.html
(點(diǎn)擊→了(le)解(jiě)課程詳情(qíng)☝)
明(míng)德揚除了(le)培訓学習還(huán)有(yǒu)項目承接業务,擅长的(de)項目主(zhǔ)要(yào)包(bāo)括的(de)方(fāng)向(xiàng)有(yǒu)以(yǐ)下(xià)幾(jǐ)个(gè)方(fāng)面(miàn):
1. MIPI視頻拼接
2. SLVS-EC轉(zhuǎn)MIPI接口(kǒu)(IMX472 IMX492)
3. PCIE采集系(xì)統
4. 图(tú)像項目
5. 高(gāo)速多(duō)通(tòng)道(dào)ADDA系(xì)統
6. 基于(yú)FPGA板卡(kǎ)研發(fà)
7. 多(duō)通(tòng)道(dào)高(gāo)靈敏電(diàn)荷放(fàng)大器
8. 射頻前(qián)端
http://old.mdy-edu.com/xmucjie/2023/0201/1865.html
(點(diǎn)擊→了(le)解(jiě)項目承接業务詳情(qíng)☝)
需要(yào)了(le)解(jiě)相關(guān)信(xìn)息可(kě)以(yǐ)聯系(xì):江老(lǎo)师(shī)18022859964(微信(xìn)同(tóng)号(hào))








