亚洲有码Av一区二区三区_国产高清啪啪免费视频_69色视频国产_国产成人人人爆出白浆_国产精品自在线拍国_一本久久伊人热热精品无码_午夜性刺激在线看免费带字幕_助力高品质欧美狂喷水_亚洲精品日韩无码_精品无码一区二区三区蜜臀_麻豆高清国产AV_熟妇人素无码中文字幕_亚洲a级片在线观看_国产欧美日韩三区_99国产成人高清在线观看

ARTICLE DETAIL

資訊詳情

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

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

ZYNQ PL與PS通信:從AXI寄存器設(shè)計(jì)到LwIP TCP數(shù)據(jù)上傳 簡(jiǎn)介面向需要實(shí)現(xiàn)PL與PS協(xié)同工作的FPGA開(kāi)發(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)試測(cè)試方法可幫助讀者建立起清晰的設(shè)計(jì)與排錯(cuò)思路。壓縮包整體約56.6MB文件清單與類型明細(xì)暫未提供但方案說(shuō)明與關(guān)鍵步驟的銜接仍可作為完整項(xiàng)目參考。該資源已有10883人學(xué)習(xí)適合需要從整體理解PL/PS通信鏈路并通過(guò)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ù)采集然后通過(guò)網(wǎng)口把數(shù)據(jù)送到上位機(jī)這個(gè)需求在項(xiàng)目里出現(xiàn)的頻率比想象中高得多。很多開(kāi)發(fā)者第一次接觸 ZYNQ 時(shí)都有同樣的困惑PL 和 PS 到底怎么交換數(shù)據(jù)TCP 協(xié)議棧跑在哪一端實(shí)際做下來(lái)你會(huì)發(fā)現(xiàn)TCP 協(xié)議本身是現(xiàn)成的LwIP 協(xié)議棧一掛就能跑真正的難點(diǎn)在于 PL 端的寄存器讀寫(xiě)接口設(shè)計(jì)以及數(shù)據(jù)從 PL 到 PS 再到網(wǎng)口的這條鏈路怎么打通。這份資源的價(jià)值就在于此它不只是一個(gè) TCP 例程而是把 PL 與 PS 通信的完整鏈路拆開(kāi)從 AXI 接口設(shè)計(jì)到 LwIP 網(wǎng)絡(luò)發(fā)送每一步都有可落地的代碼和驗(yàn)證方法。2. AXI 接口選型與寄存器映射PL 與 PS 通信的第一步是定數(shù)據(jù)通道2.1 四種 AXI 接口模式的適用邊界ZYNQ 的 PS 端通過(guò) AXI 總線訪問(wèn) PL 端的邏輯資源常見(jiàn)的有 AXI4、AXI4-Lite、AXI4-Stream 和 AXI-Full 四種接口類型。初學(xué)者最容易犯的錯(cuò)誤是一上來(lái)就選 AXI4-Stream 做寄存器讀寫(xiě)結(jié)果數(shù)據(jù)通路建立不起來(lái)卡在握手信號(hào)上。選型之前先明確一個(gè)原則控制面用 AXI4-Lite數(shù)據(jù)面用 AXI4-Stream兩頭都要走就用 AXI-Full。AXI4-Lite 的特點(diǎn)是一次只傳一筆數(shù)據(jù)地址和數(shù)據(jù)通道獨(dú)立時(shí)序簡(jiǎn)單非常適合讀寫(xiě) PL 端的寄存器。比如你要配置采集模塊的采樣率、啟動(dòng)停止標(biāo)志位、查詢狀態(tài)寄存器這些都屬于低頻控制操作用 AXI4-Lite 就夠了。AXI4-Stream 走的是流式數(shù)據(jù)傳輸沒(méi)有地址階段數(shù)據(jù)像流水線一樣連續(xù)往外送適用于 ADC 采集數(shù)據(jù)、DMA 搬運(yùn)這種高吞吐場(chǎng)景。AXI-Full 則同時(shí)支持突發(fā)傳輸和地址映射適合需要 PS 端頻繁讀寫(xiě) PL 端大塊存儲(chǔ)空間的場(chǎng)景但是在 ZYNQ 上實(shí)現(xiàn)起來(lái)復(fù)雜度明顯更高。加上中斷機(jī)制后AXI4-Lite 加 AXI4-Stream 的組合在絕大多數(shù)數(shù)據(jù)采集上傳項(xiàng)目中夠用了。中斷在 ZYNQ 里的實(shí)現(xiàn)不復(fù)雜PL 端拉高一個(gè)中斷信號(hào)PS 端注冊(cè)中斷處理函數(shù)就能做到數(shù)據(jù)到達(dá)即通知 CPU。很多人在這里有個(gè)誤區(qū)以為 PS 輪詢 PL 寄存器更簡(jiǎn)單實(shí)際項(xiàng)目里數(shù)據(jù)量一大輪詢會(huì)拖垮 CPU 占用率。2.2 寄存器映射的地址分配策略用 AXI4-Lite 實(shí)現(xiàn)寄存器讀寫(xiě)時(shí)地址分配要做長(zhǎng)遠(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)目舉例寄存器映射可以做這樣的分配偏移地址讀/寫(xiě)功能說(shuō)明0x00寫(xiě)控制寄存器bit0 啟動(dòng)采集bit1 復(fù)位bit2 開(kāi)啟 FIFO 寫(xiě)使能0x04寫(xiě)采樣率配置寫(xiě)入分頻系數(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 寫(xiě)控制 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 位寄存器對(duì)齊后最多支持 64 個(gè)寄存器一般項(xiàng)目夠用了。adc_data_valid是外部 ADC 模塊送來(lái)的數(shù)據(jù)有效標(biāo)志這個(gè)信號(hào)被拉高時(shí)FIFO 的寫(xiě)使能才有效。注意代碼中把reg_ctrl[0]作為采集總開(kāi)關(guān)這是典型的設(shè)計(jì)模式——所有模塊的啟動(dòng)、停止都由統(tǒng)一的控制寄存器管理后續(xù)上位機(jī)命令分發(fā)時(shí)只需往一個(gè)地址寫(xiě)數(shù)據(jù)避免多個(gè)寄存器協(xié)同操作帶來(lái)的時(shí)序問(wèn)題。2.3 FIFO 深度的工程權(quán)衡PL 端 FIFO 深度的選擇直接決定數(shù)據(jù)傳輸鏈路會(huì)不會(huì)因?yàn)樗查g阻塞而丟數(shù)據(jù)。FIFO 深度太小PS 來(lái)不及讀數(shù)據(jù)時(shí)就會(huì)溢出FIFO 深度太大占用 BRAM 資源影響其他邏輯的綜合布局。從工程經(jīng)驗(yàn)上看FIFO 深度至少為 PS 端 DMA 突發(fā)長(zhǎng)度的兩倍。如果 PS 端 DMA 配置的突發(fā)長(zhǎng)度是 64 個(gè) 32 位字那么 FIFO 深度建議 128 以上。這個(gè)參數(shù)怎么推導(dǎo)的DMA 讀數(shù)據(jù)時(shí)總線協(xié)議要求一次突發(fā)傳輸中間不能被中斷如果 FIFO 中的數(shù)據(jù)少于突發(fā)長(zhǎng)度DMA 就要等待 FIFO 攢夠數(shù)據(jù)等待期間總線處于閑置狀態(tài)。FIFO 深度大于兩倍突發(fā)長(zhǎng)度就能保證 DMA 連續(xù)讀取時(shí)幾乎不需要等待。另外還要考慮 FIFO 數(shù)據(jù)寬度與 DMA 數(shù)據(jù)寬度的匹配問(wèn)題。如果 PL 端每拍產(chǎn)生 16 位數(shù)據(jù)而 PS 端 DMA 的讀寫(xiě)位寬是 32 位中間需要做位寬轉(zhuǎn)換。一種方式是直接用 Xilinx FIFO IP 核的位寬轉(zhuǎn)換功能輸入 16 位、輸出 32 位另一種方式是用兩個(gè) 16 位 FIFO 交替存儲(chǔ)讀出時(shí)拼接。前者簡(jiǎn)單后者可以節(jié)省資源但代碼復(fù)雜度上升。如果數(shù)據(jù)速率不高我通常選擇 Xilinx FIFO IP 核自帶的標(biāo)準(zhǔn)模式轉(zhuǎn)化功能設(shè)置好讀寫(xiě)位寬就能用。3. PS 端工程配置與 LwIP 網(wǎng)絡(luò)發(fā)送數(shù)據(jù)到 PS 之后誰(shuí)來(lái)接管3.1 SDK 工程的 BSP 配置與 GIC 中斷初始化Vivado 硬件導(dǎo)出到 SDK 后工程模板會(huì)自動(dòng)生成 BSP 包但是 LwIP 協(xié)議棧默認(rèn)不是開(kāi)啟的。在 SDK 環(huán)境下進(jìn)入 BSP 設(shè)置窗口找到lwip141庫(kù)選項(xiàng)把lwip勾上。這里有個(gè)版本兼容的坑Vivado 2018.3 之前的版本對(duì)應(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ā)來(lái)的中斷信號(hào)就必須在 GIC 里注冊(cè)中斷服務(wù)函數(shù)。GIC 有 SPID 和 PPID 兩個(gè)中斷源組PL 端的中斷一般連接到 GIC 的 SPI 中斷號(hào)上。在 ZYNQ-7000 系列中PL 到 PS 的中斷線有 16 條對(duì)應(yīng) GIC 的中斷號(hào)從 61 開(kāi)始遞增。#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 初始化之后、中斷注冊(cè)之前完成 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è)沒(méi)有一個(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ī)連接后立即斷開(kāi)。TCP_SND_BUF_DEFAULT 直接影響單次發(fā)送的數(shù)據(jù)包大小這個(gè)值可以按 MTU 的整數(shù)倍來(lái)配置常見(jiàn)取 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)連過(guò)來(lái)所以本地 IP、端口配置好后只需開(kāi)啟監(jiān)聽(tīng)。#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)聽(tīng)端口 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)境中對(duì)應(yīng)的是emacps_rx_thread之類的回調(diào)。務(wù)必確認(rèn) BSP 中以太網(wǎng)驅(qū)動(dòng)的接收中斷已經(jīng)打開(kāi)否則ethernet_input永遠(yuǎn)收不到數(shù)據(jù)TCP 就建立不起連接。3.3 數(shù)據(jù)發(fā)送的阻塞與非阻塞選擇數(shù)據(jù)從 PL 讀到 PS 后通過(guò) TCP 發(fā)送給上位機(jī)。發(fā)送路徑上有兩種思路阻塞發(fā)送和回調(diào)發(fā)送。阻塞發(fā)送最簡(jiǎn)單——直接調(diào)用tcp_write加tcp_output數(shù)據(jù)就能發(fā)出去。問(wèn)題在于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 控制塊注冊(cè)一個(gè)sent回調(diào)函數(shù)當(dāng)系統(tǒng)確認(rèn)數(shù)據(jù)已經(jīng)發(fā)送并得到對(duì)端 ACK 后才釋放標(biāo)志位允許下一批數(shù)據(jù)寫(xiě)入。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è)開(kāi)銷可以接受。需要注意tx_busy_flag的等待循環(huán)不是嚴(yán)格意義上的阻塞因?yàn)?LwIP 協(xié)議棧需要持續(xù)調(diào)用tcp_tmr來(lái)處理定時(shí)器事件。在裸機(jī)環(huán)境下通常的做法是在主循環(huán)中刷新 LwIP 的定時(shí)器否則 TCP 的 ACK 超時(shí)重傳機(jī)制無(wú)法工作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ù)對(duì)齊鏈接建好了數(shù)據(jù)格式才是下一道關(guān)卡4.1 上位機(jī)的 TCP 接收實(shí)現(xiàn)要點(diǎn)上位機(jī)端推薦直接使用 Python 的 socket 模塊快速驗(yàn)證先確認(rèn)鏈路通不通再去做復(fù)雜的界面封裝。很多開(kāi)發(fā)者在這個(gè)項(xiàng)目上的做法是邊寫(xiě) Qt 界面邊調(diào)試網(wǎng)絡(luò)問(wèn)題排查起來(lái)非常痛苦——網(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 長(zhǎng)度字段協(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。如果沒(méi)有幀結(jié)構(gòu)設(shè)計(jì)上位機(jī)收到的數(shù)據(jù)就是亂序的。代碼中0xAA55幀頭加長(zhǎng)度字段的方案是工程最常用的做法先找?guī)^再按長(zhǎng)度解幀能有效對(duì)抗粘包和半包問(wèn)題。4.2 大小端與數(shù)據(jù)對(duì)齊的隱性戰(zhàn)爭(zhēng)PL 端是 ARM 架構(gòu)的 ZYNQ 雙核上位機(jī)通常跑在 X86 架構(gòu)上ARM 默認(rèn)小端序X86 也是小端序很多情況下不用考慮大小端轉(zhuǎn)換問(wèn)題。但問(wèn)題是數(shù)據(jù)從 PL 硬件 FPGA 出來(lái)時(shí)開(kāi)發(fā)者習(xí)慣整理成大端格式。一個(gè) 32 位的數(shù)據(jù)在 PL 端被拆成 4 個(gè)字節(jié)發(fā)送如果上位機(jī)按小端序解析數(shù)字就完全對(duì)不上。import struct # PL 端以特定字節(jié)序發(fā)送 4 字節(jié)數(shù)據(jù) # 場(chǎng)景1PL 端按小端發(fā)送上位機(jī)用 符號(hào)解析 raw_small b\x01\x00\x00\x00 value struct.unpack(I, raw_small)[0] print(f小端解析結(jié)果: {value}) # 輸出 1 # 場(chǎng)景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)換直接解析。這種方式效率最高但沒(méi)有通用性一旦上位機(jī)換了平臺(tái)所有解析邏輯都要改。我建議應(yīng)用層還是定義大端格式協(xié)議頭統(tǒng)一用struct.pack(!I, value)打包雖然多花幾行代碼但未來(lái)?yè)Q上位機(jī)平臺(tái)時(shí)不會(huì)翻車。5. 避坑與排查從連接失敗到數(shù)據(jù)錯(cuò)亂的五個(gè)典型問(wèn)題5.1 TCP 連接建立不了網(wǎng)絡(luò)一直 ping 不通抓包軟件看不到設(shè)備發(fā)出的 ARP 請(qǐng)求。排查發(fā)現(xiàn) BSP 配置時(shí)沒(méi)有正確生成xemacps_g.c驅(qū)動(dòng)文件導(dǎo)致 PS 端以太網(wǎng)控制器根本沒(méi)有初始化。原因是 SDK 中 BSP 包生成時(shí)沒(méi)有勾選 Standalone 的emacps驅(qū)動(dòng)或者勾選了但 BSP 沒(méi)有重新生成。解決方法是右鍵點(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ù)量沒(méi)有規(guī)律。用 Wireshark 抓包發(fā)現(xiàn) TCP 報(bào)文段重復(fù) ACK 頻繁出現(xiàn)。原因大概率在 PS 到 PL 的數(shù)據(jù)讀取路徑上。PS 讀取 FIFO 數(shù)據(jù)時(shí)如果采用輪詢方式但輪詢間隔太長(zhǎng)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 讀寫(xiě)寄存器一直返回錯(cuò)誤值在 Vivado 的 Hardware Manager 里通過(guò) JTAG 讀 IP 核的寄存器狀態(tài)寄存器一直顯示 0xFFFFFFFF。檢查 AXI 地址映射發(fā)現(xiàn)IP 核的基地址配置成了 0x40000000但 vivado 中地址編輯器的段分配把寄存器起始地址設(shè)在了 0x40001000兩者錯(cuò)位導(dǎo)致訪問(wèn)落到了未實(shí)現(xiàn)的空間上。解決方法是打開(kāi) Address Editor確認(rèn)adc_ctrl_ip的偏移地址是否從 0x0 開(kāi)始建議把 Base Address 固定為 0x40000000Range 設(shè)為 64KB這樣簡(jiǎn)單干凈。類似問(wèn)題在多個(gè) IP 掛在同一個(gè) AXI 總線上時(shí)更容易出現(xiàn)排查時(shí)要逐個(gè)確認(rèn)地址段沒(méi)有重疊。5.4 上位機(jī)收到的數(shù)據(jù)是反的幀頭識(shí)別成功數(shù)據(jù)長(zhǎng)度也對(duì)但是數(shù)值完全不對(duì)。比如理論上應(yīng)該收到 10000實(shí)際收到 2055208960十六進(jìn)制 0x7A690000??酥谱∪ゼm結(jié) LwIP 代碼的沖動(dòng)先檢查字節(jié)序。這是最典型的字節(jié)序問(wèn)題。PL 端 Verilog 代碼里把 32 位數(shù)據(jù){data[31:16], data[15:0]}做了拼接發(fā)送相當(dāng)于整體交換了兩個(gè) 16 位半字實(shí)際就是大小端處理混亂。統(tǒng)一按大端處理后問(wèn)題不再出現(xiàn)。5.5 開(kāi)發(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ù)位模塊輸出極性一致。在開(kāi)發(fā)板上加一個(gè)看門(mén)狗復(fù)位超時(shí)自動(dòng)重啟整個(gè)系統(tǒng)也能規(guī)避偶發(fā)的死機(jī)問(wèn)題。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í)測(cè)通常只有 300 到 500Mbps原因在于 LwIP 裸機(jī)協(xié)議棧的運(yùn)行機(jī)制限制以及 TCP ACK 往返時(shí)延帶來(lái)的窗口占用。網(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è)簡(jiǎn)單有效的優(yōu)化是加大單次發(fā)送包長(zhǎng)。把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ù)的場(chǎng)景。做一個(gè) AXI-Stream 到 AXI4-Lite 的橋接模塊將兩路 ADC 數(shù)據(jù)交替寫(xiě)入同一個(gè) DMA 描述符環(huán)。上位機(jī)按幀號(hào)區(qū)分兩路數(shù)據(jù)幀格式中前三字節(jié)固定為數(shù)據(jù)通道標(biāo)識(shí)。這種設(shè)計(jì)比雙 TCP 連接簡(jiǎn)潔PS 端只需維護(hù)一個(gè)tcp_pcb數(shù)據(jù)到達(dá)后按照既定的幀號(hào)交錯(cuò)發(fā)送即可。實(shí)踐中的驗(yàn)證方法也很直接先用開(kāi)發(fā)板配置一個(gè)固定數(shù)據(jù)源比如計(jì)數(shù)器計(jì)數(shù)值替代真實(shí)采集數(shù)據(jù)上位機(jī)統(tǒng)計(jì)接收總數(shù)和發(fā)送端計(jì)數(shù)對(duì)比。兩端計(jì)數(shù)值一致說(shuō)明鏈路無(wú)損不一致就對(duì)中間過(guò)程進(jìn)行逐段 debug先看 PL FIFO 讀寫(xiě)指針差值再看 PS 讀出的數(shù)據(jù)累計(jì)值最后看 LwIP 發(fā)送字節(jié)統(tǒng)計(jì)量哪個(gè)環(huán)節(jié)對(duì)不上就重點(diǎn)檢查哪個(gè)環(huán)節(jié)。那次調(diào)通雙通道方案后我給自己立了一條規(guī)矩每次把代碼從仿真環(huán)境挪到裸機(jī)網(wǎng)絡(luò)環(huán)境先花 5 分鐘核對(duì)三個(gè)關(guān)鍵參數(shù)——FIFO 寫(xiě)使能極性、TCP 發(fā)送緩沖大小、字節(jié)序解析格式。這三樣沒(méi)有問(wèn)題的情況下網(wǎng)絡(luò)異常往往不出在通信本身而是出在系統(tǒng)初始化的細(xì)節(jié)順序。ZYNQ 的中斷初始化順序、LwIP 的內(nèi)存堆大小、PHY 芯片的復(fù)位時(shí)序這三個(gè)位置是翻車高發(fā)區(qū)每次排查都從它們開(kāi)始驗(yàn)證。希望這次拆解能幫你少走一段彎路。本文還有配套的精品資源點(diǎn)擊獲取
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
日本熟妇自慰性高潮一区二区三区| 久久精品亚洲成a人天堂| 麻豆天美国美国产| 久久三| 99在线精品视频| 国产熟女| 亚码激情| 激情第四色| 三男一女不戴套的A片| 亚洲欧洲久久天堂| 校园春色综合香蕉| 啊啊啊好舒服好爽啊啊啊视频| 人妻精品视频一区二区| 超碰国产精品无码| 日韩性爱啪啪视频| 久久久性爱| 人妻内射一区二区在线视频| 九九久久首页| 激情综合网激情五月天| www久久99| 午夜精品久久久久久久久久蜜桃| 欧美日本成人一区二区| 亚洲在线欧美| 国产60页| 日韩性爱小视频| 色97干| 春色综合免费| julia ann久久| 免费看污网站| 伊人久久国产免费观看视频| 久热69九色熟妇97| 欧美亚洲性爱一区二区| 一区二区你上我| 五月丁香六月婷| 亚洲第一无码播放立川理惠| 亚州AV无码国产精品| 欧美爱三级日韩久久| 中文字幕一区二区视频在线观看| 亚洲91网| 精品一区二区成人| 岛国片在线观看视频亚洲| 大香网站| 五月丁香婷婷啪啪| 91丨九色丨东北熟女| 久久久97| 欧美久久婷| 精品.99999| 国内精品不卡无毒99999| 中文字幕日韩综合| 日韩人妻无码精品系列| 夜夜做夜夜爽精品视频| 日本影视久久免费| 亚洲欧洲日韩国产自在线| 欧美日韩性爱无码| 吉川爱美98堂在线| 天美传媒av在线| 91插B网站| sewuyueav| 78精品在线| 亚洲精品久久久久毛片A片拉屎 | 国产丰满少妇久久久精品影院| 欧美综合97www| 热久久精品| 国产专区路线| 91久热| 精品久9| heyZO天然素人无码AⅤ专区| 婷婷五月天色| 丝袜综合| 操东北女人| AV一起草在线| 天天流夜夜操| 亚洲精品国产拍免费91在线| 国产亚洲色停停久久99精品91| 亚洲国产婷婷在线播放| 亚洲无码色| 中文一区二区婷婷视频| 久久禁| 国产传媒日韩| 秋霞无码av鲁丝片一区| 婷婷色香| 殴美性天天| 一级黄色性爱裸体视频| 无码抄逼网| 私色综合网| 久操大香蕉超碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰 | 91美女丝袜诱惑视频| 熟女日韩| 亚洲 中文 欧美 日韩 在线| 国产福利视频精品视频| 色色色热| 午夜福利合集| 亚洲精美粉嫩嫩泬在线观看| 99re6久热只有精品6在线直播| 60秒免费小视频| 欧美性色欧美| 国产激情av女片自拍| 欧亚乱色熟一区二区三四区| 欧美丝袜中文字幕07在线| av无线看| 97亚洲资源| 色香综合| 日韩亚洲美州欧洲综三区一品在线| 亚洲青青草| av毛片aaaaa免费看| 熟妇在线视频一区二区| 精品少妇99| 伊人五月天激情| 日韩二级| 性色AV蜜色av色欲av| 亚洲欧洲另类| 97chaopengongkai| 嗯啊不要在线观看嗯啊| 日韩97超碰| 亚洲 国产 精品一区| 真实高潮91| 超碰成人人人爽人人爽| 欧美性天天影院| 小日子操bb在线看| 色欲色香天天天综合网www-亚洲综合国| 东京热综合久久一区二区| 永久免费发布性爱网| 日韩操呦呦影院在线观看| 日本精品中文字幕视频| 成人精品视频一区二区| 97这里都是精品| 亚洲一区日韩精品| 超碰色中文| 91高清欧美| 亚洲一卡2卡3卡4卡乱码网站| 狠狠躁天天躁日日躁| 强奸乱伦免费网站| 91美女視頻| 强奸乱伦av电影| 伊人网在线点播| 伊人久久大香大香线蕉中文 | 超碰综合97在线| 亚洲av综合色区无码一| 亚洲日本天堂| 亚洲色图欧美色图另类图片| 萌白酱自拍视频| 一级日本牲交大片好爽在线看| 蜜桃久久久久久久| 在线一道啪| oumeizonghese,www| 日韩国产乱子伦App| 欧美综合自拍亚洲综合图| 亚洲一区二区三区四区视频| 欧州一区二区三区四区| 97超碰色中文字幕| 禁片 高清 在线观看视频网站| 青娱乐休闲视频在线观看| 精品免费1| 国产麻豆福利av在线播放| 97超碰影音| 99热精品在线| 免费一级a毛片久久久久久鸭绿欲 国产精品亚洲天堂网址 | 欧美综合 站| 婷婷亚洲综合| 18啪啪手机免费性爱| 九七毛片九九毛片| 偷拍 亚洲| 综合操逼| 操人人| 久久熟女精品不卡一区| 中文字幕精品丝袜| 十八禁视频网站| 被操高清无码视频| 97国产超碰| 超碰天天操你比| 99热国产| 激情啪啪拍91| 久久久久久亚洲Av无码| 搡老女人老91妇女老熟女| 九九国产热| 亚洲熟妇乱女区二区三区| 99国产在线 精品 视频| 亚洲天堂男人天堂网| 久久美国毛片| 天天看片麻豆| 麻豆AV一区二区| 欧美视频边做饭边橾| 成年人网站在线免费观看| 校园春色 亚洲| 国产又大又粗又长视频在线| 超碰97起碰| 亚洲偷拍自拍在线视频| 欧美精品xxxwww| 日本αv| 国产sv美女内射| 久久精品人妻一区二区| 少妇同性| 日韩少妇丰满亚洲| 亚州综合电影| 东北黄色电影| 亚洲精品一区中文字幕乱码| 六月色婷婷| 日本人人操人人操| 特级丰满少妇一级AAAA爱毛片| 久艾草在线精品视频在线观看| 国产一区在线播放| 久久AV无码AV| 久久久久久久强迫| 波多野结衣之双飞调教在线播放 | 中文字幕亚韩| 偷看洗澡一二三区美女| 99热免费| 性色中出| 欧美综合传媒| 精品一区二区三区蜜桃| 好爽视频在线观看| 国产精品成人AV片免费看网站| 91少妇| 日本久久女同性恋视频| 牛牛AV人人夜夜澡人人爽| 91九九| 蜜臀久久99精品久久久电影| 亚洲伊人久久综合97| 青青操网| 家庭乱伦性爱av| 333kkkk·亚洲com久久| 看日韩操逼| 成人欧美一区二区三区黑人一| 人妻22p| 亚洲丝袜二区| 超硑97精品| 久久久久久久久久黄色网| 色情亚洲日本成人| 欧美激情亚洲| 九九九九热| 日韩特级毛片免费观看全集| 免费一级黄色录像影片| 国产激情片在线观看| 色五月婷婷久久| 又大又黄国产| 欧美成人国产精品| 国产熟女无套内射| 亚洲精品成人动漫在线| aaa一级黄片| 五月天激情网站| 99re8免费高清在线| 大屁股国产在线视频| 大香蕉人妻久久| 超碰在线人妻中文字幕| 国产粉嫩出水在线播放| 日韩内射视频| 伊人9| 日韩av不卡在线看| 色五月AV在线| 国产精品人妻无码久久久互動交流 | 天天92av| 岛国视频免费在线观看| 97中文字幕色| 亚州性色| 人人天天干干| 超碰在线人妻中文字幕| 亚洲视频精选| 亚洲中文国际强奸字幕| 久久久啊啊| 欧美色图97| a亚洲欧美色欲| 爽 好舒服 无码刺激久久| 欧美老熟另类| 老熟女天天操| 亚洲国产高清福利视频| 啊啊啊啊啊在线视频| 欧亚 另类 久| 欧美成人一区二区三区在线播放| 久婷婷一区| 色香av| 国产福利小视频高清在线观看| 六九九九| 国产熟女无套内射| 久操热线| 91性网| 久久精品国产72国产精品福利| 美日韩一卡二卡三卡免费人妻精品| 熟女久久久| 狠狠操夜夜| 神马久久网| 免费人成毛片乱码| 欧美日韩黄色片一区二区三区四区人与兽做爱 | www.狠狠操| 精品少妇高潮久久| 国产偷拍自拍在线视频| 91激情综合| 综合国产影视三级| 欧美午夜色妇色鬼| 亚洲性爱成人| 亚洲国产剧情少妇激情| AA级电影三区| 人人搡人人肉久久精品| 最新日日夜夜天天干干| 操逼操逼视频操逼| 这里只有精品视频在线观看麻豆| 少妇人妻精品| 3028国产精品| 久久久青草青青国产亚洲免观精品高清完整版_97久久综合区小说区图片区,国精品 | 久久久久久免费电影| 精品视频免费在线一区| 国产精品一区二区后入| 激情网色| 亚洲精品久久久久久| 亚洲欧美在线观看2021 | 91狠狠综| 综合日韩激情另类图片| 极品综合| 在线情色电影 91大 | 日韩AV一起草| 欧美97av| 青青草视频这里只有精品| 热热色中文无码| 91 亚洲 欧洲| 97久久久久久久精| 久久久久久久久久精| 久久日韩精品一区二区| 人人摸人人舔一区二区| 日日夜夜草草草| 欧美在线|亚洲| 色噜噜国产精品视频一区二区| 日韩小电影| 澳门成人网站久国产日韩| 国产乱伦性爱区| 曰韩少妇无码| 啊啊啊啊嗯嗯嗯用力好爽 | 很很干很很操| 黄片qw| 国产男女边吃边摸视频网站| 91欧美丨精品丨入口| 久久久久成人亚洲国产| 91精品国| 热热热热日日漂亮永久永久国产日| 亚洲自拍天堂| 丰满人妻一区二区三区四区| 亚州综合AⅤ| 日日骚av| 性色av网站| 国产精品国产精品国产| 91久久久老司机| 五月天婷婷激情| 欧美一级AAAAAAA| 国产无马视频| ai欧美亚洲小说| 日本一级一级一级一级| 无码人妻精品一区二区中文| 日韩大香蕉| 亚洲欧洲无码一区夜| 久久男人| 免费一级毛片在线视频观看| 你懂的在线观看区国产| 欧美+日产+中文| 亚州综合图片| 欧美亚洲丝袜美女电影| 99久久99九九99九九九| 日韩一性一交一A片俄罗斯| 97在线免费观看| 欧美洲精品一级| 嗯嗯啊啊啊好舒服| 色婷婷亚洲婷婷| 一线黄色免费性爱片| 久插综合| 狠狠久久手机视频精品| 九热中文字幕| 淫淫综合网| 999九九九九国产动| 绑缚麻绳人妻寝取完整版| 国厂麻豆77q4| 爱av免费| 亚洲五码一区二区三区| 亚洲国产精品有声| 人人 操人人 操人人| 日韩少妇无码| 久久亚洲AV成人精品无码| 欧美 日韩第一性色| 五月综合久久| 亚洲黄色影视| 99精品在线| aaa一级黄片| 成人天天爽| 国产一区二区三区影片| 国产综合网站在线播放 | 99久久网站| 九九人人操| 亚洲国产97在线精品一区| 九九九九九九视频| 亚洲双插| 97网址www| 亚洲男人综合| 国产最新小视频在线播放下载| 国产资源中文字幕在线| 国产婷婷综合在线观看| 青青青国产手线观看视频2| 少妇久久| 性爱乱伦视频免费| 亚洲最新av无码成人精品区| 日韩人妻中文视频| 激情久久av一区av二区av| 亚洲最大AV网| 亚洲 欧美 天天| 日本曲间由美性生活片| 一直超碰| 97国产精选| 亚洲小说视频| 看日韩黄片| 一区不卡在线观看av| 毛片久久| 久久中出在线| 亚洲色人妻综合| 日本欧美亚洲高清在线看| 久操精品| 男人午夜天堂| 天天天干977| 超碰偷拍| 天天干1区2区在线| 亚洲欧美日韩国产丝袜自拍中文| 69精品少妇一区二区三区蜜桃| 久久激情亚洲精品无码?V | 九九九偷拍| 涩涩久久精品| 中文字幕-区二区三区四区视频中国| 碰碰在线视频| 精品超碰中文在线| 97九色人妻| 夂久色| 人妻碰碰碰碰碰碰| 久久久久久久久久久人妻| 丝袜大香蕉| 97任你吞精| 日韩欧美蜜桃精品久久中文字幕久久| 热久久国产| 大香蕉久| 婷婷五月天补不补| 内射黑丝袜| 久草在线| 美国日韩黄色片| 伊人天堂在线| 国产丁香精品露脸视频| 人人干人人操人人爱| heyZO天然素人无码AⅤ专区| 另类 综合 日韩 欧美 亚洲| 亚洲第一色页夜| 日本免费一级AAA大片器| 精品一区二区久久| 欧美后入式| 亚洲?V无码专区在线电影| 精品无码久久久| 国产性爱强奸乱伦大全| 正在播放:深夜激情大战,自带黑丝袜全力输出骚穴 | 国产AV高清AV无码| 97人人操人人摸人人爱| 97在线免费观看视频| 久久高清无码夜夜操| 狠狠操狠狠插| 中文熟女五十乱码在线| 欧洲亚洲人人爽爽视频| 蜜桃臀一区二区aV| 亚洲AV色图| 男人的天堂啪啪| 日本道日本道中文字幕日本道最新日本道在线观看 | 色男人色天堂东京热| 亚洲成av人片色午夜乱码| 91丝袜美女国产| 久久性爱免费送| 老熟妇一区二区三区啪啪| 亚洲色图第一页| 香蕉视频欧美一卡二卡| 91丝袜熟女| 欧美色棕合| av亚欧| 狠狠色综合网| 内射白嫩美女| 内射黑人| 五月亭亭六月丁香| 无码一区二区精品视频久久久春药| 自拍偷拍 高清无码| 久久亚洲天天做| 乱伦a片视频| 亚洲欧美日韩激情不卡| 91丨豆花丨熟女| 伊人精品视频| 久久精品国产72国产精品福利 | 欧美成不卡网| 无码人妻精品一区二区三区99不卡 | 婷婷五月天色网| 日韩欧美国产高清视频| 亚春色色| 国产精品天美传媒| 可以在线观看的黄色网址| 久湿久久 | 精品三级在线专区| 99re99视频在线免费观看| 999亚洲国产视频| 97在线/亚洲| 天天看天天综合成人网| 日韩欧美综合激情| 人人妻人人爽| 精品无码久久久久| 青娱乐 成人娱乐在线| 久久久精品中文字幕爱豆| 欧美精品不卡一二三四在线91| 天天干,夜夜爽| 国产成人亚洲精品无码古代早漏男| 人妻天天爽夜夜爽2| 在线天堂999| 亚洲Av无码成人精品国产| 中文字幕丰满子伦无码专区在线视频最新 | 五月丁香六月| 亚洲精品国产熟女久久久久久| 亚洲性高潮| 精品视频久久区| 国产精品亚洲四五区在线观看| 中文字幕精品区先锋资源| 1769一区| 国产久久免费精品视频| 亚洲熟女综合网| 91久久久久| 香蕉色网| 天天日天天插| 蜜臀久久99精品久久久电影| 一本色道久久综合熟妇| 熟妇人妻一区二区三区| 亚洲精品亚洲人成在线麻豆| 香蕉欧美| 国产精品久久久| 精品精品精品| 伊人991| 清纯唯美激情| 伊人五月天激情| 欧美在线伊人色| 久久宗合97| 亚洲精品久久久久久久蜜桃臀| 色图综合网| 91白虎| 蜜臀99久久精品久久久久| 日本孕妇孕交| 中国黑人三级片网站上区| 大香蕉人妻| 岛国片国产成人亚洲播放| 男女啪啪网站免费视频| 综合少妇网| 区自美91| 欧美综合传媒| 天堂网 主播 亚洲| 亚洲成人色情五月天丁香花| 欧美狠狠操| 96AV精品| 国产超碰国产97| 五月婷婷色| 亚洲午夜AV| 无码国产精品久久久久| 欧美性巨大╳╳╳╳╳高跟鞋| 国产v片在线免费观看| 97超碰香蕉| 鸥美中出| 天天噜| AV中亚| 欧美日韩另类激情图片| 校园春色亚洲色图| 久久久久夜夜夜夜| 免费操逼91| 17c嫩草51久久91嫩草| 亚洲成a人v欧美综合天堂下载| 伊人网高清| 试看60秒 爽| 久久精品国产亚洲5555| 亚洲中文字幕熟女| 精品高清av中文字幕| 久久精品国产亚洲AV高清演员表| 黄片免费视频2019| 午夜AV人气不卡| 日韩一级成人毛片免费观看 | 竹菊影视国产一区二区| 亚洲色诱惑| 欧美后进式| 丰满人妻一区二区三区在线| 夜夜騷av、一區二區| SUV一区二区在线看| 五十路成人在线视频二区三区| 免费男人的天堂| 超碰九7免费| 亚洲 欧美 日韩 国产一区二区| 欧美性爱日韩高清| 日韩精品黄片免费观看| 色情成人五月天| 97中文天堂| 美日韩一二三区| 欧美亚洲韩国视频十五区| 9Ⅰ超碰| 日韩福利综合一区| 中文字幕日本久久| 人人澡人人爽人人精品| 亚洲熟女乱色一区二区三区久久久 | 好看的久久不射无码影视影院| 九九九九97| 丝袜足交视频| 333kkkk·亚洲com久久| 日韩另类色图| 亚洲色图综合网| 日韩无码一区二区三区| 无码操逼网| 啊啊啊啊嗯嗯嗯用力好爽 | 一级黄色视频网| 噜噜噜狠狠色综合| 日本欧美色| 综合亚洲欧美| 福利伊人玖玖国产| 丰满人妻一区二区三区在线| 妇女乱色二区| 国产一级内射无挡观看| 色香色香欲天天天影视综合网| 欧美少妇高潮久久91| 欧美翘臀视频网站一区二区三区| 久草视频观看视频在线| 日韩偷拍色图| 亚州黄站| 老司机射| 亚洲AV不卡在线观看尤物| 国产成人五月天丁香花| 国产综合网站在线播放| 国产精品久久发布| 美女好片色日本| 午夜偷拍久久熟女| WWW.加勒比人妻一区不卡.com| 亚洲天天更新| 欧美精品999| 色五月激情AV在线| 欧美日韩不卡a片| 伊人久久亚洲中文字幕| 9丨久久九九九| HEYZO高无码国产精品227| 91伊人大香蕉| 国产精品不卡一区二区三区av| 五月激情在线| 亚洲黄色电影| 性爱av在线免费观看| 在线观看 99热| 欧美日韩日产免费网站看| 亚洲综合在线高清| 激情黄色片在线观看| 情色AV电影| 久这精品中文在线观看视频| 色综合五月天| 91欧美综合| 亚洲色图91欧美日韩| 另类欧美色| 五月综合激情| 精品久| 国产不卡片| 97在线免费视频| 国内精品不卡无毒99999| 久久免费少妇| 丝袜性亚洲| 伦激情人妻另类人妻| 男插女青青影院| 激情抓乳插进去啪啪啪日韩| 亚州色图欧美| 久久激情亚洲精品无码?V| 色爽——AV| 国产激情在线| 97亚洲中文| 精品久久久久,69国产成人精| 亚洲欧洲激情卡通另类文学四射小说网站| 色色99| 国产精品美女视频诱惑| 色诱avtt| 26uuu国产成人综合| 欧美极品少妇| 大奶啊啊好爽| 欧州一区二区三区四区| 操逼999| 人妻人人操| 久久男人天堂| 嗯嗯啊啊好疼| 欧美 亚洲 偷拍自拍| 欧美色乱| 国产熟女| 国产精品亚洲美女久久久久| 99av| 小骚逼被操的爽不爽| 欧亚性爱视频免费看| 91性情| 欧美熟女妇同| 五月婷婷久久综合| 中文字幕精品一区二| 欧美日韩亚洲国产中文永久天天看| 日韩婷婷| 美女视频尤物网在线看| 素人伊尹大香蕉免费下载视频| 天天日天天色| 一级片在线观看高清无码| 久超碰这里只有精品| 手机av天堂久久久久| 91艹B视频| 91亚洲影视| 麻豆天美传媒在线视频天堂| 草莓精品视频| 久久久97| 国产三级中文字幕粉嫩 | 热久久无毒不卡| 亚洲日韩肥臀视频在线观看| 色官网色综合| 国产精品内射婷婷一级二| 欧美青青草视频| 女人妻一区| 成人丁香五月| 在线播放一级无码视频| 国产精品丝袜在线| 东京成人一区| 国产又操| 秋霞 色色| 久9综合在线| 啊啊啊快操我视频| 国产视频一区二区在线观看| 亚洲欧美激情在线视频| 26uuu性| av毛片aaaaa免费看| 亚洲一区中文字幕| 天海翼久久| 宗合情欲网| 9九九九九视频在线观看| 操逼操逼逼操操逼91| 三男一女不戴套的A片| 91大香蕉伊人| 亚洲综合情色| 久久一二三四五六七八九区区| 精品一区二区三区蜜桃臀赵总| 操逼操网| 国产精品呦一区二区三区| 亚洲国产另类在线中文| 亚洲色人阁| 精品少妇高潮久久| 大香蕉日亚洲日本亚大 | 亚洲九月丁香| 精品人妻一区二区视频| 波多野结衣AV无码一区| 久久永久无码人妻视频| 男人天堂新在线| 九九九偷拍| 国产午夜福利合集| 久久久久久久综合,国产| 是还免费视频1727我| 久久超碰大香蕉| 九月AV| 麻豆福利视频导航| 色老汉色| 欧美色图亚洲特色| 亚洲高清内射| 国产污视频麻豆传媒一区二区| 男女打扑克高清网站| 中文字幕二区日韩天堂| 91蜜臀熟女| 国产亚洲 中文欧美久久| 亚洲熟妇极品| 啊a一区在线| 中文字幕在线观看网页| 秋霞男人网| 99色骚| 中文熟女五十乱码在线| 日产精品久久久一区二区| 中文字幕一区二区三区人妻不卡 | 五月综合婷婷久久网站| 亚洲精品人妻吞精av| 亚洲日本韩国在线| 色婷婷综合网| 搡老女人老妇女老妇老熟女怎么读| 人妻天天爽夜夜爽精品2| 亚洲乱色视频一区、二区在线| 日日夜夜国产综合| 91 国产丝袜在线播放-百度| 青青草原av| 啊啊啊网站| 日韩黄片视频试看| 天天添天天干电影| 人妻碰碰碰碰碰碰| 91真人天天在线| 亚洲区小说| 精品人妻中文字幕高清| 亚洲欧美日韩免费电影| 爱我干综合| www.欧精品| 老女人老91妇女老热女| 欧美亚州综合网图片| 日本久久女同性恋视频| 啪啪AV导航| 加勒比大香蕉视频在线| 久久久久久久久九九久孕交| 青青青草原| 加勒比综合网| 黄片免费看的| 骚逼高潮久久精品| 亚洲一本色码中文字幕| 欧美色图欧美| 无码国产Av| 少妇一区二区三区| 久久九九一区二区三区成人| 国产黄色剧情影片麻豆免费播放| 操人人| 久久五月视频| 午夜高清成人在线视频| 快点操死我| 欧美偷| 岛国激情视频在线观看| 热九九精品| 九九九影院| 放黄片放3级黄片没穿衣服| 超碰99在线观看| 77国产精品| 精品人妻一区二区三区四区石在线| 天天综合欧美| 亚洲精品亚洲人成人网| 亚洲资源网| 日韩免费中文字幕视频| 色综合色色| 职场同事知名国产国产精品久久欧美日韩 | 91东京热男人的天堂| 欧美在线天堂| 东北夫妻性偷拍| 久久精品| 97网站在线观看 | 天天做日日做天天欢。| 欧美成人亚洲精品| 国产综合色精品在线观看| 9久热| 97人人色| 亚洲AV无码成人精品久久| 久久精品中文| 无码高清国产AV| 亚洲国产精品久久久男人的天堂| 激情综合网亚洲| 国产精品久久久亚洲一区| 人妻少妇精品久久久久久| 欧美v亚洲v日韩v最新在线二区| 四虎视频在线观看| 日韩高清黄片| 躁躁日曰躁2020| 青娱乐福利99| 台湾大香蕉99热| 国产精品一区二区亚洲人成毛片| 亚洲一二三四区机械| 欧美视频一| 日han少妇无码| gogogo免费高清看中国国语| 91九九九小逼| 乱伦图av| 亚欧操逼片在线观看| 日本日皮视频逼| 91N综合网| 中文字幕五区| 欧美性爽xyxOOOO| 国产午夜视频| 亚洲最新中文字幕免费| 婷婷精品国产欧美精品亚洲人人爽| 人人操人人uiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii | 狠狠爱夜夜| 大香蕉碰| 免费的黄片有限公司| 午夜福利在线合集| 2024人人操人人摸| 久操免费观看| 麻豆婷婷成人一二三| 大香蕉久| 久久久91| 97 超碰 人人做 人人爱| 亚洲AV无码翔田千里网站| 呻吟 欧美 日本 中出| 五月丁香| 性色av大全| 亚洲欧美视| 国产一区二区三区中文字幕| 伊人一区二区在线播放| 久热99999| 97超碰色五月| 青娱乐国产精品| 欧美日韩欧美| 久久鲁夜| 涩五月婷婷| 成人av在线播放| 日本道人妻久久久在线不卡色视频| 狠狠中文字幕| 深夜国产一区二区三区在线看| 欧洲综合色| 久久骚少妇| 97操碰| 亚州免费啪啪视频| 中欧人妻丝袜中文字幕 | 能在线播放的国产三级| 亚洲在线a| 欧美激色| 中文字幕片| 99热婷婷| 一起草日韩| 婷婷超| 精品无人区麻豆乱码1区2区图片| 婷婷五月天久久精品视频一区二区三区| 欧美专区在线| 很很热性爱视频| 亚洲97成人在线观看| 乱人乱色一区二区三区免费| 曰本精品久久久| 性爱综合网| 综合久久六月久久婷婷| 搡老女人911熟妇老熟女| 免费视频观看60秒| 狠狠躁天天躁日日躁97| 亚欧美天堂在线| 一区二区偷拍拍视频| 91丨熟女丨丰满熟女| 国产精品露脸在线观看| 一区二区中文| 夜夜欧美 | 女人被添高潮免费视频| 99国产精品视频尤物| 97亚洲综合影院| 超碰色97| 97视频一区| 亚洲高清在线se| 成人久久精品| 欧美中文字幕一区 | 久久久性| 国产日本一区二区三区蜜臀在线观看| 舔人妻中文免费视频| a片亚洲一本通视频| 久久久av爱| 狠肏骚人妻| AV天堂电影网| 青青青国产| 日本有码久久| 大香蕉免费中文| 91碰碰碰| 五月天丁香| www.夜夜操| 丁香六月激情| www.99色| 欧美亚洲综合色| 大香蕉宗合网在线| 人妻嗯啊啊在线播放| 婷婷五月天社区| 欧美激情综合| 欧美综合自拍成人自拍第二十页| 性爱综合网| 韩日精品四区| 日本欧美韩国日产片片在线看免| 日日日日日| 麻豆天美国美国产AV| 天天色香欲综合网| 97精品国产97久久久久久户外免费| 熟女丰满人妻一区| 欧洲综合视频| 熟妇熟女一区二三区| 嗯……啊…嗯嗯…啊…好舒服| 一区黄二区黄| 在线视频一区二区传媒| 久久免费精品96| 亚洲欧美日韩中文久久自慰| 日韩欧美蜜桃精品久久中文字幕久久| 2003天天干夜夜操| 亚洲黄色电影| 99久久无码| 秋霞网—男女啪啪亚洲免费体验区 | 日本三级中国三级99人妇网站| 久久人妻丝袜一区二区三| 久久9 9 9精品| 乱老熟女一区二区三区| 欧美高潮| 国产综合久久久麻桃个| 一级做a爰片性色毛片久久| av绯色| 九九久久99| 亚洲中文人妻色| 粉嫩久久久久| 九九九九亚洲| 影音先锋日本一区二区| 久久久久久久国产a∨| 色九月婷婷| 久久av色| 性生活性生大爱77AV国产| 日本色色色网站免费看不卡| 国产一区免费午夜视频| 久久精品国产亚洲AV成人直播| 久久精品国产精品亚洲艾通辽熟妇| 久久久久9久久久久| 久久久一区二区| 白丝AV| 围产精品一区二区三区视频播放| 国产这里只有精品| 婷婷香网站| 日骚逼视频| 人妻 中文 日韩| 美女刺激久久国产欧美| 天天色怡春院| 91网站18| 日本一本道A级黄色毛片试看60分钟| 东京热男人的天堂网| 色拍偷亚洲| 亚洲不卡三级手机播放| 亚洲乱码尤物193YW| 精品大久久| 伊人国产AV| 中国大陆国产高清AⅤ毛片| 97久久精品亚洲| 久湿久久| 嫩草美女久久| 日韩AV片| 日本精品一区二区三| AA级电影三区| 日韩欧美女优电影| 欧美三四五区| 亚洲伊人a线观看视频| 人妻碰碰碰碰碰碰| 久久日韩肥臀| 91天堂色男人的天堂| 欧美激情片一区二区| 97免费在线观看| 综合久久中文字幕综合日韩精品| 久久大线蕉一区| 亚洲欧美另类激情小说| 天天日天天插| 欧美97se| 伊人久操| 中文欧丝袜诱惑| 日日日日做夜夜夜夜无码| 欧美色图亚洲色图成人在在线| 国产免费内射视频| 免费一级视频特黄色大片| 懂色av中文字幕一区二区三区天美| 色999亚洲人成色| 丝袜色综合| 操逼视频亚洲| 欧美综合网1| 伊人久久在线视频观看| 麻豆福利视频导航| 日产欧美电影一区二区三区| 美女露胸露屁股| 国产成人久久精品蜜臀| 中文字幕第页| 久久 精品| 96AV精品| 成人毛片免费| 在线天堂999| 无码高清少妇久久| 日日黄色三级网站| 亚洲图片日本AⅤ欧美在线| 另类av天堂| 欧美性生活免费网| 五月开心久久AV官网| 亚洲第一黄色av网站 | 久9re热视频这里只有精品| 亚洲性图91| a片亚洲一本通视频| 免费的av网| 欧美姓爱综合网| se01国产在线视频| 亚洲激情天堂网| 涩涩这里只有精品视频| 欧美大片一区二区三区 | 91在线色综合| 久久久97| 玖玖蜜臀资源网| 操逼天美3区| 日日干夜夜骑| 91日本在线观看| 九九九九九精品视频| 欧插网站| 天堂а√在线最新版在线| 久操影视| 婷婷五月色| 欧美性爱综合,免费| 欧美情色贴图| 日韩精品1区2区中文字幕| 夜夜操夜夜高潮夜夜爽国产精品区| 全球成人中文在线| 99中文字幕| 日欧毛片久久| 91在线无码精品秘 软件| 蜜臀久久99精品久久久久| 91亚州欧美| 丁香九月激情啪| 97超碰碰| 997色在线| 麻豆黄色五月天| 国产精品久久久久亚洲av| 国产精品久久久亚洲第一牛牛_在线观看| 花野真衣| 国产中文精品一区二区在线观看| 精品人妻一区二区蜜桃视频| www鬼畜国产男人的天堂| 密乳AV免费观看| 青草地一本线一区二区三区| 亚州色站 日韩电影| 国产精品熟女丝袜一区二区| 亚州综合网| 96精品一区| 中文字幕视频2区| 精品亚洲国产成人AV制服丝袜| 国产强奸乱伦第1页| 久久久久极品| 日本 免费 一区二区三区 久久香蕉| 久久精品国产亚洲AV高级北京| 中文乱码字幕观看| 玖玖爱伊人玖玖爱| 免费看污网站| 色婷婷久久| 午夜一区二区三区国产| 天天综合网91| 99精品无码| 日本A级视频| 亚洲色偷偷色噜噜狠狠99网| av日韩在线观看电影| 色综合一本| 九热久| 亚洲在线观看| 久操大香蕉超碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰 | 校园春色亚洲欧洲| 婷婷五月成人| 日韩精品视频在线观看一卡二卡| 夜夜操美女| 91处女在线观看| 不卡视频一区蜜桃视频| 亚洲国产精品久久久久婷婷老年| 自拍视频大全亚洲专媒视频/一区二区三区| 五月天开心网| 毛片电影一区二区三区| 综合欧美激情网| 成人日韩3| 中文字幕日韩电影人妻| 国产精品人妻免费精品| 亚洲高清欧美总合| 桑老女人九区| 人人九九精| 另类专区加勒比| 久久精品中文字幕女同| 欧美91在线+|+欧美| 狠狠操一区二区| 99热在线不卡| 神马久久久久久久久久久久| 亚洲国产精品久久久久婷婷青年| 亚洲欧美精品一区天堂久久 | 2024人人操人人摸| 色婷婷综合久久久久中文国产精品一区中文字幕,国产福利电影一区二区三区 | 婷婷情色综合网| 人妻少妇视频在线播放| 五月天婷婷基地| 激情五月婷婷| 亚洲夜色在线| 偷窥自拍亚洲色图| 久久精品视频久久久| 按摩中文字幕| 97综合国产精品高潮久久| 欧美色997| 蜜臀久久99精品| 免费97视频| 夜夜嗨一区| 美女91AV| 韩国免费播放一级毛片| 98人妻精品一区二区色欲| 男女激烈网站最新| 美女写真| 亚洲操人| 欧插网站| 天天综合网1|