欧美成人午夜精品久久久,国产?V天堂一区二区三区,欧美精品va在线观看,亚洲一区二区三区免费在线观看,av无码精品一区二区久久,欧美性爱视频不卡一区三区,欧美乱人伦视频在线观看,国产一级牲交高潮

ARTICLE DETAIL

資訊詳情

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

FPGA實現(xiàn)SPI通信:從協(xié)議細節(jié)到上板調試全攻略

FPGA實現(xiàn)SPI通信:從協(xié)議細節(jié)到上板調試全攻略 SPI接口在嵌入式系統(tǒng)里幾乎是無處不在但真要把SPI通信用FPGA做扎實很多人一開始容易掉進代碼能跑就行的誤區(qū)。波形亂、時序不滿足、跑著跑著丟數(shù)據(jù)這些問題多半不是FPGA本身的問題而是對SPI協(xié)議的理解還停在大概這么回事的層面。這篇文章我結合自己實際做過的項目把FPGA實現(xiàn)SPI的關鍵點拆開講清楚從協(xié)議細節(jié)到代碼結構從仿真到上板調試盡量把常見的坑都給你指出來。1. 為什么要在FPGA里自己寫SPI很多人的第一反應是SPI這么簡單的協(xié)議單片機上有現(xiàn)成的硬件外設配置一下寄存器就能用為什么還要在FPGA里費勁去寫這個問題的答案直接決定你要不要看下去。在我做過的項目里遇到FPGA需要SPI的場景主要有這么幾類第一類是用FPGA做主控需要跟多個SPI從設備通信。比如同時掛一個ADC、一個Flash、一個SD卡如果都用IO口模擬或者用邏輯去拼狀態(tài)機會變得非常復雜。SPI協(xié)議的時序容限其實很寬松FPGA用狀態(tài)機實現(xiàn)SPI主模式代碼量不大但換來的靈活性非常高——你可以隨意控制時鐘極性、相位、速率、片選時序甚至可以做多從機輪詢、連續(xù)突發(fā)讀。第二類是接口轉換。比如STM32H743這類MCU跟FPGA通過FMC總線通信FPGA內部需要把FMC接口的數(shù)據(jù)轉成SPI去控制外設或者是FPGA作為SPI從設備接收MCU下發(fā)的配置命令這時候你不可能去用別人的IP核自己實現(xiàn)一個SPI Slave往往是更好的選擇。第三類是因為速率或者時序的苛刻要求。SPI的極限速率不低但MCU的硬件SPI有時鐘分頻檔位限制未必能剛好滿足某個傳感器要求的時序窗口而FPGA則可以直接用PLL輸出一個剛好滿足要求的時鐘用任意波特率來做。還有一個很現(xiàn)實的原因FPGA開發(fā)中SPI經常是學習狀態(tài)機、時鐘域、數(shù)據(jù)流設計的絕佳練手項目。搞懂SPI的FPGA實現(xiàn)等于打通了FPGA邏輯設計的任督二脈。2. SPI協(xié)議里容易被忽略的細節(jié)2.1 SPI的四根線和兩種角色SPI的全稱是Serial Peripheral Interface串行外設接口通常由四根線組成SCLK串行時鐘由主設備產生MOSI主出從入Master Output Slave InputMISO主入從出Master Input Slave OutputCS/SS片選信號低電平有效由主設備控制這個接口的架構決定了它的一個核心特點全雙工。在每一個時鐘周期主設備通過MOSI發(fā)送一位數(shù)據(jù)同時從設備通過MISO回送一位數(shù)據(jù)。這在寫Flash、讀ADC這些場景主設備在發(fā)送命令字節(jié)的同時就能收到從設備返回的狀態(tài)字節(jié)效率很高。全雙工意味著只要時鐘在跑兩邊都在采樣都在移位。這一點用Verilog寫狀態(tài)機時非常關鍵你不可能只發(fā)不收也不可能只收不發(fā)。所以設計時既要有發(fā)送移位寄存器又要有接收移位寄存器發(fā)送和接收是同時完成的只是你關心不關心接收到的內容而已。2.2 四種工作模式是怎么來的SPI的四種模式由CPOLClock Polarity時鐘極性和CPHAClock Phase時鐘相位兩個參數(shù)組合而來這是實現(xiàn)時最容易出錯的地方也是調板子時和外部芯片對齊的最關鍵參數(shù)。CPOL決定空閑狀態(tài)時SCLK的電平CPOL 0空閑時SCLK為低電平CPOL 1空閑時SCLK為高電平CPHA決定數(shù)據(jù)采樣發(fā)生在哪個邊沿CPHA 0在第一個邊沿采樣第一個邊沿可能是上升沿也可能是下降沿取決于CPOLCPHA 1在第二個邊沿采樣組合起來就是大家常說的SPI Mode 0、1、2、3。Mode 0CPOL0, CPHA0是最常見的模式空閑低電平上升沿采樣下降沿切換數(shù)據(jù)Mode 3CPOL1, CPHA1也很常見很多Flash芯片默認支持Mode 0和Mode 3。這里我強烈建議在寫FPGA代碼之前先畫一張時序圖把CPOL、CPHA對應的采樣邊沿和切換邊沿都標清楚。不要憑感覺寫因為外部芯片的數(shù)據(jù)手冊通常會用Data setup time、Data hold time、Valid edge這類描述你需要把手冊上的時序圖翻譯成你狀態(tài)機的邊沿動作。2.3 SPI和IIC到底差在哪熱搜詞里有不少人搜spi和iic的區(qū)別我在調試中也經常被問到。簡單說SPI是全雙工、四線、無尋址、無應答IIC是半雙工、兩線、帶地址、帶應答。SPI適合高速、大塊、連續(xù)的數(shù)據(jù)傳輸IIC適合低速率、簡單控制、多設備掛總線。FPGA項目里的傳感器數(shù)據(jù)采集、Flash讀寫、LCD驅動SPI出現(xiàn)頻率明顯更高IIC更多用在EEPROM、溫濕度傳感器這些低速場合。說實話我個人的體會是如果你已經掌握SPI再用FPGA實現(xiàn)IIC的核心難點只剩下應答時序這一塊。邏輯設計的基本套路是相通的。2.4 數(shù)據(jù)格式和字節(jié)序SPI協(xié)議本身沒有規(guī)定數(shù)據(jù)的位序是MSB first還是LSB first也沒有規(guī)定一次傳輸?shù)奈粚捯欢ㄊ?位。協(xié)議只是定義了怎么把位送出去和什么時候采樣。因此FPGA里的SPI實現(xiàn)必須要有位寬參數(shù)化和位序可配置的思維方式。我經常看到有人寫死8位結果換了一個12位的ADC整個狀態(tài)機都要改。在RTL設計里把數(shù)據(jù)位寬定義成參數(shù)把移位的順序定義成變量這種靈活性在SPI實現(xiàn)里太重要了。特別是ADC芯片12位、16位、24位都很常見你不可能每一次都重寫一遍SPI邏輯。3. 整體架構設計先定需求再寫代碼3.1 明確你的SPI是主還是從這是設計開始前必須先回答的問題。主模式和從模式的代碼差別非常巨大。主模式的特點由FPGA自己產生SCLK時序主動權在自己手上。你做設計時可以控制SCLK什么時候翻轉、數(shù)據(jù)什么時候更新、什么時候采樣。難點在于你要保證輸出給外部設備的時序符合它的要求。從模式的特點SCLK和CS都是外部輸入的。這時候你的FPGA邏輯處于被動地位要跟隨時鐘的節(jié)奏難點在于跨時鐘域和異步信號處理。因為SCLK是在FPGA外部產生的它和FPGA的內部時鐘是異步關系你接收到的數(shù)據(jù)和時鐘天然存在相位不固定的問題。從我自己的經驗來看如果項目允許盡量把FPGA設計成SPI主模式。主模式簡單得多調試也直觀邏輯分析儀一抓波形就能看出問題而從模式尤其是高速從模式光是一個異步信號同步化就要費不少功夫而且容易出現(xiàn)亞穩(wěn)態(tài)問題。3.2 確定時序參數(shù)在你寫代碼前把下面這個表格填清楚這張表就是你的設計規(guī)格參數(shù)說明示例值設計依據(jù)SCLK頻率主模式時由FPGA產生10MHz外部從設備支持的最大SCLKCPOL空閑電平極性0外部從設備手冊CPHA數(shù)據(jù)采樣相位0外部從設備手冊數(shù)據(jù)位寬一次傳輸?shù)奈粩?shù)8/16/24從設備寄存器或命令長度CS有效電平片選極性低有效從設備手冊CS建立時間CS拉低到第一個SCLK邊沿的時間t_setup 20ns從設備手冊中的CS setup timeCS保持時間最后一個SCLK邊沿到CS釋放的時間t_hold 20ns從設備手冊中的CS hold time這些參數(shù)里CS建立時間、保持時間經常被人忽略。很多外部設備對CS到SCLK的時序是有要求的你如果CS剛拉低就出時鐘可能第一個字節(jié)就會出錯。稍微有一點冗余的建立時間反而更穩(wěn)妥。3.3 寄存器配置還是狀態(tài)機FPGA里實現(xiàn)SPI有兩種常見的做法一種是使用FPGA廠商提供SPI IP核。Xilinx有AXI Quad SPIIntel有SPI Core。優(yōu)點是穩(wěn)定、經過驗證缺點是配置復雜、資源占用大、不夠靈活。如果你只是想把SPI掛上總線用IP核是省事的但如果你的SPI需要做特殊時序比如中途切換模式、多從機動態(tài)切換、和某個非標準外設對接IP核反而礙手礙腳。另一種是我今天主要講的做法用狀態(tài)機自己寫。SPI協(xié)議本身的時序并不復雜用Verilog寫一個可參數(shù)化的SPI Master通常也就100多行核心邏輯。自己寫的優(yōu)勢是你可以完全掌控時序每一個邊沿出了問題看波形就知道是自己哪一步寫錯了調試體驗特別好。對于FPGA學習者來說自己寫一遍SPI對狀態(tài)機如何控制時序這個核心概念的理解會深入非常多。4. 可復用的SPI Master核心代碼實現(xiàn)4.1 接口定義和模塊劃分我自己用的SPI Master模塊接口設計是分成兩層的外層是簡單的讀寫請求接口內層是處理具體時序的SCLK生成和移位邏輯。module spi_master #( parameter CLK_FREQ 50_000_000, // FPGA系統(tǒng)時鐘頻率 parameter SCLK_FREQ 10_000_000, // SPI時鐘頻率 parameter DATA_WIDTH 8, // 數(shù)據(jù)位寬 parameter CPOL 0, // 時鐘極性 parameter CPHA 0, // 時鐘相位 parameter MSB_FIRST 1 // 1MSB先發(fā)送0LSB先發(fā)送 )( input wire clk, // 系統(tǒng)時鐘 input wire rst_n, // 異步復位低有效 // CPU/用戶邏輯側接口 input wire start, // 啟動一次傳輸脈沖信號 input wire [DATA_WIDTH-1:0] tx_data, // 要發(fā)送的數(shù)據(jù) input wire [7:0] clk_div, // 時鐘分頻系數(shù)可動態(tài)調整 output reg busy, // 忙指示高電平表示正在傳輸 // SPI物理接口 output reg sclk, // 串行時鐘 output reg cs_n, // 片選低有效 output reg mosi, // 主出從入 input wire miso // 主入從出 );端口劃分上有個經驗把clk_div設計成可配置的寄存器而不是固定參數(shù)。這樣在同一個工程里你可以用軟件動態(tài)調整SPI速率適配不同從設備。比如FPGA和STM32連接時STM32這邊可能就有好幾路SPI設備需要不同的速率。4.2 狀態(tài)機的三種狀態(tài)設計SPI主模式的發(fā)送流程可以抽象成三個狀態(tài)IDLE、TRANSFER、DONE。核心思想是在TRANSFER狀態(tài)下用一個計數(shù)器來產生SCLK用另一個計數(shù)器記錄已發(fā)送的位數(shù)。localparam IDLE 2d0; localparam TRANSFER 2d1; localparam DONE 2d2; reg [1:0] state; reg [7:0] clk_cnt; // 時鐘分頻計數(shù)器 reg [7:0] bit_cnt; // 位計數(shù)器 reg [DATA_WIDTH-1:0] shift_reg; // 移位寄存器 reg sclk_r; // SCLK的寄存器版本這個狀態(tài)機的關鍵設計思路是不直接用一個高頻時鐘去產生邊沿而是用分頻計數(shù)器產生SCLK的翻轉事件。每數(shù)到分頻系數(shù)的一半翻轉一次SCLK。采樣的時候通過判定SCLK的當前電平和CPOL/CPHA的關系來決定是更新數(shù)據(jù)還是采樣數(shù)據(jù)。4.3 移位和數(shù)據(jù)采樣的正確姿勢在SPI主模式下數(shù)據(jù)發(fā)送相對簡單每次SCLK的數(shù)據(jù)切換邊沿到來時移位寄存器移出一位輸出到MOSI。數(shù)據(jù)接收則恰恰相反在SCLK的采樣邊沿到來時把MISO上的電平打進來。這里有個很核心的模塊技巧邊沿檢測。你需要在FPGA的主時鐘域里檢測SCLK的邊沿。最常見的做法是把SCLK寄存兩拍然后做異或邏輯reg sclk_d1; reg sclk_d2; always (posedge clk or negedge rst_n) begin if (!rst_n) begin sclk_d1 1b0; sclk_d2 1b0; end else begin sclk_d1 sclk; sclk_d2 sclk_d1; end end wire sclk_rising sclk_d1 ~sclk_d2; wire sclk_falling ~sclk_d1 sclk_d2;這個兩拍寄存的做法既完成了邊沿檢測也把SCLK信號同步到了系統(tǒng)時鐘域避免亞穩(wěn)態(tài)。很多人寫SPI主模式直接用sclk去做時鐘觸發(fā)always塊這在低速時問題不大但在復雜工程里容易出很多時序問題。用系統(tǒng)時鐘打兩拍檢測邊沿可以避免跨時鐘域分析也方便在狀態(tài)機里處理。采樣時需要根據(jù)CPHA配置決定是上升沿采樣還是下降沿采樣wire sclk_sample_edge (CPHA 0) ? sclk_rising : sclk_falling; wire sclk_shift_edge (CPHA 0) ? sclk_falling : sclk_rising;CPHA0時第一個邊沿采樣第二個邊沿切換CPHA1時反過來。再加上CPOL決定空閑電平這樣一個通用驅動就出來了。4.4 完整狀態(tài)機邏輯關鍵的核心狀態(tài)機代碼如下always (posedge clk or negedge rst_n) begin if (!rst_n) begin state IDLE; sclk CPOL; cs_n 1b1; mosi 1b0; busy 1b0; clk_cnt 8d0; bit_cnt 8d0; shift_reg {DATA_WIDTH{1b0}}; end else begin case (state) IDLE: begin cs_n 1b1; sclk CPOL; busy 1b0; if (start) begin cs_n 1b0; // 拉低片選 state TRANSFER; bit_cnt 0; clk_cnt 0; shift_reg tx_data; busy 1b1; end end TRANSFER: begin // SCLK生成邏輯計數(shù)到分頻系數(shù)的一半時間翻轉一次 if (clk_cnt (clk_div/2 - 1)) begin clk_cnt 0; sclk ~sclk; end else begin clk_cnt clk_cnt 1; end // 數(shù)據(jù)移位在數(shù)據(jù)切換邊沿 if (sclk_shift_edge) begin if (MSB_FIRST) begin mosi shift_reg[DATA_WIDTH-1]; shift_reg {shift_reg[DATA_WIDTH-2:0], 1b0}; end else begin mosi shift_reg[0]; shift_reg {1b0, shift_reg[DATA_WIDTH-1:1]}; end bit_cnt bit_cnt 1; end // 數(shù)據(jù)采樣在采樣邊沿 if (sclk_sample_edge) begin if (MSB_FIRST) begin shift_reg {shift_reg[DATA_WIDTH-2:0], miso}; end else begin shift_reg {miso, shift_reg[DATA_WIDTH-1:1]}; end end if (bit_cnt DATA_WIDTH sclk_shift_edge) begin state DONE; end end DONE: begin cs_n 1b1; // 釋放片選 state IDLE; busy 1b0; end endcase end end assign rx_data shift_reg; // 實時透出接收移位寄存器方便用戶在IDLE后讀取這里有三個細節(jié)要注意第一我在TRANSFER里同時檢測了移位邊沿和采樣邊沿這兩個邊沿是交替出現(xiàn)的。當你用系統(tǒng)時鐘去驅動時上升沿和下降沿間隔了半個SCLK周期所以它們不會沖突因為一個always塊里是順序執(zhí)行的完美避開了競爭。第二判斷發(fā)完最后一位的時機很關鍵。我是在bit_cnt等于DATA_WIDTH并且最后一個移位邊沿到來時才跳轉到DONE。這樣保證SCLK完整走完最后一位CS釋放時不會截斷最后一個數(shù)據(jù)。很多人CS拉早了最后一個bit直接被切掉就是從設備收不到完整字節(jié)的原因。第三從設備返回的數(shù)據(jù)在最后一個采樣邊沿就已經全部在shift_reg里了所以從DONE回到IDLE之后rx_data已經是完整的數(shù)據(jù)了。不需要額外等一拍。4.5 從模式設計提示如果你的場景是FPGA做從設備接收MCU的命令設計思路需要做幾處調整。從模式的核心是SCLK和CS都是從外部進來的必須先在FPGA內部做兩級同步然后檢測SCLK的邊沿。因為外部時鐘和FPGA內部時鐘是異步的直接使用外部時鐘做觸發(fā)是不安全的尤其在系統(tǒng)時鐘頻率和SCLK頻率可比的場景。采樣數(shù)據(jù)也建議用系統(tǒng)時鐘打拍后采樣而不是直接用SCLK作為寄存器的時鐘。因為FPGA內部走線的時鐘樹需要統(tǒng)一分散的時鐘會導致布局布線的時序問題容易出現(xiàn)物理層面不可復現(xiàn)的bug。5. 硬件片選與軟件片選的抉擇5.1 硬件片選的優(yōu)勢硬件片選是指CS信號直接由SPI模塊在傳輸開始/結束時自動控制用戶只需要發(fā)出start信號模塊自己完成CS拉低、發(fā)送、釋放。這種方式的好處是時序可控性最好你可以精確控制CS拉低到第一個SCLK邊沿的時間保證滿足從設備的建立時間要求不需要用戶軟件介入避免用戶在CS拉低之后、啟動傳輸之前的一段窗口期里受到干擾方便實現(xiàn)連續(xù)傳輸模式在Flash的連續(xù)讀、連續(xù)寫場景硬件片選可以自動維持CS為低直到整塊數(shù)據(jù)搬完我在W25Q128這類Flash芯片上硬件片選體驗非常好時序干凈讀出來的數(shù)據(jù)基本不需要做額外的毛刺處理。5.2 軟件片選的靈活之處軟件片選是把CS信號作為一個普通的GPIO由用戶邏輯或軟件在SPI傳輸之前手動拉低傳輸結束后再手動拉高。這適合什么場景呢第一個是SPI總線上掛了多個從設備你需要動態(tài)選擇比如一個ADC、一個Flash、一個SD卡它們各自有獨立的CS。第二個是從設備的CS時序有特殊要求需要在中間人為地制造一些縫隙比如某些傳感器要求CS低電平保持時間大于某個值。第三個是調試階段你還沒有完全掌握從設備的CS時序要求先用軟件片選手動測出窗口再固化到硬件控制里。5.3 我的選擇經驗我的習慣是默認用硬件片選因為可靠性高狀態(tài)機自己知道什么時候該拉CS、什么時候該釋放不會出現(xiàn)軟件延時抖動導致CS時序漂移的問題只有遇到多個從設備需要同時掛在回應件場景下才用軟件映射把CS信號做成一個Memory Map的寄存器。另外有些芯片對CS的要求比較嬌氣。比如AFE4490這類高精度模擬前端它的SPI接口對CS時序非常敏感CS釋放過早會導致寄存器寫入失敗。這類芯片我建議哪怕是FPGA環(huán)境也做一次芯片手冊的時序核對確認CS建立/保持時間滿足之后再決定方案。6. 仿真驗證實戰(zhàn)經驗分享6.1 搭建一個可復現(xiàn)的testbench在我自己的開發(fā)流程里SPI模塊寫完之后第一件事不是直接上板而是先在仿真環(huán)境里跑一遍。仿真可以快速確認字節(jié)順序是否正確MSB first還是LSB firstCPOL和CPHA是否按預期工作CS時序是否滿足發(fā)送的數(shù)據(jù)和接收的數(shù)據(jù)是否能對上一個基本的testbench包含兩部分時鐘生成和激勵產生。timescale 1ns/1ps module tb_spi_master; reg clk 0; reg rst_n 0; reg start 0; reg [7:0] tx_data 8hA5; wire [7:0] rx_data; wire busy; wire sclk; wire cs_n; wire mosi; reg miso 0; // 25MHz系統(tǒng)時鐘50MHz也可以這里為了看得清楚用的25MHz always #20 clk ~clk; spi_master #( .CLK_FREQ (25_000_000), .SCLK_FREQ ( 5_000_000), .DATA_WIDTH (8), .CPOL (0), .CPHA (0), .MSB_FIRST (1) ) dut ( .clk (clk), .rst_n (rst_n), .start (start), .tx_data(tx_data), .busy (busy), .sclk (sclk), .cs_n (cs_n), .mosi (mosi), .miso (miso) ); // 模擬一個假從設備把MISO回應為固定值或者回環(huán)到MOSI always (posedge sclk) begin miso mosi; // 回環(huán)模式方便檢查 end initial begin rst_n 0; #100; rst_n 1; #50; (negedge clk); start 1; tx_data 8hA5; #20; start 0; // 等待傳輸完成 wait (!busy); $display(Transfer done, rx_data %02x, rx_data); #100; $finish; end endmodule上面這個testbench我加了一個回環(huán)邏輯把MOSI直接回送到MISO這樣仿真環(huán)境里就能看到收發(fā)數(shù)據(jù)是否一致。如果tx_data A5rx_data也應該是A5說明整個數(shù)據(jù)通路沒有問題。6.2 仿真波形里到底要看什么波形打開之后不要只盯著最后結果需要逐個窗口核對第一段看CS拉低之后到第一個SCLK上升沿的時間間隔。看它是否滿足你設計的cs_setup時間要求。這段如果在仿真里都太短說明狀態(tài)機的CS拉低時機需要調整比如可以單獨加一拍CS_Setup狀態(tài)。第二段看SCLK是不是均勻的方波有沒有脈寬不對稱的情況。我之前用分頻計數(shù)器的時候計數(shù)初值沒設對導致SCLK高電平時間比低電平時間長了1拍波形看起來不錯但實際從設備對占空比敏感時就會出錯。第三段看MOSI在SCLK的哪個位置翻轉。這個是最能檢驗CPOL/CPHA有沒有配錯的地方CPHA0時MOSI應該在SCLK的下升沿后立刻更新然后在上升沿采樣數(shù)據(jù)在采樣窗口內保持穩(wěn)定如果觀察到的現(xiàn)象恰好相反說明CPHA配反了。第四段看CS釋放的時機。CS從低變高的那一刻必須要等到最后一個SCLK邊沿完成之后。如果CS和SCLK同時動作多半是有問題的。6.3 仿真中踩過的典型坑仿真里最常見的坑一個是沿和電平搞混。SPI協(xié)議是邊沿觸發(fā)但仿真波形會因為延時設置導致邊沿和采樣窗口邊界模糊。建議在testbench里加$monitor或者$display打印關鍵寄存器的變化不要光看波形有時候波形縮得太小邊沿錯位肉眼根本看不出來。另一個坑是起始條件沒給夠。像SPI這種有片選的協(xié)議如果rst_n釋放后沒有等足夠長時間就啟動傳輸可能出現(xiàn)一些奇怪行為。我個人習慣是復位后至少等系統(tǒng)時鐘10拍以上再拉start保證狀態(tài)機和內部寄存器都回到確定的初始狀態(tài)。7. 上板調試中的常見故障與排查實錄7.1 波形看著沒問題設備就是不響應這是最氣人的一種情況。用邏輯分析儀抓波形SCLK正常MOSI也按時翻轉但外設始終沒有任何回應。這種時候第一件事是把數(shù)據(jù)手冊翻出來核對CPOL和CPHA配置。有一次我做STM32和FPGA通過SPI對接兩邊都以為自己是標準模式結果一個默認Mode 0一個默認Mode 3看起來好像標準其實完全不同。SPI有4種模式必須兩邊都核對清楚這是最常見的配置錯誤。其次檢查是否有從設備的時鐘速率上限。如果FPGA主時鐘很高分頻系數(shù)取了一個比較激進的值SCLK超過了從設備的額定值設備也會不響應。再有一個隱藏問題MISO信號沒有上拉或下拉。MISO通常是推挽輸出但有些從設備在CS拉高時釋放總線變成高阻態(tài)。如果FPGA引腳沒有啟用內部上拉MISO在總線空閑時就是浮空狀態(tài)一旦有一點點干擾采樣回來的數(shù)據(jù)就是亂的。7.2 數(shù)據(jù)錯位、串位數(shù)據(jù)錯位但波形看起來正常這是SPI調試里最隱蔽的問題。第一個可能的原因是采樣邊沿和切換邊沿沒對準。如果CPHA配置不對數(shù)據(jù)在采樣瞬間剛好處于切換過渡階段采回來的就是毛刺值。這種問題在仿真里不容易發(fā)現(xiàn)因為仿真環(huán)境里信號切換是瞬時的而真實電路中MOSI上存在傳播延時和上升沿時間。解決方法下降沿發(fā)數(shù)據(jù)、上升沿采樣是Mode 0的標準做法。如果你發(fā)現(xiàn)數(shù)據(jù)錯位可以嘗試把數(shù)據(jù)發(fā)送邊沿往前提半個SCLK周期給數(shù)據(jù)穩(wěn)定留出余量也就是用在SCLK下沿之后的某個時刻更新MOSI保證上升沿前數(shù)據(jù)已經穩(wěn)定這個思路調整。第二個可能的原因是時鐘邊沿檢測失敗。我之前說過要用兩級同步檢測邊沿如果你圖省事直接用sclk作為觸發(fā)時鐘的always塊在FPGA布局布線后偶爾會出現(xiàn)偶爾丟一拍時鐘的怪問題。這種問題非常難查最好在一開始就按同步設計的方法來寫。7.3 CS釋放導致最后一個字節(jié)丟失這是Flash和ADC類設備上非常典型的問題。最后一個字節(jié)的數(shù)據(jù)在最后一個SCLK邊沿才有效如果你的狀態(tài)機檢測到位計數(shù)達到數(shù)據(jù)寬度就立刻釋放CS很可能會把最后一位數(shù)據(jù)截掉。我建議在狀態(tài)機里設置一個尾巴狀態(tài)或者延后一拍釋放CS。也就是說即使最后一比特已經發(fā)送完成也要把CS維持低電平至少半個SCLK周期再釋放。為從設備的數(shù)據(jù)鎖存提供時間窗口。這也是為什么我前面的代碼里DONE狀態(tài)單獨占了狀態(tài)機的一拍時間目的就是為了讓CS晚于SCLK釋放。7.4 FPGA和STM32通過FMC/SPI通信時容易犯的錯STM32H743這類高端MCU跟FPGA的接口方式很多FMC靈活的存儲控制器是很多人選用的方式。FMC把FPGA當作外部存儲器來訪問FPGA這邊則會做一個總線轉SPI的橋接邏輯。這種情況下有一個很大的坑FMC寫入的數(shù)據(jù)位寬和SPI實際發(fā)送的位寬可能不一致。比如FMC總線是16位的而某個SPI從設備的寄存器只有8位。如果FPGA這邊沒有做高位屏蔽或者數(shù)據(jù)拼接就會出現(xiàn)寫一次命令SPI發(fā)出的是兩個字節(jié)從設備收到多余的數(shù)據(jù)。解決的辦法是解析FMC的地址線讓每個寄存器地址精確映射到一次SPI傳輸而不是讓數(shù)據(jù)總線直接對接SPI的發(fā)送寄存器。另外FMC接口寫入的時序比較快而SPI本身相對慢。如果MCU側連續(xù)寫入多個寄存器FPGA這邊如果還沒有處理完上一筆事務新的請求就會丟失或者覆蓋。所以務必要在FMC接口和SPI模塊之間加FIFO做緩沖并且提供滿標志給MCU讀取。這個細節(jié)我踩過太多次了不加FIFOMCU寫太快FPGA就會漏命令。7.5 調試工具推薦SPI調試建議使用邏輯分析儀不要只依賴示波器。SPI是數(shù)字協(xié)議邏輯分析儀可以把CS、SCLK、MOSI、MISO四根線一起抓下來還帶協(xié)議解析直接看你發(fā)的是什么數(shù)據(jù)、收的是什么數(shù)據(jù)極其直觀。我用的是那種幾十塊錢的8通道邏輯分析儀配合開源軟件日常SPI調試完全夠用。如果現(xiàn)場沒有邏輯分析儀用示波器至少同時看兩路一路SCLK一路MOSI或CS。用余輝模式可以看到信號翻轉的瞬態(tài)過程判斷時序余量。8. 代碼可維護性參數(shù)化與通用化8.1 參數(shù)化才是一次寫好處處復用我見過不少同學寫的SPI模塊數(shù)據(jù)和時鐘都寫死在代碼里。一旦換芯片整段代碼改得面目全非。真正好用的SPI模塊應該參數(shù)化到改幾個parameter就能適配不同外設的程度。我自己的參數(shù)表一般是這樣的DATA_WIDTH支持8、12、16、24、32位MSB_FIRST可切換CPOL、CPHA可配置CLK_DIV可在運行時通過寄存器調整分頻系數(shù)有了這些參數(shù)換一個ADC、換一個Flash基本就是改初始值的事狀態(tài)機的骨架完全不用動。8.2 異步FIFO隔離時鐘域如果在設計中SPI的時鐘域和系統(tǒng)時鐘域不同比如SPI SCLK來自PLL的獨立時鐘域建議在SPI模塊外面包一層異步FIFO。發(fā)送側寫FIFO用系統(tǒng)時鐘讀FIFO送進SPI模塊用SCLK時鐘域接收側反過來。這樣能有效避免跨時鐘域導致的數(shù)據(jù)錯亂。我實際的項目中經常遇到MCU通過FMC總線訪問FPGAFPGA再通過SPI控制ADCFMC側和SPI側的時鐘不同步FIFO幾乎是必選項。而且FIFO深度建議不小于16能緩沖Burst寫入的峰值。8.3 添加可讀的狀態(tài)寄存器最后一條經驗在SPI模塊里增加一個狀態(tài)寄存器把busy、error、當前狀態(tài)、最近一次傳輸?shù)腷it數(shù)暴露出來。上板調試時通過JTAG或者UART把這些寄存器讀回來能極大縮短排查時間。很多看似玄學的問題其實只要看寄存器狀態(tài)就能定位到具體環(huán)節(jié)。我調試SPI從模式的時候就把最近一次SCLK邊沿檢測計數(shù)寫進狀態(tài)寄存器一旦MCU那邊的時鐘極性配置詭異我通過寄存器看到的計數(shù)異常就能反向定位MCU的配置錯誤。9. 速率評估與極限設計經驗9.1 能跑多快取決于什么SPI的極限速率不光是SCLK頻率本身還取決于FPGA內部邏輯的時序收斂情況。對于50MHz的SCLK方波的上升沿和下降沿都快信號完整性的要求隨之提高PCB上如果有長的走線反射可能導致采樣錯誤。我自己的經驗是在FPGA的普通IO上SPI頻率跑到50MHz以上就要開始關注IO走線長度、是否加了串聯(lián)電阻、板廠的阻抗控制是否精確了。對于一般的低速外設ADC、Flash、屏幕10~30MHz是完全夠用的區(qū)間也是邏輯最容易做到穩(wěn)定可靠的區(qū)間。9.2 如何優(yōu)化速率如果你確實需要更高的SPI速率優(yōu)化的重點有兩個一個是減少SCLK產生邏輯的組合邏輯延時。把分頻計數(shù)器的比較邏輯做簡化比如計數(shù)到0比計數(shù)到某個任意值邏輯更快。一個是盡量把MOSI更新的邏輯靠后保證數(shù)據(jù)在采樣窗口內的建立時間盡可能長。還有一個小技巧在SCLK每個翻轉沿之前一拍就把MOSI更新好。這意味著你沒有完全按SCLK的邊沿來發(fā)數(shù)據(jù)而是提前一點更新。這在FPGA內部實現(xiàn)上等效于把數(shù)據(jù)切換和時鐘翻轉解耦數(shù)據(jù)穩(wěn)定窗口變寬。這也是很多優(yōu)秀SPI驅動性能更好的原因。10. 個人踩坑總結幾個值得反復咀嚼的教訓做了這么多年FPGA開發(fā)SPI這個接口我前前后后寫過不下十版每次都有新的理解。有幾條個人體會分享給大家參考。第一永遠不要相信標準SPI這種說法。不同的外設時序定義千差萬別。接到一個新芯片第一件事一定是把手冊里的時序圖翻譯成自己狀態(tài)機的四個關鍵節(jié)點CS拉低位置、第一個采樣邊沿位置、最后一個采樣邊沿位置、CS釋放位置。翻譯完了再寫代碼成功率能翻一倍。第二仿真和上板截然不同。仿真解決的是邏輯對不對的問題上板解決的是物理世界怎么匹配的問題。很多問題仿真里根本不存在因為仿真里沒有傳播延時、沒有信號完整性問題、沒有IO電平判定的模糊區(qū)。所以仿真過了只是開始不是結束。第三看波形要看出趨勢而不是瞬間。SPI調試中單次觸發(fā)能抓到問題但更隱蔽的問題是間歇性的。我建議邏輯分析儀用連續(xù)觸發(fā)或者長時間抓取模式看看很長時間內有沒有偶發(fā)的錯位因為這種問題往往是片選時序邊緣抖動或者外部干擾引起的。第四代碼的可讀性和可維護性極其重要。SPI模塊雖然代碼量不大但至少要在文件頭部把時序參數(shù)、狀態(tài)定義、使用方式寫清楚。因為三個月后你自己都未必記得當初為什么CPHA要這樣配置。寫設計筆記是FPGA工程師職業(yè)素養(yǎng)的一部分。第五實在調不通的時候把SCLK降速試試。很多時候硬件就在那里只是你的時序余量不足。把SCLK降一半很多問題會暴露得更清楚——如果降速后依然出錯說明問題不在速率而在協(xié)議配置或者接線本身。這一步能幫你迅速縮小排查范圍。如果你打算把SPI接到非標的設備上我建議先把標準的SPI主模式調通再做定制化修改。把基礎模塊驗證扎實后面加什么花活都容易。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
97色色色| 99色热视频在线| www.天天日| 日本一区二区三区精品视频| 九月婷婷| 欧美激情凹凸丁香网| 日韩高清久久| 丁香六月婷婷久久综合| 玖玖资源站国产| 久久99人人| 99热在线观看精品| 色婷五月| 狠狠干综合| 激情五月综亚网| 操操操97| 大香蕉久艹| 五月花婷婷最新| 日熟女| 丁香五月天电影| 日本在线va| 九九精品综合| 婷色天堂| 婷婷五月激情图片| 亚洲综合久| 91wwmm导航| 日本精品干| 91九九九九| 久久XX| 亚洲五月花| 久久婷婷国产| www.99精品日操伊人乱碰在线| 五月婷婷六月丁香| 色五月天综合网| 九月激情综合| 婷婷丁香五月天激情| 欧美情色一区| 99在线播放| 成年人丁香五月| 婷婷开心青青草| 久久91久久精品久久| 亚洲国产成人综合| 久久这里只有精品视频1| 色五月激情问网站| 天天日天天爽夜夜爽| 狠狠艹狠狠艹| 狼人婷婷综合| 日日噜噜夜夜狠狠久久丁香六月| 91成人看| 国产操B| 五月丁香六月成人| 五月欧美丁香在线观看| 激情久久丁香| 五月天婷婷网站888| 99精品在线观看| 亚洲性视频| 丁香五月花影院| 五月天精品| 俺去也综合| 五月婷婷手机在线| 激情五月综合ì香亚洲| 婷婷丁香69精华| 热99.com婷婷| 亚洲无AV在线中文字幕| 97人妻碰碰中文无码久热丝袜| 五月婷婷丁香| 婷婷六月天激情| 日本婷婷在线| 女人天堂久久| 99九九免费精品| 亚洲综合五月天婷婷丁香| 久久综合丁香激情五月| 狠狠色丁香婷婷综合久久97AV| 97影院一级片| 五月丁香日本片| 亚洲人妻电影| 99热在线极品极品| 色色综合无码| 丁香五月激情啪| 丁香五月天堂亚洲社区| 色网五月婷婷| 免费无码毛片一区二区A片| 超碰免费大香蕉| 五月婷婷欧美| 99这里只有精品|v| 日韩AV免费看| 欧美成人va| 色婷婷久久综合中文久久一本| www.狠狠操| 色色婷婷综合网| 天天日综合| 久久这里只有精品8| 亚洲人成色A777777在线观看| 99热精品在线| 噜噜干日本| 激情图片五月天| 国产日韩亚洲欧美在线观看| 五月激情婷婷丁香天堂| 亚洲激情综合| 久久丁香| 久久九九精彩| 啊V视频在线观看| 国产精品久久99| CAOBIBI| 91人操| 91seAV| www.色色五月天.com| 丁香五月天堂网AV| 99操视频| 五月天俺去也| 日日日日日| 天天色天天爱天天爱天天爱y| 国产精品国产VA片国产| 五月丁花六月丁香综合| 5月婷婷激情网| 人妻综合网| 丁香婷婷91在线观看视频| 熟女啪啪视频| 激情五月天免费视频| 日本高清综合网五月丁香| 欧美精产国品一二三区| 天天做天天爱天天爽| 婷婷成人视频| 欧美十二区| 超碰在线综合| 久久机热思思热| 五月婷AV| 操碰97| 婷婷五月天开心网| 伊人热在线大香蕉| 色综合视频| 精品久热| 欧美综合激情五月| 五月天激情小说| 亚洲天堂有码| 丁香五月欧美色综合| 97久久人人操| 综合六月久久| 熟美女麻豆| 久久刺激网| 婷婷伊人久久综合| 国产成人综合在线| 天天色天天操天天射| 国产操碰| AAA亚洲AV| www.久热| 日韩精品一区二区刘| www狠狠| 26uuu色噜噜精品一区| 开心婷婷五月| 熟美女麻豆| 成人网站在线观看视频| 国产精品操| AV色五月婷婷| 中文av网站| 日本精品人妻无码77777| 99re在线观看| 欧美婷婷五月丁香| 六月丁香啪啪啪| 成人五月天丁香| 五月丁香999| 99热精品中文字幕| 91日婷婷在线| 日韩婷婷五月天| 色婷婷色五月综合| 久操97| 丁香五月天堂| 91尤物九色在线| 天天日夜夜拍| 专区无日本视频高清8| 婷婷影院欧美| 色丁香五月婷婷婷| 五月天丁香| 色八月婷婷| 久久97| 久久婷婷五月综合色丁香花| 色婷婷五月综合网| 亚洲a片免费观看| 婷婷五月丁香激情色情| 亚洲操b| 五月婷婷久久大香蕉| 婷婷五月天日日日干干干| 六月色色| 婷婷九月激情| 丁香婷婷色五月| 伊人天堂婷婷| 先锋av性爱成人电影| 内射爽无广熟女亚洲| 91人人爽人人操| 人人人人人人人草| 碰人人操| 婷婷五月天综合小说网| 九月婷婷久久久| 九月大香蕉| 婷婷五月天六月丁香| 婷婷综合| www.av视频xx999.com| 久热免费| 日本老女人黄页在线播放| 激情AV| 六月色婷婷综合影视| 丁香婷五月天开心六月| 五月久久综合| 九色婷婷| 亚洲综合五月天婷婷丁香| 色婷婷操逼| 狠狠色成人影片| 伊人久久婷| 色色色色色色网| 欧美日韩99| 毛片九九九九九九| 91爱啪啪| 6080av| 久久久高清| 99人人操人人摸| 欧美日韩成人在线| 五月六月丁香激情| 色色综合激情| 色丁香五月婷婷| 日韩在线视频网站| av操逼网| 久久久久久综合五月婷婷| 在线色婷婷| 色婷婷AV在线| 日韩啪啪视频| 色婷| 五月激情六月婷婷| 五月天婷婷AV| 色五月激情五月| 五月丁香色婷婷久久| 婷婷俺去也| 日韩成人AV在线| 激情婷婷久久| 五月婷婷性爱| 久久婷婷五月综合色欧美| 欧美五月婷婷| 五月婷婷色播视频| 中文成人在线| 91超级碰| 精品一区二区三区四区五区六区介绍| 日本色色网站| 五月婷婷丁香91| 五月天激情子轮| 九九精品自拍| 99精品成人无码A片观看金桔 | 丁香五月天狠狠| 五月综合激情啪啪啪啪啪| 狠狠操狠狠插| 丁香婷婷久久老熟女综合网| 色色色色色热| 丰满少妇乱A片无码| 色99在线| 99啪啪| 九九色网| 中文成人在线| 丁香综合网| 婷婷丁香综合| 亚洲免费av在线| 欧美槡BBBB槡BBB少妇| 99在线观看免费精品视频| 一本狠婷婷综合| 五月婷婷婷婷| 色婷婷导航| 五月天激情综合网站| 色色色色色五月| 人人摸人人澡人人| 久久久WWW| 超碰自拍天堂| 思思热在线精品视频| 日韩av干| 五月天开心色情网| 欧美日韩999| 婷婷五月色亚洲| 成人五月天婷婷| 密着浓厚中出乚交尾GvG935| 综合激情五月天| 九九这里是免费的视频5| 婷婷久久五月| 久99热| 亚洲AV无码一区二| 成人午夜天| 天天操,天天插| 4399在线观看免费高清电视剧| 99超碰欧美| 成人网在线视频| WWW色综合| 伊人久久大香线蕉亚洲五月天,| 东京热伊人| 婷婷激情蜜桃玖玖丁香| www.色婷婷。com| 天天想夜夜爽天天爽| 老师高潮流白浆喷水的A片| 97色色网| 99色最新在线视频网站| 亚洲国产色色| 日本五月天婷婷丁香| 六月亭亭久久综合激情| 丁香五月六月激情久久| 思思热高清在线观看| 丁香五月天在线直播观看| 97精品综合久久内射| 五月婷婷六月天| 丁香激情网| 激情五月天小说|五月天开心激情网|亚洲精品国产自在现线|黄色五月天 | 亚洲精品99| 色播五月婷婷五月| 99热久久这里只有精品| 欧洲日韩一区二区三区| 六月婷婷九月丁香亚洲综合| 丁香五月中文字幕久色| 五月婷婷六月丁香综合在线| 深爱激情网婷婷| 丁香五月骚喷水视频| 日本在线免费中文com.| 婷婷五月噜噜| 丁香 亚洲 久久| 亚洲天堂大香蕉| 色五月婷婷天天操夜夜操| 丁香五月婷婷激情网| aaaa久久| 9色视频在线| 9精品在线| 99色性爰网络| 人人妻久久妻| 综合久久97| 丁婷婷五月天在线播放| 99久在线精品| 99ri精品视频在线观看| 操久久网| 色情婷婷| 开心激情网五月天| 色五月丁香婷婷| 夜夜穞天天穞狠狠穞AV美女按摩| 99无码视频| 99热这里有精品| 人人操9| 国产婷婷久久| 丁香五月玖玖| 五月伊人网| 99在线观看这里都是精品| 成人在线网| 99碰网站| 伊人五月天97| 狠狠色狠狠| 91婷婷在线观看| 丁香五夜激情四射夜夜夜| 色色综合激情| 欧美色骚婷婷五月天| 国色天香伊人狠狠色| 婷婷五月天六点丁香五月| 99精品在线下载| 天天舔天天| 久久a热| 丁香五月天啪啪a日本| 男人的天堂五月丁香| 97热这里精品在线视频| 久久婷婷五月综合色丁香| 五月亭亭狠狠| 成人午夜无码视频| 91免费试看| 丁香五月婷婷影院| www.五月婷| 大香蕉精品视频| 丁香婷婷色五月天| 五月丁香色| 婷婷色五月天在线观看| 亚洲电影中文字幕| 激情五月天综合图片小说网站| 久久九九视频| 人妻视频在线| 99久久人人| 9 1大香蕉| 男人天堂 久久| 五月丁香久久综合| 天天干天天爽天天爽| 亚洲综合五月天婷婷丁香| 99自拍视频| 亚洲综合激情五月久久| 久热一区| 操人妻90p| 99热免费| 99九九免费精品| 久er7久热| 狠狠五月天激情| 我爱大香蕉| 久久色五月天| www.国产色| 九色自拍| 97大香蕉五月天| 69精品无码一区二区三区| 中文字幕AV网址| 99 热| 丁香六月亚洲综合| 色色欧美。| 婷婷之玖玖| 97碰碰在线观看视频| 久久激情视频99| 五月丁香影院| 欧美日本免费一道免费视频| 五月丁香六月日逼| 五月丁香色婷婷| 色五月播五月| 超碰国产在线| 五月花在线观看视频| 色香蕉影院| www,婷婷,com| 激情五月天网页| 大香蕉婷婷五月| 青青草视频免费观看| 久久久久久久久久婷婷| 日本五月婷婷久久久六月丁香| 99热这里只有精品无码| 丁香五月婷婷激情97| 欧美色色色色色色色色色色影视| 涩五月婷婷| 色婷婷综合在线| 色婷婷丁香香香蕉视频| 东京热人妻一区二区三区在线| 九九热这里只有国产精品| 国产人妻人伦精品一区二区| 五月天婷婷色播| 中文字幕,综合,91| 99碰视频| 操逼棍操逼| 成人做爰高潮A片免费视频| 天天 青草 制服丝袜 在线| 大香网伊人久久综合| 色狠狠色综合久久久绯色AⅤ影视| 五月天婷婷丁香| 国产小精品| WWW.桔色成人.COM入口| 美女婷婷激情亚洲| 丁香五月开心五月激情| 欧洲MV日韩MV国产| 人妻VideOssS人妻高清| 91av传媒高清在线视频网| 狠狠色九月| 激情纯色婷婷五月天在线不卡视频| 天天天操天天天日| 国外亚洲成AV人片在线观看| 日本99久久| 婷婷五月天福利| 婷婷九月丁香中文| 久久久久久丁香五月| 嫩草视频。| 婷婷五月情| 黄色激情网站在线观看| 98永久精品| 精品夜夜澡人妻无码AV| 超碰av在线| 天堂草在线观| 99在线亚洲| 午夜日韩久久久网站| 日逼免费视频| 婷婷色情 | 一级黄色影片| 欧美激情综合五月色丁香| 天天草人人摸| 五月天婷婷丁香| 97人人超| av一级棒av| 婷婷六月综合在线| 91欧美| 99久久婷| 婷婷八月丁香激情综合| 五月天激情小说| 精品动漫 无码av| 最新亚洲色色网| 一本色道久久综合狠狠躁小说| 狠狠五月丁香色婷| 99热免费精品| 疯狂做受XXXX高潮A片动画| 亚洲 无码 中文字幕 中出| 91九九热| 99视频精品在线| 玖玖在线视频| 五月丁香 狠狠爱| 91操碰| 丁香亚洲婷婷五月| 色狠狠色综合久久久绯色AⅤ影视| 色九网| 思思re视频在线| 免费看欧美成人A片无码 | 婷婷噜噜| 狠狠五月激情在线| 五月婷婷色白丝| 美女天天艹人人爽| 九九热99久久99| 任你搞网站| 五月丁香色婷婷久久| 国产AV一区二区三区最新精品 | 欧美爆乳一区二区三区| 五月婷婷综合性爱噜噜| 综合在线色婷婷| www.久久久.com| 五月婷在线| 色噜噜狠狠色综合日日免费| 激情婷婷在线中文字幕| 欧美日韩一区二区三区四区| 99热色精品| 亚洲免费观看高清完整版AV线| 丁香五月六月婷婷自拍| 99日本精品视频热| 特级操b片| 久cao香蕉影院| 色色网站在线| 国产精品热搜丁香五月婷婷| 丁香六月激情综合网| 欧美成人猛片AAAAAAA| 五月激情天天干| 啪啪 综合网| 国产精品久久久久久久久久免费| 99久久综合网| 欧美激情综合色综合啪啪五月| 伊人三级激情| 色444综合网| 久久婷狠狠色| 久久久久思思热| 久久网站免费亚洲| 丁香五月首页| 五月天综合久久丁香91| 97操| 婷婷五月影院| 9999色色色色| 亚洲人妻AV| 日韩AV在线影片| 色播五月天激情| 丁香五月婷婷深爱综合激情| 免费观看日韩成人av| 成人做爰黄A片免费看直播室男男| 色婷婷久久| 伍月婷丁香婷| 亚洲精品乱码久久久久久按摩观| 成人性爱无码| 天天操,天天插| 91婷婷色| 20253AV| 激情五月综合| 色五月大| 伊人网色婷婷五月天| 亚洲狠狠婷婷综合久久久| 操九色| 婷婷5月久久综合网站| 另类综合激情| 14色综合婷婷| 五月丁香在线婷婷美女| 色五月av伊人| 五月丁香人人婷婷在线观看| 色综合色| 色色色色色综合| 双性美人被调教到喷水A片| 国产玖玖资源| 五月婷婷色情| 五月婷婷天天色| 丁香五月激情月| 中文字幕在线资源| 超碰9| 91丨九色丨高潮丰满日本| 九热视频| 欧美久热| 五月天久久婷| 欧美三级巜人妻互换| 五月婷婷啪| 色欲午夜无码久久久久久张津瑜| 骚货艹网站视频| 色丁香综合影院| 激情五月婷婷啪啪| 日韩三级片一区二区| 亚洲不卡欧洲| www.maotanji.com| 久久天天天| 色99热| 中文AV在线观看| Www.Av网9| 人人人操 超碰| 奇米影视777在线_在线观看午夜_h小视频在线观看_岛国大片 | 999九九九久久久99HD| 亚洲男女激情| 久久人人超| 最新日韩久热免费视频看看| 日本视频99| 久久九精品| 永久无码色| 久久99网站| 五月婷婷开心激情六月蜜桃| 99热只有精| 台湾无码A片一区二区| 99热资源在线| 任你日视频| 色综合色综合网| 香蕉AV777XXX色综合一区| 色婷婷69| 操操操97| 六月婷婷av| 国产性色蜜乳| 婷婷五月天a| 午夜色丁香| 99色干| 五月丁久久| 丁香五月综合| 另类图片五月天激情| 91 九色 入口| 色五月综合在线| 天天干天天操天天上| 99九九在线精品热动漫| 色逼综合网| 国产精品第一国产精品| 天天干人人奸97| 五月丁香成人| 色色婷五月天| 五月丁香啪啪综合| 成人久碰| www:99热视频| 婷婷五月天激情综合| 99色免费观看全部| 拍真实国产伦偷精品| 99热99天堂| 国产熟女一区二区三区五月婷| 97香蕉久久超级碰碰高清版 | 亚洲性视频| 亚洲九九夜夜| 欧美英丁香开心快乐六月天网| 成人综合伍月天| 久热这里只有精品6| 成人五月天丁香婷| 91九色PORNY大屁股| 中日韩狠狠色| 丁香综合伊人| 亚洲综合热| 亚洲欧洲国产精品| 中文字幕 中文字幕明步| 99超级碰碰| 丁香美女主播视频在线观看| 少妇大叫太大太粗太爽了A片 | 超碰97免费在线| 九九色中文| 丁香婷婷色五月激情综合| 亚洲在线综合| 五月婷婷综合激情小说| 九九日本视频| 久久精品99| 亚洲乱码w在线观看| 五月丁香婷爱在线| 激情五月天色色网| 在线不卡的视频| 五月丁香六月情婷婷久久| 综合图片色色| 69人人操人人爽| 色情免费视频播放| 国产精产国品一二三在观看| 噜综合| 美日韩成人| 99热午夜精品| 九九99热| 99久久99视频只有精品| 大香蕉综合网| 婷婷色基地在线看 | 九九十99视频| 久久婷婷内射| 五月天婷婷綜合院| 成人色站,在线视频,看片-SS1AV| 51国精产品自偷自偷综合| 91在线日| 无码任你操| 天天射影院| 五月婷色丁香| 五月天桃色深爱网| 久久久久久久91| 超碰狠狠色| 牛牛热这里只有jingpin| 国产毛片精品一区二区色欲黄A片| 色香久久| 日韩在线婷婷五月天综合| 久久综合五月情| 五月天另类图片| 亚洲av网站| 日韩精品一区二区刘| 婷婷激情小说| 五月天婷婷色色网| 五月天色丁香| 91919191919久久成人视频| 大香蕉啪啪啪| 日日噜人人人做人| 色婷婷成人做爰A片免费看网站| 人人综合久| 综合网啪| 婷婷丁香五月综合| 天天摸天天舔天天天天爽| 色婷青青| 色婷婷五月天亚洲| 亚洲99在线| 日韩美一级毛卡片| 久久婷丁香五月| 热九九九九| 丁香五月婷婷色情综合| 久热99狠| 欧美色色色| 久久的爱大香蕉| 99精品久久| 国精产品一区一区三区免费视频 | 99热这里只有精品 搜| 午夜成人片400| 天天插天天插天天日| 丁香六月婷| 九九热黄色| 99爱在线视频| 丁香五月激情在线| 婷婷色一二三区波多野结衣| 开心五月网| 超碰在线个人观看| 亚洲va欧洲va国产va不卡| 99热久久日本| 久久激情五月| 丁香婷婷性爱| 99九九这里有免费视频| 久综合色| 婷婷五月天性| 超碰无码老师| 五月天成人小说| 夜夜嗨一区二区三区直播内容 | 久久人操-久草婷婷-成人AV| 婷婷丁香18| 丁香六月亚洲综合| 五月天婷婷丁香| 丁香香五月激情免费视频| 欲色人妻| 久久婷婷五月综合色播| 色五月婷婷1| 中字幕视频在线永久在线观看免费| 婷婷色五月在线视频| site:hcxsz888.com| 狠狠操综合| 丁香婷婷人妻综合网| 丁香五月婷婷五月| 丁香五月综合| 狠狠爱婷婷爱| 精品久久久999| 99热爱爱干干日| 玖久精品视频9| 91色色色| 被强行糟蹋的女人A片| 99九九玖玖| 婷婷午夜激情| 日日夜夜干| 亚洲色夜| 综合婷婷五月丁香在线观看| 伊人色综合久久久| 新激情五月天| 99这里有精品| 五月天激情AAAA| 91av视频在线观看最新网址| 日日操夜夜擼| 九九亚洲| 另类五月婷婷| 丁香五月瑟瑟| 丁香五月停停av| 婷五月丁香俺| 色综合久久无码| 超碰狠狠干99| 九九aV| 五月天久久综合婷婷丁香| 国产永久一二一起草| 亚洲操精品| 99久久五月丁香野外| 超碰操日| 思思热视频| 色人妻五月| 五月婷婷久久久| av网址在线播放| 日本天堂免费99| 久久xx| 97婷婷五月丁香| 色婷婷视频在线| 婷婷五月天另类视频| 丁香五月激情月| 中文字幕成人| 九九这里只有精品| 可似看的AV| 久久综合丁香| 丰满少妇猛烈A片免费看观看| 六月婷婷俺也去| 色久九| Www.激情| 色婷婷狠狠干芒果TV| 9色在线| www.97干视频| 婷丁香五月天| 超碰婷婷五月| 婷婷综合九色伊人| 丁香五月激情网| 日本天天色| 丁香六月婷婷综合激情欧美| 五月婷婷久久爱| 日韩黄黄| 天天色视频| 97色图片中文字幕视频在线观看| 五月丁香啪啪网| 五月丁香综合| 婷婷少妇激情| 久久九九99| 久久丁香五月天| 噜噜噜久久| 丁香五月婷婷色偷偷| 五月天播播综合| 久热精品视频在线观| 欧美超级视频97| 亚洲色无码A片一区二区麻豆| 99热亚洲精品| 99色精品| 激情六月综合| 婷婷欧美综合| 五月丁香激情综合啪啪| 激情五月天小说|五月天开心激情网|亚洲精品国产自在现线|黄色五月天 | 另类小说五月天| 人人操人人爱丁香五月| 小视频久久久aaa| 色婷久久| 99热这里只有精品免费观看| 51成人| 超碰cap| 丁香视频| 五月天综合久久丁香91| 综合激情五月天| 五月婷婷之综合激情在线| 色播五月综合网| 五月香婷婷| 狠色综合网| 婷婷性爱无码视频| 四月丁香五月婷婷久久| 91色情播放| 99愛国产| 久久五月激情网| 亚洲色激婷| 婷婷五月天激情文学小说| 丁香五月宝贝激情网| 国产色色网站网址| 激情五月天伊人av| 婷婷五月天电影区小说区| 久青操| 婷婷五月天开心网| 99热精品中文字幕| 黃色三级三级三级三级 qixing300.shrkbk.com www.jinbozs.com tianmiaosw.com | 91九色小视频| av在线超清中文| 另类五月激情| 天天综合色丁香| 激情五月天激情五月天| 五月色亚洲| 婷婷激情综合色五月久久91| 亚洲超碰在线| 亚洲精品国产A久久久久久| 91操在线观看| 婷婷综合天堂| 五月丁了香蕉综合| 色97啪啪| 婷婷四月 成人 狠狠干| 日日夜夜婷婷| 色色激情五月天| 久久婷婷激情四射五月天| 欧洲亚洲最新精品| 五月四色婷婷| 狠狠色婷婷丁香六月| 亚洲综合色丁香婷婷六月| 久久久人人人妻丝丝丝| 夜丁香五月婷婷| 亚洲色五月天| 成人国产欧美大片一区| 非洲一级AV| 中文字幕黄色电影网址| 婷婷丁香五月天综合网| 99爱这里只有精品免费视频| 日本色色网站| 五月婷婷操操| 婷婷综合另类| 丁香九月久久| a色色片| 99热| 天天日日夜夜| 亚洲天堂AV综合网| 操逼毛片国语对白| 五月网激情| 丁香五月婷婷色| 五月综合久久| 国产精品黑丝| 五月天另类综合网| 色五月丁香婷婷综合| 色999五月色| 亚洲亚洲人成综合网络| 91超级碰碰碰| 久久婷婷五月天激情| 色婷婷伊人激情在线观看| 五月天婷婷激情在线色图| www.minyis.com【JT】国内CDN落地页保证转化QQ2101460746 | 4399成人黄A片| 99视频在线观看欧| 亚洲色图五月丁香| 香蕉五月婷婷| 激情五月天www| 欧美成人精品A片免费一区99| 婷婷五月丁香综合桃花色网| www.五月激情红色| 欧美搡BBBBB摔BBBBB| www91在线| 婷婷区日本| 夜夜操狠狠操| 国产精品一区在线观看你懂的| 午夜天堂啪啪| 人妻aV在线| 月色色综合婷婷网| 大香蕉五月天婷婷| 99视频热| 色播五月婷婷| 色婷视频| www、色色色| 夜夜躁爽日日| 五月天激情亚洲| 99热个人在线| 只有久久精品免费| 综合色图婷婷| 五月婷婷啪啪网| 噜噜五月天综合| 强奸幻女毛片| 亚洲av骚货| 99热婷婷| 五月丁香拍拍激情综合| 婷婷五月激情五月激情| 五月综合久久| 啊v视频在线观看| 五月天综合区| 五月丁香777| 欧洲S级在线观看| 99玖玖免费视频| 丁香婷婷综合色五月激情国产基地| 丁香婷在线| 91VIP在线观看| 色很很96| 97人人干| 26UUU一区二区| 天天肏夜夜肏| 一起草av在线观看| 新伍月婷婷| 色婷婷啪啪| www.9797国产| 99人人干| 日韩性视频| 九九热99视频| 开心五月激情网| 婷婷丁香宗合888| 人人干av| 超碰免费人妻| 婷婷五月综合在线| 色婷婷网| 亚洲乱码日产精品BD在线观看| 天天日,夜夜爽| 操草草草| 操逼123网| 成 人片 黄 色 大 片| 久久狠狠欧美| 色优久久| 九九九九综合| 亚洲精品字幕在线观看| 亚洲精品乱码久久久久久按摩观| 99视频久久| 99ri视频| 欧美婷婷日本| 91色色色18| 九九99九九99九九99视频网| 激情综合色婷婷啪啪六月天| 五月六月婷| 99色免费| 91精品久久久久| AV大香蕉| 综合久久影院| 久久婷婷五月天懂色| 色狠狠综合| 激情婷婷丁香色五月综合| 极品人妻VIDEOSSS人妻| 成人丁香婷婷| 丁香五月花| 久久五月婷天天干| 超碰在线94| 这里只有精品视频在线| 国产成人AV在线| 色五月激情综合网| 丁香五月天无码| 日熟女| 99国产精品久久久久久久久久久| 婷婷五月天天| 日韩国产在线精品| 色婷婷五月综合在线| 天天综合天天玩夜夜玩天天玩夜夜玩 | 天天肏屄夜夜爽| 五月天偷拍| 国产99精品免费视频| 激情综合视频| 五月婷婷婷婷| 婷婷,五月天,丁香,第一| 中文字幕av网站| 久久这里只有精品热在99| 婷婷五月天黄色网址| 人妻熟女一区二区AV| 色综合色色色色色| 五月丁香啪啪啪综合网| 91精品刘玥| 五月婷婷啪啪| 色五月av伊人| 色婷婷亚洲综合av| 丁香色色网| 久草大| 一起操最新网址| 激情五月综合网| 五月婷婷九| 欧美色色日韩| 亚洲六月色| 激情五月天啪啪| 91九色国产在线| 五月天婷婷色| 色婷婷久综合久久一本国产AV| AV在线观看网站| 9久9久9久女女女九九九一九| 开心五月激情网| 久久婷婷青草五月天| 99热丁香| 天天色粽合合合合合合合| 日撸夜撸日操| 99热国内| 秋霞少妇毛片| 97色色视频| 婷婷激情5月| 久久综合网免费视频| 任我肏| 免费黄网不卡AV| 五月色网| 婷婷爱婷婷| www.黄色片-久久成人国产精品在线播放-999AV| 欧美一级色| 丁香五月天社区| 九九sese| 丁香五月1页| 五月丁香香蕉| 五月天丁香成人| 欧洲电影在线观看免费版英语版 | 五月天婷婷久久| 五月天激情国产综合婷婷| 日日噜狠狠| 丁香六月天婷婷| 亚洲第一成人AV| a网站免费观看| 懂色AⅤ| 欧美综合激情五月| 偷偷操99| 婷婷五月天午夜激情影院| 婷婷亚洲综合| 色五月天丁香婷婷| | 婷婷五月天AV在| 国产亚洲精品久久久久久郑州| 综合网天天| 可以看的av| 色五月婷婷、老熟女| 狠狠狠狠狠狠色| 八戒青柠影视剧在线观看| 91精品国产91久久久久青草| 99热综合色图| 99日韩网站| 婷婷五月天av网| 久婷久婷| 9999热在线观看| 亚洲成片在线观看| 丁乡久久| 亚洲视频另类| 26uuu国产精品| 天天干狠狠操| www,欧美干干干干干干| 婷婷美女精品视频| 91se在线视频| 99热在线观看99| 90色免费视频| 精品人妻伦一二三区久久| 超碰激情网| 深爱五月天| www,av好吊操| 丁香六月毛片| 婷婷五月天成人网站| 开心婷婷丁香五月| 天天xxxxxx天天日| www.狠狠艹| 久9久9久9久9久9久9| 五月色综合网| 欧美激情综合色综合啪啪五月| 九九99九九99九九99视频网| 婷婷五月天婷婷| 手机激情网| 9久久AV| 超碰99热精品在线| www.丁香六月婷婷久久天堂影院.con| 丁香五月天久久| 99玖玖视频| 九九99九九精品视频| 成人做爰黄A片免费看直播室男男 A片试看120分钟做受图片 | 思思热再线视频| 五月天婷婷色播在线网| 婷婷激情丁香六月| 激情人妻蜜夜系列区| 欧美人人操| 国产精产国品一二三在观看| 亚洲无码 图片区| 日日噜噜久久婷婷五月天| 婷久看人爽| 日本99久久| 色色丁香五月婷婷| 色婷婷影视| 爱射综合| 婷婷伊在线| 亚洲99视频| 激情综合自拍五月婷婷色五月| 激情五月天黄色小说| 97色伦另类图片小说视频 | 久热免费视频| 天天日天天色| 国产 亚洲 在线| 黄桃AV无码免费一区二区三区| 99国产精品白浆在线观看免费| 开心五月天激情网| 久草热8精品视频在线观看| 色色网91| 看婷婷五月天网| 久热网在线视频| 台湾佬天天日丁香婷婷五月天 | 狠狠狠狠免费| 欧美婷婷五月无砖| 天天做天天干天天综合网| 2025年最新亚洲在线欧美| 91一起操| 色色热| 俺去婷婷 丁香| 97五月久久丁香婷婷| 狠色狠色狠色狠色狠色网| 日日夜夜干| www久久99| www超碰| 熟妇人妻中文字幕无码老熟妇| 日本三级网址| 色五月天网| 桃色成人网| 丁香深五月婷婷| 久久久五月天| 五月天六月丁香| 色婷婷五月综合| 成人做爰高潮A片免费视频| 国产成人AV在线播放| 婷婷中文字幕版| 五月天天视频| 久操大香蕉| 久色中文| 婷婷久久大香蕉| 亚洲成av人影院| 色色爽爽天天| 激情99。| 色综合久久88色综合天天99| 色色综合网www| 五月婷婷高清| 天天操天天草天天草天天| www.yw色| 精品国产乱码久久久久夜深人妻 | 夜夜综合色| 96精品成人无码A片观看金桔| 99日在线观看视频| 色色综合无码| 九九婷婷综合| 五月丁香色婷婷| 婷婷九九| 热成人网| 99这里有精品| 五月丁香综缴情性爱| 一起草无码| 婷婷舔| 久久开心五月天激情| 色色欧美色色| 激情com| 婷婷激情综合网| 欧美在线视频免费播放| 六月亚洲婷婷6月中文字幕| 曰曰久久| www.婷婷,com| 婷婷五月天成人| 少妇性按摩无码中文A片| 五月婷婷导航| 久久成人综合五月天| 丁香五月性| 狠狠色噜噜狠狠亚洲A∨| 国际国外精品欧洲南美洲专区无码不卡| 五月天婷婷影院| 五月婷久久| 色五月成人| 五月婷婷六月激情| 亚洲AV第二区国产精品| 婷婷国产成人| 日本欧美成人片AAAA| 狠狠爱五月婷婷| 日韩综合大黄| 另类视频五月天| 久婷婷色| 思思久久青草热| 99干免费视频| 热99热9| 操操操91| 色色性爱视频| av在线观看网址| 这里只有精品在线播放| 亚洲愉拍99热成人精品| 午夜性爱影视一区77| 婷婷精品性性性性性性性| 91人人爱| 可似看的AV| 亚洲第一成人无码A片| 可以直接看的av网站| 婷综合| 色婷婷综合网| 伊人五月人妻精品| 色999亚洲人成色| 一级性感黄色内射视频| 99热老网站| 色婷婷影音| 草做免费在线观看| 午夜激情久久| 久婷婷五月激情| 日日天天干| 久久久久婷婷五月热综合| 淫视馆AV在线| 成人Av在线大片| 第四色婷婷丁香五月| 久热re在线视频| 久久久久人妻网址| 大香蕉视频99| 欧美日韩aaa| 婷婷丁香婷婷97| 日本久久精品18| yazhochengrenavwang| 婷婷五月天深爱| 91国产精品视频播放| 欧美婷婷五月天| 五月色色网| 99re视频在线播放| 中文字幕丰满人妻无码专区| 五月婷婷六月综合| 青青操日本摸摸看看| 丁香色综合| 国产AV网页| oVV4WIB3vFi8D| 色色综合网www| 蜜臀A∨在线水帘洞| 婷婷综合九色伊人| 婷婷精品性性性性性性性| 亚洲av网址| 思思精品视频| 五月丁香色婷婷婷基地| 婷婷五月欧美综合| 色色色.COM| 九九激情综合| 免费无码毛片一区二区A片| 狠狠色狠狠鲁| 亚洲欧洲一二| www.五月丁香| 婷婷天堂视频| 天天干天天做| 这里只有精品日韩精品|