基于簡(jiǎn)單的FIFO提供數據寬度轉換
許多設計需要FIFO彈性緩沖器,在不同時(shí)鐘速率的次系統和通道的需求中形成橋梁。然而,在某些應用中,需要FIFO緩沖器實(shí)現數據轉換。一個(gè)例子是,通過(guò)FIFO緩沖器,將8位ADC連接到16位數據總線(xiàn)的微處理器(圖1)。不幸地,大部分普遍使用的FIFO緩沖器不適于這個(gè)應用。本設計方案描述了為不同寬度讀寫(xiě)數據端口的數據寬度轉換,怎樣基于FPGA的FIFO實(shí)現共有時(shí)鐘(同步)??梢允褂肵ilinx的Spartan II系列FPGA實(shí)現這種FIFO。這個(gè)方法使用了片上DLL(延遲鎖相環(huán))宏、分布式存儲器和簡(jiǎn)單的計數器邏輯(圖2)。
本文引用地址:http://dyxdggzs.com/article/186034.htm

FIFO輸入數據的寬度為8位;然而,輸出數據的寬度為16位。在讀寫(xiě)動(dòng)作中只使用一個(gè)共有時(shí)鐘。關(guān)鍵是為了使用時(shí)鐘DLL,它不只是最小化時(shí)鐘脈沖相位差,還提供雙倍輸出的時(shí)鐘頻率。所以,可以實(shí)現輸入數據的雙重數據率,write_data_in。通過(guò)監測DLL輸出時(shí)鐘的樣本,DLL可以補償走線(xiàn)網(wǎng)絡(luò )的延遲,有效地消除外部輸入端口到設備中單獨時(shí)鐘負載的延遲。替代使用的阻塞存儲器,本設計在FIFO中使用分布式存儲器保存數據。實(shí)際上,選擇阻塞存儲器還是分布式存儲器,依靠系統中FIFO的重要性。如果不是很關(guān)鍵,可以考慮使用分布式存儲器。
存儲器可以放在FPGA的任何位置。如果堅持使用阻塞存儲器,可以簡(jiǎn)單的改變VHDL代碼??芍皇褂靡恍㏑AM宏來(lái)替代分布式存儲器。點(diǎn)擊下載FIFO 的VHDL代碼。FIFO一般使用Gray代碼計數器或線(xiàn)性反饋移位寄存器作為讀或寫(xiě)計數器。為實(shí)現邏輯大小的最小化,本設計只使用兩個(gè)從0到7的整數和帶進(jìn)位的計數器。當讀和寫(xiě)計數器相等,且進(jìn)位為0時(shí),FIFO為空。當寫(xiě)計數器加1等于讀計數器,且進(jìn)位為1時(shí),FIFO為滿(mǎn)。
更多資訊請關(guān)注:21ic模擬頻道
存儲器相關(guān)文章:存儲器原理
塵埃粒子計數器相關(guān)文章:塵埃粒子計數器原理 鎖相環(huán)相關(guān)文章:鎖相環(huán)原理
評論