日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人工智能 > 循环神经网络 >内容正文

循环神经网络

matlab相语法,学会System Generator(10)——支持的MATLAB语法

發布時間:2023/12/31 循环神经网络 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 matlab相语法,学会System Generator(10)——支持的MATLAB语法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

本文是該系列的第10篇,上一篇介紹了在System Generator設計中使用MCode模塊調用MATLAB代碼來完成邏輯控制。本文將介紹System Generator支持的所有MATLAB語法。

限于篇幅,本文只記錄了經常用到或相對重要的內容,更詳細的信息可以參考xilinx官方文檔ug958->第一章->MCode小節。

MCode block特性

MCode用于在Simulink環境下執行MATLAB函數。MCode的名稱與管腳即為函數名稱與函數接口。在將System Generator設計導出到FPGA時,軟件會將MATLAB代碼轉換為對應的HDL模型。MCode經常用于實現一些簡單的算法功能、有限狀態機和控制邏輯。

調用的MATLAB函數必須遵循以下三條基本規則:

所有的輸入和輸出必須是Xilinx的定點數據類型(xfix);

至少包含一個輸出;

M文件應在MATLAB的搜索路徑下,或與slx模型文件在同一目錄。

當初次使用MCode時,會自動調用一個示例文件xlmax.m。博主建議先在slx文件目錄下創建好新的m文件,再用Browse定位。

支持的MATLAB語法

1.所支持的MATLAB語法結構包括:

賦值(等號左邊只能有一個變量);

if/else/elseif end語法(條件表達式必須是判斷true/false或1/0);

switch語法(case只能選擇常量)、for語法;

加法、減法、乘法、除法(除數必須是2的N次冪,因為可以轉換為移位),除此之外,不支持其它算術表達式

關系運算符(、>=、==、~=)

邏輯運算符(&、|、~)

2.所支持的MATLAB函數及其功能列在下表:

xfix數據類型

xfix有三種數據類型:無符號定點數(xlUnsigned)、帶符號定點數(xlSigned)、布爾值(xlBoolean)。使用xl_arith()判斷數據類型時分別返回1、2、3。需要注意幾點:

使用關系運算符得到的結果是布爾類型;

布爾變量不能進行算術操作;

邏輯運算符只能用于布爾變量

編寫MATLAB代碼時,仍然可以使用整數、浮點數、布爾值來定義常量。整數和布爾值都會自動轉換為xifix類型;浮點數需要用xfix()函數轉換。xfix()函數還可以完成不同xifix數據類型的轉換,其基本形式為:

x = xfix(type_spec, value);

value為待轉換的數,type_spec為轉換后的數據類型。比如將浮點數π轉換為xfix類型:

x = xfix({xlSigned, 20, 16, xlRound, xlWrap}, 3.1415926);

轉換后為Fix_20_16格式,Round量化,Wrap溢出(前面的文章中已經解釋了這些含義)。量化方式可設置為xlTruncate、xlRound和xlRoundBBanker;溢出方式可設置為xlWrap、xlSaturate、xlThrowOverflow。

xl_state狀態變量

在整個仿真過程中,一個MATLAB函數會執行多次,必須保證其中的狀態變量在每次執行完時保留其值(類似與C++語言中的static靜態變量),否則無法正確實現控制功能。

狀態變量在MATLAB中需要用persistent關鍵詞和xl_state函數定義,如下所示:

persistent s, s = xl_state(0, {xlSigned, 4, 0});

該函數有兩個參數:第一個0表示狀態初始值,必須是常數;第二個參數是狀態變量的數據類型,與xfix函數中的type_spec用法相同。狀態變量還可以是一個向量,并且擁有許多配套的函數,ug958中給出了多個使用xl_state完成的設計實例。

確保變量被正確轉換

MATLAB是一種順序執行代碼,眾所周知,HDL代碼是并行執行的代碼。為了能讓MATLAB代碼成功的轉換為HDL模型,就要確保MATLAB用到的變量也能正確的轉換(原文檔描述為Variable Availability)。具體來講就是要保證所有的變量在MATLAB語法的不同分支條件下都能夠得到賦值。

ug958給出了一個示例代碼:

function [x, y, z] = test1(a, b)

x = a;

if a>b

x = a + b; y = a;

end

switch a

case 0

z = a + b;

case 1

z = a - b;

end

其中y變量只在“if a>b”的條件下賦值,而不清楚另一種情況下怎么辦;z變量在switch的其它情況下也不知道該怎么辦(switch沒有otherwise)。在執行時MATLAB都會報錯。x變量雖然也沒有在if對應的else條件中賦值,但其已經提前賦值“x=a”,這樣在else時會默認保留原值,該變量滿足Variable Availability。

文章來源:FPGADesigner的博客

*本文由作者授權轉發,如需轉載請聯系作者本人

創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的matlab相语法,学会System Generator(10)——支持的MATLAB语法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。