99在线精品免费视频九九视-99在线精品视频-99在线精品视频免费观里-99在线精品视频在线观看-99在线免费播放

明德?lián)P系列專題課問題(匯總貼)

  發(fā)布時(shí)間:2023-10-21  |    作者:管理員  |  瀏覽量:1624

image.png

如果同學(xué)們的問題我們帖子里面沒有的請第一時(shí)間聯(lián)系我微信同步:易老師13112063618(微信同號(hào))

我們對(duì)新問題進(jìn)行補(bǔ)充!


明德?lián)P最近做了抖音系列短視頻,感興趣可以關(guān)注明德?lián)P抖音號(hào):FPGA技巧分享(87481069842)
內(nèi)容不斷更新!點(diǎn)贊+關(guān)注,學(xué)習(xí)不迷路!



一、SDRAM和DDR專題課

【問題1.1】DDR3那個(gè)課程,一般線速率能跑到多少?
答:本課程的DDR3內(nèi)容,是基于XILINX K7芯片,使用的是VIVADO平臺(tái)。DDR3的時(shí)鐘頻率是800M。用戶側(cè)時(shí)鐘是200M。


【問題1.2】SDRAM和DDR3課程,使用是什么平臺(tái)?
答:SDRAM部分使用的是QUARTUS平臺(tái),著重于講解SDRAM時(shí)序和SDRAM的接口設(shè)計(jì)。DDR3部分,使用的是VIVADO平臺(tái),著重于DDR3 IP的生成和上板驗(yàn)證流程。DDR3的理論部分,基本上不涉及,建議可以參考SDRAM的理論部分。


【問題1.3】 使用DDR3 IP一定需要讀地址FIFO,讀數(shù)據(jù)FIFO,寫地址FIFO,寫數(shù)據(jù)FIFO來先進(jìn)行數(shù)據(jù)緩存嗎?
答:這個(gè)理解是不對(duì)的。這里沒有跨時(shí)間域的信號(hào)傳輸?shù)摹R驗(yàn)镮P核會(huì)產(chǎn)生一個(gè)本地時(shí)鐘,這個(gè)本地時(shí)鐘是可以直接采集數(shù)據(jù)的,假設(shè)為clk_ddr_local。用戶可以直接使用clk_ddr_local來往IP核傳輸數(shù)據(jù)。好了,接下來再考慮一個(gè)場景:我有一組數(shù)據(jù)A,產(chǎn)生于時(shí)鐘域clk;A要寫到DDR,DDR的時(shí)鐘域是clk_ddr_local。自然地,A要跟時(shí)鐘域到clk_ddr_local,然后才能寫到DDR中,這就需要用到FIFO。接下來考慮另一個(gè)場景:我有一組數(shù)據(jù)B,產(chǎn)生于時(shí)鐘域clk_ddr_local;B要寫到DDR,DDR的時(shí)鐘是clk_ddr_local。由于兩個(gè)時(shí)鐘域相同,直接寫就好了。(通常來說,這已經(jīng)不屬于DDR的知識(shí)了,而是屬于跨時(shí)鐘域處理的知識(shí),是FPGA工程師都應(yīng)該知道的概念)。


【問題1.4】用戶邏輯控制DDR3讀寫的程序不是需要自己寫嗎?答:官方一般提供了DDR3的IP核。
  答:用戶可以通過DDR3 IP核來進(jìn)行DDR3芯片的讀寫。但是用戶需要寫邏輯來控制DDR3 IP核。


【問題1.5】課程里會(huì)講如何通過DDR3 IP像寫入圖像嗎?
  答:課程中的SDRAM部分,會(huì)有例子講如何寫入圖像到SDRAM中,DDR3/4也是類似的。但由于每人的項(xiàng)目不同,所以需要學(xué)員根據(jù)自己情況來移植。


  【問題1.6】如何知道ddr3里不空,可以讀取了?
  答:DDR3和RAM一樣,是一個(gè)存儲(chǔ)器件,它的每個(gè)內(nèi)部單元都存儲(chǔ)了當(dāng)前的數(shù)據(jù)狀態(tài)值。但DDR3和RAM本身,是沒有“空”、“存有數(shù)據(jù)”,“數(shù)據(jù)滿”等概念的。只要給地址,它就會(huì)把當(dāng)前地址的數(shù)據(jù)給到總線上,而且這個(gè)地址可以讀很多次。在設(shè)計(jì)的時(shí)候,是由設(shè)計(jì)師用自己寫邏輯來判斷DDR3是否為空。



  【問題1.7】請問這個(gè)sdram的自動(dòng)刷新命令發(fā)送后,是不是刷新的是所有bank的同一行都在執(zhí)行刷新呀?也就是說刷新的是不同bank的同一行,是不是這樣理解



  答:是的。發(fā)送一個(gè)自動(dòng)刷新命令,所有BANK同一行都會(huì)刷新。



  【問
題1.8】請問有ddr3的IP核手冊嗎?(altera的)
 
答:IP核不同,界面會(huì)所不同,但一般都會(huì)提供下載鏈接的。VIVADO、ISE等,也是同樣的情況 
 

  【問題1.9】做一個(gè)用到ddr4的項(xiàng)目,有一個(gè)ddr3的例程,不知道怎么改成ddr4
答:百度搜索找資料,按流程配置就好,這個(gè)我們沒有教程,只能看數(shù)據(jù)手冊


  【問題1.10】下圖中的自刷新有啥區(qū)別?

答:上電后,要經(jīng)過初始化,初始化中要有兩次刷新動(dòng)作;當(dāng)初始化完成后,才是每隔一段時(shí)間,要自刷新一次


  【問題1.11】如下圖所示,為什么在接口中,一般要鎖存住地址addr、寫數(shù)據(jù)wdata等?不鎖存不行嗎?

答:如上圖所示,假設(shè)在第2~6時(shí)鐘時(shí)刻,addr的值為2,表示此時(shí)要寫地址2。本模塊收到此請求后,會(huì)在后面如第7~10時(shí)鐘,產(chǎn)生寫地址為“2”的時(shí)序。但注意,在第7~10,addr的值還是不是2呢?可能不是了。



  【問題1.12】請問連接ddr3 ip核與mem_burst時(shí),有些端口未定義。內(nèi)些未定義的端口怎么辦?
答:
1. 本課程提示的案例,經(jīng)過上板驗(yàn)證是可以的,如果不可以,請及時(shí)向老師反映。
2. 本例程驗(yàn)證過是可以的,因此例化時(shí)未連接的信號(hào),就說明對(duì)本例程來說不用關(guān)心,不用使用。
3. 如果您要想關(guān)心這些信號(hào),可以閱讀數(shù)據(jù)手冊,了解該信號(hào)含義。 


 
  【問題1.13】問題:請問老師xilinx FPGA的HR bank的 lvds接口可以驅(qū)動(dòng)250Mhz DDR adc 嗎?我一直只能跑到100Mhz ,不知道是不是我的時(shí)序有問題?
答:
1、首先請確認(rèn)使用的芯片是否支持該DDR的速率;
2、如果支持的話,請嚴(yán)格按照設(shè)計(jì)規(guī)范進(jìn)行設(shè)計(jì);
3、同時(shí)請檢查該開發(fā)板的pcb原理圖的設(shè)計(jì)是否合適,例如pcb的走線是否等長,或者pcb的板材是否合適、阻抗是否匹配......這些都會(huì)影響DDR的速率。



 【問題1.14】問題:?有 vivado 下 DDR模型和參數(shù)不?用于仿真?
解答:解答:vivado DDR可以生成對(duì)應(yīng)的例程,可以用于仿真。具體操作步驟可以百度搜索一下,例如:Xilinx VIVADO中DDR3 IP核的使用(1)_朽月的博客-CSDN博客_xilinx ddr 自動(dòng)刷新




  【問題1.15】
問:SDRAM中將刷新時(shí)間改為1300的意義何在?
答:如果以1562個(gè)為周期,當(dāng)時(shí)間到了之后,如果此時(shí)處于寫或讀操作狀態(tài),就要等一段時(shí)間再進(jìn)行刷新操作,這樣刷新間隔就會(huì)大于1562,不滿足要求。


【問題1.16】問:請問在邊緣檢測的項(xiàng)目中,輸入輸出數(shù)據(jù)是25M,SDRAM的工作時(shí)鐘是100M,這種情況下讀寫效能是多少呀?
答:SDRAM讀寫總線效能一般計(jì)算:SDRAM的工作時(shí)鐘 * 數(shù)據(jù)位寬 *70% 。(注意:其中70%是指減去sdram的一些操作占用后的效能,70%的數(shù)值是經(jīng)驗(yàn)之談,請根據(jù)實(shí)際情況變更數(shù)值)


【問題1.17】問:SDRAM工程中,讀寫請求是一個(gè)脈沖,還是連續(xù)的電平?
答:在MDY自定義的接口中,讀寫請求是一個(gè)持續(xù)為高的電平信號(hào),一直拉高直到模塊響應(yīng)為止。拉高一個(gè)電平為表示讀寫一次。







二、高手修煉專題課

【問題2.1】計(jì)數(shù)器練習(xí)的9.4節(jié)中,第二個(gè)計(jì)數(shù)器的代碼為什么是計(jì)30個(gè)呀?我認(rèn)為應(yīng)該是3*(8+1)+2=29個(gè)。


答:數(shù)據(jù)位一共是27位,開始位1位,結(jié)束位1位,還要注意看上圖中,第三字節(jié)x后還有1位的0,之后才是結(jié)束位,所以一共是30位。



  【問題2.2】在高手修煉課中,使用MDY提供的DO文件跑仿真,提示如下錯(cuò)誤:


答:這是由于MODELSIM版本不一致導(dǎo)致的。請打開DO文件,去掉下面的-novopt語句。








三、實(shí)用調(diào)試技巧專題課

  問題【3.1】調(diào)試技巧訓(xùn)練,signaltap練習(xí)1里,我找到了報(bào)錯(cuò)的位置,但是我很好奇為什么會(huì)出現(xiàn)這個(gè)錯(cuò)誤:dout沒有輸出123,連續(xù)輸出了兩個(gè)124。

答:這是signalTap工具使用的訓(xùn)練習(xí)題,只需要找到錯(cuò)誤即可,不用修正錯(cuò)誤。并且該練習(xí)的設(shè)計(jì)文件已經(jīng)封裝成IP核了,
無法看到內(nèi)部設(shè)計(jì)文件,所以不需要糾結(jié)練習(xí)問題的生成原因。



問題【3.2】調(diào)試技巧課程 - 測試文件編寫練習(xí)3-練習(xí)要求中的”報(bào)文之間的間隔位3字節(jié)“ 是指3個(gè)時(shí)鐘周期?

解答:需要根據(jù)報(bào)文數(shù)據(jù)的位寬來確定的。例如,報(bào)文數(shù)據(jù)data位寬為8bits,那么間隔3字節(jié)就需要3個(gè)時(shí)鐘周期;假如data是其他位寬,以此類推。






四、FIFO架
構(gòu)設(shè)計(jì)專題課

【問題4.1】關(guān)于FIFO的深度計(jì)算問題?
答:可以看此貼:
http://old.mdy-edu.com/jishuwenz/2020/0219/914.html

此答案來自于明德?lián)P的書籍《手把手教你學(xué)FPGA》,電子版可以在此貼下載:http://old.mdy-edu.com/wentijieda/20210410/1324.html


【問題4.2】圖中X代表什么意思

答:這個(gè)X是表示并串轉(zhuǎn)換的次數(shù)。FIFO輸出的Q是32位,正常情況下,是有4個(gè)字節(jié)的有效數(shù)據(jù),因此x=4。但有一個(gè)情況,在包文的最后一個(gè)數(shù)據(jù)時(shí),有可能是只有1字節(jié)、或者2字節(jié)、或3字節(jié),或4字節(jié)有效,這個(gè)有效多少是取決于mdy的值(經(jīng)過FIFO后,即是Q的33和32位)。可以代入數(shù)據(jù)可以看到x的值。例如:當(dāng)q[33:32]=1時(shí),表示有1字節(jié)無效,即3個(gè)字節(jié)有效,所以此時(shí)x等于3。



【問題4.3】問:FIFO仿真時(shí),與預(yù)想的不一樣,有時(shí)候會(huì)出讀出的不對(duì)?

答:在做FIFO仿真的時(shí)候,如果出現(xiàn)仿真出錯(cuò)的情況,建議按如下方式定位。 1.一定要抓取FIFO的內(nèi)部信號(hào)來觀察。注意,一定是內(nèi)部信號(hào),例如FIFO這個(gè)模塊的q、rdreq等。 2.要先確認(rèn)FIFO的輸入端,即wrreq信號(hào)和寫數(shù)據(jù),一個(gè)時(shí)鐘(寫時(shí)鐘)一個(gè)時(shí)鐘去對(duì),最好記錄一下這個(gè)數(shù)據(jù)。 3.其次,確認(rèn)FIFO的輸出端,即讀時(shí)鐘、rdreq和q這三個(gè)信號(hào),一個(gè)時(shí)鐘一個(gè)時(shí)鐘去對(duì),把數(shù)據(jù)記錄下來。 4.最后,再用寫數(shù)據(jù)和讀數(shù)據(jù)進(jìn)行對(duì)比。另外,一般是不會(huì)有問題的,請認(rèn)真核對(duì)。請注意,有部分同學(xué)反饋還是出錯(cuò),我們技術(shù)經(jīng)過遠(yuǎn)程定位后,發(fā)現(xiàn)同學(xué)在確認(rèn)數(shù)據(jù)時(shí),沒有按時(shí)鐘一個(gè)一個(gè)來數(shù),導(dǎo)致了疏忽和遺漏,請確保一定要仔細(xì)核對(duì)。


   【問題4.4】wrusedw是寫側(cè)保持?jǐn)?shù)據(jù)個(gè)數(shù),  rdusedw是指讀出讀出了多個(gè)數(shù)據(jù)個(gè)數(shù)?

答:無論wrusedw還是rdusedw,均表示FIFO內(nèi)保存有多少個(gè)數(shù)據(jù)。它們之間的區(qū)別僅僅是時(shí)鐘域不同,wrusedw對(duì)應(yīng)的寫時(shí)鐘域,即與寫時(shí)鐘對(duì)齊的信號(hào); 

rdusedw對(duì)應(yīng)的是讀時(shí)鐘域,即與讀時(shí)鐘對(duì)應(yīng)的信號(hào)。由于寫時(shí)鐘和讀時(shí)鐘頻率、相位等不同,所以wrusedw和rdusedw是無法完成一致的,使用時(shí)要注意。






五、綜合項(xiàng)目實(shí)踐課——溫度檢測工程

