新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 用一個時鐘在FPGA中計算直方圖

        用一個時鐘在FPGA中計算直方圖

        作者: 時間:2011-09-21 來源:網絡 收藏

        直方圖對數字數據的分析通常是一種有用的工具。不過,要從一個直方圖獲得可靠的結果,必須獲得大量數據,通常是要10萬到100萬個點。如果需要分析一個ADC的數字輸出,可以采用一片(圖1)。

          圖中顯示了直方圖、RAM和脈沖發生器部分,用于捕捉和顯示基于14 位數據計算出來的直方圖。RAM塊是的內置RAM,而直方圖塊是用于計算的VHDL(高級設計語言)代碼。  來自ADC的14 位并行數據Device_ Data[13..0]進入直方圖塊,并進入RAM的Rd_Addr輸入端。RAM在其地址位置RAMDataOut[ 15..0]上提供數據。這個數據環回到直方圖塊,將其加1后送至一個16 位數據的輸出端DataOut[15..0]。當WREN(寫使能)端為邏輯電平1時,數據被寫在管腳Wr_Addr[13..0]處的地址。這種方法與數據來自Device_Data[13..0]是相同的。

          RAM從輸入到輸出有一個固定的延遲。即,當輸入為Rd_Addr時,經過一個固定延遲后,數據出現在其輸出端RAMDataOut。這個延遲隨不同而改變。要注意這個延遲,使得有兩個時鐘的延遲到Device_Data,然后再計算直方圖。RAM中的延遲應小于兩個時鐘周期;否則,就可能有數據丟失。這個約束限制了Device_Clk的最大頻率。

          Cntr_Value給出了用于計算直方圖的輸入數據數量。Pulse_Gen塊產生一個脈沖,進入輸入端Rst_Cntr,用于復位計數器。此時,直方圖部分再次用Cntr_Value的下組輸入數據計算直方圖。Cntr_Value為15 位,但可以增加它,獲得更多的直方圖數據。

          Sel_Data與Rst_RAM信號是重置在FPGA RAM中存儲的數據。當Rst_RAM腳出現高信號時,直方圖塊的DataOut腳的所有位均為0。當直方圖塊的Sel_Data輸入腳為高信號時,RAM_Wr_Addr的輸出不是Device_Data,而是一個從0上升至16384的內部生成的斜波。直方圖塊不做計算,因為這樣做會重置RAM的地址。

          

        用一個時鐘在FPGA中計算直方圖

          圖1,直方圖計算電路從一個FPGA的RAM塊中獲取數據。

          當FPGA完成了直方圖計算時,RAM就可以選擇Sel_ Data為邏輯高,而將保持Rst_ RAM為邏輯低,從而讀取直方圖數據。RAM地址中的數據順序地退出輸出腳,并且可以將數據傳輸給一臺PC。由于所有塊都以一個單時鐘Device_Clk工作,因此本設計很簡單,有助于滿足時序的約束。可以方便地修改本設計,從而獲得16 位或12 位數據直方圖。



        關鍵詞: FPGA

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 璧山县| 绥中县| 彰化市| 蛟河市| 嵩明县| 香格里拉县| 桐梓县| 金山区| 北碚区| 永善县| 丰顺县| 云林县| 安丘市| 襄汾县| 遂昌县| 丰原市| 兴化市| 十堰市| 牡丹江市| 通榆县| 石首市| 名山县| 乐清市| 孟连| 永德县| 黑龙江省| 防城港市| 微博| 平南县| 融水| 鄂托克前旗| 盐津县| 扎赉特旗| 岳池县| 鄯善县| 鹰潭市| 安乡县| 南川市| 项城市| 驻马店市| 广昌县|