91精品一区二区三区久久久久久_欧美一级特黄大片色_欧美一区二区人人喊爽_精品一区二区三区av

位置:51電子網 » 技術資料 » 通信網絡

利用S函數實現自編模塊

發布時間:2008/12/17 0:00:00 訪問次數:1529

  有些過程用普通的simulink模塊不容易搭建,可以利用s函數編程來實現所需要的模塊,s函數可以極大地擴展simulink的功能,使得simulink的仿真變得更靈活、更強大。

  s函數是一種采用matlab或c語言編寫,用以描述動態系統行為的算法語言。它采用一種特殊的調用規則,從而讓用戶能夠同simulink自身的方程求解器進行交互,這種交互過程同simulink本身標準模塊的工作機制幾乎完全相同。

  要使用s函數,必須了解simulink的工作機制。simulink在仿真過程中每隔一段時間就會對模型中的所有模塊進行調用,每個模塊在調用過程中都會完成諸如輸出信號的計算、內部狀態變量的更新及其導數的計算等工作。而仿真開始和結束時刻的調用將完成該模塊的初始化和掃尾工作。

  simulink在仿真過程中反復調用s函數,在調用過程中,simulink將調用s函數子程序,這些子程序將完成一下工作:

  (1)在仿真循環開始之前的初始化工作:初始化simstruct結構,其中包含了關于s函數的相關信息;設置輸入輸出端口的數目和大小;設置模塊的采樣周期;分配內存并設置sizes數組。

  (2)下一個采樣時刻的計算:如果設置的是可變步長的積分算法,則計算下一個計算時刻。如果是固定步長,則計算下一個仿真的步長。

  (3)在最大時間步長內計算模塊的輸出。這一步完成以后,模塊所有的輸出都變成有效值。

  (4)在最小時間步長內更新離散狀態。

  (5)積分過程,這一步一般是針對連續系統而言的。

  s函數的引導語旬為:[sys,x0,str,ts]=f(t,x,u,flag,p1,p2,…)。從源程序角度來看,simulink將t,x,u,flag,p1,p2等參數傳遞給s函數,同時需要s函數返回sys,x0,str,ts四個向量。它們的具體含義是:

  t:目前仿真中的實際時間。

  x:狀態向量,可能為空。

  u:輸入向量。

  flag:表明simulink不同仿真狀態的標志量。

  sys:依據flag的不同返回不同的結果,如flag=3,sys返回s函數的輸出。

  x0:初始狀態值,如果沒有狀態變量,則為空向量,在flag=0時忽略。

  str:保留為將來使用,必須設置為空矩陣。

  ts:兩列矩陣,記錄采樣時間和模塊的延時時間。

  在m文件形式的s函數中,simulink將一個flag的參數傳遞給s函數,該參數存儲了目前仿真的狀態,我們必須為每一個flag的值編寫適當的函數。表列舉了仿真的不同狀態下flag的具體以及調用的s函數。

  表 不同仿真階段下flag的具體值以及調用的s函數

  編碼實現時,在各個狀態對應的函數下編寫相應的功能程序即可。本文就是通過這種方法實現了差動雙相碼、差動碼和彌勒碼的構建。

  1. 差動雙相碼的編碼和解碼

  差動雙相碼的編碼規則是:在半個位周期中的任意邊沿表示二進制“0”,而沒有邊沿表示二進制“1”。此外,在每一個位周期開始時,電平都要反向。因此,這種碼對接收端來說,位節拍比較容易重建。

  根據上述內容,結合差動雙相碼的編碼格式,設計的s函數如下:

  可以用與編碼過程類似的方法編程實現差動雙相碼的解碼。解碼的思路為:如果這一時刻的輸入與上一時刻的輸入相同譯作“0”,否則譯作“1”,由于其滯后性,引入一個位延時。設計的s函數如下:

  將以上的s函數封裝成模塊并進行仿真,仿真模型和仿真結果如圖1所示。

  圖1 差動雙相碼的編解碼仿真模型與仿真波形

  2. 差動碼的編碼與解碼

  與差動雙相碼的編解碼思路相似,根據差動碼的編碼規則可設計出其編解碼的s函數。將其封裝成模塊并進行仿真,仿真模型和仿真結果如圖2所示。

  圖2 差動碼的編解碼仿真模型與仿真波形

  3. 米勒碼的編碼與解碼

  米勒碼的編碼規則是在半個位周期內的任意邊沿表示二進制“1”,而經過下一個位周期中不變的電平表示二進制“0”。一連串的零在位周期開始時產生電平交變。解碼時在某位的中間看此時的輸入是否與上一時刻相同,相同譯做“0”,否則譯做“1”。同樣,用s函數來設

  有些過程用普通的simulink模塊不容易搭建,可以利用s函數編程來實現所需要的模塊,s函數可以極大地擴展simulink的功能,使得simulink的仿真變得更靈活、更強大。

  s函數是一種采用matlab或c語言編寫,用以描述動態系統行為的算法語言。它采用一種特殊的調用規則,從而讓用戶能夠同simulink自身的方程求解器進行交互,這種交互過程同simulink本身標準模塊的工作機制幾乎完全相同。

  要使用s函數,必須了解simulink的工作機制。simulink在仿真過程中每隔一段時間就會對模型中的所有模塊進行調用,每個模塊在調用過程中都會完成諸如輸出信號的計算、內部狀態變量的更新及其導數的計算等工作。而仿真開始和結束時刻的調用將完成該模塊的初始化和掃尾工作。

  simulink在仿真過程中反復調用s函數,在調用過程中,simulink將調用s函數子程序,這些子程序將完成一下工作:

  (1)在仿真循環開始之前的初始化工作:初始化simstruct結構,其中包含了關于s函數的相關信息;設置輸入輸出端口的數目和大小;設置模塊的采樣周期;分配內存并設置sizes數組。

  (2)下一個采樣時刻的計算:如果設置的是可變步長的積分算法,則計算下一個計算時刻。如果是固定步長,則計算下一個仿真的步長。

  (3)在最大時間步長內計算模塊的輸出。這一步完成以后,模塊所有的輸出都變成有效值。

  (4)在最小時間步長內更新離散狀態。

  (5)積分過程,這一步一般是針對連續系統而言的。

  s函數的引導語旬為:[sys,x0,str,ts]=f(t,x,u,flag,p1,p2,…)。從源程序角度來看,simulink將t,x,u,flag,p1,p2等參數傳遞給s函數,同時需要s函數返回sys,x0,str,ts四個向量。它們的具體含義是:

  t:目前仿真中的實際時間。

  x:狀態向量,可能為空。

  u:輸入向量。

  flag:表明simulink不同仿真狀態的標志量。

  sys:依據flag的不同返回不同的結果,如flag=3,sys返回s函數的輸出。

  x0:初始狀態值,如果沒有狀態變量,則為空向量,在flag=0時忽略。

  str:保留為將來使用,必須設置為空矩陣。

  ts:兩列矩陣,記錄采樣時間和模塊的延時時間。

  在m文件形式的s函數中,simulink將一個flag的參數傳遞給s函數,該參數存儲了目前仿真的狀態,我們必須為每一個flag的值編寫適當的函數。表列舉了仿真的不同狀態下flag的具體以及調用的s函數。

  表 不同仿真階段下flag的具體值以及調用的s函數

  編碼實現時,在各個狀態對應的函數下編寫相應的功能程序即可。本文就是通過這種方法實現了差動雙相碼、差動碼和彌勒碼的構建。

  1. 差動雙相碼的編碼和解碼

  差動雙相碼的編碼規則是:在半個位周期中的任意邊沿表示二進制“0”,而沒有邊沿表示二進制“1”。此外,在每一個位周期開始時,電平都要反向。因此,這種碼對接收端來說,位節拍比較容易重建。

  根據上述內容,結合差動雙相碼的編碼格式,設計的s函數如下:

  可以用與編碼過程類似的方法編程實現差動雙相碼的解碼。解碼的思路為:如果這一時刻的輸入與上一時刻的輸入相同譯作“0”,否則譯作“1”,由于其滯后性,引入一個位延時。設計的s函數如下:

  將以上的s函數封裝成模塊并進行仿真,仿真模型和仿真結果如圖1所示。

  圖1 差動雙相碼的編解碼仿真模型與仿真波形

  2. 差動碼的編碼與解碼

  與差動雙相碼的編解碼思路相似,根據差動碼的編碼規則可設計出其編解碼的s函數。將其封裝成模塊并進行仿真,仿真模型和仿真結果如圖2所示。

  圖2 差動碼的編解碼仿真模型與仿真波形

  3. 米勒碼的編碼與解碼

  米勒碼的編碼規則是在半個位周期內的任意邊沿表示二進制“1”,而經過下一個位周期中不變的電平表示二進制“0”。一連串的零在位周期開始時產生電平交變。解碼時在某位的中間看此時的輸入是否與上一時刻相同,相同譯做“0”,否則譯做“1”。同樣,用s函數來設

相關IC型號

熱門點擊

 

推薦技術資料

耳機的焊接
    整機電路簡單,用洞洞板搭線比較方便。EM8621實際采... [詳細]
版權所有:51dzw.COM
深圳服務熱線:13692101218  13751165337
粵ICP備09112631號-6(miitbeian.gov.cn)
公網安備44030402000607
深圳市碧威特網絡技術有限公司
付款方式


 復制成功!
雅安市| 策勒县| 新干县| 卓尼县| 钟祥市| 定陶县| 饶河县| 栖霞市| 沅江市| 陈巴尔虎旗| 都兰县| 陆丰市| 青浦区| 临洮县| 平邑县| 琼中| 卢湾区| 赞皇县| 双峰县| 达拉特旗| 金沙县| 天祝| 浦江县| 富源县| 石狮市| 盱眙县| 舟山市| 肥东县| 临高县| 谢通门县| 合阳县| 汕尾市| 桦南县| 五原县| 加查县| 曲水县| 泸溪县| 高清| 化州市| 收藏| 田林县|