【問題5.1】溫度控制系統(tǒng):
1.串口進(jìn)去之后,你有一個(gè)ASCII 轉(zhuǎn)Hex的一個(gè)模塊 ,然后進(jìn)去之后有將包頭解析 里面進(jìn)入控制模塊 可以直接發(fā)送hex數(shù)據(jù) 進(jìn)入 然后加CRC檢驗(yàn)
2.原本出來的數(shù)據(jù)是hex數(shù)據(jù)也就是說數(shù)據(jù)出來之后,在上位機(jī)去計(jì)算一下就好了,反而簡單,在這里你又將HEX轉(zhuǎn)換為ASCII 也就是說 你上去之后又很麻煩,而且下面處理也變麻煩了 。直接發(fā)送hex去上位機(jī)解析就好了 。原本一個(gè)簡單的小dome最后反而變復(fù)雜了。

3.就是原本溫度的數(shù)據(jù)在采集的過程中 可能會(huì)有不穩(wěn)定的情況,你比如在采集的很長的數(shù)據(jù)中,有突變的,但其實(shí),那個(gè)是不穩(wěn)定的數(shù)據(jù)。加一個(gè)濾波算法進(jìn)去。這樣數(shù)據(jù)就會(huì)很穩(wěn)定。也讓這個(gè)小dome變的有意義,因?yàn)镕PGA主要的就是去做算發(fā) 讓他發(fā)揮他本有的長處,才是最好的做法。

答:

項(xiàng)目的功能需求各種各樣,當(dāng)然去掉ASCII轉(zhuǎn)換模塊更簡單,但是有的項(xiàng)目它的需求就是ASCII碼操作,所以項(xiàng)目功能的架構(gòu)最終都要根據(jù)需求進(jìn)行設(shè)計(jì)。

然后,我們這個(gè)溫度檢測工程是一個(gè)培訓(xùn)項(xiàng)目,所以關(guān)于ASCII功能也會(huì)加入到項(xiàng)目中用于訓(xùn)練。

同時(shí),溫度檢測只是該工程里核心的功能,其他功能的設(shè)計(jì)同學(xué)們也可以根據(jù)自己的腦洞想法、自己的需求進(jìn)行設(shè)計(jì)體會(huì),
  我們非常歡迎同學(xué)們在群提出和分享自己的思路想法,互相討論,共同進(jìn)步。

當(dāng)然同學(xué)們也可以蹲一下我們不定期開播的潘老師直播間,把自己項(xiàng)目功能設(shè)計(jì)、架構(gòu)設(shè)計(jì)等等的疑問和需求提出來,跟潘老師進(jìn)行討論,解決你的問題。


  【問題5.2】問:在下面的DS18B20的讀時(shí)序中,中間部分(即紅色框部分),是否指FPGA要輸出高電平 ?

答:不正確。該時(shí)序前面一段是FPGA輸出低電平(dq_out為0,dout_out_en為1)。然后是FPGA釋放總線(dq_out_en為0,dq_out不關(guān)心)。
  在后一段,是DS18B20輸出值,F(xiàn)PGA讀出值(dq_out_en為0,dq_out不關(guān)心。取dq_in的值)。






六、綜合項(xiàng)目實(shí)踐課——邊緣檢測工程
  【問題6.1】點(diǎn)撥開發(fā)板,下載工程檢測工程后,沒有反應(yīng)。
答:注意:下載后,需要按下矩陣鍵盤的按鍵0(即左上角第一個(gè)按鍵),才能顯示!!!


  【問題6.2】點(diǎn)撥開發(fā)板可以顯示攝像頭拍攝過來的圖片嗎?

答:由于點(diǎn)撥開發(fā)板的資源不足,所以無法顯示攝像頭的圖片,如要顯示,建議購買MP801開發(fā)板



  【問題6.3】PCLK的時(shí)鐘頻率問題

答:FPGA提供XCLK給攝像頭,攝像頭利用XCLK產(chǎn)生PCLK。所以PCLK來源于XCLK,所以XCLK是多少,PCLK就是多少。也就是說PCLK和XCLK頻率大小一樣,只是說可能不同相



  【問題6.4】是否不使用PLL,而是用PCLK來作為采集模塊的時(shí)鐘?

答:PCLK經(jīng)過插件連到FPGA,這其中可能會(huì)不穩(wěn)定。為解決此問題,將PCLK連到PLL,產(chǎn)生一個(gè)同頻同相的時(shí)鐘,使用這個(gè)時(shí)鐘作為采集模塊的工作時(shí)鐘。這樣,即使PCLK缺少或者不穩(wěn)定,但產(chǎn)生的時(shí)鐘也會(huì)保持穩(wěn)定。




    【問題6.5】攝像頭寄存器配置模塊中,配置的是04對(duì)應(yīng)RGB,但是數(shù)據(jù)手冊中RGB應(yīng)該是01,這是為什么?

答:這里的Bayer RAW本質(zhì)上是RAW RGB格式,也是RGB格式。RAW RGB:在攝像頭里沒有經(jīng)過任何處理的數(shù)據(jù)。
RGB:在攝像頭里經(jīng)過了ISP等算法處理的數(shù)據(jù)。
如果想要最原始的數(shù)據(jù),就使用RAW格式;如果要攝像頭先美化一下,就使用RGB格式。想要哪種格式,取決于您的需求。




  【問題6.6】邊緣檢測寄存器是怎么樣配置的呢?

答:邊緣檢測中,ov7670_cfg模塊和sccb模塊,就是用來配置的,可以參考




  【問題6.7】邊緣檢查課程案例OV接口是用MIMP還是DVP的?

答:OV7670是標(biāo)準(zhǔn)的SCCB接口,兼容IIC接口



【問題6.8】請問在邊緣檢測模塊中的vga_config模塊,如果想顯示完整的一幀圖像(假設(shè)為彩條顯示)而ram資源不夠,我用的多維數(shù)組來做存儲(chǔ)器存儲(chǔ)16bit 640*480個(gè)像素點(diǎn),(目的:在local_wr_req時(shí)將寫數(shù)據(jù)按地址存進(jìn)去,在local_rd_req時(shí)將數(shù)據(jù)按地址讀出來),請問以下代碼方案是否可行,若不行,請問該如何實(shí)現(xiàn)此目的?(代碼如下圖示)


答:
1. 使用二維數(shù)組代替RAM方法:二維數(shù)據(jù)使用的是寄存器資料,通常RAM資源是遠(yuǎn)遠(yuǎn)大于寄存器資源的,所以RAM不足時(shí),寄存器一般也不足。
2. 如果只是仿真用途,這個(gè)是可以的,可以不考慮資源。既然是仿真,那自然也可以增大RAM了。
3. 注意上面代碼中有錯(cuò)誤,讀寫地址是獨(dú)立,不是共同一個(gè)的。讀哪些地址數(shù)據(jù),無關(guān)寫地址。上面代碼中不正確,具體請仿真。





  【問題6.9】這個(gè)關(guān)系怎么得到的呢?根據(jù)這個(gè)圖的話 上面的關(guān)系不應(yīng)該反過來嗎?在下一拍的時(shí)候應(yīng)該吧taps0_ff0賦值給taps0x呀?
 
答:沒有 ff0就是表示 延時(shí)一拍的意思,taps0_ff是taps0前一時(shí)刻的值,需要得到這種結(jié)果,就是通過時(shí)序邏輯打一拍,資料提供的有直播課講解,建議結(jié)合仿真波形去看,測試文件有提供



【問題6.10】請問這一段寫在代碼的哪里?我找不到,看不出
   答:在SCCB代碼里



  【問題6.11】邊緣檢測課程這個(gè)判斷讀或?qū)懯鼓艿挠?jì)數(shù)器的rw_cnt為什么剛好對(duì)應(yīng)add_wdata[16]和add_wdata[17]?


解答:在工作狀態(tài)(flag==1)時(shí),此時(shí)對(duì)ov7670的指令進(jìn)行讀寫,那到底是對(duì)指令進(jìn)行讀還是寫,使用讀寫操作計(jì)數(shù)器rw_cnt進(jìn)行計(jì)數(shù),按順序的進(jìn)行判斷。根據(jù)模塊ov7670_para.v 里指令的格式:{讀操作(1bit),寫操作(1bit),操作指令(16bits)}。當(dāng)rw_cnt=0時(shí),設(shè)計(jì)上此時(shí)先判斷指令寫操作是否有效,因此對(duì)應(yīng)判斷ov7670_para.v 里指令的add_wdata[16],確認(rèn)對(duì)應(yīng)比特位的寫操作是否為高電平,如果是,那么需要對(duì)該指令進(jìn)行寫操作,產(chǎn)生一個(gè)寫使能有效信號(hào)(wr_en==1)。其他以此類推。




  【問題6.12】邊緣檢測里面的sccb模塊中,根據(jù)sccb手冊要求,讀時(shí)序的傳輸周期要寫成兩段寫,為什么代碼里面省了第二段(設(shè)備地址+讀數(shù)據(jù))?


這上面讀時(shí)序傳輸周期只寫了一段。

解答:理解有誤,代碼里sccb的讀操作是有兩段時(shí)序的。請聯(lián)系信號(hào) rd_com、count_duan、out_data、flag_sel,直接仿真查看波形一起理解,這樣會(huì)更直觀。



【問題6.13】問:邊緣檢測工程中,配置ov7670的寄存器順序是固定,修改順序要重新修改代碼后上電,有沒有辦法可以不上電直接修改?

答:目前代碼就需要重新上電。 不重新上電的方式,就參考溫度檢測工程,需要上位機(jī)配合


  【問題6.14】問:邊沿檢測課程里,VGA_driver里面的行同步場同步信號(hào)為什么需要打拍延時(shí)產(chǎn)生?
答:在本模塊中,使用了行計(jì)數(shù)器和場計(jì)數(shù)器來產(chǎn)生了讀地址rd_addr。
1.該地址送給上游模塊vga_config,然后將數(shù)據(jù)返回給本模塊會(huì)有幾個(gè)時(shí)鐘的延時(shí)。
2.為了讓返回的數(shù)據(jù),與最終的信號(hào)vga_vys和vga_hys對(duì)齊,所以要延時(shí)一下,打了兩拍再產(chǎn)生行場同步信號(hào)。
3.具體可以通過整體工程仿真來檢查確認(rèn)。檢查返回的第一個(gè)數(shù)據(jù)是否有延時(shí);第一個(gè)數(shù)據(jù)與行場同步信號(hào)是否有就是對(duì) 。



  【問題6.15】邊IP核配置代碼中,下面部分的 3'b110,8'h02,32'h00800020 110,02分別屬于什么功能呢

答:
1. 前面3比特的3'b110用于定義讀寫屬性:分別是表示讀、寫和等待位。當(dāng)對(duì)應(yīng)位為1,表示使能。
a. 例如,3'b110,表示讀使能、寫使能、等待不使能。那么在代碼中,將會(huì)對(duì)寄存器先執(zhí)行寫操作,然后再執(zhí)行讀操作。讀操作的目的,是為了檢查寫的對(duì)不對(duì)。
b.例如,3'b001,表示讀不使能,寫不使能,等級(jí)使能。在代碼中,不對(duì)寄存器操作,只用于延時(shí)。
2. 中間的8位是讀寫地址。即寄存器的地址,對(duì)應(yīng)著IP核數(shù)據(jù)手冊中的寄存器地址。
3. 后面的32位是寫數(shù)據(jù)或者延時(shí)值。當(dāng)寫寄存器時(shí),是寫到寄存器的數(shù)據(jù)。當(dāng)讀寄存器,不關(guān)心,可填充為0。當(dāng)是延時(shí)操作時(shí),表示要延時(shí)的值,單位為時(shí)鐘周期。

 
  【問題6.16】問:請問邊緣檢測中,對(duì)于SDRAM模塊的讀寫,涉及到仲裁內(nèi)容嗎?(邊緣檢測)
  答:涉及到,就是讀寫怎么判斷的問題






七、綜合項(xiàng)目實(shí)踐課——千兆網(wǎng)項(xiàng)目專題課

【問題7.1】千兆網(wǎng)課程里的udp和百兆網(wǎng)通用的嗎?

答:本課程講述的是千兆網(wǎng),對(duì)于百兆網(wǎng)來說,UDP IP MAC和ARP協(xié)議都是相同的,

不同的是MAC IP核、FPGA和PHY芯片的接口不同。 本課程提供的是千兆網(wǎng)的工程,如果要使用百兆網(wǎng),需要根據(jù)上面的內(nèi)容來修改。



  【問題7.2】千兆網(wǎng)課程有實(shí)現(xiàn)TCP協(xié)議嗎?

  答:本千兆網(wǎng)課程實(shí)現(xiàn)的是UDP協(xié)議,沒有TCP協(xié)議。


  【問題7.3】請問下,三速以太網(wǎng)IP核配置時(shí),32bit對(duì)齊選項(xiàng)的意義在哪里?

  答:在接口為32bit時(shí),每個(gè)VLD有效時(shí)的數(shù)量是4個(gè)字節(jié)。由于MAC頭是14字節(jié),不是4的整數(shù)倍,在發(fā)送方向,在補(bǔ)上MAC頭后,

  必須調(diào)整數(shù)據(jù)(拿出2字節(jié)與MAC頭最后2字節(jié)湊成一個(gè)4字節(jié)的有效數(shù)據(jù)),這樣處理比較麻煩。  同時(shí)道理,接收方向,去掉14字節(jié)MAC頭后,

  會(huì)有一個(gè)VLD多出2字節(jié)的有效數(shù)據(jù),這樣調(diào)整也麻煩。為此,MAC IP核里有一個(gè)功能,就是32位對(duì)齊功能。該功能決定,在SOP位置時(shí),

  最高2字節(jié)是否為無效數(shù)據(jù)。 當(dāng)是無效數(shù)據(jù)模式時(shí),發(fā)送方向插入2字節(jié)無效數(shù)據(jù)+14字節(jié)MAC頭;在接收方向,刪除前16字節(jié)MAC頭,剩下就是效數(shù)據(jù)。這樣處理就方便很多了。




  【問題7.4】 只要勾選了32bit對(duì)齊功能,IP核自動(dòng)添加2字節(jié)的無效數(shù)據(jù)?

  答:勾選對(duì)齊后,接收方向?qū)h除無效數(shù)據(jù),直接輸出數(shù)據(jù),即SOP位置的高2字節(jié)也是有效的,一直到EOP位置。發(fā)送方向,認(rèn)為從SOP到EOP的位置都是有效的。
    不勾選的話,接收方向,IP核輸出、SOP位置的高2字節(jié)是無效數(shù)據(jù)。發(fā)送方向,進(jìn)到IP核的數(shù)據(jù)里,將SOP位置的高2字節(jié)視為無效數(shù)據(jù)。



  【問題7.5】如下圖所示,當(dāng)使用了PAD_EN功能時(shí),接收方向,會(huì)將PAD去掉,但實(shí)際上沒有去除,是怎么回事?

 

答:請看下面描述:第一段,當(dāng)值小于600,該域反映的是長度,才會(huì)繼續(xù)檢查PAYLOAD長度,

進(jìn)而才會(huì)有REMOVAL。當(dāng)值大于600時(shí),該域反映的是類型而已,則不會(huì)REMOVAL。





