|
如(rú)果(guǒ)同(tóng)学们(men)的(de)問(wèn)題(tí)我(wǒ)们(men)帖子里(lǐ)面(miàn)沒(méi)有(yǒu)的(de)請第(dì)一(yī)时(shí)間(jiān)聯系(xì)我(wǒ)微信(xìn)同(tóng)步:易老(lǎo)师(shī)13112063618(微信(xìn)同(tóng)号(hào)) |
明(míng)德揚最(zuì)近(jìn)做了(le)抖音(yīn)系(xì)列短(duǎn)視頻,感(gǎn)興趣可(kě)以(yǐ)關(guān)注明(míng)德揚抖音(yīn)号(hào):FPGA技巧分(fēn)享(87481069842)至(zhì)簡書(shū)籍短(duǎn)視頻(74803215644)
內(nèi)容不(bù)斷更(gèng)新!點(diǎn)赞+關(guān)注,学習不(bù)迷路(lù)!
一(yī)、SDRAM和(hé)DDR專題(tí)課
【問(wèn)題(tí)1.1】DDR3那(nà)个(gè)課程,一(yī)般線(xiàn)速率能(néng)跑到(dào)多(duō)少(shǎo)?答(dá):本(běn)課程的(de)DDR3內(nèi)容,是(shì)基于(yú)XILINX K7芯片(piàn),使用(yòng)的(de)是(shì)VIVADO平台(tái)。DDR3的(de)时(shí)鐘(zhōng)頻率是(shì)800M。用(yòng)戶側时(shí)鐘(zhōng)是(shì)200M。
【問(wèn)題(tí)1.2】SDRAM和(hé)DDR3課程,使用(yòng)是(shì)什麼(me)平台(tái)?
答(dá):SDRAM部(bù)分(fēn)使用(yòng)的(de)是(shì)QUARTUS平台(tái),着重(zhòng)于(yú)講解(jiě)SDRAM时(shí)序和(hé)SDRAM的(de)接口(kǒu)設計(jì)。DDR3部(bù)分(fēn),使用(yòng)的(de)是(shì)VIVADO平台(tái),着重(zhòng)于(yú)DDR3 IP的(de)生(shēng)成(chéng)和(hé)上(shàng)板验(yàn)證流程。
DDR3的(de)理論部(bù)分(fēn),基本(běn)上(shàng)不(bù)涉及(jí),建議可(kě)以(yǐ)參考SDRAM的(de)理論部(bù)分(fēn)。
【問(wèn)題(tí)1.3】 使用(yòng)DDR3 IP一(yī)定(dìng)需要(yào)读(dú)地(dì)址FIFO,读(dú)數據(jù)FIFO,写地(dì)址FIFO,写數據(jù)FIFO来(lái)先(xiān)進(jìn)行數據(jù)緩存吗?
答(dá):这(zhè)个(gè)理解(jiě)是(shì)不(bù)对(duì)的(de)。这(zhè)里(lǐ)沒(méi)有(yǒu)跨时(shí)間(jiān)域的(de)信(xìn)号(hào)傳輸的(de)。因(yīn)为(wèi)IP核会(huì)産生(shēng)一(yī)个(gè)本(běn)地(dì)时(shí)鐘(zhōng),这(zhè)个(gè)本(běn)地(dì)时(shí)鐘(zhōng)是(shì)可(kě)以(yǐ)直(zhí)接采集數據(jù)的(de),假設为(wèi)clk_ddr_local。
用(yòng)戶可(kě)以(yǐ)直(zhí)接使用(yòng)clk_ddr_local来(lái)往IP核傳輸數據(jù)。
好(hǎo)了(le),接下(xià)来(lái)再考慮一(yī)个(gè)场景:我(wǒ)有(yǒu)一(yī)組數據(jù)A,産生(shēng)于(yú)时(shí)鐘(zhōng)域clk;A要(yào)写到(dào)DDR,DDR的(de)时(shí)鐘(zhōng)域是(shì)clk_ddr_local。
自(zì)然地(dì),A要(yào)跟时(shí)鐘(zhōng)域到(dào)clk_ddr_local,然後(hòu)才能(néng)写到(dào)DDR中(zhōng),这(zhè)就(jiù)需要(yào)用(yòng)到(dào)FIFO。
接下(xià)来(lái)考慮另(lìng)一(yī)个(gè)场景:我(wǒ)有(yǒu)一(yī)組數據(jù)B,産生(shēng)于(yú)时(shí)鐘(zhōng)域clk_ddr_local;B要(yào)写到(dào)DDR,DDR的(de)时(shí)鐘(zhōng)是(shì)clk_ddr_local。
由(yóu)于(yú)两(liǎng)个(gè)时(shí)鐘(zhōng)域相同(tóng),直(zhí)接写就(jiù)好(hǎo)了(le)。(通(tòng)常来(lái)说(shuō),这(zhè)已經(jīng)不(bù)屬于(yú)DDR的(de)知識了(le),而(ér)是(shì)屬于(yú)跨时(shí)鐘(zhōng)域处理的(de)知識,是(shì)FPGA工程师(shī)都應(yìng)該知道(dào)的(de)概念)。
【問(wèn)題(tí)1.4】用(yòng)戶邏輯控制DDR3读(dú)写的(de)程序不(bù)是(shì)需要(yào)自(zì)己写吗?答(dá):官方(fāng)一(yī)般提(tí)供了(le)DDR3的(de)IP核。
答(dá):用(yòng)戶可(kě)以(yǐ)通(tòng)过(guò)DDR3 IP核来(lái)進(jìn)行DDR3芯片(piàn)的(de)读(dú)写。但是(shì)用(yòng)戶需要(yào)写邏輯来(lái)控制DDR3 IP核。
【問(wèn)題(tí)1.5】課程里(lǐ)会(huì)講如(rú)何通(tòng)过(guò)DDR3 IP像写入(rù)图(tú)像吗?
答(dá):課程中(zhōng)的(de)SDRAM部(bù)分(fēn),会(huì)有(yǒu)例子講如(rú)何写入(rù)图(tú)像到(dào)SDRAM中(zhōng),DDR3/4也(yě)是(shì)類(lèi)似的(de)。但由(yóu)于(yú)每人(rén)的(de)項目不(bù)同(tóng),所(suǒ)以(yǐ)需要(yào)学員根(gēn)據(jù)自(zì)己情(qíng)況来(lái)移植。
【問(wèn)題(tí)1.6】如(rú)何知道(dào)ddr3里(lǐ)不(bù)空,可(kě)以(yǐ)读(dú)取(qǔ)了(le)?
答(dá):DDR3和(hé)RAM一(yī)樣(yàng),是(shì)一(yī)个(gè)存儲器件(jiàn),它(tā)的(de)每个(gè)內(nèi)部(bù)單元(yuán)都存儲了(le)當前(qián)的(de)數據(jù)狀态值。
但DDR3和(hé)RAM本(běn)身(shēn),是(shì)沒(méi)有(yǒu)“空”、“存有(yǒu)數據(jù)”,“數據(jù)滿”等概念的(de)。只(zhī)要(yào)給(gěi)地(dì)址,它(tā)就(jiù)会(huì)把當前(qián)地(dì)址的(de)數據(jù)給(gěi)到(dào)總(zǒng)線(xiàn)上(shàng),
而(ér)且这(zhè)个(gè)地(dì)址可(kě)以(yǐ)读(dú)很多(duō)次(cì)。在(zài)設計(jì)的(de)时(shí)候,是(shì)由(yóu)設計(jì)师(shī)用(yòng)自(zì)己写邏輯来(lái)判斷DDR3是(shì)否为(wèi)空。
【問(wèn)題(tí)1.7】請問(wèn)这(zhè)个(gè)sdram的(de)自(zì)動(dòng)刷新命令發(fà)送後(hòu),是(shì)不(bù)是(shì)刷新的(de)是(shì)所(suǒ)有(yǒu)bank的(de)同(tóng)一(yī)行都在(zài)執行刷新呀?也(yě)就(jiù)是(shì)说(shuō)刷新的(de)是(shì)不(bù)同(tóng)bank的(de)同(tóng)一(yī)行,是(shì)不(bù)是(shì)这(zhè)樣(yàng)理解(jiě)
答(dá):是(shì)的(de)。發(fà)送一(yī)个(gè)自(zì)動(dòng)刷新命令,所(suǒ)有(yǒu)BANK同(tóng)一(yī)行都会(huì)刷新。
【問(wèn)題(tí)1.8】請問(wèn)有(yǒu)ddr3的(de)IP核手(shǒu)册吗?(altera的(de))
答(dá):IP核不(bù)同(tóng),界面(miàn)会(huì)所(suǒ)不(bù)同(tóng),但一(yī)般都会(huì)提(tí)供下(xià)载鍊(liàn)接的(de)。VIVADO、ISE等,也(yě)是(shì)同(tóng)樣(yàng)的(de)情(qíng)況
【問(wèn)題(tí)1.9】做一(yī)个(gè)用(yòng)到(dào)ddr4的(de)項目,有(yǒu)一(yī)个(gè)ddr3的(de)例程,不(bù)知道(dào)怎麼(me)改成(chéng)ddr4?
答(dá):百(bǎi)度(dù)搜索找(zhǎo)資料,按流程配置就(jiù)好(hǎo),这(zhè)个(gè)我(wǒ)们(men)沒(méi)有(yǒu)教程,只(zhī)能(néng)看(kàn)數據(jù)手(shǒu)册
【問(wèn)題(tí)1.10】下(xià)图(tú)中(zhōng)的(de)自(zì)刷新有(yǒu)啥區(qū)别?

