色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

FPGA處理編碼信號進行毛刺濾波的方法實現

FPGA設計論壇 ? 來源:CSDN ? 2024-02-21 14:46 ? 次閱讀

一、前言

在利用處理編碼信號時,一般在較為理想的環境下可以很方便進行計算,判斷等。但是由于有時候受到電磁干擾等環境因素,會導致編碼信號產生毛刺等,這時候如果不對編碼信號進行預處理而是直接進行邊緣判斷等操作則極容易導致錯誤,所以需要提前對編碼信號進行濾波。

二、濾波算法

ab68d698-d084-11ee-a297-92fbcf53809c.png

其算法思想也容易理解:如果有電平跳變,則立即進行計數,如果計數值超過設定閾值,則電平跳轉有效,否則依然保持原電平不變。另外如果在計數時又發生電平跳轉,則重新進行計數。濾波算法跳轉圖如下:

ab7a4fc2-d084-11ee-a297-92fbcf53809c.png

ab8b9f52-d084-11ee-a297-92fbcf53809c.png

三、代碼設計

首先我們需要確定編碼信號的毛刺信號大概時間寬度為多少,這樣我們才能設置閾值進行濾波。以Altera芯片設計為例,可以利用SigalTapII嵌入式邏輯觀測毛刺的時間寬度。

ab9fea5c-d084-11ee-a297-92fbcf53809c.png

這樣設計代碼如下即可實現濾波效果:

module encoder_filter (

input clk,

input A, //原始編碼信號A

output reg A_f, //濾波后的編碼信號A_f

output led, //觀測程序是否燒錄成功

output samp_clk_20us //SigalTapII中采樣時鐘

);

pll_ippll_ip_inst ( //調用PLL_IP

.inclk0 ( clk ),

.c0 ( samp_clk_20us )

);

parameter [11:0] Cnt_20us=12'd1000; //20us/20ns=1000; //毛刺的脈寬不會大于20us

parameter [1:0] S0 = 2'b00, S1 = 2'b01, S2 = 2'b10, S3 = 2'b11;

reg [1:0] state; //當前狀態

reg [2:0] A_delay; //延遲打拍

reg [11:0] count; //電平跳轉計數

reg last_level; //A的上一個電平狀態

reg A_sig_pos;

reg A_sig_neg;

reg [7:0] reset_counter=8'd0;

always@(posedge clk) //軟件不發復位信號,FPGA自己產生,邏輯加載起來后馬上自己復位一次。

begin

