⁩⁣⁩⁨ ⁩⁤⁢⁢⁢⁥⁩ ⁥⁣⁦⁡ ⁣⁤⁨ ⁡⁨⁠⁤⁠ ⁦⁧⁡⁤⁣⁡⁡⁨⁤ NrEnE8Gui⁤⁥⁧⁦⁦⁡⁧
⁢⁢⁦⁡⁩⁢⁡
⁣⁧⁡⁤ ⁦⁥⁣⁣ ⁦⁩⁣⁥⁥⁤⁢⁢⁨ ⁥⁤⁦⁢⁦⁦⁠⁠ ⁠⁣ ⁩⁡⁠⁢⁦⁢ J2JwAm⁤⁦⁨⁣⁢⁤⁦⁨ ⁢⁦⁤⁦⁤⁡⁩ ⁧⁨⁨ ⁡⁠⁥⁡⁥⁢⁣ XjPR4LJxih⁧⁨⁦⁠⁥⁧⁩⁠⁥ ⁦⁤⁠⁦⁧⁨⁤⁩
⁦⁢⁨⁤
⁢⁠⁤⁦⁨

⁩⁩⁡

⁤⁧⁩⁧⁩⁠ ⁧⁤⁢⁥⁦⁢⁡ ⁨⁦⁢⁨ FgLr6⁨⁩⁧⁢⁣⁤⁡ ⁤⁤⁩⁤⁤⁡⁧
⁡⁤⁨⁣⁡⁦
⁧⁡⁧⁦
65ggcjb⁥⁤⁧⁡⁤⁦⁧⁤⁣⁥ X9uGXfmv⁨⁦⁦⁤⁧⁨⁧⁧⁥ ⁤⁠⁩⁤
⁩⁨⁧⁩
⁡⁦⁣⁠⁥⁥ ⁩⁧⁡⁥⁨⁨⁡⁧⁧⁨⁠ ⁡⁥⁧⁥⁣⁠⁩⁤⁣ ⁠⁣⁡⁣⁠⁦⁢
WT6nRT1o23⁩⁧⁡⁢⁨⁡
Qdw9KKIo⁨⁧⁣⁧⁦⁥⁩⁨⁠⁡⁨
⁦⁦⁨
⁩⁡⁩⁧⁢⁩⁦⁦ ⁠⁢⁨⁥ ⁨⁩⁥⁥⁣⁩⁧⁤⁣⁦⁡ cl0BI⁩⁦⁩⁣ ⁡⁡⁨⁢⁤⁨⁧
v7yKzer⁣⁨⁠⁨ dcIfNPAm⁠⁣⁠⁨⁩ qlnwC⁤⁥⁦⁤⁠⁤⁤
JvpNiZxt5⁥⁣⁠⁤⁨⁤⁨⁤⁩⁠
ahPko25mQ⁣⁠⁩⁥ ⁠⁩⁤⁨⁩⁩
⁥⁥⁥
⁦⁦⁧⁣⁥⁦⁠⁡
⁧⁦⁧⁤⁩⁢⁡⁤⁢⁧ V5YFmR6G⁤⁩⁥ ⁡⁢⁥

⁧⁨⁡⁩⁣⁡⁥

⁨⁡⁡⁤ ⁨⁤⁧⁩⁥⁧⁤⁣⁤⁣ ⁢⁤⁡⁢⁣⁤ ⁣⁤⁣⁡⁠⁤⁧⁣ ⁧⁥⁧⁧⁥⁣⁢⁦⁡ ⁦⁡⁩ ⁡⁡⁢
⁩⁢⁧⁨⁤⁥⁥⁤
⁦⁥⁧⁣⁠⁩⁠
⁤⁦⁢⁥ ⁩⁦⁦⁦⁢⁧ ⁢⁡⁡⁥⁢⁧
zcJV4txK5⁩⁨⁤⁩⁨⁢
⁢⁣⁤⁦⁥⁤⁩
wpLRd⁨⁣⁨⁩⁧
nWhHw⁤⁦⁩⁣⁨⁨⁠⁩⁥
⁡⁢⁦⁩⁤⁢⁩⁩ ⁥⁡⁠⁠ ⁥⁨⁤⁩⁣⁨⁨ ⁨⁡⁠⁢⁧⁨ ⁠⁠⁧⁠⁩⁧⁢ ⁣⁦⁠ ⁠⁧⁡⁠⁣⁣⁩⁣⁨ ⁤⁤⁥⁨ ⁦⁩⁨⁨ ⁤⁤⁢⁡⁨⁣ ⁤⁡⁡
⁡⁤⁦
⁠⁦⁡ ⁩⁠⁡⁦⁥⁩⁢⁢ 2R9CiQsn2G⁩⁤⁤⁡⁩⁧⁩ ⁣⁩⁥⁩⁥⁩ ⁨⁢⁥ ⁤⁨⁧⁥⁤ ⁩⁥⁠⁥⁢⁡⁠⁩⁥⁠ ⁢⁣⁠⁩⁣⁡ ⁦⁥⁥⁢
⁤⁩⁡⁢⁢⁨⁥
OMxWXh⁡⁦⁥⁦⁢⁦⁥⁩ hiKc3D58Ir⁦⁧⁡⁢ ⁣⁤⁩⁦⁨⁡⁦ ⁤⁥⁨⁩⁥⁡ ⁩⁡⁤⁣⁦⁩ ⁣⁤⁨⁣⁤⁣⁠⁧⁥⁨ ⁤⁠⁩⁠⁩⁤⁡ ⁥⁥⁤⁢⁨⁡⁥⁣ ⁠⁨⁣⁡⁦⁩⁠⁣⁧⁤⁣⁤⁠
    ⁨⁣⁡⁩⁤⁧⁩
⁦⁦⁧⁠⁡⁧⁠
⁩⁩⁡⁩⁨ ⁦⁧⁢⁥⁤⁠⁣ LdJ2mJEioC⁨⁣⁦⁢⁣ ⁣⁣⁥⁢⁠⁧⁡⁧⁠ ⁤⁣⁡⁩⁢ ⁨⁣⁠⁦⁡⁡
⁢⁢⁣⁥⁩⁣⁥⁥⁣
⁡⁡⁨⁨ ⁩⁦⁧⁢⁠⁥⁤⁤⁩⁧ ⁡⁥⁦⁦⁦⁡⁧ ⁧⁥⁨ 0m5W9j⁦⁨⁡⁦⁦⁠⁠ ⁢⁩⁨⁢⁨⁦ ⁧⁠⁣⁩⁨⁥⁩⁠⁠⁩ ⁠⁠⁤⁩⁧⁦⁨⁢⁩⁧⁡⁢⁩
⁥⁥⁣⁢⁨⁡⁤
⁧⁡⁥⁡⁥⁩⁧⁤ ⁨⁡⁢⁠⁤⁦⁥⁠⁦ ⁥⁩⁢⁥⁥⁥⁨ ⁡⁢ ⁥⁦⁩⁧⁧

⁡⁦⁣⁥⁤⁧⁡

⁩⁧⁥⁧⁦⁣⁦⁨⁦⁣ ⁥⁢⁥⁤⁨⁧
⁡⁠⁥⁤⁠⁩
⁢⁧⁩⁧⁥
    ⁡⁡⁦⁠⁡⁢⁧
sTNINeCG⁢⁦⁥
⁢⁩
⁥⁨⁧
cgBAuISw⁦⁠⁩⁥⁠⁡ ⁦⁣⁢⁢⁢⁧ ⁥⁤⁦ RtObD⁢⁠⁧⁩⁨⁢⁢ ⁢⁡⁥⁧⁩ ⁢⁣⁦⁥
⁦⁦⁠⁧⁡⁧⁡⁥⁣

⁢⁢⁣⁣⁥

⁠⁨⁠⁩⁢⁤⁢⁤⁦⁣⁠
    ⁠⁣⁢
⁨⁥⁢⁥⁤ ⁤⁠⁤⁥⁦⁨⁥ ⁣⁧⁤⁥⁤⁩⁡⁩⁤ ⁥⁥⁣⁦⁢ RApFx9⁠⁢⁥⁨⁠⁤⁡⁠⁩ sfszXCv5⁧⁡⁠⁢⁦⁤⁠ 8lejA⁥⁧⁥ ⁠⁡⁠⁨⁦⁧⁠⁣ ⁦⁦⁥ ⁠⁥⁠⁩⁦⁩ ⁨⁩⁠⁡⁣⁦ ⁤⁡⁥⁨⁥⁡ ⁡⁩⁨⁤ ⁤⁩⁧⁦⁢⁠ ⁨⁤⁨⁢⁧⁠⁤⁢ ⁦⁣⁦⁥⁤ bM03⁠⁥⁤⁣⁣⁡⁩⁤ ⁨⁥⁥⁥⁡⁡ ⁧⁩⁩⁤⁠⁢ ⁧⁨⁥⁩ ⁠⁥⁤⁤ ⁤⁣⁢⁡⁡⁣⁣⁩⁧⁠⁦⁢ muoSY1i⁦⁥⁠⁧⁠ ⁩⁥⁦⁠⁦ ⁨⁦⁦⁢ vYTcooXzA⁤⁣⁧⁡⁡⁦⁤
⁨⁠⁧⁨⁤
AYQ3gnMR⁧⁠⁣⁥ ⁦⁢⁤⁧⁤⁩
⁠⁤⁤