答(dá):上(shàng)電(diàn)後(hòu),要(yào)經(jīng)过(guò)初始化(huà),初始化(huà)中(zhōng)要(yào)有(yǒu)两(liǎng)次(cì)刷新動(dòng)作;當初始化(huà)完成(chéng)後(hòu),才是(shì)每隔一(yī)段(duàn)时(shí)間(jiān),要(yào)自(zì)刷新一(yī)次(cì)
【問(wèn)題(tí)1.11】如(rú)下(xià)图(tú)所(suǒ)示,为(wèi)什麼(me)在(zài)接口(kǒu)中(zhōng),一(yī)般要(yào)鎖存住地(dì)址addr、写數據(jù)wdata等?不(bù)鎖存不(bù)行吗?
但注意(yì),在(zài)第(dì)7~10,addr的(de)值還(huán)是(shì)不(bù)是(shì)2呢?可(kě)能(néng)不(bù)是(shì)了(le)。
【問(wèn)題(tí)1.12】請問(wèn)連(lián)接ddr3 ip核與(yǔ)mem_burst时(shí),有(yǒu)些端口(kǒu)未定(dìng)義。內(nèi)些未定(dìng)義的(de)端口(kǒu)怎麼(me)辦(bàn)?
答(dá):
1. 本(běn)課程提(tí)示的(de)案(àn)例,經(jīng)过(guò)上(shàng)板验(yàn)證是(shì)可(kě)以(yǐ)的(de),如(rú)果(guǒ)不(bù)可(kě)以(yǐ),請及(jí)时(shí)向(xiàng)老(lǎo)师(shī)反(fǎn)映。
2. 本(běn)例程验(yàn)證过(guò)是(shì)可(kě)以(yǐ)的(de),因(yīn)此(cǐ)例化(huà)时(shí)未連(lián)接的(de)信(xìn)号(hào),就(jiù)说(shuō)明(míng)对(duì)本(běn)例程来(lái)说(shuō)不(bù)用(yòng)關(guān)心(xīn),不(bù)用(yòng)使用(yòng)。
3. 如(rú)果(guǒ)您要(yào)想(xiǎng)關(guān)心(xīn)这(zhè)些信(xìn)号(hào),可(kě)以(yǐ)閱读(dú)數據(jù)手(shǒu)册,了(le)解(jiě)該信(xìn)号(hào)含義。
【問(wèn)題(tí)1.13】問(wèn)題(tí):請問(wèn)老(lǎo)师(shī)xilinx FPGA的(de)HR bank的(de) lvds接口(kǒu)可(kě)以(yǐ)驅動(dòng)250Mhz DDR adc 吗?我(wǒ)一(yī)直(zhí)只(zhī)能(néng)跑到(dào)100Mhz ,不(bù)知道(dào)是(shì)不(bù)是(shì)我(wǒ)的(de)时(shí)序有(yǒu)問(wèn)題(tí)?
答(dá):
1、首先(xiān)請确認使用(yòng)的(de)芯片(piàn)是(shì)否支持(chí)該DDR的(de)速率;
2、如(rú)果(guǒ)支持(chí)的(de)話(huà),請嚴格按照設計(jì)規範進(jìn)行設計(jì);
3、同(tóng)时(shí)請檢查該開(kāi)發(fà)板的(de)pcb原理图(tú)的(de)設計(jì)是(shì)否合适,例如(rú)pcb的(de)走(zǒu)線(xiàn)是(shì)否等长,或(huò)者(zhě)pcb的(de)板材是(shì)否合适、阻抗是(shì)否匹(pǐ)配......
这(zhè)些都会(huì)影響DDR的(de)速率。
【問(wèn)題(tí)1.14】問(wèn)題(tí): 有(yǒu) vivado 下(xià) DDR模型和(hé)參數不(bù)?用(yòng)于(yú)仿真(zhēn)?
解(jiě)答(dá):解(jiě)答(dá):vivado DDR可(kě)以(yǐ)生(shēng)成(chéng)对(duì)應(yìng)的(de)例程,可(kě)以(yǐ)用(yòng)于(yú)仿真(zhēn)。具體(tǐ)操作步驟可(kě)以(yǐ)百(bǎi)度(dù)搜索一(yī)下(xià),例如(rú):Xilinx VIVADO中(zhōng)DDR3 IP核的(de)使用(yòng)(1)_朽月(yuè)的(de)博客-CSDN博客_xilinx ddr 自(zì)動(dòng)刷新
【問(wèn)題(tí)1.15】問(wèn):SDRAM中(zhōng)将刷新时(shí)間(jiān)改为(wèi)1300的(de)意(yì)義何在(zài)?
答(dá):如(rú)果(guǒ)以(yǐ)1562个(gè)为(wèi)周期(qī),當时(shí)間(jiān)到(dào)了(le)之後(hòu),如(rú)果(guǒ)此(cǐ)时(shí)处于(yú)写或(huò)读(dú)操作狀态,就(jiù)要(yào)等一(yī)段(duàn)时(shí)間(jiān)再進(jìn)行刷新操作,这(zhè)樣(yàng)刷新間(jiān)隔就(jiù)会(huì)大于(yú)1562,不(bù)滿足要(yào)求。
【問(wèn)題(tí)1.16】問(wèn):請問(wèn)在(zài)邊(biān)緣檢测的(de)項目中(zhōng),輸入(rù)輸出(chū)數據(jù)是(shì)25M,SDRAM的(de)工作时(shí)鐘(zhōng)是(shì)100M,这(zhè)種(zhǒng)情(qíng)況下(xià)读(dú)写效能(néng)是(shì)多(duō)少(shǎo)呀?
答(dá):SDRAM读(dú)写總(zǒng)線(xiàn)效能(néng)一(yī)般計(jì)算:SDRAM的(de)工作时(shí)鐘(zhōng) * 數據(jù)位宽(kuān) *70% 。(注意(yì):其中(zhōng)70%是(shì)指減去(qù)sdram的(de)一(yī)些操作占用(yòng)後(hòu)的(de)效能(néng),70%的(de)數值是(shì)經(jīng)验(yàn)之談,請根(gēn)據(jù)实際情(qíng)況變(biàn)更(gèng)數值)
【問(wèn)題(tí)1.17】問(wèn):SDRAM工程中(zhōng),读(dú)写請求是(shì)一(yī)个(gè)脈沖,還(huán)是(shì)連(lián)續的(de)電(diàn)平?
答(dá):在(zài)MDY自(zì)定(dìng)義的(de)接口(kǒu)中(zhōng),读(dú)写請求是(shì)一(yī)个(gè)持(chí)續为(wèi)高(gāo)的(de)電(diàn)平信(xìn)号(hào),一(yī)直(zhí)拉高(gāo)直(zhí)到(dào)模块(kuài)響應(yìng)为(wèi)止。拉高(gāo)一(yī)个(gè)電(diàn)平为(wèi)表(biǎo)示读(dú)写一(yī)次(cì)。
二(èr)、高(gāo)手(shǒu)修煉專題(tí)課

