免费国产精品自在自线-91精品国产色综合久久久浪潮-99热久久免费频精品-国产精品国模在线观看-久久亚洲国产精品成人?V秋霞-久久国产一级A片免费播放-亚洲国产欧洲综合97久久-久久国产白嫩美女呻吟高潮

ARTICLE DETAIL

資訊詳情

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

ZYNQ PL與PS通信:從AXI寄存器設(shè)計(jì)到LwIP TCP數(shù)據(jù)上傳

ZYNQ PL與PS通信:從AXI寄存器設(shè)計(jì)到LwIP TCP數(shù)據(jù)上傳 簡介面向需要實(shí)現(xiàn)PL與PS協(xié)同工作的FPGA開發(fā)者、嵌入式工程師和高校學(xué)生這份資源圍繞Xilinx ZYNQ平臺(tái)以網(wǎng)口TCP/IP協(xié)議為數(shù)據(jù)出口系統(tǒng)梳理了從硬件架構(gòu)、總線通信到上位機(jī)收發(fā)的工程方案。內(nèi)容基于AXI、LWIP、以太網(wǎng)MAC與DMA等關(guān)鍵環(huán)節(jié)覆蓋接口選型、協(xié)議棧配置、數(shù)據(jù)通路搭建、實(shí)時(shí)性與帶寬優(yōu)化以及調(diào)試測試方法可幫助讀者建立起清晰的設(shè)計(jì)與排錯(cuò)思路。壓縮包整體約56.6MB文件清單與類型明細(xì)暫未提供但方案說明與關(guān)鍵步驟的銜接仍可作為完整項(xiàng)目參考。該資源已有10883人學(xué)習(xí)適合需要從整體理解PL/PS通信鏈路并通過TCP完成網(wǎng)絡(luò)數(shù)據(jù)傳輸實(shí)踐的工程師也可為ZYNQ網(wǎng)口通信類設(shè)計(jì)提供直接借鑒。1. 把 ZYNQ PL 與 PS 通信講透TCP 上行數(shù)據(jù)的關(guān)鍵在于寄存器接口設(shè)計(jì)用 ZYNQ 做數(shù)據(jù)采集然后通過網(wǎng)口把數(shù)據(jù)送到上位機(jī)這個(gè)需求在項(xiàng)目里出現(xiàn)的頻率比想象中高得多。很多開發(fā)者第一次接觸 ZYNQ 時(shí)都有同樣的困惑PL 和 PS 到底怎么交換數(shù)據(jù)TCP 協(xié)議棧跑在哪一端實(shí)際做下來你會(huì)發(fā)現(xiàn)TCP 協(xié)議本身是現(xiàn)成的LwIP 協(xié)議棧一掛就能跑真正的難點(diǎn)在于 PL 端的寄存器讀寫接口設(shè)計(jì)以及數(shù)據(jù)從 PL 到 PS 再到網(wǎng)口的這條鏈路怎么打通。這份資源的價(jià)值就在于此它不只是一個(gè) TCP 例程而是把 PL 與 PS 通信的完整鏈路拆開從 AXI 接口設(shè)計(jì)到 LwIP 網(wǎng)絡(luò)發(fā)送每一步都有可落地的代碼和驗(yàn)證方法。2. AXI 接口選型與寄存器映射PL 與 PS 通信的第一步是定數(shù)據(jù)通道2.1 四種 AXI 接口模式的適用邊界ZYNQ 的 PS 端通過 AXI 總線訪問 PL 端的邏輯資源常見的有 AXI4、AXI4-Lite、AXI4-Stream 和 AXI-Full 四種接口類型。初學(xué)者最容易犯的錯(cuò)誤是一上來就選 AXI4-Stream 做寄存器讀寫結(jié)果數(shù)據(jù)通路建立不起來卡在握手信號(hào)上。選型之前先明確一個(gè)原則控制面用 AXI4-Lite數(shù)據(jù)面用 AXI4-Stream兩頭都要走就用 AXI-Full。AXI4-Lite 的特點(diǎn)是一次只傳一筆數(shù)據(jù)地址和數(shù)據(jù)通道獨(dú)立時(shí)序簡單非常適合讀寫 PL 端的寄存器。比如你要配置采集模塊的采樣率、啟動(dòng)停止標(biāo)志位、查詢狀態(tài)寄存器這些都屬于低頻控制操作用 AXI4-Lite 就夠了。AXI4-Stream 走的是流式數(shù)據(jù)傳輸沒有地址階段數(shù)據(jù)像流水線一樣連續(xù)往外送適用于 ADC 采集數(shù)據(jù)、DMA 搬運(yùn)這種高吞吐場景。AXI-Full 則同時(shí)支持突發(fā)傳輸和地址映射適合需要 PS 端頻繁讀寫 PL 端大塊存儲(chǔ)空間的場景但是在 ZYNQ 上實(shí)現(xiàn)起來復(fù)雜度明顯更高。加上中斷機(jī)制后AXI4-Lite 加 AXI4-Stream 的組合在絕大多數(shù)數(shù)據(jù)采集上傳項(xiàng)目中夠用了。中斷在 ZYNQ 里的實(shí)現(xiàn)不復(fù)雜PL 端拉高一個(gè)中斷信號(hào)PS 端注冊中斷處理函數(shù)就能做到數(shù)據(jù)到達(dá)即通知 CPU。很多人在這里有個(gè)誤區(qū)以為 PS 輪詢 PL 寄存器更簡單實(shí)際項(xiàng)目里數(shù)據(jù)量一大輪詢會(huì)拖垮 CPU 占用率。2.2 寄存器映射的地址分配策略用 AXI4-Lite 實(shí)現(xiàn)寄存器讀寫時(shí)地址分配要做長遠(yuǎn)規(guī)劃。通常的做法是把一個(gè)自定義 IP 核的寄存器空間劃分為四個(gè)段控制寄存器區(qū)偏移 0x00 - 0x0F、狀態(tài)寄存器區(qū)偏移 0x10 - 0x1F、數(shù)據(jù)緩沖描述區(qū)偏移 0x20 - 0x2F、擴(kuò)展保留區(qū)偏移 0x30 以上。拿一個(gè)典型的 ADC 采集上傳項(xiàng)目舉例寄存器映射可以做這樣的分配偏移地址讀/寫功能說明0x00寫控制寄存器bit0 啟動(dòng)采集bit1 復(fù)位bit2 開啟 FIFO 寫使能0x04寫采樣率配置寫入分頻系數(shù)實(shí)際采樣率 時(shí)鐘頻率 / (分頻系數(shù) 1)0x10讀狀態(tài)寄存器bit0 FIFO 空標(biāo)志bit1 FIFO 滿標(biāo)志bit2 采集忙標(biāo)志0x14讀數(shù)據(jù)計(jì)數(shù)寄存器當(dāng)前 FIFO 中積累的數(shù)據(jù)字節(jié)數(shù)0x20讀數(shù)據(jù)讀取寄存器每讀一次FIFO 出一個(gè)數(shù)據(jù)Vivado 中自定義 IP 核時(shí)會(huì)默認(rèn)生成頂層模塊和 AXI 接口的示例代碼。建議在自動(dòng)生成的模板基礎(chǔ)上修改保留 AXI 接口部分把用戶邏輯區(qū)域換成自己的設(shè)計(jì)。我一般會(huì)把地址解碼邏輯全部放在top_module中用一個(gè)reg [31:0] reg_file [N]數(shù)組做寄存器陣列這樣后續(xù)擴(kuò)展寄存器方便維護(hù)成本低。module adc_ctrl_ip # ( parameter integer C_S_AXI_DATA_WIDTH 32, parameter integer C_S_AXI_ADDR_WIDTH 8 ) ( // 自定義端口 —— 采集數(shù)據(jù)輸入 input wire [31:0] adc_data_in, input wire adc_data_valid, // 自定義端口 —— 中斷輸出 output wire irq_out, // AXI-Lite 接口端口自動(dòng)生成部分略 ... ); // 寄存器文件定義 reg [31:0] reg_ctrl; // 偏移 0x00 控制寄存器 reg [31:0] reg_samp_cfg; // 偏移 0x04 采樣率配置 reg [31:0] reg_status; // 偏移 0x10 狀態(tài)寄存器 reg [31:0] reg_data_cnt; // 偏移 0x14 數(shù)據(jù)計(jì)數(shù) reg [31:0] reg_fifo_data; // 偏移 0x20 數(shù)據(jù)讀取 // 狀態(tài)寄存器 bit1FIFO 滿標(biāo)志 wire fifo_full (fifo_wr_count FIFO_DEPTH); assign reg_status[1] fifo_full; assign reg_status[2] adc_run_flag; // 本地 FIFO 寫控制 always (posedge clk or negedge rst_n) begin if (!rst_n) begin fifo_wr_en 1b0; end else if (adc_data_valid reg_ctrl[0]) begin fifo_wr_en 1b1; end end ... endmodule這里有幾個(gè)參數(shù)需要重點(diǎn)理解C_S_AXI_ADDR_WIDTH 8表示地址寬度 8 位尋址空間 256 字節(jié)按 32 位寄存器對齊后最多支持 64 個(gè)寄存器一般項(xiàng)目夠用了。adc_data_valid是外部 ADC 模塊送來的數(shù)據(jù)有效標(biāo)志這個(gè)信號(hào)被拉高時(shí)FIFO 的寫使能才有效。注意代碼中把reg_ctrl[0]作為采集總開關(guān)這是典型的設(shè)計(jì)模式——所有模塊的啟動(dòng)、停止都由統(tǒng)一的控制寄存器管理后續(xù)上位機(jī)命令分發(fā)時(shí)只需往一個(gè)地址寫數(shù)據(jù)避免多個(gè)寄存器協(xié)同操作帶來的時(shí)序問題。2.3 FIFO 深度的工程權(quán)衡PL 端 FIFO 深度的選擇直接決定數(shù)據(jù)傳輸鏈路會(huì)不會(huì)因?yàn)樗查g阻塞而丟數(shù)據(jù)。FIFO 深度太小PS 來不及讀數(shù)據(jù)時(shí)就會(huì)溢出FIFO 深度太大占用 BRAM 資源影響其他邏輯的綜合布局。從工程經(jīng)驗(yàn)上看FIFO 深度至少為 PS 端 DMA 突發(fā)長度的兩倍。如果 PS 端 DMA 配置的突發(fā)長度是 64 個(gè) 32 位字那么 FIFO 深度建議 128 以上。這個(gè)參數(shù)怎么推導(dǎo)的DMA 讀數(shù)據(jù)時(shí)總線協(xié)議要求一次突發(fā)傳輸中間不能被中斷如果 FIFO 中的數(shù)據(jù)少于突發(fā)長度DMA 就要等待 FIFO 攢夠數(shù)據(jù)等待期間總線處于閑置狀態(tài)。FIFO 深度大于兩倍突發(fā)長度就能保證 DMA 連續(xù)讀取時(shí)幾乎不需要等待。另外還要考慮 FIFO 數(shù)據(jù)寬度與 DMA 數(shù)據(jù)寬度的匹配問題。如果 PL 端每拍產(chǎn)生 16 位數(shù)據(jù)而 PS 端 DMA 的讀寫位寬是 32 位中間需要做位寬轉(zhuǎn)換。一種方式是直接用 Xilinx FIFO IP 核的位寬轉(zhuǎn)換功能輸入 16 位、輸出 32 位另一種方式是用兩個(gè) 16 位 FIFO 交替存儲(chǔ)讀出時(shí)拼接。前者簡單后者可以節(jié)省資源但代碼復(fù)雜度上升。如果數(shù)據(jù)速率不高我通常選擇 Xilinx FIFO IP 核自帶的標(biāo)準(zhǔn)模式轉(zhuǎn)化功能設(shè)置好讀寫位寬就能用。3. PS 端工程配置與 LwIP 網(wǎng)絡(luò)發(fā)送數(shù)據(jù)到 PS 之后誰來接管3.1 SDK 工程的 BSP 配置與 GIC 中斷初始化Vivado 硬件導(dǎo)出到 SDK 后工程模板會(huì)自動(dòng)生成 BSP 包但是 LwIP 協(xié)議棧默認(rèn)不是開啟的。在 SDK 環(huán)境下進(jìn)入 BSP 設(shè)置窗口找到lwip141庫選項(xiàng)把lwip勾上。這里有個(gè)版本兼容的坑Vivado 2018.3 之前的版本對應(yīng)的 LwIP 版本是 141Vivado 2020.1 之后的版本 LwIP 升級(jí)到 211兩者的 API 接口有細(xì)微差異后續(xù)代碼編譯報(bào)錯(cuò)時(shí)優(yōu)先檢查這里。GIC 中斷控制器初始化是另一個(gè)核心點(diǎn)。PS 端要接收 PL 發(fā)來的中斷信號(hào)就必須在 GIC 里注冊中斷服務(wù)函數(shù)。GIC 有 SPID 和 PPID 兩個(gè)中斷源組PL 端的中斷一般連接到 GIC 的 SPI 中斷號(hào)上。在 ZYNQ-7000 系列中PL 到 PS 的中斷線有 16 條對應(yīng) GIC 的中斷號(hào)從 61 開始遞增。#include xscugic.h static XScuGic Gic; static XScuGic_Config *GicConfig; int Gic_Init(void) { GicConfig XScuGic_LookupConfig(0); if (GicConfig NULL) { return XST_FAILURE; } XScuGic_CfgInitialize(Gic, GicConfig, GicConfig-CpuBaseAddress); // 初始化異常處理必須在 GIC 初始化之后、中斷注冊之前完成 Xil_ExceptionInit(); Xil_ExceptionRegisterHandler( XIL_EXCEPTION_ID_INT, (Xil_ExceptionHandler)XScuGic_InterruptHandler, Gic ); Xil_ExceptionEnable(); return XST_SUCCESS; }這段代碼里最容易被忽略的是Xil_ExceptionInit()調(diào)用的位置。很多人把異常初始化放在系統(tǒng)啟動(dòng)階段最先處理但在 ZYNQ 上正確的順序是先初始化 GIC 控制器再把 CPU 的異常處理函數(shù)指向 GIC 的中斷分發(fā)入口。如果順序搞反了中斷信號(hào)到了 CPU 側(cè)沒有一個(gè)統(tǒng)一的入口去查找中斷號(hào)程序就會(huì)跑飛。3.2 LwIP 協(xié)議棧的移植與網(wǎng)絡(luò)接口配置LwIP 在 ZYNQ PS 端的移植已經(jīng)比較成熟BSP 包里包含了 AXI Ethernet 驅(qū)動(dòng)但我們這里用的是 PS 自帶的千兆以太網(wǎng)控制器BSP 生成時(shí)會(huì)自動(dòng)加入相應(yīng)驅(qū)動(dòng)。需要手動(dòng)調(diào)整的是lwipopts.h文件中幾個(gè)全局配置宏#define MEM_SIZE (8 * 1024 * 1024) // 內(nèi)存堆大小 #define MEMP_NUM_PBUF 64 // PBUF 結(jié)構(gòu)體數(shù)量 #define MEMP_NUM_TCP_SEG 128 // TCP 報(bào)文段緩沖區(qū)數(shù)量 #define TCP_SND_BUF_DEFAULT (16 * 1024) // 發(fā)送緩沖 #define TCP_WND_DEFAULT (16 * 1024) // 接收窗口 #define LWIP_DHCP 0 // 關(guān)掉 DHCP用靜態(tài) IP #define LWIP_NETCONN 1 // 啟用中斷/輪詢模式 APIMEM_SIZE決定整個(gè) LwIP 協(xié)議棧運(yùn)行時(shí)能夠使用的內(nèi)存總量如果這個(gè)值太小TCP 連接建立時(shí)可能出現(xiàn)內(nèi)存分配失敗表現(xiàn)為上位機(jī)連接后立即斷開。TCP_SND_BUF_DEFAULT 直接影響單次發(fā)送的數(shù)據(jù)包大小這個(gè)值可以按 MTU 的整數(shù)倍來配置常見取 16KB 是因?yàn)?TCP 窗口和 MTU 協(xié)商后16KB 的緩沖空間可以容納約 10 個(gè) MSS最大分段大小的數(shù)據(jù)量。網(wǎng)絡(luò)接口初始化的代碼固定框架其中關(guān)鍵在網(wǎng)絡(luò)參數(shù)的結(jié)構(gòu)體填充。我們是設(shè)備端服務(wù)器上位機(jī)是客戶端主動(dòng)連過來所以本地 IP、端口配置好后只需開啟監(jiān)聽。#include lwip/init.h #include lwip/netif.h #include lwip/tcp.h #include xparameters.h #include xil_printf.h // 靜態(tài) IP 配置 #define TCP_SERVER_PORT 8080 #define DEVICE_IP_ADDR 192.168.1.100 #define DEVICE_NETMASK 255.255.255.0 #define DEVICE_GATEWAY 192.168.1.1 static struct tcp_pcb *server_pcb; static struct netif eth0_netif; void Network_Init(void) { struct ip_addr ipaddr, netmask, gw; IP4_ADDR(ipaddr, 192, 168, 1, 100); IP4_ADDR(netmask, 255, 255, 255, 0); IP4_ADDR(gw, 192, 168, 1, 1); lwip_init(); netif_add(eth0_netif, ipaddr, netmask, gw, NULL, ethernetif_init, ethernet_input); netif_set_default(eth0_netif); netif_set_up(eth0_netif); // 創(chuàng)建 TCP 控制塊并綁定到監(jiān)聽端口 server_pcb tcp_new(); if (server_pcb NULL) { xil_printf(TCP PCB create error\r\n); return; } tcp_bind(server_pcb, IP_ADDR_ANY, TCP_SERVER_PORT); server_pcb tcp_listen(server_pcb); tcp_accept(server_pcb, Server_Accept_Callback); }這里有一個(gè)關(guān)鍵的設(shè)計(jì)選擇netif_add的最后一個(gè)參數(shù)ethernet_input是 LwIP 的網(wǎng)卡數(shù)據(jù)輸入函數(shù)這個(gè)函數(shù)在 ZYNQ 的裸機(jī) BSP 環(huán)境中對應(yīng)的是emacps_rx_thread之類的回調(diào)。務(wù)必確認(rèn) BSP 中以太網(wǎng)驅(qū)動(dòng)的接收中斷已經(jīng)打開否則ethernet_input永遠(yuǎn)收不到數(shù)據(jù)TCP 就建立不起連接。3.3 數(shù)據(jù)發(fā)送的阻塞與非阻塞選擇數(shù)據(jù)從 PL 讀到 PS 后通過 TCP 發(fā)送給上位機(jī)。發(fā)送路徑上有兩種思路阻塞發(fā)送和回調(diào)發(fā)送。阻塞發(fā)送最簡單——直接調(diào)用tcp_write加tcp_output數(shù)據(jù)就能發(fā)出去。問題在于tcp_write只是把數(shù)據(jù)拷貝到內(nèi)核緩沖真正的網(wǎng)絡(luò)發(fā)送發(fā)生在tcp_output之后如果緩沖區(qū)滿tcp_write會(huì)返回ERR_MEM。很多初學(xué)者的程序在這里出現(xiàn)偶發(fā)丟包。正確做法是利用 LwIP 的發(fā)送完成回調(diào)機(jī)制。給 TCP 控制塊注冊一個(gè)sent回調(diào)函數(shù)當(dāng)系統(tǒng)確認(rèn)數(shù)據(jù)已經(jīng)發(fā)送并得到對端 ACK 后才釋放標(biāo)志位允許下一批數(shù)據(jù)寫入。static uint32_t tx_busy_flag; static uint8_t send_buffer[8192]; void Send_Data_To_Host(uint8_t *data, uint16_t len) { err_t err; // 等待上次數(shù)據(jù)發(fā)送完成 while (tx_busy_flag) { // 非阻塞等待發(fā)送完成回調(diào)會(huì)清除標(biāo)志位 } memcpy(send_buffer, data, len); err tcp_write(server_pcb, send_buffer, len, TCP_WRITE_FLAG_COPY); if (err ERR_OK) { err tcp_output(server_pcb); if (err ERR_OK) { tx_busy_flag 1; } } } static err_t Server_Sent_Callback(void *arg, struct tcp_pcb *tpcb, u16_t len) { tx_busy_flag 0; return ERR_OK; }這段代碼的邏輯亮點(diǎn)在TCP_WRITE_FLAG_COPY標(biāo)志。不使用這個(gè)標(biāo)志時(shí)tcp_write只是把指針存到待發(fā)送隊(duì)列如果上層緩沖在 TCP 報(bào)文段真正發(fā)出前被修改會(huì)產(chǎn)生錯(cuò)誤數(shù)據(jù)。使用 COPY 標(biāo)志后LwIP 會(huì)先將數(shù)據(jù)拷貝到內(nèi)部 PBUF函數(shù)返回后就可以安全地重用本地緩沖區(qū)。代價(jià)是多了一次內(nèi)存拷貝但在千兆網(wǎng)口下這個(gè)開銷可以接受。需要注意tx_busy_flag的等待循環(huán)不是嚴(yán)格意義上的阻塞因?yàn)?LwIP 協(xié)議棧需要持續(xù)調(diào)用tcp_tmr來處理定時(shí)器事件。在裸機(jī)環(huán)境下通常的做法是在主循環(huán)中刷新 LwIP 的定時(shí)器否則 TCP 的 ACK 超時(shí)重傳機(jī)制無法工作while (1) { tcp_tmr(); // 刷新 LwIP 定時(shí)器處理重傳、超時(shí)邏輯 // 檢查 FIFO 數(shù)據(jù)計(jì)數(shù)寄存器有數(shù)據(jù)則讀取并發(fā)送 if (Data_Is_Ready()) { Read_FIFO_And_Send(); } }4. 上位機(jī) TCP 客戶端與數(shù)據(jù)對齊鏈接建好了數(shù)據(jù)格式才是下一道關(guān)卡4.1 上位機(jī)的 TCP 接收實(shí)現(xiàn)要點(diǎn)上位機(jī)端推薦直接使用 Python 的 socket 模塊快速驗(yàn)證先確認(rèn)鏈路通不通再去做復(fù)雜的界面封裝。很多開發(fā)者在這個(gè)項(xiàng)目上的做法是邊寫 Qt 界面邊調(diào)試網(wǎng)絡(luò)問題排查起來非常痛苦——網(wǎng)絡(luò)不同時(shí)你很難判斷是 PL 端邏輯壞了還是界面線程阻塞了。先用一個(gè)純命令行腳本驗(yàn)證收發(fā)再把網(wǎng)絡(luò)模塊移植到圖形界面中調(diào)通概率高很多。import socket import struct import time def recv_tcp_data(port: int, timeout: float 5.0) - None: TCP 客戶端接收上位機(jī)數(shù)據(jù)按固定幀格式解析 client socket.socket(socket.AF_INET, socket.SOCK_STREAM) client.settimeout(timeout) server_addr (192.168.1.100, port) try: client.connect(server_addr) print(f[INFO] connected to {server_addr}) # 數(shù)據(jù)接收緩沖區(qū)避免一次 recv 零散切割造成解析錯(cuò)誤 buffer b while True: try: chunk client.recv(4096) if not chunk: print([WARN] connection closed by device) break buffer chunk # 按幀頭 0xAA55 長度字段協(xié)議解析 while len(buffer) 6: if buffer[0] 0xAA and buffer[1] 0x55: frame_len struct.unpack(H, buffer[2:4])[0] if len(buffer) 4 frame_len: break # 數(shù)據(jù)不完整繼續(xù)等待 # 提取一幀有效數(shù)據(jù) payload buffer[4:4 frame_len] print(f[INFO] received frame len{frame_len}, fdata_head{payload[:16].hex()}) buffer buffer[4 frame_len:] else: buffer buffer[1:] # 丟一個(gè)字節(jié)重新找?guī)^ except socket.timeout: print([WARN] recv timeout, no data in last period) break except ConnectionRefusedError: print([ERROR] device not listening, check IP and port) finally: client.close() if __name__ __main__: recv_tcp_data(port8080)這個(gè)腳本同時(shí)演示了 TCP 流式協(xié)議的拆包處理。TCP 是字節(jié)流協(xié)議兩次send的數(shù)據(jù)可能在一次recv中混在一起也可能一次send被拆成多次recv。如果沒有幀結(jié)構(gòu)設(shè)計(jì)上位機(jī)收到的數(shù)據(jù)就是亂序的。代碼中0xAA55幀頭加長度字段的方案是工程最常用的做法先找?guī)^再按長度解幀能有效對抗粘包和半包問題。4.2 大小端與數(shù)據(jù)對齊的隱性戰(zhàn)爭PL 端是 ARM 架構(gòu)的 ZYNQ 雙核上位機(jī)通常跑在 X86 架構(gòu)上ARM 默認(rèn)小端序X86 也是小端序很多情況下不用考慮大小端轉(zhuǎn)換問題。但問題是數(shù)據(jù)從 PL 硬件 FPGA 出來時(shí)開發(fā)者習(xí)慣整理成大端格式。一個(gè) 32 位的數(shù)據(jù)在 PL 端被拆成 4 個(gè)字節(jié)發(fā)送如果上位機(jī)按小端序解析數(shù)字就完全對不上。import struct # PL 端以特定字節(jié)序發(fā)送 4 字節(jié)數(shù)據(jù) # 場景1PL 端按小端發(fā)送上位機(jī)用 符號(hào)解析 raw_small b\x01\x00\x00\x00 value struct.unpack(I, raw_small)[0] print(f小端解析結(jié)果: {value}) # 輸出 1 # 場景2PL 端按大端發(fā)送上位機(jī)必須用 符號(hào)解析否則出錯(cuò) raw_big b\x00\x00\x00\x01 value_wrong struct.unpack(I, raw_big)[0] value_right struct.unpack(I, raw_big)[0] print(f錯(cuò)誤解析: {value_wrong}) # 輸出 16777216 print(f正確解析: {value_right}) # 輸出 1處理字節(jié)序最穩(wěn)妥的做法是 PL 端發(fā)送時(shí)遵循固定的網(wǎng)絡(luò)字節(jié)序大端上位機(jī)統(tǒng)一用!或符號(hào)解析。網(wǎng)絡(luò)協(xié)議棧內(nèi)部的 IP 頭、TCP 頭都是網(wǎng)絡(luò)字節(jié)序如果應(yīng)用層數(shù)據(jù)也統(tǒng)一用大端整個(gè)鏈路的數(shù)據(jù)格式就一致了。另外一種做法是 PL 端發(fā)送數(shù)據(jù)前把各字節(jié)按照上位機(jī)的預(yù)期存儲(chǔ)順序排列好上位機(jī)不做任何轉(zhuǎn)換直接解析。這種方式效率最高但沒有通用性一旦上位機(jī)換了平臺(tái)所有解析邏輯都要改。我建議應(yīng)用層還是定義大端格式協(xié)議頭統(tǒng)一用struct.pack(!I, value)打包雖然多花幾行代碼但未來換上位機(jī)平臺(tái)時(shí)不會(huì)翻車。5. 避坑與排查從連接失敗到數(shù)據(jù)錯(cuò)亂的五個(gè)典型問題5.1 TCP 連接建立不了網(wǎng)絡(luò)一直 ping 不通抓包軟件看不到設(shè)備發(fā)出的 ARP 請求。排查發(fā)現(xiàn) BSP 配置時(shí)沒有正確生成xemacps_g.c驅(qū)動(dòng)文件導(dǎo)致 PS 端以太網(wǎng)控制器根本沒有初始化。原因是 SDK 中 BSP 包生成時(shí)沒有勾選 Standalone 的emacps驅(qū)動(dòng)或者勾選了但 BSP 沒有重新生成。解決方法是右鍵點(diǎn)擊 BSP 工程選擇BSP Settings查找drivers分支下的ps7_ethernet_0是否為emacps不是則改為emacps然后重新生成 BSP。5.2 數(shù)據(jù)突發(fā)丟包TCP 連接正常但數(shù)據(jù)不完整現(xiàn)象是上位機(jī)連接正常但是數(shù)據(jù)每隔幾秒會(huì)有一批缺失丟包數(shù)量沒有規(guī)律。用 Wireshark 抓包發(fā)現(xiàn) TCP 報(bào)文段重復(fù) ACK 頻繁出現(xiàn)。原因大概率在 PS 到 PL 的數(shù)據(jù)讀取路徑上。PS 讀取 FIFO 數(shù)據(jù)時(shí)如果采用輪詢方式但輪詢間隔太長FIFO 溢出就會(huì)丟數(shù)據(jù)。此外LwIP 的tcp_write緩沖區(qū)設(shè)置太小發(fā)送緩沖滿后新數(shù)據(jù)被丟棄。解決辦法是把 FIFO 讀取從輪詢模式改成中斷模式讓 PL 端在 FIFO 半滿時(shí)觸發(fā)中斷PS 立即響應(yīng)讀取。LwIP 參數(shù)調(diào)整同時(shí)把TCP_SND_BUF_DEFAULT從 4KB 提到 16KB給發(fā)送鏈路更多緩沖余量。5.3 AXI 讀寫寄存器一直返回錯(cuò)誤值在 Vivado 的 Hardware Manager 里通過 JTAG 讀 IP 核的寄存器狀態(tài)寄存器一直顯示 0xFFFFFFFF。檢查 AXI 地址映射發(fā)現(xiàn)IP 核的基地址配置成了 0x40000000但 vivado 中地址編輯器的段分配把寄存器起始地址設(shè)在了 0x40001000兩者錯(cuò)位導(dǎo)致訪問落到了未實(shí)現(xiàn)的空間上。解決方法是打開 Address Editor確認(rèn)adc_ctrl_ip的偏移地址是否從 0x0 開始建議把 Base Address 固定為 0x40000000Range 設(shè)為 64KB這樣簡單干凈。類似問題在多個(gè) IP 掛在同一個(gè) AXI 總線上時(shí)更容易出現(xiàn)排查時(shí)要逐個(gè)確認(rèn)地址段沒有重疊。5.4 上位機(jī)收到的數(shù)據(jù)是反的幀頭識(shí)別成功數(shù)據(jù)長度也對但是數(shù)值完全不對。比如理論上應(yīng)該收到 10000實(shí)際收到 2055208960十六進(jìn)制 0x7A690000??酥谱∪ゼm結(jié) LwIP 代碼的沖動(dòng)先檢查字節(jié)序。這是最典型的字節(jié)序問題。PL 端 Verilog 代碼里把 32 位數(shù)據(jù){data[31:16], data[15:0]}做了拼接發(fā)送相當(dāng)于整體交換了兩個(gè) 16 位半字實(shí)際就是大小端處理混亂。統(tǒng)一按大端處理后問題不再出現(xiàn)。5.5 開發(fā)板偶爾死機(jī)復(fù)位后恢復(fù)設(shè)備運(yùn)行一段時(shí)間后網(wǎng)口 ping 不通串口也輸出不了任何信息。檢查時(shí)鐘配置和復(fù)位序列發(fā)現(xiàn) PL 端使用了獨(dú)立的 MMCM 時(shí)鐘域但 FIFO IP 核的復(fù)位引腳連接的是 AXI 接口的 rst 信號(hào)兩個(gè)時(shí)鐘域的復(fù)位時(shí)序不一致。解決方法是把 PL 端所有模塊的復(fù)位信號(hào)統(tǒng)一使用proc_sys_resetIP 生成的interconnect_aresetn并檢查 FIFO IP 的reset_pol設(shè)置是否與復(fù)位模塊輸出極性一致。在開發(fā)板上加一個(gè)看門狗復(fù)位超時(shí)自動(dòng)重啟整個(gè)系統(tǒng)也能規(guī)避偶發(fā)的死機(jī)問題。6. 進(jìn)階從千兆帶寬利用到雙通道設(shè)計(jì)實(shí)戰(zhàn)性能再翻倍TCP 上傳數(shù)據(jù)鏈路打通之后可以往下做兩件縮小系統(tǒng)瓶頸的事一是吞吐量調(diào)優(yōu)二是多路復(fù)用擴(kuò)展。吞吐量調(diào)優(yōu)的核心指標(biāo)是計(jì)算實(shí)際有效帶寬。ZYNQ PS 網(wǎng)口硬件理論帶寬是 1000Mbps但是應(yīng)用層實(shí)測通常只有 300 到 500Mbps原因在于 LwIP 裸機(jī)協(xié)議棧的運(yùn)行機(jī)制限制以及 TCP ACK 往返時(shí)延帶來的窗口占用。網(wǎng)絡(luò)帶寬利用率的計(jì)算公式為有效帶寬 發(fā)送數(shù)據(jù)量 / 總耗時(shí)。在嵌入式設(shè)備上還會(huì)有一個(gè)額外限制LwIP 的tcp_write每調(diào)一次都要經(jīng)歷和本地內(nèi)存系統(tǒng)打交道大量交互會(huì)消耗 CPU 時(shí)間。有一個(gè)簡單有效的優(yōu)化是加大單次發(fā)送包長。把TCP_SND_BUF_DEFAULT提升到 64KB同時(shí)在應(yīng)用層使用tcp_write連續(xù)發(fā)送多個(gè)待發(fā)塊配合tcp_output做一次集中刷出。這種策略下即使單塊數(shù)據(jù)包較小協(xié)議棧也會(huì)積攢到足夠數(shù)據(jù)后一次性發(fā)出有效降低網(wǎng)口 TX 中斷觸發(fā)頻率。雙通道設(shè)計(jì)適合需要同時(shí)上傳兩路數(shù)據(jù)的場景。做一個(gè) AXI-Stream 到 AXI4-Lite 的橋接模塊將兩路 ADC 數(shù)據(jù)交替寫入同一個(gè) DMA 描述符環(huán)。上位機(jī)按幀號(hào)區(qū)分兩路數(shù)據(jù)幀格式中前三字節(jié)固定為數(shù)據(jù)通道標(biāo)識(shí)。這種設(shè)計(jì)比雙 TCP 連接簡潔PS 端只需維護(hù)一個(gè)tcp_pcb數(shù)據(jù)到達(dá)后按照既定的幀號(hào)交錯(cuò)發(fā)送即可。實(shí)踐中的驗(yàn)證方法也很直接先用開發(fā)板配置一個(gè)固定數(shù)據(jù)源比如計(jì)數(shù)器計(jì)數(shù)值替代真實(shí)采集數(shù)據(jù)上位機(jī)統(tǒng)計(jì)接收總數(shù)和發(fā)送端計(jì)數(shù)對比。兩端計(jì)數(shù)值一致說明鏈路無損不一致就對中間過程進(jìn)行逐段 debug先看 PL FIFO 讀寫指針差值再看 PS 讀出的數(shù)據(jù)累計(jì)值最后看 LwIP 發(fā)送字節(jié)統(tǒng)計(jì)量哪個(gè)環(huán)節(jié)對不上就重點(diǎn)檢查哪個(gè)環(huán)節(jié)。那次調(diào)通雙通道方案后我給自己立了一條規(guī)矩每次把代碼從仿真環(huán)境挪到裸機(jī)網(wǎng)絡(luò)環(huán)境先花 5 分鐘核對三個(gè)關(guān)鍵參數(shù)——FIFO 寫使能極性、TCP 發(fā)送緩沖大小、字節(jié)序解析格式。這三樣沒有問題的情況下網(wǎng)絡(luò)異常往往不出在通信本身而是出在系統(tǒng)初始化的細(xì)節(jié)順序。ZYNQ 的中斷初始化順序、LwIP 的內(nèi)存堆大小、PHY 芯片的復(fù)位時(shí)序這三個(gè)位置是翻車高發(fā)區(qū)每次排查都從它們開始驗(yàn)證。希望這次拆解能幫你少走一段彎路。本文還有配套的精品資源點(diǎn)擊獲取
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
婷婷五月天天| 五月六月婷| 大香蕉视频婷婷| 99热这里只有精| 99热精品在线观看| 久久久五月天网站| 另类在线免费视频| 五月丁香综合激情| 五月天综合婷婷| 激情激情激情网| 成人网在线视频| 婷婷成人五月天| 99热精地址| 色婷婷五月天成人网| 99久久国产宗和精品1上映| 五月在线| 丁香五月综合网亚洲综合欧美狠狠| 色九月欧美| 777精品久无码人妻蜜桃| 欧美婷婷五月天| 精品人妻伦| 婷婷五月激情五月丁香五月| 色黄啪啪| 久久亚洲天堂| 色婷婷精品视频| 无码激情AAAAA片-区区| 开心五月深爱五月| 极品人妻VIDEOSSS人妻| 最近免费中文字幕大全高清大全1| 9l视频自拍九色9l视频在线观看| 99热资源在线| 丁香五月激情五月| 开心深爱激情网| 99er免费在线观看| 亚洲第一色色色色| 狠狠狠狠狠狠狠狠草| 99在线播放视频| 免费观看2018www黄色操逼网站| 人妻内射一区二区在线视频| 熟女少妇内射日韩亚洲| 免费观看全黄做爰的视频 | 97超级碰碰碰久久久| 五月婷婷影院| 风流少妇A片一区二区蜜桃 | ..真实国产乱子伦毛片 | 婷婷色啪| 免费视频舔| 天天肏夜夜肏| 天天激情视频| 亚洲久热无码| 天天舔天天操| 99热在线播放| 无码 av电影| 欧美色一级色| 午夜日韩久久久网站| 1024人妻无码中文字幕| 毛片九九九九九九| 五月丁香激情综合| 狠狠婷婷爱| 婷婷四月 成人 狠狠干| 欧美综合五月丁香五月天| 深爱五月天天| 亚洲人妻Av| 97碰碰视频| 丁香五月五月婷婷| 337p大胆噜噜噜噜噜91Av| 99九九在线观看免费| 91九色熟女| 婷婷天堂综合| 国产真实乱了老女人视频| 大香蕉五月天婷婷| 日日操夜夜操中国无码| www色色com| 午夜婷婷丁香| 婷婷综合色五月天| 婷婷五月激情五月激情| 97luluse| 日韩综合网络男女香蕉a片| 99热久| 久久在线视频只有这里有精品| 亚洲视频丁香网va| 综合性爱网| 亚洲超碰在线| 丁香久久九九99| www.婷婷六月天| 狠狠爱综合网| 亚洲激情免费视频| 丁香五月婷婷色| 天天综合精品| 中文AV在线播放| 玖玖伦理电影| www.色九月| 色五月激情五月| 99ER热精品视频| 久久9热综合| 亚洲综合婷婷五月| 99视频网| 成人综合网站| 丁香花色色网| 婷婷丁香五月高清| 江苏少妇性BBB搡BBB爽爽爽 | 九色无码| 日日做夜夜爱| 亚洲爆乳无码精品AAA片蜜桃| 丁香五月激情啪啪综合| www,8050,午夜三级| 草AV9999| 日本色色网| 成人VAV视频在线观看| 91九色精品女同系列| 亚洲99激情| 久久久这里有精品| 丁香六月天婷婷色| 日本五月丁香| 色色99| 色播色丁香五月| 久久这里只有精品久久| 超碰成人电影| 操97免费超级视频| 婷婷 伊人 久久| 精品一二三区久久AAA片| 色五月婷婷影视| 99热 在线观看| 欧美日韩aaa| 五月婷婷综合在线| 亚洲VA欧美VA| 丁香五月天啪啪| 久久久久久久五月| VfJxEwPH| 亚洲综合色婷婷文学| 久久丁香婷婷五月天| 俺去也婷婷| 成人αV视频免费观看| 激情五月丁香五月| 26UUU精品一区二区| 婷婷久久天堂网| 另类丁香五月天区图| 九九超日本| 婷婷丁香五月天狠狠| 色玖玖综合网| 大香蕉久热| 色婷婷激情五月天| 五月天色色色色色| 亚洲99在线| 丁香亚洲色综合| www.日韩艹| 丁香五月成人网| 92久久| 天天透天天爱| 日韩AAAAA| 婷婷娌伦网| 天天爱夜夜爽| 91se在线观看| www.色综合.com| 日韩精品电影| 五月丁香色综合| 五月狠狠| 亚洲操逼网| 丁香婷婷综合激情五月色,开心五月丁香花综合网,激情综合五月亚洲婷婷,五月天 | 9有码中文| 玖玖婷婷色| 色婷婷久久| 九九综合网色全集| 免费AV播放| 五月婷婷婷| 97色啪| 深爱激情五月网| 日本久热| 日本精品人妻无码77777| 久久激情视频99| www99热| 丁香五月天在线视频| 天天综合网站| 开心五月婷婷在线| 色婷婷瘦婷婷日韩| 亚洲高清在线| 精品久久66| 日本三级片片| 激情四射网| 久久精彩视频| 久热网在线视频| 久久午夜丁香| 婷婷五月天成人| 婷婷五月丁香狠狠| 婷婷五月激情的图片| 久久九九@| 丁香五月天在线观看视频| 五月激情综合网| 99免费在线视频| 久久天堂网| 五月五婷婷网| 日韩啪图| 精品一二三区久久AAA片| 99亚洲欧洲| 丁香五月婷婷综合激情啪啪啪啪啪啪啪 | 欧美va在线观看| 激情伊人| 婷婷五月丁香综合桃花色网| 香蕉综合网| 欧美激情凹凸丁香网| 欧美精品久| 91超碰九色| 丁香五月天精品| 久久六月综合| 热91久| 99亚洲精品| 欧美va亚洲va| 九九精品综合| 丁香六月成人网| 97色色婷婷| 欧美猛片| 五月天天天操天天爽夜夜操| www99在线观看视频| 中文字幕欧美日韩VA免费视频| 26uuu成人网| 亚洲激情综合色站| 91超级碰| 色五月婷婷av| 超碰色婷婷| 极品人妻VIDEOSSS人妻| 亚韩在线视频| 婷婷五月花| 婷婷成人丁香色情基地30| 色色色97| 天天综合久久| av成人在线播放| 国产精产国品一二三在观看| 99热91| 婷婷五月天播播| 五月天成人手机在线视频| 婷婷五月天Av| 丁香九月激情久久| 十区AV| 91色综合久久| 高清a片基地| 五月天婷婷激情| 99亚洲天堂| 色婷婷很很十八禁| 综合AV网| AV片一区在线观看| 美女久久婷婷| www.金莲av| 99精品视频在线观看| 五月伊人网| 久色婷婷200| 人人操A| 激情五月天综合网站网站网站| 超碰在线国产9| 婷婷狠狠狠爱| 97综合色片| 五月婷天堂视频| 色婷青青| 亚洲天堂青草| 亚洲有码在线视频| 色99热| 亚洲AV无码成人精品区电影网| 99热这里只有精品中文字幕| 天天色天天日| 久久久99久久| 婷婷五月天成人网| 99在线精品免费视频| 婷婷五月天成人| 天天搞天天爽| 双性美人被调教到喷水A片| 久久久性爱视频| 操久久网| 五月天精品视频| 日韩欧美骚货| 婷婷五月天国产| 五月天婷婷成人| 99热这里只有精品3| www.99热这里只有精品| 操操自拍| 成人做爰A片免费看视频| 色99在线| 激情超碰网| 婷婷综合在线视频| 99久久亚洲精品视频| 天天日天天爽| 色吊丝99| 久久网日本| 操操啪| 婷婷丁香六月五月天| 涩涩涩,com| 婷婷亚洲丁香五月| 天天干天天干天天| 天天舔天天爽| 亚洲成人在线观看网址| 91色婷婷综合久久中文字幕二区| 五月丁香婷婷综合激情基地| 这里只有精品视频在线| 亚洲色色色| 丁香婷婷老熟女综合网| 五月天婷婷操逼视频| 亚洲色婷婷| 开心婷婷五月花| 五月激情丁香| 大香蕉手机视频| 亚洲黄色影视| 十区AV| 婷婷五月天最新综合你懂的| 久久久久思思热| 99热婷婷| 久久这里只| 99视频久久| 丰满少妇猛烈A片免费看观看| AV大片在线观看| 一区二区成人电影| 99热这里只有在线| 丁香色五月 97干| 丁香五月熟女| 激情婷婷五月天伊人在线观看| 五月婷婷五月天激情网| 久热无码| 亚洲操逼片| 成人网丁香五月| 97操碰碰无码视频| 丁香五月婷婷操逼| 99精品色色| 色五月婷婷网| 婷婷五月成人社区| 五月婷婷香蕉| 丁香婷婷大香蕉| 1囯产午夜仑鲁鲁| 亚洲视频在线观看99| 26uuu精品国产| www99热| 色五月婷婷综合在线| 第六色在线| 色婷婷激情| 九九成人电影婷婷| 97婷婷丁香五月天激情图片| www.91色| 4399成人黄A片| 色爱亚洲| 久久色吧| 天天操屄网| 97精品人人A片免费看| 国产精品视频免费看| 五月丁香狠狠| 狠狠婷婷色综合| 女性自慰系列第五页| 日本狠狠色| 97超美国视频在线观看| 先锋资源 996| 色色色色丁香| 天堂草在线观| 激情精品久久| 婷婷射婷婷舔| 影院久久久| 夜夜操少妇| EEUSS鲁片一区二区三区| 丁香五月激情啪| 五月婷婷五月天| 欧美色偷偷大香| 婷婷五月丁香色情| 五月美女婷婷风骚| 婷婷五月天BBw| 五月丁香六月片| 亚洲AAAA网| 99热综合| 成人丁香婷婷五月天| 五月天婷婷成人网| 岛国资源网| 99精品网| 26UUU精品一区二区c〇m| 狠狠色丁香| 99热www.| 97luluse| 丁香婷婷情色五月天| 免费在线a| 五月开心色| 国产色香蕉精品五夜婷| 96精品久久久久久久久| 99热在线观看免费中文| 国产成人精品一区二区三区视频 | 五月丁香六月欧美综合网站| 日韩黄黄| 久久亭亭电影| 日韩AV片| 五月www| 丰满少妇猛烈A片免费看观看 | 久久亚洲无码| 噜噜视频| 丁香五月在线观看完整版| 超级碰碰碰久久网站视频| 午夜丁香六月婷| 色色色五月婷| 再綫Av免费視品| 一级操逼大片| 蜜桃人妻无码AV天堂三区| www.五月天色色.com| 午夜成人AV在线| 99国产小视频2013| 亚洲天堂九九九| 人妻激情综合| 麻豆123区| 999精品久久久久久久| 天天噜| 玖玖色综合| 国产FREESEXVIDEOS性中国| 五月丁香六月色婷婷| 五月婷婷丁香综合,亚洲天堂| 欧美啪啪9| 激情五月天在线观看婷婷| 九九无码AV| 久久精品夜色噜噜亚洲a∨| 午夜免费试看| 五月天婷婷网站| 色婷婷激情| 激情精品久久| 在线网黄| 成人免费网站免费看| 久色网| 99爱无码| 婷久看人爽| 色婷婷五月影院| 六月丁香网| 无码色色| 五月丁香婷婷婷婷综合网| 久久在线大香蕉| 亚洲无码99| 六月婷婷综合| 五月深爱激情网| 亚洲AV免费在线| 91在线观看九区| 天天精品视频免费观看| 丁香婷婷六月| 五月天婷婷黄色| 999热在线视频| 丁香婷婷五月人体| 久久婷婷五月天激情新地址| 色婷婷五月天在线观看| 九九99九九99九九99视频网| 五月婷婷激情综合网| 少妇人妻偷人精品无码视频新浪| www.五月丁香| 五月婷婷激情| 99色视频| 这里只有精彩视频| 综合色色色| 六月香五月婷| 天天综合天天做天天综合| 欧美大香蕉视频| 国产99久9在线+|+传媒| 玖玖爱伊人网| 亚洲蜜桃精久久久久久久久久久久| 99日本黄站| 丁香五月六月综合欧美| 天天做天天摸| 99成人精品视频| 3p日韩网站视频| 五月天日日操夜夜操 | 久久久97| 九九在线视频| 91精品久久久久久77777| 婷婷的99视频网站| 99热这里只有精品2| 激情综合五月天| 99久久激情视频| 夜夜撸天天日| 色婷婷色五月天| 五月花亭亭| 五月激情婷婷色| 另类色网| 五月天激情Av| 久色五月| 五月天四色房丁香亭亭| 丁香五月综合激情性爱| 色婷网| 丁香婷婷五月六月久久| www.婷婷亚洲基地| 开心五月网 | 麻豆AV一区二区三区| 五月丁香婷婷色| 99色视频| 新激情五月天| 性爱人人网| 色噜噜五月天| 久er免费视频| 欧洲日韩一区二区三区| 五月天久久综合婷婷丁香| 99热成人在线观看| 婷婷狠狠18禁久久| 六月婷婷色综合| 色婷婷电影| 色五月激情五月| 91九色偷拍| 婷婷综合另类| 成人在线日韩| 激情婷婷五月天在线观看| 丁香五月a| 久色大| 久久久久9999| 国产av一区二区三区| a性生活久久无| 激情婷婷视频在线| 无码色色色色色| 美女婷婷六月色| 99er6热在线观看精品6| 色五月婷婷操逼| 伊人久久艹| 日韩av免费版| 天天色播| www激情五月天| 日本激情91| 丁香六月激情| 大香蕉九九操| 丁香花五月天| 99热大香蕉| 成人做爰高潮A片免费视频| 丁香五月伊人| 思思热这里只有精品视频666| 色婷婷五月天天天做| 青青草激情网| 中文成人在线| 色色免费网站| 色色 亚洲| 色色婷婷五月天| 色99最新网址| 六月五月丁香五月欧美| 99热97| 91精品久久久久久综合五月天| 四色五月婷婷| 91丨九色丨熟女|新版| www.激情五月| 中文中文在线| 99re热精品在线视频| 天天天摸夜夜夜玩| 99爱精品| 伊九九三级区| 人人操AV| 丁香影院五月综合| 婷婷五月丁香激情色情| 99久久久| 久9免费视频| 婷婷五月婷婷五月| 这里只有精品视频| 色婷婷香蕉| 99精品大片| 丁香五月激情五月| 1024日韩| 91Chinese在线| 久久九九经典| 婷婷5月九九| 免费无码毛片一区二区A片| 在线成人网址| 国产在线黄色| 综合色网站| 人人草人人视| 婷婷五月天大香蕉在线视频观看| 天天久久综合| 欧美电影在线观看| 天天日天天肏天天奸| 综合激情五月丁香| 成人 在线 日韩| 91av视频在线观看最新网址| 亚城区在线| 97夫妻超碰| ,99视频久久| 狠狠的日| 婷婷丁香五月激情综合站_久久五月丁香激情综合_开心五月综合激情综合五月_婷 | 区啪精品| 亚洲精品婷婷| 久久精品综合色| 五月婷婷中文字幕AV| 九九热内射| 丁香五月婷婷手机| 久热99视频在线观看| 开心五月婷婷激情网| 极品人妻VIDEOSSS人妻| 影音先锋 91工厂| 婷婷97狠狠成人网站| 丁香六月色婷婷欧美| 日本婷婷五月天| 人妻射精AV| 色综合色色| 99热这里只有精品21| 丁香六月激情| 婷婷五月天激情影片| 黃色三级三级三级三级 qixing300.shrkbk.com www.jinbozs.com tianmiaosw.com | 久久婷婷青草五月天| 婷婷激情人妻| 亚洲黄色影视| 99国产精品久久久久久久久久久| 五月婷婷综合色啪首页| 变天就操逼婷婷五月| 六月婷婷五月天| 99热大| xx久久| 亚洲高清在线| 白人荫道BBWBBB大荫道| 成人五月天视频播放| 色五月婷婷激情基地| 91碰视频| 深爱开心激情网| 嫩草免费视频| 成人免费在线电影| 五月综合亚洲色| 538在线精品| 色婷视频| 久/久精品99看9| 俺去也五月| 五月天综合在线观看| 超碰在线免费9| 91性高潮久久久久久久久| 99热日本| 五月久熟女| 亚洲精品又粗又大又爽A片| 99热这里只有精品 搜| 97操碰在线视频| 亚洲综合另类| 99久热这里只有精品| 99精品在线| 97伦乱| 另类A片| 噜噜噜色噜噜| 国产激情AV| 一级片操逼视频| 婷婷少妇激情| 丁香六月亚洲综合| 久久这里只有精彩| 99热全是精品| 国产AV国片偷人妻麻豆| 亚洲无码成人| 婷婷丁香色五月久久88| 好好干Av| 亚洲免费观看高清完整版AV线| 色婷婷丁香五月天| www.maotanji.com| 97婷婷五月天| 狠狠操天天操综合| 92久久| 丁香六月激情国产| 成人午夜天| 五月丁香精品| 婷婷五月天视频亚洲| 丁香五月婷婷动漫| 五月婷色色| 黄色AAAAAAA| 欧亚成人A片一区二区| 狠狠干综合网| 亚洲无码色色| 色人妻五月| 五月激情四射婷婷丁香| www.99久| 91九色 婷婷| 伊人九热| 九九婷| 五月天激情婷婷| 无码人妻激情| 永久免费一区二区三区| 开心五月婷婷婷美女| 五月天激情无码高清| 国产精产国品一二三在观看| 99爱视频免费| 涩五月婷婷| 五月综合丁香婷婷| 五月天婷婷成人网| 丁香五月Av| 99爱精品视频| 婷婷五月天偷拍| 深爱激情av| 综合性视频99| 五月色欧美| www.五月天性.com| 狠狠操天天操综合| 青青草护士中出内射-欧美电影在线天堂新版| 天天肏视频| 久久精品9| 999激情视频| 激情久久久久久久久| av线电影| 成人网站免费在线播放| 五月丁香欧美综合| 五月天激情影院| 五月丁香性爱| 全亚洲最大的婷婷五月天网站COM| 91丨九色丨熟女丰满| 91婷婷伊人牛牛| 大香蕉婷婷五月| 97在线碰| 九九99在线观看视频| 综合丁香婷婷五月天| 国产亚洲精品AAAAAAA片| 色播五月| 成人无码髙潮喷水A片| 精品夜夜澡人妻无码AV| 影音先锋91网站在线观看| 色婷婷伊人激情在线观看| 在线不卡AC| 麻豆精品| 色九月| 亚洲激情电影五月天色婷婷丁香一起草| 婷婷亚洲激情在线观看视频| 五月情涩综合婷婷| 夜夜撸日日操| 久久五月天综合| 日本精品人妻无码77777| 99久久国产综合精品五月天喷水\| 五月天综合网| 99re8这里只有精品99re8热视频| 日本欧美成人片AAAA| 亚洲综合色成丁香五月色| 日比视频91| 中文字幕成人影视| 性色播| 俺去也在线视频| 久青草影院| 五月婷综合| seuuu婷婷| 色婷六月| 五月婷婷丁香大陆免费| 五月天亭亭俺也| 久99热| 五月天婷婷综合色| 色噜噜夜夜夜综合网| 青青热久久综合| 思思 热 99| 亚洲丁香花色| 人妻在线观看视频| 97精品综合| 五月丁香婷婷三级| 激情欧美五月丁香| 另类亚洲电影| 99在线观看视频免费| 综合伊人狠狠| 色色婷婷丁香| 97碰碰视频| 婷婷五月天亚洲色| 免费黄色AV| 九月丁香八月婷婷加勒比| 亚洲第一成人无码A片| 狠狠操在线视频| 色五月色五天色情网| 五月天激情美女久久| 婷婷五月丁香久久| 五月天涩涩| 成人精品视频99在线观看免费 | 欧美精品啪啪| 亚洲婷婷成人五月天| 五月丁香| 人人操人人爰人人一天天碰夜夜拍夜夜爽-中国A级毛片天天看天天谢… | 五月婷婷婷婷婷婷艺术| 99久久久99久久91熟女| 99热久久日本| 久久丁香五月婷婷| 99视频只有精品| 99热久草| 丁五月激情视频免费| 超碰在线观看三级片| 九九热这里只有精品23| 久久久久激情网| 精品五月花| 伊人六月丁香婷婷| 99色色| 91久久久久久久久| 婷婷成人五月天| 亚洲综合色激情色五月| 天天干天天 亚洲| 久久怡红院| 丁香五月婷婷基地| 性爱网五月天| 99久操| 激情五月天视频| 色色色1网址| 特级片神马电影| 婷婷色情 | 开心四月婷婷在线色播播| 99热网站| 97干在线视频| 99视频自拍| 色99热| 日韩久久色| www.97碰碰com| 色激情五月| 九九人人看| 天天天天操| 啪啪夜久久| 久久久99免费视频| 婷婷五月天堂| 天天干天天色综合| 華人性愛AV在線| 亚洲天堂热| 久久人妻乱子伦| 啪啪啪大香蕉| 九色视频这里只有精品| 狠狠色 综合色区| 色爱终和网| 色婷婷第四色| 99爱在线视频| 久久作爱| 中文字幕在线日亚州9| 婷婷色五月偷拍| 久久久国产精品黄毛片| 午夜无码精品色综合久久| 天天插操| 月婷婷婷婷五月| 丁香五月情| 色欧洲| 影音先锋激情网| 热99AV网站| 亚洲色综久久五月| 日韩无码色色| WWW、日本色丁香、co m| 大香蕉久久视频久久视频| 丁香五月a| pom538精品视频| 欧美一级色| 国产欧美婷婷五月| 五月丁香婷婷狠狠操| 日日噜噜夜夜狠狠久久丁香五月| 99九九在线观看免费| 丁香五月香蕉| 婷婷九月丁香久久| 2020日日干| 97香蕉碰碰人妻国产欧美| 色婷婷香蕉丁丁网| 另类亚洲视频| 色99视频| 久久视频这里有精品99| 97超碰综合| 610018岁成人视频| 成人AV中文字幕| 99re这里只有精品国产99| 丁香五月天堂亚洲社区| 五月丁香色色| 激情五月天色爱| 天堂久久性| 久久久天堂国产精品女人| 天天爽免费视频| 99精品久久| 婷婷五月天av小说| 亚州操人在线视频| 久久婷婷五月综合色和| 天天激情5月天亚洲| 婷婷五月色综合香五月| 丁香五月天堂| 开心五月深爱五月丁香五月激情五月 | 色狠狠五月天| cao视频,现在观看| 五月天激情综合| 99爱视频在线| va中文资源在线观看| 性爱激情小说AV五月丁香花| 狠狠操狠狠| 丁香五月综合激情性爱| 婷婷四色五月| 五月丁香成人网| 亚洲成人中文字幕| 国产欧美性成人精品午夜 | 丁香六月婷婷综合| 五月丁香花视频| 日撸夜撸日操| 婷激情五月天视频导航| 67194中文字幕| 91九色偷拍| 国产67194| 人人综合久| 开心色五月天久久久久久久| 激情丁香淫荡婷婷| 91日本在线观看| www亚洲无码| 色五月丁香五| 成人做爰A片免费看网站找不到了 噼里啪啦在线观看免费完整版视频 | 泰州成人视频| 色五月色综合| 99极品视频| 色色综合网站| 91丨九色丨白浆秘| 九九色天堂| 亚洲天堂制| 一区二区成人电影免费播放| 狠狠操综合| 亚洲热久久| 人人妻人人澡| 亚洲性视频| 欧美色婷婷| 五月天综合在线观看| 激情五月视频| 俺去也在线官网| 丁香五月婷婷成人色区| 婷婷久久五月| 思思热久久阴99| 成人五月天综合网| 欧美色图天堂网| 国产成人av在线| 亚洲av综合网| 97精品综合| 亚洲色综合| 久热伊人| 亚洲一个色| 婷婷五月亚洲激情| 第四色色六月色综合| 另类色视频| renrencaoni| 无码中文一区二区三区| 综合久久丁香婷婷,五月婷婷六月丁香,开心激情综合网,六月丁香在线观看,婷婷丁 | 成人操呦av| 欧美久草在线日本一级特黄大片做受9在线观看韩国电影《两个女人》未删减-毛片 | 久久综合五月天| 色久综合| 九九色色网| 五月丁香综合啪啪| 欧美99热| 亚洲精品久久久无码| 麻豆AV一区二区三区| 天天揷综合网| 97色综合视频| 久久久久婷| 婷婷五月香蕉| 亚洲欧洲99| 五月丁香五月激情综合色综合| 五月天色官网| 国产午夜精品久久久观看| 六月色播| 久久色婷婷| 九九色精品| 婷婷丁香无码专区| 亚洲免费电影2| 人妻视频在线| 久久五月天精品视频| 婷婷五月天亚洲色| 五月激情婷婷在线| 婷婷五月天堂| 国外亚洲成AV人片在线观看| 潘金莲AAAAAAAAAA| 9999热在线免费观看| 六月婷婷色综合| 五月天婷婷开心| 丁香婷婷色五月| 黄色五月婷婷| 99热这里有精品| 日韩成人电影Av| 丁香九月婷| 五月天伊人日日噜影片AV| 亚洲色情网站| 亚洲综合激情五月久久| 精品人妻在线免费观看| 97五月天婷婷综合激情网| 丁香五月婷婷激情小说| 色丁香五月综合网| 综合久久97| 大战熟女丰满人妻AV| 97艹| 色婷丁香五月| 色五月激情五月| 99人人干| 97婷婷在线视频| www.五月天婷婷.com| 婷婷爱五月天人人爱| 五月天婷婷基地| 激情婷婷五月丁香啪啪啪| 五月婷在线影院| 99精品在线下载| 激情综合五月丁香| 五月天婷婷无码| 久思思久视频| 亭亭玉月丁香| 国产精产国品一二三在观看| 色情五月婷| 99精品无码网站| 婷婷亚洲天堂| 狠狠 久久| 五月丁香六月欧美综合| 中文字幕,综合,91| 九九丁香社区欧美激情| 色播丁香| 久久hd| 激情五月天婷婷播播久久综合91| 97超碰综合| 天天日夜夜拍| 久久AAAA片一区二区| 91超碰在线播放| 色停停五月天| 51精品国自产在线| 天天情天天狠天天透| 另类视频五月天| 美女久久婷婷| 99热 免费| 九九RE视频在线精品| 一级韩国产精品毛| 91操操操| 超碰在线看| 妇激情基地| 丁香五婷婷| 五月婷丁香久久综合| 亚洲六月婷| 99热只有| 美女va| 国产激情视频在线观看| 婷婷丁香成人五月天| 婷婷干五月综合在线播放| 国产精品日本一区二区在线播放 | 亭亭色网| www.91在线看| 亚洲五月色| av操B网站| 五月天激情图| 国产毛片精品一区二区色欲黄A片| 国产黄大片在线观看画质优化| 色色综合网站| 亚洲激情av| 色色五月天网站| 夜夜爱伊人| 婷婷va| www.色婷婷.com| 99热热热国产超碰| 免费视频99| 大香蕉 伊人夜| 日本九婷婷| 色娸娸综合网| 婷婷97碰碰| 激情综合在线观看| 黄色AV日韩| 另类图片天天影视在线观看| 亚洲中文字幕AV| 五月激情综合网| 五月婷婷大香蕉| 色色热99| 成AV人片一区二区三区久久| 激情婷婷五月天网址| 丰满少妇猛烈A片免费看观看| 热久久成人| 九九99九九精品免费 | 专区无日本视频高清8| httpwww色com日本| 婷婷五月天偷拍| 久热爱大香蕉在线蜜臀悦色| 激情网五月天| 黄色五月婷婷| 天天干天天干天天干| 99这里只有免费的小视频在线观看| 涩五月婷婷| www.五月天。com| 五月刺激丁香月综合| 开心激情网在线| 另类激情四射| 丁香婷婷深情五月亚洲| 亚洲视频在线观看99| 婷婷香草网| 久久人妻www| 国产av影片| 色香蕉影院| 人人舔天天| 青青操丝袜美腿| 99久在线视频| 99热欧| 久热re视频在线观看网站| 五月丁香六月婷婷网| 婷婷六月激情| 白人荫道BBWBBB大荫道| 色五月婷婷丁香五月| 97操碰碰无码视频| 国产亚洲精品AAAAAAA片| 国产精品A片| 五月婷在线影院| 白人荫道BBWBBB大荫道| 日日夜夜狠狠干| 最新色色五月天| 成人免费120分钟啪啪| 五月丁香成人视频| 五月天无码| 精品久9| 亚洲激情综合网| 激情综合网亚洲色图| 99热线观看9| av国产精品| 色色亚洲视频| 亚洲五月六丁香激情| 91操在线观看| 激情第四色| 91人碰| 丁香五月98| 九色 在线| av大片在线| 亚洲在线操| 婷婷丁香五月天中文字幕| 久九色| 黄色激情网站在线观看| 日本色色网| 丁香五月婷婷色偷偷| 丁香五月亚洲AV| 色吊丝中文字幕| 99热这里只有精品9| 婷婷五月天播播| 伊人成人宗合网| 色婷婷久久久| 涩 五月 婷婷 狠狠| 日产精品久久久久久久蜜臀| 99久久久久久www| www.夜夜.com| 五月综合视频在线| 色人久夂| 色婷婷亚洲综合天堂| 99无码| www色五月| 天天天天天日| 五月丁香欧美综合免费视频| 五月天无码| 97久人人| 色综合久网| www.丁香六月婷婷久久天堂影院.con| 婷婷色五月天在线| 极品另类| 丁香五月电影| 日韩色情亚洲五月天婷婷| 丁香五月六月久久综合| 中文字幕欧美久久| 偷偷操九九| 精品99*| 成人无码髙潮喷水A片| 天天日综合| 激情综合网五月丁香| 伊人在线视频| www夜夜| www.成人婷婷综合| 五月婷婷激情69| 人人人人人人人人人草| 无码地址| 色综合网上班开心婷婷久久| 综合视频久久| 九色 在线| 九九色院| 激情五月婷黄版| 第1影院之五月婷婷| 久久久潮喷-久久久九九-成人AV| 亚洲成人无码专区| 爱超碰性| 色五月婷婷777| 中文字幕有多少字| 四川BBB搡BBB爽爽视频| 爽tv | 九九亚洲天堂| 1024国产在线| 91黄色五月天视频| 亚洲第一成人AV| 香港九九六区八区99| 熟妇天天综合| 超爽内射| 欧美丁香五月| 91久久五月天| 99热播放| site:xmssd.com| 美臀自射自家人妻| 综合色天天| Va另类视频| 久久精品视频9| 天天日天天干天天爽| 五月婷婷精品| 日本99热| 亚洲av| 免费日本aⅴ中文字幕| 综合色图婷婷| 自拍视频在线观看9| 久人操| 成人AV在线电影| 小视频aaa久久久| 婷婷五月久久| 五月丁香六月婷婷无码| 婷婷涩涩五月天| 五月婷六月| 中字幕视频在线永久在线观看免费| 国产亚洲精品久久久久久久久动漫| 99久久超级| 九九青草热| 婷婷五月中文在线| 99 这里只有精品| 欧美成人性爱网| 久久9久| 办公室少妇激情呻吟A片在线观看| 伊人久久丁香五月91| 超热久碰.com| 九月色婷婷| 热的无码综合视频| 五月丁香六月在线| 五月色综合| 万月丁香狠狠爱| www.久久99热地址发布| 五月丁香综合啪啪啪啪啪| 婷婷丁香五月天小说| 亚洲国产网站| 婷婷精品免费久久| 激情综合网,婷婷| 人人草人| 亚洲天堂99| 综合久久首页| 99热这里在线精品| 日日日日操| 久久久久er热| 亚洲成人日韩无码精品| 99在线免费视频| 99色色最新视频| www.天天干| 极品人妻XXXXOOOO| 六月婷婷香蕉| 中文aV网| 玖玖在线视| 97一区二区| 99综合| 天天摸色吧天天摸色吧| 五月色亚洲| 91丨九色丨国产在线| 亚洲 精品 综合 精品| 野战毛片三一3| 国产乱人偷精品人妻A片| 日韩黄色网络| 色婷婷狠狠色| 久久婷婷成人综合色怡春院| 婷婷性爱五月天丁香网| 激情色中文| 99九九视频| 99热香港| 丁香婷婷精品视频| WWW.桔色成人.COM| 国内自拍97在线| 天天肏屄夜夜爽| 亚洲婷婷基地| 大香蕉网 久久| 成人小说 五月天 婷婷| 中文字幕不卡+婷婷五月| 操逼五月婷婷| 精品婷婷五| 亚洲AV人人操| 9超碰在线| 人妻自慰高清合集| 99精品偷自拍| 久久er视频6| 成人婷婷| 九草性爱| 色婷婷裸体色性在线| 疯狂做受XXXX高潮A片动画| 五月婷色色| 99久在线精品99re5热视频| 五月做爱| 婷婷五月偷拍| 91.www综合| 丁香六月亚洲| www.婷婷| 丁香五月激情六月欧亚激情综合导航 | 18av天堂| 99综合| 超碰免费99| 99这里只有精品| 五月婷婷9| 深爱五月日韩| yw国产AV| 99爱免费视频| 九色亚洲| 狠狠狠狠狠操| 激情五月天久久| 久久草婷婷丁香网站| 国产精品18久久久| 乱女乱妇熟女熟妇综合网站| 99热综合网| site:hcxsz888.com| 婷婷伊人綜合中文字幕| 97操在线视频| 亚洲成人网站在线观看| 五月婷婷丁香| 五月天色社区| 天天爽成人综合网站| 91精品久久久久久77777| 国语对白性爱视频播放| 亚洲色婷婷| 亚洲六月婷|