久久亚洲成a人片熟女精品色一区二区三区|国产精品视频第一精品视频|av天堂热无码手机版|亚洲?v无码久久无遮挡|国产精品偷伦视频免费观看国产|麻豆国产自产精品丰满熟妇|av无码av不卡一区二区|久久亚洲精品中文字

ARTICLE DETAIL

資訊詳情

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

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

Verilog實現(xiàn)FPGA密碼鎖:矩陣鍵盤與狀態(tài)機設(shè)計實戰(zhàn) 說實話這幾年接觸了不少想入門FPGA的朋友如果你問哪個項目能一口氣把Verilog的核心基本功串起來我通常會推薦電子密碼鎖。這個項目看著不起眼卻把矩陣鍵盤掃描、按鍵消抖、狀態(tài)機設(shè)計、動態(tài)顯示刷新、外設(shè)控制這些數(shù)字邏輯里的硬骨頭全部放在了一個具體場景里。今天要分享的就是這樣一個基于Verilog的FPGA密碼鎖工程核心交互是通過4x4矩陣鍵盤輸入按鍵值在待機狀態(tài)下連續(xù)輸入12進(jìn)入修改密碼功能整個工程從模塊劃分、狀態(tài)機設(shè)計到仿真上板我按實際開發(fā)順序完整講一遍。1. 密碼鎖整體功能設(shè)計與方案選型1.1 功能清單與用戶交互流程先把功能需求列清楚。這個工程模擬的是日常使用的電子密碼鎖核心功能是上電后處于鎖定狀態(tài)用戶通過矩陣鍵盤輸入6位密碼輸入完成后按確認(rèn)鍵觸發(fā)校驗密碼正確進(jìn)入解鎖狀態(tài)密碼錯誤則蜂鳴器報警并累計錯誤次數(shù)連續(xù)錯誤達(dá)到3次系統(tǒng)鎖定一段時間。修改密碼的入口就是標(biāo)題里說的輸入12在待機狀態(tài)下先按數(shù)字1緊接著按數(shù)字2系統(tǒng)識別到這個組合指令后進(jìn)入修改密碼模式。完整的用戶交互流程大致如下系統(tǒng)上電默認(rèn)密碼為000000顯示界面提示待機。在待機狀態(tài)輸入12進(jìn)入修改密碼模式如果輸入的是其他數(shù)字則當(dāng)作密碼輸入的開始。修改密碼時先要求輸入原密碼驗證身份驗證通過后再輸入新密碼并且新密碼需要連續(xù)輸入兩遍兩次一致才真正寫入存儲。正常密碼輸入以#鍵確認(rèn)*鍵可以清除當(dāng)前輸入內(nèi)容。密碼校驗通過后進(jìn)入開鎖狀態(tài)綠色指示燈點亮數(shù)碼管顯示OPEN此時按下*可以重新鎖定。密碼校驗失敗紅色指示燈閃爍蜂鳴器長鳴錯誤計數(shù)加一連續(xù)三次錯誤進(jìn)入鎖定狀態(tài)30秒內(nèi)不接受任何輸入。這個流程覆蓋了FPGA入門階段最常用的幾個外設(shè)交互方式也把狀態(tài)機的狀態(tài)遷移玩明白了。很多教程里的密碼鎖只做校驗不解鎖或者只解鎖不能改密其實是不完整的。加上12改密這個入口后狀態(tài)機至少要多出驗證原密碼輸入新密碼確認(rèn)新密碼三個子狀態(tài)復(fù)雜度上來了但學(xué)習(xí)價值也上來了。1.2 為什么不用單片機而用FPGA做這件事用單片機做密碼鎖可能幾十行C代碼就搞定了為什么還要在FPGA上用Verilog重寫一遍這個問題幾乎每個做這個項目的人都會問。我的看法是這個項目在工程上確實不是最優(yōu)解但在學(xué)習(xí)上是很好的訓(xùn)練場。FPGA和單片機最本質(zhì)的區(qū)別是硬件并行性。單片機是順序執(zhí)行指令按鍵掃描、顯示刷新、蜂鳴器控制都靠CPU輪流處理一旦任務(wù)多了就會出現(xiàn)實時性問題FPGA則是每個模塊都在獨立運行鍵盤掃描模塊在跑的時候數(shù)碼管動態(tài)掃描也在跑狀態(tài)機也在跑它們之間通過信號握手和時序配合協(xié)同工作。這種多個硬件電路同時工作的思維方式只有在FPGA上才能體會到。另一個原因是密碼鎖的核心邏輯非常適合用狀態(tài)機表達(dá)。輸入密碼、校驗、開鎖、修改密碼這本身就是一個典型的有限狀態(tài)機模型。在Verilog里用三段式狀態(tài)機實現(xiàn)代碼結(jié)構(gòu)清晰綜合后的硬件電路也對應(yīng)真實的寄存器、組合邏輯和輸出邏輯。把這個工程的FSM寫穩(wěn)了后續(xù)做串口協(xié)議、以太網(wǎng)控制等復(fù)雜邏輯狀態(tài)機的設(shè)計范式都是一脈相承的。1.3 頂層信號與模塊劃分工程采用自頂向下的設(shè)計方式頂層模塊只做信號連接不寫具體邏輯。頂層輸入輸出信號如下表所示信號名方向位寬功能說明clk_50minput1系統(tǒng)時鐘50MHzrst_ninput1異步復(fù)位低有效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)機負(fù)責(zé)密碼校驗、指令識別、修改密碼流程控制。display_driver數(shù)碼管動態(tài)掃描驅(qū)動根據(jù)狀態(tài)機輸出顯示不同內(nèi)容。beep_driver蜂鳴器控制模塊管理提示音和報警音。異步復(fù)位的設(shè)計要特意講一下。絕大多數(shù)FPGA工程都用rst_n做低有效復(fù)位復(fù)位信號進(jìn)來了所有寄存器和狀態(tài)機回到初始狀態(tài)。密碼存儲寄存器也在復(fù)位時加載默認(rèn)密碼000000。這個設(shè)計保證了系統(tǒng)任何時候掉電重啟都能回到一個確定的起點不會出現(xiàn)上電后狀態(tài)機處于未知狀態(tài)的情況。2. 矩陣鍵盤輸入鏈路掃描、消抖與指令識別2.1 4x4矩陣鍵盤掃描原理矩陣鍵盤用4根行線和4根列線組成4x4的按鍵陣列共16個按鍵。它的原理就是分時掃描把4根行線依次拉低然后讀取4根列線的電平哪根列線被拉低了就說明當(dāng)前行和該列交叉位置上的按鍵被按下。舉個例子如果把第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左右結(jié)合消抖模塊一起工作。注意一點矩陣鍵盤掃描本身是一個持續(xù)進(jìn)行的循環(huán)過程不是按一次只掃一次而是每時每刻都在輪詢這樣才能保證按鍵按下時第一時間被捕獲。2.2 按鍵消抖模塊的實現(xiàn)與分析機械按鍵按下和松開的瞬間觸點會因為物理彈跳產(chǎn)生一串毛刺信號持續(xù)時間一般幾毫秒到十幾毫秒。如果不做消抖一次按鍵會被識別成多次表現(xiàn)出來就是按1跳出來好幾個1。消抖的思路很簡單對輸入信號連續(xù)采樣只有信號穩(wěn)定一段時間后才認(rèn)為按鍵狀態(tài)有效。我習(xí)慣用邊沿檢測加延時確認(rèn)的寫法先對輸入信號打兩拍消除亞穩(wěn)態(tài)然后用計數(shù)器判斷電平是否穩(wěn)定了足夠長的時間。50MHz時鐘下20ms對應(yīng)的計數(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根行列線不能直接塞進(jìn)來而是要結(jié)合掃描狀態(tài)來判斷。更常見的做法是掃描模塊先通過行列狀態(tài)計算出某個按鍵的原始觸發(fā)信號把這個觸發(fā)信號送給消抖模塊消抖穩(wěn)定后再作為有效按鍵脈沖交給狀態(tài)機。我在工程里就是這樣處理的key_scan模塊只負(fù)責(zé)判斷哪個鍵被按下輸出一個高電平脈沖key_debounce模塊負(fù)責(zé)把這個脈沖濾掉抖動變成干凈的鍵值。2.3 鍵值編碼與12組合指令偵測鍵值編碼就是把行列掃描結(jié)果映射成具體的數(shù)字和功能鍵。我在key_scan模塊中用一個case語句完成映射同時輸出一個key_valid信號告訴后續(xù)模塊當(dāng)前鍵值有效。這個key_valid是脈沖信號持續(xù)一個時鐘周期方便狀態(tài)機在上升沿采樣。輸入12修改密碼這個指令不能簡單理解成檢測到1就進(jìn)改密模式那樣太容易誤觸發(fā)了。我的處理方式是在待機狀態(tài)下狀態(tài)機首先進(jìn)入一個指令等待子狀態(tài)。此時如果收到鍵值1并不立刻當(dāng)作密碼的第一位而是進(jìn)入一個臨時的等待第二個鍵狀態(tài)記錄按鍵序列的前綴。如果緊接著收到的鍵值確實是2才真正進(jìn)入修改密碼模式如果收到的是其他鍵值就把剛才那個1當(dāng)作密碼輸入的第一位同時轉(zhuǎn)入正常的密碼輸入狀態(tài)。// 待機狀態(tài)下的指令偵測邏輯示意 S_IDLE: begin if (key_valid key_value 4d1) next_state S_CMD_WAIT; // 收到1先別急著當(dāng)密碼位 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進(jìn)入修改密碼 else if (key_valid) next_state S_PWD_INPUT; // 不是2回到密碼輸入流程 end這種設(shè)計在真實使用中非常重要。如果密碼恰好以1開頭用戶輸入第一個1就被強行帶走整個密碼輸入流程就亂了。所以工程里把12當(dāng)成一個組合指令放在待機狀態(tài)單獨偵測這個邏輯在仿真時一定要專門寫測試用例覆蓋到。3. 核心狀態(tài)機與修改密碼邏輯3.1 三段式狀態(tài)機把流程控制變成硬件思維整個密碼鎖最核心的部分是主控制狀態(tài)機我建議用三段式寫法第一個always塊負(fù)責(zé)狀態(tài)寄存器更新第二個always塊負(fù)責(zé)組合邏輯決定次態(tài)跳轉(zhuǎn)第三個always塊負(fù)責(zé)根據(jù)當(dāng)前狀態(tài)產(chǎn)生輸出信號。為什么分三段而不是一段式一段式把狀態(tài)跳轉(zhuǎn)和輸出邏輯寫在一起代碼短但是狀態(tài)遷移和輸出之間互相耦合改一處容易帶崩另一處而且輸出的組合邏輯容易產(chǎn)生毛刺。三段式里狀態(tài)更新是純粹的時序邏輯次態(tài)判斷是純組合邏輯輸出邏輯可以做成寄存器輸出時序更干凈排查問題也方便。做復(fù)雜狀態(tài)機的時候三段式的優(yōu)勢會非常明顯。3.2 狀態(tài)定義與跳轉(zhuǎn)關(guān)系這個工程的狀態(tài)定義如下狀態(tài)名含義說明S_IDLE待機狀態(tài)系統(tǒng)空閑偵測12指令或密碼輸入S_CMD_WAIT指令等待狀態(tài)已經(jīng)收到1等待確認(rèn)下一個鍵是否為2S_PWD_INPUT密碼輸入狀態(tài)允許輸入6位密碼顯示輸入進(jìn)度S_CHECK密碼校驗狀態(tài)用戶按下確認(rèn)鍵觸發(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確認(rèn)新密碼狀態(tài)第二次輸入新密碼與第一次比較狀態(tài)跳轉(zhuǎn)的核心路徑S_IDLE在收到數(shù)字鍵后進(jìn)入S_PWD_INPUTS_PWD_INPUT輸入滿6位后按#進(jìn)入S_CHECKS_CHECK比較通過進(jìn)S_OPEN不通過進(jìn)S_ERR_WAITS_ERR_WAIT在錯誤計數(shù)滿3次后進(jìn)S_LOCKED否則回到S_IDLE。修改密碼路徑是S_IDLE收到12后進(jìn)S_CHG_VERIFY驗證原密碼通過后進(jìn)S_CHG_NEW1再進(jìn)S_CHG_NEW2兩次一致后寫回密碼寄存器回到S_IDLE。關(guān)鍵的狀態(tài)跳轉(zhuǎn)代碼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) // # 確認(rèn)鍵 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中按下確認(rèn)鍵后要同時判斷兩次輸入是否一致一致才更新密碼寄存器。3.3 密碼校驗與錯誤計數(shù)邏輯密碼校驗的位寬是6位十進(jìn)制數(shù)每一位對應(yīng)一個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; // 進(jìn)入鎖定清零等待下次解鎖計數(shù) else err_cnt err_cnt 1b1; end end錯誤計數(shù)為什么要單獨設(shè)計一個常見錯誤是把連續(xù)3次錯誤理解成只要錯過一次等下次輸入時清零。實際上產(chǎn)品化的密碼鎖通常要求連續(xù)錯誤計數(shù)如果中間有一次正確輸入計數(shù)就應(yīng)該清零。我在設(shè)計里把清零條件放在S_OPEN也就是只有成功開鎖才清零這樣更加貼近真實需求。連續(xù)3次錯誤后進(jìn)入S_LOCKED鎖定時間我設(shè)定為30秒。鎖定計數(shù)器的設(shè)計是以1秒為基準(zhǔn)30次計時結(jié)束后才退出鎖定狀態(tài)。1秒的基準(zhǔn)可以用50MHz時鐘分頻得到也可以用系統(tǒng)里已有的掃描時鐘倍頻注意復(fù)位和暫停邏輯要處理好。3.4 修改密碼流程的細(xì)節(jié)與二次確認(rèn)修改密碼流程看著簡單實際實現(xiàn)時有一個特別容易忽略的點在S_CHG_NEW1輸入的新密碼和S_CHG_NEW2再輸入一次的新密碼要分別存放在兩個獨立的臨時寄存器里。如果共用一個寄存器第二次輸入就會把第一次覆蓋掉后面做一致性比較時兩次數(shù)值永遠(yuǎn)相等這個bug在仿真階段很難暴露上板測試才能發(fā)現(xiàn)。正確做法是定義兩份24位寄存器。S_CHG_NEW1狀態(tài)下按鍵值寫入new_pwd_1S_CHG_NEW2狀態(tài)下按鍵值寫入new_pwd_2。在S_CHG_NEW2按下確認(rèn)鍵時同時判斷new_pwd_1和new_pwd_2是否相等相等才把new_pwd_2賦給密碼存儲寄存器否則回到S_IDLE并給出報錯提示。這里還有個交互設(shè)計問題用戶在新密碼輸入過程中輸錯了某一個數(shù)字怎么辦我的處理是*鍵做退格刪除每次按下刪除最后一位。這要求狀態(tài)機同時處理數(shù)字鍵追加確認(rèn)鍵結(jié)束刪除鍵回退三類輸入事件。實現(xiàn)上不復(fù)雜但對狀態(tài)機的健壯性要求提高了建議把刪除邏輯放在每個密碼輸入狀態(tài)里都處理一遍。3.5 密碼存儲方案與默認(rèn)密碼加載密碼存儲我用了一個24位寄存器pwd_reg復(fù)位時初始化為24h000000。為什么不用RAM因為密碼鎖只保存一個密碼寄存器完全夠用而且讀寫邏輯清晰綜合后占用的邏輯資源也很少。RAM適合存儲大量數(shù)據(jù)用在這種場景反而增加復(fù)雜度。pwd_reg的更新只發(fā)生在兩個地方復(fù)位初始化和修改密碼成功時。修改密碼成功條件要寫清楚——必須在S_CHG_NEW2狀態(tài)下且兩次輸入一致。這個寫入條件如果漏掉狀態(tài)限制可能會出現(xiàn)狀態(tài)機還在S_CHG_NEW1時就把半截密碼寫進(jìn)去的情況導(dǎo)致密碼變成亂碼。另外建議把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)掃描方式核心原理是人眼的視覺暫留效應(yīng)。六個數(shù)碼管共用8根段碼線如果同時點亮所有管子會顯示一模一樣的數(shù)字所以必須分時選通某一時刻只點亮一個位顯示這個位對應(yīng)的段碼然后迅速切換到下一位循環(huán)往復(fù)。當(dāng)切換頻率超過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掃描基準(zhǔn) 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è)計的這個千萬不能搞混。工程里用的某學(xué)習(xí)板是共陰數(shù)碼管所以段碼是 08h3f18h06的寫法。如果板子是共陽段碼就要按位取反。上板前先讓一個數(shù)碼管顯示一個固定數(shù)字驗證段碼表方向再繼續(xù)往下做別等全部寫完再調(diào)試不然出了問題都不知道是掃描時序錯還是段碼錯。4.2 狀態(tài)相關(guān)顯示內(nèi)容切換不同狀態(tài)下數(shù)碼管顯示的內(nèi)容完全不一樣。我在display_driver模塊里做了一個顯示數(shù)據(jù)選擇器根據(jù)當(dāng)前狀態(tài)選擇要顯示的四位數(shù)據(jù)源狀態(tài)顯示內(nèi)容說明S_IDLE顯示------或默認(rèn)提示待機界面S_PWD_INPUT顯示輸入位數(shù)的*保護(hù)密碼隱私也可以顯示實際數(shù)字便于調(diào)試S_ERR_WAIT顯示Err錯誤提示S_OPEN顯示OPEN開鎖提示S_LOCKED顯示Lock鎖定提示修改密碼狀態(tài)顯示OldNewAgai等區(qū)分不同改密階段輸入密碼時顯示*還是顯示數(shù)字我在工程里留了一個調(diào)試開關(guān)。正式演示時用星號調(diào)試時打開開關(guān)能看到實際輸入的數(shù)字排查按鍵映射問題非常方便。這個開關(guān)就是一個parameter仿真的時改成顯示數(shù)字上板演示時改成顯示星號不用改邏輯。4.3 蜂鳴器提示音與LED指示蜂鳴器分有源和無源兩種。有源蜂鳴器內(nèi)部有振蕩源通電就響直接給高電平就行無源蜂鳴器需要外部提供特定頻率的方波才能發(fā)聲但可以通過改變頻率發(fā)出不同音調(diào)。我用的學(xué)習(xí)板是無源蜂鳴器所以beep信號不能一直拉高而是要產(chǎn)生一個方波。提示音的設(shè)計按鍵按下時短響一下持續(xù)50ms密碼校驗失敗時長響1秒開鎖成功時響兩下短音。這里就需要一個beep_driver模塊管理發(fā)聲的持續(xù)時間和節(jié)奏。實現(xiàn)思路是用狀態(tài)機和計數(shù)器beep_en信號來了計數(shù)器開始計時同時在時鐘分頻下翻轉(zhuǎn)beep輸出產(chǎn)生1kHz左右的方波時長到了就關(guān)閉輸出。LED指示相對簡單開鎖狀態(tài)點亮綠色LED錯誤狀態(tài)讓紅色LED閃爍。閃爍效果可以在已有的1Hz分頻時鐘下控制LED翻轉(zhuǎn)。這里要提醒一點LED指示和數(shù)碼管顯示是配合工作的數(shù)碼管顯示OPEN的同時綠色的開鎖LED必須同步點亮否則用戶感知會混亂。輸出邏輯統(tǒng)一在狀態(tài)機的第三個always塊生成就能保證一致性。5. 仿真驗證與上板調(diào)試5.1 Testbench與模擬按鍵任務(wù)仿真階段的目標(biāo)是驗證狀態(tài)機的所有路徑尤其要覆蓋12改密這個組合指令。我習(xí)慣在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); // # 確認(rèn)鍵 end endtask實際仿真時Testbench更常見的是直接驅(qū)動ctrl_fsm模塊的輸入端口把key_valid和key_value當(dāng)作按鍵模塊處理后的結(jié)果這樣避開矩陣鍵盤掃描時序?qū)W⒂跔顟B(tài)機驗證。矩陣鍵盤掃描模塊的驗證另寫一個Testbench模擬行列信號的變化。仿真的關(guān)鍵路徑至少覆蓋正確密碼開鎖、錯誤密碼三次鎖定、12進(jìn)入改密、原密碼錯誤拒絕改密、兩次新密碼不一致回退、修改密碼后使用新密碼成功開鎖。這幾條路徑走通了功能上基本就沒有大問題。5.2 仿真階段容易踩的時序坑第一個坑是狀態(tài)機沒有復(fù)位初始值。如果復(fù)位時current_state沒有明確賦值為S_IDLE仿真波形里就會出現(xiàn)X態(tài)導(dǎo)致整個狀態(tài)機亂跑。所有狀態(tài)寄存器、計數(shù)器、數(shù)據(jù)寄存器復(fù)位時一定要給確定值。第二個坑是組合邏輯的鎖存器推斷。寫狀態(tài)機的第二個always塊時如果某條分支沒有覆蓋所有變量賦值綜合工具會推斷出鎖存器導(dǎo)致行為異常。避免的辦法是在case前先給所有信號賦默認(rèn)值next_state current_state;并且明確列出default分支。第三個坑是按鍵脈沖和時鐘沿的競爭。我設(shè)計的key_valid是脈沖信號在Testbench里如果賦值和狀態(tài)機采樣沿完全對齊仿真可能看到0或1不確定。解決辦法是讓Testbench里的脈沖偏離時鐘沿比如在時鐘下降沿附近改變信號或者使用非阻塞賦值的時序。真實硬件里按鍵脈沖突發(fā)時間遠(yuǎn)大于一個時鐘周期不會出現(xiàn)這個問題但仿真里必須處理。5.3 上板調(diào)試方法與引腳約束上板調(diào)試的第一步不是燒整個工程而是先燒一個最簡單的點亮LED工程確認(rèn)板卡和下載鏈路正常。然后逐個驗證外設(shè)先讓數(shù)碼管顯示固定數(shù)字驗證段碼表再寫一個掃描程序按矩陣鍵盤的鍵觀察鍵值是否正確最后才燒整體工程聯(lián)調(diào)。分段驗證能大幅縮小出問題的范圍。引腳約束是FPGA上板最容易出錯的地方。矩陣鍵盤的8根線要分配到指定的IO管腳還必須確認(rèn)板卡原理圖上的行列定義。比如原理圖上某個位置標(biāo)著KEY_ROW0實際連接到FPGA的某個Bank某個引腳約束文件里就寫對應(yīng)位置。行列定義反了會導(dǎo)致按鍵映射錯亂可能的表象是按1出來的是5。這類問題不需要改邏輯把約束里的行和列交換就行。調(diào)試內(nèi)部信號建議用FPGA自帶的邏輯分析儀抓取key_value、current_state、pwd_match這幾個關(guān)鍵信號配合按鍵操作觀察它們的變化是否符合預(yù)期。我遇到過的一個情況是數(shù)碼管顯示輸入位數(shù)的*數(shù)量總是不對邏輯分析儀一看發(fā)現(xiàn)狀態(tài)機確實收到了6個按鍵脈沖但第一個脈沖被當(dāng)成了指令前綴的1進(jìn)入S_CMD_WAIT后第二個鍵才真正開始密碼輸入導(dǎo)致密碼位數(shù)少一位。這類問題用仿真很難發(fā)現(xiàn)邏輯分析儀抓到真實時序立刻真相大白。5.4 硬件實測中的一次真實調(diào)整模擬項目X的實測過程中遇到過一個問題修改完密碼后用新密碼開鎖數(shù)碼管顯示密碼輸入確實按了6下但校驗總是失敗。上板抓信號后發(fā)現(xiàn)S_CHG_NEW2狀態(tài)下第二次輸入密碼的存入邏輯和按鍵確認(rèn)邏輯產(chǎn)生了沖突按下#確認(rèn)的瞬間key_valid信號同時觸發(fā)了一次數(shù)字鍵存入結(jié)果把確認(rèn)鍵當(dāng)成了新增的一位數(shù)字密碼多了一位比較自然失敗。這個問題的根因是輸入狀態(tài)的按鍵處理只判斷了數(shù)字鍵類別沒有把確認(rèn)鍵從數(shù)字鍵里分離出來。修復(fù)方式是檢查所有密碼輸入狀態(tài)必須同時判斷是否有效按鍵鍵值是否為確認(rèn)鍵兩個條件只有既有效又不是確認(rèn)鍵時才把數(shù)據(jù)存入緩沖區(qū)。這個改動很小但暴露了狀態(tài)機設(shè)計時事件優(yōu)先級的重要性——確認(rèn)事件必須優(yōu)先于數(shù)據(jù)事件處理。6. 常見問題與排查技巧實錄6.1 問題速查表把開發(fā)過程中容易遇到的問題整理成表格方便大家對照排查現(xiàn)象可能原因排查方向按鍵按下去沒反應(yīng)行列信號接反、消抖時間過長、key_valid沒接上用邏輯分析儀抓行列信號按鍵按一次識別兩次消抖模塊沒生效或消抖時間太短確認(rèn)key_out輸出不抖動拉長CNT_MAX數(shù)碼管顯示亂碼段碼表方向錯、位選信號接錯先讓固定位顯示固定值逐個排除密碼永遠(yuǎn)校驗失敗位寬不一致、輸入緩沖沒清、比較時序錯抓pwd_match信號確認(rèn)兩個24位值12進(jìn)入不了改密指令偵測狀態(tài)沒實現(xiàn)、S_CMD_WAIT被跳過看狀態(tài)機是否進(jìn)入S_CMD_WAIT修改密碼后老密碼還能開新密碼寫入條件沒限制在S_CHG_NEW2檢查pwd_reg的賦值條件蜂鳴器一直響有源無源選錯、方波頻率沒控制好確認(rèn)蜂鳴器類型和驅(qū)動方式6.2 排查方法論我的排查習(xí)慣是從現(xiàn)象往前倒推。比如密碼修改失敗先確認(rèn)是不是進(jìn)入了改密狀態(tài)再確認(rèn)原密碼驗證是否通過然后是兩次輸入是否一致最后是寫入條件是否觸發(fā)。每一步用邏輯分析儀抓對應(yīng)的狀態(tài)和信號就像沿著管道追溯水流一樣走到哪一段斷了故障點就在那一段。這里想特別強調(diào)一下把功能分段驗證的重要性。整個工程在綜合前就拆成模塊逐個確認(rèn)鍵盤掃描模塊能否正確輸出鍵值、消抖模塊能否濾掉毛刺、狀態(tài)機在仿真里能否跑通所有路徑、顯示模塊能否正確刷出內(nèi)容。模塊邊界測試通過后再做聯(lián)調(diào)一般不會出現(xiàn)那種讓人摸不著頭腦的玄學(xué)問題。6.3 幾個容易被忽略的設(shè)計細(xì)節(jié)第一個是密碼輸入緩沖區(qū)的清零時機。S_IDLE進(jìn)入密碼輸入前必須把上次輸入殘留的6位數(shù)據(jù)清零。如果不做這個動作用戶上次輸入了4位就按了確認(rèn)密碼校驗失敗后再進(jìn)入輸入狀態(tài)會導(dǎo)致緩沖區(qū)還是上一次的前4位加新輸入的部分內(nèi)容拼出來一個亂碼密碼。第二個是顯示刷新和狀態(tài)切換的同步問題。狀態(tài)切換發(fā)生在時鐘沿顯示模塊讀取狀態(tài)值可能產(chǎn)生一個周期的延遲這是正常的。但如果顯示數(shù)據(jù)源切換導(dǎo)致某個瞬間看到上一位的數(shù)據(jù)需要在位選切換和段碼輸出之間加一拍寄存器打拍避免拖影現(xiàn)象。第三個是12指令的時效性。S_CMD_WAIT狀態(tài)如果沒有超時機制用戶按了1之后長時間不按2狀態(tài)機就卡在等待狀態(tài)再也無法輸入密碼。我的處理是增加一個短延時計數(shù)器比如50ms內(nèi)沒有收到下一個有效按鍵就自動把1當(dāng)作密碼第一位跳入密碼輸入狀態(tài)這樣既保留了組合指令又不會阻塞正常使用。第四個是復(fù)位按鍵的必要性。為了調(diào)試方便可以在頂層外加一個手動復(fù)位按鍵強制讓整個系統(tǒng)回到初始狀態(tài)。這個按鍵在開發(fā)階段幾乎不可或缺因為狀態(tài)機一旦進(jìn)入某個不可恢復(fù)的狀態(tài)不可能每次斷電重啟手動復(fù)位最直接。正規(guī)設(shè)計中復(fù)位信號本身也要消抖否則可能出現(xiàn)復(fù)位不徹底的情況。最后一個值得說的是代碼風(fēng)格。Verilog代碼的模塊化程度直接決定調(diào)試效率。每個模塊只做一件事接口信號用有意義的名字命名狀態(tài)機狀態(tài)名用全大寫加前綴這樣邏輯分析儀里看到的信號名一目了然。我做這個密碼鎖時把所有模塊的端口都加上了注釋過了兩個月回頭看代碼還能快速上手這一點在工程上比炫技式寫法重要得多。這個密碼鎖工程做完回頭看最有價值的不是能開鎖這個結(jié)果而是把狀態(tài)機的設(shè)計方法從能跑通練到了穩(wěn)定可靠。后面做復(fù)雜的通信協(xié)議、數(shù)據(jù)處理流程時遇到多狀態(tài)多條件的分支控制第一反應(yīng)就是從狀態(tài)圖開始畫起再落到三段式Verilog狀態(tài)機。對FPGA入門來說這個項目是個很好的分水嶺它把語法知識、模塊劃分、時序概念、上板調(diào)試串成了一整條鏈路一旦全流程跑通過一次后面再碰其他項目心里就有底了。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
97超碰欧美中文字幕| 99九九精品| 狠狠操狠狠| 91网站18+| 国产精品亚洲高清在线| 97干色天堂| 网友自拍第1页| www.99热| 极品色综合| 99啪啪视频| 久热大香蕉网站| 眼镜人妻101.com| 国产av青草| 神马久久久久久| 五月天综合网| 夜夜躁狠狠躁日日躁av| 操死我干死我| 亚洲日韩精品久久久久一区壹牛| julia高潮后不停追击中出| 亚洲脚交| 久久亚洲av成人无码国产| 亚洲色图 图片| 亚洲天堂五月天国产| 日本精品人妻少妇一区二区| 97欧美性爱| 久久视频少妇美女| 7777欧美成是人在线观看| 尤物视频网 刘玥| 欧美成人性爱视频免费观看| 97超级久久| 九九热视频在线观看| 特污精品女优骚货黄色视频在线免费观看| 五月香婷婷| 97国产精品一区二区传媒公司| 高清无码国产亚洲| 少妇精品久久| 欧美日韩免费专区在线| 日韩精品国产一区二区| 亚洲综合一| 在线看免费无码AV天堂的| 中日韩久久久免费看| 久久婷婷伊人| 大学生美女口爆| 怡红院成人av| 人妻精品综合中文字幕在线 | 色在线综合| 91久久堂| 亚洲一区二区麻豆影院| AV乱伦专区| 东京热精品97综合网| 国产熟女免费观看久久| 久9九综合在线| baisiav| 国产捆绑一区| 秋霞一区二区三区四区五区六区七区| 日韩午夜精品一区二区三区电影| 日韩久射综合| 九九久久国产精品| 人妻-91porn| 欧美天天综合网| 亚洲第一页欧美| 性开放中文AV高清无码免费看| 四虎在线免费视频| 九九无码久久精品视频| 日韩欧美tv一区二区在线观看| 综合少妇网| 久久久艹艹艹| 成人黑料社久久| 久久久新亚洲AV| 91国产美女丝袜足交精品视频 | 国产成人精品午夜福利| 欧洲无码一区二区| 噜噜噜狠狠色综合| 日韩欧美成人午夜福利| 不卡视频一区蜜桃视频 | 丁香五月综合| 久久精品国产亚洲5555| 超碰这里有精品| 99热99re超碰精品| 多乙久久久久久| 精品视频在线观看精品| 东京热AV男人的天堂| 综合国产97| 国产精品岛国片在线观看| 91欧美亚洲| 亚洲国内精品成人不卡| 欧美性暴力猛交XXXX | 99re免费| 麻豆一区二区AV天美| 大香蕉99热| 亚洲麻豆精品二区三区| 中文字幕一区二区三区视频播放| 偷拍亚洲熟女视频播放| 男人天堂欧美| 亚洲资源一区| 黄页网站成人免费| 九九九九九九九| 在线综合 亚洲 欧美中文字幕| 曰韩av中文字幕专区| 日韩免费av片高清无码| 中文乱码字幕观看| 亚洲色综合| 一本久久久精品| 精品久久九| 欧洲一区二区三区免费| 久久久av爱| 国产精品小视频一区二区三区| 99精品久久| 亚洲国产成人精品无码专区| 巨爆乳一区二区爆乳区| 乱伦AVxx| 乳欲人妻办公室奶水| 成人蜜乳小视频网站| 午夜一区| 日韩啊V| 天美传媒AV在线播放| 亚州欧美在线| 欧美色91| 这里只有97精品| 蜜臀久久久99久久久久 | 久操凹凸视频| 久久五十路熟女人妻| 日韩成人高清一区二区| 无码区蜜乳| 国内毛片国产欧美拍| 国产无码成人无码| 日本在线观看网址| 中文?日韩?免费?精品| 日韩欧美加勒比| 蜜臀久久99精品久久久久久-DVD| 欧美激情综合网| 久久六六| 天天夜躁日日躁狠狠2002| 91香蕉国产尤物视频| 在线视频97| 欧美激情综合网| 亚洲情色综合| 99婷婷一区二区| 12一15性XXXX粉嫩国产| 丝袜人妻av一区二区| 国产在线能看的你懂的| 中文字幕国产| 国产精品自在自拍视频| 中文字幕 国产区| 我爱大香蕉| 91色综| 亚洲欧美另类少妇精品| 粉嫩久久久久| 欧美精品激情| 亚洲精品国语在线播放| 午夜无遮挡男女啪啪视频| 久久久久亚洲三级电影| 综合操逼| 屌逼传媒| 欧美夜色| 亚洲精品97p| 国产操逼网站亚洲一级黄色| 日韩无码黄色片| 激情五月综合网| 日韩情色视频| 日韩资源网| 日韩有码中文字幕女同性恋| 岛国在线国产| 麻豆啪啪啪视频| 亚洲精品视频二区| 吉川爱美亚洲二区在线| 怡春院久久| 天天干人人看综合| 日本成人电影资源网| 国产超碰| 黄色小说亚洲| 视频黄站| 精品国产三级av韩国在线| 樱花蜜乳av| 人妻少妇av在线观看| 天天操女人| 中文字幕诱惑制服人妻丝袜美丝袜美 | 中文字幕、久久精品国产2020、久久综合久久自在自线精品自、亚洲 | 久久久穴999| 欲色啪| 天天肏视频| 亚洲精品国产日韩无码AV永久免 | 久久av色| 午夜操一视频一区| 欧美一级美片在线观看免费| 91neishe| 国产精品禁久久久精品| 色综合V| 极品色www影院| 嗯嗯嗯啊啊啊操的我好爽| 熟女一区二区三区四区| 亚洲熟伦熟妇AV无码春色| 中文久久爆乳| 亚洲美女 晚间男人天堂 | 亚洲成av人片色午夜乱码| 亚洲一二三四区机械| 91超碰在线观看| 性videos欧美熟妇hdx| 大香蕉九九| 欧美 亚洲 另类 综合| 狠日欧美| 女人爽到高潮潮喷18禁网站| 一区,二区,三区视频| 欧美97超碰| 免费精品福利在线观看| 中国的操老妇女| 国产欧美在线观看免费观看| 五月婷婷激情| 熟妇无码视频三区| 欧美大香蕉专区网| 国产一区二区在线播放,久久亚洲精品中文字幕第一区,亚洲精品在线中文字幕视频 | 插入逼91| 禁止观看美女黄| 蜜臀久久99精品久久久久久酒店 | 欧美性爱一级操| juliaann丝袜大战黑鬼| 亚洲欧美成人网站AAA| 强奸a片网| 国内成人圈中文字幕无码视频| 欧美亚洲国产91在线| 激情小说五月天| 97色欧洲| 成人片在线播放| 99热这里只有精品1| 黄片色区软件| 亚洲综合图片在线| 免费伦费视频在线观看| 欧美乱妇狂野欧美在线视频| 乱伦一二三区| 欧美狠狠弄| 97免费视频在线观看| 综合熟女| 超碰在线91| 成人在线日韩| 夜夜爽夜夜操| 啊啊啊啊啊在线观看网址| 亚洲熟女诱惑| 嗯嗯嗯好爽| 欧美色图亚洲色| 99国产人成精品| 四虎免费在线观看| 成年男人的天堂| 欧美一区二区三区不卡高清视频| 亚州操操穴网| 亚洲日本激情| 成人精品欧洲亚洲| 亚洲国产欧美中文永久| 阿姨一区二区免费视频-高清正片西瓜视频下载app-T450AV | 综合 亚洲 欧美| 色婷婷五月天| {男男暴菊gay无套网站| 综合91网| 久久久久国产无av| 亚洲国产日韩精品久久久| 五月激情小说| 国产v亚洲v日韩v欧美v片另类| 成年男人的天堂| 爽极品影院| 亚洲系列欧美| 久久一二三四五六七八九区区区| 无遮挡男女激烈动态图| 97爱b| 久久一区二区三区入口| 91无遮挡| 亚州中文字幕超碰97| 8050无码八戒| 性色亚洲| 蜜臀久久精品久久久久视频| 狠狠五月天| 午夜人人操| 久久婷婷欧美| 日本一本一区二区三区四区五区欧美日韩中文字幕 | 中文字幕久久亚州无码| www.zbzhongsen.com| 色欧洲| 96国产污污污丝袜| 天堂蜜桃无码视频一区二区| 天天操天天干一区二区 | 综合久久久久久久综合网| 人妻喷水| 北京美女一区二区| 91久久久久久| AV乱伦专区| 九九九草| xxx亚洲午夜天堂| 日本性爱不卡视频| 91综合在线| 精国久久一区二区三区98| 99久久婷婷国产综合精品草原| 欧美Ⅴ性爱| 久久久久久久久国产| 天无日色综合| 五月婷婷AV| 黄色成人网久久久久久| 78精品| 免费97视频| 超碰日本97美女人妻人人玩人人爱| 久久社区一区二区三区| 精品熟女呻吟久久91| 国产熟女二区| 亚洲 中文 女同| 亚洲一本色道中文无码aV天美| av中亚| 久肏视频字幕| 蜜臀亚洲综合一二三四区| 亚洲成人碰碰| 精品久久久亚洲AV成人网站| 久久久久久电影| 精品久| 久久精品女同亚洲女同13| 九九英色视频| 77777亚洲蜜臀精品久久综合蜜臀| 国产精品一区二区三区,亚洲综合| 国产精品点击进入在线影院高清| 精品人妻久久久| 狠操91,com| 超碰97网址| 999狠狠综合| 综合久久中文字幕综合日韩精品| 中文字幕亚洲热播人妻| 激情五月综合开心五月| 日本不卡二区| 婷婷五月天激情四射| 91精品国| 国产一区二区精品久久久不卡蜜臀| 色综合20p| 97内射偷拍| 美女露胸露尿口| 亚洲麻豆精品二区三区| 狠狠色色| 99久热| 大香蕉综合| 粉嫩在线一区二区懂色| 国产精品激情久久久久久久| 尤物视频一区| 中文字幕日韩人妻视频一区二区三区 | 色欲日韩欧美在线一区| 亚洲精品无码少妇久久| 国产免费永久精品无码| 色婷亚洲五月在线观看| 99啪啪| 婷婷啪啪| 激情欧美97| 啊视频在线| 加勒比海色香蕉婷婷| 精品二区三四区五电影| 亚洲青青草| 亚洲久久东京热一二三四五区视频| 日本精品性生活久久久| 欧亚日韩综合精品国产| 青青草久草AV| 国产精品对白自产拍| 色天天野狼综合社区| 亚洲综人| 91性片| 91中文字幕制服丝袜免费视频| 亚洲国产97在线精品一区| 99精品无码| 91欧美www| 一本色道久久综合精品婷婷| 国产无码精品久久久久久| 中文字幕在线免费观看2| 久操91视频| 久久av无码| 国产毛片久久久久久久| 天天干夜夜一操| 静品嫩模一区二区| 日本三级久| 91美乳| 亚洲人久久久网| 久久久91福利姬| 99re99在线视频| 偷拍盗拍亚洲色图图片| 亚洲码在线中文在线观看| 国产精品成人久久一区二区三区 | 台湾一区国产高清在线| 国产 日韩 欧美 中文 另类,国产 欧美 另类 制服 变态,高清 日韩 欧美 中文,高 | 欧美激情激情xxxx欧美专区| 一区不卡在线观看av| 国产精品激情久久久久久久| 欧美九9 9 9| 欧美色图天堂网m| 天天射夜夜| 欧美se综合| 国产美女口爆吞精视频| 人妻熟女av国产网站| 黑操B| 91性生活久久久| 超碰伊人在线| 国产午夜精品理论片a大结局| 国产精品99精品视频网站| 久久久久久国产精品免费网站| 婷婷五月综合在线| 国产AV天美| 成年人免费观看网站| 久久久久久久唑| 国产成年免费大片黄在线观看| 日本女人操逼| 金典av| 淫淫综合网| 亚洲一曲日韩精品| 亚洲欧洲小说图片视频| 97国产精品久久久久| 九九九九9999| 九九探花视频在线观看| 蜜臀亚洲中文| 国产精品久久久久9999小说| 中文字幕人成乱码熟女香港| 五月丁香影院| 夜夜操夜夜高潮夜夜爽国产精品区| 操一操摸一摸| 国内三级自拍小视频在线观看| av在线浏览| 91N综合网| 久久久久久久久成人av解说| 日欧美色| 青青草中文字幕| 日韩激情中文字幕有码| 国产婷婷一区| 久久色精品视频在线| 欧美系列在线一区二区| 国产一区麻豆免费观看| 啊啊啊啊啊在线| 国产精品视频精品一二| 国产精品亚洲日韩骚欢乐谷最新地址发布页huanieguty性屋娱乐妖精视频 | 人妻夜爽夜夜爽| 久久亚洲欧美中文字幕国语| 亚洲棕合电彰| 97综合网| 狠狠操夜夜操蜜桃视频三区| 啊啊啊骚| 美女黄频a美女大全免费皮| 一本大道综合伊人精品热热| 色呦呦国产精品免费看| 亚洲国产欧美日韩精品一区二区三区,国产一区二区三区在线看片,欧美性猛交 XXX | 少妇高潮对白在线观看| 国产精品第二页| 污色区网站| 看日韩美女二区三区免费操逼视频 | 国产精品嫩草影院免费| 精品十三区| 免费一二区| 色97| 超碰在线人人射| 天美国产精品| 免费观看一区| 欧美性爱一内片一区二区三区| 先锋女优在线观看视频| 丝袜美腿诱惑亚洲欧美视频在线观看 | 怡红院成人av| 欧美性爱第一区| 人人澡综合涩| xxxx网站亚洲精品| 91老熟女老女人国产老太| 欧美日韩另类在线| 好屌色综合| 先锋色眉乱伦资源| 日本三级韩国三级美三级91| 国产精品久久久久久 百度| 欧美一区二区三区成人性生活| 尤物黄色在线观看网站| 欧美激情久久久久| 日韩AV无码中文一区二区| 99re在线视频国产| 最新日韩黄片| 传媒在线观看一区二区三区| 七久久久| 国产精品黑人一区二区三区| 日日黄色三级网站| 亚洲砖码砖专无区2023| 日本免费二区三区| 2020中文字幕| 草草草视频在线免费看| 欧美A√综合网 | 青春草A| 日本东京热加勒比久久| 丰满熟女人妻一区二区三五十一路| 国产一级做a爰大片免费久久| 欧美色图自拍| 亚洲色图久久精品蜜| 国产内射爽爽大片| 日本孕妇孕交| 青青草操逼逼视频| A一区片| 欧亚揄拍偷拍精品视频| 日本99视频| 国产精品不卡一区二区电影| 操曰本熟女| A久久| 欧美性生活男人的天堂| 天天插天天操天天摸天天射天天看| 亚洲欧美国产其他二区| 婷婷婷婷婷婷久久久久| 亚洲十八禁止| 校园春色 男人天堂| 欧美真人抽搐一进一出gif| 亚拍在线| 人妻天堂综合网| 6080YYY午夜理论片在线观看| 91亚洲狠狠色| 日韩人妻网站| 日韩午夜啪啪视频| 日本一区二区三区免费观看| 久久久一二三四区| 欧美成人亚洲精品| 亚洲一区日韩| 亚洲激情在线观看一区| 99re视频在线播放青草| 成人五月天色网| 久久香蕉影院| 久久这里是精品| 国产欧美另类久久久精品课程| 久久水蜜臀亚洲AV无码精品| 97久久久| 日韩欧美中文| av爱爱爱| 97手机日韩| 久热99999| 天操天操夜操夜月操月年年操| 国产一区在线免费播放| 亚洲AV成人无码一二三久久| 好爽视频在线观看| 亚洲好色人妻| 欧美少妇高潮久久91| 又大又白奶子| www.色操逼| 在线无码视频| 国产欧美在线观看免费观看| 日逼97| 91美女国产在线| 一区中文字幕二区日韩| 日韩三级一区| 啊v视频在线观看| 三级激情网站| 成人一二| 在线亚洲欧美| 亚洲se91| 久久久偷拍| 人人澡人人澡人人| 欧洲亚洲人人爽爽视频| 国产五码丝袜屁眼| 国产污视频麻豆传媒一区二区 | 久久久98网站免费视频| 色婷婷导航| 日本三级网页| 日韩精品一区二区日韩| 人妻一区二区三区视频 | 操高情无码| 午夜国产乱伦视频| 操逼逼一区视频| 在线视频 亚洲精品| 99999亚洲| 91精品久久久久| 亚洲在线A| 四虎影视永久在线观看精品免费网站| 亚洲综合骚逼| 日本中文字幕一区| 啊啊啊啊啊啊啊在线| 欧美 亚洲 另类 综合| 国产女同性恋视频| 日韩激情视频| 好屌色综合| 日韩图区| 亚洲日本天堂| 久久9免费视频| 日本熟妇自慰性高潮一区二区三区| AV久日| 大香蕉日亚洲日本亚大| 国产久9| 超碰久久.com| 91五十路| 男插女青青影院| 久久精品国产亚洲妲己影视| 国产99精品一区二区三区免费| 三级AV入口| www.91逼逼.com| 无色无码| 色噜噜狠狠色综无码久久合欧美| 成人夜夜爽| 国产四虎在线| 三级网站超变态精品| 蜜臀久久久| 男人的天堂无码| 就去色综合| 一区二区不卡视| 91啦人妻| 人妻乱仑一区二区三区| 丁香六月激情综合| 色婷婷综合久久久久中文一区二区 | 精品一级毛片在线观看| 国产精品一区av在线| 亚洲成人一区二区精品| 99综合免费视频| 99自拍B亚洲 | 99精品九九九九九九| 中文字幕欧美丝袜07资源| 国产无马在线| 色乱二区| 98一区二区精品| 欧美后入视频| 大香蕉中文网| 国产无马在线| 久久欧美性爱视频| 欧美亚洲激情小说| 学生妹天天看| 欧美中文字幕精品人妻| 亚洲国产精品9999在线观看| www久| 91在线限制级| 久久久久久久久9| 欧美成人免费在线观看| 肉嘟嘟www视频在线观看高清| 大香蕉亚洲中文| 亚洲网污污污污| 欧美+日产+中文| 18禁免费视频| 丰满人妻-区二区三区免费| 日本东京热大香蕉a片| 99re视频在线播放青草| 国产日逼视频| 97色五月天完| 日本不卡免费二区| se吧提供国产乱老熟视频胖女人 | 五月天丁香网| 欧美日韩亚洲五月天婷婷| 欧美性性性| 操逼不卡中文字幕| 欧美中文字幕男人天堂久久精品| 九热超碰| 国产Av超碰| 青青草日韩无码| 国产中文日韩欧美一区二区三区人妻丝袜美腿| 污色区网站| 激情五月天丁香| 国产欧美黑人丰满在线| J?P?NESEHD熟女熟妇伦| 九九碰九九爱97超碰| 综合天天网| 91操操操操| 99热9| 国产精品乱码久久久、久久| 国产乱伦性爱区| 久久久久久久久久久久久久久性生活视频| 怡红院网站在线视频| 99在线免费公开视频| 丰满人妻一区二区三区四| 99精品无码| 福利伊人玖玖国产| 熟女AV一区| 香蕉国产精品麻豆亚洲欧美日韩| 男人天堂一区二区| 91N综合网| 日韩性爱视频免费在线 | 91亚洲情色| 秋霞一级视频在线观看免费| x97av| 思思热免费在线视频| 91在线免费观看处女| 天天网综合| 人妻少妇精品一区二区三区| 女生看匆91网站| 亚洲福利中文字幕在线| 精人妻无码一区二区三区伊人直播 | 国产小u女在线观看| 天天日天天屌天天操| 久久久精品中文字幕爱豆| 人人爱夜夜爱| 久久丁香久草综合网| 看看小穴| 97超碰站| 99999久久久久9国产精品| 亚洲97在线观看| 日本人体九九九九九九| 91五十路| 夜夜夜久久| 日韩欧美性吧婷婷乱伦大香蕉| 国模限制级电影| 九九碰九九爱97超碰| 亚洲欧美精品一区天堂久久| 99热在线播放| 四虎永久在线精品免费网址| 国产激情视频一区区三区| 操九九九九九九| 岛国爱情动作片在国产AV无码专区亚洲AV漫画 | 志村玲子视频一区二区| 97亚洲在线| 日韩情色视频| a片 xxxx受爽视频| 美女的肌被草喷水视频| 免费黄色片。| 久久久久久久久久久久久女过产乱-少妇高潮一区二区三区喷水-成人AV | 狠狠爱夜夜干| 久草大| 国产精品久久久久久久久久久久久久吹 | 91精品91久久久中77777| 91综合网在线| 人妻密肉在线观看| 精品无码久久久久久国产浪潮| 无码久| 国产18精品亚洲精品| 99热这里都是精品| 91女神在线视频| 97人人夜夜精品视频| 天天躁狠狠躁av| 久久性视频| 天天综合网网欲色| 美女主播色欲91抠b在线播放| 久操网视频| 久久成人东京热人妻| 91丝袜美女国产| 亚洲av综合伊人久久| 亚州色阁| 国产亚洲一黄| 小日子操bb在线看| 久久精品无码熟妇一区二区三区视频导航 | 色踪合AV| 日本高清电影欧美色图| 色欲av一区二区三区蜜芽| 国模久久在线| 精品91摸| 日韩丝袜二区| 久久久96| 啊灬啊灬啊灬啊灬高潮奶出了免费视 | 亚洲男人在线观看天堂| 熟女一区二区| 欧亚在线视频| 欧美性爱日韩高清| 久久久久久久久久久精| 高清不卡视频| 成人三级片无码| 欧美国产精品久久九九| 天天躁夜夜躁狠狠躁AV| 精品国产网站| 熟女视频久久| 国产乱伦性爱区| 亚洲交性| 亚洲蜜臀视频精品久久| 色97| 国产 丝袜 欧美中文 另类| 日韩欧无码一区二区三区免费不卡| 国产精品午夜福利视频| 嗯啊啊啊轻点视频 | 熟女AV一区| 精品夜夜澡人妻无码| 91人妻做a观看视频| 大JI巴好深好爽又大又粗视频| 欧美综合传媒| 91久久18禁| 偷拍 精品另类 凸凹了四区| 午夜电影在线观看无码专区| 国产在线能看的你懂的| 久久亚洲一区女同性恋中文字幕| 国产美女激情| WWW4虎| 91日韩在线| 岛国视频免费在线观看| 思思热在线视频免费| 亚洲成人ab| 国产精品毛片| 日韩电影天堂视频一区二区| 午夜呻吟欧美| 欧美躁死她一区二区| ?亚洲伊人伊成久久人综合网| 久久午夜鲁丝片| 中文字幕欧美丝袜07资源| 在线播放欧洲免费av| 欧美成人一区二区| 91伊人大香蕉| 99.色网| 91色艳| 六月天婷婷| 人成午夜免费大片| 欧美视频一区二区在线| 中文字幕一区二区日韩网| 国产又黄又粗又猛大片| 国产91 丝袜在线播放00-百度| 91精品操美女| 热热色综合网| 影音资源男人日韩| 视频二区熟女人妻| 中文久久96| 久久久男人的天堂| 韩国国产欧美情侣视频在线| 青娱乐大香蕉| 日韩情色AV| 天天舔九色婷婷| 国产盗摄美女如厕大神作品在线观看| 一本正道久久熟女| 顶级少妇BT天堂| 亚洲综合888| 超碰性爱97| 欧美高潮在线| 日韩ab网 | 青娱乐国产剧情av一区| 99热| 一中国女人毛片水真多| 精品国产Av无码久久久亚洲| 91啦人妻| 性爱视频啪啪啪啪| 欧美一级黄片视频在线| 成人三一级一片aaa| 精品一啪| 国产免费永久精品无码| 婷婷综合在线| 激情自拍 校园春色| 国产av白丝| 9热9热综合网| 婷婷15月天青娱乐| 亚洲九九爱| 色欧美色交综合| 久操频道免费在线呗看| 色香欲影| 思思热在线视频免费| 日本人妻中文字幕精品| 波多野结衣先锋影音| 亚洲最新a在线观看| 国内三级自拍小视频在线观看| AV九九| 久久熟女人| 青青操在线亚洲视频观看欧美在线| 亚洲色图国产另类| 91 国产丝袜在线播放-百度| 婷婷人妻激情| 新亚洲无码| 国产成年精品高清在线观看91| 日本性爱网址| 偷拍 精品另类 凸凹了四区| 中文字幕少妇色| 学生妹天天看| 在线欧美亚洲| 日本操逼视频不卡直接放| 人人爱人人操人人性| 国产一级片| 中美日韩毛片| 久久影视二区三区行押| 999精品乱码| 操操操五月天婷婷丁香影院| 8050无码八戒| 欧美日韩性感| 少妇色综合| 91性情| 精品人妻1区| 另类专区在线观看| 欧美一级欧美三级在线观看| 制服丝袜第二页| 日韩超碰97| 国产av强奸美女| 日日夜夜狠狠| 一区| 四虎影视精品| 精品人体无圣光凹凸| 婷婷五月色| 91激情网| 欧美少妇色图| 国产偷拍自拍在线视频| 天天综合AV| 99这里都是精品| 91在线免费精品视频| 在线观看黄色电话| 国内精品不卡无毒99999| 国产精品动态一区二区三区四四| 曰韩中文人妻视频| 免费a在线播放v| 九九热超碰97亚洲最新香蕉| 伊人欧美大香蕉视频| 性爱视频啪啪啪啪| 97舔舔| 精品人妻视频一区二区在线播放 | 多毛小伙内射老太婆| 97爱免费插| 97在线欧| 在线播放免费av福利片| 青青国产精品在线| 蜜桃网熟妇| 天天操人人操狠狠插| 狠狠 91| 蜜臀中文无码午夜| 秋霞久久亚洲精品成人| 97亚洲国产影视| AV天堂因数| 玖玖玖玖精品国产剧情| 91在线色| 日韩成人无码| 欧美男人一区| 欧美在线大香999| 黄页网站免费高清在线观看| 91 丝袜在线| 99re在线| 国产精品交换一区二区| KK色在线影院| 把腿张开老子CAO烂你| 一级黄碟在线观看| 在线a亚洲视频播放在线| 天天爽天天爽| 欧美色图99| 爆操无码| 精彩久久中文| 三级三级三级a级全黄三| 91九九九逼| 无码高清操逼| 久久久久中出| 老熟女91| 欧美日韩情色一区二区| 中文字幕制服诱惑| 五月激情综合网| 大香蕉视频啪啪啪啪| 久久99网站| 91 偷| 丁香五月天啪啪| 校园春色 亚洲| 国产热RE99久久6国产精品首| 精久久久| 最新日韩黄片| 4tube欧美女厕所| av资源在线观看少妇| 熟女熟妇一区二区三区视频| 性爱乱伦网址| 九九久久国产精品怡红院| 國產尤物AV尤物在線觀看| 伊人96在线| 国产又操| 久久线上视频免费看| 九九热精品视频在线观看| 亚洲高清91| 久草成人福利导航| 亚洲欧美国产va在线播放频| 欧洲中文字幕| 日本一区二区三区午夜观看| 精品无码一二三四区| 乱伦av麻豆| 精品制服美女中文一区二区三区| 十八禁视频网站| 欧美性性性| 毛片视频白嫩| 国产精品原创巨作?v网站| 久久久111| 一个人免费HD91视频| 色路综合| 91蜜臀在线久久久久| 国产精品嫩草影院午夜两性| 亚洲色香| a级理论午夜日本| 久久久久久久久一区二区三区| 天美传媒国产原创中文字幕亚洲欧美另类| 国产强奸无码乱伦| 亚洲第一二区另类图| 九月丁香综合网| 加勒比99999| 91老司机在线视频免费观看| 国模私拍一区二区三区神乳| 操逼999| 人人扣人人操| 97超碰站| 97精选久久| 欧美激情综合色综合啪啪五月| 成人毛片免费| 天堂综合| 色九九九九久| 日韩精品国产一区二区| 亚洲中文字幕久久无码精品| 小草三级久久观看| 国产女人和拘做爰视频| AV女资源| 蜜桃视频一区二区三区在线观看| 日本色色色视频| 欧美日韩中文视频播放| 欧美青青视频| 清柠毛片| 人人看欧美性爱| 999久久久九九九九| 97超碰亚洲| 任你艹| 日韩精品在线观看观看| 欧美激情 亚洲色图| 亚洲人妻熟妇三十三区| 夜夜草网站| 国产无码高清操逼视频| 97人人夜| 狠综合网| 六九九九| 亚洲黄色网址视频| 亚洲国产精品无码AV久久| 91无码人妻| 天天干2区3区| 亚洲福利中文字幕在线| 五码视频在线观看| 欧美姓爱综合网| 综合91网| 日韩伦理久 久久 清纯| 亚欧国产无码精品在线| 内射夫妻三片| 欧美亚洲手机在线| 啊啊啊啊好疼视频| 婷婷五月天久久精品视频一区二区三区 | 老熟女阿 国产91| 九九热精彩视频| 久久久久久夜夜夜夜夜| 亚洲成人久久美女| 岛国激情视频在线观看| 97欧美视频| 激情婷婷黑人91| 高清肉丝中文无码| 97激情97激情| 乱精品一区字幕二区| 欧美综合区| 中文字幕一区电影在线观看| A 天堂| 亚洲熟女综合一区二区| 九九热午夜欧亚国产视频| 欧美操逼视频二区| 亚洲精品久久久久久久久豆丁网| 操婷婷逼| 3P乱轮视频| 先锋激情∨在线视频播放| 精品综合久久久久久五月天| 久久精品区| 亚洲日韩97| 91熟女.com| 国产久久日| 日日夜夜国产综合| 一个人在线看的黄色电影网站| 五月丁香六月婷| 激情五月丁香五月| 亚洲精品国产精品乱码不99| 一牛影视成人片免费| 影音先锋新男人| 日本性交操一区二区不卡系列| 欧美在线91| 日韩超碰97| 天天综合欧美| 我想要 啊 啊 啊| 欧成人精品一区二区三区| 中文字幕欧美精品亚洲日韩蜜臀| 久久网亚洲| 欧美极品色| AV色五月| 大干人妻| 女人18精品一区二区三区| 久草老司机| 91热色| 97超碰影音| 无码二级三级| 外国免费性情大片| 亚洲中文字幕熟女少妇一区二区| 熟妇人妻丰满久久久久久久无码| 亚洲色性| 好涩综合| 亚洲综合91| 无遮挡男女激烈动态图| 思思久热在线精品66| 无遮挡又黄又刺激的视频| 夜草网站| 中文字幕日韩专区精品系列| 中国操逼无码| 黄色电影在线播放综合网站| 欧美性爱第一区| 国产精品一区二区三区,亚洲综合| 国产AV久久野战精品| 欧美国产伊人久久久久| 无码日韩网站| 五月婷婷六月丁香| 超碰三级秋霞| 嗯啊不要啊啊在线观看视频| 青青操少妇| 色哟哟av网址| 日本久久久久久久久久| 狠狠爱夜夜| 亚洲无码 国产无码| 欧 美 自 拍 偷 拍| 亚洲成人福利电影免费| 9色在线| 操九九九九九九| 亚洲AV无码久久精品蜜桃小说| 91影视亚洲| 偷拍导航视频网站| 啊啊啊好想要| 嗯啊视频免费在线观看| 成人免费福利网站国产| 狠狠干,狠狠操| xxx亚洲午夜天堂| 九九九九九精品十六| 夜夜春夜夜操| 97综合网| 日本天天操| 大香网伊人久久综合| 高清不卡一二三区视频......| 欧美在线55555| 亚洲熟女乱综合一区二区在线-...亚洲国产日韩欧美一区二区三区,久久久久久精 | 久久大香蕉97| 国产精品电| 国产传媒日韩| 国产精品99精品视频网站| 玖玖玖玖精品国产剧情| 丁香五月天社区| 97se综合网| 亚洲骚男同com| 一级二级在线观看| 亚洲精美粉嫩嫩泬在线观看| 久久婷婷五月天| 综合网欧| 神马久久久久久久久| 97超碰人人操人人操| 国产AV无码AV| 久久国产精品91| 美女91色黄18| 大学生美女口爆| 黄色性爱网网| 亚射在线| 啪啪啪男女亚洲中文字幕99| 天堂69亚洲精品中文字| 日韩精品一区的| 欧洲乱码视频| 99re视频这里只有精品| 日本 色 导航| 国产成人资源| 免费国产| 亚洲AV麻豆Aⅴ无码电影一| 亚洲无码一区二区三区三州| 999在线电影香蕉| 日本黄大片在线观看视频| 欧美,日韩,亚洲视频| 97玖玖人妻| 天天影视综合色| 国产精品永久免费10000| www.99视频| 白丝在线一区| a亚洲欧美色欲| 操操啪| a人片中文字幕一区二区| 香蕉视频欧美一卡二卡| 成人免费不卡在线视频| 精品人妻一区二区免费蜜桃| 97亚洲色图| 欧美精品久久久久久久久88| 97久久精品亚洲中六字幕| 中文字幕AV中出| 人妻乱仑一区二区三区| 九九热这里只有在线精品视 伊人草 成人菠萝蜜视频在线观看 | 亚洲色丰满少妇高潮| 亚洲欧美日韩偷拍色图| 久久久五月天| 欧美中字不卡| 在线岛| 97内射偷拍| 欧美日韩中文视频播放| 婷婷丁香久久| 自拍第一页| 日韩精品免费高清视频在线| 宗合情欲网| 日韩在线观看三级电影| 色5月婷婷| 久久99久久99精品天美传媒棢·纸:. | 黄片色区软件| 动漫区日韩区欧美区| 国产91福利小视频在线观看| 丁香五月成人| 欧美九九九| 久久婷婷影院| 97超碰影音| 免费在线观看AV无码网站|