【問題7.6】課程里會(huì)包含TCP協(xié)議嗎?

答:TCP協(xié)議使用邏輯實(shí)現(xiàn)非常復(fù)雜,所以本課程不會(huì)包含此部分內(nèi)容。



 【問題7.7】RGMII支持10M/100M/1000M三種模式嗎?

答:RGMII是"吉比特介質(zhì)獨(dú)立接口"的含義,即1000M的傳輸接口。其他幾種接口包括GMII、MII等。注意一下,10M/100M/1000M三種模式,指的是該“芯片”支持這三種接口,不是說RGMII支持。當(dāng)芯片采用了RGMII或GMII時(shí),就傳輸1000M;當(dāng)采用了MII 100M時(shí),就是傳輸100M。注意的是,RGMII和MII的部分管腳是可以復(fù)用的。



【問題7.8】千兆網(wǎng)配置寄存器的定義代碼中,下面兩個(gè)IP核數(shù)據(jù)手冊中沒有說明,是什么作用的?

答:第一行語句的作用是“等待10000個(gè)時(shí)鐘周期”。目的是當(dāng)完成前面的配置后,等待10000個(gè)時(shí)鐘后,再去配置下面的寄存器。這是因?yàn)橛袝r(shí)

候,配置完上面寄存器后,有可能要等一段時(shí)間才起作用,所以要等一等。這個(gè)“等待”功能是FPGA里面代碼實(shí)現(xiàn)的。

第二句作用是測試使用的,可以刪除,在調(diào)試時(shí)看看接口是否正確。



  【問題7.9】本項(xiàng)目有沒有配置外部的PHY芯片?

答:本項(xiàng)目是沒有配置的,因?yàn)槟J(rèn)PHY芯片是不用配置就能正確使用的。



  【問題7.10】、百兆網(wǎng)和千兆網(wǎng)的區(qū)別是什么?

答:
1. IP核是一樣的
2. 千兆網(wǎng)使用的是GMII接口,百兆網(wǎng)則是MII接口。gmii數(shù)據(jù)線是8位;MII接口使用是4位數(shù)據(jù)線,也就是TXD低4位和RXD低4位。
3. 時(shí)鐘頻率不同,千兆網(wǎng)是125M,百兆網(wǎng)是25M時(shí)鐘。
4. 百兆網(wǎng)的TX時(shí)鐘來自于PHY芯片,芯片管腳使用的是tx_clk,而不是gtx_clk。
5. MII接口的4位數(shù)據(jù)線,是先發(fā)1個(gè)字節(jié)的低4位,再發(fā)高4位。



 
  【問題7.11】老師,咱們千兆網(wǎng)項(xiàng)目中,為啥用sharkwire抓包的時(shí)候  最大傳輸速率到不了千兆呢?           
答:因?yàn)榘膫鬏數(shù)臅r(shí)候,會(huì)有消耗的,例如包與包之間有幀間隙,并且每個(gè)包會(huì)有前導(dǎo)碼和FCS部分。因此達(dá)不到理論的千兆。



  【問題7.12】請問一下在千兆網(wǎng)工程里,初始化mac IP核時(shí),signaltapii有些reg_cnt剛開始時(shí),add_wdata會(huì)出現(xiàn)一小段莫名其妙的數(shù)據(jù),是怎么回事 ?

答:請注意這個(gè)signaltap采樣的時(shí)鐘一定要跟代碼模塊的時(shí)鐘一致。
SignalTap使用教程:
http://old.mdy-edu.com/jishuwenz/2019/1210/107.html



  【問題7.13】在千兆網(wǎng)的rx_filter模塊中,讀數(shù)據(jù)的時(shí)候?yàn)槭裁从胊dd_cnt=m_empty==0,這個(gè)信息FIFO的不空作為讀條件?


答:信息FIFO非空,表示數(shù)據(jù)FIFO中存有一個(gè)完整的包文,因?yàn)樾枰袛喟氖欠裾_,所以需要數(shù)據(jù)FIFO中保存一個(gè)完整包文之后再讀出。
由于本模塊需要將32位的數(shù)據(jù)轉(zhuǎn)成16位的,計(jì)數(shù)器cnt數(shù)兩次,表示數(shù)據(jù)FIFO需要兩個(gè)時(shí)鐘讀出一次,當(dāng)遇到最后eop的時(shí)候,由于可能存在無效字節(jié),所以當(dāng)無效字節(jié)為2個(gè)或者3個(gè)的時(shí)候,計(jì)數(shù)器只需要數(shù)一次就夠了。


  【問題7.14】在千兆網(wǎng)的rx_filter模塊中,信息FIFO深度為什么設(shè)置為32,設(shè)置為1就可以了吧?
答:這里設(shè)置為32只是順手而為,而且占用的資源也不是很多,所以就沒有進(jìn)行修改,深度改為1也是可以的。


  【問題7.15】在udp發(fā)送的過程中,假設(shè)源端口為0x1234,目的端口為0x5678,那么發(fā)送的是12345678還是56781234?
答:發(fā)送的時(shí)候是按照12345678來發(fā)送的


【問題7.16】為什么udp協(xié)議在發(fā)送和接收的時(shí)候,源端口和目的端口順序會(huì)反?

答:包文的協(xié)議時(shí)固定的,只會(huì)按照源地址加目的地址的格式發(fā)送。
  1.
FPGA發(fā)送的時(shí)候,F(xiàn)PGA產(chǎn)生包文,端源端口是1234,目的端口是5678。然后發(fā)送格式是源+目,因此發(fā)送的是1234_5678
  2.FPGA接收的時(shí)候,PC產(chǎn)生包文,源端口是5678,目的是1234,然后發(fā)送的是源+目,因此是5678_1234。


  【問題7.17】請問一下,我編譯千兆以太網(wǎng)的時(shí)候,為什么把這個(gè)clogb2文件添加進(jìn)去就會(huì)報(bào)錯(cuò),說是sv文件?還有這個(gè)文件有什么作用?謝謝
答:clogb2不是一個(gè)完整的module文件,它是被用include的方法加入代碼中的。它不需要加到工程上,所以可以把它去掉。



  【問題7.18】請問下,在做練習(xí)工程的時(shí)候,需要自己設(shè)計(jì)MAC首部發(fā)送電路,MAC首部14字節(jié),但數(shù)據(jù)位是4字節(jié)的,我需要定義 發(fā)送首部的計(jì)數(shù)器,這里4是不能被14整除的,我應(yīng)該怎么處理?
答:
1、可以在設(shè)計(jì)代碼的時(shí),把產(chǎn)生的mac頭、IP頭、UDP頭拼接起來的時(shí)候,在最高位補(bǔ)2字節(jié)的無效數(shù)據(jù)零。
2、或者在mac_ip核進(jìn)行相關(guān)的設(shè)置,具體可以查看相關(guān)數(shù)據(jù)手冊附:數(shù)據(jù)手冊在打開IP核后如圖所示位置查看

 




【問題7.19】千兆網(wǎng)轉(zhuǎn)百兆網(wǎng)的時(shí)候,需要給phy芯片一個(gè)參考時(shí)鐘,是怎么給的?
答:開發(fā)板上有一個(gè)12M的時(shí)鐘芯片,是給phy芯片的。外部晶振的事,跟FPGA無關(guān)



 


  【問題7.20】我的采樣時(shí)鐘就是模塊的工作時(shí)鐘(always塊里的);現(xiàn)在從MAC_IP核輸出的數(shù)據(jù)不正確,根據(jù)常見問題PDF里問題1和6的解答,

有兩種情況,如果時(shí)鐘沒問題那就有可能是IP核的輸入信號(hào)有問題。我對(duì)應(yīng)的代碼和signaltap采集到的數(shù)據(jù)如圖:


請問這種情況下,輸入的數(shù)據(jù)算是正確的嗎?
答:結(jié)果是正確的。原因同上【問題9】


  【問題7.21】再設(shè)置好電腦的IP地址之后,把界面關(guān)掉,然后再打開就沒有了,需要重新設(shè)置,怎么解決?
答:
1、點(diǎn)擊左下角的WIN圖標(biāo),輸入CMD然后回車,打開DOS模式窗口。
2、在DOS命令行提示符下直接輸入:“netsh winsock
3、reset”,然后回車,會(huì)提示需要重啟,不要管它。
4、在DOS命令行提示符下直接輸入:“netsh int ip reset
5、reset.log”,然后回車,提示重新啟動(dòng)計(jì)算機(jī)完成此操作。
6、關(guān)閉DOS窗口,重新啟動(dòng)計(jì)算機(jī),問題解決。


  【問題7.22】千兆網(wǎng)我們的和用mdio接口的有什么區(qū)別? 我們的教程是沒有用到這個(gè)接口的
答:MDIO接口是用來配置外部的PHY芯片的,不是用來傳輸數(shù)據(jù)的,也就不是做網(wǎng)絡(luò)協(xié)議使用的。當(dāng)您需要配置外部的PHY芯片時(shí),可以使用MDIO接口,否則可以不用。



  【問題7.23】請問千兆網(wǎng)工程里,輸入給MAC_IP核的ff_rx_rdy信號(hào)為什么直接置1?跟速率和帶寬有關(guān)嗎?




答:rdy表示下游模塊準(zhǔn)備好指示信號(hào),如果準(zhǔn)備好了就為1,沒準(zhǔn)備好就為0。  在本案例中,下游模塊是rx_mac_analy模塊,該模塊支持rtl8122_a_mac_ip模塊任意速度的數(shù)據(jù),
  即無論怎么來,下游模塊都能接收并正確處理,所以在此處置為1(時(shí)刻準(zhǔn)備好)就可以了



【問題7.24】請問,一個(gè)基礎(chǔ)問題,千兆網(wǎng)工程里多個(gè)模塊都調(diào)用了FIFO,在不同模塊里調(diào)用的fifo的例化名(比如:u_dfifo)能否重復(fù)?
答:可以試試操作,在不同模塊是可以重復(fù)的。



  【問題7.25】這個(gè)是因?yàn)镮P核沒有破解嗎?


答:這個(gè)錯(cuò)誤就是高版本生成的工程在低版本中打開出現(xiàn)的編譯錯(cuò)誤,用高版本的quartus打開即可(如18版本的)



【問題7.26】千兆網(wǎng)課程使用的是哪個(gè)PHY芯片?
答:本課程使用的是MP801芯片,使用提RTL8211芯片。但課程中,幾乎沒有涉及到PHY芯片的內(nèi)容,PHY芯片使用的是默認(rèn)配置。對(duì)于其他PHY芯片,也是通用的。



  【問題7.27】千兆網(wǎng)課程是ALTERA,是否與XILINX的通用?

答:本課程主要涉及到各個(gè)協(xié)議的RTL實(shí)現(xiàn),這部分代碼是通用的。但有一個(gè)MAC IP核,本課程的工程是使用ALTERA的,XILINX的亦有相同的IP,需要您移植。總的來說,MAC IP占整個(gè)課程的比重不大,大概是5%的內(nèi)容。



  【問題7.28】您的UDP教程里面包不包含ARP和CRC328bit這兩個(gè)地方的講解?

答:有arp的講解,但crc就不包括。



  【問題7.29】千兆網(wǎng)課程的源碼中有相應(yīng)的tb仿真代碼嘛?

答:沒有,但如果要驗(yàn)證功能正確性可以上板驗(yàn)證和仿真文件



  【問題7.30】請問下載程序后,電腦檢測不到本地以太網(wǎng),把程序刪除又可以檢測?

答:可能程序里有復(fù)位管腳,把這些PHY芯片復(fù)位了。



  【問題7.31】以太網(wǎng)通信中,抓包工具wireshark能抓到 但網(wǎng)絡(luò)調(diào)試助手收不到 是怎么回事?

答:可能性有如下幾種,請逐一排除。

1. IP地址不正確,請檢查IP地址,尤其注意目的IP和源IP的區(qū)別

2. 端口號(hào)不正確,請檢查端口號(hào),尤其注意目的端口和源端口的區(qū)分。

3. 目的MAC地址不正確,可以嘗試發(fā)送廣播包文(非ARP包文)測試。

4. 包文過短,小于60字節(jié)。



  【問題7.32】工程仿真的前導(dǎo)碼后為什么有兩個(gè)字節(jié)的0呢? 按理說應(yīng)該緊跟目的MAC地址 圖中e8 6a就是目的MAC開頭.

答:MAC IP核的有一個(gè)32bit對(duì)齊的功能,關(guān)于該功能意義,請看【問題7.3】。如果出現(xiàn)上圖中問題,有可能是MAC IP核中的32bit對(duì)齊功能設(shè)置有誤。



  【問題7.33】千兆網(wǎng)項(xiàng)目中,是否包括TCP協(xié)議實(shí)現(xiàn)?

答:千兆網(wǎng)項(xiàng)目是使用的UDP協(xié)議,而非TCP協(xié)議。目前來說,TCP協(xié)議由于有握手機(jī)制、重發(fā)機(jī)制等功能,在邏輯上實(shí)現(xiàn)相當(dāng)困難,暫未看到商用的案例。


 
  【問題7.34】高速采集后的數(shù)據(jù)  是存到內(nèi)存或者flash嗎 ?

答:激光項(xiàng)目:采集到數(shù)據(jù)后,內(nèi)部進(jìn)行計(jì)算和處理,并將結(jié)果通過千兆網(wǎng)上傳到上位機(jī)。大數(shù)據(jù)采集項(xiàng)目:從光纖采集到數(shù)據(jù)后,保存到DDR3中,然后讀出送到PCIE上位機(jī)。



  【問題7.35】請問插上千兆網(wǎng)模塊后,PING不通? 
答:千兆網(wǎng)模塊是一個(gè)基于PHY層的模塊,不是完整的網(wǎng)卡,實(shí)現(xiàn)的是PHY層的協(xié)議,沒有實(shí)現(xiàn)MAC層、TCP/IP層協(xié)議。
因此,不可能PING通(因?yàn)镻ING功能是在TCP/IP層實(shí)現(xiàn)的)。要實(shí)現(xiàn)PING功能,需要編寫FPGA程序來實(shí)現(xiàn)。 

【問題7.36】插上設(shè)備后,電腦識(shí)別成百兆網(wǎng)問題? 

答:上電后,電腦與千兆網(wǎng)模塊之間會(huì)開展自協(xié)商對(duì)話,根據(jù)雙方的環(huán)境確定通信速率。如果希望工作在1G,而實(shí)質(zhì)協(xié)商成100M,則依次按如下檢查。
1. 檢查電腦網(wǎng)卡是否支持1G,具體請看網(wǎng)卡設(shè)置
2. 檢查網(wǎng)線是否支持1G,有類型的要求。
3. 換臺(tái)電腦試試
4. 以上都測試過后還不行,請找指導(dǎo)老師確認(rèn)。