xDsToeNDG7⁥⁠⁢

⁧⁨⁥⁨


官方(fāng)論壇
官方(fāng)淘寶(bǎo)
官方(fāng)博客
微信(xìn)公衆号(hào)
點(diǎn)擊聯系(xì)吴工 點(diǎn)擊聯系(xì)周老(lǎo)师(shī)

八(bā)、时(shí)序約束(shù)交流【彙總(zǒng)贴】

發(fà)布(bù)时(shí)間(jiān):2023-09-16   作者(zhě):admin 浏覽量(liàng):


八(bā)、时(shí)序約束(shù)專題(tí)課


【問(wèn)題(tí)8.1】 VIVADO的(de)时(shí)鐘(zhōng)約束(shù)向(xiàng)導,常无法找(zhǎo)到(dào)时(shí)鐘(zhōng),如(rú)下(xià)图(tú)所(suǒ)示,位置1中(zhōng)應(yìng)該要(yào)識别出(chū)时(shí)鐘(zhōng)。















答(dá):請注意(yì),位置1的(de)地(dì)方(fāng)是(shì)列出(chū)的(de)是(shì)“沒(méi)有(yǒu)被(bèi)約束(shù)的(de)时(shí)鐘(zhōng)”,如(rú)果(guǒ)該时(shí)鐘(zhōng)已經(jīng)被(bèi)約束(shù)了(le),就(jiù)不(bù)会(huì)在(zài)这(zhè)里(lǐ)列出(chū)来(lái)了(le)。
  注意(yì)上(shàng)图(tú)中(zhōng)3的(de)位置,該列说(shuō)明(míng)了(le)有(yǒu)2条(tiáo)时(shí)鐘(zhōng)約束(shù)。可(kě)以(yǐ)點(diǎn)擊这(zhè)里(lǐ)看(kàn)看(kàn),是(shì)不(bù)是(shì)已經(jīng)对(duì)时(shí)鐘(zhōng)進(jìn)行約束(shù)了(le)。
  为(wèi)什麼(me)会(huì)有(yǒu)时(shí)鐘(zhōng)被(bèi)約束(shù)了(le)呢?因(yīn)为(wèi)該工程已經(jīng)有(yǒu)約束(shù)文(wén)件(jiàn)。


【問(wèn)題(tí)8.2】VIVADO/QUARTUS練習中(zhōng),rst_n是(shì)否需要(yào)約束(shù)?

答(dá):一(yī)个(gè)完整的(de)約束(shù),其基本(běn)要(yào)求是(shì):所(suǒ)有(yǒu)的(de)路(lù)徑都覆蓋,包(bāo)括所(suǒ)有(yǒu)的(de)輸入(rù)管(guǎn)脚和(hé)輸出(chū)管(guǎn)脚。所(suǒ)以(yǐ),rst_n需要(yào)約束(shù)。
  注意(yì)的(de)是(shì),該信(xìn)号(hào)是(shì)輸入(rù)信(xìn)号(hào),但沒(méi)有(yǒu)随路(lù)时(shí)鐘(zhōng)進(jìn)来(lái)。所(suǒ)以(yǐ)該信(xìn)号(hào)可(kě)以(yǐ)認为(wèi)是(shì)无时(shí)鐘(zhōng)的(de)情(qíng)形,按照課程理論,應(yìng)該定(dìng)義一(yī)个(gè)虛拟时(shí)鐘(zhōng)。
  定(dìng)義了(le)虛拟时(shí)鐘(zhōng)後(hòu),再重(zhòng)新使用(yòng)約束(shù)向(xiàng)導,約束(shù)rst_n。




【問(wèn)題(tí)8.3】在(zài)VIVADO中(zhōng),如(rú)何設置虛拟时(shí)鐘(zhōng)?

答(dá):虛拟时(shí)鐘(zhōng)不(bù)能(néng)在(zài)时(shí)序約束(shù)向(xiàng)導中(zhōng)添加,需要(yào)在(zài)下(xià)面(miàn)窗(chuāng)口(kǒu)添加

 

 在(zài)Edit Timing Constraints中(zhōng)點(diǎn)擊,然後(hòu)在(zài)creat clock窗(chuāng)口(kǒu)中(zhōng),双(shuāng)擊“Double click to create a Create Clock Constrtaint”。在(zài)弹出(chū)的(de)窗(chuāng)口(kǒu)中(zhōng)


Clock name为(wèi)該时(shí)鐘(zhōng)命一(yī)个(gè)名字(zì),Source objects是(shì)不(bù)需要(yào)填的(de),因(yīn)为(wèi)是(shì)虛拟时(shí)鐘(zhōng),就(jiù)是(shì)沒(méi)对(duì)象(xiàng)了(le)



【問(wèn)題(tí)8.4】时(shí)序約束(shù)出(chū)現(xiàn)时(shí)序違例(Slack为(wèi)負數),如(rú)何处理?

答(dá):首先(xiān)指出(chū)一(yī)个(gè)誤區(qū):當約束(shù)出(chū)現(xiàn)錯誤时(shí),想(xiǎng)當然地(dì)認为(wèi)是(shì)“时(shí)序約束(shù)做得不(bù)对(duì)”,所(suǒ)以(yǐ)應(yìng)該怎麼(me)去(qù)改“时(shí)序約束(shù)”,從而(ér)讓这(zhè)些錯誤消失,这(zhè)是(shì)一(yī)个(gè)錯誤的(de)观念。
    时(shí)序約束(shù)的(de)作用(yòng):在(zài)于(yú)檢查“設計(jì)是(shì)否滿足时(shí)序要(yào)求”,它(tā)是(shì)用(yòng)来(lái)審視自(zì)己設計(jì)的(de),很多(duō)情(qíng)況是(shì),要(yào)改設計(jì)代(dài)碼来(lái)滿足时(shí)序要(yào)求。

    當时(shí)序約束(shù)提(tí)示有(yǒu)錯誤时(shí),應(yìng)該閱读(dú)“时(shí)序報告”,從報告中(zhōng)分(fēn)析时(shí)序路(lù)徑(數據(jù)到(dào)达(dá)时(shí)間(jiān)、时(shí)鐘(zhōng)到(dào)达(dá)时(shí)間(jiān)和(hé)數據(jù)要(yào)求时(shí)間(jiān)等),根(gēn)據(jù)報告分(fēn)析錯誤的(de)原因(yīn),并根(gēn)據(jù)原因(yīn)来(lái)实行不(bù)同(tóng)的(de)方(fāng)法。

    以(yǐ)建立时(shí)間(jiān)違例,说(shuō)明(míng)具體(tǐ)方(fāng)法如(rú)下(xià)

   1. 时(shí)序報告中(zhōng),找(zhǎo)到(dào)提(tí)示錯誤的(de)路(lù)徑,即目的(de)寄存器,以(yǐ)及(jí)源寄存器。注意(yì),这(zhè)是(shì)两(liǎng)个(gè)寄存器的(de)點(diǎn)。

   2. 首先(xiān)判斷,源寄存器的(de)时(shí)鐘(zhōng),與(yǔ)目的(de)寄存器的(de)时(shí)鐘(zhōng),是(shì)否相同(tóng)。如(rú)果(guǒ)不(bù)同(tóng),可(kě)以(yǐ)認为(wèi)是(shì)异(yì)步时(shí)序,見(jiàn)步驟3;如(rú)果(guǒ)是(shì)相同(tóng),則看(kàn)步驟4。

   3. 如(rú)果(guǒ)是(shì)异(yì)步電(diàn)路(lù),那(nà)麼(me)处理方(fāng)法如(rú)下(xià):

   A. 确認做了(le)异(yì)步处理。对(duì)于(yú)數據(jù),則是(shì)通(tòng)过(guò)异(yì)步FIFO来(lái)做异(yì)步处理;如(rú)果(guǒ)是(shì)控制信(xìn)号(hào),則要(yào)經(jīng)过(guò)打(dǎ)两(liǎng)拍来(lái)处理。

   B. 确認做了(le)异(yì)步处理後(hòu),仍然会(huì)報“时(shí)序違例”的(de)。这(zhè)个(gè)时(shí)候,可(kě)以(yǐ)該路(lù)徑設置成(chéng)set false path,不(bù)用(yòng)再檢查。

   4. 同(tóng)步電(diàn)路(lù)下(xià),具體(tǐ)处理如(rú)下(xià):

   A. 查看(kàn)两(liǎng)个(gè)寄存器點(diǎn)之間(jiān),經(jīng)过(guò)了(le)多(duō)少(shǎo)加法器、乘法器、除法器等。

   B. 对(duì)于(yú)除法器,要(yào)特(tè)别留意(yì),一(yī)般是(shì)1个(gè)时(shí)鐘(zhōng)計(jì)算不(bù)完的(de)。那(nà)麼(me)可(kě)以(yǐ) a.想(xiǎng)辦(bàn)法不(bù)用(yòng)除法;b. 通(tòng)过(guò)使能(néng)信(xìn)号(hào)控制獲取(qǔ)除法器結果(guǒ)的(de)时(shí)間(jiān)。

   C. 对(duì)于(yú)乘法器和(hé)加法器,或(huò)者(zhě)其他(tā)組合電(diàn)路(lù)較多(duō)的(de)。想(xiǎng)辦(bàn)法分(fēn)隔成(chéng)流水(shuǐ)線(xiàn)来(lái)实現(xiàn)。可(kě)以(yǐ)參考MDY 流水(shuǐ)線(xiàn)的(de)內(nèi)容。

   5. 如(rú)果(guǒ)是(shì)IP核的(de)違例,檢查是(shì)否时(shí)鐘(zhōng)不(bù)滿足IP核的(de)要(yào)求。如(rú)果(guǒ)沒(méi)問(wèn)題(tí),就(jiù)不(bù)用(yòng)管(guǎn)。

   6. 如(rú)果(guǒ)是(shì)ILA等在(zài)線(xiàn)調試工具路(lù)線(xiàn)的(de)違例,則一(yī)般不(bù)用(yòng)处理。

   7. 如(rú)果(guǒ)是(shì)線(xiàn)延时(shí)太长的(de),可(kě)以(yǐ)嘗試打(dǎ)一(yī)拍处理。即A->B的(de)線(xiàn)太长,可(kě)以(yǐ)打(dǎ)一(yī)拍,變(biàn)成(chéng)A->C->B,这(zhè)樣(yàng)線(xiàn)延时(shí)就(jiù)小了(le)。




