前注:ARM端的TCP協議編程步驟和UDP協議編程步驟完全相同,只是在ARM端的C代碼實現不同,在本次TCP協議實現過程中我們主要利用了官方提供的Demo,然後根據自己的需要加以改寫,具體過程如下。
1、開始前的準備工作
- 關閉電腦防火牆
- 連接開發板電源
- 開發板與PC之間串口連接,JTAG下載線連接
- PC機與開發板間網線連接,並保證能ping通
2、Vivado端配置
- 創建工程,具體步驟不詳細介紹,網上都有教程,器件型號按照實際用的板子的型號選,我這裏用的是米聯Miz7035的板子
- 工程創建完畢後,在Vivado主頁左邊有個(創建塊設計)create block design,點擊創建,然後添加ZYNQ7 Processing System IP核,然後對IP核進行配置,主要需要配置的幾個地方爲:
- 配置時鐘,由於本工程只用到了PS資源,只需要給PS配置時鐘,所以可以不用給PL提供時鐘。
- 配置串口,勾選UART1用於打印相關調試信息。
- 配置網口,勾選ENET0,用於PC和開發板的UDP通信。
- 配置DDR內存,按照具體板子的DDR型號進行配置,由於目前我們的工程在PS端還是在“裸奔”,所以內存一定要配置正確,不然後續Debug會出現問題。
- 配置完成後就是檢查規範性,生成輸出文件,創建頂層文件,導出硬件,這個具體步驟我在前面講過,有不知道如何操作的可以翻翻之前的博文進行操作。
最後生成的PS結構如下圖所示:
- 最後導出硬件,啓動SDK。
3、SDK端編程
SDK端主要進行UDP協議的一個實現,語言採用c語言。主要步驟如下:
- 創建SDK工程,file->new->application project,可以選擇一個模板,也可以選擇一個空工程,我們選擇lwIP TCP echo server模板,然後在此基礎上進行改寫。
- Debug調試。
4、調試結果
整個的調試流程爲FPGA接收到PC端發送過來的一個數據後,FPGA將該數據回傳。整個流程初始化完畢後串口打印的信息如下圖所示:
利用網絡調試助手模擬PC機給FPGA發送數據和接收數據,FPGA的地址爲192.168.1.10,端口爲7,調試結果如下圖所示:
5、資源獲取鏈接
完整的實現TCO協議的src文件我上傳了百度網盤,鏈接如下,有需要的請自取。
鏈接:https://pan.baidu.com/s/1Hcw7apaZhxNT9wwQ-45O6w 提取碼:xjd6