【問題7.37】請問千兆網(wǎng)的rx_ip_analy.v文件,getlen是獲取總長度,第二個(gè)圖片get_len_4byte是完全不懂,請老師給個(gè)提示?還有+5又是什么意思呢?


答:IP長度是20字節(jié),get_len_byte是實(shí)質(zhì)獲取到的數(shù)據(jù)長度(不包括IP頭),單位為字節(jié);get_len_4byte是實(shí)質(zhì)獲取到的長度(包括IP頭),單位為32bite。




  【問題7.38】你好,這個(gè)rx_ip_analy部分的,我不太清楚到底是實(shí)際的采集長度小于等于輸入獲取的長度還是輸入獲取的長度小于等于實(shí)際采集的長度。
感覺上面說應(yīng)該cnt <get_len_4byte,下面又說act_len_byte < get_len是錯(cuò)的。

答:get_len:從長度字段獲取到的長度;

get_len_4byte:從長度字段獲取到的長度,單位為4字節(jié);

act_len_byte:從數(shù)據(jù)字段中獲取到的長度;

所以,從數(shù)據(jù)中獲取到的長度,小于“字段指示的長度”,就是錯(cuò)的。



  【問題7.39】請教大家一個(gè)問題,以太網(wǎng)調(diào)試的時(shí)候,主機(jī)網(wǎng)卡不是realtek PCIE FE Family,主機(jī)接收不到fpga發(fā)送的報(bào)文怎么辦? 

答:一般來說,只要發(fā)送端發(fā)送的包文符合網(wǎng)口傳輸協(xié)議,無論什么網(wǎng)卡都可以都到包文。可以檢查一下 
①fpga發(fā)送的包文協(xié)議是否正確;
②檢查網(wǎng)口識(shí)別的速率是否與工程速率匹配; 
③檢查網(wǎng)卡是否有問題




  【問題7.40】千兆網(wǎng)工程使用sgmii接口,請問在vivado中用哪個(gè)ip核呀?

解答:GMII和RGMII接口使用的VIVADO?IP核為:tri_mode_ethernet_mac。而SGMII接口使用的IP核為:1G/2.5G Ethernet PCS/PMA OR SGMII。注意:SGMII模式,使用上面的這個(gè)IP核。注意,SGMII協(xié)議會(huì)與本課程中的MAC協(xié)議不同,要特別留意。





  【問題7.41】問:千兆網(wǎng)課程的MAC是使用的官方IP核,還是自己RTL寫的?

答:本課程的UDP、IP、ARP等協(xié)議,是MDY的RTL代碼寫的。而MAC部分,使用的是官方IP核。在平時(shí)使用中,MDY也自己寫了簡化版的MAC層部分代碼,主要實(shí)現(xiàn)的是添加前導(dǎo)碼和校驗(yàn)和。 這一部分沒有文字說明,也沒有教程,如果有疑問,請自行消化。下載鏈接如下:
http://fpgabbs.com/forum.php?mod=viewthread&tid=4481&page=1&extra=#pid5534


  【問題7.42】問題:以太網(wǎng)約束中,建立時(shí)間的時(shí)序報(bào)告如圖一,請問下為什么上面是4ns,下面又是加8ns呢? 保持時(shí)間分析如圖二,為什么這兩個(gè)都加4?

圖一


圖二

答:
1. 這項(xiàng)目是RGMII模式,時(shí)鐘為125M,上升沿和下降沿均采樣,相當(dāng)于時(shí)鐘周期是4ns。
2. 建議時(shí)間和保持時(shí)間都是從4ns開始計(jì)算,可能是約束時(shí)鐘時(shí)指定的,指定從4,可以看時(shí)鐘約束。(有些是從0開始)
3. 建立時(shí)間分析時(shí),目的時(shí)鐘路徑要加上時(shí)鐘周期(4ns),保持時(shí)間分析時(shí),目的時(shí)鐘路徑不需要加上時(shí)鐘周期。 原因請看時(shí)序約束問題匯總貼8.16
http://old.mdy-edu.com/wentijieda/20210410/1294.html)



【問題7.43】請問一下,IP校驗(yàn)和,校驗(yàn)和字段不加,這部分應(yīng)該是5吧,16*5。


解答: 如圖所示,ip_head[16*5-1 -:16]對(duì)應(yīng)的是IP校驗(yàn)和的值,但此時(shí)還未計(jì)算出IP校驗(yàn)和的值,所以ip_sum=0,因此可以省略對(duì)ip_head[16*5-1 -:16]的求和計(jì)算。



【問題7.44】想請問一下,以太網(wǎng)tx_pack模塊的測試文件,這條語句是什么作用呀?


解答:用于計(jì)算長度的有多少個(gè)2字節(jié)長度的數(shù)據(jù)。length表示長度有多少字節(jié),而len_2b表示長度有多少個(gè)2字節(jié)。信號(hào)length不取最低位,相當(dāng)于數(shù)據(jù)除以2。


【問題7.45】問:當(dāng)把板子和電腦的網(wǎng)線相連后,電腦那里顯示“未識(shí)別網(wǎng)絡(luò)”,如何解決“未識(shí)別網(wǎng)絡(luò)”問題?
答:“未識(shí)別網(wǎng)絡(luò)”這是正常現(xiàn)象。當(dāng)把FPGA板子和電腦相連后,無論FPGA有沒有程序,此時(shí)雙方通信均是“MAC層”的協(xié)議。該層協(xié)議只識(shí)別出速率,即1G還是100M速率。
而“未識(shí)別網(wǎng)絡(luò)”是指TCP/IP層的協(xié)議,需要TCP/IP層的完整協(xié)議支持,這是FPGA板子沒有的,也難以實(shí)現(xiàn)的功能,所以肯定是處于“未識(shí)別網(wǎng)絡(luò)”狀態(tài)。在真正應(yīng)用中,F(xiàn)PGA板子和電腦只是點(diǎn)對(duì)點(diǎn)通信,不需要組網(wǎng)。


【問題7.46】問:如果我想將GMII口換成RGMII口的話,是只需要將位寬以及MAC重新配置一下就可以了嗎?由于RGMII口是雙邊沿采樣,所以不確定需不需要加額外的操作。

我看網(wǎng)上用vivado的時(shí)候還需要用原語將phy給的rxclk處理一下才行。

答:將GMII口換成RGMII口的話,除了需要將位寬以及MAC重新配置一下,還需要更換一下硬件電路部分電阻。


【問題7.47】問:就是這個(gè)選項(xiàng)卡里面,勾選local loopback的時(shí)候,這個(gè)回環(huán)是MAC側(cè)回環(huán)還是phy側(cè)的回環(huán)呀

答:這個(gè)回環(huán)是MAC側(cè)回環(huán)。



【問題7.48】問:千兆網(wǎng)工程里有一個(gè)用戶時(shí)鐘:100M。這個(gè)100M時(shí)鐘是否可以用125M代替。

答:用戶時(shí)鐘只要大于75M即可。在提供的參考工程文檔里,有這個(gè)說明,可以看文檔。
 

【問題7.49】問:為什么是干什么用的?是不是IP頭?

答:偽首部僅是參與校驗(yàn)和計(jì)算而使用的,不會(huì)放到包文中進(jìn)行傳輸。
 

 

【問題7.50】問:如下圖,UDP包文協(xié)議中,各部分的位置在哪?
答:按照一個(gè)包文的先后順序,其包文字段分別是:  前導(dǎo)碼+MAC頭+IP頭+UDP頭(不包括偽首部)+UDP數(shù)據(jù)+校驗(yàn)碼。



【問題7.51】問:接收方向做CRC校驗(yàn),是如何確認(rèn)結(jié)果的正確性的?
答:CRC接收校驗(yàn)有兩種方式。 第一種,接收過來的數(shù)據(jù)做CRC校驗(yàn),結(jié)果與接收過來的CRC校驗(yàn)值比較,相同則接受正確,第二種,數(shù)據(jù)和接受過來的CRC結(jié)果一起做CRC校驗(yàn),結(jié)果應(yīng)該為“固定數(shù)”。注意,這里是固定一個(gè)數(shù),不一定是0,因?yàn)镃RC算法里,還存在輸出結(jié)果反轉(zhuǎn)和異或等操作,會(huì)導(dǎo)致結(jié)果不一定為0。



  【問題7.52】問:接收方向做CRC校驗(yàn),將數(shù)據(jù)和CRC位一起計(jì)算,結(jié)果一定是0嗎?
答:數(shù)據(jù)和接受過來的CRC結(jié)果一起做CRC校驗(yàn),結(jié)果應(yīng)該為“固定數(shù)”。注意,這里是固定一個(gè)數(shù),不一定是0,因?yàn)镃RC算法里,還存在輸出結(jié)果反轉(zhuǎn)和異或等操作,會(huì)導(dǎo)致結(jié)果不一定為0。



  【問題7.53】問:在千兆網(wǎng)工程中,很多模塊都有使用到了rdy信號(hào),該信號(hào)的產(chǎn)生有些是跟FIFO的存儲(chǔ)數(shù)據(jù)個(gè)數(shù)關(guān)聯(lián)。如FIFO深度為4096,當(dāng)存儲(chǔ)數(shù)據(jù)大于4086時(shí),rdy為0;小于4086時(shí),rdy為1。為什么這樣設(shè)計(jì)?
答:rdy是本模塊準(zhǔn)備好信號(hào),為1時(shí)表示可以接收數(shù)據(jù),并且保證能夠正確處理。為0時(shí),要求上游模塊不能發(fā)送。 當(dāng)FIFO滿了的話,進(jìn)來的數(shù)據(jù)無法保存,就會(huì)丟失。所以滿了當(dāng)然rdy為0。為了讓上游模塊有一定的緩沖時(shí)間,將提示的水線設(shè)置小一些,例如4096的,就設(shè)為4086,這樣上游模塊可以晚幾個(gè)時(shí)鐘響應(yīng)也是可以的。 至于是4086,還是4090,根據(jù)項(xiàng)目情況自己設(shè)置。


【問題7.54】問:千兆以太網(wǎng)的macIP核部分的完整視頻有沒有?我看這個(gè)IP核說是也需要配置,還有ctc校驗(yàn),這些都是自動(dòng)完成的嗎?
答:沒有,這部分不是直接使用就可以了,我們工程里有一個(gè)配置表代碼 直接可以用的,ctc是自動(dòng)完成的 不需要參與

【問題7.55】問:請問老師這部分講解有嗎,找不到?

答:沒有講解,直接使用


【問題7.56】問:麻煩問下千兆以太網(wǎng)接收mac地址是0是怎么回事呢?


答:廣播包應(yīng)該是這么顯示的


【問題7.57】問:這個(gè)代碼里的注釋要怎么打開才看得到呢?

image.png
答:注釋變成亂碼http://fpgabbs.com/forum.php?mod=viewthread&tid=813&highlight=%C2%D2%C2%EB


 【問題7.58】千兆網(wǎng)課程提供工程源代碼嗎?  在課程網(wǎng)盤沒有找到,是哪個(gè)文件? 
答: 
9e4ab9a9ec1aa4c724bf7e08c319ecc.png





八、時(shí)序約束專題課

 【問題8.1】 VIVADO的時(shí)鐘約束向?qū)Вo法找到時(shí)鐘,如下圖所示,位置1中應(yīng)該要識(shí)別出時(shí)鐘。
















答:請注意,位置1的地方是列出的是“沒有被約束的時(shí)鐘”,如果該時(shí)鐘已經(jīng)被約束了,就不會(huì)在這里列出來了。注意上圖中3的位置,該列說明了有2條時(shí)鐘約束。可以點(diǎn)擊這里看看,是不是已經(jīng)對(duì)時(shí)鐘進(jìn)行約束了。為什么會(huì)有時(shí)鐘被約束了呢?因?yàn)樵摴こ桃呀?jīng)有約束文件。


  【問題8.2】VIVADO/QUARTUS練習(xí)中,rst_n是否需要約束?

答:一個(gè)完整的約束,其基本要求是:所有的路徑都覆蓋,包括所有的輸入管腳和輸出管腳。所以,rst_n需要約束。注意的是,該信號(hào)是輸入信號(hào),但沒有隨路時(shí)鐘進(jìn)來。所以該信號(hào)可以認(rèn)為是無時(shí)鐘的情形,按照課程理論,應(yīng)該定義一個(gè)虛擬時(shí)鐘。定義了虛擬時(shí)鐘后,再重新使用約束向?qū)Вs束rst_n。


  【問題8.3】在VIVADO中,如何設(shè)置虛擬時(shí)鐘?

答:虛擬時(shí)鐘不能在時(shí)序約束向?qū)е刑砑樱枰谙旅娲翱谔砑?/span>

 

 在Edit Timing Constraints中點(diǎn)擊,然后在creat clock窗口中,雙擊“Double click to create a Create Clock Constrtaint”。在彈出的窗口中


Clock name為該時(shí)鐘命一個(gè)名字,Source objects是不需要填的,因?yàn)槭翘摂M時(shí)鐘,就是沒對(duì)象了。



  【問題8.4】時(shí)序約束出現(xiàn)時(shí)序違例(Slack為負(fù)數(shù)),如何處理?

答:首先指出一個(gè)誤區(qū):當(dāng)約束出現(xiàn)錯(cuò)誤時(shí),想當(dāng)然地認(rèn)為是“時(shí)序約束做得不對(duì)”,所以應(yīng)該怎么去改“時(shí)序約束”,從而讓這些錯(cuò)誤消失,這是一個(gè)錯(cuò)誤的觀念。時(shí)序約束的作用:在于檢查“設(shè)計(jì)是否滿足時(shí)序要求”,它是用來審視自己設(shè)計(jì)的,很多情況是,要改設(shè)計(jì)代碼來滿足時(shí)序要求。當(dāng)時(shí)序約束提示有錯(cuò)誤時(shí),應(yīng)該閱讀“時(shí)序報(bào)告”,從報(bào)告中分析時(shí)序路徑(數(shù)據(jù)到達(dá)時(shí)間、時(shí)鐘到達(dá)時(shí)間和數(shù)據(jù)要求時(shí)間等),根據(jù)報(bào)告分析錯(cuò)誤的原因,并根據(jù)原因來實(shí)行不同的方法。

   以建立時(shí)間違例,說明具體方法如下

   1. 時(shí)序報(bào)告中,找到提示錯(cuò)誤的路徑,即目的寄存器,以及源寄存器。注意,這是兩個(gè)寄存器的點(diǎn)。

   2. 首先判斷,源寄存器的時(shí)鐘,與目的寄存器的時(shí)鐘,是否相同。如果不同,可以認(rèn)為是異步時(shí)序,見步驟3;如果是相同,則看步驟4。

   3. 如果是異步電路,那么處理方法如下:

   A. 確認(rèn)做了異步處理。對(duì)于數(shù)據(jù),則是通過異步FIFO來做異步處理;如果是控制信號(hào),則要經(jīng)過打兩拍來處理。

   B. 確認(rèn)做了異步處理后,仍然會(huì)報(bào)“時(shí)序違例”的。這個(gè)時(shí)候,可以該路徑設(shè)置成set false path,不用再檢查。

   4. 同步電路下,具體處理如下:

   A. 查看兩個(gè)寄存器點(diǎn)之間,經(jīng)過了多少加法器、乘法器、除法器等。

   B. 對(duì)于除法器,要特別留意,一般是1個(gè)時(shí)鐘計(jì)算不完的。那么可以 a.想辦法不用除法;b. 通過使能信號(hào)控制獲取除法器結(jié)果的時(shí)間。

   C. 對(duì)于乘法器和加法器,或者其他組合電路較多的。想辦法分隔成流水線來實(shí)現(xiàn)。可以參考MDY 流水線的內(nèi)容。

   5. 如果是IP核的違例,檢查是否時(shí)鐘不滿足IP核的要求。如果沒問題,就不用管。

   6. 如果是ILA等在線調(diào)試工具路線的違例,則一般不用處理。

   7. 如果是線延時(shí)太長的,可以嘗試打一拍處理。即A->B的線太長,可以打一拍,變成A->C->B,這樣線延時(shí)就小了。



  【問題8.5】VIVADO中,如何查詢未約束的時(shí)鐘、未約束的輸入延時(shí)和輸出延時(shí)等?