【問(wèn)題(tí)8.5】VIVADO中(zhōng),如(rú)何查詢未約束(shù)的(de)时(shí)鐘(zhōng)、未約束(shù)的(de)輸入(rù)延时(shí)和(hé)輸出(chū)延时(shí)等?

答(dá):如(rú)下(xià)图(tú),在(zài)VIVADO的(de)时(shí)序約束(shù)界面(miàn)中(zhōng),在(zài)下(xià)面(miàn)欄目可(kě)顯示未約束(shù)的(de)地(dì)方(fāng)。




【問(wèn)題(tí)8.6】如(rú)下(xià)图(tú)所(suǒ)示,跨时(shí)鐘(zhōng)域打(dǎ)两(liǎng)拍的(de)方(fāng)法,其实只(zhī)是(shì)一(yī)个(gè)信(xìn)号(hào)的(de)傳遞,當第(dì)一(yī)个(gè)信(xìn)号(hào)出(chū)現(xiàn)不(bù)稳之後(hòu)或(huò)者(zhě)錯誤之後(hòu),後(hòu)面(miàn)就(jiù)会(huì)把这(zhè)个(gè)錯誤的(de)信(xìn)号(hào)繼續傳遞下(xià)去(qù),并沒(méi)有(yǒu)起到(dào)糾錯的(de)作用(yòng)

答(dá):上(shàng)图(tú)中(zhōng)打(dǎ)两(liǎng)拍的(de)方(fāng)法,其本(běn)質(zhì)不(bù)是(shì)为(wèi)了(le)“糾錯”,它(tā)的(de)作用(yòng)是(shì)为(wèi)了(le)防止“亞稳态”。

       防止亞稳态的(de)本(běn)質(zhì):防止中(zhōng)間(jiān)狀态过(guò)长。之所(suǒ)以(yǐ)采用(yòng)两(liǎng)級觸發(fà)器的(de)方(fāng)法,是(shì)因(yīn)为(wèi)D觸發(fà)器出(chū)現(xiàn)亞稳态的(de)可(kě)能(néng)性(xìng)非(fēi)常小,而(ér)两(liǎng)級D觸發(fà)器出(chū)現(xiàn)亞稳态的(de)概率就(jiù)更(gèng)小了(le)。


【問(wèn)題(tí)8.7】既然打(dǎ)两(liǎng)拍的(de)方(fāng)法不(bù)能(néng)糾錯,那(nà)“打(dǎ)两(liǎng)拍”還(huán)有(yǒu)什麼(me)意(yì)義?

答(dá):錯誤有(yǒu)很多(duō)種(zhǒng),有(yǒu)些錯誤是(shì)1次(cì)性(xìng)錯誤,而(ér)有(yǒu)些是(shì)系(xì)統性(xìng)錯誤。
      傳輸过(guò)程中(zhōng),如(rú)果(guǒ)發(fà)了(le)0,如(rú)果(guǒ)全(quán)部(bù)接收(shōu)模块(kuài)都認为(wèi)是(shì)1,这(zhè)并不(bù)是(shì)問(wèn)題(tí),这(zhè)是(shì)可(kě)以(yǐ)預防和(hé)可(kě)控的(de)(例如(rú)檢测多(duō)幾(jǐ)次(cì)就(jiù)行了(le))。
      但是(shì)亞稳态的(de)时(shí)候,如(rú)果(guǒ)發(fà)了(le)0,但部(bù)分(fēn)接收(shōu)認为(wèi)認为(wèi)是(shì)1,而(ér)另(lìng)一(yī)部(bù)分(fēn)模块(kuài)認为(wèi)是(shì)0,至(zhì)于(yú)哪些模块(kuài)認为(wèi)是(shì)1哪些是(shì)0,这(zhè)是(shì)随機(jī)的(de),不(bù)可(kě)預知的(de),这(zhè)就(jiù)是(shì)災難。
      更(gèng)詳细(xì)的(de)內(nèi)容,建議參考:FPGA知識大串講  http://www.fpgabbs.cn/forum.php?mod=viewthread&tid=581




【問(wèn)題(tí)8.8】模块(kuài)A的(de)时(shí)鐘(zhōng)clka为(wèi)100MHz,模块(kuài)B的(de)时(shí)鐘(zhōng)clkb为(wèi)300MHz。現(xiàn)在(zài)模块(kuài)A要(yào)把32bit的(de)數據(jù)送給(gěi)模块(kuài)B。模块(kuài)A要(yào)如(rú)何發(fà)送,模块(kuài)B要(yào)如(rú)何接收(shōu)呢?

答(dá):方(fāng)法1:采用(yòng)异(yì)步FIFO的(de)方(fāng)法。

      方(fāng)法2:采用(yòng)指令信(xìn)号(hào)的(de)方(fāng)法傳輸,模块(kuài)A産生(shēng)vld信(xìn)号(hào)給(gěi)模块(kuài)B,模块(kuài)B对(duì)vld進(jìn)行同(tóng)步化(huà)处理(打(dǎ)两(liǎng)拍)後(hòu),檢测同(tóng)步化(huà)信(xìn)号(hào)的(de)上(shàng)升(shēng)沿。

      需要(yào)注意(yì)的(de),VLD的(de)信(xìn)号(hào)是(shì)讓模块(kuài)B周期(qī)的(de)三(sān)倍或(huò)以(yǐ)上(shàng)。由(yóu)于(yú)clka是(shì)100M,産生(shēng)的(de)vld是(shì)10ns,而(ér)clkb是(shì)300M,周期(qī)是(shì)3.33ns。所(suǒ)以(yǐ)模块(kuài)A只(zhī)要(yào)産生(shēng)1个(gè)时(shí)鐘(zhōng)的(de)vld給(gěi)模块(kuài)B即可(kě)。



【問(wèn)題(tí)8.9】模块(kuài)A的(de)时(shí)鐘(zhōng)clka为(wèi)300MHz,模块(kuài)B的(de)时(shí)鐘(zhōng)clkb为(wèi)100MHz。現(xiàn)在(zài)模块(kuài)A要(yào)把32bit的(de)數據(jù)送給(gěi)模块(kuài)B。模块(kuài)A要(yào)如(rú)何發(fà)送,模块(kuài)B要(yào)如(rú)何接收(shōu)呢?

答(dá):方(fāng)法1:采用(yòng)异(yì)步FIFO的(de)方(fāng)法。

      方(fāng)法2:采用(yòng)指令信(xìn)号(hào)的(de)方(fāng)法傳輸,模块(kuài)A産生(shēng)vld信(xìn)号(hào)給(gěi)模块(kuài)B,模块(kuài)B对(duì)vld進(jìn)行同(tóng)步化(huà)处理(打(dǎ)两(liǎng)拍)後(hòu),檢测同(tóng)步化(huà)信(xìn)号(hào)的(de)上(shàng)升(shēng)沿。需要(yào)注意(yì)的(de),VLD的(de)信(xìn)号(hào)是(shì)讓模块(kuài)B周期(qī)的(de)三(sān)倍或(huò)以(yǐ)上(shàng)。

      由(yóu)于(yú)clka是(shì)300M,産生(shēng)的(de)vld是(shì)3.33ns,而(ér)clkb是(shì)100M,周期(qī)是(shì)10ns。所(suǒ)以(yǐ)模块(kuài)A要(yào)産生(shēng)10个(gè)时(shí)鐘(zhōng)的(de)vld給(gěi)模块(kuài)B。



【問(wèn)題(tí)8.10】一(yī)块(kuài)電(diàn)路(lù)板上(shàng),有(yǒu)两(liǎng)个(gè)芯片(piàn),芯片(piàn)A的(de)时(shí)鐘(zhōng)clka为(wèi)100MHz,芯片(piàn)B的(de)时(shí)鐘(zhōng)clkb为(wèi)100MHz。現(xiàn)在(zài)芯片(piàn)A要(yào)把32bit的(de)數據(jù)送給(gěi)芯片(piàn)B。模块(kuài)A要(yào)如(rú)何發(fà)送,模块(kuài)B要(yào)如(rú)何接收(shōu)呢?

