1、FPGA中雙口RAM的基本概念
在FPGA的設計中,常用的數據緩存IP有FIFO和RAM,其中RAM又分為單口RAM,偽雙口RAM和雙口RAM。
單口RAM與雙口RAM的區別在於,單口RAM只有一組數據線與地址線,因此讀寫不能同時進行。而雙口RAM有兩組數據線與地址線,讀寫可以同時進行。
偽雙口RAM(Xilinx稱為Simple two-dual RAM),一個端口只讀,另一個端口只寫。
雙口RAM(Xilinx稱為True two-dual RAM),其兩個端口都支持讀寫。
2、雙口RAM的時序總結
- 寫數據時,雙口RAM的存儲時在寫時鍾的上升沿到來時完成的。因此要在寫時鍾的上升沿到來前,數據跟寫地址都已經是一個穩定的狀態,即要准備好數據線和地址信號,這樣才能保證數據的正確存儲。
- 讀數據時,雙口RAM的讀取是在讀時鍾的上升沿到來前完成的,因此要在都市中的上升沿到來時,讀地址已經處於穩定的狀態,這樣才能保證讀到的數是相應地之內的數據,數據在讀時鍾的上升沿到來后輸出。
- 對於雙端口RAM的數據輸出,對於一個地址上數據會在讀下一個地址的數據是才輸出到數據線上,相當於數據的真正輸出延時讀時鍾一個時鍾周期。
- 讀地址模塊的使能應延時的輸出使能一個時鍾周期,使得第一個地址0可以保持被時鍾上升沿采集到,否則,輸出時第一位輸出不穩定的數據。
3、雙口RAM的一些特點
如果同時訪問雙口RAM的統一存儲單元,必然會造成數據訪問失真。為防止沖突的發生,采用Busy邏輯控制,也稱硬件地址仲裁邏輯。此處只給出了地址總線選通信號線與片選脈沖信號的情況。而且,兩端的片選信號至少相差仲裁最小時間間隔,內部仲裁器邏輯控制才可給后訪問的一方輸出Busy閉鎖信號,將訪問權交給另一方直至結束對該地址單元的訪問,才撤銷Busy閉鎖信號。即使在極限情況,兩個CPU幾乎同時訪問同一單元----地址匹配時片選信號低調變之差少於仲裁最小時間間隔,Busy閉鎖信號也僅輸出給其中任一CPU,只允許一個CPU訪問該地址單元。仲裁器控制不會同時向兩個CPU發Busy閉鎖信號。
存儲單元數據塊的訪問權限分配至允許在某一時間段內由1個CPU對自定義的某一數據塊進行讀寫操作,這將有助於存儲數據的保護,更有效地避免地址沖突。信號量仲裁閉鎖就是一種硬件電路結合軟件實現訪問權限分配方法。
為了提高數據的交換能力,有些雙端口RAM采用,命令交換邏輯來通知對方。