大連東軟信息學院電子工程系 高錦陽 謝 浩 楊云棋
基于FPGA的高速峰值檢測模塊設計
大連東軟信息學院電子工程系 高錦陽 謝 浩 楊云棋
本文是根據2016年集創北方企業杯賽題要求所設計的高速峰值檢測模塊,可以在 640個16位寬的有符號數里,快速找到最高的5個峰值的位置,并將5個峰值點的行坐標及列坐標作為模塊的輸出。
高速 FPGA ;定位; 比較 ;排序
高速峰值檢測技術(PDK, Peak Detector)一直都是數字采集卡與數字存儲示波器中的關鍵技術之一。在日常生產實踐中,對最大峰值的檢測與定位也一直是眾多領域的需求之一。峰值檢測用來實現對尖峰干擾脈沖信號的捕捉或高占空比信號的檢測,以及類似發生在采樣周期內極大的沖擊信號的檢測。
峰值檢測的分模擬與數字兩種實現方法,模擬峰值檢測電路就是一個特殊的硬件電路,用電容電壓的方法來存儲信號的峰值,采集速度很慢。相比來說圍繞ADC構成的數字式峰值檢測器就可以按照一個更高采樣速度對信號進行采樣,通過檢測模塊測量出極大、極小值存入RAM等待排序與篩選,就此可以實現高頻信號的檢測。
2.1 設計要求:在640個16位寬的有符號數里,快速找到最高的5個峰值的位置,并將5個峰值點的行坐標及列坐標作為模塊的輸出。640個數據是按照32行20列的方式存儲于單口RAM里。峰值是指該數據的絕對值大于自己周圍的8個數據的絕對值。
2.2 設計指標:時鐘頻率:不能低于30Mhz;時長:需要的時間越短越好。
2.3 實現方式:硬件選用Xilinx公司的V5系列FPGA,軟件使用ISE(www.xilinx.com)
現場可編程邏輯器件(Field Programmable Gate Array, 簡稱FPGA)是目前被廣泛采用的用于高速及復雜數字電路設計的大規模可編程邏輯器件,是一種純硬件電路,門級延時僅僅是納秒單位,可工作在高達200MHz頻率。而其內部邏輯設計可采用類似高級語言的硬件描述語言,給硬件設計提供了極大的靈活性。
圖3.1 模塊圖
3.1 模塊說明
3.1.1 添加行列信息模塊:Ram本身為線性儲存結構,并且本身不含有行列信息,本模塊用來取ram中的數,并且為每個提取出來的數據添加行列信息。
3.1.2 緩存模塊:從前一個模塊輸出的串行數據本身依舊是線性的,本模塊將線性的數據儲存為矩陣的形式,該模塊本身也充當緩存的作用,提高數據讀取效率,每一個數據都會比較多次,這樣可以避免數據重復讀取。
3.1.3 比較模塊:從前一個模塊輸出的并行數據參與比較,判斷當前數據的絕對值是否大于周圍8個數據的絕對值,如果為真,則輸出數據,否則輸出為0。
3.1.4 排序模塊:從前一個模塊輸出的數據進行排序,只保留最大的5個數據。
3.1.5 儲存模塊:儲存640個數據的線性儲存器。
3.1.6 7段數碼管顯示模塊:顯示系統找到最大的五個數據以及對應數據的行列信息。
3.1.7 二進制數轉BCD碼模塊:用于7段數碼管的顯示譯碼。
3.1.8 頂層模塊:例化其他子模塊,并且增加按鍵消抖功能(本項目有開始鍵)。
3.2 運行原理分析
3.2.1 Ram中的數據本身不含有行列信息,利用計數器讀取儲存器中的數據,同時同步運行行列計數器,在讀取數據時,需將數據本身和計數器的值(行列值)合并存入緩存模塊,這樣就得到了含有行列信息的數據。
3.2.2 緩存模塊由4個寄存器組組成,每個寄存器組儲存21個數據,最后一列0用于數據隔離(因為比較模塊利用3x3九宮格形式,周圍的數據地址是以正中間的數據的地址為基準的偏移地址,例如掃描模塊當中間掃描到19、39、59這樣的行末尾時,右邊的數據本應該為空,但是偏移地址會跳到當前行的下一行,這樣就會出錯),數據從第一行依次存入緩存模塊,當前兩行存滿時,比較模塊開始從第一列0地址逐行掃描比較。四行都儲存滿時,重新從第一行存入,覆蓋原來的數據。
圖3.2 緩存模塊
3.2.3 比較模塊為3x3九宮格形式,周圍的數據地址是以正中間的地址為基準的偏移地址,同時從緩存模塊取數,利用中間的值和周圍8個數據的值進行比較,當緩存模塊兩行數據儲存滿時,比較模塊開始運行,流程演示如下:
圖3.3 比較模塊
3.2.4 由比較模塊挑選出中間值大于周圍8個值得數據,這些數據隨即進入排序模塊進行排序,使用的原理為流程圖如下:
圖3.3 流程圖
該模塊將5個排序的數合并為一個高位的數,從左往右依次從大到小排列,一個數據進入首先判斷位置“5”是否為空,是的話將數據存入位置“5”,否則判斷是否大于位置“5”,是的話除位置“5”以外的部分整體右移后再將數據存入位置“5”否則以此類推判斷位置“4”直至最后。
3.2.5 找到最大的5個數據時,數據通過二進制轉BCD碼模塊轉換為BCD碼,采用左移加3的算法實現轉換,步驟:(1)左移要轉換的二進制數1位。(2)左移之后,BCD碼分別在個十百千萬位。(3)如果移位后所在的BCD碼大于等于5,則對該值加3。(4)繼續左移直到全部位移完成。轉碼之后再通過數碼管顯示模塊顯示出來,先顯示行列信息,然后顯示數據本身
3.2.6 按鍵消抖當按鍵按下后,會出現電平抖動,當低電平維持10ms確認按鍵被觸發,使用計數器實現
原理圖:
圖3.4 原理圖
設計仿真圖如下:
圖4.1 仿真圖一
放大后的圖如下:輸出的數據本身還含有行列信息,此結果專門用于測試,將數據位、行列信息單獨抽取出來顯示。
圖4.2 仿真圖二
5.1 內部資源5.2 時序報告
圖5.1 內部資源
圖5.2 時序模塊
首先考慮如何實現系統功能,然后進行模塊劃分以及模塊內部算法實現,接著進行模塊內部設計并且考慮每個模塊需要哪些IO以及前后模塊IO的時序銜接,完畢后每個模塊單獨仿真調試,之后進行整體仿真調試,最后下載到開發板進行測試對比是否和仿真結果相同。
本項目下載到開發板采用默認50MH時鐘,運行正常,所以不需要使用在線邏輯分析儀再進行測試。該項目本身在功能實現上并沒有用到特別難的算法,難點在與如何在耗費一定資源盡可能的提升系統速度,我們仔細研究每個模塊的時序,盡可能不浪費每一個時鐘周期,提升系統運算效率。
[1]閻石.數字電子技術基礎. 高等教育出版社,2014.
[2]夏宇聞.Verilog數字系統設計教程[M].北京航空航天大學出版社,2008.
[3]易先軍,葉春生.基于FPGA的高速數字峰值保持器設計[M].華中科技大學 塑性成形模擬與模具技術國家重點實驗室.湖北 武漢.
高錦陽(1993-),男,內蒙古呼和浩特人,大學本科,現就讀于大連東軟信息學院電子工程系集成電路設計與集成系統專業。
謝浩(1994-),男,山西陽泉人,大學本科,現就讀于大連東軟信息學院電子工程系集成電路設計與集成系統專業。
楊云棋 (1996-) ,男,遼寧法庫人, 大學本科,現就讀于大連東軟信息學院電子工程系集成電路設計與集成系統專業。