答(dá):方(fāng)法1:采用(yòng)异(yì)步FIFO的(de)方(fāng)法。

      方(fāng)法2:采用(yòng)指令信(xìn)号(hào)的(de)方(fāng)法傳輸,模块(kuài)A産生(shēng)vld信(xìn)号(hào)給(gěi)模块(kuài)B,模块(kuài)B对(duì)vld進(jìn)行同(tóng)步化(huà)处理(打(dǎ)两(liǎng)拍)後(hòu),檢测同(tóng)步化(huà)信(xìn)号(hào)的(de)上(shàng)升(shēng)沿。需要(yào)注意(yì)的(de),VLD的(de)信(xìn)号(hào)是(shì)讓模块(kuài)B周期(qī)的(de)三(sān)倍或(huò)以(yǐ)上(shàng)。

       虽然clka和(hé)clkb都是(shì)100M,但他(tā)们(men)不(bù)是(shì)同(tóng)一(yī)个(gè)晶振産生(shēng)的(de),因(yīn)此(cǐ)都是(shì)异(yì)步时(shí)鐘(zhōng)。为(wèi)了(le)滿足以(yǐ)上(shàng)要(yào)求,所(suǒ)以(yǐ)模块(kuài)A要(yào)産生(shēng)3个(gè)时(shí)鐘(zhōng)的(de)vld給(gěi)模块(kuài)B。



【問(wèn)題(tí)8.11】A, B时(shí)鐘(zhōng)都是(shì)50M,但是(shì)他(tā)们(men)不(bù)相關(guān),为(wèi)了(le)防止編譯器把他(tā)们(men)默認为(wèi)同(tóng)一(yī)个(gè)时(shí)鐘(zhōng),是(shì)不(bù)是(shì)要(yào)用(yòng)一(yī)个(gè)异(yì)步时(shí)鐘(zhōng)組約束(shù),来(lái)告訴編譯器他(tā)们(men)是(shì)不(bù)同(tóng)的(de)两(liǎng)个(gè)时(shí)鐘(zhōng)?

答(dá):一(yī)般分(fēn)别産生(shēng)A和(hé)B的(de)时(shí)鐘(zhōng)約束(shù)即可(kě)。



【問(wèn)題(tí)12】 建立时(shí)間(jiān)可(kě)以(yǐ)是(shì)負值吗?

答(dá):建立时(shí)間(jiān)當然可(kě)以(yǐ)是(shì)負數了(le)。負數表(biǎo)示,可(kě)以(yǐ)在(zài)时(shí)鐘(zhōng)上(shàng)升(shēng)沿後(hòu)數據(jù)才變(biàn)化(huà)。(建立时(shí)間(jiān)是(shì)器件(jiàn)的(de)屬性(xìng),至(zhì)于(yú)怎麼(me)器件(jiàn)怎麼(me)做到(dào)的(de),那(nà)就(jiù)要(yào)問(wèn)器件(jiàn)工程师(shī)了(le))



【問(wèn)題(tí)13】 程序原本(běn)时(shí)序可(kě)以(yǐ)通(tòng)过(guò),加上(shàng)singalTap节(jié)點(diǎn)之後(hòu)时(shí)序不(bù)通(tòng)过(guò)是(shì)什麼(me)原因(yīn)

答(dá):增加signaltap ILA等在(zài)線(xiàn)調試工具时(shí),需要(yào)使用(yòng)到(dào)內(nèi)部(bù)的(de)資源,例如(rú)RAM、選擇器、寄存器等,增加後(hòu)再去(qù)綜合和(hé)布(bù)局(jú)布(bù)線(xiàn)。

      由(yóu)于(yú)改變(biàn)了(le)資源,因(yīn)此(cǐ)肯定(dìng)对(duì)时(shí)序是(shì)有(yǒu)影響的(de),有(yǒu)可(kě)能(néng)改善了(le)也(yě)有(yǒu)可(kě)能(néng)惡化(huà)了(le)。如(rú)果(guǒ)时(shí)序有(yǒu)問(wèn)題(tí),分(fēn)析路(lù)徑,如(rú)果(guǒ)是(shì)在(zài)線(xiàn)調試工具路(lù)徑,評估是(shì)否会(huì)有(yǒu)风险,沒(méi)风险就(jiù)算了(le)




【問(wèn)題(tí)8.14】时(shí)序約束(shù)什麼(me)时(shí)候要(yào)做?

答(dá): 1.在(zài)需要(yào)的(de)时(shí)鐘(zhōng)頻率下(xià),如(rú)果(guǒ)邏輯功能(néng)不(bù)稳定(dìng),那(nà)麼(me)就(jiù)需要(yào)时(shí)序約束(shù)。   
       2.一(yī)般时(shí)鐘(zhōng)大于(yú)100M的(de)时(shí)候,我(wǒ)们(men)就(jiù)要(yào)做一(yī)下(xià)时(shí)序約束(shù)。



【問(wèn)題(tí)8.15】时(shí)序約束(shù)建立时(shí)間(jiān)和(hé)保持(chí)时(shí)間(jiān)的(de)生(shēng)活案(àn)例。

答(dá):可(kě)以(yǐ)想(xiǎng)象(xiàng),有(yǒu)一(yī)个(gè)人(rén)從家(jiā)里(lǐ)出(chū)發(fà)去(qù)機(jī)场,搭乘13點(diǎn)的(de)飛機(jī)。
   1. 13點(diǎn)起飛,起飛前(qián)15分(fēn)鐘(zhōng)要(yào)到(dào)機(jī)场,这(zhè)个(gè)15分(fēn)鐘(zhōng),就(jiù)類(lèi)似于(yú)建立时(shí)間(jiān)要(yào)求。
   2. 機(jī)场每小时(shí)有(yǒu)要(yào)飛一(yī)趟(tàng)飛機(jī),每个(gè)小时(shí)表(biǎo)示的(de)是(shì)时(shí)鐘(zhōng)周期(qī)。
   3. 飛機(jī)起飛後(hòu),機(jī)场要(yào)保持(chí)10分(fēn)鐘(zhōng),之後(hòu)才能(néng)来(lái)下(xià)一(yī)批乘客,这(zhè)个(gè)10分(fēn)鐘(zhōng)就(jiù)是(shì)保持(chí)时(shí)間(jiān)。
   4. 这(zhè)个(gè)人(rén)出(chū)發(fà)去(qù)搭13點(diǎn)的(de)飛機(jī),因(yīn)此(cǐ)他(tā)要(yào)在(zài)12點(diǎn)45分(fēn)之前(qián)到(dào)機(jī)场,并且是(shì)12點(diǎn)10分(fēn)之後(hòu)到(dào)機(jī)场。既不(bù)能(néng)早(zǎo)到(dào),也(yě)不(bù)能(néng)晚(wǎn)到(dào)機(jī)场。
   5. 如(rú)果(guǒ)这(zhè)个(gè)人(rén)12點(diǎn)45分(fēn)之後(hòu)才到(dào)機(jī)场,那(nà)就(jiù)搭不(bù)上(shàng)本(běn)趟(tàng)飛機(jī),即違反(fǎn)了(le)建立时(shí)間(jiān)要(yào)求。(建立时(shí)間(jiān)影響的(de)是(shì)自(zì)己坐飛機(jī))
   6. 如(rú)果(guǒ)这(zhè)个(gè)人(rén)12點(diǎn)10分(fēn)前(qián)就(jiù)到(dào)了(le)機(jī)场,那(nà)就(jiù)会(huì)因(yīn)此(cǐ)上(shàng)一(yī)趟(tàng)飛機(jī)的(de)起飛,即違反(fǎn)了(le)保持(chí)时(shí)間(jiān)要(yào)求。(保持(chí)时(shí)間(jiān)不(bù)滿足,影響的(de)是(shì)上(shàng)一(yī)批乘客坐飛機(jī))
   7. 这(zhè)个(gè)人(rén)是(shì)計(jì)劃(huà)去(qù)機(jī)场,因(yīn)此(cǐ)他(tā)要(yào)估算幾(jǐ)點(diǎn)能(néng)到(dào)機(jī)场。首先(xiān)他(tā)会(huì)算所(suǒ)有(yǒu)情(qíng)況下(xià)的(de)最(zuì)大延遲,如(rú)刚到(dào)路(lù)口(kǒu)紅(hóng)燈(dēng)就(jiù)来(lái)了(le)、走(zǒu)路(lù)最(zuì)慢(màn)等,在(zài)这(zhè)種(zhǒng)最(zuì)慢(màn)的(de)情(qíng)況下(xià),如(rú)果(guǒ)能(néng)在(zài)12點(diǎn)45分(fēn)前(qián)到(dào),说(shuō)明(míng)建立时(shí)間(jiān)沒(méi)問(wèn)題(tí)。

    然後(hòu),他(tā)会(huì)算所(suǒ)有(yǒu)情(qíng)況下(xià)的(de)最(zuì)小延遲,如(rú)刚到(dào)路(lù)口(kǒu)綠(lǜ)燈(dēng),走(zǒu)路(lù)最(zuì)快(kuài),在(zài)这(zhè)種(zhǒng)最(zuì)快(kuài)的(de)情(qíng)況下(xià),如(rú)果(guǒ)能(néng)在(zài)12點(diǎn)10分(fēn)後(hòu)才,那(nà)说(shuō)明(míng)保持(chí)时(shí)間(jiān)沒(méi)問(wèn)題(tí)。




