新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 多路同步串口的FPGA傳輸實現

        多路同步串口的FPGA傳輸實現

        作者:詹必勝 吳斌方 楊光友 湖北工業大學 時間:2010-03-02 來源:電子產品世界 收藏

          當接收模塊有請求時,發送模塊即將接收模塊采集到的數據寫入發送模塊的緩存FIFO中,將其稱之為S_FIFO。每輪從R_FIFO中傳輸的8個數據均依次存入S_FIFO中。

        本文引用地址:http://www.104case.com/article/106466.htm

          因為的8個同步串口均同時工作,可以認為當有一個輸入模塊的數據接收完畢時, 8個端口的數據均應該接收完畢,保險起見,可以延時若干時鐘周期后開始接收數據。從端口0至端口7為一輪,若此時有端口沒有數據,即可認為此端口暫無數據輸出,用數據0替代,發送模塊繼續接收下一個端口的數據。用狀態機來實現此功能,如圖4所示。

          發送模塊完成向ARM的數據傳輸,當發送模塊S_FIFO中的數據達到一定數量時,即向ARM發出發送數據請求,ARM即開始對FPGA進行數據的讀取。

          FPGA中的S_FIFO同樣也是異步FIFO。寫時鐘由鎖相環提供100MHz;讀時鐘由ARM的讀取使能信號OE取反得到,讀使能由ARM的片選信號NGCS取反得到。ARM讀取數據會產生NGCS與OE低電平信號,無操作時置高。每次讀取數據時NGCS與OE先后置低,取反接至S_FIFO讀端口分別為NGCS_N與OE_N。對S_FIFO讀取時,每當讀時鐘OE_N為上升沿,讀使能NGCS_N必為1,完成一次讀取操作。

          這樣實現了ARM與FPGA之間的跨時鐘域數據傳輸。FPGA發送數據采取乒乓操作, ARM可以源源不斷的將S_FIFO中的數據讀取出來。FPGA和ARM的數據傳輸原理圖如圖5所示。

          為驗證各控制信號的時序邏輯,做如下仿真:FPGA接收及緩存數據。仿真的時序如圖6所示。data_temp0~data_temp7 為接收模塊的移位寄存器,在frame的下降沿時將數據寫入各自的R_FIFO中;R_FIFO中的數據依次通過寄存器data_m寫入S_FIFO中。8次寫入后,一輪緩存即結束,等待下次請求。



        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 安阳市| 鸡东县| 西和县| 申扎县| 鄂温| 商南县| 五大连池市| 吴川市| 改则县| 都昌县| 株洲市| 滁州市| 宝山区| 东丽区| 大埔区| 廊坊市| 通渭县| 延安市| 沂南县| 福鼎市| 金秀| 炎陵县| 金山区| 噶尔县| 陈巴尔虎旗| 抚宁县| 利川市| 新沂市| 银川市| 大丰市| 光山县| 水城县| 广宗县| 南通市| 来安县| 湖口县| 胶州市| 许昌县| 长乐市| 克山县| 淮安市|