答(dá):數據(jù)位一(yī)共(gòng)是(shì)27位,開(kāi)始位1位,結束(shù)位1位,還(huán)要(yào)注意(yì)看(kàn)上(shàng)图(tú)中(zhōng),第(dì)三(sān)字(zì)节(jié)x後(hòu)還(huán)有(yǒu)1位的(de)0,之後(hòu)才是(shì)結束(shù)位,所(suǒ)以(yǐ)一(yī)共(gòng)是(shì)30位。
【問(wèn)題(tí)2.2】在(zài)高(gāo)手(shǒu)修煉課中(zhōng),使用(yòng)MDY提(tí)供的(de)DO文(wén)件(jiàn)跑仿真(zhēn),提(tí)示如(rú)下(xià)錯誤:

答(dá):这(zhè)是(shì)由(yóu)于(yú)MODELSIM版本(běn)不(bù)一(yī)致(zhì)導致(zhì)的(de)。請打(dǎ)開(kāi)DO文(wén)件(jiàn),去(qù)掉下(xià)面(miàn)的(de)-novopt語(yǔ)句(jù)。
三(sān)、实用(yòng)調試技巧專題(tí)課
問(wèn)題(tí)【3.1】調試技巧訓練,signaltap練習1里(lǐ),我(wǒ)找(zhǎo)到(dào)了(le)報錯的(de)位置,但是(shì)我(wǒ)很好(hǎo)奇为(wèi)什麼(me)会(huì)出(chū)現(xiàn)这(zhè)个(gè)錯誤:dout沒(méi)有(yǒu)輸出(chū)123,連(lián)續輸出(chū)了(le)两(liǎng)个(gè)124。