【問(wèn)題(tí)8.16】为(wèi)什麼(me)建立时(shí)間(jiān)分(fēn)析的(de)时(shí)鐘(zhōng)到(dào)达(dá)时(shí)間(jiān)要(yào)加一(yī)个(gè)时(shí)鐘(zhōng)周期(qī)而(ér)保持(chí)时(shí)間(jiān)分(fēn)析則不(bù)用(yòng)呢?

答(dá): 因(yīn)为(wèi)建立时(shí)間(jiān)是(shì)源寄存器發(fà)出(chū)數據(jù),目的(de)寄存器采集,也(yě)就(jiù)是(shì)上(shàng)一(yī)个(gè)时(shí)鐘(zhōng)發(fà)出(chū)来(lái),本(běn)时(shí)鐘(zhōng)采集。这(zhè)里(lǐ)有(yǒu)一(yī)个(gè)时(shí)鐘(zhōng)周期(qī)的(de)因(yīn)素,所(suǒ)以(yǐ)要(yào)加1个(gè)时(shí)鐘(zhōng)周期(qī)。

       而(ér)保持(chí)时(shí)間(jiān)分(fēn)析,則是(shì)“本(běn)个(gè)时(shí)鐘(zhōng)”發(fà)出(chū)數據(jù)後(hòu),如(rú)果(guǒ)延时(shí)太小,会(huì)影響“本(běn)个(gè)时(shí)鐘(zhōng)”对(duì)上(shàng)一(yī)个(gè)數據(jù)的(de)采集,因(yīn)为(wèi)不(bù)需要(yào)加1个(gè)时(shí)鐘(zhōng)周期(qī)。

       另(lìng)外(wài),要(yào)注意(yì)一(yī)點(diǎn),保持(chí)时(shí)間(jiān)是(shì)跟时(shí)鐘(zhōng)周期(qī)无關(guān)的(de)。


【問(wèn)題(tí)8.17】一(yī)个(gè)外(wài)部(bù)的(de)信(xìn)号(hào),經(jīng)过(guò)狀态機(jī)的(de)“組合邏輯”,这(zhè)也(yě)要(yào)做同(tóng)步处理吗?

答(dá):需要(yào)做同(tóng)步处理的(de)。首先(xiān)明(míng)白一(yī)點(diǎn),FPGA里(lǐ)的(de)时(shí)序邏輯=組合邏輯 + D觸發(fà)器。組合邏輯的(de)最(zuì)終(zhōng)結果(guǒ),還(huán)是(shì)要(yào)發(fà)D觸發(fà)器的(de)。所(suǒ)以(yǐ)還(huán)要(yào)做同(tóng)步化(huà)处理的(de)。




【問(wèn)題(tí)8.18】請教下(xià),做时(shí)序約束(shù),做到(dào)这(zhè)步时(shí),这(zhè)些都要(yào)勾選上(shàng)吗? 

答(dá):當然不(bù)是(shì),要(yào)逐个(gè)分(fēn)析确認,沒(méi)有(yǒu)一(yī)選就(jiù)全(quán)選上(shàng)的(de)道(dào)理。



【問(wèn)題(tí)8.19】下(xià)面(miàn)的(de)生(shēng)成(chéng)时(shí)鐘(zhōng)約束(shù),是(shì)否一(yī)定(dìng)要(yào)勾選?


答(dá):这(zhè)應(yìng)該看(kàn)生(shēng)成(chéng)时(shí)鐘(zhōng)那(nà)一(yī)节(jié)視頻,里(lǐ)面(miàn)重(zhòng)點(diǎn)強(qiáng)調了(le)“什麼(me)叫时(shí)鐘(zhōng)”? 上(shàng)面(miàn)的(de)图(tú)里(lǐ),您應(yìng)該要(yào)搞清(qīng)楚,它(tā)被(bèi)識别出(chū)时(shí)鐘(zhōng)了(le),正(zhèng)不(bù)正(zhèng)常?如(rú)果(guǒ)是(shì)正(zhèng)常,那(nà)您肯定(dìng)是(shì)要(yào)添加約束(shù),定(dìng)義頻率吧。如(rú)果(guǒ)它(tā)不(bù)應(yìng)該識别出(chū)时(shí)鐘(zhōng)了(le),
那(nà)您應(yìng)該檢查您的(de)代(dài)碼,看(kàn)是(shì)不(bù)是(shì)代(dài)碼不(bù)規範引起,或(huò)者(zhě)有(yǒu)沒(méi)有(yǒu)潛在(zài)的(de)問(wèn)題(tí)。注意(yì)一(yī)下(xià):約束(shù)不(bù)是(shì)目的(de),約束(shù)是(shì)为(wèi)了(le)查看(kàn)報告,看(kàn)設計(jì)有(yǒu)沒(méi)有(yǒu)問(wèn)題(tí)的(de)。




【問(wèn)題(tí)8.20】系(xì)統同(tóng)步只(zhī)可(kě)能(néng)是(shì)單沿采集?沒(méi)法像DDR那(nà)樣(yàng)双(shuāng)沿采集?

答(dá):系(xì)統同(tóng)步也(yě)是(shì)可(kě)以(yǐ)是(shì)双(shuāng)沿采集的(de),但比較少(shǎo)。課程里(lǐ),只(zhī)是(shì)介紹了(le)部(bù)分(fēn)情(qíng)形。

      如(rú)果(guǒ)想(xiǎng)看(kàn)所(suǒ)有(yǒu)情(qíng)形有(yǒu)哪些,可(kě)以(yǐ)打(dǎ)開(kāi)VIVADO的(de)时(shí)序約束(shù)向(xiàng)導,可(kě)以(yǐ)設置INPUT DELAY窗(chuāng)口(kǒu)查看(kàn)。




【問(wèn)題(tí)8.21】QUARTUS生(shēng)成(chéng)SDC时(shí),默認出(chū)現(xiàn)的(de)那(nà)条(tiáo)时(shí)鐘(zhōng)約束(shù)是(shì)正(zhèng)常的(de)麼(me)?我(wǒ)自(zì)己删掉就(jiù)行了(le)?

答(dá):默認生(shēng)成(chéng)的(de)當然是(shì)不(bù)正(zhèng)常。




【問(wèn)題(tí)8.22】老(lǎo)师(shī)問(wèn)一(yī)下(xià),我(wǒ)画(huà)的(de)後(hòu)邊(biān)那(nà)个(gè)部(bù)分(fēn),我(wǒ)認为(wèi)應(yìng)該沒(méi)有(yǒu)數據(jù)吧?


答(dá):不(bù)是(shì) 这(zhè)个(gè)不(bù)是(shì)有(yǒu)沒(méi)有(yǒu)數據(jù)的(de)概念 而(ér)是(shì)數據(jù)是(shì)否稳定(dìng)的(de)概念。




【問(wèn)題(tí)8.23】請問(wèn)下(xià)有(yǒu)沒(méi)有(yǒu)針(zhēn)对(duì)SDC时(shí)序約束(shù)語(yǔ)法的(de)講解(jiě)吗?

答(dá):时(shí)序約束(shù)里(lǐ),只(zhī)講解(jiě)了(le)用(yòng)到(dào)的(de)部(bù)分(fēn)。如(rú)果(guǒ)想(xiǎng)看(kàn)更(gèng)多(duō)部(bù)分(fēn),我(wǒ)估計(jì)你要(yào)看(kàn)这(zhè)个(gè)語(yǔ)法的(de)權威資料了(le)。




【問(wèn)題(tí)8.24】老(lǎo)师(shī)您好(hǎo),我(wǒ)在(zài)学習时(shí)序約束(shù)視頻,看(kàn)到(dào)第(dì)一(yī)个(gè)視頻这(zhè)块(kuài)“流水(shuǐ)線(xiàn)設計(jì)思(sī)路(lù):乘法器可(kě)以(yǐ)分(fēn)成(chéng)加法器,然後(hòu)加法器還(huán)可(kě)以(yǐ)分(fēn)成(chéng)什麼(me),一(yī)直(zhí)听(tīng)不(bù)清(qīng)”

答(dá):最(zuì)後(hòu)可(kě)以(yǐ)分(fēn)成(chéng)與(yǔ)門(mén)这(zhè)些最(zuì)簡單的(de)門(mén)電(diàn)路(lù)。


【問(wèn)題(tí)8.25】老(lǎo)师(shī)請問(wèn)紅(hóng)色(sè)的(de)是(shì)不(bù)是(shì)不(bù)滿足时(shí)序要(yào)求?


答(dá):不(bù)是(shì)的(de),setup和(hé)hold时(shí)間(jiān)形成(chéng)一(yī)个(gè)时(shí)間(jiān)窗(chuāng),只(zhī)要(yào)在(zài)这(zhè)个(gè)时(shí)間(jiān)窗(chuāng)里(lǐ)信(xìn)号(hào)稳定(dìng)就(jiù)餓可(kě)以(yǐ)了(le) 在(zài)使用(yòng)时(shí)序分(fēn)析工具的(de)时(shí)候,字(zì)體(tǐ)为(wèi)紅(hóng)色(sè)时(shí)間(jiān)提(tí)示是(shì)不(bù)滿足时(shí)序要(yào)求



