《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 可編程邏輯 > 業(yè)界動(dòng)態(tài) > 從零開(kāi)始走進(jìn)FPGA——邊沿檢測(cè)技術(shù)

從零開(kāi)始走進(jìn)FPGA——邊沿檢測(cè)技術(shù)

2015-02-04
關(guān)鍵詞: FPGA 邊沿檢測(cè)

 一、為什么要講

  也許,沒(méi)有那么一本教科書(shū),會(huì)說(shuō)到這個(gè)重要的思想;也許,學(xué)了很久的你,有可能不知道這個(gè)重要的思想吧。很慚愧,我也是在當(dāng)年學(xué)了1年后才領(lǐng)悟到這個(gè)思想的。

  說(shuō)實(shí)話,我的成長(zhǎng)很艱辛,沒(méi)有人能給我系統(tǒng)的指導(dǎo),而我得撐起這一片藍(lán)天,于是乎無(wú)數(shù)個(gè)漏洞,我一直在修補(bǔ)我的不足。我沒(méi)能對(duì)自己滿足過(guò),不是 說(shuō)我“貪得無(wú)厭”,而是,我不夠“完美”。人可以不完美,但不可以不追求完美;或許終點(diǎn)永遠(yuǎn)達(dá)不到,但努力的過(guò)程,你一直在靠近完美;有方向感地奮斗,讓 你永遠(yuǎn)立于不敗之地。

  也許我看的書(shū)不夠多,但學(xué)校暑假那邊關(guān)于的的書(shū),我都翻過(guò)一遍了;特權(quán)的《深入淺出玩轉(zhuǎn)》是我所看過(guò)的書(shū)中,唯一一本涉及到這個(gè)重要思想的書(shū),也許這就是有過(guò)項(xiàng)目實(shí)戰(zhàn)的人出的書(shū),和官方理論教材的區(qū)別吧。

  說(shuō)起,還有過(guò)一個(gè)故事:

  話說(shuō)七哥當(dāng)年,去一家公司面試??脊俳o他一支筆,讓他用邏輯門(mén)畫(huà)出電路。話音剛落,七哥持筆揮霍,數(shù)秒鐘內(nèi)畫(huà)出了邊沿檢測(cè)的電路圖,并且給出了完美的解釋。瞬間思維的展現(xiàn)與重要應(yīng)用的說(shuō)明,讓考官目瞪口呆。據(jù)說(shuō),七哥贏了,這之后,七哥便被那家公司錄用了,一路牛逼,到了今天,證明了自己,取得了很大的成績(jī)。

  二、什么是邊沿檢測(cè)

  所謂邊沿檢測(cè),就是檢測(cè)輸入信號(hào),或者FPGA內(nèi)部邏輯信號(hào)的跳變,即上升沿或者下降沿的檢測(cè)。這在FPGA電路設(shè)計(jì)中相當(dāng)?shù)膹V泛,幾乎我每一個(gè)稍微完善的工程都會(huì)應(yīng)用到這個(gè)思想;后續(xù)章節(jié)的講解,也不少這個(gè)思維的應(yīng)用。

  以下是七哥當(dāng)年用決定自己工作的一張圖,Bingo在Quartus II Block中用邏輯門(mén)畫(huà)了出來(lái):

  

wps_clip_image-28203

 

  如上圖5個(gè)信號(hào):

  

image

 

  正常工作,沒(méi)有復(fù)位的情況下,工作流程如下:

  (1)D觸發(fā)器經(jīng)過(guò)時(shí)鐘clk的觸發(fā),輸出trigger信號(hào),保存了t0時(shí)刻的信號(hào)。

  (2)同時(shí)由trigger通過(guò)非門(mén)輸出信號(hào),保留了當(dāng)前時(shí)刻t1的觸發(fā)信號(hào)

  (3)經(jīng)過(guò)與門(mén)輸出信號(hào)pos_edge,neg_edge

  a) 只有t0時(shí)刻為高,且t1時(shí)候?yàn)榈偷臅r(shí)候,與門(mén)輸出高,此時(shí)為下降沿。

  b) 只有to時(shí)候?yàn)榈?,且t1時(shí)候?yàn)楦叩臅r(shí)候,與門(mén)輸出高,此時(shí)為上升沿。

  當(dāng)然,在復(fù)位的時(shí)刻,DFF被復(fù)位,無(wú)法檢測(cè)觸發(fā)信號(hào)。

  三、實(shí)現(xiàn)邊沿檢測(cè)的最優(yōu)化

  1. Block或Verilog實(shí)現(xiàn)

  一般為了防止觸發(fā)信號(hào)的波動(dòng),加幾級(jí)觸發(fā)器,消除抖動(dòng),使得信號(hào)更穩(wěn)定。

  此例程中,相對(duì)于上圖多了觸發(fā)器。其用觸發(fā)器對(duì)信號(hào)打慢兩拍,使得觸發(fā)信號(hào)然后在進(jìn)行相關(guān)的處理;再來(lái)檢測(cè)邊沿的上升沿,下降沿。

  (1)用Block畫(huà)圖實(shí)現(xiàn)

  