答(dá):这(zhè)是(shì)signalTap工具使用(yòng)的(de)訓練習題(tí),只(zhī)需要(yào)找(zhǎo)到(dào)錯誤即可(kě),不(bù)用(yòng)修正(zhèng)錯誤。并且該練習的(de)設計(jì)文(wén)件(jiàn)已經(jīng)封(fēng)裝(zhuāng)成(chéng)IP核了(le),无法看(kàn)到(dào)內(nèi)部(bù)設計(jì)文(wén)件(jiàn),所(suǒ)以(yǐ)不(bù)需要(yào)糾結練習問(wèn)題(tí)的(de)生(shēng)成(chéng)原因(yīn)。
問(wèn)題(tí)【3.2】調試技巧課程 - 测試文(wén)件(jiàn)編写練習3-練習要(yào)求中(zhōng)的(de)”報文(wén)之間(jiān)的(de)間(jiān)隔位3字(zì)节(jié)“ 是(shì)指3个(gè)时(shí)鐘(zhōng)周期(qī)?
解(jiě)答(dá):需要(yào)根(gēn)據(jù)報文(wén)數據(jù)的(de)位宽(kuān)来(lái)确定(dìng)的(de)。例如(rú),報文(wén)數據(jù)data位宽(kuān)为(wèi)8bits,那(nà)麼(me)間(jiān)隔3字(zì)节(jié)就(jiù)需要(yào)3个(gè)时(shí)鐘(zhōng)周期(qī);假如(rú)data是(shì)其他(tā)位宽(kuān),以(yǐ)此(cǐ)類(lèi)推。
四(sì)、FIFO架構設計(jì)專題(tí)課
【問(wèn)題(tí)4.1】關(guān)于(yú)FIFO的(de)深度(dù)計(jì)算問(wèn)題(tí)?
答(dá):可(kě)以(yǐ)看(kàn)此(cǐ)贴:http://old.mdy-edu.com/jishuwenz/2020/0219/914.html
【問(wèn)題(tí)4.2】图(tú)中(zhōng)X代(dài)表(biǎo)什麼(me)意(yì)思(sī)
这(zhè)个(gè)有(yǒu)效多(duō)少(shǎo)是(shì)取(qǔ)決于(yú)mdy的(de)值(經(jīng)过(guò)FIFO後(hòu),即是(shì)Q的(de)33和(hé)32位)。可(kě)以(yǐ)代(dài)入(rù)數據(jù)可(kě)以(yǐ)看(kàn)到(dào)x的(de)值。例如(rú):當q[33:32]=1时(shí),表(biǎo)示有(yǒu)1字(zì)节(jié)无效,即3个(gè)字(zì)节(jié)有(yǒu)效,所(suǒ)以(yǐ)此(cǐ)时(shí)x等于(yú)3。
【問(wèn)題(tí)4.3】問(wèn):FIFO仿真(zhēn)时(shí),與(yǔ)預想(xiǎng)的(de)不(bù)一(yī)樣(yàng),有(yǒu)时(shí)候会(huì)出(chū)读(dú)出(chū)的(de)不(bù)对(duì)?
答(dá):在(zài)做FIFO仿真(zhēn)的(de)时(shí)候,如(rú)果(guǒ)出(chū)現(xiàn)仿真(zhēn)出(chū)錯的(de)情(qíng)況,建議按如(rú)下(xià)方(fāng)式定(dìng)位。
1. 一(yī)定(dìng)要(yào)抓取(qǔ)FIFO的(de)內(nèi)部(bù)信(xìn)号(hào)来(lái)观察。注意(yì),一(yī)定(dìng)是(shì)內(nèi)部(bù)信(xìn)号(hào),例如(rú)FIFO这(zhè)个(gè)模块(kuài)的(de)q、rdreq等。
2. 要(yào)先(xiān)确認FIFO的(de)輸入(rù)端,即wrreq信(xìn)号(hào)和(hé)写數據(jù),一(yī)个(gè)时(shí)鐘(zhōng)(写时(shí)鐘(zhōng))一(yī)个(gè)时(shí)鐘(zhōng)去(qù)对(duì),最(zuì)好(hǎo)記(jì)录(lù)一(yī)下(xià)这(zhè)个(gè)數據(jù)。
3. 其次(cì),确認FIFO的(de)輸出(chū)端,即读(dú)时(shí)鐘(zhōng)、rdreq和(hé)q这(zhè)三(sān)个(gè)信(xìn)号(hào),一(yī)个(gè)时(shí)鐘(zhōng)一(yī)个(gè)时(shí)鐘(zhōng)去(qù)对(duì),把數據(jù)記(jì)录(lù)下(xià)来(lái)。
4. 最(zuì)後(hòu),再用(yòng)写數據(jù)和(hé)读(dú)數據(jù)進(jìn)行对(duì)比。
另(lìng)外(wài),一(yī)般是(shì)不(bù)会(huì)有(yǒu)問(wèn)題(tí)的(de),請認真(zhēn)核对(duì)。
請注意(yì),有(yǒu)部(bù)分(fēn)同(tóng)学反(fǎn)饋還(huán)是(shì)出(chū)錯,我(wǒ)们(men)技術(shù)經(jīng)过(guò)遠(yuǎn)程定(dìng)位後(hòu),發(fà)現(xiàn)同(tóng)学在(zài)确認數據(jù)时(shí),沒(méi)有(yǒu)按时(shí)鐘(zhōng)一(yī)个(gè)一(yī)个(gè)来(lái)數,導致(zhì)了(le)疏忽和(hé)遺漏,請确保一(yī)定(dìng)要(yào)仔细(xì)核对(duì)。
【問(wèn)題(tí)4.4】wrusedw是(shì)写側保持(chí)數據(jù)个(gè)數, rdusedw是(shì)指读(dú)出(chū)读(dú)出(chū)了(le)多(duō)个(gè)數據(jù)个(gè)數?
答(dá):无論wrusedw還(huán)是(shì)rdusedw,均表(biǎo)示FIFO內(nèi)保存有(yǒu)多(duō)少(shǎo)个(gè)數據(jù)。它(tā)们(men)之間(jiān)的(de)區(qū)别僅僅是(shì)时(shí)鐘(zhōng)域不(bù)同(tóng),wrusedw对(duì)應(yìng)的(de)写时(shí)鐘(zhōng)域,即與(yǔ)写时(shí)鐘(zhōng)对(duì)齊的(de)信(xìn)号(hào);
rdusedw对(duì)應(yìng)的(de)是(shì)读(dú)时(shí)鐘(zhōng)域,即與(yǔ)读(dú)时(shí)鐘(zhōng)对(duì)應(yìng)的(de)信(xìn)号(hào)。由(yóu)于(yú)写时(shí)鐘(zhōng)和(hé)读(dú)时(shí)鐘(zhōng)頻率、相位等不(bù)同(tóng),所(suǒ)以(yǐ)wrusedw和(hé)rdusedw是(shì)无法完成(chéng)一(yī)致(zhì)的(de),使用(yòng)时(shí)要(yào)注意(yì)。
五(wǔ)、綜合項目实踐課——温(wēn)度(dù)檢测工程
【問(wèn)題(tí)5.1】温(wēn)度(dù)控制系(xì)統:
1.串口(kǒu)進(jìn)去(qù)之後(hòu),你有(yǒu)一(yī)个(gè)ASCII 轉(zhuǎn)Hex的(de)一(yī)个(gè)模块(kuài) ,然後(hòu)進(jìn)去(qù)之後(hòu)有(yǒu)将包(bāo)头(tóu)解(jiě)析 里(lǐ)面(miàn)進(jìn)入(rù)控制模块(kuài) 可(kě)以(yǐ)直(zhí)接發(fà)送hex數據(jù) 進(jìn)入(rù) 然後(hòu)加CRC檢验(yàn)2.原本(běn)出(chū)来(lái)的(de)數據(jù)是(shì)hex數據(jù)也(yě)就(jiù)是(shì)说(shuō)數據(jù)出(chū)来(lái)之後(hòu),在(zài)上(shàng)位機(jī)去(qù)計(jì)算一(yī)下(xià)就(jiù)好(hǎo)了(le),反(fǎn)而(ér)簡單,在(zài)这(zhè)里(lǐ)你又将HEX轉(zhuǎn)換为(wèi)ASCII 也(yě)就(jiù)是(shì)说(shuō) 你上(shàng)去(qù)之後(hòu)又很麻(má)煩,而(ér)且下(xià)面(miàn)处理也(yě)變(biàn)麻(má)煩了(le) 。直(zhí)接發(fà)送hex去(qù)上(shàng)位機(jī)解(jiě)析就(jiù)好(hǎo)了(le) 。原本(běn)一(yī)个(gè)簡單的(de)小dome最(zuì)後(hòu)反(fǎn)而(ér)變(biàn)複雜了(le)。
3.就(jiù)是(shì)原本(běn)温(wēn)度(dù)的(de)數據(jù)在(zài)采集的(de)过(guò)程中(zhōng) 可(kě)能(néng)会(huì)有(yǒu)不(bù)稳定(dìng)的(de)情(qíng)況,你比如(rú)在(zài)采集的(de)很长的(de)數據(jù)中(zhōng),有(yǒu)突變(biàn)的(de),但其实,那(nà)个(gè)是(shì)不(bù)稳定(dìng)的(de)數據(jù)。加一(yī)个(gè)濾波(bō)算法進(jìn)去(qù)。这(zhè)樣(yàng)數據(jù)就(jiù)会(huì)很稳定(dìng)。也(yě)讓这(zhè)个(gè)小dome變(biàn)的(de)有(yǒu)意(yì)義,因(yīn)为(wèi)FPGA主(zhǔ)要(yào)的(de)就(jiù)是(shì)去(qù)做算發(fà) 讓他(tā)發(fà)揮他(tā)本(běn)有(yǒu)的(de)长处,才是(shì)最(zuì)好(hǎo)的(de)做法。
①項目的(de)功能(néng)需求各(gè)種(zhǒng)各(gè)樣(yàng),當然去(qù)掉ASCII轉(zhuǎn)換模块(kuài)更(gèng)簡單,但是(shì)有(yǒu)的(de)項目它(tā)的(de)需求就(jiù)是(shì)ASCII碼操作,所(suǒ)以(yǐ)項目功能(néng)的(de)架構最(zuì)終(zhōng)都要(yào)根(gēn)據(jù)需求進(jìn)行設計(jì)。
②然後(hòu),我(wǒ)们(men)这(zhè)个(gè)温(wēn)度(dù)檢测工程是(shì)一(yī)个(gè)培訓項目,所(suǒ)以(yǐ)關(guān)于(yú)ASCII功能(néng)也(yě)会(huì)加入(rù)到(dào)項目中(zhōng)用(yòng)于(yú)訓練。
③同(tóng)时(shí),温(wēn)度(dù)檢测只(zhī)是(shì)該工程里(lǐ)核心(xīn)的(de)功能(néng),其他(tā)功能(néng)的(de)設計(jì)同(tóng)学们(men)也(yě)可(kě)以(yǐ)根(gēn)據(jù)自(zì)己的(de)腦洞(dòng)想(xiǎng)法、自(zì)己的(de)需求進(jìn)行設計(jì)體(tǐ)会(huì),我(wǒ)们(men)非(fēi)常欢迎同(tóng)学们(men)在(zài)群(qún)提(tí)出(chū)和(hé)分(fēn)享自(zì)己的(de)思(sī)路(lù)想(xiǎng)法,互相讨論,共(gòng)同(tóng)進(jìn)步。
④當然同(tóng)学们(men)也(yě)可(kě)以(yǐ)蹲一(yī)下(xià)我(wǒ)们(men)不(bù)定(dìng)期(qī)開(kāi)播的(de)潘老(lǎo)师(shī)直(zhí)播間(jiān),把自(zì)己項目功能(néng)設計(jì)、架構設計(jì)等等的(de)疑問(wèn)和(hé)需求提(tí)出(chū)来(lái),跟潘老(lǎo)师(shī)進(jìn)行讨論,解(jiě)決你的(de)問(wèn)題(tí)。
【問(wèn)題(tí)5.2】問(wèn):在(zài)下(xià)面(miàn)的(de)DS18B20的(de)读(dú)时(shí)序中(zhōng),中(zhōng)間(jiān)部(bù)分(fēn)(即紅(hóng)色(sè)框部(bù)分(fēn)),是(shì)否指FPGA要(yào)輸出(chū)高(gāo)電(diàn)平 ?
答(dá):不(bù)正(zhèng)确。該时(shí)序前(qián)面(miàn)一(yī)段(duàn)是(shì)FPGA輸出(chū)低電(diàn)平(dq_out为(wèi)0,dout_out_en为(wèi)1)。然後(hòu)是(shì)FPGA釋放(fàng)總(zǒng)線(xiàn)(dq_out_en为(wèi)0,dq_out不(bù)關(guān)心(xīn))。
在(zài)後(hòu)一(yī)段(duàn),是(shì)DS18B20輸出(chū)值,FPGA读(dú)出(chū)值(dq_out_en为(wèi)0,dq_out不(bù)關(guān)心(xīn)。取(qǔ)dq_in的(de)值)。
六(liù)、綜合項目实踐課——邊(biān)緣檢测工程
【問(wèn)題(tí)6.1】點(diǎn)撥開(kāi)發(fà)板,下(xià)载工程檢测工程後(hòu),沒(méi)有(yǒu)反(fǎn)應(yìng)。
答(dá):注意(yì):下(xià)载後(hòu),需要(yào)按下(xià)矩阵(zhèn)鍵盤的(de)按鍵0(即左(zuǒ)上(shàng)角(jiǎo)第(dì)一(yī)个(gè)按鍵),才能(néng)顯示!!!
【問(wèn)題(tí)6.2】點(diǎn)撥開(kāi)發(fà)板可(kě)以(yǐ)顯示攝像头(tóu)拍攝过(guò)来(lái)的(de)图(tú)片(piàn)吗?
【問(wèn)題(tí)6.3】PCLK的(de)时(shí)鐘(zhōng)頻率問(wèn)題(tí)
也(yě)就(jiù)是(shì)说(shuō)PCLK和(hé)XCLK頻率大小一(yī)樣(yàng),只(zhī)是(shì)说(shuō)可(kě)能(néng)不(bù)同(tóng)相
【問(wèn)題(tí)6.4】是(shì)否不(bù)使用(yòng)PLL,而(ér)是(shì)用(yòng)PCLK来(lái)作为(wèi)采集模块(kuài)的(de)时(shí)鐘(zhōng)?
答(dá):PCLK經(jīng)过(guò)插件(jiàn)連(lián)到(dào)FPGA,这(zhè)其中(zhōng)可(kě)能(néng)会(huì)不(bù)稳定(dìng)。为(wèi)解(jiě)決此(cǐ)問(wèn)題(tí),将PCLK連(lián)到(dào)PLL,産生(shēng)一(yī)个(gè)同(tóng)頻同(tóng)相的(de)时(shí)鐘(zhōng),
使用(yòng)这(zhè)个(gè)时(shí)鐘(zhōng)作为(wèi)采集模块(kuài)的(de)工作时(shí)鐘(zhōng)。这(zhè)樣(yàng),即使PCLK缺少(shǎo)或(huò)者(zhě)不(bù)稳定(dìng),但産生(shēng)的(de)时(shí)鐘(zhōng)也(yě)会(huì)保持(chí)稳定(dìng)。
【問(wèn)題(tí)6.5】攝像头(tóu)寄存器配置模块(kuài)中(zhōng),配置的(de)是(shì)04对(duì)應(yìng)RGB,但是(shì)數據(jù)手(shǒu)册中(zhōng)RGB應(yìng)該是(shì)01,这(zhè)是(shì)为(wèi)什麼(me)?
RAW RGB:在(zài)攝像头(tóu)里(lǐ)沒(méi)有(yǒu)經(jīng)过(guò)任何处理的(de)數據(jù)。
RGB:在(zài)攝像头(tóu)里(lǐ)經(jīng)过(guò)了(le)ISP等算法处理的(de)數據(jù)。
如(rú)果(guǒ)想(xiǎng)要(yào)最(zuì)原始的(de)數據(jù),就(jiù)使用(yòng)RAW格式;如(rú)果(guǒ)要(yào)攝像头(tóu)先(xiān)美化(huà)一(yī)下(xià),就(jiù)使用(yòng)RGB格式。想(xiǎng)要(yào)哪種(zhǒng)格式,取(qǔ)決于(yú)您的(de)需求。
【問(wèn)題(tí)6.6】邊(biān)緣檢测寄存器是(shì)怎麼(me)樣(yàng)配置的(de)呢?
答(dá):邊(biān)緣檢测中(zhōng),ov7670_cfg模块(kuài)和(hé)sccb模块(kuài),就(jiù)是(shì)用(yòng)来(lái)配置的(de),可(kě)以(yǐ)參考
【問(wèn)題(tí)6.7】邊(biān)緣檢查課程案(àn)例OV接口(kǒu)是(shì)用(yòng)MIMP還(huán)是(shì)DVP的(de)?
答(dá):OV7670是(shì)标(biāo)準的(de)SCCB接口(kǒu),兼容IIC接口(kǒu)
【問(wèn)題(tí)6.8】請問(wèn)在(zài)邊(biān)緣檢测模块(kuài)中(zhōng)的(de)vga_config模块(kuài),如(rú)果(guǒ)想(xiǎng)顯示完整的(de)一(yī)幀图(tú)像(假設为(wèi)彩条(tiáo)顯示)而(ér)ram資源不(bù)够,我(wǒ)用(yòng)的(de)多(duō)維數組来(lái)做存儲器存儲16bit 640*480个(gè)像素點(diǎn),
(目的(de):在(zài)local_wr_req时(shí)将写數據(jù)按地(dì)址存進(jìn)去(qù),在(zài)local_rd_req时(shí)将數據(jù)按地(dì)址读(dú)出(chū)来(lái)),請問(wèn)以(yǐ)下(xià)代(dài)碼方(fāng)案(àn)是(shì)否可(kě)行,若不(bù)行,請問(wèn)該如(rú)何实現(xiàn)此(cǐ)目的(de)?(代(dài)碼如(rú)下(xià)图(tú)示)

