精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

FPGA處理編碼信號(hào)進(jìn)行毛刺濾波的方法實(shí)現(xiàn)

FPGA設(shè)計(jì)論壇 ? 來(lái)源:CSDN ? 2024-02-21 14:46 ? 次閱讀

一、前言

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

二、濾波算法

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

其算法思想也容易理解:如果有電平跳變,則立即進(jìn)行計(jì)數(shù),如果計(jì)數(shù)值超過(guò)設(shè)定閾值,則電平跳轉(zhuǎn)有效,否則依然保持原電平不變。另外如果在計(jì)數(shù)時(shí)又發(fā)生電平跳轉(zhuǎn),則重新進(jìn)行計(jì)數(shù)。濾波算法跳轉(zhuǎn)圖如下:

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

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

三、代碼設(shè)計(jì)

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

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

這樣設(shè)計(jì)代碼如下即可實(shí)現(xiàn)濾波效果:

module encoder_filter (

input clk,

input A, //原始編碼信號(hào)A

output reg A_f, //濾波后的編碼信號(hào)A_f

output led, //觀測(cè)程序是否燒錄成功

output samp_clk_20us //SigalTapII中采樣時(shí)鐘

);

pll_ippll_ip_inst ( //調(diào)用PLL_IP

.inclk0 ( clk ),

.c0 ( samp_clk_20us )

);

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

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

reg [1:0] state; //當(dāng)前狀態(tài)

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

reg [11:0] count; //電平跳轉(zhuǎn)計(jì)數(shù)

reg last_level; //A的上一個(gè)電平狀態(tài)

reg A_sig_pos;

reg A_sig_neg;

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

always@(posedge clk) //軟件不發(fā)復(fù)位信號(hào),FPGA自己產(chǎn)生,邏輯加載起來(lái)后馬上自己復(fù)位一次。

begin