wps_clip_image-4666

 

  (2)用verilog代碼實(shí)現(xiàn)

  edge_tech_design.v代碼如下所示:

  /*****************************************************

  * Module Name : edge_tech_design.v

  * Engineer : Crazy Bingo

  * Target Device : EP2C8Q208C8

  * Tool versions : Quartus II 11.0

  * Create Date : 2011-6-25

  * Revision : v1.0

  * Description :

  *****************************************************/

  module edge_tech_design

  (

  input clk,

  input rst_n,

  input trigger,

  output pos_edge,

  output neg_edge

  );

  //Capture the rising_endge & falling_edge

  reg trigger_r0,trigger_r1,trigger_r2;

  always@(posedge clk or negedge rst_n)

  begin

  if(!rst_n)

  begin

  trigger_r0 <= 1'b0;

  trigger_r1 <= 1'b0;

  trigger_r2 <= 1'b0;

  end

  else

  begin

  trigger_r0 <= trigger;

  trigger_r1 <= trigger_r0;

  trigger_r2 <= trigger_r1;

  end

  end

  assign pos_edge = trigger_r1 & ~trigger_r2;

  assign neg_edge = ~trigger_r1 & trigger_r2;

  endmodule

  編譯后,分析Quartus II RTL圖,如下所示,與Bingo在Block用邏輯門(mén)設(shè)計(jì)的一樣,說(shuō)明了代碼的正確性。

  

wps_clip_image-9451

 

  (3)Modelsim-Altera仿真圖如下所示,在上升沿(下降沿)到來(lái)的時(shí)候,時(shí)序能夠及時(shí)準(zhǔn)確的檢測(cè)到。

  2. 邊沿檢測(cè)應(yīng)用

  邊沿檢測(cè)技術(shù)在項(xiàng)目應(yīng)用中,非常低廣泛。如要有效捕獲信號(hào)跳變沿,邊沿檢測(cè)技術(shù)的應(yīng)用是必不可少的。Bingo大致歸納了一下,有如下幾個(gè)方面

  (1)將時(shí)鐘邊沿使能轉(zhuǎn)換為邊沿檢測(cè)使能,使時(shí)鐘同步化。

  (2)捕獲信號(hào)的突變(UART,SPI等信號(hào)使能突變)

  (3)邏輯分析儀中信號(hào)的邊沿檢測(cè)。

  3. 實(shí)現(xiàn)指標(biāo)及存在缺陷

  沒(méi)有十全十美的東西,也沒(méi)有十全十美的電路、代碼;本章節(jié)中所介紹的邊沿檢測(cè)技術(shù)亦如此。有如下缺陷:

  (1)增大CLK信號(hào)可以增強(qiáng)邊沿檢測(cè)的效率,但不能濾去跳變的雜波。

  (2)減少CLK可以有效濾去跳變的雜波,但不能及時(shí)檢測(cè)到邊沿跳變。

  (3)增加DFF能更好的濾除雜波,寄存信號(hào),但同時(shí)檢測(cè)延時(shí)大。

本站內(nèi)容除特別聲明的原創(chuàng)文章之外,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,并不代表本網(wǎng)站贊同其觀點(diǎn)。轉(zhuǎn)載的所有的文章、圖片、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無(wú)法一一聯(lián)系確認(rèn)版權(quán)者。如涉及作品內(nèi)容、版權(quán)和其它問(wèn)題,請(qǐng)及時(shí)通過(guò)電子郵件或電話通知我們,以便迅速采取適當(dāng)措施,避免給雙方造成不必要的經(jīng)濟(jì)損失。聯(lián)系電話:010-82306118;郵箱:aet@chinaaet.com。