答(dá):
1. 使用(yòng)二(èr)維數組代(dài)替RAM方(fāng)法:二(èr)維數據(jù)使用(yòng)的(de)是(shì)寄存器資料,通(tòng)常RAM資源是(shì)遠(yuǎn)遠(yuǎn)大于(yú)寄存器資源的(de),所(suǒ)以(yǐ)RAM不(bù)足时(shí),寄存器一(yī)般也(yě)不(bù)足。
2. 如(rú)果(guǒ)只(zhī)是(shì)仿真(zhēn)用(yòng)途,这(zhè)个(gè)是(shì)可(kě)以(yǐ)的(de),可(kě)以(yǐ)不(bù)考慮資源。既然是(shì)仿真(zhēn),那(nà)自(zì)然也(yě)可(kě)以(yǐ)增大RAM了(le)。
3. 注意(yì)上(shàng)面(miàn)代(dài)碼中(zhōng)有(yǒu)錯誤,读(dú)写地(dì)址是(shì)独立,不(bù)是(shì)共(gòng)同(tóng)一(yī)个(gè)的(de)。读(dú)哪些地(dì)址數據(jù),无關(guān)写地(dì)址。上(shàng)面(miàn)代(dài)碼中(zhōng)不(bù)正(zhèng)确,具體(tǐ)請仿真(zhēn)。
【問(wèn)題(tí)6.9】这(zhè)个(gè)關(guān)系(xì)怎麼(me)得到(dào)的(de)呢?根(gēn)據(jù)这(zhè)个(gè)图(tú)的(de)話(huà) 上(shàng)面(miàn)的(de)關(guān)系(xì)不(bù)應(yìng)該反(fǎn)过(guò)来(lái)吗?在(zài)下(xià)一(yī)拍的(de)时(shí)候應(yìng)該吧taps0_ff0賦值給(gěi)taps0x呀?