【問(wèn)題(tí)8.26】什麼(me)樣(yàng)的(de)信(xìn)号(hào)会(huì)被(bèi)工具判斷为(wèi)时(shí)鐘(zhōng)?
答(dá):一(yī)个(gè)信(xìn)号(hào)被(bèi)VIVADO QUARTUS判斷为(wèi)时(shí)鐘(zhōng),不(bù)是(shì)看(kàn)名稱里(lǐ)是(shì)否带(dài)有(yǒu)“clk”等字(zì)母。而(ér)是(shì)主(zhǔ)要(yào)看(kàn)其是(shì)否用(yòng)于(yú)“时(shí)鐘(zhōng)”的(de)行为(wèi)中(zhōng),主(zhǔ)要(yào)有(yǒu)如(rú)下(xià)幾(jǐ)種(zhǒng)情(qíng)況。
1. 被(bèi)關(guān)聯到(dào)always敏感(gǎn)列表(biǎo)里(lǐ)的(de)时(shí)鐘(zhōng)信(xìn)号(hào)。说(shuō)明(míng)会(huì)被(bèi)連(lián)到(dào)觸發(fà)器的(de)时(shí)鐘(zhōng)端,所(suǒ)以(yǐ)会(huì)被(bèi)認为(wèi)为(wèi)时(shí)鐘(zhōng)。
2. 被(bèi)連(lián)到(dào)PLL和(hé)MMCM等时(shí)鐘(zhōng)管(guǎn)理器的(de)輸入(rù)端,这(zhè)会(huì)被(bèi)認为(wèi)是(shì)时(shí)鐘(zhōng)。
3. 被(bèi)連(lián)到(dào)鎖存器的(de)条(tiáo)件(jiàn)端,例如(rú)一(yī)个(gè)沒(méi)有(yǒu)補全(quán)的(de)組合邏輯代(dài)碼,其条(tiáo)件(jiàn)就(jiù)会(huì)被(bèi)認为(wèi)时(shí)鐘(zhōng)。




【問(wèn)題(tí)8.27】用(yòng)ila抓取(qǔ)信(xìn)号(hào)分(fēn)析,發(fà)現(xiàn)异(yì)常,而(ér)时(shí)序約束(shù)報告正(zhèng)常,因(yīn)此(cǐ)可(kě)以(yǐ)認为(wèi)时(shí)序報告正(zhèng)常,而(ér)时(shí)序会(huì)有(yǒu)問(wèn)題(tí)?

答(dá):
1.在(zài)線(xiàn)邏輯分(fēn)析儀是(shì)用(yòng)于(yú)判斷邏輯是(shì)否出(chū)現(xiàn)問(wèn)題(tí),可(kě)以(yǐ)認为(wèi)是(shì)檢查时(shí)鐘(zhōng)节(jié)拍下(xià)的(de)邏輯判斷。而(ér)时(shí)序約束(shù)是(shì)解(jiě)決D觸發(fà)器的(de)建立时(shí)間(jiān)和(hé)保持(chí)时(shí)間(jiān)問(wèn)題(tí),是(shì)一(yī)个(gè)时(shí)鐘(zhōng)內(nèi)的(de)时(shí)序問(wèn)題(tí)。
所(suǒ)以(yǐ),不(bù)能(néng)用(yòng)ila来(lái)推導时(shí)序約束(shù),这(zhè)是(shì)不(bù)同(tóng)层次(cì)的(de)問(wèn)題(tí)。
2.官方(fāng)可(kě)以(yǐ)保證,用(yòng)戶代(dài)碼和(hé)时(shí)序約束(shù)的(de)生(shēng)成(chéng)結果(guǒ)是(shì)正(zhèng)确,即在(zài)輸入(rù)的(de)代(dài)碼和(hé)約束(shù),給(gěi)出(chū)来(lái)的(de)報告一(yī)定(dìng)是(shì)正(zhèng)确的(de)。但时(shí)序約束(shù)对(duì)不(bù)对(duì),这(zhè)是(shì)客戶保證的(de)。
3.出(chū)現(xiàn)結果(guǒ)不(bù)对(duì),可(kě)能(néng)性(xìng)很多(duō),不(bù)一(yī)定(dìng)是(shì)时(shí)序問(wèn)題(tí),要(yào)注意(yì)“充分(fēn)必要(yào)条(tiáo)件(jiàn)”。


【問(wèn)題(tí)8.28】同(tóng)樣(yàng)的(de)工程不(bù)做任何改動(dòng),有(yǒu)时(shí)編譯後(hòu)下(xià)板验(yàn)證正(zhèng)确,有(yǒu)时(shí)編譯後(hòu)下(xià)板验(yàn)證不(bù)正(zhèng)确,是(shì)不(bù)是(shì)时(shí)序問(wèn)題(tí)呢?
答(dá):有(yǒu)可(kě)能(néng)是(shì),但又不(bù)一(yī)定(dìng)是(shì)。这(zhè)是(shì)时(shí)序不(bù)滿足的(de)一(yī)種(zhǒng)現(xiàn)象(xiàng)。但反(fǎn)过(guò)来(lái),沒(méi)有(yǒu)说(shuō),出(chū)現(xiàn)这(zhè)種(zhǒng)現(xiàn)象(xiàng),就(jiù)一(yī)定(dìng)是(shì)时(shí)序問(wèn)題(tí)。


【問(wèn)題(tí)8.29】設置时(shí)鐘(zhōng)約束(shù)时(shí),假如(rú)有(yǒu)虛拟时(shí)鐘(zhōng)的(de)情(qíng)況,虛拟时(shí)鐘(zhōng)是(shì)必須要(yào)設置的(de)吗?
答(dá):
1.原則上(shàng)所(suǒ)有(yǒu)接口(kǒu)有(yǒu)應(yìng)有(yǒu)約束(shù)。
2.設置虛拟时(shí)鐘(zhōng),可(kě)以(yǐ)方(fāng)便将对(duì)應(yìng)信(xìn)号(hào)歸到(dào)該虛拟时(shí)鐘(zhōng)好(hǎo),这(zhè)樣(yàng)方(fāng)便做分(fēn)析,例如(rú)看(kàn)有(yǒu)沒(méi)有(yǒu)跨时(shí)鐘(zhōng)域等。
3.是(shì)不(bù)是(shì)一(yī)定(dìng)要(yào)做,取(qǔ)決于(yú)項目老(lǎo)大要(yào)求,不(bù)做不(bù)一(yī)定(dìng)有(yǒu)問(wèn)題(tí)。

【問(wèn)題(tí)8.30】一(yī)个(gè)always模块(kuài)下(xià),if 、else if,,,else ,写的(de)太多(duō)了(le) ,是(shì)不(bù)是(shì)会(huì)容易造成(chéng)时(shí)序問(wèn)題(tí)呢?这(zhè)種(zhǒng)说(shuō)法对(duì)吗?
答(dá):这(zhè)里(lǐ)有(yǒu)一(yī)个(gè)定(dìng)義要(yào)搞清(qīng)楚的(de),什麼(me)叫“多(duō)”?
1. 是(shì)3个(gè)就(jiù)多(duō),還(huán)是(shì)10个(gè)?每个(gè)人(rén)标(biāo)準不(bù)同(tóng)。
2. 即使是(shì)同(tóng)一(yī)个(gè)人(rén),使用(yòng)不(bù)同(tóng)的(de)器件(jiàn),这(zhè)个(gè)“多(duō)”也(yě)是(shì)不(bù)同(tóng)的(de)。有(yǒu)些高(gāo)級的(de)器件(jiàn),10个(gè)IF也(yě)不(bù)多(duō),有(yǒu)些低端器件(jiàn),3个(gè)也(yě)多(duō)。
3. 即使同(tóng)一(yī)个(gè)人(rén),同(tóng)一(yī)个(gè)器件(jiàn),但if里(lǐ)的(de)判斷条(tiáo)件(jiàn)也(yě)有(yǒu)講究。如(rú)果(guǒ)判斷条(tiáo)件(jiàn)里(lǐ)一(yī)个(gè)除法器,那(nà)1个(gè)if也(yě)多(duō),如(rú)果(guǒ)只(zhī)是(shì)判斷0和(hé)1,那(nà)麼(me)10个(gè)也(yě)算少(shǎo)。
4. 最(zuì)具可(kě)操作性(xìng)的(de)做法,給(gěi)定(dìng)时(shí)鐘(zhōng)約束(shù),看(kàn)时(shí)序報告。報告沒(méi)問(wèn)題(tí),那(nà)就(jiù)是(shì)沒(méi)問(wèn)題(tí);否則会(huì)有(yǒu)时(shí)序違例的(de)錯誤。 

【問(wèn)題(tí)8.31】output latency一(yī)般設置成(chéng)多(duō)少(shǎo)呢?pipeline 有(yǒu)啥用(yòng)?

答(dá):由(yóu)于(yú)除法器占用(yòng)資源較大,難以(yǐ)在(zài)一(yī)个(gè)时(shí)鐘(zhōng)周期(qī)內(nèi)計(jì)算完畢,需要(yào)多(duō)个(gè)时(shí)鐘(zhōng)才計(jì)算完,这(zhè)个(gè)pipeline就(jiù)是(shì)設置多(duō)少(shǎo)个(gè)时(shí)鐘(zhōng)周期(qī)的(de)。
如(rú)果(guǒ)您不(bù)清(qīng)楚要(yào)多(duō)少(shǎo)个(gè),設置填一(yī)个(gè)較大的(de)數,然後(hòu)看(kàn)时(shí)序報告是(shì)否正(zhèng)确。如(rú)果(guǒ)正(zhèng)确,就(jiù)沒(méi)問(wèn)題(tí)。


