新聞中心

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

        基于FPGA的高速FIFO電路設計

        ——
        作者:栗永強 中國電子科技集團公司第41研究所 時間:2010-04-19 來源:電子產品世界 收藏

          下面對讀寫域定義信號給予說明:

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

          rst:復位信號,高有效,異步復位,每次啟動采集都要首先對進行復位;

          wr_clk:寫;

          wr_en:與寫同步;

          din:輸入數據總線;

          rd_clk:讀時鐘;

          dout:輸出數據總線;

          full:全滿標志;

          empty:全空標志;

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

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

          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有效時,停止觸發。

        dc相關文章:dc是什么


        fpga相關文章:fpga是什么




        關鍵詞: FIFO FPGA 時鐘 201004

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 东源县| 监利县| 云霄县| 益阳市| 梧州市| 定州市| 绥中县| 柞水县| 徐水县| 盱眙县| 临武县| 昌宁县| 都昌县| 迁西县| 家居| 商河县| 上犹县| 汝阳县| 厦门市| 建宁县| 光山县| 法库县| 庐江县| 赞皇县| 沙湾县| 韩城市| 孝感市| 鄂托克旗| 龙里县| 临清市| 牟定县| 周宁县| 定兴县| 京山县| 丰台区| 延津县| 金川县| 靖边县| 诸城市| 天全县| 正蓝旗|