欧美性猛交xxxx免费看_牛牛在线视频国产免费_天堂草原电视剧在线观看免费_国产粉嫩高清在线观看_国产欧美日本亚洲精品一5区

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

FIFO寫(xiě)數(shù)據(jù)失敗問(wèn)題分析

路科驗(yàn)證 ? 來(lái)源:西風(fēng)念 ? 2024-10-16 15:25 ? 次閱讀

以下文章來(lái)源于西風(fēng)念,作者zwliu

前幾天測(cè)試中心在對(duì)伺服電機(jī)控制板進(jìn)行測(cè)試中,發(fā)現(xiàn)多次隨機(jī)點(diǎn)擊控制屏上控制指令時(shí),會(huì)出現(xiàn)正常運(yùn)行的電機(jī)突然就停了。在當(dāng)前指令還沒(méi)有執(zhí)行完,并且確認(rèn)沒(méi)有下發(fā)急停指令的情況下,正常轉(zhuǎn)著的電機(jī)突然就停了。

突然停機(jī),,馬上要交付的機(jī)器突然暴露還有問(wèn)題,慌得一批。明明之前都經(jīng)過(guò)長(zhǎng)時(shí)間測(cè)試了的,不管了,趕緊查原因。

wKgaomcPanKAKS6oAADK8MLL-NI114.jpg

1、首先查復(fù)位信號(hào),對(duì)系統(tǒng)發(fā)起復(fù)位重啟指令,能恢復(fù),所以我一開(kāi)始還以為是不是系統(tǒng)誤發(fā)了復(fù)位指令,于是繼續(xù)測(cè)試,讓現(xiàn)象復(fù)現(xiàn),此時(shí)去查看復(fù)位信號(hào)寄存器,顯示復(fù)位信號(hào)是正常的;

2、該板子由于沒(méi)有引出jtag無(wú)法使用在線邏輯分析儀VLA看信號(hào),當(dāng)時(shí)為了方便排查設(shè)計(jì)問(wèn)題,將很多關(guān)鍵信號(hào)引入到了寄存器,通過(guò)寄存器一路排查,發(fā)現(xiàn)問(wèn)題出在fifo上。Fifo數(shù)據(jù)寫(xiě)不進(jìn),前方發(fā)來(lái)的控制指令無(wú)法被后方的執(zhí)行端正確接收,也就是說(shuō)控制指令傳達(dá)不下去,信號(hào)在這里中斷了。

下圖:fifo接收上位機(jī)過(guò)來(lái)的指令,指令數(shù)據(jù)緩存在同步fifo,下級(jí)模塊在fifo讀取相應(yīng)的指令做執(zhí)行。

wKgaomcPanKAKSOkAAC0FnJd4Yw363.jpg

2、因?yàn)樵O(shè)計(jì)中對(duì)寫(xiě)使能信號(hào),寫(xiě)數(shù)據(jù),以及fifo數(shù)據(jù)量都做了監(jiān)測(cè),寫(xiě)使能是單周期脈沖信號(hào),通過(guò)計(jì)數(shù)器對(duì)寫(xiě)次數(shù),以及寫(xiě)數(shù)據(jù)都進(jìn)行了累加,這些統(tǒng)計(jì)信號(hào)都放到了寄存器,于是直接把寄存器狀態(tài)值調(diào)出來(lái)看,發(fā)現(xiàn)寫(xiě)次數(shù)一直在累加,寫(xiě)數(shù)據(jù)也在變化,但是數(shù)據(jù)量卻一直保持為0,也就是這個(gè)FIFO在寫(xiě)時(shí)鐘正常,寫(xiě)數(shù)據(jù)正常的情況下,數(shù)據(jù)卻死活寫(xiě)不進(jìn),讀不出數(shù)據(jù),數(shù)據(jù)量保持為0不增加。

這種情況一開(kāi)始確實(shí)一點(diǎn)違背我的認(rèn)知邏輯了,我認(rèn)為在寫(xiě)信號(hào)正常的情況下,并且fifo數(shù)據(jù)量為0也就是fifo為空的情況下,寫(xiě)不進(jìn)數(shù)據(jù),這很難理解。

于是去網(wǎng)上搜索,看看有沒(méi)有人出現(xiàn)過(guò)類似的現(xiàn)象,一搜還真有好幾篇文章提到這個(gè)問(wèn)題,都說(shuō)在工程中遇到了FIFO寫(xiě)不進(jìn)的問(wèn)題,并且解決問(wèn)題的過(guò)程費(fèi)了很大的功夫,花了很長(zhǎng)時(shí)間才定位到問(wèn)題所在,比較典型的是明德?lián)P寫(xiě)的這篇:

截圖如下:

限于篇幅,只截了一部分,如果有遇到了類似的問(wèn)題可以搜索這篇文章看全篇,他們最后是查閱官方FIFO手冊(cè),提示fifo的復(fù)位信號(hào)必須是和寫(xiě)時(shí)鐘同步,也就是異步復(fù)位存在亞穩(wěn)態(tài),會(huì)導(dǎo)致低概率的錯(cuò)誤使FIFO無(wú)法工作,就是說(shuō)不能使用異步復(fù)位。

于是把異步復(fù)位同步化,問(wèn)題得到解決。

問(wèn)題是他們的測(cè)試過(guò)程都是反復(fù)開(kāi)機(jī),這種情況可能發(fā)生在上電的時(shí)候,一上電由于復(fù)位信號(hào)異常沒(méi)有正確復(fù)位,是有可能導(dǎo)致系統(tǒng)不能正常工作。

可是我這里的情景并不相同,不是上電之初,而是工作中突然死機(jī),感覺(jué)和復(fù)位信號(hào)關(guān)系不太大,但是我又沒(méi)有好的辦法,還是按同樣的方法對(duì)復(fù)位信號(hào)同步處理。測(cè)試結(jié)果還是會(huì)死機(jī),也就是說(shuō)確實(shí)和這個(gè)復(fù)位信號(hào)無(wú)關(guān)。

這下有點(diǎn)一籌莫展了。。。

思考良久,我在想是不是vivado的IP核還有哪里有需要注意又沒(méi)有注意到的方,但是黑盒子我又沒(méi)辦法查細(xì)節(jié)原因。于是索性不用官方提供的fifo,自己動(dòng)手寫(xiě)了個(gè)同步fifo,自己寫(xiě)的fifo當(dāng)然所有的細(xì)節(jié)原理自己是很清楚的,即使出現(xiàn)問(wèn)題,也是很容易查的。

結(jié)果是把自己寫(xiě)的同步fifo掛上去,電機(jī)還是照死不誤,只是這樣一來(lái),我就清楚了應(yīng)該不是fifo的用法問(wèn)題了,應(yīng)該是設(shè)計(jì)邏輯哪里還有隱藏的問(wèn)題;

fifo是做過(guò)基礎(chǔ)的仿真的,邏輯是沒(méi)有大問(wèn)題的。開(kāi)始把寫(xiě)的fifo拿出來(lái)仿照實(shí)際工作環(huán)境進(jìn)行更細(xì)致地仿真,我們的使用條件是,上位機(jī)每隔一段時(shí)間發(fā)一次數(shù)據(jù),比如10毫秒,FPGA把時(shí)間起點(diǎn)錯(cuò)開(kāi),然后在FIFO后端邏輯每隔10毫秒取一次數(shù)據(jù),并且這個(gè)間隔時(shí)間是相對(duì)很穩(wěn)定的。上位機(jī)和FPGA都做了嚴(yán)格的控制,確保5毫秒的精確度,上位機(jī)的5毫秒精度可能因?yàn)橄到y(tǒng)原因不能很準(zhǔn)確,允許左右偏移1-8ms都可以,但是不能出現(xiàn)累計(jì)誤差。

Fifo的讀機(jī)制是自動(dòng)根據(jù)數(shù)據(jù)量判斷非空,非空就立即啟動(dòng)讀動(dòng)作。

現(xiàn)在仿照實(shí)際環(huán)境進(jìn)行測(cè)試,固定間隔寫(xiě),等間隔固定讀,可以看到同時(shí)開(kāi)啟讀寫(xiě),數(shù)據(jù)量是保持0,1平衡的;

wKgZomcPanKAEdfCAABkDVtt2Wg308.jpg

本來(lái)想錯(cuò)開(kāi)一點(diǎn),提前寫(xiě)入兩個(gè)數(shù)據(jù),讓fifo數(shù)據(jù)量保持在2,3之間,結(jié)果手誤寫(xiě)使能沒(méi)有拉低,一直在寫(xiě)數(shù)據(jù),直接把fifo干滿了。這下看到的情景令所有問(wèn)題豁然開(kāi)朗。

wKgZomcPanKAIgUtAABVCF2NDhE147.jpg

1、fifo滿了以后的數(shù)據(jù)個(gè)數(shù)不是最大值,而是溢出清零后變成最小值0;

