勇敢的芯伴你玩轉Altera FPGA連載89:FPGA片內異步FIFO實(shí)例

發(fā)布時(shí)間:2018-8-28 09:44    發(fā)布者:rousong1989
勇敢的芯伴你玩轉Altera FPGA連載89FPGA片內異步FIFO實(shí)例
特權同學(xué),版權所有
配套例程和更多資料下載鏈接:
http://pan.baidu.com/s/1i5LMUUD
功能概述
         該工程實(shí)例內部系統功能框圖如圖9.72所示。我們通過(guò)IP核例化一個(gè)異步FIFO,定時(shí)寫(xiě)入數據,然后再讀出所有數據。通過(guò)QuartusII集成的在線(xiàn)邏輯分析儀SignalTap II,我們可以觀(guān)察FPGA片內異步FIFO的讀寫(xiě)時(shí)序。
圖9.72 異步FIFO實(shí)例功能框圖
         本實(shí)例的異步FIFO與上一個(gè)實(shí)例的同步FIFO有別,這個(gè)異步FIFO不僅讀寫(xiě)的位寬不同,讀寫(xiě)的時(shí)鐘也不同。異步FIFO對于跨時(shí)鐘域的應用非常有幫助,比同步FIFO實(shí)用得多了。
         本實(shí)例工程模塊層次如圖9.73所示。
圖9.73 異步FIFO模塊層次
功能仿真
Quartus II中,點(diǎn)擊菜單“Tools à Run Simulation Tool à RTL Simulation”進(jìn)行仿真。接著(zhù),Modelsim中我們可以查看讀FIFO的波形。
         如圖9.82所示,這是一組的FIFO讀寫(xiě)測試波形,左邊f(xié)ifo_wren拉高時(shí)執行FIFO寫(xiě)入操作,右邊f(xié)ifo_rden拉高時(shí)執行FIFO讀操作。
圖9.82 FIFO讀寫(xiě)時(shí)序波形
         如圖9.83所示,這是FIFO寫(xiě)入操作波形的放大,由PLL輸出c0時(shí)鐘12.5MHz同步,fifo_wren拉高時(shí),每個(gè)時(shí)鐘周期依次寫(xiě)入數據0xba,0xbb,0xbc,0xbd,0xbe,0xbf……。由于fifo_empty信號是read-side時(shí)鐘同步的(為PLL輸出c2時(shí)鐘50MHz,c0的4倍),因此fifo_empty在FIFO第一個(gè)數據寫(xiě)入后第4個(gè)時(shí)鐘周期拉低,表示FIFO已經(jīng)不空了。
圖9.83 FIFO 寫(xiě)時(shí)序波形
         如圖9.84所示,這是FIFO讀操作波形的放大,PLL輸出c2時(shí)鐘為50MHz同步,在fifo_rden信號拉高后,其后的一個(gè)時(shí)鐘周期(此時(shí)fifo_rdrdy信號拉高了)就出現了第一個(gè)數據0xbbba,隨后是0xbdbc,0xbfbe……。寫(xiě)入數據為8bit,讀出數據為16bit,且寫(xiě)入數據的高字節處于讀出數據的低8bit。這和我們寫(xiě)入FIFO的數據是一致的。由于在我們執行讀操作前,FIFO的32個(gè)數據出于滿(mǎn)狀態(tài),因此fifo_full信號高電平,在第一個(gè)FIFO數據讀出后,fifo_full指示信號立刻拉低,表示FIFO已經(jīng)不是出于滿(mǎn)狀態(tài)了。
圖9.84 FIFO讀時(shí)序波形
         FIFO操作的規則大體可以歸納如下:
●  寫(xiě)使能信號fifo_wren拉高時(shí),當前的寫(xiě)入數據fifo_wrdb有效,即fifo_wrdb被存儲到FIFO中,如測試波形中依次寫(xiě)入的數據ba、bb、bc、bd……。
●  讀使能信號fifo_rden拉高時(shí),第2個(gè)時(shí)鐘周期讀出數據出現在fifo_rddb有效,如測試波形中依次寫(xiě)入的數據babb、bcbd……。
●  讀寫(xiě)數據分別和讀寫(xiě)時(shí)鐘同步。
●  寫(xiě)入數據是8bit位寬,讀出數據是16bit位寬,則讀出的數據是高8bit代表第一個(gè)寫(xiě)入的8bit數據,低8bit代表第二個(gè)寫(xiě)入的8bit數據。
在線(xiàn)調試
         連接好下載線(xiàn),給CY4開(kāi)發(fā)板供電。
點(diǎn)擊菜單“Tools à SignalTap II Logic Analyzer”,進(jìn)入邏輯分析儀主頁(yè)面。
在右側的“JTAG ChinaConfiguration”窗口中,建立好USB Blaster的連接后,點(diǎn)擊“SOF Manager”后面的Programmer按鈕進(jìn)行下載。
         如圖9.85所示,在“trigger”下面羅列了我們已經(jīng)添加好的需要觀(guān)察的信號,尤其是在fifo_empty信號的TriggerConditions一列,我們設置了值下降沿,表示fifo_empty下降沿(FIFO不為空)時(shí)我們將觸發(fā)采集。另外,我們用鼠標點(diǎn)擊選中Instance下面的唯一一個(gè)選項,然后單擊InstanceManager后面的運行按鈕,執行一次觸發(fā)采集。
圖9.85 波形采樣觸發(fā)設置
         波形如圖9.86所示。兩組密密麻麻的數據,前面一組fifo_wren拉高了,表示這是一組寫(xiě)入FIFO的數據;而后面一組fifo_rden為高電平,表示從FIFO讀出數據。
圖9.86 FIFO讀寫(xiě)時(shí)序波形
         將寫(xiě)入的頭幾個(gè)數據放大,如圖9.87所示。連續寫(xiě)入了數據BAh、BBh、BCh、BDh……。
圖9.87 FIFO寫(xiě)時(shí)序波形
         頭幾個(gè)讀數據的時(shí)序放大,如圖9.88所示。FIFO在讀時(shí)能信號fifo_wren拉高后,通常數據默認是在其后的一個(gè)時(shí)鐘周期出現,即它所對應的數據是滯后1個(gè)時(shí)鐘周期出現,這里我們使用了信號fifo_rdrdy拉高對應FIFO讀出數據有效;此外,這里的FIFO讀寫(xiě)位寬不同,寫(xiě)入時(shí)8bit,而讀出是16bit(首字節在LSB),因此首先的讀出的數據依次為BBBAh、BDBCh……。
圖9.88 FIFO讀時(shí)序波形

本文地址:http://selenalain.com/thread-546451-1-1.html     【打印本頁(yè)】

本站部分文章為轉載或網(wǎng)友發(fā)布,目的在于傳遞和分享信息,并不代表本網(wǎng)贊同其觀(guān)點(diǎn)和對其真實(shí)性負責;文章版權歸原作者及原出處所有,如涉及作品內容、版權和其它問(wèn)題,我們將根據著(zhù)作權人的要求,第一時(shí)間更正或刪除。
您需要登錄后才可以發(fā)表評論 登錄 | 立即注冊

關(guān)于我們  -  服務(wù)條款  -  使用指南  -  站點(diǎn)地圖  -  友情鏈接  -  聯(lián)系我們
電子工程網(wǎng) © 版權所有   京ICP備16069177號 | 京公網(wǎng)安備11010502021702
快速回復 返回頂部 返回列表
午夜高清国产拍精品福利|亚洲色精品88色婷婷七月丁香|91久久精品无码一区|99久久国语露脸精品|动漫卡通亚洲综合专区48页