答:如下圖,在VIVADO的時(shí)序約束界面中,在下面欄目可顯示未約束的地方。



  【問題8.6】如下圖所示,跨時(shí)鐘域打兩拍的方法,其實(shí)只是一個(gè)信號(hào)的傳遞,當(dāng)?shù)谝粋€(gè)信號(hào)出現(xiàn)不穩(wěn)之后或者錯(cuò)誤之后,后面就會(huì)把這個(gè)錯(cuò)誤的信號(hào)繼續(xù)傳遞下去,并沒有起到糾錯(cuò)的作用


答:上圖中打兩拍的方法,其本質(zhì)不是為了“糾錯(cuò)”,它的作用是為了防止“亞穩(wěn)態(tài)”。防止亞穩(wěn)態(tài)的本質(zhì):防止中間狀態(tài)過長。之所以采用兩級(jí)觸發(fā)器的方法,是因?yàn)镈觸發(fā)器出現(xiàn)亞穩(wěn)態(tài)的可能性非常小,而兩級(jí)D觸發(fā)器出現(xiàn)亞穩(wěn)態(tài)的概率就更小了。



  【問題8.7】既然打兩拍的方法不能糾錯(cuò),那“打兩拍”還有什么意義?

答:錯(cuò)誤有很多種,有些錯(cuò)誤是1次性錯(cuò)誤,而有些是系統(tǒng)性錯(cuò)誤。傳輸過程中,如果發(fā)了0,如果全部接收模塊都認(rèn)為是1,這并不是問題,這是可以預(yù)防和可控的(例如檢測多幾次就行了)。
但是亞穩(wěn)態(tài)的時(shí)候,如果發(fā)了0,但部分接收認(rèn)為認(rèn)為是1,而另一部分模塊認(rèn)為是0,至于哪些模塊認(rèn)為是1哪些是0,這是隨機(jī)的,不可預(yù)知的,這就是災(zāi)難。
更詳細(xì)的內(nèi)容,建議參考:
FPGA知識(shí)大串講  http://www.fpgabbs.cn/forum.php?mod=viewthread&tid=581


【問題8.8】模塊A的時(shí)鐘clka為100MHz,模塊B的時(shí)鐘clkb為300MHz。現(xiàn)在模塊A要把32bit的數(shù)據(jù)送給模塊B。模塊A要如何發(fā)送,模塊B要如何接收呢?

答:
方法1:采用異步FIFO的方法。
方法2:采用指令信號(hào)的方法傳輸,模塊A產(chǎn)生vld信號(hào)給模塊B,模塊B對(duì)vld進(jìn)行同步化處理(打兩拍)后,檢測同步化信號(hào)的上升沿。
需要注意的,VLD的信號(hào)是讓模塊B周期的三倍或以上。由于clka是100M,產(chǎn)生的vld是10ns,而clkb是300M,周期是3.33ns。所以模塊A只要產(chǎn)生1個(gè)時(shí)鐘的vld給模塊B即可。



  【問題8.9】模塊A的時(shí)鐘clka為300MHz,模塊B的時(shí)鐘clkb為100MHz。現(xiàn)在模塊A要把32bit的數(shù)據(jù)送給模塊B。模塊A要如何發(fā)送,模塊B要如何接收呢?

答:
方法1:采用異步FIFO的方法。
方法2:采用指令信號(hào)的方法傳輸,模塊A產(chǎn)生vld信號(hào)給模塊B,模塊B對(duì)vld進(jìn)行同步化處理(打兩拍)后,檢測同步化信號(hào)的上升沿。需要注意的,VLD的信號(hào)是讓模塊B周期的三倍或以上。
由于clka是300M,產(chǎn)生的vld是3.33ns,而clkb是100M,周期是10ns。所以模塊A要產(chǎn)生10個(gè)時(shí)鐘的vld給模塊B。



【問題8.10】一塊電路板上,有兩個(gè)芯片,芯片A的時(shí)鐘clka為100MHz,芯片B的時(shí)鐘clkb為100MHz。現(xiàn)在芯片A要把32bit的數(shù)據(jù)送給芯片B。模塊A要如何發(fā)送,模塊B要如何接收呢?

答:
方法1:采用異步FIFO的方法。
方法2:采用指令信號(hào)的方法傳輸,模塊A產(chǎn)生vld信號(hào)給模塊B,模塊B對(duì)vld進(jìn)行同步化處理(打兩拍)后,檢測同步化信號(hào)的上升沿。需要注意的,VLD的信號(hào)是讓模塊B周期的三倍或以上。
雖然clka和clkb都是100M,但他們不是同一個(gè)晶振產(chǎn)生的,因此都是異步時(shí)鐘。為了滿足以上要求,所以模塊A要產(chǎn)生3個(gè)時(shí)鐘的vld給模塊B。


【問題8.11】A, B時(shí)鐘都是50M,但是他們不相關(guān),為了防止編譯器把他們默認(rèn)為同一個(gè)時(shí)鐘,是不是要用一個(gè)異步時(shí)鐘組約束,來告訴編譯器他們是不同的兩個(gè)時(shí)鐘?

答:一般分別產(chǎn)生A和B的時(shí)鐘約束即可。


【問題12】 建立時(shí)間可以是負(fù)值嗎?

答:建立時(shí)間當(dāng)然可以是負(fù)數(shù)了。負(fù)數(shù)表示,可以在時(shí)鐘上升沿后數(shù)據(jù)才變化。(建立時(shí)間是器件的屬性,至于怎么器件怎么做到的,那就要問器件工程師了)

【問題13】 程序原本時(shí)序可以通過,加上singalTap節(jié)點(diǎn)之后時(shí)序不通過是什么原因

答:增加signaltap ILA等在線調(diào)試工具時(shí),需要使用到內(nèi)部的資源,例如RAM、選擇器、寄存器等,增加后再去綜合和布局布線。由于改變了資源,因此肯定對(duì)時(shí)序是有影響的,有可能改善了也有可能惡化了。如果時(shí)序有問題,分析路徑,如果是在線調(diào)試工具路徑,評(píng)估是否會(huì)有風(fēng)險(xiǎn),沒風(fēng)險(xiǎn)就算了



【問題8.14】時(shí)序約束什么時(shí)候要做?

答: 

1.在需要的時(shí)鐘頻率下,如果邏輯功能不穩(wěn)定,那么就需要時(shí)序約束。   
  2.一般時(shí)鐘大于100M的時(shí)候,我們就要做一下時(shí)序約束。


【問題8.15】時(shí)序約束建立時(shí)間和保持時(shí)間的生活案例。

答:可以想象,有一個(gè)人從家里出發(fā)去機(jī)場,搭乘13點(diǎn)的飛機(jī)。
   1. 13點(diǎn)起飛,起飛前15分鐘要到機(jī)場,這個(gè)15分鐘,就類似于建立時(shí)間要求。
   2. 機(jī)場每小時(shí)有要飛一趟飛機(jī),每個(gè)小時(shí)表示的是時(shí)鐘周期。
   3. 飛機(jī)起飛后,機(jī)場要保持10分鐘,之后才能來下一批乘客,這個(gè)10分鐘就是保持時(shí)間。
   4. 這個(gè)人出發(fā)去搭13點(diǎn)的飛機(jī),因此他要在12點(diǎn)45分之前到機(jī)場,并且是12點(diǎn)10分之后到機(jī)場。既不能早到,也不能晚到機(jī)場。
   5. 如果這個(gè)人12點(diǎn)45分之后才到機(jī)場,那就搭不上本趟飛機(jī),即違反了建立時(shí)間要求。(建立時(shí)間影響的是自己坐飛機(jī))
   6. 如果這個(gè)人12點(diǎn)10分前就到了機(jī)場,那就會(huì)因此上一趟飛機(jī)的起飛,即違反了保持時(shí)間要求。(保持時(shí)間不滿足,影響的是上一批乘客坐飛機(jī))
   7. 這個(gè)人是計(jì)劃去機(jī)場,因此他要估算幾點(diǎn)能到機(jī)場。首先他會(huì)算所有情況下的最大延遲,如剛到路口紅燈就來了、走路最慢等,在這種最慢的情況下,如果能在12點(diǎn)45分前到,說明建立時(shí)間沒問題。然后,他會(huì)算所有情況下的最小延遲,如剛到路口綠燈,走路最快,在這種最快的情況下,如果能在12點(diǎn)10分后才,那說明保持時(shí)間沒問題。



 【問題8.16】為什么建立時(shí)間分析的時(shí)鐘到達(dá)時(shí)間要加一個(gè)時(shí)鐘周期而保持時(shí)間分析則不用呢?

答: 因?yàn)榻r(shí)間是源寄存器發(fā)出數(shù)據(jù),目的寄存器采集,也就是上一個(gè)時(shí)鐘發(fā)出來,本時(shí)鐘采集。這里有一個(gè)時(shí)鐘周期的因素,所以要加1個(gè)時(shí)鐘周期。而保持時(shí)間分析,則是“本個(gè)時(shí)鐘”發(fā)出數(shù)據(jù)后,如果延時(shí)太小,會(huì)影響“本個(gè)時(shí)鐘”對(duì)上一個(gè)數(shù)據(jù)的采集,因?yàn)椴恍枰?個(gè)時(shí)鐘周期。另外,要注意一點(diǎn),保持時(shí)間是跟時(shí)鐘周期無關(guān)的。



  【問題8.17】一個(gè)外部的信號(hào),經(jīng)過狀態(tài)機(jī)的“組合邏輯”,這也要做同步處理嗎?
答:需要做同步處理的。首先明白一點(diǎn),F(xiàn)PGA里的時(shí)序邏輯=組合邏輯 + D觸發(fā)器。組合邏輯的最終結(jié)果,還是要發(fā)D觸發(fā)器的。所以還要做同步化處理的。






【問題8.18】請教下,做時(shí)序約束,做到這步時(shí),這些都要勾選上嗎? 
答:當(dāng)然不是,要逐個(gè)分析確認(rèn),沒有一選就全選上的道理。



  【問題8.19】下面的生成時(shí)鐘約束,是否一定要勾選?


答:這應(yīng)該看生成時(shí)鐘那一節(jié)視頻,里面重點(diǎn)強(qiáng)調(diào)了“什么叫時(shí)鐘”? 上面的圖里,您應(yīng)該要搞清楚,它被識(shí)別出時(shí)鐘了,正不正常?如果是正常,那您肯定是要添加約束,定義頻率吧。如果它不應(yīng)該識(shí)別出時(shí)鐘了,
那您應(yīng)該檢查您的代碼,看是不是代碼不規(guī)范引起,或者有沒有潛在的問題。注意一下:約束不是目的,約束是為了查看報(bào)告,看設(shè)計(jì)有沒有問題的。


【問題8.20】系統(tǒng)同步只可能是單沿采集?沒法像DDR那樣雙沿采集?
答:系統(tǒng)同步也是可以是雙沿采集的,但比較少。課程里,只是介紹了部分情形。如果想看所有情形有哪些,可以打開VIVADO的時(shí)序約束向?qū)В梢栽O(shè)置INPUT DELAY窗口查看。


【問題8.21】QUARTUS生成SDC時(shí),默認(rèn)出現(xiàn)的那條時(shí)鐘約束是正常的么?我自己刪掉就行了?
答:默認(rèn)生成的當(dāng)然是不正常。


【問題8.22】老師問一下,我畫的后邊那個(gè)部分,我認(rèn)為應(yīng)該沒有數(shù)據(jù)吧?


答:不是 這個(gè)不是有沒有數(shù)據(jù)的概念 而是數(shù)據(jù)是否穩(wěn)定的概念。


【問題8.23】請問下有沒有針對(duì)SDC時(shí)序約束語法的講解嗎?
答:時(shí)序約束里,只講解了用到的部分。如果想看更多部分,我估計(jì)你要看這個(gè)語法的權(quán)威資料了。



【問題8.24】老師您好,我在學(xué)習(xí)時(shí)序約束視頻,看到第一個(gè)視頻這塊“流水線設(shè)計(jì)思路:乘法器可以分成加法器,然后加法器還可以分成什么,一直聽不清”
答:最后可以分成與門這些最簡單的門電路。



【問題8.25】老師請問紅色的是不是不滿足時(shí)序要求?


答:不是的,setup和hold時(shí)間形成一個(gè)時(shí)間窗,只要在這個(gè)時(shí)間窗里信號(hào)穩(wěn)定就餓可以了 在使用時(shí)序分析工具的時(shí)候,字體為紅色時(shí)間提示是不滿足時(shí)序要求


  【問題8.26】什么樣的信號(hào)會(huì)被工具判斷為時(shí)鐘?
答:一個(gè)信號(hào)被VIVADO QUARTUS判斷為時(shí)鐘,不是看名稱里是否帶有“clk”等字母。而是主要看其是否用于“時(shí)鐘”的行為中,主要有如下幾種情況。
1. 被關(guān)聯(lián)到always敏感列表里的時(shí)鐘信號(hào)。說明會(huì)被連到觸發(fā)器的時(shí)鐘端,所以會(huì)被認(rèn)為為時(shí)鐘。
2. 被連到PLL和MMCM等時(shí)鐘管理器的輸入端,這會(huì)被認(rèn)為是時(shí)鐘。
3. 被連到鎖存器的條件端,例如一個(gè)沒有補(bǔ)全的組合邏輯代碼,其條件就會(huì)被認(rèn)為時(shí)鐘。


  【問題8.27】用ila抓取信號(hào)分析,發(fā)現(xiàn)異常,而時(shí)序約束報(bào)告正常,因此可以認(rèn)為時(shí)序報(bào)告正常,而時(shí)序會(huì)有問題?
