【從零開(kāi)始走進(jìn)FPGA】你想干嘛——邊沿檢測技術(shù)

發(fā)布時(shí)間:2016-2-24 10:00    發(fā)布者:designapp
關(guān)鍵詞: FPGA , 邊沿檢測
  一、為什么要講邊沿檢測
  也許,沒(méi)有那么一本教科書(shū),會(huì )說(shuō)到這個(gè)重要的思想;也許,學(xué)了很久的你,有可能不知道這個(gè)重要的思想吧。很慚愧,我也是在當年學(xué)了1年后才領(lǐng)悟到這個(gè)思想的。
  說(shuō)實(shí)話(huà),我的成長(cháng)很艱辛,沒(méi)有人能給我系統的指導,而我得撐起這一片藍天,于是乎無(wú)數個(gè)漏洞,我一直在修補我的不足。我沒(méi)能對自己滿(mǎn)足過(guò),不是說(shuō)我“貪得無(wú)厭”,而是,我不夠“完美”。人可以不完美,但不可以不追求完美;或許終點(diǎn)永遠達不到,但努力的過(guò)程,你一直在靠近完美;有方向感地奮斗,讓你永遠立于不敗之地。
  也許我看的書(shū)不夠多,但學(xué)校暑假那邊關(guān)于的FPGA的書(shū),我都翻過(guò)一遍了;特權的《深入淺出玩轉FPGA》是我所看過(guò)的書(shū)中,唯一一本涉及到這個(gè)重要思想的書(shū),也許這就是有過(guò)項目實(shí)戰的人出的書(shū),和官方理論教材的區別吧。
  說(shuō)起邊沿檢測,還有過(guò)一個(gè)故事:
  話(huà)說(shuō)七哥當年,去一家FPGA公司面試?脊俳o他一支筆,讓他用邏輯門(mén)畫(huà)出邊沿檢測電路。話(huà)音剛落,七哥持筆揮霍,數秒鐘內畫(huà)出了邊沿檢測的電路圖,并且給出了完美的解釋。瞬間思維的展現與重要應用的說(shuō)明,讓考官目瞪口呆。據說(shuō),七哥贏(yíng)了,這之后,七哥便被那家公司錄用了,一路牛逼,到了今天,證明了自己,取得了很大的成績(jì)。
  二、什么是邊沿檢測
  所謂邊沿檢測,就是檢測輸入信號,或者FPGA內部邏輯信號的跳變,即上升沿或者下降沿的檢測。這在FPGA電路設計中相當的廣泛,幾乎我每一個(gè)稍微完善的工程都會(huì )應用到這個(gè)思想;后續章節的講解,也不少這個(gè)思維的應用。
  以下是七哥當年用決定自己工作的一張圖,Bingo在Quartus II Block中用邏輯門(mén)畫(huà)了出來(lái):
  


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


  正常工作,沒(méi)有復位的情況下,工作流程如下:
  (1)D觸發(fā)器經(jīng)過(guò)時(shí)鐘clk的觸發(fā),輸出trigger信號,保存了t0時(shí)刻的信號。
  (2)同時(shí)由trigger通過(guò)非門(mén)輸出信號,保留了當前時(shí)刻t1的觸發(fā)信號
  (3)經(jīng)過(guò)與門(mén)輸出信號pos_edge,neg_edge
  a) 只有t0時(shí)刻為高,且t1時(shí)候為低的時(shí)候,與門(mén)輸出高,此時(shí)為下降沿。
  b) 只有to時(shí)候為低,且t1時(shí)候為高的時(shí)候,與門(mén)輸出高,此時(shí)為上升沿。
  當然,在復位的時(shí)刻,DFF被復位,無(wú)法檢測觸發(fā)信號。
  三、實(shí)現邊沿檢測的最優(yōu)化
  1. Block或Verilog實(shí)現
  一般為了防止觸發(fā)信號的波動(dòng),加幾級觸發(fā)器,消除抖動(dòng),使得信號更穩定。
  此例程中,相對于上圖多了觸發(fā)器。其用觸發(fā)器對信號打慢兩拍,使得觸發(fā)信號然后在進(jìn)行相關(guān)的處理;再來(lái)檢測邊沿的上升沿,下降沿。
  (1)用Block畫(huà)圖實(shí)現
  


  (2)用verilog代碼實(shí)現
  edge_tech_design.v代碼如下所示:
  
