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

歡迎訪問 生活随笔!

生活随笔

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

循环神经网络

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

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

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

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

MCode block特性

MCode用于在Simulink環(huán)境下執(zhí)行MATLAB函數(shù)。MCode的名稱與管腳即為函數(shù)名稱與函數(shù)接口。在將System Generator設(shè)計導(dǎo)出到FPGA時,軟件會將MATLAB代碼轉(zhuǎn)換為對應(yīng)的HDL模型。MCode經(jīng)常用于實現(xiàn)一些簡單的算法功能、有限狀態(tài)機和控制邏輯。

調(diào)用的MATLAB函數(shù)必須遵循以下三條基本規(guī)則:

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

至少包含一個輸出;

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

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

支持的MATLAB語法

1.所支持的MATLAB語法結(jié)構(gòu)包括:

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

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

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

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

關(guān)系運算符(、>=、==、~=)

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

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

xfix數(shù)據(jù)類型

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

使用關(guān)系運算符得到的結(jié)果是布爾類型;

布爾變量不能進行算術(shù)操作;

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

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

x = xfix(type_spec, value);

value為待轉(zhuǎn)換的數(shù),type_spec為轉(zhuǎn)換后的數(shù)據(jù)類型。比如將浮點數(shù)π轉(zhuǎn)換為xfix類型:

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

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

xl_state狀態(tài)變量

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

狀態(tài)變量在MATLAB中需要用persistent關(guān)鍵詞和xl_state函數(shù)定義,如下所示:

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

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

確保變量被正確轉(zhuǎn)換

MATLAB是一種順序執(zhí)行代碼,眾所周知,HDL代碼是并行執(zhí)行的代碼。為了能讓MATLAB代碼成功的轉(zhuǎn)換為HDL模型,就要確保MATLAB用到的變量也能正確的轉(zhuǎn)換(原文檔描述為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)。在執(zhí)行時MATLAB都會報錯。x變量雖然也沒有在if對應(yīng)的else條件中賦值,但其已經(jīng)提前賦值“x=a”,這樣在else時會默認保留原值,該變量滿足Variable Availability。

文章來源:FPGADesigner的博客

*本文由作者授權(quán)轉(zhuǎn)發(fā),如需轉(zhuǎn)載請聯(lián)系作者本人

創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎勵來咯,堅持創(chuàng)作打卡瓜分現(xiàn)金大獎

總結(jié)

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

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。