2、之前以為fifo數(shù)據(jù)量等于0就以為fifo是空的,這里卻恰恰相反,fifo數(shù)據(jù)量為0的時(shí)候可能是fifo剛滿溢出了導(dǎo)致清零。

3、寫(xiě)滿導(dǎo)致fifo一直寫(xiě)不進(jìn)數(shù)據(jù),數(shù)據(jù)量保持為0;

4、數(shù)據(jù)量為0,導(dǎo)致系統(tǒng)認(rèn)為fifo一直是空狀態(tài),無(wú)法自動(dòng)發(fā)起讀信號(hào);

5、這次上位機(jī)控時(shí)測(cè)試機(jī)制有點(diǎn)問(wèn)題,導(dǎo)致寫(xiě)快于讀,原以為不會(huì)出現(xiàn)寫(xiě)滿的情景,如果操作不當(dāng)還是會(huì)出現(xiàn)寫(xiě)滿,寫(xiě)滿就會(huì)卡死停機(jī)。

于是很快確定原因,當(dāng)前測(cè)試的上位機(jī)時(shí)間控制設(shè)置不夠嚴(yán)謹(jǐn),導(dǎo)致雙方同步時(shí)間產(chǎn)生累計(jì)誤差,這個(gè)誤差累計(jì)長(zhǎng)了就會(huì)把fifo填滿,而我們的設(shè)計(jì)本意是得有機(jī)制保證不會(huì)出現(xiàn)寫(xiě)滿才行。這個(gè)后面把fifo深度加大,長(zhǎng)時(shí)間測(cè)試后出現(xiàn)數(shù)據(jù)滯后的原因是一致的。

下面在vivado用官方的IP復(fù)現(xiàn)這一現(xiàn)象:

wKgaomcPanKAI0JeAACoUx-pFig617.jpg

wKgZomcPanKAZdDtAABUFhyZWDc584.jpg

fifo深度設(shè)置為16,連續(xù)寫(xiě),發(fā)現(xiàn)數(shù)據(jù)寫(xiě)入16個(gè)數(shù)后,full信號(hào)拉高,此時(shí)數(shù)據(jù)量并不是保持在f,而是會(huì)在此刻清零。最開(kāi)始以為的數(shù)據(jù)量是0,做出fifo是空的判斷是錯(cuò)誤的。

wKgZomcPanKAN4KfAAAylV_Gzsc535.jpg

Fifo的用法是芯片/FPGA設(shè)計(jì)的基礎(chǔ),早些年也寫(xiě)過(guò)一系列的測(cè)試筆記只為全方位理解fifo的工作邏輯和用法,包括:

1、standard fifo模式和first fall-through模式的區(qū)別

2、fifo復(fù)位的機(jī)制,復(fù)位時(shí)間復(fù)位時(shí)長(zhǎng)

3、讀寫(xiě)信號(hào)自動(dòng)關(guān)聯(lián)empty和full的關(guān)系

4、wr_rst_busy信號(hào)的使用邏輯

5、fifo用來(lái)打包傳輸控制信號(hào)和數(shù)據(jù)信號(hào)的方法

6、同步異步fifo數(shù)據(jù)量和Fifo模式以及讀寫(xiě)信號(hào)之間的對(duì)齊關(guān)系

等等...

這些機(jī)制對(duì)于正確設(shè)計(jì)fifo邏輯,對(duì)于系統(tǒng)穩(wěn)定性都很重要,今天也算是發(fā)現(xiàn)一個(gè)以過(guò)去的經(jīng)驗(yàn)可能會(huì)忽略導(dǎo)致出錯(cuò)的地方,覺(jué)得還有點(diǎn)意思,于是整理分享出來(lái)。

很多時(shí)候我們的知識(shí)的獲取來(lái)源于網(wǎng)絡(luò),來(lái)源于眾多網(wǎng)友的經(jīng)驗(yàn)總結(jié),時(shí)常懷著一顆感恩的心,也想著回饋于網(wǎng)絡(luò),于是也會(huì)分享一些小經(jīng)驗(yàn),若能使人有益,也覺(jué)得挺有意思。

另外也是自己的一種學(xué)習(xí)手段,凡是問(wèn)題,總是覺(jué)得凡是問(wèn)題,能清晰地表達(dá)和總結(jié)出來(lái)就是真的理解了。

保持輸出就是持續(xù)學(xué)習(xí)的動(dòng)力。