【問(wèn)題(tí)8.32】請問(wèn):MDY的(de)案(àn)例中(zhōng),为(wèi)什麼(me)串口(kǒu)需要(yào)对(duì)din進(jìn)行同(tóng)步化(huà),而(ér)SCCB就(jiù)不(bù)需要(yào)对(duì)sio_din進(jìn)行同(tóng)步化(huà)?sio_din也(yě)是(shì)外(wài)部(bù)器件(jiàn)進(jìn)来(lái)的(de)吗? 

答(dá): 是(shì)否要(yào)对(duì)信(xìn)号(hào)進(jìn)行同(tóng)步化(huà),最(zuì)核心(xīn)的(de)理解(jiě)是(shì)“該信(xìn)号(hào)是(shì)否能(néng)够保證滿足建立时(shí)間(jiān)和(hé)保持(chí)时(shí)間(jiān)要(yào)求”,也(yě)就(jiù)是(shì)“該信(xìn)号(hào)的(de)變(biàn)化(huà)和(hé)时(shí)鐘(zhōng)存在(zài)确定(dìng)性(xìng)相位關(guān)系(xì)”。
        以(yǐ)串口(kǒu)为(wèi)例,串口(kǒu)的(de)輸入(rù)信(xìn)号(hào)與(yǔ)FPGA时(shí)鐘(zhōng)是(shì)沒(méi)有(yǒu)任何聯系(xì)的(de),該輸入(rù)信(xìn)号(hào)可(kě)以(yǐ)在(zài)任意(yì)时(shí)刻變(biàn)化(huà),也(yě)就(jiù)有(yǒu)可(kě)能(néng)刚好(hǎo)在(zài)时(shí)鐘(zhōng)上(shàng)升(shēng)沿變(biàn)化(huà),從而(ér)不(bù)滿足建立时(shí)間(jiān)要(yào)求,
        因(yīn)此(cǐ)要(yào)做同(tóng)步化(huà)处理。而(ér)SCCB案(àn)例中(zhōng),由(yóu)FPGA时(shí)鐘(zhōng)里(lǐ)産生(shēng)了(le)sio_dout、SCK等信(xìn)号(hào),而(ér)sio_din在(zài)sck作用(yòng)下(xià)變(biàn)化(huà),所(suǒ)以(yǐ)sio_din與(yǔ)FPGA时(shí)鐘(zhōng)是(shì)有(yǒu)一(yī)定(dìng)關(guān)系(xì)的(de)。
        可(kě)以(yǐ)認真(zhēn)看(kàn)时(shí)序图(tú),在(zài)FPGA对(duì)sio_din有(yǒu)采樣(yàng)时(shí)刻,时(shí)序已經(jīng)要(yào)求sio_din要(yào)稳定(dìng)不(bù)變(biàn)的(de),所(suǒ)以(yǐ)可(kě)以(yǐ)不(bù)用(yòng)做同(tóng)化(huà)处理。



【問(wèn)題(tí)8.33】請問(wèn)工程中(zhōng)使用(yòng)了(le)PLL,在(zài)做时(shí)序約束(shù)时(shí),generate clocks窗(chuāng)口(kǒu)顯示沒(méi)有(yǒu)PLL産生(shēng)的(de)时(shí)鐘(zhōng),如(rú)下(xià)图(tú),为(wèi)什麼(me)?


答(dá):PLL、MMCM等産生(shēng)的(de)时(shí)鐘(zhōng),默認是(shì)由(yóu)工具自(zì)動(dòng)推導約束(shù)的(de),不(bù)用(yòng)用(yòng)戶来(lái)約束(shù)。虽然用(yòng)戶沒(méi)有(yǒu)約束(shù),事(shì)实上(shàng)是(shì)做了(le)分(fēn)析的(de)。例如(rú)下(xià)图(tú)中(zhōng),

可(kě)以(yǐ)看(kàn)到(dào)c0_my_pll这(zhè)个(gè)时(shí)鐘(zhōng)。其中(zhōng),c0_my_pll是(shì)工具自(zì)動(dòng)命名的(de)。


用(yòng)戶也(yě)可(kě)以(yǐ)自(zì)己約束(shù)PLL/MMCM産生(shēng)的(de)时(shí)鐘(zhōng),方(fāng)法如(rú)下(xià)图(tú)。

按照方(fāng)面(miàn)方(fāng)法,約束(shù)好(hǎo),重(zhòng)新分(fēn)析就(jiù)可(kě)以(yǐ)了(le)。




【問(wèn)題(tí)8.34】問(wèn):如(rú)果(guǒ)使用(yòng)的(de)IP核內(nèi)部(bù)代(dài)碼出(chū)現(xiàn)了(le)时(shí)序約束(shù)違例,該如(rú)何解(jiě)決?

答(dá):IP核是(shì)由(yóu)官方(fāng)提(tí)供的(de)代(dài)碼,一(yī)般用(yòng)戶不(bù)能(néng)修改,如(rú)果(guǒ)該IP核出(chū)現(xiàn)違例,可(kě)以(yǐ)從以(yǐ)下(xià)方(fāng)向(xiàng)入(rù)手(shǒu):
1. 一(yī)般IP核是(shì)有(yǒu)指定(dìng)的(de)頻率範圍,可(kě)以(yǐ)從數據(jù)手(shǒu)册找(zhǎo)到(dào),請看(kàn)是(shì)否滿足了(le)數據(jù)手(shǒu)册要(yào)求。
2. 如(rú)果(guǒ)頻率正(zhèng)确,還(huán)会(huì)出(chū)現(xiàn)報錯,可(kě)以(yǐ)檢查时(shí)鐘(zhōng)和(hé)複位管(guǎn)脚有(yǒu)沒(méi)有(yǒu)正(zhèng)确使用(yòng),根(gēn)據(jù)經(jīng)验(yàn),这(zhè)通(tòng)常是(shì)引起問(wèn)題(tí)的(de)原因(yīn)。
3. 嘗試修改編譯策略,重(zhòng)新綜合看(kàn)看(kàn)。


【問(wèn)題(tí)8.35】問(wèn):請問(wèn)时(shí)序約束(shù)只(zhī)是(shì)針(zhēn)对(duì)FPGA輸入(rù)與(yǔ)輸出(chū)端進(jìn)行約束(shù),而(ér)不(bù)是(shì)針(zhēn)对(duì)FPGA內(nèi)部(bù)模块(kuài)之間(jiān)或(huò)者(zhě)模块(kuài)里(lǐ)面(miàn)。这(zhè)樣(yàng)理解(jiě)是(shì)否正(zhèng)确?

答(dá):不(bù)是(shì)的(de),內(nèi)部(bù)肯定(dìng)也(yě)跟約束(shù)有(yǒu)關(guān)。





【問(wèn)題(tí)8.36】問(wèn):老(lǎo)师(shī),想(xiǎng)問(wèn)下(xià)时(shí)序約束(shù),DDR4的(de)uiclk需要(yào)时(shí)鐘(zhōng)約束(shù)吗?(时(shí)序約束(shù))
答(dá):需要(yào)的(de),設置好(hǎo)时(shí)鐘(zhōng)頻率,周期(qī)就(jiù)可(kě)以(yǐ)了(le),就(jiù)是(shì)需要(yào)create clock就(jiù)好(hǎo)了(le)




【問(wèn)題(tí)8.37】
問(wèn):關(guān)于(yú)input delay的(de)抖動(dòng)解(jiě)釋。(时(shí)序約束(shù))

答(dá):需要(yào)理解(jiě)的(de)抖動(dòng),不(bù)是(shì)指一(yī)个(gè)波(bō)形的(de)結果(guǒ),是(shì)多(duō)个(gè)波(bō)形疊加的(de)結果(guǒ)。假設说(shuō)一(yī)个(gè)PWM波(bō)形,周期(qī)为(wèi)10ns,理想(xiǎng)情(qíng)況下(xià)變(biàn)高(gāo)为(wèi)2.5ns,變(biàn)低在(zài)7.5ns。由(yóu)于(yú)存在(zài)不(bù)确定(dìng)延时(shí)情(qíng)況,所(suǒ)以(yǐ)有(yǒu)时(shí)候變(biàn)高(gāo)在(zài)2.6ns,變(biàn)低在(zài)7.6ns有(yǒu)时(shí)候變(biàn)高(gāo)在(zài)2.4ns,變(biàn)低在(zài)7.4ns。有(yǒu)时(shí)變(biàn)高(gāo)在(zài)2.3ns,變(biàn)低在(zài)7.3ns。數个(gè)波(bō)形疊加,就(jiù)看(kàn)到(dào)了(le)抖動(dòng)的(de)現(xiàn)象(xiàng)。



下(xià)一(yī)篇(piān):13_其他(tā)問(wèn)題(tí)
   拓展(zhǎn)閱读(dú)