答(dá):沒(méi)有(yǒu) ff0就(jiù)是(shì)表(biǎo)示 延时(shí)一(yī)拍的(de)意(yì)思(sī),taps0_ff是(shì)taps0前(qián)一(yī)时(shí)刻的(de)值,需要(yào)得到(dào)这(zhè)種(zhǒng)結果(guǒ),就(jiù)是(shì)通(tòng)过(guò)时(shí)序邏輯打(dǎ)一(yī)拍,資料提(tí)供的(de)有(yǒu)直(zhí)播課講解(jiě),建議結合仿真(zhēn)波(bō)形去(qù)看(kàn),测試文(wén)件(jiàn)有(yǒu)提(tí)供
【問(wèn)題(tí)6.10】請問(wèn)这(zhè)一(yī)段(duàn)写在(zài)代(dài)碼的(de)哪里(lǐ)?我(wǒ)找(zhǎo)不(bù)到(dào),看(kàn)不(bù)出(chū)
答(dá):在(zài)SCCB代(dài)碼里(lǐ)
【問(wèn)題(tí)6.11】 邊(biān)緣檢测課程这(zhè)个(gè)判斷读(dú)或(huò)写使能(néng)的(de)計(jì)數器的(de)rw_cnt为(wèi)什麼(me)刚好(hǎo)对(duì)應(yìng)add_wdata[16]和(hé)add_wdata[17]?