答:
1.在線邏輯分析儀是用于判斷邏輯是否出現(xiàn)問題,可以認(rèn)為是檢查時(shí)鐘節(jié)拍下的邏輯判斷。而時(shí)序約束是解決D觸發(fā)器的建立時(shí)間和保持時(shí)間問題,是一個(gè)時(shí)鐘內(nèi)的時(shí)序問題。所以,不能用ila來推導(dǎo)時(shí)序約束,這是不同層次的問題。
2.官方可以保證,用戶代碼和時(shí)序約束的生成結(jié)果是正確,即在輸入的代碼和約束,給出來的報(bào)告一定是正確的。但時(shí)序約束對(duì)不對(duì),這是客戶保證的。
3.出現(xiàn)結(jié)果不對(duì),可能性很多,不一定是時(shí)序問題,要注意“充分必要條件”。


  【問題8.28】同樣的工程不做任何改動(dòng),有時(shí)編譯后下板驗(yàn)證正確,有時(shí)編譯后下板驗(yàn)證不正確,是不是時(shí)序問題呢?
答:有可能是,但又不一定是。這是時(shí)序不滿足的一種現(xiàn)象。但反過來,沒有說,出現(xiàn)這種現(xiàn)象,就一定是時(shí)序問題。


  【問題8.29】設(shè)置時(shí)鐘約束時(shí),假如有虛擬時(shí)鐘的情況,虛擬時(shí)鐘是必須要設(shè)置的嗎?
答:
1.原則上所有接口有應(yīng)有約束。
2.設(shè)置虛擬時(shí)鐘,可以方便將對(duì)應(yīng)信號(hào)歸到該虛擬時(shí)鐘好,這樣方便做分析,例如看有沒有跨時(shí)鐘域等。
3.是不是一定要做,取決于項(xiàng)目老大要求,不做不一定有問題。

【問題8.30】一個(gè)always模塊下,if 、else if,,,else ,寫的太多了 ,是不是會(huì)容易造成時(shí)序問題呢?這種說法對(duì)嗎?
答:這里有一個(gè)定義要搞清楚的,什么叫“多”?
1. 是3個(gè)就多,還是10個(gè)?每個(gè)人標(biāo)準(zhǔn)不同。
2. 即使是同一個(gè)人,使用不同的器件,這個(gè)“多”也是不同的。有些高級(jí)的器件,10個(gè)IF也不多,有些低端器件,3個(gè)也多。
3. 即使同一個(gè)人,同一個(gè)器件,但if里的判斷條件也有講究。如果判斷條件里一個(gè)除法器,那1個(gè)if也多,如果只是判斷0和1,那么10個(gè)也算少。
4. 最具可操作性的做法,給定時(shí)鐘約束,看時(shí)序報(bào)告。報(bào)告沒問題,那就是沒問題;否則會(huì)有時(shí)序違例的錯(cuò)誤。 


  【問題8.31】output latency一般設(shè)置成多少呢?pipeline 有啥用?
答:由于除法器占用資源較大,難以在一個(gè)時(shí)鐘周期內(nèi)計(jì)算完畢,需要多個(gè)時(shí)鐘才計(jì)算完,這個(gè)pipeline就是設(shè)置多少個(gè)時(shí)鐘周期的。
如果您不清楚要多少個(gè),設(shè)置填一個(gè)較大的數(shù),然后看時(shí)序報(bào)告是否正確。如果正確,就沒問題。


  【問題8.32】請問:MDY的案例中,為什么串口需要對(duì)din進(jìn)行同步化,而SCCB就不需要對(duì)sio_din進(jìn)行同步化?sio_din也是外部器件進(jìn)來的嗎? 
答: 是否要對(duì)信號(hào)進(jìn)行同步化,最核心的理解是“該信號(hào)是否能夠保證滿足建立時(shí)間和保持時(shí)間要求”,也就是“該信號(hào)的變化和時(shí)鐘存在確定性相位關(guān)系”。
以串口為例,串口的輸入信號(hào)與FPGA時(shí)鐘是沒有任何聯(lián)系的,該輸入信號(hào)可以在任意時(shí)刻變化,也就有可能剛好在時(shí)鐘上升沿變化,從而不滿足建立時(shí)間要求,
因此要做同步化處理。而SCCB案例中,由FPGA時(shí)鐘里產(chǎn)生了sio_dout、SCK等信號(hào),而sio_din在sck作用下變化,所以sio_din與FPGA時(shí)鐘是有一定關(guān)系的。
可以認(rèn)真看時(shí)序圖,在FPGA對(duì)sio_din有采樣時(shí)刻,時(shí)序已經(jīng)要求sio_din要穩(wěn)定不變的,所以可以不用做同化處理。


  【問題8.33】請問工程中使用了PLL,在做時(shí)序約束時(shí),generate clocks窗口顯示沒有PLL產(chǎn)生的時(shí)鐘,如下圖,為什么?


答:PLL、MMCM等產(chǎn)生的時(shí)鐘,默認(rèn)是由工具自動(dòng)推導(dǎo)約束的,不用用戶來約束。雖然用戶沒有約束,事實(shí)上是做了分析的。例如下圖中,

可以看到c0_my_pll這個(gè)時(shí)鐘。其中,c0_my_pll是工具自動(dòng)命名的。


用戶也可以自己約束PLL/MMCM產(chǎn)生的時(shí)鐘,方法如下圖。

按照方面方法,約束好,重新分析就可以了。


【問題8.34】問:如果使用的IP核內(nèi)部代碼出現(xiàn)了時(shí)序約束違例,該如何解決?
答:IP核是由官方提供的代碼,一般用戶不能修改,如果該IP核出現(xiàn)違例,可以從以下方向入手:
1. 一般IP核是有指定的頻率范圍,可以從數(shù)據(jù)手冊找到,請看是否滿足了數(shù)據(jù)手冊要求。
2. 如果頻率正確,還會(huì)出現(xiàn)報(bào)錯(cuò),可以檢查時(shí)鐘和復(fù)位管腳有沒有正確使用,根據(jù)經(jīng)驗(yàn),這通常是引起問題的原因。
3. 嘗試修改編譯策略,重新綜合看看。


【問題8.35】問:請問時(shí)序約束只是針對(duì)FPGA輸入與輸出端進(jìn)行約束,而不是針對(duì)FPGA內(nèi)部模塊之間或者模塊里面。這樣理解是否正確?
答:不是的,內(nèi)部肯定也跟約束有關(guān)。


【問題8.36】問:老師,想問下時(shí)序約束,DDR4的uiclk需要時(shí)鐘約束嗎?
答:需要的,設(shè)置好時(shí)鐘頻率,周期就可以了,就是需要create clock就好了


  【問題8.37】問:關(guān)于input delay的抖動(dòng)解釋。
答:需要理解的抖動(dòng),不是指一個(gè)波形的結(jié)果,是多個(gè)波形疊加的結(jié)果。假設(shè)說一個(gè)PWM波形,周期為10ns,理想情況下變高為2.5ns,變低在7.5ns。由于存在不確定延時(shí)情況,所以有時(shí)候變高在2.6ns,變低在7.6ns。有時(shí)候變高在2.4ns,變低在7.4ns。有時(shí)變高在2.3ns,變低在7.3ns。數(shù)個(gè)波形疊加,就看到了抖動(dòng)的現(xiàn)象。





九、PCIE專題課

 【問題9.1】 PCIE視頻教程是否有講簡單的pio數(shù)據(jù)交互?
答:有此方面的內(nèi)容。


 【問題9.2】多少通道都可以嗎?
答: 是的,都可以。

 【問題9.3】為什么我得pcie板卡驅(qū)動(dòng)識(shí)別為PCI standard RAM Controller而不是pci設(shè)備或者未知設(shè)備呢?
答:可能Windows自帶的驅(qū)動(dòng)也適配了卡,卸載驅(qū)動(dòng),然后用windriver生成驅(qū)動(dòng)的安裝。


 【問題9.4】請問課程可以在VIVADO平臺(tái)開發(fā)是嗎?
答:不可以的。 


 【問題9.5】win10 可以安裝windriver嗎?
答:可以的,正常安裝即可





十、就業(yè)班項(xiàng)目-光纖項(xiàng)目

 【問題10.1】光纖項(xiàng)目主要是培訓(xùn)內(nèi)容是哪些接口?
答:主要是培訓(xùn)DDR3/GTX接口(著重培訓(xùn)的是用戶接口邏輯設(shè)計(jì),也就是接口代碼,而非單純的IP核使用),本項(xiàng)目的工程也包括PCIE接口內(nèi)容,但不會(huì)詳細(xì)教授。


 【問題10.2】GTX接口使用的是什么協(xié)議?
答:本項(xiàng)目是點(diǎn)對(duì)點(diǎn)通信,所以MDY使用GTX IP核后,封裝了一層用戶協(xié)議,這個(gè)用戶協(xié)議是自定義的,參考了UDP協(xié)議的思想。

 
 【問題10.3】光纖項(xiàng)目包含PCIE嗎?
答:本項(xiàng)目的工程包括PCIE代碼,但注意的是,雖然有PCIE代碼,但文檔資料以及教學(xué)內(nèi)容都不包含此部分,即不教授PCIE的內(nèi)容。如果需要PCIE的學(xué)習(xí)內(nèi)容,可以參考MDY的PCIE教程(注意,PCIE教程與光纖項(xiàng)目是完全獨(dú)立的,內(nèi)容沒有任何相關(guān)性)。


 【問題10.4】光纖ip 核的輸入時(shí)鐘是156.25M hz,輸出時(shí)鐘是多少呢?
答:光纖的IP核,有一個(gè)從外部時(shí)鐘芯片過來的時(shí)鐘,本項(xiàng)目中使用的是156.25M。通過該時(shí)鐘,IP核產(chǎn)生給“用戶側(cè)”的時(shí)鐘gtx_tx_clk,頻率為156.25M。同時(shí),IP核會(huì)從LANE中恢復(fù)出接收時(shí)鐘gtx_rx_clk,頻率為156.25M。 注意,LANE那邊是沒有時(shí)鐘線的。


 【問題10.5】pcie(pcie_usr_clk) 用戶側(cè)的輸出時(shí)鐘是多少呢?
答:該時(shí)鐘是150Hhz。


 【問題10.6】ddr3(ui_clk )用戶側(cè)的輸出時(shí)鐘是多少呢?
答:該時(shí)鐘是200M。


 【問題10.7】光纖最大可以跑多少G?
答:單獨(dú)從光纖接口來說,光纖接口最多可以跑10G。但如果是4條光纖都跑10G的話,總帶寬是40G,PCIE則只能跑20G,即進(jìn)來的數(shù)量多,送給PC的少,這樣是不行的。


 【問題10.8】現(xiàn)在這個(gè)光纖是跑2.5G 嗎?是按16bit 數(shù)據(jù)乘以156.25Mhz 得來的嗎?
答: 首先是項(xiàng)目需要2.5G的速率,所以光纖要跑2.5G。其次,根據(jù)2.5G,從而推算出你的用戶側(cè)時(shí)鐘和數(shù)據(jù)位寬,位寬*時(shí)鐘頻率=2.5G。例如,位寬為1,則意味著用戶側(cè)時(shí)鐘2.5G,這不現(xiàn)實(shí)。位寬為16位,則時(shí)鐘頻率是156.25M,這是比較正常的時(shí)鐘;當(dāng)然,你可以選位寬為32位,時(shí)鐘頻率則為78.125M,也是可以。


 【問題10.9】課程說使用的是用戶自定義的協(xié)議,難道不是使用aurora協(xié)議嗎?
答:本項(xiàng)目的IP核,其內(nèi)部是使用了aurora協(xié)議的,IP核已經(jīng)實(shí)現(xiàn)了該協(xié)議的內(nèi)容。這里所說的“自定義協(xié)議”,是指IP核之外,由用戶定義的用戶層協(xié)議。例如接收側(cè),用戶從IP核收到數(shù)據(jù)后,這里數(shù)據(jù)的定義是什么,則由用戶確定的。


 【問題10.10】老師您好,高速光纖通信項(xiàng)目通過光纖接口進(jìn)來的數(shù)據(jù)量是多大的?DDR中需要存放多少數(shù)據(jù)呢?
答:每路是2G左右


 【問題10.11】每一路是2G,四路就是8G,那DDR可以放的了嗎?
答:DDR是邊存邊讀的,寫滿就丟棄。


 【問題10.12】老師您好,高速光纖通信項(xiàng)目通過光纖接口進(jìn)來的是什么數(shù)據(jù),出去的又是什么數(shù)據(jù)呢?
答:項(xiàng)目背景是高速AD數(shù)據(jù),出去的也是此數(shù)據(jù)。但其他我們不關(guān)心


 【問題10.13】老師您好,想問一下光纖項(xiàng)目的光纖接口模塊傳輸速率是多少,是怎么計(jì)算出來的?
答:請看問題11.7的答疑


 【問題10.14】光纖通信項(xiàng)目代碼是串口控制模塊的,但是說明文檔基本上沒有講解這一塊,請問MDY有沒有更詳細(xì)的說明文檔呢?
答:課程網(wǎng)盤還沒有這方面內(nèi)容,串口控制是基礎(chǔ)內(nèi)容。您需要了解哪些問題,可以在交流群里溝通。


 【問題10.15】問:使用同步碼(charisk)有沒有使用規(guī)則,或者有沒有注意事項(xiàng),要注意什么?
答:一般通信兩端的設(shè)備都是自己設(shè)計(jì)的話,那么同步碼使用規(guī)則都是自定義的,只要能解出來就可以了。 本課程中有關(guān)于同步碼使用的詳細(xì)介紹,可以詳細(xì)參考一下。


 【問題10.16】光纖我請教個(gè)問題,xilinx的光纖我見charisk用的01,然后16bit的數(shù)據(jù)為xxbc,然后charisk用的00,然后16bit的數(shù)據(jù)為發(fā)送數(shù)據(jù)。altera的呢?兩個(gè)對(duì)接怎么弄?
問題:不同平臺(tái)下,光纖的charisk怎么通信?
解答:光纖的charisk,只要模式和標(biāo)準(zhǔn)對(duì)上都可以通信的,無論是Xilinx跟Xilinx對(duì)接,還是Xilinx跟Altera對(duì)接都可以,跟平臺(tái)沒關(guān)系。 


 【問題10.17】光纖項(xiàng)目里的學(xué)員筆記,是用什么工具畫的阿
答:VISIO畫的


 【問題10.18】老師好,做了4路GTX光纖通信,丟包比較嚴(yán)重,這種正常嗎?發(fā)送10張圖片,就有一個(gè)64bit數(shù)據(jù)丟了,是不是跟發(fā)送comma的頻率有關(guān)系嘛? 沒有看到哪里講這個(gè)comma應(yīng)該每隔多少時(shí)間發(fā)送一次,我現(xiàn)在是空閑時(shí)256個(gè)時(shí)鐘發(fā)送一次,發(fā)送數(shù)據(jù)時(shí)是4000個(gè)周期發(fā)送一次。項(xiàng)目采用的是GTX  10G Aurora8/10B
