SigmaStudio是一款圖形化的DSP工程開發工具,其控件庫中包含了豐富的DSP控件資源,然而,用戶也可以自行使用彙編語言設計開發屬於自己的控件,在必要時導入使用。
(一)安裝設計控件
1、到官網下載DesignerNew.dll
2、將下載的dll複製到SigmaStudio的安裝路徑下面
3、打開SigmaStudio,選擇Tools -> Add-Ins Browser ->Add DLL,將剛纔的DesignerNew.dll添加進去
4、新建工程,在TreeToolBox窗口展開 Designer Controls -> Algorithm Design -> New Designer Control,可以看到新添加的用戶控件
5、編輯控件,將New Designer Control拖出來,右鍵點擊,Show Design window,輸入以下代碼並保存,這時一個基本的控件便設計完成。
START_CELL
$region Generated Code
// This is generated code.
// Do not edit code in this area it may be deleted.
// You may move code out of this region safely
$inpin data(DM1,1) InPin1;
$outpin data(DM1,1) OutPin1;
$inpin data(DM1,1) InPin2;
$endregion
module @inst
{
data gain_left = 0.5;
data gain_right = 0.5;
//load 2 inputs
X0 = DM1(P14 + InPin1);
X1 = DM1(P14 + InPin2);
//load gains
Y0 = DM[gain_left];
Y1 = DM[gain_right];
//multiply and sum:A0 = X0*Y0 + X1*Y1
A0 = [X0 X1].[Y0 Y1];
nop;
//write output
DM1(P14 + OutPin1) = A0;
}
(二)彙編語言在SigmaStudio中的使用
1、所有寄存器關鍵字只有大寫有效,例如X0;而變量類型關鍵字則只有小寫有效;指令則大小寫皆可,例如nop/NOP
2、常用指令集命名
Data Registers
X0.......X7 X寄存器從0到7
Y0.......Y7 Y寄存器從0到7(ADAU14X系列DSP包含8個X寄存器和8個Y寄存器)
XY0......XY7 X寄存器和Y寄存器共同儲存複雜的數據
[X0X1]......[X6X7] 存儲雙精度數據或者並行指令
Accumulator Registers
A0.G ...... A7.G A寄存器的保護部分(16位)
A0.H ....... A7.H A寄存器的高位部分(32位)
A0.L ....... A7.L A寄存器的低位部分(32位)
Memory Pointer Registers(DAGs)
P0 ...... P15 地址寄存器0到15(等同於P#.I)(16位)
P0.B ...... P15.B 基本寄存器0到15
P0.L ...... P15.L 長度寄存器0到15
P0.L ...... P15.M Modify 寄存器0到15
Memory
DM0 Data memory 0
DM1 Data memory 1
PM Program memory
cli / CLI 失能內核中的所有中斷
sti / STI 使能內核中的所有中斷