解(jiě)答(dá):在(zài)工作狀态(flag==1)时(shí),此(cǐ)时(shí)对(duì)ov7670的(de)指令進(jìn)行读(dú)写,那(nà)到(dào)底是(shì)对(duì)指令進(jìn)行读(dú)還(huán)是(shì)写,使用(yòng)读(dú)写操作計(jì)數器rw_cnt進(jìn)行計(jì)數,按順序的(de)進(jìn)行判斷。根(gēn)據(jù)模块(kuài)ov7670_para.v 里(lǐ)指令的(de)格式:{读(dú)操作(1bit),写操作(1bit),操作指令(16bits)}。當rw_cnt=0时(shí),設計(jì)上(shàng)此(cǐ)时(shí)先(xiān)判斷指令写操作是(shì)否有(yǒu)效,因(yīn)此(cǐ)对(duì)應(yìng)判斷ov7670_para.v 里(lǐ)指令的(de)add_wdata[16],确認对(duì)應(yìng)比特(tè)位的(de)写操作是(shì)否为(wèi)高(gāo)電(diàn)平,如(rú)果(guǒ)是(shì),那(nà)麼(me)需要(yào)对(duì)該指令進(jìn)行写操作,産生(shēng)一(yī)个(gè)写使能(néng)有(yǒu)效信(xìn)号(hào)(wr_en==1)。其他(tā)以(yǐ)此(cǐ)類(lèi)推。

【問(wèn)題(tí)6.12】邊(biān)緣檢测里(lǐ)面(miàn)的(de)sccb模块(kuài)中(zhōng),根(gēn)據(jù)sccb手(shǒu)册要(yào)求,读(dú)时(shí)序的(de)傳輸周期(qī)要(yào)写成(chéng)两(liǎng)段(duàn)写,为(wèi)什麼(me)代(dài)碼里(lǐ)面(miàn)省(shěng)了(le)第(dì)二(èr)段(duàn)(設備地(dì)址+读(dú)數據(jù))?