答:這個(gè)也有可能是硬件有問題,你使用ibert測試,排除硬件問題


 【問題10.19】問:光纖項(xiàng)目中,GTX是使用的哪個(gè)IP核?
答:使用的是“7 Series FPGAs Transceviers”IP核。

 【問題10.20】問:整體流程用了k7多少資源?
答:沒有數(shù)據(jù)


 【問題10.21】問:光口傳輸?shù)氖莟cp ip協(xié)議數(shù)據(jù)包嗎?
答:使用的udp協(xié)議






十一、就業(yè)班項(xiàng)目-精密儀器項(xiàng)目(JESD204B)

 【問題11.1】JESD204B專題課有交流群嗎?
答:購買此課后,均加入MDY的專題課交流群。


 【問題11.2】交流群會(huì)解答哪方面的內(nèi)容?
答: 購買此課程的同學(xué),需要有一定的FPGA基礎(chǔ),如一定的設(shè)計(jì)能力、驗(yàn)證能力和調(diào)試能力。本課程的交流群,將不會(huì)詳細(xì)解答基礎(chǔ)問題,例如VERILOG語法;自己修改的代碼,如果出錯(cuò),請自行定位。對(duì)于協(xié)議、架構(gòu)等,如有問題,MDY都會(huì)詳細(xì)解答。


 【問題11.3】FPGA的JESD204B參考文檔是PG066嗎?
答:是的。


 【問題11.4】 AD9144的同步信號(hào)已經(jīng)拉高了,這說明已經(jīng)配置成功了?

答:要使用AD9144成功,可以依次檢查以下AD9144的幾個(gè)寄存器。

地址OX470:該寄存器用于表示LANE有沒有檢測到K28.5同步字。如果說FPGA管腳配置錯(cuò)誤、時(shí)鐘有問題、LANE速率有問題(例如雙方配置的LANE速率不同,一端為2G,另一端為2.5G;或者信號(hào)質(zhì)量不高,傳輸有誤碼等),則讀到的值將不正確。

地址OX471:檢查是否所有的LANE都已經(jīng)同步。如果地址0X470正確,本寄存器不正確,則可能是速率、時(shí)鐘有問題。

地址OX472:檢查checksum,即校驗(yàn)和是否正確。如果說FPGA和AD9144的參數(shù)不同,或者是傳遞有錯(cuò)誤,則此寄存器值不正確。

地址OX473: 檢查ILAS。如果說此正確,基本上都正確了。


 【問題11.5】頂層模塊jest204b_test中,下面的代碼是什么含義?

答: 本工程有一個(gè)功能,通過按下按鍵,可以改變信號(hào)的頻率。工程一共支持6種頻率,cnt1值為0~5,分別用來表示6種頻率。上面代碼中的cnt0控制頻率的,其是通過控制同一值重復(fù)的次數(shù)來達(dá)到控制頻率的目的,例如假設(shè)某信號(hào)值為01234為100M信號(hào)頻率,讓每個(gè)點(diǎn)重復(fù)一次,即0011223344,信號(hào)頻率就變?yōu)?0M。cnt0的值根據(jù)cnt1來改變,例如當(dāng)cnt1為0時(shí),cnt0的值為0~31,當(dāng)cnt1為1時(shí),cnt0的值為0~15,當(dāng)cnt2為2時(shí),cnt0的值為0~7。


 【問題11.6】如果要實(shí)現(xiàn)與工程中不同的分辨率和不同的采樣率(即輸出波形的頻率不同、分辨率不同),要怎么做?
答: 如果要改變波形的頻率,需要涉及到整個(gè)系統(tǒng)不同參數(shù)的調(diào)整,包括用于通信的lane的個(gè)數(shù)、時(shí)鐘頻率、IP核的寄存器配置和AD9144的寄存器配置等等。具體可以參考視頻中,具體應(yīng)該按下圖的步驟來分析:

     

上圖中,依次是確定需求,即您希望的信號(hào)頻率、采樣率DAC個(gè)數(shù)分別是多少,然后據(jù)此確定需要多少條LANE;進(jìn)而確定AD9144的配置;lane的,速率;sample時(shí)鐘等等。本課程有對(duì)應(yīng)的視頻講解,可以詳細(xì)理解。請理解視頻中介紹的思想,從而應(yīng)用到您自己的項(xiàng)目中。實(shí)用建議:建議您在我們提供的案例基礎(chǔ)上,每次改動(dòng)一點(diǎn)點(diǎn),看到正確效果后,再做下一下,最終完成最終的目標(biāo)。



  【問題11.7】案例中,插值為2的意義?為什么要插值?
答:插值,顧名思義,就是在兩個(gè)數(shù)據(jù)中間自動(dòng)插入數(shù)據(jù)。例如要產(chǎn)生一個(gè)波形012345,不插值的情況下,F(xiàn)PGA必須要發(fā)送數(shù)據(jù)012345這幾個(gè) 數(shù)據(jù)給AD9144;而在插值為2時(shí),F(xiàn)PGA只需要發(fā)送0246數(shù)據(jù),然后AD9144自動(dòng)補(bǔ)充135。本案例中,為什么要使用插值為2,是假設(shè)的一種需求情況。



  【問題11.8】在文檔《JESD204B協(xié)議》中,第52頁的下面兩個(gè)圖,為什么這兩者的CF不一致?CS又是什么?

答:CS是指一個(gè)SAMPLE中的控制位比特?cái)?shù),上面兩種情況,每個(gè)SAMPLE都加了2位的控制比特,即圖中的C1和C0。

注意,圖中的“Cr0:3[C1:C0]”,是指Cr0的[C1:C0]+Cr1的[C1:C0]+Cr2的[C1:C0]+Cr3的[C1:C0]。CF是指一個(gè)FRAME CLK中的控制字個(gè)數(shù),單位為字節(jié)。注意,這里的CF的限定條件是一個(gè)“FRAME CLK”。一個(gè)FRAME CLK,即上圖中的一列數(shù)據(jù)。

從第一個(gè)圖可以看出,第一列控制字是Cr0:3[C1:C0],共8比特,所以為CF=1。

從第二個(gè)圖可以看出,第一列控制字是Cr0:3[C1:C0]和Cr8:11[C1:C0],一列共有16比特,所以CF=2


  【問題11.9】在講解需求時(shí),下面的16是什么含義?


答:這里的16,是我們假設(shè)一個(gè)正弦波由16個(gè)采樣點(diǎn)組成,所以由信號(hào)頻率*16=采樣頻率。當(dāng)然,這里的16假設(shè)值,當(dāng)您的正弦波是由32或者64,或者更大數(shù)組成時(shí),當(dāng)然就不同。我們這里是先確定需求。


 【問題11.10】204b配置完了才正常工作還是不配置也能工作,配置完之后會(huì)改變工作方式?
答:都是需要配置完才能正常工作的。


 【問題11.11】是否應(yīng)該補(bǔ)充IP核的配置,為什么要那樣配?
答:
1. 關(guān)于各個(gè)參數(shù),如CS F M N等參數(shù),在講解確定需求的視頻中,已經(jīng)逐個(gè)分析出來。總的來說,是看AD9144文檔,看MODE后,根據(jù)MODE所推薦的參數(shù)來配置。
2. 得到上面參數(shù)后,請閱讀一下FPGA IP核的寄存器手冊,很簡單的,基本上是各個(gè)參數(shù)配上去就行了。
3. 配置代碼,可以看代碼解釋視頻,后面補(bǔ)充了。



 【問題11.12】204b配置文件里面有一個(gè)寄存器有疑惑,手冊里面寫的最小是1,但coe配置成0 。


答:寄存器中,“parameter range 1-256”,是指F這個(gè)參數(shù)的范圍是1-256。但后面有描述,此寄存值的值 = F-1,所以才填為0。這里描述有些歧義,但可以用這種方法排除:假設(shè)寄存器是1-256,那該寄存器是8位的,無法表示256,矛盾。



 【問題11.13】在AD9144的0X308~0X30B這幾個(gè)寄存器,是用來選擇serdin和lan的關(guān)系的,這是如何對(duì)應(yīng)的?
答:下面是這幾個(gè)寄存器的相關(guān)描述。

首先,明確概念,SERDIN0~7指的是AD9144芯片上定義的管腳,是物理的,可以去看管腳圖。LANE0~7,是指內(nèi)部表示的LANE編號(hào)。

估計(jì)是為了靈活性,LANE0~7不是與SDRDIN0~7不是一個(gè)一個(gè)對(duì)應(yīng)的,其對(duì)應(yīng)關(guān)系是可以配置的,上面幾個(gè)寄存器就是起這種作用。

例如,LANE0可以與SERDIN0對(duì)應(yīng),這個(gè)時(shí)候的0X308[2:0]=0,也可以和SERDIN4對(duì)應(yīng)起來,這個(gè)時(shí)候0X308[2:0]=4。

其次,理解了上面關(guān)系后。你可以根據(jù)實(shí)際情況來配置,例如,本案例中的AD9144子板,它的SERDIN0~3是沒有用的,只使用了SERDIN4~7,這是

固定死的。然后內(nèi)部的配置,您可以使用LANE4~7來對(duì)應(yīng)SERDIN4~7,也可以使用LANE0~3來對(duì)應(yīng)SERDIN4~7,這由您來決定,都是可以實(shí)現(xiàn)的。

最后,再強(qiáng)調(diào)一下工程思維:芯片提供了很多功能,您用也可以,不用也可以,您會(huì)怎么做?你就選擇最簡單的來做,甚至就是忽視它存在,也就是使用默認(rèn)值。


 【問題11.14】JESD204B課程里包括AD和DA嗎?還是只是其中一個(gè)?
答:本課程只包括AD部分,并且是以AD9144為例來說明。注意不同AD和DA芯片,其使用方法都是不同的。本課程只講述一般思路,需要學(xué)員舉一反三使用。


 【問題11.15】要得到16個(gè)點(diǎn),插2,所以實(shí)際傳8個(gè)點(diǎn);學(xué)習(xí)筆記里面生成的正弦波,由于插2了,實(shí)際是32個(gè)點(diǎn),這么理解對(duì)么?
答:在DA輸出端如果16個(gè)點(diǎn)組成一個(gè)正弦波,插值為2的情況下,F(xiàn)PGA只需要傳輸8個(gè)點(diǎn)/正弦波。如果FPGA傳輸16個(gè)點(diǎn)/正弦波,插值為2的情況下,DA輸出端實(shí)際是32個(gè)點(diǎn)/正弦波。


 【問題11.16】為什么v5版本是6.4Glane速率,而v7就是3.2Glane速率了,都是10~40M的正弦波啊?
答:LANE的速率,可以大于等于“需要的速率”,只要能保證傳輸即可。


 【問題11.17】專題課實(shí)現(xiàn)的最高采樣率是多少?
答:專題課里有多個(gè)工程案例,實(shí)現(xiàn)的最高采樣率是1Gbps。理論上,AD9144是可以實(shí)現(xiàn)2.8G的,但課程沒有提供。


 【問題11.18】JESD204B的licensing在哪里獲取?
答:請去官網(wǎng)獲取臨時(shí)licensing,鏈接如下:
https://www.xilinx.com/products/intellectual-property/ef-di-jesd204.html
選擇:Evaluate ip選項(xiàng),按提示操作即可。臨時(shí)licensing,獲取后,可以不聯(lián)網(wǎng),然后正常生成bit文件。正式的licensing,需要購買,如果需要請向官方購買,MDY不提供正式licensing。至于臨時(shí)和正式的區(qū)分,暫時(shí)未知,目前來說不影響學(xué)習(xí)用途。


 【問題11.19】用戶用破解的Vivado能不能使用 JESD204B的Ip?
答:可以使用。但注意,JESD204B的IP是臨時(shí)licensing,具體請看問題11.19。


 【問題11.20】案例中的AXI時(shí)鐘必須是100M嗎?
答:不一定,滿足范圍即可。在設(shè)置IP核時(shí),有提示范圍的。


 【問題11.21】有沒有k7芯片許可證或者下載地址?在官網(wǎng)沒找到
答:官網(wǎng)licence的中心網(wǎng)址:https://www.xilinx.com/support/licensing_solution_center.html。這個(gè)license是跟機(jī)器綁定,需要客戶自行到官網(wǎng)申請,MDY提供不了文件。


 【問題11.22】204B的每個(gè)時(shí)鐘發(fā)送的4個(gè)采樣點(diǎn),是輸出波形里緊挨著的4個(gè)點(diǎn)嗎?還有9144輸出波形周期是如何控制的?怎樣算發(fā)送完了一個(gè)完整波形的數(shù)據(jù)?
答:這個(gè)可以看txdata的視頻講解。


 【問題11.23】204B的教程目前只有發(fā)送的,沒有做接收的嗎?
答:我們課程是只有發(fā)送的,沒有接收的,不過接收方向的可以參考。


 【問題11.24】使用204B的IP,為什么需要用到204B_PHY,是為了鏈接網(wǎng)絡(luò)口嗎,那如果不連接網(wǎng)絡(luò)口,是否就不需要使用204B_PHY這個(gè)IP了,只用204b的IP一個(gè)就夠了?
答:PHY只是接口傳輸作用,如果沒有接口的話,那自然可以不用。目前沒看到有這種使用場景。


 【問題11.25】關(guān)于時(shí)鐘計(jì)算,那個(gè)R是如何得到的?


答:R值只要是整數(shù)都是可以的。所以這個(gè)時(shí)鐘也可以等于Multiframe時(shí)鐘,也是可以的。不用設(shè)置寄存器。


 【問題11.26】請問一下jesd課程的參考工程中:v7與與其他版本的不同是沒有拆除9144子板的cpu。
請問這里的拆除具體指的是什么?難道v3v4v5不能直接把9144fmc插到k7上就能用?要另外做什么硬件準(zhǔn)備嗎?


答:按照V7去做硬件即可。前面拆除是因?yàn)槲覀冏鲰?xiàng)目時(shí),就拿到一個(gè)拆除的硬件。


 【問題11.27】204b,通過lane傳輸?shù)臅r(shí)候,fpga不用單獨(dú)給DAC提供時(shí)鐘,而是通過CDR從lane數(shù)據(jù)線中恢復(fù)出時(shí)鐘,這樣理解對(duì)嗎?那還有output delay嗎?
答:是可以這樣理解,沒有output delay的。



 【問題11.28】項(xiàng)目里的SPI時(shí)序沒有詳細(xì)講解,看不懂。
答:本課程定位為非基礎(chǔ)課程,SPI時(shí)序?qū)儆诨A(chǔ)設(shè)計(jì)。如果想了解SPI時(shí)序理論,可以百度相關(guān)內(nèi)容,資料很豐富的。如果想了解MDY的SPI是如何實(shí)現(xiàn)的,可以參考如下資料:http://old.mdy-edu.com/jishushipin/2019/1212/596.html, SPI內(nèi)容在最后講述。

 
 【問題11.29】老師,204b的input delay是SYSREF嗎?這個(gè)是怎么處理的。
