日韩精品一区二区三区在线视频放-无码中文字幕V?一区二区-成年片免费观看视频-国内少妇人妻丰满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進入修改密碼功能整個工程從模塊劃分、狀態(tài)機設(shè)計到仿真上板我按實際開發(fā)順序完整講一遍。1. 密碼鎖整體功能設(shè)計與方案選型1.1 功能清單與用戶交互流程先把功能需求列清楚。這個工程模擬的是日常使用的電子密碼鎖核心功能是上電后處于鎖定狀態(tài)用戶通過矩陣鍵盤輸入6位密碼輸入完成后按確認(rèn)鍵觸發(fā)校驗密碼正確進入解鎖狀態(tài)密碼錯誤則蜂鳴器報警并累計錯誤次數(shù)連續(xù)錯誤達到3次系統(tǒng)鎖定一段時間。修改密碼的入口就是標(biāo)題里說的輸入12在待機狀態(tài)下先按數(shù)字1緊接著按數(shù)字2系統(tǒng)識別到這個組合指令后進入修改密碼模式。完整的用戶交互流程大致如下系統(tǒng)上電默認(rèn)密碼為000000顯示界面提示待機。在待機狀態(tài)輸入12進入修改密碼模式如果輸入的是其他數(shù)字則當(dāng)作密碼輸入的開始。修改密碼時先要求輸入原密碼驗證身份驗證通過后再輸入新密碼并且新密碼需要連續(xù)輸入兩遍兩次一致才真正寫入存儲。正常密碼輸入以#鍵確認(rèn)*鍵可以清除當(dāng)前輸入內(nèi)容。密碼校驗通過后進入開鎖狀態(tài)綠色指示燈點亮數(shù)碼管顯示OPEN此時按下*可以重新鎖定。密碼校驗失敗紅色指示燈閃爍蜂鳴器長鳴錯誤計數(shù)加一連續(xù)三次錯誤進入鎖定狀態(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)機表達。輸入密碼、校驗、開鎖、修改密碼這本身就是一個典型的有限狀態(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ù)位信號進來了所有寄存器和狀態(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ù)進行的循環(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根行列線不能直接塞進來而是要結(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就進改密模式那樣太容易誤觸發(fā)了。我的處理方式是在待機狀態(tài)下狀態(tài)機首先進入一個指令等待子狀態(tài)。此時如果收到鍵值1并不立刻當(dāng)作密碼的第一位而是進入一個臨時的等待第二個鍵狀態(tài)記錄按鍵序列的前綴。如果緊接著收到的鍵值確實是2才真正進入修改密碼模式如果收到的是其他鍵值就把剛才那個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進入修改密碼 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位密碼顯示輸入進度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ù)字鍵后進入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。關(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位十進制數(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; // 進入鎖定清零等待下次解鎖計數(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次錯誤后進入S_LOCKED鎖定時間我設(shè)定為30秒。鎖定計數(shù)器的設(shè)計是以1秒為基準(zhǔn)30次計時結(jié)束后才退出鎖定狀態(tài)。1秒的基準(zhǔn)可以用50MHz時鐘分頻得到也可以用系統(tǒng)里已有的掃描時鐘倍頻注意復(fù)位和暫停邏輯要處理好。3.4 修改密碼流程的細節(jié)與二次確認(rèn)修改密碼流程看著簡單實際實現(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按下確認(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時就把半截密碼寫進去的情況導(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ù)的*保護密碼隱私也可以顯示實際數(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進入改密、原密碼錯誤拒絕改密、兩次新密碼不一致回退、修改密碼后使用新密碼成功開鎖。這幾條路徑走通了功能上基本就沒有大問題。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ā)時間遠大于一個時鐘周期不會出現(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進入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ù)碼管顯示亂碼段碼表方向錯、位選信號接錯先讓固定位顯示固定值逐個排除密碼永遠校驗失敗位寬不一致、輸入緩沖沒清、比較時序錯抓pwd_match信號確認(rèn)兩個24位值12進入不了改密指令偵測狀態(tài)沒實現(xiàn)、S_CMD_WAIT被跳過看狀態(tài)機是否進入S_CMD_WAIT修改密碼后老密碼還能開新密碼寫入條件沒限制在S_CHG_NEW2檢查pwd_reg的賦值條件蜂鳴器一直響有源無源選錯、方波頻率沒控制好確認(rèn)蜂鳴器類型和驅(qū)動方式6.2 排查方法論我的排查習(xí)慣是從現(xiàn)象往前倒推。比如密碼修改失敗先確認(rè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è)計細節(jié)第一個是密碼輸入緩沖區(qū)的清零時機。S_IDLE進入密碼輸入前必須把上次輸入殘留的6位數(shù)據(jù)清零。如果不做這個動作用戶上次輸入了4位就按了確認(rè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)機一旦進入某個不可恢復(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
返回資訊列表
黄色区免费观看中文字幕| 国产辣妈在线视频福利| 99热精品在线观看| 中文字幕黄片在线| 亚洲,欧美,综合网| 佐山爱中文字幕| 丁香五月天堂| 2020中文在线一区二区三区| 女人18精品一区二区三区| 亚洲国产成人精品无码专区| 国产对白刺激视频| 日韩欧美传媒一区国产| www.av不卡中文字幕| 天天操av懂色| 久久大香蕉| 国产女性无套 免费观看| 久久久久久九九九| 成人夜夜| 碰超人人在线一区二区三区| 91在线页| 大香蕉综合在线| 九九亚洲| 久操精品网| 秋霞蝌科网日本一区| 一区二区三区在线美女| 色黄污美女啪啪啪免费网站| CCYY草草影院地址入口| 综合影院永久入口国产| 91操操操操| 九九九只有精品| 精品九九九九九九九九九| 这里只有精品视频| 天天拍天天操| 久操高青| 麻豆久久久久久久久丝袜| 东京热男人的天堂网| 国产免费操逼| 久久性爱大全| 亚洲天堂7777| 国产日韩区| 精品午夜福利导航| 天天综合网在线观看| 精品久| 91老司机精品| 美女9118禁| 舔舔啊| 亚洲国产中文字幕| 久久久久久中文| 久久99草| 玖玖爱综合网| 亚洲女优有码无码高清| 91美乳| 91女人的网站| 亚洲一二三精品久久网| 欧亚日韩综合精品国产| 天天综合站| 久久9免费视频| 91女色| 日骚逼视频| 综合亚洲欧美| 成人小说另类在线| 婷婷深爱五月| 亚洲乱色视频一区、二区在线| 精品人妻1237| 久久女同性恋一二区| 狠色婷婷久久一区二区三区_| 欧美大片天天看| 97日视频| 麻豆色约约| 色99999| 牛牛AV人人夜夜澡人人爽| 亚欧免费| a级理论午夜日本| 伊人久操| 97精品国产97久久久| 99re6久热只有精品6在线直播| 中文字幕亚洲欧美在线不卡| 国产久久日| 久久久久白虎| 久久香蕉超碰97国产精品| 在线另类| 91挑色欧美| 91 偷| 欧美人人曰人人操人人射射 | 日本黄色天堂| 日韩精品中文字幕人妻| 操操逼操操逼操操逼逼| 在线不卡视频| 941超碰| 凹凸视频在线一区二区| 久久东京国产精品视频| 亚洲天堂性爱| 91操熟女视频| 成人一级性爱| 大奶尤物鲍汁淫荡欧美视频粉嫩夜夜骚| 中文欧丝袜诱惑| 91天天综合日韩欧美| 日韩欧美成人午夜福利| 亚洲综合激情五月久久| 妇女乱色二区| 在线观看成人性爱免费小视频| 久久超碰爱| 夜夜夜夜爽| 日本影视久久免费| 国产成人在线观看综合| 鸥美极品| 天堂а√在线最新版在线| 97香蕉碰碰人妻国产欧美| 夜夜一区二区| 91高潮| 国产小黄片在线免费观看 | 强奸乱伦 亚洲一区| 亚洲精品视频在线| 亚洲天堂电影网| 国产一区二区精品久久99| 九九九九88| 欧美狠狠狠| 黄片aaaaa一区| 男人天堂日日夜夜| 一本色道久久天天射天天干| 97网址www| 男人在线天堂| 91红杏| 久久精品一区二区| 蜜桃精品一区二区三区ww| 91久久久老司机| 无码直播久久久| 久久综合日韩亚洲欧美| 欧美黑人极品高潮喷吹熟女黑人性暴力日韩在线欧美极品一区 | 97国产高清视频在线观看| 日本天堂网| 欧美精品激情| 色九月婷婷| 亚洲双插| 久久本道| 精品九九国产无码| 97操综合| 99爱精品| 美女操逼A A| 亚洲一二三四区机械| 韩日色费| 麻豆伊人网| 免费一级黄色录像影片| 都市激情人妻一区二区青青操视频| 蜜乳AV.COM| 中文字幕、久久精品国产2020、久久综合久久自在自线精品自、亚洲 | 国精综合一二三区影视| 一区二区三区视频国产免费| 熟女高潮合集-永久久久-成人AV| 亚洲第一成人影院色播| 久久同城AV| 婷婷天堂站| 国内一级精品| 91 丝袜在线| 日韩av不卡在线看| 欧美春色| 国产视频一区二区三区久久亚洲天堂 | 成年人性爱日韩| 东北女人性交| 九久久九精品视频| 无码精品久久久天天影视| 精品国产久久乱码| 91无人区卡一卡二卡三乱码入口最新版:能让用户有更多选择的选择-经典说说-爱 | 亚洲密乳AV| 综合色拍| 久久九九99| 无码人妻精品一区二区中文| 91在线观看,天天综合| 性站| 91精品国产高清久久久久久,亚洲成人 | 亚洲电影91| 婷婷五月综合激情| 操逼操网| 国产不良强奸视频免费看| 精品综合久久久久久97| 99r九九| 熟女乱伦A| 国产视频97| 又摸又舔在线观看网站| www.久久99| 婷婷五月天激情四射| 久操在97| 夜夜嗷嗷一区二区| 99成人| 午夜视频好爽啊| 91热| 色偷偷2020免费视频播放| 人妻日日夜夜精品| 丝袜熟女一区二区三区| 色在线综合| 天天日夜干| 99青草| 欧美日韩第一页| 亚洲无码超碰免费| 91色香| 色哟哟av网址| 狠操91,com| 91色艳| 国产92麻豆天美精品色欲5| 亚洲色婷婷久久91| 国产妇女精品视频青青草| 久久99国产综合精品女同| 亚洲偷拍自拍在线视频| 欧美视频中文字幕区| 国产日韩欧美操逼视频| 欧美高清18A片| 麻豆精品.欧美精品.日韩精品.| 久久久一区二区| 中出789在线视频| 婷婷五月天补不补| 超碰97爽| 五月婷婷hd| 日本亚洲vr欧美不卡高清专区| 淫妻综合网| 日本欧美国内在线| 亚洲少妇中文字幕网址| 91精品国产高清久久久久久,亚洲成人 | 婷色五月| 国产一区二区av综合| 免费自拍三级综合| 在线岛| 亚洲欧美高清无码| 欧美18 在线观看| 免费A片三p视频| 黑人猛交| 日韩欧美tv一区二区在线观看| 人妻一区视频| 五月天黄色激情视频| 看一级特黄a大一片| 自拍视频一区在线观看| 国产精品福利资源在线尤物| 九热中文字幕| 91亚洲欧美激情| 国产在线播放成人免费| 天天草天天日| 久久亚洲AV无码专区国产精品| 国产AV激情无码久久无码| 99色热国产视频精品| 人人 操人人 操人人| 婷婷午夜清品久久久久久久性色视频观| 蜜臀久久99精品久久久| 日韩极品无码B| 午夜福利无毒不卡| 在线观看黄色电话| 91蜜臀熟女| 一区二区三区四区久久视1| 嗯嗯,好大,好爽,好骚 | 天天综合网在线| 国产女人9999| 男人天堂2030| 999亚洲国产视频| 黄aaaaaaaaaaaaaaaaaa色网站| 五月天综合在线| 亚洲熟妇图片| 欧美一二级| 日韩一卡二卡三卡| 免费一级a毛片久久久久久鸭绿欲| 久久久久国产一区二| 大香蕉九九| 国产精品久久久蜜臀| 国产一区二区三区,在线观看观看| 精品国产综合久久福利,热99这里有精品综合久久,99热这里只有免费国产精品,精 | 九九热视频这里只有精品| 欧美日韩中国x| 日韩小电影| 日韩三级天堂在线观看| 青青草日本无码| 亚洲凸凹超碰成人| 女沟厕偷窥piss小便| 无码WWW免费视频网站| 人人操AV| 亚洲有薄码区久久在线一区| 91碰超| 这里有精品| 久久精品一区二区三区蜜桃臀| 日韩精品-原创伙伴| 一区二区影院| 国产一| 98人妻精品一区二区色欲| 国产成人无码网站在线视频| 久神马| 操一操摸一摸| 免费视频无码| 午夜经典| 国产成人www免费人成看片| www.狠狠干.coom | 伊人麻豆传媒| 欧洲色色| 欧美欧美啪啪视频| 91人妻人人妻| 亚洲欧美啪啪| WWW黄片COM| 久久久一区二区| 国产av激情无码久久天堂| 五月婷婷丁香六月| 97超碰欧美精品| 人妻少妇av在线观看| 夜夜操中文字幕| 中字幕人妻一区二区三区| 后入美女国产| 女性91网站| 水澄无码AV| 91美女視頻| 一级做a爰片久久毛片图片| oumeisetu综合| 欧美 亚洲 第一页| 亚洲天堂色图| 91性高朝久久久久久久久| 久久久久久亚洲精品不卡人乳 | 亚洲精品成人激情在线| 国产熟码AV| 人妻日日干| 国产精品亚洲日韩骚欢乐谷最新地址发布页huanieguty性屋娱乐妖精视频 | av操操不卡| 日本韩国国产精品一区| 日韩无码AB| 精品无码一区二区| 久热香蕉精品在线视频| 秋霞 色色| 91在线丝袜| 国产污视频麻豆传媒一区二区| 久久精品视-一级做a爰片性色毛片16美国-中国女与老外在线精品 | 欧美日综合| 美女高潮视频91| 少妇高潮99p| 婷婷亚洲综合| 欧美黄色片AAAAA| 伦伦成年午夜免费视频| 国产丝袜欧美在线视频| 欧美成人贴图| 五月天精品| 97碰久久| 成·人免费午夜在线观看| 少妇一区二区三区| 免费看片黄| 欧美精品久久久久久久久88| 绑缚麻绳人妻寝取完整版| 亚洲熟伦熟妇AV无码春色| 久久日韩肥臀| 欧美亚洲图片| 久久日本熟妇熟色高清 | 精品国产Av无码久久久伦古装| 综合网欧| 在线播放成人网站| 少妇一区二区三区| 久久 久久国内精品亚洲| 国产成人免费观看在线视频| 日韩无码极品| 91狠狠狠| 亚洲永久永久永久永久一级一级一级精品| 亚洲欧美中文一区二区三| 亚洲情色 自拍| 国产精品九9| 翔田千里无码中出中文字幕| 精品无人区麻豆乱码1区2区图片| 中美日韩毛片| 国产一区二区三区精品观看啪| 97se亚洲综合自| 久久99999| 久久激情综合| 岛国在线一区二区三区| 日韩AV无码网站| 超碰综合97在线| juliaann精品熟女一区| 亚洲国产欧美中日韩成人综合视频| 亚洲欧美人妻| 天堂资源站| 黑丝少妇麻豆| 99在线免费视频| 欧美日韩香蕉| 一级人妻性爱视频| 亚洲图片视频小说| 日日干夜夜欢| 77国产精品| ss久久| 色色色欧美| 成人a大片在线观看| 日韩特级毛片免费观看全集| 91爱网| 欧美人妻熟女在线| 欧美激情亚洲情色| 久操大香蕉超碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰 | 亚州色站 日韩电影| 欧美亚洲日韩人妻在线观看| 久久五月综合| 手机看av网站在线看| 久综合国内精品自在自线| 欧美黄页| 成人一二| 日韩无码精品综合久久| a亚洲欧美色欲| 97超碰美女| 91精品导航| 97国产精品久久久久| 91欧美偷拍| 色诱avtt| 日韩精品9999| 超碰碰小说97| 影音资源男人日韩| 黄久在线| 中文字幕精品三级久久久| 1000午夜黄色| 天美一区在线| 四虎884| 另类欧美色| 亚洲图片欧美色图| 尤物av网站免费在线播放| 97干在线视频| 综合国产影视三级| 午夜超爽| 睡产熟女乱伦| 99色在线观看| 91挑色欧美| 另类专区加勒比| 91精品久久久久久| 久久人体一区二区| 在线免费观看高清无码视频 | 18岁禁 茉莉成人久久| 欧美人妻色| 天美传媒av在线| 亚洲AV无码久久精品蜜桃小说| 欧美激情久久久久| 蜜臀99久久国产| 久久久亚洲| 国产精品无码av嫩草| 人人考人人摸人人干| 免费夜夜爱黄色视频毛片| 91亚州日韩高清| 91夜色chaopeng| 操老熟女AV| 热热色青青草| 欧美高清18A片| 九九干| 婷婷综合五月| 久久99手机免费视频| 午夜综合在线| 亚洲日韩电影| 俺去俺来也在线www| 久久精品一区二区三区不卡| 2019午夜福利视频| 97国产精品视频| 一类av片在线看| 一色网男人的天堂| 欧美亚洲激情一二三| 丝袜美腿av女优在线| 强奸国产在线| 婷婷伊人一区| a级免费在线观看| 成人性爱美曰韩| 中文字幕一区 二区三四五 区日 日骚| 美欧老女人97| 91综合网站| 一起草精品人妻| 熟女一区二区三区| 久久男人的天堂| 亚洲,日韩,欧美,成人播放| 国产成人网站在线观看| 天天碰操中国年青熟妇| 亚洲天堂一区| 六月丁香啪啪啪| AV色五月| 男人高清无码一区二区| 97视频7| 亚洲天天更新| 色官网在线| 后入式五六区| 男人a天堂手机在线版| 不卡码视频| 清纯唯美亚洲综合| 亚洲第一精品在线视频| 日日日大屁股骚女人精品| 国产精品美女久久久久久网站| 九九色热| 日韩天天综合| 久久精品人体AV| 日本大香蕉综合网红本杳社区| 亚一综合久久久久久久久久| 四季AV一区二区凹凸精品小说| 搡老女人老91妇女老熟女| 情侣开房子拍 日韩无码 女的很漂亮| 天天操妹子| 蜜桃无码AV一区二区| 伊人久久亚洲色欲综合网站 | 日韩无码服务区| 成人激情无码在线视频| 国产精品视频在线播放| 午夜福利激情在线视频| 97色诱| 九九视频黄色片| 丁香六月婷婷| 国产精品操| 97天天爽| 男女猛烈无遮掩视频免费软件| 中文字幕丝袜美腿| 中文字幕一区二区免费在线| 女人的天堂大香蕉网| 天天谢天天干| 99国产精品自在自在| 偷窥自拍A片| 天天网综合| 极品粉嫩一区二区| AV一区观看| 神马久久69| 五月婷婷丁香中文字幕| 91色图| 性色中出| 干干干天天| 一本色道久久综合亚洲二区三区| 这里只有精品久久| 色天使亚洲综合在线观看| 青木玲在线不卡| 日本午夜精品理论片A级APP发布| 亚洲熟女av中文字幕| 泰国AV在线观看| 老司机深夜18禁污污网站| 综合91网| 人妻久久久久久久久久久久久久久| 亚洲久久久| 丁香婷婷激情五月天无毒不卡 | SUV一区二区在线看| 五月天黄色激情视频| aaaa黄片| 看免费的黄片| 亚洲性高潮| 亚洲黄色影视| 国产精品久久99日日| 久久久久久精| 超碰69| 丁香婷婷久久| 东京热天堂网| 日韩精品熟妇| 美女被艹尤物视频| 91啦人妻| 97在线观| julia国产在线| 熟妇女人妻呻吟久久AV| 欧美一区二区三区日韩| 色翁荡息又大又硬又粗又爽| 玖玖爱伊人玖玖爱| 人妻天天爽夜夜爽精品2| 日本道久久综合色色| 亚洲视频中文一区| 欧美热图99| 久久精品99| 情色五月天久久久| 色综合中文字幕不卡| 99re国产中文字幕| 免费作爱一级视频| a天堂视频| 国内毛片热久久思思热| 极品另类| 成人国产二区三区在线,男女精品。| 亚洲情色图片区| 天天日日本| 国产原创自拍| 久久99久久99久久99人受| 国产精品久久久久久无码红治院| 黄片免费日韩| 国产91亚洲精品一区二区三区| 99999国产| 一卡二卡在线播放| 激情婷婷丁香网| 精品人妻一区春色| 小草精彩毛片| 久久久工口| 国产伦精品一区二区三区视频女| 天天天天天干夜夜夜夜夜操| 欧美性巨大╳╳╳╳╳高跟鞋| 极品尤物女神在线观看| 国产白嫩漂亮KTV在线| 精品高清av中文字幕| 99精品国产户外露出| 一级乱伦网站| 无码免费在线观看黄色片| 国产午夜精品理论片a大结局| 午夜精品久久久| 色吧91| 欧美色图片| 美女91| 国产深喉视频一区二区| 亚州性色| 69av一区二区三区| AV和黑人在线播放| 欧美亚洲日本激情在线| 成人短视频在线观看| 婷婷五月色| 熟妇在线视频一区二区| 婷婷四五区| 69综合网| 手机av亚洲丝袜美腿日韩第一页二页| 欧美色图片欧美色图| 欧美亚洲韩国视频十五区| 欧美丰满少妇交换91欧美精品| 亚州性色| 岛国A V在线免费看| 国产精品干干干| 欧美视频中文字幕区| 色色色999| 欧美日韩亚洲高清不卡一区二区三区| 亚洲激情色片| 精品少妇高潮久久| 在线日韩日本亚洲国产| 精品欧美А∨无码黑人大荫蒂 | 四季av一区二区凹凸精品小说| 亚州综合在线| 男女猛烈无遮掩视频免费软件| 人人摸人人添人人操| 久久久久9| 免费看污网站| 91美女视频直播| 亚洲影院成人| 国内精品久久久久影院亚洲| 混色激情av| 亚洲日韩青青草色月| 欧美日韩亚洲少妇寂寞影院正在播放| 美女被啪到深处抽搐视频| 亚洲一级性爱视频免费看| 午夜一区| 国产精品 亚洲情色| 97在线视频观看免费| 亚洲高清视频在线免费观看| 五月天黄色激情视频| 精品.99999| 青青草中日韩在线| 国产成人午夜视频网址| 99色综合| 99热日| 男女做爰猛烈动高潮A片免费应用 少妇厨房愉情理伦片bd在线观看 不卡中文字幕aⅴ在线 | 亚洲国产ⅴ高清在线观看| a在线观看| 欧美日韩亚洲天堂网| 久久东京热成人| 老熟女乱子伦中文字幕一区二区| 伊人婷婷五月天| 天天摸天天舔天天操| 日日夜夜精品视频| 99操逼| 老司机午夜精品福利视频一区二区| 中国熟妇| 成年女人18级毛片毛片免费观看| 精品一国2| 麻豆成人影音在线| 亚洲精品久久久久久久蜜桃臀| 97二区四区| 久久久青青草| 国内毛片免费h片在线| 亚洲自拍一区夜夜操| a片在线播放| 天天干天天干天天干| 四虎AV在线播放| 黄片www.| 亚洲天堂一区二区| 国人欧美精品一区二区| 操逼999| 中文字幕一区二区三区字幕| 九九九网页| 91青青草| 北条麻妃99精品青青久久| 亚洲一区二区av| 久久精品国产亚洲AV无码做| 视频黄站| 欧美一级A片在线看视频性色| 日本精品九九九| 操逼操逼逼操操逼91 | 韩国一级做A片免费的| 久久久久久久久久久精| 99久久久无码国产精品性男| 日韩毛片9| 国产日韩欧美三级片| 国产青青综合伊人| 国产精品亚洲美女久久久久| 97操碰| 人妻少妇一区二区| 啊啊啊在线观看| 夜夜夜夜夜夜夜夜夜狠狠狠狠狠狠狠 | 岛国AB视频| 欧洲亚洲天堂精品| 欧美强奸一区二区诱惑| 日韩本不卡视频在线观看| 色婷婷综合网站| 午夜操操操| 蜜桃臀av在线观看| 强被迫伦姧在线观看无码网站| 日本精品88888888| 亚洲暴力强奸AV| 91久久国产精品| 一区,二区,三区网站| 日韩在线一区二区| 日韩青久久| 96精品在线| 熟女这里只有精品6| 日日AV加勒比| 婷色五月| 大香蕉乱级| 国产99999久久精品| 综合一区中亚洲国产成人综合精品 | 午夜偷拍久久熟女| 大干人妻| 久久精品视频28| 91人妻Pr| 国产精品久久久久久亚洲色欲| 超碰97久久国| 国产高清1234区| 一区AV| 国产中文字幕在线观看| 亚洲日韩肥臀视频在线观看| 国产日韩欧美亚洲精品95 | 九九热精品| 国产无码高清操逼视频| 99福利社| 好好的日:com久久九九| 亚洲天堂 视频你懂的| 亚洲春色欧美激情自拍| 人人妻人人色一区二区三区| 色九九九| 97操碰| 一区二区三区黄色片a| 丰满人妻一区二区三区免费 | 亚洲精品第一| 中国熟女老妇仑乱一区二区三区| 后入福利| 九九九九九九九九九五码| 黄色大片一区二区密桃丝袜| 亚洲国产高清福利视频| 国产亚洲深夜激情| 亚洲黄色电影| 日本免费一区二区不卡| 蜜桃色色网站视频三区| 色青青久久影视| 亚洲阿v天堂无码z2018| 美女诱惑一区| 清纯唯美综合亚洲| 中文久久96| 欧美久久九九| 91爱综合| 日本超碰在线国产一区| 日韩精品视频在线观看一卡二卡| 91香蕉视频在线观看免费| 久久久日本电影| 91熟女视频网| 日韩一级二级三级免费看完整版国语版 | 黄色乱论网站| 98色网| 天天影视网综合少妇| 大香蕉啪啪啪| 精品久久人妻成人网| 欧美性巨大╳╳╳╳╳高跟鞋| 日韩欧洲操屄视频| 国产家庭乱伦表演| 13小男生GAY自慰脱裤子| 九九AV| 久久春色| 性猛交| 欧美黑人极品高潮喷吹熟女黑人性暴力日韩在线欧美极品一区二区老师黑人潮喷一 | 大香蕉淫人网| 蜜臀久久99精品久久久久久婷婷 | 亚洲āv网址在线观看| 啊啊啊爽爽| 亚欧美色图| 嗯嗯,好大,好爽,好骚 | 久久综合18p| 91九久| 97啪啪| 一起草av| 97色五月天完| 情色av电影| 在线亚洲精品久久久| 九九热免费国产视频婷婷伊人五月| 欧美中文字幕男人天堂久久精品 | 综合亚洲欧美| 九九九九久久久久| 日韩天天综合| 日韩一级二级三级在线不卡观看完整| 屁股久久久久久| 日本人妻最新在线中| 中文字幕三四区| 美女天天干| Aa东京男人的天堂| 91伊人影视综合| 韩日精品四区| 一区二区三区日韩欧美| 美女主播色欲91抠b在线播放| 欧美中文字幕一区 | 国产 v乱码一区二| www.色五月| 99999无码| 日本不卡码黄色| 9 9无尺码天堂网| 9久9久| 日少妇视频| 八戒无码国产午夜福利| 欧美人妻一区| 亚洲色图久久成人| 青青草国产亚洲精品久久| 无码视频一区二区| 岛国天天午夜影院传媒网| 亚洲国产97| 日韩精品人妻一| 久久性爱视频| 久久同城AV| 欧美97| 亚洲超碰AV| 国产原创精品| 一二视频神马久久传媒| 亚洲丝袜诱惑| 国产精品一区二区 尿失禁| 国产小u女在线观看| 亚洲色欲一区二区三区| 伊人综合色网| 超碰导航97| 熟女精品一区二区三区| 欧美乱欲| 91最新综合| 久久无码成人| 激情文学小说一区二区| 久久久熟女一区| 91网站18禁| 91爆操视频| 三上制服丝AV| 超碰在线一区二区三区| 亚洲精品xxx| 九九热免费国产视频婷婷伊人五月 | 天天日B夜夜干B时时操B| www.狠狠| 欧美亚洲国产自久久| 丝袜美腿丝袜| 麻花传媒免费网站在线观看| 无码91| 久久久久白虎| 国产精品99久久久www| 日逼五月天| 先锋影音av先锋一区| 欧美亚性天堂| 天美av在线| 深夜激情无码| 久久九精品| 日韩簧片免费看| 亚洲综合色婷婷| 96AV久久久| 9丨久久九九九| 我爱大香蕉| 黄色不卡视频| 1级黄色夫妻对换性交免费看| 大香蕉 222| 久久色一区二区| 中文字幕国产| 亚洲色电影在线| 中文字幕一区二区三区50路| 黄色av网站在线播放| 2024人人操人人摸| 一本大道青青| 大香蕉综合网| 久久久久白虎| 97人人模人人爽人人| 97久久超碰国产精品| 国产成人网站在线观看| 国产蜜臀在线| 夜夜草网站| 999热日韩精品| 久碰视频| 97在线视频免费| 久久婷婷色| 国产精品久久久啊| 超碰超碰95| 日本在线观看网址| 亚洲综合113页| 无码操逼视频一下| 熟妇激情| 亚洲第一综合| 爱妃国产亚洲视频中文字幕| caopeng97人妻| 无码高清少妇久久| 久久草视频污视频| 国产又大又硬又长又粗| 91熟女视频网| 亚洲天天艹| 成全动漫视频观看免费下载| 久久久啊啊| 久久精品福利影院| 久久久熟妇熟女国产| 逼操网站| 夫妻AV网站| 好淫网一二三视区| 91香蕉视频在线观看免费| 久久久精品视频欧州站| 婷婷六月色| 日少妇视频| 欧美亚洲厕所精品偷拍91 | 黄网色一区二区三区四区精品| 亚洲自拍欧美色综合| 欧美性爱精品七区| 国产精品久久久视频| 变态乱伦伪娘灌肠一区二区| 欧美,亚洲,日韩,v,天堂,手机在线观看 | 欧美性爱视频免费一区一A| 老熟女综合网| 亚洲国成人情色好看电影| 国产亚洲中文不卡二区| 99久在线精品99re8蜜桃| 日本人妻一区二区| av日韩在线观看电影| 亚洲国产97在线精品一区| 五月天婷婷激情| 成人小说视频在线精品欧美| 亚洲激情在线| 日日橹狠狠爱欧美超碰| 九九RE视频在线精品| 欧美日韩大香蕉| 国产夫妻性生活视频| 歐美一級亂黃99在綫精品| 激情视屏国产乱伦强奸| 无码天堂| 好色美女九七第一页| 亚洲综合码| 色婷婷香蕉| 95自拍视频在线观看| 这里只有精品97| 熟妇国产免费一区| 欧美毛片在线网| 国产精品点击进入在线影院| 91九色丰满高潮| 曰本精品久久久| 亚洲精品一区中文字幕乱码| 亚洲欧美高清无码| 亚洲欧美清纯| 香蕉精品二区二区| 啊啊啊慢点| 高清无码学生妹高潮| 欧美在线55555| 性色国产东北露脸精品视频| 97久精品| 丝袜喷水在线| 激情四射婷婷四五月天| 婷婷色综合| 久99热| 婷婷激情五月综合| 91超级碰碰| 丰满人妻av一区二区三区| 一区二区三区免费岛国片| 久草免费福利在线播放| 三级特黄60分钟播放| 伊人精品久久网站| 777超碰| 青草地一本线一区二区三区| 欧美亚洲韩国视频十五区| 久噜噜| 久久久九97| 亚洲色图久久精品蜜| 九九亚洲视频| 亚洲av无码成人精品国产| 做爱A级亚欧| 亚洲日本激情| 国产呦精品系列在线观看| 国产精品亚洲日韩骚欢乐谷最新地址发布页huanieguty性屋娱乐妖精视频 | 综合久| 大香蕉久操| 亚洲欧美日韩夜夜| 欧美不卡二区| 亚洲人妻中文高清| 中文字幕人成乱码熟女香港| 天天插夜夜操| 在线A日本| 激情网色| 免费一级特黄特色大片在线观看看| 91夜夜蜜桃臀1区2区3区| 爱爱动态试试看6 0秒| 婷婷色香| www老逼91| 国产亚洲欧洲在线观看| 国产精品天干天干综合网麻豆 | 玖玖无码超碰| 99热国产精品| 91宗合网| 农村女一级毛卡片| 九九九热| 久久久亚洲Av| 日本性爱少妇| 韩日精品四区| 99re这里只有精品3| 免费久久9999| 91亚洲黄色网| 欧美不卡五十路| 成人麻豆av电影网站| 欧美一级久久久久久久大片动画 | 国产福利影视| 极品色www影院| 青草视频在线看看看看看看看看看| 女同性恋一区二区三区精品视频| 91日日夜夜| 久久精品店| 久久久久久久亚洲Av无码| 亚洲第一页色| 四虎免费视频| 99亚洲国产精品色一区二区三区| 日韩性爱毛片操骚逼| 激情文学网伊人| 丰满人妻一区二区中文| 17c嫩草51久久91嫩草| 国产av美女被艹的乱叫| 日韩乱码Av| 超碰综合97在线| 国产亚洲精品久久久久小| caorenqi shipin| 久久久九九| 亲子敌伦对白在线播放| 欧美日韩国产中文精品字幕自在自线| 男人天堂久久精品| 欧美一级欧美三级在线观看| 精品一区99999| 亚洲欧洲日韩天堂av| 欧美黑人猛交春色影视大全| 91综合天天看| 人人操,操人人| 欧美嗯啊……在线观看视频免费| 玖玖综合视频| 成人美女av| 一本久久精品中文字| 亚洲国产美女久久久久| 插穴性爱视频在线观看| 久草资源欧美在线视频| 青娱乐休闲视频在线观看| 五月丁香六月激情| 婷婷精品久久av影视| 粉嫩不卡一区二区性爱| 亚洲日韩av一区二区三区百合| 可乐操在线| 久久色情| 蜜臀久久99精品久久久久久成人小说 | 99色热| 欧美丰满熟妇XXXX性ppX人交| 亚洲宗合网| 国产专区第一页| 密臀AV在线| 最新无码国产| 翘臀vidoes| 91精品人妻一区二区三区蜜桃| 久操大香蕉| 男同专区一区二区三区在线| 9+1视频网址| 高清无码人妻久久久一区二区三区aⅴ| 五月天激情影院| 久草老司机| 亚洲欧洲国产综合av| 99在线精品观看视频中文| 日韩乱伦视频| 欧美se综合| 操91| 2010男人的天堂| 人人看人人爰人人操| 小泽玛利亚一二三| 亚洲AV不卡在线观看| 尤物av网站免费在线播放| 老鸭窝亚洲毛片| 精品亚洲一区在线观看| 亚洲欧美setu| 国产97视频免费观看| 精品无码一区二区三区| 人人操人人uiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii | 天天综合网AV91| 国产毛片久久久久久久| 1.igao73.com 加入收藏 免费专区 国产精品 中文字幕 日韩精品 欧美精品 精彩 | 肉丝中文无码高清| www.91色| 亚洲资源站| 区一二区日韩亚洲乱码av电影| 波多野42部无码喷潮在线观看 | 天堂中文资源在线bt| 97视频在线视频| 色婷五月| 玖玖爱在线视频免费观看| 亚洲永久AV无码精品秋霞| 中文字幕aⅴ在线视频| 久久综合精品一区二区三区| 曰韩操B| 怡红院成人视频| 色盈盈影院| 久久香蕉国产线看观看猫咪av| 91成人无码| 欧美激情视频一区二区三区不卡| 日韩欧美aⅴ综合网站发布| 久热精品在线| 欧美狠狠弄| 插欧洲美女欧美精品| 久久产精品一区二区三区电影| 另类av天堂| 99操碰| 高清国产性猛交xxxx乱大交| 青青草综合在线| 久久精品免视看国产成人﹣蜜臀av一区. 久久精品免视看国产成人,蜜臀av一区 | 911av网站免费观看| 老熟妇一区二区三区| 观看免费区二区三区二| 日本成熟少妇A∨网站| 久久久96精品| 色天使大香蕉| 国产精品色色| 国产无码高清操逼视频| 综合五月天| 亚洲国内精品成人不卡| 九九综合色| 国产人伦a片信息免费片| 超碰91在线| 久久一二三四五六七八九区| 香一区二区三区| 亚欧性爱在线无码| 五月天我淫我色av| 成人性交午夜免费片| 97精品97久久| 色999偷自拍拍| 婷婷97| 啪啪资源网| 日韩性爱长视频免费| 亚洲午夜蜜臀| 天天干天天中出av| 青青草原综合久久大伊人精品| 99精品热| 欧美999| 全国男人天堂网| 色眯眯射| 天天摸夜夜摸| 激情自拍 校园春色| 女人高潮抽搐喷水视频网站| 国产女乱淫真高清免费视频| 九九热只有精品| 丁香7月婷婷| 人妻无码久久一区二区三区免费| 亚洲另类久操网| 黑操B| 激情五月天综合网| 插欧洲美女欧美精品| 亚洲不卡三级手机播放| 99视频自拍区| 少妇人妻在线| 色偷偷综合91久久噜噜| 色亚州人久干视频在线观看免费版| 青青草在线视频欧美| 欧美碰碰综合色| 日小BB小视频| 操啊国产| 色色色日本| 2018天天日天天日| 日本不卡一区二区| 九九热av| 91丝袜视频在线观看| 99热婷婷一区二区三| 欧美伊人电影| 日韩精品啪啪啪| 91骚熟女| 久久久久久久久一区二区三区| 超碰欧美97资源| 桑老女人九区| 狠狠爱夜夜| 91欧美亚洲| 精品三级在线专区| 午夜福利1区2区3区| 亚洲精品自拍| 亚洲欧美日韩不卡人妻| 欧美日韩色| 日韩操啪| 中国大陆国产高清AⅤ毛片|