这(zhè)上(shàng)面(miàn)读(dú)时(shí)序傳輸周期(qī)只(zhī)写了(le)一(yī)段(duàn)。
解(jiě)答(dá):理解(jiě)有(yǒu)誤,代(dài)碼里(lǐ)sccb的(de)读(dú)操作是(shì)有(yǒu)两(liǎng)段(duàn)时(shí)序的(de)。請聯系(xì)信(xìn)号(hào) rd_com、count_duan、out_data、flag_sel,直(zhí)接仿真(zhēn)查看(kàn)波(bō)形一(yī)起理解(jiě),这(zhè)樣(yàng)会(huì)更(gèng)直(zhí)观。
【問(wèn)題(tí)6.13】問(wèn):邊(biān)緣檢测工程中(zhōng),配置ov7670的(de)寄存器順序是(shì)固定(dìng),修改順序要(yào)重(zhòng)新修改代(dài)碼後(hòu)上(shàng)電(diàn),有(yǒu)沒(méi)有(yǒu)辦(bàn)法可(kě)以(yǐ)不(bù)上(shàng)電(diàn)直(zhí)接修改?
答(dá):目前(qián)代(dài)碼就(jiù)需要(yào)重(zhòng)新上(shàng)電(diàn)。 不(bù)重(zhòng)新上(shàng)電(diàn)的(de)方(fāng)式,就(jiù)參考温(wēn)度(dù)檢测工程,需要(yào)上(shàng)位機(jī)配合
【問(wèn)題(tí)6.14】問(wèn):邊(biān)沿檢测課程里(lǐ),VGA_driver里(lǐ)面(miàn)的(de)行同(tóng)步场同(tóng)步信(xìn)号(hào)为(wèi)什麼(me)需要(yào)打(dǎ)拍延时(shí)産生(shēng)?
答(dá):在(zài)本(běn)模块(kuài)中(zhōng),使用(yòng)了(le)行計(jì)數器和(hé)场計(jì)數器来(lái)産生(shēng)了(le)读(dú)地(dì)址rd_addr。
1. 該地(dì)址送給(gěi)上(shàng)遊模块(kuài)vga_config,然後(hòu)将數據(jù)返回(huí)給(gěi)本(běn)模块(kuài)会(huì)有(yǒu)幾(jǐ)个(gè)时(shí)鐘(zhōng)的(de)延时(shí)。
2. 为(wèi)了(le)讓返回(huí)的(de)數據(jù),與(yǔ)最(zuì)終(zhōng)的(de)信(xìn)号(hào)vga_vys和(hé)vga_hys对(duì)齊,所(suǒ)以(yǐ)要(yào)延时(shí)一(yī)下(xià),打(dǎ)了(le)两(liǎng)拍再産生(shēng)行场同(tóng)步信(xìn)号(hào)。
3. 具體(tǐ)可(kě)以(yǐ)通(tòng)过(guò)整體(tǐ)工程仿真(zhēn)来(lái)檢查确認。檢查返回(huí)的(de)第(dì)一(yī)个(gè)數據(jù)是(shì)否有(yǒu)延时(shí);第(dì)一(yī)个(gè)數據(jù)與(yǔ)行场同(tóng)步信(xìn)号(hào)是(shì)否有(yǒu)就(jiù)是(shì)对(duì) 。
【問(wèn)題(tí)6.15】邊(biān)IP核配置代(dài)碼中(zhōng),下(xià)面(miàn)部(bù)分(fēn)的(de) 3'b110,8'h02,32'h00800020 110,02分(fēn)别屬于(yú)什麼(me)功能(néng)呢
答(dá):
1. 前(qián)面(miàn)3比特(tè)的(de)3'b110用(yòng)于(yú)定(dìng)義读(dú)写屬性(xìng):分(fēn)别是(shì)表(biǎo)示读(dú)、写和(hé)等待位。當对(duì)應(yìng)位为(wèi)1,表(biǎo)示使能(néng)。
a. 例如(rú),3'b110,表(biǎo)示读(dú)使能(néng)、写使能(néng)、等待不(bù)使能(néng)。那(nà)麼(me)在(zài)代(dài)碼中(zhōng),将会(huì)对(duì)寄存器先(xiān)執行写操作,然後(hòu)再執行读(dú)操作。读(dú)操作的(de)目的(de),是(shì)为(wèi)了(le)檢查写的(de)对(duì)不(bù)对(duì)。
b.例如(rú),3'b001,表(biǎo)示读(dú)不(bù)使能(néng),写不(bù)使能(néng),等級使能(néng)。在(zài)代(dài)碼中(zhōng),不(bù)对(duì)寄存器操作,只(zhī)用(yòng)于(yú)延时(shí)。
2. 中(zhōng)間(jiān)的(de)8位是(shì)读(dú)写地(dì)址。即寄存器的(de)地(dì)址,对(duì)應(yìng)着IP核數據(jù)手(shǒu)册中(zhōng)的(de)寄存器地(dì)址。
3. 後(hòu)面(miàn)的(de)32位是(shì)写數據(jù)或(huò)者(zhě)延时(shí)值。當写寄存器时(shí),是(shì)写到(dào)寄存器的(de)數據(jù)。當读(dú)寄存器,不(bù)關(guān)心(xīn),可(kě)填充为(wèi)0。當是(shì)延时(shí)操作时(shí),表(biǎo)示要(yào)延时(shí)的(de)值,單位为(wèi)时(shí)鐘(zhōng)周期(qī)。
【問(wèn)題(tí)6.16】問(wèn):請問(wèn)邊(biān)緣檢测中(zhōng),对(duì)于(yú)SDRAM模块(kuài)的(de)读(dú)写,涉及(jí)到(dào)仲裁內(nèi)容吗?(邊(biān)緣檢测)
答(dá):涉及(jí)到(dào),就(jiù)是(shì)读(dú)写怎麼(me)判斷的(de)問(wèn)題(tí)








