本文主要涉及xilinx版的fpga的邊沿觸發檢測,通過鎖存乙個時鐘節拍, 比較前後兩個檢測狀態, 判定是否產生上公升沿或者下降沿,可用於按鍵檢測等,具體如下:
檢測上公升沿:
reg key_scan;
reg key_scan_reg;
always@(posedge clk) // 鎖存乙個時鐘節拍,key_scan_reg是key_scan的上乙個狀態
key_scan_reg <= key_scan;
wire flag =(
~key_scan_reg) & key_scan;
// 真值表:
~key_scan_reg
key_scan
flag00
0010
1001
11檢測下降沿:
reg key_scan;
reg key_scan_reg;
always@(posedge clk) // 鎖存乙個時鐘節拍,key_scan_reg是key_scan的上乙個狀態
key_scan_reg <= key_scan;
wire flag = key_scan_reg & (~key_scan);
// 真值表:
key_scan_reg
~key_scan
flag00
0010
1001
11其中,檢測到邊沿觸發,
flag=1
為有效,作為後期操作的標誌位。
FPGA的邊沿檢測
以前我曾一度傻乎乎的使用 always posedge signal 這樣的 去檢測signal的上公升沿,鬧出了很多問題。當受實驗室的一同學指教後,再也不會傻乎乎的這樣幹了。當然,你看完下文也不會這樣幹了。檢測上公升沿的原理 使用高頻的時鐘對訊號進行取樣,因此要實現上公升沿檢測,時鐘頻率至少要在訊...
FPGA中邊沿觸發和電平觸發
邊沿觸發和電平觸發基本就是觸發器和鎖存器的區別 觸發器是邊沿觸發,只有當時鐘上公升 或下降 的一瞬間,觸發器會讀取並鎖存輸入訊號。輸出訊號僅在時鐘訊號上公升 或下降 的一瞬間會發生變化。鎖存器是電平觸發,只要使能 enable 訊號處於高電平 或低電平 輸出就會隨著輸入訊號變化,直到使能訊號變為低電...
FPGA亞穩態狀態檢測邊沿
如上圖所示,當時鐘上公升沿來的時候,資料恰好改變,這個時候輸出的結果就無法確定是0 1,暫存器會經過一段時間的抖動然後輸出乙個結果 無法確定是正確還是錯誤 通過三個暫存器,資料的抖動會消失,從而得到穩定的資料輸出 資料同樣不確定是否正確 當暫存器抖動之後輸出為0時,如下圖所示,通過兩個暫存器,就可以...