最近本人一直在學習ZYNQ SOC的使用,目的是應對科研需要,做出通用的算法驗證平臺。大概思想是:ZYNQ PS端負責與MATLAB等上位機數據分析與可視化軟件交互:既可傳輸數據,也能通過上位機配置更新硬件算法模塊配置寄存器內容,同時可計算分析PL端算法實現性能指標。PL端的FPGA邏輯則負責算法的硬件實現,以探索高效并行硬件架構。為此本人后續會持續編寫《利用ZYNQ SOC快速打開算法驗證通路》系列專題博文,在各個階段進行些基礎性總結。
MATLAB中數據為雙精度浮點型,因此打開算法驗證通路的第一步即為MATLAB中浮點數與定點二進制補碼之間的相互轉換。在之前的博文:《FPGA與MATLAB數據交互高效率驗證算法——仿真階段》中提到過兩種數值表示方式之間的轉換,但為了便于testbench仿真,MATLAB寫和讀的文件均為txt文本文件。在算法板級驗證中,數據應以未經過ASCII碼編碼的二進制數據方式被處理。這里涉及到MATLAB函數fscanf和fprintf以及函數fread和fwrite的區別,前兩個分別為讀和寫文本文件,后兩個則是讀寫二進制文件。
以下給出浮點定點轉換以及讀寫二進制文件代碼:
先看下寫出到文件的數據和從該該文件讀回的數據是否一致。
直接對比數據和命令檢測結果顯示兩者完全一致。再來對比下量化之前與讀回定點數經過類型轉換后的浮點數。
MATLAB顯示兩者的差值。可見在浮點轉定點數時,會有一定的精度損失,但僅在10的負四次方數量級,在很多精度要求不高的場合下可以忽略。
現在利用Uedit軟件打開該文件,并以16進制方式顯示:
我們用前兩個數據做驗證,依次是00_38和FF_2A。由于是補碼形式,故先寫成二進制形式:0000_0000_0011_1000和1111_1111_0010_1010,再轉換為原碼:0000_0000_0011_1000和1000_0000_1101_0110,十進制結果就是56和-240,與MATLAB中數據吻合。
非常簡單的東西困擾了我有一陣,希望對大家有幫助吧。因為算法驗證平臺僅是載體,最重要的是PL端的算法硬件實現部分。為了簡單快速形成算法驗證通路,采用網絡調試助手和W5500協議棧芯片實現MATLAB與ZYNQ之間的數據傳輸,從而避免寫上位機軟件和網絡協議先關設計配置帶來的工作量。這部分內容在下篇博文中敘述。
編輯:hfy
-
matlab
+關注
關注
188文章
2995瀏覽量
233194 -
二進制
+關注
關注
2文章
803瀏覽量
42145 -
浮點數
+關注
關注
0文章
61瀏覽量
16077
發布評論請先 登錄
labview寫入浮點數到匯川 PLC中的數據轉換關鍵
hex格式和二進制的區別
為什么Gain=1對應的默認值不是16位二進制補碼的中間數而是最小數?
二進制編碼器的種類及特點
二進制編碼器應用場景 二進制編碼器與模擬編碼器比較
二進制編碼器工作原理 如何選擇二進制編碼器
labview中浮點數與十六進制字符串相互轉化
二進制補碼及與原碼的互相轉換方法
TMS320C6655/57定點和浮點數字信號處理器數據表

評論