在上一篇該系列博文中講解了MATLAB待處理數(shù)據(jù)寫(xiě)入.bin二進(jìn)制數(shù)據(jù)文件的過(guò)程,接下來(lái)需要將數(shù)據(jù)通過(guò)以太網(wǎng)發(fā)送到ZYNQ驗(yàn)證平臺(tái)。之前了解過(guò)Xilinx公司面向DSP開(kāi)發(fā)的System Generator可以通過(guò)硬件協(xié)仿真的方式,進(jìn)行算法板級(jí)驗(yàn)證。一個(gè)是本人不熟悉這種方式,再一個(gè)缺乏通用性,也無(wú)法在系統(tǒng)層面進(jìn)行硬件驗(yàn)證。當(dāng)然方案有很多,熟悉上位機(jī)的朋友完全可以自己寫(xiě)個(gè)軟件完成數(shù)據(jù)傳輸和算法結(jié)果對(duì)比等功能。
這里選擇最簡(jiǎn)單的方案:在上位機(jī)通過(guò)網(wǎng)絡(luò)調(diào)試助手將數(shù)據(jù)打包并發(fā)送至以太網(wǎng)端口,ZYNQ端利用W5500硬件協(xié)議棧芯片解析數(shù)據(jù)。有人可能會(huì)說(shuō)用ZYNQ這么高端的設(shè)備還使用外接協(xié)議棧芯片連接以太網(wǎng)真是浪費(fèi),這里就算是開(kāi)個(gè)頭吧,只能說(shuō)根據(jù)能力和現(xiàn)有條件選擇傳輸方案。如果數(shù)據(jù)量較大的場(chǎng)合,可考慮用LWIP開(kāi)源協(xié)議棧或直接利用verilogHDL編寫(xiě)UDP/IP協(xié)議和MAC控制器的方式實(shí)現(xiàn)1000Mbps速率傳輸。
本文主要總結(jié)內(nèi)容包括:TCP協(xié)議基礎(chǔ) 網(wǎng)絡(luò)調(diào)試助手應(yīng)用事項(xiàng),以及W5500的驅(qū)動(dòng)移植。為了保證數(shù)據(jù)正確性,選用TCP這一可靠傳輸協(xié)議。以下介紹兩個(gè)比較淺顯易懂的博文,供沒(méi)有網(wǎng)絡(luò)和TCP協(xié)議基礎(chǔ)的朋友參考。(見(jiàn)參考鏈接1 2)
有了以上基礎(chǔ)知識(shí),我們就可以正確配置網(wǎng)絡(luò)參數(shù)了。查看W5500驅(qū)動(dòng)中網(wǎng)絡(luò)參數(shù)配置部分代碼:
void Load_Net_Parameters(void) {
//加載端口0的工作模式,TCP客戶(hù)端模式
S0_Mode = TCP_CLIENT; //UDP_MODE
Gateway_IP[0] = 192; //加載設(shè)備網(wǎng)關(guān)參數(shù)
Gateway_IP[1] = 168;
Gateway_IP[2] = 90;
Gateway_IP[3] = 1;
Sub_Mask[0] = 255; //加載設(shè)備子網(wǎng)掩碼
Sub_Mask[1] = 255;
Sub_Mask[2] = 255;
Sub_Mask[3] = 0;
Phy_Addr[0] = 0x0c; //加載設(shè)備物理地址(mac)
Phy_Addr[1] = 0x29;
Phy_Addr[2] = 0xab;
Phy_Addr[3] = 0x7c;
Phy_Addr[4] = 0x00;
Phy_Addr[5] = 0x01;
IP_Addr[0] = 192; //加載本設(shè)備(FPGA端)IP地址
IP_Addr[1] = 168;
IP_Addr[2] = 90;
IP_Addr[3] = 199;
//加載設(shè)備端口0(socket 0)的端口號(hào)5000
S0_Port[0] = 0x13; //十六進(jìn)制 1388轉(zhuǎn)換成十進(jìn)制為5000
S0_Port[1] = 0x88;
//設(shè)定的是客戶(hù)端模式
if(S0_Mode == TCP_CLIENT)
{
//加載端口0的目的(如調(diào)試用的pc機(jī))IP地址
S0_DIP[0] = 192;
S0_DIP[1] = 168;
S0_DIP[2] = 90;
S0_DIP[3] = 188;
//加載端口0的目的(如調(diào)試用的pc機(jī))端口號(hào)6000
S0_DPort[0] = 0x17;
S0_DPort[1] = 0x70;
}
//設(shè)定的是UDP模式,初始化給一個(gè)目的IP和端口號(hào)。
if(S0_Mode == UDP_MODE)
{
//加載端口0的目的(如調(diào)試用的pc機(jī))IP地址
UDP_DIPR[0] = 192;
UDP_DIPR[1] = 168;
UDP_DIPR[2] = 90;
UDP_DIPR[3] = 188;
//加載端口0的目的(如調(diào)試用的pc機(jī))端口號(hào)6000
UDP_DPORT[0] = 0x17;
UDP_DPORT[1] = 0x70;
}
}
此處將PC端作為T(mén)CP協(xié)議中服務(wù)器,ZYNQ驗(yàn)證平臺(tái)視為客戶(hù)端,即為“呼叫端”。由代碼看出PC端IP地址為192.168.90.188,子網(wǎng)掩碼應(yīng)設(shè)為:255.255.255.0,這樣ZYNQ與PC端在一個(gè)子網(wǎng)內(nèi),可直接通過(guò)網(wǎng)線連接。 端口號(hào)為6000。驅(qū)動(dòng)中包含W5500 SPI用戶(hù)接口時(shí)序部分代碼,可簡(jiǎn)單修改調(diào)用本人的博文《ZYNQ EMIO使用及可重用封裝》中的EMIO接口函數(shù)(見(jiàn)參考鏈接3)。
根據(jù)上面參數(shù)配置好PC端的IP地址 子網(wǎng)掩碼后,我們來(lái)看下網(wǎng)絡(luò)調(diào)試助手的“坑”。
基本使用沒(méi)什么可說(shuō)的,網(wǎng)上教程很多。關(guān)鍵是畫(huà)紅框的部分。這里的發(fā)送周期要盡量設(shè)置大些,因?yàn)檎麄€(gè)數(shù)據(jù)文件會(huì)被切割成多個(gè)數(shù)據(jù)包,每個(gè)包的發(fā)送和允許重傳時(shí)間由總的發(fā)送周期分配得到。如果文件較大,發(fā)送周期又設(shè)置的較小,會(huì)導(dǎo)致后半部分被丟棄(所設(shè)置時(shí)間只夠傳輸文件的前半部分)。RX方向接收數(shù)據(jù)時(shí)選擇接收轉(zhuǎn)向文件,注意兩點(diǎn):1 接收文件的擴(kuò)展名同樣要為.bin 2 不要選擇十六進(jìn)制顯示,否則接收數(shù)據(jù)會(huì)變成字符串(可能是軟件bug)。
W5500的C語(yǔ)言驅(qū)動(dòng)基于網(wǎng)上流傳的STM32版本代碼。其中應(yīng)用API為Process_Socket_Data中的發(fā)送和接收函數(shù):Write_SOCK_Data_Buffer Read_SOCK_Data_Buffer。兩者內(nèi)部控制讀寫(xiě)指針偏移以及調(diào)用SPI接口函數(shù)完成數(shù)據(jù)傳輸,此處不進(jìn)行詳述,關(guān)于W5500的C語(yǔ)言驅(qū)動(dòng)可看教程視頻(見(jiàn)參考鏈接4)。最后附上環(huán)回?cái)?shù)據(jù)的demo效果:
對(duì)于網(wǎng)絡(luò)傳輸部分的總結(jié)就到這里,后邊可能會(huì)考慮利用LWIP完成高速傳輸。數(shù)據(jù)傳到ZYNQ了,下一步當(dāng)然是先緩存起來(lái),再發(fā)送到PL端驗(yàn)證算法模塊,這樣做的好處是可以模擬實(shí)時(shí)數(shù)據(jù)流,比如驗(yàn)證通信算法和視頻處理算法時(shí)尤為適用。華麗分割線
編輯:hfy
-
Xilinx
+關(guān)注
關(guān)注
71文章
2172瀏覽量
122314 -
C語(yǔ)言
+關(guān)注
關(guān)注
180文章
7616瀏覽量
137972 -
TCP
+關(guān)注
關(guān)注
8文章
1383瀏覽量
79368 -
子網(wǎng)掩碼
+關(guān)注
關(guān)注
2文章
41瀏覽量
11062 -
網(wǎng)絡(luò)傳輸
+關(guān)注
關(guān)注
0文章
141瀏覽量
17546
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
使用W5500模塊實(shí)現(xiàn)DHCP協(xié)議,請(qǐng)教一個(gè)問(wèn)題
新華龍電子推出最新網(wǎng)絡(luò)開(kāi)發(fā)板(W5100&W5500方案)
WIZnet W5500的特點(diǎn)和應(yīng)用介紹
什么是網(wǎng)絡(luò)卸載?W5500中文資料
W5500模塊的使用
基于FPGA和W5500的以太網(wǎng)傳輸系統(tǒng)實(shí)現(xiàn)
w5500 UDP模式網(wǎng)絡(luò)調(diào)試助手發(fā)送數(shù)據(jù)>1472,收不到數(shù)據(jù)??
W5500以太網(wǎng)芯片分享!
w5500 UDP
使用w5500芯片做網(wǎng)絡(luò)通信
W5500數(shù)據(jù)手冊(cè)(中文資料PDF版免費(fèi)下載)
w5500原理圖_w5500電路圖
![<b class='flag-5'>w5500</b>原理圖_<b class='flag-5'>w5500</b>電路圖](https://file1.elecfans.com//web2/M00/A6/D6/wKgZomUMQMaAKlPrAAAppExfn4M987.png)
W5500以太網(wǎng)控制芯片的數(shù)據(jù)手冊(cè)免費(fèi)下載
![<b class='flag-5'>W5500</b>以太網(wǎng)控制<b class='flag-5'>芯片</b>的數(shù)據(jù)手冊(cè)免費(fèi)下載](https://file.elecfans.com/web1/M00/A5/05/o4YBAF1swRiAJmSIAACooIBpgLk416.png)
評(píng)論