fpga基礎入門篇(四)——邊沿檢測電路
一、邊沿檢測
邊沿檢測,就是檢測輸入訊號,或者fpga內部邏輯訊號的跳變,即上公升沿或者下降沿的檢測。在檢測到所需要的邊沿後產生乙個高電平的脈衝。這在fpga電路設計中相當的廣泛。
沒有復位的情況下,正常的工作流程如下:
(1)d觸發器經過時鐘clk的觸發,輸出trigger訊號,儲存了t0時刻的訊號。
(2)同時由trigger通過非門輸出訊號,保留了當前時刻t1的觸發訊號
(3)經過與門輸出訊號pos_edge,neg_edge
a) 只有t0時刻為高,且t1時候為低的時候,與門輸出高,此時為下降沿。
b) 只有to時候為低,且t1時候為高的時候,與門輸出高,此時為上公升沿。
當然,在復位的時刻,dff被復位,無法檢測觸發訊號。
二、採用乙個觸發器的邊沿檢測電路設計:
verilog**實現:
//one trigger
module edge_detect
(input clk_i, rst_n_i, data_i,
//輸入埠
output posedge_o,negedge_o //輸出埠);
//one regester
reg tri_1;
always@(posedge clk_i or negedge rst_n_i)
begin
if(! rst_n_i)
//置位
begin
tri_1 <=
1'b0;
endelse
begin
tri_1 <= data_i;
//觸發器
endendassign negedge_o = tri_1 &
(~data_i)
;//下降沿檢測
assign posedge_o =
(~tri_1)
& data_i;
//上公升沿檢測
endmodule
rtl電路
用vivado rtl分析電路
****及結果
module tb_test()
;reg clk_i,rst_n_i,data_i;
wire posedge_o, negedge_o;
//模組呼叫
edge_detect u1(.
clk_i
(clk_i),.
rst_n_i
(rst_n_i),.
data_i
(data_i),.
posedge_o
(posedge_o),.
negedge_o
(negedge_o));
//initial
initial begin
clk_i =0;
rst_n_i =0;
#10rst_n_i =1;
data_i =0;
#13data_i =1;
//上公升沿
#20data_i =0;
//下降沿
#15data_i =1;
//上公升沿
#10data_i =0;
//下降沿
end//clk 訊號
always #5 clk_i =
~clk_i;
endmodule
**結果:
分析:在第一次上公升沿時,由於上公升沿離下個時鐘上公升沿間隔短,結果會產生「毛刺」,即我們的建立時間不夠。
下面利用多個觸發器可以延遲n-1個觸發器的週期時間保證至少有乙個時鐘週期。
三、採用多個觸發器的邊沿檢測電路設計:
verilog 語言實現(兩個觸發器及雙邊沿檢測)
//two trigger
module edge_detect
(input clk_i, rst_n_i, data_i,
output posedge_o,negedge_o,double_edge_o);
//two regester
reg tri_1;
reg tri_2;
always@(posedge clk_i or negedge rst_n_i)
begin
if(! rst_n_i)
//置位
begin
tri_1 <=
1'b0;
tri_2 <=
1'b0;
endelse
begin
tri_1 <= data_i;
tri_2 <= tri_1; 二級觸發器
endend/*
reg [1:0] tri_r;
always @(posedge clk or negedge rst_n)begin
if(rst_n == 1'b0)begin
tri_r <= 2'b00;
endelse begin
tri_r <= ;
endend*/
assign negedge_o = tri_2 &
(~tri_1)
;//下降沿檢測
assign posedge_o =
(~tri_2)
& tri_1;
//上公升沿檢測
assign double_edge_o = tri_1 ^ tri_2;
//雙邊沿檢測
endmodule
rtl電路
用vivado rtl分析電路
**結果:
tri_1將輸入與時鐘同步,tri_2延遲乙個時鐘週期。級數越多,延遲越高。
可以看到邊沿檢測結果都出現在下乙個時鐘週期
四、邊沿檢測應用
邊沿檢測技術在專案應用中,非常低廣泛。如要有效捕獲訊號跳變沿,邊沿檢測技術的應用是必不可少的。
有如下幾個方面
(1)將時鐘邊沿使能轉換為邊沿檢測使能,使時鐘同步化。
(2)捕獲訊號的突變(uart,spi等訊號使能突變)
(3)邏輯分析儀中訊號的邊沿檢測。
五、實現指標及存在缺陷
沒有十全十美的東西,也沒有十全十美的電路、**;邊沿檢測技術亦如此。有如下缺陷:
(1)增大clk訊號可以增強邊沿檢測的效率,但不能濾去跳變的雜波。
(2)減少clk可以有效濾去跳變的雜波,但不能及時檢測到邊沿跳變。
(3)增加dff能更好的濾除雜波,寄存訊號,但同時檢測延時大。
參考博文:
Android入門篇(四)Activity生命週期
安卓中基於sdk的開發最基礎的就是四大元件,這都是老生常談的知識,這裡我也講解一下最基礎的知識 public class mainactivity extends activity override protected void onstart override protected void onr...
Linux基礎入門篇知識回顧
1.2計算機系統組成 1.3計算機組成原理 1.4作業系統發展史 1.5linux系統發展史 1.6linux基礎入門 三 進製轉換 1 計算機網路 2 作業系統原理 3 資料庫原理 4 資料結構 1.1計算機的特點及發展趨勢 特點 發展趨勢 智慧型化 多 化 網路化 巨型化 微型化 1.2計算機系...
es6基礎入門篇
1 let 允許重複賦值,但不允許重複宣告變數 2 const 宣告常量,不允許重複宣告,也不允許重複賦值 3 字串 1 string.fromcharcode 編碼 能讓編碼轉成字元 示例,統計瀏覽器能支援多少個中文字元 let name for let i 0x4e00 i 0x9fa5 i c...