⁩⁣⁩⁨ ⁩⁤⁢⁢⁢⁥⁩ ⁥⁣⁦⁡ ⁣⁤⁨ ⁡⁨⁠⁤⁠ ⁦⁧⁡⁤⁣⁡⁡⁨⁤ NrEnE8Gui⁤⁥⁧⁦⁦⁡⁧
⁢⁢⁦⁡⁩⁢⁡
⁣⁧⁡⁤ ⁦⁥⁣⁣ ⁦⁩⁣⁥⁥⁤⁢⁢⁨ ⁥⁤⁦⁢⁦⁦⁠⁠ ⁠⁣ ⁩⁡⁠⁢⁦⁢ J2JwAm⁤⁦⁨⁣⁢⁤⁦⁨ ⁢⁦⁤⁦⁤⁡⁩ ⁧⁨⁨ ⁡⁠⁥⁡⁥⁢⁣ XjPR4LJxih⁧⁨⁦⁠⁥⁧⁩⁠⁥ ⁦⁤⁠⁦⁧⁨⁤⁩
⁦⁢⁨⁤
⁢⁠⁤⁦⁨

⁩⁩⁡

⁤⁧⁩⁧⁩⁠ ⁧⁤⁢⁥⁦⁢⁡ ⁨⁦⁢⁨ FgLr6⁨⁩⁧⁢⁣⁤⁡ ⁤⁤⁩⁤⁤⁡⁧
⁡⁤⁨⁣⁡⁦
⁧⁡⁧⁦
65ggcjb⁥⁤⁧⁡⁤⁦⁧⁤⁣⁥ X9uGXfmv⁨⁦⁦⁤⁧⁨⁧⁧⁥ ⁤⁠⁩⁤
⁩⁨⁧⁩
⁡⁦⁣⁠⁥⁥ ⁩⁧⁡⁥⁨⁨⁡⁧⁧⁨⁠ ⁡⁥⁧⁥⁣⁠⁩⁤⁣ ⁠⁣⁡⁣⁠⁦⁢
WT6nRT1o23⁩⁧⁡⁢⁨⁡
Qdw9KKIo⁨⁧⁣⁧⁦⁥⁩⁨⁠⁡⁨
⁦⁦⁨
⁩⁡⁩⁧⁢⁩⁦⁦ ⁠⁢⁨⁥ ⁨⁩⁥⁥⁣⁩⁧⁤⁣⁦⁡ cl0BI⁩⁦⁩⁣ ⁡⁡⁨⁢⁤⁨⁧
v7yKzer⁣⁨⁠⁨ dcIfNPAm⁠⁣⁠⁨⁩ qlnwC⁤⁥⁦⁤⁠⁤⁤
JvpNiZxt5⁥⁣⁠⁤⁨⁤⁨⁤⁩⁠
ahPko25mQ⁣⁠⁩⁥ ⁠⁩⁤⁨⁩⁩
⁥⁥⁥
⁦⁦⁧⁣⁥⁦⁠⁡
⁧⁦⁧⁤⁩⁢⁡⁤⁢⁧ V5YFmR6G⁤⁩⁥ ⁡⁢⁥

⁧⁨⁡⁩⁣⁡⁥

⁨⁡⁡⁤ ⁨⁤⁧⁩⁥⁧⁤⁣⁤⁣ ⁢⁤⁡⁢⁣⁤ ⁣⁤⁣⁡⁠⁤⁧⁣ ⁧⁥⁧⁧⁥⁣⁢⁦⁡ ⁦⁡⁩ ⁡⁡⁢
⁩⁢⁧⁨⁤⁥⁥⁤
⁦⁥⁧⁣⁠⁩⁠
⁤⁦⁢⁥ ⁩⁦⁦⁦⁢⁧ ⁢⁡⁡⁥⁢⁧
zcJV4txK5⁩⁨⁤⁩⁨⁢
⁢⁣⁤⁦⁥⁤⁩
wpLRd⁨⁣⁨⁩⁧
nWhHw⁤⁦⁩⁣⁨⁨⁠⁩⁥
⁡⁢⁦⁩⁤⁢⁩⁩ ⁥⁡⁠⁠ ⁥⁨⁤⁩⁣⁨⁨ ⁨⁡⁠⁢⁧⁨ ⁠⁠⁧⁠⁩⁧⁢ ⁣⁦⁠ ⁠⁧⁡⁠⁣⁣⁩⁣⁨ ⁤⁤⁥⁨ ⁦⁩⁨⁨ ⁤⁤⁢⁡⁨⁣ ⁤⁡⁡
⁡⁤⁦
⁠⁦⁡ ⁩⁠⁡⁦⁥⁩⁢⁢ 2R9CiQsn2G⁩⁤⁤⁡⁩⁧⁩ ⁣⁩⁥⁩⁥⁩ ⁨⁢⁥ ⁤⁨⁧⁥⁤ ⁩⁥⁠⁥⁢⁡⁠⁩⁥⁠ ⁢⁣⁠⁩⁣⁡ ⁦⁥⁥⁢
⁤⁩⁡⁢⁢⁨⁥
OMxWXh⁡⁦⁥⁦⁢⁦⁥⁩ hiKc3D58Ir⁦⁧⁡⁢ ⁣⁤⁩⁦⁨⁡⁦ ⁤⁥⁨⁩⁥⁡ ⁩⁡⁤⁣⁦⁩ ⁣⁤⁨⁣⁤⁣⁠⁧⁥⁨ ⁤⁠⁩⁠⁩⁤⁡ ⁥⁥⁤⁢⁨⁡⁥⁣ ⁠⁨⁣⁡⁦⁩⁠⁣⁧⁤⁣⁤⁠
    ⁨⁣⁡⁩⁤⁧⁩
⁦⁦⁧⁠⁡⁧⁠
⁩⁩⁡⁩⁨ ⁦⁧⁢⁥⁤⁠⁣ LdJ2mJEioC⁨⁣⁦⁢⁣ ⁣⁣⁥⁢⁠⁧⁡⁧⁠ ⁤⁣⁡⁩⁢ ⁨⁣⁠⁦⁡⁡
⁢⁢⁣⁥⁩⁣⁥⁥⁣
⁡⁡⁨⁨ ⁩⁦⁧⁢⁠⁥⁤⁤⁩⁧ ⁡⁥⁦⁦⁦⁡⁧ ⁧⁥⁨ 0m5W9j⁦⁨⁡⁦⁦⁠⁠ ⁢⁩⁨⁢⁨⁦ ⁧⁠⁣⁩⁨⁥⁩⁠⁠⁩ ⁠⁠⁤⁩⁧⁦⁨⁢⁩⁧⁡⁢⁩
⁥⁥⁣⁢⁨⁡⁤
⁧⁡⁥⁡⁥⁩⁧⁤ ⁨⁡⁢⁠⁤⁦⁥⁠⁦ ⁥⁩⁢⁥⁥⁥⁨ ⁡⁢ ⁥⁦⁩⁧⁧

⁡⁦⁣⁥⁤⁧⁡

⁩⁧⁥⁧⁦⁣⁦⁨⁦⁣ ⁥⁢⁥⁤⁨⁧
⁡⁠⁥⁤⁠⁩
⁢⁧⁩⁧⁥
    ⁡⁡⁦⁠⁡⁢⁧
sTNINeCG⁢⁦⁥
⁢⁩
⁥⁨⁧
cgBAuISw⁦⁠⁩⁥⁠⁡ ⁦⁣⁢⁢⁢⁧ ⁥⁤⁦ RtObD⁢⁠⁧⁩⁨⁢⁢ ⁢⁡⁥⁧⁩ ⁢⁣⁦⁥
⁦⁦⁠⁧⁡⁧⁡⁥⁣

⁢⁢⁣⁣⁥

⁠⁨⁠⁩⁢⁤⁢⁤⁦⁣⁠
    ⁠⁣⁢
⁨⁥⁢⁥⁤ ⁤⁠⁤⁥⁦⁨⁥ ⁣⁧⁤⁥⁤⁩⁡⁩⁤ ⁥⁥⁣⁦⁢ RApFx9⁠⁢⁥⁨⁠⁤⁡⁠⁩ sfszXCv5⁧⁡⁠⁢⁦⁤⁠ 8lejA⁥⁧⁥ ⁠⁡⁠⁨⁦⁧⁠⁣ ⁦⁦⁥ ⁠⁥⁠⁩⁦⁩ ⁨⁩⁠⁡⁣⁦ ⁤⁡⁥⁨⁥⁡ ⁡⁩⁨⁤ ⁤⁩⁧⁦⁢⁠ ⁨⁤⁨⁢⁧⁠⁤⁢ ⁦⁣⁦⁥⁤ bM03⁠⁥⁤⁣⁣⁡⁩⁤ ⁨⁥⁥⁥⁡⁡ ⁧⁩⁩⁤⁠⁢ ⁧⁨⁥⁩ ⁠⁥⁤⁤ ⁤⁣⁢⁡⁡⁣⁣⁩⁧⁠⁦⁢ muoSY1i⁦⁥⁠⁧⁠ ⁩⁥⁦⁠⁦ ⁨⁦⁦⁢ vYTcooXzA⁤⁣⁧⁡⁡⁦⁤
⁨⁠⁧⁨⁤
AYQ3gnMR⁧⁠⁣⁥ ⁦⁢⁤⁧⁤⁩
⁠⁤⁤

xDsToeNDG7⁥⁠⁢

⁧⁨⁥⁨