99精品久久精品一区二区-亚洲熟妇无码?v在线播放-日本国产精品无码字幕在线观看-久久久亚洲永夜AV-亚洲一级无码一区二区一-免费国产成高清人在线视频-中文字幕乱码免费观看-国产毛片精品妇女久久久

ARTICLE DETAIL

資訊詳情

深耕商務建站與企業(yè)官網(wǎng)運營的一線實戰(zhàn)洞察。

Verilog實現(xiàn)FPGA密碼鎖:矩陣鍵盤與狀態(tài)機設計實戰(zhàn)

Verilog實現(xiàn)FPGA密碼鎖:矩陣鍵盤與狀態(tài)機設計實戰(zhàn) 說實話這幾年接觸了不少想入門FPGA的朋友如果你問哪個項目能一口氣把Verilog的核心基本功串起來我通常會推薦電子密碼鎖。這個項目看著不起眼卻把矩陣鍵盤掃描、按鍵消抖、狀態(tài)機設計、動態(tài)顯示刷新、外設控制這些數(shù)字邏輯里的硬骨頭全部放在了一個具體場景里。今天要分享的就是這樣一個基于Verilog的FPGA密碼鎖工程核心交互是通過4x4矩陣鍵盤輸入按鍵值在待機狀態(tài)下連續(xù)輸入12進入修改密碼功能整個工程從模塊劃分、狀態(tài)機設計到仿真上板我按實際開發(fā)順序完整講一遍。1. 密碼鎖整體功能設計與方案選型1.1 功能清單與用戶交互流程先把功能需求列清楚。這個工程模擬的是日常使用的電子密碼鎖核心功能是上電后處于鎖定狀態(tài)用戶通過矩陣鍵盤輸入6位密碼輸入完成后按確認鍵觸發(fā)校驗密碼正確進入解鎖狀態(tài)密碼錯誤則蜂鳴器報警并累計錯誤次數(shù)連續(xù)錯誤達到3次系統(tǒng)鎖定一段時間。修改密碼的入口就是標題里說的輸入12在待機狀態(tài)下先按數(shù)字1緊接著按數(shù)字2系統(tǒng)識別到這個組合指令后進入修改密碼模式。完整的用戶交互流程大致如下系統(tǒng)上電默認密碼為000000顯示界面提示待機。在待機狀態(tài)輸入12進入修改密碼模式如果輸入的是其他數(shù)字則當作密碼輸入的開始。修改密碼時先要求輸入原密碼驗證身份驗證通過后再輸入新密碼并且新密碼需要連續(xù)輸入兩遍兩次一致才真正寫入存儲。正常密碼輸入以#鍵確認*鍵可以清除當前輸入內容。密碼校驗通過后進入開鎖狀態(tài)綠色指示燈點亮數(shù)碼管顯示OPEN此時按下*可以重新鎖定。密碼校驗失敗紅色指示燈閃爍蜂鳴器長鳴錯誤計數(shù)加一連續(xù)三次錯誤進入鎖定狀態(tài)30秒內不接受任何輸入。這個流程覆蓋了FPGA入門階段最常用的幾個外設交互方式也把狀態(tài)機的狀態(tài)遷移玩明白了。很多教程里的密碼鎖只做校驗不解鎖或者只解鎖不能改密其實是不完整的。加上12改密這個入口后狀態(tài)機至少要多出驗證原密碼輸入新密碼確認新密碼三個子狀態(tài)復雜度上來了但學習價值也上來了。1.2 為什么不用單片機而用FPGA做這件事用單片機做密碼鎖可能幾十行C代碼就搞定了為什么還要在FPGA上用Verilog重寫一遍這個問題幾乎每個做這個項目的人都會問。我的看法是這個項目在工程上確實不是最優(yōu)解但在學習上是很好的訓練場。FPGA和單片機最本質的區(qū)別是硬件并行性。單片機是順序執(zhí)行指令按鍵掃描、顯示刷新、蜂鳴器控制都靠CPU輪流處理一旦任務多了就會出現(xiàn)實時性問題FPGA則是每個模塊都在獨立運行鍵盤掃描模塊在跑的時候數(shù)碼管動態(tài)掃描也在跑狀態(tài)機也在跑它們之間通過信號握手和時序配合協(xié)同工作。這種多個硬件電路同時工作的思維方式只有在FPGA上才能體會到。另一個原因是密碼鎖的核心邏輯非常適合用狀態(tài)機表達。輸入密碼、校驗、開鎖、修改密碼這本身就是一個典型的有限狀態(tài)機模型。在Verilog里用三段式狀態(tài)機實現(xiàn)代碼結構清晰綜合后的硬件電路也對應真實的寄存器、組合邏輯和輸出邏輯。把這個工程的FSM寫穩(wěn)了后續(xù)做串口協(xié)議、以太網(wǎng)控制等復雜邏輯狀態(tài)機的設計范式都是一脈相承的。1.3 頂層信號與模塊劃分工程采用自頂向下的設計方式頂層模塊只做信號連接不寫具體邏輯。頂層輸入輸出信號如下表所示信號名方向位寬功能說明clk_50minput1系統(tǒng)時鐘50MHzrst_ninput1異步復位低有效rowoutput4矩陣鍵盤行輸出低電平掃描colinput4矩陣鍵盤列輸入讀取按鍵狀態(tài)segoutput8數(shù)碼管段碼輸出seg_seloutput6數(shù)碼管位選輸出動態(tài)掃描led_openoutput1開鎖狀態(tài)指示led_erroutput1錯誤狀態(tài)指示beepoutput1蜂鳴器控制模塊劃分上我拆成了四個核心模塊再加一個頂層key_scan矩陣鍵盤掃描模塊產(chǎn)生行掃描信號讀取列信號輸出鍵值。key_debounce按鍵消抖模塊消除機械按鍵的抖動毛刺。ctrl_fsm主控制狀態(tài)機負責密碼校驗、指令識別、修改密碼流程控制。display_driver數(shù)碼管動態(tài)掃描驅動根據(jù)狀態(tài)機輸出顯示不同內容。beep_driver蜂鳴器控制模塊管理提示音和報警音。異步復位的設計要特意講一下。絕大多數(shù)FPGA工程都用rst_n做低有效復位復位信號進來了所有寄存器和狀態(tài)機回到初始狀態(tài)。密碼存儲寄存器也在復位時加載默認密碼000000。這個設計保證了系統(tǒng)任何時候掉電重啟都能回到一個確定的起點不會出現(xiàn)上電后狀態(tài)機處于未知狀態(tài)的情況。2. 矩陣鍵盤輸入鏈路掃描、消抖與指令識別2.1 4x4矩陣鍵盤掃描原理矩陣鍵盤用4根行線和4根列線組成4x4的按鍵陣列共16個按鍵。它的原理就是分時掃描把4根行線依次拉低然后讀取4根列線的電平哪根列線被拉低了就說明當前行和該列交叉位置上的按鍵被按下。舉個例子如果把第0行拉低即row輸出0111其他行都輸出高電平此時去讀col如果col變成1101說明第0行第1列交叉處的按鍵被按下了。把行列編碼組合起來就能得到唯一的鍵值。常見的鍵值布局如下行列位置鍵值行列位置鍵值第0行第0列1第2行第0列7第0行第1列2第2行第1列8第0行第2列3第2行第2列9第0行第3列A第2行第3列C第1行第0列4第3行第0列*第1行第1列5第3行第1列0第1行第2列6第3行第2列#第1行第3列B第3行第3列D掃描頻率不能太高也不能太低。太高了按鍵按下時間的采樣次數(shù)很多但是浪費資源太低了可能漏掉快速短按。我一般讓掃描周期在1~2ms左右結合消抖模塊一起工作。注意一點矩陣鍵盤掃描本身是一個持續(xù)進行的循環(huán)過程不是按一次只掃一次而是每時每刻都在輪詢這樣才能保證按鍵按下時第一時間被捕獲。2.2 按鍵消抖模塊的實現(xiàn)與分析機械按鍵按下和松開的瞬間觸點會因為物理彈跳產(chǎn)生一串毛刺信號持續(xù)時間一般幾毫秒到十幾毫秒。如果不做消抖一次按鍵會被識別成多次表現(xiàn)出來就是按1跳出來好幾個1。消抖的思路很簡單對輸入信號連續(xù)采樣只有信號穩(wěn)定一段時間后才認為按鍵狀態(tài)有效。我習慣用邊沿檢測加延時確認的寫法先對輸入信號打兩拍消除亞穩(wěn)態(tài)然后用計數(shù)器判斷電平是否穩(wěn)定了足夠長的時間。50MHz時鐘下20ms對應的計數(shù)值是1_000_000所以消抖計數(shù)器位寬至少20位。module key_debounce( input wire clk, input wire rst_n, input wire key_in, output reg key_out ); parameter CNT_MAX 20d1_000_000; // 50MHz時鐘下約20ms reg [19:0] cnt; reg key_tmp1, key_tmp2; always (posedge clk or negedge rst_n) begin if (!rst_n) begin key_tmp1 1b0; key_tmp2 1b0; end else begin key_tmp1 key_in; key_tmp2 key_tmp1; end end always (posedge clk or negedge rst_n) begin if (!rst_n) begin cnt 20d0; key_out 1b0; end else begin if (key_tmp1 ! key_tmp2) begin cnt 20d0; end else if (cnt CNT_MAX) begin cnt cnt 1b1; if (cnt CNT_MAX - 1) key_out key_tmp1; end end end endmodule這個模塊對每個按鍵輸入信號單獨做消抖所以矩陣鍵盤的8根行列線不能直接塞進來而是要結合掃描狀態(tài)來判斷。更常見的做法是掃描模塊先通過行列狀態(tài)計算出某個按鍵的原始觸發(fā)信號把這個觸發(fā)信號送給消抖模塊消抖穩(wěn)定后再作為有效按鍵脈沖交給狀態(tài)機。我在工程里就是這樣處理的key_scan模塊只負責判斷哪個鍵被按下輸出一個高電平脈沖key_debounce模塊負責把這個脈沖濾掉抖動變成干凈的鍵值。2.3 鍵值編碼與12組合指令偵測鍵值編碼就是把行列掃描結果映射成具體的數(shù)字和功能鍵。我在key_scan模塊中用一個case語句完成映射同時輸出一個key_valid信號告訴后續(xù)模塊當前鍵值有效。這個key_valid是脈沖信號持續(xù)一個時鐘周期方便狀態(tài)機在上升沿采樣。輸入12修改密碼這個指令不能簡單理解成檢測到1就進改密模式那樣太容易誤觸發(fā)了。我的處理方式是在待機狀態(tài)下狀態(tài)機首先進入一個指令等待子狀態(tài)。此時如果收到鍵值1并不立刻當作密碼的第一位而是進入一個臨時的等待第二個鍵狀態(tài)記錄按鍵序列的前綴。如果緊接著收到的鍵值確實是2才真正進入修改密碼模式如果收到的是其他鍵值就把剛才那個1當作密碼輸入的第一位同時轉入正常的密碼輸入狀態(tài)。// 待機狀態(tài)下的指令偵測邏輯示意 S_IDLE: begin if (key_valid key_value 4d1) next_state S_CMD_WAIT; // 收到1先別急著當密碼位 else if (key_valid key_value 4hF) // 其他鍵按密碼首位處理 next_state S_PWD_INPUT; end S_CMD_WAIT: begin if (key_valid key_value 4d2) next_state S_CHG_VERIFY; // 連續(xù)收到12進入修改密碼 else if (key_valid) next_state S_PWD_INPUT; // 不是2回到密碼輸入流程 end這種設計在真實使用中非常重要。如果密碼恰好以1開頭用戶輸入第一個1就被強行帶走整個密碼輸入流程就亂了。所以工程里把12當成一個組合指令放在待機狀態(tài)單獨偵測這個邏輯在仿真時一定要專門寫測試用例覆蓋到。3. 核心狀態(tài)機與修改密碼邏輯3.1 三段式狀態(tài)機把流程控制變成硬件思維整個密碼鎖最核心的部分是主控制狀態(tài)機我建議用三段式寫法第一個always塊負責狀態(tài)寄存器更新第二個always塊負責組合邏輯決定次態(tài)跳轉第三個always塊負責根據(jù)當前狀態(tài)產(chǎn)生輸出信號。為什么分三段而不是一段式一段式把狀態(tài)跳轉和輸出邏輯寫在一起代碼短但是狀態(tài)遷移和輸出之間互相耦合改一處容易帶崩另一處而且輸出的組合邏輯容易產(chǎn)生毛刺。三段式里狀態(tài)更新是純粹的時序邏輯次態(tài)判斷是純組合邏輯輸出邏輯可以做成寄存器輸出時序更干凈排查問題也方便。做復雜狀態(tài)機的時候三段式的優(yōu)勢會非常明顯。3.2 狀態(tài)定義與跳轉關系這個工程的狀態(tài)定義如下狀態(tài)名含義說明S_IDLE待機狀態(tài)系統(tǒng)空閑偵測12指令或密碼輸入S_CMD_WAIT指令等待狀態(tài)已經(jīng)收到1等待確認下一個鍵是否為2S_PWD_INPUT密碼輸入狀態(tài)允許輸入6位密碼顯示輸入進度S_CHECK密碼校驗狀態(tài)用戶按下確認鍵觸發(fā)比較邏輯S_OPEN開鎖狀態(tài)密碼正確系統(tǒng)開鎖S_ERR_WAIT錯誤等待狀態(tài)密碼錯誤提示等待下一次輸入S_LOCKED鎖定狀態(tài)連續(xù)3次錯誤系統(tǒng)鎖定30秒S_CHG_VERIFY改密驗證狀態(tài)修改密碼前先驗證原密碼S_CHG_NEW1輸入新密碼狀態(tài)第一次輸入新密碼S_CHG_NEW2確認新密碼狀態(tài)第二次輸入新密碼與第一次比較狀態(tài)跳轉的核心路徑S_IDLE在收到數(shù)字鍵后進入S_PWD_INPUTS_PWD_INPUT輸入滿6位后按#進入S_CHECKS_CHECK比較通過進S_OPEN不通過進S_ERR_WAITS_ERR_WAIT在錯誤計數(shù)滿3次后進S_LOCKED否則回到S_IDLE。修改密碼路徑是S_IDLE收到12后進S_CHG_VERIFY驗證原密碼通過后進S_CHG_NEW1再進S_CHG_NEW2兩次一致后寫回密碼寄存器回到S_IDLE。關鍵的狀態(tài)跳轉代碼always (*) begin next_state current_state; case (current_state) S_IDLE: begin if (key_valid key_value 4d1) next_state S_CMD_WAIT; else if (key_valid key_value ! 4d2 key_value ! 4d1) next_state S_PWD_INPUT; end S_CMD_WAIT: begin if (key_valid key_value 4d2) next_state S_CHG_VERIFY; else if (key_valid) next_state S_PWD_INPUT; end S_PWD_INPUT: begin if (key_valid key_value 4hF) // # 確認鍵 next_state S_CHECK; else if (key_valid key_value 4hE) // * 清除鍵 next_state S_PWD_INPUT; end S_CHECK: next_state pwd_match ? S_OPEN : S_ERR_WAIT; S_OPEN: begin if (key_valid key_value 4hE) next_state S_IDLE; end S_ERR_WAIT: next_state S_IDLE; S_LOCKED: begin if (lock_cnt 0) next_state S_IDLE; end S_CHG_VERIFY: begin if (key_valid key_value 4hF) next_state verify_ok ? S_CHG_NEW1 : S_IDLE; end S_CHG_NEW1: begin if (key_valid key_value 4hF) next_state S_CHG_NEW2; end S_CHG_NEW2: begin if (key_valid key_value 4hF) next_state S_IDLE; end default: next_state S_IDLE; endcase end代碼里三個狀態(tài)需要注意S_CMD_WAIT是不穩(wěn)定中間態(tài)它的存在時間只夠判斷下一個鍵值S_LOCKED中l(wèi)ock_cnt是30秒倒計時的計數(shù)器減到0才允許跳出S_CHG_NEW2中按下確認鍵后要同時判斷兩次輸入是否一致一致才更新密碼寄存器。3.3 密碼校驗與錯誤計數(shù)邏輯密碼校驗的位寬是6位十進制數(shù)每一位對應一個4位BCD碼所以密碼寄存器的總位寬是24位。用戶輸入的6位密碼也存在一個24位的臨時寄存器里。在S_CHECK狀態(tài)下比較這兩個24位寄存器是否相等同時清除輸入緩沖。always (posedge clk or negedge rst_n) begin if (!rst_n) begin err_cnt 3d0; end else if (current_state S_OPEN) begin err_cnt 3d0; end else if (current_state S_CHECK !pwd_match) begin if (err_cnt 3d2) err_cnt 3d0; // 進入鎖定清零等待下次解鎖計數(shù) else err_cnt err_cnt 1b1; end end錯誤計數(shù)為什么要單獨設計一個常見錯誤是把連續(xù)3次錯誤理解成只要錯過一次等下次輸入時清零。實際上產(chǎn)品化的密碼鎖通常要求連續(xù)錯誤計數(shù)如果中間有一次正確輸入計數(shù)就應該清零。我在設計里把清零條件放在S_OPEN也就是只有成功開鎖才清零這樣更加貼近真實需求。連續(xù)3次錯誤后進入S_LOCKED鎖定時間我設定為30秒。鎖定計數(shù)器的設計是以1秒為基準30次計時結束后才退出鎖定狀態(tài)。1秒的基準可以用50MHz時鐘分頻得到也可以用系統(tǒng)里已有的掃描時鐘倍頻注意復位和暫停邏輯要處理好。3.4 修改密碼流程的細節(jié)與二次確認修改密碼流程看著簡單實際實現(xiàn)時有一個特別容易忽略的點在S_CHG_NEW1輸入的新密碼和S_CHG_NEW2再輸入一次的新密碼要分別存放在兩個獨立的臨時寄存器里。如果共用一個寄存器第二次輸入就會把第一次覆蓋掉后面做一致性比較時兩次數(shù)值永遠相等這個bug在仿真階段很難暴露上板測試才能發(fā)現(xiàn)。正確做法是定義兩份24位寄存器。S_CHG_NEW1狀態(tài)下按鍵值寫入new_pwd_1S_CHG_NEW2狀態(tài)下按鍵值寫入new_pwd_2。在S_CHG_NEW2按下確認鍵時同時判斷new_pwd_1和new_pwd_2是否相等相等才把new_pwd_2賦給密碼存儲寄存器否則回到S_IDLE并給出報錯提示。這里還有個交互設計問題用戶在新密碼輸入過程中輸錯了某一個數(shù)字怎么辦我的處理是*鍵做退格刪除每次按下刪除最后一位。這要求狀態(tài)機同時處理數(shù)字鍵追加確認鍵結束刪除鍵回退三類輸入事件。實現(xiàn)上不復雜但對狀態(tài)機的健壯性要求提高了建議把刪除邏輯放在每個密碼輸入狀態(tài)里都處理一遍。3.5 密碼存儲方案與默認密碼加載密碼存儲我用了一個24位寄存器pwd_reg復位時初始化為24h000000。為什么不用RAM因為密碼鎖只保存一個密碼寄存器完全夠用而且讀寫邏輯清晰綜合后占用的邏輯資源也很少。RAM適合存儲大量數(shù)據(jù)用在這種場景反而增加復雜度。pwd_reg的更新只發(fā)生在兩個地方復位初始化和修改密碼成功時。修改密碼成功條件要寫清楚——必須在S_CHG_NEW2狀態(tài)下且兩次輸入一致。這個寫入條件如果漏掉狀態(tài)限制可能會出現(xiàn)狀態(tài)機還在S_CHG_NEW1時就把半截密碼寫進去的情況導致密碼變成亂碼。另外建議把pwd_reg的輸出單獨做一個pwd_match組合邏輯不要在每個狀態(tài)里直接比較。用assign pwd_match (input_pwd pwd_reg);統(tǒng)一處理狀態(tài)機只需要讀這個信號邏輯清晰也不容易出現(xiàn)比較條件寫錯的問題。4. 數(shù)碼管顯示、蜂鳴器與LED反饋4.1 數(shù)碼管動態(tài)掃描原理與段碼表六位數(shù)碼管顯示用了動態(tài)掃描方式核心原理是人眼的視覺暫留效應。六個數(shù)碼管共用8根段碼線如果同時點亮所有管子會顯示一模一樣的數(shù)字所以必須分時選通某一時刻只點亮一個位顯示這個位對應的段碼然后迅速切換到下一位循環(huán)往復。當切換頻率超過60Hz人眼看到的就是六個位同時穩(wěn)定顯示。真正的刷新頻率我一般做到1kHz以上也就是每個位每秒被刷新1000多次這樣不僅沒有閃爍感亮度也足夠平均。動態(tài)掃描的核心是一個分頻計數(shù)器產(chǎn)生位選信號// 六位數(shù)碼管掃描位選 always (posedge clk or negedge rst_n) begin if (!rst_n) begin scan_cnt 16d0; end else if (scan_cnt 16d50000 - 1) begin scan_cnt 16d0; // 1kHz掃描基準 end else begin scan_cnt scan_cnt 1b1; end end always (*) begin case (scan_cnt[16:14]) // 實際需要用專門的掃描計數(shù)器 3d0: begin seg_sel 6b111110; end // 依次選通第0位到第5位 endcase end段碼表是按共陰數(shù)碼管或者共陽數(shù)碼管來設計的這個千萬不能搞混。工程里用的某學習板是共陰數(shù)碼管所以段碼是 08h3f18h06的寫法。如果板子是共陽段碼就要按位取反。上板前先讓一個數(shù)碼管顯示一個固定數(shù)字驗證段碼表方向再繼續(xù)往下做別等全部寫完再調試不然出了問題都不知道是掃描時序錯還是段碼錯。4.2 狀態(tài)相關顯示內容切換不同狀態(tài)下數(shù)碼管顯示的內容完全不一樣。我在display_driver模塊里做了一個顯示數(shù)據(jù)選擇器根據(jù)當前狀態(tài)選擇要顯示的四位數(shù)據(jù)源狀態(tài)顯示內容說明S_IDLE顯示------或默認提示待機界面S_PWD_INPUT顯示輸入位數(shù)的*保護密碼隱私也可以顯示實際數(shù)字便于調試S_ERR_WAIT顯示Err錯誤提示S_OPEN顯示OPEN開鎖提示S_LOCKED顯示Lock鎖定提示修改密碼狀態(tài)顯示OldNewAgai等區(qū)分不同改密階段輸入密碼時顯示*還是顯示數(shù)字我在工程里留了一個調試開關。正式演示時用星號調試時打開開關能看到實際輸入的數(shù)字排查按鍵映射問題非常方便。這個開關就是一個parameter仿真的時改成顯示數(shù)字上板演示時改成顯示星號不用改邏輯。4.3 蜂鳴器提示音與LED指示蜂鳴器分有源和無源兩種。有源蜂鳴器內部有振蕩源通電就響直接給高電平就行無源蜂鳴器需要外部提供特定頻率的方波才能發(fā)聲但可以通過改變頻率發(fā)出不同音調。我用的學習板是無源蜂鳴器所以beep信號不能一直拉高而是要產(chǎn)生一個方波。提示音的設計按鍵按下時短響一下持續(xù)50ms密碼校驗失敗時長響1秒開鎖成功時響兩下短音。這里就需要一個beep_driver模塊管理發(fā)聲的持續(xù)時間和節(jié)奏。實現(xiàn)思路是用狀態(tài)機和計數(shù)器beep_en信號來了計數(shù)器開始計時同時在時鐘分頻下翻轉beep輸出產(chǎn)生1kHz左右的方波時長到了就關閉輸出。LED指示相對簡單開鎖狀態(tài)點亮綠色LED錯誤狀態(tài)讓紅色LED閃爍。閃爍效果可以在已有的1Hz分頻時鐘下控制LED翻轉。這里要提醒一點LED指示和數(shù)碼管顯示是配合工作的數(shù)碼管顯示OPEN的同時綠色的開鎖LED必須同步點亮否則用戶感知會混亂。輸出邏輯統(tǒng)一在狀態(tài)機的第三個always塊生成就能保證一致性。5. 仿真驗證與上板調試5.1 Testbench與模擬按鍵任務仿真階段的目標是驗證狀態(tài)機的所有路徑尤其要覆蓋12改密這個組合指令。我習慣在Testbench里把按鍵操作封裝成task這樣激勵代碼看起來像在描述操作步驟而不是一堆信號賦值。task press_num; input [3:0] val; begin // 模擬一次按鍵按下并消抖 key_valid 1b0; #20; key_value val; key_valid 1b1; #100; key_valid 1b0; #100; end endtask task press_ok; begin press_num(4hF); // # 確認鍵 end endtask實際仿真時Testbench更常見的是直接驅動ctrl_fsm模塊的輸入端口把key_valid和key_value當作按鍵模塊處理后的結果這樣避開矩陣鍵盤掃描時序專注于狀態(tài)機驗證。矩陣鍵盤掃描模塊的驗證另寫一個Testbench模擬行列信號的變化。仿真的關鍵路徑至少覆蓋正確密碼開鎖、錯誤密碼三次鎖定、12進入改密、原密碼錯誤拒絕改密、兩次新密碼不一致回退、修改密碼后使用新密碼成功開鎖。這幾條路徑走通了功能上基本就沒有大問題。5.2 仿真階段容易踩的時序坑第一個坑是狀態(tài)機沒有復位初始值。如果復位時current_state沒有明確賦值為S_IDLE仿真波形里就會出現(xiàn)X態(tài)導致整個狀態(tài)機亂跑。所有狀態(tài)寄存器、計數(shù)器、數(shù)據(jù)寄存器復位時一定要給確定值。第二個坑是組合邏輯的鎖存器推斷。寫狀態(tài)機的第二個always塊時如果某條分支沒有覆蓋所有變量賦值綜合工具會推斷出鎖存器導致行為異常。避免的辦法是在case前先給所有信號賦默認值next_state current_state;并且明確列出default分支。第三個坑是按鍵脈沖和時鐘沿的競爭。我設計的key_valid是脈沖信號在Testbench里如果賦值和狀態(tài)機采樣沿完全對齊仿真可能看到0或1不確定。解決辦法是讓Testbench里的脈沖偏離時鐘沿比如在時鐘下降沿附近改變信號或者使用非阻塞賦值的時序。真實硬件里按鍵脈沖突發(fā)時間遠大于一個時鐘周期不會出現(xiàn)這個問題但仿真里必須處理。5.3 上板調試方法與引腳約束上板調試的第一步不是燒整個工程而是先燒一個最簡單的點亮LED工程確認板卡和下載鏈路正常。然后逐個驗證外設先讓數(shù)碼管顯示固定數(shù)字驗證段碼表再寫一個掃描程序按矩陣鍵盤的鍵觀察鍵值是否正確最后才燒整體工程聯(lián)調。分段驗證能大幅縮小出問題的范圍。引腳約束是FPGA上板最容易出錯的地方。矩陣鍵盤的8根線要分配到指定的IO管腳還必須確認板卡原理圖上的行列定義。比如原理圖上某個位置標著KEY_ROW0實際連接到FPGA的某個Bank某個引腳約束文件里就寫對應位置。行列定義反了會導致按鍵映射錯亂可能的表象是按1出來的是5。這類問題不需要改邏輯把約束里的行和列交換就行。調試內部信號建議用FPGA自帶的邏輯分析儀抓取key_value、current_state、pwd_match這幾個關鍵信號配合按鍵操作觀察它們的變化是否符合預期。我遇到過的一個情況是數(shù)碼管顯示輸入位數(shù)的*數(shù)量總是不對邏輯分析儀一看發(fā)現(xiàn)狀態(tài)機確實收到了6個按鍵脈沖但第一個脈沖被當成了指令前綴的1進入S_CMD_WAIT后第二個鍵才真正開始密碼輸入導致密碼位數(shù)少一位。這類問題用仿真很難發(fā)現(xiàn)邏輯分析儀抓到真實時序立刻真相大白。5.4 硬件實測中的一次真實調整模擬項目X的實測過程中遇到過一個問題修改完密碼后用新密碼開鎖數(shù)碼管顯示密碼輸入確實按了6下但校驗總是失敗。上板抓信號后發(fā)現(xiàn)S_CHG_NEW2狀態(tài)下第二次輸入密碼的存入邏輯和按鍵確認邏輯產(chǎn)生了沖突按下#確認的瞬間key_valid信號同時觸發(fā)了一次數(shù)字鍵存入結果把確認鍵當成了新增的一位數(shù)字密碼多了一位比較自然失敗。這個問題的根因是輸入狀態(tài)的按鍵處理只判斷了數(shù)字鍵類別沒有把確認鍵從數(shù)字鍵里分離出來。修復方式是檢查所有密碼輸入狀態(tài)必須同時判斷是否有效按鍵鍵值是否為確認鍵兩個條件只有既有效又不是確認鍵時才把數(shù)據(jù)存入緩沖區(qū)。這個改動很小但暴露了狀態(tài)機設計時事件優(yōu)先級的重要性——確認事件必須優(yōu)先于數(shù)據(jù)事件處理。6. 常見問題與排查技巧實錄6.1 問題速查表把開發(fā)過程中容易遇到的問題整理成表格方便大家對照排查現(xiàn)象可能原因排查方向按鍵按下去沒反應行列信號接反、消抖時間過長、key_valid沒接上用邏輯分析儀抓行列信號按鍵按一次識別兩次消抖模塊沒生效或消抖時間太短確認key_out輸出不抖動拉長CNT_MAX數(shù)碼管顯示亂碼段碼表方向錯、位選信號接錯先讓固定位顯示固定值逐個排除密碼永遠校驗失敗位寬不一致、輸入緩沖沒清、比較時序錯抓pwd_match信號確認兩個24位值12進入不了改密指令偵測狀態(tài)沒實現(xiàn)、S_CMD_WAIT被跳過看狀態(tài)機是否進入S_CMD_WAIT修改密碼后老密碼還能開新密碼寫入條件沒限制在S_CHG_NEW2檢查pwd_reg的賦值條件蜂鳴器一直響有源無源選錯、方波頻率沒控制好確認蜂鳴器類型和驅動方式6.2 排查方法論我的排查習慣是從現(xiàn)象往前倒推。比如密碼修改失敗先確認是不是進入了改密狀態(tài)再確認原密碼驗證是否通過然后是兩次輸入是否一致最后是寫入條件是否觸發(fā)。每一步用邏輯分析儀抓對應的狀態(tài)和信號就像沿著管道追溯水流一樣走到哪一段斷了故障點就在那一段。這里想特別強調一下把功能分段驗證的重要性。整個工程在綜合前就拆成模塊逐個確認鍵盤掃描模塊能否正確輸出鍵值、消抖模塊能否濾掉毛刺、狀態(tài)機在仿真里能否跑通所有路徑、顯示模塊能否正確刷出內容。模塊邊界測試通過后再做聯(lián)調一般不會出現(xiàn)那種讓人摸不著頭腦的玄學問題。6.3 幾個容易被忽略的設計細節(jié)第一個是密碼輸入緩沖區(qū)的清零時機。S_IDLE進入密碼輸入前必須把上次輸入殘留的6位數(shù)據(jù)清零。如果不做這個動作用戶上次輸入了4位就按了確認密碼校驗失敗后再進入輸入狀態(tài)會導致緩沖區(qū)還是上一次的前4位加新輸入的部分內容拼出來一個亂碼密碼。第二個是顯示刷新和狀態(tài)切換的同步問題。狀態(tài)切換發(fā)生在時鐘沿顯示模塊讀取狀態(tài)值可能產(chǎn)生一個周期的延遲這是正常的。但如果顯示數(shù)據(jù)源切換導致某個瞬間看到上一位的數(shù)據(jù)需要在位選切換和段碼輸出之間加一拍寄存器打拍避免拖影現(xiàn)象。第三個是12指令的時效性。S_CMD_WAIT狀態(tài)如果沒有超時機制用戶按了1之后長時間不按2狀態(tài)機就卡在等待狀態(tài)再也無法輸入密碼。我的處理是增加一個短延時計數(shù)器比如50ms內沒有收到下一個有效按鍵就自動把1當作密碼第一位跳入密碼輸入狀態(tài)這樣既保留了組合指令又不會阻塞正常使用。第四個是復位按鍵的必要性。為了調試方便可以在頂層外加一個手動復位按鍵強制讓整個系統(tǒng)回到初始狀態(tài)。這個按鍵在開發(fā)階段幾乎不可或缺因為狀態(tài)機一旦進入某個不可恢復的狀態(tài)不可能每次斷電重啟手動復位最直接。正規(guī)設計中復位信號本身也要消抖否則可能出現(xiàn)復位不徹底的情況。最后一個值得說的是代碼風格。Verilog代碼的模塊化程度直接決定調試效率。每個模塊只做一件事接口信號用有意義的名字命名狀態(tài)機狀態(tài)名用全大寫加前綴這樣邏輯分析儀里看到的信號名一目了然。我做這個密碼鎖時把所有模塊的端口都加上了注釋過了兩個月回頭看代碼還能快速上手這一點在工程上比炫技式寫法重要得多。這個密碼鎖工程做完回頭看最有價值的不是能開鎖這個結果而是把狀態(tài)機的設計方法從能跑通練到了穩(wěn)定可靠。后面做復雜的通信協(xié)議、數(shù)據(jù)處理流程時遇到多狀態(tài)多條件的分支控制第一反應就是從狀態(tài)圖開始畫起再落到三段式Verilog狀態(tài)機。對FPGA入門來說這個項目是個很好的分水嶺它把語法知識、模塊劃分、時序概念、上板調試串成了一整條鏈路一旦全流程跑通過一次后面再碰其他項目心里就有底了。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
26uuu淫色| 内射综合网| 国产精品国产成人国产三级| 久久9久| 五月天久久丁香| 色婷婷色五月另类综合| av久热| 中文字幕91,综合| 牛牛热这里只有jingpin| 久久婷婷视频| 五月婷色色| 激情五月婷婷色播网| 六月丁香基地| 久操人妻| 亚洲色图45p| 91人人人人人人人| av网址在线播放| 婷婷久久网| 播播网色播播| www,五月天激情| 91干| 婷婷五月六月丁香| 97很鲁在线视频| 色五月播五月| www.婷婷六月天| 狠狠色狠狠操| 亚洲综合色色色| 国产热精品| 三级三久久线久久99久目本WW| 婷婷久久影院| 91日精品| 肏日网在线看| 热久久婷婷| 欧美A级成人婬片免费看理论| 操人无码| 色五月婷婷网| 开心深爱激情网| 91人操| 色五月大| 日本天堂免费99| 九九九AAA热视频| 69精品人人人人| 99热6这里只有精品| 婷婷五月电影| 影视av久久久噜噜噜噜噜三级| 丁香色婷婷| 五月丁香六月婷婷综合网| 无码四色色色| 九九热这里有精品视频| 久久草大香蕉| 欧亚色色| 五月婷婷综合激情网| 久久婷婷五月天激情四射| 99热999| 91av无码| 六月丁香婷婷大香蕉| 91n啪啪| 久草九一| 激情五月最新网址| 日本少妇AA一级特黄大片| 99cao婷婷| 色婷天天| 成人国产综合| 色婷婷AAA| 激情五月婷| 丁香六月婷婷综合啪啪| 成人丁香婷婷| 久久婷婷视频| 久久综合中文字幕| 99人人干| 婷婷亚洲综合| 欧美大肥婆大肥BBBBB| 五月天色色网站| 开心激情站| 久久婷婷五月综合| 色婷婷成人做爰A片免费看网站 | 久久免费操| 色婷婷色五月色丁香| 九九sese| 啪啪啪五月天| 婷婷六月色情| 开心婷婷五月天激情网| 色99视频| 亚洲愉拍99热成人精品| 五月婷婷激情五月| 五月丁香六月激情| 日韩限制级大尺度黑料泄密大尺度视频一区二区在线观看 | 99亚色色色| 丁香五月六月久久综合| 日本精品。999| 欧美久久五月婷婷| 久久久五月婷婷| 国语精品探花| 人人综合色| 香蕉久久国产AV一区二区| 五月丁香五月综合欧美| 无码少妇高潮喷水A片免费| 五月天社区| 人妻丰满精品一区二区A片| 国色天香成人网| caop视频| 五月丁香日逼| 97丁香婷婷| 久99久在线| 丁香五月婷婷深五月| Xx色综合| 丁香婷婷色五月合集| 天天色综合网1| 日日综合网| 五月婷婷激情五月| 99黄色性生活| 国产午夜精品AV一区二区麻豆| 无码免费人妻A片AAA毛片西瓜| 男人大jjc女人免费视频| 九色1区视频在线| 免费成人网在线观看| 国产精品岛国片在线观看免费| 91免费试看| 婷婷中文字幕网| 天天操加勒比| 久久这里只有精彩| 欧美亚洲婷婷五月| 岛国AV网站| 五月丁香在线| 人人操AV| 婷婷操无码| 五月天伊人久久| 婷婷九月丁香中文| 日韩无码系列| 国产一级片| 强伦轩人妻一区二区电影| 另类综合激情| 激情五月综合视频| 国熟女视频| 六月合五月婷| 六月丁香网| 日韩成人网址| 碰97 久| 强奸幻女毛片| 久久曰曰| 色婷婷五月亚洲| 久久婷婷色五月| 五月婷婷激情网| 夜夜干夜夜操| 色啪久| 丁香久月| 色色色色色色色综合| 丁香五月综合福利视频导航| 婷婷五月天激情五月天深爱五月天| 97碰碰在线观看视频| 91人操人人人操人| 一本道在线电影| 九九99热精品| www.狠狠| 亚洲综合色棒| 婷婷五月天av| 96丁香婷婷九月蜜桃综合久久| 五月婷婷之综合激情在线| 在线成人视频免费| 狠狠色性| 久久久无码精品成人A片小说 | 31色区视频免费看| 99综合视频一体| 婷婷六月久久| 色狠狠999综合| 丁香九月婷婷| av一级棒av| 婷婷色中文| 五月色婷婷综合色| 丁香婷婷基地| 激情开心五月天| 日韩99无码| 久9热视频在线观看| 五月色情婷婷开心五月色情| 五月天激情婷婷| 中文字幕AV在线播放| 99ER热精品视频| 日韩操女| 天天噪夜夜爽| 影音先锋噜一噜| 女人被躁到高潮嗷嗷叫小| 丁香五月婷婷五月| 日日鲁鲁夜夜爽爽| 一区二区乱码视频| 色无婷婷| 亚洲高清在线| 99久久精品视频女神1| 91久久| 202丰满熟女妇大| 色婷婷aV四虎| www超碰| 五月天天天操天天爽夜夜操| 五月婷婷丁香婷婷| 97色色网| enecarbon-materials.com污K127封锁请涟系@wip1688 | 日本超碰在线| 白度黄视频| 99热久| 99热这里只有国产精品| 五月婷婷大香蕉| 91人妻九色大屁股| 人人玩人人橾| 91久久色| 久久婷婷五月综合色欧美| 黄久久久| 色婷婷五月天天天干天天操天天爽| 91视频一起草| 99久久国产综合精品五月天喷水\| 亚洲综合网 665566| 国产日日操夜夜操的肉棒视频| 操逼三区| 俺去也婷婷| 亚洲无码黄色| 国产成人va在线| 久久久ww| 久草视频大香蕉99| 综合综合色色| 97在线精品视频| 少妇人妻偷人精品无码视频新浪| 五月婷婷久久久| 思思热精品在线观看| 欧美色99| 射满了还射免费在线观看 -午夜版全集-新视觉影院 | 熟女重口味αV| 99免费在线视频| 四川BBB搡BBB搡多人乱亂| 婷婷五月丁香久久| 激情五月丁香亭亭 | 亚洲中文字幕在线观看| 久99视频| www.婷婷五月| 99综合97| 加勒比色色| 91九色精品女同系列| 性爱激情综合网| 九九这里只有精品在线视频| 91丁香五月| 国产性爱大片久久| 色色网站在线免费观看视频| 玖玖综合色| 丁香五月色色婷| 狠狠色丁香99| 九九在线精点品| 六月婷色| 五月婷婷香| www.久久久久| 色婷婷六月天| 五月婷婷色播| 99色在线免费观看视频| 中文国产五月天| 狠狠狠狠狠干| 五月花综合| 热久国产| 婷婷丁香成人五月天| 国产99视频永久免费| 五月天啪啪啪| 丁香六月婷婷综合欧美| 狠狠五月综合在线| 国产免费性爱| 五月丁香六月婷婷综合免| 色婷视频| 美女激情综合| 激情五月天综合网| 婷婷成人在线| 天天影视色综合网| 日产精品久久久久久久蜜臀| 79亚洲精品少妇| 激情五月丁香五月| 日韩久久色| 激情五月婷婷五月| HD久久精品视频| 五月婷婷婷自由综合| 777精品久无码人妻蜜桃| 全亚洲最大的婷婷五月天网站COM| 色色综合激情| 天天肏高清在线| 97热这里只有精品| 五月停视频天堂| 丁香五月图片| 五月天婷婷久久视频| 狠狠久久婷五月| 色九月婷婷丁香| 99热九九九九| 久久婷婷五月天综合| 无码少妇高潮喷水A片免费| 无码一区二区日韩| 五月婷婷基地| 色五月xxx| 天天干夜夜谢| 亚洲国产精品成人免费一区久久久在线观看AAAA | 99热这里只有精品55| 九九九九综合| 99啪啪视频| 激情四射婷婷| 激情久久久久久| 五月丁香激| 性爱视频99| 99re久热| 激情小说五月丁香在线视频观看视频| 五月色婷婷综合| 成人丁香五月| 五月丁香久久| 天天射影| 久久久婷婷| 天天日日人| 日日夜夜天天| 色五月激情问网站| 色五月六月| 色月九九| 欧美操人| 丁香婷婷五月天校园春色| 天天狠狠夜夜狠狠2023| 婷婷五月天激情文学小说| 久久五月丁香| 久久6这里只有精品| 99久久综合网| 欧美亚洲999| 婷婷在线视频| 五月丁花色综合网| 五月婷婷碰碰| 99热99re6国产在线播放| 日韩av在线播放综合网| 99色亚洲| 色 五月 天 婷婷 丁香 九月| 日日操夜夜爽| 丁香五月激情综合婷综| 天天操无码| 色~性~乱~伦~噜| 激情综合色| 婷婷丁香色五月亚洲| 五月天婷婷久久视频| 91狠狠综合久久久| 五月天色区| 婷婷色五月综合丁香| 五月色综合| 思思热性操| 欧美亚洲色色色色| 天天夜夜爽| 一区二区三区四区牛| 婷婷六月五月| 97干视频在线| 天天操人人干| 丁香五月老师| 麻豆忘忧草午夜| 99久在线精品99re8| 四川操逼站| 婷婷五月天网| 91九色国产在线| 欧美综合五月丁香六月婷| 色9999日韩国产| 特级西西4444www无码| 夜夜操夜夜爽| 日韩在线视频9色| 婷婷丁香激情五月天色色| 热久91| 色五月av| 婷婷综合网站| 色五月网址| 操人妻90p| 亚洲三级无码| 天天摸天天舔| 日韩综合久| 亚洲无码yw| 日韩啪啪视频| 无码人妻丰满熟妇奶水区码| 99精在线| 亚洲AV成人片无码网站| 国产做爰视频免费播放| 天天爽日日爽夜夜爽| 国产中文字幕在线视频免费观看 | 色色色色色色色综合| 成人精品视频99在线观看免费| 日韩激情婷婷五月天| WWW.亚洲无码| 婷婷五月天福利| 色~性~乱~伦~噜| 99这里只有精品| 久久欧洲综合网| 色婷婷瘦婷婷日韩| 天天操婷婷| 五月丁香激情综合六月涩涩爱| 夜色热久| 开心五月婷婷激情网| 久草婷妨| 五月色丁香| www.五月天婷婷.com| 国产AV一区二区三区最新精品 | 另类视频综合| 色婷婷五月丁香在线观看| 午夜在线成人网站免费观看| 91婷色| 久久综合首页| 精品一二三区久久AAA片| 天天干com| 99视频35精品视频在线观看| 大地9中文在线观看免费高清| 久久性爱视频这里只有精品| av网址在线| 少妇人妻人伦A片| 五月天综合影院| 91丁香五月| 色婷婷狠狠| 色综合久久伊伊婷婷五月| 91久久精品视频| 99久久婷婷国产综合精品草原| 五月丁香天堂网婷婷| 色99免费视频中文| 日本三级韩三级99久久| 精品人妻久久久久| 天天做天天爱天天爽夜夜揉| 中文字幕无线久必| 国产免费一区二区三区三州老师F1F1.CC | 九九热re99re6在线精品| 五月婷婷激情网| 五月网在线| WWW免费视频碰碰碰碰| www.激情| 色五月婷婷一二| 那里有AV网址| 91久久精品视频| 五月激情六月综合| 久久婷婷六月综合| 久久久99久久| 日逼影音先锋男人资源站| 欧美色色色色色| 99色热视频| 亚洲性视频| 亚洲高清在线| 激情五月天综合网| 丁香五月婷婷亚洲综合精品在线| 日韩有码久久| 国产69久久久欧美黑人A片| 99热这里只有精品青草| 综合久色五月| AV动漫不卡无码免费| 精国产品一区二区三区A片| 五月天国产| 九九sese| 色色五月婷婷久久| 中文字幕日产A片在线看| 色婷婷五月天在线观看| 思99热精品久久只有精品| 大香蕉99热| 久久婷婷五月综合色区| 色五月激情五月天| 26uuu在线观看| 色五月婷婷少妇人妻| 丁香五月综合久久综合| 操碰色一区就去操| 亚洲第一第二网站| 久久99热这里只有精品| www。五月天。com| 丁香激情网| 激情都市另类| 婷婷久月| 天天草天天摸| 激情五月丁香色婷婷| 色婷婷超碰| 五月天婷a在线| 黄色成人网站在线播放| 天天射色五月天| 人人草成人视频| 在线99精品| 日逼AV影音先锋男人资源站| 婷婷伊人网| 噜噜视频| 色在线五月天免费| 天堂A∨在线| Av在线不卡一区| 99热只有| 91九色国产熟女| 丁香婷婷十月| 日本妈妈乱| 丁香五月天婷婷91| 在线观看免费人成视频无码| 激情伊人五月天| 狠狠人人婷婷| 情涩婷婷五月天| 日韩色色小视频| 996精品热视频| 伊人九九68| 五月婷婷啪啪| 黄色AV日韩| 五月婷婷综合潮喷| 停停色综合伊人| 五月丁香花激情综合网| 激情五月婷婷色综合| 国产亚洲在线观看| 人人操人人爰人人一天天碰夜夜拍夜夜爽-中国A级毛片天天看天天谢… | 狠狠色综合图片| 丁香五月成人| 久久99久久99久久99人受| 激情五月综合婷婷| 99热中文字幕久久| 五月的丁香六月的婷婷| 日本色噜| 久99久视频| 在线看黄色| 亚州成人综合在线| 任你躁XXXXX麻豆精品| av在线资源| 六月婷婷五月丁香| 色婷婷六月丁香综合欲精品| 思思热久久久久思思热| 亚洲天堂亚洲色色色| 丁香婷婷色色| 99内射视频| 亚洲黄色网址| 少妇人妻人伦A片| 五月婷婷激情| 丁香五月天啪啪| 久久婷婷丁香| 亚洲色婷婷五月天| 婷婷激情五月综合| 天天操天天草天天草天天| 婷婷五六日| 色色五月天激情| 26uuu丁香婷婷五月| 大香蕉色婷婷伊人在线| 色狠狠色噜噜AV天堂五区| 超碰99在线观看| 91操熟女| 婷婷伊人综合中文字幕| 国产精品国产| 五月天激情综合| 婷婷六月激情在线视频| 婷婷五月天首页| 五月的婷婷六月丁香| www色婷婷久久综合久色| 九九無碼| 青青热视频| 国产 亚洲 在线| www.91婷婷| 色婷大香蕉| 色婷婷精| 人妻在线观看视频| 中文字幕91,综合| 亚洲精品一二三| 高清资源站日A美A欧亚…| 免费看欧美成人A片无码| 丁香五月五月婷婷| 狠狠色噜噜狠狠狠狠综合| 久久激情视频| 色九网| 亚洲啪啪视频| 激情五月天视频| 亚洲区视频| 久热成人| 大香蕉啪啪啪| 婷婷综合网| 97香蕉碰碰人妻国产欧美| 久久资源网五月婷| 五月天婷婷操逼视频| 亚洲色频| 婷婷六月天| 人妻VideOssS人妻高清| 天天肏天天插| 欧美噜一噜| 婷婷激情五月综合基地| 五月婷婷免费视频| 99精品久久久久久久婷婷久久| 欧美Va在线| A网在线欧洲| 这里只有精品免费视频在线观看| 亚洲色模骚货| 色五月天成人| 五月天开心婷婷激情网站| 99热精品无码| 干一干xxxx| 色情久久久| 亚洲激情网| 草五月| 99啪99| 激情五月天婷婷丁香| 久久久这里有精品| 夜色综合网| 亚洲成人AV在线观看| 日本三级黄色大片| 狠狠干综合| 中文AV网站| 成人短视频在线观看| 亚洲亚洲人成综合网络| 国产精品人成A片一区二区| 成人精品视频99在线观看免费| 国产看真人毛片爱做A片| 久久全意婷婷| 成人短视频免费| 97碰碰在线观看视频| 99色五月| 操一区| 天天狠天天狠| 亚洲综合色丁香婷婷六月| 五月丁香亚洲五月| 欧美日韩aaaa| 九九视屏| 激情五月天在线视频| AV中文在线| www免费在线视频| 日本偷拍九九九| 九月婷婷综合网| 香蕉国产2013| 婷婷色五月综合丁香| 思思热性操| 激情亚洲色图片丁香综合| 婷婷五月丁香色情| 无码任你操| 久久久久亚洲AV无码网影音先锋| 欧洲亚洲精品| 艳妇野外情欲放荡HD| 99精品久| 99在线视频播放| 婷婷五月天美女| 五月丁香啪啪综合| 九九激情综合| 亚州精品色情在线观看| WWW,色五月| 欧美综合激情五月丁香| 丁香六月无码播放| 区美毛片子| 日日操日日撸| 涩丁香| 久热久69| 9精品视频在线观看| 日本精品99| 人妻久久久久| 精久久色| 九九热在线观看视频| 五月婷婷综合久久| 久久久久久久97| 97热这里只有精品| A片试看120分钟做受图片| 超碰97色| 色狠狠五月天| 五月丁香激情六月| XX久久| 色婷婷六月| 七七久久婷婷| 五月丁香婷婷色色| 九九婷婷五月天影视| 五月丁香婷色| 人人看人人要| 伊人婷婷综合| 成人综合网站| 热99久| 9九热视频| 天天日天天操天天干| 天天做天天爱天天玩| 婷婷久久综合| 丁香六月亚洲| 影音先锋按摩| 欧美va欧美va差| 99re在线视频| 麻豆AV一区二区三区| 欧美碰碰碰| 、激情六月天| 婷婷干五月综合在线播放| 另类激情综合| 欧美综合激情| 亚洲最大在线| VA婷婷亚洲| 丁香蜜臀黄色婷婷五月天| 日本欧美成人片AAAA| 91操在线观看| site:esunnet.com| 人人摸人人| 激情五月丁香五月| 久草免费福利视频| 97人人操| 激情九九综合网| 中文无码婷婷| 日本三级99人妇网站| 丁香六月久久| 情婷婷五月天| 久久久精品人妻| 国产色色小草视频| 精品婷婷五| 噜噜视频| 成人国产欧美大片一区| 任你干嘛免费视频播放| 国产阿姨日皮艹逼内射视频| 婷婷五月综合体验看| 五月婷婷五月| 久久精品五月| 天天操天天操| 五月丁香啪啪激情| 亚洲图片 丁香婷婷| 免费AV播放| 天堂草在线看www| 饮料下药迷倒漂亮女同事强干| 男女啪啪做爰高潮无遮挡| 人人干女人| 夜夜夜叫天天天做| 久久精品9| 精品热青草| 久久天天天| 五月婷婷丁香婷婷| 国外亚洲成AV人片在线观看| 伊人玖玖婷婷| 青草热视频这里只有精品| 久久色情| 亚洲精品444久久久久久| 久久只有精品| 色吧五月婷婷| 九九在线91| 人妻系列久久久久久久久久久| www.久久99热地址发布| 99ri网站在线观看| 九九AV| 激情九九综合网| 99精品热| 色色色区| 丁香美女主播视频在线观看 | 激情五月天天狠狠久久| 国产亚洲精品久久久久苍井松 | 日日干日日| 五月桃花网综合| 丁香六月婷婷综情欧美| 99视频精品全部观看10| 中文字幕有多少字| 99色激| 五月婷视频在线| 狠狠爱成人综合网| 99这里只有精品视频在线| 六月婷久久| 婷婷五月丁香基| WWW夜夜| 大香蕉婷婷丁香视频在线| 51精品国内探花| 情五月亚洲婷婷| 91操人视频| 欧美色碰| 日日狠狠久久偷偷四色综合免费| 久草热8精品视频在线观看| 色丁香久久| 五月精品| 亚洲精品另类| 五月婷婷免费在线观看| 97精品综合久久| 第四色五月婷婷| 草婷婷在线| 丁香六月婷婷综合| 中文无码婷婷| 操日视频| 婷婷综合av| 性生活久久人妻| 粉嫩AV久久一区二区三区 | 精品9l九九九九九77777| 深爱网深爱综合网| 久久久久久人妻| www.seqingwuyuetian| 激情五月天啪啪视频| 婷婷午夜综合| 涩 五月 婷婷 狠狠| 丁香五月日啪| 丁香激情网| 日本成人综合| 深爱激情综合| av一区免费看| 狠狠草综合网| 国产伦亲子伦亲子视频观看| 这里只有精品,日韩视频| 91热爆在线| 五月天婷婷基地综合网| 另类激情综合| 久久九九囯产| 天天噪夜夜爽| 免费无码毛片一区二区A片| 婷婷五月激情四月综合 | 激情五月综合视频| 日日杆天天| 久激情网| 久久视频婷婷视频| 99在线免费视频| 综合网视频| 久久久9久| 日韩无码人妻一区二区三区综合| 五月婷婷激情网| 婷婷五月在线综合| 日本va欧美va欧美精品88| www.99.色| 99re这里只有精品首页| 欧美69久成人做爰视频| 天天爽天天爽天天爽天天爽天天爽| 直接看的AV| 婷婷丁香综合色AV| 五月天,激情四射,婷婷频道| 激情五月婷婷色综合| 色五月天在线| 色五月天婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷 | 久99综合婷婷| 女操碰| 日韩 中文 欧美| 日本人人草草| 97五月久久丁香婷婷| 99精品国产在热久久婷婷| 丁香五月天啪啪a日本| 91人人妻人人操人人爽| 思思久久青草热| 操大屄五月天视频| 婷婷六月伊人| 色婷婷av综合网| 婷婷开心六月| 免費观看aV在线网址| 丁香五月婷在线观看| 丁香婷婷浪潮AV久久综合| 五月成人综合| 日韩AV成人电影| 六月婷婷在线视频| 爆乳熟女-区二区三区| 婷婷开心五月| 激情五月婷婷啪啪| 少妇人妻人伦A片| 色色五月婷婷久久| 久久婷婷综合网| 久久综合性| 久久久这里有精品| 色五月综合网| 99综合网| 色婷婷五月基地在线| 欧美成人猛片AAAAAAA| 天天干天天操天天干天天操天天干天天操 | 色九月婷婷丁香| 国产资源在线视频| 五月天开心婷婷激情网站| 大伊香蕉玖玖爱| 99精品视频偷拍| 婷婷激情综合| 可以看的av网站| 综合激情五月丁香9999久久精| 国产毛片精品一区二区色欲黄A片 极品人妻VIDEOSSS人妻 | 91人妻人人操| 强伦轩人妻一区二区电影| 婷婷色五月天色| 五月丁香六月成人| 91超级碰碰| 久久99综合| 婷婷六月爽| 亚洲综合色婷| 另类的婷婷| 大香蕉啪啪啪| 五月丁香六月婷婷免费视频| 狠狠色综合图片| 激情六月天婷婷| 久久青青日本视频| 99在线视频资源| 五月综合久久| 99精品成人无码A片观看金桔| 五月天综合区| 91啦丨九色丨刺激中文| 91啪啪网| 99re6热在线精品视频播放速度| 91一起艹| 综合激情五月丁香9999久久精| 草草夜夜操| 婷婷久久综合久色| 秋霞日本免费毛片A片| 色情五月婷婷| 婷婷五月免费观看| 影音先锋男人av资源站| 99爱精品| 99啪啪| 国产欧美精品AAAAAA片| 六月丁香婷婷五月| 五夜丁香| 婷婷欧美| 99色热综合| H亚洲| h在线看免费版在线看| 色五月婷婷色| 欧美性生交XXXXX无码小说| 夜丁香五月婷婷| 久久久婷丁香五月天激情综合| 五月天婷婷无码| 97色伦另类图片小说视频| 免费无码毛片一区二区A片| 五月婷婷免费在线观看视频| 任你日视频| 99热色精品| 九九色99| 综合五月丁香六月婷婷| 偷拍五月丁香| 欧美色六月婷婷| 97sese婷婷| 五月婷婷久久综合| 婷婷瑟五月天久久综合| 9久热在线精品| 色色色色综合网| 极品 少妇 内射| 久热爱大香蕉在线蜜臀悦色 | 久草五月| 亚洲蜜桃精久久久久久久久久久久 | 97五月婷婷| 啪色综合| 99热这是里只有精品| 丁香婷婷五月综合欧美另类| 五月丁香婷婷综合久久| 另类综合激情| 99ri视频在线观看| 六月丁香婷| 久久人人人人妻| 久久久久激情网| 大香蕉伊人久久| 中文乱子伦视频| 婷婷伊人网| 日韩免费视频| 精品人妻一区| 深情六月婷婷综合久久| 丁香五月婷婷少妇| 五月婷婷中文字幕| 亚洲视频另类| 1024日韩| 丁香婷五月天开心六月| 婷婷五月丁香啪啪| 91玖玖| 成人视频网| 桔色成人在线| 99九九热视频| 亚洲色五月| 色色色色热| 五月天婷婷基地| 丁香五月亚洲综合丝袜| 色色网站在线免费观看视频| 五月婷婷丁香在线| 色婷婷狠狠久久综合五月| 99精品在线观看视频| 一本大道熟女人妻中文字幕在线| 色五月婷婷在线| 97成人丁香婷婷| 婷婷综合激情| 大学生高潮无套内谢视频| 五月婷婷丁香六月| 丁香五月天啪啪| 亚洲旡码| 六月色播| 亚洲VA口| 色色热| 五月花免费视频| 97色色色色色色色色色色色色色| 91精品婷婷国产综合久久| 性高潮久久久久久-九九九九九九九九九九热-成人AV | 亚洲精品V天堂中文字幕| www.夜夜操.com| 激情综合网五月天天| 99热官网精品在线| 色偷偷综合| 亚亚州久久高潮| 丁香蜜臀黄色婷婷五月天| 免费看片在线观看| 天天天天操| 色色99| 九九免费在线视频| 91狠狠色色丁香婷婷综合久久| AAA级久久久精品| 成人网站在线观看视频| 丁香色综合| 婷婷五月亚洲激情| 成人资源在线| 日本人人超碰| 99热e| 欧美成人精品老美女噜噜噜| 那里有AV网址| 亚洲人成网站999综合| 激情六月婷婷| 日日干日日| 操操操操操电影网| 丁香五月成人| 91主播在线| 99热免费| 欧美综合123区| 久久A V无码视频| 六月丁香五月激情亚洲AV| 久久婷视频| 国产黄色在线观看| 丁香五月婷久久| www.操逼comm| 99热超碰| 综合久久六月| 欧美日韩精品人妻狠狠躁免费视频| 五月丁香91| 五月天激情亚洲| 深爱激情小说五月婷婷| 99日本精品视频热| 日韩精品电影| 成人五月丁香花| 99性爱视频| 久久伦乱| 婷婷五月激情视频| 色吧五月婷婷六月丁香| 色婷婷久久天天性爱| 4399精品一区二区| 丰满少妇乱A片无码| 婷婷在线免费| 婷婷在线激情| 五月婷婷狠狠干| 九九综合精品| 99九九视频精彩在线| 果冻传媒A片一二三区| 久久五月天综合| 色欲婷婷五月天丁香| 丁香婷婷五色月| 九九黄色网| 9 99免费视频| 亚洲成人在线观看网址| 国产精品99久久久久久久女警| Av大香蕉| 噜噜狠狠色综合久| 99这里只有精品99| 伊人五月久久| 色五月综合婷婷久久综合婷婷久久综合婷婷久久综合婷婷久久 | 五月丁香爱婷婷深深| 综合网色综合| 开心色色五月天综合| 狠狠穞A片一區二區三區| 超碰九色| 99a级片| 亚洲另类视频| 久久66成人网站| 丁香伊人综合| 五月激情啪啪| 激情AV在线| 97干在线看| 久色大香蕉| 色综合99无码 | 色色网五月激情| 天天爽天天爽天天爽天天爽天天爽天天爽天天 | 精品怡红九九九| 色婷婷91激情小说| 99热99在线| 五月天激情网址| 狠狠色噜噜狠狠狠狠狠色综合久久| 开心五月天激情网| 日日操日日撸| 狠狠综合网| 在线观看免费狠狠色丁香香综合| 强伦轩人妻一区二区电影| 色99欧洲色19| WWW五月婷婷| 丁香六月婷婷久久综合| 色六月婷婷| 99精品国产在热久久婷婷| 久操人| 婷婷日本色| W色综合| 久久久av久av久片一区二区| 久久久GOGO无码啪啪艺术| 丁香婷婷六月| 色五月婷婷丁香五月| 久久婷婷五月天激情| 激情综合色播| 欧美日韩AAA| 3www激情| 丁香五月婷婷骚视屏| 天天天添天天操| 男人综合网| 久这里只有精品| 操操操www.com| 日本妈妈乱| 中文网AV| 在线不卡视频| 123草逼网| 丁香五月www| 日本偷拍九九九| 丁香五月天堂网| 五月婷婷综合视频| 欧洲亚洲精品| 丁香五月婷婷偷拍| 五月天精品| 囯产精品久久欠久久久久久九大| 激情五月影院| 99色色色色| 五月天婷婷影院影院观看| 五月天天天色| 直接看的AV| www.99视频| 天天操电影院色狼性av| 狠狠狠夜夜夜| 国产无套精品一区二区| 欧美xx激情视频在线观看| 精品久久艹| 五月天色视频| 日韩av网址大全| 五月丁香亚洲综合网| 日日肏天天操| 五月激情婷婷女| 久久久久久久久人妻| 久9热视频在线观看| 婷婷涩涩五月天| 色五月偷偷| 大香蕉婷婷久久| 九九九九综合| AAA久久| 婷婷丁香五月天综合AV| 中文字幕综合| 五月天堂色| 黄网免费看| 无码se| 91九九| 婷婷激情九月| 成人毛片在线免费观看| 婷婷五月激情视频网| 亚洲免费视频网站| 婷婷五月激情五月丁香五月| 91在线视频观看午夜福利| 国产偷人爽久久久久久老妇APP| 色色色色色色色色网站| 天天操婷婷| 99热在线中文字幕| 亚洲AV免费在线| 色婷婷激情| 亚洲亚洲人成综合网络| av网址在线播放| 亚洲成人AV高清字幕| 影音先锋男人av资源站| 香蕉久日夜| 午夜精品久久久久久久爽| 91久久久久久久久久18| 视频一区二区在线| 久久婷婷的综合色丁香五月| 9l视频自拍九色9l视频在线观看| 色色色国产| 九九人妻福利| 五月激情婷婷色| 丁香五月激情视频| 婷婷五月综合网| 婷婷97碰碰| 激情综合网五月婷婷| 色99在线| 97在线观看| 欧在线一区| 黄色一级影片| 91碰碰碰| 国产精品色色666| 亚洲天天免费| 婷婷夜夜夜夜| 俺也高清无码高清视频| 夜夜撸日日操| 久久婷婷伊人| 久久久免费精彩视频| 日韩AV在线影片| 丁香五月色色婷| 99福利导航| jiqingtaose五月天| 精品综合久久久久久五月天| 天天色官网| 99久热| 这里只有精品免费视频| 99激情| 五月天婷婷色综合| 超碰在线综合| 久久久久这里都是精品| 欧美五月丁香在线观看| 天天干天干| 一区二区三区视频| 婷婷五月六月| 国产特级毛片AAAAAAA高清| 九九Y精品热播| 亚洲AV无码成人精品区电影网| WWW久久久| 色五月丁香婷婷综合| 婷婷成人综合五月| 天天色天天操天天射| 国产一级片| 成人无码髙潮喷水A片| 日本久碰| 99热69| 国产亚洲99久久精品| 色五月婷婷激情五月| 五月天亚洲综合网| 岛国AV网| 成人做爰A片免费看网站找不到了| 五月天综合色| 91超碰九色| 天天肏屄夜夜爽| 夜夜操激情| 九月激情综合| 丁香五月影院| 九九九九中文字幕| 大香蕉综合在线| 久久 这里只有精品1| 色五月婷婷九月| 这里只有精品视频在线| 午夜微拍福利| 丁香五月日韩| 成人婷婷桔色| 99久久大片| 婷婷丁香熟妇综合网| 久在线88综合| 久久Xx| 午夜色色色极品视频| 午夜九九电影| 婷婷六月啪啪| 婷婷99热| 另类视频五月天| 激情综合九| 人妻22p| 色婷婷婷av| 五月婷婷播| 婷婷亚洲欧美丁香五月| 91操人| 5月丁香美女影院| 婷婷的色色五月天| 日韩色色小视频| 色五月视频,小说| 激情另类综合| 激情五月综合网丁| 婷婷色在线播放| 婷婷五月天亚洲色| 91视频综合网| 狠狠操狠狠| 去色色五月天| 婷婷基地成人五月天| 亚洲色色色色| 色播婷婷五月天| AA片在线观看视频在线播放 | 六月丁香网| 激情婷婷黄色五月| 在线国产精品色| 五月丁香婷婷综合视频| 国产操碰| WWW.国产| 青青艹b| 色综天天综合| 五月综合缴情网| 色婷婷丁香五月在线观看| 婷婷五月影院| 六月丁香天堂| 五月婷婷六月丁香激情深爱| 亚洲激情精品| 另类激情五月| 丁香五月婷婷国产av| 久久亚洲婷婷| 欧美美美女性色视频| 97av在线视频| 色色丁香色五月| 六月色婷婷欧美| 色久五月天| 久99热| 中文av在线观看| 一區四區歐美日韓| 狠狠爱五月婷婷| 五月Huangsewang| 婷婷五月天色色| 丁香婷婷六月在线资源观看| 91超碰在线观看| 天天色情站| 91婷婷色五月| 久久er这里只有精品| 色播五月丁香综合| 日韩欧美成人片| 五月婷婷久草| 超碰99在线观看| 日日操天天| 婷婷精品| 成人版视频在线观看| 思思热在线免费视频| 久久机热/这里只有精品| 色99免费视频中文| 99在线观看免费精品视频| 综合色影| WWW.HENHENL.| 99热超碰在线| 色色a| 91狠狠色丁香婷婷综合久久狠丁香综合久久精品 | 国外亚洲成AV人片在线观看| 人人妻人人澡| 五月丁香六月合|