if (reset_counter != 8'h59 )

reset_counter <= reset_counter + 8'h1;??

end

reg n_rst;

always@(posedge clk) //軟件不發(fā)復(fù)位信號(hào),F(xiàn)PGA自己產(chǎn)生,邏輯加載起來(lái)后馬上自己復(fù)位一次。

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信號(hào)進(jìn)行時(shí)鐘同步

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://空閑狀態(tài),判斷電平是否變化

begin

if(A_risingedge||A_fallingedge)

begin

state<= S1;

count<=12'b0;

last_level<=A_delay[2];

end

end

S1://計(jì)數(shù)狀態(tài)

begin

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

if(count==Cnt_20us)//判斷計(jì)數(shù)是否達(dá)到20us

begin

count<=12'b0;

state<= S2;

end

else

count<=count+1'b1;

else

count<=12'b0;

end

S2://判決狀態(tài)

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、需要根據(jù)實(shí)際毛刺Cnt_20us的時(shí)間寬度改變閾值

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





審核編輯:劉清

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • FPGA
    +關(guān)注

    關(guān)注

    1626

    文章

    21667

    瀏覽量

    601838
  • 嵌入式
    +關(guān)注

    關(guān)注

    5068

    文章

    19018

    瀏覽量

    303265
  • 電磁干擾
    +關(guān)注

    關(guān)注

    36

    文章

    2287

    瀏覽量

    105312
  • 異步復(fù)位
    +關(guān)注

    關(guān)注

    0

    文章

    47

    瀏覽量

    13300

原文標(biāo)題:FPGA處理編碼信號(hào)進(jìn)行毛刺濾波

文章出處:【微信號(hào):gh_9d70b445f494,微信公眾號(hào):FPGA設(shè)計(jì)論壇】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    FPGA設(shè)計(jì)中毛刺信號(hào)的產(chǎn)生及消除

    摘要:主要討論了FPGA設(shè)計(jì)中毛刺信號(hào)產(chǎn)生的原因,分析總結(jié)了處理毛刺信號(hào)的幾種
    發(fā)表于 04-21 16:47

    fpga毛刺的產(chǎn)生及處理討論

    ,然后判斷在信號(hào)同時(shí)變化的時(shí)候,是否會(huì)產(chǎn)生冒險(xiǎn),這可以通過(guò)邏輯函數(shù)的卡諾圖或邏輯函數(shù)表達(dá)式來(lái)進(jìn)行判斷。對(duì)此問(wèn)題感興趣的讀者可以參考有關(guān)脈沖與數(shù)字電路方面的書籍和文章。 . 如何處理毛刺
    發(fā)表于 02-10 09:50

    fpga實(shí)現(xiàn)濾波

    本帖最后由 eehome 于 2013-1-5 10:03 編輯 fpga實(shí)現(xiàn)濾波器在利用FPGA實(shí)現(xiàn)數(shù)字
    發(fā)表于 08-11 18:27

    fpga實(shí)現(xiàn)濾波

    fpga實(shí)現(xiàn)濾波fpga實(shí)現(xiàn)濾波器在利用FPGA
    發(fā)表于 08-12 11:50

    FPGA數(shù)字信號(hào)處理實(shí)現(xiàn)原理及方法

    FPGA數(shù)字信號(hào)處理實(shí)現(xiàn)原理及方法
    發(fā)表于 08-15 19:00

    FPGA數(shù)字信號(hào)處理實(shí)現(xiàn)原理及方法

    FPGA數(shù)字信號(hào)處理實(shí)現(xiàn)原理及方法
    發(fā)表于 08-19 13:37

    毛刺濾波方法

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

    如何利用FPGA實(shí)現(xiàn)級(jí)聯(lián)信號(hào)處理器?

    傅里葉變換、脈沖壓縮、線性預(yù)測(cè)編碼語(yǔ)音處理、高速定點(diǎn)矩陣乘法等,有較好的應(yīng)用前景和發(fā)展空間。那有誰(shuí)知道該如何利用FPGA實(shí)現(xiàn)級(jí)聯(lián)信號(hào)
    發(fā)表于 07-30 07:22

    FPGA | 競(jìng)爭(zhēng)冒險(xiǎn)和毛刺問(wèn)題

    布爾式中有相反的信號(hào)則可能產(chǎn)生 競(jìng)爭(zhēng)和冒險(xiǎn)現(xiàn)象); 2、卡諾圖:有兩個(gè)相切的卡諾圈并且相切處沒(méi)有被其他卡諾圈包圍,就有可能出現(xiàn)競(jìng)爭(zhēng)冒險(xiǎn); 3、實(shí)驗(yàn)法:示波器觀測(cè); 解決方法: 1、加濾波電路,消除
    發(fā)表于 11-02 17:22

    FPGA設(shè)計(jì)中毛刺信號(hào)解析

    本文從FPGA的原理結(jié)構(gòu)的角度探討了產(chǎn)生毛刺的原因及產(chǎn)生的條件,在此基礎(chǔ)上,總結(jié)了多種不同的消除方法,在最后結(jié)合具體的應(yīng)用對(duì)解決方案進(jìn)行深入的分析。
    發(fā)表于 08-03 11:48 ?2207次閱讀
    <b class='flag-5'>FPGA</b>設(shè)計(jì)中<b class='flag-5'>毛刺</b><b class='flag-5'>信號(hào)</b>解析

    數(shù)字信號(hào)處理FPGA實(shí)現(xiàn)

    本書比較全面地闡述了fpga在數(shù)字信號(hào)處理中的應(yīng)用問(wèn)題。本書共分8章,主要內(nèi)容包括典型fpga器件的介紹、vhdl硬件描述語(yǔ)言、fpga設(shè)計(jì)
    發(fā)表于 12-23 11:07 ?45次下載

    基于FPGA毛刺問(wèn)題及解決方法

    毛刺現(xiàn)象在FPGA設(shè)計(jì)中非常普遍, 而毛刺的出現(xiàn)往往導(dǎo)致系統(tǒng)結(jié)果的錯(cuò)誤。本文從FPGA的原理結(jié)構(gòu)的角度深入探討了毛刺產(chǎn)生的原因及產(chǎn)生的條件,
    發(fā)表于 11-22 14:24 ?9580次閱讀

    在 FlexIO上進(jìn)行毛刺濾波方法

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

    對(duì)信號(hào)進(jìn)行濾波處理方法

    濾波處理信號(hào)處理中的一個(gè)重要環(huán)節(jié),它可以幫助我們從噪聲中提取有用的信號(hào),提高信號(hào)的質(zhì)量和可靠性
    的頭像 發(fā)表于 08-25 14:47 ?488次閱讀

    PWM信號(hào)濾波處理方法

    PWM(脈沖寬度調(diào)制)信號(hào)濾波處理是電子設(shè)計(jì)中常見(jiàn)的任務(wù),旨在將PWM信號(hào)轉(zhuǎn)換為更平滑的直流信號(hào)或去除不需要的噪聲和波動(dòng)。以下是對(duì)PWM
    的頭像 發(fā)表于 11-18 17:41 ?499次閱讀