if (reset_counter != 8'h59 )

reset_counter <= reset_counter + 8'h1;??

end

reg n_rst;

always@(posedge clk) //軟件不發復位信號,FPGA自己產生,邏輯加載起來后馬上自己復位一次。

begin

if((reset_counter > 8'd1)&&(reset_counter < 8'd6))

n_rst <= 1'b0;? ? ?

else

n_rst <= 1'b1;

end

assign led=1'b0;

always @(posedge clk or negedge n_rst ) //將外部a信號進行時鐘同步

begin

if(n_rst==1'b0)

A_delay <=2'b00;

else

A_delay <={A_delay[1:0],A};

end

wire A_risingedge=(A_delay[2:1]==2'b01);

wire A_fallingedge=(A_delay[2:1]==2'b10);

always @(posedge clk or negedge n_rst )

begin

if(n_rst==1'b0)

begin

state<= S0;

count<=12'b0;

last_level<=1'b0;

A_sig_neg<=1'b0;

A_sig_pos<=1'b0;

end

else

case(state)

S0://空閑狀態,判斷電平是否變化

begin

if(A_risingedge||A_fallingedge)

begin

state<= S1;

count<=12'b0;

last_level<=A_delay[2];

end

end

S1://計數狀態

begin

if(A_delay[2]==A_delay[1])

if(count==Cnt_20us)//判斷計數是否達到20us

begin

count<=12'b0;

state<= S2;

end

else

count<=count+1'b1;

else

count<=12'b0;

end

S2://判決狀態

begin

state<= S3;

if(!last_level&&A_delay[1])//確定是由低電平---->高電平

begin

A_sig_pos<=1'b1;

A_sig_neg<=1'b0;

end

else if(last_level&&!A_delay[1])//確定是由高電平---->低電平

begin

A_sig_neg<=1'b1;

A_sig_pos<=1'b0;

end

else

begin

A_sig_neg<=1'b0;

A_sig_pos<=1'b0;

end

end

S3:

begin

state<= S0;

count<=12'b0;

end

default:

begin

state<= S0;

count<=12'b0;

end

endcase

end

always @(posedge clk or negedge n_rst )

begin

if(n_rst==1'b0)

A_f<=1'b0;

else if(A_sig_pos==1'b1)

A_f<=1'b1;

else if(A_sig_neg==1'b1)

A_f<=1'b0;

else

A_f<=A_f;

end

endmodule

值得注意的是:

1、需要根據實際毛刺Cnt_20us的時間寬度改變閾值

2、在程序使用了軟復位,由于未設置按鍵這種異步復位,就實際程序隨板子上電后在主時鐘下進行軟件同步復位。





審核編輯:劉清

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • FPGA
    +關注

    關注

    1629

    文章

    21729

    瀏覽量

    603013
  • 嵌入式
    +關注

    關注

    5082

    文章

    19105

    瀏覽量

    304829
  • 電磁干擾
    +關注

    關注

    36

    文章

    2312

    瀏覽量

    105393
  • 異步復位
    +關注

    關注

    0

    文章

    47

    瀏覽量

    13312

原文標題:FPGA處理編碼信號進行毛刺濾波

文章出處:【微信號:gh_9d70b445f494,微信公眾號:FPGA設計論壇】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    FPGA設計中毛刺信號的產生及消除

    摘要:主要討論了FPGA設計中毛刺信號產生的原因,分析總結了處理毛刺信號的幾種
    發表于 04-21 16:47

    fpga毛刺的產生及處理討論

    ,然后判斷在信號同時變化的時候,是否會產生冒險,這可以通過邏輯函數的卡諾圖或邏輯函數表達式來進行判斷。對此問題感興趣的讀者可以參考有關脈沖與數字電路方面的書籍和文章。 . 如何處理毛刺
    發表于 02-10 09:50

    fpga實現濾波

    本帖最后由 eehome 于 2013-1-5 10:03 編輯 fpga實現濾波器在利用FPGA實現數字
    發表于 08-11 18:27

    fpga實現濾波

    fpga實現濾波fpga實現濾波器在利用FPGA
    發表于 08-12 11:50

    FPGA數字信號處理實現原理及方法

    FPGA數字信號處理實現原理及方法
    發表于 08-15 19:00

    FPGA數字信號處理實現原理及方法

    FPGA數字信號處理實現原理及方法
    發表于 08-19 13:37

    毛刺濾波方法

    ,放大毛刺后如圖2所示,大約維持10ns的高電平。圖1圖2如何濾除這些毛刺呢?辦法有兩個,其一就是用純粹硬件的辦法,在信號進入FPGA之前進行
    發表于 06-04 05:00

    如何利用FPGA實現級聯信號處理器?

    傅里葉變換、脈沖壓縮、線性預測編碼語音處理、高速定點矩陣乘法等,有較好的應用前景和發展空間。那有誰知道該如何利用FPGA實現級聯信號
    發表于 07-30 07:22

    FPGA | 競爭冒險和毛刺問題

    布爾式中有相反的信號則可能產生 競爭和冒險現象); 2、卡諾圖:有兩個相切的卡諾圈并且相切處沒有被其他卡諾圈包圍,就有可能出現競爭冒險; 3、實驗法:示波器觀測; 解決方法: 1、加濾波電路,消除
    發表于 11-02 17:22

    FPGA設計中毛刺信號解析

    本文從FPGA的原理結構的角度探討了產生毛刺的原因及產生的條件,在此基礎上,總結了多種不同的消除方法,在最后結合具體的應用對解決方案進行深入的分析。
    發表于 08-03 11:48 ?2229次閱讀
    <b class='flag-5'>FPGA</b>設計中<b class='flag-5'>毛刺</b><b class='flag-5'>信號</b>解析

    數字信號處理FPGA實現

    本書比較全面地闡述了fpga在數字信號處理中的應用問題。本書共分8章,主要內容包括典型fpga器件的介紹、vhdl硬件描述語言、fpga設計
    發表于 12-23 11:07 ?45次下載

    基于FPGA毛刺問題及解決方法

    毛刺現象在FPGA設計中非常普遍, 而毛刺的出現往往導致系統結果的錯誤。本文從FPGA的原理結構的角度深入探討了毛刺產生的原因及產生的條件,
    發表于 11-22 14:24 ?9691次閱讀

    在 FlexIO上進行毛刺濾波方法

    -EVK,軟件基于 SDK2.13.0。 FlexIO 需要毛刺濾波的原因 以使用 FlexIO 模擬 UART 為例,其在理論上可以支持很高的波特率,但在每個 bit 只會進行一次采樣。 單次采樣
    的頭像 發表于 10-19 11:25 ?1010次閱讀

    信號進行濾波處理方法

    濾波處理信號處理中的一個重要環節,它可以幫助我們從噪聲中提取有用的信號,提高信號的質量和可靠性
    的頭像 發表于 08-25 14:47 ?656次閱讀

    PWM信號濾波處理方法

    PWM(脈沖寬度調制)信號濾波處理是電子設計中常見的任務,旨在將PWM信號轉換為更平滑的直流信號或去除不需要的噪聲和波動。以下是對PWM
    的頭像 發表于 11-18 17:41 ?1336次閱讀
    主站蜘蛛池模板: 亚欧日韩毛片在线看免费网站| cctv官网| 青娱乐极品视觉盛宴国产视频| 国产成人久视频免费| 一个人的视频在线观看免费观看| 欧美麻豆一精品一AV一免费| 好大好爽CAO死我了BL| 99人精品福利在线观看| 我的奶头被客人吸的又肿又红| 蜜桃传媒星空传媒在线播放| 狠狠色噜噜狠狠狠狠米奇777| 穿着丝袜被男生强行啪啪| 最新亚洲人成网站在线影院| 亚洲精品人成电影网| 三级全黄a| 青青操久久| 蜜桃成熟时2电影免费观看d| 久久国产精品免费网站| 国产精品免费久久久久影院| 成人a视频在线观看| 最近中文字幕2019国语4| 亚洲第一免费播放区| 首页 国产 亚洲 中文字幕| 欧美另类jizzhd| 蜜桃视频一区二区| 久久re视频这里精品09首页| 国产一区二区三区国产精品| 国产黄A片在线观看永久免费麻豆 国产互换后人妻的疯狂VIDEO | 成人免费视频在线播放| 2021国产精品视频一区| 伊人色综合久久天天| 亚洲欧美中文在线一区| 亚洲AV蜜桃永久无码精品无码网| 天美传媒果冻传媒入口视频| 日本最新免费区中文| 日本久久久免费高清| 日韩成人在线视频| 日韩免费一区| 桃色窝| 无套内射纹身女视频| 在线观看成年人免费视频|