<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 用一個時鐘在FPGA中計算直方圖

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

          作者: 時間:2011-09-21 來源:網(wǎng)絡(luò) 收藏

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

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

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

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

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

            

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

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

            當(dāng)FPGA完成了直方圖計算時,RAM就可以選擇Sel_ Data為邏輯高,而將保持Rst_ RAM為邏輯低,從而讀取直方圖數(shù)據(jù)。RAM地址中的數(shù)據(jù)順序地退出輸出腳,并且可以將數(shù)據(jù)傳輸給一臺PC。由于所有塊都以一個單時鐘Device_Clk工作,因此本設(shè)計很簡單,有助于滿足時序的約束??梢苑奖愕匦薷谋驹O(shè)計,從而獲得16 位或12 位數(shù)據(jù)直方圖。



          關(guān)鍵詞: FPGA

          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();