新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > FPGA設計的高速FIFO電路技術

        FPGA設計的高速FIFO電路技術

        作者: 時間:2010-06-06 來源:網絡 收藏

          empty:全空標志;

          almost_full:高有效,如果為高電平,在寫一個數據將全滿;

          almost_empty:高有效,如果為高電平,在讀一個數據將全空;

          prog_full:可編程滿標志,根據需要,可以設定FIFO內部有多少數據,該標志信號有效;

          prog_empty:可編程空標志,根據需要,可以設定FIFO內部有多少數據,該標志信號有效;

          wr_data_count:說明FIFO內部已經寫了多少數據;

          rd_data_count:說明FIFO內部有多少數據可以讀。

          FIFO控制

          實際不考慮讀寫時鐘的頻率和相位的異同,讀寫時鐘域的基于同步電路的理念來進行設計,在設計過程中,滿足讀時鐘頻率不低于寫時鐘頻率即可。在圖4中給出了FIFO控制電路的流程圖,下面將對低速傳輸和傳輸進行詳細介紹。

          低速采集數據傳輸過程

          在圖5給出了低速采集時傳輸周期時序仿真時序圖,在低速采集時,寫時鐘頻率小于讀時鐘,每次觸發長度為FIFO長度的一半。采集結束即剩余數據傳輸的長度不到FIFO的一半。根據prog_full的設置,在prog_full有效,同時采集門控信號有效時啟動觸發請求,由于prog_full為寫時鐘域信號,必須要經過rd_clk同步,源代碼如下:

         process(rd_clk,acq_start_rst)
          begin
          if acq_start_rst=’1’then
           prog_full_dly=’0’;
          prog_full_dly1=’0’;
        elsif rd_clk’event and rd_clk=’1’
        then
        if acq_gate= ’1’ then
        prog_full_dly=prog_full;
        prog_full_dly1=prog_
        full_dly;
        else
        prog_full_dly=’0’;
          prog_full_dly1=’0’;
         end if;
        end if;
        end process;

          當FIFO半滿時觸發讀請求有效,acq_frame_l為低電平,啟動采集數據傳輸請求,地址和數據同時有效,sdram控制器給出應答信號acq_trdy_l,長度由FIFO讀寫控制電路決定,觸發一次的長度為32,即FIFO半滿的長度,傳輸完畢,給出傳輸結束標志信號acq_blast,一次傳輸周期結束。采集門控信號結束后,FIFO剩余數據長度不足32,這時候啟動門控結束傳遞進程,觸發結束標志由almost_empty決定,當alomost_empty有效時,停止觸發。

        采集數據傳輸過程

          在采集時,讀時鐘頻率等于寫時鐘頻率,當啟動觸發傳輸時,觸發傳輸長度為門控信號長度,直到將FIFO內部數據傳輸完畢,觸發結束標志由almost_empty決定,當alomost_empty有效時,停止觸發傳輸,觸發傳輸過程如圖6所示。

          結語

          采用高速異步FIFO作為數據采集緩存,應用范圍十分廣泛。特別是在高速數據采集系統中,在外接存儲器時,采集數據首先要經過緩存才能存入外部存儲器,采用自生成FIFO就能夠滿足要求。本方案充分利用FIFO的特點,通過控制電路優化設計,解決了讀寫時鐘的異同問題,提高了電路的工作效率。

        DIY機械鍵盤相關社區:機械鍵盤DIY



        上一頁 1 2 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 崇左市| 津市市| 车险| 金华市| 云林县| 伊金霍洛旗| 株洲市| 华宁县| 九龙坡区| 斗六市| 灵寿县| 康马县| 丹凤县| 大渡口区| 福鼎市| 岳普湖县| 鹤庆县| 集贤县| 塔城市| 曲阜市| 岳阳县| 基隆市| 连州市| 杂多县| 浮梁县| 射洪县| 广宗县| 滨海县| 永德县| 额敏县| 梅河口市| 南岸区| 凤山县| 海原县| 礼泉县| 镇巴县| 台山市| 巨野县| 五台县| 汉沽区| 和硕县|