所以經(jīng)常和身邊的家長(zhǎng)或小朋友說(shuō)學(xué)習(xí)也是這樣的,只有用輸出倒逼輸入,二者構(gòu)成反饋閉環(huán),學(xué)習(xí)才是有效的,才會(huì)學(xué)以致用正向促進(jìn)。通過(guò)不斷地輸出和反思,我們可以不斷完善自己的知識(shí)結(jié)構(gòu)。

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • fifo
    +關(guān)注

    關(guān)注

    3

    文章

    389

    瀏覽量

    43875
  • 指令
    +關(guān)注

    關(guān)注

    1

    文章

    611

    瀏覽量

    35825
  • 伺服電機(jī)
    +關(guān)注

    關(guān)注

    85

    文章

    2059

    瀏覽量

    58223
  • 復(fù)位信號(hào)
    +關(guān)注

    關(guān)注

    0

    文章

    54

    瀏覽量

    6371

原文標(biāo)題:FIFO寫(xiě)數(shù)據(jù)失敗問(wèn)題分析

文章出處:【微信號(hào):Rocker-IC,微信公眾號(hào):路科驗(yàn)證】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    STM32燒寫(xiě)失敗錯(cuò)誤的處理方法

    STM32燒寫(xiě)失敗錯(cuò)誤:Contents mismatch at: 08000000H (Flash=FFH Required=00H)
    的頭像 發(fā)表于 06-21 08:55 ?1.4w次閱讀
    STM32燒<b class='flag-5'>寫(xiě)</b><b class='flag-5'>失敗</b>錯(cuò)誤的處理方法

    關(guān)于FIFO數(shù)據(jù)寫(xiě)不進(jìn)去的問(wèn)題

    最近在使用Altera 的FIFO 核做緩存用,FIFO采用異步雙時(shí)鐘,但是在寫(xiě)數(shù)據(jù)過(guò)程中發(fā)現(xiàn)數(shù)據(jù)寫(xiě)
    發(fā)表于 12-10 20:06

    【鋯石A4 FPGA試用體驗(yàn)】fifo實(shí)驗(yàn)(2)-異步fifo

    本帖最后由 630183258 于 2016-11-5 17:31 編輯 一、異步fifo的原理圖管腳定義:data輸入數(shù)據(jù)q輸出數(shù)據(jù)wrreq寫(xiě)使能信號(hào),高電平有效wrfull
    發(fā)表于 11-05 16:57

    異步FIFO的設(shè)計(jì)分析及詳細(xì)代碼

    本文首先對(duì)異步 FIFO 設(shè)計(jì)的重點(diǎn)難點(diǎn)進(jìn)行分析,最后給出詳細(xì)代碼。 一、FIFO簡(jiǎn)單講解 FIFO的本質(zhì)是RAM, 先進(jìn)先出 重要參數(shù):fifo
    發(fā)表于 11-15 12:52 ?8719次閱讀
    異步<b class='flag-5'>FIFO</b>的設(shè)計(jì)<b class='flag-5'>分析</b>及詳細(xì)代碼

    你們知道FIFO最小深度計(jì)算嗎

    FIFO 最小深度計(jì)算 例子 - 1:f_wr 》 f_rd,連續(xù)讀寫(xiě) 寫(xiě)時(shí)鐘80MHz。 讀時(shí)鐘50MHz。 Burst_Len = 120,也就是要求至少安全寫(xiě)入120個(gè)數(shù)據(jù)。 連續(xù)寫(xiě)入和連續(xù)
    的頭像 發(fā)表于 09-10 09:23 ?2098次閱讀
    你們知道<b class='flag-5'>FIFO</b>最小深度計(jì)算嗎

    DEBUG-在存在中斷的情況下SPI寫(xiě)數(shù)據(jù)失敗

    ,但是這時(shí)脈沖計(jì)數(shù)就會(huì)不準(zhǔn)確。分析如果是軟件SPI,時(shí)序是軟件控制的時(shí)序,會(huì)存在被打斷的風(fēng)險(xiǎn),導(dǎo)致寫(xiě)入失敗。而硬件SPI,基本隨便使用,隨便被打斷。因?yàn)橛脩魧?xiě)入的bit之間是不會(huì)被打斷的,只是不同字節(jié)(半字或者字)之間的數(shù)據(jù)有被
    發(fā)表于 12-09 15:51 ?0次下載
    DEBUG-在存在中斷的情況下SPI<b class='flag-5'>寫(xiě)</b><b class='flag-5'>數(shù)據(jù)</b><b class='flag-5'>失敗</b>

    XILINX FIFO寫(xiě)不進(jìn)去的問(wèn)題分析及解決方法

    明德?lián)P(MDY)在某個(gè)XILINX項(xiàng)目中,偶然性出現(xiàn)開(kāi)機(jī)后通信出錯(cuò)的情形,具體表現(xiàn)為反復(fù)開(kāi)機(jī)測(cè)試400次后,約有1~2次通信異常,數(shù)據(jù)發(fā)不出去。經(jīng)過(guò)定位,是某個(gè)FIFO出現(xiàn)異常,時(shí)鐘正常、復(fù)位無(wú)效、寫(xiě)使能有效的情況,空信號(hào)emp
    發(fā)表于 03-01 10:39 ?6042次閱讀
    XILINX <b class='flag-5'>FIFO</b><b class='flag-5'>寫(xiě)</b>不進(jìn)去的問(wèn)題<b class='flag-5'>分析</b>及解決方法

    FIFO的使用介紹

    FIFO的使用非常廣泛,一般用于不同時(shí)鐘域之間的數(shù)據(jù)傳輸,或者用于不同數(shù)據(jù)寬度之間的數(shù)據(jù)匹配。在實(shí)際的工程應(yīng)用,可以根據(jù)需要自己寫(xiě)
    的頭像 發(fā)表于 08-14 10:49 ?5367次閱讀

    同步FIFO之Verilog實(shí)現(xiàn)

    FIFO的分類根均FIFO工作的時(shí)鐘域,可以將FIFO分為同步FIFO和異步FIFO。同步FIFO
    的頭像 發(fā)表于 11-01 09:57 ?2070次閱讀

    異步FIFO之Verilog代碼實(shí)現(xiàn)案例

    同步FIFO的意思是說(shuō)FIFO的讀寫(xiě)時(shí)鐘是同一個(gè)時(shí)鐘,不同于異步FIFO,異步FIFO的讀寫(xiě)時(shí)鐘是完全異步的。同步FIFO的對(duì)外接口包括時(shí)鐘
    發(fā)表于 11-01 09:58 ?1739次閱讀

    APM32F103CBT6_Flash_某一幀數(shù)據(jù)寫(xiě)失敗

    APM32F103CBT6_Flash_某一幀數(shù)據(jù)寫(xiě)失敗
    發(fā)表于 11-09 21:04 ?1次下載
    APM32F103CBT6_Flash_某一幀<b class='flag-5'>數(shù)據(jù)</b><b class='flag-5'>寫(xiě)</b><b class='flag-5'>失敗</b>

    FIFO設(shè)計(jì)—異步FIFO

    異步FIFO主要由五部分組成:寫(xiě)控制端、讀控制端、FIFO Memory和兩個(gè)時(shí)鐘同步端
    發(fā)表于 05-26 16:17 ?1592次閱讀
    <b class='flag-5'>FIFO</b>設(shè)計(jì)—異步<b class='flag-5'>FIFO</b>

    XILINX FPGA IP之FIFO Generator例化仿真

    位寬是寫(xiě)數(shù)據(jù)位寬兩倍的FIFO,然后使用讀時(shí)鐘頻率:寫(xiě)時(shí)鐘頻率=2:3,進(jìn)行簡(jiǎn)單的FIFO跨時(shí)鐘域操作。
    的頭像 發(fā)表于 09-07 18:31 ?2068次閱讀
    XILINX FPGA IP之<b class='flag-5'>FIFO</b> Generator例化仿真

    采用格雷碼異步FIFO跟標(biāo)準(zhǔn)FIFO有什么區(qū)別

    異步FIFO包含"讀"和"寫(xiě)“兩個(gè)部分,寫(xiě)操作和讀操作在不同的時(shí)鐘域中執(zhí)行,這意味著Write_Clk和Read_Clk的頻率和相位可以完全獨(dú)立。異步FIFO
    的頭像 發(fā)表于 09-14 11:21 ?1367次閱讀
    采用格雷碼異步<b class='flag-5'>FIFO</b>跟標(biāo)準(zhǔn)<b class='flag-5'>FIFO</b>有什么區(qū)別

    為什么異步fifo中讀地址同步在寫(xiě)時(shí)鐘域時(shí)序分析不通過(guò)?

    為什么異步fifo中讀地址同步在寫(xiě)時(shí)鐘域時(shí)序分析不通過(guò)? 異步FIFO中讀地址同步在寫(xiě)時(shí)鐘域時(shí)序分析
    的頭像 發(fā)表于 10-18 15:23 ?815次閱讀