[color=]/*****************************************************

[color=]  * Module Name : edge_tech_design.v

[color=]  * Engineer : Crazy Bingo

[color=]  * Target Device : EP2C8Q208C8

[color=]  * Tool versions : Quartus II 11.0

[color=]  * Create Date : 2011-6-25

[color=]  * Revision : v1.0

[color=]  * Description :

[color=]  *****************************************************/

[color=]  module edge_tech_design

[color=]  (

[color=]  input clk,

[color=]  input rst_n,

[color=]  input trigger,

[color=]  output pos_edge,

[color=]  output neg_edge

[color=]  );

[color=]  //Capture the rising_endge & falling_edge

[color=]  reg trigger_r0,trigger_r1,trigger_r2;

[color=]  always@(posedge clk or negedge rst_n)

[color=]  begin

[color=]  if(!rst_n)

[color=]  begin
  trigger_r0
  trigger_r1
  trigger_r2
[color=]  end

[color=]  else

[color=]  begin
  trigger_r0
  trigger_r1
  trigger_r2
[color=]  end

[color=]  end

[color=]  assign pos_edge = trigger_r1 & ~trigger_r2;

[color=]  assign neg_edge = ~trigger_r1 & trigger_r2;

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


  (3)Modelsim-Altera仿真圖如下所示,在上升沿(下降沿)到來(lái)的時(shí)候,時(shí)序能夠及時(shí)準確的檢測到。
  2. 邊沿檢測應用
  邊沿檢測技術(shù)在項目應用中,非常低廣泛。如要有效捕獲信號跳變沿,邊沿檢測技術(shù)的應用是必不可少的。Bingo大致歸納了一下,有如下幾個(gè)方面
  (1)將時(shí)鐘邊沿使能轉換為邊沿檢測使能,使時(shí)鐘同步化。
  (2)捕獲信號的突變(UART,SPI等信號使能突變)
  (3)邏輯分析儀中信號的邊沿檢測。
  3. 實(shí)現指標及存在缺陷
  沒(méi)有十全十美的東西,也沒(méi)有十全十美的電路、代碼;本章節中所介紹的邊沿檢測技術(shù)亦如此。有如下缺陷:
  (1)增大CLK信號可以增強邊沿檢測的效率,但不能濾去跳變的雜波。
  (2)減少CLK可以有效濾去跳變的雜波,但不能及時(shí)檢測到邊沿跳變。
  (3)增加DFF能更好的濾除雜波,寄存信號,但同時(shí)檢測延時(shí)大。
                               
               
本文地址:http://selenalain.com/thread-161139-1-1.html     【打印本頁(yè)】

本站部分文章為轉載或網(wǎng)友發(fā)布,目的在于傳遞和分享信息,并不代表本網(wǎng)贊同其觀(guān)點(diǎn)和對其真實(shí)性負責;文章版權歸原作者及原出處所有,如涉及作品內容、版權和其它問(wèn)題,我們將根據著(zhù)作權人的要求,第一時(shí)間更正或刪除。
您需要登錄后才可以發(fā)表評論 登錄 | 立即注冊

相關(guān)視頻

關(guān)于我們  -  服務(wù)條款  -  使用指南  -  站點(diǎn)地圖  -  友情鏈接  -  聯(lián)系我們
電子工程網(wǎng) © 版權所有   京ICP備16069177號 | 京公網(wǎng)安備11010502021702
快速回復 返回頂部 返回列表
午夜高清国产拍精品福利|亚洲色精品88色婷婷七月丁香|91久久精品无码一区|99久久国语露脸精品|动漫卡通亚洲综合专区48页