數據采集中毛刺的處理方法
2012年11月13日 15:56 來源:本站整理 作者:灰色天空 我要評論(0)
在采集一組并行接口信號時,發現接收到的數據非常不穩定。用示波器測量幾個用于同步的控制信號,發現時不時的有毛刺產生。因為這些數據最終都是要顯示在液晶屏上的,當示波器同時測量兩個同步信號時,液晶屏的顯示錯位現象得到明顯好轉。示波器探頭測量信號時相當于并聯上一個pF級的電容,也能夠一定程度上起到濾波的效果,因此可以斷定同步信號的毛刺影響了數據的采集。其中一個同步信號如圖1,兩個有效高脈沖之間有很多毛刺,放大毛刺后如圖2所示,大約維持10ns的高電平。
圖1
圖2
如何濾除這些毛刺呢?辦法有兩個,其一就是用純粹硬件的辦法,在信號進入FPGA之前進行濾波處理,串個電阻并個電容都可以,特權同學并了一個20pF電容后就能夠把這些毛刺徹底濾干凈,如圖3所示。
圖3
而還有一種“軟”硬件濾波的方法。就如特權同學收錄進<深入淺出玩轉FPGA>一書中的博文<基于FPGA的跨時鐘域信號處理——亞穩態>所談到的,降低數據采集頻率以及多次采集后邏輯處理都是一種思路。那這里特權同學給出一種多次采集處理的濾波方法和大家分享。
input ain; //輸入信號
reg[3:0] ainr; //輸入信號緩存
//輸入信號打4拍
always @(posedge clk or negedge rst_n)
if(!rst_n) ainr <= 4‘d0;
else ainr <= {ainr[2:0],ain};
//輸入信號上升沿檢測,高電平有效
wire pos_ain = ~ainr[3] & ~ainr[2] & ainr[1] & ainr[0];
//通常只要兩個信號就行,即wire pos_ain = ~ainr[2] & ainr[1] ;。
//這里用了4個信號就是多次采樣濾波的效果
//輸入信號下降沿檢測,高電平有效
wire neg_ain = ainr[3] & ainr[2] & ~ainr[1] & ~ainr[0];
//通常只要兩個信號就行,即wire neg_ain = ainr[2] & ~ainr[1] ;。
//這里用了4個信號就是多次采樣濾波的效果
//若該輸入信號主要關注其高脈沖,那么可以做以下濾波
wire high_ain = ainr[1] & ainr[0];
//兩個信號相與通常可以濾除1個clk的毛刺,相應的,3個信號相與可以濾除2個clk的毛刺
//若該輸入信號主要關注其低脈沖,那么可以做以下濾波
wire low_ain = ainr[1] | ainr[0];
上周熱點文章排行榜
上周資料下載排行榜
創新實用技術專題
大家談:華為能否撬開美國市場?
熱評
- LM3S9B96開發板手冊及原理圖
- NI推出Single-Board RIO嵌入式介面
- STM32F103ZET6紅牛電路圖
- 高通發布全新設計DragonBoard板
- 3.15投訴:揭開天翼3G手機的“欺騙”
- 小米手機2工程機月底將上市
- 新款 Apple TV 將在3月8日出貨
- protel99se正式漢化版免費下載
- matlab 7.0軟件下載(免費破解版)
- hi3515海思原版原理圖
博文
- 新學習單片機,決心轉型技術宅
- 白巖松:青春該怎么過?不計后果的過
- 破解大學寢室的智能限電
- 關于學電子的女生那點事
- 當你累了,準備放棄時,看看這個吧!!!
- 十個學嵌入式的禁忌
- 電子信息專業到底該做些什么
- 大學那點事兒第二波:文科女生PK理科女生
- 菜鳥STM32初次制版
- iPhone5數據線芯片IC
用戶評論
查看全部 條評論
查看全部 條評論>>