答:本項(xiàng)目不需要時(shí)序約束,您描述的問題點(diǎn)也不清晰。


 【問題11.30】204b是不是不能通過示波器抓取,那有什么方式知道lane的速率是2.5G?
答:配臺(tái)高級(jí)示波器,或者使用IBRT測試,具體的方法請百度。



 【問題11.31】如果我這里有兩個(gè)9144芯片,他們之間如何同步呢?
答:
1. 時(shí)鐘同步,采用同一個(gè)時(shí)鐘芯片,由這個(gè)時(shí)鐘芯片產(chǎn)生多路時(shí)鐘給這些AD9144,由于時(shí)鐘源是相同的,所以時(shí)鐘都是一樣的。這樣可以保證時(shí)鐘的同步。
2. 由于都是一個(gè)FPGA發(fā)數(shù)據(jù),按照J(rèn)ESD204B排列數(shù)據(jù)分配給各條LANE,這樣就可以了。


 【問題11.32】JESD課程是用Veriiog代碼實(shí)現(xiàn)還是用XILINX的IP核?
答:該課程使用了IP核來實(shí)現(xiàn)

【問題11.33】是否包含有高速AD/DA的項(xiàng)目?最高速率是多少?有多少路
答:激光工程項(xiàng)目中,包含有高速ADC AD9684,速率是500M,目前是支持一路的實(shí)現(xiàn)。精密儀器項(xiàng)目中,包含有高速的DAC AD9144,目前實(shí)現(xiàn)的最高速率是1G,支持2路輸出。


  【問題11.34】精密儀器項(xiàng)目中,AD9144的AD測量范圍,DA輸出的范圍,以及采樣率分別是多少?
答:AD9144是一款DAC芯片,所以沒有AD測量范圍。DA采樣率我們實(shí)現(xiàn)的是1G,實(shí)質(zhì)可達(dá)1.8G。DA輸出范圍以及更多信息,請參考以下數(shù)據(jù)手冊。

 AD9144-FMC-EBZ RevB Schematic.pdf (79.85 KB, 下載次數(shù): 0)  AD9144.pdf (2.79 MB, 下載次數(shù): 0)2020-11-4 10:55 上傳,點(diǎn)擊文件名下載附件


  【問題11.35】JESD204B課程中,是那種并口高速adc用的那種協(xié)議么?
答:不是高速并行口,而是高速串行口,即SERDES接口來實(shí)現(xiàn),單根線的速率可達(dá)到10G。


  【問題11.36】就業(yè)班企業(yè)項(xiàng)目里視頻拼接MIPI項(xiàng)目有用到IP核嗎?需要額外交IP核費(fèi)用嗎?
答:MIPI項(xiàng)目是用的lattice芯片,lattice的此IP是免費(fèi)的,學(xué)習(xí)此項(xiàng)目無需額外繳費(fèi)。


  【問題11.37】申請JESD的臨時(shí)License提示不符合出口規(guī)定,有沒有什么其它辦法?
答:換了個(gè)企業(yè)郵箱賬號(hào)就行了


  【問題11.38】一,首先我得讀9156寄存器,二,我的讀9154{我自己的dac}三,用 dpg..現(xiàn)在dpg軟件駛不了,麻煩解答一下
答:我們提供的例程,已集成在工程里面的,全部代碼是FPGA代碼。


  【問題11.39】請問9144用的是mose0,配置完后,CGS可以過,可以讀到寄存器470是FF,8個(gè)lane都收到了k28.5,但是寄存器023的bit1一直在01之間不停的跳動(dòng),代表FIFO的讀寫一直有錯(cuò)誤,查看30c和30d也能看到錯(cuò)誤標(biāo)記,此時(shí)發(fā)送sysref的話,ILAS也能過,但是470,471,472,473都在不停的跳動(dòng),sync標(biāo)記也是忽高忽低,此時(shí)鏈路不穩(wěn)定,給tx核送數(shù)據(jù),在頻譜儀上能看到9144的輸出,但是因?yàn)殒溌凡环€(wěn)定,輸出會(huì)不停的閃爍,理論上講,鏈路穩(wěn)定的話,470.471.472.473都應(yīng)該回讀FF才對(duì),我想請教一下,是什么導(dǎo)致了9144配置完后fifo的讀寫標(biāo)記一直報(bào)錯(cuò)呢?也就是寄存器023的bit 1

答:如果是自己做的硬件板,則有可能是硬件的穩(wěn)定性問題。請檢查硬件電路。


【問題11.40】請教一個(gè)問題,204b時(shí)序不行。12.5g,312.5M的核時(shí)鐘。一個(gè)dac時(shí)序違例不嚴(yán)重能工作,另一個(gè)不行,怎么處理
答:解決時(shí)序違例,其思路是減少組合電路邏輯。如果確實(shí)無法減小,那就只能降低時(shí)鐘頻率了。您使用的315.5M是工作時(shí)鐘的話,那確實(shí)是太高了,建議可以將工作時(shí)鐘降為156.25M


  【問題11.41】請問按鍵是有4位., 但代碼中只使用了0位和1位, 這按鍵有沒有順序要求, 先按哪個(gè)再按哪個(gè)? 然后這個(gè)這個(gè)按鍵信號(hào)作為使能信號(hào), 是只持續(xù)一個(gè)時(shí)鐘, 還是需要一直為高?
答:先按啟動(dòng)有效的按鍵,再按改變頻率的按鍵,具體請看使用說明。


  【問題11.42】請問在給JESD204C IP核配置的時(shí)候,讀取0x020 RESET寄存器的值,讀到的值是0x081,說明這個(gè)IP一直處于復(fù)位狀態(tài),無法從復(fù)位狀態(tài)退出,可能是什么問題呢?
答:檢查一下所有的時(shí)鐘和復(fù)位信號(hào),一般都是跟這些信號(hào)有關(guān)


 【問題11.43】請問FPGA中的204B IP核,其配置是在哪里定義?
答:JESD204B的IP核配置,其地址在addr.coe文件中定義;其寄存器值在data.coe文件中定義。


 【問題11.44】device clock是什么意思?
答:可以認(rèn)為是AD9516給FPGA的一個(gè)多幀時(shí)鐘,用于同步多幀的,可以認(rèn)為D個(gè)多幀就發(fā)一個(gè)上升沿,這樣就好同步了。具體有一個(gè)視頻,可以看JESD204B協(xié)議04_實(shí)踐_協(xié)議各個(gè)時(shí)鐘的關(guān)系。

 【問題11.45】:課程提供的上位機(jī)軟件是直接和dac連接用于檢測dac里寄存器的值嗎?還是dac通過傳數(shù)據(jù)到fpga通過fpga連接呢?
答:
做法1:上位機(jī)將寄存器配置值寫到FPGA,F(xiàn)PGA再寫到DAC里。
做法2:FPGA內(nèi)部有配置表,上電后自動(dòng)配置DAC的寄存器。 以上兩種方法都有。

 【問題11.46】:如果是通過fpga連接的,是走的uart還是ethernet呢?
答:走的是網(wǎng)口。  


 【問題11.47】:vc707可不可以兼容我們的程序?
答:只要有HPC接口的,均支持

 【問題11.48】:是不是地址8的ILA support設(shè)為1就代表在CGS之后開啟ILAS的功能?
答:該地址設(shè)為1,表示啟動(dòng)ILA功能,設(shè)為0表示不啟用。


【問題11.49】:地址20的ILA multiframe是選擇ILAS一共發(fā)送幾組8位數(shù)據(jù)?我們設(shè)為3就代表發(fā)送4組8位數(shù)據(jù)?
答:這里不是以8位數(shù)據(jù)為音位,而是multiframe為單位。所以設(shè)為3,表示發(fā)送4個(gè)多幀數(shù)據(jù)。


  【問題11.50】:地址2060和2072的ILA config data 3 和 6 功能似乎是Sets the values to be transmitted in the ILA sequence for all lanes. 這兩個(gè)寄存器是用于設(shè)置ILAS發(fā)送的數(shù)據(jù)嗎?
兩個(gè)寄存器都是0那發(fā)送的ILAS是全0,還是某個(gè)默認(rèn)值?我看到網(wǎng)上有說是k28.0到k28.4順序發(fā)送的,但我看我的一個(gè)TI的dac好像默認(rèn)是0x1C也就是K28.0
答:這里是設(shè)置需要的L、BID、LID和DID等參數(shù)。從字面上理解,發(fā)送方向就會(huì)把這些數(shù)據(jù)當(dāng)成ILA數(shù)據(jù)發(fā)給對(duì)端。按真實(shí)要求配置即可。設(shè)了什么值,就會(huì)打包成對(duì)應(yīng)數(shù)據(jù)發(fā)送給對(duì)端。至于如何打包,我這還沒有研究。


  【問題11.51】:multiframe包含幾個(gè)frame?
答:這個(gè)每個(gè)工程不同,是可以靈活設(shè)計(jì)的參數(shù),并且是與時(shí)鐘頻率、其他參數(shù)相關(guān)聯(lián)的。


  【問題11.52】:BID這些參數(shù)具體就要從DAC那邊找到對(duì)應(yīng)的然后兩邊匹配就可以了,是嗎?
答:BID DID 這些,兩邊匹配即可。


【問題11.53】麻煩問一下這個(gè)sin_data數(shù)據(jù)是怎么來的?自己造的數(shù)據(jù)嗎?

答:sin_data是正弦波的數(shù)據(jù),該正弦波數(shù)據(jù)用matlab產(chǎn)生,模塊這里是轉(zhuǎn)化成verilog語言后的。

【問題11.54】減得那個(gè)8'h80是什么意思呢?為什么要減那個(gè)8'h80呢?
 
答:如圖紅色波形所示,該正弦波數(shù)據(jù)用8bit位寬表示,0~8'hff是它的幅度值范圍,中間的幅度值為8'h7f。 而在工程需求里,接口要求輸出的正弦波數(shù)據(jù)為補(bǔ)碼形式,那么正弦波的補(bǔ)碼波形如圖藍(lán)色波形所示, 補(bǔ)碼表示的最高點(diǎn)數(shù)值為8'h7f,最低點(diǎn)數(shù)值8'h80。對(duì)于數(shù)值8'h80+1=8'h01,8'h80-1=8'h7f,那么將正弦波數(shù)據(jù)sin_data-8'h80得到的就是如圖藍(lán)色的波形數(shù)據(jù),也是一個(gè)補(bǔ)碼的數(shù)據(jù)。

 【問題11.55】問題:請問jesd204 phy能選擇具體某一個(gè)quad嗎?具體如何選? 
答:JESD204 PHY是可以選擇QUAD的,在IP核界面里可以選擇使用哪個(gè),具體可以教程里的視頻


  【問題11.56】JESD204B課程是ADC采樣,還是DAC采樣?(模數(shù)轉(zhuǎn)換是ADC,數(shù)模轉(zhuǎn)換是DAC)
答:是DAC采樣


【問題11.57】Jesd204B那個(gè)項(xiàng)目里的以太網(wǎng)通信是不是沒有調(diào)用MAC ip核,自己寫的
答:是的。該代碼沒有調(diào)用IP核,純RTL實(shí)現(xiàn),模塊名為gmii


【問題11.58】fmcAD9144模塊從jp2送入AD9516的時(shí)鐘信號(hào)需要多大幅值的?1.8V夠嗎?
答:一般JP2的時(shí)鐘幅值為1.5V。1.8V也是可以的


【問題11.59】問:我JESD204B ADC接受的數(shù)據(jù)全是0咋回事?
答:
1.確認(rèn)接收到了數(shù)據(jù)?
2.基于1后,再確認(rèn)是 0


【問題11.60】問:這個(gè)sysref信號(hào)必須由外部提供嗎?我們板子沒有這個(gè)信號(hào),能不能用device clk這個(gè)信號(hào)分頻得到?

答;這里的核心思想是:
1.時(shí)鐘要穩(wěn)定; 
2. 兩邊都是完全同頻同步的時(shí)鐘



【問題11.61】問:老師我想問一下jesd項(xiàng)目里的9516和9144的配置視頻里講的是通過ACE工具和上位機(jī)軟件配置的,那vivado程序中又有配置模塊,這是怎么回事?
答:前期工程是由上位機(jī)配置的,后面提供的工程 由內(nèi)部模塊配置的


溫馨提示:明德?lián)P2023推出了全新課程——邏輯設(shè)計(jì)基本功修煉課,降低學(xué)習(xí)FPGA門檻的同時(shí),增加了學(xué)習(xí)的趣味性,并組織了考試贏積分活動(dòng)

http://www.cqqtmy.cn/ffkc/415.html

(點(diǎn)擊→了解課程詳情?)感興趣請聯(lián)系易老師:13112063618(微信同步)


明德?lián)P除了培訓(xùn)學(xué)習(xí)還有項(xiàng)目承接業(yè)務(wù),擅長的項(xiàng)目主要包括的方向有以下幾個(gè)方面:

1. MIPI視頻拼接
     2. SLVS-EC轉(zhuǎn)MIPI接口(IMX472 IMX492)
     3. PCIE采集系統(tǒng)
     4. 圖像項(xiàng)目
     5. 高速多通道ADDA系統(tǒng)
     6. 基于FPGA板卡研發(fā)
     7. 多通道高靈敏電荷放大器
     8. 射頻前端




本文TAG:
上一篇:沒有了!
下一篇:高手修煉專題課【匯總貼】

Copyright ? 2012-2023 版權(quán)所有:深圳明德?lián)P科技教育有限公司

主站蜘蛛池模板: 91社区在线视频 | 亚洲国产欧美在线人成aaa | 久草在线观看首页 | 国语一级毛片私人影院 | 国产一区二区三区四区在线观看 | 日韩高清第一页 | 青青操青青操 | 久久国产首页 | 亚洲精品美女在线观看 | 嫩草视频在线观看免费 | 国产黄拍 | 国产日韩欧美亚洲青青草原 | 品爱网在线观看视频免费视频 | 欧洲在线观看在线视频吗 | 国产毛片久久久久久国产毛片 | 亚洲女人性视频 | 日韩欧美国产中文 | 一级特黄性生活大片免费观看 | 色综合国产 | 久久综合一区 | 成人在线免费视频观看 | 你懂的国产精品 | 亚洲综合亚洲国产尤物 | 午夜91视频| 欧美色视频免费高清播放 | 亚洲 欧美 中文 日韩专区 | 三级黄色在线免费观看 | wwwww.色| 亚洲在线视频免费 | 国产成+人+亚洲+欧美综合 | 国内精品视频在线播放一区 | 久久久全国免费视频 | 韩日精品在线 | 色婷婷六月桃花综合影院 | 青青草国产97免久久费观看 | 国产黄色片在线观看 | 黄色网免费 | 欧美变态一级毛片 | 亚洲精品香蕉一区二区在线观看 | 国产精品vs欧美精品 | 免费观看国产一区二区三区 |