89
RFFPGA 直流馬達實驗手冊 俊原科技技術手冊 Version 1.0

RFFPGA 直流馬達實驗手冊juniortek.com.tw/program/manual/RF-DC-mal.pdf · em_demo模組 em_dcm 直流伺服馬達 dc電源 rffpga 系統的直流馬達實驗規劃 其中包括:

  • Upload
    others

  • View
    9

  • Download
    0

Embed Size (px)

Citation preview

Page 1: RFFPGA 直流馬達實驗手冊juniortek.com.tw/program/manual/RF-DC-mal.pdf · em_demo模組 em_dcm 直流伺服馬達 dc電源 rffpga 系統的直流馬達實驗規劃 其中包括:

RFFPGA 直流馬達實驗手冊

俊原科技技術手冊

Version 10

目錄

1實驗規劃 3

2馬達驅動界面 5

3實驗項目 18

4安裝程序 19

5執行程序 20

6實驗說明 22

61 實驗 1-開迴路的電壓控制 33

62 實驗 2-閉迴路的速度控制 39

63 實驗 3-閉迴路的位置控制 44

64 實驗 4-加減速的位置控制 48

65 實驗 5-正弦波的位置控制 52

7組合語言說明 56

71 加減速控制模組63

72 光電盤輸入模組65

73 PWM輸出控制模組 66

74 PD控制模組 67

8附錄快速安裝說明 69

ii

1實驗規劃

在光纖網路通訊 FPGA 發展系統中關於 DC馬達實驗模組的配置規劃如下

e M _ U S B模 組光 纖網 路

U S B e M _ F P G A卡

e M _ D E M O模 組

e M _ D C M 直 流 伺 服 馬 達

D C電 源

RFFPGA系統的直流馬達實驗規劃

其中包括

1標準的 RFFPGA控制器配置包括電源模組和以使用 USB 為連線界面的個人電腦

226P 外接模組中透過 JP4 26PIN 轉 25PIN 排線中接上 eM_DCM 模組伺服界面

用以連接驅動級和馬達回授控制直流馬達

3實驗結果以 FPLC 人機圖控軟體做示波器和邏輯分析儀功能觀測

光纖網路通訊 FPGA 發展系統的系統配置圖如下

個人電腦(Windows) eM_USB模組

0 USB

eM_USB模組 1

光纖網路

eM_USB模組 2

eM_USB模組 30

3

其中

1基本模組為 eM_USB模組可用 USB界面和個人電腦連線並提供 USB對光纖網路的轉換功能使得個人電腦可以獨立控制光纖網路中的每個網路節點

2eM_USB模組也可以作為光纖網路中的網路節點透過光纖網路而接受個人電腦的

監控 3就個人電腦而言不論是 USB界面直接連結或是以光纖網路間接連結的 eM_USB模組都是可以直接監控的網路節點最多可以同時控制一個 USB節點和 30個網路節點

4對於每一個網路節點個人電腦都可執行 eM_USB模組中 FPGA的電路下載工作並在適當的 FPGA電路配合下可執行 eM_USB模組中 FPGA內部電路的讀寫控制 5透過適當的 FPGA電路設計各網路節點都可透過光纖網路和其他任何網路節點

作同步通訊執行 FPGA內部記憶體的資料交換資料交換頻率可達 1KHz以上 6當然也就是一部個人電腦可同時監控 31個直流伺服馬達控制狀況

4

2馬達驅動界面

馬達的控制需要高速的動態響應能力是 DSP 核心的重要應用方向本實驗中建立馬達

驅動器的界面包括 PWM 的驅動控制以及光電盤的解碼和計數提供馬達控制實驗的設

計基礎

設計說明 直流馬達

直流馬達屬於扭力控制結構的電機機械其轉子磁場和定子磁場相互垂直

扭力控制結構

L1

L2

N

SN S

轉子

定子

當轉子和定子磁場相互垂直時就會產生扭力而讓轉子旋轉但是一旦旋轉到 90o使

得磁場平行時馬達就會失去扭力而停止了轉動為了使馬達持續不停的旋轉直流馬

達中設計了很特殊的電樞結構讓轉子不論旋轉到任何角度轉子磁場和定子磁場永遠

保持垂直

N S

電樞示意圖

在轉子在每一瞬間都只有和定子垂直的那組線圈能夠導通所以無論轉子轉到任何角

度直流馬達永遠都能保持垂直磁場的狀態

在垂直磁場的狀態下只要能控制轉子電流就能控制磁場的大小也就能控制馬達的

扭力了由於定子磁場不變只有電樞的電流可以控制就可以簡化成下面的直流馬達

符號

直流馬達符號

5

電壓驅動模式

直流馬達的驅動方式有電壓驅動和電流驅動兩種

1電流驅動的方式是控制扭力電流越大扭力越大電流越小扭力越小 2電壓驅動的方式是控制轉速電壓越高轉速越高電壓越低轉速越低 3電流和扭力的關係比較線性也不受外界干擾影響 4電壓和轉速的關係比較不線性也比較容易受負載的干擾

電流驅動比較符合扭力控制模式控制效果比較直接但是相對的電路成本也較高電

壓驅動電路比較簡單控制效果雖然沒有電流驅動的響應好但是仍能維持相當不錯的

水準因此大部分低價產品還是選擇電壓驅動模式

電流驅動方式 電壓驅動方式

+-

一個最簡單的電壓驅動電路就是以運算放大器為基礎的線性驅動電路其電路方塊圖如

線性電壓驅動

VinVout

V+

V-

線性放大器

線性放大器的特性非常理想其電壓輸出 Vout 和電壓輸入 Vin 成正比也不受其他環

境因素所干擾輸出正電壓馬達就正轉輸出負電壓馬達就反轉但是線性放大器的能

量效率卻是非常不理想以下圖為例

VinVout

V+

V-

線性放大器

=5V

=+15V

=-15V

1A

1A

6

假設在某種轉速下馬達需要的電壓輸出為 5V而電流為 1A那麼就產生了(5V1A=5W)

的功率輸出由於線性放大器的電流完全由電源供應器提供所以電源電流也是 1A在

15V 的電源電壓下驅動級的功率為(15V1A=15W)當有 15W 的功率進入驅動級而只

有 5W 的功率流出驅動級代表其中 10W 的功率浪費掉了在能量不滅的定律下功率

是不會憑空消失的這意味著這 10W 的功率已經變成了熱能使得驅動級發燙起來還

得另外設法散熱

在兩種狀況下會造成最小的功率消耗一種是最大電壓輸出(全開)狀況一種是零電

流輸出(全關)狀況說明如下

1當最大電壓輸出時假設輸出電壓為 15V輸出電流為 1A則 輸出功率為(15V1A=15W) 輸入功率為(15V1A=15W) 所以驅動級的消耗功率為(15W-15W=0W) 2當零電流輸出時假設輸出電壓為 0V輸出電流為 0A則 輸出功率為( 0V0A=0W) 輸入功率為(15V0A=0W) 所以驅動級的消耗功率為(0W-0W=0W)

當然真實的電路不會那麼理想但是這種特殊工作點的選擇的確會讓驅動電路變得非

常有效率

PWM 脈寬調變

脈寬調變電路(Pulse Width Modulation簡稱 PWM)就是利用全開和全關的兩種最佳效

率點所設計的電路

就 PWM 驅動器本身而言只有全開和全關的兩種控制模式假設我們還是需要 5V 和 1A

的輸出控制需求那麼就可以控制全開的比率(即工作率 Duty-Cycle)為 13 週期使得

輸出的平均電壓維持在 5V 的準位如下圖所示

Vin Vout

V+

V-

線性放大器

因為輸出只有全開或全關的兩種狀態如果再使用昂貴的線性放大器就太浪費了這時只要用

最簡單的開關放大器就可以辦到了最基本的開關放大器有下述兩種

7

V+

單向控制

V+

A

AB

B

A雙向控制

單向控制結構只能控制直流馬達做單方向的運轉而由 PWM 控制馬達的轉速雙向控制

在速度之外還可以控制馬達作正反轉通常用來執行直流馬達的位置控制用

PWM 的控制波形非常簡單就是產生一組平均值為指定電壓的波形也就是控制所謂的

工作率(Duty-Cycle)定義如下

平均電壓 = Ton (Ton + Toff) 電源電壓 = 工作率 電源電壓

但是由於波形上的微小差異細分起來還是有下面三種型式

前緣對齊型

10 1010

30 30 30

50 50 50

中間對齊型 後緣對齊型

如果只有一組 PWM 波形輸出無論採用哪種波形都沒有差異只有當多個 PWM 波形要同

時輸出(例如交流馬達作三相控制)時才需要選擇中間對齊的型式作處理以免造成相

位失真的現象

在電路設計上都是產生一組參考波來和電壓命令作比較當電壓命令大於參考波時就

送出 1小於參考波時就送出 0如此就形成 PWM 波形其差別只是採用何種參考波作

比較

前緣對齊型

70

中間對齊型 後緣對齊型

70

以上圖為例要產生前緣對齊型的 PWM 訊號就採用遞增型鋸齒波若採用遞減型鋸齒

波就會產生後緣對齊型的 PWM 訊號採用前後對稱的三角波就會產生中間對齊型的

PWM 訊號

8

PWM切換保護

對於單一線圈的負載而言PWM切換電路的電路方塊圖如下

負載

正電源

負電源

PWM+

PWM-

P

N

其中

1以兩組電晶體來分別控制正負電源其中的電晶體依據功率需求可選擇功率電晶體

MOSFET或是 IGBT不論哪種選擇其控制原理都一致 2將 PWM訊號分成正向和反向的兩組控制訊號PWM+控制正電源的導通與否而

PWM-控制負電源的導通與否 3切換組合包括 P=OFFN=OFF負載和電源隔離 P=ON N=OFF負載連接上正電源 P=OFFN=ON 負載連接上負電源 P=ON N=ON 正負電源短路這時功率驅動級將瞬間燒毀

原則上只要將 PWM+和 PWM-間的邏輯反向是不可能發生兩者都 ON 的情況但是再考慮

功率電晶體(包括電晶體MOSFET 和 IGBT)的暫態響應電晶體 OFF 的反應時間通常比

電晶體 ON 的反應時間要長一些所以在切換瞬間很可能產生兩者都導通的瞬間狀態

這時可能有兩種結果

1兩者同時導通的時間稍長時功率驅動級將瞬間產生過電流而燒毀 2兩者同時導通的時間非常短這時功率驅動級雖不至於瞬間燒毀但是會產生很高

的熱量使得功率驅動級的溫度快速加高甚至於因為過熱而燒毀

因此 PWM 控制必須加上切換保護其示意圖如下

PWM+ PWM-

切換保護

其中

1基本上PWM-只是 PWM+的反向訊號兩者都由一組 PWM訊號控制 2但是在 ONOFF 切換的瞬間必須加上一段兩者都 OFF的時間這段時間的長度

可依照功率電晶體的 ONOFF特性來設定在 1us~4us之間

9

PWM 啟動保護

在系統開機時很不容易保證各個元件都能依照順序依序啟動因此在系統啟動時必須

自動將 PWM 輸出關掉直到系統完成整個開機程序後才能再將 PWM 訊號重新啟動一

般而言啟動程序如下

1系統開機後功率驅動級通常最快啟動這時 PWM必須保持在 OFF 狀態避免系

統誤動或短路 2之後依次啟動 BIOSLinux網路最後才啟動應用程式 3應用程式啟動後必須依序 A下載 FPGA B下載 DSP控制軟體 C啟動 DSP控制軟體 在啟動 DSP控制軟體後才能重新開啟 PWM的動作 4任何時間中只要 DSP控制停止就必須立刻關閉 PWM控制以避免誤動或短路

所以 PWM 啟動保護是由 DSP 程式直接控制其必要程序包括

1FPGA電路下載完畢並執行工作中 2DSP程式下載完畢並執行工作中

其中任何一個部分停止都必須立刻關閉 PWM 控制一般而言這部分電路都由看護犬

(watch-dog)電路管理而由 DSP 程式負責驅動

DCM 實驗模組

DCM 模組是一個完整的直流馬達實驗機台系統方塊圖如下

YA1

切換保護

YA2

YC0

馬達

PHTA PHTB

PWM+

DIS

YA0 PWM-

+12VSW

YC1

JP4 A

AB

B

雙向控制

光電盤

A

B

其中

1採用雙向控制的 PWM功率驅動級來驅動直流馬達可控制馬達正反轉 2功率驅動級中已有切換保護其控制訊號包括

10

PWM+ PWM- DIS 直流馬達 X X 1 OFF 1 0 0 正電壓驅動 0 1 0 負電壓驅動

3功率驅動級中並沒有啟動保護所以必須附加電源開關作手動控制 4馬達轉角由光電盤的 AB相訊號作回授 5所有控制訊號都經由 JP4接頭接到 RFFPGA控制器中可由 FPGA作控制

三角波產生器

實驗中以中間對齊型的 PWM 訊號為控制目標首先建立對稱的三角波作為參考訊號其

對映的 VHDL 程式範例如下

TRIANGLE_WAVE block signal Q STD_LOGIC_VECTOR (11 downto 0) signal CEDIR STD_LOGIC begin process (CLKRESET) -- sequential logic begin if RESET=1 then --reset Qlt=000000000111 --reset to 7 elsif CLKevent and CLK=1 then --CLK=gt1 trigger if CE=1 then --clock enable if DIR=0 then Qlt=Q+1 --up counter else Qlt=Q-1 --down counter end if end if end process -- combinational logic CE lt= SYSTEM(0) --24MHz clock DIR lt= SYSTEM(13) --4KHz square wave REF lt= Q --12-bit reference (7~3079) end block TRIANGLE_WAVE 其中

1程式設計為可適用於不同的系統時鐘包括 49152MHz和 24576MHz 兩種型式 2計數器的基本頻率為 24576MHz所以用 CE=SYSTEM(0)來控制計數動作 3三角波的頻率設為 4KHz所以計數器的峰值為(2457642=3072) 4正反計數器和系統時序同步而以 SYSTEM(13)做為同步控制由於 SYSTEM(13)為 4KHz的方波設定 DIR=SYSTEM(13)即可控制計數器的上升或下降

5在 RESET時將計數器的初值設為 7使得計數範圍修正為 7~3079所以即使有些同步誤差也不會產生負數輸出的嚴重影響

6三角波以 REF[12]作輸出數值範圍在 7~3079之間頻率為 4KHz

11

如果 PWM 的頻率過低馬達端會產生震動噪音這時就必須提高 PWM 的頻率在前面程

式中如果要將 PWM 頻率從 4KHz 提升為 8KHz則可更改如下

if DIR=0 then Qlt=Q+2 --up counter else Qlt=Q-2 --down counter DIR lt= SYSTEM(12) --8KHz square wave 其中

1將 DIR改由 8KHz的 SYSTEM(12)來控制 2同時將計數器改成+2-2的正反計數器 3如此仍然能夠維持 REF輸出的數值範圍(7~3079)

如果還要再將 PWM 的頻率提高到 16KHz則可更改如下

if DIR=0 then Qlt=Q+4 --up counter else Qlt=Q-4 --down counter DIR lt= SYSTEM(11) --16KHz square wave 其中

1將 DIR改由 16KHz的 SYSTEM(11)來控制 2同時將計數器改成+4-4的正反計數器 3如此仍然能夠維持 REF輸出的數值範圍(7~3079)

表面上三角波產生器的數值精度為 12-bit時間精度為 24MHz但是由於 PWM 訊號將

透過 FPGA2 輸出而高速串列界面的更新速度為 15MHz所以就 DCM 模組所收到的 PWM

控制訊號而言其時間精度將降低為 15MHz而數值上的精度將降低為 8-bit等效範

圍為 0~192 或是+-96 之間整體而言控制上的精度約為 05仍可符合馬達控制的

需求

PWM 波形產生器

接著處理比較的動作並產生 PWM 波形對映的 VHDL 程式範例如下

PWM_COMPARATOR block signal CEPUPD STD_LOGIC signal D0D1D2D3D4 STD_LOGIC begin process (CLK) -- sequential logic begin if CLKevent and CLK=1 then --CLK=gt1 trigger if CE=1 then --CLK enable D4lt=D3 D3lt=D2 D2lt=D1 D1lt=D0 --delay end if end if

12

end process -- combinational logic CE lt= CLK1M D0 lt= 1 when CMDgtREF else 0 --PWM generation PU lt= D1 and D2 and D3 and D4 --up-side output PD lt= not D1 and not D2 and not D3 and not D4 --down-side output PWMU lt= PU --up-side PWM output PWMD lt= PD --down-side PWM output PWMI lt= (not PU and not PD) or not ENB --PWM disable PWMR lt= REF --PWM reference end block PWM_COMPARATOR

程式中所對映的時序如下

CE

REF

CMD

D1D2D3D4PWMUPWMDPWMI

其中

1以 15MHz的 CE訊號為基本頻率 2將電壓命令 CMD和參考波形 REF作比較若 CMDgtREF則設定 D0=0否則設定

D0=1 3將 D0訊號作四次的延遲處理延遲訊號依序為 D1D2D3D4最後再重新組合成

PWM的輸出波形 4其輸出訊號包括 PWMU對映到 DCM模組中的 PWM+訊號 PWMD對映到 DCM模組中的 PWM-訊號 PWMI對映到 DCM模組中的 DIS訊號為切換保護訊號 如此 PWMU作動和 PWMD作動之間將有 2us間隔中是兩者都不作動的也就是

PWMI的作動時間 5當 ENB命令=0時設定 PWMI=1而使得驅動器 OFF

13

回授訊號的處理

精密的伺服馬達動作必須將馬達的位置和速度加以量測後再執行回授控制因此速

度和位置的量測是精密控制中必要的一環我們通常用光電寫碼器或數位尺來進行量測

工作

光電寫碼器(Photo-Encoder)俗稱光電盤是利用光電量測進行的非接觸式數位量測元

件其基本裝置如下

LED光源

光電晶體偵測

以 LED 或是其他光源來發光而用 AB 相的兩組光電晶體來偵測當圓盤隨著馬達作轉

動時光電晶體即可偵測到其移動狀態由於圓盤中的小孔呈等距排列其透光部分和

不透光部分呈 50對 50的比例當圓盤轉動時光電晶體端就可以偵測到下述訊號

光電盤訊號(A 相)

光電盤訊號(B 相)

正轉

其中

1偵測方波的頻率即對應於圓盤轉動的頻率也就是轉速 2偵測方波的個數即對應於圓盤轉過的孔數也就是轉角(相對角度) 3由於 AB相的兩組光電晶體在機械安裝上的角度不同使得讀出訊號也有 90 度的

差異如果馬達正轉則 A相超前如果馬達反轉則 B相超前

有了兩相的光電盤訊號只要能偵測其中的相位變化就可以分辨光電盤的正反轉運動

了例如正轉時的光電盤時序如下

14

光電盤訊號 (A 相 )

光電盤訊號 (B 相 )

正轉

微分訊號(A+)

微分訊號(A-)

微分訊號(B+)

微分訊號(B-)

正轉脈衝(CW)

其中

1針對 AB 兩相訊號作微分處理即可取得 A+A-B+B-的上緣微分和下緣微分 2將微分訊號和和原有的 AB相訊號作比較即可找出正轉脈衝 3計算正轉脈衝的頻率和個數即可取得馬達的速度和轉角 4如此得到的脈衝數將是原有 AB相頻率的四倍所以稱之為乘四解碼電路

同樣的如果針對光電盤的反轉時序一樣可以得出反轉訊號圖示如下

光電盤訊號(A相)

光電盤訊號(B相)

反轉

反轉脈衝(CCW)

其公式如下

CW lt= (A+ and not B) CCW lt= (A+ and B) or (A- and B) or (A- and not B) or (B+ and A) or (B+ and not A) or (B- and not A) or (B- and A)

整合光電盤回授的處理其系統方塊圖如下

數位濾波

D Q

CK

DLA

PHA

D Q

CK

DLB

PHB

CLK

乘四解碼電路

DIR

PLS

數位濾波

PA

PB

正反計數

CNT DB

RD

CS

包括

15

1首先利用簡單的數位濾波器將 AB項的雜訊排除 2接著利用延遲電路作微分處理並以乘四解碼電路解出轉動的脈波和方向 3最後利用正反計數器作計數並將計數值讀入匯流排

數位濾波器

光電盤的 AB 相訊號中如果產生雜訊干擾的現象會使得馬達轉角的計量上產生永久

性的累積誤差將造成控制上無法彌補的錯誤所以 AB 相訊號上的雜訊一定要盡力排

除下面是常用的數位濾波器設計範例

FILTER_A block -- digital filter for A signal CED0D1D2 STD_LOGIC begin process (CLK) -- sequential logic begin if CLKevent and CLK=1 then --CLK=gt1 trigger if CE=1 then --clock enable D2lt=D1 D1lt=D0 D0lt=PA --delay 3 clocks PHA lt= (D0 and D1 and D2) or ((D0 or D1 or D2) and PHA) end if end if end process -- combinational logic CE lt= CLK1M --15MHz clock end block FILTER_A 其中

1以 15MHz的頻率為控制基準 2利用延遲電路依序產生 D0D1D2的延遲訊號 3連續三個 1(D0D1D2 都是 1)定義為 1連續三個 0(D0D1D2 都是 0)定義為 0而其他不連續的 10 都定義為雜訊如此可將高頻的雜訊濾除

4但是相對的AB相訊號的最高頻率將限制為 250KHz(連續 3個 1和連續 3個 0)頻率過高的 AAB相訊號將被視為雜訊而不處理必須特別注意

正反轉的解碼和計數

依據前面的公式說明對映的 VHDL 程式範例如下

DECODER block signal DLADLB STD_LOGIC begin process (CLK) -- sequential logic begin if CLKevent and CLK=1 then --CLK=gt1 trigger DLAlt=PHA DLBlt=PHB --delay 1-clock end if end if

16

end process -- combinational logic DIR lt= (not PHA and DLA and not PHB) or ( PHA and not DLA and PHB) or (not PHB and DLB and PHA) or ( PHB and not DLB and not PHA) PLS lt= (not PHA and DLA) or (PHA and not DLA) or (not PHB and DLB) or (PHB and not DLB) end block DECODER 其中

1PHAPHB為經過雜訊濾波後的 AB相訊號而 DLADLB是其延遲訊號 2根據乘四解碼電路的公式取得 DIR和 PLS訊號其中 DIR用以控制計數器的正反向 PLS用以控制計數器的計數與否

所以接下去就是正反計數器的設計範例如下

COUNTER block signal Q STD_LOGIC_VECTOR(11 downto 0) begin process (CLKRESET) -- sequential logic begin if RESET=1 then --power-on reset Qlt=000000000000 --reset to 0 elsif CLKevent and CLK=1 then --CLK=gt1 trigger if PLS=1 then --clock enable if DIR=1 then Qlt=Q-1 --down counter else Qlt=Q+1 --up counter end if end if end if end process -- combinational logic CNT lt= Q --counter output end block COUNTER 其中

1這是標準的正反計數器架構在開機時自動復歸 2計數器的長度為 12-bit可依需要自行調整

DCM模組中的光電盤精度為每圈500格經過乘四解碼後相當於每圈2000格所以12-bit

計數器只能處理 2 圈的應用範圍絕對不夠在真正應用時一定要用軟體或硬體的方

式再擴張成 16-bit 或是 32-bit 的寬度來處理才行

17

3實驗項目

在直流伺服馬達控制系統中規劃五個實驗項目由系統首頁做選擇每項實驗操

作整個系統實驗組成由各項實驗項目 CAI 檔及各項實驗項目程式連結 PLC 檔結合而成茲表列如下

直 流 伺 服 實 驗 e x p _d c m c ai

開 環 路 電 壓 控 制

系 統 首 頁 實 驗 程 序

e x p _p w m c ai

開 環 路 速 度 控 制 e x p _s p ee d c a i

閉 環 路 位 置 控 制 e x p _a n gl e c a i

加 減 速 的 位 置 控 制 e x p _a c c c ai

正 弦 波 位 置 控 制 e x p _s i n c ai

C A I 圖 控 檔

直 流 伺 服 實 驗 開 環 路 電 壓 控 制

系 統 首 頁 實 驗 程 序

e x p _p w m p lc

開 環 路 速 度 控 制 e x p _s p ee d p l c

閉 環 路 位 置 控 制 e x p _a n gl e p l c

加 減 速 的 位 置 控 制 e x p _a c c p lc

正 弦 波 位 置 控 制 e x p _s i n p lc

e T T Y 批 次 檔

18

4安裝程序

31 將 RFFPGA中的程式拷貝至工作硬碟中進入 DC子目錄資料夾中其中包含下

列檔案

檔案 內容說明 mod SIN_wave MODPWM_wave MODIIR1_filter MODDAS4

MODPOS_inputMODPWM_outputMODACC_controlMODPD_controlMOD這些檔案是由 ASM重新編譯出由 testDCMmem所需執行模組檔

asm SIN_waveasmPWM_waveasmIIR1_filterasmDAS4asm POS_inDCMasmPWM_outDCMasmACC_conDCMasmPD_controlasm是各模組組合語言所設計 SOURCE檔

plc 為進行實驗所需的各批次檔 bit piDSPv0bit為下載到 FPGA的 BIT檔其功能為將 FPGA規劃成

具備 piDSP控制晶片功能提供直流伺服控制所需的控制程式

撰寫 testDCMsys 記載進行 DCM實驗時所需的模組 testDCMMEM 連結完成的 DSP執行檔用來進行 DCM實驗 testDCMvar 紀錄 DCM實驗時的參數對照表

在進行實驗前先將實驗所需的系統程式與模組程式分別說明加以說明系統所

需的程式模組由 testDCMsys 來描述程式列印如下

module fg1 PWM_wavemod 方波產生器

module fg2 SIN_wavemod 弦波產生器

module cn1 ACC_controlmod 加減速控制器

module cn2 PD_controlmod 比例微分控制器

module io1 POS_inputmod 位置和速度讀值

module io2 PWM_outputmod PWM 電壓輸出界面

module ft1 IIR1_filtermod 一階濾波器

module das das4mod 示波器資料蒐集

module io3 LEDKEYmod LEDKEY 界面

其中包括

1兩組波型產生器作為測試命令包括正弦波和方波 2兩組控制器提供包括加減速PD控制器的功能可依照實驗需求搭配使用 3兩組輸入輸出界面執行 PWM輸出和相位回授的界面處理 4一組低通濾波器作為電壓開迴路控制迴路和速度閉迴路控制的模擬使用 5DAS4mod是示波器專用的配合模組不論任何實驗都必須加入此模組 6Ledmod是四位數字七段顯示與 44矩陣按鍵模組

19

5執行程序

首先進入 RFFPGA 裡子目錄 DC直接點選 fPLCexe 出現下面操作畫面(也可直接將此檔

案放置桌面直接點選)

進入下面操作畫面

20

首先使用滑鼠在 FPGA下載按鈕單擊動作使 FPGA變成 piDSP晶片 如您撰寫組合語言時可使用 eASM按鈕 經編譯完成後產生MOD檔 如您撰寫系統連結程式時可使用 eLINK按鈕 經連結完成後產生MEM與VAR檔 點選實驗三後顯示如下 選擇程式下載再按程式啟動這時直流伺服馬達開始做位置控制在操控畫面放置 P 參數設定欄更改參數時馬達即時隨參數改變而產生不同響應 直接點選程式停止時結束所有控制動作再按回首頁選擇其他實驗

21

6實驗說明

下圖所示為直流馬達的控制系統方塊圖透過電流速度以及位置的回授再搭

配適當的控制器可建立完整的閉迴路控制系統在後面的實驗中將依此一系統方塊圖

逐步建立速度和位置的控制實驗各實驗的說明和操作方式及參考實驗結果將逐一進

行詳細的說明

控制

參考位置

速度 位置速

度控制 電流控制

電力電

子換流

位置速

度感測

i

+ -

壓ν

位置

速度

i

DC直流馬達之控制系統方塊圖

PWM 驅動方式只是簡單的開環路控制而高精度的馬達控制必須透過回授控制來完成

對於邏輯電路的設計者而言必須先瞭解基本的回授控制架構以便將來轉換成實用的

邏輯電路設計

設計說明

開環路特性

在電壓驅動的狀況下直流馬達開環路控制的示意圖如下

+-

22

如果換算成數學模式則轉換成下面的架構

+-Vc

R L

EMF

+

-

ITB

J

ω

其中

1其中的變數和參數包括 Vc 控制的電壓命令 R 電樞迴路的等效電阻 L 電樞迴路的等效電感 EMF電樞產生的反電動勢 i 電樞迴路中的電流 T 馬達所產生的扭力 J 馬達和負載的等效慣量 B 馬達和負載的等效摩擦力 ω 馬達所產生的速度 2所牽涉的物理公式包括 電壓迴路Vc = Ri + L(didt) + EMF 即電樞迴路中的電壓平衡 動力負載T = Bω + J(dωdt) 即扭力平衡 馬達特性T = Kti 所產生的扭力和電流成正比 電機特性EMF= Keω 所產生的電動勢和轉速成正比 其中新增的參數包括 Kt馬達的扭力常數 Ke馬達的反電動勢常數 3將微分項作拉式轉換(Laplase Transformation)的對映即 s = ddt 可將微分方程式轉換成更簡單的代數方程式而產生到下面的控制方塊圖

sL+R1Vc

+-EMF

iKt

TsJ+B1 ω

Ke

4在直流馬達的開環路特性中控制電壓(Vc)時輸入點而馬達轉速(ω)是輸出點即是控制馬達電壓以控制馬達轉速

5基本上馬達的開環路特性是個兩階系統類似於低通濾波器的特性在許多應用 場合其開環路特性還可以再簡化成一階系統方塊圖如下

23

sτ +1

KmVc ω 其中 τ一階系統的時間常數 Km一階系統的穩態增益

採用兩階系統的分析方式雖然會比較精細但是用一階系統來分析則可簡化所有的設計

過程因為這裡的實驗重點是邏輯設計所以在本章中我們都用一階系統作分析

系統響應的要求

就控制系統而言最重要的需求就是系統響應包括

穩態特性通常以穩態誤差為指標即是穩態時系統輸出和輸入之間的差異 暫態特性通常以上升時間(Rise Time)和過越比率(Overshoot)為指標

一個理想中的伺服控制系統其系統響應應該是

1穩態誤差為 0即馬達輸出將追隨輸入作變化沒有誤差 2過越比例為 0即馬達輸出絕對不會產生衝過頭的現象 3上升時間為 0即馬達輸出隨時追上輸入命令不會有控制上的延遲現象

當然這是太理想了一個合理的伺服控制系統應該是

1穩態誤差越小越好最好為 0 2過越比例越小越好最好為 0 3上升時間越短越好當然無法為 0但是盡力就是了

速度的回授控制

回授控制的目的就是為了改善系統響應以一階系統代表的馬達控制為例

sτ+1

KmVc ω

在步階響應(Step Response)時其特性如下

1穩態誤差由 Km決定 2過越比例為 0 3上升時間即是其時間常數(τ)

如果用比例控制器(P 控制器)作速度回授的控制則控制方塊圖如下

sτ+1

KmVc ωKp

err

P控制器 直流馬達ωc

速度回授

速度命令 + 速度響應-

24

其中

1速度命令並不直接控制馬達的驅動電壓而是 A將速度命令和速度回授相比找出其誤差訊號 err B依誤差訊號來控制驅動電壓 誤差越大則驅動電壓越高 誤差越小則驅動電壓越低 誤差為負則驅動電壓也為負 其中的比例關係由 P控制器中的 Kp 來調整 2經由數學分析後其步階響應的特性為 A穩態誤差變成 1(1+kpkm)如果 kpkmgtgt1則穩態誤差將趨近於 0 B過越比例仍為 0 C上升時間即是由τ變成τ(1+kpkm)所以上升時間將變短 3換句話說只要 Kp值夠大不論是穩態誤差或是上升時間都會大幅改善

理論上P控制器的增益是越高越好最好是無限大但是實際上是有限制的原因是

1馬達的開環路特性是兩階系統而非一階系統一階系統只是簡化後的結果 2當兩階系統作高增益的回授控制時當增益過高時會產生極嚴重的過越現象使得

馬達產生巨幅震動而難以控制

所以 P控制器的增益雖然是越高越好但調整時仍要小心維持(過越比例為 0)的條件

轉角的回授控制

做為馬達的速度控制P控制器的效果不錯但是如果將 P控制器應用到馬達的轉角控

制其特性就不太理想圖示如下

sτ+1

KmVc ωKp

err

P控制器 直流馬達

θc

轉角回授

轉角命令 + 轉角響應-

s1 θ

其中

1從馬達的速度到轉角之間具有積分特性即 馬達的轉角是馬達速度的積分結果而 馬達的速度是馬達轉角的微分結果而 2其中的積分特性使得整個系統由一階特性變成兩階特性在兩階系統中當設定高

增益時會產生極嚴重的過越現象使得馬達產生巨幅震動而難以控制 3在 P控制器增益無法提高的狀況之下轉角控制效果將無法獲得改善

雖然 P控制器在轉角控制上的效果並不好但是在控制系統中還是有許多法寶可以選擇

25

其中 PD 控制器就是簡單又有效的一個好方法

從表面上來看PD 控制器比 P控制器多了一個微分項就數學上來看這微分項提供了

一個新零點(Zero)可以調整根軌跡圖的走向就實驗上來說這微分項提供了控制器

的預測功能說明如下

sτ+1

KmVc ωKp+sKd

err

P控制器 直流馬達

θc

轉角回授

轉角命令 + 轉角響應-

s1 θ

1轉角控制中 P控制器的問題是在嚴重的過越現象原因是在 P控制器的作用下只有當回授超過命令時才能做出「負向」的控制但這時已經來不及了因為積分器

中已經累積了過多的能量而無法立刻消失使得馬達轉角衝過了頭 2解決之道就是在回授超過命令之前就必須做出「負向」的控制使得積分器累積

的能量逐步減弱在到達目標時才能立刻煞車才能解除過越現象 3而微分項就是這個預測量因為當誤差量越來越小時其微分項是負值雖然微分

項(D)是負值 當誤差量(P)很大時(P+D)的結果還是正值所以還是「正向」控制 當誤差量(P)漸小時(P+D)的結果變成負值才會開始「負向」控制 換句話說在誤差為 0之前即可啟動負向控制產生煞車作用使得馬達提前減速

而即時停止在目標點上自然就解除過越現象了

所以在 PD 控制器中有兩項調整量其中

1Kp增益提供比例控制部分的增益而 Kd增益提供微分控制部分的增益 2Kp增益控制馬達的趨近速度主要影響的是上升時間 3Kd增益控制馬達的提前煞車主要影響的是過越比例 4在兩者搭配下就有機會得到 很快很短的上升時間同時也 不會產生過越現象

PD 控制器的執行

依據 PD 控制器公式可以建立以數位執行的 PD 控制器如下圖所示

cmdKp

fdk

+

-

err

old

+-

Kd

Z-1

out+

+

26

其中

1利用差分公式來取代 PD控制器中的微分公式定義如下 s ==gt (1-Z-1)DT 其中對映的變數包括 s 微分項 Z-1延遲一個抽樣週期 DT抽樣週期單位為 sec 2就執行面而言Z-1是延遲一個抽樣週期也就是以抽樣週期所控制的暫存器 3在上圖中將命令(cmd)和回授(fdk)相減後得到誤差值(err)再將 err延遲一個抽樣週期成為 old所以(err-old)DT即是微分項

4原始的微分控制公式為(err-old)DTKd必須先除再乘但是因為 DT和 Kd 都是常

數可以預先將 Kd修正成 Kd=(KdDT)那麼公式將修正為(err-old)Kd就只需要一個乘法而不需要除法了

同樣的 PD 控制器可以用許多不同的方法作執行包括

1以軟體方式執行例如在 DSP核心中以組合語言撰寫控制模組 2以硬體方式執行例如在 FPGA中直接設計邏輯電路 3以微碼方式執行以微碼作順序控制執行硬體運算工作

這裡先提供用組合語言撰寫的程式模組作為設計參考其他兩種方法將在後續的實驗中

再陸續作說明

模組程式範例PD_controlasm

local cmd R0 IP gnd 輸入點位置命令(可忽略) local fdk R1 IP gnd 輸入點位置回授(可忽略) local out R2 OP 輸出點用以控制速度迴路 local kp R3 256 參數增益 kp10=256 local kd R4 0 參數增益 kd10=256 local err R5 0 內部變數 local old R6 0 內部變數 local gnd R7 0 無輸入時的短路點 data 8 模組變數區長度 initial 開機啟動程序 WR out0 WR old0 RET out=old=0 timer 即時控制程序 RD (cmd) SUB (fdk) WR err MUL kp SFR 8 P=(cmd-fdk)kp256 RDS err SUBX old MUL kd SFR 8 D=(err-old)kd256 ADDS WR out out=P+D RET

27

其中

1PD控制模組中對外的界面變數包括 cmd命令的輸入點 fdk回授的輸入點 out控制的輸出點 2內部參數包括 Kp比例控制增益其中 10=256所以乘完後還需要再右移 8-bit Kd微分控制增益其中 10=256所以乘完後還需要再右移 8-bit 3內部變數包括 err臨時性的變數用以儲存誤差值的計算結果 old儲存性的變數用以儲存上一次抽樣控制時的 err值 4模組程式分成三部分包括 變數宣告local和data所宣告的部分 初值設定initial程序中先將 out和 old設定為 0 即時控制timer程序中依序執行 PD控制器中的每個步驟

控制目標的選擇

從字面上來看速度控制就是控制馬達的速度轉角控制就是控制馬達的轉角沒什麼

好討論的但是實際上確有許多問題第一的問題就是什麼是速度和轉角馬達的速

度和轉角如果不作量測如何得知

既然在量測中取得了速度和轉角資料那麼我們所控制的到底是物理學上的速度和轉

sτ+1

KmVc ωKp+sKd

err

P控制器 直流馬達

θc

轉角回授

轉角命令 + 轉角響應-

s1 θ

KxANG

轉角量測

角還是量測上的速度和轉角以下圖為例

其中

1以轉角量測裝置量測轉角例如裝在馬達軸端的光電盤和解碼電路 2轉角的量測輸出是 ANG而 ANG和物理轉角θ之間有 Km的增益關係 3只要 Km值不是 1那麼系統就不再是單位回授 4如果 Km還有非線性或失真現象那麼控制結果也將有非線性或失真現象

這些問題混雜起來會使得控制系統的分析變得更複雜如果要簡單處理就要認同現

實環境直接以量測結果為控制目標如下圖所示

28

sτ+1

KmVc ωKp+sKd

err

P控制器 直流馬達

θc

轉角回授

+-

s1 θ Kx

ANG轉角量測

其中

1直接以量測結果為控制目標將全系統還原成標準的單位回授控制 2所有的非線性或失真現象都進入開環路討論屬於可以補償的部分 3但是控制結果就是「量測上的轉角」而「物理學上的轉角」

量測誤差的問題

轉角θ

量測ANG

對於量測誤差而言最明顯的問題就是量化誤差圖示如下

其中

1以 DCM模組中的光電盤為例精度為每圈 500格經由乘四解碼計數後其等效

精度增加為每圈 2000格 2比(12000)圈更精密的部分都無法響應換句話說振幅越大的控制其相對誤差越

小而振幅越小的控制其相對誤差越大例如 當振幅為(12)圈時其控制誤差量為 01而 當振幅為(120)圈時其控制誤差量為 1 這是標準的的非線性現象

量化誤差不只影響穩態上的精度還會造成非線性的震動問題圖示如下

t

誤差值

+1

-1

其中

1由於量化誤差的問題只有當誤差超過+1或是-1時才會真正偵測到誤差也才

29

會施加控制量作補償 2所以穩態時的誤差將在+1-1之間擺動造成微幅的振動 3量化誤差越大震動越明顯而量化誤差很小時通常不易察覺出震動現象

微分量的計算

伺服系統中有兩處需要用到微分計算包括

1PD控制器中誤差微分量的計算 2速度控制器中速度回授值的量測

在理論上微分公式是(dXdt)相當於 dXdt = (X(n)-X(n-1))DT (當 DT趨近於 0時)

所以當微分計算中的抽樣週期(DT)越短時微分的計算值將越接近理論值但是事實上

卻非如此以下圖為例

t

X

DTDX

其中

1當 X值為等速度運動時其微分量就是其斜率相當於 DXDT 2DT是微分計算中的抽樣週期理論上越短越好但是由於 DX本身的量化誤差

使得這個原則不再成立例如當斜率為 7394時 若 DT=1000則 DX=7394而 DXDT=7394 若 DT=100 則 DX=739 而 DXDT=739 若 DT=10 則 DX=73 而 DXDT=73 若 DT=1 則 DX=7 而 DXDT=7 3換句話說當抽樣週期越短時DX的量化誤差將越明顯而造成微分計算上更嚴

重的誤差

在 DCM 模組中速度量測的量化誤差分析如下

1馬達上的光電盤精度為每圈 500格經過乘四解碼後等效精度為每圈 2000格 2當馬達轉速為 1200RPM而抽樣頻率為 1KHz時對映的速度量測值為 1200(圈分)2000(格圈)60(秒分)1000(DT秒) = 40(格DT) 3換句話說1200RPM的轉速對映到 40的速度量測值即速度單位=30RPM若最

高轉速為 3000RPM則在+-3000RPM的速度範圍內其量化誤差為 05相當於8-bit的 ADC轉換器精度

4對映不同的抽樣頻率的量化誤差表列如下

30

光電盤精度 最高轉速 抽樣頻率 速度單

速度範圍 量化誤差

500PPR 3000RPM 1KHz 30RPM +-100 05 500PPR 3000RPM 2KHz 60RPM +-50 1 500PPR 3000RPM 4KHz 120RPM +25 2

過溢現象的處理

輸入

輸出

32767

-32768

整數運算都有數值範圍限制以 16-bit 整數而言輸入輸出的關係如下

其中

1當超過正負數的上下限時數值會正負顛倒例如 +32768 將會視為 -32768作處理而 +32769 將會視為 -32768作處理依此類推 2換句話說16-bit的整數運算只有在+-32767之間是線性的對映關係而超過這個範圍就是非線性的對映關係

3不但如此還因為正負顛倒的現象使得原來設計的負回授控制將變為正回授控制

而產生非線性的震盪現象 4換句話說只要計算上稍一不慎就會使得原先穩定的系統產生不穩定的震盪結果

為了避免過溢現象所造成的不穩定問題通常控制系統中會利用飽和處理作改善圖示

如下

輸入

輸出

lmtH

lmtL

31

其中

1當超過計算的上限時將固定設為上限值處理而當超過計算的下限時也將固定

設為下限值處理 2這時的整數運算只有在上下限之間是線性的對映關係而超過這個範圍將還是非線

性的對映關係 3雖然如此但是因為沒有正負顛倒的現象所以不再會有負回授變為正回授的問題

而避免了非線性的震盪現象 4換句話說飽和處理是針對過溢現象的妥協處理方案雖然不完全理想但是是可

接受的最佳選擇

下面是對映的組合語言範例

RD x x為輸入端 MIN lmtH 取得 x和 lmtH中的較小值即是作上限保護的工作 MAX lmtL 取得 x和 lmtL中的較大值即是作下限保護的工作 WR y Y為輸出端 其中

1組合語言中提供MAX和MIN的計算其中 MIN lmtH 比較 AX暫存器和 lmtH而將較低值存入 AX暫存器中 MAX lmtL 比較 AX暫存器和 lmtH而將較高值存入 AX暫存器中 2所以直接可用MIN指令作上限保護而以MAX指令作下限保護兩者合併後即是

完整的飽和處理結果

飽和處理通常應用在高位數轉成低位數的場合例如32-bit轉換成16-bit或是16-bit

轉換成 12-bit 等等例如在本實驗中所有的運算都是以 16-bit 整數作處理但是到

PWM 驅動級輸出時卻要轉換成 12-bit精度的 PWM 命令所以必須先用飽和處理以避免

過溢現象造成的不穩定問題

32

61 實驗 1-開迴路的電壓控制 實驗說明以電壓直接控制轉速的開迴路特性可簡化為一階系統處理方塊圖如

sτ+1

v km ωm

其中V 送給驅動器的 PWM電壓命令

ωm馬達的轉動速度可由處理 photo encoder信號所得的位置微分而得 km一階系統的穩態增益 τ一階系統的時間常數即步階響應中的上升時間

為了觀測直流馬達的開環路特性建立下面的測試方塊圖

其中

1所使用的模組包括 FG1方波產生器產生所需的步階測試波形 FT1馬達模擬以一階系統的低通濾波器來執行 IO1光電盤的回授處理可同時取得轉角和速度的量測值 IO2PWM電壓驅動直接驅動直流馬達作控制 Led四位數字七段顯示模組顯示波形信號資料 2測試目標有兩項(P 參數設定欄)包括 A調整方波命令控制直流馬達作開環路的 PWM電壓控制 B調整馬達模擬參數使模擬結果和實驗結果相符以確認開環路特性

33

實驗畫面顯示如下

測試一 開環路的電壓控制 記錄頻道 CH1電壓命令Y1=-300DY=500 CH2模擬速度Y2=-100DY=500 CH3馬達速度Y3=100DY=50 CH4馬達轉角Y4=300DY=50000 實驗參數 FG1kAMP=256電壓命令的測試振幅 FG1kFRQ=150電壓命令的測試頻率 FT1DT =10 馬達模擬參數 FT1KA =500馬達模擬參數

其中

1用示波器功能記錄四個頻道其中 CH2和 CH3重疊顯示以比較模擬速度和量測

速度之間的差異 2由於 Km 不等於 1所以必須調整 CH3的 Y軸單位才能使得 CH2和 CH3的穩態響應部分重疊

3實驗時可以改變 FG1的參數以調整測試方波的振幅和頻率 4可以調整 FT1的參數使得 CH2和 CH3的暫態響應部分重疊

根據實際的測試結果分析如下

2馬達模擬的參數調整到 DT=10而 KA=500根據公式 τ = 40961000dtka 所以上升時間(τ)為 0082秒或是 82ms 3CH2CH3的 Y軸單位並不一致顯然 Km 不等於 1經計算確認 Km=0098

對應之 plc檔程式說明(exp_pwmplc) echo off 畫面顯示開始

run dsp 0 選擇 DSP1

run stop run reset 既有程式停止

run testDCMmem 下載指定程式

das 1 ampfg1out 0 1024 PWM 波形 Volt 設定 DAS 頻道1

das 2 ampft1lp 0 1024 馬達模擬 Volt 設定 DAS 頻道2

das 3 ampio1spd 0 1024 馬達速度 Volt 設定 DAS 頻道3

das 4 ampio1ang 0 1024 馬達角度 Volt 設定 DAS 頻道4

plot select 0 設定示波器頁數

plot xunit 100000 0 設定示波器 X軸

plot yunit 1 500 -300 設定示波器 Y1 軸

34

plot yunit 2 500 -100 設定示波器 Y2 軸

plot yunit 3 50 100 設定示波器 Y3 軸

plot yunit 4 50000 300 設定示波器 Y4 軸

plot trigger 1 0 1 10 設定示波器觸發

plot scope 9 1 2 3 4 設定示波器顯示

module io2 設定 io2 模組

s cmd ampfg1out

module fg1 設定 fg1 模組

s kAmp 256 s kFrq 150

module ft1 設定 ft1 模組

s u ampfg1out s dt 10 s ka 500

module io3 設定 io3 模組

s led ampfg1out

module 回復預設模組

run 1khz 設定抽樣頻率為 4KHz

run start DSP 開始執行

das stop pause 1 DAS 啟動 das start DAS 啟動

echo on 回復正常訊息顯示

使用者可視情況調整一階濾波器的 ka和 dt值使得 ch2和 ch3 兩組波形完全相符

以求得開迴路系統近似的一階轉移函數 CAI操控設計畫面規劃如下(EXP_PWMCAI) page 1 畫面設計

35

page 2 畫面設計 page 3 畫面設計

36

實測響應圖

訊 號 說 明 訊 號 說 明 ch1 方波產生器訊號 ch3 一階濾波器輸出信號 ch2 馬達角速度訊號 ch4 馬達角位置訊號

直流馬達之開迴路電壓控制響應圖

37

以邏輯分析功能觀測直流馬達之光電盤輸入與 PWM輸出信號

38

62 實驗 2-閉迴路的速度控制 實驗說明為了觀測閉迴路的速度控制響應建立下面的測試方塊圖

加入 PD控制後系統閉迴路的轉移函數經適度的簡化仍能約略以一階系統

處理方塊圖如下

sτ+1

u km ωm

其中

u 送給控制器的速度命令

ωm馬達的轉動速度可由處理 photo encoder 信號所得的位置微分而得

km一階系統的穩態增益 τ一階系統的時間常數即步階響應中的上升時間

方塊圖中的模組功能說明如下

1用 fg1 產生測試用的方波速度命令

2將方波速度命令和速度回授訊號送到 PD 控制器方塊中產生電壓控制訊號再透

過 io2 模組將訊號送出給伺服介面

3用 ft1 建立對照用的一階系統可用 IIR1濾波器方塊產生

4將方波命令產生速度命令再觀測 PHT(io1)上的速度值 spd

5調整 IIR1濾波器的參數使得兩組波形完全相符這時 IIR1濾波器就是閉迴路

速度控制的特性其中 km 為增益而τ為上升時間(單位為 sec)

6增益 km 可從示波器中作簡單計算而上升時間(τ=40964000dtka)

7 Led四位數字七段顯示模組顯示波形信號資料

39

對應之 plc檔程式說明(exp_speedplc) echo off 畫面顯示開始

run dsp 0 選擇 DSP1

run stop run reset 既有程式停止

run testDCMmem 下載指定程式

das 1 ampfg1out 0 1024 PWM 波形 Volt 設定 DAS 頻道1

das 2 ampft1lp 0 1024 馬達模擬 Volt 設定 DAS 頻道2

das 3 ampio1spd 0 1024 馬達速度 Volt 設定 DAS 頻道3

das 4 ampio1ang 0 1024 馬達角度 Volt 設定 DAS 頻道4

plot select 0 設定示波器頁數

plot xunit 100000 0 設定示波器 X軸

plot yunit 1 50 -300 設定示波器 Y1 軸

plot yunit 2 50 -100 設定示波器 Y2 軸

plot yunit 3 50 100 設定示波器 Y3 軸

plot yunit 4 50000 300 設定示波器 Y4 軸

plot trigger 1 0 1 10 設定示波器觸發

plot scope 9 1 2 3 4 設定示波器顯示

module io2 設定 io2 模組

s cmd ampcn2out

module fg1 設定 fg1 模組

s kAmp 50 s kFrq 150

module cn2 設定 cn1 模組

s cmd ampfg1out s fdk ampio1spd s kp 0x4000

module ft1 設定 ft1 模組

s u ampfg1out s dt 2 s ka 320

module io3 設定 io3 模組

s led ampfg1out

module 回復預設模組

run 1khz 設定抽樣頻率為 4KHz

run start DSP 開始執行

das stop pause 1 DAS 啟動 das start DAS 啟動

echo on 回復正常訊息顯示

CAI操控設計畫面規劃如下(EXP_speedCAI)

40

page 1 畫面設計 page 2 與 page 3 畫面設計與實驗一 page 2 與 page 3相同畫面 page 4 畫面設計

41

方塊的參數設定 使用者可視情況調整一階濾波器的 ka和 dt值使得 ch2和 ch3 兩組波形完全相符

以求得此一閉迴路系統近似的一階轉移函數或調整 PD控制器中的 kp和 kp值以調整系統之響應 實測響應圖

訊 號 說 明 訊 號 說 明 ch1 方波產生器產生之速度命令 ch3 一階濾波器輸出信號 ch2 馬達角速度訊號 ch4 馬達角位置訊號

42

直流馬達之閉迴路速度控制響應圖

43

63 實驗 3-閉迴路的位置控制 實驗說明為了觀測閉迴路的位置控制響應將直流馬達的回授改為位置訊號

建立下面的測試方塊圖 方塊圖中的模組功能說明如下

1用 fg1產生測試用的方波位置命令 2將方波位置命令和位置回授訊號送到 PD控制器方塊中產生電壓控制訊號再透過 io2模組將訊號送出到伺服介面驅動馬達轉動

對應之 plc檔程式說明(exp_angleplc) echo off 畫面顯示開始

run dsp 0 選擇 DSP1

run stop run reset 既有程式停止

run testDCMmem 下載指定程式

das 1 ampfg1out 0 1024 PWM 波形 Volt 設定 DAS 頻道1

das 2 ampft1lp 0 1024 馬達模擬 Volt 設定 DAS 頻道2

das 3 ampio1spd 0 1024 馬達速度 Volt 設定 DAS 頻道3

das 4 ampio1ang 0 1024 馬達角度 Volt 設定 DAS 頻道4

plot select 0 設定示波器頁數

plot xunit 100000 0 設定示波器 X軸

plot yunit 1 1000 -300 設定示波器 Y1 軸

plot yunit 2 1000 -100 設定示波器 Y2 軸

plot yunit 3 20 100 設定示波器 Y3 軸

plot yunit 4 1000 300 設定示波器 Y4 軸

plot trigger 1 0 1 10 設定示波器觸發

44

plot scope 9 1 2 3 4 設定示波器顯示

module io2 設定 io2 模組

s cmd ampcn2out

module fg1 設定 fg1 模組

s kAmp 1000 s kFrq 75

module cn2 設定 cn1 模組

s cmd ampfg1out s fdk ampio1ang s kp 0x300 s kd 0x4000

module ft1 設定 ft1 模組

s u ampfg1out s dt 2 s ka 320

module io3 設定 io3 模組

s led ampfg1out

module 回復預設模組

run 1khz 設定抽樣頻率為 4KHz

run start DSP 開始執行

das stop pause 1 DAS 啟動 das start DAS 啟動

echo on 回復正常訊息顯示

CAI操控設計畫面規劃如下(EXP_angleCAI) page 1 畫面設計

45

page 2 與 page 3 畫面設計與實驗一 page 2 與 page 3相同畫面 page 4 畫面設計與實驗二 page 4 畫面 方塊的參數設定 延續上一實驗的說明使用者可以調整 PD控制器中的 kp和 kd值以調整系統之

響應 實測響應圖

訊 號 說 明 訊 號 說 明 ch1 方波產生器產生之位置命令 ch3 馬達角速度訊號 ch2 馬達角位置 ch4 Pd控制器輸出之電壓訊號

46

直流馬達之閉迴路位置控制響應圖

47

64 實驗 4-加減速的位置控制 實驗說明為避免方波命令的過於嚴苛在方波命令的輸出加入一加減速控制功

能方塊以減緩命令變化的幅度增加馬達運動的平順建立的測試方塊圖如下

方塊圖中的模組功能說明如下

1用 fg1產生測試用的方波位置命令 2將方波位置命令送到加減速控制方塊處理後產生新的位置命令再將新的位置命

令與位置回授訊號送到 PD控制器方塊中產生電壓控制訊號最後透過 io2模組將訊號送出到伺服介面驅動馬達轉動

對應之 plc檔程式說明(exp_accplc) echo off 畫面顯示開始

run dsp 0 選擇 DSP1

run stop run reset 既有程式停止

run testDCMmem 下載指定程式

das 1 ampfg1out 0 1024 PWM 波形 Volt 設定 DAS 頻道1

das 2 ampcn1out 0 1024 加速控制 Volt 設定 DAS 頻道2

das 3 ampio1spd 0 1024 馬達速度 Volt 設定 DAS 頻道3

das 4 ampio1ang 0 1024 馬達角度 Volt 設定 DAS 頻道4

plot select 0 設定示波器頁數

plot xunit 100000 0 設定示波器 X軸

plot yunit 1 2000 -300 設定示波器 Y1 軸

plot yunit 2 2000 -100 設定示波器 Y2 軸

plot yunit 3 50 100 設定示波器 Y3 軸

plot yunit 4 2000 300 設定示波器 Y4 軸

48

plot trigger 1 0 1 10 設定示波器觸發

plot scope 9 1 2 3 4 設定示波器顯示

module io2 設定 io2 模組

s cmd ampcn2out

module fg1 設定 fg1 模組

s kAmp 2000 s kFrq 150

module cn1 設定 cn1 模組

s cmd ampfg1out

module cn2 設定 cn2 模組

s cmd ampcn1out s fdk ampio1ang s kp 0x300 s kd 0x4000

module ft1 設定 ft1 模組

s u ampfg1out s dt 2 s ka 320

module io3 設定 io3 模組

s led ampfg1out

module 回復預設模組

run 1khz 設定抽樣頻率為 4KHz

run start DSP 開始執行

das stop pause 1 DAS 啟動 das start DAS 啟動

echo on 回復正常訊息顯示

CAI操控設計畫面規劃如下(EXP_accCAI) page 1 畫面設計

49

page 2 畫面設計與實驗一 page 2相同畫面 page 3 畫面設計與實驗二 page 4相同畫面

參數設定參考之前各實驗的說明可線上機動性的調整 PD控制器中的 kp和 kd值以調整系統之響應 實測響應圖

訊 號 說 明 訊 號 說 明 ch1 方波產生器產生之位置命令 ch3 馬達角位置 ch2 加減速模組輸出之位置命令 ch4 馬達角速度訊號

50

圖一 直流馬達經加減速控制後之閉迴路控制響應圖

51

65 實驗 5-正弦波的位置控制 實驗說明在本實驗中改變命令的波形由方波改變為正弦波並建立如下的測

試方塊圖與上一實驗相比較僅更改命令的波形產生方塊 方塊圖中的模組功能說明如下 1用 fg2產生測試用的弦波位置命令 2將弦波位置命令送到加減速控制方塊處理後產生新的位置命令再與 io1 讀入的位

置回授訊號送到 PD 控制器方塊中產生電壓控制訊號再透過 io2 模組將訊號送出到伺服介面驅動馬達轉動

對應之 plc檔程式說明(exp_sinplc) echo off 畫面顯示開始

run dsp 0 選擇 DSP1

run stop run reset 既有程式停止

run testDCMmem 下載指定程式

das 1 ampfg2out 0 1024 SIN 波形 Volt 設定 DAS 頻道1

das 2 ampcn1out 0 1024 加速控制 Volt 設定 DAS 頻道2

das 3 ampio1spd 0 1024 馬達速度 Volt 設定 DAS 頻道3

das 4 ampio1ang 0 1024 馬達角度 Volt 設定 DAS 頻道4

plot select 0 設定示波器頁數

plot xunit 100000 0 設定示波器 X軸

plot yunit 1 2000 -300 設定示波器 Y1 軸

plot yunit 2 2000 -100 設定示波器 Y2 軸

plot yunit 3 50 100 設定示波器 Y3 軸

plot yunit 4 2000 300 設定示波器 Y4 軸

plot trigger 1 0 1 10 設定示波器觸發

52

plot scope 9 1 2 3 4 設定示波器顯示

module io2 設定 io2 模組

s cmd ampcn2out

module fg2 設定 fg1 模組

s kAmp 2000 s kFrq 100

module cn1 設定 cn1 模組

s cmd ampfg2out

module cn2 設定 cn2 模組

s cmd ampcn1out s fdk ampio1ang s kp 0x300 s kd 0x4000

module ft1 設定 ft1 模組

s u ampfg2out s dt 2 s ka 320

module io3 設定 io3 模組

s led ampfg2out

module 回復預設模組

run 1khz 設定抽樣頻率為 4KHz

run start DSP 開始執行

das stop pause 1 DAS 啟動 das start DAS 啟動

echo on 回復正常訊息顯示

CAI操控設計畫面規劃如下(EXP_sinCAI) page 1 畫面設計

53

page 2 畫面設計 page 3 畫面設計與實驗二 page 4相同畫面

方塊的參數設定可調整 PD控制器中的 kp和 kd值以調整系統之響應 實測響應圖

訊 號 說 明 訊 號 說 明 ch1 弦波產生器產生之位置命令 ch3 馬達角位置訊號 ch2 加減速模組輸出之位置命令 ch4 馬達角速度訊號

54

直流馬達之閉迴路弦波加減速位置控制響應圖

55

7組合語言說明

本節將針對 DC馬達伺服控制實驗專用的程式模組進行功能與程式碼的說明其

有關於波形產生器與資料擷取模組等說明如下

SIN_waveasm 正弦波產生器 PWM_waveasm 方波產生器 IIR1_filterasm 一階濾波器 DAS4asm 資料蒐集模組

弦波產生器

此模組會產生週期性的正弦波方塊圖如下

outfrq

kBiasbias

ampkAmp

kFrqth

kThf=1TB

θ

A

其中

1正弦波有四個參數振幅(A)頻率(F)相位(θ)和偏移(B)其公式為 out = A sin(2πF t +θ) + B 2對於單純的正弦波產生器所對映的參數包括 kAmp 振幅值 kFrq 頻率值kFrq=655368000Hz其中 Hz的範圍為 0~4000例如 1000Hz =gt frq=8192 100Hz =gt frq=819 10Hz =gt frq=82 1Hz =gt frq=8 kTh 相角值0~255代表 0~360的相位當 th=0 時為正弦波 th=64 時為餘弦波 th=128時為反相波依此類推 kBias偏移值 3對於可調變的正弦波產生器其對映的輸入點為 amp 控制振幅的輸入點可產生調幅(AM)波形 frq 控制頻率的輸入點可產生調頻(FM)波形 th 控制相位的輸入點可產生調相(PM)波形 bias控制偏移的輸入點可產生雙頻混波(相加)波形 4若不使用調變功能時各個輸入點時的預設值為 amp 指向 kAmp 的位址 frq 指向 kFrq 的位址

56

th 指向 kTh 的位址 bias指向 kBias的位址

模組程式範例SIN_WAVEasm

local amp R0 IP kAmp 輸入點sin波的振幅 local frq R1 IP kFrq 輸入點sin波的頻率 local th R2 IP kTh 輸入點sin波的相角 local bias R3 IP kBias 輸入點sin波的中心偏移 local out R4 OP 輸出點sin波輸出 local tab R5 TP 表格指標指向 sin[256]的表格 local ang R6 內部變數相位角65536=360deg local kAmp R7 1000 參數振幅值 local kFrq R8 1000 參數頻率值=655368000Hz local kTh R9 0 參數相角值360deg=256 local kBias R10 0 參數偏移值 data 11 模組變數區長度及初值 initial 啟動程序 WR ang0 WR out0 ang=out=0 RET timer 即時控制程序(8KHz) RD ang ADD (frq) WR ang ang+=frq SFR 8 ADD (th) AND 255 ACC=sin(ang256+th) ADD tab WRH RDM table-look-up MUL (amp) SFR 12 ADD (bias) WR out out=ACCamp4096+bias RET table tab 256 sin[256]表格區10=4096 0 101 201 301 401 501 601 700 00~070deg 799 897 995 1092 1189 1285 1380 1474 08~0F 1567 1660 1751 1842 1931 2019 2106 2191 10~17 2276 2359 2440 2520 2598 2675 2751 2824 18~1F 2896 2967 3035 3102 3166 3229 3290 3349 20~27 3406 3461 3513 3564 3612 3659 3703 3745 28~2F 3784 3822 3857 3889 3920 3948 3973 3996 30~37 4017 4036 4052 4065 4076 4085 4091 4095 38~3F 4096 4095 4091 4085 4076 4065 4052 4036 40~4790deg 4017 3996 3973 3948 3920 3889 3857 3822 48~4F 3784 3745 3703 3659 3612 3564 3513 3461 50~57 3406 3349 3290 3229 3166 3102 3035 2967 58~5F

57

2896 2824 2751 2675 2598 2520 2440 2359 60~67 2276 2191 2106 2019 1931 1842 1751 1660 68~6F 1567 1474 1380 1285 1189 1092 995 897 70~77 799 700 601 501 401 301 201 101 78~7F 0 65435 65335 65235 65135 65035 64935 64836 80~87180deg 64737 64639 64541 64444 64347 64251 64156 64062 88~8F 63969 63876 63785 63694 63605 63517 63430 63345 90~97 63260 63177 63096 63016 62938 62861 62785 62712 98~9F 62640 62569 62501 62434 62370 62307 62246 62187 A0~A7 62130 62075 62023 61972 61924 61877 61833 61791 A8~A8 61752 61714 61679 61647 61616 61588 61563 61540 B0~B7 61519 61500 61484 61471 61460 61451 61445 61441 B8~BF 61440 61441 61445 61451 61460 61471 61484 61500 C0~C7270deg 61519 61540 61563 61588 61616 61647 61679 61714 C8~CF 61752 61791 61833 61877 61924 61972 62023 62075 D0~D7 62130 62187 62246 62307 62370 62434 62501 62569 D8~DF 62640 62712 62785 62861 62938 63016 63096 63177 E0~E7 63260 63345 63430 63517 63605 63694 63785 63876 E8~EF 63969 64062 64156 64251 64347 64444 64541 64639 F0~F7 64737 64836 64935 65035 65135 65235 65335 65435 F8~FF

就程式結構而言說明如下

timer 即時控制程序(8KHz) RD ang ADD (frq) WR ang ang+=frq SFR 8 ADD (th) AND 255 ACC=sin(ang256+th) ADD tab WRH RDM table-look-up MUL (amp) SFR 12 ADD (bias) WR out out=ACCamp4096+bias RET

1基本上我們以查表法計算 sin()其輸入θ的範圍為 0~255對映到 0~360deg其輸出 sin(θ)的範圍為+-4096對映到+-10的範圍

2建立一個內部變數 ang其範圍為 0~65535對映到 0~360的相位角 3每個timer程序都執行 ang+=frq的動作更新目前的相位角接著依照 ang的相位角查表得到 sin(ang256+th)值

4由於表格長度為 256-word所以必須將 ang256才能得到正確的對映關係而 th範圍為 0~255所以不需要像 ang一般的做額外處理

5sin()的範圍為(+1-1)而在表格中以(+4096~-4096)的型式記錄相當於 10=4096所以執行 Asin()時還要用 SFR12指令做4096的動作才能正確的取得輸出值

58

6就頻率輸入 frq而言其計算原則是將θ=ωt轉化成θ=Σ(ωdt)因為抽樣頻率

為 8KHz所以 dt=18000而得到 frq=655368000Hz公式其中 Hz為真正的頻率在 8KHz的抽樣頻率下其範圍為 0~4000

鋸齒波產生器

此模組會產生週期性的鋸齒波方塊圖如下

outfrq

kBiasbias

ampkAmp

kFrqth

kThf=1TB

θ

A

其中

1鋸齒波也有四個參數振幅(A)頻率(F)相位(θ)和偏移(B)和正弦波的定義完全一致唯一的差異是其輸出為鋸齒波而非正弦波

2基本波形是從週期開始時為 0一直遞增到週期結束時到達最高點然後立刻回歸

到 0重新開始 3以程式結構而論鋸齒波程式幾乎就是正弦波的相位計算部分只差沒有正弦波的

查表處理而已

模組程式範例SAW_WAVEasm

local amp R0 IP kAmp 輸入點sin波的振幅 local frq R1 IP kFrq 輸入點sin波的頻率 local th R2 IP kTh 輸入點sin波的相角 local bias R3 IP kBias 輸入點sin波的中心偏移 local out R4 OP 輸出點sin波輸出 local ang R5 內部變數相位角65536=360deg local kAmp R6 1000 參數振幅值 local kFrq R7 1000 參數頻率值=655368000Hz local kTh R8 0 參數相角值360deg=256 local kBias R9 0 參數偏移值 data 11 模組變數區長度及初值 initial 啟動程序 WR ang0 WR out0 ang=out=0 RET timer 即時控制程序(8KHz) RD ang ADD (frq) WR ang ang+=frq SFR 8 ADD (th) AND 255 ACC=(ang256+th)amp0x00ff MUL (amp) SFR 8 ADD (bias) WR out out=ACCamp256+bias

59

RET

脈衝波產生器

outfrq

kBiasbias

ampkAmp

kFrqth

kThf=1TB

θ

A

pwm

kDutyduty

此模組會產生週期性的脈衝波方塊圖如下

其中

1脈衝波有五個參數其中振幅(A)頻率(F)相位(θ)和偏移(B)四個參數和正弦波

定義完全一樣另外再增加一個負載率(D) 2基本波形是從週期開始時為 1隔段時間後換為 0然後持續到週期結束再重新開始其中 1所佔有的比例就是負載率當 D=0時為 0而 D=255時為 100

3和其他參數類似負載率(D)以 duty為其輸入點而以 kDuty為其參數值

模組程式範例PLS_WAVEasm

local amp R0 IP kAmp 輸入點脈衝波的振幅 local frq R1 IP kFrq 輸入點脈衝波的頻率 local th R2 IP kTh 輸入點脈衝波的相角 local bias R3 IP kBias 輸入點脈衝波的中心偏移 local duty R4 IP kDuty 輸入點脈衝波的負載率 local out R5 OP 輸出點脈衝波輸出 local ang R6 內部變數相位角65536=360deg local kAmp R7 1000 參數振幅值 local kFrq R8 1000 參數頻率值=655368000Hz local kTh R9 0 參數相角值360deg=256 local kBias R10 0 參數偏移值 local kDuty R11 128 參數負載率100 =256 data 12 模組變數區長度及初值 initial 啟動程序 WR ang0 WR out0 ang=out=0 RET timer 即時控制程序(8KHz)

60

RD ang ADD (frq) WR ang ang+=frq SFR 8 ADD (th) AND 255 ACC=(ang256+th)amp0x00ff SUB (duty) RD (amp) JLT t1 RD 0 ACC=(amp0) t1 ADD (bias) WR out out=ACC+bias RET

IIR 一階濾波器

此模組執行一階的 IIR濾波器方塊圖如下

kau x

Z-1

+

+

-

+低通濾波器

高通濾波器dx lp

hp

濾波器參數的計算公式如下

1假設濾波器的頻寬為 hz則 ωn=hz628 2若系統頻率為 8KHz則抽樣週期 dT為 dT=dt8000 其中 dt為模組參數 3則濾波器參數為 ka=ωndT4096或是 =hzdt62880004096即 =hzdt32 4當 dt決定後所允許的訊號頻寬為(4000dt)換句話說訊號頻寬會因為 dt增加而下降

為了方便實驗的運用下面列出常用的參數對照表

濾波頻寬

(Hz)

10 20 50 100 200 500 1000 2000

訊號頻寬

(Hz)

400 800 2000 4000 4000 4000 4000 4000

模組參數 dt 10 5 2 1 1 1 1 1

模組參數 ka 320 320 320 320 640 1600 3200 6400

表格的運用方式如下

1首先決定濾波頻寬 2接著查表找出對映的參數 dt和 ka 3再查表得到對映的訊號頻寬以決定是否需要串接前級濾波器

61

模組程式範例IIR1_FILTERasm

local u R0 IP 輸入點濾波器輸入 local lp R1 OP 輸出點低通濾波器輸出 local hp R2 OP 輸出點高通濾波器輸出 local dt R3 1 參數抽樣週期 local ka R4 4096 參數增益 ka10=4096 local prd R5 內部變數抽樣週期用 data 6 模組變數區長度 initial 開機啟動程序 WR lp0 WR hp0 WR prd1 RET lp=hp=0prd=1 timer 即時控制程序 SUB prd1 JNZ b9 if (--prdgt0) return RD dt WR prd prd=dt RD (u) SUB lp WR hp hp=u-lp MUL ka SFR 12 ADD lp WR lp lp+=(hpka4096) b9 RET

資料蒐集模組

資料蒐集模組是一個非常特殊的模組專門配合 eTTY 程式中的示波器使用

模組程式範例DAS4asm

local cmd R0 0 紀錄命令0=停止1=前置記錄2=正觸發4=負觸發6=觸發記錄 local dt R1 1 抽樣週期每 dT抽樣一次 local tab R2 TP DAS表格啟始位址 local cnt R3 0 目前記錄點(0~255) local ch1 R4 0 定義頻道1的變數位址 local ch2 R5 0 定義頻道2的變數位址 local ch3 R6 0 定義頻道3的變數位址 local ch4 R7 0 定義頻道4的變數位址 local trg R8 0 定義觸發頻道的變數位址 local th R9 0 觸發準位 local tail R10 0 觸發後的抽樣個數 local buf R11 1 抽樣計數(1~dt) local pnt R12 表格位址計算pnt=tab+cnt4 local len R13 表格長度計算(0~256) data 14 定義模組變數區的長度 table tab 1024 定義表格的長度 initial 啟動程序 WR cmd0 RET cmd=0 timer 控制程序

62

ADD cmd0 JZ t9 if (cmd==0) return SUB buf1 JNZ t9 if (--buf)gt0) return RD dt WR buf dt=buf RD cnt ADD 1 AND 0xff WR cnt cnt=(cnt+1)amp0xff SFL 2 ADD tab WR pnt pnt=tab+cnt4 RD (ch1) WR (pnt) ADD pnt1 pnt++=ch1 RD (ch2) WR (pnt) ADD pnt1 pnt++=ch2 RD (ch3) WR (pnt) ADD pnt1 pnt++=ch3 RD (ch4) WR (pnt) pnt =ch4 RD cmd SUB 1 JZ t9 SUB 1 JZ t2 SUB 1 JZ t3 SUB 1 JZ t4 SUB 1 JZ t5 SUB 1 JZ t6 JR t7 t2 RD (trg) SUB th JGE t9 ADD cmd1 JR t9 wait trgltth t3 RD (trg) SUB th JLE t9 JR t6 wait trggtth t4 RD (trg) SUB th JLE t9 ADD cmd1 JR t9 wait trggtth t5 RD (trg) SUB th JGE t9 JR t6 wait trgltth t6 WR len0 WR cmd7 len=0cmd=7 t7 ADD len1 SUB tail JLT t9 WR cmd0 if ((++len)gt=0x80) cmd=0 t9 RET

與 DC 馬達控制相關的程式模組有以下 4個程式模組說明如下

(1)加減速控制模組 ACC_controlasm (2)光電盤輸入模組 POS_inputasm (3)PWM輸出模組 PWM_outputasm (4)PD控制模組 PD_controlasm

71加減速控制模組 此程式模組主要功能在於執行位置控制的加減速命令修正其數學模式採用 Lynn

濾波器的架構參見下圖

cmd

2

+

old Z -1

-

Z -1

Z -1

Z-1

Z-1x0 x1 x8 x9 x16

+ -

++

2

Z-1

Z-1 y1 y2

+

-

y0

+ +

sumZ-1

+164

12

out

dif

+

63

加減速控制模組方塊圖

其中

1Lynn 濾波器的階數固定成八階也就是 m=8其公式為 H(z) = (1-2Z-m+Z-2m)(1-2Z-1+Z-2)m2

2因為m=8所以m2=64因此最後計算低通濾波的部份時要先做除 64的運算 3因為低通濾波(lp)和 y0之間有 64倍的差異代表 y0y1y2的變化範圍比濾波器輸

入值要擴大許多例如輸入值在+-1000變化時y0y1y2很可能會在+-64000之間變化這範圍已經超出整數處理的範圍很可能會造成錯誤的計算結果

4所以在實驗時輸入值的變化範圍必須控制在+-500之間以保證計算的正確性 5對於 Lynn 濾波器當 m=8時其濾波器的頻寬固定為 1 kHzmdt也就是 dt=1時頻寬為 125 Hz dt=2時頻寬為 625Hz依此類推 6對於 Lynn 濾波器其濾波器的延遲固定為 m個抽樣週期因此設計 hp = x8 - lp 即可得到高通濾波器的對應結果 7其中乘 2和除 64的運算以移位運算取代所以整個程式中並無任何乘法運算 8Lynn 濾波器本身並不是穩定濾波器所以在程式啟動時必須確實的將所有狀態

(x0~x16)歸零否則會產生不穩定的狀態輸出

因為 Lynn濾波器中所有參數固定所以除了抽樣週期 dt 之外並無任何可調參數

抽樣週期 dt 可以控制頻寬dt 越大則濾波器頻寬越低

將步階命令值的輸出送入 Lynn 濾波器中經由低通濾波器的效應可以減緩命

令的變化程度達到加減速控制的目的以下為使用 Lynn 濾波器型式實現加減速控

制的組合語言程式列印 如欲更進一步瞭解 Lynn 濾波器與 FIR 數位濾波器之間的關係可以參考通訊實驗

四數位濾波器設計(FIR)中之說明

ACC_controlasm程式列印 local cmd R0 IP 輸入點位置命令

local out R1 OP 輸出點加減速處理後的位置命令

local dif R2 OP 輸出點位置微分命令

local axis R3 0 馬達編號0=X1=Y2=Z3=C

local old R4 內部變數微分計算用

local sumL R5 內部變數積分計算用

local sumH R6 內部變數積分計算用

local y0 R7 內部變數y(0~2)

local y1 R8 local y2 R9

local x0 R10 內部變數x(0~16)

local x1 R11 local x2 R12 local x3 R13 local x4 R14

local x5 R15 local x6 R16 local x7 R17 local x8 R18

local x9 R19 local x10 R20 local x11 R21 local x12 R22

local x13 R23 local x14 R24 local x15 R25 local x16 R26

64

data 27 模組變數區長度

initial 開機啟動程序

WR dif0 RD (cmd) WR out WR old dif=0 out=old=cmd

sumHL=cmd64

SFL 6 WR sumL RD out SFR 10 SGN 5 WR sumH

RPT 17 WR x00 RPT 3 WR y00 RET x[0~16]=0y[0~2]=0

timer 即時控制程序

RD (cmd) SUBX old WR x0 x0=cmd-old old=cmd

SUB x81 ADD x16 ADD y11 SUB y2 WR y0 y0=x0-2x8+x16+2y1-y2

SGN ADD sumL WR sumL RDH ADC sumH WR sumH sumHL+=y0

WRH RD sumL SFR 6 WR out out=sumHL64

RD y0 SGN SFR WR dif dif=y032mm

RD x0 RPT 16 RDX x1 x[i]=x[i-1] i=1~16

RD y0 RDX y1 WR y2 y[i]=y[i-1] i=1~2

b9 RET

72光電盤輸入模組

DC馬達的位置由光電盤量測之預設儲存於 0xac與 0xbe二個輸入埠位址中其中位址 0xac記錄 X軸馬達的位置位址 0xbe記錄 Y軸馬達的位置由於本實驗的DC馬達接在 Y軸的位置上因此程式中直接選用 Y軸的輸入 光電盤位置輸入的程式列印如下其中速度由位置的差分而得至於馬達的位置

則使用內部 2個 word加以記錄精度為 32位元 POS_inputasm程式列印 local spd R0 OP 輸出點速度量測值

local ang R1 OP 輸出點角度量測值

local angH R2 內部變數角度的 32 位元部分

local mode R3 0x308 模式選擇15MHzAB 相正反向輸入

local pht R4 0xac 輸入阜地址光電盤輸入(0xac)

local phtc R5 0xbe 輸入阜地址光電盤模式(0xbe)

local old R6 內部變數速度更新用

data 7 模組變數區長度

initial 開機啟動程序

RD mode WR (phtc) phtc=mode

RD (pht) WR old WR spd0 RET old=phtspd=0

timer 即時控制程序

RD (pht) SUBX old SGN 11 WR spd spd=(pht-old)old=pht

65

ADD ang WR ang angHL+=spd

RDH ADC angH WR angH

RET

73 PWM輸出控制模組 模組方塊

cmd PWM輸出

程式說明 1在開機時將切換保護時間寫到輸出阜 0xbc上其中切換保護值為 0~6360=5us 2在每次 timer interrupt時將 cmd訊號處理後寫到輸出阜 0xb8上

PWM_outputasm程式列印 local cmd R0 IP gnd 輸入點v相命令

local gain R1 4096 參數輸出增益1=4096

local bias R2 2048 參數輸出偏壓0=2048

local limit R3 4095 參數輸出極限1=4095

local zone R4 0x88f0 參數頻率=12KHz切換保護=5us

local pwm R5 0xb8 輸出阜地址PWM0 輸出(0xb8)

local mode R6 0xbc 輸出阜地址PWM 模式(0xbc)

local p0md R7 0xf8 輸出阜地址port0 模式(0xf8)

local gnd R8 0 輸入接地點

data 9 模組變數區長度

initial 開機啟動程序

RD bias WR (pwm) pwm=bias

RD 0xffff WR (p0md) set port0 mode

RD zone WR (mode) RET mode=zone

stop 關機保護程序

RD bias WR (pwm) RET pwm=bias

timer 即時控制程序

RD (mode) xor 1 and 1 WR (mode) trigger watch-dog

RD (cmd) MUL gain SFR 12 ADD bias ACC=(cmdgain4096)+bias

MAX 0 MIN limit WR (pwm) pwm=limit(ACC)

RET

66

74 PD 控制模組

PD控制的模組方塊參見圖二十一所示其中比例控制的部份直接由增益 kp加以調整微分控制的部份則由誤差的差分經增益 kd的調整而得

Σ+

-

cmd

fdk

err out

Σ

pk

dk

Σ

+

+

+

-

old1minusZ

PD控制器的方塊圖

PD_controlasm程式列印 local cmd R0 IP gnd 輸入點位置命令(可忽略)

local fdk R1 IP gnd 輸入點位置回授(可忽略)

local out R2 OP 輸出點用以控制速度迴路

local kp R3 256 參數增益 kp10=256

local kd R4 0 參數增益 kd10=256

local err R5 0 內部變數

local old R6 0 內部變數

local gnd R7 0 無輸入時的短路點

data 8 模組變數區長度

initial 開機啟動程序

WR out0 WR old0 RET out=old=0

timer 即時控制程序

RD (cmd) SUB (fdk) PRTF WR err

MUL kp SFR 8 P=(cmd-fdk)kp256

RDS err SUBX old MUL kd SFR 8 D=(err-old)kd256

ADDS

WR out out=P+D

RET

程式中預設增益值的 10以整數值 256為基底因此使用 SFR 8的指令加以調

整另外在在計算微分項的程式部份用到 SUBX old的指令其詳細的暫存器動作如

下 參考 piDSP的指令說明SUBX指令將總共用到 3個時序參考錯誤 找不到參照

67

來源在時序 1時將原先 AX的資料拷貝一份到 HX中時序 2時正式執行減

法的動作所以 AX暫存器中的內容會變成 err-old時序 3時DSP會將存放在 HX暫存器中的內容拷貝一份到 old的記憶體中也就是經由 SUBX此一精簡指令將

同時完成計算差分所需要的相減與資料疊代的動作有效的利用 piDSP控制器 DSP核心的精簡指令將可以大幅提昇系統的計算速度

HX AXoldSUBXerr err

old

err

errerr olderr minus

1_err

errerr olderr minus err

1_err

1

2

3

SUBX的指令時序與暫存器變化

68

8附錄快速安裝說明

光纖網路通訊 FPGA 發展系統 (適用於 WIN-XP200098 系統)

快速安裝說明

26Pin 負載輸出入埠

雙電源︵5

12

伏︶輸入埠

單電源︵5

伏︶輸入埠

USB

光纖線輸

號 光纖線輸出埠

入 傳 埠

首先將光碟片 RFFPGA 目錄檔案拷貝在您工作硬碟裡面

第一次安裝時先將 USB 傳輸線接上電腦主機將電源供應器接上 FPGA 模組此時電

腦會出現安裝 USB-Serial 驅動程式選擇從清單安裝此驅動程式放置在光碟片

RFFPGA-USBdrive 選擇您目前安裝系統

可選擇 WIN-98WIN-MEWIN-2000WIN-XP 系統配合您現在工作電腦作業系統

69

注意一般電腦 USB 埠很多插口當您安裝驅動程式時是配合您當時插入之埠

下次如您插入不同接口埠時電腦會再次要求安裝驅動程式這是正常現象請再次安

裝驅動程式否則無法使用

FPLC 操作

首先進入 RFFPGA裡子目錄 testASM直接點選 fPLCexe 出現下面操作畫面(也可直接將

此檔案放置桌面直接點選)

(或者選擇 File 再執行 Setuphellip 選擇您要執行 CAI 檔)

70

進入下面操作畫面 首先使用滑鼠在 FPGA下載按鈕單擊動作使 FPGA變成 DSP晶片 實驗一至實驗五皆為使用 DSP組合語言設計程式其原始程式分別為 testASM1至testASM5可使用 texPad 開啟與編輯程式內容 實驗三與實驗五多有 IO控制動作 當選擇實驗三時出現下面畫面

71

eM_USB 模組

數字型 LED

0 1 2 34 5 6 78 9 A BC D E F

燈號型 LED

44 鍵盤

ADC0 ADC1 DAC0 DAC1

LED 選擇KEY 選擇

模 式 1

0123

注意操作畫面 3與 4 說明開關與按鍵選擇位置後選擇程式下載再按程式啟動如您

按下 0-3按鍵時燈號型 LED會有不同方向閃爍顯示程式停止時結束所有 IO控制動作再按回首頁選擇其他實驗 實驗四與實驗五

模式3

0 1 2 34 5 6 78 9 A BC D E F

按照上面開關選擇直接操作如果以上實驗皆能按照正常操作表示您光纖網路通訊

FPGA發展模組以能正常使用 注意 開機與關機動作順序如下

開機電腦啟動 --- eM_USB 模組電源接上 --- USB 接上電腦 ---

啟動 FPLC 軟體 --- 下載 FPGA 程式

關機關閉 FPLC 軟體 --- eM_USB 模組電源拔掉 --- 拔掉電腦 USB 接頭 ---關掉

電腦

如果以上順序有亂可能造成 USB 找不到驅動造成無法下載經過幾次測試還是

無法下載建議重新啟動電腦主機按照正確步驟操作

72

FPGA 下載操作

進入 FPLC 操作系統按照下列步驟選擇節點模組與下載 bit FPGA 檔案

在 VHDLDEMO 子目錄下您可以選擇您目前 FPGA 種類型號在此型號下我們已將 VHDL

與數位邏輯設計課本範例全部放於此處

73

光纖網路連線 FPGA 下載操作

首先利用光纖線將 eM_USB0 模組光纖輸出埠接至 eM_USB1 模組光纖輸入埠以此

類推最後再將最後 eM_USBN 模組光纖輸出埠接至 eM_USB0 模組光纖輸入埠配置

如附圖方式

個人電腦(Windows) eM_USB模組

0USB

eM_USB模組1

光纖網路

eM_USB模組2

eM_USB模組N

配置完成後進入 FPLC 系統首先必須先將 Node00 下載在 testASM 子目錄裡

piDSPv0bit 檔讓 eM_USB0 模組 FPGA 具備 DSP 功能才能執行光纖網路通訊

操作如下

此時您就可以選擇分別下載至各模組 FPGA 檔 bit

74

安裝 FPLC 注意事項

當您進入 FPLC 時

按 FILE 選擇 programhellip 選擇檔案為 exp_dcmplc 出現下面畫面

正常顯示畫面為

75

DOS 環境操作

在 PC 端的操作是在 Windows 環境中的 DOS 視窗中執行指令範例如下

eFPGA progNETbit 下載 FPGA電路至網路節點0(即 USB節點)中 eFPGA testLEDbit 1 下載 FPGA電路至網路節點1中

對於單一節點的控制程序如下

1將 eM_USB模組連結個人電腦的 USB端 2eM_USB模組開機 3執行下載指令即可 eFPGA xxxxbit 4若要更改 FPGA電路只要重新執行下載指令即可

對於多個網路節點的控制程序如下

1第一組 eM_USB模組連結個人電腦的 USB端再以光纖網路依序其他各節點 2連接 USB界面者為模組0從光纖發射端連接出去的模組為1依此類推 3將所有 eM_USB模組開機 4執行下載指令如下 eFPGA progNETbit 模組0必須先下載指定的 FPGA電路 eFPGA xxxxbit 1 再依序下載其他網路模組的 FPGA電路 eFPGA yyyybit 2 eFPGA zzzzbit 最後再重新下載模組0的 FPGA電路 5換句話說模組0必須先執行 progNETbit讓光纖網路接受 FPGA控制後才能透過光纖網路下載至其他節點等全部網路節點下載完畢後再將模組0的 FPGA重新下載讓模組0也可自由執行任意的 FPGA電路

6若要更改某一個網路節點中的 FPGA電路只要重新執行下述指令 eFPGA progNETbit 模組0必須先下載指定的 FPGA電路 eFPGA yyyybit 2 下載指定網路模組的 FPGA電路 eFPGA zzzz bit 最後再重新下載模組0的 FPGA電路 換句話說除非模組0中的 FPGA已經包括光纖網路管理電路否則一定要先在

模組0中下載網路管理電路後才能下載指定網路節點的 FPGA電路

76

光纖網路通訊 FPGA 發展系統

系統配置

光纖網路通訊 FPGA 發展系統的系統配置圖如下

個人電腦(Windows) eM_USB模組

0USB

eM_USB模組1

光纖網路

eM_USB模組2

eM_USB模組N

其中

1基本模組為 eM_USB模組可用 USB界面和個人電腦連線並提供 USB對光纖網路的轉換功能使得個人電腦可以獨立控制光纖網路中的每個網路節點

2eM_USB模組也可以作為光纖網路中的網路節點透過光纖網路而接受個人電腦的

監控 3就個人電腦而言不論是 USB界面直接連結或是以光纖網路間接連結的 eM_USB模組都是可以直接監控的網路節點最多可以同時控制一個 USB節點和 30個網路節點

4對於每一個網路節點個人電腦都可執行 eM_USB模組中 FPGA的電路下載工作並在適當的 FPGA電路配合下可執行 eM_USB模組中 FPGA內部電路的讀寫控制 5透過適當的 FPGA電路設計各網路節點都可透過光纖網路和其他任何網路節點

作同步通訊執行 FPGA內部記憶體的資料交換資料交換頻率可達 1KHz以上

77

網路模組配置

每個網路模組的標準配置圖如下

eM_USB模組光纖網路

USB eM_FPGA卡

eM_DEMO模組

eM_EXP實驗模組

DC電源

其中

1網路模組以 eM_USB模組為主提供基本的 USB界面和光纖網路連線 2eM_USB模組中的 FPGACPLD採用插卡型式可選擇不同的 eM_FPGA卡包括

eM_2V1K卡可選用 Virtex系列的 XC2V250和 XC2V1000 eM_3S1K卡可選用 Spartan3系列的 XC3S400XC3S1000和 XC3S1500 eM_3S50卡可選用 Spartan3系列的 XC3S50XC3S200和 XC3S400 eM_95XL卡可選用 9500XL系列的 XC95144XL和 XC95288XL 3eM_USB模組中的對外連線有兩種一種是 26P接頭用以連接既有的各種實驗模

組另一種是兩組 50P接頭將 FPGA中各接腳引出用以連接專題實驗 4eM_DEMO模組就是插上 50P接頭的教學模組其中包括 LED 數字顯示和 44鍵盤也具備兩組的 ADC和兩組的 DAC接頭提供類比訊號的測試工具

常用的實驗組合包括

1精簡組合包括(eM_USB+eM_FPGA)提供基本的網路節點適用於專題實驗 2標準組合包括(eM_USB+eM_FPGA+eM_DEMO)提供基礎 FPGA設計的教學實驗

3實驗組合包括(eM_USB+eM_FPGA+eM_DEMO+eM_EXP)提供進階的 FPGA實驗可依需求選用不同的實驗模組

78

eM_USB 模組

eM_USB 模組的電路配置圖如下

TxRx

DCPower

USB

JP2

JP3

光纖界面

外加電源

PC連線

JP1

eM_FPGA模組

FT232 CPLD FlashROM

SRAM

10cm

6cm

JP4

其中

1對外的連線接頭包括 DC電源 可選擇單電源(5V)或是多電源(5V+12V-12V)兩種 USB界面 直接連接個人電腦 光纖界面連接光纖網路 2實驗界面包括 JP1負責內部 CPLD的電路下載 JP2JP3兩組 50P的擴張用接頭 JP4 標準 26P接頭用以連接各種實驗模組 3內部的電路配置包括 A以 SO-DIMM接頭連接各種 eM_FPGA卡 B內附 EEPROMFlashROM和 SRAM提供 FPGA作應用測試 C以一顆 FT232BM作為 USB界面解碼而以一顆 CPLD作為光纖網路解碼 D提供各種 eM_FPGA卡的電路下載功能 4內附五顆 LED由上而下依序為 usbLED指示 USB界面的讀寫狀態 tstLED可由 FPGA電路自行定義 stsLED可由 FPGA電路自行定義 RxLED 可由 FPGA電路自行定義 TxLED 可由 FPGA電路自行定義

79

外部接腳定義

外部接頭的接點順序圖示如下

上視圖

JP11 9 JP4

126225

JP31

50249

JP21

50249

而各接頭的接點定義如下

JP1 JP4 JP2 JP3 1+33V 1+12V 2+12V 1 GND 2 GND 1 GND 2 GND 2GND 3 ADC 4 DAC 3POWER 4ALARM 3 +5V 4 +5V 3nc 5 yPB2 6 yPB3 5RxNET 6TxNET 5+12V 6+12V 4TCK 7 yPB1 6 yPB4 7RxUSB 6TxUSB 7-12V 6-12V 5nc 9 yPB0 10yPB5 9RxCAN 10TxCAN 9 ADC 10 DAC 6TDO 11yPB6 12yPB7 11P0D0 12P0D1 11P1D0 12P1D1 7TDI 13yGND 14yPC3 13P0D2 14P0D3 13P1D2 14P1D3 8nc 15yPC2 16yPC1 15P0D4 16P0D5 15P1D4 16P1D5 9TMS 17yPC0 18yPA0 17P0D6 18P0D7 17P1D6 18P1D7 19yPA1 20yPA2 19P0D8 20P0D9 19P1D8 20P1D9 21yPA3 22GND 21P0D10 22P0D11 21P1D10 22P1D11 23GND 24+5V 23P0D12 24P0D13 23P1D12 24P1D13 25+5V 26nc 25P0D14 26P0D15 25P1D14 26P1D15 27P2D0 28P2D1 27PxA0 28PxA1 29P2D2 30P2D3 29PxA2 30PxA3 31P2D4 32P2D5 31PxA4 32PxA5 33P2D6 34P2D7 33PxA6 34PxA7 35P2D8 36P2D9 35PxB0 36PxB1 37P2D10 38P2D11 37PxB2 38PxB3 39P2D12 40P2D13 39PxB4 40PxB5 41P2D14 42P2D15 41PxB6 42PxB7 43ADC0 44ADC1 43PxC0 44PxC1 45ADC2 46ADC3 45PxC2 46PxC3 47ADC4 48ADC5 47PxC4 48PxC5 49DAC0 50DAC1 49PxC6 50PxC7

80

eM_FPGA 模組

在各種 eM_FPGA 模組中FPGA 對外電路的標準配置圖如下

24576MHz

FlashROM

26PSRAM

EEPROM

mD[8]

yPA[4]

FPGACPLD

mA[19]mRDmWRmCSeeCKeeCSeeDIeeDO

光纖界面 RxNETTxNET

USB 界面 RxUSBTxUSBCLK24MPOWERALARM

LED

tstLEDstsLEDRxLEDTxLED

yPB[8]yPC[4]

ADCDAC

ADC[8]

實驗模組

ADC[2]

DAC[2]

xPA[4]

xPB[8]

xPC[4]

基礎實驗

其中

1FPGACPLD可以選擇下述幾種 XC2V250XC2V1000 採用 eM_2V1K模組其中 FPGA為 FG456包裝 XC3S400XC3S1000XC3S1500採用 eM_3S1K模組其中 FPGA為 FG456包裝 XC3S400XC3S1000XC3S1500採用 eM_3S1K模組其中 FPGA為 FG456包裝 XC3S50XC3S200XC3S400 採用 eM_3S50模組其中 FPGA為 TQ144包裝 XC95144XLXC95288XL 採用 eM_95XL模組其中 CPLD為 TQ144包裝 2採用 FG456包裝者可以控制所有的 IO界面 3採用 TQ144包裝者只是不能控制 RAM和 FlashROM而可以控制其他所有的界面 4所有 FPGA模組都可自由選擇由 USB界面或是由光纖界面下載電路但是 CPLD模組只能固定由 USB界面下載電路

5所有 FPGACPLD模組都可透過 26P接頭連接既有的各種實驗模組

81

FPGA 接腳對照表

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

mD0 XD6 mD0 A17 C13 -- -- mD1 XD7 mD1 B17 D12 -- -- mD2 XD8 mD2 C17 D11 -- -- mD3 XD9 mD3 D17 C11 -- -- mD4 XD10 mD4 E17 D10 -- -- mD5 XD11 mD5 E16 C10 -- -- mD6 XD12 mD6 E14 D9 -- -- mD7 XD13 mD7 E13 D7 -- -- mA0 XD14 mA0 D13 C7 -- -- mA1 XD15 mA1 C13 D6 -- -- mA2 XA0 mA2 V5 C3 -- -- mA3 XA1 mA3 U5 C4 -- -- mA4 XA2 mA4 Y2 D3 -- -- mA5 XA3 mA5 Y1 D4 -- -- mA6 XA4 mA6 V4 E3 -- -- mA7 XA5 mA7 V3 E4 -- -- mA8 XA6 mA8 W2 F3 -- -- mA9 XA7 mA9 W1 F4 -- -- mA10 XA8 mA10 T2 G6 -- -- mA11 XA9 mA11 T1 K3 -- -- mA12 XA10 mA12 R4 K10 -- -- mA13 XA11 mA13 R3 L3 -- -- mA14 XA12 mA14 R2 L4 -- -- mRD XRD mRD R1 D5 -- -- mWR XWR mWR P6 C6 -- --

POWER P0A0 POWER B4 B20 P1 P5 ALARM P0A1 ALARM A4 A19 P2 P6 RxNET P0A2 RxNET C4 B19 P4 P7 TxNET P0A3 TxNET C5 A18 P5 P9 RxUSB P0B0 RxUSB B5 A15 P6 P10 TxUSB P0B1 TxUSB A5 B15 P7 P11 RxCAN P0B2 RxCAN D6 A14 P8 P12 RxCAN P0B3 TxCAN C6 B14 P10 P13

CLK24M CLK24M CLK24M E12 B12 P124 P38

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

PWM0H P3A0 P0D0 E6 A8 P21 P23 PWM0L P3A1 P0D1 E5 B8 P23 P24 PWM1H P3A2 P0D2 C2 B6 P24 P25 PWM1L P3A3 P0D3 C1 A5 P25 P26 PWM2H P3A4 P0D4 D2 B5 P26 P27

82

PWM2L P3A5 P0D5 D1 A4 P27 P28 PWMenb P3A6 P0D6 E4 B4 P28 P30 PHT1Z P3A7 P0D7 E3 A3 P30 P31 PHT1A P3B0 P0D8 G2 C1 P31 P32 PHT1B P3B1 P0D9 G1 C2 P32 P33 PHT0A P3B2 P0D10 H5 D1 P33 P34 PHT0B P3B3 P0D11 J6 D2 P35 P35 AMP0 P3B4 P0D12 H4 E1 P36 P39 AMP1 P3B5 P0D13 H3 E2 P40 P40 AMP2 P3B6 P0D14 H2 F2 P41 P41 AMP3 P3B7 P0D15 H1 G1 P44 P43 eeSK P0C3 P1D0 C10 B9 P20 P22 eeCS P0C2 P1D1 D10 A9 P18 P21 eeDI P0C1 P1D2 F10 B10 P17 P20 eeDO P0C0 P1D3 E10 B11 P15 P19 ssCK P0B7 P1D4 E8 A11 P14 P17 ssCS P0B6 P1D5 E7 A12 P13 P16 ssDI P0B5 P1D6 A6 B13 P12 P15 ssDO P0B4 P1D7 B6 A13 P11 P14

ppCLK P3C0 P1D8 K4 G2 P46 P44 ppDIN P3C1 P1D9 K3 K1 P47 P45 TxD P3C2 P1D10 K2 K2 P50 P46 RxD P3C3 P1D11 K1 L1 P51 P48

tstLED P3C4 P1D12 L5 L2 P52 P49 stsLED P3C5 P1D13 L4 M1 P53 P50 RxLED P3C6 P1D14 L3 M2 P55 P51 TxLED P3C7 P1D15 L2 N1 P56 P52

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

xPA0 P2A0 P2D0 AA3 N2 P59 P53 xPA1 P2A1 P2D1 Y4 T1 P60 P54 xPA2 P2A2 P2D2 AA4 T2 P63 P56 xPA3 P2A3 P2D3 AB4 U2 P68 P57 xPC0 P2A4 P2D4 W5 V1 P69 P58 xPC1 P2A5 P2D5 Y5 V2 P70 P59 xPC2 P2A6 P2D6 AA5 W1 P73 P60 xPC3 P2A7 P2D7 AB5 W2 P74 P61

-- P2B0 P2D8 V6 Y1 P76 P64 -- P2B1 P2D9 V7 Y2 P77 P66 -- P2B2 P2D10 W6 AA3 P78 P68

mCS P2B3 P2D11 Y6 AB4 P79 P69 mA15 P2B4 P2D12 V9 AA4 P80 P70 mA16 P2B5 P2D13 V10 AB5 P82 P71 mA17 P2B6 P2D14 W10 AA5 P83 P74 mA18 P2B7 P2D15 Y10 AA6 P84 P75 CS0 P2C0 ADC0 AA10 AB8 P85 P76

83

SDIN0 P2C1 ADC1 AB10 AA8 P86 P77 CS1 P2C2 ADC2 U10 AB9 P87 P78

SDIN1 P2C3 ADC3 U11 AA9 P89 P79 SCLK P2C4 ADC4 V11 AB10 P90 P80 CS2 P2C5 ADC5 W11 AA10 P92 P81

SDOUT P2C6 ADC6 Y11 AB11 P93 P82 LDAC P2C7 ADC7 AA11 AA11 P95 P83

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

xPB0 P1A0 PxA0 M1 M3 P135 P85 xPB1 P1A1 PxA1 M2 M4 P132 P86 yPB2 P1A2 PxA2 M3 N3 P131 P87 yPB3 P1A3 PxA3 M4 N4 P130 P88 yPB1 P1A4 PxA4 M5 T4 P129 P91 yPB4 P1A5 PxA5 M6 T5 P128 P92 yPB0 P1A6 PxA6 N1 U3 P127 P93 yPB5 P1A7 PxA7 N2 U4 P125 P94 yPB6 P1B0 PxB0 U13 V3 P119 P95 yPB7 P1B1 PxB1 V13 V4 P118 P96 xPB2 P1B2 PxB2 W13 W3 P116 P97 xPB3 P1B3 PxB3 Y13 W4 P113 P98 xPB4 P1B4 PxB4 AA13 Y3 P112 P100 xPB5 P1B5 PxB5 AB13 Y4 P96 P101 yPC3 P1B6 PxB6 U12 Y5 P97 P102 yPC2 P1B7 PxB7 V12 W5 P98 P103 yPC1 P1C7 PxC0 AB17 W11 P108 P113 yPC0 P1C6 PxC1 AA17 Y11 P107 P112 yPA0 P1C5 PxC2 Y17 W10 P105 P111 yPA1 P1C4 PxC3 W17 Y10 P104 P110 yPA2 P1C3 PxC4 AB18 W9 P103 P107 yPA3 P1C2 PxC5 AA18 W8 P102 P106 xPB6 P1C1 PxC6 Y18 W6 P100 P105 xPB7 P1C0 PxC7 W18 Y6 P99 P104

84

eM_DEMO 模組

eM_DEMO 模組的電路配置圖如下

eM_USB 模組

數字型 LED

0 1 2 34 5 6 78 9 A BC D E F

燈號型 LED

44 鍵盤

ADC0 ADC1 DAC0 DAC1

LED 選擇KEY 選擇

其中

1eM_DEMO模組的基本功能包括 A將 xPAxPBxPC等 16個 IO訊號引出控制 LED和鍵盤電路 B將 ADDA訊號引出並放大成+-10V的工作範圍 2LED和鍵盤可以選擇三種模式由 LED和 KEY 兩組開關作選擇圖示如下

模式1

0123

模式2 模式3

0 1 2 34 5 6 78 9 A BC D E F

0123

3模式14鍵輸入並搭配 16點的 LED燈號顯示其中 16點 LED分別對映到 xPA[0~3]xPB[0~7]和 xPC[0~3] 4組按鍵分別對映到 xPC[0~3] 4模式24鍵輸入並搭配四個 7段式數字顯示其中 數字顯示由 xPA[0~3]作數字掃瞄而由 xPB[0~7]作 7段式 LED控制 4組按鍵 分別對映到 xPC[0~3] 5模式316鍵輸入並搭配四個 7段式數字顯示其中 數字顯示由 xPA[0~3]作數字掃瞄而由 xPB[0~7]作 7段式 LED控制 16組按鍵由 xPA[0~3]作鍵盤掃瞄而由 xPC[0~3]作鍵盤讀取 6根據VHDL與數位邏輯設計的章節其中 第 1章至 10章的實驗採用模式1而 第 11章實驗採用模式2而 第 12章之後的實驗都採用模式3

85

FPGA UCF 定義

eM_3S1K 模組

NET CLK LOC = B12

NET XAlt0gt LOC = N2

NET XAlt1gt LOC = T1

NET XAlt2gt LOC = T2

NET XAlt3gt LOC = U2

NET XBlt0gt LOC = M3

NET XBlt1gt LOC = M4

NET XBlt2gt LOC = W3

NET XBlt3gt LOC = W4

NET XBlt4gt LOC = Y3

NET XBlt5gt LOC = Y4

NET XBlt6gt LOC = W6

NET XBlt7gt LOC = Y6

NET XClt0gt LOC = V1

NET XClt1gt LOC = V2

NET XClt2gt LOC = W1

NET XClt3gt LOC = W2

NET YAlt0gt LOC = W10

JP4 接頭

NET YAlt1gt LOC = Y10

NET YAlt2gt LOC = W9

NET YAlt3gt LOC = W8

NET YBlt0gt LOC = U3

NET YBlt1gt LOC = T4

NET YBlt2gt LOC = N3

NET YBlt3gt LOC = N4

NET YBlt4gt LOC = T5

NET YBlt5gt LOC = U4

NET YBlt6gt LOC = V3

NET YBlt7gt LOC = V4

NET YClt0gt LOC = Y11

NET YClt1gt LOC = W11

NET YClt2gt LOC = W5

NET YClt3gt LOC = Y5

在光碟片中 RFFPGAVHDLDEMOBIT3S1K 裡有 VHDL 與數位邏輯設計書本範例原始檔與合成檔

86

eM_3S50 模組

NET CLK LOC = P124

NET XAlt0gt LOC = P59

NET XAlt1gt LOC = P60

NET XAlt2gt LOC = P63

NET XAlt3gt LOC = P68

NET XBlt0gt LOC = P135

NET XBlt1gt LOC = P132

NET XBlt2gt LOC = P116

NET XBlt3gt LOC = P113

NET XBlt4gt LOC = P112

NET XBlt5gt LOC = P96

NET XBlt6gt LOC = P100

NET XBlt7gt LOC = P99

NET XClt0gt LOC = P69

NET XClt1gt LOC = P70

NET XClt2gt LOC = P73

NET XClt3gt LOC = P74

NET YAlt0gt LOC = P105

JP4 接頭

NET YAlt1gt LOC = P104

NET YAlt2gt LOC = P103

NET YAlt3gt LOC = P102

NET YBlt0gt LOC = P127

NET YBlt1gt LOC = P129

NET YBlt2gt LOC = P131

NET YBlt3gt LOC = P130

NET YBlt4gt LOC = P128

NET YBlt5gt LOC = P125

NET YBlt6gt LOC = P119

NET YBlt7gt LOC = P118

NET YClt0gt LOC = P107

NET YClt1gt LOC = P108

NET YClt2gt LOC = P98

NET YClt3gt LOC = P97

在光碟片中 RFFPGAVHDLDEMOBIT3S200 裡有VHDL與數位邏輯設計書本範例原始檔與合成檔

87

eM_95XL 模組

NET CLK LOC = SPIN38

NET XAlt0gt LOC = SPIN53

NET XAlt1gt LOC = SPIN54

NET XAlt2gt LOC = SPIN56

NET XAlt3gt LOC = SPIN57

NET XBlt0gt LOC = SPIN85

NET XBlt1gt LOC = SPIN86

NET XBlt2gt LOC = SPIN97

NET XBlt3gt LOC = SPIN98

NET XBlt4gt LOC = SPIN100

NET XBlt5gt LOC = SPIN101

NET XBlt6gt LOC = SPIN105

NET XBlt7gt LOC = SPIN104

NET XClt0gt LOC = SPIN58

NET XClt1gt LOC = SPIN59

NET XClt2gt LOC = SPIN60

NET XClt3gt LOC = SPIN61

NET YAlt0gt LOC = SPIN111

JP4 接頭

NET YAlt1gt LOC = SPIN110

NET YAlt2gt LOC = SPIN107

NET YAlt3gt LOC = SPIN106

NET YBlt0gt LOC = SPIN93

NET YBlt1gt LOC = SPIN91

NET YBlt2gt LOC = SPIN87

NET YBlt3gt LOC = SPIN88

NET YBlt4gt LOC = SPIN92

NET YBlt5gt LOC = SPIN94

NET YBlt6gt LOC = SPIN95

NET YBlt7gt LOC = SPIN96

NET YClt0gt LOC = SPIN112

NET YClt1gt LOC = SPIN113

NET YClt2gt LOC = SPIN103

NET YClt3gt LOC = SPIN102

在光碟片中 RFFPGAVHDLDEMOSVF95288XL 裡有VHDL與數位邏輯設計書本範例原始檔與合成

檔案

88

eM_FPGA 模組

NET CLK LOC = E12

NET XAlt0gt LOC = AA3

NET XAlt1gt LOC = Y4

NET XAlt2gt LOC = AA4

NET XAlt3gt LOC = AB4

NET XBlt0gt LOC = M1

NET XBlt1gt LOC = M2

NET XBlt2gt LOC = W13

NET XBlt3gt LOC = Y13

NET XBlt4gt LOC = AA13

NET XBlt5gt LOC = AB13

NET XBlt6gt LOC = Y18

NET XBlt7gt LOC = W18

NET XClt0gt LOC = W5

NET XClt1gt LOC = Y5

NET XClt2gt LOC = AA5

NET XClt3gt LOC = AB5

NET YAlt0gt LOC = Y17

JP4 接頭

NET YAlt1gt LOC = W17

NET YAlt2gt LOC = AB18

NET YAlt3gt LOC = AA18

NET YBlt0gt LOC = N1

NET YBlt1gt LOC = M5

NET YBlt2gt LOC = M3

NET YBlt3gt LOC = M4

NET YBlt4gt LOC = M6

NET YBlt5gt LOC = N2

NET YBlt6gt LOC = U13

NET YBlt7gt LOC = V13

NET YClt0gt LOC = AA17

NET YClt1gt LOC = AB17

NET YClt2gt LOC = V12

NET YClt3gt LOC = U12

在光碟片中 RFFPGAVHDLDEMOBIT2V250 裡有VHDL與數位邏輯設計書本範例原始檔與合成檔

89

Page 2: RFFPGA 直流馬達實驗手冊juniortek.com.tw/program/manual/RF-DC-mal.pdf · em_demo模組 em_dcm 直流伺服馬達 dc電源 rffpga 系統的直流馬達實驗規劃 其中包括:

目錄

1實驗規劃 3

2馬達驅動界面 5

3實驗項目 18

4安裝程序 19

5執行程序 20

6實驗說明 22

61 實驗 1-開迴路的電壓控制 33

62 實驗 2-閉迴路的速度控制 39

63 實驗 3-閉迴路的位置控制 44

64 實驗 4-加減速的位置控制 48

65 實驗 5-正弦波的位置控制 52

7組合語言說明 56

71 加減速控制模組63

72 光電盤輸入模組65

73 PWM輸出控制模組 66

74 PD控制模組 67

8附錄快速安裝說明 69

ii

1實驗規劃

在光纖網路通訊 FPGA 發展系統中關於 DC馬達實驗模組的配置規劃如下

e M _ U S B模 組光 纖網 路

U S B e M _ F P G A卡

e M _ D E M O模 組

e M _ D C M 直 流 伺 服 馬 達

D C電 源

RFFPGA系統的直流馬達實驗規劃

其中包括

1標準的 RFFPGA控制器配置包括電源模組和以使用 USB 為連線界面的個人電腦

226P 外接模組中透過 JP4 26PIN 轉 25PIN 排線中接上 eM_DCM 模組伺服界面

用以連接驅動級和馬達回授控制直流馬達

3實驗結果以 FPLC 人機圖控軟體做示波器和邏輯分析儀功能觀測

光纖網路通訊 FPGA 發展系統的系統配置圖如下

個人電腦(Windows) eM_USB模組

0 USB

eM_USB模組 1

光纖網路

eM_USB模組 2

eM_USB模組 30

3

其中

1基本模組為 eM_USB模組可用 USB界面和個人電腦連線並提供 USB對光纖網路的轉換功能使得個人電腦可以獨立控制光纖網路中的每個網路節點

2eM_USB模組也可以作為光纖網路中的網路節點透過光纖網路而接受個人電腦的

監控 3就個人電腦而言不論是 USB界面直接連結或是以光纖網路間接連結的 eM_USB模組都是可以直接監控的網路節點最多可以同時控制一個 USB節點和 30個網路節點

4對於每一個網路節點個人電腦都可執行 eM_USB模組中 FPGA的電路下載工作並在適當的 FPGA電路配合下可執行 eM_USB模組中 FPGA內部電路的讀寫控制 5透過適當的 FPGA電路設計各網路節點都可透過光纖網路和其他任何網路節點

作同步通訊執行 FPGA內部記憶體的資料交換資料交換頻率可達 1KHz以上 6當然也就是一部個人電腦可同時監控 31個直流伺服馬達控制狀況

4

2馬達驅動界面

馬達的控制需要高速的動態響應能力是 DSP 核心的重要應用方向本實驗中建立馬達

驅動器的界面包括 PWM 的驅動控制以及光電盤的解碼和計數提供馬達控制實驗的設

計基礎

設計說明 直流馬達

直流馬達屬於扭力控制結構的電機機械其轉子磁場和定子磁場相互垂直

扭力控制結構

L1

L2

N

SN S

轉子

定子

當轉子和定子磁場相互垂直時就會產生扭力而讓轉子旋轉但是一旦旋轉到 90o使

得磁場平行時馬達就會失去扭力而停止了轉動為了使馬達持續不停的旋轉直流馬

達中設計了很特殊的電樞結構讓轉子不論旋轉到任何角度轉子磁場和定子磁場永遠

保持垂直

N S

電樞示意圖

在轉子在每一瞬間都只有和定子垂直的那組線圈能夠導通所以無論轉子轉到任何角

度直流馬達永遠都能保持垂直磁場的狀態

在垂直磁場的狀態下只要能控制轉子電流就能控制磁場的大小也就能控制馬達的

扭力了由於定子磁場不變只有電樞的電流可以控制就可以簡化成下面的直流馬達

符號

直流馬達符號

5

電壓驅動模式

直流馬達的驅動方式有電壓驅動和電流驅動兩種

1電流驅動的方式是控制扭力電流越大扭力越大電流越小扭力越小 2電壓驅動的方式是控制轉速電壓越高轉速越高電壓越低轉速越低 3電流和扭力的關係比較線性也不受外界干擾影響 4電壓和轉速的關係比較不線性也比較容易受負載的干擾

電流驅動比較符合扭力控制模式控制效果比較直接但是相對的電路成本也較高電

壓驅動電路比較簡單控制效果雖然沒有電流驅動的響應好但是仍能維持相當不錯的

水準因此大部分低價產品還是選擇電壓驅動模式

電流驅動方式 電壓驅動方式

+-

一個最簡單的電壓驅動電路就是以運算放大器為基礎的線性驅動電路其電路方塊圖如

線性電壓驅動

VinVout

V+

V-

線性放大器

線性放大器的特性非常理想其電壓輸出 Vout 和電壓輸入 Vin 成正比也不受其他環

境因素所干擾輸出正電壓馬達就正轉輸出負電壓馬達就反轉但是線性放大器的能

量效率卻是非常不理想以下圖為例

VinVout

V+

V-

線性放大器

=5V

=+15V

=-15V

1A

1A

6

假設在某種轉速下馬達需要的電壓輸出為 5V而電流為 1A那麼就產生了(5V1A=5W)

的功率輸出由於線性放大器的電流完全由電源供應器提供所以電源電流也是 1A在

15V 的電源電壓下驅動級的功率為(15V1A=15W)當有 15W 的功率進入驅動級而只

有 5W 的功率流出驅動級代表其中 10W 的功率浪費掉了在能量不滅的定律下功率

是不會憑空消失的這意味著這 10W 的功率已經變成了熱能使得驅動級發燙起來還

得另外設法散熱

在兩種狀況下會造成最小的功率消耗一種是最大電壓輸出(全開)狀況一種是零電

流輸出(全關)狀況說明如下

1當最大電壓輸出時假設輸出電壓為 15V輸出電流為 1A則 輸出功率為(15V1A=15W) 輸入功率為(15V1A=15W) 所以驅動級的消耗功率為(15W-15W=0W) 2當零電流輸出時假設輸出電壓為 0V輸出電流為 0A則 輸出功率為( 0V0A=0W) 輸入功率為(15V0A=0W) 所以驅動級的消耗功率為(0W-0W=0W)

當然真實的電路不會那麼理想但是這種特殊工作點的選擇的確會讓驅動電路變得非

常有效率

PWM 脈寬調變

脈寬調變電路(Pulse Width Modulation簡稱 PWM)就是利用全開和全關的兩種最佳效

率點所設計的電路

就 PWM 驅動器本身而言只有全開和全關的兩種控制模式假設我們還是需要 5V 和 1A

的輸出控制需求那麼就可以控制全開的比率(即工作率 Duty-Cycle)為 13 週期使得

輸出的平均電壓維持在 5V 的準位如下圖所示

Vin Vout

V+

V-

線性放大器

因為輸出只有全開或全關的兩種狀態如果再使用昂貴的線性放大器就太浪費了這時只要用

最簡單的開關放大器就可以辦到了最基本的開關放大器有下述兩種

7

V+

單向控制

V+

A

AB

B

A雙向控制

單向控制結構只能控制直流馬達做單方向的運轉而由 PWM 控制馬達的轉速雙向控制

在速度之外還可以控制馬達作正反轉通常用來執行直流馬達的位置控制用

PWM 的控制波形非常簡單就是產生一組平均值為指定電壓的波形也就是控制所謂的

工作率(Duty-Cycle)定義如下

平均電壓 = Ton (Ton + Toff) 電源電壓 = 工作率 電源電壓

但是由於波形上的微小差異細分起來還是有下面三種型式

前緣對齊型

10 1010

30 30 30

50 50 50

中間對齊型 後緣對齊型

如果只有一組 PWM 波形輸出無論採用哪種波形都沒有差異只有當多個 PWM 波形要同

時輸出(例如交流馬達作三相控制)時才需要選擇中間對齊的型式作處理以免造成相

位失真的現象

在電路設計上都是產生一組參考波來和電壓命令作比較當電壓命令大於參考波時就

送出 1小於參考波時就送出 0如此就形成 PWM 波形其差別只是採用何種參考波作

比較

前緣對齊型

70

中間對齊型 後緣對齊型

70

以上圖為例要產生前緣對齊型的 PWM 訊號就採用遞增型鋸齒波若採用遞減型鋸齒

波就會產生後緣對齊型的 PWM 訊號採用前後對稱的三角波就會產生中間對齊型的

PWM 訊號

8

PWM切換保護

對於單一線圈的負載而言PWM切換電路的電路方塊圖如下

負載

正電源

負電源

PWM+

PWM-

P

N

其中

1以兩組電晶體來分別控制正負電源其中的電晶體依據功率需求可選擇功率電晶體

MOSFET或是 IGBT不論哪種選擇其控制原理都一致 2將 PWM訊號分成正向和反向的兩組控制訊號PWM+控制正電源的導通與否而

PWM-控制負電源的導通與否 3切換組合包括 P=OFFN=OFF負載和電源隔離 P=ON N=OFF負載連接上正電源 P=OFFN=ON 負載連接上負電源 P=ON N=ON 正負電源短路這時功率驅動級將瞬間燒毀

原則上只要將 PWM+和 PWM-間的邏輯反向是不可能發生兩者都 ON 的情況但是再考慮

功率電晶體(包括電晶體MOSFET 和 IGBT)的暫態響應電晶體 OFF 的反應時間通常比

電晶體 ON 的反應時間要長一些所以在切換瞬間很可能產生兩者都導通的瞬間狀態

這時可能有兩種結果

1兩者同時導通的時間稍長時功率驅動級將瞬間產生過電流而燒毀 2兩者同時導通的時間非常短這時功率驅動級雖不至於瞬間燒毀但是會產生很高

的熱量使得功率驅動級的溫度快速加高甚至於因為過熱而燒毀

因此 PWM 控制必須加上切換保護其示意圖如下

PWM+ PWM-

切換保護

其中

1基本上PWM-只是 PWM+的反向訊號兩者都由一組 PWM訊號控制 2但是在 ONOFF 切換的瞬間必須加上一段兩者都 OFF的時間這段時間的長度

可依照功率電晶體的 ONOFF特性來設定在 1us~4us之間

9

PWM 啟動保護

在系統開機時很不容易保證各個元件都能依照順序依序啟動因此在系統啟動時必須

自動將 PWM 輸出關掉直到系統完成整個開機程序後才能再將 PWM 訊號重新啟動一

般而言啟動程序如下

1系統開機後功率驅動級通常最快啟動這時 PWM必須保持在 OFF 狀態避免系

統誤動或短路 2之後依次啟動 BIOSLinux網路最後才啟動應用程式 3應用程式啟動後必須依序 A下載 FPGA B下載 DSP控制軟體 C啟動 DSP控制軟體 在啟動 DSP控制軟體後才能重新開啟 PWM的動作 4任何時間中只要 DSP控制停止就必須立刻關閉 PWM控制以避免誤動或短路

所以 PWM 啟動保護是由 DSP 程式直接控制其必要程序包括

1FPGA電路下載完畢並執行工作中 2DSP程式下載完畢並執行工作中

其中任何一個部分停止都必須立刻關閉 PWM 控制一般而言這部分電路都由看護犬

(watch-dog)電路管理而由 DSP 程式負責驅動

DCM 實驗模組

DCM 模組是一個完整的直流馬達實驗機台系統方塊圖如下

YA1

切換保護

YA2

YC0

馬達

PHTA PHTB

PWM+

DIS

YA0 PWM-

+12VSW

YC1

JP4 A

AB

B

雙向控制

光電盤

A

B

其中

1採用雙向控制的 PWM功率驅動級來驅動直流馬達可控制馬達正反轉 2功率驅動級中已有切換保護其控制訊號包括

10

PWM+ PWM- DIS 直流馬達 X X 1 OFF 1 0 0 正電壓驅動 0 1 0 負電壓驅動

3功率驅動級中並沒有啟動保護所以必須附加電源開關作手動控制 4馬達轉角由光電盤的 AB相訊號作回授 5所有控制訊號都經由 JP4接頭接到 RFFPGA控制器中可由 FPGA作控制

三角波產生器

實驗中以中間對齊型的 PWM 訊號為控制目標首先建立對稱的三角波作為參考訊號其

對映的 VHDL 程式範例如下

TRIANGLE_WAVE block signal Q STD_LOGIC_VECTOR (11 downto 0) signal CEDIR STD_LOGIC begin process (CLKRESET) -- sequential logic begin if RESET=1 then --reset Qlt=000000000111 --reset to 7 elsif CLKevent and CLK=1 then --CLK=gt1 trigger if CE=1 then --clock enable if DIR=0 then Qlt=Q+1 --up counter else Qlt=Q-1 --down counter end if end if end process -- combinational logic CE lt= SYSTEM(0) --24MHz clock DIR lt= SYSTEM(13) --4KHz square wave REF lt= Q --12-bit reference (7~3079) end block TRIANGLE_WAVE 其中

1程式設計為可適用於不同的系統時鐘包括 49152MHz和 24576MHz 兩種型式 2計數器的基本頻率為 24576MHz所以用 CE=SYSTEM(0)來控制計數動作 3三角波的頻率設為 4KHz所以計數器的峰值為(2457642=3072) 4正反計數器和系統時序同步而以 SYSTEM(13)做為同步控制由於 SYSTEM(13)為 4KHz的方波設定 DIR=SYSTEM(13)即可控制計數器的上升或下降

5在 RESET時將計數器的初值設為 7使得計數範圍修正為 7~3079所以即使有些同步誤差也不會產生負數輸出的嚴重影響

6三角波以 REF[12]作輸出數值範圍在 7~3079之間頻率為 4KHz

11

如果 PWM 的頻率過低馬達端會產生震動噪音這時就必須提高 PWM 的頻率在前面程

式中如果要將 PWM 頻率從 4KHz 提升為 8KHz則可更改如下

if DIR=0 then Qlt=Q+2 --up counter else Qlt=Q-2 --down counter DIR lt= SYSTEM(12) --8KHz square wave 其中

1將 DIR改由 8KHz的 SYSTEM(12)來控制 2同時將計數器改成+2-2的正反計數器 3如此仍然能夠維持 REF輸出的數值範圍(7~3079)

如果還要再將 PWM 的頻率提高到 16KHz則可更改如下

if DIR=0 then Qlt=Q+4 --up counter else Qlt=Q-4 --down counter DIR lt= SYSTEM(11) --16KHz square wave 其中

1將 DIR改由 16KHz的 SYSTEM(11)來控制 2同時將計數器改成+4-4的正反計數器 3如此仍然能夠維持 REF輸出的數值範圍(7~3079)

表面上三角波產生器的數值精度為 12-bit時間精度為 24MHz但是由於 PWM 訊號將

透過 FPGA2 輸出而高速串列界面的更新速度為 15MHz所以就 DCM 模組所收到的 PWM

控制訊號而言其時間精度將降低為 15MHz而數值上的精度將降低為 8-bit等效範

圍為 0~192 或是+-96 之間整體而言控制上的精度約為 05仍可符合馬達控制的

需求

PWM 波形產生器

接著處理比較的動作並產生 PWM 波形對映的 VHDL 程式範例如下

PWM_COMPARATOR block signal CEPUPD STD_LOGIC signal D0D1D2D3D4 STD_LOGIC begin process (CLK) -- sequential logic begin if CLKevent and CLK=1 then --CLK=gt1 trigger if CE=1 then --CLK enable D4lt=D3 D3lt=D2 D2lt=D1 D1lt=D0 --delay end if end if

12

end process -- combinational logic CE lt= CLK1M D0 lt= 1 when CMDgtREF else 0 --PWM generation PU lt= D1 and D2 and D3 and D4 --up-side output PD lt= not D1 and not D2 and not D3 and not D4 --down-side output PWMU lt= PU --up-side PWM output PWMD lt= PD --down-side PWM output PWMI lt= (not PU and not PD) or not ENB --PWM disable PWMR lt= REF --PWM reference end block PWM_COMPARATOR

程式中所對映的時序如下

CE

REF

CMD

D1D2D3D4PWMUPWMDPWMI

其中

1以 15MHz的 CE訊號為基本頻率 2將電壓命令 CMD和參考波形 REF作比較若 CMDgtREF則設定 D0=0否則設定

D0=1 3將 D0訊號作四次的延遲處理延遲訊號依序為 D1D2D3D4最後再重新組合成

PWM的輸出波形 4其輸出訊號包括 PWMU對映到 DCM模組中的 PWM+訊號 PWMD對映到 DCM模組中的 PWM-訊號 PWMI對映到 DCM模組中的 DIS訊號為切換保護訊號 如此 PWMU作動和 PWMD作動之間將有 2us間隔中是兩者都不作動的也就是

PWMI的作動時間 5當 ENB命令=0時設定 PWMI=1而使得驅動器 OFF

13

回授訊號的處理

精密的伺服馬達動作必須將馬達的位置和速度加以量測後再執行回授控制因此速

度和位置的量測是精密控制中必要的一環我們通常用光電寫碼器或數位尺來進行量測

工作

光電寫碼器(Photo-Encoder)俗稱光電盤是利用光電量測進行的非接觸式數位量測元

件其基本裝置如下

LED光源

光電晶體偵測

以 LED 或是其他光源來發光而用 AB 相的兩組光電晶體來偵測當圓盤隨著馬達作轉

動時光電晶體即可偵測到其移動狀態由於圓盤中的小孔呈等距排列其透光部分和

不透光部分呈 50對 50的比例當圓盤轉動時光電晶體端就可以偵測到下述訊號

光電盤訊號(A 相)

光電盤訊號(B 相)

正轉

其中

1偵測方波的頻率即對應於圓盤轉動的頻率也就是轉速 2偵測方波的個數即對應於圓盤轉過的孔數也就是轉角(相對角度) 3由於 AB相的兩組光電晶體在機械安裝上的角度不同使得讀出訊號也有 90 度的

差異如果馬達正轉則 A相超前如果馬達反轉則 B相超前

有了兩相的光電盤訊號只要能偵測其中的相位變化就可以分辨光電盤的正反轉運動

了例如正轉時的光電盤時序如下

14

光電盤訊號 (A 相 )

光電盤訊號 (B 相 )

正轉

微分訊號(A+)

微分訊號(A-)

微分訊號(B+)

微分訊號(B-)

正轉脈衝(CW)

其中

1針對 AB 兩相訊號作微分處理即可取得 A+A-B+B-的上緣微分和下緣微分 2將微分訊號和和原有的 AB相訊號作比較即可找出正轉脈衝 3計算正轉脈衝的頻率和個數即可取得馬達的速度和轉角 4如此得到的脈衝數將是原有 AB相頻率的四倍所以稱之為乘四解碼電路

同樣的如果針對光電盤的反轉時序一樣可以得出反轉訊號圖示如下

光電盤訊號(A相)

光電盤訊號(B相)

反轉

反轉脈衝(CCW)

其公式如下

CW lt= (A+ and not B) CCW lt= (A+ and B) or (A- and B) or (A- and not B) or (B+ and A) or (B+ and not A) or (B- and not A) or (B- and A)

整合光電盤回授的處理其系統方塊圖如下

數位濾波

D Q

CK

DLA

PHA

D Q

CK

DLB

PHB

CLK

乘四解碼電路

DIR

PLS

數位濾波

PA

PB

正反計數

CNT DB

RD

CS

包括

15

1首先利用簡單的數位濾波器將 AB項的雜訊排除 2接著利用延遲電路作微分處理並以乘四解碼電路解出轉動的脈波和方向 3最後利用正反計數器作計數並將計數值讀入匯流排

數位濾波器

光電盤的 AB 相訊號中如果產生雜訊干擾的現象會使得馬達轉角的計量上產生永久

性的累積誤差將造成控制上無法彌補的錯誤所以 AB 相訊號上的雜訊一定要盡力排

除下面是常用的數位濾波器設計範例

FILTER_A block -- digital filter for A signal CED0D1D2 STD_LOGIC begin process (CLK) -- sequential logic begin if CLKevent and CLK=1 then --CLK=gt1 trigger if CE=1 then --clock enable D2lt=D1 D1lt=D0 D0lt=PA --delay 3 clocks PHA lt= (D0 and D1 and D2) or ((D0 or D1 or D2) and PHA) end if end if end process -- combinational logic CE lt= CLK1M --15MHz clock end block FILTER_A 其中

1以 15MHz的頻率為控制基準 2利用延遲電路依序產生 D0D1D2的延遲訊號 3連續三個 1(D0D1D2 都是 1)定義為 1連續三個 0(D0D1D2 都是 0)定義為 0而其他不連續的 10 都定義為雜訊如此可將高頻的雜訊濾除

4但是相對的AB相訊號的最高頻率將限制為 250KHz(連續 3個 1和連續 3個 0)頻率過高的 AAB相訊號將被視為雜訊而不處理必須特別注意

正反轉的解碼和計數

依據前面的公式說明對映的 VHDL 程式範例如下

DECODER block signal DLADLB STD_LOGIC begin process (CLK) -- sequential logic begin if CLKevent and CLK=1 then --CLK=gt1 trigger DLAlt=PHA DLBlt=PHB --delay 1-clock end if end if

16

end process -- combinational logic DIR lt= (not PHA and DLA and not PHB) or ( PHA and not DLA and PHB) or (not PHB and DLB and PHA) or ( PHB and not DLB and not PHA) PLS lt= (not PHA and DLA) or (PHA and not DLA) or (not PHB and DLB) or (PHB and not DLB) end block DECODER 其中

1PHAPHB為經過雜訊濾波後的 AB相訊號而 DLADLB是其延遲訊號 2根據乘四解碼電路的公式取得 DIR和 PLS訊號其中 DIR用以控制計數器的正反向 PLS用以控制計數器的計數與否

所以接下去就是正反計數器的設計範例如下

COUNTER block signal Q STD_LOGIC_VECTOR(11 downto 0) begin process (CLKRESET) -- sequential logic begin if RESET=1 then --power-on reset Qlt=000000000000 --reset to 0 elsif CLKevent and CLK=1 then --CLK=gt1 trigger if PLS=1 then --clock enable if DIR=1 then Qlt=Q-1 --down counter else Qlt=Q+1 --up counter end if end if end if end process -- combinational logic CNT lt= Q --counter output end block COUNTER 其中

1這是標準的正反計數器架構在開機時自動復歸 2計數器的長度為 12-bit可依需要自行調整

DCM模組中的光電盤精度為每圈500格經過乘四解碼後相當於每圈2000格所以12-bit

計數器只能處理 2 圈的應用範圍絕對不夠在真正應用時一定要用軟體或硬體的方

式再擴張成 16-bit 或是 32-bit 的寬度來處理才行

17

3實驗項目

在直流伺服馬達控制系統中規劃五個實驗項目由系統首頁做選擇每項實驗操

作整個系統實驗組成由各項實驗項目 CAI 檔及各項實驗項目程式連結 PLC 檔結合而成茲表列如下

直 流 伺 服 實 驗 e x p _d c m c ai

開 環 路 電 壓 控 制

系 統 首 頁 實 驗 程 序

e x p _p w m c ai

開 環 路 速 度 控 制 e x p _s p ee d c a i

閉 環 路 位 置 控 制 e x p _a n gl e c a i

加 減 速 的 位 置 控 制 e x p _a c c c ai

正 弦 波 位 置 控 制 e x p _s i n c ai

C A I 圖 控 檔

直 流 伺 服 實 驗 開 環 路 電 壓 控 制

系 統 首 頁 實 驗 程 序

e x p _p w m p lc

開 環 路 速 度 控 制 e x p _s p ee d p l c

閉 環 路 位 置 控 制 e x p _a n gl e p l c

加 減 速 的 位 置 控 制 e x p _a c c p lc

正 弦 波 位 置 控 制 e x p _s i n p lc

e T T Y 批 次 檔

18

4安裝程序

31 將 RFFPGA中的程式拷貝至工作硬碟中進入 DC子目錄資料夾中其中包含下

列檔案

檔案 內容說明 mod SIN_wave MODPWM_wave MODIIR1_filter MODDAS4

MODPOS_inputMODPWM_outputMODACC_controlMODPD_controlMOD這些檔案是由 ASM重新編譯出由 testDCMmem所需執行模組檔

asm SIN_waveasmPWM_waveasmIIR1_filterasmDAS4asm POS_inDCMasmPWM_outDCMasmACC_conDCMasmPD_controlasm是各模組組合語言所設計 SOURCE檔

plc 為進行實驗所需的各批次檔 bit piDSPv0bit為下載到 FPGA的 BIT檔其功能為將 FPGA規劃成

具備 piDSP控制晶片功能提供直流伺服控制所需的控制程式

撰寫 testDCMsys 記載進行 DCM實驗時所需的模組 testDCMMEM 連結完成的 DSP執行檔用來進行 DCM實驗 testDCMvar 紀錄 DCM實驗時的參數對照表

在進行實驗前先將實驗所需的系統程式與模組程式分別說明加以說明系統所

需的程式模組由 testDCMsys 來描述程式列印如下

module fg1 PWM_wavemod 方波產生器

module fg2 SIN_wavemod 弦波產生器

module cn1 ACC_controlmod 加減速控制器

module cn2 PD_controlmod 比例微分控制器

module io1 POS_inputmod 位置和速度讀值

module io2 PWM_outputmod PWM 電壓輸出界面

module ft1 IIR1_filtermod 一階濾波器

module das das4mod 示波器資料蒐集

module io3 LEDKEYmod LEDKEY 界面

其中包括

1兩組波型產生器作為測試命令包括正弦波和方波 2兩組控制器提供包括加減速PD控制器的功能可依照實驗需求搭配使用 3兩組輸入輸出界面執行 PWM輸出和相位回授的界面處理 4一組低通濾波器作為電壓開迴路控制迴路和速度閉迴路控制的模擬使用 5DAS4mod是示波器專用的配合模組不論任何實驗都必須加入此模組 6Ledmod是四位數字七段顯示與 44矩陣按鍵模組

19

5執行程序

首先進入 RFFPGA 裡子目錄 DC直接點選 fPLCexe 出現下面操作畫面(也可直接將此檔

案放置桌面直接點選)

進入下面操作畫面

20

首先使用滑鼠在 FPGA下載按鈕單擊動作使 FPGA變成 piDSP晶片 如您撰寫組合語言時可使用 eASM按鈕 經編譯完成後產生MOD檔 如您撰寫系統連結程式時可使用 eLINK按鈕 經連結完成後產生MEM與VAR檔 點選實驗三後顯示如下 選擇程式下載再按程式啟動這時直流伺服馬達開始做位置控制在操控畫面放置 P 參數設定欄更改參數時馬達即時隨參數改變而產生不同響應 直接點選程式停止時結束所有控制動作再按回首頁選擇其他實驗

21

6實驗說明

下圖所示為直流馬達的控制系統方塊圖透過電流速度以及位置的回授再搭

配適當的控制器可建立完整的閉迴路控制系統在後面的實驗中將依此一系統方塊圖

逐步建立速度和位置的控制實驗各實驗的說明和操作方式及參考實驗結果將逐一進

行詳細的說明

控制

參考位置

速度 位置速

度控制 電流控制

電力電

子換流

位置速

度感測

i

+ -

壓ν

位置

速度

i

DC直流馬達之控制系統方塊圖

PWM 驅動方式只是簡單的開環路控制而高精度的馬達控制必須透過回授控制來完成

對於邏輯電路的設計者而言必須先瞭解基本的回授控制架構以便將來轉換成實用的

邏輯電路設計

設計說明

開環路特性

在電壓驅動的狀況下直流馬達開環路控制的示意圖如下

+-

22

如果換算成數學模式則轉換成下面的架構

+-Vc

R L

EMF

+

-

ITB

J

ω

其中

1其中的變數和參數包括 Vc 控制的電壓命令 R 電樞迴路的等效電阻 L 電樞迴路的等效電感 EMF電樞產生的反電動勢 i 電樞迴路中的電流 T 馬達所產生的扭力 J 馬達和負載的等效慣量 B 馬達和負載的等效摩擦力 ω 馬達所產生的速度 2所牽涉的物理公式包括 電壓迴路Vc = Ri + L(didt) + EMF 即電樞迴路中的電壓平衡 動力負載T = Bω + J(dωdt) 即扭力平衡 馬達特性T = Kti 所產生的扭力和電流成正比 電機特性EMF= Keω 所產生的電動勢和轉速成正比 其中新增的參數包括 Kt馬達的扭力常數 Ke馬達的反電動勢常數 3將微分項作拉式轉換(Laplase Transformation)的對映即 s = ddt 可將微分方程式轉換成更簡單的代數方程式而產生到下面的控制方塊圖

sL+R1Vc

+-EMF

iKt

TsJ+B1 ω

Ke

4在直流馬達的開環路特性中控制電壓(Vc)時輸入點而馬達轉速(ω)是輸出點即是控制馬達電壓以控制馬達轉速

5基本上馬達的開環路特性是個兩階系統類似於低通濾波器的特性在許多應用 場合其開環路特性還可以再簡化成一階系統方塊圖如下

23

sτ +1

KmVc ω 其中 τ一階系統的時間常數 Km一階系統的穩態增益

採用兩階系統的分析方式雖然會比較精細但是用一階系統來分析則可簡化所有的設計

過程因為這裡的實驗重點是邏輯設計所以在本章中我們都用一階系統作分析

系統響應的要求

就控制系統而言最重要的需求就是系統響應包括

穩態特性通常以穩態誤差為指標即是穩態時系統輸出和輸入之間的差異 暫態特性通常以上升時間(Rise Time)和過越比率(Overshoot)為指標

一個理想中的伺服控制系統其系統響應應該是

1穩態誤差為 0即馬達輸出將追隨輸入作變化沒有誤差 2過越比例為 0即馬達輸出絕對不會產生衝過頭的現象 3上升時間為 0即馬達輸出隨時追上輸入命令不會有控制上的延遲現象

當然這是太理想了一個合理的伺服控制系統應該是

1穩態誤差越小越好最好為 0 2過越比例越小越好最好為 0 3上升時間越短越好當然無法為 0但是盡力就是了

速度的回授控制

回授控制的目的就是為了改善系統響應以一階系統代表的馬達控制為例

sτ+1

KmVc ω

在步階響應(Step Response)時其特性如下

1穩態誤差由 Km決定 2過越比例為 0 3上升時間即是其時間常數(τ)

如果用比例控制器(P 控制器)作速度回授的控制則控制方塊圖如下

sτ+1

KmVc ωKp

err

P控制器 直流馬達ωc

速度回授

速度命令 + 速度響應-

24

其中

1速度命令並不直接控制馬達的驅動電壓而是 A將速度命令和速度回授相比找出其誤差訊號 err B依誤差訊號來控制驅動電壓 誤差越大則驅動電壓越高 誤差越小則驅動電壓越低 誤差為負則驅動電壓也為負 其中的比例關係由 P控制器中的 Kp 來調整 2經由數學分析後其步階響應的特性為 A穩態誤差變成 1(1+kpkm)如果 kpkmgtgt1則穩態誤差將趨近於 0 B過越比例仍為 0 C上升時間即是由τ變成τ(1+kpkm)所以上升時間將變短 3換句話說只要 Kp值夠大不論是穩態誤差或是上升時間都會大幅改善

理論上P控制器的增益是越高越好最好是無限大但是實際上是有限制的原因是

1馬達的開環路特性是兩階系統而非一階系統一階系統只是簡化後的結果 2當兩階系統作高增益的回授控制時當增益過高時會產生極嚴重的過越現象使得

馬達產生巨幅震動而難以控制

所以 P控制器的增益雖然是越高越好但調整時仍要小心維持(過越比例為 0)的條件

轉角的回授控制

做為馬達的速度控制P控制器的效果不錯但是如果將 P控制器應用到馬達的轉角控

制其特性就不太理想圖示如下

sτ+1

KmVc ωKp

err

P控制器 直流馬達

θc

轉角回授

轉角命令 + 轉角響應-

s1 θ

其中

1從馬達的速度到轉角之間具有積分特性即 馬達的轉角是馬達速度的積分結果而 馬達的速度是馬達轉角的微分結果而 2其中的積分特性使得整個系統由一階特性變成兩階特性在兩階系統中當設定高

增益時會產生極嚴重的過越現象使得馬達產生巨幅震動而難以控制 3在 P控制器增益無法提高的狀況之下轉角控制效果將無法獲得改善

雖然 P控制器在轉角控制上的效果並不好但是在控制系統中還是有許多法寶可以選擇

25

其中 PD 控制器就是簡單又有效的一個好方法

從表面上來看PD 控制器比 P控制器多了一個微分項就數學上來看這微分項提供了

一個新零點(Zero)可以調整根軌跡圖的走向就實驗上來說這微分項提供了控制器

的預測功能說明如下

sτ+1

KmVc ωKp+sKd

err

P控制器 直流馬達

θc

轉角回授

轉角命令 + 轉角響應-

s1 θ

1轉角控制中 P控制器的問題是在嚴重的過越現象原因是在 P控制器的作用下只有當回授超過命令時才能做出「負向」的控制但這時已經來不及了因為積分器

中已經累積了過多的能量而無法立刻消失使得馬達轉角衝過了頭 2解決之道就是在回授超過命令之前就必須做出「負向」的控制使得積分器累積

的能量逐步減弱在到達目標時才能立刻煞車才能解除過越現象 3而微分項就是這個預測量因為當誤差量越來越小時其微分項是負值雖然微分

項(D)是負值 當誤差量(P)很大時(P+D)的結果還是正值所以還是「正向」控制 當誤差量(P)漸小時(P+D)的結果變成負值才會開始「負向」控制 換句話說在誤差為 0之前即可啟動負向控制產生煞車作用使得馬達提前減速

而即時停止在目標點上自然就解除過越現象了

所以在 PD 控制器中有兩項調整量其中

1Kp增益提供比例控制部分的增益而 Kd增益提供微分控制部分的增益 2Kp增益控制馬達的趨近速度主要影響的是上升時間 3Kd增益控制馬達的提前煞車主要影響的是過越比例 4在兩者搭配下就有機會得到 很快很短的上升時間同時也 不會產生過越現象

PD 控制器的執行

依據 PD 控制器公式可以建立以數位執行的 PD 控制器如下圖所示

cmdKp

fdk

+

-

err

old

+-

Kd

Z-1

out+

+

26

其中

1利用差分公式來取代 PD控制器中的微分公式定義如下 s ==gt (1-Z-1)DT 其中對映的變數包括 s 微分項 Z-1延遲一個抽樣週期 DT抽樣週期單位為 sec 2就執行面而言Z-1是延遲一個抽樣週期也就是以抽樣週期所控制的暫存器 3在上圖中將命令(cmd)和回授(fdk)相減後得到誤差值(err)再將 err延遲一個抽樣週期成為 old所以(err-old)DT即是微分項

4原始的微分控制公式為(err-old)DTKd必須先除再乘但是因為 DT和 Kd 都是常

數可以預先將 Kd修正成 Kd=(KdDT)那麼公式將修正為(err-old)Kd就只需要一個乘法而不需要除法了

同樣的 PD 控制器可以用許多不同的方法作執行包括

1以軟體方式執行例如在 DSP核心中以組合語言撰寫控制模組 2以硬體方式執行例如在 FPGA中直接設計邏輯電路 3以微碼方式執行以微碼作順序控制執行硬體運算工作

這裡先提供用組合語言撰寫的程式模組作為設計參考其他兩種方法將在後續的實驗中

再陸續作說明

模組程式範例PD_controlasm

local cmd R0 IP gnd 輸入點位置命令(可忽略) local fdk R1 IP gnd 輸入點位置回授(可忽略) local out R2 OP 輸出點用以控制速度迴路 local kp R3 256 參數增益 kp10=256 local kd R4 0 參數增益 kd10=256 local err R5 0 內部變數 local old R6 0 內部變數 local gnd R7 0 無輸入時的短路點 data 8 模組變數區長度 initial 開機啟動程序 WR out0 WR old0 RET out=old=0 timer 即時控制程序 RD (cmd) SUB (fdk) WR err MUL kp SFR 8 P=(cmd-fdk)kp256 RDS err SUBX old MUL kd SFR 8 D=(err-old)kd256 ADDS WR out out=P+D RET

27

其中

1PD控制模組中對外的界面變數包括 cmd命令的輸入點 fdk回授的輸入點 out控制的輸出點 2內部參數包括 Kp比例控制增益其中 10=256所以乘完後還需要再右移 8-bit Kd微分控制增益其中 10=256所以乘完後還需要再右移 8-bit 3內部變數包括 err臨時性的變數用以儲存誤差值的計算結果 old儲存性的變數用以儲存上一次抽樣控制時的 err值 4模組程式分成三部分包括 變數宣告local和data所宣告的部分 初值設定initial程序中先將 out和 old設定為 0 即時控制timer程序中依序執行 PD控制器中的每個步驟

控制目標的選擇

從字面上來看速度控制就是控制馬達的速度轉角控制就是控制馬達的轉角沒什麼

好討論的但是實際上確有許多問題第一的問題就是什麼是速度和轉角馬達的速

度和轉角如果不作量測如何得知

既然在量測中取得了速度和轉角資料那麼我們所控制的到底是物理學上的速度和轉

sτ+1

KmVc ωKp+sKd

err

P控制器 直流馬達

θc

轉角回授

轉角命令 + 轉角響應-

s1 θ

KxANG

轉角量測

角還是量測上的速度和轉角以下圖為例

其中

1以轉角量測裝置量測轉角例如裝在馬達軸端的光電盤和解碼電路 2轉角的量測輸出是 ANG而 ANG和物理轉角θ之間有 Km的增益關係 3只要 Km值不是 1那麼系統就不再是單位回授 4如果 Km還有非線性或失真現象那麼控制結果也將有非線性或失真現象

這些問題混雜起來會使得控制系統的分析變得更複雜如果要簡單處理就要認同現

實環境直接以量測結果為控制目標如下圖所示

28

sτ+1

KmVc ωKp+sKd

err

P控制器 直流馬達

θc

轉角回授

+-

s1 θ Kx

ANG轉角量測

其中

1直接以量測結果為控制目標將全系統還原成標準的單位回授控制 2所有的非線性或失真現象都進入開環路討論屬於可以補償的部分 3但是控制結果就是「量測上的轉角」而「物理學上的轉角」

量測誤差的問題

轉角θ

量測ANG

對於量測誤差而言最明顯的問題就是量化誤差圖示如下

其中

1以 DCM模組中的光電盤為例精度為每圈 500格經由乘四解碼計數後其等效

精度增加為每圈 2000格 2比(12000)圈更精密的部分都無法響應換句話說振幅越大的控制其相對誤差越

小而振幅越小的控制其相對誤差越大例如 當振幅為(12)圈時其控制誤差量為 01而 當振幅為(120)圈時其控制誤差量為 1 這是標準的的非線性現象

量化誤差不只影響穩態上的精度還會造成非線性的震動問題圖示如下

t

誤差值

+1

-1

其中

1由於量化誤差的問題只有當誤差超過+1或是-1時才會真正偵測到誤差也才

29

會施加控制量作補償 2所以穩態時的誤差將在+1-1之間擺動造成微幅的振動 3量化誤差越大震動越明顯而量化誤差很小時通常不易察覺出震動現象

微分量的計算

伺服系統中有兩處需要用到微分計算包括

1PD控制器中誤差微分量的計算 2速度控制器中速度回授值的量測

在理論上微分公式是(dXdt)相當於 dXdt = (X(n)-X(n-1))DT (當 DT趨近於 0時)

所以當微分計算中的抽樣週期(DT)越短時微分的計算值將越接近理論值但是事實上

卻非如此以下圖為例

t

X

DTDX

其中

1當 X值為等速度運動時其微分量就是其斜率相當於 DXDT 2DT是微分計算中的抽樣週期理論上越短越好但是由於 DX本身的量化誤差

使得這個原則不再成立例如當斜率為 7394時 若 DT=1000則 DX=7394而 DXDT=7394 若 DT=100 則 DX=739 而 DXDT=739 若 DT=10 則 DX=73 而 DXDT=73 若 DT=1 則 DX=7 而 DXDT=7 3換句話說當抽樣週期越短時DX的量化誤差將越明顯而造成微分計算上更嚴

重的誤差

在 DCM 模組中速度量測的量化誤差分析如下

1馬達上的光電盤精度為每圈 500格經過乘四解碼後等效精度為每圈 2000格 2當馬達轉速為 1200RPM而抽樣頻率為 1KHz時對映的速度量測值為 1200(圈分)2000(格圈)60(秒分)1000(DT秒) = 40(格DT) 3換句話說1200RPM的轉速對映到 40的速度量測值即速度單位=30RPM若最

高轉速為 3000RPM則在+-3000RPM的速度範圍內其量化誤差為 05相當於8-bit的 ADC轉換器精度

4對映不同的抽樣頻率的量化誤差表列如下

30

光電盤精度 最高轉速 抽樣頻率 速度單

速度範圍 量化誤差

500PPR 3000RPM 1KHz 30RPM +-100 05 500PPR 3000RPM 2KHz 60RPM +-50 1 500PPR 3000RPM 4KHz 120RPM +25 2

過溢現象的處理

輸入

輸出

32767

-32768

整數運算都有數值範圍限制以 16-bit 整數而言輸入輸出的關係如下

其中

1當超過正負數的上下限時數值會正負顛倒例如 +32768 將會視為 -32768作處理而 +32769 將會視為 -32768作處理依此類推 2換句話說16-bit的整數運算只有在+-32767之間是線性的對映關係而超過這個範圍就是非線性的對映關係

3不但如此還因為正負顛倒的現象使得原來設計的負回授控制將變為正回授控制

而產生非線性的震盪現象 4換句話說只要計算上稍一不慎就會使得原先穩定的系統產生不穩定的震盪結果

為了避免過溢現象所造成的不穩定問題通常控制系統中會利用飽和處理作改善圖示

如下

輸入

輸出

lmtH

lmtL

31

其中

1當超過計算的上限時將固定設為上限值處理而當超過計算的下限時也將固定

設為下限值處理 2這時的整數運算只有在上下限之間是線性的對映關係而超過這個範圍將還是非線

性的對映關係 3雖然如此但是因為沒有正負顛倒的現象所以不再會有負回授變為正回授的問題

而避免了非線性的震盪現象 4換句話說飽和處理是針對過溢現象的妥協處理方案雖然不完全理想但是是可

接受的最佳選擇

下面是對映的組合語言範例

RD x x為輸入端 MIN lmtH 取得 x和 lmtH中的較小值即是作上限保護的工作 MAX lmtL 取得 x和 lmtL中的較大值即是作下限保護的工作 WR y Y為輸出端 其中

1組合語言中提供MAX和MIN的計算其中 MIN lmtH 比較 AX暫存器和 lmtH而將較低值存入 AX暫存器中 MAX lmtL 比較 AX暫存器和 lmtH而將較高值存入 AX暫存器中 2所以直接可用MIN指令作上限保護而以MAX指令作下限保護兩者合併後即是

完整的飽和處理結果

飽和處理通常應用在高位數轉成低位數的場合例如32-bit轉換成16-bit或是16-bit

轉換成 12-bit 等等例如在本實驗中所有的運算都是以 16-bit 整數作處理但是到

PWM 驅動級輸出時卻要轉換成 12-bit精度的 PWM 命令所以必須先用飽和處理以避免

過溢現象造成的不穩定問題

32

61 實驗 1-開迴路的電壓控制 實驗說明以電壓直接控制轉速的開迴路特性可簡化為一階系統處理方塊圖如

sτ+1

v km ωm

其中V 送給驅動器的 PWM電壓命令

ωm馬達的轉動速度可由處理 photo encoder信號所得的位置微分而得 km一階系統的穩態增益 τ一階系統的時間常數即步階響應中的上升時間

為了觀測直流馬達的開環路特性建立下面的測試方塊圖

其中

1所使用的模組包括 FG1方波產生器產生所需的步階測試波形 FT1馬達模擬以一階系統的低通濾波器來執行 IO1光電盤的回授處理可同時取得轉角和速度的量測值 IO2PWM電壓驅動直接驅動直流馬達作控制 Led四位數字七段顯示模組顯示波形信號資料 2測試目標有兩項(P 參數設定欄)包括 A調整方波命令控制直流馬達作開環路的 PWM電壓控制 B調整馬達模擬參數使模擬結果和實驗結果相符以確認開環路特性

33

實驗畫面顯示如下

測試一 開環路的電壓控制 記錄頻道 CH1電壓命令Y1=-300DY=500 CH2模擬速度Y2=-100DY=500 CH3馬達速度Y3=100DY=50 CH4馬達轉角Y4=300DY=50000 實驗參數 FG1kAMP=256電壓命令的測試振幅 FG1kFRQ=150電壓命令的測試頻率 FT1DT =10 馬達模擬參數 FT1KA =500馬達模擬參數

其中

1用示波器功能記錄四個頻道其中 CH2和 CH3重疊顯示以比較模擬速度和量測

速度之間的差異 2由於 Km 不等於 1所以必須調整 CH3的 Y軸單位才能使得 CH2和 CH3的穩態響應部分重疊

3實驗時可以改變 FG1的參數以調整測試方波的振幅和頻率 4可以調整 FT1的參數使得 CH2和 CH3的暫態響應部分重疊

根據實際的測試結果分析如下

2馬達模擬的參數調整到 DT=10而 KA=500根據公式 τ = 40961000dtka 所以上升時間(τ)為 0082秒或是 82ms 3CH2CH3的 Y軸單位並不一致顯然 Km 不等於 1經計算確認 Km=0098

對應之 plc檔程式說明(exp_pwmplc) echo off 畫面顯示開始

run dsp 0 選擇 DSP1

run stop run reset 既有程式停止

run testDCMmem 下載指定程式

das 1 ampfg1out 0 1024 PWM 波形 Volt 設定 DAS 頻道1

das 2 ampft1lp 0 1024 馬達模擬 Volt 設定 DAS 頻道2

das 3 ampio1spd 0 1024 馬達速度 Volt 設定 DAS 頻道3

das 4 ampio1ang 0 1024 馬達角度 Volt 設定 DAS 頻道4

plot select 0 設定示波器頁數

plot xunit 100000 0 設定示波器 X軸

plot yunit 1 500 -300 設定示波器 Y1 軸

34

plot yunit 2 500 -100 設定示波器 Y2 軸

plot yunit 3 50 100 設定示波器 Y3 軸

plot yunit 4 50000 300 設定示波器 Y4 軸

plot trigger 1 0 1 10 設定示波器觸發

plot scope 9 1 2 3 4 設定示波器顯示

module io2 設定 io2 模組

s cmd ampfg1out

module fg1 設定 fg1 模組

s kAmp 256 s kFrq 150

module ft1 設定 ft1 模組

s u ampfg1out s dt 10 s ka 500

module io3 設定 io3 模組

s led ampfg1out

module 回復預設模組

run 1khz 設定抽樣頻率為 4KHz

run start DSP 開始執行

das stop pause 1 DAS 啟動 das start DAS 啟動

echo on 回復正常訊息顯示

使用者可視情況調整一階濾波器的 ka和 dt值使得 ch2和 ch3 兩組波形完全相符

以求得開迴路系統近似的一階轉移函數 CAI操控設計畫面規劃如下(EXP_PWMCAI) page 1 畫面設計

35

page 2 畫面設計 page 3 畫面設計

36

實測響應圖

訊 號 說 明 訊 號 說 明 ch1 方波產生器訊號 ch3 一階濾波器輸出信號 ch2 馬達角速度訊號 ch4 馬達角位置訊號

直流馬達之開迴路電壓控制響應圖

37

以邏輯分析功能觀測直流馬達之光電盤輸入與 PWM輸出信號

38

62 實驗 2-閉迴路的速度控制 實驗說明為了觀測閉迴路的速度控制響應建立下面的測試方塊圖

加入 PD控制後系統閉迴路的轉移函數經適度的簡化仍能約略以一階系統

處理方塊圖如下

sτ+1

u km ωm

其中

u 送給控制器的速度命令

ωm馬達的轉動速度可由處理 photo encoder 信號所得的位置微分而得

km一階系統的穩態增益 τ一階系統的時間常數即步階響應中的上升時間

方塊圖中的模組功能說明如下

1用 fg1 產生測試用的方波速度命令

2將方波速度命令和速度回授訊號送到 PD 控制器方塊中產生電壓控制訊號再透

過 io2 模組將訊號送出給伺服介面

3用 ft1 建立對照用的一階系統可用 IIR1濾波器方塊產生

4將方波命令產生速度命令再觀測 PHT(io1)上的速度值 spd

5調整 IIR1濾波器的參數使得兩組波形完全相符這時 IIR1濾波器就是閉迴路

速度控制的特性其中 km 為增益而τ為上升時間(單位為 sec)

6增益 km 可從示波器中作簡單計算而上升時間(τ=40964000dtka)

7 Led四位數字七段顯示模組顯示波形信號資料

39

對應之 plc檔程式說明(exp_speedplc) echo off 畫面顯示開始

run dsp 0 選擇 DSP1

run stop run reset 既有程式停止

run testDCMmem 下載指定程式

das 1 ampfg1out 0 1024 PWM 波形 Volt 設定 DAS 頻道1

das 2 ampft1lp 0 1024 馬達模擬 Volt 設定 DAS 頻道2

das 3 ampio1spd 0 1024 馬達速度 Volt 設定 DAS 頻道3

das 4 ampio1ang 0 1024 馬達角度 Volt 設定 DAS 頻道4

plot select 0 設定示波器頁數

plot xunit 100000 0 設定示波器 X軸

plot yunit 1 50 -300 設定示波器 Y1 軸

plot yunit 2 50 -100 設定示波器 Y2 軸

plot yunit 3 50 100 設定示波器 Y3 軸

plot yunit 4 50000 300 設定示波器 Y4 軸

plot trigger 1 0 1 10 設定示波器觸發

plot scope 9 1 2 3 4 設定示波器顯示

module io2 設定 io2 模組

s cmd ampcn2out

module fg1 設定 fg1 模組

s kAmp 50 s kFrq 150

module cn2 設定 cn1 模組

s cmd ampfg1out s fdk ampio1spd s kp 0x4000

module ft1 設定 ft1 模組

s u ampfg1out s dt 2 s ka 320

module io3 設定 io3 模組

s led ampfg1out

module 回復預設模組

run 1khz 設定抽樣頻率為 4KHz

run start DSP 開始執行

das stop pause 1 DAS 啟動 das start DAS 啟動

echo on 回復正常訊息顯示

CAI操控設計畫面規劃如下(EXP_speedCAI)

40

page 1 畫面設計 page 2 與 page 3 畫面設計與實驗一 page 2 與 page 3相同畫面 page 4 畫面設計

41

方塊的參數設定 使用者可視情況調整一階濾波器的 ka和 dt值使得 ch2和 ch3 兩組波形完全相符

以求得此一閉迴路系統近似的一階轉移函數或調整 PD控制器中的 kp和 kp值以調整系統之響應 實測響應圖

訊 號 說 明 訊 號 說 明 ch1 方波產生器產生之速度命令 ch3 一階濾波器輸出信號 ch2 馬達角速度訊號 ch4 馬達角位置訊號

42

直流馬達之閉迴路速度控制響應圖

43

63 實驗 3-閉迴路的位置控制 實驗說明為了觀測閉迴路的位置控制響應將直流馬達的回授改為位置訊號

建立下面的測試方塊圖 方塊圖中的模組功能說明如下

1用 fg1產生測試用的方波位置命令 2將方波位置命令和位置回授訊號送到 PD控制器方塊中產生電壓控制訊號再透過 io2模組將訊號送出到伺服介面驅動馬達轉動

對應之 plc檔程式說明(exp_angleplc) echo off 畫面顯示開始

run dsp 0 選擇 DSP1

run stop run reset 既有程式停止

run testDCMmem 下載指定程式

das 1 ampfg1out 0 1024 PWM 波形 Volt 設定 DAS 頻道1

das 2 ampft1lp 0 1024 馬達模擬 Volt 設定 DAS 頻道2

das 3 ampio1spd 0 1024 馬達速度 Volt 設定 DAS 頻道3

das 4 ampio1ang 0 1024 馬達角度 Volt 設定 DAS 頻道4

plot select 0 設定示波器頁數

plot xunit 100000 0 設定示波器 X軸

plot yunit 1 1000 -300 設定示波器 Y1 軸

plot yunit 2 1000 -100 設定示波器 Y2 軸

plot yunit 3 20 100 設定示波器 Y3 軸

plot yunit 4 1000 300 設定示波器 Y4 軸

plot trigger 1 0 1 10 設定示波器觸發

44

plot scope 9 1 2 3 4 設定示波器顯示

module io2 設定 io2 模組

s cmd ampcn2out

module fg1 設定 fg1 模組

s kAmp 1000 s kFrq 75

module cn2 設定 cn1 模組

s cmd ampfg1out s fdk ampio1ang s kp 0x300 s kd 0x4000

module ft1 設定 ft1 模組

s u ampfg1out s dt 2 s ka 320

module io3 設定 io3 模組

s led ampfg1out

module 回復預設模組

run 1khz 設定抽樣頻率為 4KHz

run start DSP 開始執行

das stop pause 1 DAS 啟動 das start DAS 啟動

echo on 回復正常訊息顯示

CAI操控設計畫面規劃如下(EXP_angleCAI) page 1 畫面設計

45

page 2 與 page 3 畫面設計與實驗一 page 2 與 page 3相同畫面 page 4 畫面設計與實驗二 page 4 畫面 方塊的參數設定 延續上一實驗的說明使用者可以調整 PD控制器中的 kp和 kd值以調整系統之

響應 實測響應圖

訊 號 說 明 訊 號 說 明 ch1 方波產生器產生之位置命令 ch3 馬達角速度訊號 ch2 馬達角位置 ch4 Pd控制器輸出之電壓訊號

46

直流馬達之閉迴路位置控制響應圖

47

64 實驗 4-加減速的位置控制 實驗說明為避免方波命令的過於嚴苛在方波命令的輸出加入一加減速控制功

能方塊以減緩命令變化的幅度增加馬達運動的平順建立的測試方塊圖如下

方塊圖中的模組功能說明如下

1用 fg1產生測試用的方波位置命令 2將方波位置命令送到加減速控制方塊處理後產生新的位置命令再將新的位置命

令與位置回授訊號送到 PD控制器方塊中產生電壓控制訊號最後透過 io2模組將訊號送出到伺服介面驅動馬達轉動

對應之 plc檔程式說明(exp_accplc) echo off 畫面顯示開始

run dsp 0 選擇 DSP1

run stop run reset 既有程式停止

run testDCMmem 下載指定程式

das 1 ampfg1out 0 1024 PWM 波形 Volt 設定 DAS 頻道1

das 2 ampcn1out 0 1024 加速控制 Volt 設定 DAS 頻道2

das 3 ampio1spd 0 1024 馬達速度 Volt 設定 DAS 頻道3

das 4 ampio1ang 0 1024 馬達角度 Volt 設定 DAS 頻道4

plot select 0 設定示波器頁數

plot xunit 100000 0 設定示波器 X軸

plot yunit 1 2000 -300 設定示波器 Y1 軸

plot yunit 2 2000 -100 設定示波器 Y2 軸

plot yunit 3 50 100 設定示波器 Y3 軸

plot yunit 4 2000 300 設定示波器 Y4 軸

48

plot trigger 1 0 1 10 設定示波器觸發

plot scope 9 1 2 3 4 設定示波器顯示

module io2 設定 io2 模組

s cmd ampcn2out

module fg1 設定 fg1 模組

s kAmp 2000 s kFrq 150

module cn1 設定 cn1 模組

s cmd ampfg1out

module cn2 設定 cn2 模組

s cmd ampcn1out s fdk ampio1ang s kp 0x300 s kd 0x4000

module ft1 設定 ft1 模組

s u ampfg1out s dt 2 s ka 320

module io3 設定 io3 模組

s led ampfg1out

module 回復預設模組

run 1khz 設定抽樣頻率為 4KHz

run start DSP 開始執行

das stop pause 1 DAS 啟動 das start DAS 啟動

echo on 回復正常訊息顯示

CAI操控設計畫面規劃如下(EXP_accCAI) page 1 畫面設計

49

page 2 畫面設計與實驗一 page 2相同畫面 page 3 畫面設計與實驗二 page 4相同畫面

參數設定參考之前各實驗的說明可線上機動性的調整 PD控制器中的 kp和 kd值以調整系統之響應 實測響應圖

訊 號 說 明 訊 號 說 明 ch1 方波產生器產生之位置命令 ch3 馬達角位置 ch2 加減速模組輸出之位置命令 ch4 馬達角速度訊號

50

圖一 直流馬達經加減速控制後之閉迴路控制響應圖

51

65 實驗 5-正弦波的位置控制 實驗說明在本實驗中改變命令的波形由方波改變為正弦波並建立如下的測

試方塊圖與上一實驗相比較僅更改命令的波形產生方塊 方塊圖中的模組功能說明如下 1用 fg2產生測試用的弦波位置命令 2將弦波位置命令送到加減速控制方塊處理後產生新的位置命令再與 io1 讀入的位

置回授訊號送到 PD 控制器方塊中產生電壓控制訊號再透過 io2 模組將訊號送出到伺服介面驅動馬達轉動

對應之 plc檔程式說明(exp_sinplc) echo off 畫面顯示開始

run dsp 0 選擇 DSP1

run stop run reset 既有程式停止

run testDCMmem 下載指定程式

das 1 ampfg2out 0 1024 SIN 波形 Volt 設定 DAS 頻道1

das 2 ampcn1out 0 1024 加速控制 Volt 設定 DAS 頻道2

das 3 ampio1spd 0 1024 馬達速度 Volt 設定 DAS 頻道3

das 4 ampio1ang 0 1024 馬達角度 Volt 設定 DAS 頻道4

plot select 0 設定示波器頁數

plot xunit 100000 0 設定示波器 X軸

plot yunit 1 2000 -300 設定示波器 Y1 軸

plot yunit 2 2000 -100 設定示波器 Y2 軸

plot yunit 3 50 100 設定示波器 Y3 軸

plot yunit 4 2000 300 設定示波器 Y4 軸

plot trigger 1 0 1 10 設定示波器觸發

52

plot scope 9 1 2 3 4 設定示波器顯示

module io2 設定 io2 模組

s cmd ampcn2out

module fg2 設定 fg1 模組

s kAmp 2000 s kFrq 100

module cn1 設定 cn1 模組

s cmd ampfg2out

module cn2 設定 cn2 模組

s cmd ampcn1out s fdk ampio1ang s kp 0x300 s kd 0x4000

module ft1 設定 ft1 模組

s u ampfg2out s dt 2 s ka 320

module io3 設定 io3 模組

s led ampfg2out

module 回復預設模組

run 1khz 設定抽樣頻率為 4KHz

run start DSP 開始執行

das stop pause 1 DAS 啟動 das start DAS 啟動

echo on 回復正常訊息顯示

CAI操控設計畫面規劃如下(EXP_sinCAI) page 1 畫面設計

53

page 2 畫面設計 page 3 畫面設計與實驗二 page 4相同畫面

方塊的參數設定可調整 PD控制器中的 kp和 kd值以調整系統之響應 實測響應圖

訊 號 說 明 訊 號 說 明 ch1 弦波產生器產生之位置命令 ch3 馬達角位置訊號 ch2 加減速模組輸出之位置命令 ch4 馬達角速度訊號

54

直流馬達之閉迴路弦波加減速位置控制響應圖

55

7組合語言說明

本節將針對 DC馬達伺服控制實驗專用的程式模組進行功能與程式碼的說明其

有關於波形產生器與資料擷取模組等說明如下

SIN_waveasm 正弦波產生器 PWM_waveasm 方波產生器 IIR1_filterasm 一階濾波器 DAS4asm 資料蒐集模組

弦波產生器

此模組會產生週期性的正弦波方塊圖如下

outfrq

kBiasbias

ampkAmp

kFrqth

kThf=1TB

θ

A

其中

1正弦波有四個參數振幅(A)頻率(F)相位(θ)和偏移(B)其公式為 out = A sin(2πF t +θ) + B 2對於單純的正弦波產生器所對映的參數包括 kAmp 振幅值 kFrq 頻率值kFrq=655368000Hz其中 Hz的範圍為 0~4000例如 1000Hz =gt frq=8192 100Hz =gt frq=819 10Hz =gt frq=82 1Hz =gt frq=8 kTh 相角值0~255代表 0~360的相位當 th=0 時為正弦波 th=64 時為餘弦波 th=128時為反相波依此類推 kBias偏移值 3對於可調變的正弦波產生器其對映的輸入點為 amp 控制振幅的輸入點可產生調幅(AM)波形 frq 控制頻率的輸入點可產生調頻(FM)波形 th 控制相位的輸入點可產生調相(PM)波形 bias控制偏移的輸入點可產生雙頻混波(相加)波形 4若不使用調變功能時各個輸入點時的預設值為 amp 指向 kAmp 的位址 frq 指向 kFrq 的位址

56

th 指向 kTh 的位址 bias指向 kBias的位址

模組程式範例SIN_WAVEasm

local amp R0 IP kAmp 輸入點sin波的振幅 local frq R1 IP kFrq 輸入點sin波的頻率 local th R2 IP kTh 輸入點sin波的相角 local bias R3 IP kBias 輸入點sin波的中心偏移 local out R4 OP 輸出點sin波輸出 local tab R5 TP 表格指標指向 sin[256]的表格 local ang R6 內部變數相位角65536=360deg local kAmp R7 1000 參數振幅值 local kFrq R8 1000 參數頻率值=655368000Hz local kTh R9 0 參數相角值360deg=256 local kBias R10 0 參數偏移值 data 11 模組變數區長度及初值 initial 啟動程序 WR ang0 WR out0 ang=out=0 RET timer 即時控制程序(8KHz) RD ang ADD (frq) WR ang ang+=frq SFR 8 ADD (th) AND 255 ACC=sin(ang256+th) ADD tab WRH RDM table-look-up MUL (amp) SFR 12 ADD (bias) WR out out=ACCamp4096+bias RET table tab 256 sin[256]表格區10=4096 0 101 201 301 401 501 601 700 00~070deg 799 897 995 1092 1189 1285 1380 1474 08~0F 1567 1660 1751 1842 1931 2019 2106 2191 10~17 2276 2359 2440 2520 2598 2675 2751 2824 18~1F 2896 2967 3035 3102 3166 3229 3290 3349 20~27 3406 3461 3513 3564 3612 3659 3703 3745 28~2F 3784 3822 3857 3889 3920 3948 3973 3996 30~37 4017 4036 4052 4065 4076 4085 4091 4095 38~3F 4096 4095 4091 4085 4076 4065 4052 4036 40~4790deg 4017 3996 3973 3948 3920 3889 3857 3822 48~4F 3784 3745 3703 3659 3612 3564 3513 3461 50~57 3406 3349 3290 3229 3166 3102 3035 2967 58~5F

57

2896 2824 2751 2675 2598 2520 2440 2359 60~67 2276 2191 2106 2019 1931 1842 1751 1660 68~6F 1567 1474 1380 1285 1189 1092 995 897 70~77 799 700 601 501 401 301 201 101 78~7F 0 65435 65335 65235 65135 65035 64935 64836 80~87180deg 64737 64639 64541 64444 64347 64251 64156 64062 88~8F 63969 63876 63785 63694 63605 63517 63430 63345 90~97 63260 63177 63096 63016 62938 62861 62785 62712 98~9F 62640 62569 62501 62434 62370 62307 62246 62187 A0~A7 62130 62075 62023 61972 61924 61877 61833 61791 A8~A8 61752 61714 61679 61647 61616 61588 61563 61540 B0~B7 61519 61500 61484 61471 61460 61451 61445 61441 B8~BF 61440 61441 61445 61451 61460 61471 61484 61500 C0~C7270deg 61519 61540 61563 61588 61616 61647 61679 61714 C8~CF 61752 61791 61833 61877 61924 61972 62023 62075 D0~D7 62130 62187 62246 62307 62370 62434 62501 62569 D8~DF 62640 62712 62785 62861 62938 63016 63096 63177 E0~E7 63260 63345 63430 63517 63605 63694 63785 63876 E8~EF 63969 64062 64156 64251 64347 64444 64541 64639 F0~F7 64737 64836 64935 65035 65135 65235 65335 65435 F8~FF

就程式結構而言說明如下

timer 即時控制程序(8KHz) RD ang ADD (frq) WR ang ang+=frq SFR 8 ADD (th) AND 255 ACC=sin(ang256+th) ADD tab WRH RDM table-look-up MUL (amp) SFR 12 ADD (bias) WR out out=ACCamp4096+bias RET

1基本上我們以查表法計算 sin()其輸入θ的範圍為 0~255對映到 0~360deg其輸出 sin(θ)的範圍為+-4096對映到+-10的範圍

2建立一個內部變數 ang其範圍為 0~65535對映到 0~360的相位角 3每個timer程序都執行 ang+=frq的動作更新目前的相位角接著依照 ang的相位角查表得到 sin(ang256+th)值

4由於表格長度為 256-word所以必須將 ang256才能得到正確的對映關係而 th範圍為 0~255所以不需要像 ang一般的做額外處理

5sin()的範圍為(+1-1)而在表格中以(+4096~-4096)的型式記錄相當於 10=4096所以執行 Asin()時還要用 SFR12指令做4096的動作才能正確的取得輸出值

58

6就頻率輸入 frq而言其計算原則是將θ=ωt轉化成θ=Σ(ωdt)因為抽樣頻率

為 8KHz所以 dt=18000而得到 frq=655368000Hz公式其中 Hz為真正的頻率在 8KHz的抽樣頻率下其範圍為 0~4000

鋸齒波產生器

此模組會產生週期性的鋸齒波方塊圖如下

outfrq

kBiasbias

ampkAmp

kFrqth

kThf=1TB

θ

A

其中

1鋸齒波也有四個參數振幅(A)頻率(F)相位(θ)和偏移(B)和正弦波的定義完全一致唯一的差異是其輸出為鋸齒波而非正弦波

2基本波形是從週期開始時為 0一直遞增到週期結束時到達最高點然後立刻回歸

到 0重新開始 3以程式結構而論鋸齒波程式幾乎就是正弦波的相位計算部分只差沒有正弦波的

查表處理而已

模組程式範例SAW_WAVEasm

local amp R0 IP kAmp 輸入點sin波的振幅 local frq R1 IP kFrq 輸入點sin波的頻率 local th R2 IP kTh 輸入點sin波的相角 local bias R3 IP kBias 輸入點sin波的中心偏移 local out R4 OP 輸出點sin波輸出 local ang R5 內部變數相位角65536=360deg local kAmp R6 1000 參數振幅值 local kFrq R7 1000 參數頻率值=655368000Hz local kTh R8 0 參數相角值360deg=256 local kBias R9 0 參數偏移值 data 11 模組變數區長度及初值 initial 啟動程序 WR ang0 WR out0 ang=out=0 RET timer 即時控制程序(8KHz) RD ang ADD (frq) WR ang ang+=frq SFR 8 ADD (th) AND 255 ACC=(ang256+th)amp0x00ff MUL (amp) SFR 8 ADD (bias) WR out out=ACCamp256+bias

59

RET

脈衝波產生器

outfrq

kBiasbias

ampkAmp

kFrqth

kThf=1TB

θ

A

pwm

kDutyduty

此模組會產生週期性的脈衝波方塊圖如下

其中

1脈衝波有五個參數其中振幅(A)頻率(F)相位(θ)和偏移(B)四個參數和正弦波

定義完全一樣另外再增加一個負載率(D) 2基本波形是從週期開始時為 1隔段時間後換為 0然後持續到週期結束再重新開始其中 1所佔有的比例就是負載率當 D=0時為 0而 D=255時為 100

3和其他參數類似負載率(D)以 duty為其輸入點而以 kDuty為其參數值

模組程式範例PLS_WAVEasm

local amp R0 IP kAmp 輸入點脈衝波的振幅 local frq R1 IP kFrq 輸入點脈衝波的頻率 local th R2 IP kTh 輸入點脈衝波的相角 local bias R3 IP kBias 輸入點脈衝波的中心偏移 local duty R4 IP kDuty 輸入點脈衝波的負載率 local out R5 OP 輸出點脈衝波輸出 local ang R6 內部變數相位角65536=360deg local kAmp R7 1000 參數振幅值 local kFrq R8 1000 參數頻率值=655368000Hz local kTh R9 0 參數相角值360deg=256 local kBias R10 0 參數偏移值 local kDuty R11 128 參數負載率100 =256 data 12 模組變數區長度及初值 initial 啟動程序 WR ang0 WR out0 ang=out=0 RET timer 即時控制程序(8KHz)

60

RD ang ADD (frq) WR ang ang+=frq SFR 8 ADD (th) AND 255 ACC=(ang256+th)amp0x00ff SUB (duty) RD (amp) JLT t1 RD 0 ACC=(amp0) t1 ADD (bias) WR out out=ACC+bias RET

IIR 一階濾波器

此模組執行一階的 IIR濾波器方塊圖如下

kau x

Z-1

+

+

-

+低通濾波器

高通濾波器dx lp

hp

濾波器參數的計算公式如下

1假設濾波器的頻寬為 hz則 ωn=hz628 2若系統頻率為 8KHz則抽樣週期 dT為 dT=dt8000 其中 dt為模組參數 3則濾波器參數為 ka=ωndT4096或是 =hzdt62880004096即 =hzdt32 4當 dt決定後所允許的訊號頻寬為(4000dt)換句話說訊號頻寬會因為 dt增加而下降

為了方便實驗的運用下面列出常用的參數對照表

濾波頻寬

(Hz)

10 20 50 100 200 500 1000 2000

訊號頻寬

(Hz)

400 800 2000 4000 4000 4000 4000 4000

模組參數 dt 10 5 2 1 1 1 1 1

模組參數 ka 320 320 320 320 640 1600 3200 6400

表格的運用方式如下

1首先決定濾波頻寬 2接著查表找出對映的參數 dt和 ka 3再查表得到對映的訊號頻寬以決定是否需要串接前級濾波器

61

模組程式範例IIR1_FILTERasm

local u R0 IP 輸入點濾波器輸入 local lp R1 OP 輸出點低通濾波器輸出 local hp R2 OP 輸出點高通濾波器輸出 local dt R3 1 參數抽樣週期 local ka R4 4096 參數增益 ka10=4096 local prd R5 內部變數抽樣週期用 data 6 模組變數區長度 initial 開機啟動程序 WR lp0 WR hp0 WR prd1 RET lp=hp=0prd=1 timer 即時控制程序 SUB prd1 JNZ b9 if (--prdgt0) return RD dt WR prd prd=dt RD (u) SUB lp WR hp hp=u-lp MUL ka SFR 12 ADD lp WR lp lp+=(hpka4096) b9 RET

資料蒐集模組

資料蒐集模組是一個非常特殊的模組專門配合 eTTY 程式中的示波器使用

模組程式範例DAS4asm

local cmd R0 0 紀錄命令0=停止1=前置記錄2=正觸發4=負觸發6=觸發記錄 local dt R1 1 抽樣週期每 dT抽樣一次 local tab R2 TP DAS表格啟始位址 local cnt R3 0 目前記錄點(0~255) local ch1 R4 0 定義頻道1的變數位址 local ch2 R5 0 定義頻道2的變數位址 local ch3 R6 0 定義頻道3的變數位址 local ch4 R7 0 定義頻道4的變數位址 local trg R8 0 定義觸發頻道的變數位址 local th R9 0 觸發準位 local tail R10 0 觸發後的抽樣個數 local buf R11 1 抽樣計數(1~dt) local pnt R12 表格位址計算pnt=tab+cnt4 local len R13 表格長度計算(0~256) data 14 定義模組變數區的長度 table tab 1024 定義表格的長度 initial 啟動程序 WR cmd0 RET cmd=0 timer 控制程序

62

ADD cmd0 JZ t9 if (cmd==0) return SUB buf1 JNZ t9 if (--buf)gt0) return RD dt WR buf dt=buf RD cnt ADD 1 AND 0xff WR cnt cnt=(cnt+1)amp0xff SFL 2 ADD tab WR pnt pnt=tab+cnt4 RD (ch1) WR (pnt) ADD pnt1 pnt++=ch1 RD (ch2) WR (pnt) ADD pnt1 pnt++=ch2 RD (ch3) WR (pnt) ADD pnt1 pnt++=ch3 RD (ch4) WR (pnt) pnt =ch4 RD cmd SUB 1 JZ t9 SUB 1 JZ t2 SUB 1 JZ t3 SUB 1 JZ t4 SUB 1 JZ t5 SUB 1 JZ t6 JR t7 t2 RD (trg) SUB th JGE t9 ADD cmd1 JR t9 wait trgltth t3 RD (trg) SUB th JLE t9 JR t6 wait trggtth t4 RD (trg) SUB th JLE t9 ADD cmd1 JR t9 wait trggtth t5 RD (trg) SUB th JGE t9 JR t6 wait trgltth t6 WR len0 WR cmd7 len=0cmd=7 t7 ADD len1 SUB tail JLT t9 WR cmd0 if ((++len)gt=0x80) cmd=0 t9 RET

與 DC 馬達控制相關的程式模組有以下 4個程式模組說明如下

(1)加減速控制模組 ACC_controlasm (2)光電盤輸入模組 POS_inputasm (3)PWM輸出模組 PWM_outputasm (4)PD控制模組 PD_controlasm

71加減速控制模組 此程式模組主要功能在於執行位置控制的加減速命令修正其數學模式採用 Lynn

濾波器的架構參見下圖

cmd

2

+

old Z -1

-

Z -1

Z -1

Z-1

Z-1x0 x1 x8 x9 x16

+ -

++

2

Z-1

Z-1 y1 y2

+

-

y0

+ +

sumZ-1

+164

12

out

dif

+

63

加減速控制模組方塊圖

其中

1Lynn 濾波器的階數固定成八階也就是 m=8其公式為 H(z) = (1-2Z-m+Z-2m)(1-2Z-1+Z-2)m2

2因為m=8所以m2=64因此最後計算低通濾波的部份時要先做除 64的運算 3因為低通濾波(lp)和 y0之間有 64倍的差異代表 y0y1y2的變化範圍比濾波器輸

入值要擴大許多例如輸入值在+-1000變化時y0y1y2很可能會在+-64000之間變化這範圍已經超出整數處理的範圍很可能會造成錯誤的計算結果

4所以在實驗時輸入值的變化範圍必須控制在+-500之間以保證計算的正確性 5對於 Lynn 濾波器當 m=8時其濾波器的頻寬固定為 1 kHzmdt也就是 dt=1時頻寬為 125 Hz dt=2時頻寬為 625Hz依此類推 6對於 Lynn 濾波器其濾波器的延遲固定為 m個抽樣週期因此設計 hp = x8 - lp 即可得到高通濾波器的對應結果 7其中乘 2和除 64的運算以移位運算取代所以整個程式中並無任何乘法運算 8Lynn 濾波器本身並不是穩定濾波器所以在程式啟動時必須確實的將所有狀態

(x0~x16)歸零否則會產生不穩定的狀態輸出

因為 Lynn濾波器中所有參數固定所以除了抽樣週期 dt 之外並無任何可調參數

抽樣週期 dt 可以控制頻寬dt 越大則濾波器頻寬越低

將步階命令值的輸出送入 Lynn 濾波器中經由低通濾波器的效應可以減緩命

令的變化程度達到加減速控制的目的以下為使用 Lynn 濾波器型式實現加減速控

制的組合語言程式列印 如欲更進一步瞭解 Lynn 濾波器與 FIR 數位濾波器之間的關係可以參考通訊實驗

四數位濾波器設計(FIR)中之說明

ACC_controlasm程式列印 local cmd R0 IP 輸入點位置命令

local out R1 OP 輸出點加減速處理後的位置命令

local dif R2 OP 輸出點位置微分命令

local axis R3 0 馬達編號0=X1=Y2=Z3=C

local old R4 內部變數微分計算用

local sumL R5 內部變數積分計算用

local sumH R6 內部變數積分計算用

local y0 R7 內部變數y(0~2)

local y1 R8 local y2 R9

local x0 R10 內部變數x(0~16)

local x1 R11 local x2 R12 local x3 R13 local x4 R14

local x5 R15 local x6 R16 local x7 R17 local x8 R18

local x9 R19 local x10 R20 local x11 R21 local x12 R22

local x13 R23 local x14 R24 local x15 R25 local x16 R26

64

data 27 模組變數區長度

initial 開機啟動程序

WR dif0 RD (cmd) WR out WR old dif=0 out=old=cmd

sumHL=cmd64

SFL 6 WR sumL RD out SFR 10 SGN 5 WR sumH

RPT 17 WR x00 RPT 3 WR y00 RET x[0~16]=0y[0~2]=0

timer 即時控制程序

RD (cmd) SUBX old WR x0 x0=cmd-old old=cmd

SUB x81 ADD x16 ADD y11 SUB y2 WR y0 y0=x0-2x8+x16+2y1-y2

SGN ADD sumL WR sumL RDH ADC sumH WR sumH sumHL+=y0

WRH RD sumL SFR 6 WR out out=sumHL64

RD y0 SGN SFR WR dif dif=y032mm

RD x0 RPT 16 RDX x1 x[i]=x[i-1] i=1~16

RD y0 RDX y1 WR y2 y[i]=y[i-1] i=1~2

b9 RET

72光電盤輸入模組

DC馬達的位置由光電盤量測之預設儲存於 0xac與 0xbe二個輸入埠位址中其中位址 0xac記錄 X軸馬達的位置位址 0xbe記錄 Y軸馬達的位置由於本實驗的DC馬達接在 Y軸的位置上因此程式中直接選用 Y軸的輸入 光電盤位置輸入的程式列印如下其中速度由位置的差分而得至於馬達的位置

則使用內部 2個 word加以記錄精度為 32位元 POS_inputasm程式列印 local spd R0 OP 輸出點速度量測值

local ang R1 OP 輸出點角度量測值

local angH R2 內部變數角度的 32 位元部分

local mode R3 0x308 模式選擇15MHzAB 相正反向輸入

local pht R4 0xac 輸入阜地址光電盤輸入(0xac)

local phtc R5 0xbe 輸入阜地址光電盤模式(0xbe)

local old R6 內部變數速度更新用

data 7 模組變數區長度

initial 開機啟動程序

RD mode WR (phtc) phtc=mode

RD (pht) WR old WR spd0 RET old=phtspd=0

timer 即時控制程序

RD (pht) SUBX old SGN 11 WR spd spd=(pht-old)old=pht

65

ADD ang WR ang angHL+=spd

RDH ADC angH WR angH

RET

73 PWM輸出控制模組 模組方塊

cmd PWM輸出

程式說明 1在開機時將切換保護時間寫到輸出阜 0xbc上其中切換保護值為 0~6360=5us 2在每次 timer interrupt時將 cmd訊號處理後寫到輸出阜 0xb8上

PWM_outputasm程式列印 local cmd R0 IP gnd 輸入點v相命令

local gain R1 4096 參數輸出增益1=4096

local bias R2 2048 參數輸出偏壓0=2048

local limit R3 4095 參數輸出極限1=4095

local zone R4 0x88f0 參數頻率=12KHz切換保護=5us

local pwm R5 0xb8 輸出阜地址PWM0 輸出(0xb8)

local mode R6 0xbc 輸出阜地址PWM 模式(0xbc)

local p0md R7 0xf8 輸出阜地址port0 模式(0xf8)

local gnd R8 0 輸入接地點

data 9 模組變數區長度

initial 開機啟動程序

RD bias WR (pwm) pwm=bias

RD 0xffff WR (p0md) set port0 mode

RD zone WR (mode) RET mode=zone

stop 關機保護程序

RD bias WR (pwm) RET pwm=bias

timer 即時控制程序

RD (mode) xor 1 and 1 WR (mode) trigger watch-dog

RD (cmd) MUL gain SFR 12 ADD bias ACC=(cmdgain4096)+bias

MAX 0 MIN limit WR (pwm) pwm=limit(ACC)

RET

66

74 PD 控制模組

PD控制的模組方塊參見圖二十一所示其中比例控制的部份直接由增益 kp加以調整微分控制的部份則由誤差的差分經增益 kd的調整而得

Σ+

-

cmd

fdk

err out

Σ

pk

dk

Σ

+

+

+

-

old1minusZ

PD控制器的方塊圖

PD_controlasm程式列印 local cmd R0 IP gnd 輸入點位置命令(可忽略)

local fdk R1 IP gnd 輸入點位置回授(可忽略)

local out R2 OP 輸出點用以控制速度迴路

local kp R3 256 參數增益 kp10=256

local kd R4 0 參數增益 kd10=256

local err R5 0 內部變數

local old R6 0 內部變數

local gnd R7 0 無輸入時的短路點

data 8 模組變數區長度

initial 開機啟動程序

WR out0 WR old0 RET out=old=0

timer 即時控制程序

RD (cmd) SUB (fdk) PRTF WR err

MUL kp SFR 8 P=(cmd-fdk)kp256

RDS err SUBX old MUL kd SFR 8 D=(err-old)kd256

ADDS

WR out out=P+D

RET

程式中預設增益值的 10以整數值 256為基底因此使用 SFR 8的指令加以調

整另外在在計算微分項的程式部份用到 SUBX old的指令其詳細的暫存器動作如

下 參考 piDSP的指令說明SUBX指令將總共用到 3個時序參考錯誤 找不到參照

67

來源在時序 1時將原先 AX的資料拷貝一份到 HX中時序 2時正式執行減

法的動作所以 AX暫存器中的內容會變成 err-old時序 3時DSP會將存放在 HX暫存器中的內容拷貝一份到 old的記憶體中也就是經由 SUBX此一精簡指令將

同時完成計算差分所需要的相減與資料疊代的動作有效的利用 piDSP控制器 DSP核心的精簡指令將可以大幅提昇系統的計算速度

HX AXoldSUBXerr err

old

err

errerr olderr minus

1_err

errerr olderr minus err

1_err

1

2

3

SUBX的指令時序與暫存器變化

68

8附錄快速安裝說明

光纖網路通訊 FPGA 發展系統 (適用於 WIN-XP200098 系統)

快速安裝說明

26Pin 負載輸出入埠

雙電源︵5

12

伏︶輸入埠

單電源︵5

伏︶輸入埠

USB

光纖線輸

號 光纖線輸出埠

入 傳 埠

首先將光碟片 RFFPGA 目錄檔案拷貝在您工作硬碟裡面

第一次安裝時先將 USB 傳輸線接上電腦主機將電源供應器接上 FPGA 模組此時電

腦會出現安裝 USB-Serial 驅動程式選擇從清單安裝此驅動程式放置在光碟片

RFFPGA-USBdrive 選擇您目前安裝系統

可選擇 WIN-98WIN-MEWIN-2000WIN-XP 系統配合您現在工作電腦作業系統

69

注意一般電腦 USB 埠很多插口當您安裝驅動程式時是配合您當時插入之埠

下次如您插入不同接口埠時電腦會再次要求安裝驅動程式這是正常現象請再次安

裝驅動程式否則無法使用

FPLC 操作

首先進入 RFFPGA裡子目錄 testASM直接點選 fPLCexe 出現下面操作畫面(也可直接將

此檔案放置桌面直接點選)

(或者選擇 File 再執行 Setuphellip 選擇您要執行 CAI 檔)

70

進入下面操作畫面 首先使用滑鼠在 FPGA下載按鈕單擊動作使 FPGA變成 DSP晶片 實驗一至實驗五皆為使用 DSP組合語言設計程式其原始程式分別為 testASM1至testASM5可使用 texPad 開啟與編輯程式內容 實驗三與實驗五多有 IO控制動作 當選擇實驗三時出現下面畫面

71

eM_USB 模組

數字型 LED

0 1 2 34 5 6 78 9 A BC D E F

燈號型 LED

44 鍵盤

ADC0 ADC1 DAC0 DAC1

LED 選擇KEY 選擇

模 式 1

0123

注意操作畫面 3與 4 說明開關與按鍵選擇位置後選擇程式下載再按程式啟動如您

按下 0-3按鍵時燈號型 LED會有不同方向閃爍顯示程式停止時結束所有 IO控制動作再按回首頁選擇其他實驗 實驗四與實驗五

模式3

0 1 2 34 5 6 78 9 A BC D E F

按照上面開關選擇直接操作如果以上實驗皆能按照正常操作表示您光纖網路通訊

FPGA發展模組以能正常使用 注意 開機與關機動作順序如下

開機電腦啟動 --- eM_USB 模組電源接上 --- USB 接上電腦 ---

啟動 FPLC 軟體 --- 下載 FPGA 程式

關機關閉 FPLC 軟體 --- eM_USB 模組電源拔掉 --- 拔掉電腦 USB 接頭 ---關掉

電腦

如果以上順序有亂可能造成 USB 找不到驅動造成無法下載經過幾次測試還是

無法下載建議重新啟動電腦主機按照正確步驟操作

72

FPGA 下載操作

進入 FPLC 操作系統按照下列步驟選擇節點模組與下載 bit FPGA 檔案

在 VHDLDEMO 子目錄下您可以選擇您目前 FPGA 種類型號在此型號下我們已將 VHDL

與數位邏輯設計課本範例全部放於此處

73

光纖網路連線 FPGA 下載操作

首先利用光纖線將 eM_USB0 模組光纖輸出埠接至 eM_USB1 模組光纖輸入埠以此

類推最後再將最後 eM_USBN 模組光纖輸出埠接至 eM_USB0 模組光纖輸入埠配置

如附圖方式

個人電腦(Windows) eM_USB模組

0USB

eM_USB模組1

光纖網路

eM_USB模組2

eM_USB模組N

配置完成後進入 FPLC 系統首先必須先將 Node00 下載在 testASM 子目錄裡

piDSPv0bit 檔讓 eM_USB0 模組 FPGA 具備 DSP 功能才能執行光纖網路通訊

操作如下

此時您就可以選擇分別下載至各模組 FPGA 檔 bit

74

安裝 FPLC 注意事項

當您進入 FPLC 時

按 FILE 選擇 programhellip 選擇檔案為 exp_dcmplc 出現下面畫面

正常顯示畫面為

75

DOS 環境操作

在 PC 端的操作是在 Windows 環境中的 DOS 視窗中執行指令範例如下

eFPGA progNETbit 下載 FPGA電路至網路節點0(即 USB節點)中 eFPGA testLEDbit 1 下載 FPGA電路至網路節點1中

對於單一節點的控制程序如下

1將 eM_USB模組連結個人電腦的 USB端 2eM_USB模組開機 3執行下載指令即可 eFPGA xxxxbit 4若要更改 FPGA電路只要重新執行下載指令即可

對於多個網路節點的控制程序如下

1第一組 eM_USB模組連結個人電腦的 USB端再以光纖網路依序其他各節點 2連接 USB界面者為模組0從光纖發射端連接出去的模組為1依此類推 3將所有 eM_USB模組開機 4執行下載指令如下 eFPGA progNETbit 模組0必須先下載指定的 FPGA電路 eFPGA xxxxbit 1 再依序下載其他網路模組的 FPGA電路 eFPGA yyyybit 2 eFPGA zzzzbit 最後再重新下載模組0的 FPGA電路 5換句話說模組0必須先執行 progNETbit讓光纖網路接受 FPGA控制後才能透過光纖網路下載至其他節點等全部網路節點下載完畢後再將模組0的 FPGA重新下載讓模組0也可自由執行任意的 FPGA電路

6若要更改某一個網路節點中的 FPGA電路只要重新執行下述指令 eFPGA progNETbit 模組0必須先下載指定的 FPGA電路 eFPGA yyyybit 2 下載指定網路模組的 FPGA電路 eFPGA zzzz bit 最後再重新下載模組0的 FPGA電路 換句話說除非模組0中的 FPGA已經包括光纖網路管理電路否則一定要先在

模組0中下載網路管理電路後才能下載指定網路節點的 FPGA電路

76

光纖網路通訊 FPGA 發展系統

系統配置

光纖網路通訊 FPGA 發展系統的系統配置圖如下

個人電腦(Windows) eM_USB模組

0USB

eM_USB模組1

光纖網路

eM_USB模組2

eM_USB模組N

其中

1基本模組為 eM_USB模組可用 USB界面和個人電腦連線並提供 USB對光纖網路的轉換功能使得個人電腦可以獨立控制光纖網路中的每個網路節點

2eM_USB模組也可以作為光纖網路中的網路節點透過光纖網路而接受個人電腦的

監控 3就個人電腦而言不論是 USB界面直接連結或是以光纖網路間接連結的 eM_USB模組都是可以直接監控的網路節點最多可以同時控制一個 USB節點和 30個網路節點

4對於每一個網路節點個人電腦都可執行 eM_USB模組中 FPGA的電路下載工作並在適當的 FPGA電路配合下可執行 eM_USB模組中 FPGA內部電路的讀寫控制 5透過適當的 FPGA電路設計各網路節點都可透過光纖網路和其他任何網路節點

作同步通訊執行 FPGA內部記憶體的資料交換資料交換頻率可達 1KHz以上

77

網路模組配置

每個網路模組的標準配置圖如下

eM_USB模組光纖網路

USB eM_FPGA卡

eM_DEMO模組

eM_EXP實驗模組

DC電源

其中

1網路模組以 eM_USB模組為主提供基本的 USB界面和光纖網路連線 2eM_USB模組中的 FPGACPLD採用插卡型式可選擇不同的 eM_FPGA卡包括

eM_2V1K卡可選用 Virtex系列的 XC2V250和 XC2V1000 eM_3S1K卡可選用 Spartan3系列的 XC3S400XC3S1000和 XC3S1500 eM_3S50卡可選用 Spartan3系列的 XC3S50XC3S200和 XC3S400 eM_95XL卡可選用 9500XL系列的 XC95144XL和 XC95288XL 3eM_USB模組中的對外連線有兩種一種是 26P接頭用以連接既有的各種實驗模

組另一種是兩組 50P接頭將 FPGA中各接腳引出用以連接專題實驗 4eM_DEMO模組就是插上 50P接頭的教學模組其中包括 LED 數字顯示和 44鍵盤也具備兩組的 ADC和兩組的 DAC接頭提供類比訊號的測試工具

常用的實驗組合包括

1精簡組合包括(eM_USB+eM_FPGA)提供基本的網路節點適用於專題實驗 2標準組合包括(eM_USB+eM_FPGA+eM_DEMO)提供基礎 FPGA設計的教學實驗

3實驗組合包括(eM_USB+eM_FPGA+eM_DEMO+eM_EXP)提供進階的 FPGA實驗可依需求選用不同的實驗模組

78

eM_USB 模組

eM_USB 模組的電路配置圖如下

TxRx

DCPower

USB

JP2

JP3

光纖界面

外加電源

PC連線

JP1

eM_FPGA模組

FT232 CPLD FlashROM

SRAM

10cm

6cm

JP4

其中

1對外的連線接頭包括 DC電源 可選擇單電源(5V)或是多電源(5V+12V-12V)兩種 USB界面 直接連接個人電腦 光纖界面連接光纖網路 2實驗界面包括 JP1負責內部 CPLD的電路下載 JP2JP3兩組 50P的擴張用接頭 JP4 標準 26P接頭用以連接各種實驗模組 3內部的電路配置包括 A以 SO-DIMM接頭連接各種 eM_FPGA卡 B內附 EEPROMFlashROM和 SRAM提供 FPGA作應用測試 C以一顆 FT232BM作為 USB界面解碼而以一顆 CPLD作為光纖網路解碼 D提供各種 eM_FPGA卡的電路下載功能 4內附五顆 LED由上而下依序為 usbLED指示 USB界面的讀寫狀態 tstLED可由 FPGA電路自行定義 stsLED可由 FPGA電路自行定義 RxLED 可由 FPGA電路自行定義 TxLED 可由 FPGA電路自行定義

79

外部接腳定義

外部接頭的接點順序圖示如下

上視圖

JP11 9 JP4

126225

JP31

50249

JP21

50249

而各接頭的接點定義如下

JP1 JP4 JP2 JP3 1+33V 1+12V 2+12V 1 GND 2 GND 1 GND 2 GND 2GND 3 ADC 4 DAC 3POWER 4ALARM 3 +5V 4 +5V 3nc 5 yPB2 6 yPB3 5RxNET 6TxNET 5+12V 6+12V 4TCK 7 yPB1 6 yPB4 7RxUSB 6TxUSB 7-12V 6-12V 5nc 9 yPB0 10yPB5 9RxCAN 10TxCAN 9 ADC 10 DAC 6TDO 11yPB6 12yPB7 11P0D0 12P0D1 11P1D0 12P1D1 7TDI 13yGND 14yPC3 13P0D2 14P0D3 13P1D2 14P1D3 8nc 15yPC2 16yPC1 15P0D4 16P0D5 15P1D4 16P1D5 9TMS 17yPC0 18yPA0 17P0D6 18P0D7 17P1D6 18P1D7 19yPA1 20yPA2 19P0D8 20P0D9 19P1D8 20P1D9 21yPA3 22GND 21P0D10 22P0D11 21P1D10 22P1D11 23GND 24+5V 23P0D12 24P0D13 23P1D12 24P1D13 25+5V 26nc 25P0D14 26P0D15 25P1D14 26P1D15 27P2D0 28P2D1 27PxA0 28PxA1 29P2D2 30P2D3 29PxA2 30PxA3 31P2D4 32P2D5 31PxA4 32PxA5 33P2D6 34P2D7 33PxA6 34PxA7 35P2D8 36P2D9 35PxB0 36PxB1 37P2D10 38P2D11 37PxB2 38PxB3 39P2D12 40P2D13 39PxB4 40PxB5 41P2D14 42P2D15 41PxB6 42PxB7 43ADC0 44ADC1 43PxC0 44PxC1 45ADC2 46ADC3 45PxC2 46PxC3 47ADC4 48ADC5 47PxC4 48PxC5 49DAC0 50DAC1 49PxC6 50PxC7

80

eM_FPGA 模組

在各種 eM_FPGA 模組中FPGA 對外電路的標準配置圖如下

24576MHz

FlashROM

26PSRAM

EEPROM

mD[8]

yPA[4]

FPGACPLD

mA[19]mRDmWRmCSeeCKeeCSeeDIeeDO

光纖界面 RxNETTxNET

USB 界面 RxUSBTxUSBCLK24MPOWERALARM

LED

tstLEDstsLEDRxLEDTxLED

yPB[8]yPC[4]

ADCDAC

ADC[8]

實驗模組

ADC[2]

DAC[2]

xPA[4]

xPB[8]

xPC[4]

基礎實驗

其中

1FPGACPLD可以選擇下述幾種 XC2V250XC2V1000 採用 eM_2V1K模組其中 FPGA為 FG456包裝 XC3S400XC3S1000XC3S1500採用 eM_3S1K模組其中 FPGA為 FG456包裝 XC3S400XC3S1000XC3S1500採用 eM_3S1K模組其中 FPGA為 FG456包裝 XC3S50XC3S200XC3S400 採用 eM_3S50模組其中 FPGA為 TQ144包裝 XC95144XLXC95288XL 採用 eM_95XL模組其中 CPLD為 TQ144包裝 2採用 FG456包裝者可以控制所有的 IO界面 3採用 TQ144包裝者只是不能控制 RAM和 FlashROM而可以控制其他所有的界面 4所有 FPGA模組都可自由選擇由 USB界面或是由光纖界面下載電路但是 CPLD模組只能固定由 USB界面下載電路

5所有 FPGACPLD模組都可透過 26P接頭連接既有的各種實驗模組

81

FPGA 接腳對照表

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

mD0 XD6 mD0 A17 C13 -- -- mD1 XD7 mD1 B17 D12 -- -- mD2 XD8 mD2 C17 D11 -- -- mD3 XD9 mD3 D17 C11 -- -- mD4 XD10 mD4 E17 D10 -- -- mD5 XD11 mD5 E16 C10 -- -- mD6 XD12 mD6 E14 D9 -- -- mD7 XD13 mD7 E13 D7 -- -- mA0 XD14 mA0 D13 C7 -- -- mA1 XD15 mA1 C13 D6 -- -- mA2 XA0 mA2 V5 C3 -- -- mA3 XA1 mA3 U5 C4 -- -- mA4 XA2 mA4 Y2 D3 -- -- mA5 XA3 mA5 Y1 D4 -- -- mA6 XA4 mA6 V4 E3 -- -- mA7 XA5 mA7 V3 E4 -- -- mA8 XA6 mA8 W2 F3 -- -- mA9 XA7 mA9 W1 F4 -- -- mA10 XA8 mA10 T2 G6 -- -- mA11 XA9 mA11 T1 K3 -- -- mA12 XA10 mA12 R4 K10 -- -- mA13 XA11 mA13 R3 L3 -- -- mA14 XA12 mA14 R2 L4 -- -- mRD XRD mRD R1 D5 -- -- mWR XWR mWR P6 C6 -- --

POWER P0A0 POWER B4 B20 P1 P5 ALARM P0A1 ALARM A4 A19 P2 P6 RxNET P0A2 RxNET C4 B19 P4 P7 TxNET P0A3 TxNET C5 A18 P5 P9 RxUSB P0B0 RxUSB B5 A15 P6 P10 TxUSB P0B1 TxUSB A5 B15 P7 P11 RxCAN P0B2 RxCAN D6 A14 P8 P12 RxCAN P0B3 TxCAN C6 B14 P10 P13

CLK24M CLK24M CLK24M E12 B12 P124 P38

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

PWM0H P3A0 P0D0 E6 A8 P21 P23 PWM0L P3A1 P0D1 E5 B8 P23 P24 PWM1H P3A2 P0D2 C2 B6 P24 P25 PWM1L P3A3 P0D3 C1 A5 P25 P26 PWM2H P3A4 P0D4 D2 B5 P26 P27

82

PWM2L P3A5 P0D5 D1 A4 P27 P28 PWMenb P3A6 P0D6 E4 B4 P28 P30 PHT1Z P3A7 P0D7 E3 A3 P30 P31 PHT1A P3B0 P0D8 G2 C1 P31 P32 PHT1B P3B1 P0D9 G1 C2 P32 P33 PHT0A P3B2 P0D10 H5 D1 P33 P34 PHT0B P3B3 P0D11 J6 D2 P35 P35 AMP0 P3B4 P0D12 H4 E1 P36 P39 AMP1 P3B5 P0D13 H3 E2 P40 P40 AMP2 P3B6 P0D14 H2 F2 P41 P41 AMP3 P3B7 P0D15 H1 G1 P44 P43 eeSK P0C3 P1D0 C10 B9 P20 P22 eeCS P0C2 P1D1 D10 A9 P18 P21 eeDI P0C1 P1D2 F10 B10 P17 P20 eeDO P0C0 P1D3 E10 B11 P15 P19 ssCK P0B7 P1D4 E8 A11 P14 P17 ssCS P0B6 P1D5 E7 A12 P13 P16 ssDI P0B5 P1D6 A6 B13 P12 P15 ssDO P0B4 P1D7 B6 A13 P11 P14

ppCLK P3C0 P1D8 K4 G2 P46 P44 ppDIN P3C1 P1D9 K3 K1 P47 P45 TxD P3C2 P1D10 K2 K2 P50 P46 RxD P3C3 P1D11 K1 L1 P51 P48

tstLED P3C4 P1D12 L5 L2 P52 P49 stsLED P3C5 P1D13 L4 M1 P53 P50 RxLED P3C6 P1D14 L3 M2 P55 P51 TxLED P3C7 P1D15 L2 N1 P56 P52

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

xPA0 P2A0 P2D0 AA3 N2 P59 P53 xPA1 P2A1 P2D1 Y4 T1 P60 P54 xPA2 P2A2 P2D2 AA4 T2 P63 P56 xPA3 P2A3 P2D3 AB4 U2 P68 P57 xPC0 P2A4 P2D4 W5 V1 P69 P58 xPC1 P2A5 P2D5 Y5 V2 P70 P59 xPC2 P2A6 P2D6 AA5 W1 P73 P60 xPC3 P2A7 P2D7 AB5 W2 P74 P61

-- P2B0 P2D8 V6 Y1 P76 P64 -- P2B1 P2D9 V7 Y2 P77 P66 -- P2B2 P2D10 W6 AA3 P78 P68

mCS P2B3 P2D11 Y6 AB4 P79 P69 mA15 P2B4 P2D12 V9 AA4 P80 P70 mA16 P2B5 P2D13 V10 AB5 P82 P71 mA17 P2B6 P2D14 W10 AA5 P83 P74 mA18 P2B7 P2D15 Y10 AA6 P84 P75 CS0 P2C0 ADC0 AA10 AB8 P85 P76

83

SDIN0 P2C1 ADC1 AB10 AA8 P86 P77 CS1 P2C2 ADC2 U10 AB9 P87 P78

SDIN1 P2C3 ADC3 U11 AA9 P89 P79 SCLK P2C4 ADC4 V11 AB10 P90 P80 CS2 P2C5 ADC5 W11 AA10 P92 P81

SDOUT P2C6 ADC6 Y11 AB11 P93 P82 LDAC P2C7 ADC7 AA11 AA11 P95 P83

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

xPB0 P1A0 PxA0 M1 M3 P135 P85 xPB1 P1A1 PxA1 M2 M4 P132 P86 yPB2 P1A2 PxA2 M3 N3 P131 P87 yPB3 P1A3 PxA3 M4 N4 P130 P88 yPB1 P1A4 PxA4 M5 T4 P129 P91 yPB4 P1A5 PxA5 M6 T5 P128 P92 yPB0 P1A6 PxA6 N1 U3 P127 P93 yPB5 P1A7 PxA7 N2 U4 P125 P94 yPB6 P1B0 PxB0 U13 V3 P119 P95 yPB7 P1B1 PxB1 V13 V4 P118 P96 xPB2 P1B2 PxB2 W13 W3 P116 P97 xPB3 P1B3 PxB3 Y13 W4 P113 P98 xPB4 P1B4 PxB4 AA13 Y3 P112 P100 xPB5 P1B5 PxB5 AB13 Y4 P96 P101 yPC3 P1B6 PxB6 U12 Y5 P97 P102 yPC2 P1B7 PxB7 V12 W5 P98 P103 yPC1 P1C7 PxC0 AB17 W11 P108 P113 yPC0 P1C6 PxC1 AA17 Y11 P107 P112 yPA0 P1C5 PxC2 Y17 W10 P105 P111 yPA1 P1C4 PxC3 W17 Y10 P104 P110 yPA2 P1C3 PxC4 AB18 W9 P103 P107 yPA3 P1C2 PxC5 AA18 W8 P102 P106 xPB6 P1C1 PxC6 Y18 W6 P100 P105 xPB7 P1C0 PxC7 W18 Y6 P99 P104

84

eM_DEMO 模組

eM_DEMO 模組的電路配置圖如下

eM_USB 模組

數字型 LED

0 1 2 34 5 6 78 9 A BC D E F

燈號型 LED

44 鍵盤

ADC0 ADC1 DAC0 DAC1

LED 選擇KEY 選擇

其中

1eM_DEMO模組的基本功能包括 A將 xPAxPBxPC等 16個 IO訊號引出控制 LED和鍵盤電路 B將 ADDA訊號引出並放大成+-10V的工作範圍 2LED和鍵盤可以選擇三種模式由 LED和 KEY 兩組開關作選擇圖示如下

模式1

0123

模式2 模式3

0 1 2 34 5 6 78 9 A BC D E F

0123

3模式14鍵輸入並搭配 16點的 LED燈號顯示其中 16點 LED分別對映到 xPA[0~3]xPB[0~7]和 xPC[0~3] 4組按鍵分別對映到 xPC[0~3] 4模式24鍵輸入並搭配四個 7段式數字顯示其中 數字顯示由 xPA[0~3]作數字掃瞄而由 xPB[0~7]作 7段式 LED控制 4組按鍵 分別對映到 xPC[0~3] 5模式316鍵輸入並搭配四個 7段式數字顯示其中 數字顯示由 xPA[0~3]作數字掃瞄而由 xPB[0~7]作 7段式 LED控制 16組按鍵由 xPA[0~3]作鍵盤掃瞄而由 xPC[0~3]作鍵盤讀取 6根據VHDL與數位邏輯設計的章節其中 第 1章至 10章的實驗採用模式1而 第 11章實驗採用模式2而 第 12章之後的實驗都採用模式3

85

FPGA UCF 定義

eM_3S1K 模組

NET CLK LOC = B12

NET XAlt0gt LOC = N2

NET XAlt1gt LOC = T1

NET XAlt2gt LOC = T2

NET XAlt3gt LOC = U2

NET XBlt0gt LOC = M3

NET XBlt1gt LOC = M4

NET XBlt2gt LOC = W3

NET XBlt3gt LOC = W4

NET XBlt4gt LOC = Y3

NET XBlt5gt LOC = Y4

NET XBlt6gt LOC = W6

NET XBlt7gt LOC = Y6

NET XClt0gt LOC = V1

NET XClt1gt LOC = V2

NET XClt2gt LOC = W1

NET XClt3gt LOC = W2

NET YAlt0gt LOC = W10

JP4 接頭

NET YAlt1gt LOC = Y10

NET YAlt2gt LOC = W9

NET YAlt3gt LOC = W8

NET YBlt0gt LOC = U3

NET YBlt1gt LOC = T4

NET YBlt2gt LOC = N3

NET YBlt3gt LOC = N4

NET YBlt4gt LOC = T5

NET YBlt5gt LOC = U4

NET YBlt6gt LOC = V3

NET YBlt7gt LOC = V4

NET YClt0gt LOC = Y11

NET YClt1gt LOC = W11

NET YClt2gt LOC = W5

NET YClt3gt LOC = Y5

在光碟片中 RFFPGAVHDLDEMOBIT3S1K 裡有 VHDL 與數位邏輯設計書本範例原始檔與合成檔

86

eM_3S50 模組

NET CLK LOC = P124

NET XAlt0gt LOC = P59

NET XAlt1gt LOC = P60

NET XAlt2gt LOC = P63

NET XAlt3gt LOC = P68

NET XBlt0gt LOC = P135

NET XBlt1gt LOC = P132

NET XBlt2gt LOC = P116

NET XBlt3gt LOC = P113

NET XBlt4gt LOC = P112

NET XBlt5gt LOC = P96

NET XBlt6gt LOC = P100

NET XBlt7gt LOC = P99

NET XClt0gt LOC = P69

NET XClt1gt LOC = P70

NET XClt2gt LOC = P73

NET XClt3gt LOC = P74

NET YAlt0gt LOC = P105

JP4 接頭

NET YAlt1gt LOC = P104

NET YAlt2gt LOC = P103

NET YAlt3gt LOC = P102

NET YBlt0gt LOC = P127

NET YBlt1gt LOC = P129

NET YBlt2gt LOC = P131

NET YBlt3gt LOC = P130

NET YBlt4gt LOC = P128

NET YBlt5gt LOC = P125

NET YBlt6gt LOC = P119

NET YBlt7gt LOC = P118

NET YClt0gt LOC = P107

NET YClt1gt LOC = P108

NET YClt2gt LOC = P98

NET YClt3gt LOC = P97

在光碟片中 RFFPGAVHDLDEMOBIT3S200 裡有VHDL與數位邏輯設計書本範例原始檔與合成檔

87

eM_95XL 模組

NET CLK LOC = SPIN38

NET XAlt0gt LOC = SPIN53

NET XAlt1gt LOC = SPIN54

NET XAlt2gt LOC = SPIN56

NET XAlt3gt LOC = SPIN57

NET XBlt0gt LOC = SPIN85

NET XBlt1gt LOC = SPIN86

NET XBlt2gt LOC = SPIN97

NET XBlt3gt LOC = SPIN98

NET XBlt4gt LOC = SPIN100

NET XBlt5gt LOC = SPIN101

NET XBlt6gt LOC = SPIN105

NET XBlt7gt LOC = SPIN104

NET XClt0gt LOC = SPIN58

NET XClt1gt LOC = SPIN59

NET XClt2gt LOC = SPIN60

NET XClt3gt LOC = SPIN61

NET YAlt0gt LOC = SPIN111

JP4 接頭

NET YAlt1gt LOC = SPIN110

NET YAlt2gt LOC = SPIN107

NET YAlt3gt LOC = SPIN106

NET YBlt0gt LOC = SPIN93

NET YBlt1gt LOC = SPIN91

NET YBlt2gt LOC = SPIN87

NET YBlt3gt LOC = SPIN88

NET YBlt4gt LOC = SPIN92

NET YBlt5gt LOC = SPIN94

NET YBlt6gt LOC = SPIN95

NET YBlt7gt LOC = SPIN96

NET YClt0gt LOC = SPIN112

NET YClt1gt LOC = SPIN113

NET YClt2gt LOC = SPIN103

NET YClt3gt LOC = SPIN102

在光碟片中 RFFPGAVHDLDEMOSVF95288XL 裡有VHDL與數位邏輯設計書本範例原始檔與合成

檔案

88

eM_FPGA 模組

NET CLK LOC = E12

NET XAlt0gt LOC = AA3

NET XAlt1gt LOC = Y4

NET XAlt2gt LOC = AA4

NET XAlt3gt LOC = AB4

NET XBlt0gt LOC = M1

NET XBlt1gt LOC = M2

NET XBlt2gt LOC = W13

NET XBlt3gt LOC = Y13

NET XBlt4gt LOC = AA13

NET XBlt5gt LOC = AB13

NET XBlt6gt LOC = Y18

NET XBlt7gt LOC = W18

NET XClt0gt LOC = W5

NET XClt1gt LOC = Y5

NET XClt2gt LOC = AA5

NET XClt3gt LOC = AB5

NET YAlt0gt LOC = Y17

JP4 接頭

NET YAlt1gt LOC = W17

NET YAlt2gt LOC = AB18

NET YAlt3gt LOC = AA18

NET YBlt0gt LOC = N1

NET YBlt1gt LOC = M5

NET YBlt2gt LOC = M3

NET YBlt3gt LOC = M4

NET YBlt4gt LOC = M6

NET YBlt5gt LOC = N2

NET YBlt6gt LOC = U13

NET YBlt7gt LOC = V13

NET YClt0gt LOC = AA17

NET YClt1gt LOC = AB17

NET YClt2gt LOC = V12

NET YClt3gt LOC = U12

在光碟片中 RFFPGAVHDLDEMOBIT2V250 裡有VHDL與數位邏輯設計書本範例原始檔與合成檔

89

Page 3: RFFPGA 直流馬達實驗手冊juniortek.com.tw/program/manual/RF-DC-mal.pdf · em_demo模組 em_dcm 直流伺服馬達 dc電源 rffpga 系統的直流馬達實驗規劃 其中包括:

1實驗規劃

在光纖網路通訊 FPGA 發展系統中關於 DC馬達實驗模組的配置規劃如下

e M _ U S B模 組光 纖網 路

U S B e M _ F P G A卡

e M _ D E M O模 組

e M _ D C M 直 流 伺 服 馬 達

D C電 源

RFFPGA系統的直流馬達實驗規劃

其中包括

1標準的 RFFPGA控制器配置包括電源模組和以使用 USB 為連線界面的個人電腦

226P 外接模組中透過 JP4 26PIN 轉 25PIN 排線中接上 eM_DCM 模組伺服界面

用以連接驅動級和馬達回授控制直流馬達

3實驗結果以 FPLC 人機圖控軟體做示波器和邏輯分析儀功能觀測

光纖網路通訊 FPGA 發展系統的系統配置圖如下

個人電腦(Windows) eM_USB模組

0 USB

eM_USB模組 1

光纖網路

eM_USB模組 2

eM_USB模組 30

3

其中

1基本模組為 eM_USB模組可用 USB界面和個人電腦連線並提供 USB對光纖網路的轉換功能使得個人電腦可以獨立控制光纖網路中的每個網路節點

2eM_USB模組也可以作為光纖網路中的網路節點透過光纖網路而接受個人電腦的

監控 3就個人電腦而言不論是 USB界面直接連結或是以光纖網路間接連結的 eM_USB模組都是可以直接監控的網路節點最多可以同時控制一個 USB節點和 30個網路節點

4對於每一個網路節點個人電腦都可執行 eM_USB模組中 FPGA的電路下載工作並在適當的 FPGA電路配合下可執行 eM_USB模組中 FPGA內部電路的讀寫控制 5透過適當的 FPGA電路設計各網路節點都可透過光纖網路和其他任何網路節點

作同步通訊執行 FPGA內部記憶體的資料交換資料交換頻率可達 1KHz以上 6當然也就是一部個人電腦可同時監控 31個直流伺服馬達控制狀況

4

2馬達驅動界面

馬達的控制需要高速的動態響應能力是 DSP 核心的重要應用方向本實驗中建立馬達

驅動器的界面包括 PWM 的驅動控制以及光電盤的解碼和計數提供馬達控制實驗的設

計基礎

設計說明 直流馬達

直流馬達屬於扭力控制結構的電機機械其轉子磁場和定子磁場相互垂直

扭力控制結構

L1

L2

N

SN S

轉子

定子

當轉子和定子磁場相互垂直時就會產生扭力而讓轉子旋轉但是一旦旋轉到 90o使

得磁場平行時馬達就會失去扭力而停止了轉動為了使馬達持續不停的旋轉直流馬

達中設計了很特殊的電樞結構讓轉子不論旋轉到任何角度轉子磁場和定子磁場永遠

保持垂直

N S

電樞示意圖

在轉子在每一瞬間都只有和定子垂直的那組線圈能夠導通所以無論轉子轉到任何角

度直流馬達永遠都能保持垂直磁場的狀態

在垂直磁場的狀態下只要能控制轉子電流就能控制磁場的大小也就能控制馬達的

扭力了由於定子磁場不變只有電樞的電流可以控制就可以簡化成下面的直流馬達

符號

直流馬達符號

5

電壓驅動模式

直流馬達的驅動方式有電壓驅動和電流驅動兩種

1電流驅動的方式是控制扭力電流越大扭力越大電流越小扭力越小 2電壓驅動的方式是控制轉速電壓越高轉速越高電壓越低轉速越低 3電流和扭力的關係比較線性也不受外界干擾影響 4電壓和轉速的關係比較不線性也比較容易受負載的干擾

電流驅動比較符合扭力控制模式控制效果比較直接但是相對的電路成本也較高電

壓驅動電路比較簡單控制效果雖然沒有電流驅動的響應好但是仍能維持相當不錯的

水準因此大部分低價產品還是選擇電壓驅動模式

電流驅動方式 電壓驅動方式

+-

一個最簡單的電壓驅動電路就是以運算放大器為基礎的線性驅動電路其電路方塊圖如

線性電壓驅動

VinVout

V+

V-

線性放大器

線性放大器的特性非常理想其電壓輸出 Vout 和電壓輸入 Vin 成正比也不受其他環

境因素所干擾輸出正電壓馬達就正轉輸出負電壓馬達就反轉但是線性放大器的能

量效率卻是非常不理想以下圖為例

VinVout

V+

V-

線性放大器

=5V

=+15V

=-15V

1A

1A

6

假設在某種轉速下馬達需要的電壓輸出為 5V而電流為 1A那麼就產生了(5V1A=5W)

的功率輸出由於線性放大器的電流完全由電源供應器提供所以電源電流也是 1A在

15V 的電源電壓下驅動級的功率為(15V1A=15W)當有 15W 的功率進入驅動級而只

有 5W 的功率流出驅動級代表其中 10W 的功率浪費掉了在能量不滅的定律下功率

是不會憑空消失的這意味著這 10W 的功率已經變成了熱能使得驅動級發燙起來還

得另外設法散熱

在兩種狀況下會造成最小的功率消耗一種是最大電壓輸出(全開)狀況一種是零電

流輸出(全關)狀況說明如下

1當最大電壓輸出時假設輸出電壓為 15V輸出電流為 1A則 輸出功率為(15V1A=15W) 輸入功率為(15V1A=15W) 所以驅動級的消耗功率為(15W-15W=0W) 2當零電流輸出時假設輸出電壓為 0V輸出電流為 0A則 輸出功率為( 0V0A=0W) 輸入功率為(15V0A=0W) 所以驅動級的消耗功率為(0W-0W=0W)

當然真實的電路不會那麼理想但是這種特殊工作點的選擇的確會讓驅動電路變得非

常有效率

PWM 脈寬調變

脈寬調變電路(Pulse Width Modulation簡稱 PWM)就是利用全開和全關的兩種最佳效

率點所設計的電路

就 PWM 驅動器本身而言只有全開和全關的兩種控制模式假設我們還是需要 5V 和 1A

的輸出控制需求那麼就可以控制全開的比率(即工作率 Duty-Cycle)為 13 週期使得

輸出的平均電壓維持在 5V 的準位如下圖所示

Vin Vout

V+

V-

線性放大器

因為輸出只有全開或全關的兩種狀態如果再使用昂貴的線性放大器就太浪費了這時只要用

最簡單的開關放大器就可以辦到了最基本的開關放大器有下述兩種

7

V+

單向控制

V+

A

AB

B

A雙向控制

單向控制結構只能控制直流馬達做單方向的運轉而由 PWM 控制馬達的轉速雙向控制

在速度之外還可以控制馬達作正反轉通常用來執行直流馬達的位置控制用

PWM 的控制波形非常簡單就是產生一組平均值為指定電壓的波形也就是控制所謂的

工作率(Duty-Cycle)定義如下

平均電壓 = Ton (Ton + Toff) 電源電壓 = 工作率 電源電壓

但是由於波形上的微小差異細分起來還是有下面三種型式

前緣對齊型

10 1010

30 30 30

50 50 50

中間對齊型 後緣對齊型

如果只有一組 PWM 波形輸出無論採用哪種波形都沒有差異只有當多個 PWM 波形要同

時輸出(例如交流馬達作三相控制)時才需要選擇中間對齊的型式作處理以免造成相

位失真的現象

在電路設計上都是產生一組參考波來和電壓命令作比較當電壓命令大於參考波時就

送出 1小於參考波時就送出 0如此就形成 PWM 波形其差別只是採用何種參考波作

比較

前緣對齊型

70

中間對齊型 後緣對齊型

70

以上圖為例要產生前緣對齊型的 PWM 訊號就採用遞增型鋸齒波若採用遞減型鋸齒

波就會產生後緣對齊型的 PWM 訊號採用前後對稱的三角波就會產生中間對齊型的

PWM 訊號

8

PWM切換保護

對於單一線圈的負載而言PWM切換電路的電路方塊圖如下

負載

正電源

負電源

PWM+

PWM-

P

N

其中

1以兩組電晶體來分別控制正負電源其中的電晶體依據功率需求可選擇功率電晶體

MOSFET或是 IGBT不論哪種選擇其控制原理都一致 2將 PWM訊號分成正向和反向的兩組控制訊號PWM+控制正電源的導通與否而

PWM-控制負電源的導通與否 3切換組合包括 P=OFFN=OFF負載和電源隔離 P=ON N=OFF負載連接上正電源 P=OFFN=ON 負載連接上負電源 P=ON N=ON 正負電源短路這時功率驅動級將瞬間燒毀

原則上只要將 PWM+和 PWM-間的邏輯反向是不可能發生兩者都 ON 的情況但是再考慮

功率電晶體(包括電晶體MOSFET 和 IGBT)的暫態響應電晶體 OFF 的反應時間通常比

電晶體 ON 的反應時間要長一些所以在切換瞬間很可能產生兩者都導通的瞬間狀態

這時可能有兩種結果

1兩者同時導通的時間稍長時功率驅動級將瞬間產生過電流而燒毀 2兩者同時導通的時間非常短這時功率驅動級雖不至於瞬間燒毀但是會產生很高

的熱量使得功率驅動級的溫度快速加高甚至於因為過熱而燒毀

因此 PWM 控制必須加上切換保護其示意圖如下

PWM+ PWM-

切換保護

其中

1基本上PWM-只是 PWM+的反向訊號兩者都由一組 PWM訊號控制 2但是在 ONOFF 切換的瞬間必須加上一段兩者都 OFF的時間這段時間的長度

可依照功率電晶體的 ONOFF特性來設定在 1us~4us之間

9

PWM 啟動保護

在系統開機時很不容易保證各個元件都能依照順序依序啟動因此在系統啟動時必須

自動將 PWM 輸出關掉直到系統完成整個開機程序後才能再將 PWM 訊號重新啟動一

般而言啟動程序如下

1系統開機後功率驅動級通常最快啟動這時 PWM必須保持在 OFF 狀態避免系

統誤動或短路 2之後依次啟動 BIOSLinux網路最後才啟動應用程式 3應用程式啟動後必須依序 A下載 FPGA B下載 DSP控制軟體 C啟動 DSP控制軟體 在啟動 DSP控制軟體後才能重新開啟 PWM的動作 4任何時間中只要 DSP控制停止就必須立刻關閉 PWM控制以避免誤動或短路

所以 PWM 啟動保護是由 DSP 程式直接控制其必要程序包括

1FPGA電路下載完畢並執行工作中 2DSP程式下載完畢並執行工作中

其中任何一個部分停止都必須立刻關閉 PWM 控制一般而言這部分電路都由看護犬

(watch-dog)電路管理而由 DSP 程式負責驅動

DCM 實驗模組

DCM 模組是一個完整的直流馬達實驗機台系統方塊圖如下

YA1

切換保護

YA2

YC0

馬達

PHTA PHTB

PWM+

DIS

YA0 PWM-

+12VSW

YC1

JP4 A

AB

B

雙向控制

光電盤

A

B

其中

1採用雙向控制的 PWM功率驅動級來驅動直流馬達可控制馬達正反轉 2功率驅動級中已有切換保護其控制訊號包括

10

PWM+ PWM- DIS 直流馬達 X X 1 OFF 1 0 0 正電壓驅動 0 1 0 負電壓驅動

3功率驅動級中並沒有啟動保護所以必須附加電源開關作手動控制 4馬達轉角由光電盤的 AB相訊號作回授 5所有控制訊號都經由 JP4接頭接到 RFFPGA控制器中可由 FPGA作控制

三角波產生器

實驗中以中間對齊型的 PWM 訊號為控制目標首先建立對稱的三角波作為參考訊號其

對映的 VHDL 程式範例如下

TRIANGLE_WAVE block signal Q STD_LOGIC_VECTOR (11 downto 0) signal CEDIR STD_LOGIC begin process (CLKRESET) -- sequential logic begin if RESET=1 then --reset Qlt=000000000111 --reset to 7 elsif CLKevent and CLK=1 then --CLK=gt1 trigger if CE=1 then --clock enable if DIR=0 then Qlt=Q+1 --up counter else Qlt=Q-1 --down counter end if end if end process -- combinational logic CE lt= SYSTEM(0) --24MHz clock DIR lt= SYSTEM(13) --4KHz square wave REF lt= Q --12-bit reference (7~3079) end block TRIANGLE_WAVE 其中

1程式設計為可適用於不同的系統時鐘包括 49152MHz和 24576MHz 兩種型式 2計數器的基本頻率為 24576MHz所以用 CE=SYSTEM(0)來控制計數動作 3三角波的頻率設為 4KHz所以計數器的峰值為(2457642=3072) 4正反計數器和系統時序同步而以 SYSTEM(13)做為同步控制由於 SYSTEM(13)為 4KHz的方波設定 DIR=SYSTEM(13)即可控制計數器的上升或下降

5在 RESET時將計數器的初值設為 7使得計數範圍修正為 7~3079所以即使有些同步誤差也不會產生負數輸出的嚴重影響

6三角波以 REF[12]作輸出數值範圍在 7~3079之間頻率為 4KHz

11

如果 PWM 的頻率過低馬達端會產生震動噪音這時就必須提高 PWM 的頻率在前面程

式中如果要將 PWM 頻率從 4KHz 提升為 8KHz則可更改如下

if DIR=0 then Qlt=Q+2 --up counter else Qlt=Q-2 --down counter DIR lt= SYSTEM(12) --8KHz square wave 其中

1將 DIR改由 8KHz的 SYSTEM(12)來控制 2同時將計數器改成+2-2的正反計數器 3如此仍然能夠維持 REF輸出的數值範圍(7~3079)

如果還要再將 PWM 的頻率提高到 16KHz則可更改如下

if DIR=0 then Qlt=Q+4 --up counter else Qlt=Q-4 --down counter DIR lt= SYSTEM(11) --16KHz square wave 其中

1將 DIR改由 16KHz的 SYSTEM(11)來控制 2同時將計數器改成+4-4的正反計數器 3如此仍然能夠維持 REF輸出的數值範圍(7~3079)

表面上三角波產生器的數值精度為 12-bit時間精度為 24MHz但是由於 PWM 訊號將

透過 FPGA2 輸出而高速串列界面的更新速度為 15MHz所以就 DCM 模組所收到的 PWM

控制訊號而言其時間精度將降低為 15MHz而數值上的精度將降低為 8-bit等效範

圍為 0~192 或是+-96 之間整體而言控制上的精度約為 05仍可符合馬達控制的

需求

PWM 波形產生器

接著處理比較的動作並產生 PWM 波形對映的 VHDL 程式範例如下

PWM_COMPARATOR block signal CEPUPD STD_LOGIC signal D0D1D2D3D4 STD_LOGIC begin process (CLK) -- sequential logic begin if CLKevent and CLK=1 then --CLK=gt1 trigger if CE=1 then --CLK enable D4lt=D3 D3lt=D2 D2lt=D1 D1lt=D0 --delay end if end if

12

end process -- combinational logic CE lt= CLK1M D0 lt= 1 when CMDgtREF else 0 --PWM generation PU lt= D1 and D2 and D3 and D4 --up-side output PD lt= not D1 and not D2 and not D3 and not D4 --down-side output PWMU lt= PU --up-side PWM output PWMD lt= PD --down-side PWM output PWMI lt= (not PU and not PD) or not ENB --PWM disable PWMR lt= REF --PWM reference end block PWM_COMPARATOR

程式中所對映的時序如下

CE

REF

CMD

D1D2D3D4PWMUPWMDPWMI

其中

1以 15MHz的 CE訊號為基本頻率 2將電壓命令 CMD和參考波形 REF作比較若 CMDgtREF則設定 D0=0否則設定

D0=1 3將 D0訊號作四次的延遲處理延遲訊號依序為 D1D2D3D4最後再重新組合成

PWM的輸出波形 4其輸出訊號包括 PWMU對映到 DCM模組中的 PWM+訊號 PWMD對映到 DCM模組中的 PWM-訊號 PWMI對映到 DCM模組中的 DIS訊號為切換保護訊號 如此 PWMU作動和 PWMD作動之間將有 2us間隔中是兩者都不作動的也就是

PWMI的作動時間 5當 ENB命令=0時設定 PWMI=1而使得驅動器 OFF

13

回授訊號的處理

精密的伺服馬達動作必須將馬達的位置和速度加以量測後再執行回授控制因此速

度和位置的量測是精密控制中必要的一環我們通常用光電寫碼器或數位尺來進行量測

工作

光電寫碼器(Photo-Encoder)俗稱光電盤是利用光電量測進行的非接觸式數位量測元

件其基本裝置如下

LED光源

光電晶體偵測

以 LED 或是其他光源來發光而用 AB 相的兩組光電晶體來偵測當圓盤隨著馬達作轉

動時光電晶體即可偵測到其移動狀態由於圓盤中的小孔呈等距排列其透光部分和

不透光部分呈 50對 50的比例當圓盤轉動時光電晶體端就可以偵測到下述訊號

光電盤訊號(A 相)

光電盤訊號(B 相)

正轉

其中

1偵測方波的頻率即對應於圓盤轉動的頻率也就是轉速 2偵測方波的個數即對應於圓盤轉過的孔數也就是轉角(相對角度) 3由於 AB相的兩組光電晶體在機械安裝上的角度不同使得讀出訊號也有 90 度的

差異如果馬達正轉則 A相超前如果馬達反轉則 B相超前

有了兩相的光電盤訊號只要能偵測其中的相位變化就可以分辨光電盤的正反轉運動

了例如正轉時的光電盤時序如下

14

光電盤訊號 (A 相 )

光電盤訊號 (B 相 )

正轉

微分訊號(A+)

微分訊號(A-)

微分訊號(B+)

微分訊號(B-)

正轉脈衝(CW)

其中

1針對 AB 兩相訊號作微分處理即可取得 A+A-B+B-的上緣微分和下緣微分 2將微分訊號和和原有的 AB相訊號作比較即可找出正轉脈衝 3計算正轉脈衝的頻率和個數即可取得馬達的速度和轉角 4如此得到的脈衝數將是原有 AB相頻率的四倍所以稱之為乘四解碼電路

同樣的如果針對光電盤的反轉時序一樣可以得出反轉訊號圖示如下

光電盤訊號(A相)

光電盤訊號(B相)

反轉

反轉脈衝(CCW)

其公式如下

CW lt= (A+ and not B) CCW lt= (A+ and B) or (A- and B) or (A- and not B) or (B+ and A) or (B+ and not A) or (B- and not A) or (B- and A)

整合光電盤回授的處理其系統方塊圖如下

數位濾波

D Q

CK

DLA

PHA

D Q

CK

DLB

PHB

CLK

乘四解碼電路

DIR

PLS

數位濾波

PA

PB

正反計數

CNT DB

RD

CS

包括

15

1首先利用簡單的數位濾波器將 AB項的雜訊排除 2接著利用延遲電路作微分處理並以乘四解碼電路解出轉動的脈波和方向 3最後利用正反計數器作計數並將計數值讀入匯流排

數位濾波器

光電盤的 AB 相訊號中如果產生雜訊干擾的現象會使得馬達轉角的計量上產生永久

性的累積誤差將造成控制上無法彌補的錯誤所以 AB 相訊號上的雜訊一定要盡力排

除下面是常用的數位濾波器設計範例

FILTER_A block -- digital filter for A signal CED0D1D2 STD_LOGIC begin process (CLK) -- sequential logic begin if CLKevent and CLK=1 then --CLK=gt1 trigger if CE=1 then --clock enable D2lt=D1 D1lt=D0 D0lt=PA --delay 3 clocks PHA lt= (D0 and D1 and D2) or ((D0 or D1 or D2) and PHA) end if end if end process -- combinational logic CE lt= CLK1M --15MHz clock end block FILTER_A 其中

1以 15MHz的頻率為控制基準 2利用延遲電路依序產生 D0D1D2的延遲訊號 3連續三個 1(D0D1D2 都是 1)定義為 1連續三個 0(D0D1D2 都是 0)定義為 0而其他不連續的 10 都定義為雜訊如此可將高頻的雜訊濾除

4但是相對的AB相訊號的最高頻率將限制為 250KHz(連續 3個 1和連續 3個 0)頻率過高的 AAB相訊號將被視為雜訊而不處理必須特別注意

正反轉的解碼和計數

依據前面的公式說明對映的 VHDL 程式範例如下

DECODER block signal DLADLB STD_LOGIC begin process (CLK) -- sequential logic begin if CLKevent and CLK=1 then --CLK=gt1 trigger DLAlt=PHA DLBlt=PHB --delay 1-clock end if end if

16

end process -- combinational logic DIR lt= (not PHA and DLA and not PHB) or ( PHA and not DLA and PHB) or (not PHB and DLB and PHA) or ( PHB and not DLB and not PHA) PLS lt= (not PHA and DLA) or (PHA and not DLA) or (not PHB and DLB) or (PHB and not DLB) end block DECODER 其中

1PHAPHB為經過雜訊濾波後的 AB相訊號而 DLADLB是其延遲訊號 2根據乘四解碼電路的公式取得 DIR和 PLS訊號其中 DIR用以控制計數器的正反向 PLS用以控制計數器的計數與否

所以接下去就是正反計數器的設計範例如下

COUNTER block signal Q STD_LOGIC_VECTOR(11 downto 0) begin process (CLKRESET) -- sequential logic begin if RESET=1 then --power-on reset Qlt=000000000000 --reset to 0 elsif CLKevent and CLK=1 then --CLK=gt1 trigger if PLS=1 then --clock enable if DIR=1 then Qlt=Q-1 --down counter else Qlt=Q+1 --up counter end if end if end if end process -- combinational logic CNT lt= Q --counter output end block COUNTER 其中

1這是標準的正反計數器架構在開機時自動復歸 2計數器的長度為 12-bit可依需要自行調整

DCM模組中的光電盤精度為每圈500格經過乘四解碼後相當於每圈2000格所以12-bit

計數器只能處理 2 圈的應用範圍絕對不夠在真正應用時一定要用軟體或硬體的方

式再擴張成 16-bit 或是 32-bit 的寬度來處理才行

17

3實驗項目

在直流伺服馬達控制系統中規劃五個實驗項目由系統首頁做選擇每項實驗操

作整個系統實驗組成由各項實驗項目 CAI 檔及各項實驗項目程式連結 PLC 檔結合而成茲表列如下

直 流 伺 服 實 驗 e x p _d c m c ai

開 環 路 電 壓 控 制

系 統 首 頁 實 驗 程 序

e x p _p w m c ai

開 環 路 速 度 控 制 e x p _s p ee d c a i

閉 環 路 位 置 控 制 e x p _a n gl e c a i

加 減 速 的 位 置 控 制 e x p _a c c c ai

正 弦 波 位 置 控 制 e x p _s i n c ai

C A I 圖 控 檔

直 流 伺 服 實 驗 開 環 路 電 壓 控 制

系 統 首 頁 實 驗 程 序

e x p _p w m p lc

開 環 路 速 度 控 制 e x p _s p ee d p l c

閉 環 路 位 置 控 制 e x p _a n gl e p l c

加 減 速 的 位 置 控 制 e x p _a c c p lc

正 弦 波 位 置 控 制 e x p _s i n p lc

e T T Y 批 次 檔

18

4安裝程序

31 將 RFFPGA中的程式拷貝至工作硬碟中進入 DC子目錄資料夾中其中包含下

列檔案

檔案 內容說明 mod SIN_wave MODPWM_wave MODIIR1_filter MODDAS4

MODPOS_inputMODPWM_outputMODACC_controlMODPD_controlMOD這些檔案是由 ASM重新編譯出由 testDCMmem所需執行模組檔

asm SIN_waveasmPWM_waveasmIIR1_filterasmDAS4asm POS_inDCMasmPWM_outDCMasmACC_conDCMasmPD_controlasm是各模組組合語言所設計 SOURCE檔

plc 為進行實驗所需的各批次檔 bit piDSPv0bit為下載到 FPGA的 BIT檔其功能為將 FPGA規劃成

具備 piDSP控制晶片功能提供直流伺服控制所需的控制程式

撰寫 testDCMsys 記載進行 DCM實驗時所需的模組 testDCMMEM 連結完成的 DSP執行檔用來進行 DCM實驗 testDCMvar 紀錄 DCM實驗時的參數對照表

在進行實驗前先將實驗所需的系統程式與模組程式分別說明加以說明系統所

需的程式模組由 testDCMsys 來描述程式列印如下

module fg1 PWM_wavemod 方波產生器

module fg2 SIN_wavemod 弦波產生器

module cn1 ACC_controlmod 加減速控制器

module cn2 PD_controlmod 比例微分控制器

module io1 POS_inputmod 位置和速度讀值

module io2 PWM_outputmod PWM 電壓輸出界面

module ft1 IIR1_filtermod 一階濾波器

module das das4mod 示波器資料蒐集

module io3 LEDKEYmod LEDKEY 界面

其中包括

1兩組波型產生器作為測試命令包括正弦波和方波 2兩組控制器提供包括加減速PD控制器的功能可依照實驗需求搭配使用 3兩組輸入輸出界面執行 PWM輸出和相位回授的界面處理 4一組低通濾波器作為電壓開迴路控制迴路和速度閉迴路控制的模擬使用 5DAS4mod是示波器專用的配合模組不論任何實驗都必須加入此模組 6Ledmod是四位數字七段顯示與 44矩陣按鍵模組

19

5執行程序

首先進入 RFFPGA 裡子目錄 DC直接點選 fPLCexe 出現下面操作畫面(也可直接將此檔

案放置桌面直接點選)

進入下面操作畫面

20

首先使用滑鼠在 FPGA下載按鈕單擊動作使 FPGA變成 piDSP晶片 如您撰寫組合語言時可使用 eASM按鈕 經編譯完成後產生MOD檔 如您撰寫系統連結程式時可使用 eLINK按鈕 經連結完成後產生MEM與VAR檔 點選實驗三後顯示如下 選擇程式下載再按程式啟動這時直流伺服馬達開始做位置控制在操控畫面放置 P 參數設定欄更改參數時馬達即時隨參數改變而產生不同響應 直接點選程式停止時結束所有控制動作再按回首頁選擇其他實驗

21

6實驗說明

下圖所示為直流馬達的控制系統方塊圖透過電流速度以及位置的回授再搭

配適當的控制器可建立完整的閉迴路控制系統在後面的實驗中將依此一系統方塊圖

逐步建立速度和位置的控制實驗各實驗的說明和操作方式及參考實驗結果將逐一進

行詳細的說明

控制

參考位置

速度 位置速

度控制 電流控制

電力電

子換流

位置速

度感測

i

+ -

壓ν

位置

速度

i

DC直流馬達之控制系統方塊圖

PWM 驅動方式只是簡單的開環路控制而高精度的馬達控制必須透過回授控制來完成

對於邏輯電路的設計者而言必須先瞭解基本的回授控制架構以便將來轉換成實用的

邏輯電路設計

設計說明

開環路特性

在電壓驅動的狀況下直流馬達開環路控制的示意圖如下

+-

22

如果換算成數學模式則轉換成下面的架構

+-Vc

R L

EMF

+

-

ITB

J

ω

其中

1其中的變數和參數包括 Vc 控制的電壓命令 R 電樞迴路的等效電阻 L 電樞迴路的等效電感 EMF電樞產生的反電動勢 i 電樞迴路中的電流 T 馬達所產生的扭力 J 馬達和負載的等效慣量 B 馬達和負載的等效摩擦力 ω 馬達所產生的速度 2所牽涉的物理公式包括 電壓迴路Vc = Ri + L(didt) + EMF 即電樞迴路中的電壓平衡 動力負載T = Bω + J(dωdt) 即扭力平衡 馬達特性T = Kti 所產生的扭力和電流成正比 電機特性EMF= Keω 所產生的電動勢和轉速成正比 其中新增的參數包括 Kt馬達的扭力常數 Ke馬達的反電動勢常數 3將微分項作拉式轉換(Laplase Transformation)的對映即 s = ddt 可將微分方程式轉換成更簡單的代數方程式而產生到下面的控制方塊圖

sL+R1Vc

+-EMF

iKt

TsJ+B1 ω

Ke

4在直流馬達的開環路特性中控制電壓(Vc)時輸入點而馬達轉速(ω)是輸出點即是控制馬達電壓以控制馬達轉速

5基本上馬達的開環路特性是個兩階系統類似於低通濾波器的特性在許多應用 場合其開環路特性還可以再簡化成一階系統方塊圖如下

23

sτ +1

KmVc ω 其中 τ一階系統的時間常數 Km一階系統的穩態增益

採用兩階系統的分析方式雖然會比較精細但是用一階系統來分析則可簡化所有的設計

過程因為這裡的實驗重點是邏輯設計所以在本章中我們都用一階系統作分析

系統響應的要求

就控制系統而言最重要的需求就是系統響應包括

穩態特性通常以穩態誤差為指標即是穩態時系統輸出和輸入之間的差異 暫態特性通常以上升時間(Rise Time)和過越比率(Overshoot)為指標

一個理想中的伺服控制系統其系統響應應該是

1穩態誤差為 0即馬達輸出將追隨輸入作變化沒有誤差 2過越比例為 0即馬達輸出絕對不會產生衝過頭的現象 3上升時間為 0即馬達輸出隨時追上輸入命令不會有控制上的延遲現象

當然這是太理想了一個合理的伺服控制系統應該是

1穩態誤差越小越好最好為 0 2過越比例越小越好最好為 0 3上升時間越短越好當然無法為 0但是盡力就是了

速度的回授控制

回授控制的目的就是為了改善系統響應以一階系統代表的馬達控制為例

sτ+1

KmVc ω

在步階響應(Step Response)時其特性如下

1穩態誤差由 Km決定 2過越比例為 0 3上升時間即是其時間常數(τ)

如果用比例控制器(P 控制器)作速度回授的控制則控制方塊圖如下

sτ+1

KmVc ωKp

err

P控制器 直流馬達ωc

速度回授

速度命令 + 速度響應-

24

其中

1速度命令並不直接控制馬達的驅動電壓而是 A將速度命令和速度回授相比找出其誤差訊號 err B依誤差訊號來控制驅動電壓 誤差越大則驅動電壓越高 誤差越小則驅動電壓越低 誤差為負則驅動電壓也為負 其中的比例關係由 P控制器中的 Kp 來調整 2經由數學分析後其步階響應的特性為 A穩態誤差變成 1(1+kpkm)如果 kpkmgtgt1則穩態誤差將趨近於 0 B過越比例仍為 0 C上升時間即是由τ變成τ(1+kpkm)所以上升時間將變短 3換句話說只要 Kp值夠大不論是穩態誤差或是上升時間都會大幅改善

理論上P控制器的增益是越高越好最好是無限大但是實際上是有限制的原因是

1馬達的開環路特性是兩階系統而非一階系統一階系統只是簡化後的結果 2當兩階系統作高增益的回授控制時當增益過高時會產生極嚴重的過越現象使得

馬達產生巨幅震動而難以控制

所以 P控制器的增益雖然是越高越好但調整時仍要小心維持(過越比例為 0)的條件

轉角的回授控制

做為馬達的速度控制P控制器的效果不錯但是如果將 P控制器應用到馬達的轉角控

制其特性就不太理想圖示如下

sτ+1

KmVc ωKp

err

P控制器 直流馬達

θc

轉角回授

轉角命令 + 轉角響應-

s1 θ

其中

1從馬達的速度到轉角之間具有積分特性即 馬達的轉角是馬達速度的積分結果而 馬達的速度是馬達轉角的微分結果而 2其中的積分特性使得整個系統由一階特性變成兩階特性在兩階系統中當設定高

增益時會產生極嚴重的過越現象使得馬達產生巨幅震動而難以控制 3在 P控制器增益無法提高的狀況之下轉角控制效果將無法獲得改善

雖然 P控制器在轉角控制上的效果並不好但是在控制系統中還是有許多法寶可以選擇

25

其中 PD 控制器就是簡單又有效的一個好方法

從表面上來看PD 控制器比 P控制器多了一個微分項就數學上來看這微分項提供了

一個新零點(Zero)可以調整根軌跡圖的走向就實驗上來說這微分項提供了控制器

的預測功能說明如下

sτ+1

KmVc ωKp+sKd

err

P控制器 直流馬達

θc

轉角回授

轉角命令 + 轉角響應-

s1 θ

1轉角控制中 P控制器的問題是在嚴重的過越現象原因是在 P控制器的作用下只有當回授超過命令時才能做出「負向」的控制但這時已經來不及了因為積分器

中已經累積了過多的能量而無法立刻消失使得馬達轉角衝過了頭 2解決之道就是在回授超過命令之前就必須做出「負向」的控制使得積分器累積

的能量逐步減弱在到達目標時才能立刻煞車才能解除過越現象 3而微分項就是這個預測量因為當誤差量越來越小時其微分項是負值雖然微分

項(D)是負值 當誤差量(P)很大時(P+D)的結果還是正值所以還是「正向」控制 當誤差量(P)漸小時(P+D)的結果變成負值才會開始「負向」控制 換句話說在誤差為 0之前即可啟動負向控制產生煞車作用使得馬達提前減速

而即時停止在目標點上自然就解除過越現象了

所以在 PD 控制器中有兩項調整量其中

1Kp增益提供比例控制部分的增益而 Kd增益提供微分控制部分的增益 2Kp增益控制馬達的趨近速度主要影響的是上升時間 3Kd增益控制馬達的提前煞車主要影響的是過越比例 4在兩者搭配下就有機會得到 很快很短的上升時間同時也 不會產生過越現象

PD 控制器的執行

依據 PD 控制器公式可以建立以數位執行的 PD 控制器如下圖所示

cmdKp

fdk

+

-

err

old

+-

Kd

Z-1

out+

+

26

其中

1利用差分公式來取代 PD控制器中的微分公式定義如下 s ==gt (1-Z-1)DT 其中對映的變數包括 s 微分項 Z-1延遲一個抽樣週期 DT抽樣週期單位為 sec 2就執行面而言Z-1是延遲一個抽樣週期也就是以抽樣週期所控制的暫存器 3在上圖中將命令(cmd)和回授(fdk)相減後得到誤差值(err)再將 err延遲一個抽樣週期成為 old所以(err-old)DT即是微分項

4原始的微分控制公式為(err-old)DTKd必須先除再乘但是因為 DT和 Kd 都是常

數可以預先將 Kd修正成 Kd=(KdDT)那麼公式將修正為(err-old)Kd就只需要一個乘法而不需要除法了

同樣的 PD 控制器可以用許多不同的方法作執行包括

1以軟體方式執行例如在 DSP核心中以組合語言撰寫控制模組 2以硬體方式執行例如在 FPGA中直接設計邏輯電路 3以微碼方式執行以微碼作順序控制執行硬體運算工作

這裡先提供用組合語言撰寫的程式模組作為設計參考其他兩種方法將在後續的實驗中

再陸續作說明

模組程式範例PD_controlasm

local cmd R0 IP gnd 輸入點位置命令(可忽略) local fdk R1 IP gnd 輸入點位置回授(可忽略) local out R2 OP 輸出點用以控制速度迴路 local kp R3 256 參數增益 kp10=256 local kd R4 0 參數增益 kd10=256 local err R5 0 內部變數 local old R6 0 內部變數 local gnd R7 0 無輸入時的短路點 data 8 模組變數區長度 initial 開機啟動程序 WR out0 WR old0 RET out=old=0 timer 即時控制程序 RD (cmd) SUB (fdk) WR err MUL kp SFR 8 P=(cmd-fdk)kp256 RDS err SUBX old MUL kd SFR 8 D=(err-old)kd256 ADDS WR out out=P+D RET

27

其中

1PD控制模組中對外的界面變數包括 cmd命令的輸入點 fdk回授的輸入點 out控制的輸出點 2內部參數包括 Kp比例控制增益其中 10=256所以乘完後還需要再右移 8-bit Kd微分控制增益其中 10=256所以乘完後還需要再右移 8-bit 3內部變數包括 err臨時性的變數用以儲存誤差值的計算結果 old儲存性的變數用以儲存上一次抽樣控制時的 err值 4模組程式分成三部分包括 變數宣告local和data所宣告的部分 初值設定initial程序中先將 out和 old設定為 0 即時控制timer程序中依序執行 PD控制器中的每個步驟

控制目標的選擇

從字面上來看速度控制就是控制馬達的速度轉角控制就是控制馬達的轉角沒什麼

好討論的但是實際上確有許多問題第一的問題就是什麼是速度和轉角馬達的速

度和轉角如果不作量測如何得知

既然在量測中取得了速度和轉角資料那麼我們所控制的到底是物理學上的速度和轉

sτ+1

KmVc ωKp+sKd

err

P控制器 直流馬達

θc

轉角回授

轉角命令 + 轉角響應-

s1 θ

KxANG

轉角量測

角還是量測上的速度和轉角以下圖為例

其中

1以轉角量測裝置量測轉角例如裝在馬達軸端的光電盤和解碼電路 2轉角的量測輸出是 ANG而 ANG和物理轉角θ之間有 Km的增益關係 3只要 Km值不是 1那麼系統就不再是單位回授 4如果 Km還有非線性或失真現象那麼控制結果也將有非線性或失真現象

這些問題混雜起來會使得控制系統的分析變得更複雜如果要簡單處理就要認同現

實環境直接以量測結果為控制目標如下圖所示

28

sτ+1

KmVc ωKp+sKd

err

P控制器 直流馬達

θc

轉角回授

+-

s1 θ Kx

ANG轉角量測

其中

1直接以量測結果為控制目標將全系統還原成標準的單位回授控制 2所有的非線性或失真現象都進入開環路討論屬於可以補償的部分 3但是控制結果就是「量測上的轉角」而「物理學上的轉角」

量測誤差的問題

轉角θ

量測ANG

對於量測誤差而言最明顯的問題就是量化誤差圖示如下

其中

1以 DCM模組中的光電盤為例精度為每圈 500格經由乘四解碼計數後其等效

精度增加為每圈 2000格 2比(12000)圈更精密的部分都無法響應換句話說振幅越大的控制其相對誤差越

小而振幅越小的控制其相對誤差越大例如 當振幅為(12)圈時其控制誤差量為 01而 當振幅為(120)圈時其控制誤差量為 1 這是標準的的非線性現象

量化誤差不只影響穩態上的精度還會造成非線性的震動問題圖示如下

t

誤差值

+1

-1

其中

1由於量化誤差的問題只有當誤差超過+1或是-1時才會真正偵測到誤差也才

29

會施加控制量作補償 2所以穩態時的誤差將在+1-1之間擺動造成微幅的振動 3量化誤差越大震動越明顯而量化誤差很小時通常不易察覺出震動現象

微分量的計算

伺服系統中有兩處需要用到微分計算包括

1PD控制器中誤差微分量的計算 2速度控制器中速度回授值的量測

在理論上微分公式是(dXdt)相當於 dXdt = (X(n)-X(n-1))DT (當 DT趨近於 0時)

所以當微分計算中的抽樣週期(DT)越短時微分的計算值將越接近理論值但是事實上

卻非如此以下圖為例

t

X

DTDX

其中

1當 X值為等速度運動時其微分量就是其斜率相當於 DXDT 2DT是微分計算中的抽樣週期理論上越短越好但是由於 DX本身的量化誤差

使得這個原則不再成立例如當斜率為 7394時 若 DT=1000則 DX=7394而 DXDT=7394 若 DT=100 則 DX=739 而 DXDT=739 若 DT=10 則 DX=73 而 DXDT=73 若 DT=1 則 DX=7 而 DXDT=7 3換句話說當抽樣週期越短時DX的量化誤差將越明顯而造成微分計算上更嚴

重的誤差

在 DCM 模組中速度量測的量化誤差分析如下

1馬達上的光電盤精度為每圈 500格經過乘四解碼後等效精度為每圈 2000格 2當馬達轉速為 1200RPM而抽樣頻率為 1KHz時對映的速度量測值為 1200(圈分)2000(格圈)60(秒分)1000(DT秒) = 40(格DT) 3換句話說1200RPM的轉速對映到 40的速度量測值即速度單位=30RPM若最

高轉速為 3000RPM則在+-3000RPM的速度範圍內其量化誤差為 05相當於8-bit的 ADC轉換器精度

4對映不同的抽樣頻率的量化誤差表列如下

30

光電盤精度 最高轉速 抽樣頻率 速度單

速度範圍 量化誤差

500PPR 3000RPM 1KHz 30RPM +-100 05 500PPR 3000RPM 2KHz 60RPM +-50 1 500PPR 3000RPM 4KHz 120RPM +25 2

過溢現象的處理

輸入

輸出

32767

-32768

整數運算都有數值範圍限制以 16-bit 整數而言輸入輸出的關係如下

其中

1當超過正負數的上下限時數值會正負顛倒例如 +32768 將會視為 -32768作處理而 +32769 將會視為 -32768作處理依此類推 2換句話說16-bit的整數運算只有在+-32767之間是線性的對映關係而超過這個範圍就是非線性的對映關係

3不但如此還因為正負顛倒的現象使得原來設計的負回授控制將變為正回授控制

而產生非線性的震盪現象 4換句話說只要計算上稍一不慎就會使得原先穩定的系統產生不穩定的震盪結果

為了避免過溢現象所造成的不穩定問題通常控制系統中會利用飽和處理作改善圖示

如下

輸入

輸出

lmtH

lmtL

31

其中

1當超過計算的上限時將固定設為上限值處理而當超過計算的下限時也將固定

設為下限值處理 2這時的整數運算只有在上下限之間是線性的對映關係而超過這個範圍將還是非線

性的對映關係 3雖然如此但是因為沒有正負顛倒的現象所以不再會有負回授變為正回授的問題

而避免了非線性的震盪現象 4換句話說飽和處理是針對過溢現象的妥協處理方案雖然不完全理想但是是可

接受的最佳選擇

下面是對映的組合語言範例

RD x x為輸入端 MIN lmtH 取得 x和 lmtH中的較小值即是作上限保護的工作 MAX lmtL 取得 x和 lmtL中的較大值即是作下限保護的工作 WR y Y為輸出端 其中

1組合語言中提供MAX和MIN的計算其中 MIN lmtH 比較 AX暫存器和 lmtH而將較低值存入 AX暫存器中 MAX lmtL 比較 AX暫存器和 lmtH而將較高值存入 AX暫存器中 2所以直接可用MIN指令作上限保護而以MAX指令作下限保護兩者合併後即是

完整的飽和處理結果

飽和處理通常應用在高位數轉成低位數的場合例如32-bit轉換成16-bit或是16-bit

轉換成 12-bit 等等例如在本實驗中所有的運算都是以 16-bit 整數作處理但是到

PWM 驅動級輸出時卻要轉換成 12-bit精度的 PWM 命令所以必須先用飽和處理以避免

過溢現象造成的不穩定問題

32

61 實驗 1-開迴路的電壓控制 實驗說明以電壓直接控制轉速的開迴路特性可簡化為一階系統處理方塊圖如

sτ+1

v km ωm

其中V 送給驅動器的 PWM電壓命令

ωm馬達的轉動速度可由處理 photo encoder信號所得的位置微分而得 km一階系統的穩態增益 τ一階系統的時間常數即步階響應中的上升時間

為了觀測直流馬達的開環路特性建立下面的測試方塊圖

其中

1所使用的模組包括 FG1方波產生器產生所需的步階測試波形 FT1馬達模擬以一階系統的低通濾波器來執行 IO1光電盤的回授處理可同時取得轉角和速度的量測值 IO2PWM電壓驅動直接驅動直流馬達作控制 Led四位數字七段顯示模組顯示波形信號資料 2測試目標有兩項(P 參數設定欄)包括 A調整方波命令控制直流馬達作開環路的 PWM電壓控制 B調整馬達模擬參數使模擬結果和實驗結果相符以確認開環路特性

33

實驗畫面顯示如下

測試一 開環路的電壓控制 記錄頻道 CH1電壓命令Y1=-300DY=500 CH2模擬速度Y2=-100DY=500 CH3馬達速度Y3=100DY=50 CH4馬達轉角Y4=300DY=50000 實驗參數 FG1kAMP=256電壓命令的測試振幅 FG1kFRQ=150電壓命令的測試頻率 FT1DT =10 馬達模擬參數 FT1KA =500馬達模擬參數

其中

1用示波器功能記錄四個頻道其中 CH2和 CH3重疊顯示以比較模擬速度和量測

速度之間的差異 2由於 Km 不等於 1所以必須調整 CH3的 Y軸單位才能使得 CH2和 CH3的穩態響應部分重疊

3實驗時可以改變 FG1的參數以調整測試方波的振幅和頻率 4可以調整 FT1的參數使得 CH2和 CH3的暫態響應部分重疊

根據實際的測試結果分析如下

2馬達模擬的參數調整到 DT=10而 KA=500根據公式 τ = 40961000dtka 所以上升時間(τ)為 0082秒或是 82ms 3CH2CH3的 Y軸單位並不一致顯然 Km 不等於 1經計算確認 Km=0098

對應之 plc檔程式說明(exp_pwmplc) echo off 畫面顯示開始

run dsp 0 選擇 DSP1

run stop run reset 既有程式停止

run testDCMmem 下載指定程式

das 1 ampfg1out 0 1024 PWM 波形 Volt 設定 DAS 頻道1

das 2 ampft1lp 0 1024 馬達模擬 Volt 設定 DAS 頻道2

das 3 ampio1spd 0 1024 馬達速度 Volt 設定 DAS 頻道3

das 4 ampio1ang 0 1024 馬達角度 Volt 設定 DAS 頻道4

plot select 0 設定示波器頁數

plot xunit 100000 0 設定示波器 X軸

plot yunit 1 500 -300 設定示波器 Y1 軸

34

plot yunit 2 500 -100 設定示波器 Y2 軸

plot yunit 3 50 100 設定示波器 Y3 軸

plot yunit 4 50000 300 設定示波器 Y4 軸

plot trigger 1 0 1 10 設定示波器觸發

plot scope 9 1 2 3 4 設定示波器顯示

module io2 設定 io2 模組

s cmd ampfg1out

module fg1 設定 fg1 模組

s kAmp 256 s kFrq 150

module ft1 設定 ft1 模組

s u ampfg1out s dt 10 s ka 500

module io3 設定 io3 模組

s led ampfg1out

module 回復預設模組

run 1khz 設定抽樣頻率為 4KHz

run start DSP 開始執行

das stop pause 1 DAS 啟動 das start DAS 啟動

echo on 回復正常訊息顯示

使用者可視情況調整一階濾波器的 ka和 dt值使得 ch2和 ch3 兩組波形完全相符

以求得開迴路系統近似的一階轉移函數 CAI操控設計畫面規劃如下(EXP_PWMCAI) page 1 畫面設計

35

page 2 畫面設計 page 3 畫面設計

36

實測響應圖

訊 號 說 明 訊 號 說 明 ch1 方波產生器訊號 ch3 一階濾波器輸出信號 ch2 馬達角速度訊號 ch4 馬達角位置訊號

直流馬達之開迴路電壓控制響應圖

37

以邏輯分析功能觀測直流馬達之光電盤輸入與 PWM輸出信號

38

62 實驗 2-閉迴路的速度控制 實驗說明為了觀測閉迴路的速度控制響應建立下面的測試方塊圖

加入 PD控制後系統閉迴路的轉移函數經適度的簡化仍能約略以一階系統

處理方塊圖如下

sτ+1

u km ωm

其中

u 送給控制器的速度命令

ωm馬達的轉動速度可由處理 photo encoder 信號所得的位置微分而得

km一階系統的穩態增益 τ一階系統的時間常數即步階響應中的上升時間

方塊圖中的模組功能說明如下

1用 fg1 產生測試用的方波速度命令

2將方波速度命令和速度回授訊號送到 PD 控制器方塊中產生電壓控制訊號再透

過 io2 模組將訊號送出給伺服介面

3用 ft1 建立對照用的一階系統可用 IIR1濾波器方塊產生

4將方波命令產生速度命令再觀測 PHT(io1)上的速度值 spd

5調整 IIR1濾波器的參數使得兩組波形完全相符這時 IIR1濾波器就是閉迴路

速度控制的特性其中 km 為增益而τ為上升時間(單位為 sec)

6增益 km 可從示波器中作簡單計算而上升時間(τ=40964000dtka)

7 Led四位數字七段顯示模組顯示波形信號資料

39

對應之 plc檔程式說明(exp_speedplc) echo off 畫面顯示開始

run dsp 0 選擇 DSP1

run stop run reset 既有程式停止

run testDCMmem 下載指定程式

das 1 ampfg1out 0 1024 PWM 波形 Volt 設定 DAS 頻道1

das 2 ampft1lp 0 1024 馬達模擬 Volt 設定 DAS 頻道2

das 3 ampio1spd 0 1024 馬達速度 Volt 設定 DAS 頻道3

das 4 ampio1ang 0 1024 馬達角度 Volt 設定 DAS 頻道4

plot select 0 設定示波器頁數

plot xunit 100000 0 設定示波器 X軸

plot yunit 1 50 -300 設定示波器 Y1 軸

plot yunit 2 50 -100 設定示波器 Y2 軸

plot yunit 3 50 100 設定示波器 Y3 軸

plot yunit 4 50000 300 設定示波器 Y4 軸

plot trigger 1 0 1 10 設定示波器觸發

plot scope 9 1 2 3 4 設定示波器顯示

module io2 設定 io2 模組

s cmd ampcn2out

module fg1 設定 fg1 模組

s kAmp 50 s kFrq 150

module cn2 設定 cn1 模組

s cmd ampfg1out s fdk ampio1spd s kp 0x4000

module ft1 設定 ft1 模組

s u ampfg1out s dt 2 s ka 320

module io3 設定 io3 模組

s led ampfg1out

module 回復預設模組

run 1khz 設定抽樣頻率為 4KHz

run start DSP 開始執行

das stop pause 1 DAS 啟動 das start DAS 啟動

echo on 回復正常訊息顯示

CAI操控設計畫面規劃如下(EXP_speedCAI)

40

page 1 畫面設計 page 2 與 page 3 畫面設計與實驗一 page 2 與 page 3相同畫面 page 4 畫面設計

41

方塊的參數設定 使用者可視情況調整一階濾波器的 ka和 dt值使得 ch2和 ch3 兩組波形完全相符

以求得此一閉迴路系統近似的一階轉移函數或調整 PD控制器中的 kp和 kp值以調整系統之響應 實測響應圖

訊 號 說 明 訊 號 說 明 ch1 方波產生器產生之速度命令 ch3 一階濾波器輸出信號 ch2 馬達角速度訊號 ch4 馬達角位置訊號

42

直流馬達之閉迴路速度控制響應圖

43

63 實驗 3-閉迴路的位置控制 實驗說明為了觀測閉迴路的位置控制響應將直流馬達的回授改為位置訊號

建立下面的測試方塊圖 方塊圖中的模組功能說明如下

1用 fg1產生測試用的方波位置命令 2將方波位置命令和位置回授訊號送到 PD控制器方塊中產生電壓控制訊號再透過 io2模組將訊號送出到伺服介面驅動馬達轉動

對應之 plc檔程式說明(exp_angleplc) echo off 畫面顯示開始

run dsp 0 選擇 DSP1

run stop run reset 既有程式停止

run testDCMmem 下載指定程式

das 1 ampfg1out 0 1024 PWM 波形 Volt 設定 DAS 頻道1

das 2 ampft1lp 0 1024 馬達模擬 Volt 設定 DAS 頻道2

das 3 ampio1spd 0 1024 馬達速度 Volt 設定 DAS 頻道3

das 4 ampio1ang 0 1024 馬達角度 Volt 設定 DAS 頻道4

plot select 0 設定示波器頁數

plot xunit 100000 0 設定示波器 X軸

plot yunit 1 1000 -300 設定示波器 Y1 軸

plot yunit 2 1000 -100 設定示波器 Y2 軸

plot yunit 3 20 100 設定示波器 Y3 軸

plot yunit 4 1000 300 設定示波器 Y4 軸

plot trigger 1 0 1 10 設定示波器觸發

44

plot scope 9 1 2 3 4 設定示波器顯示

module io2 設定 io2 模組

s cmd ampcn2out

module fg1 設定 fg1 模組

s kAmp 1000 s kFrq 75

module cn2 設定 cn1 模組

s cmd ampfg1out s fdk ampio1ang s kp 0x300 s kd 0x4000

module ft1 設定 ft1 模組

s u ampfg1out s dt 2 s ka 320

module io3 設定 io3 模組

s led ampfg1out

module 回復預設模組

run 1khz 設定抽樣頻率為 4KHz

run start DSP 開始執行

das stop pause 1 DAS 啟動 das start DAS 啟動

echo on 回復正常訊息顯示

CAI操控設計畫面規劃如下(EXP_angleCAI) page 1 畫面設計

45

page 2 與 page 3 畫面設計與實驗一 page 2 與 page 3相同畫面 page 4 畫面設計與實驗二 page 4 畫面 方塊的參數設定 延續上一實驗的說明使用者可以調整 PD控制器中的 kp和 kd值以調整系統之

響應 實測響應圖

訊 號 說 明 訊 號 說 明 ch1 方波產生器產生之位置命令 ch3 馬達角速度訊號 ch2 馬達角位置 ch4 Pd控制器輸出之電壓訊號

46

直流馬達之閉迴路位置控制響應圖

47

64 實驗 4-加減速的位置控制 實驗說明為避免方波命令的過於嚴苛在方波命令的輸出加入一加減速控制功

能方塊以減緩命令變化的幅度增加馬達運動的平順建立的測試方塊圖如下

方塊圖中的模組功能說明如下

1用 fg1產生測試用的方波位置命令 2將方波位置命令送到加減速控制方塊處理後產生新的位置命令再將新的位置命

令與位置回授訊號送到 PD控制器方塊中產生電壓控制訊號最後透過 io2模組將訊號送出到伺服介面驅動馬達轉動

對應之 plc檔程式說明(exp_accplc) echo off 畫面顯示開始

run dsp 0 選擇 DSP1

run stop run reset 既有程式停止

run testDCMmem 下載指定程式

das 1 ampfg1out 0 1024 PWM 波形 Volt 設定 DAS 頻道1

das 2 ampcn1out 0 1024 加速控制 Volt 設定 DAS 頻道2

das 3 ampio1spd 0 1024 馬達速度 Volt 設定 DAS 頻道3

das 4 ampio1ang 0 1024 馬達角度 Volt 設定 DAS 頻道4

plot select 0 設定示波器頁數

plot xunit 100000 0 設定示波器 X軸

plot yunit 1 2000 -300 設定示波器 Y1 軸

plot yunit 2 2000 -100 設定示波器 Y2 軸

plot yunit 3 50 100 設定示波器 Y3 軸

plot yunit 4 2000 300 設定示波器 Y4 軸

48

plot trigger 1 0 1 10 設定示波器觸發

plot scope 9 1 2 3 4 設定示波器顯示

module io2 設定 io2 模組

s cmd ampcn2out

module fg1 設定 fg1 模組

s kAmp 2000 s kFrq 150

module cn1 設定 cn1 模組

s cmd ampfg1out

module cn2 設定 cn2 模組

s cmd ampcn1out s fdk ampio1ang s kp 0x300 s kd 0x4000

module ft1 設定 ft1 模組

s u ampfg1out s dt 2 s ka 320

module io3 設定 io3 模組

s led ampfg1out

module 回復預設模組

run 1khz 設定抽樣頻率為 4KHz

run start DSP 開始執行

das stop pause 1 DAS 啟動 das start DAS 啟動

echo on 回復正常訊息顯示

CAI操控設計畫面規劃如下(EXP_accCAI) page 1 畫面設計

49

page 2 畫面設計與實驗一 page 2相同畫面 page 3 畫面設計與實驗二 page 4相同畫面

參數設定參考之前各實驗的說明可線上機動性的調整 PD控制器中的 kp和 kd值以調整系統之響應 實測響應圖

訊 號 說 明 訊 號 說 明 ch1 方波產生器產生之位置命令 ch3 馬達角位置 ch2 加減速模組輸出之位置命令 ch4 馬達角速度訊號

50

圖一 直流馬達經加減速控制後之閉迴路控制響應圖

51

65 實驗 5-正弦波的位置控制 實驗說明在本實驗中改變命令的波形由方波改變為正弦波並建立如下的測

試方塊圖與上一實驗相比較僅更改命令的波形產生方塊 方塊圖中的模組功能說明如下 1用 fg2產生測試用的弦波位置命令 2將弦波位置命令送到加減速控制方塊處理後產生新的位置命令再與 io1 讀入的位

置回授訊號送到 PD 控制器方塊中產生電壓控制訊號再透過 io2 模組將訊號送出到伺服介面驅動馬達轉動

對應之 plc檔程式說明(exp_sinplc) echo off 畫面顯示開始

run dsp 0 選擇 DSP1

run stop run reset 既有程式停止

run testDCMmem 下載指定程式

das 1 ampfg2out 0 1024 SIN 波形 Volt 設定 DAS 頻道1

das 2 ampcn1out 0 1024 加速控制 Volt 設定 DAS 頻道2

das 3 ampio1spd 0 1024 馬達速度 Volt 設定 DAS 頻道3

das 4 ampio1ang 0 1024 馬達角度 Volt 設定 DAS 頻道4

plot select 0 設定示波器頁數

plot xunit 100000 0 設定示波器 X軸

plot yunit 1 2000 -300 設定示波器 Y1 軸

plot yunit 2 2000 -100 設定示波器 Y2 軸

plot yunit 3 50 100 設定示波器 Y3 軸

plot yunit 4 2000 300 設定示波器 Y4 軸

plot trigger 1 0 1 10 設定示波器觸發

52

plot scope 9 1 2 3 4 設定示波器顯示

module io2 設定 io2 模組

s cmd ampcn2out

module fg2 設定 fg1 模組

s kAmp 2000 s kFrq 100

module cn1 設定 cn1 模組

s cmd ampfg2out

module cn2 設定 cn2 模組

s cmd ampcn1out s fdk ampio1ang s kp 0x300 s kd 0x4000

module ft1 設定 ft1 模組

s u ampfg2out s dt 2 s ka 320

module io3 設定 io3 模組

s led ampfg2out

module 回復預設模組

run 1khz 設定抽樣頻率為 4KHz

run start DSP 開始執行

das stop pause 1 DAS 啟動 das start DAS 啟動

echo on 回復正常訊息顯示

CAI操控設計畫面規劃如下(EXP_sinCAI) page 1 畫面設計

53

page 2 畫面設計 page 3 畫面設計與實驗二 page 4相同畫面

方塊的參數設定可調整 PD控制器中的 kp和 kd值以調整系統之響應 實測響應圖

訊 號 說 明 訊 號 說 明 ch1 弦波產生器產生之位置命令 ch3 馬達角位置訊號 ch2 加減速模組輸出之位置命令 ch4 馬達角速度訊號

54

直流馬達之閉迴路弦波加減速位置控制響應圖

55

7組合語言說明

本節將針對 DC馬達伺服控制實驗專用的程式模組進行功能與程式碼的說明其

有關於波形產生器與資料擷取模組等說明如下

SIN_waveasm 正弦波產生器 PWM_waveasm 方波產生器 IIR1_filterasm 一階濾波器 DAS4asm 資料蒐集模組

弦波產生器

此模組會產生週期性的正弦波方塊圖如下

outfrq

kBiasbias

ampkAmp

kFrqth

kThf=1TB

θ

A

其中

1正弦波有四個參數振幅(A)頻率(F)相位(θ)和偏移(B)其公式為 out = A sin(2πF t +θ) + B 2對於單純的正弦波產生器所對映的參數包括 kAmp 振幅值 kFrq 頻率值kFrq=655368000Hz其中 Hz的範圍為 0~4000例如 1000Hz =gt frq=8192 100Hz =gt frq=819 10Hz =gt frq=82 1Hz =gt frq=8 kTh 相角值0~255代表 0~360的相位當 th=0 時為正弦波 th=64 時為餘弦波 th=128時為反相波依此類推 kBias偏移值 3對於可調變的正弦波產生器其對映的輸入點為 amp 控制振幅的輸入點可產生調幅(AM)波形 frq 控制頻率的輸入點可產生調頻(FM)波形 th 控制相位的輸入點可產生調相(PM)波形 bias控制偏移的輸入點可產生雙頻混波(相加)波形 4若不使用調變功能時各個輸入點時的預設值為 amp 指向 kAmp 的位址 frq 指向 kFrq 的位址

56

th 指向 kTh 的位址 bias指向 kBias的位址

模組程式範例SIN_WAVEasm

local amp R0 IP kAmp 輸入點sin波的振幅 local frq R1 IP kFrq 輸入點sin波的頻率 local th R2 IP kTh 輸入點sin波的相角 local bias R3 IP kBias 輸入點sin波的中心偏移 local out R4 OP 輸出點sin波輸出 local tab R5 TP 表格指標指向 sin[256]的表格 local ang R6 內部變數相位角65536=360deg local kAmp R7 1000 參數振幅值 local kFrq R8 1000 參數頻率值=655368000Hz local kTh R9 0 參數相角值360deg=256 local kBias R10 0 參數偏移值 data 11 模組變數區長度及初值 initial 啟動程序 WR ang0 WR out0 ang=out=0 RET timer 即時控制程序(8KHz) RD ang ADD (frq) WR ang ang+=frq SFR 8 ADD (th) AND 255 ACC=sin(ang256+th) ADD tab WRH RDM table-look-up MUL (amp) SFR 12 ADD (bias) WR out out=ACCamp4096+bias RET table tab 256 sin[256]表格區10=4096 0 101 201 301 401 501 601 700 00~070deg 799 897 995 1092 1189 1285 1380 1474 08~0F 1567 1660 1751 1842 1931 2019 2106 2191 10~17 2276 2359 2440 2520 2598 2675 2751 2824 18~1F 2896 2967 3035 3102 3166 3229 3290 3349 20~27 3406 3461 3513 3564 3612 3659 3703 3745 28~2F 3784 3822 3857 3889 3920 3948 3973 3996 30~37 4017 4036 4052 4065 4076 4085 4091 4095 38~3F 4096 4095 4091 4085 4076 4065 4052 4036 40~4790deg 4017 3996 3973 3948 3920 3889 3857 3822 48~4F 3784 3745 3703 3659 3612 3564 3513 3461 50~57 3406 3349 3290 3229 3166 3102 3035 2967 58~5F

57

2896 2824 2751 2675 2598 2520 2440 2359 60~67 2276 2191 2106 2019 1931 1842 1751 1660 68~6F 1567 1474 1380 1285 1189 1092 995 897 70~77 799 700 601 501 401 301 201 101 78~7F 0 65435 65335 65235 65135 65035 64935 64836 80~87180deg 64737 64639 64541 64444 64347 64251 64156 64062 88~8F 63969 63876 63785 63694 63605 63517 63430 63345 90~97 63260 63177 63096 63016 62938 62861 62785 62712 98~9F 62640 62569 62501 62434 62370 62307 62246 62187 A0~A7 62130 62075 62023 61972 61924 61877 61833 61791 A8~A8 61752 61714 61679 61647 61616 61588 61563 61540 B0~B7 61519 61500 61484 61471 61460 61451 61445 61441 B8~BF 61440 61441 61445 61451 61460 61471 61484 61500 C0~C7270deg 61519 61540 61563 61588 61616 61647 61679 61714 C8~CF 61752 61791 61833 61877 61924 61972 62023 62075 D0~D7 62130 62187 62246 62307 62370 62434 62501 62569 D8~DF 62640 62712 62785 62861 62938 63016 63096 63177 E0~E7 63260 63345 63430 63517 63605 63694 63785 63876 E8~EF 63969 64062 64156 64251 64347 64444 64541 64639 F0~F7 64737 64836 64935 65035 65135 65235 65335 65435 F8~FF

就程式結構而言說明如下

timer 即時控制程序(8KHz) RD ang ADD (frq) WR ang ang+=frq SFR 8 ADD (th) AND 255 ACC=sin(ang256+th) ADD tab WRH RDM table-look-up MUL (amp) SFR 12 ADD (bias) WR out out=ACCamp4096+bias RET

1基本上我們以查表法計算 sin()其輸入θ的範圍為 0~255對映到 0~360deg其輸出 sin(θ)的範圍為+-4096對映到+-10的範圍

2建立一個內部變數 ang其範圍為 0~65535對映到 0~360的相位角 3每個timer程序都執行 ang+=frq的動作更新目前的相位角接著依照 ang的相位角查表得到 sin(ang256+th)值

4由於表格長度為 256-word所以必須將 ang256才能得到正確的對映關係而 th範圍為 0~255所以不需要像 ang一般的做額外處理

5sin()的範圍為(+1-1)而在表格中以(+4096~-4096)的型式記錄相當於 10=4096所以執行 Asin()時還要用 SFR12指令做4096的動作才能正確的取得輸出值

58

6就頻率輸入 frq而言其計算原則是將θ=ωt轉化成θ=Σ(ωdt)因為抽樣頻率

為 8KHz所以 dt=18000而得到 frq=655368000Hz公式其中 Hz為真正的頻率在 8KHz的抽樣頻率下其範圍為 0~4000

鋸齒波產生器

此模組會產生週期性的鋸齒波方塊圖如下

outfrq

kBiasbias

ampkAmp

kFrqth

kThf=1TB

θ

A

其中

1鋸齒波也有四個參數振幅(A)頻率(F)相位(θ)和偏移(B)和正弦波的定義完全一致唯一的差異是其輸出為鋸齒波而非正弦波

2基本波形是從週期開始時為 0一直遞增到週期結束時到達最高點然後立刻回歸

到 0重新開始 3以程式結構而論鋸齒波程式幾乎就是正弦波的相位計算部分只差沒有正弦波的

查表處理而已

模組程式範例SAW_WAVEasm

local amp R0 IP kAmp 輸入點sin波的振幅 local frq R1 IP kFrq 輸入點sin波的頻率 local th R2 IP kTh 輸入點sin波的相角 local bias R3 IP kBias 輸入點sin波的中心偏移 local out R4 OP 輸出點sin波輸出 local ang R5 內部變數相位角65536=360deg local kAmp R6 1000 參數振幅值 local kFrq R7 1000 參數頻率值=655368000Hz local kTh R8 0 參數相角值360deg=256 local kBias R9 0 參數偏移值 data 11 模組變數區長度及初值 initial 啟動程序 WR ang0 WR out0 ang=out=0 RET timer 即時控制程序(8KHz) RD ang ADD (frq) WR ang ang+=frq SFR 8 ADD (th) AND 255 ACC=(ang256+th)amp0x00ff MUL (amp) SFR 8 ADD (bias) WR out out=ACCamp256+bias

59

RET

脈衝波產生器

outfrq

kBiasbias

ampkAmp

kFrqth

kThf=1TB

θ

A

pwm

kDutyduty

此模組會產生週期性的脈衝波方塊圖如下

其中

1脈衝波有五個參數其中振幅(A)頻率(F)相位(θ)和偏移(B)四個參數和正弦波

定義完全一樣另外再增加一個負載率(D) 2基本波形是從週期開始時為 1隔段時間後換為 0然後持續到週期結束再重新開始其中 1所佔有的比例就是負載率當 D=0時為 0而 D=255時為 100

3和其他參數類似負載率(D)以 duty為其輸入點而以 kDuty為其參數值

模組程式範例PLS_WAVEasm

local amp R0 IP kAmp 輸入點脈衝波的振幅 local frq R1 IP kFrq 輸入點脈衝波的頻率 local th R2 IP kTh 輸入點脈衝波的相角 local bias R3 IP kBias 輸入點脈衝波的中心偏移 local duty R4 IP kDuty 輸入點脈衝波的負載率 local out R5 OP 輸出點脈衝波輸出 local ang R6 內部變數相位角65536=360deg local kAmp R7 1000 參數振幅值 local kFrq R8 1000 參數頻率值=655368000Hz local kTh R9 0 參數相角值360deg=256 local kBias R10 0 參數偏移值 local kDuty R11 128 參數負載率100 =256 data 12 模組變數區長度及初值 initial 啟動程序 WR ang0 WR out0 ang=out=0 RET timer 即時控制程序(8KHz)

60

RD ang ADD (frq) WR ang ang+=frq SFR 8 ADD (th) AND 255 ACC=(ang256+th)amp0x00ff SUB (duty) RD (amp) JLT t1 RD 0 ACC=(amp0) t1 ADD (bias) WR out out=ACC+bias RET

IIR 一階濾波器

此模組執行一階的 IIR濾波器方塊圖如下

kau x

Z-1

+

+

-

+低通濾波器

高通濾波器dx lp

hp

濾波器參數的計算公式如下

1假設濾波器的頻寬為 hz則 ωn=hz628 2若系統頻率為 8KHz則抽樣週期 dT為 dT=dt8000 其中 dt為模組參數 3則濾波器參數為 ka=ωndT4096或是 =hzdt62880004096即 =hzdt32 4當 dt決定後所允許的訊號頻寬為(4000dt)換句話說訊號頻寬會因為 dt增加而下降

為了方便實驗的運用下面列出常用的參數對照表

濾波頻寬

(Hz)

10 20 50 100 200 500 1000 2000

訊號頻寬

(Hz)

400 800 2000 4000 4000 4000 4000 4000

模組參數 dt 10 5 2 1 1 1 1 1

模組參數 ka 320 320 320 320 640 1600 3200 6400

表格的運用方式如下

1首先決定濾波頻寬 2接著查表找出對映的參數 dt和 ka 3再查表得到對映的訊號頻寬以決定是否需要串接前級濾波器

61

模組程式範例IIR1_FILTERasm

local u R0 IP 輸入點濾波器輸入 local lp R1 OP 輸出點低通濾波器輸出 local hp R2 OP 輸出點高通濾波器輸出 local dt R3 1 參數抽樣週期 local ka R4 4096 參數增益 ka10=4096 local prd R5 內部變數抽樣週期用 data 6 模組變數區長度 initial 開機啟動程序 WR lp0 WR hp0 WR prd1 RET lp=hp=0prd=1 timer 即時控制程序 SUB prd1 JNZ b9 if (--prdgt0) return RD dt WR prd prd=dt RD (u) SUB lp WR hp hp=u-lp MUL ka SFR 12 ADD lp WR lp lp+=(hpka4096) b9 RET

資料蒐集模組

資料蒐集模組是一個非常特殊的模組專門配合 eTTY 程式中的示波器使用

模組程式範例DAS4asm

local cmd R0 0 紀錄命令0=停止1=前置記錄2=正觸發4=負觸發6=觸發記錄 local dt R1 1 抽樣週期每 dT抽樣一次 local tab R2 TP DAS表格啟始位址 local cnt R3 0 目前記錄點(0~255) local ch1 R4 0 定義頻道1的變數位址 local ch2 R5 0 定義頻道2的變數位址 local ch3 R6 0 定義頻道3的變數位址 local ch4 R7 0 定義頻道4的變數位址 local trg R8 0 定義觸發頻道的變數位址 local th R9 0 觸發準位 local tail R10 0 觸發後的抽樣個數 local buf R11 1 抽樣計數(1~dt) local pnt R12 表格位址計算pnt=tab+cnt4 local len R13 表格長度計算(0~256) data 14 定義模組變數區的長度 table tab 1024 定義表格的長度 initial 啟動程序 WR cmd0 RET cmd=0 timer 控制程序

62

ADD cmd0 JZ t9 if (cmd==0) return SUB buf1 JNZ t9 if (--buf)gt0) return RD dt WR buf dt=buf RD cnt ADD 1 AND 0xff WR cnt cnt=(cnt+1)amp0xff SFL 2 ADD tab WR pnt pnt=tab+cnt4 RD (ch1) WR (pnt) ADD pnt1 pnt++=ch1 RD (ch2) WR (pnt) ADD pnt1 pnt++=ch2 RD (ch3) WR (pnt) ADD pnt1 pnt++=ch3 RD (ch4) WR (pnt) pnt =ch4 RD cmd SUB 1 JZ t9 SUB 1 JZ t2 SUB 1 JZ t3 SUB 1 JZ t4 SUB 1 JZ t5 SUB 1 JZ t6 JR t7 t2 RD (trg) SUB th JGE t9 ADD cmd1 JR t9 wait trgltth t3 RD (trg) SUB th JLE t9 JR t6 wait trggtth t4 RD (trg) SUB th JLE t9 ADD cmd1 JR t9 wait trggtth t5 RD (trg) SUB th JGE t9 JR t6 wait trgltth t6 WR len0 WR cmd7 len=0cmd=7 t7 ADD len1 SUB tail JLT t9 WR cmd0 if ((++len)gt=0x80) cmd=0 t9 RET

與 DC 馬達控制相關的程式模組有以下 4個程式模組說明如下

(1)加減速控制模組 ACC_controlasm (2)光電盤輸入模組 POS_inputasm (3)PWM輸出模組 PWM_outputasm (4)PD控制模組 PD_controlasm

71加減速控制模組 此程式模組主要功能在於執行位置控制的加減速命令修正其數學模式採用 Lynn

濾波器的架構參見下圖

cmd

2

+

old Z -1

-

Z -1

Z -1

Z-1

Z-1x0 x1 x8 x9 x16

+ -

++

2

Z-1

Z-1 y1 y2

+

-

y0

+ +

sumZ-1

+164

12

out

dif

+

63

加減速控制模組方塊圖

其中

1Lynn 濾波器的階數固定成八階也就是 m=8其公式為 H(z) = (1-2Z-m+Z-2m)(1-2Z-1+Z-2)m2

2因為m=8所以m2=64因此最後計算低通濾波的部份時要先做除 64的運算 3因為低通濾波(lp)和 y0之間有 64倍的差異代表 y0y1y2的變化範圍比濾波器輸

入值要擴大許多例如輸入值在+-1000變化時y0y1y2很可能會在+-64000之間變化這範圍已經超出整數處理的範圍很可能會造成錯誤的計算結果

4所以在實驗時輸入值的變化範圍必須控制在+-500之間以保證計算的正確性 5對於 Lynn 濾波器當 m=8時其濾波器的頻寬固定為 1 kHzmdt也就是 dt=1時頻寬為 125 Hz dt=2時頻寬為 625Hz依此類推 6對於 Lynn 濾波器其濾波器的延遲固定為 m個抽樣週期因此設計 hp = x8 - lp 即可得到高通濾波器的對應結果 7其中乘 2和除 64的運算以移位運算取代所以整個程式中並無任何乘法運算 8Lynn 濾波器本身並不是穩定濾波器所以在程式啟動時必須確實的將所有狀態

(x0~x16)歸零否則會產生不穩定的狀態輸出

因為 Lynn濾波器中所有參數固定所以除了抽樣週期 dt 之外並無任何可調參數

抽樣週期 dt 可以控制頻寬dt 越大則濾波器頻寬越低

將步階命令值的輸出送入 Lynn 濾波器中經由低通濾波器的效應可以減緩命

令的變化程度達到加減速控制的目的以下為使用 Lynn 濾波器型式實現加減速控

制的組合語言程式列印 如欲更進一步瞭解 Lynn 濾波器與 FIR 數位濾波器之間的關係可以參考通訊實驗

四數位濾波器設計(FIR)中之說明

ACC_controlasm程式列印 local cmd R0 IP 輸入點位置命令

local out R1 OP 輸出點加減速處理後的位置命令

local dif R2 OP 輸出點位置微分命令

local axis R3 0 馬達編號0=X1=Y2=Z3=C

local old R4 內部變數微分計算用

local sumL R5 內部變數積分計算用

local sumH R6 內部變數積分計算用

local y0 R7 內部變數y(0~2)

local y1 R8 local y2 R9

local x0 R10 內部變數x(0~16)

local x1 R11 local x2 R12 local x3 R13 local x4 R14

local x5 R15 local x6 R16 local x7 R17 local x8 R18

local x9 R19 local x10 R20 local x11 R21 local x12 R22

local x13 R23 local x14 R24 local x15 R25 local x16 R26

64

data 27 模組變數區長度

initial 開機啟動程序

WR dif0 RD (cmd) WR out WR old dif=0 out=old=cmd

sumHL=cmd64

SFL 6 WR sumL RD out SFR 10 SGN 5 WR sumH

RPT 17 WR x00 RPT 3 WR y00 RET x[0~16]=0y[0~2]=0

timer 即時控制程序

RD (cmd) SUBX old WR x0 x0=cmd-old old=cmd

SUB x81 ADD x16 ADD y11 SUB y2 WR y0 y0=x0-2x8+x16+2y1-y2

SGN ADD sumL WR sumL RDH ADC sumH WR sumH sumHL+=y0

WRH RD sumL SFR 6 WR out out=sumHL64

RD y0 SGN SFR WR dif dif=y032mm

RD x0 RPT 16 RDX x1 x[i]=x[i-1] i=1~16

RD y0 RDX y1 WR y2 y[i]=y[i-1] i=1~2

b9 RET

72光電盤輸入模組

DC馬達的位置由光電盤量測之預設儲存於 0xac與 0xbe二個輸入埠位址中其中位址 0xac記錄 X軸馬達的位置位址 0xbe記錄 Y軸馬達的位置由於本實驗的DC馬達接在 Y軸的位置上因此程式中直接選用 Y軸的輸入 光電盤位置輸入的程式列印如下其中速度由位置的差分而得至於馬達的位置

則使用內部 2個 word加以記錄精度為 32位元 POS_inputasm程式列印 local spd R0 OP 輸出點速度量測值

local ang R1 OP 輸出點角度量測值

local angH R2 內部變數角度的 32 位元部分

local mode R3 0x308 模式選擇15MHzAB 相正反向輸入

local pht R4 0xac 輸入阜地址光電盤輸入(0xac)

local phtc R5 0xbe 輸入阜地址光電盤模式(0xbe)

local old R6 內部變數速度更新用

data 7 模組變數區長度

initial 開機啟動程序

RD mode WR (phtc) phtc=mode

RD (pht) WR old WR spd0 RET old=phtspd=0

timer 即時控制程序

RD (pht) SUBX old SGN 11 WR spd spd=(pht-old)old=pht

65

ADD ang WR ang angHL+=spd

RDH ADC angH WR angH

RET

73 PWM輸出控制模組 模組方塊

cmd PWM輸出

程式說明 1在開機時將切換保護時間寫到輸出阜 0xbc上其中切換保護值為 0~6360=5us 2在每次 timer interrupt時將 cmd訊號處理後寫到輸出阜 0xb8上

PWM_outputasm程式列印 local cmd R0 IP gnd 輸入點v相命令

local gain R1 4096 參數輸出增益1=4096

local bias R2 2048 參數輸出偏壓0=2048

local limit R3 4095 參數輸出極限1=4095

local zone R4 0x88f0 參數頻率=12KHz切換保護=5us

local pwm R5 0xb8 輸出阜地址PWM0 輸出(0xb8)

local mode R6 0xbc 輸出阜地址PWM 模式(0xbc)

local p0md R7 0xf8 輸出阜地址port0 模式(0xf8)

local gnd R8 0 輸入接地點

data 9 模組變數區長度

initial 開機啟動程序

RD bias WR (pwm) pwm=bias

RD 0xffff WR (p0md) set port0 mode

RD zone WR (mode) RET mode=zone

stop 關機保護程序

RD bias WR (pwm) RET pwm=bias

timer 即時控制程序

RD (mode) xor 1 and 1 WR (mode) trigger watch-dog

RD (cmd) MUL gain SFR 12 ADD bias ACC=(cmdgain4096)+bias

MAX 0 MIN limit WR (pwm) pwm=limit(ACC)

RET

66

74 PD 控制模組

PD控制的模組方塊參見圖二十一所示其中比例控制的部份直接由增益 kp加以調整微分控制的部份則由誤差的差分經增益 kd的調整而得

Σ+

-

cmd

fdk

err out

Σ

pk

dk

Σ

+

+

+

-

old1minusZ

PD控制器的方塊圖

PD_controlasm程式列印 local cmd R0 IP gnd 輸入點位置命令(可忽略)

local fdk R1 IP gnd 輸入點位置回授(可忽略)

local out R2 OP 輸出點用以控制速度迴路

local kp R3 256 參數增益 kp10=256

local kd R4 0 參數增益 kd10=256

local err R5 0 內部變數

local old R6 0 內部變數

local gnd R7 0 無輸入時的短路點

data 8 模組變數區長度

initial 開機啟動程序

WR out0 WR old0 RET out=old=0

timer 即時控制程序

RD (cmd) SUB (fdk) PRTF WR err

MUL kp SFR 8 P=(cmd-fdk)kp256

RDS err SUBX old MUL kd SFR 8 D=(err-old)kd256

ADDS

WR out out=P+D

RET

程式中預設增益值的 10以整數值 256為基底因此使用 SFR 8的指令加以調

整另外在在計算微分項的程式部份用到 SUBX old的指令其詳細的暫存器動作如

下 參考 piDSP的指令說明SUBX指令將總共用到 3個時序參考錯誤 找不到參照

67

來源在時序 1時將原先 AX的資料拷貝一份到 HX中時序 2時正式執行減

法的動作所以 AX暫存器中的內容會變成 err-old時序 3時DSP會將存放在 HX暫存器中的內容拷貝一份到 old的記憶體中也就是經由 SUBX此一精簡指令將

同時完成計算差分所需要的相減與資料疊代的動作有效的利用 piDSP控制器 DSP核心的精簡指令將可以大幅提昇系統的計算速度

HX AXoldSUBXerr err

old

err

errerr olderr minus

1_err

errerr olderr minus err

1_err

1

2

3

SUBX的指令時序與暫存器變化

68

8附錄快速安裝說明

光纖網路通訊 FPGA 發展系統 (適用於 WIN-XP200098 系統)

快速安裝說明

26Pin 負載輸出入埠

雙電源︵5

12

伏︶輸入埠

單電源︵5

伏︶輸入埠

USB

光纖線輸

號 光纖線輸出埠

入 傳 埠

首先將光碟片 RFFPGA 目錄檔案拷貝在您工作硬碟裡面

第一次安裝時先將 USB 傳輸線接上電腦主機將電源供應器接上 FPGA 模組此時電

腦會出現安裝 USB-Serial 驅動程式選擇從清單安裝此驅動程式放置在光碟片

RFFPGA-USBdrive 選擇您目前安裝系統

可選擇 WIN-98WIN-MEWIN-2000WIN-XP 系統配合您現在工作電腦作業系統

69

注意一般電腦 USB 埠很多插口當您安裝驅動程式時是配合您當時插入之埠

下次如您插入不同接口埠時電腦會再次要求安裝驅動程式這是正常現象請再次安

裝驅動程式否則無法使用

FPLC 操作

首先進入 RFFPGA裡子目錄 testASM直接點選 fPLCexe 出現下面操作畫面(也可直接將

此檔案放置桌面直接點選)

(或者選擇 File 再執行 Setuphellip 選擇您要執行 CAI 檔)

70

進入下面操作畫面 首先使用滑鼠在 FPGA下載按鈕單擊動作使 FPGA變成 DSP晶片 實驗一至實驗五皆為使用 DSP組合語言設計程式其原始程式分別為 testASM1至testASM5可使用 texPad 開啟與編輯程式內容 實驗三與實驗五多有 IO控制動作 當選擇實驗三時出現下面畫面

71

eM_USB 模組

數字型 LED

0 1 2 34 5 6 78 9 A BC D E F

燈號型 LED

44 鍵盤

ADC0 ADC1 DAC0 DAC1

LED 選擇KEY 選擇

模 式 1

0123

注意操作畫面 3與 4 說明開關與按鍵選擇位置後選擇程式下載再按程式啟動如您

按下 0-3按鍵時燈號型 LED會有不同方向閃爍顯示程式停止時結束所有 IO控制動作再按回首頁選擇其他實驗 實驗四與實驗五

模式3

0 1 2 34 5 6 78 9 A BC D E F

按照上面開關選擇直接操作如果以上實驗皆能按照正常操作表示您光纖網路通訊

FPGA發展模組以能正常使用 注意 開機與關機動作順序如下

開機電腦啟動 --- eM_USB 模組電源接上 --- USB 接上電腦 ---

啟動 FPLC 軟體 --- 下載 FPGA 程式

關機關閉 FPLC 軟體 --- eM_USB 模組電源拔掉 --- 拔掉電腦 USB 接頭 ---關掉

電腦

如果以上順序有亂可能造成 USB 找不到驅動造成無法下載經過幾次測試還是

無法下載建議重新啟動電腦主機按照正確步驟操作

72

FPGA 下載操作

進入 FPLC 操作系統按照下列步驟選擇節點模組與下載 bit FPGA 檔案

在 VHDLDEMO 子目錄下您可以選擇您目前 FPGA 種類型號在此型號下我們已將 VHDL

與數位邏輯設計課本範例全部放於此處

73

光纖網路連線 FPGA 下載操作

首先利用光纖線將 eM_USB0 模組光纖輸出埠接至 eM_USB1 模組光纖輸入埠以此

類推最後再將最後 eM_USBN 模組光纖輸出埠接至 eM_USB0 模組光纖輸入埠配置

如附圖方式

個人電腦(Windows) eM_USB模組

0USB

eM_USB模組1

光纖網路

eM_USB模組2

eM_USB模組N

配置完成後進入 FPLC 系統首先必須先將 Node00 下載在 testASM 子目錄裡

piDSPv0bit 檔讓 eM_USB0 模組 FPGA 具備 DSP 功能才能執行光纖網路通訊

操作如下

此時您就可以選擇分別下載至各模組 FPGA 檔 bit

74

安裝 FPLC 注意事項

當您進入 FPLC 時

按 FILE 選擇 programhellip 選擇檔案為 exp_dcmplc 出現下面畫面

正常顯示畫面為

75

DOS 環境操作

在 PC 端的操作是在 Windows 環境中的 DOS 視窗中執行指令範例如下

eFPGA progNETbit 下載 FPGA電路至網路節點0(即 USB節點)中 eFPGA testLEDbit 1 下載 FPGA電路至網路節點1中

對於單一節點的控制程序如下

1將 eM_USB模組連結個人電腦的 USB端 2eM_USB模組開機 3執行下載指令即可 eFPGA xxxxbit 4若要更改 FPGA電路只要重新執行下載指令即可

對於多個網路節點的控制程序如下

1第一組 eM_USB模組連結個人電腦的 USB端再以光纖網路依序其他各節點 2連接 USB界面者為模組0從光纖發射端連接出去的模組為1依此類推 3將所有 eM_USB模組開機 4執行下載指令如下 eFPGA progNETbit 模組0必須先下載指定的 FPGA電路 eFPGA xxxxbit 1 再依序下載其他網路模組的 FPGA電路 eFPGA yyyybit 2 eFPGA zzzzbit 最後再重新下載模組0的 FPGA電路 5換句話說模組0必須先執行 progNETbit讓光纖網路接受 FPGA控制後才能透過光纖網路下載至其他節點等全部網路節點下載完畢後再將模組0的 FPGA重新下載讓模組0也可自由執行任意的 FPGA電路

6若要更改某一個網路節點中的 FPGA電路只要重新執行下述指令 eFPGA progNETbit 模組0必須先下載指定的 FPGA電路 eFPGA yyyybit 2 下載指定網路模組的 FPGA電路 eFPGA zzzz bit 最後再重新下載模組0的 FPGA電路 換句話說除非模組0中的 FPGA已經包括光纖網路管理電路否則一定要先在

模組0中下載網路管理電路後才能下載指定網路節點的 FPGA電路

76

光纖網路通訊 FPGA 發展系統

系統配置

光纖網路通訊 FPGA 發展系統的系統配置圖如下

個人電腦(Windows) eM_USB模組

0USB

eM_USB模組1

光纖網路

eM_USB模組2

eM_USB模組N

其中

1基本模組為 eM_USB模組可用 USB界面和個人電腦連線並提供 USB對光纖網路的轉換功能使得個人電腦可以獨立控制光纖網路中的每個網路節點

2eM_USB模組也可以作為光纖網路中的網路節點透過光纖網路而接受個人電腦的

監控 3就個人電腦而言不論是 USB界面直接連結或是以光纖網路間接連結的 eM_USB模組都是可以直接監控的網路節點最多可以同時控制一個 USB節點和 30個網路節點

4對於每一個網路節點個人電腦都可執行 eM_USB模組中 FPGA的電路下載工作並在適當的 FPGA電路配合下可執行 eM_USB模組中 FPGA內部電路的讀寫控制 5透過適當的 FPGA電路設計各網路節點都可透過光纖網路和其他任何網路節點

作同步通訊執行 FPGA內部記憶體的資料交換資料交換頻率可達 1KHz以上

77

網路模組配置

每個網路模組的標準配置圖如下

eM_USB模組光纖網路

USB eM_FPGA卡

eM_DEMO模組

eM_EXP實驗模組

DC電源

其中

1網路模組以 eM_USB模組為主提供基本的 USB界面和光纖網路連線 2eM_USB模組中的 FPGACPLD採用插卡型式可選擇不同的 eM_FPGA卡包括

eM_2V1K卡可選用 Virtex系列的 XC2V250和 XC2V1000 eM_3S1K卡可選用 Spartan3系列的 XC3S400XC3S1000和 XC3S1500 eM_3S50卡可選用 Spartan3系列的 XC3S50XC3S200和 XC3S400 eM_95XL卡可選用 9500XL系列的 XC95144XL和 XC95288XL 3eM_USB模組中的對外連線有兩種一種是 26P接頭用以連接既有的各種實驗模

組另一種是兩組 50P接頭將 FPGA中各接腳引出用以連接專題實驗 4eM_DEMO模組就是插上 50P接頭的教學模組其中包括 LED 數字顯示和 44鍵盤也具備兩組的 ADC和兩組的 DAC接頭提供類比訊號的測試工具

常用的實驗組合包括

1精簡組合包括(eM_USB+eM_FPGA)提供基本的網路節點適用於專題實驗 2標準組合包括(eM_USB+eM_FPGA+eM_DEMO)提供基礎 FPGA設計的教學實驗

3實驗組合包括(eM_USB+eM_FPGA+eM_DEMO+eM_EXP)提供進階的 FPGA實驗可依需求選用不同的實驗模組

78

eM_USB 模組

eM_USB 模組的電路配置圖如下

TxRx

DCPower

USB

JP2

JP3

光纖界面

外加電源

PC連線

JP1

eM_FPGA模組

FT232 CPLD FlashROM

SRAM

10cm

6cm

JP4

其中

1對外的連線接頭包括 DC電源 可選擇單電源(5V)或是多電源(5V+12V-12V)兩種 USB界面 直接連接個人電腦 光纖界面連接光纖網路 2實驗界面包括 JP1負責內部 CPLD的電路下載 JP2JP3兩組 50P的擴張用接頭 JP4 標準 26P接頭用以連接各種實驗模組 3內部的電路配置包括 A以 SO-DIMM接頭連接各種 eM_FPGA卡 B內附 EEPROMFlashROM和 SRAM提供 FPGA作應用測試 C以一顆 FT232BM作為 USB界面解碼而以一顆 CPLD作為光纖網路解碼 D提供各種 eM_FPGA卡的電路下載功能 4內附五顆 LED由上而下依序為 usbLED指示 USB界面的讀寫狀態 tstLED可由 FPGA電路自行定義 stsLED可由 FPGA電路自行定義 RxLED 可由 FPGA電路自行定義 TxLED 可由 FPGA電路自行定義

79

外部接腳定義

外部接頭的接點順序圖示如下

上視圖

JP11 9 JP4

126225

JP31

50249

JP21

50249

而各接頭的接點定義如下

JP1 JP4 JP2 JP3 1+33V 1+12V 2+12V 1 GND 2 GND 1 GND 2 GND 2GND 3 ADC 4 DAC 3POWER 4ALARM 3 +5V 4 +5V 3nc 5 yPB2 6 yPB3 5RxNET 6TxNET 5+12V 6+12V 4TCK 7 yPB1 6 yPB4 7RxUSB 6TxUSB 7-12V 6-12V 5nc 9 yPB0 10yPB5 9RxCAN 10TxCAN 9 ADC 10 DAC 6TDO 11yPB6 12yPB7 11P0D0 12P0D1 11P1D0 12P1D1 7TDI 13yGND 14yPC3 13P0D2 14P0D3 13P1D2 14P1D3 8nc 15yPC2 16yPC1 15P0D4 16P0D5 15P1D4 16P1D5 9TMS 17yPC0 18yPA0 17P0D6 18P0D7 17P1D6 18P1D7 19yPA1 20yPA2 19P0D8 20P0D9 19P1D8 20P1D9 21yPA3 22GND 21P0D10 22P0D11 21P1D10 22P1D11 23GND 24+5V 23P0D12 24P0D13 23P1D12 24P1D13 25+5V 26nc 25P0D14 26P0D15 25P1D14 26P1D15 27P2D0 28P2D1 27PxA0 28PxA1 29P2D2 30P2D3 29PxA2 30PxA3 31P2D4 32P2D5 31PxA4 32PxA5 33P2D6 34P2D7 33PxA6 34PxA7 35P2D8 36P2D9 35PxB0 36PxB1 37P2D10 38P2D11 37PxB2 38PxB3 39P2D12 40P2D13 39PxB4 40PxB5 41P2D14 42P2D15 41PxB6 42PxB7 43ADC0 44ADC1 43PxC0 44PxC1 45ADC2 46ADC3 45PxC2 46PxC3 47ADC4 48ADC5 47PxC4 48PxC5 49DAC0 50DAC1 49PxC6 50PxC7

80

eM_FPGA 模組

在各種 eM_FPGA 模組中FPGA 對外電路的標準配置圖如下

24576MHz

FlashROM

26PSRAM

EEPROM

mD[8]

yPA[4]

FPGACPLD

mA[19]mRDmWRmCSeeCKeeCSeeDIeeDO

光纖界面 RxNETTxNET

USB 界面 RxUSBTxUSBCLK24MPOWERALARM

LED

tstLEDstsLEDRxLEDTxLED

yPB[8]yPC[4]

ADCDAC

ADC[8]

實驗模組

ADC[2]

DAC[2]

xPA[4]

xPB[8]

xPC[4]

基礎實驗

其中

1FPGACPLD可以選擇下述幾種 XC2V250XC2V1000 採用 eM_2V1K模組其中 FPGA為 FG456包裝 XC3S400XC3S1000XC3S1500採用 eM_3S1K模組其中 FPGA為 FG456包裝 XC3S400XC3S1000XC3S1500採用 eM_3S1K模組其中 FPGA為 FG456包裝 XC3S50XC3S200XC3S400 採用 eM_3S50模組其中 FPGA為 TQ144包裝 XC95144XLXC95288XL 採用 eM_95XL模組其中 CPLD為 TQ144包裝 2採用 FG456包裝者可以控制所有的 IO界面 3採用 TQ144包裝者只是不能控制 RAM和 FlashROM而可以控制其他所有的界面 4所有 FPGA模組都可自由選擇由 USB界面或是由光纖界面下載電路但是 CPLD模組只能固定由 USB界面下載電路

5所有 FPGACPLD模組都可透過 26P接頭連接既有的各種實驗模組

81

FPGA 接腳對照表

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

mD0 XD6 mD0 A17 C13 -- -- mD1 XD7 mD1 B17 D12 -- -- mD2 XD8 mD2 C17 D11 -- -- mD3 XD9 mD3 D17 C11 -- -- mD4 XD10 mD4 E17 D10 -- -- mD5 XD11 mD5 E16 C10 -- -- mD6 XD12 mD6 E14 D9 -- -- mD7 XD13 mD7 E13 D7 -- -- mA0 XD14 mA0 D13 C7 -- -- mA1 XD15 mA1 C13 D6 -- -- mA2 XA0 mA2 V5 C3 -- -- mA3 XA1 mA3 U5 C4 -- -- mA4 XA2 mA4 Y2 D3 -- -- mA5 XA3 mA5 Y1 D4 -- -- mA6 XA4 mA6 V4 E3 -- -- mA7 XA5 mA7 V3 E4 -- -- mA8 XA6 mA8 W2 F3 -- -- mA9 XA7 mA9 W1 F4 -- -- mA10 XA8 mA10 T2 G6 -- -- mA11 XA9 mA11 T1 K3 -- -- mA12 XA10 mA12 R4 K10 -- -- mA13 XA11 mA13 R3 L3 -- -- mA14 XA12 mA14 R2 L4 -- -- mRD XRD mRD R1 D5 -- -- mWR XWR mWR P6 C6 -- --

POWER P0A0 POWER B4 B20 P1 P5 ALARM P0A1 ALARM A4 A19 P2 P6 RxNET P0A2 RxNET C4 B19 P4 P7 TxNET P0A3 TxNET C5 A18 P5 P9 RxUSB P0B0 RxUSB B5 A15 P6 P10 TxUSB P0B1 TxUSB A5 B15 P7 P11 RxCAN P0B2 RxCAN D6 A14 P8 P12 RxCAN P0B3 TxCAN C6 B14 P10 P13

CLK24M CLK24M CLK24M E12 B12 P124 P38

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

PWM0H P3A0 P0D0 E6 A8 P21 P23 PWM0L P3A1 P0D1 E5 B8 P23 P24 PWM1H P3A2 P0D2 C2 B6 P24 P25 PWM1L P3A3 P0D3 C1 A5 P25 P26 PWM2H P3A4 P0D4 D2 B5 P26 P27

82

PWM2L P3A5 P0D5 D1 A4 P27 P28 PWMenb P3A6 P0D6 E4 B4 P28 P30 PHT1Z P3A7 P0D7 E3 A3 P30 P31 PHT1A P3B0 P0D8 G2 C1 P31 P32 PHT1B P3B1 P0D9 G1 C2 P32 P33 PHT0A P3B2 P0D10 H5 D1 P33 P34 PHT0B P3B3 P0D11 J6 D2 P35 P35 AMP0 P3B4 P0D12 H4 E1 P36 P39 AMP1 P3B5 P0D13 H3 E2 P40 P40 AMP2 P3B6 P0D14 H2 F2 P41 P41 AMP3 P3B7 P0D15 H1 G1 P44 P43 eeSK P0C3 P1D0 C10 B9 P20 P22 eeCS P0C2 P1D1 D10 A9 P18 P21 eeDI P0C1 P1D2 F10 B10 P17 P20 eeDO P0C0 P1D3 E10 B11 P15 P19 ssCK P0B7 P1D4 E8 A11 P14 P17 ssCS P0B6 P1D5 E7 A12 P13 P16 ssDI P0B5 P1D6 A6 B13 P12 P15 ssDO P0B4 P1D7 B6 A13 P11 P14

ppCLK P3C0 P1D8 K4 G2 P46 P44 ppDIN P3C1 P1D9 K3 K1 P47 P45 TxD P3C2 P1D10 K2 K2 P50 P46 RxD P3C3 P1D11 K1 L1 P51 P48

tstLED P3C4 P1D12 L5 L2 P52 P49 stsLED P3C5 P1D13 L4 M1 P53 P50 RxLED P3C6 P1D14 L3 M2 P55 P51 TxLED P3C7 P1D15 L2 N1 P56 P52

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

xPA0 P2A0 P2D0 AA3 N2 P59 P53 xPA1 P2A1 P2D1 Y4 T1 P60 P54 xPA2 P2A2 P2D2 AA4 T2 P63 P56 xPA3 P2A3 P2D3 AB4 U2 P68 P57 xPC0 P2A4 P2D4 W5 V1 P69 P58 xPC1 P2A5 P2D5 Y5 V2 P70 P59 xPC2 P2A6 P2D6 AA5 W1 P73 P60 xPC3 P2A7 P2D7 AB5 W2 P74 P61

-- P2B0 P2D8 V6 Y1 P76 P64 -- P2B1 P2D9 V7 Y2 P77 P66 -- P2B2 P2D10 W6 AA3 P78 P68

mCS P2B3 P2D11 Y6 AB4 P79 P69 mA15 P2B4 P2D12 V9 AA4 P80 P70 mA16 P2B5 P2D13 V10 AB5 P82 P71 mA17 P2B6 P2D14 W10 AA5 P83 P74 mA18 P2B7 P2D15 Y10 AA6 P84 P75 CS0 P2C0 ADC0 AA10 AB8 P85 P76

83

SDIN0 P2C1 ADC1 AB10 AA8 P86 P77 CS1 P2C2 ADC2 U10 AB9 P87 P78

SDIN1 P2C3 ADC3 U11 AA9 P89 P79 SCLK P2C4 ADC4 V11 AB10 P90 P80 CS2 P2C5 ADC5 W11 AA10 P92 P81

SDOUT P2C6 ADC6 Y11 AB11 P93 P82 LDAC P2C7 ADC7 AA11 AA11 P95 P83

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

xPB0 P1A0 PxA0 M1 M3 P135 P85 xPB1 P1A1 PxA1 M2 M4 P132 P86 yPB2 P1A2 PxA2 M3 N3 P131 P87 yPB3 P1A3 PxA3 M4 N4 P130 P88 yPB1 P1A4 PxA4 M5 T4 P129 P91 yPB4 P1A5 PxA5 M6 T5 P128 P92 yPB0 P1A6 PxA6 N1 U3 P127 P93 yPB5 P1A7 PxA7 N2 U4 P125 P94 yPB6 P1B0 PxB0 U13 V3 P119 P95 yPB7 P1B1 PxB1 V13 V4 P118 P96 xPB2 P1B2 PxB2 W13 W3 P116 P97 xPB3 P1B3 PxB3 Y13 W4 P113 P98 xPB4 P1B4 PxB4 AA13 Y3 P112 P100 xPB5 P1B5 PxB5 AB13 Y4 P96 P101 yPC3 P1B6 PxB6 U12 Y5 P97 P102 yPC2 P1B7 PxB7 V12 W5 P98 P103 yPC1 P1C7 PxC0 AB17 W11 P108 P113 yPC0 P1C6 PxC1 AA17 Y11 P107 P112 yPA0 P1C5 PxC2 Y17 W10 P105 P111 yPA1 P1C4 PxC3 W17 Y10 P104 P110 yPA2 P1C3 PxC4 AB18 W9 P103 P107 yPA3 P1C2 PxC5 AA18 W8 P102 P106 xPB6 P1C1 PxC6 Y18 W6 P100 P105 xPB7 P1C0 PxC7 W18 Y6 P99 P104

84

eM_DEMO 模組

eM_DEMO 模組的電路配置圖如下

eM_USB 模組

數字型 LED

0 1 2 34 5 6 78 9 A BC D E F

燈號型 LED

44 鍵盤

ADC0 ADC1 DAC0 DAC1

LED 選擇KEY 選擇

其中

1eM_DEMO模組的基本功能包括 A將 xPAxPBxPC等 16個 IO訊號引出控制 LED和鍵盤電路 B將 ADDA訊號引出並放大成+-10V的工作範圍 2LED和鍵盤可以選擇三種模式由 LED和 KEY 兩組開關作選擇圖示如下

模式1

0123

模式2 模式3

0 1 2 34 5 6 78 9 A BC D E F

0123

3模式14鍵輸入並搭配 16點的 LED燈號顯示其中 16點 LED分別對映到 xPA[0~3]xPB[0~7]和 xPC[0~3] 4組按鍵分別對映到 xPC[0~3] 4模式24鍵輸入並搭配四個 7段式數字顯示其中 數字顯示由 xPA[0~3]作數字掃瞄而由 xPB[0~7]作 7段式 LED控制 4組按鍵 分別對映到 xPC[0~3] 5模式316鍵輸入並搭配四個 7段式數字顯示其中 數字顯示由 xPA[0~3]作數字掃瞄而由 xPB[0~7]作 7段式 LED控制 16組按鍵由 xPA[0~3]作鍵盤掃瞄而由 xPC[0~3]作鍵盤讀取 6根據VHDL與數位邏輯設計的章節其中 第 1章至 10章的實驗採用模式1而 第 11章實驗採用模式2而 第 12章之後的實驗都採用模式3

85

FPGA UCF 定義

eM_3S1K 模組

NET CLK LOC = B12

NET XAlt0gt LOC = N2

NET XAlt1gt LOC = T1

NET XAlt2gt LOC = T2

NET XAlt3gt LOC = U2

NET XBlt0gt LOC = M3

NET XBlt1gt LOC = M4

NET XBlt2gt LOC = W3

NET XBlt3gt LOC = W4

NET XBlt4gt LOC = Y3

NET XBlt5gt LOC = Y4

NET XBlt6gt LOC = W6

NET XBlt7gt LOC = Y6

NET XClt0gt LOC = V1

NET XClt1gt LOC = V2

NET XClt2gt LOC = W1

NET XClt3gt LOC = W2

NET YAlt0gt LOC = W10

JP4 接頭

NET YAlt1gt LOC = Y10

NET YAlt2gt LOC = W9

NET YAlt3gt LOC = W8

NET YBlt0gt LOC = U3

NET YBlt1gt LOC = T4

NET YBlt2gt LOC = N3

NET YBlt3gt LOC = N4

NET YBlt4gt LOC = T5

NET YBlt5gt LOC = U4

NET YBlt6gt LOC = V3

NET YBlt7gt LOC = V4

NET YClt0gt LOC = Y11

NET YClt1gt LOC = W11

NET YClt2gt LOC = W5

NET YClt3gt LOC = Y5

在光碟片中 RFFPGAVHDLDEMOBIT3S1K 裡有 VHDL 與數位邏輯設計書本範例原始檔與合成檔

86

eM_3S50 模組

NET CLK LOC = P124

NET XAlt0gt LOC = P59

NET XAlt1gt LOC = P60

NET XAlt2gt LOC = P63

NET XAlt3gt LOC = P68

NET XBlt0gt LOC = P135

NET XBlt1gt LOC = P132

NET XBlt2gt LOC = P116

NET XBlt3gt LOC = P113

NET XBlt4gt LOC = P112

NET XBlt5gt LOC = P96

NET XBlt6gt LOC = P100

NET XBlt7gt LOC = P99

NET XClt0gt LOC = P69

NET XClt1gt LOC = P70

NET XClt2gt LOC = P73

NET XClt3gt LOC = P74

NET YAlt0gt LOC = P105

JP4 接頭

NET YAlt1gt LOC = P104

NET YAlt2gt LOC = P103

NET YAlt3gt LOC = P102

NET YBlt0gt LOC = P127

NET YBlt1gt LOC = P129

NET YBlt2gt LOC = P131

NET YBlt3gt LOC = P130

NET YBlt4gt LOC = P128

NET YBlt5gt LOC = P125

NET YBlt6gt LOC = P119

NET YBlt7gt LOC = P118

NET YClt0gt LOC = P107

NET YClt1gt LOC = P108

NET YClt2gt LOC = P98

NET YClt3gt LOC = P97

在光碟片中 RFFPGAVHDLDEMOBIT3S200 裡有VHDL與數位邏輯設計書本範例原始檔與合成檔

87

eM_95XL 模組

NET CLK LOC = SPIN38

NET XAlt0gt LOC = SPIN53

NET XAlt1gt LOC = SPIN54

NET XAlt2gt LOC = SPIN56

NET XAlt3gt LOC = SPIN57

NET XBlt0gt LOC = SPIN85

NET XBlt1gt LOC = SPIN86

NET XBlt2gt LOC = SPIN97

NET XBlt3gt LOC = SPIN98

NET XBlt4gt LOC = SPIN100

NET XBlt5gt LOC = SPIN101

NET XBlt6gt LOC = SPIN105

NET XBlt7gt LOC = SPIN104

NET XClt0gt LOC = SPIN58

NET XClt1gt LOC = SPIN59

NET XClt2gt LOC = SPIN60

NET XClt3gt LOC = SPIN61

NET YAlt0gt LOC = SPIN111

JP4 接頭

NET YAlt1gt LOC = SPIN110

NET YAlt2gt LOC = SPIN107

NET YAlt3gt LOC = SPIN106

NET YBlt0gt LOC = SPIN93

NET YBlt1gt LOC = SPIN91

NET YBlt2gt LOC = SPIN87

NET YBlt3gt LOC = SPIN88

NET YBlt4gt LOC = SPIN92

NET YBlt5gt LOC = SPIN94

NET YBlt6gt LOC = SPIN95

NET YBlt7gt LOC = SPIN96

NET YClt0gt LOC = SPIN112

NET YClt1gt LOC = SPIN113

NET YClt2gt LOC = SPIN103

NET YClt3gt LOC = SPIN102

在光碟片中 RFFPGAVHDLDEMOSVF95288XL 裡有VHDL與數位邏輯設計書本範例原始檔與合成

檔案

88

eM_FPGA 模組

NET CLK LOC = E12

NET XAlt0gt LOC = AA3

NET XAlt1gt LOC = Y4

NET XAlt2gt LOC = AA4

NET XAlt3gt LOC = AB4

NET XBlt0gt LOC = M1

NET XBlt1gt LOC = M2

NET XBlt2gt LOC = W13

NET XBlt3gt LOC = Y13

NET XBlt4gt LOC = AA13

NET XBlt5gt LOC = AB13

NET XBlt6gt LOC = Y18

NET XBlt7gt LOC = W18

NET XClt0gt LOC = W5

NET XClt1gt LOC = Y5

NET XClt2gt LOC = AA5

NET XClt3gt LOC = AB5

NET YAlt0gt LOC = Y17

JP4 接頭

NET YAlt1gt LOC = W17

NET YAlt2gt LOC = AB18

NET YAlt3gt LOC = AA18

NET YBlt0gt LOC = N1

NET YBlt1gt LOC = M5

NET YBlt2gt LOC = M3

NET YBlt3gt LOC = M4

NET YBlt4gt LOC = M6

NET YBlt5gt LOC = N2

NET YBlt6gt LOC = U13

NET YBlt7gt LOC = V13

NET YClt0gt LOC = AA17

NET YClt1gt LOC = AB17

NET YClt2gt LOC = V12

NET YClt3gt LOC = U12

在光碟片中 RFFPGAVHDLDEMOBIT2V250 裡有VHDL與數位邏輯設計書本範例原始檔與合成檔

89

Page 4: RFFPGA 直流馬達實驗手冊juniortek.com.tw/program/manual/RF-DC-mal.pdf · em_demo模組 em_dcm 直流伺服馬達 dc電源 rffpga 系統的直流馬達實驗規劃 其中包括:

其中

1基本模組為 eM_USB模組可用 USB界面和個人電腦連線並提供 USB對光纖網路的轉換功能使得個人電腦可以獨立控制光纖網路中的每個網路節點

2eM_USB模組也可以作為光纖網路中的網路節點透過光纖網路而接受個人電腦的

監控 3就個人電腦而言不論是 USB界面直接連結或是以光纖網路間接連結的 eM_USB模組都是可以直接監控的網路節點最多可以同時控制一個 USB節點和 30個網路節點

4對於每一個網路節點個人電腦都可執行 eM_USB模組中 FPGA的電路下載工作並在適當的 FPGA電路配合下可執行 eM_USB模組中 FPGA內部電路的讀寫控制 5透過適當的 FPGA電路設計各網路節點都可透過光纖網路和其他任何網路節點

作同步通訊執行 FPGA內部記憶體的資料交換資料交換頻率可達 1KHz以上 6當然也就是一部個人電腦可同時監控 31個直流伺服馬達控制狀況

4

2馬達驅動界面

馬達的控制需要高速的動態響應能力是 DSP 核心的重要應用方向本實驗中建立馬達

驅動器的界面包括 PWM 的驅動控制以及光電盤的解碼和計數提供馬達控制實驗的設

計基礎

設計說明 直流馬達

直流馬達屬於扭力控制結構的電機機械其轉子磁場和定子磁場相互垂直

扭力控制結構

L1

L2

N

SN S

轉子

定子

當轉子和定子磁場相互垂直時就會產生扭力而讓轉子旋轉但是一旦旋轉到 90o使

得磁場平行時馬達就會失去扭力而停止了轉動為了使馬達持續不停的旋轉直流馬

達中設計了很特殊的電樞結構讓轉子不論旋轉到任何角度轉子磁場和定子磁場永遠

保持垂直

N S

電樞示意圖

在轉子在每一瞬間都只有和定子垂直的那組線圈能夠導通所以無論轉子轉到任何角

度直流馬達永遠都能保持垂直磁場的狀態

在垂直磁場的狀態下只要能控制轉子電流就能控制磁場的大小也就能控制馬達的

扭力了由於定子磁場不變只有電樞的電流可以控制就可以簡化成下面的直流馬達

符號

直流馬達符號

5

電壓驅動模式

直流馬達的驅動方式有電壓驅動和電流驅動兩種

1電流驅動的方式是控制扭力電流越大扭力越大電流越小扭力越小 2電壓驅動的方式是控制轉速電壓越高轉速越高電壓越低轉速越低 3電流和扭力的關係比較線性也不受外界干擾影響 4電壓和轉速的關係比較不線性也比較容易受負載的干擾

電流驅動比較符合扭力控制模式控制效果比較直接但是相對的電路成本也較高電

壓驅動電路比較簡單控制效果雖然沒有電流驅動的響應好但是仍能維持相當不錯的

水準因此大部分低價產品還是選擇電壓驅動模式

電流驅動方式 電壓驅動方式

+-

一個最簡單的電壓驅動電路就是以運算放大器為基礎的線性驅動電路其電路方塊圖如

線性電壓驅動

VinVout

V+

V-

線性放大器

線性放大器的特性非常理想其電壓輸出 Vout 和電壓輸入 Vin 成正比也不受其他環

境因素所干擾輸出正電壓馬達就正轉輸出負電壓馬達就反轉但是線性放大器的能

量效率卻是非常不理想以下圖為例

VinVout

V+

V-

線性放大器

=5V

=+15V

=-15V

1A

1A

6

假設在某種轉速下馬達需要的電壓輸出為 5V而電流為 1A那麼就產生了(5V1A=5W)

的功率輸出由於線性放大器的電流完全由電源供應器提供所以電源電流也是 1A在

15V 的電源電壓下驅動級的功率為(15V1A=15W)當有 15W 的功率進入驅動級而只

有 5W 的功率流出驅動級代表其中 10W 的功率浪費掉了在能量不滅的定律下功率

是不會憑空消失的這意味著這 10W 的功率已經變成了熱能使得驅動級發燙起來還

得另外設法散熱

在兩種狀況下會造成最小的功率消耗一種是最大電壓輸出(全開)狀況一種是零電

流輸出(全關)狀況說明如下

1當最大電壓輸出時假設輸出電壓為 15V輸出電流為 1A則 輸出功率為(15V1A=15W) 輸入功率為(15V1A=15W) 所以驅動級的消耗功率為(15W-15W=0W) 2當零電流輸出時假設輸出電壓為 0V輸出電流為 0A則 輸出功率為( 0V0A=0W) 輸入功率為(15V0A=0W) 所以驅動級的消耗功率為(0W-0W=0W)

當然真實的電路不會那麼理想但是這種特殊工作點的選擇的確會讓驅動電路變得非

常有效率

PWM 脈寬調變

脈寬調變電路(Pulse Width Modulation簡稱 PWM)就是利用全開和全關的兩種最佳效

率點所設計的電路

就 PWM 驅動器本身而言只有全開和全關的兩種控制模式假設我們還是需要 5V 和 1A

的輸出控制需求那麼就可以控制全開的比率(即工作率 Duty-Cycle)為 13 週期使得

輸出的平均電壓維持在 5V 的準位如下圖所示

Vin Vout

V+

V-

線性放大器

因為輸出只有全開或全關的兩種狀態如果再使用昂貴的線性放大器就太浪費了這時只要用

最簡單的開關放大器就可以辦到了最基本的開關放大器有下述兩種

7

V+

單向控制

V+

A

AB

B

A雙向控制

單向控制結構只能控制直流馬達做單方向的運轉而由 PWM 控制馬達的轉速雙向控制

在速度之外還可以控制馬達作正反轉通常用來執行直流馬達的位置控制用

PWM 的控制波形非常簡單就是產生一組平均值為指定電壓的波形也就是控制所謂的

工作率(Duty-Cycle)定義如下

平均電壓 = Ton (Ton + Toff) 電源電壓 = 工作率 電源電壓

但是由於波形上的微小差異細分起來還是有下面三種型式

前緣對齊型

10 1010

30 30 30

50 50 50

中間對齊型 後緣對齊型

如果只有一組 PWM 波形輸出無論採用哪種波形都沒有差異只有當多個 PWM 波形要同

時輸出(例如交流馬達作三相控制)時才需要選擇中間對齊的型式作處理以免造成相

位失真的現象

在電路設計上都是產生一組參考波來和電壓命令作比較當電壓命令大於參考波時就

送出 1小於參考波時就送出 0如此就形成 PWM 波形其差別只是採用何種參考波作

比較

前緣對齊型

70

中間對齊型 後緣對齊型

70

以上圖為例要產生前緣對齊型的 PWM 訊號就採用遞增型鋸齒波若採用遞減型鋸齒

波就會產生後緣對齊型的 PWM 訊號採用前後對稱的三角波就會產生中間對齊型的

PWM 訊號

8

PWM切換保護

對於單一線圈的負載而言PWM切換電路的電路方塊圖如下

負載

正電源

負電源

PWM+

PWM-

P

N

其中

1以兩組電晶體來分別控制正負電源其中的電晶體依據功率需求可選擇功率電晶體

MOSFET或是 IGBT不論哪種選擇其控制原理都一致 2將 PWM訊號分成正向和反向的兩組控制訊號PWM+控制正電源的導通與否而

PWM-控制負電源的導通與否 3切換組合包括 P=OFFN=OFF負載和電源隔離 P=ON N=OFF負載連接上正電源 P=OFFN=ON 負載連接上負電源 P=ON N=ON 正負電源短路這時功率驅動級將瞬間燒毀

原則上只要將 PWM+和 PWM-間的邏輯反向是不可能發生兩者都 ON 的情況但是再考慮

功率電晶體(包括電晶體MOSFET 和 IGBT)的暫態響應電晶體 OFF 的反應時間通常比

電晶體 ON 的反應時間要長一些所以在切換瞬間很可能產生兩者都導通的瞬間狀態

這時可能有兩種結果

1兩者同時導通的時間稍長時功率驅動級將瞬間產生過電流而燒毀 2兩者同時導通的時間非常短這時功率驅動級雖不至於瞬間燒毀但是會產生很高

的熱量使得功率驅動級的溫度快速加高甚至於因為過熱而燒毀

因此 PWM 控制必須加上切換保護其示意圖如下

PWM+ PWM-

切換保護

其中

1基本上PWM-只是 PWM+的反向訊號兩者都由一組 PWM訊號控制 2但是在 ONOFF 切換的瞬間必須加上一段兩者都 OFF的時間這段時間的長度

可依照功率電晶體的 ONOFF特性來設定在 1us~4us之間

9

PWM 啟動保護

在系統開機時很不容易保證各個元件都能依照順序依序啟動因此在系統啟動時必須

自動將 PWM 輸出關掉直到系統完成整個開機程序後才能再將 PWM 訊號重新啟動一

般而言啟動程序如下

1系統開機後功率驅動級通常最快啟動這時 PWM必須保持在 OFF 狀態避免系

統誤動或短路 2之後依次啟動 BIOSLinux網路最後才啟動應用程式 3應用程式啟動後必須依序 A下載 FPGA B下載 DSP控制軟體 C啟動 DSP控制軟體 在啟動 DSP控制軟體後才能重新開啟 PWM的動作 4任何時間中只要 DSP控制停止就必須立刻關閉 PWM控制以避免誤動或短路

所以 PWM 啟動保護是由 DSP 程式直接控制其必要程序包括

1FPGA電路下載完畢並執行工作中 2DSP程式下載完畢並執行工作中

其中任何一個部分停止都必須立刻關閉 PWM 控制一般而言這部分電路都由看護犬

(watch-dog)電路管理而由 DSP 程式負責驅動

DCM 實驗模組

DCM 模組是一個完整的直流馬達實驗機台系統方塊圖如下

YA1

切換保護

YA2

YC0

馬達

PHTA PHTB

PWM+

DIS

YA0 PWM-

+12VSW

YC1

JP4 A

AB

B

雙向控制

光電盤

A

B

其中

1採用雙向控制的 PWM功率驅動級來驅動直流馬達可控制馬達正反轉 2功率驅動級中已有切換保護其控制訊號包括

10

PWM+ PWM- DIS 直流馬達 X X 1 OFF 1 0 0 正電壓驅動 0 1 0 負電壓驅動

3功率驅動級中並沒有啟動保護所以必須附加電源開關作手動控制 4馬達轉角由光電盤的 AB相訊號作回授 5所有控制訊號都經由 JP4接頭接到 RFFPGA控制器中可由 FPGA作控制

三角波產生器

實驗中以中間對齊型的 PWM 訊號為控制目標首先建立對稱的三角波作為參考訊號其

對映的 VHDL 程式範例如下

TRIANGLE_WAVE block signal Q STD_LOGIC_VECTOR (11 downto 0) signal CEDIR STD_LOGIC begin process (CLKRESET) -- sequential logic begin if RESET=1 then --reset Qlt=000000000111 --reset to 7 elsif CLKevent and CLK=1 then --CLK=gt1 trigger if CE=1 then --clock enable if DIR=0 then Qlt=Q+1 --up counter else Qlt=Q-1 --down counter end if end if end process -- combinational logic CE lt= SYSTEM(0) --24MHz clock DIR lt= SYSTEM(13) --4KHz square wave REF lt= Q --12-bit reference (7~3079) end block TRIANGLE_WAVE 其中

1程式設計為可適用於不同的系統時鐘包括 49152MHz和 24576MHz 兩種型式 2計數器的基本頻率為 24576MHz所以用 CE=SYSTEM(0)來控制計數動作 3三角波的頻率設為 4KHz所以計數器的峰值為(2457642=3072) 4正反計數器和系統時序同步而以 SYSTEM(13)做為同步控制由於 SYSTEM(13)為 4KHz的方波設定 DIR=SYSTEM(13)即可控制計數器的上升或下降

5在 RESET時將計數器的初值設為 7使得計數範圍修正為 7~3079所以即使有些同步誤差也不會產生負數輸出的嚴重影響

6三角波以 REF[12]作輸出數值範圍在 7~3079之間頻率為 4KHz

11

如果 PWM 的頻率過低馬達端會產生震動噪音這時就必須提高 PWM 的頻率在前面程

式中如果要將 PWM 頻率從 4KHz 提升為 8KHz則可更改如下

if DIR=0 then Qlt=Q+2 --up counter else Qlt=Q-2 --down counter DIR lt= SYSTEM(12) --8KHz square wave 其中

1將 DIR改由 8KHz的 SYSTEM(12)來控制 2同時將計數器改成+2-2的正反計數器 3如此仍然能夠維持 REF輸出的數值範圍(7~3079)

如果還要再將 PWM 的頻率提高到 16KHz則可更改如下

if DIR=0 then Qlt=Q+4 --up counter else Qlt=Q-4 --down counter DIR lt= SYSTEM(11) --16KHz square wave 其中

1將 DIR改由 16KHz的 SYSTEM(11)來控制 2同時將計數器改成+4-4的正反計數器 3如此仍然能夠維持 REF輸出的數值範圍(7~3079)

表面上三角波產生器的數值精度為 12-bit時間精度為 24MHz但是由於 PWM 訊號將

透過 FPGA2 輸出而高速串列界面的更新速度為 15MHz所以就 DCM 模組所收到的 PWM

控制訊號而言其時間精度將降低為 15MHz而數值上的精度將降低為 8-bit等效範

圍為 0~192 或是+-96 之間整體而言控制上的精度約為 05仍可符合馬達控制的

需求

PWM 波形產生器

接著處理比較的動作並產生 PWM 波形對映的 VHDL 程式範例如下

PWM_COMPARATOR block signal CEPUPD STD_LOGIC signal D0D1D2D3D4 STD_LOGIC begin process (CLK) -- sequential logic begin if CLKevent and CLK=1 then --CLK=gt1 trigger if CE=1 then --CLK enable D4lt=D3 D3lt=D2 D2lt=D1 D1lt=D0 --delay end if end if

12

end process -- combinational logic CE lt= CLK1M D0 lt= 1 when CMDgtREF else 0 --PWM generation PU lt= D1 and D2 and D3 and D4 --up-side output PD lt= not D1 and not D2 and not D3 and not D4 --down-side output PWMU lt= PU --up-side PWM output PWMD lt= PD --down-side PWM output PWMI lt= (not PU and not PD) or not ENB --PWM disable PWMR lt= REF --PWM reference end block PWM_COMPARATOR

程式中所對映的時序如下

CE

REF

CMD

D1D2D3D4PWMUPWMDPWMI

其中

1以 15MHz的 CE訊號為基本頻率 2將電壓命令 CMD和參考波形 REF作比較若 CMDgtREF則設定 D0=0否則設定

D0=1 3將 D0訊號作四次的延遲處理延遲訊號依序為 D1D2D3D4最後再重新組合成

PWM的輸出波形 4其輸出訊號包括 PWMU對映到 DCM模組中的 PWM+訊號 PWMD對映到 DCM模組中的 PWM-訊號 PWMI對映到 DCM模組中的 DIS訊號為切換保護訊號 如此 PWMU作動和 PWMD作動之間將有 2us間隔中是兩者都不作動的也就是

PWMI的作動時間 5當 ENB命令=0時設定 PWMI=1而使得驅動器 OFF

13

回授訊號的處理

精密的伺服馬達動作必須將馬達的位置和速度加以量測後再執行回授控制因此速

度和位置的量測是精密控制中必要的一環我們通常用光電寫碼器或數位尺來進行量測

工作

光電寫碼器(Photo-Encoder)俗稱光電盤是利用光電量測進行的非接觸式數位量測元

件其基本裝置如下

LED光源

光電晶體偵測

以 LED 或是其他光源來發光而用 AB 相的兩組光電晶體來偵測當圓盤隨著馬達作轉

動時光電晶體即可偵測到其移動狀態由於圓盤中的小孔呈等距排列其透光部分和

不透光部分呈 50對 50的比例當圓盤轉動時光電晶體端就可以偵測到下述訊號

光電盤訊號(A 相)

光電盤訊號(B 相)

正轉

其中

1偵測方波的頻率即對應於圓盤轉動的頻率也就是轉速 2偵測方波的個數即對應於圓盤轉過的孔數也就是轉角(相對角度) 3由於 AB相的兩組光電晶體在機械安裝上的角度不同使得讀出訊號也有 90 度的

差異如果馬達正轉則 A相超前如果馬達反轉則 B相超前

有了兩相的光電盤訊號只要能偵測其中的相位變化就可以分辨光電盤的正反轉運動

了例如正轉時的光電盤時序如下

14

光電盤訊號 (A 相 )

光電盤訊號 (B 相 )

正轉

微分訊號(A+)

微分訊號(A-)

微分訊號(B+)

微分訊號(B-)

正轉脈衝(CW)

其中

1針對 AB 兩相訊號作微分處理即可取得 A+A-B+B-的上緣微分和下緣微分 2將微分訊號和和原有的 AB相訊號作比較即可找出正轉脈衝 3計算正轉脈衝的頻率和個數即可取得馬達的速度和轉角 4如此得到的脈衝數將是原有 AB相頻率的四倍所以稱之為乘四解碼電路

同樣的如果針對光電盤的反轉時序一樣可以得出反轉訊號圖示如下

光電盤訊號(A相)

光電盤訊號(B相)

反轉

反轉脈衝(CCW)

其公式如下

CW lt= (A+ and not B) CCW lt= (A+ and B) or (A- and B) or (A- and not B) or (B+ and A) or (B+ and not A) or (B- and not A) or (B- and A)

整合光電盤回授的處理其系統方塊圖如下

數位濾波

D Q

CK

DLA

PHA

D Q

CK

DLB

PHB

CLK

乘四解碼電路

DIR

PLS

數位濾波

PA

PB

正反計數

CNT DB

RD

CS

包括

15

1首先利用簡單的數位濾波器將 AB項的雜訊排除 2接著利用延遲電路作微分處理並以乘四解碼電路解出轉動的脈波和方向 3最後利用正反計數器作計數並將計數值讀入匯流排

數位濾波器

光電盤的 AB 相訊號中如果產生雜訊干擾的現象會使得馬達轉角的計量上產生永久

性的累積誤差將造成控制上無法彌補的錯誤所以 AB 相訊號上的雜訊一定要盡力排

除下面是常用的數位濾波器設計範例

FILTER_A block -- digital filter for A signal CED0D1D2 STD_LOGIC begin process (CLK) -- sequential logic begin if CLKevent and CLK=1 then --CLK=gt1 trigger if CE=1 then --clock enable D2lt=D1 D1lt=D0 D0lt=PA --delay 3 clocks PHA lt= (D0 and D1 and D2) or ((D0 or D1 or D2) and PHA) end if end if end process -- combinational logic CE lt= CLK1M --15MHz clock end block FILTER_A 其中

1以 15MHz的頻率為控制基準 2利用延遲電路依序產生 D0D1D2的延遲訊號 3連續三個 1(D0D1D2 都是 1)定義為 1連續三個 0(D0D1D2 都是 0)定義為 0而其他不連續的 10 都定義為雜訊如此可將高頻的雜訊濾除

4但是相對的AB相訊號的最高頻率將限制為 250KHz(連續 3個 1和連續 3個 0)頻率過高的 AAB相訊號將被視為雜訊而不處理必須特別注意

正反轉的解碼和計數

依據前面的公式說明對映的 VHDL 程式範例如下

DECODER block signal DLADLB STD_LOGIC begin process (CLK) -- sequential logic begin if CLKevent and CLK=1 then --CLK=gt1 trigger DLAlt=PHA DLBlt=PHB --delay 1-clock end if end if

16

end process -- combinational logic DIR lt= (not PHA and DLA and not PHB) or ( PHA and not DLA and PHB) or (not PHB and DLB and PHA) or ( PHB and not DLB and not PHA) PLS lt= (not PHA and DLA) or (PHA and not DLA) or (not PHB and DLB) or (PHB and not DLB) end block DECODER 其中

1PHAPHB為經過雜訊濾波後的 AB相訊號而 DLADLB是其延遲訊號 2根據乘四解碼電路的公式取得 DIR和 PLS訊號其中 DIR用以控制計數器的正反向 PLS用以控制計數器的計數與否

所以接下去就是正反計數器的設計範例如下

COUNTER block signal Q STD_LOGIC_VECTOR(11 downto 0) begin process (CLKRESET) -- sequential logic begin if RESET=1 then --power-on reset Qlt=000000000000 --reset to 0 elsif CLKevent and CLK=1 then --CLK=gt1 trigger if PLS=1 then --clock enable if DIR=1 then Qlt=Q-1 --down counter else Qlt=Q+1 --up counter end if end if end if end process -- combinational logic CNT lt= Q --counter output end block COUNTER 其中

1這是標準的正反計數器架構在開機時自動復歸 2計數器的長度為 12-bit可依需要自行調整

DCM模組中的光電盤精度為每圈500格經過乘四解碼後相當於每圈2000格所以12-bit

計數器只能處理 2 圈的應用範圍絕對不夠在真正應用時一定要用軟體或硬體的方

式再擴張成 16-bit 或是 32-bit 的寬度來處理才行

17

3實驗項目

在直流伺服馬達控制系統中規劃五個實驗項目由系統首頁做選擇每項實驗操

作整個系統實驗組成由各項實驗項目 CAI 檔及各項實驗項目程式連結 PLC 檔結合而成茲表列如下

直 流 伺 服 實 驗 e x p _d c m c ai

開 環 路 電 壓 控 制

系 統 首 頁 實 驗 程 序

e x p _p w m c ai

開 環 路 速 度 控 制 e x p _s p ee d c a i

閉 環 路 位 置 控 制 e x p _a n gl e c a i

加 減 速 的 位 置 控 制 e x p _a c c c ai

正 弦 波 位 置 控 制 e x p _s i n c ai

C A I 圖 控 檔

直 流 伺 服 實 驗 開 環 路 電 壓 控 制

系 統 首 頁 實 驗 程 序

e x p _p w m p lc

開 環 路 速 度 控 制 e x p _s p ee d p l c

閉 環 路 位 置 控 制 e x p _a n gl e p l c

加 減 速 的 位 置 控 制 e x p _a c c p lc

正 弦 波 位 置 控 制 e x p _s i n p lc

e T T Y 批 次 檔

18

4安裝程序

31 將 RFFPGA中的程式拷貝至工作硬碟中進入 DC子目錄資料夾中其中包含下

列檔案

檔案 內容說明 mod SIN_wave MODPWM_wave MODIIR1_filter MODDAS4

MODPOS_inputMODPWM_outputMODACC_controlMODPD_controlMOD這些檔案是由 ASM重新編譯出由 testDCMmem所需執行模組檔

asm SIN_waveasmPWM_waveasmIIR1_filterasmDAS4asm POS_inDCMasmPWM_outDCMasmACC_conDCMasmPD_controlasm是各模組組合語言所設計 SOURCE檔

plc 為進行實驗所需的各批次檔 bit piDSPv0bit為下載到 FPGA的 BIT檔其功能為將 FPGA規劃成

具備 piDSP控制晶片功能提供直流伺服控制所需的控制程式

撰寫 testDCMsys 記載進行 DCM實驗時所需的模組 testDCMMEM 連結完成的 DSP執行檔用來進行 DCM實驗 testDCMvar 紀錄 DCM實驗時的參數對照表

在進行實驗前先將實驗所需的系統程式與模組程式分別說明加以說明系統所

需的程式模組由 testDCMsys 來描述程式列印如下

module fg1 PWM_wavemod 方波產生器

module fg2 SIN_wavemod 弦波產生器

module cn1 ACC_controlmod 加減速控制器

module cn2 PD_controlmod 比例微分控制器

module io1 POS_inputmod 位置和速度讀值

module io2 PWM_outputmod PWM 電壓輸出界面

module ft1 IIR1_filtermod 一階濾波器

module das das4mod 示波器資料蒐集

module io3 LEDKEYmod LEDKEY 界面

其中包括

1兩組波型產生器作為測試命令包括正弦波和方波 2兩組控制器提供包括加減速PD控制器的功能可依照實驗需求搭配使用 3兩組輸入輸出界面執行 PWM輸出和相位回授的界面處理 4一組低通濾波器作為電壓開迴路控制迴路和速度閉迴路控制的模擬使用 5DAS4mod是示波器專用的配合模組不論任何實驗都必須加入此模組 6Ledmod是四位數字七段顯示與 44矩陣按鍵模組

19

5執行程序

首先進入 RFFPGA 裡子目錄 DC直接點選 fPLCexe 出現下面操作畫面(也可直接將此檔

案放置桌面直接點選)

進入下面操作畫面

20

首先使用滑鼠在 FPGA下載按鈕單擊動作使 FPGA變成 piDSP晶片 如您撰寫組合語言時可使用 eASM按鈕 經編譯完成後產生MOD檔 如您撰寫系統連結程式時可使用 eLINK按鈕 經連結完成後產生MEM與VAR檔 點選實驗三後顯示如下 選擇程式下載再按程式啟動這時直流伺服馬達開始做位置控制在操控畫面放置 P 參數設定欄更改參數時馬達即時隨參數改變而產生不同響應 直接點選程式停止時結束所有控制動作再按回首頁選擇其他實驗

21

6實驗說明

下圖所示為直流馬達的控制系統方塊圖透過電流速度以及位置的回授再搭

配適當的控制器可建立完整的閉迴路控制系統在後面的實驗中將依此一系統方塊圖

逐步建立速度和位置的控制實驗各實驗的說明和操作方式及參考實驗結果將逐一進

行詳細的說明

控制

參考位置

速度 位置速

度控制 電流控制

電力電

子換流

位置速

度感測

i

+ -

壓ν

位置

速度

i

DC直流馬達之控制系統方塊圖

PWM 驅動方式只是簡單的開環路控制而高精度的馬達控制必須透過回授控制來完成

對於邏輯電路的設計者而言必須先瞭解基本的回授控制架構以便將來轉換成實用的

邏輯電路設計

設計說明

開環路特性

在電壓驅動的狀況下直流馬達開環路控制的示意圖如下

+-

22

如果換算成數學模式則轉換成下面的架構

+-Vc

R L

EMF

+

-

ITB

J

ω

其中

1其中的變數和參數包括 Vc 控制的電壓命令 R 電樞迴路的等效電阻 L 電樞迴路的等效電感 EMF電樞產生的反電動勢 i 電樞迴路中的電流 T 馬達所產生的扭力 J 馬達和負載的等效慣量 B 馬達和負載的等效摩擦力 ω 馬達所產生的速度 2所牽涉的物理公式包括 電壓迴路Vc = Ri + L(didt) + EMF 即電樞迴路中的電壓平衡 動力負載T = Bω + J(dωdt) 即扭力平衡 馬達特性T = Kti 所產生的扭力和電流成正比 電機特性EMF= Keω 所產生的電動勢和轉速成正比 其中新增的參數包括 Kt馬達的扭力常數 Ke馬達的反電動勢常數 3將微分項作拉式轉換(Laplase Transformation)的對映即 s = ddt 可將微分方程式轉換成更簡單的代數方程式而產生到下面的控制方塊圖

sL+R1Vc

+-EMF

iKt

TsJ+B1 ω

Ke

4在直流馬達的開環路特性中控制電壓(Vc)時輸入點而馬達轉速(ω)是輸出點即是控制馬達電壓以控制馬達轉速

5基本上馬達的開環路特性是個兩階系統類似於低通濾波器的特性在許多應用 場合其開環路特性還可以再簡化成一階系統方塊圖如下

23

sτ +1

KmVc ω 其中 τ一階系統的時間常數 Km一階系統的穩態增益

採用兩階系統的分析方式雖然會比較精細但是用一階系統來分析則可簡化所有的設計

過程因為這裡的實驗重點是邏輯設計所以在本章中我們都用一階系統作分析

系統響應的要求

就控制系統而言最重要的需求就是系統響應包括

穩態特性通常以穩態誤差為指標即是穩態時系統輸出和輸入之間的差異 暫態特性通常以上升時間(Rise Time)和過越比率(Overshoot)為指標

一個理想中的伺服控制系統其系統響應應該是

1穩態誤差為 0即馬達輸出將追隨輸入作變化沒有誤差 2過越比例為 0即馬達輸出絕對不會產生衝過頭的現象 3上升時間為 0即馬達輸出隨時追上輸入命令不會有控制上的延遲現象

當然這是太理想了一個合理的伺服控制系統應該是

1穩態誤差越小越好最好為 0 2過越比例越小越好最好為 0 3上升時間越短越好當然無法為 0但是盡力就是了

速度的回授控制

回授控制的目的就是為了改善系統響應以一階系統代表的馬達控制為例

sτ+1

KmVc ω

在步階響應(Step Response)時其特性如下

1穩態誤差由 Km決定 2過越比例為 0 3上升時間即是其時間常數(τ)

如果用比例控制器(P 控制器)作速度回授的控制則控制方塊圖如下

sτ+1

KmVc ωKp

err

P控制器 直流馬達ωc

速度回授

速度命令 + 速度響應-

24

其中

1速度命令並不直接控制馬達的驅動電壓而是 A將速度命令和速度回授相比找出其誤差訊號 err B依誤差訊號來控制驅動電壓 誤差越大則驅動電壓越高 誤差越小則驅動電壓越低 誤差為負則驅動電壓也為負 其中的比例關係由 P控制器中的 Kp 來調整 2經由數學分析後其步階響應的特性為 A穩態誤差變成 1(1+kpkm)如果 kpkmgtgt1則穩態誤差將趨近於 0 B過越比例仍為 0 C上升時間即是由τ變成τ(1+kpkm)所以上升時間將變短 3換句話說只要 Kp值夠大不論是穩態誤差或是上升時間都會大幅改善

理論上P控制器的增益是越高越好最好是無限大但是實際上是有限制的原因是

1馬達的開環路特性是兩階系統而非一階系統一階系統只是簡化後的結果 2當兩階系統作高增益的回授控制時當增益過高時會產生極嚴重的過越現象使得

馬達產生巨幅震動而難以控制

所以 P控制器的增益雖然是越高越好但調整時仍要小心維持(過越比例為 0)的條件

轉角的回授控制

做為馬達的速度控制P控制器的效果不錯但是如果將 P控制器應用到馬達的轉角控

制其特性就不太理想圖示如下

sτ+1

KmVc ωKp

err

P控制器 直流馬達

θc

轉角回授

轉角命令 + 轉角響應-

s1 θ

其中

1從馬達的速度到轉角之間具有積分特性即 馬達的轉角是馬達速度的積分結果而 馬達的速度是馬達轉角的微分結果而 2其中的積分特性使得整個系統由一階特性變成兩階特性在兩階系統中當設定高

增益時會產生極嚴重的過越現象使得馬達產生巨幅震動而難以控制 3在 P控制器增益無法提高的狀況之下轉角控制效果將無法獲得改善

雖然 P控制器在轉角控制上的效果並不好但是在控制系統中還是有許多法寶可以選擇

25

其中 PD 控制器就是簡單又有效的一個好方法

從表面上來看PD 控制器比 P控制器多了一個微分項就數學上來看這微分項提供了

一個新零點(Zero)可以調整根軌跡圖的走向就實驗上來說這微分項提供了控制器

的預測功能說明如下

sτ+1

KmVc ωKp+sKd

err

P控制器 直流馬達

θc

轉角回授

轉角命令 + 轉角響應-

s1 θ

1轉角控制中 P控制器的問題是在嚴重的過越現象原因是在 P控制器的作用下只有當回授超過命令時才能做出「負向」的控制但這時已經來不及了因為積分器

中已經累積了過多的能量而無法立刻消失使得馬達轉角衝過了頭 2解決之道就是在回授超過命令之前就必須做出「負向」的控制使得積分器累積

的能量逐步減弱在到達目標時才能立刻煞車才能解除過越現象 3而微分項就是這個預測量因為當誤差量越來越小時其微分項是負值雖然微分

項(D)是負值 當誤差量(P)很大時(P+D)的結果還是正值所以還是「正向」控制 當誤差量(P)漸小時(P+D)的結果變成負值才會開始「負向」控制 換句話說在誤差為 0之前即可啟動負向控制產生煞車作用使得馬達提前減速

而即時停止在目標點上自然就解除過越現象了

所以在 PD 控制器中有兩項調整量其中

1Kp增益提供比例控制部分的增益而 Kd增益提供微分控制部分的增益 2Kp增益控制馬達的趨近速度主要影響的是上升時間 3Kd增益控制馬達的提前煞車主要影響的是過越比例 4在兩者搭配下就有機會得到 很快很短的上升時間同時也 不會產生過越現象

PD 控制器的執行

依據 PD 控制器公式可以建立以數位執行的 PD 控制器如下圖所示

cmdKp

fdk

+

-

err

old

+-

Kd

Z-1

out+

+

26

其中

1利用差分公式來取代 PD控制器中的微分公式定義如下 s ==gt (1-Z-1)DT 其中對映的變數包括 s 微分項 Z-1延遲一個抽樣週期 DT抽樣週期單位為 sec 2就執行面而言Z-1是延遲一個抽樣週期也就是以抽樣週期所控制的暫存器 3在上圖中將命令(cmd)和回授(fdk)相減後得到誤差值(err)再將 err延遲一個抽樣週期成為 old所以(err-old)DT即是微分項

4原始的微分控制公式為(err-old)DTKd必須先除再乘但是因為 DT和 Kd 都是常

數可以預先將 Kd修正成 Kd=(KdDT)那麼公式將修正為(err-old)Kd就只需要一個乘法而不需要除法了

同樣的 PD 控制器可以用許多不同的方法作執行包括

1以軟體方式執行例如在 DSP核心中以組合語言撰寫控制模組 2以硬體方式執行例如在 FPGA中直接設計邏輯電路 3以微碼方式執行以微碼作順序控制執行硬體運算工作

這裡先提供用組合語言撰寫的程式模組作為設計參考其他兩種方法將在後續的實驗中

再陸續作說明

模組程式範例PD_controlasm

local cmd R0 IP gnd 輸入點位置命令(可忽略) local fdk R1 IP gnd 輸入點位置回授(可忽略) local out R2 OP 輸出點用以控制速度迴路 local kp R3 256 參數增益 kp10=256 local kd R4 0 參數增益 kd10=256 local err R5 0 內部變數 local old R6 0 內部變數 local gnd R7 0 無輸入時的短路點 data 8 模組變數區長度 initial 開機啟動程序 WR out0 WR old0 RET out=old=0 timer 即時控制程序 RD (cmd) SUB (fdk) WR err MUL kp SFR 8 P=(cmd-fdk)kp256 RDS err SUBX old MUL kd SFR 8 D=(err-old)kd256 ADDS WR out out=P+D RET

27

其中

1PD控制模組中對外的界面變數包括 cmd命令的輸入點 fdk回授的輸入點 out控制的輸出點 2內部參數包括 Kp比例控制增益其中 10=256所以乘完後還需要再右移 8-bit Kd微分控制增益其中 10=256所以乘完後還需要再右移 8-bit 3內部變數包括 err臨時性的變數用以儲存誤差值的計算結果 old儲存性的變數用以儲存上一次抽樣控制時的 err值 4模組程式分成三部分包括 變數宣告local和data所宣告的部分 初值設定initial程序中先將 out和 old設定為 0 即時控制timer程序中依序執行 PD控制器中的每個步驟

控制目標的選擇

從字面上來看速度控制就是控制馬達的速度轉角控制就是控制馬達的轉角沒什麼

好討論的但是實際上確有許多問題第一的問題就是什麼是速度和轉角馬達的速

度和轉角如果不作量測如何得知

既然在量測中取得了速度和轉角資料那麼我們所控制的到底是物理學上的速度和轉

sτ+1

KmVc ωKp+sKd

err

P控制器 直流馬達

θc

轉角回授

轉角命令 + 轉角響應-

s1 θ

KxANG

轉角量測

角還是量測上的速度和轉角以下圖為例

其中

1以轉角量測裝置量測轉角例如裝在馬達軸端的光電盤和解碼電路 2轉角的量測輸出是 ANG而 ANG和物理轉角θ之間有 Km的增益關係 3只要 Km值不是 1那麼系統就不再是單位回授 4如果 Km還有非線性或失真現象那麼控制結果也將有非線性或失真現象

這些問題混雜起來會使得控制系統的分析變得更複雜如果要簡單處理就要認同現

實環境直接以量測結果為控制目標如下圖所示

28

sτ+1

KmVc ωKp+sKd

err

P控制器 直流馬達

θc

轉角回授

+-

s1 θ Kx

ANG轉角量測

其中

1直接以量測結果為控制目標將全系統還原成標準的單位回授控制 2所有的非線性或失真現象都進入開環路討論屬於可以補償的部分 3但是控制結果就是「量測上的轉角」而「物理學上的轉角」

量測誤差的問題

轉角θ

量測ANG

對於量測誤差而言最明顯的問題就是量化誤差圖示如下

其中

1以 DCM模組中的光電盤為例精度為每圈 500格經由乘四解碼計數後其等效

精度增加為每圈 2000格 2比(12000)圈更精密的部分都無法響應換句話說振幅越大的控制其相對誤差越

小而振幅越小的控制其相對誤差越大例如 當振幅為(12)圈時其控制誤差量為 01而 當振幅為(120)圈時其控制誤差量為 1 這是標準的的非線性現象

量化誤差不只影響穩態上的精度還會造成非線性的震動問題圖示如下

t

誤差值

+1

-1

其中

1由於量化誤差的問題只有當誤差超過+1或是-1時才會真正偵測到誤差也才

29

會施加控制量作補償 2所以穩態時的誤差將在+1-1之間擺動造成微幅的振動 3量化誤差越大震動越明顯而量化誤差很小時通常不易察覺出震動現象

微分量的計算

伺服系統中有兩處需要用到微分計算包括

1PD控制器中誤差微分量的計算 2速度控制器中速度回授值的量測

在理論上微分公式是(dXdt)相當於 dXdt = (X(n)-X(n-1))DT (當 DT趨近於 0時)

所以當微分計算中的抽樣週期(DT)越短時微分的計算值將越接近理論值但是事實上

卻非如此以下圖為例

t

X

DTDX

其中

1當 X值為等速度運動時其微分量就是其斜率相當於 DXDT 2DT是微分計算中的抽樣週期理論上越短越好但是由於 DX本身的量化誤差

使得這個原則不再成立例如當斜率為 7394時 若 DT=1000則 DX=7394而 DXDT=7394 若 DT=100 則 DX=739 而 DXDT=739 若 DT=10 則 DX=73 而 DXDT=73 若 DT=1 則 DX=7 而 DXDT=7 3換句話說當抽樣週期越短時DX的量化誤差將越明顯而造成微分計算上更嚴

重的誤差

在 DCM 模組中速度量測的量化誤差分析如下

1馬達上的光電盤精度為每圈 500格經過乘四解碼後等效精度為每圈 2000格 2當馬達轉速為 1200RPM而抽樣頻率為 1KHz時對映的速度量測值為 1200(圈分)2000(格圈)60(秒分)1000(DT秒) = 40(格DT) 3換句話說1200RPM的轉速對映到 40的速度量測值即速度單位=30RPM若最

高轉速為 3000RPM則在+-3000RPM的速度範圍內其量化誤差為 05相當於8-bit的 ADC轉換器精度

4對映不同的抽樣頻率的量化誤差表列如下

30

光電盤精度 最高轉速 抽樣頻率 速度單

速度範圍 量化誤差

500PPR 3000RPM 1KHz 30RPM +-100 05 500PPR 3000RPM 2KHz 60RPM +-50 1 500PPR 3000RPM 4KHz 120RPM +25 2

過溢現象的處理

輸入

輸出

32767

-32768

整數運算都有數值範圍限制以 16-bit 整數而言輸入輸出的關係如下

其中

1當超過正負數的上下限時數值會正負顛倒例如 +32768 將會視為 -32768作處理而 +32769 將會視為 -32768作處理依此類推 2換句話說16-bit的整數運算只有在+-32767之間是線性的對映關係而超過這個範圍就是非線性的對映關係

3不但如此還因為正負顛倒的現象使得原來設計的負回授控制將變為正回授控制

而產生非線性的震盪現象 4換句話說只要計算上稍一不慎就會使得原先穩定的系統產生不穩定的震盪結果

為了避免過溢現象所造成的不穩定問題通常控制系統中會利用飽和處理作改善圖示

如下

輸入

輸出

lmtH

lmtL

31

其中

1當超過計算的上限時將固定設為上限值處理而當超過計算的下限時也將固定

設為下限值處理 2這時的整數運算只有在上下限之間是線性的對映關係而超過這個範圍將還是非線

性的對映關係 3雖然如此但是因為沒有正負顛倒的現象所以不再會有負回授變為正回授的問題

而避免了非線性的震盪現象 4換句話說飽和處理是針對過溢現象的妥協處理方案雖然不完全理想但是是可

接受的最佳選擇

下面是對映的組合語言範例

RD x x為輸入端 MIN lmtH 取得 x和 lmtH中的較小值即是作上限保護的工作 MAX lmtL 取得 x和 lmtL中的較大值即是作下限保護的工作 WR y Y為輸出端 其中

1組合語言中提供MAX和MIN的計算其中 MIN lmtH 比較 AX暫存器和 lmtH而將較低值存入 AX暫存器中 MAX lmtL 比較 AX暫存器和 lmtH而將較高值存入 AX暫存器中 2所以直接可用MIN指令作上限保護而以MAX指令作下限保護兩者合併後即是

完整的飽和處理結果

飽和處理通常應用在高位數轉成低位數的場合例如32-bit轉換成16-bit或是16-bit

轉換成 12-bit 等等例如在本實驗中所有的運算都是以 16-bit 整數作處理但是到

PWM 驅動級輸出時卻要轉換成 12-bit精度的 PWM 命令所以必須先用飽和處理以避免

過溢現象造成的不穩定問題

32

61 實驗 1-開迴路的電壓控制 實驗說明以電壓直接控制轉速的開迴路特性可簡化為一階系統處理方塊圖如

sτ+1

v km ωm

其中V 送給驅動器的 PWM電壓命令

ωm馬達的轉動速度可由處理 photo encoder信號所得的位置微分而得 km一階系統的穩態增益 τ一階系統的時間常數即步階響應中的上升時間

為了觀測直流馬達的開環路特性建立下面的測試方塊圖

其中

1所使用的模組包括 FG1方波產生器產生所需的步階測試波形 FT1馬達模擬以一階系統的低通濾波器來執行 IO1光電盤的回授處理可同時取得轉角和速度的量測值 IO2PWM電壓驅動直接驅動直流馬達作控制 Led四位數字七段顯示模組顯示波形信號資料 2測試目標有兩項(P 參數設定欄)包括 A調整方波命令控制直流馬達作開環路的 PWM電壓控制 B調整馬達模擬參數使模擬結果和實驗結果相符以確認開環路特性

33

實驗畫面顯示如下

測試一 開環路的電壓控制 記錄頻道 CH1電壓命令Y1=-300DY=500 CH2模擬速度Y2=-100DY=500 CH3馬達速度Y3=100DY=50 CH4馬達轉角Y4=300DY=50000 實驗參數 FG1kAMP=256電壓命令的測試振幅 FG1kFRQ=150電壓命令的測試頻率 FT1DT =10 馬達模擬參數 FT1KA =500馬達模擬參數

其中

1用示波器功能記錄四個頻道其中 CH2和 CH3重疊顯示以比較模擬速度和量測

速度之間的差異 2由於 Km 不等於 1所以必須調整 CH3的 Y軸單位才能使得 CH2和 CH3的穩態響應部分重疊

3實驗時可以改變 FG1的參數以調整測試方波的振幅和頻率 4可以調整 FT1的參數使得 CH2和 CH3的暫態響應部分重疊

根據實際的測試結果分析如下

2馬達模擬的參數調整到 DT=10而 KA=500根據公式 τ = 40961000dtka 所以上升時間(τ)為 0082秒或是 82ms 3CH2CH3的 Y軸單位並不一致顯然 Km 不等於 1經計算確認 Km=0098

對應之 plc檔程式說明(exp_pwmplc) echo off 畫面顯示開始

run dsp 0 選擇 DSP1

run stop run reset 既有程式停止

run testDCMmem 下載指定程式

das 1 ampfg1out 0 1024 PWM 波形 Volt 設定 DAS 頻道1

das 2 ampft1lp 0 1024 馬達模擬 Volt 設定 DAS 頻道2

das 3 ampio1spd 0 1024 馬達速度 Volt 設定 DAS 頻道3

das 4 ampio1ang 0 1024 馬達角度 Volt 設定 DAS 頻道4

plot select 0 設定示波器頁數

plot xunit 100000 0 設定示波器 X軸

plot yunit 1 500 -300 設定示波器 Y1 軸

34

plot yunit 2 500 -100 設定示波器 Y2 軸

plot yunit 3 50 100 設定示波器 Y3 軸

plot yunit 4 50000 300 設定示波器 Y4 軸

plot trigger 1 0 1 10 設定示波器觸發

plot scope 9 1 2 3 4 設定示波器顯示

module io2 設定 io2 模組

s cmd ampfg1out

module fg1 設定 fg1 模組

s kAmp 256 s kFrq 150

module ft1 設定 ft1 模組

s u ampfg1out s dt 10 s ka 500

module io3 設定 io3 模組

s led ampfg1out

module 回復預設模組

run 1khz 設定抽樣頻率為 4KHz

run start DSP 開始執行

das stop pause 1 DAS 啟動 das start DAS 啟動

echo on 回復正常訊息顯示

使用者可視情況調整一階濾波器的 ka和 dt值使得 ch2和 ch3 兩組波形完全相符

以求得開迴路系統近似的一階轉移函數 CAI操控設計畫面規劃如下(EXP_PWMCAI) page 1 畫面設計

35

page 2 畫面設計 page 3 畫面設計

36

實測響應圖

訊 號 說 明 訊 號 說 明 ch1 方波產生器訊號 ch3 一階濾波器輸出信號 ch2 馬達角速度訊號 ch4 馬達角位置訊號

直流馬達之開迴路電壓控制響應圖

37

以邏輯分析功能觀測直流馬達之光電盤輸入與 PWM輸出信號

38

62 實驗 2-閉迴路的速度控制 實驗說明為了觀測閉迴路的速度控制響應建立下面的測試方塊圖

加入 PD控制後系統閉迴路的轉移函數經適度的簡化仍能約略以一階系統

處理方塊圖如下

sτ+1

u km ωm

其中

u 送給控制器的速度命令

ωm馬達的轉動速度可由處理 photo encoder 信號所得的位置微分而得

km一階系統的穩態增益 τ一階系統的時間常數即步階響應中的上升時間

方塊圖中的模組功能說明如下

1用 fg1 產生測試用的方波速度命令

2將方波速度命令和速度回授訊號送到 PD 控制器方塊中產生電壓控制訊號再透

過 io2 模組將訊號送出給伺服介面

3用 ft1 建立對照用的一階系統可用 IIR1濾波器方塊產生

4將方波命令產生速度命令再觀測 PHT(io1)上的速度值 spd

5調整 IIR1濾波器的參數使得兩組波形完全相符這時 IIR1濾波器就是閉迴路

速度控制的特性其中 km 為增益而τ為上升時間(單位為 sec)

6增益 km 可從示波器中作簡單計算而上升時間(τ=40964000dtka)

7 Led四位數字七段顯示模組顯示波形信號資料

39

對應之 plc檔程式說明(exp_speedplc) echo off 畫面顯示開始

run dsp 0 選擇 DSP1

run stop run reset 既有程式停止

run testDCMmem 下載指定程式

das 1 ampfg1out 0 1024 PWM 波形 Volt 設定 DAS 頻道1

das 2 ampft1lp 0 1024 馬達模擬 Volt 設定 DAS 頻道2

das 3 ampio1spd 0 1024 馬達速度 Volt 設定 DAS 頻道3

das 4 ampio1ang 0 1024 馬達角度 Volt 設定 DAS 頻道4

plot select 0 設定示波器頁數

plot xunit 100000 0 設定示波器 X軸

plot yunit 1 50 -300 設定示波器 Y1 軸

plot yunit 2 50 -100 設定示波器 Y2 軸

plot yunit 3 50 100 設定示波器 Y3 軸

plot yunit 4 50000 300 設定示波器 Y4 軸

plot trigger 1 0 1 10 設定示波器觸發

plot scope 9 1 2 3 4 設定示波器顯示

module io2 設定 io2 模組

s cmd ampcn2out

module fg1 設定 fg1 模組

s kAmp 50 s kFrq 150

module cn2 設定 cn1 模組

s cmd ampfg1out s fdk ampio1spd s kp 0x4000

module ft1 設定 ft1 模組

s u ampfg1out s dt 2 s ka 320

module io3 設定 io3 模組

s led ampfg1out

module 回復預設模組

run 1khz 設定抽樣頻率為 4KHz

run start DSP 開始執行

das stop pause 1 DAS 啟動 das start DAS 啟動

echo on 回復正常訊息顯示

CAI操控設計畫面規劃如下(EXP_speedCAI)

40

page 1 畫面設計 page 2 與 page 3 畫面設計與實驗一 page 2 與 page 3相同畫面 page 4 畫面設計

41

方塊的參數設定 使用者可視情況調整一階濾波器的 ka和 dt值使得 ch2和 ch3 兩組波形完全相符

以求得此一閉迴路系統近似的一階轉移函數或調整 PD控制器中的 kp和 kp值以調整系統之響應 實測響應圖

訊 號 說 明 訊 號 說 明 ch1 方波產生器產生之速度命令 ch3 一階濾波器輸出信號 ch2 馬達角速度訊號 ch4 馬達角位置訊號

42

直流馬達之閉迴路速度控制響應圖

43

63 實驗 3-閉迴路的位置控制 實驗說明為了觀測閉迴路的位置控制響應將直流馬達的回授改為位置訊號

建立下面的測試方塊圖 方塊圖中的模組功能說明如下

1用 fg1產生測試用的方波位置命令 2將方波位置命令和位置回授訊號送到 PD控制器方塊中產生電壓控制訊號再透過 io2模組將訊號送出到伺服介面驅動馬達轉動

對應之 plc檔程式說明(exp_angleplc) echo off 畫面顯示開始

run dsp 0 選擇 DSP1

run stop run reset 既有程式停止

run testDCMmem 下載指定程式

das 1 ampfg1out 0 1024 PWM 波形 Volt 設定 DAS 頻道1

das 2 ampft1lp 0 1024 馬達模擬 Volt 設定 DAS 頻道2

das 3 ampio1spd 0 1024 馬達速度 Volt 設定 DAS 頻道3

das 4 ampio1ang 0 1024 馬達角度 Volt 設定 DAS 頻道4

plot select 0 設定示波器頁數

plot xunit 100000 0 設定示波器 X軸

plot yunit 1 1000 -300 設定示波器 Y1 軸

plot yunit 2 1000 -100 設定示波器 Y2 軸

plot yunit 3 20 100 設定示波器 Y3 軸

plot yunit 4 1000 300 設定示波器 Y4 軸

plot trigger 1 0 1 10 設定示波器觸發

44

plot scope 9 1 2 3 4 設定示波器顯示

module io2 設定 io2 模組

s cmd ampcn2out

module fg1 設定 fg1 模組

s kAmp 1000 s kFrq 75

module cn2 設定 cn1 模組

s cmd ampfg1out s fdk ampio1ang s kp 0x300 s kd 0x4000

module ft1 設定 ft1 模組

s u ampfg1out s dt 2 s ka 320

module io3 設定 io3 模組

s led ampfg1out

module 回復預設模組

run 1khz 設定抽樣頻率為 4KHz

run start DSP 開始執行

das stop pause 1 DAS 啟動 das start DAS 啟動

echo on 回復正常訊息顯示

CAI操控設計畫面規劃如下(EXP_angleCAI) page 1 畫面設計

45

page 2 與 page 3 畫面設計與實驗一 page 2 與 page 3相同畫面 page 4 畫面設計與實驗二 page 4 畫面 方塊的參數設定 延續上一實驗的說明使用者可以調整 PD控制器中的 kp和 kd值以調整系統之

響應 實測響應圖

訊 號 說 明 訊 號 說 明 ch1 方波產生器產生之位置命令 ch3 馬達角速度訊號 ch2 馬達角位置 ch4 Pd控制器輸出之電壓訊號

46

直流馬達之閉迴路位置控制響應圖

47

64 實驗 4-加減速的位置控制 實驗說明為避免方波命令的過於嚴苛在方波命令的輸出加入一加減速控制功

能方塊以減緩命令變化的幅度增加馬達運動的平順建立的測試方塊圖如下

方塊圖中的模組功能說明如下

1用 fg1產生測試用的方波位置命令 2將方波位置命令送到加減速控制方塊處理後產生新的位置命令再將新的位置命

令與位置回授訊號送到 PD控制器方塊中產生電壓控制訊號最後透過 io2模組將訊號送出到伺服介面驅動馬達轉動

對應之 plc檔程式說明(exp_accplc) echo off 畫面顯示開始

run dsp 0 選擇 DSP1

run stop run reset 既有程式停止

run testDCMmem 下載指定程式

das 1 ampfg1out 0 1024 PWM 波形 Volt 設定 DAS 頻道1

das 2 ampcn1out 0 1024 加速控制 Volt 設定 DAS 頻道2

das 3 ampio1spd 0 1024 馬達速度 Volt 設定 DAS 頻道3

das 4 ampio1ang 0 1024 馬達角度 Volt 設定 DAS 頻道4

plot select 0 設定示波器頁數

plot xunit 100000 0 設定示波器 X軸

plot yunit 1 2000 -300 設定示波器 Y1 軸

plot yunit 2 2000 -100 設定示波器 Y2 軸

plot yunit 3 50 100 設定示波器 Y3 軸

plot yunit 4 2000 300 設定示波器 Y4 軸

48

plot trigger 1 0 1 10 設定示波器觸發

plot scope 9 1 2 3 4 設定示波器顯示

module io2 設定 io2 模組

s cmd ampcn2out

module fg1 設定 fg1 模組

s kAmp 2000 s kFrq 150

module cn1 設定 cn1 模組

s cmd ampfg1out

module cn2 設定 cn2 模組

s cmd ampcn1out s fdk ampio1ang s kp 0x300 s kd 0x4000

module ft1 設定 ft1 模組

s u ampfg1out s dt 2 s ka 320

module io3 設定 io3 模組

s led ampfg1out

module 回復預設模組

run 1khz 設定抽樣頻率為 4KHz

run start DSP 開始執行

das stop pause 1 DAS 啟動 das start DAS 啟動

echo on 回復正常訊息顯示

CAI操控設計畫面規劃如下(EXP_accCAI) page 1 畫面設計

49

page 2 畫面設計與實驗一 page 2相同畫面 page 3 畫面設計與實驗二 page 4相同畫面

參數設定參考之前各實驗的說明可線上機動性的調整 PD控制器中的 kp和 kd值以調整系統之響應 實測響應圖

訊 號 說 明 訊 號 說 明 ch1 方波產生器產生之位置命令 ch3 馬達角位置 ch2 加減速模組輸出之位置命令 ch4 馬達角速度訊號

50

圖一 直流馬達經加減速控制後之閉迴路控制響應圖

51

65 實驗 5-正弦波的位置控制 實驗說明在本實驗中改變命令的波形由方波改變為正弦波並建立如下的測

試方塊圖與上一實驗相比較僅更改命令的波形產生方塊 方塊圖中的模組功能說明如下 1用 fg2產生測試用的弦波位置命令 2將弦波位置命令送到加減速控制方塊處理後產生新的位置命令再與 io1 讀入的位

置回授訊號送到 PD 控制器方塊中產生電壓控制訊號再透過 io2 模組將訊號送出到伺服介面驅動馬達轉動

對應之 plc檔程式說明(exp_sinplc) echo off 畫面顯示開始

run dsp 0 選擇 DSP1

run stop run reset 既有程式停止

run testDCMmem 下載指定程式

das 1 ampfg2out 0 1024 SIN 波形 Volt 設定 DAS 頻道1

das 2 ampcn1out 0 1024 加速控制 Volt 設定 DAS 頻道2

das 3 ampio1spd 0 1024 馬達速度 Volt 設定 DAS 頻道3

das 4 ampio1ang 0 1024 馬達角度 Volt 設定 DAS 頻道4

plot select 0 設定示波器頁數

plot xunit 100000 0 設定示波器 X軸

plot yunit 1 2000 -300 設定示波器 Y1 軸

plot yunit 2 2000 -100 設定示波器 Y2 軸

plot yunit 3 50 100 設定示波器 Y3 軸

plot yunit 4 2000 300 設定示波器 Y4 軸

plot trigger 1 0 1 10 設定示波器觸發

52

plot scope 9 1 2 3 4 設定示波器顯示

module io2 設定 io2 模組

s cmd ampcn2out

module fg2 設定 fg1 模組

s kAmp 2000 s kFrq 100

module cn1 設定 cn1 模組

s cmd ampfg2out

module cn2 設定 cn2 模組

s cmd ampcn1out s fdk ampio1ang s kp 0x300 s kd 0x4000

module ft1 設定 ft1 模組

s u ampfg2out s dt 2 s ka 320

module io3 設定 io3 模組

s led ampfg2out

module 回復預設模組

run 1khz 設定抽樣頻率為 4KHz

run start DSP 開始執行

das stop pause 1 DAS 啟動 das start DAS 啟動

echo on 回復正常訊息顯示

CAI操控設計畫面規劃如下(EXP_sinCAI) page 1 畫面設計

53

page 2 畫面設計 page 3 畫面設計與實驗二 page 4相同畫面

方塊的參數設定可調整 PD控制器中的 kp和 kd值以調整系統之響應 實測響應圖

訊 號 說 明 訊 號 說 明 ch1 弦波產生器產生之位置命令 ch3 馬達角位置訊號 ch2 加減速模組輸出之位置命令 ch4 馬達角速度訊號

54

直流馬達之閉迴路弦波加減速位置控制響應圖

55

7組合語言說明

本節將針對 DC馬達伺服控制實驗專用的程式模組進行功能與程式碼的說明其

有關於波形產生器與資料擷取模組等說明如下

SIN_waveasm 正弦波產生器 PWM_waveasm 方波產生器 IIR1_filterasm 一階濾波器 DAS4asm 資料蒐集模組

弦波產生器

此模組會產生週期性的正弦波方塊圖如下

outfrq

kBiasbias

ampkAmp

kFrqth

kThf=1TB

θ

A

其中

1正弦波有四個參數振幅(A)頻率(F)相位(θ)和偏移(B)其公式為 out = A sin(2πF t +θ) + B 2對於單純的正弦波產生器所對映的參數包括 kAmp 振幅值 kFrq 頻率值kFrq=655368000Hz其中 Hz的範圍為 0~4000例如 1000Hz =gt frq=8192 100Hz =gt frq=819 10Hz =gt frq=82 1Hz =gt frq=8 kTh 相角值0~255代表 0~360的相位當 th=0 時為正弦波 th=64 時為餘弦波 th=128時為反相波依此類推 kBias偏移值 3對於可調變的正弦波產生器其對映的輸入點為 amp 控制振幅的輸入點可產生調幅(AM)波形 frq 控制頻率的輸入點可產生調頻(FM)波形 th 控制相位的輸入點可產生調相(PM)波形 bias控制偏移的輸入點可產生雙頻混波(相加)波形 4若不使用調變功能時各個輸入點時的預設值為 amp 指向 kAmp 的位址 frq 指向 kFrq 的位址

56

th 指向 kTh 的位址 bias指向 kBias的位址

模組程式範例SIN_WAVEasm

local amp R0 IP kAmp 輸入點sin波的振幅 local frq R1 IP kFrq 輸入點sin波的頻率 local th R2 IP kTh 輸入點sin波的相角 local bias R3 IP kBias 輸入點sin波的中心偏移 local out R4 OP 輸出點sin波輸出 local tab R5 TP 表格指標指向 sin[256]的表格 local ang R6 內部變數相位角65536=360deg local kAmp R7 1000 參數振幅值 local kFrq R8 1000 參數頻率值=655368000Hz local kTh R9 0 參數相角值360deg=256 local kBias R10 0 參數偏移值 data 11 模組變數區長度及初值 initial 啟動程序 WR ang0 WR out0 ang=out=0 RET timer 即時控制程序(8KHz) RD ang ADD (frq) WR ang ang+=frq SFR 8 ADD (th) AND 255 ACC=sin(ang256+th) ADD tab WRH RDM table-look-up MUL (amp) SFR 12 ADD (bias) WR out out=ACCamp4096+bias RET table tab 256 sin[256]表格區10=4096 0 101 201 301 401 501 601 700 00~070deg 799 897 995 1092 1189 1285 1380 1474 08~0F 1567 1660 1751 1842 1931 2019 2106 2191 10~17 2276 2359 2440 2520 2598 2675 2751 2824 18~1F 2896 2967 3035 3102 3166 3229 3290 3349 20~27 3406 3461 3513 3564 3612 3659 3703 3745 28~2F 3784 3822 3857 3889 3920 3948 3973 3996 30~37 4017 4036 4052 4065 4076 4085 4091 4095 38~3F 4096 4095 4091 4085 4076 4065 4052 4036 40~4790deg 4017 3996 3973 3948 3920 3889 3857 3822 48~4F 3784 3745 3703 3659 3612 3564 3513 3461 50~57 3406 3349 3290 3229 3166 3102 3035 2967 58~5F

57

2896 2824 2751 2675 2598 2520 2440 2359 60~67 2276 2191 2106 2019 1931 1842 1751 1660 68~6F 1567 1474 1380 1285 1189 1092 995 897 70~77 799 700 601 501 401 301 201 101 78~7F 0 65435 65335 65235 65135 65035 64935 64836 80~87180deg 64737 64639 64541 64444 64347 64251 64156 64062 88~8F 63969 63876 63785 63694 63605 63517 63430 63345 90~97 63260 63177 63096 63016 62938 62861 62785 62712 98~9F 62640 62569 62501 62434 62370 62307 62246 62187 A0~A7 62130 62075 62023 61972 61924 61877 61833 61791 A8~A8 61752 61714 61679 61647 61616 61588 61563 61540 B0~B7 61519 61500 61484 61471 61460 61451 61445 61441 B8~BF 61440 61441 61445 61451 61460 61471 61484 61500 C0~C7270deg 61519 61540 61563 61588 61616 61647 61679 61714 C8~CF 61752 61791 61833 61877 61924 61972 62023 62075 D0~D7 62130 62187 62246 62307 62370 62434 62501 62569 D8~DF 62640 62712 62785 62861 62938 63016 63096 63177 E0~E7 63260 63345 63430 63517 63605 63694 63785 63876 E8~EF 63969 64062 64156 64251 64347 64444 64541 64639 F0~F7 64737 64836 64935 65035 65135 65235 65335 65435 F8~FF

就程式結構而言說明如下

timer 即時控制程序(8KHz) RD ang ADD (frq) WR ang ang+=frq SFR 8 ADD (th) AND 255 ACC=sin(ang256+th) ADD tab WRH RDM table-look-up MUL (amp) SFR 12 ADD (bias) WR out out=ACCamp4096+bias RET

1基本上我們以查表法計算 sin()其輸入θ的範圍為 0~255對映到 0~360deg其輸出 sin(θ)的範圍為+-4096對映到+-10的範圍

2建立一個內部變數 ang其範圍為 0~65535對映到 0~360的相位角 3每個timer程序都執行 ang+=frq的動作更新目前的相位角接著依照 ang的相位角查表得到 sin(ang256+th)值

4由於表格長度為 256-word所以必須將 ang256才能得到正確的對映關係而 th範圍為 0~255所以不需要像 ang一般的做額外處理

5sin()的範圍為(+1-1)而在表格中以(+4096~-4096)的型式記錄相當於 10=4096所以執行 Asin()時還要用 SFR12指令做4096的動作才能正確的取得輸出值

58

6就頻率輸入 frq而言其計算原則是將θ=ωt轉化成θ=Σ(ωdt)因為抽樣頻率

為 8KHz所以 dt=18000而得到 frq=655368000Hz公式其中 Hz為真正的頻率在 8KHz的抽樣頻率下其範圍為 0~4000

鋸齒波產生器

此模組會產生週期性的鋸齒波方塊圖如下

outfrq

kBiasbias

ampkAmp

kFrqth

kThf=1TB

θ

A

其中

1鋸齒波也有四個參數振幅(A)頻率(F)相位(θ)和偏移(B)和正弦波的定義完全一致唯一的差異是其輸出為鋸齒波而非正弦波

2基本波形是從週期開始時為 0一直遞增到週期結束時到達最高點然後立刻回歸

到 0重新開始 3以程式結構而論鋸齒波程式幾乎就是正弦波的相位計算部分只差沒有正弦波的

查表處理而已

模組程式範例SAW_WAVEasm

local amp R0 IP kAmp 輸入點sin波的振幅 local frq R1 IP kFrq 輸入點sin波的頻率 local th R2 IP kTh 輸入點sin波的相角 local bias R3 IP kBias 輸入點sin波的中心偏移 local out R4 OP 輸出點sin波輸出 local ang R5 內部變數相位角65536=360deg local kAmp R6 1000 參數振幅值 local kFrq R7 1000 參數頻率值=655368000Hz local kTh R8 0 參數相角值360deg=256 local kBias R9 0 參數偏移值 data 11 模組變數區長度及初值 initial 啟動程序 WR ang0 WR out0 ang=out=0 RET timer 即時控制程序(8KHz) RD ang ADD (frq) WR ang ang+=frq SFR 8 ADD (th) AND 255 ACC=(ang256+th)amp0x00ff MUL (amp) SFR 8 ADD (bias) WR out out=ACCamp256+bias

59

RET

脈衝波產生器

outfrq

kBiasbias

ampkAmp

kFrqth

kThf=1TB

θ

A

pwm

kDutyduty

此模組會產生週期性的脈衝波方塊圖如下

其中

1脈衝波有五個參數其中振幅(A)頻率(F)相位(θ)和偏移(B)四個參數和正弦波

定義完全一樣另外再增加一個負載率(D) 2基本波形是從週期開始時為 1隔段時間後換為 0然後持續到週期結束再重新開始其中 1所佔有的比例就是負載率當 D=0時為 0而 D=255時為 100

3和其他參數類似負載率(D)以 duty為其輸入點而以 kDuty為其參數值

模組程式範例PLS_WAVEasm

local amp R0 IP kAmp 輸入點脈衝波的振幅 local frq R1 IP kFrq 輸入點脈衝波的頻率 local th R2 IP kTh 輸入點脈衝波的相角 local bias R3 IP kBias 輸入點脈衝波的中心偏移 local duty R4 IP kDuty 輸入點脈衝波的負載率 local out R5 OP 輸出點脈衝波輸出 local ang R6 內部變數相位角65536=360deg local kAmp R7 1000 參數振幅值 local kFrq R8 1000 參數頻率值=655368000Hz local kTh R9 0 參數相角值360deg=256 local kBias R10 0 參數偏移值 local kDuty R11 128 參數負載率100 =256 data 12 模組變數區長度及初值 initial 啟動程序 WR ang0 WR out0 ang=out=0 RET timer 即時控制程序(8KHz)

60

RD ang ADD (frq) WR ang ang+=frq SFR 8 ADD (th) AND 255 ACC=(ang256+th)amp0x00ff SUB (duty) RD (amp) JLT t1 RD 0 ACC=(amp0) t1 ADD (bias) WR out out=ACC+bias RET

IIR 一階濾波器

此模組執行一階的 IIR濾波器方塊圖如下

kau x

Z-1

+

+

-

+低通濾波器

高通濾波器dx lp

hp

濾波器參數的計算公式如下

1假設濾波器的頻寬為 hz則 ωn=hz628 2若系統頻率為 8KHz則抽樣週期 dT為 dT=dt8000 其中 dt為模組參數 3則濾波器參數為 ka=ωndT4096或是 =hzdt62880004096即 =hzdt32 4當 dt決定後所允許的訊號頻寬為(4000dt)換句話說訊號頻寬會因為 dt增加而下降

為了方便實驗的運用下面列出常用的參數對照表

濾波頻寬

(Hz)

10 20 50 100 200 500 1000 2000

訊號頻寬

(Hz)

400 800 2000 4000 4000 4000 4000 4000

模組參數 dt 10 5 2 1 1 1 1 1

模組參數 ka 320 320 320 320 640 1600 3200 6400

表格的運用方式如下

1首先決定濾波頻寬 2接著查表找出對映的參數 dt和 ka 3再查表得到對映的訊號頻寬以決定是否需要串接前級濾波器

61

模組程式範例IIR1_FILTERasm

local u R0 IP 輸入點濾波器輸入 local lp R1 OP 輸出點低通濾波器輸出 local hp R2 OP 輸出點高通濾波器輸出 local dt R3 1 參數抽樣週期 local ka R4 4096 參數增益 ka10=4096 local prd R5 內部變數抽樣週期用 data 6 模組變數區長度 initial 開機啟動程序 WR lp0 WR hp0 WR prd1 RET lp=hp=0prd=1 timer 即時控制程序 SUB prd1 JNZ b9 if (--prdgt0) return RD dt WR prd prd=dt RD (u) SUB lp WR hp hp=u-lp MUL ka SFR 12 ADD lp WR lp lp+=(hpka4096) b9 RET

資料蒐集模組

資料蒐集模組是一個非常特殊的模組專門配合 eTTY 程式中的示波器使用

模組程式範例DAS4asm

local cmd R0 0 紀錄命令0=停止1=前置記錄2=正觸發4=負觸發6=觸發記錄 local dt R1 1 抽樣週期每 dT抽樣一次 local tab R2 TP DAS表格啟始位址 local cnt R3 0 目前記錄點(0~255) local ch1 R4 0 定義頻道1的變數位址 local ch2 R5 0 定義頻道2的變數位址 local ch3 R6 0 定義頻道3的變數位址 local ch4 R7 0 定義頻道4的變數位址 local trg R8 0 定義觸發頻道的變數位址 local th R9 0 觸發準位 local tail R10 0 觸發後的抽樣個數 local buf R11 1 抽樣計數(1~dt) local pnt R12 表格位址計算pnt=tab+cnt4 local len R13 表格長度計算(0~256) data 14 定義模組變數區的長度 table tab 1024 定義表格的長度 initial 啟動程序 WR cmd0 RET cmd=0 timer 控制程序

62

ADD cmd0 JZ t9 if (cmd==0) return SUB buf1 JNZ t9 if (--buf)gt0) return RD dt WR buf dt=buf RD cnt ADD 1 AND 0xff WR cnt cnt=(cnt+1)amp0xff SFL 2 ADD tab WR pnt pnt=tab+cnt4 RD (ch1) WR (pnt) ADD pnt1 pnt++=ch1 RD (ch2) WR (pnt) ADD pnt1 pnt++=ch2 RD (ch3) WR (pnt) ADD pnt1 pnt++=ch3 RD (ch4) WR (pnt) pnt =ch4 RD cmd SUB 1 JZ t9 SUB 1 JZ t2 SUB 1 JZ t3 SUB 1 JZ t4 SUB 1 JZ t5 SUB 1 JZ t6 JR t7 t2 RD (trg) SUB th JGE t9 ADD cmd1 JR t9 wait trgltth t3 RD (trg) SUB th JLE t9 JR t6 wait trggtth t4 RD (trg) SUB th JLE t9 ADD cmd1 JR t9 wait trggtth t5 RD (trg) SUB th JGE t9 JR t6 wait trgltth t6 WR len0 WR cmd7 len=0cmd=7 t7 ADD len1 SUB tail JLT t9 WR cmd0 if ((++len)gt=0x80) cmd=0 t9 RET

與 DC 馬達控制相關的程式模組有以下 4個程式模組說明如下

(1)加減速控制模組 ACC_controlasm (2)光電盤輸入模組 POS_inputasm (3)PWM輸出模組 PWM_outputasm (4)PD控制模組 PD_controlasm

71加減速控制模組 此程式模組主要功能在於執行位置控制的加減速命令修正其數學模式採用 Lynn

濾波器的架構參見下圖

cmd

2

+

old Z -1

-

Z -1

Z -1

Z-1

Z-1x0 x1 x8 x9 x16

+ -

++

2

Z-1

Z-1 y1 y2

+

-

y0

+ +

sumZ-1

+164

12

out

dif

+

63

加減速控制模組方塊圖

其中

1Lynn 濾波器的階數固定成八階也就是 m=8其公式為 H(z) = (1-2Z-m+Z-2m)(1-2Z-1+Z-2)m2

2因為m=8所以m2=64因此最後計算低通濾波的部份時要先做除 64的運算 3因為低通濾波(lp)和 y0之間有 64倍的差異代表 y0y1y2的變化範圍比濾波器輸

入值要擴大許多例如輸入值在+-1000變化時y0y1y2很可能會在+-64000之間變化這範圍已經超出整數處理的範圍很可能會造成錯誤的計算結果

4所以在實驗時輸入值的變化範圍必須控制在+-500之間以保證計算的正確性 5對於 Lynn 濾波器當 m=8時其濾波器的頻寬固定為 1 kHzmdt也就是 dt=1時頻寬為 125 Hz dt=2時頻寬為 625Hz依此類推 6對於 Lynn 濾波器其濾波器的延遲固定為 m個抽樣週期因此設計 hp = x8 - lp 即可得到高通濾波器的對應結果 7其中乘 2和除 64的運算以移位運算取代所以整個程式中並無任何乘法運算 8Lynn 濾波器本身並不是穩定濾波器所以在程式啟動時必須確實的將所有狀態

(x0~x16)歸零否則會產生不穩定的狀態輸出

因為 Lynn濾波器中所有參數固定所以除了抽樣週期 dt 之外並無任何可調參數

抽樣週期 dt 可以控制頻寬dt 越大則濾波器頻寬越低

將步階命令值的輸出送入 Lynn 濾波器中經由低通濾波器的效應可以減緩命

令的變化程度達到加減速控制的目的以下為使用 Lynn 濾波器型式實現加減速控

制的組合語言程式列印 如欲更進一步瞭解 Lynn 濾波器與 FIR 數位濾波器之間的關係可以參考通訊實驗

四數位濾波器設計(FIR)中之說明

ACC_controlasm程式列印 local cmd R0 IP 輸入點位置命令

local out R1 OP 輸出點加減速處理後的位置命令

local dif R2 OP 輸出點位置微分命令

local axis R3 0 馬達編號0=X1=Y2=Z3=C

local old R4 內部變數微分計算用

local sumL R5 內部變數積分計算用

local sumH R6 內部變數積分計算用

local y0 R7 內部變數y(0~2)

local y1 R8 local y2 R9

local x0 R10 內部變數x(0~16)

local x1 R11 local x2 R12 local x3 R13 local x4 R14

local x5 R15 local x6 R16 local x7 R17 local x8 R18

local x9 R19 local x10 R20 local x11 R21 local x12 R22

local x13 R23 local x14 R24 local x15 R25 local x16 R26

64

data 27 模組變數區長度

initial 開機啟動程序

WR dif0 RD (cmd) WR out WR old dif=0 out=old=cmd

sumHL=cmd64

SFL 6 WR sumL RD out SFR 10 SGN 5 WR sumH

RPT 17 WR x00 RPT 3 WR y00 RET x[0~16]=0y[0~2]=0

timer 即時控制程序

RD (cmd) SUBX old WR x0 x0=cmd-old old=cmd

SUB x81 ADD x16 ADD y11 SUB y2 WR y0 y0=x0-2x8+x16+2y1-y2

SGN ADD sumL WR sumL RDH ADC sumH WR sumH sumHL+=y0

WRH RD sumL SFR 6 WR out out=sumHL64

RD y0 SGN SFR WR dif dif=y032mm

RD x0 RPT 16 RDX x1 x[i]=x[i-1] i=1~16

RD y0 RDX y1 WR y2 y[i]=y[i-1] i=1~2

b9 RET

72光電盤輸入模組

DC馬達的位置由光電盤量測之預設儲存於 0xac與 0xbe二個輸入埠位址中其中位址 0xac記錄 X軸馬達的位置位址 0xbe記錄 Y軸馬達的位置由於本實驗的DC馬達接在 Y軸的位置上因此程式中直接選用 Y軸的輸入 光電盤位置輸入的程式列印如下其中速度由位置的差分而得至於馬達的位置

則使用內部 2個 word加以記錄精度為 32位元 POS_inputasm程式列印 local spd R0 OP 輸出點速度量測值

local ang R1 OP 輸出點角度量測值

local angH R2 內部變數角度的 32 位元部分

local mode R3 0x308 模式選擇15MHzAB 相正反向輸入

local pht R4 0xac 輸入阜地址光電盤輸入(0xac)

local phtc R5 0xbe 輸入阜地址光電盤模式(0xbe)

local old R6 內部變數速度更新用

data 7 模組變數區長度

initial 開機啟動程序

RD mode WR (phtc) phtc=mode

RD (pht) WR old WR spd0 RET old=phtspd=0

timer 即時控制程序

RD (pht) SUBX old SGN 11 WR spd spd=(pht-old)old=pht

65

ADD ang WR ang angHL+=spd

RDH ADC angH WR angH

RET

73 PWM輸出控制模組 模組方塊

cmd PWM輸出

程式說明 1在開機時將切換保護時間寫到輸出阜 0xbc上其中切換保護值為 0~6360=5us 2在每次 timer interrupt時將 cmd訊號處理後寫到輸出阜 0xb8上

PWM_outputasm程式列印 local cmd R0 IP gnd 輸入點v相命令

local gain R1 4096 參數輸出增益1=4096

local bias R2 2048 參數輸出偏壓0=2048

local limit R3 4095 參數輸出極限1=4095

local zone R4 0x88f0 參數頻率=12KHz切換保護=5us

local pwm R5 0xb8 輸出阜地址PWM0 輸出(0xb8)

local mode R6 0xbc 輸出阜地址PWM 模式(0xbc)

local p0md R7 0xf8 輸出阜地址port0 模式(0xf8)

local gnd R8 0 輸入接地點

data 9 模組變數區長度

initial 開機啟動程序

RD bias WR (pwm) pwm=bias

RD 0xffff WR (p0md) set port0 mode

RD zone WR (mode) RET mode=zone

stop 關機保護程序

RD bias WR (pwm) RET pwm=bias

timer 即時控制程序

RD (mode) xor 1 and 1 WR (mode) trigger watch-dog

RD (cmd) MUL gain SFR 12 ADD bias ACC=(cmdgain4096)+bias

MAX 0 MIN limit WR (pwm) pwm=limit(ACC)

RET

66

74 PD 控制模組

PD控制的模組方塊參見圖二十一所示其中比例控制的部份直接由增益 kp加以調整微分控制的部份則由誤差的差分經增益 kd的調整而得

Σ+

-

cmd

fdk

err out

Σ

pk

dk

Σ

+

+

+

-

old1minusZ

PD控制器的方塊圖

PD_controlasm程式列印 local cmd R0 IP gnd 輸入點位置命令(可忽略)

local fdk R1 IP gnd 輸入點位置回授(可忽略)

local out R2 OP 輸出點用以控制速度迴路

local kp R3 256 參數增益 kp10=256

local kd R4 0 參數增益 kd10=256

local err R5 0 內部變數

local old R6 0 內部變數

local gnd R7 0 無輸入時的短路點

data 8 模組變數區長度

initial 開機啟動程序

WR out0 WR old0 RET out=old=0

timer 即時控制程序

RD (cmd) SUB (fdk) PRTF WR err

MUL kp SFR 8 P=(cmd-fdk)kp256

RDS err SUBX old MUL kd SFR 8 D=(err-old)kd256

ADDS

WR out out=P+D

RET

程式中預設增益值的 10以整數值 256為基底因此使用 SFR 8的指令加以調

整另外在在計算微分項的程式部份用到 SUBX old的指令其詳細的暫存器動作如

下 參考 piDSP的指令說明SUBX指令將總共用到 3個時序參考錯誤 找不到參照

67

來源在時序 1時將原先 AX的資料拷貝一份到 HX中時序 2時正式執行減

法的動作所以 AX暫存器中的內容會變成 err-old時序 3時DSP會將存放在 HX暫存器中的內容拷貝一份到 old的記憶體中也就是經由 SUBX此一精簡指令將

同時完成計算差分所需要的相減與資料疊代的動作有效的利用 piDSP控制器 DSP核心的精簡指令將可以大幅提昇系統的計算速度

HX AXoldSUBXerr err

old

err

errerr olderr minus

1_err

errerr olderr minus err

1_err

1

2

3

SUBX的指令時序與暫存器變化

68

8附錄快速安裝說明

光纖網路通訊 FPGA 發展系統 (適用於 WIN-XP200098 系統)

快速安裝說明

26Pin 負載輸出入埠

雙電源︵5

12

伏︶輸入埠

單電源︵5

伏︶輸入埠

USB

光纖線輸

號 光纖線輸出埠

入 傳 埠

首先將光碟片 RFFPGA 目錄檔案拷貝在您工作硬碟裡面

第一次安裝時先將 USB 傳輸線接上電腦主機將電源供應器接上 FPGA 模組此時電

腦會出現安裝 USB-Serial 驅動程式選擇從清單安裝此驅動程式放置在光碟片

RFFPGA-USBdrive 選擇您目前安裝系統

可選擇 WIN-98WIN-MEWIN-2000WIN-XP 系統配合您現在工作電腦作業系統

69

注意一般電腦 USB 埠很多插口當您安裝驅動程式時是配合您當時插入之埠

下次如您插入不同接口埠時電腦會再次要求安裝驅動程式這是正常現象請再次安

裝驅動程式否則無法使用

FPLC 操作

首先進入 RFFPGA裡子目錄 testASM直接點選 fPLCexe 出現下面操作畫面(也可直接將

此檔案放置桌面直接點選)

(或者選擇 File 再執行 Setuphellip 選擇您要執行 CAI 檔)

70

進入下面操作畫面 首先使用滑鼠在 FPGA下載按鈕單擊動作使 FPGA變成 DSP晶片 實驗一至實驗五皆為使用 DSP組合語言設計程式其原始程式分別為 testASM1至testASM5可使用 texPad 開啟與編輯程式內容 實驗三與實驗五多有 IO控制動作 當選擇實驗三時出現下面畫面

71

eM_USB 模組

數字型 LED

0 1 2 34 5 6 78 9 A BC D E F

燈號型 LED

44 鍵盤

ADC0 ADC1 DAC0 DAC1

LED 選擇KEY 選擇

模 式 1

0123

注意操作畫面 3與 4 說明開關與按鍵選擇位置後選擇程式下載再按程式啟動如您

按下 0-3按鍵時燈號型 LED會有不同方向閃爍顯示程式停止時結束所有 IO控制動作再按回首頁選擇其他實驗 實驗四與實驗五

模式3

0 1 2 34 5 6 78 9 A BC D E F

按照上面開關選擇直接操作如果以上實驗皆能按照正常操作表示您光纖網路通訊

FPGA發展模組以能正常使用 注意 開機與關機動作順序如下

開機電腦啟動 --- eM_USB 模組電源接上 --- USB 接上電腦 ---

啟動 FPLC 軟體 --- 下載 FPGA 程式

關機關閉 FPLC 軟體 --- eM_USB 模組電源拔掉 --- 拔掉電腦 USB 接頭 ---關掉

電腦

如果以上順序有亂可能造成 USB 找不到驅動造成無法下載經過幾次測試還是

無法下載建議重新啟動電腦主機按照正確步驟操作

72

FPGA 下載操作

進入 FPLC 操作系統按照下列步驟選擇節點模組與下載 bit FPGA 檔案

在 VHDLDEMO 子目錄下您可以選擇您目前 FPGA 種類型號在此型號下我們已將 VHDL

與數位邏輯設計課本範例全部放於此處

73

光纖網路連線 FPGA 下載操作

首先利用光纖線將 eM_USB0 模組光纖輸出埠接至 eM_USB1 模組光纖輸入埠以此

類推最後再將最後 eM_USBN 模組光纖輸出埠接至 eM_USB0 模組光纖輸入埠配置

如附圖方式

個人電腦(Windows) eM_USB模組

0USB

eM_USB模組1

光纖網路

eM_USB模組2

eM_USB模組N

配置完成後進入 FPLC 系統首先必須先將 Node00 下載在 testASM 子目錄裡

piDSPv0bit 檔讓 eM_USB0 模組 FPGA 具備 DSP 功能才能執行光纖網路通訊

操作如下

此時您就可以選擇分別下載至各模組 FPGA 檔 bit

74

安裝 FPLC 注意事項

當您進入 FPLC 時

按 FILE 選擇 programhellip 選擇檔案為 exp_dcmplc 出現下面畫面

正常顯示畫面為

75

DOS 環境操作

在 PC 端的操作是在 Windows 環境中的 DOS 視窗中執行指令範例如下

eFPGA progNETbit 下載 FPGA電路至網路節點0(即 USB節點)中 eFPGA testLEDbit 1 下載 FPGA電路至網路節點1中

對於單一節點的控制程序如下

1將 eM_USB模組連結個人電腦的 USB端 2eM_USB模組開機 3執行下載指令即可 eFPGA xxxxbit 4若要更改 FPGA電路只要重新執行下載指令即可

對於多個網路節點的控制程序如下

1第一組 eM_USB模組連結個人電腦的 USB端再以光纖網路依序其他各節點 2連接 USB界面者為模組0從光纖發射端連接出去的模組為1依此類推 3將所有 eM_USB模組開機 4執行下載指令如下 eFPGA progNETbit 模組0必須先下載指定的 FPGA電路 eFPGA xxxxbit 1 再依序下載其他網路模組的 FPGA電路 eFPGA yyyybit 2 eFPGA zzzzbit 最後再重新下載模組0的 FPGA電路 5換句話說模組0必須先執行 progNETbit讓光纖網路接受 FPGA控制後才能透過光纖網路下載至其他節點等全部網路節點下載完畢後再將模組0的 FPGA重新下載讓模組0也可自由執行任意的 FPGA電路

6若要更改某一個網路節點中的 FPGA電路只要重新執行下述指令 eFPGA progNETbit 模組0必須先下載指定的 FPGA電路 eFPGA yyyybit 2 下載指定網路模組的 FPGA電路 eFPGA zzzz bit 最後再重新下載模組0的 FPGA電路 換句話說除非模組0中的 FPGA已經包括光纖網路管理電路否則一定要先在

模組0中下載網路管理電路後才能下載指定網路節點的 FPGA電路

76

光纖網路通訊 FPGA 發展系統

系統配置

光纖網路通訊 FPGA 發展系統的系統配置圖如下

個人電腦(Windows) eM_USB模組

0USB

eM_USB模組1

光纖網路

eM_USB模組2

eM_USB模組N

其中

1基本模組為 eM_USB模組可用 USB界面和個人電腦連線並提供 USB對光纖網路的轉換功能使得個人電腦可以獨立控制光纖網路中的每個網路節點

2eM_USB模組也可以作為光纖網路中的網路節點透過光纖網路而接受個人電腦的

監控 3就個人電腦而言不論是 USB界面直接連結或是以光纖網路間接連結的 eM_USB模組都是可以直接監控的網路節點最多可以同時控制一個 USB節點和 30個網路節點

4對於每一個網路節點個人電腦都可執行 eM_USB模組中 FPGA的電路下載工作並在適當的 FPGA電路配合下可執行 eM_USB模組中 FPGA內部電路的讀寫控制 5透過適當的 FPGA電路設計各網路節點都可透過光纖網路和其他任何網路節點

作同步通訊執行 FPGA內部記憶體的資料交換資料交換頻率可達 1KHz以上

77

網路模組配置

每個網路模組的標準配置圖如下

eM_USB模組光纖網路

USB eM_FPGA卡

eM_DEMO模組

eM_EXP實驗模組

DC電源

其中

1網路模組以 eM_USB模組為主提供基本的 USB界面和光纖網路連線 2eM_USB模組中的 FPGACPLD採用插卡型式可選擇不同的 eM_FPGA卡包括

eM_2V1K卡可選用 Virtex系列的 XC2V250和 XC2V1000 eM_3S1K卡可選用 Spartan3系列的 XC3S400XC3S1000和 XC3S1500 eM_3S50卡可選用 Spartan3系列的 XC3S50XC3S200和 XC3S400 eM_95XL卡可選用 9500XL系列的 XC95144XL和 XC95288XL 3eM_USB模組中的對外連線有兩種一種是 26P接頭用以連接既有的各種實驗模

組另一種是兩組 50P接頭將 FPGA中各接腳引出用以連接專題實驗 4eM_DEMO模組就是插上 50P接頭的教學模組其中包括 LED 數字顯示和 44鍵盤也具備兩組的 ADC和兩組的 DAC接頭提供類比訊號的測試工具

常用的實驗組合包括

1精簡組合包括(eM_USB+eM_FPGA)提供基本的網路節點適用於專題實驗 2標準組合包括(eM_USB+eM_FPGA+eM_DEMO)提供基礎 FPGA設計的教學實驗

3實驗組合包括(eM_USB+eM_FPGA+eM_DEMO+eM_EXP)提供進階的 FPGA實驗可依需求選用不同的實驗模組

78

eM_USB 模組

eM_USB 模組的電路配置圖如下

TxRx

DCPower

USB

JP2

JP3

光纖界面

外加電源

PC連線

JP1

eM_FPGA模組

FT232 CPLD FlashROM

SRAM

10cm

6cm

JP4

其中

1對外的連線接頭包括 DC電源 可選擇單電源(5V)或是多電源(5V+12V-12V)兩種 USB界面 直接連接個人電腦 光纖界面連接光纖網路 2實驗界面包括 JP1負責內部 CPLD的電路下載 JP2JP3兩組 50P的擴張用接頭 JP4 標準 26P接頭用以連接各種實驗模組 3內部的電路配置包括 A以 SO-DIMM接頭連接各種 eM_FPGA卡 B內附 EEPROMFlashROM和 SRAM提供 FPGA作應用測試 C以一顆 FT232BM作為 USB界面解碼而以一顆 CPLD作為光纖網路解碼 D提供各種 eM_FPGA卡的電路下載功能 4內附五顆 LED由上而下依序為 usbLED指示 USB界面的讀寫狀態 tstLED可由 FPGA電路自行定義 stsLED可由 FPGA電路自行定義 RxLED 可由 FPGA電路自行定義 TxLED 可由 FPGA電路自行定義

79

外部接腳定義

外部接頭的接點順序圖示如下

上視圖

JP11 9 JP4

126225

JP31

50249

JP21

50249

而各接頭的接點定義如下

JP1 JP4 JP2 JP3 1+33V 1+12V 2+12V 1 GND 2 GND 1 GND 2 GND 2GND 3 ADC 4 DAC 3POWER 4ALARM 3 +5V 4 +5V 3nc 5 yPB2 6 yPB3 5RxNET 6TxNET 5+12V 6+12V 4TCK 7 yPB1 6 yPB4 7RxUSB 6TxUSB 7-12V 6-12V 5nc 9 yPB0 10yPB5 9RxCAN 10TxCAN 9 ADC 10 DAC 6TDO 11yPB6 12yPB7 11P0D0 12P0D1 11P1D0 12P1D1 7TDI 13yGND 14yPC3 13P0D2 14P0D3 13P1D2 14P1D3 8nc 15yPC2 16yPC1 15P0D4 16P0D5 15P1D4 16P1D5 9TMS 17yPC0 18yPA0 17P0D6 18P0D7 17P1D6 18P1D7 19yPA1 20yPA2 19P0D8 20P0D9 19P1D8 20P1D9 21yPA3 22GND 21P0D10 22P0D11 21P1D10 22P1D11 23GND 24+5V 23P0D12 24P0D13 23P1D12 24P1D13 25+5V 26nc 25P0D14 26P0D15 25P1D14 26P1D15 27P2D0 28P2D1 27PxA0 28PxA1 29P2D2 30P2D3 29PxA2 30PxA3 31P2D4 32P2D5 31PxA4 32PxA5 33P2D6 34P2D7 33PxA6 34PxA7 35P2D8 36P2D9 35PxB0 36PxB1 37P2D10 38P2D11 37PxB2 38PxB3 39P2D12 40P2D13 39PxB4 40PxB5 41P2D14 42P2D15 41PxB6 42PxB7 43ADC0 44ADC1 43PxC0 44PxC1 45ADC2 46ADC3 45PxC2 46PxC3 47ADC4 48ADC5 47PxC4 48PxC5 49DAC0 50DAC1 49PxC6 50PxC7

80

eM_FPGA 模組

在各種 eM_FPGA 模組中FPGA 對外電路的標準配置圖如下

24576MHz

FlashROM

26PSRAM

EEPROM

mD[8]

yPA[4]

FPGACPLD

mA[19]mRDmWRmCSeeCKeeCSeeDIeeDO

光纖界面 RxNETTxNET

USB 界面 RxUSBTxUSBCLK24MPOWERALARM

LED

tstLEDstsLEDRxLEDTxLED

yPB[8]yPC[4]

ADCDAC

ADC[8]

實驗模組

ADC[2]

DAC[2]

xPA[4]

xPB[8]

xPC[4]

基礎實驗

其中

1FPGACPLD可以選擇下述幾種 XC2V250XC2V1000 採用 eM_2V1K模組其中 FPGA為 FG456包裝 XC3S400XC3S1000XC3S1500採用 eM_3S1K模組其中 FPGA為 FG456包裝 XC3S400XC3S1000XC3S1500採用 eM_3S1K模組其中 FPGA為 FG456包裝 XC3S50XC3S200XC3S400 採用 eM_3S50模組其中 FPGA為 TQ144包裝 XC95144XLXC95288XL 採用 eM_95XL模組其中 CPLD為 TQ144包裝 2採用 FG456包裝者可以控制所有的 IO界面 3採用 TQ144包裝者只是不能控制 RAM和 FlashROM而可以控制其他所有的界面 4所有 FPGA模組都可自由選擇由 USB界面或是由光纖界面下載電路但是 CPLD模組只能固定由 USB界面下載電路

5所有 FPGACPLD模組都可透過 26P接頭連接既有的各種實驗模組

81

FPGA 接腳對照表

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

mD0 XD6 mD0 A17 C13 -- -- mD1 XD7 mD1 B17 D12 -- -- mD2 XD8 mD2 C17 D11 -- -- mD3 XD9 mD3 D17 C11 -- -- mD4 XD10 mD4 E17 D10 -- -- mD5 XD11 mD5 E16 C10 -- -- mD6 XD12 mD6 E14 D9 -- -- mD7 XD13 mD7 E13 D7 -- -- mA0 XD14 mA0 D13 C7 -- -- mA1 XD15 mA1 C13 D6 -- -- mA2 XA0 mA2 V5 C3 -- -- mA3 XA1 mA3 U5 C4 -- -- mA4 XA2 mA4 Y2 D3 -- -- mA5 XA3 mA5 Y1 D4 -- -- mA6 XA4 mA6 V4 E3 -- -- mA7 XA5 mA7 V3 E4 -- -- mA8 XA6 mA8 W2 F3 -- -- mA9 XA7 mA9 W1 F4 -- -- mA10 XA8 mA10 T2 G6 -- -- mA11 XA9 mA11 T1 K3 -- -- mA12 XA10 mA12 R4 K10 -- -- mA13 XA11 mA13 R3 L3 -- -- mA14 XA12 mA14 R2 L4 -- -- mRD XRD mRD R1 D5 -- -- mWR XWR mWR P6 C6 -- --

POWER P0A0 POWER B4 B20 P1 P5 ALARM P0A1 ALARM A4 A19 P2 P6 RxNET P0A2 RxNET C4 B19 P4 P7 TxNET P0A3 TxNET C5 A18 P5 P9 RxUSB P0B0 RxUSB B5 A15 P6 P10 TxUSB P0B1 TxUSB A5 B15 P7 P11 RxCAN P0B2 RxCAN D6 A14 P8 P12 RxCAN P0B3 TxCAN C6 B14 P10 P13

CLK24M CLK24M CLK24M E12 B12 P124 P38

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

PWM0H P3A0 P0D0 E6 A8 P21 P23 PWM0L P3A1 P0D1 E5 B8 P23 P24 PWM1H P3A2 P0D2 C2 B6 P24 P25 PWM1L P3A3 P0D3 C1 A5 P25 P26 PWM2H P3A4 P0D4 D2 B5 P26 P27

82

PWM2L P3A5 P0D5 D1 A4 P27 P28 PWMenb P3A6 P0D6 E4 B4 P28 P30 PHT1Z P3A7 P0D7 E3 A3 P30 P31 PHT1A P3B0 P0D8 G2 C1 P31 P32 PHT1B P3B1 P0D9 G1 C2 P32 P33 PHT0A P3B2 P0D10 H5 D1 P33 P34 PHT0B P3B3 P0D11 J6 D2 P35 P35 AMP0 P3B4 P0D12 H4 E1 P36 P39 AMP1 P3B5 P0D13 H3 E2 P40 P40 AMP2 P3B6 P0D14 H2 F2 P41 P41 AMP3 P3B7 P0D15 H1 G1 P44 P43 eeSK P0C3 P1D0 C10 B9 P20 P22 eeCS P0C2 P1D1 D10 A9 P18 P21 eeDI P0C1 P1D2 F10 B10 P17 P20 eeDO P0C0 P1D3 E10 B11 P15 P19 ssCK P0B7 P1D4 E8 A11 P14 P17 ssCS P0B6 P1D5 E7 A12 P13 P16 ssDI P0B5 P1D6 A6 B13 P12 P15 ssDO P0B4 P1D7 B6 A13 P11 P14

ppCLK P3C0 P1D8 K4 G2 P46 P44 ppDIN P3C1 P1D9 K3 K1 P47 P45 TxD P3C2 P1D10 K2 K2 P50 P46 RxD P3C3 P1D11 K1 L1 P51 P48

tstLED P3C4 P1D12 L5 L2 P52 P49 stsLED P3C5 P1D13 L4 M1 P53 P50 RxLED P3C6 P1D14 L3 M2 P55 P51 TxLED P3C7 P1D15 L2 N1 P56 P52

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

xPA0 P2A0 P2D0 AA3 N2 P59 P53 xPA1 P2A1 P2D1 Y4 T1 P60 P54 xPA2 P2A2 P2D2 AA4 T2 P63 P56 xPA3 P2A3 P2D3 AB4 U2 P68 P57 xPC0 P2A4 P2D4 W5 V1 P69 P58 xPC1 P2A5 P2D5 Y5 V2 P70 P59 xPC2 P2A6 P2D6 AA5 W1 P73 P60 xPC3 P2A7 P2D7 AB5 W2 P74 P61

-- P2B0 P2D8 V6 Y1 P76 P64 -- P2B1 P2D9 V7 Y2 P77 P66 -- P2B2 P2D10 W6 AA3 P78 P68

mCS P2B3 P2D11 Y6 AB4 P79 P69 mA15 P2B4 P2D12 V9 AA4 P80 P70 mA16 P2B5 P2D13 V10 AB5 P82 P71 mA17 P2B6 P2D14 W10 AA5 P83 P74 mA18 P2B7 P2D15 Y10 AA6 P84 P75 CS0 P2C0 ADC0 AA10 AB8 P85 P76

83

SDIN0 P2C1 ADC1 AB10 AA8 P86 P77 CS1 P2C2 ADC2 U10 AB9 P87 P78

SDIN1 P2C3 ADC3 U11 AA9 P89 P79 SCLK P2C4 ADC4 V11 AB10 P90 P80 CS2 P2C5 ADC5 W11 AA10 P92 P81

SDOUT P2C6 ADC6 Y11 AB11 P93 P82 LDAC P2C7 ADC7 AA11 AA11 P95 P83

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

xPB0 P1A0 PxA0 M1 M3 P135 P85 xPB1 P1A1 PxA1 M2 M4 P132 P86 yPB2 P1A2 PxA2 M3 N3 P131 P87 yPB3 P1A3 PxA3 M4 N4 P130 P88 yPB1 P1A4 PxA4 M5 T4 P129 P91 yPB4 P1A5 PxA5 M6 T5 P128 P92 yPB0 P1A6 PxA6 N1 U3 P127 P93 yPB5 P1A7 PxA7 N2 U4 P125 P94 yPB6 P1B0 PxB0 U13 V3 P119 P95 yPB7 P1B1 PxB1 V13 V4 P118 P96 xPB2 P1B2 PxB2 W13 W3 P116 P97 xPB3 P1B3 PxB3 Y13 W4 P113 P98 xPB4 P1B4 PxB4 AA13 Y3 P112 P100 xPB5 P1B5 PxB5 AB13 Y4 P96 P101 yPC3 P1B6 PxB6 U12 Y5 P97 P102 yPC2 P1B7 PxB7 V12 W5 P98 P103 yPC1 P1C7 PxC0 AB17 W11 P108 P113 yPC0 P1C6 PxC1 AA17 Y11 P107 P112 yPA0 P1C5 PxC2 Y17 W10 P105 P111 yPA1 P1C4 PxC3 W17 Y10 P104 P110 yPA2 P1C3 PxC4 AB18 W9 P103 P107 yPA3 P1C2 PxC5 AA18 W8 P102 P106 xPB6 P1C1 PxC6 Y18 W6 P100 P105 xPB7 P1C0 PxC7 W18 Y6 P99 P104

84

eM_DEMO 模組

eM_DEMO 模組的電路配置圖如下

eM_USB 模組

數字型 LED

0 1 2 34 5 6 78 9 A BC D E F

燈號型 LED

44 鍵盤

ADC0 ADC1 DAC0 DAC1

LED 選擇KEY 選擇

其中

1eM_DEMO模組的基本功能包括 A將 xPAxPBxPC等 16個 IO訊號引出控制 LED和鍵盤電路 B將 ADDA訊號引出並放大成+-10V的工作範圍 2LED和鍵盤可以選擇三種模式由 LED和 KEY 兩組開關作選擇圖示如下

模式1

0123

模式2 模式3

0 1 2 34 5 6 78 9 A BC D E F

0123

3模式14鍵輸入並搭配 16點的 LED燈號顯示其中 16點 LED分別對映到 xPA[0~3]xPB[0~7]和 xPC[0~3] 4組按鍵分別對映到 xPC[0~3] 4模式24鍵輸入並搭配四個 7段式數字顯示其中 數字顯示由 xPA[0~3]作數字掃瞄而由 xPB[0~7]作 7段式 LED控制 4組按鍵 分別對映到 xPC[0~3] 5模式316鍵輸入並搭配四個 7段式數字顯示其中 數字顯示由 xPA[0~3]作數字掃瞄而由 xPB[0~7]作 7段式 LED控制 16組按鍵由 xPA[0~3]作鍵盤掃瞄而由 xPC[0~3]作鍵盤讀取 6根據VHDL與數位邏輯設計的章節其中 第 1章至 10章的實驗採用模式1而 第 11章實驗採用模式2而 第 12章之後的實驗都採用模式3

85

FPGA UCF 定義

eM_3S1K 模組

NET CLK LOC = B12

NET XAlt0gt LOC = N2

NET XAlt1gt LOC = T1

NET XAlt2gt LOC = T2

NET XAlt3gt LOC = U2

NET XBlt0gt LOC = M3

NET XBlt1gt LOC = M4

NET XBlt2gt LOC = W3

NET XBlt3gt LOC = W4

NET XBlt4gt LOC = Y3

NET XBlt5gt LOC = Y4

NET XBlt6gt LOC = W6

NET XBlt7gt LOC = Y6

NET XClt0gt LOC = V1

NET XClt1gt LOC = V2

NET XClt2gt LOC = W1

NET XClt3gt LOC = W2

NET YAlt0gt LOC = W10

JP4 接頭

NET YAlt1gt LOC = Y10

NET YAlt2gt LOC = W9

NET YAlt3gt LOC = W8

NET YBlt0gt LOC = U3

NET YBlt1gt LOC = T4

NET YBlt2gt LOC = N3

NET YBlt3gt LOC = N4

NET YBlt4gt LOC = T5

NET YBlt5gt LOC = U4

NET YBlt6gt LOC = V3

NET YBlt7gt LOC = V4

NET YClt0gt LOC = Y11

NET YClt1gt LOC = W11

NET YClt2gt LOC = W5

NET YClt3gt LOC = Y5

在光碟片中 RFFPGAVHDLDEMOBIT3S1K 裡有 VHDL 與數位邏輯設計書本範例原始檔與合成檔

86

eM_3S50 模組

NET CLK LOC = P124

NET XAlt0gt LOC = P59

NET XAlt1gt LOC = P60

NET XAlt2gt LOC = P63

NET XAlt3gt LOC = P68

NET XBlt0gt LOC = P135

NET XBlt1gt LOC = P132

NET XBlt2gt LOC = P116

NET XBlt3gt LOC = P113

NET XBlt4gt LOC = P112

NET XBlt5gt LOC = P96

NET XBlt6gt LOC = P100

NET XBlt7gt LOC = P99

NET XClt0gt LOC = P69

NET XClt1gt LOC = P70

NET XClt2gt LOC = P73

NET XClt3gt LOC = P74

NET YAlt0gt LOC = P105

JP4 接頭

NET YAlt1gt LOC = P104

NET YAlt2gt LOC = P103

NET YAlt3gt LOC = P102

NET YBlt0gt LOC = P127

NET YBlt1gt LOC = P129

NET YBlt2gt LOC = P131

NET YBlt3gt LOC = P130

NET YBlt4gt LOC = P128

NET YBlt5gt LOC = P125

NET YBlt6gt LOC = P119

NET YBlt7gt LOC = P118

NET YClt0gt LOC = P107

NET YClt1gt LOC = P108

NET YClt2gt LOC = P98

NET YClt3gt LOC = P97

在光碟片中 RFFPGAVHDLDEMOBIT3S200 裡有VHDL與數位邏輯設計書本範例原始檔與合成檔

87

eM_95XL 模組

NET CLK LOC = SPIN38

NET XAlt0gt LOC = SPIN53

NET XAlt1gt LOC = SPIN54

NET XAlt2gt LOC = SPIN56

NET XAlt3gt LOC = SPIN57

NET XBlt0gt LOC = SPIN85

NET XBlt1gt LOC = SPIN86

NET XBlt2gt LOC = SPIN97

NET XBlt3gt LOC = SPIN98

NET XBlt4gt LOC = SPIN100

NET XBlt5gt LOC = SPIN101

NET XBlt6gt LOC = SPIN105

NET XBlt7gt LOC = SPIN104

NET XClt0gt LOC = SPIN58

NET XClt1gt LOC = SPIN59

NET XClt2gt LOC = SPIN60

NET XClt3gt LOC = SPIN61

NET YAlt0gt LOC = SPIN111

JP4 接頭

NET YAlt1gt LOC = SPIN110

NET YAlt2gt LOC = SPIN107

NET YAlt3gt LOC = SPIN106

NET YBlt0gt LOC = SPIN93

NET YBlt1gt LOC = SPIN91

NET YBlt2gt LOC = SPIN87

NET YBlt3gt LOC = SPIN88

NET YBlt4gt LOC = SPIN92

NET YBlt5gt LOC = SPIN94

NET YBlt6gt LOC = SPIN95

NET YBlt7gt LOC = SPIN96

NET YClt0gt LOC = SPIN112

NET YClt1gt LOC = SPIN113

NET YClt2gt LOC = SPIN103

NET YClt3gt LOC = SPIN102

在光碟片中 RFFPGAVHDLDEMOSVF95288XL 裡有VHDL與數位邏輯設計書本範例原始檔與合成

檔案

88

eM_FPGA 模組

NET CLK LOC = E12

NET XAlt0gt LOC = AA3

NET XAlt1gt LOC = Y4

NET XAlt2gt LOC = AA4

NET XAlt3gt LOC = AB4

NET XBlt0gt LOC = M1

NET XBlt1gt LOC = M2

NET XBlt2gt LOC = W13

NET XBlt3gt LOC = Y13

NET XBlt4gt LOC = AA13

NET XBlt5gt LOC = AB13

NET XBlt6gt LOC = Y18

NET XBlt7gt LOC = W18

NET XClt0gt LOC = W5

NET XClt1gt LOC = Y5

NET XClt2gt LOC = AA5

NET XClt3gt LOC = AB5

NET YAlt0gt LOC = Y17

JP4 接頭

NET YAlt1gt LOC = W17

NET YAlt2gt LOC = AB18

NET YAlt3gt LOC = AA18

NET YBlt0gt LOC = N1

NET YBlt1gt LOC = M5

NET YBlt2gt LOC = M3

NET YBlt3gt LOC = M4

NET YBlt4gt LOC = M6

NET YBlt5gt LOC = N2

NET YBlt6gt LOC = U13

NET YBlt7gt LOC = V13

NET YClt0gt LOC = AA17

NET YClt1gt LOC = AB17

NET YClt2gt LOC = V12

NET YClt3gt LOC = U12

在光碟片中 RFFPGAVHDLDEMOBIT2V250 裡有VHDL與數位邏輯設計書本範例原始檔與合成檔

89

Page 5: RFFPGA 直流馬達實驗手冊juniortek.com.tw/program/manual/RF-DC-mal.pdf · em_demo模組 em_dcm 直流伺服馬達 dc電源 rffpga 系統的直流馬達實驗規劃 其中包括:

2馬達驅動界面

馬達的控制需要高速的動態響應能力是 DSP 核心的重要應用方向本實驗中建立馬達

驅動器的界面包括 PWM 的驅動控制以及光電盤的解碼和計數提供馬達控制實驗的設

計基礎

設計說明 直流馬達

直流馬達屬於扭力控制結構的電機機械其轉子磁場和定子磁場相互垂直

扭力控制結構

L1

L2

N

SN S

轉子

定子

當轉子和定子磁場相互垂直時就會產生扭力而讓轉子旋轉但是一旦旋轉到 90o使

得磁場平行時馬達就會失去扭力而停止了轉動為了使馬達持續不停的旋轉直流馬

達中設計了很特殊的電樞結構讓轉子不論旋轉到任何角度轉子磁場和定子磁場永遠

保持垂直

N S

電樞示意圖

在轉子在每一瞬間都只有和定子垂直的那組線圈能夠導通所以無論轉子轉到任何角

度直流馬達永遠都能保持垂直磁場的狀態

在垂直磁場的狀態下只要能控制轉子電流就能控制磁場的大小也就能控制馬達的

扭力了由於定子磁場不變只有電樞的電流可以控制就可以簡化成下面的直流馬達

符號

直流馬達符號

5

電壓驅動模式

直流馬達的驅動方式有電壓驅動和電流驅動兩種

1電流驅動的方式是控制扭力電流越大扭力越大電流越小扭力越小 2電壓驅動的方式是控制轉速電壓越高轉速越高電壓越低轉速越低 3電流和扭力的關係比較線性也不受外界干擾影響 4電壓和轉速的關係比較不線性也比較容易受負載的干擾

電流驅動比較符合扭力控制模式控制效果比較直接但是相對的電路成本也較高電

壓驅動電路比較簡單控制效果雖然沒有電流驅動的響應好但是仍能維持相當不錯的

水準因此大部分低價產品還是選擇電壓驅動模式

電流驅動方式 電壓驅動方式

+-

一個最簡單的電壓驅動電路就是以運算放大器為基礎的線性驅動電路其電路方塊圖如

線性電壓驅動

VinVout

V+

V-

線性放大器

線性放大器的特性非常理想其電壓輸出 Vout 和電壓輸入 Vin 成正比也不受其他環

境因素所干擾輸出正電壓馬達就正轉輸出負電壓馬達就反轉但是線性放大器的能

量效率卻是非常不理想以下圖為例

VinVout

V+

V-

線性放大器

=5V

=+15V

=-15V

1A

1A

6

假設在某種轉速下馬達需要的電壓輸出為 5V而電流為 1A那麼就產生了(5V1A=5W)

的功率輸出由於線性放大器的電流完全由電源供應器提供所以電源電流也是 1A在

15V 的電源電壓下驅動級的功率為(15V1A=15W)當有 15W 的功率進入驅動級而只

有 5W 的功率流出驅動級代表其中 10W 的功率浪費掉了在能量不滅的定律下功率

是不會憑空消失的這意味著這 10W 的功率已經變成了熱能使得驅動級發燙起來還

得另外設法散熱

在兩種狀況下會造成最小的功率消耗一種是最大電壓輸出(全開)狀況一種是零電

流輸出(全關)狀況說明如下

1當最大電壓輸出時假設輸出電壓為 15V輸出電流為 1A則 輸出功率為(15V1A=15W) 輸入功率為(15V1A=15W) 所以驅動級的消耗功率為(15W-15W=0W) 2當零電流輸出時假設輸出電壓為 0V輸出電流為 0A則 輸出功率為( 0V0A=0W) 輸入功率為(15V0A=0W) 所以驅動級的消耗功率為(0W-0W=0W)

當然真實的電路不會那麼理想但是這種特殊工作點的選擇的確會讓驅動電路變得非

常有效率

PWM 脈寬調變

脈寬調變電路(Pulse Width Modulation簡稱 PWM)就是利用全開和全關的兩種最佳效

率點所設計的電路

就 PWM 驅動器本身而言只有全開和全關的兩種控制模式假設我們還是需要 5V 和 1A

的輸出控制需求那麼就可以控制全開的比率(即工作率 Duty-Cycle)為 13 週期使得

輸出的平均電壓維持在 5V 的準位如下圖所示

Vin Vout

V+

V-

線性放大器

因為輸出只有全開或全關的兩種狀態如果再使用昂貴的線性放大器就太浪費了這時只要用

最簡單的開關放大器就可以辦到了最基本的開關放大器有下述兩種

7

V+

單向控制

V+

A

AB

B

A雙向控制

單向控制結構只能控制直流馬達做單方向的運轉而由 PWM 控制馬達的轉速雙向控制

在速度之外還可以控制馬達作正反轉通常用來執行直流馬達的位置控制用

PWM 的控制波形非常簡單就是產生一組平均值為指定電壓的波形也就是控制所謂的

工作率(Duty-Cycle)定義如下

平均電壓 = Ton (Ton + Toff) 電源電壓 = 工作率 電源電壓

但是由於波形上的微小差異細分起來還是有下面三種型式

前緣對齊型

10 1010

30 30 30

50 50 50

中間對齊型 後緣對齊型

如果只有一組 PWM 波形輸出無論採用哪種波形都沒有差異只有當多個 PWM 波形要同

時輸出(例如交流馬達作三相控制)時才需要選擇中間對齊的型式作處理以免造成相

位失真的現象

在電路設計上都是產生一組參考波來和電壓命令作比較當電壓命令大於參考波時就

送出 1小於參考波時就送出 0如此就形成 PWM 波形其差別只是採用何種參考波作

比較

前緣對齊型

70

中間對齊型 後緣對齊型

70

以上圖為例要產生前緣對齊型的 PWM 訊號就採用遞增型鋸齒波若採用遞減型鋸齒

波就會產生後緣對齊型的 PWM 訊號採用前後對稱的三角波就會產生中間對齊型的

PWM 訊號

8

PWM切換保護

對於單一線圈的負載而言PWM切換電路的電路方塊圖如下

負載

正電源

負電源

PWM+

PWM-

P

N

其中

1以兩組電晶體來分別控制正負電源其中的電晶體依據功率需求可選擇功率電晶體

MOSFET或是 IGBT不論哪種選擇其控制原理都一致 2將 PWM訊號分成正向和反向的兩組控制訊號PWM+控制正電源的導通與否而

PWM-控制負電源的導通與否 3切換組合包括 P=OFFN=OFF負載和電源隔離 P=ON N=OFF負載連接上正電源 P=OFFN=ON 負載連接上負電源 P=ON N=ON 正負電源短路這時功率驅動級將瞬間燒毀

原則上只要將 PWM+和 PWM-間的邏輯反向是不可能發生兩者都 ON 的情況但是再考慮

功率電晶體(包括電晶體MOSFET 和 IGBT)的暫態響應電晶體 OFF 的反應時間通常比

電晶體 ON 的反應時間要長一些所以在切換瞬間很可能產生兩者都導通的瞬間狀態

這時可能有兩種結果

1兩者同時導通的時間稍長時功率驅動級將瞬間產生過電流而燒毀 2兩者同時導通的時間非常短這時功率驅動級雖不至於瞬間燒毀但是會產生很高

的熱量使得功率驅動級的溫度快速加高甚至於因為過熱而燒毀

因此 PWM 控制必須加上切換保護其示意圖如下

PWM+ PWM-

切換保護

其中

1基本上PWM-只是 PWM+的反向訊號兩者都由一組 PWM訊號控制 2但是在 ONOFF 切換的瞬間必須加上一段兩者都 OFF的時間這段時間的長度

可依照功率電晶體的 ONOFF特性來設定在 1us~4us之間

9

PWM 啟動保護

在系統開機時很不容易保證各個元件都能依照順序依序啟動因此在系統啟動時必須

自動將 PWM 輸出關掉直到系統完成整個開機程序後才能再將 PWM 訊號重新啟動一

般而言啟動程序如下

1系統開機後功率驅動級通常最快啟動這時 PWM必須保持在 OFF 狀態避免系

統誤動或短路 2之後依次啟動 BIOSLinux網路最後才啟動應用程式 3應用程式啟動後必須依序 A下載 FPGA B下載 DSP控制軟體 C啟動 DSP控制軟體 在啟動 DSP控制軟體後才能重新開啟 PWM的動作 4任何時間中只要 DSP控制停止就必須立刻關閉 PWM控制以避免誤動或短路

所以 PWM 啟動保護是由 DSP 程式直接控制其必要程序包括

1FPGA電路下載完畢並執行工作中 2DSP程式下載完畢並執行工作中

其中任何一個部分停止都必須立刻關閉 PWM 控制一般而言這部分電路都由看護犬

(watch-dog)電路管理而由 DSP 程式負責驅動

DCM 實驗模組

DCM 模組是一個完整的直流馬達實驗機台系統方塊圖如下

YA1

切換保護

YA2

YC0

馬達

PHTA PHTB

PWM+

DIS

YA0 PWM-

+12VSW

YC1

JP4 A

AB

B

雙向控制

光電盤

A

B

其中

1採用雙向控制的 PWM功率驅動級來驅動直流馬達可控制馬達正反轉 2功率驅動級中已有切換保護其控制訊號包括

10

PWM+ PWM- DIS 直流馬達 X X 1 OFF 1 0 0 正電壓驅動 0 1 0 負電壓驅動

3功率驅動級中並沒有啟動保護所以必須附加電源開關作手動控制 4馬達轉角由光電盤的 AB相訊號作回授 5所有控制訊號都經由 JP4接頭接到 RFFPGA控制器中可由 FPGA作控制

三角波產生器

實驗中以中間對齊型的 PWM 訊號為控制目標首先建立對稱的三角波作為參考訊號其

對映的 VHDL 程式範例如下

TRIANGLE_WAVE block signal Q STD_LOGIC_VECTOR (11 downto 0) signal CEDIR STD_LOGIC begin process (CLKRESET) -- sequential logic begin if RESET=1 then --reset Qlt=000000000111 --reset to 7 elsif CLKevent and CLK=1 then --CLK=gt1 trigger if CE=1 then --clock enable if DIR=0 then Qlt=Q+1 --up counter else Qlt=Q-1 --down counter end if end if end process -- combinational logic CE lt= SYSTEM(0) --24MHz clock DIR lt= SYSTEM(13) --4KHz square wave REF lt= Q --12-bit reference (7~3079) end block TRIANGLE_WAVE 其中

1程式設計為可適用於不同的系統時鐘包括 49152MHz和 24576MHz 兩種型式 2計數器的基本頻率為 24576MHz所以用 CE=SYSTEM(0)來控制計數動作 3三角波的頻率設為 4KHz所以計數器的峰值為(2457642=3072) 4正反計數器和系統時序同步而以 SYSTEM(13)做為同步控制由於 SYSTEM(13)為 4KHz的方波設定 DIR=SYSTEM(13)即可控制計數器的上升或下降

5在 RESET時將計數器的初值設為 7使得計數範圍修正為 7~3079所以即使有些同步誤差也不會產生負數輸出的嚴重影響

6三角波以 REF[12]作輸出數值範圍在 7~3079之間頻率為 4KHz

11

如果 PWM 的頻率過低馬達端會產生震動噪音這時就必須提高 PWM 的頻率在前面程

式中如果要將 PWM 頻率從 4KHz 提升為 8KHz則可更改如下

if DIR=0 then Qlt=Q+2 --up counter else Qlt=Q-2 --down counter DIR lt= SYSTEM(12) --8KHz square wave 其中

1將 DIR改由 8KHz的 SYSTEM(12)來控制 2同時將計數器改成+2-2的正反計數器 3如此仍然能夠維持 REF輸出的數值範圍(7~3079)

如果還要再將 PWM 的頻率提高到 16KHz則可更改如下

if DIR=0 then Qlt=Q+4 --up counter else Qlt=Q-4 --down counter DIR lt= SYSTEM(11) --16KHz square wave 其中

1將 DIR改由 16KHz的 SYSTEM(11)來控制 2同時將計數器改成+4-4的正反計數器 3如此仍然能夠維持 REF輸出的數值範圍(7~3079)

表面上三角波產生器的數值精度為 12-bit時間精度為 24MHz但是由於 PWM 訊號將

透過 FPGA2 輸出而高速串列界面的更新速度為 15MHz所以就 DCM 模組所收到的 PWM

控制訊號而言其時間精度將降低為 15MHz而數值上的精度將降低為 8-bit等效範

圍為 0~192 或是+-96 之間整體而言控制上的精度約為 05仍可符合馬達控制的

需求

PWM 波形產生器

接著處理比較的動作並產生 PWM 波形對映的 VHDL 程式範例如下

PWM_COMPARATOR block signal CEPUPD STD_LOGIC signal D0D1D2D3D4 STD_LOGIC begin process (CLK) -- sequential logic begin if CLKevent and CLK=1 then --CLK=gt1 trigger if CE=1 then --CLK enable D4lt=D3 D3lt=D2 D2lt=D1 D1lt=D0 --delay end if end if

12

end process -- combinational logic CE lt= CLK1M D0 lt= 1 when CMDgtREF else 0 --PWM generation PU lt= D1 and D2 and D3 and D4 --up-side output PD lt= not D1 and not D2 and not D3 and not D4 --down-side output PWMU lt= PU --up-side PWM output PWMD lt= PD --down-side PWM output PWMI lt= (not PU and not PD) or not ENB --PWM disable PWMR lt= REF --PWM reference end block PWM_COMPARATOR

程式中所對映的時序如下

CE

REF

CMD

D1D2D3D4PWMUPWMDPWMI

其中

1以 15MHz的 CE訊號為基本頻率 2將電壓命令 CMD和參考波形 REF作比較若 CMDgtREF則設定 D0=0否則設定

D0=1 3將 D0訊號作四次的延遲處理延遲訊號依序為 D1D2D3D4最後再重新組合成

PWM的輸出波形 4其輸出訊號包括 PWMU對映到 DCM模組中的 PWM+訊號 PWMD對映到 DCM模組中的 PWM-訊號 PWMI對映到 DCM模組中的 DIS訊號為切換保護訊號 如此 PWMU作動和 PWMD作動之間將有 2us間隔中是兩者都不作動的也就是

PWMI的作動時間 5當 ENB命令=0時設定 PWMI=1而使得驅動器 OFF

13

回授訊號的處理

精密的伺服馬達動作必須將馬達的位置和速度加以量測後再執行回授控制因此速

度和位置的量測是精密控制中必要的一環我們通常用光電寫碼器或數位尺來進行量測

工作

光電寫碼器(Photo-Encoder)俗稱光電盤是利用光電量測進行的非接觸式數位量測元

件其基本裝置如下

LED光源

光電晶體偵測

以 LED 或是其他光源來發光而用 AB 相的兩組光電晶體來偵測當圓盤隨著馬達作轉

動時光電晶體即可偵測到其移動狀態由於圓盤中的小孔呈等距排列其透光部分和

不透光部分呈 50對 50的比例當圓盤轉動時光電晶體端就可以偵測到下述訊號

光電盤訊號(A 相)

光電盤訊號(B 相)

正轉

其中

1偵測方波的頻率即對應於圓盤轉動的頻率也就是轉速 2偵測方波的個數即對應於圓盤轉過的孔數也就是轉角(相對角度) 3由於 AB相的兩組光電晶體在機械安裝上的角度不同使得讀出訊號也有 90 度的

差異如果馬達正轉則 A相超前如果馬達反轉則 B相超前

有了兩相的光電盤訊號只要能偵測其中的相位變化就可以分辨光電盤的正反轉運動

了例如正轉時的光電盤時序如下

14

光電盤訊號 (A 相 )

光電盤訊號 (B 相 )

正轉

微分訊號(A+)

微分訊號(A-)

微分訊號(B+)

微分訊號(B-)

正轉脈衝(CW)

其中

1針對 AB 兩相訊號作微分處理即可取得 A+A-B+B-的上緣微分和下緣微分 2將微分訊號和和原有的 AB相訊號作比較即可找出正轉脈衝 3計算正轉脈衝的頻率和個數即可取得馬達的速度和轉角 4如此得到的脈衝數將是原有 AB相頻率的四倍所以稱之為乘四解碼電路

同樣的如果針對光電盤的反轉時序一樣可以得出反轉訊號圖示如下

光電盤訊號(A相)

光電盤訊號(B相)

反轉

反轉脈衝(CCW)

其公式如下

CW lt= (A+ and not B) CCW lt= (A+ and B) or (A- and B) or (A- and not B) or (B+ and A) or (B+ and not A) or (B- and not A) or (B- and A)

整合光電盤回授的處理其系統方塊圖如下

數位濾波

D Q

CK

DLA

PHA

D Q

CK

DLB

PHB

CLK

乘四解碼電路

DIR

PLS

數位濾波

PA

PB

正反計數

CNT DB

RD

CS

包括

15

1首先利用簡單的數位濾波器將 AB項的雜訊排除 2接著利用延遲電路作微分處理並以乘四解碼電路解出轉動的脈波和方向 3最後利用正反計數器作計數並將計數值讀入匯流排

數位濾波器

光電盤的 AB 相訊號中如果產生雜訊干擾的現象會使得馬達轉角的計量上產生永久

性的累積誤差將造成控制上無法彌補的錯誤所以 AB 相訊號上的雜訊一定要盡力排

除下面是常用的數位濾波器設計範例

FILTER_A block -- digital filter for A signal CED0D1D2 STD_LOGIC begin process (CLK) -- sequential logic begin if CLKevent and CLK=1 then --CLK=gt1 trigger if CE=1 then --clock enable D2lt=D1 D1lt=D0 D0lt=PA --delay 3 clocks PHA lt= (D0 and D1 and D2) or ((D0 or D1 or D2) and PHA) end if end if end process -- combinational logic CE lt= CLK1M --15MHz clock end block FILTER_A 其中

1以 15MHz的頻率為控制基準 2利用延遲電路依序產生 D0D1D2的延遲訊號 3連續三個 1(D0D1D2 都是 1)定義為 1連續三個 0(D0D1D2 都是 0)定義為 0而其他不連續的 10 都定義為雜訊如此可將高頻的雜訊濾除

4但是相對的AB相訊號的最高頻率將限制為 250KHz(連續 3個 1和連續 3個 0)頻率過高的 AAB相訊號將被視為雜訊而不處理必須特別注意

正反轉的解碼和計數

依據前面的公式說明對映的 VHDL 程式範例如下

DECODER block signal DLADLB STD_LOGIC begin process (CLK) -- sequential logic begin if CLKevent and CLK=1 then --CLK=gt1 trigger DLAlt=PHA DLBlt=PHB --delay 1-clock end if end if

16

end process -- combinational logic DIR lt= (not PHA and DLA and not PHB) or ( PHA and not DLA and PHB) or (not PHB and DLB and PHA) or ( PHB and not DLB and not PHA) PLS lt= (not PHA and DLA) or (PHA and not DLA) or (not PHB and DLB) or (PHB and not DLB) end block DECODER 其中

1PHAPHB為經過雜訊濾波後的 AB相訊號而 DLADLB是其延遲訊號 2根據乘四解碼電路的公式取得 DIR和 PLS訊號其中 DIR用以控制計數器的正反向 PLS用以控制計數器的計數與否

所以接下去就是正反計數器的設計範例如下

COUNTER block signal Q STD_LOGIC_VECTOR(11 downto 0) begin process (CLKRESET) -- sequential logic begin if RESET=1 then --power-on reset Qlt=000000000000 --reset to 0 elsif CLKevent and CLK=1 then --CLK=gt1 trigger if PLS=1 then --clock enable if DIR=1 then Qlt=Q-1 --down counter else Qlt=Q+1 --up counter end if end if end if end process -- combinational logic CNT lt= Q --counter output end block COUNTER 其中

1這是標準的正反計數器架構在開機時自動復歸 2計數器的長度為 12-bit可依需要自行調整

DCM模組中的光電盤精度為每圈500格經過乘四解碼後相當於每圈2000格所以12-bit

計數器只能處理 2 圈的應用範圍絕對不夠在真正應用時一定要用軟體或硬體的方

式再擴張成 16-bit 或是 32-bit 的寬度來處理才行

17

3實驗項目

在直流伺服馬達控制系統中規劃五個實驗項目由系統首頁做選擇每項實驗操

作整個系統實驗組成由各項實驗項目 CAI 檔及各項實驗項目程式連結 PLC 檔結合而成茲表列如下

直 流 伺 服 實 驗 e x p _d c m c ai

開 環 路 電 壓 控 制

系 統 首 頁 實 驗 程 序

e x p _p w m c ai

開 環 路 速 度 控 制 e x p _s p ee d c a i

閉 環 路 位 置 控 制 e x p _a n gl e c a i

加 減 速 的 位 置 控 制 e x p _a c c c ai

正 弦 波 位 置 控 制 e x p _s i n c ai

C A I 圖 控 檔

直 流 伺 服 實 驗 開 環 路 電 壓 控 制

系 統 首 頁 實 驗 程 序

e x p _p w m p lc

開 環 路 速 度 控 制 e x p _s p ee d p l c

閉 環 路 位 置 控 制 e x p _a n gl e p l c

加 減 速 的 位 置 控 制 e x p _a c c p lc

正 弦 波 位 置 控 制 e x p _s i n p lc

e T T Y 批 次 檔

18

4安裝程序

31 將 RFFPGA中的程式拷貝至工作硬碟中進入 DC子目錄資料夾中其中包含下

列檔案

檔案 內容說明 mod SIN_wave MODPWM_wave MODIIR1_filter MODDAS4

MODPOS_inputMODPWM_outputMODACC_controlMODPD_controlMOD這些檔案是由 ASM重新編譯出由 testDCMmem所需執行模組檔

asm SIN_waveasmPWM_waveasmIIR1_filterasmDAS4asm POS_inDCMasmPWM_outDCMasmACC_conDCMasmPD_controlasm是各模組組合語言所設計 SOURCE檔

plc 為進行實驗所需的各批次檔 bit piDSPv0bit為下載到 FPGA的 BIT檔其功能為將 FPGA規劃成

具備 piDSP控制晶片功能提供直流伺服控制所需的控制程式

撰寫 testDCMsys 記載進行 DCM實驗時所需的模組 testDCMMEM 連結完成的 DSP執行檔用來進行 DCM實驗 testDCMvar 紀錄 DCM實驗時的參數對照表

在進行實驗前先將實驗所需的系統程式與模組程式分別說明加以說明系統所

需的程式模組由 testDCMsys 來描述程式列印如下

module fg1 PWM_wavemod 方波產生器

module fg2 SIN_wavemod 弦波產生器

module cn1 ACC_controlmod 加減速控制器

module cn2 PD_controlmod 比例微分控制器

module io1 POS_inputmod 位置和速度讀值

module io2 PWM_outputmod PWM 電壓輸出界面

module ft1 IIR1_filtermod 一階濾波器

module das das4mod 示波器資料蒐集

module io3 LEDKEYmod LEDKEY 界面

其中包括

1兩組波型產生器作為測試命令包括正弦波和方波 2兩組控制器提供包括加減速PD控制器的功能可依照實驗需求搭配使用 3兩組輸入輸出界面執行 PWM輸出和相位回授的界面處理 4一組低通濾波器作為電壓開迴路控制迴路和速度閉迴路控制的模擬使用 5DAS4mod是示波器專用的配合模組不論任何實驗都必須加入此模組 6Ledmod是四位數字七段顯示與 44矩陣按鍵模組

19

5執行程序

首先進入 RFFPGA 裡子目錄 DC直接點選 fPLCexe 出現下面操作畫面(也可直接將此檔

案放置桌面直接點選)

進入下面操作畫面

20

首先使用滑鼠在 FPGA下載按鈕單擊動作使 FPGA變成 piDSP晶片 如您撰寫組合語言時可使用 eASM按鈕 經編譯完成後產生MOD檔 如您撰寫系統連結程式時可使用 eLINK按鈕 經連結完成後產生MEM與VAR檔 點選實驗三後顯示如下 選擇程式下載再按程式啟動這時直流伺服馬達開始做位置控制在操控畫面放置 P 參數設定欄更改參數時馬達即時隨參數改變而產生不同響應 直接點選程式停止時結束所有控制動作再按回首頁選擇其他實驗

21

6實驗說明

下圖所示為直流馬達的控制系統方塊圖透過電流速度以及位置的回授再搭

配適當的控制器可建立完整的閉迴路控制系統在後面的實驗中將依此一系統方塊圖

逐步建立速度和位置的控制實驗各實驗的說明和操作方式及參考實驗結果將逐一進

行詳細的說明

控制

參考位置

速度 位置速

度控制 電流控制

電力電

子換流

位置速

度感測

i

+ -

壓ν

位置

速度

i

DC直流馬達之控制系統方塊圖

PWM 驅動方式只是簡單的開環路控制而高精度的馬達控制必須透過回授控制來完成

對於邏輯電路的設計者而言必須先瞭解基本的回授控制架構以便將來轉換成實用的

邏輯電路設計

設計說明

開環路特性

在電壓驅動的狀況下直流馬達開環路控制的示意圖如下

+-

22

如果換算成數學模式則轉換成下面的架構

+-Vc

R L

EMF

+

-

ITB

J

ω

其中

1其中的變數和參數包括 Vc 控制的電壓命令 R 電樞迴路的等效電阻 L 電樞迴路的等效電感 EMF電樞產生的反電動勢 i 電樞迴路中的電流 T 馬達所產生的扭力 J 馬達和負載的等效慣量 B 馬達和負載的等效摩擦力 ω 馬達所產生的速度 2所牽涉的物理公式包括 電壓迴路Vc = Ri + L(didt) + EMF 即電樞迴路中的電壓平衡 動力負載T = Bω + J(dωdt) 即扭力平衡 馬達特性T = Kti 所產生的扭力和電流成正比 電機特性EMF= Keω 所產生的電動勢和轉速成正比 其中新增的參數包括 Kt馬達的扭力常數 Ke馬達的反電動勢常數 3將微分項作拉式轉換(Laplase Transformation)的對映即 s = ddt 可將微分方程式轉換成更簡單的代數方程式而產生到下面的控制方塊圖

sL+R1Vc

+-EMF

iKt

TsJ+B1 ω

Ke

4在直流馬達的開環路特性中控制電壓(Vc)時輸入點而馬達轉速(ω)是輸出點即是控制馬達電壓以控制馬達轉速

5基本上馬達的開環路特性是個兩階系統類似於低通濾波器的特性在許多應用 場合其開環路特性還可以再簡化成一階系統方塊圖如下

23

sτ +1

KmVc ω 其中 τ一階系統的時間常數 Km一階系統的穩態增益

採用兩階系統的分析方式雖然會比較精細但是用一階系統來分析則可簡化所有的設計

過程因為這裡的實驗重點是邏輯設計所以在本章中我們都用一階系統作分析

系統響應的要求

就控制系統而言最重要的需求就是系統響應包括

穩態特性通常以穩態誤差為指標即是穩態時系統輸出和輸入之間的差異 暫態特性通常以上升時間(Rise Time)和過越比率(Overshoot)為指標

一個理想中的伺服控制系統其系統響應應該是

1穩態誤差為 0即馬達輸出將追隨輸入作變化沒有誤差 2過越比例為 0即馬達輸出絕對不會產生衝過頭的現象 3上升時間為 0即馬達輸出隨時追上輸入命令不會有控制上的延遲現象

當然這是太理想了一個合理的伺服控制系統應該是

1穩態誤差越小越好最好為 0 2過越比例越小越好最好為 0 3上升時間越短越好當然無法為 0但是盡力就是了

速度的回授控制

回授控制的目的就是為了改善系統響應以一階系統代表的馬達控制為例

sτ+1

KmVc ω

在步階響應(Step Response)時其特性如下

1穩態誤差由 Km決定 2過越比例為 0 3上升時間即是其時間常數(τ)

如果用比例控制器(P 控制器)作速度回授的控制則控制方塊圖如下

sτ+1

KmVc ωKp

err

P控制器 直流馬達ωc

速度回授

速度命令 + 速度響應-

24

其中

1速度命令並不直接控制馬達的驅動電壓而是 A將速度命令和速度回授相比找出其誤差訊號 err B依誤差訊號來控制驅動電壓 誤差越大則驅動電壓越高 誤差越小則驅動電壓越低 誤差為負則驅動電壓也為負 其中的比例關係由 P控制器中的 Kp 來調整 2經由數學分析後其步階響應的特性為 A穩態誤差變成 1(1+kpkm)如果 kpkmgtgt1則穩態誤差將趨近於 0 B過越比例仍為 0 C上升時間即是由τ變成τ(1+kpkm)所以上升時間將變短 3換句話說只要 Kp值夠大不論是穩態誤差或是上升時間都會大幅改善

理論上P控制器的增益是越高越好最好是無限大但是實際上是有限制的原因是

1馬達的開環路特性是兩階系統而非一階系統一階系統只是簡化後的結果 2當兩階系統作高增益的回授控制時當增益過高時會產生極嚴重的過越現象使得

馬達產生巨幅震動而難以控制

所以 P控制器的增益雖然是越高越好但調整時仍要小心維持(過越比例為 0)的條件

轉角的回授控制

做為馬達的速度控制P控制器的效果不錯但是如果將 P控制器應用到馬達的轉角控

制其特性就不太理想圖示如下

sτ+1

KmVc ωKp

err

P控制器 直流馬達

θc

轉角回授

轉角命令 + 轉角響應-

s1 θ

其中

1從馬達的速度到轉角之間具有積分特性即 馬達的轉角是馬達速度的積分結果而 馬達的速度是馬達轉角的微分結果而 2其中的積分特性使得整個系統由一階特性變成兩階特性在兩階系統中當設定高

增益時會產生極嚴重的過越現象使得馬達產生巨幅震動而難以控制 3在 P控制器增益無法提高的狀況之下轉角控制效果將無法獲得改善

雖然 P控制器在轉角控制上的效果並不好但是在控制系統中還是有許多法寶可以選擇

25

其中 PD 控制器就是簡單又有效的一個好方法

從表面上來看PD 控制器比 P控制器多了一個微分項就數學上來看這微分項提供了

一個新零點(Zero)可以調整根軌跡圖的走向就實驗上來說這微分項提供了控制器

的預測功能說明如下

sτ+1

KmVc ωKp+sKd

err

P控制器 直流馬達

θc

轉角回授

轉角命令 + 轉角響應-

s1 θ

1轉角控制中 P控制器的問題是在嚴重的過越現象原因是在 P控制器的作用下只有當回授超過命令時才能做出「負向」的控制但這時已經來不及了因為積分器

中已經累積了過多的能量而無法立刻消失使得馬達轉角衝過了頭 2解決之道就是在回授超過命令之前就必須做出「負向」的控制使得積分器累積

的能量逐步減弱在到達目標時才能立刻煞車才能解除過越現象 3而微分項就是這個預測量因為當誤差量越來越小時其微分項是負值雖然微分

項(D)是負值 當誤差量(P)很大時(P+D)的結果還是正值所以還是「正向」控制 當誤差量(P)漸小時(P+D)的結果變成負值才會開始「負向」控制 換句話說在誤差為 0之前即可啟動負向控制產生煞車作用使得馬達提前減速

而即時停止在目標點上自然就解除過越現象了

所以在 PD 控制器中有兩項調整量其中

1Kp增益提供比例控制部分的增益而 Kd增益提供微分控制部分的增益 2Kp增益控制馬達的趨近速度主要影響的是上升時間 3Kd增益控制馬達的提前煞車主要影響的是過越比例 4在兩者搭配下就有機會得到 很快很短的上升時間同時也 不會產生過越現象

PD 控制器的執行

依據 PD 控制器公式可以建立以數位執行的 PD 控制器如下圖所示

cmdKp

fdk

+

-

err

old

+-

Kd

Z-1

out+

+

26

其中

1利用差分公式來取代 PD控制器中的微分公式定義如下 s ==gt (1-Z-1)DT 其中對映的變數包括 s 微分項 Z-1延遲一個抽樣週期 DT抽樣週期單位為 sec 2就執行面而言Z-1是延遲一個抽樣週期也就是以抽樣週期所控制的暫存器 3在上圖中將命令(cmd)和回授(fdk)相減後得到誤差值(err)再將 err延遲一個抽樣週期成為 old所以(err-old)DT即是微分項

4原始的微分控制公式為(err-old)DTKd必須先除再乘但是因為 DT和 Kd 都是常

數可以預先將 Kd修正成 Kd=(KdDT)那麼公式將修正為(err-old)Kd就只需要一個乘法而不需要除法了

同樣的 PD 控制器可以用許多不同的方法作執行包括

1以軟體方式執行例如在 DSP核心中以組合語言撰寫控制模組 2以硬體方式執行例如在 FPGA中直接設計邏輯電路 3以微碼方式執行以微碼作順序控制執行硬體運算工作

這裡先提供用組合語言撰寫的程式模組作為設計參考其他兩種方法將在後續的實驗中

再陸續作說明

模組程式範例PD_controlasm

local cmd R0 IP gnd 輸入點位置命令(可忽略) local fdk R1 IP gnd 輸入點位置回授(可忽略) local out R2 OP 輸出點用以控制速度迴路 local kp R3 256 參數增益 kp10=256 local kd R4 0 參數增益 kd10=256 local err R5 0 內部變數 local old R6 0 內部變數 local gnd R7 0 無輸入時的短路點 data 8 模組變數區長度 initial 開機啟動程序 WR out0 WR old0 RET out=old=0 timer 即時控制程序 RD (cmd) SUB (fdk) WR err MUL kp SFR 8 P=(cmd-fdk)kp256 RDS err SUBX old MUL kd SFR 8 D=(err-old)kd256 ADDS WR out out=P+D RET

27

其中

1PD控制模組中對外的界面變數包括 cmd命令的輸入點 fdk回授的輸入點 out控制的輸出點 2內部參數包括 Kp比例控制增益其中 10=256所以乘完後還需要再右移 8-bit Kd微分控制增益其中 10=256所以乘完後還需要再右移 8-bit 3內部變數包括 err臨時性的變數用以儲存誤差值的計算結果 old儲存性的變數用以儲存上一次抽樣控制時的 err值 4模組程式分成三部分包括 變數宣告local和data所宣告的部分 初值設定initial程序中先將 out和 old設定為 0 即時控制timer程序中依序執行 PD控制器中的每個步驟

控制目標的選擇

從字面上來看速度控制就是控制馬達的速度轉角控制就是控制馬達的轉角沒什麼

好討論的但是實際上確有許多問題第一的問題就是什麼是速度和轉角馬達的速

度和轉角如果不作量測如何得知

既然在量測中取得了速度和轉角資料那麼我們所控制的到底是物理學上的速度和轉

sτ+1

KmVc ωKp+sKd

err

P控制器 直流馬達

θc

轉角回授

轉角命令 + 轉角響應-

s1 θ

KxANG

轉角量測

角還是量測上的速度和轉角以下圖為例

其中

1以轉角量測裝置量測轉角例如裝在馬達軸端的光電盤和解碼電路 2轉角的量測輸出是 ANG而 ANG和物理轉角θ之間有 Km的增益關係 3只要 Km值不是 1那麼系統就不再是單位回授 4如果 Km還有非線性或失真現象那麼控制結果也將有非線性或失真現象

這些問題混雜起來會使得控制系統的分析變得更複雜如果要簡單處理就要認同現

實環境直接以量測結果為控制目標如下圖所示

28

sτ+1

KmVc ωKp+sKd

err

P控制器 直流馬達

θc

轉角回授

+-

s1 θ Kx

ANG轉角量測

其中

1直接以量測結果為控制目標將全系統還原成標準的單位回授控制 2所有的非線性或失真現象都進入開環路討論屬於可以補償的部分 3但是控制結果就是「量測上的轉角」而「物理學上的轉角」

量測誤差的問題

轉角θ

量測ANG

對於量測誤差而言最明顯的問題就是量化誤差圖示如下

其中

1以 DCM模組中的光電盤為例精度為每圈 500格經由乘四解碼計數後其等效

精度增加為每圈 2000格 2比(12000)圈更精密的部分都無法響應換句話說振幅越大的控制其相對誤差越

小而振幅越小的控制其相對誤差越大例如 當振幅為(12)圈時其控制誤差量為 01而 當振幅為(120)圈時其控制誤差量為 1 這是標準的的非線性現象

量化誤差不只影響穩態上的精度還會造成非線性的震動問題圖示如下

t

誤差值

+1

-1

其中

1由於量化誤差的問題只有當誤差超過+1或是-1時才會真正偵測到誤差也才

29

會施加控制量作補償 2所以穩態時的誤差將在+1-1之間擺動造成微幅的振動 3量化誤差越大震動越明顯而量化誤差很小時通常不易察覺出震動現象

微分量的計算

伺服系統中有兩處需要用到微分計算包括

1PD控制器中誤差微分量的計算 2速度控制器中速度回授值的量測

在理論上微分公式是(dXdt)相當於 dXdt = (X(n)-X(n-1))DT (當 DT趨近於 0時)

所以當微分計算中的抽樣週期(DT)越短時微分的計算值將越接近理論值但是事實上

卻非如此以下圖為例

t

X

DTDX

其中

1當 X值為等速度運動時其微分量就是其斜率相當於 DXDT 2DT是微分計算中的抽樣週期理論上越短越好但是由於 DX本身的量化誤差

使得這個原則不再成立例如當斜率為 7394時 若 DT=1000則 DX=7394而 DXDT=7394 若 DT=100 則 DX=739 而 DXDT=739 若 DT=10 則 DX=73 而 DXDT=73 若 DT=1 則 DX=7 而 DXDT=7 3換句話說當抽樣週期越短時DX的量化誤差將越明顯而造成微分計算上更嚴

重的誤差

在 DCM 模組中速度量測的量化誤差分析如下

1馬達上的光電盤精度為每圈 500格經過乘四解碼後等效精度為每圈 2000格 2當馬達轉速為 1200RPM而抽樣頻率為 1KHz時對映的速度量測值為 1200(圈分)2000(格圈)60(秒分)1000(DT秒) = 40(格DT) 3換句話說1200RPM的轉速對映到 40的速度量測值即速度單位=30RPM若最

高轉速為 3000RPM則在+-3000RPM的速度範圍內其量化誤差為 05相當於8-bit的 ADC轉換器精度

4對映不同的抽樣頻率的量化誤差表列如下

30

光電盤精度 最高轉速 抽樣頻率 速度單

速度範圍 量化誤差

500PPR 3000RPM 1KHz 30RPM +-100 05 500PPR 3000RPM 2KHz 60RPM +-50 1 500PPR 3000RPM 4KHz 120RPM +25 2

過溢現象的處理

輸入

輸出

32767

-32768

整數運算都有數值範圍限制以 16-bit 整數而言輸入輸出的關係如下

其中

1當超過正負數的上下限時數值會正負顛倒例如 +32768 將會視為 -32768作處理而 +32769 將會視為 -32768作處理依此類推 2換句話說16-bit的整數運算只有在+-32767之間是線性的對映關係而超過這個範圍就是非線性的對映關係

3不但如此還因為正負顛倒的現象使得原來設計的負回授控制將變為正回授控制

而產生非線性的震盪現象 4換句話說只要計算上稍一不慎就會使得原先穩定的系統產生不穩定的震盪結果

為了避免過溢現象所造成的不穩定問題通常控制系統中會利用飽和處理作改善圖示

如下

輸入

輸出

lmtH

lmtL

31

其中

1當超過計算的上限時將固定設為上限值處理而當超過計算的下限時也將固定

設為下限值處理 2這時的整數運算只有在上下限之間是線性的對映關係而超過這個範圍將還是非線

性的對映關係 3雖然如此但是因為沒有正負顛倒的現象所以不再會有負回授變為正回授的問題

而避免了非線性的震盪現象 4換句話說飽和處理是針對過溢現象的妥協處理方案雖然不完全理想但是是可

接受的最佳選擇

下面是對映的組合語言範例

RD x x為輸入端 MIN lmtH 取得 x和 lmtH中的較小值即是作上限保護的工作 MAX lmtL 取得 x和 lmtL中的較大值即是作下限保護的工作 WR y Y為輸出端 其中

1組合語言中提供MAX和MIN的計算其中 MIN lmtH 比較 AX暫存器和 lmtH而將較低值存入 AX暫存器中 MAX lmtL 比較 AX暫存器和 lmtH而將較高值存入 AX暫存器中 2所以直接可用MIN指令作上限保護而以MAX指令作下限保護兩者合併後即是

完整的飽和處理結果

飽和處理通常應用在高位數轉成低位數的場合例如32-bit轉換成16-bit或是16-bit

轉換成 12-bit 等等例如在本實驗中所有的運算都是以 16-bit 整數作處理但是到

PWM 驅動級輸出時卻要轉換成 12-bit精度的 PWM 命令所以必須先用飽和處理以避免

過溢現象造成的不穩定問題

32

61 實驗 1-開迴路的電壓控制 實驗說明以電壓直接控制轉速的開迴路特性可簡化為一階系統處理方塊圖如

sτ+1

v km ωm

其中V 送給驅動器的 PWM電壓命令

ωm馬達的轉動速度可由處理 photo encoder信號所得的位置微分而得 km一階系統的穩態增益 τ一階系統的時間常數即步階響應中的上升時間

為了觀測直流馬達的開環路特性建立下面的測試方塊圖

其中

1所使用的模組包括 FG1方波產生器產生所需的步階測試波形 FT1馬達模擬以一階系統的低通濾波器來執行 IO1光電盤的回授處理可同時取得轉角和速度的量測值 IO2PWM電壓驅動直接驅動直流馬達作控制 Led四位數字七段顯示模組顯示波形信號資料 2測試目標有兩項(P 參數設定欄)包括 A調整方波命令控制直流馬達作開環路的 PWM電壓控制 B調整馬達模擬參數使模擬結果和實驗結果相符以確認開環路特性

33

實驗畫面顯示如下

測試一 開環路的電壓控制 記錄頻道 CH1電壓命令Y1=-300DY=500 CH2模擬速度Y2=-100DY=500 CH3馬達速度Y3=100DY=50 CH4馬達轉角Y4=300DY=50000 實驗參數 FG1kAMP=256電壓命令的測試振幅 FG1kFRQ=150電壓命令的測試頻率 FT1DT =10 馬達模擬參數 FT1KA =500馬達模擬參數

其中

1用示波器功能記錄四個頻道其中 CH2和 CH3重疊顯示以比較模擬速度和量測

速度之間的差異 2由於 Km 不等於 1所以必須調整 CH3的 Y軸單位才能使得 CH2和 CH3的穩態響應部分重疊

3實驗時可以改變 FG1的參數以調整測試方波的振幅和頻率 4可以調整 FT1的參數使得 CH2和 CH3的暫態響應部分重疊

根據實際的測試結果分析如下

2馬達模擬的參數調整到 DT=10而 KA=500根據公式 τ = 40961000dtka 所以上升時間(τ)為 0082秒或是 82ms 3CH2CH3的 Y軸單位並不一致顯然 Km 不等於 1經計算確認 Km=0098

對應之 plc檔程式說明(exp_pwmplc) echo off 畫面顯示開始

run dsp 0 選擇 DSP1

run stop run reset 既有程式停止

run testDCMmem 下載指定程式

das 1 ampfg1out 0 1024 PWM 波形 Volt 設定 DAS 頻道1

das 2 ampft1lp 0 1024 馬達模擬 Volt 設定 DAS 頻道2

das 3 ampio1spd 0 1024 馬達速度 Volt 設定 DAS 頻道3

das 4 ampio1ang 0 1024 馬達角度 Volt 設定 DAS 頻道4

plot select 0 設定示波器頁數

plot xunit 100000 0 設定示波器 X軸

plot yunit 1 500 -300 設定示波器 Y1 軸

34

plot yunit 2 500 -100 設定示波器 Y2 軸

plot yunit 3 50 100 設定示波器 Y3 軸

plot yunit 4 50000 300 設定示波器 Y4 軸

plot trigger 1 0 1 10 設定示波器觸發

plot scope 9 1 2 3 4 設定示波器顯示

module io2 設定 io2 模組

s cmd ampfg1out

module fg1 設定 fg1 模組

s kAmp 256 s kFrq 150

module ft1 設定 ft1 模組

s u ampfg1out s dt 10 s ka 500

module io3 設定 io3 模組

s led ampfg1out

module 回復預設模組

run 1khz 設定抽樣頻率為 4KHz

run start DSP 開始執行

das stop pause 1 DAS 啟動 das start DAS 啟動

echo on 回復正常訊息顯示

使用者可視情況調整一階濾波器的 ka和 dt值使得 ch2和 ch3 兩組波形完全相符

以求得開迴路系統近似的一階轉移函數 CAI操控設計畫面規劃如下(EXP_PWMCAI) page 1 畫面設計

35

page 2 畫面設計 page 3 畫面設計

36

實測響應圖

訊 號 說 明 訊 號 說 明 ch1 方波產生器訊號 ch3 一階濾波器輸出信號 ch2 馬達角速度訊號 ch4 馬達角位置訊號

直流馬達之開迴路電壓控制響應圖

37

以邏輯分析功能觀測直流馬達之光電盤輸入與 PWM輸出信號

38

62 實驗 2-閉迴路的速度控制 實驗說明為了觀測閉迴路的速度控制響應建立下面的測試方塊圖

加入 PD控制後系統閉迴路的轉移函數經適度的簡化仍能約略以一階系統

處理方塊圖如下

sτ+1

u km ωm

其中

u 送給控制器的速度命令

ωm馬達的轉動速度可由處理 photo encoder 信號所得的位置微分而得

km一階系統的穩態增益 τ一階系統的時間常數即步階響應中的上升時間

方塊圖中的模組功能說明如下

1用 fg1 產生測試用的方波速度命令

2將方波速度命令和速度回授訊號送到 PD 控制器方塊中產生電壓控制訊號再透

過 io2 模組將訊號送出給伺服介面

3用 ft1 建立對照用的一階系統可用 IIR1濾波器方塊產生

4將方波命令產生速度命令再觀測 PHT(io1)上的速度值 spd

5調整 IIR1濾波器的參數使得兩組波形完全相符這時 IIR1濾波器就是閉迴路

速度控制的特性其中 km 為增益而τ為上升時間(單位為 sec)

6增益 km 可從示波器中作簡單計算而上升時間(τ=40964000dtka)

7 Led四位數字七段顯示模組顯示波形信號資料

39

對應之 plc檔程式說明(exp_speedplc) echo off 畫面顯示開始

run dsp 0 選擇 DSP1

run stop run reset 既有程式停止

run testDCMmem 下載指定程式

das 1 ampfg1out 0 1024 PWM 波形 Volt 設定 DAS 頻道1

das 2 ampft1lp 0 1024 馬達模擬 Volt 設定 DAS 頻道2

das 3 ampio1spd 0 1024 馬達速度 Volt 設定 DAS 頻道3

das 4 ampio1ang 0 1024 馬達角度 Volt 設定 DAS 頻道4

plot select 0 設定示波器頁數

plot xunit 100000 0 設定示波器 X軸

plot yunit 1 50 -300 設定示波器 Y1 軸

plot yunit 2 50 -100 設定示波器 Y2 軸

plot yunit 3 50 100 設定示波器 Y3 軸

plot yunit 4 50000 300 設定示波器 Y4 軸

plot trigger 1 0 1 10 設定示波器觸發

plot scope 9 1 2 3 4 設定示波器顯示

module io2 設定 io2 模組

s cmd ampcn2out

module fg1 設定 fg1 模組

s kAmp 50 s kFrq 150

module cn2 設定 cn1 模組

s cmd ampfg1out s fdk ampio1spd s kp 0x4000

module ft1 設定 ft1 模組

s u ampfg1out s dt 2 s ka 320

module io3 設定 io3 模組

s led ampfg1out

module 回復預設模組

run 1khz 設定抽樣頻率為 4KHz

run start DSP 開始執行

das stop pause 1 DAS 啟動 das start DAS 啟動

echo on 回復正常訊息顯示

CAI操控設計畫面規劃如下(EXP_speedCAI)

40

page 1 畫面設計 page 2 與 page 3 畫面設計與實驗一 page 2 與 page 3相同畫面 page 4 畫面設計

41

方塊的參數設定 使用者可視情況調整一階濾波器的 ka和 dt值使得 ch2和 ch3 兩組波形完全相符

以求得此一閉迴路系統近似的一階轉移函數或調整 PD控制器中的 kp和 kp值以調整系統之響應 實測響應圖

訊 號 說 明 訊 號 說 明 ch1 方波產生器產生之速度命令 ch3 一階濾波器輸出信號 ch2 馬達角速度訊號 ch4 馬達角位置訊號

42

直流馬達之閉迴路速度控制響應圖

43

63 實驗 3-閉迴路的位置控制 實驗說明為了觀測閉迴路的位置控制響應將直流馬達的回授改為位置訊號

建立下面的測試方塊圖 方塊圖中的模組功能說明如下

1用 fg1產生測試用的方波位置命令 2將方波位置命令和位置回授訊號送到 PD控制器方塊中產生電壓控制訊號再透過 io2模組將訊號送出到伺服介面驅動馬達轉動

對應之 plc檔程式說明(exp_angleplc) echo off 畫面顯示開始

run dsp 0 選擇 DSP1

run stop run reset 既有程式停止

run testDCMmem 下載指定程式

das 1 ampfg1out 0 1024 PWM 波形 Volt 設定 DAS 頻道1

das 2 ampft1lp 0 1024 馬達模擬 Volt 設定 DAS 頻道2

das 3 ampio1spd 0 1024 馬達速度 Volt 設定 DAS 頻道3

das 4 ampio1ang 0 1024 馬達角度 Volt 設定 DAS 頻道4

plot select 0 設定示波器頁數

plot xunit 100000 0 設定示波器 X軸

plot yunit 1 1000 -300 設定示波器 Y1 軸

plot yunit 2 1000 -100 設定示波器 Y2 軸

plot yunit 3 20 100 設定示波器 Y3 軸

plot yunit 4 1000 300 設定示波器 Y4 軸

plot trigger 1 0 1 10 設定示波器觸發

44

plot scope 9 1 2 3 4 設定示波器顯示

module io2 設定 io2 模組

s cmd ampcn2out

module fg1 設定 fg1 模組

s kAmp 1000 s kFrq 75

module cn2 設定 cn1 模組

s cmd ampfg1out s fdk ampio1ang s kp 0x300 s kd 0x4000

module ft1 設定 ft1 模組

s u ampfg1out s dt 2 s ka 320

module io3 設定 io3 模組

s led ampfg1out

module 回復預設模組

run 1khz 設定抽樣頻率為 4KHz

run start DSP 開始執行

das stop pause 1 DAS 啟動 das start DAS 啟動

echo on 回復正常訊息顯示

CAI操控設計畫面規劃如下(EXP_angleCAI) page 1 畫面設計

45

page 2 與 page 3 畫面設計與實驗一 page 2 與 page 3相同畫面 page 4 畫面設計與實驗二 page 4 畫面 方塊的參數設定 延續上一實驗的說明使用者可以調整 PD控制器中的 kp和 kd值以調整系統之

響應 實測響應圖

訊 號 說 明 訊 號 說 明 ch1 方波產生器產生之位置命令 ch3 馬達角速度訊號 ch2 馬達角位置 ch4 Pd控制器輸出之電壓訊號

46

直流馬達之閉迴路位置控制響應圖

47

64 實驗 4-加減速的位置控制 實驗說明為避免方波命令的過於嚴苛在方波命令的輸出加入一加減速控制功

能方塊以減緩命令變化的幅度增加馬達運動的平順建立的測試方塊圖如下

方塊圖中的模組功能說明如下

1用 fg1產生測試用的方波位置命令 2將方波位置命令送到加減速控制方塊處理後產生新的位置命令再將新的位置命

令與位置回授訊號送到 PD控制器方塊中產生電壓控制訊號最後透過 io2模組將訊號送出到伺服介面驅動馬達轉動

對應之 plc檔程式說明(exp_accplc) echo off 畫面顯示開始

run dsp 0 選擇 DSP1

run stop run reset 既有程式停止

run testDCMmem 下載指定程式

das 1 ampfg1out 0 1024 PWM 波形 Volt 設定 DAS 頻道1

das 2 ampcn1out 0 1024 加速控制 Volt 設定 DAS 頻道2

das 3 ampio1spd 0 1024 馬達速度 Volt 設定 DAS 頻道3

das 4 ampio1ang 0 1024 馬達角度 Volt 設定 DAS 頻道4

plot select 0 設定示波器頁數

plot xunit 100000 0 設定示波器 X軸

plot yunit 1 2000 -300 設定示波器 Y1 軸

plot yunit 2 2000 -100 設定示波器 Y2 軸

plot yunit 3 50 100 設定示波器 Y3 軸

plot yunit 4 2000 300 設定示波器 Y4 軸

48

plot trigger 1 0 1 10 設定示波器觸發

plot scope 9 1 2 3 4 設定示波器顯示

module io2 設定 io2 模組

s cmd ampcn2out

module fg1 設定 fg1 模組

s kAmp 2000 s kFrq 150

module cn1 設定 cn1 模組

s cmd ampfg1out

module cn2 設定 cn2 模組

s cmd ampcn1out s fdk ampio1ang s kp 0x300 s kd 0x4000

module ft1 設定 ft1 模組

s u ampfg1out s dt 2 s ka 320

module io3 設定 io3 模組

s led ampfg1out

module 回復預設模組

run 1khz 設定抽樣頻率為 4KHz

run start DSP 開始執行

das stop pause 1 DAS 啟動 das start DAS 啟動

echo on 回復正常訊息顯示

CAI操控設計畫面規劃如下(EXP_accCAI) page 1 畫面設計

49

page 2 畫面設計與實驗一 page 2相同畫面 page 3 畫面設計與實驗二 page 4相同畫面

參數設定參考之前各實驗的說明可線上機動性的調整 PD控制器中的 kp和 kd值以調整系統之響應 實測響應圖

訊 號 說 明 訊 號 說 明 ch1 方波產生器產生之位置命令 ch3 馬達角位置 ch2 加減速模組輸出之位置命令 ch4 馬達角速度訊號

50

圖一 直流馬達經加減速控制後之閉迴路控制響應圖

51

65 實驗 5-正弦波的位置控制 實驗說明在本實驗中改變命令的波形由方波改變為正弦波並建立如下的測

試方塊圖與上一實驗相比較僅更改命令的波形產生方塊 方塊圖中的模組功能說明如下 1用 fg2產生測試用的弦波位置命令 2將弦波位置命令送到加減速控制方塊處理後產生新的位置命令再與 io1 讀入的位

置回授訊號送到 PD 控制器方塊中產生電壓控制訊號再透過 io2 模組將訊號送出到伺服介面驅動馬達轉動

對應之 plc檔程式說明(exp_sinplc) echo off 畫面顯示開始

run dsp 0 選擇 DSP1

run stop run reset 既有程式停止

run testDCMmem 下載指定程式

das 1 ampfg2out 0 1024 SIN 波形 Volt 設定 DAS 頻道1

das 2 ampcn1out 0 1024 加速控制 Volt 設定 DAS 頻道2

das 3 ampio1spd 0 1024 馬達速度 Volt 設定 DAS 頻道3

das 4 ampio1ang 0 1024 馬達角度 Volt 設定 DAS 頻道4

plot select 0 設定示波器頁數

plot xunit 100000 0 設定示波器 X軸

plot yunit 1 2000 -300 設定示波器 Y1 軸

plot yunit 2 2000 -100 設定示波器 Y2 軸

plot yunit 3 50 100 設定示波器 Y3 軸

plot yunit 4 2000 300 設定示波器 Y4 軸

plot trigger 1 0 1 10 設定示波器觸發

52

plot scope 9 1 2 3 4 設定示波器顯示

module io2 設定 io2 模組

s cmd ampcn2out

module fg2 設定 fg1 模組

s kAmp 2000 s kFrq 100

module cn1 設定 cn1 模組

s cmd ampfg2out

module cn2 設定 cn2 模組

s cmd ampcn1out s fdk ampio1ang s kp 0x300 s kd 0x4000

module ft1 設定 ft1 模組

s u ampfg2out s dt 2 s ka 320

module io3 設定 io3 模組

s led ampfg2out

module 回復預設模組

run 1khz 設定抽樣頻率為 4KHz

run start DSP 開始執行

das stop pause 1 DAS 啟動 das start DAS 啟動

echo on 回復正常訊息顯示

CAI操控設計畫面規劃如下(EXP_sinCAI) page 1 畫面設計

53

page 2 畫面設計 page 3 畫面設計與實驗二 page 4相同畫面

方塊的參數設定可調整 PD控制器中的 kp和 kd值以調整系統之響應 實測響應圖

訊 號 說 明 訊 號 說 明 ch1 弦波產生器產生之位置命令 ch3 馬達角位置訊號 ch2 加減速模組輸出之位置命令 ch4 馬達角速度訊號

54

直流馬達之閉迴路弦波加減速位置控制響應圖

55

7組合語言說明

本節將針對 DC馬達伺服控制實驗專用的程式模組進行功能與程式碼的說明其

有關於波形產生器與資料擷取模組等說明如下

SIN_waveasm 正弦波產生器 PWM_waveasm 方波產生器 IIR1_filterasm 一階濾波器 DAS4asm 資料蒐集模組

弦波產生器

此模組會產生週期性的正弦波方塊圖如下

outfrq

kBiasbias

ampkAmp

kFrqth

kThf=1TB

θ

A

其中

1正弦波有四個參數振幅(A)頻率(F)相位(θ)和偏移(B)其公式為 out = A sin(2πF t +θ) + B 2對於單純的正弦波產生器所對映的參數包括 kAmp 振幅值 kFrq 頻率值kFrq=655368000Hz其中 Hz的範圍為 0~4000例如 1000Hz =gt frq=8192 100Hz =gt frq=819 10Hz =gt frq=82 1Hz =gt frq=8 kTh 相角值0~255代表 0~360的相位當 th=0 時為正弦波 th=64 時為餘弦波 th=128時為反相波依此類推 kBias偏移值 3對於可調變的正弦波產生器其對映的輸入點為 amp 控制振幅的輸入點可產生調幅(AM)波形 frq 控制頻率的輸入點可產生調頻(FM)波形 th 控制相位的輸入點可產生調相(PM)波形 bias控制偏移的輸入點可產生雙頻混波(相加)波形 4若不使用調變功能時各個輸入點時的預設值為 amp 指向 kAmp 的位址 frq 指向 kFrq 的位址

56

th 指向 kTh 的位址 bias指向 kBias的位址

模組程式範例SIN_WAVEasm

local amp R0 IP kAmp 輸入點sin波的振幅 local frq R1 IP kFrq 輸入點sin波的頻率 local th R2 IP kTh 輸入點sin波的相角 local bias R3 IP kBias 輸入點sin波的中心偏移 local out R4 OP 輸出點sin波輸出 local tab R5 TP 表格指標指向 sin[256]的表格 local ang R6 內部變數相位角65536=360deg local kAmp R7 1000 參數振幅值 local kFrq R8 1000 參數頻率值=655368000Hz local kTh R9 0 參數相角值360deg=256 local kBias R10 0 參數偏移值 data 11 模組變數區長度及初值 initial 啟動程序 WR ang0 WR out0 ang=out=0 RET timer 即時控制程序(8KHz) RD ang ADD (frq) WR ang ang+=frq SFR 8 ADD (th) AND 255 ACC=sin(ang256+th) ADD tab WRH RDM table-look-up MUL (amp) SFR 12 ADD (bias) WR out out=ACCamp4096+bias RET table tab 256 sin[256]表格區10=4096 0 101 201 301 401 501 601 700 00~070deg 799 897 995 1092 1189 1285 1380 1474 08~0F 1567 1660 1751 1842 1931 2019 2106 2191 10~17 2276 2359 2440 2520 2598 2675 2751 2824 18~1F 2896 2967 3035 3102 3166 3229 3290 3349 20~27 3406 3461 3513 3564 3612 3659 3703 3745 28~2F 3784 3822 3857 3889 3920 3948 3973 3996 30~37 4017 4036 4052 4065 4076 4085 4091 4095 38~3F 4096 4095 4091 4085 4076 4065 4052 4036 40~4790deg 4017 3996 3973 3948 3920 3889 3857 3822 48~4F 3784 3745 3703 3659 3612 3564 3513 3461 50~57 3406 3349 3290 3229 3166 3102 3035 2967 58~5F

57

2896 2824 2751 2675 2598 2520 2440 2359 60~67 2276 2191 2106 2019 1931 1842 1751 1660 68~6F 1567 1474 1380 1285 1189 1092 995 897 70~77 799 700 601 501 401 301 201 101 78~7F 0 65435 65335 65235 65135 65035 64935 64836 80~87180deg 64737 64639 64541 64444 64347 64251 64156 64062 88~8F 63969 63876 63785 63694 63605 63517 63430 63345 90~97 63260 63177 63096 63016 62938 62861 62785 62712 98~9F 62640 62569 62501 62434 62370 62307 62246 62187 A0~A7 62130 62075 62023 61972 61924 61877 61833 61791 A8~A8 61752 61714 61679 61647 61616 61588 61563 61540 B0~B7 61519 61500 61484 61471 61460 61451 61445 61441 B8~BF 61440 61441 61445 61451 61460 61471 61484 61500 C0~C7270deg 61519 61540 61563 61588 61616 61647 61679 61714 C8~CF 61752 61791 61833 61877 61924 61972 62023 62075 D0~D7 62130 62187 62246 62307 62370 62434 62501 62569 D8~DF 62640 62712 62785 62861 62938 63016 63096 63177 E0~E7 63260 63345 63430 63517 63605 63694 63785 63876 E8~EF 63969 64062 64156 64251 64347 64444 64541 64639 F0~F7 64737 64836 64935 65035 65135 65235 65335 65435 F8~FF

就程式結構而言說明如下

timer 即時控制程序(8KHz) RD ang ADD (frq) WR ang ang+=frq SFR 8 ADD (th) AND 255 ACC=sin(ang256+th) ADD tab WRH RDM table-look-up MUL (amp) SFR 12 ADD (bias) WR out out=ACCamp4096+bias RET

1基本上我們以查表法計算 sin()其輸入θ的範圍為 0~255對映到 0~360deg其輸出 sin(θ)的範圍為+-4096對映到+-10的範圍

2建立一個內部變數 ang其範圍為 0~65535對映到 0~360的相位角 3每個timer程序都執行 ang+=frq的動作更新目前的相位角接著依照 ang的相位角查表得到 sin(ang256+th)值

4由於表格長度為 256-word所以必須將 ang256才能得到正確的對映關係而 th範圍為 0~255所以不需要像 ang一般的做額外處理

5sin()的範圍為(+1-1)而在表格中以(+4096~-4096)的型式記錄相當於 10=4096所以執行 Asin()時還要用 SFR12指令做4096的動作才能正確的取得輸出值

58

6就頻率輸入 frq而言其計算原則是將θ=ωt轉化成θ=Σ(ωdt)因為抽樣頻率

為 8KHz所以 dt=18000而得到 frq=655368000Hz公式其中 Hz為真正的頻率在 8KHz的抽樣頻率下其範圍為 0~4000

鋸齒波產生器

此模組會產生週期性的鋸齒波方塊圖如下

outfrq

kBiasbias

ampkAmp

kFrqth

kThf=1TB

θ

A

其中

1鋸齒波也有四個參數振幅(A)頻率(F)相位(θ)和偏移(B)和正弦波的定義完全一致唯一的差異是其輸出為鋸齒波而非正弦波

2基本波形是從週期開始時為 0一直遞增到週期結束時到達最高點然後立刻回歸

到 0重新開始 3以程式結構而論鋸齒波程式幾乎就是正弦波的相位計算部分只差沒有正弦波的

查表處理而已

模組程式範例SAW_WAVEasm

local amp R0 IP kAmp 輸入點sin波的振幅 local frq R1 IP kFrq 輸入點sin波的頻率 local th R2 IP kTh 輸入點sin波的相角 local bias R3 IP kBias 輸入點sin波的中心偏移 local out R4 OP 輸出點sin波輸出 local ang R5 內部變數相位角65536=360deg local kAmp R6 1000 參數振幅值 local kFrq R7 1000 參數頻率值=655368000Hz local kTh R8 0 參數相角值360deg=256 local kBias R9 0 參數偏移值 data 11 模組變數區長度及初值 initial 啟動程序 WR ang0 WR out0 ang=out=0 RET timer 即時控制程序(8KHz) RD ang ADD (frq) WR ang ang+=frq SFR 8 ADD (th) AND 255 ACC=(ang256+th)amp0x00ff MUL (amp) SFR 8 ADD (bias) WR out out=ACCamp256+bias

59

RET

脈衝波產生器

outfrq

kBiasbias

ampkAmp

kFrqth

kThf=1TB

θ

A

pwm

kDutyduty

此模組會產生週期性的脈衝波方塊圖如下

其中

1脈衝波有五個參數其中振幅(A)頻率(F)相位(θ)和偏移(B)四個參數和正弦波

定義完全一樣另外再增加一個負載率(D) 2基本波形是從週期開始時為 1隔段時間後換為 0然後持續到週期結束再重新開始其中 1所佔有的比例就是負載率當 D=0時為 0而 D=255時為 100

3和其他參數類似負載率(D)以 duty為其輸入點而以 kDuty為其參數值

模組程式範例PLS_WAVEasm

local amp R0 IP kAmp 輸入點脈衝波的振幅 local frq R1 IP kFrq 輸入點脈衝波的頻率 local th R2 IP kTh 輸入點脈衝波的相角 local bias R3 IP kBias 輸入點脈衝波的中心偏移 local duty R4 IP kDuty 輸入點脈衝波的負載率 local out R5 OP 輸出點脈衝波輸出 local ang R6 內部變數相位角65536=360deg local kAmp R7 1000 參數振幅值 local kFrq R8 1000 參數頻率值=655368000Hz local kTh R9 0 參數相角值360deg=256 local kBias R10 0 參數偏移值 local kDuty R11 128 參數負載率100 =256 data 12 模組變數區長度及初值 initial 啟動程序 WR ang0 WR out0 ang=out=0 RET timer 即時控制程序(8KHz)

60

RD ang ADD (frq) WR ang ang+=frq SFR 8 ADD (th) AND 255 ACC=(ang256+th)amp0x00ff SUB (duty) RD (amp) JLT t1 RD 0 ACC=(amp0) t1 ADD (bias) WR out out=ACC+bias RET

IIR 一階濾波器

此模組執行一階的 IIR濾波器方塊圖如下

kau x

Z-1

+

+

-

+低通濾波器

高通濾波器dx lp

hp

濾波器參數的計算公式如下

1假設濾波器的頻寬為 hz則 ωn=hz628 2若系統頻率為 8KHz則抽樣週期 dT為 dT=dt8000 其中 dt為模組參數 3則濾波器參數為 ka=ωndT4096或是 =hzdt62880004096即 =hzdt32 4當 dt決定後所允許的訊號頻寬為(4000dt)換句話說訊號頻寬會因為 dt增加而下降

為了方便實驗的運用下面列出常用的參數對照表

濾波頻寬

(Hz)

10 20 50 100 200 500 1000 2000

訊號頻寬

(Hz)

400 800 2000 4000 4000 4000 4000 4000

模組參數 dt 10 5 2 1 1 1 1 1

模組參數 ka 320 320 320 320 640 1600 3200 6400

表格的運用方式如下

1首先決定濾波頻寬 2接著查表找出對映的參數 dt和 ka 3再查表得到對映的訊號頻寬以決定是否需要串接前級濾波器

61

模組程式範例IIR1_FILTERasm

local u R0 IP 輸入點濾波器輸入 local lp R1 OP 輸出點低通濾波器輸出 local hp R2 OP 輸出點高通濾波器輸出 local dt R3 1 參數抽樣週期 local ka R4 4096 參數增益 ka10=4096 local prd R5 內部變數抽樣週期用 data 6 模組變數區長度 initial 開機啟動程序 WR lp0 WR hp0 WR prd1 RET lp=hp=0prd=1 timer 即時控制程序 SUB prd1 JNZ b9 if (--prdgt0) return RD dt WR prd prd=dt RD (u) SUB lp WR hp hp=u-lp MUL ka SFR 12 ADD lp WR lp lp+=(hpka4096) b9 RET

資料蒐集模組

資料蒐集模組是一個非常特殊的模組專門配合 eTTY 程式中的示波器使用

模組程式範例DAS4asm

local cmd R0 0 紀錄命令0=停止1=前置記錄2=正觸發4=負觸發6=觸發記錄 local dt R1 1 抽樣週期每 dT抽樣一次 local tab R2 TP DAS表格啟始位址 local cnt R3 0 目前記錄點(0~255) local ch1 R4 0 定義頻道1的變數位址 local ch2 R5 0 定義頻道2的變數位址 local ch3 R6 0 定義頻道3的變數位址 local ch4 R7 0 定義頻道4的變數位址 local trg R8 0 定義觸發頻道的變數位址 local th R9 0 觸發準位 local tail R10 0 觸發後的抽樣個數 local buf R11 1 抽樣計數(1~dt) local pnt R12 表格位址計算pnt=tab+cnt4 local len R13 表格長度計算(0~256) data 14 定義模組變數區的長度 table tab 1024 定義表格的長度 initial 啟動程序 WR cmd0 RET cmd=0 timer 控制程序

62

ADD cmd0 JZ t9 if (cmd==0) return SUB buf1 JNZ t9 if (--buf)gt0) return RD dt WR buf dt=buf RD cnt ADD 1 AND 0xff WR cnt cnt=(cnt+1)amp0xff SFL 2 ADD tab WR pnt pnt=tab+cnt4 RD (ch1) WR (pnt) ADD pnt1 pnt++=ch1 RD (ch2) WR (pnt) ADD pnt1 pnt++=ch2 RD (ch3) WR (pnt) ADD pnt1 pnt++=ch3 RD (ch4) WR (pnt) pnt =ch4 RD cmd SUB 1 JZ t9 SUB 1 JZ t2 SUB 1 JZ t3 SUB 1 JZ t4 SUB 1 JZ t5 SUB 1 JZ t6 JR t7 t2 RD (trg) SUB th JGE t9 ADD cmd1 JR t9 wait trgltth t3 RD (trg) SUB th JLE t9 JR t6 wait trggtth t4 RD (trg) SUB th JLE t9 ADD cmd1 JR t9 wait trggtth t5 RD (trg) SUB th JGE t9 JR t6 wait trgltth t6 WR len0 WR cmd7 len=0cmd=7 t7 ADD len1 SUB tail JLT t9 WR cmd0 if ((++len)gt=0x80) cmd=0 t9 RET

與 DC 馬達控制相關的程式模組有以下 4個程式模組說明如下

(1)加減速控制模組 ACC_controlasm (2)光電盤輸入模組 POS_inputasm (3)PWM輸出模組 PWM_outputasm (4)PD控制模組 PD_controlasm

71加減速控制模組 此程式模組主要功能在於執行位置控制的加減速命令修正其數學模式採用 Lynn

濾波器的架構參見下圖

cmd

2

+

old Z -1

-

Z -1

Z -1

Z-1

Z-1x0 x1 x8 x9 x16

+ -

++

2

Z-1

Z-1 y1 y2

+

-

y0

+ +

sumZ-1

+164

12

out

dif

+

63

加減速控制模組方塊圖

其中

1Lynn 濾波器的階數固定成八階也就是 m=8其公式為 H(z) = (1-2Z-m+Z-2m)(1-2Z-1+Z-2)m2

2因為m=8所以m2=64因此最後計算低通濾波的部份時要先做除 64的運算 3因為低通濾波(lp)和 y0之間有 64倍的差異代表 y0y1y2的變化範圍比濾波器輸

入值要擴大許多例如輸入值在+-1000變化時y0y1y2很可能會在+-64000之間變化這範圍已經超出整數處理的範圍很可能會造成錯誤的計算結果

4所以在實驗時輸入值的變化範圍必須控制在+-500之間以保證計算的正確性 5對於 Lynn 濾波器當 m=8時其濾波器的頻寬固定為 1 kHzmdt也就是 dt=1時頻寬為 125 Hz dt=2時頻寬為 625Hz依此類推 6對於 Lynn 濾波器其濾波器的延遲固定為 m個抽樣週期因此設計 hp = x8 - lp 即可得到高通濾波器的對應結果 7其中乘 2和除 64的運算以移位運算取代所以整個程式中並無任何乘法運算 8Lynn 濾波器本身並不是穩定濾波器所以在程式啟動時必須確實的將所有狀態

(x0~x16)歸零否則會產生不穩定的狀態輸出

因為 Lynn濾波器中所有參數固定所以除了抽樣週期 dt 之外並無任何可調參數

抽樣週期 dt 可以控制頻寬dt 越大則濾波器頻寬越低

將步階命令值的輸出送入 Lynn 濾波器中經由低通濾波器的效應可以減緩命

令的變化程度達到加減速控制的目的以下為使用 Lynn 濾波器型式實現加減速控

制的組合語言程式列印 如欲更進一步瞭解 Lynn 濾波器與 FIR 數位濾波器之間的關係可以參考通訊實驗

四數位濾波器設計(FIR)中之說明

ACC_controlasm程式列印 local cmd R0 IP 輸入點位置命令

local out R1 OP 輸出點加減速處理後的位置命令

local dif R2 OP 輸出點位置微分命令

local axis R3 0 馬達編號0=X1=Y2=Z3=C

local old R4 內部變數微分計算用

local sumL R5 內部變數積分計算用

local sumH R6 內部變數積分計算用

local y0 R7 內部變數y(0~2)

local y1 R8 local y2 R9

local x0 R10 內部變數x(0~16)

local x1 R11 local x2 R12 local x3 R13 local x4 R14

local x5 R15 local x6 R16 local x7 R17 local x8 R18

local x9 R19 local x10 R20 local x11 R21 local x12 R22

local x13 R23 local x14 R24 local x15 R25 local x16 R26

64

data 27 模組變數區長度

initial 開機啟動程序

WR dif0 RD (cmd) WR out WR old dif=0 out=old=cmd

sumHL=cmd64

SFL 6 WR sumL RD out SFR 10 SGN 5 WR sumH

RPT 17 WR x00 RPT 3 WR y00 RET x[0~16]=0y[0~2]=0

timer 即時控制程序

RD (cmd) SUBX old WR x0 x0=cmd-old old=cmd

SUB x81 ADD x16 ADD y11 SUB y2 WR y0 y0=x0-2x8+x16+2y1-y2

SGN ADD sumL WR sumL RDH ADC sumH WR sumH sumHL+=y0

WRH RD sumL SFR 6 WR out out=sumHL64

RD y0 SGN SFR WR dif dif=y032mm

RD x0 RPT 16 RDX x1 x[i]=x[i-1] i=1~16

RD y0 RDX y1 WR y2 y[i]=y[i-1] i=1~2

b9 RET

72光電盤輸入模組

DC馬達的位置由光電盤量測之預設儲存於 0xac與 0xbe二個輸入埠位址中其中位址 0xac記錄 X軸馬達的位置位址 0xbe記錄 Y軸馬達的位置由於本實驗的DC馬達接在 Y軸的位置上因此程式中直接選用 Y軸的輸入 光電盤位置輸入的程式列印如下其中速度由位置的差分而得至於馬達的位置

則使用內部 2個 word加以記錄精度為 32位元 POS_inputasm程式列印 local spd R0 OP 輸出點速度量測值

local ang R1 OP 輸出點角度量測值

local angH R2 內部變數角度的 32 位元部分

local mode R3 0x308 模式選擇15MHzAB 相正反向輸入

local pht R4 0xac 輸入阜地址光電盤輸入(0xac)

local phtc R5 0xbe 輸入阜地址光電盤模式(0xbe)

local old R6 內部變數速度更新用

data 7 模組變數區長度

initial 開機啟動程序

RD mode WR (phtc) phtc=mode

RD (pht) WR old WR spd0 RET old=phtspd=0

timer 即時控制程序

RD (pht) SUBX old SGN 11 WR spd spd=(pht-old)old=pht

65

ADD ang WR ang angHL+=spd

RDH ADC angH WR angH

RET

73 PWM輸出控制模組 模組方塊

cmd PWM輸出

程式說明 1在開機時將切換保護時間寫到輸出阜 0xbc上其中切換保護值為 0~6360=5us 2在每次 timer interrupt時將 cmd訊號處理後寫到輸出阜 0xb8上

PWM_outputasm程式列印 local cmd R0 IP gnd 輸入點v相命令

local gain R1 4096 參數輸出增益1=4096

local bias R2 2048 參數輸出偏壓0=2048

local limit R3 4095 參數輸出極限1=4095

local zone R4 0x88f0 參數頻率=12KHz切換保護=5us

local pwm R5 0xb8 輸出阜地址PWM0 輸出(0xb8)

local mode R6 0xbc 輸出阜地址PWM 模式(0xbc)

local p0md R7 0xf8 輸出阜地址port0 模式(0xf8)

local gnd R8 0 輸入接地點

data 9 模組變數區長度

initial 開機啟動程序

RD bias WR (pwm) pwm=bias

RD 0xffff WR (p0md) set port0 mode

RD zone WR (mode) RET mode=zone

stop 關機保護程序

RD bias WR (pwm) RET pwm=bias

timer 即時控制程序

RD (mode) xor 1 and 1 WR (mode) trigger watch-dog

RD (cmd) MUL gain SFR 12 ADD bias ACC=(cmdgain4096)+bias

MAX 0 MIN limit WR (pwm) pwm=limit(ACC)

RET

66

74 PD 控制模組

PD控制的模組方塊參見圖二十一所示其中比例控制的部份直接由增益 kp加以調整微分控制的部份則由誤差的差分經增益 kd的調整而得

Σ+

-

cmd

fdk

err out

Σ

pk

dk

Σ

+

+

+

-

old1minusZ

PD控制器的方塊圖

PD_controlasm程式列印 local cmd R0 IP gnd 輸入點位置命令(可忽略)

local fdk R1 IP gnd 輸入點位置回授(可忽略)

local out R2 OP 輸出點用以控制速度迴路

local kp R3 256 參數增益 kp10=256

local kd R4 0 參數增益 kd10=256

local err R5 0 內部變數

local old R6 0 內部變數

local gnd R7 0 無輸入時的短路點

data 8 模組變數區長度

initial 開機啟動程序

WR out0 WR old0 RET out=old=0

timer 即時控制程序

RD (cmd) SUB (fdk) PRTF WR err

MUL kp SFR 8 P=(cmd-fdk)kp256

RDS err SUBX old MUL kd SFR 8 D=(err-old)kd256

ADDS

WR out out=P+D

RET

程式中預設增益值的 10以整數值 256為基底因此使用 SFR 8的指令加以調

整另外在在計算微分項的程式部份用到 SUBX old的指令其詳細的暫存器動作如

下 參考 piDSP的指令說明SUBX指令將總共用到 3個時序參考錯誤 找不到參照

67

來源在時序 1時將原先 AX的資料拷貝一份到 HX中時序 2時正式執行減

法的動作所以 AX暫存器中的內容會變成 err-old時序 3時DSP會將存放在 HX暫存器中的內容拷貝一份到 old的記憶體中也就是經由 SUBX此一精簡指令將

同時完成計算差分所需要的相減與資料疊代的動作有效的利用 piDSP控制器 DSP核心的精簡指令將可以大幅提昇系統的計算速度

HX AXoldSUBXerr err

old

err

errerr olderr minus

1_err

errerr olderr minus err

1_err

1

2

3

SUBX的指令時序與暫存器變化

68

8附錄快速安裝說明

光纖網路通訊 FPGA 發展系統 (適用於 WIN-XP200098 系統)

快速安裝說明

26Pin 負載輸出入埠

雙電源︵5

12

伏︶輸入埠

單電源︵5

伏︶輸入埠

USB

光纖線輸

號 光纖線輸出埠

入 傳 埠

首先將光碟片 RFFPGA 目錄檔案拷貝在您工作硬碟裡面

第一次安裝時先將 USB 傳輸線接上電腦主機將電源供應器接上 FPGA 模組此時電

腦會出現安裝 USB-Serial 驅動程式選擇從清單安裝此驅動程式放置在光碟片

RFFPGA-USBdrive 選擇您目前安裝系統

可選擇 WIN-98WIN-MEWIN-2000WIN-XP 系統配合您現在工作電腦作業系統

69

注意一般電腦 USB 埠很多插口當您安裝驅動程式時是配合您當時插入之埠

下次如您插入不同接口埠時電腦會再次要求安裝驅動程式這是正常現象請再次安

裝驅動程式否則無法使用

FPLC 操作

首先進入 RFFPGA裡子目錄 testASM直接點選 fPLCexe 出現下面操作畫面(也可直接將

此檔案放置桌面直接點選)

(或者選擇 File 再執行 Setuphellip 選擇您要執行 CAI 檔)

70

進入下面操作畫面 首先使用滑鼠在 FPGA下載按鈕單擊動作使 FPGA變成 DSP晶片 實驗一至實驗五皆為使用 DSP組合語言設計程式其原始程式分別為 testASM1至testASM5可使用 texPad 開啟與編輯程式內容 實驗三與實驗五多有 IO控制動作 當選擇實驗三時出現下面畫面

71

eM_USB 模組

數字型 LED

0 1 2 34 5 6 78 9 A BC D E F

燈號型 LED

44 鍵盤

ADC0 ADC1 DAC0 DAC1

LED 選擇KEY 選擇

模 式 1

0123

注意操作畫面 3與 4 說明開關與按鍵選擇位置後選擇程式下載再按程式啟動如您

按下 0-3按鍵時燈號型 LED會有不同方向閃爍顯示程式停止時結束所有 IO控制動作再按回首頁選擇其他實驗 實驗四與實驗五

模式3

0 1 2 34 5 6 78 9 A BC D E F

按照上面開關選擇直接操作如果以上實驗皆能按照正常操作表示您光纖網路通訊

FPGA發展模組以能正常使用 注意 開機與關機動作順序如下

開機電腦啟動 --- eM_USB 模組電源接上 --- USB 接上電腦 ---

啟動 FPLC 軟體 --- 下載 FPGA 程式

關機關閉 FPLC 軟體 --- eM_USB 模組電源拔掉 --- 拔掉電腦 USB 接頭 ---關掉

電腦

如果以上順序有亂可能造成 USB 找不到驅動造成無法下載經過幾次測試還是

無法下載建議重新啟動電腦主機按照正確步驟操作

72

FPGA 下載操作

進入 FPLC 操作系統按照下列步驟選擇節點模組與下載 bit FPGA 檔案

在 VHDLDEMO 子目錄下您可以選擇您目前 FPGA 種類型號在此型號下我們已將 VHDL

與數位邏輯設計課本範例全部放於此處

73

光纖網路連線 FPGA 下載操作

首先利用光纖線將 eM_USB0 模組光纖輸出埠接至 eM_USB1 模組光纖輸入埠以此

類推最後再將最後 eM_USBN 模組光纖輸出埠接至 eM_USB0 模組光纖輸入埠配置

如附圖方式

個人電腦(Windows) eM_USB模組

0USB

eM_USB模組1

光纖網路

eM_USB模組2

eM_USB模組N

配置完成後進入 FPLC 系統首先必須先將 Node00 下載在 testASM 子目錄裡

piDSPv0bit 檔讓 eM_USB0 模組 FPGA 具備 DSP 功能才能執行光纖網路通訊

操作如下

此時您就可以選擇分別下載至各模組 FPGA 檔 bit

74

安裝 FPLC 注意事項

當您進入 FPLC 時

按 FILE 選擇 programhellip 選擇檔案為 exp_dcmplc 出現下面畫面

正常顯示畫面為

75

DOS 環境操作

在 PC 端的操作是在 Windows 環境中的 DOS 視窗中執行指令範例如下

eFPGA progNETbit 下載 FPGA電路至網路節點0(即 USB節點)中 eFPGA testLEDbit 1 下載 FPGA電路至網路節點1中

對於單一節點的控制程序如下

1將 eM_USB模組連結個人電腦的 USB端 2eM_USB模組開機 3執行下載指令即可 eFPGA xxxxbit 4若要更改 FPGA電路只要重新執行下載指令即可

對於多個網路節點的控制程序如下

1第一組 eM_USB模組連結個人電腦的 USB端再以光纖網路依序其他各節點 2連接 USB界面者為模組0從光纖發射端連接出去的模組為1依此類推 3將所有 eM_USB模組開機 4執行下載指令如下 eFPGA progNETbit 模組0必須先下載指定的 FPGA電路 eFPGA xxxxbit 1 再依序下載其他網路模組的 FPGA電路 eFPGA yyyybit 2 eFPGA zzzzbit 最後再重新下載模組0的 FPGA電路 5換句話說模組0必須先執行 progNETbit讓光纖網路接受 FPGA控制後才能透過光纖網路下載至其他節點等全部網路節點下載完畢後再將模組0的 FPGA重新下載讓模組0也可自由執行任意的 FPGA電路

6若要更改某一個網路節點中的 FPGA電路只要重新執行下述指令 eFPGA progNETbit 模組0必須先下載指定的 FPGA電路 eFPGA yyyybit 2 下載指定網路模組的 FPGA電路 eFPGA zzzz bit 最後再重新下載模組0的 FPGA電路 換句話說除非模組0中的 FPGA已經包括光纖網路管理電路否則一定要先在

模組0中下載網路管理電路後才能下載指定網路節點的 FPGA電路

76

光纖網路通訊 FPGA 發展系統

系統配置

光纖網路通訊 FPGA 發展系統的系統配置圖如下

個人電腦(Windows) eM_USB模組

0USB

eM_USB模組1

光纖網路

eM_USB模組2

eM_USB模組N

其中

1基本模組為 eM_USB模組可用 USB界面和個人電腦連線並提供 USB對光纖網路的轉換功能使得個人電腦可以獨立控制光纖網路中的每個網路節點

2eM_USB模組也可以作為光纖網路中的網路節點透過光纖網路而接受個人電腦的

監控 3就個人電腦而言不論是 USB界面直接連結或是以光纖網路間接連結的 eM_USB模組都是可以直接監控的網路節點最多可以同時控制一個 USB節點和 30個網路節點

4對於每一個網路節點個人電腦都可執行 eM_USB模組中 FPGA的電路下載工作並在適當的 FPGA電路配合下可執行 eM_USB模組中 FPGA內部電路的讀寫控制 5透過適當的 FPGA電路設計各網路節點都可透過光纖網路和其他任何網路節點

作同步通訊執行 FPGA內部記憶體的資料交換資料交換頻率可達 1KHz以上

77

網路模組配置

每個網路模組的標準配置圖如下

eM_USB模組光纖網路

USB eM_FPGA卡

eM_DEMO模組

eM_EXP實驗模組

DC電源

其中

1網路模組以 eM_USB模組為主提供基本的 USB界面和光纖網路連線 2eM_USB模組中的 FPGACPLD採用插卡型式可選擇不同的 eM_FPGA卡包括

eM_2V1K卡可選用 Virtex系列的 XC2V250和 XC2V1000 eM_3S1K卡可選用 Spartan3系列的 XC3S400XC3S1000和 XC3S1500 eM_3S50卡可選用 Spartan3系列的 XC3S50XC3S200和 XC3S400 eM_95XL卡可選用 9500XL系列的 XC95144XL和 XC95288XL 3eM_USB模組中的對外連線有兩種一種是 26P接頭用以連接既有的各種實驗模

組另一種是兩組 50P接頭將 FPGA中各接腳引出用以連接專題實驗 4eM_DEMO模組就是插上 50P接頭的教學模組其中包括 LED 數字顯示和 44鍵盤也具備兩組的 ADC和兩組的 DAC接頭提供類比訊號的測試工具

常用的實驗組合包括

1精簡組合包括(eM_USB+eM_FPGA)提供基本的網路節點適用於專題實驗 2標準組合包括(eM_USB+eM_FPGA+eM_DEMO)提供基礎 FPGA設計的教學實驗

3實驗組合包括(eM_USB+eM_FPGA+eM_DEMO+eM_EXP)提供進階的 FPGA實驗可依需求選用不同的實驗模組

78

eM_USB 模組

eM_USB 模組的電路配置圖如下

TxRx

DCPower

USB

JP2

JP3

光纖界面

外加電源

PC連線

JP1

eM_FPGA模組

FT232 CPLD FlashROM

SRAM

10cm

6cm

JP4

其中

1對外的連線接頭包括 DC電源 可選擇單電源(5V)或是多電源(5V+12V-12V)兩種 USB界面 直接連接個人電腦 光纖界面連接光纖網路 2實驗界面包括 JP1負責內部 CPLD的電路下載 JP2JP3兩組 50P的擴張用接頭 JP4 標準 26P接頭用以連接各種實驗模組 3內部的電路配置包括 A以 SO-DIMM接頭連接各種 eM_FPGA卡 B內附 EEPROMFlashROM和 SRAM提供 FPGA作應用測試 C以一顆 FT232BM作為 USB界面解碼而以一顆 CPLD作為光纖網路解碼 D提供各種 eM_FPGA卡的電路下載功能 4內附五顆 LED由上而下依序為 usbLED指示 USB界面的讀寫狀態 tstLED可由 FPGA電路自行定義 stsLED可由 FPGA電路自行定義 RxLED 可由 FPGA電路自行定義 TxLED 可由 FPGA電路自行定義

79

外部接腳定義

外部接頭的接點順序圖示如下

上視圖

JP11 9 JP4

126225

JP31

50249

JP21

50249

而各接頭的接點定義如下

JP1 JP4 JP2 JP3 1+33V 1+12V 2+12V 1 GND 2 GND 1 GND 2 GND 2GND 3 ADC 4 DAC 3POWER 4ALARM 3 +5V 4 +5V 3nc 5 yPB2 6 yPB3 5RxNET 6TxNET 5+12V 6+12V 4TCK 7 yPB1 6 yPB4 7RxUSB 6TxUSB 7-12V 6-12V 5nc 9 yPB0 10yPB5 9RxCAN 10TxCAN 9 ADC 10 DAC 6TDO 11yPB6 12yPB7 11P0D0 12P0D1 11P1D0 12P1D1 7TDI 13yGND 14yPC3 13P0D2 14P0D3 13P1D2 14P1D3 8nc 15yPC2 16yPC1 15P0D4 16P0D5 15P1D4 16P1D5 9TMS 17yPC0 18yPA0 17P0D6 18P0D7 17P1D6 18P1D7 19yPA1 20yPA2 19P0D8 20P0D9 19P1D8 20P1D9 21yPA3 22GND 21P0D10 22P0D11 21P1D10 22P1D11 23GND 24+5V 23P0D12 24P0D13 23P1D12 24P1D13 25+5V 26nc 25P0D14 26P0D15 25P1D14 26P1D15 27P2D0 28P2D1 27PxA0 28PxA1 29P2D2 30P2D3 29PxA2 30PxA3 31P2D4 32P2D5 31PxA4 32PxA5 33P2D6 34P2D7 33PxA6 34PxA7 35P2D8 36P2D9 35PxB0 36PxB1 37P2D10 38P2D11 37PxB2 38PxB3 39P2D12 40P2D13 39PxB4 40PxB5 41P2D14 42P2D15 41PxB6 42PxB7 43ADC0 44ADC1 43PxC0 44PxC1 45ADC2 46ADC3 45PxC2 46PxC3 47ADC4 48ADC5 47PxC4 48PxC5 49DAC0 50DAC1 49PxC6 50PxC7

80

eM_FPGA 模組

在各種 eM_FPGA 模組中FPGA 對外電路的標準配置圖如下

24576MHz

FlashROM

26PSRAM

EEPROM

mD[8]

yPA[4]

FPGACPLD

mA[19]mRDmWRmCSeeCKeeCSeeDIeeDO

光纖界面 RxNETTxNET

USB 界面 RxUSBTxUSBCLK24MPOWERALARM

LED

tstLEDstsLEDRxLEDTxLED

yPB[8]yPC[4]

ADCDAC

ADC[8]

實驗模組

ADC[2]

DAC[2]

xPA[4]

xPB[8]

xPC[4]

基礎實驗

其中

1FPGACPLD可以選擇下述幾種 XC2V250XC2V1000 採用 eM_2V1K模組其中 FPGA為 FG456包裝 XC3S400XC3S1000XC3S1500採用 eM_3S1K模組其中 FPGA為 FG456包裝 XC3S400XC3S1000XC3S1500採用 eM_3S1K模組其中 FPGA為 FG456包裝 XC3S50XC3S200XC3S400 採用 eM_3S50模組其中 FPGA為 TQ144包裝 XC95144XLXC95288XL 採用 eM_95XL模組其中 CPLD為 TQ144包裝 2採用 FG456包裝者可以控制所有的 IO界面 3採用 TQ144包裝者只是不能控制 RAM和 FlashROM而可以控制其他所有的界面 4所有 FPGA模組都可自由選擇由 USB界面或是由光纖界面下載電路但是 CPLD模組只能固定由 USB界面下載電路

5所有 FPGACPLD模組都可透過 26P接頭連接既有的各種實驗模組

81

FPGA 接腳對照表

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

mD0 XD6 mD0 A17 C13 -- -- mD1 XD7 mD1 B17 D12 -- -- mD2 XD8 mD2 C17 D11 -- -- mD3 XD9 mD3 D17 C11 -- -- mD4 XD10 mD4 E17 D10 -- -- mD5 XD11 mD5 E16 C10 -- -- mD6 XD12 mD6 E14 D9 -- -- mD7 XD13 mD7 E13 D7 -- -- mA0 XD14 mA0 D13 C7 -- -- mA1 XD15 mA1 C13 D6 -- -- mA2 XA0 mA2 V5 C3 -- -- mA3 XA1 mA3 U5 C4 -- -- mA4 XA2 mA4 Y2 D3 -- -- mA5 XA3 mA5 Y1 D4 -- -- mA6 XA4 mA6 V4 E3 -- -- mA7 XA5 mA7 V3 E4 -- -- mA8 XA6 mA8 W2 F3 -- -- mA9 XA7 mA9 W1 F4 -- -- mA10 XA8 mA10 T2 G6 -- -- mA11 XA9 mA11 T1 K3 -- -- mA12 XA10 mA12 R4 K10 -- -- mA13 XA11 mA13 R3 L3 -- -- mA14 XA12 mA14 R2 L4 -- -- mRD XRD mRD R1 D5 -- -- mWR XWR mWR P6 C6 -- --

POWER P0A0 POWER B4 B20 P1 P5 ALARM P0A1 ALARM A4 A19 P2 P6 RxNET P0A2 RxNET C4 B19 P4 P7 TxNET P0A3 TxNET C5 A18 P5 P9 RxUSB P0B0 RxUSB B5 A15 P6 P10 TxUSB P0B1 TxUSB A5 B15 P7 P11 RxCAN P0B2 RxCAN D6 A14 P8 P12 RxCAN P0B3 TxCAN C6 B14 P10 P13

CLK24M CLK24M CLK24M E12 B12 P124 P38

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

PWM0H P3A0 P0D0 E6 A8 P21 P23 PWM0L P3A1 P0D1 E5 B8 P23 P24 PWM1H P3A2 P0D2 C2 B6 P24 P25 PWM1L P3A3 P0D3 C1 A5 P25 P26 PWM2H P3A4 P0D4 D2 B5 P26 P27

82

PWM2L P3A5 P0D5 D1 A4 P27 P28 PWMenb P3A6 P0D6 E4 B4 P28 P30 PHT1Z P3A7 P0D7 E3 A3 P30 P31 PHT1A P3B0 P0D8 G2 C1 P31 P32 PHT1B P3B1 P0D9 G1 C2 P32 P33 PHT0A P3B2 P0D10 H5 D1 P33 P34 PHT0B P3B3 P0D11 J6 D2 P35 P35 AMP0 P3B4 P0D12 H4 E1 P36 P39 AMP1 P3B5 P0D13 H3 E2 P40 P40 AMP2 P3B6 P0D14 H2 F2 P41 P41 AMP3 P3B7 P0D15 H1 G1 P44 P43 eeSK P0C3 P1D0 C10 B9 P20 P22 eeCS P0C2 P1D1 D10 A9 P18 P21 eeDI P0C1 P1D2 F10 B10 P17 P20 eeDO P0C0 P1D3 E10 B11 P15 P19 ssCK P0B7 P1D4 E8 A11 P14 P17 ssCS P0B6 P1D5 E7 A12 P13 P16 ssDI P0B5 P1D6 A6 B13 P12 P15 ssDO P0B4 P1D7 B6 A13 P11 P14

ppCLK P3C0 P1D8 K4 G2 P46 P44 ppDIN P3C1 P1D9 K3 K1 P47 P45 TxD P3C2 P1D10 K2 K2 P50 P46 RxD P3C3 P1D11 K1 L1 P51 P48

tstLED P3C4 P1D12 L5 L2 P52 P49 stsLED P3C5 P1D13 L4 M1 P53 P50 RxLED P3C6 P1D14 L3 M2 P55 P51 TxLED P3C7 P1D15 L2 N1 P56 P52

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

xPA0 P2A0 P2D0 AA3 N2 P59 P53 xPA1 P2A1 P2D1 Y4 T1 P60 P54 xPA2 P2A2 P2D2 AA4 T2 P63 P56 xPA3 P2A3 P2D3 AB4 U2 P68 P57 xPC0 P2A4 P2D4 W5 V1 P69 P58 xPC1 P2A5 P2D5 Y5 V2 P70 P59 xPC2 P2A6 P2D6 AA5 W1 P73 P60 xPC3 P2A7 P2D7 AB5 W2 P74 P61

-- P2B0 P2D8 V6 Y1 P76 P64 -- P2B1 P2D9 V7 Y2 P77 P66 -- P2B2 P2D10 W6 AA3 P78 P68

mCS P2B3 P2D11 Y6 AB4 P79 P69 mA15 P2B4 P2D12 V9 AA4 P80 P70 mA16 P2B5 P2D13 V10 AB5 P82 P71 mA17 P2B6 P2D14 W10 AA5 P83 P74 mA18 P2B7 P2D15 Y10 AA6 P84 P75 CS0 P2C0 ADC0 AA10 AB8 P85 P76

83

SDIN0 P2C1 ADC1 AB10 AA8 P86 P77 CS1 P2C2 ADC2 U10 AB9 P87 P78

SDIN1 P2C3 ADC3 U11 AA9 P89 P79 SCLK P2C4 ADC4 V11 AB10 P90 P80 CS2 P2C5 ADC5 W11 AA10 P92 P81

SDOUT P2C6 ADC6 Y11 AB11 P93 P82 LDAC P2C7 ADC7 AA11 AA11 P95 P83

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

xPB0 P1A0 PxA0 M1 M3 P135 P85 xPB1 P1A1 PxA1 M2 M4 P132 P86 yPB2 P1A2 PxA2 M3 N3 P131 P87 yPB3 P1A3 PxA3 M4 N4 P130 P88 yPB1 P1A4 PxA4 M5 T4 P129 P91 yPB4 P1A5 PxA5 M6 T5 P128 P92 yPB0 P1A6 PxA6 N1 U3 P127 P93 yPB5 P1A7 PxA7 N2 U4 P125 P94 yPB6 P1B0 PxB0 U13 V3 P119 P95 yPB7 P1B1 PxB1 V13 V4 P118 P96 xPB2 P1B2 PxB2 W13 W3 P116 P97 xPB3 P1B3 PxB3 Y13 W4 P113 P98 xPB4 P1B4 PxB4 AA13 Y3 P112 P100 xPB5 P1B5 PxB5 AB13 Y4 P96 P101 yPC3 P1B6 PxB6 U12 Y5 P97 P102 yPC2 P1B7 PxB7 V12 W5 P98 P103 yPC1 P1C7 PxC0 AB17 W11 P108 P113 yPC0 P1C6 PxC1 AA17 Y11 P107 P112 yPA0 P1C5 PxC2 Y17 W10 P105 P111 yPA1 P1C4 PxC3 W17 Y10 P104 P110 yPA2 P1C3 PxC4 AB18 W9 P103 P107 yPA3 P1C2 PxC5 AA18 W8 P102 P106 xPB6 P1C1 PxC6 Y18 W6 P100 P105 xPB7 P1C0 PxC7 W18 Y6 P99 P104

84

eM_DEMO 模組

eM_DEMO 模組的電路配置圖如下

eM_USB 模組

數字型 LED

0 1 2 34 5 6 78 9 A BC D E F

燈號型 LED

44 鍵盤

ADC0 ADC1 DAC0 DAC1

LED 選擇KEY 選擇

其中

1eM_DEMO模組的基本功能包括 A將 xPAxPBxPC等 16個 IO訊號引出控制 LED和鍵盤電路 B將 ADDA訊號引出並放大成+-10V的工作範圍 2LED和鍵盤可以選擇三種模式由 LED和 KEY 兩組開關作選擇圖示如下

模式1

0123

模式2 模式3

0 1 2 34 5 6 78 9 A BC D E F

0123

3模式14鍵輸入並搭配 16點的 LED燈號顯示其中 16點 LED分別對映到 xPA[0~3]xPB[0~7]和 xPC[0~3] 4組按鍵分別對映到 xPC[0~3] 4模式24鍵輸入並搭配四個 7段式數字顯示其中 數字顯示由 xPA[0~3]作數字掃瞄而由 xPB[0~7]作 7段式 LED控制 4組按鍵 分別對映到 xPC[0~3] 5模式316鍵輸入並搭配四個 7段式數字顯示其中 數字顯示由 xPA[0~3]作數字掃瞄而由 xPB[0~7]作 7段式 LED控制 16組按鍵由 xPA[0~3]作鍵盤掃瞄而由 xPC[0~3]作鍵盤讀取 6根據VHDL與數位邏輯設計的章節其中 第 1章至 10章的實驗採用模式1而 第 11章實驗採用模式2而 第 12章之後的實驗都採用模式3

85

FPGA UCF 定義

eM_3S1K 模組

NET CLK LOC = B12

NET XAlt0gt LOC = N2

NET XAlt1gt LOC = T1

NET XAlt2gt LOC = T2

NET XAlt3gt LOC = U2

NET XBlt0gt LOC = M3

NET XBlt1gt LOC = M4

NET XBlt2gt LOC = W3

NET XBlt3gt LOC = W4

NET XBlt4gt LOC = Y3

NET XBlt5gt LOC = Y4

NET XBlt6gt LOC = W6

NET XBlt7gt LOC = Y6

NET XClt0gt LOC = V1

NET XClt1gt LOC = V2

NET XClt2gt LOC = W1

NET XClt3gt LOC = W2

NET YAlt0gt LOC = W10

JP4 接頭

NET YAlt1gt LOC = Y10

NET YAlt2gt LOC = W9

NET YAlt3gt LOC = W8

NET YBlt0gt LOC = U3

NET YBlt1gt LOC = T4

NET YBlt2gt LOC = N3

NET YBlt3gt LOC = N4

NET YBlt4gt LOC = T5

NET YBlt5gt LOC = U4

NET YBlt6gt LOC = V3

NET YBlt7gt LOC = V4

NET YClt0gt LOC = Y11

NET YClt1gt LOC = W11

NET YClt2gt LOC = W5

NET YClt3gt LOC = Y5

在光碟片中 RFFPGAVHDLDEMOBIT3S1K 裡有 VHDL 與數位邏輯設計書本範例原始檔與合成檔

86

eM_3S50 模組

NET CLK LOC = P124

NET XAlt0gt LOC = P59

NET XAlt1gt LOC = P60

NET XAlt2gt LOC = P63

NET XAlt3gt LOC = P68

NET XBlt0gt LOC = P135

NET XBlt1gt LOC = P132

NET XBlt2gt LOC = P116

NET XBlt3gt LOC = P113

NET XBlt4gt LOC = P112

NET XBlt5gt LOC = P96

NET XBlt6gt LOC = P100

NET XBlt7gt LOC = P99

NET XClt0gt LOC = P69

NET XClt1gt LOC = P70

NET XClt2gt LOC = P73

NET XClt3gt LOC = P74

NET YAlt0gt LOC = P105

JP4 接頭

NET YAlt1gt LOC = P104

NET YAlt2gt LOC = P103

NET YAlt3gt LOC = P102

NET YBlt0gt LOC = P127

NET YBlt1gt LOC = P129

NET YBlt2gt LOC = P131

NET YBlt3gt LOC = P130

NET YBlt4gt LOC = P128

NET YBlt5gt LOC = P125

NET YBlt6gt LOC = P119

NET YBlt7gt LOC = P118

NET YClt0gt LOC = P107

NET YClt1gt LOC = P108

NET YClt2gt LOC = P98

NET YClt3gt LOC = P97

在光碟片中 RFFPGAVHDLDEMOBIT3S200 裡有VHDL與數位邏輯設計書本範例原始檔與合成檔

87

eM_95XL 模組

NET CLK LOC = SPIN38

NET XAlt0gt LOC = SPIN53

NET XAlt1gt LOC = SPIN54

NET XAlt2gt LOC = SPIN56

NET XAlt3gt LOC = SPIN57

NET XBlt0gt LOC = SPIN85

NET XBlt1gt LOC = SPIN86

NET XBlt2gt LOC = SPIN97

NET XBlt3gt LOC = SPIN98

NET XBlt4gt LOC = SPIN100

NET XBlt5gt LOC = SPIN101

NET XBlt6gt LOC = SPIN105

NET XBlt7gt LOC = SPIN104

NET XClt0gt LOC = SPIN58

NET XClt1gt LOC = SPIN59

NET XClt2gt LOC = SPIN60

NET XClt3gt LOC = SPIN61

NET YAlt0gt LOC = SPIN111

JP4 接頭

NET YAlt1gt LOC = SPIN110

NET YAlt2gt LOC = SPIN107

NET YAlt3gt LOC = SPIN106

NET YBlt0gt LOC = SPIN93

NET YBlt1gt LOC = SPIN91

NET YBlt2gt LOC = SPIN87

NET YBlt3gt LOC = SPIN88

NET YBlt4gt LOC = SPIN92

NET YBlt5gt LOC = SPIN94

NET YBlt6gt LOC = SPIN95

NET YBlt7gt LOC = SPIN96

NET YClt0gt LOC = SPIN112

NET YClt1gt LOC = SPIN113

NET YClt2gt LOC = SPIN103

NET YClt3gt LOC = SPIN102

在光碟片中 RFFPGAVHDLDEMOSVF95288XL 裡有VHDL與數位邏輯設計書本範例原始檔與合成

檔案

88

eM_FPGA 模組

NET CLK LOC = E12

NET XAlt0gt LOC = AA3

NET XAlt1gt LOC = Y4

NET XAlt2gt LOC = AA4

NET XAlt3gt LOC = AB4

NET XBlt0gt LOC = M1

NET XBlt1gt LOC = M2

NET XBlt2gt LOC = W13

NET XBlt3gt LOC = Y13

NET XBlt4gt LOC = AA13

NET XBlt5gt LOC = AB13

NET XBlt6gt LOC = Y18

NET XBlt7gt LOC = W18

NET XClt0gt LOC = W5

NET XClt1gt LOC = Y5

NET XClt2gt LOC = AA5

NET XClt3gt LOC = AB5

NET YAlt0gt LOC = Y17

JP4 接頭

NET YAlt1gt LOC = W17

NET YAlt2gt LOC = AB18

NET YAlt3gt LOC = AA18

NET YBlt0gt LOC = N1

NET YBlt1gt LOC = M5

NET YBlt2gt LOC = M3

NET YBlt3gt LOC = M4

NET YBlt4gt LOC = M6

NET YBlt5gt LOC = N2

NET YBlt6gt LOC = U13

NET YBlt7gt LOC = V13

NET YClt0gt LOC = AA17

NET YClt1gt LOC = AB17

NET YClt2gt LOC = V12

NET YClt3gt LOC = U12

在光碟片中 RFFPGAVHDLDEMOBIT2V250 裡有VHDL與數位邏輯設計書本範例原始檔與合成檔

89

Page 6: RFFPGA 直流馬達實驗手冊juniortek.com.tw/program/manual/RF-DC-mal.pdf · em_demo模組 em_dcm 直流伺服馬達 dc電源 rffpga 系統的直流馬達實驗規劃 其中包括:

電壓驅動模式

直流馬達的驅動方式有電壓驅動和電流驅動兩種

1電流驅動的方式是控制扭力電流越大扭力越大電流越小扭力越小 2電壓驅動的方式是控制轉速電壓越高轉速越高電壓越低轉速越低 3電流和扭力的關係比較線性也不受外界干擾影響 4電壓和轉速的關係比較不線性也比較容易受負載的干擾

電流驅動比較符合扭力控制模式控制效果比較直接但是相對的電路成本也較高電

壓驅動電路比較簡單控制效果雖然沒有電流驅動的響應好但是仍能維持相當不錯的

水準因此大部分低價產品還是選擇電壓驅動模式

電流驅動方式 電壓驅動方式

+-

一個最簡單的電壓驅動電路就是以運算放大器為基礎的線性驅動電路其電路方塊圖如

線性電壓驅動

VinVout

V+

V-

線性放大器

線性放大器的特性非常理想其電壓輸出 Vout 和電壓輸入 Vin 成正比也不受其他環

境因素所干擾輸出正電壓馬達就正轉輸出負電壓馬達就反轉但是線性放大器的能

量效率卻是非常不理想以下圖為例

VinVout

V+

V-

線性放大器

=5V

=+15V

=-15V

1A

1A

6

假設在某種轉速下馬達需要的電壓輸出為 5V而電流為 1A那麼就產生了(5V1A=5W)

的功率輸出由於線性放大器的電流完全由電源供應器提供所以電源電流也是 1A在

15V 的電源電壓下驅動級的功率為(15V1A=15W)當有 15W 的功率進入驅動級而只

有 5W 的功率流出驅動級代表其中 10W 的功率浪費掉了在能量不滅的定律下功率

是不會憑空消失的這意味著這 10W 的功率已經變成了熱能使得驅動級發燙起來還

得另外設法散熱

在兩種狀況下會造成最小的功率消耗一種是最大電壓輸出(全開)狀況一種是零電

流輸出(全關)狀況說明如下

1當最大電壓輸出時假設輸出電壓為 15V輸出電流為 1A則 輸出功率為(15V1A=15W) 輸入功率為(15V1A=15W) 所以驅動級的消耗功率為(15W-15W=0W) 2當零電流輸出時假設輸出電壓為 0V輸出電流為 0A則 輸出功率為( 0V0A=0W) 輸入功率為(15V0A=0W) 所以驅動級的消耗功率為(0W-0W=0W)

當然真實的電路不會那麼理想但是這種特殊工作點的選擇的確會讓驅動電路變得非

常有效率

PWM 脈寬調變

脈寬調變電路(Pulse Width Modulation簡稱 PWM)就是利用全開和全關的兩種最佳效

率點所設計的電路

就 PWM 驅動器本身而言只有全開和全關的兩種控制模式假設我們還是需要 5V 和 1A

的輸出控制需求那麼就可以控制全開的比率(即工作率 Duty-Cycle)為 13 週期使得

輸出的平均電壓維持在 5V 的準位如下圖所示

Vin Vout

V+

V-

線性放大器

因為輸出只有全開或全關的兩種狀態如果再使用昂貴的線性放大器就太浪費了這時只要用

最簡單的開關放大器就可以辦到了最基本的開關放大器有下述兩種

7

V+

單向控制

V+

A

AB

B

A雙向控制

單向控制結構只能控制直流馬達做單方向的運轉而由 PWM 控制馬達的轉速雙向控制

在速度之外還可以控制馬達作正反轉通常用來執行直流馬達的位置控制用

PWM 的控制波形非常簡單就是產生一組平均值為指定電壓的波形也就是控制所謂的

工作率(Duty-Cycle)定義如下

平均電壓 = Ton (Ton + Toff) 電源電壓 = 工作率 電源電壓

但是由於波形上的微小差異細分起來還是有下面三種型式

前緣對齊型

10 1010

30 30 30

50 50 50

中間對齊型 後緣對齊型

如果只有一組 PWM 波形輸出無論採用哪種波形都沒有差異只有當多個 PWM 波形要同

時輸出(例如交流馬達作三相控制)時才需要選擇中間對齊的型式作處理以免造成相

位失真的現象

在電路設計上都是產生一組參考波來和電壓命令作比較當電壓命令大於參考波時就

送出 1小於參考波時就送出 0如此就形成 PWM 波形其差別只是採用何種參考波作

比較

前緣對齊型

70

中間對齊型 後緣對齊型

70

以上圖為例要產生前緣對齊型的 PWM 訊號就採用遞增型鋸齒波若採用遞減型鋸齒

波就會產生後緣對齊型的 PWM 訊號採用前後對稱的三角波就會產生中間對齊型的

PWM 訊號

8

PWM切換保護

對於單一線圈的負載而言PWM切換電路的電路方塊圖如下

負載

正電源

負電源

PWM+

PWM-

P

N

其中

1以兩組電晶體來分別控制正負電源其中的電晶體依據功率需求可選擇功率電晶體

MOSFET或是 IGBT不論哪種選擇其控制原理都一致 2將 PWM訊號分成正向和反向的兩組控制訊號PWM+控制正電源的導通與否而

PWM-控制負電源的導通與否 3切換組合包括 P=OFFN=OFF負載和電源隔離 P=ON N=OFF負載連接上正電源 P=OFFN=ON 負載連接上負電源 P=ON N=ON 正負電源短路這時功率驅動級將瞬間燒毀

原則上只要將 PWM+和 PWM-間的邏輯反向是不可能發生兩者都 ON 的情況但是再考慮

功率電晶體(包括電晶體MOSFET 和 IGBT)的暫態響應電晶體 OFF 的反應時間通常比

電晶體 ON 的反應時間要長一些所以在切換瞬間很可能產生兩者都導通的瞬間狀態

這時可能有兩種結果

1兩者同時導通的時間稍長時功率驅動級將瞬間產生過電流而燒毀 2兩者同時導通的時間非常短這時功率驅動級雖不至於瞬間燒毀但是會產生很高

的熱量使得功率驅動級的溫度快速加高甚至於因為過熱而燒毀

因此 PWM 控制必須加上切換保護其示意圖如下

PWM+ PWM-

切換保護

其中

1基本上PWM-只是 PWM+的反向訊號兩者都由一組 PWM訊號控制 2但是在 ONOFF 切換的瞬間必須加上一段兩者都 OFF的時間這段時間的長度

可依照功率電晶體的 ONOFF特性來設定在 1us~4us之間

9

PWM 啟動保護

在系統開機時很不容易保證各個元件都能依照順序依序啟動因此在系統啟動時必須

自動將 PWM 輸出關掉直到系統完成整個開機程序後才能再將 PWM 訊號重新啟動一

般而言啟動程序如下

1系統開機後功率驅動級通常最快啟動這時 PWM必須保持在 OFF 狀態避免系

統誤動或短路 2之後依次啟動 BIOSLinux網路最後才啟動應用程式 3應用程式啟動後必須依序 A下載 FPGA B下載 DSP控制軟體 C啟動 DSP控制軟體 在啟動 DSP控制軟體後才能重新開啟 PWM的動作 4任何時間中只要 DSP控制停止就必須立刻關閉 PWM控制以避免誤動或短路

所以 PWM 啟動保護是由 DSP 程式直接控制其必要程序包括

1FPGA電路下載完畢並執行工作中 2DSP程式下載完畢並執行工作中

其中任何一個部分停止都必須立刻關閉 PWM 控制一般而言這部分電路都由看護犬

(watch-dog)電路管理而由 DSP 程式負責驅動

DCM 實驗模組

DCM 模組是一個完整的直流馬達實驗機台系統方塊圖如下

YA1

切換保護

YA2

YC0

馬達

PHTA PHTB

PWM+

DIS

YA0 PWM-

+12VSW

YC1

JP4 A

AB

B

雙向控制

光電盤

A

B

其中

1採用雙向控制的 PWM功率驅動級來驅動直流馬達可控制馬達正反轉 2功率驅動級中已有切換保護其控制訊號包括

10

PWM+ PWM- DIS 直流馬達 X X 1 OFF 1 0 0 正電壓驅動 0 1 0 負電壓驅動

3功率驅動級中並沒有啟動保護所以必須附加電源開關作手動控制 4馬達轉角由光電盤的 AB相訊號作回授 5所有控制訊號都經由 JP4接頭接到 RFFPGA控制器中可由 FPGA作控制

三角波產生器

實驗中以中間對齊型的 PWM 訊號為控制目標首先建立對稱的三角波作為參考訊號其

對映的 VHDL 程式範例如下

TRIANGLE_WAVE block signal Q STD_LOGIC_VECTOR (11 downto 0) signal CEDIR STD_LOGIC begin process (CLKRESET) -- sequential logic begin if RESET=1 then --reset Qlt=000000000111 --reset to 7 elsif CLKevent and CLK=1 then --CLK=gt1 trigger if CE=1 then --clock enable if DIR=0 then Qlt=Q+1 --up counter else Qlt=Q-1 --down counter end if end if end process -- combinational logic CE lt= SYSTEM(0) --24MHz clock DIR lt= SYSTEM(13) --4KHz square wave REF lt= Q --12-bit reference (7~3079) end block TRIANGLE_WAVE 其中

1程式設計為可適用於不同的系統時鐘包括 49152MHz和 24576MHz 兩種型式 2計數器的基本頻率為 24576MHz所以用 CE=SYSTEM(0)來控制計數動作 3三角波的頻率設為 4KHz所以計數器的峰值為(2457642=3072) 4正反計數器和系統時序同步而以 SYSTEM(13)做為同步控制由於 SYSTEM(13)為 4KHz的方波設定 DIR=SYSTEM(13)即可控制計數器的上升或下降

5在 RESET時將計數器的初值設為 7使得計數範圍修正為 7~3079所以即使有些同步誤差也不會產生負數輸出的嚴重影響

6三角波以 REF[12]作輸出數值範圍在 7~3079之間頻率為 4KHz

11

如果 PWM 的頻率過低馬達端會產生震動噪音這時就必須提高 PWM 的頻率在前面程

式中如果要將 PWM 頻率從 4KHz 提升為 8KHz則可更改如下

if DIR=0 then Qlt=Q+2 --up counter else Qlt=Q-2 --down counter DIR lt= SYSTEM(12) --8KHz square wave 其中

1將 DIR改由 8KHz的 SYSTEM(12)來控制 2同時將計數器改成+2-2的正反計數器 3如此仍然能夠維持 REF輸出的數值範圍(7~3079)

如果還要再將 PWM 的頻率提高到 16KHz則可更改如下

if DIR=0 then Qlt=Q+4 --up counter else Qlt=Q-4 --down counter DIR lt= SYSTEM(11) --16KHz square wave 其中

1將 DIR改由 16KHz的 SYSTEM(11)來控制 2同時將計數器改成+4-4的正反計數器 3如此仍然能夠維持 REF輸出的數值範圍(7~3079)

表面上三角波產生器的數值精度為 12-bit時間精度為 24MHz但是由於 PWM 訊號將

透過 FPGA2 輸出而高速串列界面的更新速度為 15MHz所以就 DCM 模組所收到的 PWM

控制訊號而言其時間精度將降低為 15MHz而數值上的精度將降低為 8-bit等效範

圍為 0~192 或是+-96 之間整體而言控制上的精度約為 05仍可符合馬達控制的

需求

PWM 波形產生器

接著處理比較的動作並產生 PWM 波形對映的 VHDL 程式範例如下

PWM_COMPARATOR block signal CEPUPD STD_LOGIC signal D0D1D2D3D4 STD_LOGIC begin process (CLK) -- sequential logic begin if CLKevent and CLK=1 then --CLK=gt1 trigger if CE=1 then --CLK enable D4lt=D3 D3lt=D2 D2lt=D1 D1lt=D0 --delay end if end if

12

end process -- combinational logic CE lt= CLK1M D0 lt= 1 when CMDgtREF else 0 --PWM generation PU lt= D1 and D2 and D3 and D4 --up-side output PD lt= not D1 and not D2 and not D3 and not D4 --down-side output PWMU lt= PU --up-side PWM output PWMD lt= PD --down-side PWM output PWMI lt= (not PU and not PD) or not ENB --PWM disable PWMR lt= REF --PWM reference end block PWM_COMPARATOR

程式中所對映的時序如下

CE

REF

CMD

D1D2D3D4PWMUPWMDPWMI

其中

1以 15MHz的 CE訊號為基本頻率 2將電壓命令 CMD和參考波形 REF作比較若 CMDgtREF則設定 D0=0否則設定

D0=1 3將 D0訊號作四次的延遲處理延遲訊號依序為 D1D2D3D4最後再重新組合成

PWM的輸出波形 4其輸出訊號包括 PWMU對映到 DCM模組中的 PWM+訊號 PWMD對映到 DCM模組中的 PWM-訊號 PWMI對映到 DCM模組中的 DIS訊號為切換保護訊號 如此 PWMU作動和 PWMD作動之間將有 2us間隔中是兩者都不作動的也就是

PWMI的作動時間 5當 ENB命令=0時設定 PWMI=1而使得驅動器 OFF

13

回授訊號的處理

精密的伺服馬達動作必須將馬達的位置和速度加以量測後再執行回授控制因此速

度和位置的量測是精密控制中必要的一環我們通常用光電寫碼器或數位尺來進行量測

工作

光電寫碼器(Photo-Encoder)俗稱光電盤是利用光電量測進行的非接觸式數位量測元

件其基本裝置如下

LED光源

光電晶體偵測

以 LED 或是其他光源來發光而用 AB 相的兩組光電晶體來偵測當圓盤隨著馬達作轉

動時光電晶體即可偵測到其移動狀態由於圓盤中的小孔呈等距排列其透光部分和

不透光部分呈 50對 50的比例當圓盤轉動時光電晶體端就可以偵測到下述訊號

光電盤訊號(A 相)

光電盤訊號(B 相)

正轉

其中

1偵測方波的頻率即對應於圓盤轉動的頻率也就是轉速 2偵測方波的個數即對應於圓盤轉過的孔數也就是轉角(相對角度) 3由於 AB相的兩組光電晶體在機械安裝上的角度不同使得讀出訊號也有 90 度的

差異如果馬達正轉則 A相超前如果馬達反轉則 B相超前

有了兩相的光電盤訊號只要能偵測其中的相位變化就可以分辨光電盤的正反轉運動

了例如正轉時的光電盤時序如下

14

光電盤訊號 (A 相 )

光電盤訊號 (B 相 )

正轉

微分訊號(A+)

微分訊號(A-)

微分訊號(B+)

微分訊號(B-)

正轉脈衝(CW)

其中

1針對 AB 兩相訊號作微分處理即可取得 A+A-B+B-的上緣微分和下緣微分 2將微分訊號和和原有的 AB相訊號作比較即可找出正轉脈衝 3計算正轉脈衝的頻率和個數即可取得馬達的速度和轉角 4如此得到的脈衝數將是原有 AB相頻率的四倍所以稱之為乘四解碼電路

同樣的如果針對光電盤的反轉時序一樣可以得出反轉訊號圖示如下

光電盤訊號(A相)

光電盤訊號(B相)

反轉

反轉脈衝(CCW)

其公式如下

CW lt= (A+ and not B) CCW lt= (A+ and B) or (A- and B) or (A- and not B) or (B+ and A) or (B+ and not A) or (B- and not A) or (B- and A)

整合光電盤回授的處理其系統方塊圖如下

數位濾波

D Q

CK

DLA

PHA

D Q

CK

DLB

PHB

CLK

乘四解碼電路

DIR

PLS

數位濾波

PA

PB

正反計數

CNT DB

RD

CS

包括

15

1首先利用簡單的數位濾波器將 AB項的雜訊排除 2接著利用延遲電路作微分處理並以乘四解碼電路解出轉動的脈波和方向 3最後利用正反計數器作計數並將計數值讀入匯流排

數位濾波器

光電盤的 AB 相訊號中如果產生雜訊干擾的現象會使得馬達轉角的計量上產生永久

性的累積誤差將造成控制上無法彌補的錯誤所以 AB 相訊號上的雜訊一定要盡力排

除下面是常用的數位濾波器設計範例

FILTER_A block -- digital filter for A signal CED0D1D2 STD_LOGIC begin process (CLK) -- sequential logic begin if CLKevent and CLK=1 then --CLK=gt1 trigger if CE=1 then --clock enable D2lt=D1 D1lt=D0 D0lt=PA --delay 3 clocks PHA lt= (D0 and D1 and D2) or ((D0 or D1 or D2) and PHA) end if end if end process -- combinational logic CE lt= CLK1M --15MHz clock end block FILTER_A 其中

1以 15MHz的頻率為控制基準 2利用延遲電路依序產生 D0D1D2的延遲訊號 3連續三個 1(D0D1D2 都是 1)定義為 1連續三個 0(D0D1D2 都是 0)定義為 0而其他不連續的 10 都定義為雜訊如此可將高頻的雜訊濾除

4但是相對的AB相訊號的最高頻率將限制為 250KHz(連續 3個 1和連續 3個 0)頻率過高的 AAB相訊號將被視為雜訊而不處理必須特別注意

正反轉的解碼和計數

依據前面的公式說明對映的 VHDL 程式範例如下

DECODER block signal DLADLB STD_LOGIC begin process (CLK) -- sequential logic begin if CLKevent and CLK=1 then --CLK=gt1 trigger DLAlt=PHA DLBlt=PHB --delay 1-clock end if end if

16

end process -- combinational logic DIR lt= (not PHA and DLA and not PHB) or ( PHA and not DLA and PHB) or (not PHB and DLB and PHA) or ( PHB and not DLB and not PHA) PLS lt= (not PHA and DLA) or (PHA and not DLA) or (not PHB and DLB) or (PHB and not DLB) end block DECODER 其中

1PHAPHB為經過雜訊濾波後的 AB相訊號而 DLADLB是其延遲訊號 2根據乘四解碼電路的公式取得 DIR和 PLS訊號其中 DIR用以控制計數器的正反向 PLS用以控制計數器的計數與否

所以接下去就是正反計數器的設計範例如下

COUNTER block signal Q STD_LOGIC_VECTOR(11 downto 0) begin process (CLKRESET) -- sequential logic begin if RESET=1 then --power-on reset Qlt=000000000000 --reset to 0 elsif CLKevent and CLK=1 then --CLK=gt1 trigger if PLS=1 then --clock enable if DIR=1 then Qlt=Q-1 --down counter else Qlt=Q+1 --up counter end if end if end if end process -- combinational logic CNT lt= Q --counter output end block COUNTER 其中

1這是標準的正反計數器架構在開機時自動復歸 2計數器的長度為 12-bit可依需要自行調整

DCM模組中的光電盤精度為每圈500格經過乘四解碼後相當於每圈2000格所以12-bit

計數器只能處理 2 圈的應用範圍絕對不夠在真正應用時一定要用軟體或硬體的方

式再擴張成 16-bit 或是 32-bit 的寬度來處理才行

17

3實驗項目

在直流伺服馬達控制系統中規劃五個實驗項目由系統首頁做選擇每項實驗操

作整個系統實驗組成由各項實驗項目 CAI 檔及各項實驗項目程式連結 PLC 檔結合而成茲表列如下

直 流 伺 服 實 驗 e x p _d c m c ai

開 環 路 電 壓 控 制

系 統 首 頁 實 驗 程 序

e x p _p w m c ai

開 環 路 速 度 控 制 e x p _s p ee d c a i

閉 環 路 位 置 控 制 e x p _a n gl e c a i

加 減 速 的 位 置 控 制 e x p _a c c c ai

正 弦 波 位 置 控 制 e x p _s i n c ai

C A I 圖 控 檔

直 流 伺 服 實 驗 開 環 路 電 壓 控 制

系 統 首 頁 實 驗 程 序

e x p _p w m p lc

開 環 路 速 度 控 制 e x p _s p ee d p l c

閉 環 路 位 置 控 制 e x p _a n gl e p l c

加 減 速 的 位 置 控 制 e x p _a c c p lc

正 弦 波 位 置 控 制 e x p _s i n p lc

e T T Y 批 次 檔

18

4安裝程序

31 將 RFFPGA中的程式拷貝至工作硬碟中進入 DC子目錄資料夾中其中包含下

列檔案

檔案 內容說明 mod SIN_wave MODPWM_wave MODIIR1_filter MODDAS4

MODPOS_inputMODPWM_outputMODACC_controlMODPD_controlMOD這些檔案是由 ASM重新編譯出由 testDCMmem所需執行模組檔

asm SIN_waveasmPWM_waveasmIIR1_filterasmDAS4asm POS_inDCMasmPWM_outDCMasmACC_conDCMasmPD_controlasm是各模組組合語言所設計 SOURCE檔

plc 為進行實驗所需的各批次檔 bit piDSPv0bit為下載到 FPGA的 BIT檔其功能為將 FPGA規劃成

具備 piDSP控制晶片功能提供直流伺服控制所需的控制程式

撰寫 testDCMsys 記載進行 DCM實驗時所需的模組 testDCMMEM 連結完成的 DSP執行檔用來進行 DCM實驗 testDCMvar 紀錄 DCM實驗時的參數對照表

在進行實驗前先將實驗所需的系統程式與模組程式分別說明加以說明系統所

需的程式模組由 testDCMsys 來描述程式列印如下

module fg1 PWM_wavemod 方波產生器

module fg2 SIN_wavemod 弦波產生器

module cn1 ACC_controlmod 加減速控制器

module cn2 PD_controlmod 比例微分控制器

module io1 POS_inputmod 位置和速度讀值

module io2 PWM_outputmod PWM 電壓輸出界面

module ft1 IIR1_filtermod 一階濾波器

module das das4mod 示波器資料蒐集

module io3 LEDKEYmod LEDKEY 界面

其中包括

1兩組波型產生器作為測試命令包括正弦波和方波 2兩組控制器提供包括加減速PD控制器的功能可依照實驗需求搭配使用 3兩組輸入輸出界面執行 PWM輸出和相位回授的界面處理 4一組低通濾波器作為電壓開迴路控制迴路和速度閉迴路控制的模擬使用 5DAS4mod是示波器專用的配合模組不論任何實驗都必須加入此模組 6Ledmod是四位數字七段顯示與 44矩陣按鍵模組

19

5執行程序

首先進入 RFFPGA 裡子目錄 DC直接點選 fPLCexe 出現下面操作畫面(也可直接將此檔

案放置桌面直接點選)

進入下面操作畫面

20

首先使用滑鼠在 FPGA下載按鈕單擊動作使 FPGA變成 piDSP晶片 如您撰寫組合語言時可使用 eASM按鈕 經編譯完成後產生MOD檔 如您撰寫系統連結程式時可使用 eLINK按鈕 經連結完成後產生MEM與VAR檔 點選實驗三後顯示如下 選擇程式下載再按程式啟動這時直流伺服馬達開始做位置控制在操控畫面放置 P 參數設定欄更改參數時馬達即時隨參數改變而產生不同響應 直接點選程式停止時結束所有控制動作再按回首頁選擇其他實驗

21

6實驗說明

下圖所示為直流馬達的控制系統方塊圖透過電流速度以及位置的回授再搭

配適當的控制器可建立完整的閉迴路控制系統在後面的實驗中將依此一系統方塊圖

逐步建立速度和位置的控制實驗各實驗的說明和操作方式及參考實驗結果將逐一進

行詳細的說明

控制

參考位置

速度 位置速

度控制 電流控制

電力電

子換流

位置速

度感測

i

+ -

壓ν

位置

速度

i

DC直流馬達之控制系統方塊圖

PWM 驅動方式只是簡單的開環路控制而高精度的馬達控制必須透過回授控制來完成

對於邏輯電路的設計者而言必須先瞭解基本的回授控制架構以便將來轉換成實用的

邏輯電路設計

設計說明

開環路特性

在電壓驅動的狀況下直流馬達開環路控制的示意圖如下

+-

22

如果換算成數學模式則轉換成下面的架構

+-Vc

R L

EMF

+

-

ITB

J

ω

其中

1其中的變數和參數包括 Vc 控制的電壓命令 R 電樞迴路的等效電阻 L 電樞迴路的等效電感 EMF電樞產生的反電動勢 i 電樞迴路中的電流 T 馬達所產生的扭力 J 馬達和負載的等效慣量 B 馬達和負載的等效摩擦力 ω 馬達所產生的速度 2所牽涉的物理公式包括 電壓迴路Vc = Ri + L(didt) + EMF 即電樞迴路中的電壓平衡 動力負載T = Bω + J(dωdt) 即扭力平衡 馬達特性T = Kti 所產生的扭力和電流成正比 電機特性EMF= Keω 所產生的電動勢和轉速成正比 其中新增的參數包括 Kt馬達的扭力常數 Ke馬達的反電動勢常數 3將微分項作拉式轉換(Laplase Transformation)的對映即 s = ddt 可將微分方程式轉換成更簡單的代數方程式而產生到下面的控制方塊圖

sL+R1Vc

+-EMF

iKt

TsJ+B1 ω

Ke

4在直流馬達的開環路特性中控制電壓(Vc)時輸入點而馬達轉速(ω)是輸出點即是控制馬達電壓以控制馬達轉速

5基本上馬達的開環路特性是個兩階系統類似於低通濾波器的特性在許多應用 場合其開環路特性還可以再簡化成一階系統方塊圖如下

23

sτ +1

KmVc ω 其中 τ一階系統的時間常數 Km一階系統的穩態增益

採用兩階系統的分析方式雖然會比較精細但是用一階系統來分析則可簡化所有的設計

過程因為這裡的實驗重點是邏輯設計所以在本章中我們都用一階系統作分析

系統響應的要求

就控制系統而言最重要的需求就是系統響應包括

穩態特性通常以穩態誤差為指標即是穩態時系統輸出和輸入之間的差異 暫態特性通常以上升時間(Rise Time)和過越比率(Overshoot)為指標

一個理想中的伺服控制系統其系統響應應該是

1穩態誤差為 0即馬達輸出將追隨輸入作變化沒有誤差 2過越比例為 0即馬達輸出絕對不會產生衝過頭的現象 3上升時間為 0即馬達輸出隨時追上輸入命令不會有控制上的延遲現象

當然這是太理想了一個合理的伺服控制系統應該是

1穩態誤差越小越好最好為 0 2過越比例越小越好最好為 0 3上升時間越短越好當然無法為 0但是盡力就是了

速度的回授控制

回授控制的目的就是為了改善系統響應以一階系統代表的馬達控制為例

sτ+1

KmVc ω

在步階響應(Step Response)時其特性如下

1穩態誤差由 Km決定 2過越比例為 0 3上升時間即是其時間常數(τ)

如果用比例控制器(P 控制器)作速度回授的控制則控制方塊圖如下

sτ+1

KmVc ωKp

err

P控制器 直流馬達ωc

速度回授

速度命令 + 速度響應-

24

其中

1速度命令並不直接控制馬達的驅動電壓而是 A將速度命令和速度回授相比找出其誤差訊號 err B依誤差訊號來控制驅動電壓 誤差越大則驅動電壓越高 誤差越小則驅動電壓越低 誤差為負則驅動電壓也為負 其中的比例關係由 P控制器中的 Kp 來調整 2經由數學分析後其步階響應的特性為 A穩態誤差變成 1(1+kpkm)如果 kpkmgtgt1則穩態誤差將趨近於 0 B過越比例仍為 0 C上升時間即是由τ變成τ(1+kpkm)所以上升時間將變短 3換句話說只要 Kp值夠大不論是穩態誤差或是上升時間都會大幅改善

理論上P控制器的增益是越高越好最好是無限大但是實際上是有限制的原因是

1馬達的開環路特性是兩階系統而非一階系統一階系統只是簡化後的結果 2當兩階系統作高增益的回授控制時當增益過高時會產生極嚴重的過越現象使得

馬達產生巨幅震動而難以控制

所以 P控制器的增益雖然是越高越好但調整時仍要小心維持(過越比例為 0)的條件

轉角的回授控制

做為馬達的速度控制P控制器的效果不錯但是如果將 P控制器應用到馬達的轉角控

制其特性就不太理想圖示如下

sτ+1

KmVc ωKp

err

P控制器 直流馬達

θc

轉角回授

轉角命令 + 轉角響應-

s1 θ

其中

1從馬達的速度到轉角之間具有積分特性即 馬達的轉角是馬達速度的積分結果而 馬達的速度是馬達轉角的微分結果而 2其中的積分特性使得整個系統由一階特性變成兩階特性在兩階系統中當設定高

增益時會產生極嚴重的過越現象使得馬達產生巨幅震動而難以控制 3在 P控制器增益無法提高的狀況之下轉角控制效果將無法獲得改善

雖然 P控制器在轉角控制上的效果並不好但是在控制系統中還是有許多法寶可以選擇

25

其中 PD 控制器就是簡單又有效的一個好方法

從表面上來看PD 控制器比 P控制器多了一個微分項就數學上來看這微分項提供了

一個新零點(Zero)可以調整根軌跡圖的走向就實驗上來說這微分項提供了控制器

的預測功能說明如下

sτ+1

KmVc ωKp+sKd

err

P控制器 直流馬達

θc

轉角回授

轉角命令 + 轉角響應-

s1 θ

1轉角控制中 P控制器的問題是在嚴重的過越現象原因是在 P控制器的作用下只有當回授超過命令時才能做出「負向」的控制但這時已經來不及了因為積分器

中已經累積了過多的能量而無法立刻消失使得馬達轉角衝過了頭 2解決之道就是在回授超過命令之前就必須做出「負向」的控制使得積分器累積

的能量逐步減弱在到達目標時才能立刻煞車才能解除過越現象 3而微分項就是這個預測量因為當誤差量越來越小時其微分項是負值雖然微分

項(D)是負值 當誤差量(P)很大時(P+D)的結果還是正值所以還是「正向」控制 當誤差量(P)漸小時(P+D)的結果變成負值才會開始「負向」控制 換句話說在誤差為 0之前即可啟動負向控制產生煞車作用使得馬達提前減速

而即時停止在目標點上自然就解除過越現象了

所以在 PD 控制器中有兩項調整量其中

1Kp增益提供比例控制部分的增益而 Kd增益提供微分控制部分的增益 2Kp增益控制馬達的趨近速度主要影響的是上升時間 3Kd增益控制馬達的提前煞車主要影響的是過越比例 4在兩者搭配下就有機會得到 很快很短的上升時間同時也 不會產生過越現象

PD 控制器的執行

依據 PD 控制器公式可以建立以數位執行的 PD 控制器如下圖所示

cmdKp

fdk

+

-

err

old

+-

Kd

Z-1

out+

+

26

其中

1利用差分公式來取代 PD控制器中的微分公式定義如下 s ==gt (1-Z-1)DT 其中對映的變數包括 s 微分項 Z-1延遲一個抽樣週期 DT抽樣週期單位為 sec 2就執行面而言Z-1是延遲一個抽樣週期也就是以抽樣週期所控制的暫存器 3在上圖中將命令(cmd)和回授(fdk)相減後得到誤差值(err)再將 err延遲一個抽樣週期成為 old所以(err-old)DT即是微分項

4原始的微分控制公式為(err-old)DTKd必須先除再乘但是因為 DT和 Kd 都是常

數可以預先將 Kd修正成 Kd=(KdDT)那麼公式將修正為(err-old)Kd就只需要一個乘法而不需要除法了

同樣的 PD 控制器可以用許多不同的方法作執行包括

1以軟體方式執行例如在 DSP核心中以組合語言撰寫控制模組 2以硬體方式執行例如在 FPGA中直接設計邏輯電路 3以微碼方式執行以微碼作順序控制執行硬體運算工作

這裡先提供用組合語言撰寫的程式模組作為設計參考其他兩種方法將在後續的實驗中

再陸續作說明

模組程式範例PD_controlasm

local cmd R0 IP gnd 輸入點位置命令(可忽略) local fdk R1 IP gnd 輸入點位置回授(可忽略) local out R2 OP 輸出點用以控制速度迴路 local kp R3 256 參數增益 kp10=256 local kd R4 0 參數增益 kd10=256 local err R5 0 內部變數 local old R6 0 內部變數 local gnd R7 0 無輸入時的短路點 data 8 模組變數區長度 initial 開機啟動程序 WR out0 WR old0 RET out=old=0 timer 即時控制程序 RD (cmd) SUB (fdk) WR err MUL kp SFR 8 P=(cmd-fdk)kp256 RDS err SUBX old MUL kd SFR 8 D=(err-old)kd256 ADDS WR out out=P+D RET

27

其中

1PD控制模組中對外的界面變數包括 cmd命令的輸入點 fdk回授的輸入點 out控制的輸出點 2內部參數包括 Kp比例控制增益其中 10=256所以乘完後還需要再右移 8-bit Kd微分控制增益其中 10=256所以乘完後還需要再右移 8-bit 3內部變數包括 err臨時性的變數用以儲存誤差值的計算結果 old儲存性的變數用以儲存上一次抽樣控制時的 err值 4模組程式分成三部分包括 變數宣告local和data所宣告的部分 初值設定initial程序中先將 out和 old設定為 0 即時控制timer程序中依序執行 PD控制器中的每個步驟

控制目標的選擇

從字面上來看速度控制就是控制馬達的速度轉角控制就是控制馬達的轉角沒什麼

好討論的但是實際上確有許多問題第一的問題就是什麼是速度和轉角馬達的速

度和轉角如果不作量測如何得知

既然在量測中取得了速度和轉角資料那麼我們所控制的到底是物理學上的速度和轉

sτ+1

KmVc ωKp+sKd

err

P控制器 直流馬達

θc

轉角回授

轉角命令 + 轉角響應-

s1 θ

KxANG

轉角量測

角還是量測上的速度和轉角以下圖為例

其中

1以轉角量測裝置量測轉角例如裝在馬達軸端的光電盤和解碼電路 2轉角的量測輸出是 ANG而 ANG和物理轉角θ之間有 Km的增益關係 3只要 Km值不是 1那麼系統就不再是單位回授 4如果 Km還有非線性或失真現象那麼控制結果也將有非線性或失真現象

這些問題混雜起來會使得控制系統的分析變得更複雜如果要簡單處理就要認同現

實環境直接以量測結果為控制目標如下圖所示

28

sτ+1

KmVc ωKp+sKd

err

P控制器 直流馬達

θc

轉角回授

+-

s1 θ Kx

ANG轉角量測

其中

1直接以量測結果為控制目標將全系統還原成標準的單位回授控制 2所有的非線性或失真現象都進入開環路討論屬於可以補償的部分 3但是控制結果就是「量測上的轉角」而「物理學上的轉角」

量測誤差的問題

轉角θ

量測ANG

對於量測誤差而言最明顯的問題就是量化誤差圖示如下

其中

1以 DCM模組中的光電盤為例精度為每圈 500格經由乘四解碼計數後其等效

精度增加為每圈 2000格 2比(12000)圈更精密的部分都無法響應換句話說振幅越大的控制其相對誤差越

小而振幅越小的控制其相對誤差越大例如 當振幅為(12)圈時其控制誤差量為 01而 當振幅為(120)圈時其控制誤差量為 1 這是標準的的非線性現象

量化誤差不只影響穩態上的精度還會造成非線性的震動問題圖示如下

t

誤差值

+1

-1

其中

1由於量化誤差的問題只有當誤差超過+1或是-1時才會真正偵測到誤差也才

29

會施加控制量作補償 2所以穩態時的誤差將在+1-1之間擺動造成微幅的振動 3量化誤差越大震動越明顯而量化誤差很小時通常不易察覺出震動現象

微分量的計算

伺服系統中有兩處需要用到微分計算包括

1PD控制器中誤差微分量的計算 2速度控制器中速度回授值的量測

在理論上微分公式是(dXdt)相當於 dXdt = (X(n)-X(n-1))DT (當 DT趨近於 0時)

所以當微分計算中的抽樣週期(DT)越短時微分的計算值將越接近理論值但是事實上

卻非如此以下圖為例

t

X

DTDX

其中

1當 X值為等速度運動時其微分量就是其斜率相當於 DXDT 2DT是微分計算中的抽樣週期理論上越短越好但是由於 DX本身的量化誤差

使得這個原則不再成立例如當斜率為 7394時 若 DT=1000則 DX=7394而 DXDT=7394 若 DT=100 則 DX=739 而 DXDT=739 若 DT=10 則 DX=73 而 DXDT=73 若 DT=1 則 DX=7 而 DXDT=7 3換句話說當抽樣週期越短時DX的量化誤差將越明顯而造成微分計算上更嚴

重的誤差

在 DCM 模組中速度量測的量化誤差分析如下

1馬達上的光電盤精度為每圈 500格經過乘四解碼後等效精度為每圈 2000格 2當馬達轉速為 1200RPM而抽樣頻率為 1KHz時對映的速度量測值為 1200(圈分)2000(格圈)60(秒分)1000(DT秒) = 40(格DT) 3換句話說1200RPM的轉速對映到 40的速度量測值即速度單位=30RPM若最

高轉速為 3000RPM則在+-3000RPM的速度範圍內其量化誤差為 05相當於8-bit的 ADC轉換器精度

4對映不同的抽樣頻率的量化誤差表列如下

30

光電盤精度 最高轉速 抽樣頻率 速度單

速度範圍 量化誤差

500PPR 3000RPM 1KHz 30RPM +-100 05 500PPR 3000RPM 2KHz 60RPM +-50 1 500PPR 3000RPM 4KHz 120RPM +25 2

過溢現象的處理

輸入

輸出

32767

-32768

整數運算都有數值範圍限制以 16-bit 整數而言輸入輸出的關係如下

其中

1當超過正負數的上下限時數值會正負顛倒例如 +32768 將會視為 -32768作處理而 +32769 將會視為 -32768作處理依此類推 2換句話說16-bit的整數運算只有在+-32767之間是線性的對映關係而超過這個範圍就是非線性的對映關係

3不但如此還因為正負顛倒的現象使得原來設計的負回授控制將變為正回授控制

而產生非線性的震盪現象 4換句話說只要計算上稍一不慎就會使得原先穩定的系統產生不穩定的震盪結果

為了避免過溢現象所造成的不穩定問題通常控制系統中會利用飽和處理作改善圖示

如下

輸入

輸出

lmtH

lmtL

31

其中

1當超過計算的上限時將固定設為上限值處理而當超過計算的下限時也將固定

設為下限值處理 2這時的整數運算只有在上下限之間是線性的對映關係而超過這個範圍將還是非線

性的對映關係 3雖然如此但是因為沒有正負顛倒的現象所以不再會有負回授變為正回授的問題

而避免了非線性的震盪現象 4換句話說飽和處理是針對過溢現象的妥協處理方案雖然不完全理想但是是可

接受的最佳選擇

下面是對映的組合語言範例

RD x x為輸入端 MIN lmtH 取得 x和 lmtH中的較小值即是作上限保護的工作 MAX lmtL 取得 x和 lmtL中的較大值即是作下限保護的工作 WR y Y為輸出端 其中

1組合語言中提供MAX和MIN的計算其中 MIN lmtH 比較 AX暫存器和 lmtH而將較低值存入 AX暫存器中 MAX lmtL 比較 AX暫存器和 lmtH而將較高值存入 AX暫存器中 2所以直接可用MIN指令作上限保護而以MAX指令作下限保護兩者合併後即是

完整的飽和處理結果

飽和處理通常應用在高位數轉成低位數的場合例如32-bit轉換成16-bit或是16-bit

轉換成 12-bit 等等例如在本實驗中所有的運算都是以 16-bit 整數作處理但是到

PWM 驅動級輸出時卻要轉換成 12-bit精度的 PWM 命令所以必須先用飽和處理以避免

過溢現象造成的不穩定問題

32

61 實驗 1-開迴路的電壓控制 實驗說明以電壓直接控制轉速的開迴路特性可簡化為一階系統處理方塊圖如

sτ+1

v km ωm

其中V 送給驅動器的 PWM電壓命令

ωm馬達的轉動速度可由處理 photo encoder信號所得的位置微分而得 km一階系統的穩態增益 τ一階系統的時間常數即步階響應中的上升時間

為了觀測直流馬達的開環路特性建立下面的測試方塊圖

其中

1所使用的模組包括 FG1方波產生器產生所需的步階測試波形 FT1馬達模擬以一階系統的低通濾波器來執行 IO1光電盤的回授處理可同時取得轉角和速度的量測值 IO2PWM電壓驅動直接驅動直流馬達作控制 Led四位數字七段顯示模組顯示波形信號資料 2測試目標有兩項(P 參數設定欄)包括 A調整方波命令控制直流馬達作開環路的 PWM電壓控制 B調整馬達模擬參數使模擬結果和實驗結果相符以確認開環路特性

33

實驗畫面顯示如下

測試一 開環路的電壓控制 記錄頻道 CH1電壓命令Y1=-300DY=500 CH2模擬速度Y2=-100DY=500 CH3馬達速度Y3=100DY=50 CH4馬達轉角Y4=300DY=50000 實驗參數 FG1kAMP=256電壓命令的測試振幅 FG1kFRQ=150電壓命令的測試頻率 FT1DT =10 馬達模擬參數 FT1KA =500馬達模擬參數

其中

1用示波器功能記錄四個頻道其中 CH2和 CH3重疊顯示以比較模擬速度和量測

速度之間的差異 2由於 Km 不等於 1所以必須調整 CH3的 Y軸單位才能使得 CH2和 CH3的穩態響應部分重疊

3實驗時可以改變 FG1的參數以調整測試方波的振幅和頻率 4可以調整 FT1的參數使得 CH2和 CH3的暫態響應部分重疊

根據實際的測試結果分析如下

2馬達模擬的參數調整到 DT=10而 KA=500根據公式 τ = 40961000dtka 所以上升時間(τ)為 0082秒或是 82ms 3CH2CH3的 Y軸單位並不一致顯然 Km 不等於 1經計算確認 Km=0098

對應之 plc檔程式說明(exp_pwmplc) echo off 畫面顯示開始

run dsp 0 選擇 DSP1

run stop run reset 既有程式停止

run testDCMmem 下載指定程式

das 1 ampfg1out 0 1024 PWM 波形 Volt 設定 DAS 頻道1

das 2 ampft1lp 0 1024 馬達模擬 Volt 設定 DAS 頻道2

das 3 ampio1spd 0 1024 馬達速度 Volt 設定 DAS 頻道3

das 4 ampio1ang 0 1024 馬達角度 Volt 設定 DAS 頻道4

plot select 0 設定示波器頁數

plot xunit 100000 0 設定示波器 X軸

plot yunit 1 500 -300 設定示波器 Y1 軸

34

plot yunit 2 500 -100 設定示波器 Y2 軸

plot yunit 3 50 100 設定示波器 Y3 軸

plot yunit 4 50000 300 設定示波器 Y4 軸

plot trigger 1 0 1 10 設定示波器觸發

plot scope 9 1 2 3 4 設定示波器顯示

module io2 設定 io2 模組

s cmd ampfg1out

module fg1 設定 fg1 模組

s kAmp 256 s kFrq 150

module ft1 設定 ft1 模組

s u ampfg1out s dt 10 s ka 500

module io3 設定 io3 模組

s led ampfg1out

module 回復預設模組

run 1khz 設定抽樣頻率為 4KHz

run start DSP 開始執行

das stop pause 1 DAS 啟動 das start DAS 啟動

echo on 回復正常訊息顯示

使用者可視情況調整一階濾波器的 ka和 dt值使得 ch2和 ch3 兩組波形完全相符

以求得開迴路系統近似的一階轉移函數 CAI操控設計畫面規劃如下(EXP_PWMCAI) page 1 畫面設計

35

page 2 畫面設計 page 3 畫面設計

36

實測響應圖

訊 號 說 明 訊 號 說 明 ch1 方波產生器訊號 ch3 一階濾波器輸出信號 ch2 馬達角速度訊號 ch4 馬達角位置訊號

直流馬達之開迴路電壓控制響應圖

37

以邏輯分析功能觀測直流馬達之光電盤輸入與 PWM輸出信號

38

62 實驗 2-閉迴路的速度控制 實驗說明為了觀測閉迴路的速度控制響應建立下面的測試方塊圖

加入 PD控制後系統閉迴路的轉移函數經適度的簡化仍能約略以一階系統

處理方塊圖如下

sτ+1

u km ωm

其中

u 送給控制器的速度命令

ωm馬達的轉動速度可由處理 photo encoder 信號所得的位置微分而得

km一階系統的穩態增益 τ一階系統的時間常數即步階響應中的上升時間

方塊圖中的模組功能說明如下

1用 fg1 產生測試用的方波速度命令

2將方波速度命令和速度回授訊號送到 PD 控制器方塊中產生電壓控制訊號再透

過 io2 模組將訊號送出給伺服介面

3用 ft1 建立對照用的一階系統可用 IIR1濾波器方塊產生

4將方波命令產生速度命令再觀測 PHT(io1)上的速度值 spd

5調整 IIR1濾波器的參數使得兩組波形完全相符這時 IIR1濾波器就是閉迴路

速度控制的特性其中 km 為增益而τ為上升時間(單位為 sec)

6增益 km 可從示波器中作簡單計算而上升時間(τ=40964000dtka)

7 Led四位數字七段顯示模組顯示波形信號資料

39

對應之 plc檔程式說明(exp_speedplc) echo off 畫面顯示開始

run dsp 0 選擇 DSP1

run stop run reset 既有程式停止

run testDCMmem 下載指定程式

das 1 ampfg1out 0 1024 PWM 波形 Volt 設定 DAS 頻道1

das 2 ampft1lp 0 1024 馬達模擬 Volt 設定 DAS 頻道2

das 3 ampio1spd 0 1024 馬達速度 Volt 設定 DAS 頻道3

das 4 ampio1ang 0 1024 馬達角度 Volt 設定 DAS 頻道4

plot select 0 設定示波器頁數

plot xunit 100000 0 設定示波器 X軸

plot yunit 1 50 -300 設定示波器 Y1 軸

plot yunit 2 50 -100 設定示波器 Y2 軸

plot yunit 3 50 100 設定示波器 Y3 軸

plot yunit 4 50000 300 設定示波器 Y4 軸

plot trigger 1 0 1 10 設定示波器觸發

plot scope 9 1 2 3 4 設定示波器顯示

module io2 設定 io2 模組

s cmd ampcn2out

module fg1 設定 fg1 模組

s kAmp 50 s kFrq 150

module cn2 設定 cn1 模組

s cmd ampfg1out s fdk ampio1spd s kp 0x4000

module ft1 設定 ft1 模組

s u ampfg1out s dt 2 s ka 320

module io3 設定 io3 模組

s led ampfg1out

module 回復預設模組

run 1khz 設定抽樣頻率為 4KHz

run start DSP 開始執行

das stop pause 1 DAS 啟動 das start DAS 啟動

echo on 回復正常訊息顯示

CAI操控設計畫面規劃如下(EXP_speedCAI)

40

page 1 畫面設計 page 2 與 page 3 畫面設計與實驗一 page 2 與 page 3相同畫面 page 4 畫面設計

41

方塊的參數設定 使用者可視情況調整一階濾波器的 ka和 dt值使得 ch2和 ch3 兩組波形完全相符

以求得此一閉迴路系統近似的一階轉移函數或調整 PD控制器中的 kp和 kp值以調整系統之響應 實測響應圖

訊 號 說 明 訊 號 說 明 ch1 方波產生器產生之速度命令 ch3 一階濾波器輸出信號 ch2 馬達角速度訊號 ch4 馬達角位置訊號

42

直流馬達之閉迴路速度控制響應圖

43

63 實驗 3-閉迴路的位置控制 實驗說明為了觀測閉迴路的位置控制響應將直流馬達的回授改為位置訊號

建立下面的測試方塊圖 方塊圖中的模組功能說明如下

1用 fg1產生測試用的方波位置命令 2將方波位置命令和位置回授訊號送到 PD控制器方塊中產生電壓控制訊號再透過 io2模組將訊號送出到伺服介面驅動馬達轉動

對應之 plc檔程式說明(exp_angleplc) echo off 畫面顯示開始

run dsp 0 選擇 DSP1

run stop run reset 既有程式停止

run testDCMmem 下載指定程式

das 1 ampfg1out 0 1024 PWM 波形 Volt 設定 DAS 頻道1

das 2 ampft1lp 0 1024 馬達模擬 Volt 設定 DAS 頻道2

das 3 ampio1spd 0 1024 馬達速度 Volt 設定 DAS 頻道3

das 4 ampio1ang 0 1024 馬達角度 Volt 設定 DAS 頻道4

plot select 0 設定示波器頁數

plot xunit 100000 0 設定示波器 X軸

plot yunit 1 1000 -300 設定示波器 Y1 軸

plot yunit 2 1000 -100 設定示波器 Y2 軸

plot yunit 3 20 100 設定示波器 Y3 軸

plot yunit 4 1000 300 設定示波器 Y4 軸

plot trigger 1 0 1 10 設定示波器觸發

44

plot scope 9 1 2 3 4 設定示波器顯示

module io2 設定 io2 模組

s cmd ampcn2out

module fg1 設定 fg1 模組

s kAmp 1000 s kFrq 75

module cn2 設定 cn1 模組

s cmd ampfg1out s fdk ampio1ang s kp 0x300 s kd 0x4000

module ft1 設定 ft1 模組

s u ampfg1out s dt 2 s ka 320

module io3 設定 io3 模組

s led ampfg1out

module 回復預設模組

run 1khz 設定抽樣頻率為 4KHz

run start DSP 開始執行

das stop pause 1 DAS 啟動 das start DAS 啟動

echo on 回復正常訊息顯示

CAI操控設計畫面規劃如下(EXP_angleCAI) page 1 畫面設計

45

page 2 與 page 3 畫面設計與實驗一 page 2 與 page 3相同畫面 page 4 畫面設計與實驗二 page 4 畫面 方塊的參數設定 延續上一實驗的說明使用者可以調整 PD控制器中的 kp和 kd值以調整系統之

響應 實測響應圖

訊 號 說 明 訊 號 說 明 ch1 方波產生器產生之位置命令 ch3 馬達角速度訊號 ch2 馬達角位置 ch4 Pd控制器輸出之電壓訊號

46

直流馬達之閉迴路位置控制響應圖

47

64 實驗 4-加減速的位置控制 實驗說明為避免方波命令的過於嚴苛在方波命令的輸出加入一加減速控制功

能方塊以減緩命令變化的幅度增加馬達運動的平順建立的測試方塊圖如下

方塊圖中的模組功能說明如下

1用 fg1產生測試用的方波位置命令 2將方波位置命令送到加減速控制方塊處理後產生新的位置命令再將新的位置命

令與位置回授訊號送到 PD控制器方塊中產生電壓控制訊號最後透過 io2模組將訊號送出到伺服介面驅動馬達轉動

對應之 plc檔程式說明(exp_accplc) echo off 畫面顯示開始

run dsp 0 選擇 DSP1

run stop run reset 既有程式停止

run testDCMmem 下載指定程式

das 1 ampfg1out 0 1024 PWM 波形 Volt 設定 DAS 頻道1

das 2 ampcn1out 0 1024 加速控制 Volt 設定 DAS 頻道2

das 3 ampio1spd 0 1024 馬達速度 Volt 設定 DAS 頻道3

das 4 ampio1ang 0 1024 馬達角度 Volt 設定 DAS 頻道4

plot select 0 設定示波器頁數

plot xunit 100000 0 設定示波器 X軸

plot yunit 1 2000 -300 設定示波器 Y1 軸

plot yunit 2 2000 -100 設定示波器 Y2 軸

plot yunit 3 50 100 設定示波器 Y3 軸

plot yunit 4 2000 300 設定示波器 Y4 軸

48

plot trigger 1 0 1 10 設定示波器觸發

plot scope 9 1 2 3 4 設定示波器顯示

module io2 設定 io2 模組

s cmd ampcn2out

module fg1 設定 fg1 模組

s kAmp 2000 s kFrq 150

module cn1 設定 cn1 模組

s cmd ampfg1out

module cn2 設定 cn2 模組

s cmd ampcn1out s fdk ampio1ang s kp 0x300 s kd 0x4000

module ft1 設定 ft1 模組

s u ampfg1out s dt 2 s ka 320

module io3 設定 io3 模組

s led ampfg1out

module 回復預設模組

run 1khz 設定抽樣頻率為 4KHz

run start DSP 開始執行

das stop pause 1 DAS 啟動 das start DAS 啟動

echo on 回復正常訊息顯示

CAI操控設計畫面規劃如下(EXP_accCAI) page 1 畫面設計

49

page 2 畫面設計與實驗一 page 2相同畫面 page 3 畫面設計與實驗二 page 4相同畫面

參數設定參考之前各實驗的說明可線上機動性的調整 PD控制器中的 kp和 kd值以調整系統之響應 實測響應圖

訊 號 說 明 訊 號 說 明 ch1 方波產生器產生之位置命令 ch3 馬達角位置 ch2 加減速模組輸出之位置命令 ch4 馬達角速度訊號

50

圖一 直流馬達經加減速控制後之閉迴路控制響應圖

51

65 實驗 5-正弦波的位置控制 實驗說明在本實驗中改變命令的波形由方波改變為正弦波並建立如下的測

試方塊圖與上一實驗相比較僅更改命令的波形產生方塊 方塊圖中的模組功能說明如下 1用 fg2產生測試用的弦波位置命令 2將弦波位置命令送到加減速控制方塊處理後產生新的位置命令再與 io1 讀入的位

置回授訊號送到 PD 控制器方塊中產生電壓控制訊號再透過 io2 模組將訊號送出到伺服介面驅動馬達轉動

對應之 plc檔程式說明(exp_sinplc) echo off 畫面顯示開始

run dsp 0 選擇 DSP1

run stop run reset 既有程式停止

run testDCMmem 下載指定程式

das 1 ampfg2out 0 1024 SIN 波形 Volt 設定 DAS 頻道1

das 2 ampcn1out 0 1024 加速控制 Volt 設定 DAS 頻道2

das 3 ampio1spd 0 1024 馬達速度 Volt 設定 DAS 頻道3

das 4 ampio1ang 0 1024 馬達角度 Volt 設定 DAS 頻道4

plot select 0 設定示波器頁數

plot xunit 100000 0 設定示波器 X軸

plot yunit 1 2000 -300 設定示波器 Y1 軸

plot yunit 2 2000 -100 設定示波器 Y2 軸

plot yunit 3 50 100 設定示波器 Y3 軸

plot yunit 4 2000 300 設定示波器 Y4 軸

plot trigger 1 0 1 10 設定示波器觸發

52

plot scope 9 1 2 3 4 設定示波器顯示

module io2 設定 io2 模組

s cmd ampcn2out

module fg2 設定 fg1 模組

s kAmp 2000 s kFrq 100

module cn1 設定 cn1 模組

s cmd ampfg2out

module cn2 設定 cn2 模組

s cmd ampcn1out s fdk ampio1ang s kp 0x300 s kd 0x4000

module ft1 設定 ft1 模組

s u ampfg2out s dt 2 s ka 320

module io3 設定 io3 模組

s led ampfg2out

module 回復預設模組

run 1khz 設定抽樣頻率為 4KHz

run start DSP 開始執行

das stop pause 1 DAS 啟動 das start DAS 啟動

echo on 回復正常訊息顯示

CAI操控設計畫面規劃如下(EXP_sinCAI) page 1 畫面設計

53

page 2 畫面設計 page 3 畫面設計與實驗二 page 4相同畫面

方塊的參數設定可調整 PD控制器中的 kp和 kd值以調整系統之響應 實測響應圖

訊 號 說 明 訊 號 說 明 ch1 弦波產生器產生之位置命令 ch3 馬達角位置訊號 ch2 加減速模組輸出之位置命令 ch4 馬達角速度訊號

54

直流馬達之閉迴路弦波加減速位置控制響應圖

55

7組合語言說明

本節將針對 DC馬達伺服控制實驗專用的程式模組進行功能與程式碼的說明其

有關於波形產生器與資料擷取模組等說明如下

SIN_waveasm 正弦波產生器 PWM_waveasm 方波產生器 IIR1_filterasm 一階濾波器 DAS4asm 資料蒐集模組

弦波產生器

此模組會產生週期性的正弦波方塊圖如下

outfrq

kBiasbias

ampkAmp

kFrqth

kThf=1TB

θ

A

其中

1正弦波有四個參數振幅(A)頻率(F)相位(θ)和偏移(B)其公式為 out = A sin(2πF t +θ) + B 2對於單純的正弦波產生器所對映的參數包括 kAmp 振幅值 kFrq 頻率值kFrq=655368000Hz其中 Hz的範圍為 0~4000例如 1000Hz =gt frq=8192 100Hz =gt frq=819 10Hz =gt frq=82 1Hz =gt frq=8 kTh 相角值0~255代表 0~360的相位當 th=0 時為正弦波 th=64 時為餘弦波 th=128時為反相波依此類推 kBias偏移值 3對於可調變的正弦波產生器其對映的輸入點為 amp 控制振幅的輸入點可產生調幅(AM)波形 frq 控制頻率的輸入點可產生調頻(FM)波形 th 控制相位的輸入點可產生調相(PM)波形 bias控制偏移的輸入點可產生雙頻混波(相加)波形 4若不使用調變功能時各個輸入點時的預設值為 amp 指向 kAmp 的位址 frq 指向 kFrq 的位址

56

th 指向 kTh 的位址 bias指向 kBias的位址

模組程式範例SIN_WAVEasm

local amp R0 IP kAmp 輸入點sin波的振幅 local frq R1 IP kFrq 輸入點sin波的頻率 local th R2 IP kTh 輸入點sin波的相角 local bias R3 IP kBias 輸入點sin波的中心偏移 local out R4 OP 輸出點sin波輸出 local tab R5 TP 表格指標指向 sin[256]的表格 local ang R6 內部變數相位角65536=360deg local kAmp R7 1000 參數振幅值 local kFrq R8 1000 參數頻率值=655368000Hz local kTh R9 0 參數相角值360deg=256 local kBias R10 0 參數偏移值 data 11 模組變數區長度及初值 initial 啟動程序 WR ang0 WR out0 ang=out=0 RET timer 即時控制程序(8KHz) RD ang ADD (frq) WR ang ang+=frq SFR 8 ADD (th) AND 255 ACC=sin(ang256+th) ADD tab WRH RDM table-look-up MUL (amp) SFR 12 ADD (bias) WR out out=ACCamp4096+bias RET table tab 256 sin[256]表格區10=4096 0 101 201 301 401 501 601 700 00~070deg 799 897 995 1092 1189 1285 1380 1474 08~0F 1567 1660 1751 1842 1931 2019 2106 2191 10~17 2276 2359 2440 2520 2598 2675 2751 2824 18~1F 2896 2967 3035 3102 3166 3229 3290 3349 20~27 3406 3461 3513 3564 3612 3659 3703 3745 28~2F 3784 3822 3857 3889 3920 3948 3973 3996 30~37 4017 4036 4052 4065 4076 4085 4091 4095 38~3F 4096 4095 4091 4085 4076 4065 4052 4036 40~4790deg 4017 3996 3973 3948 3920 3889 3857 3822 48~4F 3784 3745 3703 3659 3612 3564 3513 3461 50~57 3406 3349 3290 3229 3166 3102 3035 2967 58~5F

57

2896 2824 2751 2675 2598 2520 2440 2359 60~67 2276 2191 2106 2019 1931 1842 1751 1660 68~6F 1567 1474 1380 1285 1189 1092 995 897 70~77 799 700 601 501 401 301 201 101 78~7F 0 65435 65335 65235 65135 65035 64935 64836 80~87180deg 64737 64639 64541 64444 64347 64251 64156 64062 88~8F 63969 63876 63785 63694 63605 63517 63430 63345 90~97 63260 63177 63096 63016 62938 62861 62785 62712 98~9F 62640 62569 62501 62434 62370 62307 62246 62187 A0~A7 62130 62075 62023 61972 61924 61877 61833 61791 A8~A8 61752 61714 61679 61647 61616 61588 61563 61540 B0~B7 61519 61500 61484 61471 61460 61451 61445 61441 B8~BF 61440 61441 61445 61451 61460 61471 61484 61500 C0~C7270deg 61519 61540 61563 61588 61616 61647 61679 61714 C8~CF 61752 61791 61833 61877 61924 61972 62023 62075 D0~D7 62130 62187 62246 62307 62370 62434 62501 62569 D8~DF 62640 62712 62785 62861 62938 63016 63096 63177 E0~E7 63260 63345 63430 63517 63605 63694 63785 63876 E8~EF 63969 64062 64156 64251 64347 64444 64541 64639 F0~F7 64737 64836 64935 65035 65135 65235 65335 65435 F8~FF

就程式結構而言說明如下

timer 即時控制程序(8KHz) RD ang ADD (frq) WR ang ang+=frq SFR 8 ADD (th) AND 255 ACC=sin(ang256+th) ADD tab WRH RDM table-look-up MUL (amp) SFR 12 ADD (bias) WR out out=ACCamp4096+bias RET

1基本上我們以查表法計算 sin()其輸入θ的範圍為 0~255對映到 0~360deg其輸出 sin(θ)的範圍為+-4096對映到+-10的範圍

2建立一個內部變數 ang其範圍為 0~65535對映到 0~360的相位角 3每個timer程序都執行 ang+=frq的動作更新目前的相位角接著依照 ang的相位角查表得到 sin(ang256+th)值

4由於表格長度為 256-word所以必須將 ang256才能得到正確的對映關係而 th範圍為 0~255所以不需要像 ang一般的做額外處理

5sin()的範圍為(+1-1)而在表格中以(+4096~-4096)的型式記錄相當於 10=4096所以執行 Asin()時還要用 SFR12指令做4096的動作才能正確的取得輸出值

58

6就頻率輸入 frq而言其計算原則是將θ=ωt轉化成θ=Σ(ωdt)因為抽樣頻率

為 8KHz所以 dt=18000而得到 frq=655368000Hz公式其中 Hz為真正的頻率在 8KHz的抽樣頻率下其範圍為 0~4000

鋸齒波產生器

此模組會產生週期性的鋸齒波方塊圖如下

outfrq

kBiasbias

ampkAmp

kFrqth

kThf=1TB

θ

A

其中

1鋸齒波也有四個參數振幅(A)頻率(F)相位(θ)和偏移(B)和正弦波的定義完全一致唯一的差異是其輸出為鋸齒波而非正弦波

2基本波形是從週期開始時為 0一直遞增到週期結束時到達最高點然後立刻回歸

到 0重新開始 3以程式結構而論鋸齒波程式幾乎就是正弦波的相位計算部分只差沒有正弦波的

查表處理而已

模組程式範例SAW_WAVEasm

local amp R0 IP kAmp 輸入點sin波的振幅 local frq R1 IP kFrq 輸入點sin波的頻率 local th R2 IP kTh 輸入點sin波的相角 local bias R3 IP kBias 輸入點sin波的中心偏移 local out R4 OP 輸出點sin波輸出 local ang R5 內部變數相位角65536=360deg local kAmp R6 1000 參數振幅值 local kFrq R7 1000 參數頻率值=655368000Hz local kTh R8 0 參數相角值360deg=256 local kBias R9 0 參數偏移值 data 11 模組變數區長度及初值 initial 啟動程序 WR ang0 WR out0 ang=out=0 RET timer 即時控制程序(8KHz) RD ang ADD (frq) WR ang ang+=frq SFR 8 ADD (th) AND 255 ACC=(ang256+th)amp0x00ff MUL (amp) SFR 8 ADD (bias) WR out out=ACCamp256+bias

59

RET

脈衝波產生器

outfrq

kBiasbias

ampkAmp

kFrqth

kThf=1TB

θ

A

pwm

kDutyduty

此模組會產生週期性的脈衝波方塊圖如下

其中

1脈衝波有五個參數其中振幅(A)頻率(F)相位(θ)和偏移(B)四個參數和正弦波

定義完全一樣另外再增加一個負載率(D) 2基本波形是從週期開始時為 1隔段時間後換為 0然後持續到週期結束再重新開始其中 1所佔有的比例就是負載率當 D=0時為 0而 D=255時為 100

3和其他參數類似負載率(D)以 duty為其輸入點而以 kDuty為其參數值

模組程式範例PLS_WAVEasm

local amp R0 IP kAmp 輸入點脈衝波的振幅 local frq R1 IP kFrq 輸入點脈衝波的頻率 local th R2 IP kTh 輸入點脈衝波的相角 local bias R3 IP kBias 輸入點脈衝波的中心偏移 local duty R4 IP kDuty 輸入點脈衝波的負載率 local out R5 OP 輸出點脈衝波輸出 local ang R6 內部變數相位角65536=360deg local kAmp R7 1000 參數振幅值 local kFrq R8 1000 參數頻率值=655368000Hz local kTh R9 0 參數相角值360deg=256 local kBias R10 0 參數偏移值 local kDuty R11 128 參數負載率100 =256 data 12 模組變數區長度及初值 initial 啟動程序 WR ang0 WR out0 ang=out=0 RET timer 即時控制程序(8KHz)

60

RD ang ADD (frq) WR ang ang+=frq SFR 8 ADD (th) AND 255 ACC=(ang256+th)amp0x00ff SUB (duty) RD (amp) JLT t1 RD 0 ACC=(amp0) t1 ADD (bias) WR out out=ACC+bias RET

IIR 一階濾波器

此模組執行一階的 IIR濾波器方塊圖如下

kau x

Z-1

+

+

-

+低通濾波器

高通濾波器dx lp

hp

濾波器參數的計算公式如下

1假設濾波器的頻寬為 hz則 ωn=hz628 2若系統頻率為 8KHz則抽樣週期 dT為 dT=dt8000 其中 dt為模組參數 3則濾波器參數為 ka=ωndT4096或是 =hzdt62880004096即 =hzdt32 4當 dt決定後所允許的訊號頻寬為(4000dt)換句話說訊號頻寬會因為 dt增加而下降

為了方便實驗的運用下面列出常用的參數對照表

濾波頻寬

(Hz)

10 20 50 100 200 500 1000 2000

訊號頻寬

(Hz)

400 800 2000 4000 4000 4000 4000 4000

模組參數 dt 10 5 2 1 1 1 1 1

模組參數 ka 320 320 320 320 640 1600 3200 6400

表格的運用方式如下

1首先決定濾波頻寬 2接著查表找出對映的參數 dt和 ka 3再查表得到對映的訊號頻寬以決定是否需要串接前級濾波器

61

模組程式範例IIR1_FILTERasm

local u R0 IP 輸入點濾波器輸入 local lp R1 OP 輸出點低通濾波器輸出 local hp R2 OP 輸出點高通濾波器輸出 local dt R3 1 參數抽樣週期 local ka R4 4096 參數增益 ka10=4096 local prd R5 內部變數抽樣週期用 data 6 模組變數區長度 initial 開機啟動程序 WR lp0 WR hp0 WR prd1 RET lp=hp=0prd=1 timer 即時控制程序 SUB prd1 JNZ b9 if (--prdgt0) return RD dt WR prd prd=dt RD (u) SUB lp WR hp hp=u-lp MUL ka SFR 12 ADD lp WR lp lp+=(hpka4096) b9 RET

資料蒐集模組

資料蒐集模組是一個非常特殊的模組專門配合 eTTY 程式中的示波器使用

模組程式範例DAS4asm

local cmd R0 0 紀錄命令0=停止1=前置記錄2=正觸發4=負觸發6=觸發記錄 local dt R1 1 抽樣週期每 dT抽樣一次 local tab R2 TP DAS表格啟始位址 local cnt R3 0 目前記錄點(0~255) local ch1 R4 0 定義頻道1的變數位址 local ch2 R5 0 定義頻道2的變數位址 local ch3 R6 0 定義頻道3的變數位址 local ch4 R7 0 定義頻道4的變數位址 local trg R8 0 定義觸發頻道的變數位址 local th R9 0 觸發準位 local tail R10 0 觸發後的抽樣個數 local buf R11 1 抽樣計數(1~dt) local pnt R12 表格位址計算pnt=tab+cnt4 local len R13 表格長度計算(0~256) data 14 定義模組變數區的長度 table tab 1024 定義表格的長度 initial 啟動程序 WR cmd0 RET cmd=0 timer 控制程序

62

ADD cmd0 JZ t9 if (cmd==0) return SUB buf1 JNZ t9 if (--buf)gt0) return RD dt WR buf dt=buf RD cnt ADD 1 AND 0xff WR cnt cnt=(cnt+1)amp0xff SFL 2 ADD tab WR pnt pnt=tab+cnt4 RD (ch1) WR (pnt) ADD pnt1 pnt++=ch1 RD (ch2) WR (pnt) ADD pnt1 pnt++=ch2 RD (ch3) WR (pnt) ADD pnt1 pnt++=ch3 RD (ch4) WR (pnt) pnt =ch4 RD cmd SUB 1 JZ t9 SUB 1 JZ t2 SUB 1 JZ t3 SUB 1 JZ t4 SUB 1 JZ t5 SUB 1 JZ t6 JR t7 t2 RD (trg) SUB th JGE t9 ADD cmd1 JR t9 wait trgltth t3 RD (trg) SUB th JLE t9 JR t6 wait trggtth t4 RD (trg) SUB th JLE t9 ADD cmd1 JR t9 wait trggtth t5 RD (trg) SUB th JGE t9 JR t6 wait trgltth t6 WR len0 WR cmd7 len=0cmd=7 t7 ADD len1 SUB tail JLT t9 WR cmd0 if ((++len)gt=0x80) cmd=0 t9 RET

與 DC 馬達控制相關的程式模組有以下 4個程式模組說明如下

(1)加減速控制模組 ACC_controlasm (2)光電盤輸入模組 POS_inputasm (3)PWM輸出模組 PWM_outputasm (4)PD控制模組 PD_controlasm

71加減速控制模組 此程式模組主要功能在於執行位置控制的加減速命令修正其數學模式採用 Lynn

濾波器的架構參見下圖

cmd

2

+

old Z -1

-

Z -1

Z -1

Z-1

Z-1x0 x1 x8 x9 x16

+ -

++

2

Z-1

Z-1 y1 y2

+

-

y0

+ +

sumZ-1

+164

12

out

dif

+

63

加減速控制模組方塊圖

其中

1Lynn 濾波器的階數固定成八階也就是 m=8其公式為 H(z) = (1-2Z-m+Z-2m)(1-2Z-1+Z-2)m2

2因為m=8所以m2=64因此最後計算低通濾波的部份時要先做除 64的運算 3因為低通濾波(lp)和 y0之間有 64倍的差異代表 y0y1y2的變化範圍比濾波器輸

入值要擴大許多例如輸入值在+-1000變化時y0y1y2很可能會在+-64000之間變化這範圍已經超出整數處理的範圍很可能會造成錯誤的計算結果

4所以在實驗時輸入值的變化範圍必須控制在+-500之間以保證計算的正確性 5對於 Lynn 濾波器當 m=8時其濾波器的頻寬固定為 1 kHzmdt也就是 dt=1時頻寬為 125 Hz dt=2時頻寬為 625Hz依此類推 6對於 Lynn 濾波器其濾波器的延遲固定為 m個抽樣週期因此設計 hp = x8 - lp 即可得到高通濾波器的對應結果 7其中乘 2和除 64的運算以移位運算取代所以整個程式中並無任何乘法運算 8Lynn 濾波器本身並不是穩定濾波器所以在程式啟動時必須確實的將所有狀態

(x0~x16)歸零否則會產生不穩定的狀態輸出

因為 Lynn濾波器中所有參數固定所以除了抽樣週期 dt 之外並無任何可調參數

抽樣週期 dt 可以控制頻寬dt 越大則濾波器頻寬越低

將步階命令值的輸出送入 Lynn 濾波器中經由低通濾波器的效應可以減緩命

令的變化程度達到加減速控制的目的以下為使用 Lynn 濾波器型式實現加減速控

制的組合語言程式列印 如欲更進一步瞭解 Lynn 濾波器與 FIR 數位濾波器之間的關係可以參考通訊實驗

四數位濾波器設計(FIR)中之說明

ACC_controlasm程式列印 local cmd R0 IP 輸入點位置命令

local out R1 OP 輸出點加減速處理後的位置命令

local dif R2 OP 輸出點位置微分命令

local axis R3 0 馬達編號0=X1=Y2=Z3=C

local old R4 內部變數微分計算用

local sumL R5 內部變數積分計算用

local sumH R6 內部變數積分計算用

local y0 R7 內部變數y(0~2)

local y1 R8 local y2 R9

local x0 R10 內部變數x(0~16)

local x1 R11 local x2 R12 local x3 R13 local x4 R14

local x5 R15 local x6 R16 local x7 R17 local x8 R18

local x9 R19 local x10 R20 local x11 R21 local x12 R22

local x13 R23 local x14 R24 local x15 R25 local x16 R26

64

data 27 模組變數區長度

initial 開機啟動程序

WR dif0 RD (cmd) WR out WR old dif=0 out=old=cmd

sumHL=cmd64

SFL 6 WR sumL RD out SFR 10 SGN 5 WR sumH

RPT 17 WR x00 RPT 3 WR y00 RET x[0~16]=0y[0~2]=0

timer 即時控制程序

RD (cmd) SUBX old WR x0 x0=cmd-old old=cmd

SUB x81 ADD x16 ADD y11 SUB y2 WR y0 y0=x0-2x8+x16+2y1-y2

SGN ADD sumL WR sumL RDH ADC sumH WR sumH sumHL+=y0

WRH RD sumL SFR 6 WR out out=sumHL64

RD y0 SGN SFR WR dif dif=y032mm

RD x0 RPT 16 RDX x1 x[i]=x[i-1] i=1~16

RD y0 RDX y1 WR y2 y[i]=y[i-1] i=1~2

b9 RET

72光電盤輸入模組

DC馬達的位置由光電盤量測之預設儲存於 0xac與 0xbe二個輸入埠位址中其中位址 0xac記錄 X軸馬達的位置位址 0xbe記錄 Y軸馬達的位置由於本實驗的DC馬達接在 Y軸的位置上因此程式中直接選用 Y軸的輸入 光電盤位置輸入的程式列印如下其中速度由位置的差分而得至於馬達的位置

則使用內部 2個 word加以記錄精度為 32位元 POS_inputasm程式列印 local spd R0 OP 輸出點速度量測值

local ang R1 OP 輸出點角度量測值

local angH R2 內部變數角度的 32 位元部分

local mode R3 0x308 模式選擇15MHzAB 相正反向輸入

local pht R4 0xac 輸入阜地址光電盤輸入(0xac)

local phtc R5 0xbe 輸入阜地址光電盤模式(0xbe)

local old R6 內部變數速度更新用

data 7 模組變數區長度

initial 開機啟動程序

RD mode WR (phtc) phtc=mode

RD (pht) WR old WR spd0 RET old=phtspd=0

timer 即時控制程序

RD (pht) SUBX old SGN 11 WR spd spd=(pht-old)old=pht

65

ADD ang WR ang angHL+=spd

RDH ADC angH WR angH

RET

73 PWM輸出控制模組 模組方塊

cmd PWM輸出

程式說明 1在開機時將切換保護時間寫到輸出阜 0xbc上其中切換保護值為 0~6360=5us 2在每次 timer interrupt時將 cmd訊號處理後寫到輸出阜 0xb8上

PWM_outputasm程式列印 local cmd R0 IP gnd 輸入點v相命令

local gain R1 4096 參數輸出增益1=4096

local bias R2 2048 參數輸出偏壓0=2048

local limit R3 4095 參數輸出極限1=4095

local zone R4 0x88f0 參數頻率=12KHz切換保護=5us

local pwm R5 0xb8 輸出阜地址PWM0 輸出(0xb8)

local mode R6 0xbc 輸出阜地址PWM 模式(0xbc)

local p0md R7 0xf8 輸出阜地址port0 模式(0xf8)

local gnd R8 0 輸入接地點

data 9 模組變數區長度

initial 開機啟動程序

RD bias WR (pwm) pwm=bias

RD 0xffff WR (p0md) set port0 mode

RD zone WR (mode) RET mode=zone

stop 關機保護程序

RD bias WR (pwm) RET pwm=bias

timer 即時控制程序

RD (mode) xor 1 and 1 WR (mode) trigger watch-dog

RD (cmd) MUL gain SFR 12 ADD bias ACC=(cmdgain4096)+bias

MAX 0 MIN limit WR (pwm) pwm=limit(ACC)

RET

66

74 PD 控制模組

PD控制的模組方塊參見圖二十一所示其中比例控制的部份直接由增益 kp加以調整微分控制的部份則由誤差的差分經增益 kd的調整而得

Σ+

-

cmd

fdk

err out

Σ

pk

dk

Σ

+

+

+

-

old1minusZ

PD控制器的方塊圖

PD_controlasm程式列印 local cmd R0 IP gnd 輸入點位置命令(可忽略)

local fdk R1 IP gnd 輸入點位置回授(可忽略)

local out R2 OP 輸出點用以控制速度迴路

local kp R3 256 參數增益 kp10=256

local kd R4 0 參數增益 kd10=256

local err R5 0 內部變數

local old R6 0 內部變數

local gnd R7 0 無輸入時的短路點

data 8 模組變數區長度

initial 開機啟動程序

WR out0 WR old0 RET out=old=0

timer 即時控制程序

RD (cmd) SUB (fdk) PRTF WR err

MUL kp SFR 8 P=(cmd-fdk)kp256

RDS err SUBX old MUL kd SFR 8 D=(err-old)kd256

ADDS

WR out out=P+D

RET

程式中預設增益值的 10以整數值 256為基底因此使用 SFR 8的指令加以調

整另外在在計算微分項的程式部份用到 SUBX old的指令其詳細的暫存器動作如

下 參考 piDSP的指令說明SUBX指令將總共用到 3個時序參考錯誤 找不到參照

67

來源在時序 1時將原先 AX的資料拷貝一份到 HX中時序 2時正式執行減

法的動作所以 AX暫存器中的內容會變成 err-old時序 3時DSP會將存放在 HX暫存器中的內容拷貝一份到 old的記憶體中也就是經由 SUBX此一精簡指令將

同時完成計算差分所需要的相減與資料疊代的動作有效的利用 piDSP控制器 DSP核心的精簡指令將可以大幅提昇系統的計算速度

HX AXoldSUBXerr err

old

err

errerr olderr minus

1_err

errerr olderr minus err

1_err

1

2

3

SUBX的指令時序與暫存器變化

68

8附錄快速安裝說明

光纖網路通訊 FPGA 發展系統 (適用於 WIN-XP200098 系統)

快速安裝說明

26Pin 負載輸出入埠

雙電源︵5

12

伏︶輸入埠

單電源︵5

伏︶輸入埠

USB

光纖線輸

號 光纖線輸出埠

入 傳 埠

首先將光碟片 RFFPGA 目錄檔案拷貝在您工作硬碟裡面

第一次安裝時先將 USB 傳輸線接上電腦主機將電源供應器接上 FPGA 模組此時電

腦會出現安裝 USB-Serial 驅動程式選擇從清單安裝此驅動程式放置在光碟片

RFFPGA-USBdrive 選擇您目前安裝系統

可選擇 WIN-98WIN-MEWIN-2000WIN-XP 系統配合您現在工作電腦作業系統

69

注意一般電腦 USB 埠很多插口當您安裝驅動程式時是配合您當時插入之埠

下次如您插入不同接口埠時電腦會再次要求安裝驅動程式這是正常現象請再次安

裝驅動程式否則無法使用

FPLC 操作

首先進入 RFFPGA裡子目錄 testASM直接點選 fPLCexe 出現下面操作畫面(也可直接將

此檔案放置桌面直接點選)

(或者選擇 File 再執行 Setuphellip 選擇您要執行 CAI 檔)

70

進入下面操作畫面 首先使用滑鼠在 FPGA下載按鈕單擊動作使 FPGA變成 DSP晶片 實驗一至實驗五皆為使用 DSP組合語言設計程式其原始程式分別為 testASM1至testASM5可使用 texPad 開啟與編輯程式內容 實驗三與實驗五多有 IO控制動作 當選擇實驗三時出現下面畫面

71

eM_USB 模組

數字型 LED

0 1 2 34 5 6 78 9 A BC D E F

燈號型 LED

44 鍵盤

ADC0 ADC1 DAC0 DAC1

LED 選擇KEY 選擇

模 式 1

0123

注意操作畫面 3與 4 說明開關與按鍵選擇位置後選擇程式下載再按程式啟動如您

按下 0-3按鍵時燈號型 LED會有不同方向閃爍顯示程式停止時結束所有 IO控制動作再按回首頁選擇其他實驗 實驗四與實驗五

模式3

0 1 2 34 5 6 78 9 A BC D E F

按照上面開關選擇直接操作如果以上實驗皆能按照正常操作表示您光纖網路通訊

FPGA發展模組以能正常使用 注意 開機與關機動作順序如下

開機電腦啟動 --- eM_USB 模組電源接上 --- USB 接上電腦 ---

啟動 FPLC 軟體 --- 下載 FPGA 程式

關機關閉 FPLC 軟體 --- eM_USB 模組電源拔掉 --- 拔掉電腦 USB 接頭 ---關掉

電腦

如果以上順序有亂可能造成 USB 找不到驅動造成無法下載經過幾次測試還是

無法下載建議重新啟動電腦主機按照正確步驟操作

72

FPGA 下載操作

進入 FPLC 操作系統按照下列步驟選擇節點模組與下載 bit FPGA 檔案

在 VHDLDEMO 子目錄下您可以選擇您目前 FPGA 種類型號在此型號下我們已將 VHDL

與數位邏輯設計課本範例全部放於此處

73

光纖網路連線 FPGA 下載操作

首先利用光纖線將 eM_USB0 模組光纖輸出埠接至 eM_USB1 模組光纖輸入埠以此

類推最後再將最後 eM_USBN 模組光纖輸出埠接至 eM_USB0 模組光纖輸入埠配置

如附圖方式

個人電腦(Windows) eM_USB模組

0USB

eM_USB模組1

光纖網路

eM_USB模組2

eM_USB模組N

配置完成後進入 FPLC 系統首先必須先將 Node00 下載在 testASM 子目錄裡

piDSPv0bit 檔讓 eM_USB0 模組 FPGA 具備 DSP 功能才能執行光纖網路通訊

操作如下

此時您就可以選擇分別下載至各模組 FPGA 檔 bit

74

安裝 FPLC 注意事項

當您進入 FPLC 時

按 FILE 選擇 programhellip 選擇檔案為 exp_dcmplc 出現下面畫面

正常顯示畫面為

75

DOS 環境操作

在 PC 端的操作是在 Windows 環境中的 DOS 視窗中執行指令範例如下

eFPGA progNETbit 下載 FPGA電路至網路節點0(即 USB節點)中 eFPGA testLEDbit 1 下載 FPGA電路至網路節點1中

對於單一節點的控制程序如下

1將 eM_USB模組連結個人電腦的 USB端 2eM_USB模組開機 3執行下載指令即可 eFPGA xxxxbit 4若要更改 FPGA電路只要重新執行下載指令即可

對於多個網路節點的控制程序如下

1第一組 eM_USB模組連結個人電腦的 USB端再以光纖網路依序其他各節點 2連接 USB界面者為模組0從光纖發射端連接出去的模組為1依此類推 3將所有 eM_USB模組開機 4執行下載指令如下 eFPGA progNETbit 模組0必須先下載指定的 FPGA電路 eFPGA xxxxbit 1 再依序下載其他網路模組的 FPGA電路 eFPGA yyyybit 2 eFPGA zzzzbit 最後再重新下載模組0的 FPGA電路 5換句話說模組0必須先執行 progNETbit讓光纖網路接受 FPGA控制後才能透過光纖網路下載至其他節點等全部網路節點下載完畢後再將模組0的 FPGA重新下載讓模組0也可自由執行任意的 FPGA電路

6若要更改某一個網路節點中的 FPGA電路只要重新執行下述指令 eFPGA progNETbit 模組0必須先下載指定的 FPGA電路 eFPGA yyyybit 2 下載指定網路模組的 FPGA電路 eFPGA zzzz bit 最後再重新下載模組0的 FPGA電路 換句話說除非模組0中的 FPGA已經包括光纖網路管理電路否則一定要先在

模組0中下載網路管理電路後才能下載指定網路節點的 FPGA電路

76

光纖網路通訊 FPGA 發展系統

系統配置

光纖網路通訊 FPGA 發展系統的系統配置圖如下

個人電腦(Windows) eM_USB模組

0USB

eM_USB模組1

光纖網路

eM_USB模組2

eM_USB模組N

其中

1基本模組為 eM_USB模組可用 USB界面和個人電腦連線並提供 USB對光纖網路的轉換功能使得個人電腦可以獨立控制光纖網路中的每個網路節點

2eM_USB模組也可以作為光纖網路中的網路節點透過光纖網路而接受個人電腦的

監控 3就個人電腦而言不論是 USB界面直接連結或是以光纖網路間接連結的 eM_USB模組都是可以直接監控的網路節點最多可以同時控制一個 USB節點和 30個網路節點

4對於每一個網路節點個人電腦都可執行 eM_USB模組中 FPGA的電路下載工作並在適當的 FPGA電路配合下可執行 eM_USB模組中 FPGA內部電路的讀寫控制 5透過適當的 FPGA電路設計各網路節點都可透過光纖網路和其他任何網路節點

作同步通訊執行 FPGA內部記憶體的資料交換資料交換頻率可達 1KHz以上

77

網路模組配置

每個網路模組的標準配置圖如下

eM_USB模組光纖網路

USB eM_FPGA卡

eM_DEMO模組

eM_EXP實驗模組

DC電源

其中

1網路模組以 eM_USB模組為主提供基本的 USB界面和光纖網路連線 2eM_USB模組中的 FPGACPLD採用插卡型式可選擇不同的 eM_FPGA卡包括

eM_2V1K卡可選用 Virtex系列的 XC2V250和 XC2V1000 eM_3S1K卡可選用 Spartan3系列的 XC3S400XC3S1000和 XC3S1500 eM_3S50卡可選用 Spartan3系列的 XC3S50XC3S200和 XC3S400 eM_95XL卡可選用 9500XL系列的 XC95144XL和 XC95288XL 3eM_USB模組中的對外連線有兩種一種是 26P接頭用以連接既有的各種實驗模

組另一種是兩組 50P接頭將 FPGA中各接腳引出用以連接專題實驗 4eM_DEMO模組就是插上 50P接頭的教學模組其中包括 LED 數字顯示和 44鍵盤也具備兩組的 ADC和兩組的 DAC接頭提供類比訊號的測試工具

常用的實驗組合包括

1精簡組合包括(eM_USB+eM_FPGA)提供基本的網路節點適用於專題實驗 2標準組合包括(eM_USB+eM_FPGA+eM_DEMO)提供基礎 FPGA設計的教學實驗

3實驗組合包括(eM_USB+eM_FPGA+eM_DEMO+eM_EXP)提供進階的 FPGA實驗可依需求選用不同的實驗模組

78

eM_USB 模組

eM_USB 模組的電路配置圖如下

TxRx

DCPower

USB

JP2

JP3

光纖界面

外加電源

PC連線

JP1

eM_FPGA模組

FT232 CPLD FlashROM

SRAM

10cm

6cm

JP4

其中

1對外的連線接頭包括 DC電源 可選擇單電源(5V)或是多電源(5V+12V-12V)兩種 USB界面 直接連接個人電腦 光纖界面連接光纖網路 2實驗界面包括 JP1負責內部 CPLD的電路下載 JP2JP3兩組 50P的擴張用接頭 JP4 標準 26P接頭用以連接各種實驗模組 3內部的電路配置包括 A以 SO-DIMM接頭連接各種 eM_FPGA卡 B內附 EEPROMFlashROM和 SRAM提供 FPGA作應用測試 C以一顆 FT232BM作為 USB界面解碼而以一顆 CPLD作為光纖網路解碼 D提供各種 eM_FPGA卡的電路下載功能 4內附五顆 LED由上而下依序為 usbLED指示 USB界面的讀寫狀態 tstLED可由 FPGA電路自行定義 stsLED可由 FPGA電路自行定義 RxLED 可由 FPGA電路自行定義 TxLED 可由 FPGA電路自行定義

79

外部接腳定義

外部接頭的接點順序圖示如下

上視圖

JP11 9 JP4

126225

JP31

50249

JP21

50249

而各接頭的接點定義如下

JP1 JP4 JP2 JP3 1+33V 1+12V 2+12V 1 GND 2 GND 1 GND 2 GND 2GND 3 ADC 4 DAC 3POWER 4ALARM 3 +5V 4 +5V 3nc 5 yPB2 6 yPB3 5RxNET 6TxNET 5+12V 6+12V 4TCK 7 yPB1 6 yPB4 7RxUSB 6TxUSB 7-12V 6-12V 5nc 9 yPB0 10yPB5 9RxCAN 10TxCAN 9 ADC 10 DAC 6TDO 11yPB6 12yPB7 11P0D0 12P0D1 11P1D0 12P1D1 7TDI 13yGND 14yPC3 13P0D2 14P0D3 13P1D2 14P1D3 8nc 15yPC2 16yPC1 15P0D4 16P0D5 15P1D4 16P1D5 9TMS 17yPC0 18yPA0 17P0D6 18P0D7 17P1D6 18P1D7 19yPA1 20yPA2 19P0D8 20P0D9 19P1D8 20P1D9 21yPA3 22GND 21P0D10 22P0D11 21P1D10 22P1D11 23GND 24+5V 23P0D12 24P0D13 23P1D12 24P1D13 25+5V 26nc 25P0D14 26P0D15 25P1D14 26P1D15 27P2D0 28P2D1 27PxA0 28PxA1 29P2D2 30P2D3 29PxA2 30PxA3 31P2D4 32P2D5 31PxA4 32PxA5 33P2D6 34P2D7 33PxA6 34PxA7 35P2D8 36P2D9 35PxB0 36PxB1 37P2D10 38P2D11 37PxB2 38PxB3 39P2D12 40P2D13 39PxB4 40PxB5 41P2D14 42P2D15 41PxB6 42PxB7 43ADC0 44ADC1 43PxC0 44PxC1 45ADC2 46ADC3 45PxC2 46PxC3 47ADC4 48ADC5 47PxC4 48PxC5 49DAC0 50DAC1 49PxC6 50PxC7

80

eM_FPGA 模組

在各種 eM_FPGA 模組中FPGA 對外電路的標準配置圖如下

24576MHz

FlashROM

26PSRAM

EEPROM

mD[8]

yPA[4]

FPGACPLD

mA[19]mRDmWRmCSeeCKeeCSeeDIeeDO

光纖界面 RxNETTxNET

USB 界面 RxUSBTxUSBCLK24MPOWERALARM

LED

tstLEDstsLEDRxLEDTxLED

yPB[8]yPC[4]

ADCDAC

ADC[8]

實驗模組

ADC[2]

DAC[2]

xPA[4]

xPB[8]

xPC[4]

基礎實驗

其中

1FPGACPLD可以選擇下述幾種 XC2V250XC2V1000 採用 eM_2V1K模組其中 FPGA為 FG456包裝 XC3S400XC3S1000XC3S1500採用 eM_3S1K模組其中 FPGA為 FG456包裝 XC3S400XC3S1000XC3S1500採用 eM_3S1K模組其中 FPGA為 FG456包裝 XC3S50XC3S200XC3S400 採用 eM_3S50模組其中 FPGA為 TQ144包裝 XC95144XLXC95288XL 採用 eM_95XL模組其中 CPLD為 TQ144包裝 2採用 FG456包裝者可以控制所有的 IO界面 3採用 TQ144包裝者只是不能控制 RAM和 FlashROM而可以控制其他所有的界面 4所有 FPGA模組都可自由選擇由 USB界面或是由光纖界面下載電路但是 CPLD模組只能固定由 USB界面下載電路

5所有 FPGACPLD模組都可透過 26P接頭連接既有的各種實驗模組

81

FPGA 接腳對照表

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

mD0 XD6 mD0 A17 C13 -- -- mD1 XD7 mD1 B17 D12 -- -- mD2 XD8 mD2 C17 D11 -- -- mD3 XD9 mD3 D17 C11 -- -- mD4 XD10 mD4 E17 D10 -- -- mD5 XD11 mD5 E16 C10 -- -- mD6 XD12 mD6 E14 D9 -- -- mD7 XD13 mD7 E13 D7 -- -- mA0 XD14 mA0 D13 C7 -- -- mA1 XD15 mA1 C13 D6 -- -- mA2 XA0 mA2 V5 C3 -- -- mA3 XA1 mA3 U5 C4 -- -- mA4 XA2 mA4 Y2 D3 -- -- mA5 XA3 mA5 Y1 D4 -- -- mA6 XA4 mA6 V4 E3 -- -- mA7 XA5 mA7 V3 E4 -- -- mA8 XA6 mA8 W2 F3 -- -- mA9 XA7 mA9 W1 F4 -- -- mA10 XA8 mA10 T2 G6 -- -- mA11 XA9 mA11 T1 K3 -- -- mA12 XA10 mA12 R4 K10 -- -- mA13 XA11 mA13 R3 L3 -- -- mA14 XA12 mA14 R2 L4 -- -- mRD XRD mRD R1 D5 -- -- mWR XWR mWR P6 C6 -- --

POWER P0A0 POWER B4 B20 P1 P5 ALARM P0A1 ALARM A4 A19 P2 P6 RxNET P0A2 RxNET C4 B19 P4 P7 TxNET P0A3 TxNET C5 A18 P5 P9 RxUSB P0B0 RxUSB B5 A15 P6 P10 TxUSB P0B1 TxUSB A5 B15 P7 P11 RxCAN P0B2 RxCAN D6 A14 P8 P12 RxCAN P0B3 TxCAN C6 B14 P10 P13

CLK24M CLK24M CLK24M E12 B12 P124 P38

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

PWM0H P3A0 P0D0 E6 A8 P21 P23 PWM0L P3A1 P0D1 E5 B8 P23 P24 PWM1H P3A2 P0D2 C2 B6 P24 P25 PWM1L P3A3 P0D3 C1 A5 P25 P26 PWM2H P3A4 P0D4 D2 B5 P26 P27

82

PWM2L P3A5 P0D5 D1 A4 P27 P28 PWMenb P3A6 P0D6 E4 B4 P28 P30 PHT1Z P3A7 P0D7 E3 A3 P30 P31 PHT1A P3B0 P0D8 G2 C1 P31 P32 PHT1B P3B1 P0D9 G1 C2 P32 P33 PHT0A P3B2 P0D10 H5 D1 P33 P34 PHT0B P3B3 P0D11 J6 D2 P35 P35 AMP0 P3B4 P0D12 H4 E1 P36 P39 AMP1 P3B5 P0D13 H3 E2 P40 P40 AMP2 P3B6 P0D14 H2 F2 P41 P41 AMP3 P3B7 P0D15 H1 G1 P44 P43 eeSK P0C3 P1D0 C10 B9 P20 P22 eeCS P0C2 P1D1 D10 A9 P18 P21 eeDI P0C1 P1D2 F10 B10 P17 P20 eeDO P0C0 P1D3 E10 B11 P15 P19 ssCK P0B7 P1D4 E8 A11 P14 P17 ssCS P0B6 P1D5 E7 A12 P13 P16 ssDI P0B5 P1D6 A6 B13 P12 P15 ssDO P0B4 P1D7 B6 A13 P11 P14

ppCLK P3C0 P1D8 K4 G2 P46 P44 ppDIN P3C1 P1D9 K3 K1 P47 P45 TxD P3C2 P1D10 K2 K2 P50 P46 RxD P3C3 P1D11 K1 L1 P51 P48

tstLED P3C4 P1D12 L5 L2 P52 P49 stsLED P3C5 P1D13 L4 M1 P53 P50 RxLED P3C6 P1D14 L3 M2 P55 P51 TxLED P3C7 P1D15 L2 N1 P56 P52

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

xPA0 P2A0 P2D0 AA3 N2 P59 P53 xPA1 P2A1 P2D1 Y4 T1 P60 P54 xPA2 P2A2 P2D2 AA4 T2 P63 P56 xPA3 P2A3 P2D3 AB4 U2 P68 P57 xPC0 P2A4 P2D4 W5 V1 P69 P58 xPC1 P2A5 P2D5 Y5 V2 P70 P59 xPC2 P2A6 P2D6 AA5 W1 P73 P60 xPC3 P2A7 P2D7 AB5 W2 P74 P61

-- P2B0 P2D8 V6 Y1 P76 P64 -- P2B1 P2D9 V7 Y2 P77 P66 -- P2B2 P2D10 W6 AA3 P78 P68

mCS P2B3 P2D11 Y6 AB4 P79 P69 mA15 P2B4 P2D12 V9 AA4 P80 P70 mA16 P2B5 P2D13 V10 AB5 P82 P71 mA17 P2B6 P2D14 W10 AA5 P83 P74 mA18 P2B7 P2D15 Y10 AA6 P84 P75 CS0 P2C0 ADC0 AA10 AB8 P85 P76

83

SDIN0 P2C1 ADC1 AB10 AA8 P86 P77 CS1 P2C2 ADC2 U10 AB9 P87 P78

SDIN1 P2C3 ADC3 U11 AA9 P89 P79 SCLK P2C4 ADC4 V11 AB10 P90 P80 CS2 P2C5 ADC5 W11 AA10 P92 P81

SDOUT P2C6 ADC6 Y11 AB11 P93 P82 LDAC P2C7 ADC7 AA11 AA11 P95 P83

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

xPB0 P1A0 PxA0 M1 M3 P135 P85 xPB1 P1A1 PxA1 M2 M4 P132 P86 yPB2 P1A2 PxA2 M3 N3 P131 P87 yPB3 P1A3 PxA3 M4 N4 P130 P88 yPB1 P1A4 PxA4 M5 T4 P129 P91 yPB4 P1A5 PxA5 M6 T5 P128 P92 yPB0 P1A6 PxA6 N1 U3 P127 P93 yPB5 P1A7 PxA7 N2 U4 P125 P94 yPB6 P1B0 PxB0 U13 V3 P119 P95 yPB7 P1B1 PxB1 V13 V4 P118 P96 xPB2 P1B2 PxB2 W13 W3 P116 P97 xPB3 P1B3 PxB3 Y13 W4 P113 P98 xPB4 P1B4 PxB4 AA13 Y3 P112 P100 xPB5 P1B5 PxB5 AB13 Y4 P96 P101 yPC3 P1B6 PxB6 U12 Y5 P97 P102 yPC2 P1B7 PxB7 V12 W5 P98 P103 yPC1 P1C7 PxC0 AB17 W11 P108 P113 yPC0 P1C6 PxC1 AA17 Y11 P107 P112 yPA0 P1C5 PxC2 Y17 W10 P105 P111 yPA1 P1C4 PxC3 W17 Y10 P104 P110 yPA2 P1C3 PxC4 AB18 W9 P103 P107 yPA3 P1C2 PxC5 AA18 W8 P102 P106 xPB6 P1C1 PxC6 Y18 W6 P100 P105 xPB7 P1C0 PxC7 W18 Y6 P99 P104

84

eM_DEMO 模組

eM_DEMO 模組的電路配置圖如下

eM_USB 模組

數字型 LED

0 1 2 34 5 6 78 9 A BC D E F

燈號型 LED

44 鍵盤

ADC0 ADC1 DAC0 DAC1

LED 選擇KEY 選擇

其中

1eM_DEMO模組的基本功能包括 A將 xPAxPBxPC等 16個 IO訊號引出控制 LED和鍵盤電路 B將 ADDA訊號引出並放大成+-10V的工作範圍 2LED和鍵盤可以選擇三種模式由 LED和 KEY 兩組開關作選擇圖示如下

模式1

0123

模式2 模式3

0 1 2 34 5 6 78 9 A BC D E F

0123

3模式14鍵輸入並搭配 16點的 LED燈號顯示其中 16點 LED分別對映到 xPA[0~3]xPB[0~7]和 xPC[0~3] 4組按鍵分別對映到 xPC[0~3] 4模式24鍵輸入並搭配四個 7段式數字顯示其中 數字顯示由 xPA[0~3]作數字掃瞄而由 xPB[0~7]作 7段式 LED控制 4組按鍵 分別對映到 xPC[0~3] 5模式316鍵輸入並搭配四個 7段式數字顯示其中 數字顯示由 xPA[0~3]作數字掃瞄而由 xPB[0~7]作 7段式 LED控制 16組按鍵由 xPA[0~3]作鍵盤掃瞄而由 xPC[0~3]作鍵盤讀取 6根據VHDL與數位邏輯設計的章節其中 第 1章至 10章的實驗採用模式1而 第 11章實驗採用模式2而 第 12章之後的實驗都採用模式3

85

FPGA UCF 定義

eM_3S1K 模組

NET CLK LOC = B12

NET XAlt0gt LOC = N2

NET XAlt1gt LOC = T1

NET XAlt2gt LOC = T2

NET XAlt3gt LOC = U2

NET XBlt0gt LOC = M3

NET XBlt1gt LOC = M4

NET XBlt2gt LOC = W3

NET XBlt3gt LOC = W4

NET XBlt4gt LOC = Y3

NET XBlt5gt LOC = Y4

NET XBlt6gt LOC = W6

NET XBlt7gt LOC = Y6

NET XClt0gt LOC = V1

NET XClt1gt LOC = V2

NET XClt2gt LOC = W1

NET XClt3gt LOC = W2

NET YAlt0gt LOC = W10

JP4 接頭

NET YAlt1gt LOC = Y10

NET YAlt2gt LOC = W9

NET YAlt3gt LOC = W8

NET YBlt0gt LOC = U3

NET YBlt1gt LOC = T4

NET YBlt2gt LOC = N3

NET YBlt3gt LOC = N4

NET YBlt4gt LOC = T5

NET YBlt5gt LOC = U4

NET YBlt6gt LOC = V3

NET YBlt7gt LOC = V4

NET YClt0gt LOC = Y11

NET YClt1gt LOC = W11

NET YClt2gt LOC = W5

NET YClt3gt LOC = Y5

在光碟片中 RFFPGAVHDLDEMOBIT3S1K 裡有 VHDL 與數位邏輯設計書本範例原始檔與合成檔

86

eM_3S50 模組

NET CLK LOC = P124

NET XAlt0gt LOC = P59

NET XAlt1gt LOC = P60

NET XAlt2gt LOC = P63

NET XAlt3gt LOC = P68

NET XBlt0gt LOC = P135

NET XBlt1gt LOC = P132

NET XBlt2gt LOC = P116

NET XBlt3gt LOC = P113

NET XBlt4gt LOC = P112

NET XBlt5gt LOC = P96

NET XBlt6gt LOC = P100

NET XBlt7gt LOC = P99

NET XClt0gt LOC = P69

NET XClt1gt LOC = P70

NET XClt2gt LOC = P73

NET XClt3gt LOC = P74

NET YAlt0gt LOC = P105

JP4 接頭

NET YAlt1gt LOC = P104

NET YAlt2gt LOC = P103

NET YAlt3gt LOC = P102

NET YBlt0gt LOC = P127

NET YBlt1gt LOC = P129

NET YBlt2gt LOC = P131

NET YBlt3gt LOC = P130

NET YBlt4gt LOC = P128

NET YBlt5gt LOC = P125

NET YBlt6gt LOC = P119

NET YBlt7gt LOC = P118

NET YClt0gt LOC = P107

NET YClt1gt LOC = P108

NET YClt2gt LOC = P98

NET YClt3gt LOC = P97

在光碟片中 RFFPGAVHDLDEMOBIT3S200 裡有VHDL與數位邏輯設計書本範例原始檔與合成檔

87

eM_95XL 模組

NET CLK LOC = SPIN38

NET XAlt0gt LOC = SPIN53

NET XAlt1gt LOC = SPIN54

NET XAlt2gt LOC = SPIN56

NET XAlt3gt LOC = SPIN57

NET XBlt0gt LOC = SPIN85

NET XBlt1gt LOC = SPIN86

NET XBlt2gt LOC = SPIN97

NET XBlt3gt LOC = SPIN98

NET XBlt4gt LOC = SPIN100

NET XBlt5gt LOC = SPIN101

NET XBlt6gt LOC = SPIN105

NET XBlt7gt LOC = SPIN104

NET XClt0gt LOC = SPIN58

NET XClt1gt LOC = SPIN59

NET XClt2gt LOC = SPIN60

NET XClt3gt LOC = SPIN61

NET YAlt0gt LOC = SPIN111

JP4 接頭

NET YAlt1gt LOC = SPIN110

NET YAlt2gt LOC = SPIN107

NET YAlt3gt LOC = SPIN106

NET YBlt0gt LOC = SPIN93

NET YBlt1gt LOC = SPIN91

NET YBlt2gt LOC = SPIN87

NET YBlt3gt LOC = SPIN88

NET YBlt4gt LOC = SPIN92

NET YBlt5gt LOC = SPIN94

NET YBlt6gt LOC = SPIN95

NET YBlt7gt LOC = SPIN96

NET YClt0gt LOC = SPIN112

NET YClt1gt LOC = SPIN113

NET YClt2gt LOC = SPIN103

NET YClt3gt LOC = SPIN102

在光碟片中 RFFPGAVHDLDEMOSVF95288XL 裡有VHDL與數位邏輯設計書本範例原始檔與合成

檔案

88

eM_FPGA 模組

NET CLK LOC = E12

NET XAlt0gt LOC = AA3

NET XAlt1gt LOC = Y4

NET XAlt2gt LOC = AA4

NET XAlt3gt LOC = AB4

NET XBlt0gt LOC = M1

NET XBlt1gt LOC = M2

NET XBlt2gt LOC = W13

NET XBlt3gt LOC = Y13

NET XBlt4gt LOC = AA13

NET XBlt5gt LOC = AB13

NET XBlt6gt LOC = Y18

NET XBlt7gt LOC = W18

NET XClt0gt LOC = W5

NET XClt1gt LOC = Y5

NET XClt2gt LOC = AA5

NET XClt3gt LOC = AB5

NET YAlt0gt LOC = Y17

JP4 接頭

NET YAlt1gt LOC = W17

NET YAlt2gt LOC = AB18

NET YAlt3gt LOC = AA18

NET YBlt0gt LOC = N1

NET YBlt1gt LOC = M5

NET YBlt2gt LOC = M3

NET YBlt3gt LOC = M4

NET YBlt4gt LOC = M6

NET YBlt5gt LOC = N2

NET YBlt6gt LOC = U13

NET YBlt7gt LOC = V13

NET YClt0gt LOC = AA17

NET YClt1gt LOC = AB17

NET YClt2gt LOC = V12

NET YClt3gt LOC = U12

在光碟片中 RFFPGAVHDLDEMOBIT2V250 裡有VHDL與數位邏輯設計書本範例原始檔與合成檔

89

Page 7: RFFPGA 直流馬達實驗手冊juniortek.com.tw/program/manual/RF-DC-mal.pdf · em_demo模組 em_dcm 直流伺服馬達 dc電源 rffpga 系統的直流馬達實驗規劃 其中包括:

假設在某種轉速下馬達需要的電壓輸出為 5V而電流為 1A那麼就產生了(5V1A=5W)

的功率輸出由於線性放大器的電流完全由電源供應器提供所以電源電流也是 1A在

15V 的電源電壓下驅動級的功率為(15V1A=15W)當有 15W 的功率進入驅動級而只

有 5W 的功率流出驅動級代表其中 10W 的功率浪費掉了在能量不滅的定律下功率

是不會憑空消失的這意味著這 10W 的功率已經變成了熱能使得驅動級發燙起來還

得另外設法散熱

在兩種狀況下會造成最小的功率消耗一種是最大電壓輸出(全開)狀況一種是零電

流輸出(全關)狀況說明如下

1當最大電壓輸出時假設輸出電壓為 15V輸出電流為 1A則 輸出功率為(15V1A=15W) 輸入功率為(15V1A=15W) 所以驅動級的消耗功率為(15W-15W=0W) 2當零電流輸出時假設輸出電壓為 0V輸出電流為 0A則 輸出功率為( 0V0A=0W) 輸入功率為(15V0A=0W) 所以驅動級的消耗功率為(0W-0W=0W)

當然真實的電路不會那麼理想但是這種特殊工作點的選擇的確會讓驅動電路變得非

常有效率

PWM 脈寬調變

脈寬調變電路(Pulse Width Modulation簡稱 PWM)就是利用全開和全關的兩種最佳效

率點所設計的電路

就 PWM 驅動器本身而言只有全開和全關的兩種控制模式假設我們還是需要 5V 和 1A

的輸出控制需求那麼就可以控制全開的比率(即工作率 Duty-Cycle)為 13 週期使得

輸出的平均電壓維持在 5V 的準位如下圖所示

Vin Vout

V+

V-

線性放大器

因為輸出只有全開或全關的兩種狀態如果再使用昂貴的線性放大器就太浪費了這時只要用

最簡單的開關放大器就可以辦到了最基本的開關放大器有下述兩種

7

V+

單向控制

V+

A

AB

B

A雙向控制

單向控制結構只能控制直流馬達做單方向的運轉而由 PWM 控制馬達的轉速雙向控制

在速度之外還可以控制馬達作正反轉通常用來執行直流馬達的位置控制用

PWM 的控制波形非常簡單就是產生一組平均值為指定電壓的波形也就是控制所謂的

工作率(Duty-Cycle)定義如下

平均電壓 = Ton (Ton + Toff) 電源電壓 = 工作率 電源電壓

但是由於波形上的微小差異細分起來還是有下面三種型式

前緣對齊型

10 1010

30 30 30

50 50 50

中間對齊型 後緣對齊型

如果只有一組 PWM 波形輸出無論採用哪種波形都沒有差異只有當多個 PWM 波形要同

時輸出(例如交流馬達作三相控制)時才需要選擇中間對齊的型式作處理以免造成相

位失真的現象

在電路設計上都是產生一組參考波來和電壓命令作比較當電壓命令大於參考波時就

送出 1小於參考波時就送出 0如此就形成 PWM 波形其差別只是採用何種參考波作

比較

前緣對齊型

70

中間對齊型 後緣對齊型

70

以上圖為例要產生前緣對齊型的 PWM 訊號就採用遞增型鋸齒波若採用遞減型鋸齒

波就會產生後緣對齊型的 PWM 訊號採用前後對稱的三角波就會產生中間對齊型的

PWM 訊號

8

PWM切換保護

對於單一線圈的負載而言PWM切換電路的電路方塊圖如下

負載

正電源

負電源

PWM+

PWM-

P

N

其中

1以兩組電晶體來分別控制正負電源其中的電晶體依據功率需求可選擇功率電晶體

MOSFET或是 IGBT不論哪種選擇其控制原理都一致 2將 PWM訊號分成正向和反向的兩組控制訊號PWM+控制正電源的導通與否而

PWM-控制負電源的導通與否 3切換組合包括 P=OFFN=OFF負載和電源隔離 P=ON N=OFF負載連接上正電源 P=OFFN=ON 負載連接上負電源 P=ON N=ON 正負電源短路這時功率驅動級將瞬間燒毀

原則上只要將 PWM+和 PWM-間的邏輯反向是不可能發生兩者都 ON 的情況但是再考慮

功率電晶體(包括電晶體MOSFET 和 IGBT)的暫態響應電晶體 OFF 的反應時間通常比

電晶體 ON 的反應時間要長一些所以在切換瞬間很可能產生兩者都導通的瞬間狀態

這時可能有兩種結果

1兩者同時導通的時間稍長時功率驅動級將瞬間產生過電流而燒毀 2兩者同時導通的時間非常短這時功率驅動級雖不至於瞬間燒毀但是會產生很高

的熱量使得功率驅動級的溫度快速加高甚至於因為過熱而燒毀

因此 PWM 控制必須加上切換保護其示意圖如下

PWM+ PWM-

切換保護

其中

1基本上PWM-只是 PWM+的反向訊號兩者都由一組 PWM訊號控制 2但是在 ONOFF 切換的瞬間必須加上一段兩者都 OFF的時間這段時間的長度

可依照功率電晶體的 ONOFF特性來設定在 1us~4us之間

9

PWM 啟動保護

在系統開機時很不容易保證各個元件都能依照順序依序啟動因此在系統啟動時必須

自動將 PWM 輸出關掉直到系統完成整個開機程序後才能再將 PWM 訊號重新啟動一

般而言啟動程序如下

1系統開機後功率驅動級通常最快啟動這時 PWM必須保持在 OFF 狀態避免系

統誤動或短路 2之後依次啟動 BIOSLinux網路最後才啟動應用程式 3應用程式啟動後必須依序 A下載 FPGA B下載 DSP控制軟體 C啟動 DSP控制軟體 在啟動 DSP控制軟體後才能重新開啟 PWM的動作 4任何時間中只要 DSP控制停止就必須立刻關閉 PWM控制以避免誤動或短路

所以 PWM 啟動保護是由 DSP 程式直接控制其必要程序包括

1FPGA電路下載完畢並執行工作中 2DSP程式下載完畢並執行工作中

其中任何一個部分停止都必須立刻關閉 PWM 控制一般而言這部分電路都由看護犬

(watch-dog)電路管理而由 DSP 程式負責驅動

DCM 實驗模組

DCM 模組是一個完整的直流馬達實驗機台系統方塊圖如下

YA1

切換保護

YA2

YC0

馬達

PHTA PHTB

PWM+

DIS

YA0 PWM-

+12VSW

YC1

JP4 A

AB

B

雙向控制

光電盤

A

B

其中

1採用雙向控制的 PWM功率驅動級來驅動直流馬達可控制馬達正反轉 2功率驅動級中已有切換保護其控制訊號包括

10

PWM+ PWM- DIS 直流馬達 X X 1 OFF 1 0 0 正電壓驅動 0 1 0 負電壓驅動

3功率驅動級中並沒有啟動保護所以必須附加電源開關作手動控制 4馬達轉角由光電盤的 AB相訊號作回授 5所有控制訊號都經由 JP4接頭接到 RFFPGA控制器中可由 FPGA作控制

三角波產生器

實驗中以中間對齊型的 PWM 訊號為控制目標首先建立對稱的三角波作為參考訊號其

對映的 VHDL 程式範例如下

TRIANGLE_WAVE block signal Q STD_LOGIC_VECTOR (11 downto 0) signal CEDIR STD_LOGIC begin process (CLKRESET) -- sequential logic begin if RESET=1 then --reset Qlt=000000000111 --reset to 7 elsif CLKevent and CLK=1 then --CLK=gt1 trigger if CE=1 then --clock enable if DIR=0 then Qlt=Q+1 --up counter else Qlt=Q-1 --down counter end if end if end process -- combinational logic CE lt= SYSTEM(0) --24MHz clock DIR lt= SYSTEM(13) --4KHz square wave REF lt= Q --12-bit reference (7~3079) end block TRIANGLE_WAVE 其中

1程式設計為可適用於不同的系統時鐘包括 49152MHz和 24576MHz 兩種型式 2計數器的基本頻率為 24576MHz所以用 CE=SYSTEM(0)來控制計數動作 3三角波的頻率設為 4KHz所以計數器的峰值為(2457642=3072) 4正反計數器和系統時序同步而以 SYSTEM(13)做為同步控制由於 SYSTEM(13)為 4KHz的方波設定 DIR=SYSTEM(13)即可控制計數器的上升或下降

5在 RESET時將計數器的初值設為 7使得計數範圍修正為 7~3079所以即使有些同步誤差也不會產生負數輸出的嚴重影響

6三角波以 REF[12]作輸出數值範圍在 7~3079之間頻率為 4KHz

11

如果 PWM 的頻率過低馬達端會產生震動噪音這時就必須提高 PWM 的頻率在前面程

式中如果要將 PWM 頻率從 4KHz 提升為 8KHz則可更改如下

if DIR=0 then Qlt=Q+2 --up counter else Qlt=Q-2 --down counter DIR lt= SYSTEM(12) --8KHz square wave 其中

1將 DIR改由 8KHz的 SYSTEM(12)來控制 2同時將計數器改成+2-2的正反計數器 3如此仍然能夠維持 REF輸出的數值範圍(7~3079)

如果還要再將 PWM 的頻率提高到 16KHz則可更改如下

if DIR=0 then Qlt=Q+4 --up counter else Qlt=Q-4 --down counter DIR lt= SYSTEM(11) --16KHz square wave 其中

1將 DIR改由 16KHz的 SYSTEM(11)來控制 2同時將計數器改成+4-4的正反計數器 3如此仍然能夠維持 REF輸出的數值範圍(7~3079)

表面上三角波產生器的數值精度為 12-bit時間精度為 24MHz但是由於 PWM 訊號將

透過 FPGA2 輸出而高速串列界面的更新速度為 15MHz所以就 DCM 模組所收到的 PWM

控制訊號而言其時間精度將降低為 15MHz而數值上的精度將降低為 8-bit等效範

圍為 0~192 或是+-96 之間整體而言控制上的精度約為 05仍可符合馬達控制的

需求

PWM 波形產生器

接著處理比較的動作並產生 PWM 波形對映的 VHDL 程式範例如下

PWM_COMPARATOR block signal CEPUPD STD_LOGIC signal D0D1D2D3D4 STD_LOGIC begin process (CLK) -- sequential logic begin if CLKevent and CLK=1 then --CLK=gt1 trigger if CE=1 then --CLK enable D4lt=D3 D3lt=D2 D2lt=D1 D1lt=D0 --delay end if end if

12

end process -- combinational logic CE lt= CLK1M D0 lt= 1 when CMDgtREF else 0 --PWM generation PU lt= D1 and D2 and D3 and D4 --up-side output PD lt= not D1 and not D2 and not D3 and not D4 --down-side output PWMU lt= PU --up-side PWM output PWMD lt= PD --down-side PWM output PWMI lt= (not PU and not PD) or not ENB --PWM disable PWMR lt= REF --PWM reference end block PWM_COMPARATOR

程式中所對映的時序如下

CE

REF

CMD

D1D2D3D4PWMUPWMDPWMI

其中

1以 15MHz的 CE訊號為基本頻率 2將電壓命令 CMD和參考波形 REF作比較若 CMDgtREF則設定 D0=0否則設定

D0=1 3將 D0訊號作四次的延遲處理延遲訊號依序為 D1D2D3D4最後再重新組合成

PWM的輸出波形 4其輸出訊號包括 PWMU對映到 DCM模組中的 PWM+訊號 PWMD對映到 DCM模組中的 PWM-訊號 PWMI對映到 DCM模組中的 DIS訊號為切換保護訊號 如此 PWMU作動和 PWMD作動之間將有 2us間隔中是兩者都不作動的也就是

PWMI的作動時間 5當 ENB命令=0時設定 PWMI=1而使得驅動器 OFF

13

回授訊號的處理

精密的伺服馬達動作必須將馬達的位置和速度加以量測後再執行回授控制因此速

度和位置的量測是精密控制中必要的一環我們通常用光電寫碼器或數位尺來進行量測

工作

光電寫碼器(Photo-Encoder)俗稱光電盤是利用光電量測進行的非接觸式數位量測元

件其基本裝置如下

LED光源

光電晶體偵測

以 LED 或是其他光源來發光而用 AB 相的兩組光電晶體來偵測當圓盤隨著馬達作轉

動時光電晶體即可偵測到其移動狀態由於圓盤中的小孔呈等距排列其透光部分和

不透光部分呈 50對 50的比例當圓盤轉動時光電晶體端就可以偵測到下述訊號

光電盤訊號(A 相)

光電盤訊號(B 相)

正轉

其中

1偵測方波的頻率即對應於圓盤轉動的頻率也就是轉速 2偵測方波的個數即對應於圓盤轉過的孔數也就是轉角(相對角度) 3由於 AB相的兩組光電晶體在機械安裝上的角度不同使得讀出訊號也有 90 度的

差異如果馬達正轉則 A相超前如果馬達反轉則 B相超前

有了兩相的光電盤訊號只要能偵測其中的相位變化就可以分辨光電盤的正反轉運動

了例如正轉時的光電盤時序如下

14

光電盤訊號 (A 相 )

光電盤訊號 (B 相 )

正轉

微分訊號(A+)

微分訊號(A-)

微分訊號(B+)

微分訊號(B-)

正轉脈衝(CW)

其中

1針對 AB 兩相訊號作微分處理即可取得 A+A-B+B-的上緣微分和下緣微分 2將微分訊號和和原有的 AB相訊號作比較即可找出正轉脈衝 3計算正轉脈衝的頻率和個數即可取得馬達的速度和轉角 4如此得到的脈衝數將是原有 AB相頻率的四倍所以稱之為乘四解碼電路

同樣的如果針對光電盤的反轉時序一樣可以得出反轉訊號圖示如下

光電盤訊號(A相)

光電盤訊號(B相)

反轉

反轉脈衝(CCW)

其公式如下

CW lt= (A+ and not B) CCW lt= (A+ and B) or (A- and B) or (A- and not B) or (B+ and A) or (B+ and not A) or (B- and not A) or (B- and A)

整合光電盤回授的處理其系統方塊圖如下

數位濾波

D Q

CK

DLA

PHA

D Q

CK

DLB

PHB

CLK

乘四解碼電路

DIR

PLS

數位濾波

PA

PB

正反計數

CNT DB

RD

CS

包括

15

1首先利用簡單的數位濾波器將 AB項的雜訊排除 2接著利用延遲電路作微分處理並以乘四解碼電路解出轉動的脈波和方向 3最後利用正反計數器作計數並將計數值讀入匯流排

數位濾波器

光電盤的 AB 相訊號中如果產生雜訊干擾的現象會使得馬達轉角的計量上產生永久

性的累積誤差將造成控制上無法彌補的錯誤所以 AB 相訊號上的雜訊一定要盡力排

除下面是常用的數位濾波器設計範例

FILTER_A block -- digital filter for A signal CED0D1D2 STD_LOGIC begin process (CLK) -- sequential logic begin if CLKevent and CLK=1 then --CLK=gt1 trigger if CE=1 then --clock enable D2lt=D1 D1lt=D0 D0lt=PA --delay 3 clocks PHA lt= (D0 and D1 and D2) or ((D0 or D1 or D2) and PHA) end if end if end process -- combinational logic CE lt= CLK1M --15MHz clock end block FILTER_A 其中

1以 15MHz的頻率為控制基準 2利用延遲電路依序產生 D0D1D2的延遲訊號 3連續三個 1(D0D1D2 都是 1)定義為 1連續三個 0(D0D1D2 都是 0)定義為 0而其他不連續的 10 都定義為雜訊如此可將高頻的雜訊濾除

4但是相對的AB相訊號的最高頻率將限制為 250KHz(連續 3個 1和連續 3個 0)頻率過高的 AAB相訊號將被視為雜訊而不處理必須特別注意

正反轉的解碼和計數

依據前面的公式說明對映的 VHDL 程式範例如下

DECODER block signal DLADLB STD_LOGIC begin process (CLK) -- sequential logic begin if CLKevent and CLK=1 then --CLK=gt1 trigger DLAlt=PHA DLBlt=PHB --delay 1-clock end if end if

16

end process -- combinational logic DIR lt= (not PHA and DLA and not PHB) or ( PHA and not DLA and PHB) or (not PHB and DLB and PHA) or ( PHB and not DLB and not PHA) PLS lt= (not PHA and DLA) or (PHA and not DLA) or (not PHB and DLB) or (PHB and not DLB) end block DECODER 其中

1PHAPHB為經過雜訊濾波後的 AB相訊號而 DLADLB是其延遲訊號 2根據乘四解碼電路的公式取得 DIR和 PLS訊號其中 DIR用以控制計數器的正反向 PLS用以控制計數器的計數與否

所以接下去就是正反計數器的設計範例如下

COUNTER block signal Q STD_LOGIC_VECTOR(11 downto 0) begin process (CLKRESET) -- sequential logic begin if RESET=1 then --power-on reset Qlt=000000000000 --reset to 0 elsif CLKevent and CLK=1 then --CLK=gt1 trigger if PLS=1 then --clock enable if DIR=1 then Qlt=Q-1 --down counter else Qlt=Q+1 --up counter end if end if end if end process -- combinational logic CNT lt= Q --counter output end block COUNTER 其中

1這是標準的正反計數器架構在開機時自動復歸 2計數器的長度為 12-bit可依需要自行調整

DCM模組中的光電盤精度為每圈500格經過乘四解碼後相當於每圈2000格所以12-bit

計數器只能處理 2 圈的應用範圍絕對不夠在真正應用時一定要用軟體或硬體的方

式再擴張成 16-bit 或是 32-bit 的寬度來處理才行

17

3實驗項目

在直流伺服馬達控制系統中規劃五個實驗項目由系統首頁做選擇每項實驗操

作整個系統實驗組成由各項實驗項目 CAI 檔及各項實驗項目程式連結 PLC 檔結合而成茲表列如下

直 流 伺 服 實 驗 e x p _d c m c ai

開 環 路 電 壓 控 制

系 統 首 頁 實 驗 程 序

e x p _p w m c ai

開 環 路 速 度 控 制 e x p _s p ee d c a i

閉 環 路 位 置 控 制 e x p _a n gl e c a i

加 減 速 的 位 置 控 制 e x p _a c c c ai

正 弦 波 位 置 控 制 e x p _s i n c ai

C A I 圖 控 檔

直 流 伺 服 實 驗 開 環 路 電 壓 控 制

系 統 首 頁 實 驗 程 序

e x p _p w m p lc

開 環 路 速 度 控 制 e x p _s p ee d p l c

閉 環 路 位 置 控 制 e x p _a n gl e p l c

加 減 速 的 位 置 控 制 e x p _a c c p lc

正 弦 波 位 置 控 制 e x p _s i n p lc

e T T Y 批 次 檔

18

4安裝程序

31 將 RFFPGA中的程式拷貝至工作硬碟中進入 DC子目錄資料夾中其中包含下

列檔案

檔案 內容說明 mod SIN_wave MODPWM_wave MODIIR1_filter MODDAS4

MODPOS_inputMODPWM_outputMODACC_controlMODPD_controlMOD這些檔案是由 ASM重新編譯出由 testDCMmem所需執行模組檔

asm SIN_waveasmPWM_waveasmIIR1_filterasmDAS4asm POS_inDCMasmPWM_outDCMasmACC_conDCMasmPD_controlasm是各模組組合語言所設計 SOURCE檔

plc 為進行實驗所需的各批次檔 bit piDSPv0bit為下載到 FPGA的 BIT檔其功能為將 FPGA規劃成

具備 piDSP控制晶片功能提供直流伺服控制所需的控制程式

撰寫 testDCMsys 記載進行 DCM實驗時所需的模組 testDCMMEM 連結完成的 DSP執行檔用來進行 DCM實驗 testDCMvar 紀錄 DCM實驗時的參數對照表

在進行實驗前先將實驗所需的系統程式與模組程式分別說明加以說明系統所

需的程式模組由 testDCMsys 來描述程式列印如下

module fg1 PWM_wavemod 方波產生器

module fg2 SIN_wavemod 弦波產生器

module cn1 ACC_controlmod 加減速控制器

module cn2 PD_controlmod 比例微分控制器

module io1 POS_inputmod 位置和速度讀值

module io2 PWM_outputmod PWM 電壓輸出界面

module ft1 IIR1_filtermod 一階濾波器

module das das4mod 示波器資料蒐集

module io3 LEDKEYmod LEDKEY 界面

其中包括

1兩組波型產生器作為測試命令包括正弦波和方波 2兩組控制器提供包括加減速PD控制器的功能可依照實驗需求搭配使用 3兩組輸入輸出界面執行 PWM輸出和相位回授的界面處理 4一組低通濾波器作為電壓開迴路控制迴路和速度閉迴路控制的模擬使用 5DAS4mod是示波器專用的配合模組不論任何實驗都必須加入此模組 6Ledmod是四位數字七段顯示與 44矩陣按鍵模組

19

5執行程序

首先進入 RFFPGA 裡子目錄 DC直接點選 fPLCexe 出現下面操作畫面(也可直接將此檔

案放置桌面直接點選)

進入下面操作畫面

20

首先使用滑鼠在 FPGA下載按鈕單擊動作使 FPGA變成 piDSP晶片 如您撰寫組合語言時可使用 eASM按鈕 經編譯完成後產生MOD檔 如您撰寫系統連結程式時可使用 eLINK按鈕 經連結完成後產生MEM與VAR檔 點選實驗三後顯示如下 選擇程式下載再按程式啟動這時直流伺服馬達開始做位置控制在操控畫面放置 P 參數設定欄更改參數時馬達即時隨參數改變而產生不同響應 直接點選程式停止時結束所有控制動作再按回首頁選擇其他實驗

21

6實驗說明

下圖所示為直流馬達的控制系統方塊圖透過電流速度以及位置的回授再搭

配適當的控制器可建立完整的閉迴路控制系統在後面的實驗中將依此一系統方塊圖

逐步建立速度和位置的控制實驗各實驗的說明和操作方式及參考實驗結果將逐一進

行詳細的說明

控制

參考位置

速度 位置速

度控制 電流控制

電力電

子換流

位置速

度感測

i

+ -

壓ν

位置

速度

i

DC直流馬達之控制系統方塊圖

PWM 驅動方式只是簡單的開環路控制而高精度的馬達控制必須透過回授控制來完成

對於邏輯電路的設計者而言必須先瞭解基本的回授控制架構以便將來轉換成實用的

邏輯電路設計

設計說明

開環路特性

在電壓驅動的狀況下直流馬達開環路控制的示意圖如下

+-

22

如果換算成數學模式則轉換成下面的架構

+-Vc

R L

EMF

+

-

ITB

J

ω

其中

1其中的變數和參數包括 Vc 控制的電壓命令 R 電樞迴路的等效電阻 L 電樞迴路的等效電感 EMF電樞產生的反電動勢 i 電樞迴路中的電流 T 馬達所產生的扭力 J 馬達和負載的等效慣量 B 馬達和負載的等效摩擦力 ω 馬達所產生的速度 2所牽涉的物理公式包括 電壓迴路Vc = Ri + L(didt) + EMF 即電樞迴路中的電壓平衡 動力負載T = Bω + J(dωdt) 即扭力平衡 馬達特性T = Kti 所產生的扭力和電流成正比 電機特性EMF= Keω 所產生的電動勢和轉速成正比 其中新增的參數包括 Kt馬達的扭力常數 Ke馬達的反電動勢常數 3將微分項作拉式轉換(Laplase Transformation)的對映即 s = ddt 可將微分方程式轉換成更簡單的代數方程式而產生到下面的控制方塊圖

sL+R1Vc

+-EMF

iKt

TsJ+B1 ω

Ke

4在直流馬達的開環路特性中控制電壓(Vc)時輸入點而馬達轉速(ω)是輸出點即是控制馬達電壓以控制馬達轉速

5基本上馬達的開環路特性是個兩階系統類似於低通濾波器的特性在許多應用 場合其開環路特性還可以再簡化成一階系統方塊圖如下

23

sτ +1

KmVc ω 其中 τ一階系統的時間常數 Km一階系統的穩態增益

採用兩階系統的分析方式雖然會比較精細但是用一階系統來分析則可簡化所有的設計

過程因為這裡的實驗重點是邏輯設計所以在本章中我們都用一階系統作分析

系統響應的要求

就控制系統而言最重要的需求就是系統響應包括

穩態特性通常以穩態誤差為指標即是穩態時系統輸出和輸入之間的差異 暫態特性通常以上升時間(Rise Time)和過越比率(Overshoot)為指標

一個理想中的伺服控制系統其系統響應應該是

1穩態誤差為 0即馬達輸出將追隨輸入作變化沒有誤差 2過越比例為 0即馬達輸出絕對不會產生衝過頭的現象 3上升時間為 0即馬達輸出隨時追上輸入命令不會有控制上的延遲現象

當然這是太理想了一個合理的伺服控制系統應該是

1穩態誤差越小越好最好為 0 2過越比例越小越好最好為 0 3上升時間越短越好當然無法為 0但是盡力就是了

速度的回授控制

回授控制的目的就是為了改善系統響應以一階系統代表的馬達控制為例

sτ+1

KmVc ω

在步階響應(Step Response)時其特性如下

1穩態誤差由 Km決定 2過越比例為 0 3上升時間即是其時間常數(τ)

如果用比例控制器(P 控制器)作速度回授的控制則控制方塊圖如下

sτ+1

KmVc ωKp

err

P控制器 直流馬達ωc

速度回授

速度命令 + 速度響應-

24

其中

1速度命令並不直接控制馬達的驅動電壓而是 A將速度命令和速度回授相比找出其誤差訊號 err B依誤差訊號來控制驅動電壓 誤差越大則驅動電壓越高 誤差越小則驅動電壓越低 誤差為負則驅動電壓也為負 其中的比例關係由 P控制器中的 Kp 來調整 2經由數學分析後其步階響應的特性為 A穩態誤差變成 1(1+kpkm)如果 kpkmgtgt1則穩態誤差將趨近於 0 B過越比例仍為 0 C上升時間即是由τ變成τ(1+kpkm)所以上升時間將變短 3換句話說只要 Kp值夠大不論是穩態誤差或是上升時間都會大幅改善

理論上P控制器的增益是越高越好最好是無限大但是實際上是有限制的原因是

1馬達的開環路特性是兩階系統而非一階系統一階系統只是簡化後的結果 2當兩階系統作高增益的回授控制時當增益過高時會產生極嚴重的過越現象使得

馬達產生巨幅震動而難以控制

所以 P控制器的增益雖然是越高越好但調整時仍要小心維持(過越比例為 0)的條件

轉角的回授控制

做為馬達的速度控制P控制器的效果不錯但是如果將 P控制器應用到馬達的轉角控

制其特性就不太理想圖示如下

sτ+1

KmVc ωKp

err

P控制器 直流馬達

θc

轉角回授

轉角命令 + 轉角響應-

s1 θ

其中

1從馬達的速度到轉角之間具有積分特性即 馬達的轉角是馬達速度的積分結果而 馬達的速度是馬達轉角的微分結果而 2其中的積分特性使得整個系統由一階特性變成兩階特性在兩階系統中當設定高

增益時會產生極嚴重的過越現象使得馬達產生巨幅震動而難以控制 3在 P控制器增益無法提高的狀況之下轉角控制效果將無法獲得改善

雖然 P控制器在轉角控制上的效果並不好但是在控制系統中還是有許多法寶可以選擇

25

其中 PD 控制器就是簡單又有效的一個好方法

從表面上來看PD 控制器比 P控制器多了一個微分項就數學上來看這微分項提供了

一個新零點(Zero)可以調整根軌跡圖的走向就實驗上來說這微分項提供了控制器

的預測功能說明如下

sτ+1

KmVc ωKp+sKd

err

P控制器 直流馬達

θc

轉角回授

轉角命令 + 轉角響應-

s1 θ

1轉角控制中 P控制器的問題是在嚴重的過越現象原因是在 P控制器的作用下只有當回授超過命令時才能做出「負向」的控制但這時已經來不及了因為積分器

中已經累積了過多的能量而無法立刻消失使得馬達轉角衝過了頭 2解決之道就是在回授超過命令之前就必須做出「負向」的控制使得積分器累積

的能量逐步減弱在到達目標時才能立刻煞車才能解除過越現象 3而微分項就是這個預測量因為當誤差量越來越小時其微分項是負值雖然微分

項(D)是負值 當誤差量(P)很大時(P+D)的結果還是正值所以還是「正向」控制 當誤差量(P)漸小時(P+D)的結果變成負值才會開始「負向」控制 換句話說在誤差為 0之前即可啟動負向控制產生煞車作用使得馬達提前減速

而即時停止在目標點上自然就解除過越現象了

所以在 PD 控制器中有兩項調整量其中

1Kp增益提供比例控制部分的增益而 Kd增益提供微分控制部分的增益 2Kp增益控制馬達的趨近速度主要影響的是上升時間 3Kd增益控制馬達的提前煞車主要影響的是過越比例 4在兩者搭配下就有機會得到 很快很短的上升時間同時也 不會產生過越現象

PD 控制器的執行

依據 PD 控制器公式可以建立以數位執行的 PD 控制器如下圖所示

cmdKp

fdk

+

-

err

old

+-

Kd

Z-1

out+

+

26

其中

1利用差分公式來取代 PD控制器中的微分公式定義如下 s ==gt (1-Z-1)DT 其中對映的變數包括 s 微分項 Z-1延遲一個抽樣週期 DT抽樣週期單位為 sec 2就執行面而言Z-1是延遲一個抽樣週期也就是以抽樣週期所控制的暫存器 3在上圖中將命令(cmd)和回授(fdk)相減後得到誤差值(err)再將 err延遲一個抽樣週期成為 old所以(err-old)DT即是微分項

4原始的微分控制公式為(err-old)DTKd必須先除再乘但是因為 DT和 Kd 都是常

數可以預先將 Kd修正成 Kd=(KdDT)那麼公式將修正為(err-old)Kd就只需要一個乘法而不需要除法了

同樣的 PD 控制器可以用許多不同的方法作執行包括

1以軟體方式執行例如在 DSP核心中以組合語言撰寫控制模組 2以硬體方式執行例如在 FPGA中直接設計邏輯電路 3以微碼方式執行以微碼作順序控制執行硬體運算工作

這裡先提供用組合語言撰寫的程式模組作為設計參考其他兩種方法將在後續的實驗中

再陸續作說明

模組程式範例PD_controlasm

local cmd R0 IP gnd 輸入點位置命令(可忽略) local fdk R1 IP gnd 輸入點位置回授(可忽略) local out R2 OP 輸出點用以控制速度迴路 local kp R3 256 參數增益 kp10=256 local kd R4 0 參數增益 kd10=256 local err R5 0 內部變數 local old R6 0 內部變數 local gnd R7 0 無輸入時的短路點 data 8 模組變數區長度 initial 開機啟動程序 WR out0 WR old0 RET out=old=0 timer 即時控制程序 RD (cmd) SUB (fdk) WR err MUL kp SFR 8 P=(cmd-fdk)kp256 RDS err SUBX old MUL kd SFR 8 D=(err-old)kd256 ADDS WR out out=P+D RET

27

其中

1PD控制模組中對外的界面變數包括 cmd命令的輸入點 fdk回授的輸入點 out控制的輸出點 2內部參數包括 Kp比例控制增益其中 10=256所以乘完後還需要再右移 8-bit Kd微分控制增益其中 10=256所以乘完後還需要再右移 8-bit 3內部變數包括 err臨時性的變數用以儲存誤差值的計算結果 old儲存性的變數用以儲存上一次抽樣控制時的 err值 4模組程式分成三部分包括 變數宣告local和data所宣告的部分 初值設定initial程序中先將 out和 old設定為 0 即時控制timer程序中依序執行 PD控制器中的每個步驟

控制目標的選擇

從字面上來看速度控制就是控制馬達的速度轉角控制就是控制馬達的轉角沒什麼

好討論的但是實際上確有許多問題第一的問題就是什麼是速度和轉角馬達的速

度和轉角如果不作量測如何得知

既然在量測中取得了速度和轉角資料那麼我們所控制的到底是物理學上的速度和轉

sτ+1

KmVc ωKp+sKd

err

P控制器 直流馬達

θc

轉角回授

轉角命令 + 轉角響應-

s1 θ

KxANG

轉角量測

角還是量測上的速度和轉角以下圖為例

其中

1以轉角量測裝置量測轉角例如裝在馬達軸端的光電盤和解碼電路 2轉角的量測輸出是 ANG而 ANG和物理轉角θ之間有 Km的增益關係 3只要 Km值不是 1那麼系統就不再是單位回授 4如果 Km還有非線性或失真現象那麼控制結果也將有非線性或失真現象

這些問題混雜起來會使得控制系統的分析變得更複雜如果要簡單處理就要認同現

實環境直接以量測結果為控制目標如下圖所示

28

sτ+1

KmVc ωKp+sKd

err

P控制器 直流馬達

θc

轉角回授

+-

s1 θ Kx

ANG轉角量測

其中

1直接以量測結果為控制目標將全系統還原成標準的單位回授控制 2所有的非線性或失真現象都進入開環路討論屬於可以補償的部分 3但是控制結果就是「量測上的轉角」而「物理學上的轉角」

量測誤差的問題

轉角θ

量測ANG

對於量測誤差而言最明顯的問題就是量化誤差圖示如下

其中

1以 DCM模組中的光電盤為例精度為每圈 500格經由乘四解碼計數後其等效

精度增加為每圈 2000格 2比(12000)圈更精密的部分都無法響應換句話說振幅越大的控制其相對誤差越

小而振幅越小的控制其相對誤差越大例如 當振幅為(12)圈時其控制誤差量為 01而 當振幅為(120)圈時其控制誤差量為 1 這是標準的的非線性現象

量化誤差不只影響穩態上的精度還會造成非線性的震動問題圖示如下

t

誤差值

+1

-1

其中

1由於量化誤差的問題只有當誤差超過+1或是-1時才會真正偵測到誤差也才

29

會施加控制量作補償 2所以穩態時的誤差將在+1-1之間擺動造成微幅的振動 3量化誤差越大震動越明顯而量化誤差很小時通常不易察覺出震動現象

微分量的計算

伺服系統中有兩處需要用到微分計算包括

1PD控制器中誤差微分量的計算 2速度控制器中速度回授值的量測

在理論上微分公式是(dXdt)相當於 dXdt = (X(n)-X(n-1))DT (當 DT趨近於 0時)

所以當微分計算中的抽樣週期(DT)越短時微分的計算值將越接近理論值但是事實上

卻非如此以下圖為例

t

X

DTDX

其中

1當 X值為等速度運動時其微分量就是其斜率相當於 DXDT 2DT是微分計算中的抽樣週期理論上越短越好但是由於 DX本身的量化誤差

使得這個原則不再成立例如當斜率為 7394時 若 DT=1000則 DX=7394而 DXDT=7394 若 DT=100 則 DX=739 而 DXDT=739 若 DT=10 則 DX=73 而 DXDT=73 若 DT=1 則 DX=7 而 DXDT=7 3換句話說當抽樣週期越短時DX的量化誤差將越明顯而造成微分計算上更嚴

重的誤差

在 DCM 模組中速度量測的量化誤差分析如下

1馬達上的光電盤精度為每圈 500格經過乘四解碼後等效精度為每圈 2000格 2當馬達轉速為 1200RPM而抽樣頻率為 1KHz時對映的速度量測值為 1200(圈分)2000(格圈)60(秒分)1000(DT秒) = 40(格DT) 3換句話說1200RPM的轉速對映到 40的速度量測值即速度單位=30RPM若最

高轉速為 3000RPM則在+-3000RPM的速度範圍內其量化誤差為 05相當於8-bit的 ADC轉換器精度

4對映不同的抽樣頻率的量化誤差表列如下

30

光電盤精度 最高轉速 抽樣頻率 速度單

速度範圍 量化誤差

500PPR 3000RPM 1KHz 30RPM +-100 05 500PPR 3000RPM 2KHz 60RPM +-50 1 500PPR 3000RPM 4KHz 120RPM +25 2

過溢現象的處理

輸入

輸出

32767

-32768

整數運算都有數值範圍限制以 16-bit 整數而言輸入輸出的關係如下

其中

1當超過正負數的上下限時數值會正負顛倒例如 +32768 將會視為 -32768作處理而 +32769 將會視為 -32768作處理依此類推 2換句話說16-bit的整數運算只有在+-32767之間是線性的對映關係而超過這個範圍就是非線性的對映關係

3不但如此還因為正負顛倒的現象使得原來設計的負回授控制將變為正回授控制

而產生非線性的震盪現象 4換句話說只要計算上稍一不慎就會使得原先穩定的系統產生不穩定的震盪結果

為了避免過溢現象所造成的不穩定問題通常控制系統中會利用飽和處理作改善圖示

如下

輸入

輸出

lmtH

lmtL

31

其中

1當超過計算的上限時將固定設為上限值處理而當超過計算的下限時也將固定

設為下限值處理 2這時的整數運算只有在上下限之間是線性的對映關係而超過這個範圍將還是非線

性的對映關係 3雖然如此但是因為沒有正負顛倒的現象所以不再會有負回授變為正回授的問題

而避免了非線性的震盪現象 4換句話說飽和處理是針對過溢現象的妥協處理方案雖然不完全理想但是是可

接受的最佳選擇

下面是對映的組合語言範例

RD x x為輸入端 MIN lmtH 取得 x和 lmtH中的較小值即是作上限保護的工作 MAX lmtL 取得 x和 lmtL中的較大值即是作下限保護的工作 WR y Y為輸出端 其中

1組合語言中提供MAX和MIN的計算其中 MIN lmtH 比較 AX暫存器和 lmtH而將較低值存入 AX暫存器中 MAX lmtL 比較 AX暫存器和 lmtH而將較高值存入 AX暫存器中 2所以直接可用MIN指令作上限保護而以MAX指令作下限保護兩者合併後即是

完整的飽和處理結果

飽和處理通常應用在高位數轉成低位數的場合例如32-bit轉換成16-bit或是16-bit

轉換成 12-bit 等等例如在本實驗中所有的運算都是以 16-bit 整數作處理但是到

PWM 驅動級輸出時卻要轉換成 12-bit精度的 PWM 命令所以必須先用飽和處理以避免

過溢現象造成的不穩定問題

32

61 實驗 1-開迴路的電壓控制 實驗說明以電壓直接控制轉速的開迴路特性可簡化為一階系統處理方塊圖如

sτ+1

v km ωm

其中V 送給驅動器的 PWM電壓命令

ωm馬達的轉動速度可由處理 photo encoder信號所得的位置微分而得 km一階系統的穩態增益 τ一階系統的時間常數即步階響應中的上升時間

為了觀測直流馬達的開環路特性建立下面的測試方塊圖

其中

1所使用的模組包括 FG1方波產生器產生所需的步階測試波形 FT1馬達模擬以一階系統的低通濾波器來執行 IO1光電盤的回授處理可同時取得轉角和速度的量測值 IO2PWM電壓驅動直接驅動直流馬達作控制 Led四位數字七段顯示模組顯示波形信號資料 2測試目標有兩項(P 參數設定欄)包括 A調整方波命令控制直流馬達作開環路的 PWM電壓控制 B調整馬達模擬參數使模擬結果和實驗結果相符以確認開環路特性

33

實驗畫面顯示如下

測試一 開環路的電壓控制 記錄頻道 CH1電壓命令Y1=-300DY=500 CH2模擬速度Y2=-100DY=500 CH3馬達速度Y3=100DY=50 CH4馬達轉角Y4=300DY=50000 實驗參數 FG1kAMP=256電壓命令的測試振幅 FG1kFRQ=150電壓命令的測試頻率 FT1DT =10 馬達模擬參數 FT1KA =500馬達模擬參數

其中

1用示波器功能記錄四個頻道其中 CH2和 CH3重疊顯示以比較模擬速度和量測

速度之間的差異 2由於 Km 不等於 1所以必須調整 CH3的 Y軸單位才能使得 CH2和 CH3的穩態響應部分重疊

3實驗時可以改變 FG1的參數以調整測試方波的振幅和頻率 4可以調整 FT1的參數使得 CH2和 CH3的暫態響應部分重疊

根據實際的測試結果分析如下

2馬達模擬的參數調整到 DT=10而 KA=500根據公式 τ = 40961000dtka 所以上升時間(τ)為 0082秒或是 82ms 3CH2CH3的 Y軸單位並不一致顯然 Km 不等於 1經計算確認 Km=0098

對應之 plc檔程式說明(exp_pwmplc) echo off 畫面顯示開始

run dsp 0 選擇 DSP1

run stop run reset 既有程式停止

run testDCMmem 下載指定程式

das 1 ampfg1out 0 1024 PWM 波形 Volt 設定 DAS 頻道1

das 2 ampft1lp 0 1024 馬達模擬 Volt 設定 DAS 頻道2

das 3 ampio1spd 0 1024 馬達速度 Volt 設定 DAS 頻道3

das 4 ampio1ang 0 1024 馬達角度 Volt 設定 DAS 頻道4

plot select 0 設定示波器頁數

plot xunit 100000 0 設定示波器 X軸

plot yunit 1 500 -300 設定示波器 Y1 軸

34

plot yunit 2 500 -100 設定示波器 Y2 軸

plot yunit 3 50 100 設定示波器 Y3 軸

plot yunit 4 50000 300 設定示波器 Y4 軸

plot trigger 1 0 1 10 設定示波器觸發

plot scope 9 1 2 3 4 設定示波器顯示

module io2 設定 io2 模組

s cmd ampfg1out

module fg1 設定 fg1 模組

s kAmp 256 s kFrq 150

module ft1 設定 ft1 模組

s u ampfg1out s dt 10 s ka 500

module io3 設定 io3 模組

s led ampfg1out

module 回復預設模組

run 1khz 設定抽樣頻率為 4KHz

run start DSP 開始執行

das stop pause 1 DAS 啟動 das start DAS 啟動

echo on 回復正常訊息顯示

使用者可視情況調整一階濾波器的 ka和 dt值使得 ch2和 ch3 兩組波形完全相符

以求得開迴路系統近似的一階轉移函數 CAI操控設計畫面規劃如下(EXP_PWMCAI) page 1 畫面設計

35

page 2 畫面設計 page 3 畫面設計

36

實測響應圖

訊 號 說 明 訊 號 說 明 ch1 方波產生器訊號 ch3 一階濾波器輸出信號 ch2 馬達角速度訊號 ch4 馬達角位置訊號

直流馬達之開迴路電壓控制響應圖

37

以邏輯分析功能觀測直流馬達之光電盤輸入與 PWM輸出信號

38

62 實驗 2-閉迴路的速度控制 實驗說明為了觀測閉迴路的速度控制響應建立下面的測試方塊圖

加入 PD控制後系統閉迴路的轉移函數經適度的簡化仍能約略以一階系統

處理方塊圖如下

sτ+1

u km ωm

其中

u 送給控制器的速度命令

ωm馬達的轉動速度可由處理 photo encoder 信號所得的位置微分而得

km一階系統的穩態增益 τ一階系統的時間常數即步階響應中的上升時間

方塊圖中的模組功能說明如下

1用 fg1 產生測試用的方波速度命令

2將方波速度命令和速度回授訊號送到 PD 控制器方塊中產生電壓控制訊號再透

過 io2 模組將訊號送出給伺服介面

3用 ft1 建立對照用的一階系統可用 IIR1濾波器方塊產生

4將方波命令產生速度命令再觀測 PHT(io1)上的速度值 spd

5調整 IIR1濾波器的參數使得兩組波形完全相符這時 IIR1濾波器就是閉迴路

速度控制的特性其中 km 為增益而τ為上升時間(單位為 sec)

6增益 km 可從示波器中作簡單計算而上升時間(τ=40964000dtka)

7 Led四位數字七段顯示模組顯示波形信號資料

39

對應之 plc檔程式說明(exp_speedplc) echo off 畫面顯示開始

run dsp 0 選擇 DSP1

run stop run reset 既有程式停止

run testDCMmem 下載指定程式

das 1 ampfg1out 0 1024 PWM 波形 Volt 設定 DAS 頻道1

das 2 ampft1lp 0 1024 馬達模擬 Volt 設定 DAS 頻道2

das 3 ampio1spd 0 1024 馬達速度 Volt 設定 DAS 頻道3

das 4 ampio1ang 0 1024 馬達角度 Volt 設定 DAS 頻道4

plot select 0 設定示波器頁數

plot xunit 100000 0 設定示波器 X軸

plot yunit 1 50 -300 設定示波器 Y1 軸

plot yunit 2 50 -100 設定示波器 Y2 軸

plot yunit 3 50 100 設定示波器 Y3 軸

plot yunit 4 50000 300 設定示波器 Y4 軸

plot trigger 1 0 1 10 設定示波器觸發

plot scope 9 1 2 3 4 設定示波器顯示

module io2 設定 io2 模組

s cmd ampcn2out

module fg1 設定 fg1 模組

s kAmp 50 s kFrq 150

module cn2 設定 cn1 模組

s cmd ampfg1out s fdk ampio1spd s kp 0x4000

module ft1 設定 ft1 模組

s u ampfg1out s dt 2 s ka 320

module io3 設定 io3 模組

s led ampfg1out

module 回復預設模組

run 1khz 設定抽樣頻率為 4KHz

run start DSP 開始執行

das stop pause 1 DAS 啟動 das start DAS 啟動

echo on 回復正常訊息顯示

CAI操控設計畫面規劃如下(EXP_speedCAI)

40

page 1 畫面設計 page 2 與 page 3 畫面設計與實驗一 page 2 與 page 3相同畫面 page 4 畫面設計

41

方塊的參數設定 使用者可視情況調整一階濾波器的 ka和 dt值使得 ch2和 ch3 兩組波形完全相符

以求得此一閉迴路系統近似的一階轉移函數或調整 PD控制器中的 kp和 kp值以調整系統之響應 實測響應圖

訊 號 說 明 訊 號 說 明 ch1 方波產生器產生之速度命令 ch3 一階濾波器輸出信號 ch2 馬達角速度訊號 ch4 馬達角位置訊號

42

直流馬達之閉迴路速度控制響應圖

43

63 實驗 3-閉迴路的位置控制 實驗說明為了觀測閉迴路的位置控制響應將直流馬達的回授改為位置訊號

建立下面的測試方塊圖 方塊圖中的模組功能說明如下

1用 fg1產生測試用的方波位置命令 2將方波位置命令和位置回授訊號送到 PD控制器方塊中產生電壓控制訊號再透過 io2模組將訊號送出到伺服介面驅動馬達轉動

對應之 plc檔程式說明(exp_angleplc) echo off 畫面顯示開始

run dsp 0 選擇 DSP1

run stop run reset 既有程式停止

run testDCMmem 下載指定程式

das 1 ampfg1out 0 1024 PWM 波形 Volt 設定 DAS 頻道1

das 2 ampft1lp 0 1024 馬達模擬 Volt 設定 DAS 頻道2

das 3 ampio1spd 0 1024 馬達速度 Volt 設定 DAS 頻道3

das 4 ampio1ang 0 1024 馬達角度 Volt 設定 DAS 頻道4

plot select 0 設定示波器頁數

plot xunit 100000 0 設定示波器 X軸

plot yunit 1 1000 -300 設定示波器 Y1 軸

plot yunit 2 1000 -100 設定示波器 Y2 軸

plot yunit 3 20 100 設定示波器 Y3 軸

plot yunit 4 1000 300 設定示波器 Y4 軸

plot trigger 1 0 1 10 設定示波器觸發

44

plot scope 9 1 2 3 4 設定示波器顯示

module io2 設定 io2 模組

s cmd ampcn2out

module fg1 設定 fg1 模組

s kAmp 1000 s kFrq 75

module cn2 設定 cn1 模組

s cmd ampfg1out s fdk ampio1ang s kp 0x300 s kd 0x4000

module ft1 設定 ft1 模組

s u ampfg1out s dt 2 s ka 320

module io3 設定 io3 模組

s led ampfg1out

module 回復預設模組

run 1khz 設定抽樣頻率為 4KHz

run start DSP 開始執行

das stop pause 1 DAS 啟動 das start DAS 啟動

echo on 回復正常訊息顯示

CAI操控設計畫面規劃如下(EXP_angleCAI) page 1 畫面設計

45

page 2 與 page 3 畫面設計與實驗一 page 2 與 page 3相同畫面 page 4 畫面設計與實驗二 page 4 畫面 方塊的參數設定 延續上一實驗的說明使用者可以調整 PD控制器中的 kp和 kd值以調整系統之

響應 實測響應圖

訊 號 說 明 訊 號 說 明 ch1 方波產生器產生之位置命令 ch3 馬達角速度訊號 ch2 馬達角位置 ch4 Pd控制器輸出之電壓訊號

46

直流馬達之閉迴路位置控制響應圖

47

64 實驗 4-加減速的位置控制 實驗說明為避免方波命令的過於嚴苛在方波命令的輸出加入一加減速控制功

能方塊以減緩命令變化的幅度增加馬達運動的平順建立的測試方塊圖如下

方塊圖中的模組功能說明如下

1用 fg1產生測試用的方波位置命令 2將方波位置命令送到加減速控制方塊處理後產生新的位置命令再將新的位置命

令與位置回授訊號送到 PD控制器方塊中產生電壓控制訊號最後透過 io2模組將訊號送出到伺服介面驅動馬達轉動

對應之 plc檔程式說明(exp_accplc) echo off 畫面顯示開始

run dsp 0 選擇 DSP1

run stop run reset 既有程式停止

run testDCMmem 下載指定程式

das 1 ampfg1out 0 1024 PWM 波形 Volt 設定 DAS 頻道1

das 2 ampcn1out 0 1024 加速控制 Volt 設定 DAS 頻道2

das 3 ampio1spd 0 1024 馬達速度 Volt 設定 DAS 頻道3

das 4 ampio1ang 0 1024 馬達角度 Volt 設定 DAS 頻道4

plot select 0 設定示波器頁數

plot xunit 100000 0 設定示波器 X軸

plot yunit 1 2000 -300 設定示波器 Y1 軸

plot yunit 2 2000 -100 設定示波器 Y2 軸

plot yunit 3 50 100 設定示波器 Y3 軸

plot yunit 4 2000 300 設定示波器 Y4 軸

48

plot trigger 1 0 1 10 設定示波器觸發

plot scope 9 1 2 3 4 設定示波器顯示

module io2 設定 io2 模組

s cmd ampcn2out

module fg1 設定 fg1 模組

s kAmp 2000 s kFrq 150

module cn1 設定 cn1 模組

s cmd ampfg1out

module cn2 設定 cn2 模組

s cmd ampcn1out s fdk ampio1ang s kp 0x300 s kd 0x4000

module ft1 設定 ft1 模組

s u ampfg1out s dt 2 s ka 320

module io3 設定 io3 模組

s led ampfg1out

module 回復預設模組

run 1khz 設定抽樣頻率為 4KHz

run start DSP 開始執行

das stop pause 1 DAS 啟動 das start DAS 啟動

echo on 回復正常訊息顯示

CAI操控設計畫面規劃如下(EXP_accCAI) page 1 畫面設計

49

page 2 畫面設計與實驗一 page 2相同畫面 page 3 畫面設計與實驗二 page 4相同畫面

參數設定參考之前各實驗的說明可線上機動性的調整 PD控制器中的 kp和 kd值以調整系統之響應 實測響應圖

訊 號 說 明 訊 號 說 明 ch1 方波產生器產生之位置命令 ch3 馬達角位置 ch2 加減速模組輸出之位置命令 ch4 馬達角速度訊號

50

圖一 直流馬達經加減速控制後之閉迴路控制響應圖

51

65 實驗 5-正弦波的位置控制 實驗說明在本實驗中改變命令的波形由方波改變為正弦波並建立如下的測

試方塊圖與上一實驗相比較僅更改命令的波形產生方塊 方塊圖中的模組功能說明如下 1用 fg2產生測試用的弦波位置命令 2將弦波位置命令送到加減速控制方塊處理後產生新的位置命令再與 io1 讀入的位

置回授訊號送到 PD 控制器方塊中產生電壓控制訊號再透過 io2 模組將訊號送出到伺服介面驅動馬達轉動

對應之 plc檔程式說明(exp_sinplc) echo off 畫面顯示開始

run dsp 0 選擇 DSP1

run stop run reset 既有程式停止

run testDCMmem 下載指定程式

das 1 ampfg2out 0 1024 SIN 波形 Volt 設定 DAS 頻道1

das 2 ampcn1out 0 1024 加速控制 Volt 設定 DAS 頻道2

das 3 ampio1spd 0 1024 馬達速度 Volt 設定 DAS 頻道3

das 4 ampio1ang 0 1024 馬達角度 Volt 設定 DAS 頻道4

plot select 0 設定示波器頁數

plot xunit 100000 0 設定示波器 X軸

plot yunit 1 2000 -300 設定示波器 Y1 軸

plot yunit 2 2000 -100 設定示波器 Y2 軸

plot yunit 3 50 100 設定示波器 Y3 軸

plot yunit 4 2000 300 設定示波器 Y4 軸

plot trigger 1 0 1 10 設定示波器觸發

52

plot scope 9 1 2 3 4 設定示波器顯示

module io2 設定 io2 模組

s cmd ampcn2out

module fg2 設定 fg1 模組

s kAmp 2000 s kFrq 100

module cn1 設定 cn1 模組

s cmd ampfg2out

module cn2 設定 cn2 模組

s cmd ampcn1out s fdk ampio1ang s kp 0x300 s kd 0x4000

module ft1 設定 ft1 模組

s u ampfg2out s dt 2 s ka 320

module io3 設定 io3 模組

s led ampfg2out

module 回復預設模組

run 1khz 設定抽樣頻率為 4KHz

run start DSP 開始執行

das stop pause 1 DAS 啟動 das start DAS 啟動

echo on 回復正常訊息顯示

CAI操控設計畫面規劃如下(EXP_sinCAI) page 1 畫面設計

53

page 2 畫面設計 page 3 畫面設計與實驗二 page 4相同畫面

方塊的參數設定可調整 PD控制器中的 kp和 kd值以調整系統之響應 實測響應圖

訊 號 說 明 訊 號 說 明 ch1 弦波產生器產生之位置命令 ch3 馬達角位置訊號 ch2 加減速模組輸出之位置命令 ch4 馬達角速度訊號

54

直流馬達之閉迴路弦波加減速位置控制響應圖

55

7組合語言說明

本節將針對 DC馬達伺服控制實驗專用的程式模組進行功能與程式碼的說明其

有關於波形產生器與資料擷取模組等說明如下

SIN_waveasm 正弦波產生器 PWM_waveasm 方波產生器 IIR1_filterasm 一階濾波器 DAS4asm 資料蒐集模組

弦波產生器

此模組會產生週期性的正弦波方塊圖如下

outfrq

kBiasbias

ampkAmp

kFrqth

kThf=1TB

θ

A

其中

1正弦波有四個參數振幅(A)頻率(F)相位(θ)和偏移(B)其公式為 out = A sin(2πF t +θ) + B 2對於單純的正弦波產生器所對映的參數包括 kAmp 振幅值 kFrq 頻率值kFrq=655368000Hz其中 Hz的範圍為 0~4000例如 1000Hz =gt frq=8192 100Hz =gt frq=819 10Hz =gt frq=82 1Hz =gt frq=8 kTh 相角值0~255代表 0~360的相位當 th=0 時為正弦波 th=64 時為餘弦波 th=128時為反相波依此類推 kBias偏移值 3對於可調變的正弦波產生器其對映的輸入點為 amp 控制振幅的輸入點可產生調幅(AM)波形 frq 控制頻率的輸入點可產生調頻(FM)波形 th 控制相位的輸入點可產生調相(PM)波形 bias控制偏移的輸入點可產生雙頻混波(相加)波形 4若不使用調變功能時各個輸入點時的預設值為 amp 指向 kAmp 的位址 frq 指向 kFrq 的位址

56

th 指向 kTh 的位址 bias指向 kBias的位址

模組程式範例SIN_WAVEasm

local amp R0 IP kAmp 輸入點sin波的振幅 local frq R1 IP kFrq 輸入點sin波的頻率 local th R2 IP kTh 輸入點sin波的相角 local bias R3 IP kBias 輸入點sin波的中心偏移 local out R4 OP 輸出點sin波輸出 local tab R5 TP 表格指標指向 sin[256]的表格 local ang R6 內部變數相位角65536=360deg local kAmp R7 1000 參數振幅值 local kFrq R8 1000 參數頻率值=655368000Hz local kTh R9 0 參數相角值360deg=256 local kBias R10 0 參數偏移值 data 11 模組變數區長度及初值 initial 啟動程序 WR ang0 WR out0 ang=out=0 RET timer 即時控制程序(8KHz) RD ang ADD (frq) WR ang ang+=frq SFR 8 ADD (th) AND 255 ACC=sin(ang256+th) ADD tab WRH RDM table-look-up MUL (amp) SFR 12 ADD (bias) WR out out=ACCamp4096+bias RET table tab 256 sin[256]表格區10=4096 0 101 201 301 401 501 601 700 00~070deg 799 897 995 1092 1189 1285 1380 1474 08~0F 1567 1660 1751 1842 1931 2019 2106 2191 10~17 2276 2359 2440 2520 2598 2675 2751 2824 18~1F 2896 2967 3035 3102 3166 3229 3290 3349 20~27 3406 3461 3513 3564 3612 3659 3703 3745 28~2F 3784 3822 3857 3889 3920 3948 3973 3996 30~37 4017 4036 4052 4065 4076 4085 4091 4095 38~3F 4096 4095 4091 4085 4076 4065 4052 4036 40~4790deg 4017 3996 3973 3948 3920 3889 3857 3822 48~4F 3784 3745 3703 3659 3612 3564 3513 3461 50~57 3406 3349 3290 3229 3166 3102 3035 2967 58~5F

57

2896 2824 2751 2675 2598 2520 2440 2359 60~67 2276 2191 2106 2019 1931 1842 1751 1660 68~6F 1567 1474 1380 1285 1189 1092 995 897 70~77 799 700 601 501 401 301 201 101 78~7F 0 65435 65335 65235 65135 65035 64935 64836 80~87180deg 64737 64639 64541 64444 64347 64251 64156 64062 88~8F 63969 63876 63785 63694 63605 63517 63430 63345 90~97 63260 63177 63096 63016 62938 62861 62785 62712 98~9F 62640 62569 62501 62434 62370 62307 62246 62187 A0~A7 62130 62075 62023 61972 61924 61877 61833 61791 A8~A8 61752 61714 61679 61647 61616 61588 61563 61540 B0~B7 61519 61500 61484 61471 61460 61451 61445 61441 B8~BF 61440 61441 61445 61451 61460 61471 61484 61500 C0~C7270deg 61519 61540 61563 61588 61616 61647 61679 61714 C8~CF 61752 61791 61833 61877 61924 61972 62023 62075 D0~D7 62130 62187 62246 62307 62370 62434 62501 62569 D8~DF 62640 62712 62785 62861 62938 63016 63096 63177 E0~E7 63260 63345 63430 63517 63605 63694 63785 63876 E8~EF 63969 64062 64156 64251 64347 64444 64541 64639 F0~F7 64737 64836 64935 65035 65135 65235 65335 65435 F8~FF

就程式結構而言說明如下

timer 即時控制程序(8KHz) RD ang ADD (frq) WR ang ang+=frq SFR 8 ADD (th) AND 255 ACC=sin(ang256+th) ADD tab WRH RDM table-look-up MUL (amp) SFR 12 ADD (bias) WR out out=ACCamp4096+bias RET

1基本上我們以查表法計算 sin()其輸入θ的範圍為 0~255對映到 0~360deg其輸出 sin(θ)的範圍為+-4096對映到+-10的範圍

2建立一個內部變數 ang其範圍為 0~65535對映到 0~360的相位角 3每個timer程序都執行 ang+=frq的動作更新目前的相位角接著依照 ang的相位角查表得到 sin(ang256+th)值

4由於表格長度為 256-word所以必須將 ang256才能得到正確的對映關係而 th範圍為 0~255所以不需要像 ang一般的做額外處理

5sin()的範圍為(+1-1)而在表格中以(+4096~-4096)的型式記錄相當於 10=4096所以執行 Asin()時還要用 SFR12指令做4096的動作才能正確的取得輸出值

58

6就頻率輸入 frq而言其計算原則是將θ=ωt轉化成θ=Σ(ωdt)因為抽樣頻率

為 8KHz所以 dt=18000而得到 frq=655368000Hz公式其中 Hz為真正的頻率在 8KHz的抽樣頻率下其範圍為 0~4000

鋸齒波產生器

此模組會產生週期性的鋸齒波方塊圖如下

outfrq

kBiasbias

ampkAmp

kFrqth

kThf=1TB

θ

A

其中

1鋸齒波也有四個參數振幅(A)頻率(F)相位(θ)和偏移(B)和正弦波的定義完全一致唯一的差異是其輸出為鋸齒波而非正弦波

2基本波形是從週期開始時為 0一直遞增到週期結束時到達最高點然後立刻回歸

到 0重新開始 3以程式結構而論鋸齒波程式幾乎就是正弦波的相位計算部分只差沒有正弦波的

查表處理而已

模組程式範例SAW_WAVEasm

local amp R0 IP kAmp 輸入點sin波的振幅 local frq R1 IP kFrq 輸入點sin波的頻率 local th R2 IP kTh 輸入點sin波的相角 local bias R3 IP kBias 輸入點sin波的中心偏移 local out R4 OP 輸出點sin波輸出 local ang R5 內部變數相位角65536=360deg local kAmp R6 1000 參數振幅值 local kFrq R7 1000 參數頻率值=655368000Hz local kTh R8 0 參數相角值360deg=256 local kBias R9 0 參數偏移值 data 11 模組變數區長度及初值 initial 啟動程序 WR ang0 WR out0 ang=out=0 RET timer 即時控制程序(8KHz) RD ang ADD (frq) WR ang ang+=frq SFR 8 ADD (th) AND 255 ACC=(ang256+th)amp0x00ff MUL (amp) SFR 8 ADD (bias) WR out out=ACCamp256+bias

59

RET

脈衝波產生器

outfrq

kBiasbias

ampkAmp

kFrqth

kThf=1TB

θ

A

pwm

kDutyduty

此模組會產生週期性的脈衝波方塊圖如下

其中

1脈衝波有五個參數其中振幅(A)頻率(F)相位(θ)和偏移(B)四個參數和正弦波

定義完全一樣另外再增加一個負載率(D) 2基本波形是從週期開始時為 1隔段時間後換為 0然後持續到週期結束再重新開始其中 1所佔有的比例就是負載率當 D=0時為 0而 D=255時為 100

3和其他參數類似負載率(D)以 duty為其輸入點而以 kDuty為其參數值

模組程式範例PLS_WAVEasm

local amp R0 IP kAmp 輸入點脈衝波的振幅 local frq R1 IP kFrq 輸入點脈衝波的頻率 local th R2 IP kTh 輸入點脈衝波的相角 local bias R3 IP kBias 輸入點脈衝波的中心偏移 local duty R4 IP kDuty 輸入點脈衝波的負載率 local out R5 OP 輸出點脈衝波輸出 local ang R6 內部變數相位角65536=360deg local kAmp R7 1000 參數振幅值 local kFrq R8 1000 參數頻率值=655368000Hz local kTh R9 0 參數相角值360deg=256 local kBias R10 0 參數偏移值 local kDuty R11 128 參數負載率100 =256 data 12 模組變數區長度及初值 initial 啟動程序 WR ang0 WR out0 ang=out=0 RET timer 即時控制程序(8KHz)

60

RD ang ADD (frq) WR ang ang+=frq SFR 8 ADD (th) AND 255 ACC=(ang256+th)amp0x00ff SUB (duty) RD (amp) JLT t1 RD 0 ACC=(amp0) t1 ADD (bias) WR out out=ACC+bias RET

IIR 一階濾波器

此模組執行一階的 IIR濾波器方塊圖如下

kau x

Z-1

+

+

-

+低通濾波器

高通濾波器dx lp

hp

濾波器參數的計算公式如下

1假設濾波器的頻寬為 hz則 ωn=hz628 2若系統頻率為 8KHz則抽樣週期 dT為 dT=dt8000 其中 dt為模組參數 3則濾波器參數為 ka=ωndT4096或是 =hzdt62880004096即 =hzdt32 4當 dt決定後所允許的訊號頻寬為(4000dt)換句話說訊號頻寬會因為 dt增加而下降

為了方便實驗的運用下面列出常用的參數對照表

濾波頻寬

(Hz)

10 20 50 100 200 500 1000 2000

訊號頻寬

(Hz)

400 800 2000 4000 4000 4000 4000 4000

模組參數 dt 10 5 2 1 1 1 1 1

模組參數 ka 320 320 320 320 640 1600 3200 6400

表格的運用方式如下

1首先決定濾波頻寬 2接著查表找出對映的參數 dt和 ka 3再查表得到對映的訊號頻寬以決定是否需要串接前級濾波器

61

模組程式範例IIR1_FILTERasm

local u R0 IP 輸入點濾波器輸入 local lp R1 OP 輸出點低通濾波器輸出 local hp R2 OP 輸出點高通濾波器輸出 local dt R3 1 參數抽樣週期 local ka R4 4096 參數增益 ka10=4096 local prd R5 內部變數抽樣週期用 data 6 模組變數區長度 initial 開機啟動程序 WR lp0 WR hp0 WR prd1 RET lp=hp=0prd=1 timer 即時控制程序 SUB prd1 JNZ b9 if (--prdgt0) return RD dt WR prd prd=dt RD (u) SUB lp WR hp hp=u-lp MUL ka SFR 12 ADD lp WR lp lp+=(hpka4096) b9 RET

資料蒐集模組

資料蒐集模組是一個非常特殊的模組專門配合 eTTY 程式中的示波器使用

模組程式範例DAS4asm

local cmd R0 0 紀錄命令0=停止1=前置記錄2=正觸發4=負觸發6=觸發記錄 local dt R1 1 抽樣週期每 dT抽樣一次 local tab R2 TP DAS表格啟始位址 local cnt R3 0 目前記錄點(0~255) local ch1 R4 0 定義頻道1的變數位址 local ch2 R5 0 定義頻道2的變數位址 local ch3 R6 0 定義頻道3的變數位址 local ch4 R7 0 定義頻道4的變數位址 local trg R8 0 定義觸發頻道的變數位址 local th R9 0 觸發準位 local tail R10 0 觸發後的抽樣個數 local buf R11 1 抽樣計數(1~dt) local pnt R12 表格位址計算pnt=tab+cnt4 local len R13 表格長度計算(0~256) data 14 定義模組變數區的長度 table tab 1024 定義表格的長度 initial 啟動程序 WR cmd0 RET cmd=0 timer 控制程序

62

ADD cmd0 JZ t9 if (cmd==0) return SUB buf1 JNZ t9 if (--buf)gt0) return RD dt WR buf dt=buf RD cnt ADD 1 AND 0xff WR cnt cnt=(cnt+1)amp0xff SFL 2 ADD tab WR pnt pnt=tab+cnt4 RD (ch1) WR (pnt) ADD pnt1 pnt++=ch1 RD (ch2) WR (pnt) ADD pnt1 pnt++=ch2 RD (ch3) WR (pnt) ADD pnt1 pnt++=ch3 RD (ch4) WR (pnt) pnt =ch4 RD cmd SUB 1 JZ t9 SUB 1 JZ t2 SUB 1 JZ t3 SUB 1 JZ t4 SUB 1 JZ t5 SUB 1 JZ t6 JR t7 t2 RD (trg) SUB th JGE t9 ADD cmd1 JR t9 wait trgltth t3 RD (trg) SUB th JLE t9 JR t6 wait trggtth t4 RD (trg) SUB th JLE t9 ADD cmd1 JR t9 wait trggtth t5 RD (trg) SUB th JGE t9 JR t6 wait trgltth t6 WR len0 WR cmd7 len=0cmd=7 t7 ADD len1 SUB tail JLT t9 WR cmd0 if ((++len)gt=0x80) cmd=0 t9 RET

與 DC 馬達控制相關的程式模組有以下 4個程式模組說明如下

(1)加減速控制模組 ACC_controlasm (2)光電盤輸入模組 POS_inputasm (3)PWM輸出模組 PWM_outputasm (4)PD控制模組 PD_controlasm

71加減速控制模組 此程式模組主要功能在於執行位置控制的加減速命令修正其數學模式採用 Lynn

濾波器的架構參見下圖

cmd

2

+

old Z -1

-

Z -1

Z -1

Z-1

Z-1x0 x1 x8 x9 x16

+ -

++

2

Z-1

Z-1 y1 y2

+

-

y0

+ +

sumZ-1

+164

12

out

dif

+

63

加減速控制模組方塊圖

其中

1Lynn 濾波器的階數固定成八階也就是 m=8其公式為 H(z) = (1-2Z-m+Z-2m)(1-2Z-1+Z-2)m2

2因為m=8所以m2=64因此最後計算低通濾波的部份時要先做除 64的運算 3因為低通濾波(lp)和 y0之間有 64倍的差異代表 y0y1y2的變化範圍比濾波器輸

入值要擴大許多例如輸入值在+-1000變化時y0y1y2很可能會在+-64000之間變化這範圍已經超出整數處理的範圍很可能會造成錯誤的計算結果

4所以在實驗時輸入值的變化範圍必須控制在+-500之間以保證計算的正確性 5對於 Lynn 濾波器當 m=8時其濾波器的頻寬固定為 1 kHzmdt也就是 dt=1時頻寬為 125 Hz dt=2時頻寬為 625Hz依此類推 6對於 Lynn 濾波器其濾波器的延遲固定為 m個抽樣週期因此設計 hp = x8 - lp 即可得到高通濾波器的對應結果 7其中乘 2和除 64的運算以移位運算取代所以整個程式中並無任何乘法運算 8Lynn 濾波器本身並不是穩定濾波器所以在程式啟動時必須確實的將所有狀態

(x0~x16)歸零否則會產生不穩定的狀態輸出

因為 Lynn濾波器中所有參數固定所以除了抽樣週期 dt 之外並無任何可調參數

抽樣週期 dt 可以控制頻寬dt 越大則濾波器頻寬越低

將步階命令值的輸出送入 Lynn 濾波器中經由低通濾波器的效應可以減緩命

令的變化程度達到加減速控制的目的以下為使用 Lynn 濾波器型式實現加減速控

制的組合語言程式列印 如欲更進一步瞭解 Lynn 濾波器與 FIR 數位濾波器之間的關係可以參考通訊實驗

四數位濾波器設計(FIR)中之說明

ACC_controlasm程式列印 local cmd R0 IP 輸入點位置命令

local out R1 OP 輸出點加減速處理後的位置命令

local dif R2 OP 輸出點位置微分命令

local axis R3 0 馬達編號0=X1=Y2=Z3=C

local old R4 內部變數微分計算用

local sumL R5 內部變數積分計算用

local sumH R6 內部變數積分計算用

local y0 R7 內部變數y(0~2)

local y1 R8 local y2 R9

local x0 R10 內部變數x(0~16)

local x1 R11 local x2 R12 local x3 R13 local x4 R14

local x5 R15 local x6 R16 local x7 R17 local x8 R18

local x9 R19 local x10 R20 local x11 R21 local x12 R22

local x13 R23 local x14 R24 local x15 R25 local x16 R26

64

data 27 模組變數區長度

initial 開機啟動程序

WR dif0 RD (cmd) WR out WR old dif=0 out=old=cmd

sumHL=cmd64

SFL 6 WR sumL RD out SFR 10 SGN 5 WR sumH

RPT 17 WR x00 RPT 3 WR y00 RET x[0~16]=0y[0~2]=0

timer 即時控制程序

RD (cmd) SUBX old WR x0 x0=cmd-old old=cmd

SUB x81 ADD x16 ADD y11 SUB y2 WR y0 y0=x0-2x8+x16+2y1-y2

SGN ADD sumL WR sumL RDH ADC sumH WR sumH sumHL+=y0

WRH RD sumL SFR 6 WR out out=sumHL64

RD y0 SGN SFR WR dif dif=y032mm

RD x0 RPT 16 RDX x1 x[i]=x[i-1] i=1~16

RD y0 RDX y1 WR y2 y[i]=y[i-1] i=1~2

b9 RET

72光電盤輸入模組

DC馬達的位置由光電盤量測之預設儲存於 0xac與 0xbe二個輸入埠位址中其中位址 0xac記錄 X軸馬達的位置位址 0xbe記錄 Y軸馬達的位置由於本實驗的DC馬達接在 Y軸的位置上因此程式中直接選用 Y軸的輸入 光電盤位置輸入的程式列印如下其中速度由位置的差分而得至於馬達的位置

則使用內部 2個 word加以記錄精度為 32位元 POS_inputasm程式列印 local spd R0 OP 輸出點速度量測值

local ang R1 OP 輸出點角度量測值

local angH R2 內部變數角度的 32 位元部分

local mode R3 0x308 模式選擇15MHzAB 相正反向輸入

local pht R4 0xac 輸入阜地址光電盤輸入(0xac)

local phtc R5 0xbe 輸入阜地址光電盤模式(0xbe)

local old R6 內部變數速度更新用

data 7 模組變數區長度

initial 開機啟動程序

RD mode WR (phtc) phtc=mode

RD (pht) WR old WR spd0 RET old=phtspd=0

timer 即時控制程序

RD (pht) SUBX old SGN 11 WR spd spd=(pht-old)old=pht

65

ADD ang WR ang angHL+=spd

RDH ADC angH WR angH

RET

73 PWM輸出控制模組 模組方塊

cmd PWM輸出

程式說明 1在開機時將切換保護時間寫到輸出阜 0xbc上其中切換保護值為 0~6360=5us 2在每次 timer interrupt時將 cmd訊號處理後寫到輸出阜 0xb8上

PWM_outputasm程式列印 local cmd R0 IP gnd 輸入點v相命令

local gain R1 4096 參數輸出增益1=4096

local bias R2 2048 參數輸出偏壓0=2048

local limit R3 4095 參數輸出極限1=4095

local zone R4 0x88f0 參數頻率=12KHz切換保護=5us

local pwm R5 0xb8 輸出阜地址PWM0 輸出(0xb8)

local mode R6 0xbc 輸出阜地址PWM 模式(0xbc)

local p0md R7 0xf8 輸出阜地址port0 模式(0xf8)

local gnd R8 0 輸入接地點

data 9 模組變數區長度

initial 開機啟動程序

RD bias WR (pwm) pwm=bias

RD 0xffff WR (p0md) set port0 mode

RD zone WR (mode) RET mode=zone

stop 關機保護程序

RD bias WR (pwm) RET pwm=bias

timer 即時控制程序

RD (mode) xor 1 and 1 WR (mode) trigger watch-dog

RD (cmd) MUL gain SFR 12 ADD bias ACC=(cmdgain4096)+bias

MAX 0 MIN limit WR (pwm) pwm=limit(ACC)

RET

66

74 PD 控制模組

PD控制的模組方塊參見圖二十一所示其中比例控制的部份直接由增益 kp加以調整微分控制的部份則由誤差的差分經增益 kd的調整而得

Σ+

-

cmd

fdk

err out

Σ

pk

dk

Σ

+

+

+

-

old1minusZ

PD控制器的方塊圖

PD_controlasm程式列印 local cmd R0 IP gnd 輸入點位置命令(可忽略)

local fdk R1 IP gnd 輸入點位置回授(可忽略)

local out R2 OP 輸出點用以控制速度迴路

local kp R3 256 參數增益 kp10=256

local kd R4 0 參數增益 kd10=256

local err R5 0 內部變數

local old R6 0 內部變數

local gnd R7 0 無輸入時的短路點

data 8 模組變數區長度

initial 開機啟動程序

WR out0 WR old0 RET out=old=0

timer 即時控制程序

RD (cmd) SUB (fdk) PRTF WR err

MUL kp SFR 8 P=(cmd-fdk)kp256

RDS err SUBX old MUL kd SFR 8 D=(err-old)kd256

ADDS

WR out out=P+D

RET

程式中預設增益值的 10以整數值 256為基底因此使用 SFR 8的指令加以調

整另外在在計算微分項的程式部份用到 SUBX old的指令其詳細的暫存器動作如

下 參考 piDSP的指令說明SUBX指令將總共用到 3個時序參考錯誤 找不到參照

67

來源在時序 1時將原先 AX的資料拷貝一份到 HX中時序 2時正式執行減

法的動作所以 AX暫存器中的內容會變成 err-old時序 3時DSP會將存放在 HX暫存器中的內容拷貝一份到 old的記憶體中也就是經由 SUBX此一精簡指令將

同時完成計算差分所需要的相減與資料疊代的動作有效的利用 piDSP控制器 DSP核心的精簡指令將可以大幅提昇系統的計算速度

HX AXoldSUBXerr err

old

err

errerr olderr minus

1_err

errerr olderr minus err

1_err

1

2

3

SUBX的指令時序與暫存器變化

68

8附錄快速安裝說明

光纖網路通訊 FPGA 發展系統 (適用於 WIN-XP200098 系統)

快速安裝說明

26Pin 負載輸出入埠

雙電源︵5

12

伏︶輸入埠

單電源︵5

伏︶輸入埠

USB

光纖線輸

號 光纖線輸出埠

入 傳 埠

首先將光碟片 RFFPGA 目錄檔案拷貝在您工作硬碟裡面

第一次安裝時先將 USB 傳輸線接上電腦主機將電源供應器接上 FPGA 模組此時電

腦會出現安裝 USB-Serial 驅動程式選擇從清單安裝此驅動程式放置在光碟片

RFFPGA-USBdrive 選擇您目前安裝系統

可選擇 WIN-98WIN-MEWIN-2000WIN-XP 系統配合您現在工作電腦作業系統

69

注意一般電腦 USB 埠很多插口當您安裝驅動程式時是配合您當時插入之埠

下次如您插入不同接口埠時電腦會再次要求安裝驅動程式這是正常現象請再次安

裝驅動程式否則無法使用

FPLC 操作

首先進入 RFFPGA裡子目錄 testASM直接點選 fPLCexe 出現下面操作畫面(也可直接將

此檔案放置桌面直接點選)

(或者選擇 File 再執行 Setuphellip 選擇您要執行 CAI 檔)

70

進入下面操作畫面 首先使用滑鼠在 FPGA下載按鈕單擊動作使 FPGA變成 DSP晶片 實驗一至實驗五皆為使用 DSP組合語言設計程式其原始程式分別為 testASM1至testASM5可使用 texPad 開啟與編輯程式內容 實驗三與實驗五多有 IO控制動作 當選擇實驗三時出現下面畫面

71

eM_USB 模組

數字型 LED

0 1 2 34 5 6 78 9 A BC D E F

燈號型 LED

44 鍵盤

ADC0 ADC1 DAC0 DAC1

LED 選擇KEY 選擇

模 式 1

0123

注意操作畫面 3與 4 說明開關與按鍵選擇位置後選擇程式下載再按程式啟動如您

按下 0-3按鍵時燈號型 LED會有不同方向閃爍顯示程式停止時結束所有 IO控制動作再按回首頁選擇其他實驗 實驗四與實驗五

模式3

0 1 2 34 5 6 78 9 A BC D E F

按照上面開關選擇直接操作如果以上實驗皆能按照正常操作表示您光纖網路通訊

FPGA發展模組以能正常使用 注意 開機與關機動作順序如下

開機電腦啟動 --- eM_USB 模組電源接上 --- USB 接上電腦 ---

啟動 FPLC 軟體 --- 下載 FPGA 程式

關機關閉 FPLC 軟體 --- eM_USB 模組電源拔掉 --- 拔掉電腦 USB 接頭 ---關掉

電腦

如果以上順序有亂可能造成 USB 找不到驅動造成無法下載經過幾次測試還是

無法下載建議重新啟動電腦主機按照正確步驟操作

72

FPGA 下載操作

進入 FPLC 操作系統按照下列步驟選擇節點模組與下載 bit FPGA 檔案

在 VHDLDEMO 子目錄下您可以選擇您目前 FPGA 種類型號在此型號下我們已將 VHDL

與數位邏輯設計課本範例全部放於此處

73

光纖網路連線 FPGA 下載操作

首先利用光纖線將 eM_USB0 模組光纖輸出埠接至 eM_USB1 模組光纖輸入埠以此

類推最後再將最後 eM_USBN 模組光纖輸出埠接至 eM_USB0 模組光纖輸入埠配置

如附圖方式

個人電腦(Windows) eM_USB模組

0USB

eM_USB模組1

光纖網路

eM_USB模組2

eM_USB模組N

配置完成後進入 FPLC 系統首先必須先將 Node00 下載在 testASM 子目錄裡

piDSPv0bit 檔讓 eM_USB0 模組 FPGA 具備 DSP 功能才能執行光纖網路通訊

操作如下

此時您就可以選擇分別下載至各模組 FPGA 檔 bit

74

安裝 FPLC 注意事項

當您進入 FPLC 時

按 FILE 選擇 programhellip 選擇檔案為 exp_dcmplc 出現下面畫面

正常顯示畫面為

75

DOS 環境操作

在 PC 端的操作是在 Windows 環境中的 DOS 視窗中執行指令範例如下

eFPGA progNETbit 下載 FPGA電路至網路節點0(即 USB節點)中 eFPGA testLEDbit 1 下載 FPGA電路至網路節點1中

對於單一節點的控制程序如下

1將 eM_USB模組連結個人電腦的 USB端 2eM_USB模組開機 3執行下載指令即可 eFPGA xxxxbit 4若要更改 FPGA電路只要重新執行下載指令即可

對於多個網路節點的控制程序如下

1第一組 eM_USB模組連結個人電腦的 USB端再以光纖網路依序其他各節點 2連接 USB界面者為模組0從光纖發射端連接出去的模組為1依此類推 3將所有 eM_USB模組開機 4執行下載指令如下 eFPGA progNETbit 模組0必須先下載指定的 FPGA電路 eFPGA xxxxbit 1 再依序下載其他網路模組的 FPGA電路 eFPGA yyyybit 2 eFPGA zzzzbit 最後再重新下載模組0的 FPGA電路 5換句話說模組0必須先執行 progNETbit讓光纖網路接受 FPGA控制後才能透過光纖網路下載至其他節點等全部網路節點下載完畢後再將模組0的 FPGA重新下載讓模組0也可自由執行任意的 FPGA電路

6若要更改某一個網路節點中的 FPGA電路只要重新執行下述指令 eFPGA progNETbit 模組0必須先下載指定的 FPGA電路 eFPGA yyyybit 2 下載指定網路模組的 FPGA電路 eFPGA zzzz bit 最後再重新下載模組0的 FPGA電路 換句話說除非模組0中的 FPGA已經包括光纖網路管理電路否則一定要先在

模組0中下載網路管理電路後才能下載指定網路節點的 FPGA電路

76

光纖網路通訊 FPGA 發展系統

系統配置

光纖網路通訊 FPGA 發展系統的系統配置圖如下

個人電腦(Windows) eM_USB模組

0USB

eM_USB模組1

光纖網路

eM_USB模組2

eM_USB模組N

其中

1基本模組為 eM_USB模組可用 USB界面和個人電腦連線並提供 USB對光纖網路的轉換功能使得個人電腦可以獨立控制光纖網路中的每個網路節點

2eM_USB模組也可以作為光纖網路中的網路節點透過光纖網路而接受個人電腦的

監控 3就個人電腦而言不論是 USB界面直接連結或是以光纖網路間接連結的 eM_USB模組都是可以直接監控的網路節點最多可以同時控制一個 USB節點和 30個網路節點

4對於每一個網路節點個人電腦都可執行 eM_USB模組中 FPGA的電路下載工作並在適當的 FPGA電路配合下可執行 eM_USB模組中 FPGA內部電路的讀寫控制 5透過適當的 FPGA電路設計各網路節點都可透過光纖網路和其他任何網路節點

作同步通訊執行 FPGA內部記憶體的資料交換資料交換頻率可達 1KHz以上

77

網路模組配置

每個網路模組的標準配置圖如下

eM_USB模組光纖網路

USB eM_FPGA卡

eM_DEMO模組

eM_EXP實驗模組

DC電源

其中

1網路模組以 eM_USB模組為主提供基本的 USB界面和光纖網路連線 2eM_USB模組中的 FPGACPLD採用插卡型式可選擇不同的 eM_FPGA卡包括

eM_2V1K卡可選用 Virtex系列的 XC2V250和 XC2V1000 eM_3S1K卡可選用 Spartan3系列的 XC3S400XC3S1000和 XC3S1500 eM_3S50卡可選用 Spartan3系列的 XC3S50XC3S200和 XC3S400 eM_95XL卡可選用 9500XL系列的 XC95144XL和 XC95288XL 3eM_USB模組中的對外連線有兩種一種是 26P接頭用以連接既有的各種實驗模

組另一種是兩組 50P接頭將 FPGA中各接腳引出用以連接專題實驗 4eM_DEMO模組就是插上 50P接頭的教學模組其中包括 LED 數字顯示和 44鍵盤也具備兩組的 ADC和兩組的 DAC接頭提供類比訊號的測試工具

常用的實驗組合包括

1精簡組合包括(eM_USB+eM_FPGA)提供基本的網路節點適用於專題實驗 2標準組合包括(eM_USB+eM_FPGA+eM_DEMO)提供基礎 FPGA設計的教學實驗

3實驗組合包括(eM_USB+eM_FPGA+eM_DEMO+eM_EXP)提供進階的 FPGA實驗可依需求選用不同的實驗模組

78

eM_USB 模組

eM_USB 模組的電路配置圖如下

TxRx

DCPower

USB

JP2

JP3

光纖界面

外加電源

PC連線

JP1

eM_FPGA模組

FT232 CPLD FlashROM

SRAM

10cm

6cm

JP4

其中

1對外的連線接頭包括 DC電源 可選擇單電源(5V)或是多電源(5V+12V-12V)兩種 USB界面 直接連接個人電腦 光纖界面連接光纖網路 2實驗界面包括 JP1負責內部 CPLD的電路下載 JP2JP3兩組 50P的擴張用接頭 JP4 標準 26P接頭用以連接各種實驗模組 3內部的電路配置包括 A以 SO-DIMM接頭連接各種 eM_FPGA卡 B內附 EEPROMFlashROM和 SRAM提供 FPGA作應用測試 C以一顆 FT232BM作為 USB界面解碼而以一顆 CPLD作為光纖網路解碼 D提供各種 eM_FPGA卡的電路下載功能 4內附五顆 LED由上而下依序為 usbLED指示 USB界面的讀寫狀態 tstLED可由 FPGA電路自行定義 stsLED可由 FPGA電路自行定義 RxLED 可由 FPGA電路自行定義 TxLED 可由 FPGA電路自行定義

79

外部接腳定義

外部接頭的接點順序圖示如下

上視圖

JP11 9 JP4

126225

JP31

50249

JP21

50249

而各接頭的接點定義如下

JP1 JP4 JP2 JP3 1+33V 1+12V 2+12V 1 GND 2 GND 1 GND 2 GND 2GND 3 ADC 4 DAC 3POWER 4ALARM 3 +5V 4 +5V 3nc 5 yPB2 6 yPB3 5RxNET 6TxNET 5+12V 6+12V 4TCK 7 yPB1 6 yPB4 7RxUSB 6TxUSB 7-12V 6-12V 5nc 9 yPB0 10yPB5 9RxCAN 10TxCAN 9 ADC 10 DAC 6TDO 11yPB6 12yPB7 11P0D0 12P0D1 11P1D0 12P1D1 7TDI 13yGND 14yPC3 13P0D2 14P0D3 13P1D2 14P1D3 8nc 15yPC2 16yPC1 15P0D4 16P0D5 15P1D4 16P1D5 9TMS 17yPC0 18yPA0 17P0D6 18P0D7 17P1D6 18P1D7 19yPA1 20yPA2 19P0D8 20P0D9 19P1D8 20P1D9 21yPA3 22GND 21P0D10 22P0D11 21P1D10 22P1D11 23GND 24+5V 23P0D12 24P0D13 23P1D12 24P1D13 25+5V 26nc 25P0D14 26P0D15 25P1D14 26P1D15 27P2D0 28P2D1 27PxA0 28PxA1 29P2D2 30P2D3 29PxA2 30PxA3 31P2D4 32P2D5 31PxA4 32PxA5 33P2D6 34P2D7 33PxA6 34PxA7 35P2D8 36P2D9 35PxB0 36PxB1 37P2D10 38P2D11 37PxB2 38PxB3 39P2D12 40P2D13 39PxB4 40PxB5 41P2D14 42P2D15 41PxB6 42PxB7 43ADC0 44ADC1 43PxC0 44PxC1 45ADC2 46ADC3 45PxC2 46PxC3 47ADC4 48ADC5 47PxC4 48PxC5 49DAC0 50DAC1 49PxC6 50PxC7

80

eM_FPGA 模組

在各種 eM_FPGA 模組中FPGA 對外電路的標準配置圖如下

24576MHz

FlashROM

26PSRAM

EEPROM

mD[8]

yPA[4]

FPGACPLD

mA[19]mRDmWRmCSeeCKeeCSeeDIeeDO

光纖界面 RxNETTxNET

USB 界面 RxUSBTxUSBCLK24MPOWERALARM

LED

tstLEDstsLEDRxLEDTxLED

yPB[8]yPC[4]

ADCDAC

ADC[8]

實驗模組

ADC[2]

DAC[2]

xPA[4]

xPB[8]

xPC[4]

基礎實驗

其中

1FPGACPLD可以選擇下述幾種 XC2V250XC2V1000 採用 eM_2V1K模組其中 FPGA為 FG456包裝 XC3S400XC3S1000XC3S1500採用 eM_3S1K模組其中 FPGA為 FG456包裝 XC3S400XC3S1000XC3S1500採用 eM_3S1K模組其中 FPGA為 FG456包裝 XC3S50XC3S200XC3S400 採用 eM_3S50模組其中 FPGA為 TQ144包裝 XC95144XLXC95288XL 採用 eM_95XL模組其中 CPLD為 TQ144包裝 2採用 FG456包裝者可以控制所有的 IO界面 3採用 TQ144包裝者只是不能控制 RAM和 FlashROM而可以控制其他所有的界面 4所有 FPGA模組都可自由選擇由 USB界面或是由光纖界面下載電路但是 CPLD模組只能固定由 USB界面下載電路

5所有 FPGACPLD模組都可透過 26P接頭連接既有的各種實驗模組

81

FPGA 接腳對照表

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

mD0 XD6 mD0 A17 C13 -- -- mD1 XD7 mD1 B17 D12 -- -- mD2 XD8 mD2 C17 D11 -- -- mD3 XD9 mD3 D17 C11 -- -- mD4 XD10 mD4 E17 D10 -- -- mD5 XD11 mD5 E16 C10 -- -- mD6 XD12 mD6 E14 D9 -- -- mD7 XD13 mD7 E13 D7 -- -- mA0 XD14 mA0 D13 C7 -- -- mA1 XD15 mA1 C13 D6 -- -- mA2 XA0 mA2 V5 C3 -- -- mA3 XA1 mA3 U5 C4 -- -- mA4 XA2 mA4 Y2 D3 -- -- mA5 XA3 mA5 Y1 D4 -- -- mA6 XA4 mA6 V4 E3 -- -- mA7 XA5 mA7 V3 E4 -- -- mA8 XA6 mA8 W2 F3 -- -- mA9 XA7 mA9 W1 F4 -- -- mA10 XA8 mA10 T2 G6 -- -- mA11 XA9 mA11 T1 K3 -- -- mA12 XA10 mA12 R4 K10 -- -- mA13 XA11 mA13 R3 L3 -- -- mA14 XA12 mA14 R2 L4 -- -- mRD XRD mRD R1 D5 -- -- mWR XWR mWR P6 C6 -- --

POWER P0A0 POWER B4 B20 P1 P5 ALARM P0A1 ALARM A4 A19 P2 P6 RxNET P0A2 RxNET C4 B19 P4 P7 TxNET P0A3 TxNET C5 A18 P5 P9 RxUSB P0B0 RxUSB B5 A15 P6 P10 TxUSB P0B1 TxUSB A5 B15 P7 P11 RxCAN P0B2 RxCAN D6 A14 P8 P12 RxCAN P0B3 TxCAN C6 B14 P10 P13

CLK24M CLK24M CLK24M E12 B12 P124 P38

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

PWM0H P3A0 P0D0 E6 A8 P21 P23 PWM0L P3A1 P0D1 E5 B8 P23 P24 PWM1H P3A2 P0D2 C2 B6 P24 P25 PWM1L P3A3 P0D3 C1 A5 P25 P26 PWM2H P3A4 P0D4 D2 B5 P26 P27

82

PWM2L P3A5 P0D5 D1 A4 P27 P28 PWMenb P3A6 P0D6 E4 B4 P28 P30 PHT1Z P3A7 P0D7 E3 A3 P30 P31 PHT1A P3B0 P0D8 G2 C1 P31 P32 PHT1B P3B1 P0D9 G1 C2 P32 P33 PHT0A P3B2 P0D10 H5 D1 P33 P34 PHT0B P3B3 P0D11 J6 D2 P35 P35 AMP0 P3B4 P0D12 H4 E1 P36 P39 AMP1 P3B5 P0D13 H3 E2 P40 P40 AMP2 P3B6 P0D14 H2 F2 P41 P41 AMP3 P3B7 P0D15 H1 G1 P44 P43 eeSK P0C3 P1D0 C10 B9 P20 P22 eeCS P0C2 P1D1 D10 A9 P18 P21 eeDI P0C1 P1D2 F10 B10 P17 P20 eeDO P0C0 P1D3 E10 B11 P15 P19 ssCK P0B7 P1D4 E8 A11 P14 P17 ssCS P0B6 P1D5 E7 A12 P13 P16 ssDI P0B5 P1D6 A6 B13 P12 P15 ssDO P0B4 P1D7 B6 A13 P11 P14

ppCLK P3C0 P1D8 K4 G2 P46 P44 ppDIN P3C1 P1D9 K3 K1 P47 P45 TxD P3C2 P1D10 K2 K2 P50 P46 RxD P3C3 P1D11 K1 L1 P51 P48

tstLED P3C4 P1D12 L5 L2 P52 P49 stsLED P3C5 P1D13 L4 M1 P53 P50 RxLED P3C6 P1D14 L3 M2 P55 P51 TxLED P3C7 P1D15 L2 N1 P56 P52

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

xPA0 P2A0 P2D0 AA3 N2 P59 P53 xPA1 P2A1 P2D1 Y4 T1 P60 P54 xPA2 P2A2 P2D2 AA4 T2 P63 P56 xPA3 P2A3 P2D3 AB4 U2 P68 P57 xPC0 P2A4 P2D4 W5 V1 P69 P58 xPC1 P2A5 P2D5 Y5 V2 P70 P59 xPC2 P2A6 P2D6 AA5 W1 P73 P60 xPC3 P2A7 P2D7 AB5 W2 P74 P61

-- P2B0 P2D8 V6 Y1 P76 P64 -- P2B1 P2D9 V7 Y2 P77 P66 -- P2B2 P2D10 W6 AA3 P78 P68

mCS P2B3 P2D11 Y6 AB4 P79 P69 mA15 P2B4 P2D12 V9 AA4 P80 P70 mA16 P2B5 P2D13 V10 AB5 P82 P71 mA17 P2B6 P2D14 W10 AA5 P83 P74 mA18 P2B7 P2D15 Y10 AA6 P84 P75 CS0 P2C0 ADC0 AA10 AB8 P85 P76

83

SDIN0 P2C1 ADC1 AB10 AA8 P86 P77 CS1 P2C2 ADC2 U10 AB9 P87 P78

SDIN1 P2C3 ADC3 U11 AA9 P89 P79 SCLK P2C4 ADC4 V11 AB10 P90 P80 CS2 P2C5 ADC5 W11 AA10 P92 P81

SDOUT P2C6 ADC6 Y11 AB11 P93 P82 LDAC P2C7 ADC7 AA11 AA11 P95 P83

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

xPB0 P1A0 PxA0 M1 M3 P135 P85 xPB1 P1A1 PxA1 M2 M4 P132 P86 yPB2 P1A2 PxA2 M3 N3 P131 P87 yPB3 P1A3 PxA3 M4 N4 P130 P88 yPB1 P1A4 PxA4 M5 T4 P129 P91 yPB4 P1A5 PxA5 M6 T5 P128 P92 yPB0 P1A6 PxA6 N1 U3 P127 P93 yPB5 P1A7 PxA7 N2 U4 P125 P94 yPB6 P1B0 PxB0 U13 V3 P119 P95 yPB7 P1B1 PxB1 V13 V4 P118 P96 xPB2 P1B2 PxB2 W13 W3 P116 P97 xPB3 P1B3 PxB3 Y13 W4 P113 P98 xPB4 P1B4 PxB4 AA13 Y3 P112 P100 xPB5 P1B5 PxB5 AB13 Y4 P96 P101 yPC3 P1B6 PxB6 U12 Y5 P97 P102 yPC2 P1B7 PxB7 V12 W5 P98 P103 yPC1 P1C7 PxC0 AB17 W11 P108 P113 yPC0 P1C6 PxC1 AA17 Y11 P107 P112 yPA0 P1C5 PxC2 Y17 W10 P105 P111 yPA1 P1C4 PxC3 W17 Y10 P104 P110 yPA2 P1C3 PxC4 AB18 W9 P103 P107 yPA3 P1C2 PxC5 AA18 W8 P102 P106 xPB6 P1C1 PxC6 Y18 W6 P100 P105 xPB7 P1C0 PxC7 W18 Y6 P99 P104

84

eM_DEMO 模組

eM_DEMO 模組的電路配置圖如下

eM_USB 模組

數字型 LED

0 1 2 34 5 6 78 9 A BC D E F

燈號型 LED

44 鍵盤

ADC0 ADC1 DAC0 DAC1

LED 選擇KEY 選擇

其中

1eM_DEMO模組的基本功能包括 A將 xPAxPBxPC等 16個 IO訊號引出控制 LED和鍵盤電路 B將 ADDA訊號引出並放大成+-10V的工作範圍 2LED和鍵盤可以選擇三種模式由 LED和 KEY 兩組開關作選擇圖示如下

模式1

0123

模式2 模式3

0 1 2 34 5 6 78 9 A BC D E F

0123

3模式14鍵輸入並搭配 16點的 LED燈號顯示其中 16點 LED分別對映到 xPA[0~3]xPB[0~7]和 xPC[0~3] 4組按鍵分別對映到 xPC[0~3] 4模式24鍵輸入並搭配四個 7段式數字顯示其中 數字顯示由 xPA[0~3]作數字掃瞄而由 xPB[0~7]作 7段式 LED控制 4組按鍵 分別對映到 xPC[0~3] 5模式316鍵輸入並搭配四個 7段式數字顯示其中 數字顯示由 xPA[0~3]作數字掃瞄而由 xPB[0~7]作 7段式 LED控制 16組按鍵由 xPA[0~3]作鍵盤掃瞄而由 xPC[0~3]作鍵盤讀取 6根據VHDL與數位邏輯設計的章節其中 第 1章至 10章的實驗採用模式1而 第 11章實驗採用模式2而 第 12章之後的實驗都採用模式3

85

FPGA UCF 定義

eM_3S1K 模組

NET CLK LOC = B12

NET XAlt0gt LOC = N2

NET XAlt1gt LOC = T1

NET XAlt2gt LOC = T2

NET XAlt3gt LOC = U2

NET XBlt0gt LOC = M3

NET XBlt1gt LOC = M4

NET XBlt2gt LOC = W3

NET XBlt3gt LOC = W4

NET XBlt4gt LOC = Y3

NET XBlt5gt LOC = Y4

NET XBlt6gt LOC = W6

NET XBlt7gt LOC = Y6

NET XClt0gt LOC = V1

NET XClt1gt LOC = V2

NET XClt2gt LOC = W1

NET XClt3gt LOC = W2

NET YAlt0gt LOC = W10

JP4 接頭

NET YAlt1gt LOC = Y10

NET YAlt2gt LOC = W9

NET YAlt3gt LOC = W8

NET YBlt0gt LOC = U3

NET YBlt1gt LOC = T4

NET YBlt2gt LOC = N3

NET YBlt3gt LOC = N4

NET YBlt4gt LOC = T5

NET YBlt5gt LOC = U4

NET YBlt6gt LOC = V3

NET YBlt7gt LOC = V4

NET YClt0gt LOC = Y11

NET YClt1gt LOC = W11

NET YClt2gt LOC = W5

NET YClt3gt LOC = Y5

在光碟片中 RFFPGAVHDLDEMOBIT3S1K 裡有 VHDL 與數位邏輯設計書本範例原始檔與合成檔

86

eM_3S50 模組

NET CLK LOC = P124

NET XAlt0gt LOC = P59

NET XAlt1gt LOC = P60

NET XAlt2gt LOC = P63

NET XAlt3gt LOC = P68

NET XBlt0gt LOC = P135

NET XBlt1gt LOC = P132

NET XBlt2gt LOC = P116

NET XBlt3gt LOC = P113

NET XBlt4gt LOC = P112

NET XBlt5gt LOC = P96

NET XBlt6gt LOC = P100

NET XBlt7gt LOC = P99

NET XClt0gt LOC = P69

NET XClt1gt LOC = P70

NET XClt2gt LOC = P73

NET XClt3gt LOC = P74

NET YAlt0gt LOC = P105

JP4 接頭

NET YAlt1gt LOC = P104

NET YAlt2gt LOC = P103

NET YAlt3gt LOC = P102

NET YBlt0gt LOC = P127

NET YBlt1gt LOC = P129

NET YBlt2gt LOC = P131

NET YBlt3gt LOC = P130

NET YBlt4gt LOC = P128

NET YBlt5gt LOC = P125

NET YBlt6gt LOC = P119

NET YBlt7gt LOC = P118

NET YClt0gt LOC = P107

NET YClt1gt LOC = P108

NET YClt2gt LOC = P98

NET YClt3gt LOC = P97

在光碟片中 RFFPGAVHDLDEMOBIT3S200 裡有VHDL與數位邏輯設計書本範例原始檔與合成檔

87

eM_95XL 模組

NET CLK LOC = SPIN38

NET XAlt0gt LOC = SPIN53

NET XAlt1gt LOC = SPIN54

NET XAlt2gt LOC = SPIN56

NET XAlt3gt LOC = SPIN57

NET XBlt0gt LOC = SPIN85

NET XBlt1gt LOC = SPIN86

NET XBlt2gt LOC = SPIN97

NET XBlt3gt LOC = SPIN98

NET XBlt4gt LOC = SPIN100

NET XBlt5gt LOC = SPIN101

NET XBlt6gt LOC = SPIN105

NET XBlt7gt LOC = SPIN104

NET XClt0gt LOC = SPIN58

NET XClt1gt LOC = SPIN59

NET XClt2gt LOC = SPIN60

NET XClt3gt LOC = SPIN61

NET YAlt0gt LOC = SPIN111

JP4 接頭

NET YAlt1gt LOC = SPIN110

NET YAlt2gt LOC = SPIN107

NET YAlt3gt LOC = SPIN106

NET YBlt0gt LOC = SPIN93

NET YBlt1gt LOC = SPIN91

NET YBlt2gt LOC = SPIN87

NET YBlt3gt LOC = SPIN88

NET YBlt4gt LOC = SPIN92

NET YBlt5gt LOC = SPIN94

NET YBlt6gt LOC = SPIN95

NET YBlt7gt LOC = SPIN96

NET YClt0gt LOC = SPIN112

NET YClt1gt LOC = SPIN113

NET YClt2gt LOC = SPIN103

NET YClt3gt LOC = SPIN102

在光碟片中 RFFPGAVHDLDEMOSVF95288XL 裡有VHDL與數位邏輯設計書本範例原始檔與合成

檔案

88

eM_FPGA 模組

NET CLK LOC = E12

NET XAlt0gt LOC = AA3

NET XAlt1gt LOC = Y4

NET XAlt2gt LOC = AA4

NET XAlt3gt LOC = AB4

NET XBlt0gt LOC = M1

NET XBlt1gt LOC = M2

NET XBlt2gt LOC = W13

NET XBlt3gt LOC = Y13

NET XBlt4gt LOC = AA13

NET XBlt5gt LOC = AB13

NET XBlt6gt LOC = Y18

NET XBlt7gt LOC = W18

NET XClt0gt LOC = W5

NET XClt1gt LOC = Y5

NET XClt2gt LOC = AA5

NET XClt3gt LOC = AB5

NET YAlt0gt LOC = Y17

JP4 接頭

NET YAlt1gt LOC = W17

NET YAlt2gt LOC = AB18

NET YAlt3gt LOC = AA18

NET YBlt0gt LOC = N1

NET YBlt1gt LOC = M5

NET YBlt2gt LOC = M3

NET YBlt3gt LOC = M4

NET YBlt4gt LOC = M6

NET YBlt5gt LOC = N2

NET YBlt6gt LOC = U13

NET YBlt7gt LOC = V13

NET YClt0gt LOC = AA17

NET YClt1gt LOC = AB17

NET YClt2gt LOC = V12

NET YClt3gt LOC = U12

在光碟片中 RFFPGAVHDLDEMOBIT2V250 裡有VHDL與數位邏輯設計書本範例原始檔與合成檔

89

Page 8: RFFPGA 直流馬達實驗手冊juniortek.com.tw/program/manual/RF-DC-mal.pdf · em_demo模組 em_dcm 直流伺服馬達 dc電源 rffpga 系統的直流馬達實驗規劃 其中包括:

V+

單向控制

V+

A

AB

B

A雙向控制

單向控制結構只能控制直流馬達做單方向的運轉而由 PWM 控制馬達的轉速雙向控制

在速度之外還可以控制馬達作正反轉通常用來執行直流馬達的位置控制用

PWM 的控制波形非常簡單就是產生一組平均值為指定電壓的波形也就是控制所謂的

工作率(Duty-Cycle)定義如下

平均電壓 = Ton (Ton + Toff) 電源電壓 = 工作率 電源電壓

但是由於波形上的微小差異細分起來還是有下面三種型式

前緣對齊型

10 1010

30 30 30

50 50 50

中間對齊型 後緣對齊型

如果只有一組 PWM 波形輸出無論採用哪種波形都沒有差異只有當多個 PWM 波形要同

時輸出(例如交流馬達作三相控制)時才需要選擇中間對齊的型式作處理以免造成相

位失真的現象

在電路設計上都是產生一組參考波來和電壓命令作比較當電壓命令大於參考波時就

送出 1小於參考波時就送出 0如此就形成 PWM 波形其差別只是採用何種參考波作

比較

前緣對齊型

70

中間對齊型 後緣對齊型

70

以上圖為例要產生前緣對齊型的 PWM 訊號就採用遞增型鋸齒波若採用遞減型鋸齒

波就會產生後緣對齊型的 PWM 訊號採用前後對稱的三角波就會產生中間對齊型的

PWM 訊號

8

PWM切換保護

對於單一線圈的負載而言PWM切換電路的電路方塊圖如下

負載

正電源

負電源

PWM+

PWM-

P

N

其中

1以兩組電晶體來分別控制正負電源其中的電晶體依據功率需求可選擇功率電晶體

MOSFET或是 IGBT不論哪種選擇其控制原理都一致 2將 PWM訊號分成正向和反向的兩組控制訊號PWM+控制正電源的導通與否而

PWM-控制負電源的導通與否 3切換組合包括 P=OFFN=OFF負載和電源隔離 P=ON N=OFF負載連接上正電源 P=OFFN=ON 負載連接上負電源 P=ON N=ON 正負電源短路這時功率驅動級將瞬間燒毀

原則上只要將 PWM+和 PWM-間的邏輯反向是不可能發生兩者都 ON 的情況但是再考慮

功率電晶體(包括電晶體MOSFET 和 IGBT)的暫態響應電晶體 OFF 的反應時間通常比

電晶體 ON 的反應時間要長一些所以在切換瞬間很可能產生兩者都導通的瞬間狀態

這時可能有兩種結果

1兩者同時導通的時間稍長時功率驅動級將瞬間產生過電流而燒毀 2兩者同時導通的時間非常短這時功率驅動級雖不至於瞬間燒毀但是會產生很高

的熱量使得功率驅動級的溫度快速加高甚至於因為過熱而燒毀

因此 PWM 控制必須加上切換保護其示意圖如下

PWM+ PWM-

切換保護

其中

1基本上PWM-只是 PWM+的反向訊號兩者都由一組 PWM訊號控制 2但是在 ONOFF 切換的瞬間必須加上一段兩者都 OFF的時間這段時間的長度

可依照功率電晶體的 ONOFF特性來設定在 1us~4us之間

9

PWM 啟動保護

在系統開機時很不容易保證各個元件都能依照順序依序啟動因此在系統啟動時必須

自動將 PWM 輸出關掉直到系統完成整個開機程序後才能再將 PWM 訊號重新啟動一

般而言啟動程序如下

1系統開機後功率驅動級通常最快啟動這時 PWM必須保持在 OFF 狀態避免系

統誤動或短路 2之後依次啟動 BIOSLinux網路最後才啟動應用程式 3應用程式啟動後必須依序 A下載 FPGA B下載 DSP控制軟體 C啟動 DSP控制軟體 在啟動 DSP控制軟體後才能重新開啟 PWM的動作 4任何時間中只要 DSP控制停止就必須立刻關閉 PWM控制以避免誤動或短路

所以 PWM 啟動保護是由 DSP 程式直接控制其必要程序包括

1FPGA電路下載完畢並執行工作中 2DSP程式下載完畢並執行工作中

其中任何一個部分停止都必須立刻關閉 PWM 控制一般而言這部分電路都由看護犬

(watch-dog)電路管理而由 DSP 程式負責驅動

DCM 實驗模組

DCM 模組是一個完整的直流馬達實驗機台系統方塊圖如下

YA1

切換保護

YA2

YC0

馬達

PHTA PHTB

PWM+

DIS

YA0 PWM-

+12VSW

YC1

JP4 A

AB

B

雙向控制

光電盤

A

B

其中

1採用雙向控制的 PWM功率驅動級來驅動直流馬達可控制馬達正反轉 2功率驅動級中已有切換保護其控制訊號包括

10

PWM+ PWM- DIS 直流馬達 X X 1 OFF 1 0 0 正電壓驅動 0 1 0 負電壓驅動

3功率驅動級中並沒有啟動保護所以必須附加電源開關作手動控制 4馬達轉角由光電盤的 AB相訊號作回授 5所有控制訊號都經由 JP4接頭接到 RFFPGA控制器中可由 FPGA作控制

三角波產生器

實驗中以中間對齊型的 PWM 訊號為控制目標首先建立對稱的三角波作為參考訊號其

對映的 VHDL 程式範例如下

TRIANGLE_WAVE block signal Q STD_LOGIC_VECTOR (11 downto 0) signal CEDIR STD_LOGIC begin process (CLKRESET) -- sequential logic begin if RESET=1 then --reset Qlt=000000000111 --reset to 7 elsif CLKevent and CLK=1 then --CLK=gt1 trigger if CE=1 then --clock enable if DIR=0 then Qlt=Q+1 --up counter else Qlt=Q-1 --down counter end if end if end process -- combinational logic CE lt= SYSTEM(0) --24MHz clock DIR lt= SYSTEM(13) --4KHz square wave REF lt= Q --12-bit reference (7~3079) end block TRIANGLE_WAVE 其中

1程式設計為可適用於不同的系統時鐘包括 49152MHz和 24576MHz 兩種型式 2計數器的基本頻率為 24576MHz所以用 CE=SYSTEM(0)來控制計數動作 3三角波的頻率設為 4KHz所以計數器的峰值為(2457642=3072) 4正反計數器和系統時序同步而以 SYSTEM(13)做為同步控制由於 SYSTEM(13)為 4KHz的方波設定 DIR=SYSTEM(13)即可控制計數器的上升或下降

5在 RESET時將計數器的初值設為 7使得計數範圍修正為 7~3079所以即使有些同步誤差也不會產生負數輸出的嚴重影響

6三角波以 REF[12]作輸出數值範圍在 7~3079之間頻率為 4KHz

11

如果 PWM 的頻率過低馬達端會產生震動噪音這時就必須提高 PWM 的頻率在前面程

式中如果要將 PWM 頻率從 4KHz 提升為 8KHz則可更改如下

if DIR=0 then Qlt=Q+2 --up counter else Qlt=Q-2 --down counter DIR lt= SYSTEM(12) --8KHz square wave 其中

1將 DIR改由 8KHz的 SYSTEM(12)來控制 2同時將計數器改成+2-2的正反計數器 3如此仍然能夠維持 REF輸出的數值範圍(7~3079)

如果還要再將 PWM 的頻率提高到 16KHz則可更改如下

if DIR=0 then Qlt=Q+4 --up counter else Qlt=Q-4 --down counter DIR lt= SYSTEM(11) --16KHz square wave 其中

1將 DIR改由 16KHz的 SYSTEM(11)來控制 2同時將計數器改成+4-4的正反計數器 3如此仍然能夠維持 REF輸出的數值範圍(7~3079)

表面上三角波產生器的數值精度為 12-bit時間精度為 24MHz但是由於 PWM 訊號將

透過 FPGA2 輸出而高速串列界面的更新速度為 15MHz所以就 DCM 模組所收到的 PWM

控制訊號而言其時間精度將降低為 15MHz而數值上的精度將降低為 8-bit等效範

圍為 0~192 或是+-96 之間整體而言控制上的精度約為 05仍可符合馬達控制的

需求

PWM 波形產生器

接著處理比較的動作並產生 PWM 波形對映的 VHDL 程式範例如下

PWM_COMPARATOR block signal CEPUPD STD_LOGIC signal D0D1D2D3D4 STD_LOGIC begin process (CLK) -- sequential logic begin if CLKevent and CLK=1 then --CLK=gt1 trigger if CE=1 then --CLK enable D4lt=D3 D3lt=D2 D2lt=D1 D1lt=D0 --delay end if end if

12

end process -- combinational logic CE lt= CLK1M D0 lt= 1 when CMDgtREF else 0 --PWM generation PU lt= D1 and D2 and D3 and D4 --up-side output PD lt= not D1 and not D2 and not D3 and not D4 --down-side output PWMU lt= PU --up-side PWM output PWMD lt= PD --down-side PWM output PWMI lt= (not PU and not PD) or not ENB --PWM disable PWMR lt= REF --PWM reference end block PWM_COMPARATOR

程式中所對映的時序如下

CE

REF

CMD

D1D2D3D4PWMUPWMDPWMI

其中

1以 15MHz的 CE訊號為基本頻率 2將電壓命令 CMD和參考波形 REF作比較若 CMDgtREF則設定 D0=0否則設定

D0=1 3將 D0訊號作四次的延遲處理延遲訊號依序為 D1D2D3D4最後再重新組合成

PWM的輸出波形 4其輸出訊號包括 PWMU對映到 DCM模組中的 PWM+訊號 PWMD對映到 DCM模組中的 PWM-訊號 PWMI對映到 DCM模組中的 DIS訊號為切換保護訊號 如此 PWMU作動和 PWMD作動之間將有 2us間隔中是兩者都不作動的也就是

PWMI的作動時間 5當 ENB命令=0時設定 PWMI=1而使得驅動器 OFF

13

回授訊號的處理

精密的伺服馬達動作必須將馬達的位置和速度加以量測後再執行回授控制因此速

度和位置的量測是精密控制中必要的一環我們通常用光電寫碼器或數位尺來進行量測

工作

光電寫碼器(Photo-Encoder)俗稱光電盤是利用光電量測進行的非接觸式數位量測元

件其基本裝置如下

LED光源

光電晶體偵測

以 LED 或是其他光源來發光而用 AB 相的兩組光電晶體來偵測當圓盤隨著馬達作轉

動時光電晶體即可偵測到其移動狀態由於圓盤中的小孔呈等距排列其透光部分和

不透光部分呈 50對 50的比例當圓盤轉動時光電晶體端就可以偵測到下述訊號

光電盤訊號(A 相)

光電盤訊號(B 相)

正轉

其中

1偵測方波的頻率即對應於圓盤轉動的頻率也就是轉速 2偵測方波的個數即對應於圓盤轉過的孔數也就是轉角(相對角度) 3由於 AB相的兩組光電晶體在機械安裝上的角度不同使得讀出訊號也有 90 度的

差異如果馬達正轉則 A相超前如果馬達反轉則 B相超前

有了兩相的光電盤訊號只要能偵測其中的相位變化就可以分辨光電盤的正反轉運動

了例如正轉時的光電盤時序如下

14

光電盤訊號 (A 相 )

光電盤訊號 (B 相 )

正轉

微分訊號(A+)

微分訊號(A-)

微分訊號(B+)

微分訊號(B-)

正轉脈衝(CW)

其中

1針對 AB 兩相訊號作微分處理即可取得 A+A-B+B-的上緣微分和下緣微分 2將微分訊號和和原有的 AB相訊號作比較即可找出正轉脈衝 3計算正轉脈衝的頻率和個數即可取得馬達的速度和轉角 4如此得到的脈衝數將是原有 AB相頻率的四倍所以稱之為乘四解碼電路

同樣的如果針對光電盤的反轉時序一樣可以得出反轉訊號圖示如下

光電盤訊號(A相)

光電盤訊號(B相)

反轉

反轉脈衝(CCW)

其公式如下

CW lt= (A+ and not B) CCW lt= (A+ and B) or (A- and B) or (A- and not B) or (B+ and A) or (B+ and not A) or (B- and not A) or (B- and A)

整合光電盤回授的處理其系統方塊圖如下

數位濾波

D Q

CK

DLA

PHA

D Q

CK

DLB

PHB

CLK

乘四解碼電路

DIR

PLS

數位濾波

PA

PB

正反計數

CNT DB

RD

CS

包括

15

1首先利用簡單的數位濾波器將 AB項的雜訊排除 2接著利用延遲電路作微分處理並以乘四解碼電路解出轉動的脈波和方向 3最後利用正反計數器作計數並將計數值讀入匯流排

數位濾波器

光電盤的 AB 相訊號中如果產生雜訊干擾的現象會使得馬達轉角的計量上產生永久

性的累積誤差將造成控制上無法彌補的錯誤所以 AB 相訊號上的雜訊一定要盡力排

除下面是常用的數位濾波器設計範例

FILTER_A block -- digital filter for A signal CED0D1D2 STD_LOGIC begin process (CLK) -- sequential logic begin if CLKevent and CLK=1 then --CLK=gt1 trigger if CE=1 then --clock enable D2lt=D1 D1lt=D0 D0lt=PA --delay 3 clocks PHA lt= (D0 and D1 and D2) or ((D0 or D1 or D2) and PHA) end if end if end process -- combinational logic CE lt= CLK1M --15MHz clock end block FILTER_A 其中

1以 15MHz的頻率為控制基準 2利用延遲電路依序產生 D0D1D2的延遲訊號 3連續三個 1(D0D1D2 都是 1)定義為 1連續三個 0(D0D1D2 都是 0)定義為 0而其他不連續的 10 都定義為雜訊如此可將高頻的雜訊濾除

4但是相對的AB相訊號的最高頻率將限制為 250KHz(連續 3個 1和連續 3個 0)頻率過高的 AAB相訊號將被視為雜訊而不處理必須特別注意

正反轉的解碼和計數

依據前面的公式說明對映的 VHDL 程式範例如下

DECODER block signal DLADLB STD_LOGIC begin process (CLK) -- sequential logic begin if CLKevent and CLK=1 then --CLK=gt1 trigger DLAlt=PHA DLBlt=PHB --delay 1-clock end if end if

16

end process -- combinational logic DIR lt= (not PHA and DLA and not PHB) or ( PHA and not DLA and PHB) or (not PHB and DLB and PHA) or ( PHB and not DLB and not PHA) PLS lt= (not PHA and DLA) or (PHA and not DLA) or (not PHB and DLB) or (PHB and not DLB) end block DECODER 其中

1PHAPHB為經過雜訊濾波後的 AB相訊號而 DLADLB是其延遲訊號 2根據乘四解碼電路的公式取得 DIR和 PLS訊號其中 DIR用以控制計數器的正反向 PLS用以控制計數器的計數與否

所以接下去就是正反計數器的設計範例如下

COUNTER block signal Q STD_LOGIC_VECTOR(11 downto 0) begin process (CLKRESET) -- sequential logic begin if RESET=1 then --power-on reset Qlt=000000000000 --reset to 0 elsif CLKevent and CLK=1 then --CLK=gt1 trigger if PLS=1 then --clock enable if DIR=1 then Qlt=Q-1 --down counter else Qlt=Q+1 --up counter end if end if end if end process -- combinational logic CNT lt= Q --counter output end block COUNTER 其中

1這是標準的正反計數器架構在開機時自動復歸 2計數器的長度為 12-bit可依需要自行調整

DCM模組中的光電盤精度為每圈500格經過乘四解碼後相當於每圈2000格所以12-bit

計數器只能處理 2 圈的應用範圍絕對不夠在真正應用時一定要用軟體或硬體的方

式再擴張成 16-bit 或是 32-bit 的寬度來處理才行

17

3實驗項目

在直流伺服馬達控制系統中規劃五個實驗項目由系統首頁做選擇每項實驗操

作整個系統實驗組成由各項實驗項目 CAI 檔及各項實驗項目程式連結 PLC 檔結合而成茲表列如下

直 流 伺 服 實 驗 e x p _d c m c ai

開 環 路 電 壓 控 制

系 統 首 頁 實 驗 程 序

e x p _p w m c ai

開 環 路 速 度 控 制 e x p _s p ee d c a i

閉 環 路 位 置 控 制 e x p _a n gl e c a i

加 減 速 的 位 置 控 制 e x p _a c c c ai

正 弦 波 位 置 控 制 e x p _s i n c ai

C A I 圖 控 檔

直 流 伺 服 實 驗 開 環 路 電 壓 控 制

系 統 首 頁 實 驗 程 序

e x p _p w m p lc

開 環 路 速 度 控 制 e x p _s p ee d p l c

閉 環 路 位 置 控 制 e x p _a n gl e p l c

加 減 速 的 位 置 控 制 e x p _a c c p lc

正 弦 波 位 置 控 制 e x p _s i n p lc

e T T Y 批 次 檔

18

4安裝程序

31 將 RFFPGA中的程式拷貝至工作硬碟中進入 DC子目錄資料夾中其中包含下

列檔案

檔案 內容說明 mod SIN_wave MODPWM_wave MODIIR1_filter MODDAS4

MODPOS_inputMODPWM_outputMODACC_controlMODPD_controlMOD這些檔案是由 ASM重新編譯出由 testDCMmem所需執行模組檔

asm SIN_waveasmPWM_waveasmIIR1_filterasmDAS4asm POS_inDCMasmPWM_outDCMasmACC_conDCMasmPD_controlasm是各模組組合語言所設計 SOURCE檔

plc 為進行實驗所需的各批次檔 bit piDSPv0bit為下載到 FPGA的 BIT檔其功能為將 FPGA規劃成

具備 piDSP控制晶片功能提供直流伺服控制所需的控制程式

撰寫 testDCMsys 記載進行 DCM實驗時所需的模組 testDCMMEM 連結完成的 DSP執行檔用來進行 DCM實驗 testDCMvar 紀錄 DCM實驗時的參數對照表

在進行實驗前先將實驗所需的系統程式與模組程式分別說明加以說明系統所

需的程式模組由 testDCMsys 來描述程式列印如下

module fg1 PWM_wavemod 方波產生器

module fg2 SIN_wavemod 弦波產生器

module cn1 ACC_controlmod 加減速控制器

module cn2 PD_controlmod 比例微分控制器

module io1 POS_inputmod 位置和速度讀值

module io2 PWM_outputmod PWM 電壓輸出界面

module ft1 IIR1_filtermod 一階濾波器

module das das4mod 示波器資料蒐集

module io3 LEDKEYmod LEDKEY 界面

其中包括

1兩組波型產生器作為測試命令包括正弦波和方波 2兩組控制器提供包括加減速PD控制器的功能可依照實驗需求搭配使用 3兩組輸入輸出界面執行 PWM輸出和相位回授的界面處理 4一組低通濾波器作為電壓開迴路控制迴路和速度閉迴路控制的模擬使用 5DAS4mod是示波器專用的配合模組不論任何實驗都必須加入此模組 6Ledmod是四位數字七段顯示與 44矩陣按鍵模組

19

5執行程序

首先進入 RFFPGA 裡子目錄 DC直接點選 fPLCexe 出現下面操作畫面(也可直接將此檔

案放置桌面直接點選)

進入下面操作畫面

20

首先使用滑鼠在 FPGA下載按鈕單擊動作使 FPGA變成 piDSP晶片 如您撰寫組合語言時可使用 eASM按鈕 經編譯完成後產生MOD檔 如您撰寫系統連結程式時可使用 eLINK按鈕 經連結完成後產生MEM與VAR檔 點選實驗三後顯示如下 選擇程式下載再按程式啟動這時直流伺服馬達開始做位置控制在操控畫面放置 P 參數設定欄更改參數時馬達即時隨參數改變而產生不同響應 直接點選程式停止時結束所有控制動作再按回首頁選擇其他實驗

21

6實驗說明

下圖所示為直流馬達的控制系統方塊圖透過電流速度以及位置的回授再搭

配適當的控制器可建立完整的閉迴路控制系統在後面的實驗中將依此一系統方塊圖

逐步建立速度和位置的控制實驗各實驗的說明和操作方式及參考實驗結果將逐一進

行詳細的說明

控制

參考位置

速度 位置速

度控制 電流控制

電力電

子換流

位置速

度感測

i

+ -

壓ν

位置

速度

i

DC直流馬達之控制系統方塊圖

PWM 驅動方式只是簡單的開環路控制而高精度的馬達控制必須透過回授控制來完成

對於邏輯電路的設計者而言必須先瞭解基本的回授控制架構以便將來轉換成實用的

邏輯電路設計

設計說明

開環路特性

在電壓驅動的狀況下直流馬達開環路控制的示意圖如下

+-

22

如果換算成數學模式則轉換成下面的架構

+-Vc

R L

EMF

+

-

ITB

J

ω

其中

1其中的變數和參數包括 Vc 控制的電壓命令 R 電樞迴路的等效電阻 L 電樞迴路的等效電感 EMF電樞產生的反電動勢 i 電樞迴路中的電流 T 馬達所產生的扭力 J 馬達和負載的等效慣量 B 馬達和負載的等效摩擦力 ω 馬達所產生的速度 2所牽涉的物理公式包括 電壓迴路Vc = Ri + L(didt) + EMF 即電樞迴路中的電壓平衡 動力負載T = Bω + J(dωdt) 即扭力平衡 馬達特性T = Kti 所產生的扭力和電流成正比 電機特性EMF= Keω 所產生的電動勢和轉速成正比 其中新增的參數包括 Kt馬達的扭力常數 Ke馬達的反電動勢常數 3將微分項作拉式轉換(Laplase Transformation)的對映即 s = ddt 可將微分方程式轉換成更簡單的代數方程式而產生到下面的控制方塊圖

sL+R1Vc

+-EMF

iKt

TsJ+B1 ω

Ke

4在直流馬達的開環路特性中控制電壓(Vc)時輸入點而馬達轉速(ω)是輸出點即是控制馬達電壓以控制馬達轉速

5基本上馬達的開環路特性是個兩階系統類似於低通濾波器的特性在許多應用 場合其開環路特性還可以再簡化成一階系統方塊圖如下

23

sτ +1

KmVc ω 其中 τ一階系統的時間常數 Km一階系統的穩態增益

採用兩階系統的分析方式雖然會比較精細但是用一階系統來分析則可簡化所有的設計

過程因為這裡的實驗重點是邏輯設計所以在本章中我們都用一階系統作分析

系統響應的要求

就控制系統而言最重要的需求就是系統響應包括

穩態特性通常以穩態誤差為指標即是穩態時系統輸出和輸入之間的差異 暫態特性通常以上升時間(Rise Time)和過越比率(Overshoot)為指標

一個理想中的伺服控制系統其系統響應應該是

1穩態誤差為 0即馬達輸出將追隨輸入作變化沒有誤差 2過越比例為 0即馬達輸出絕對不會產生衝過頭的現象 3上升時間為 0即馬達輸出隨時追上輸入命令不會有控制上的延遲現象

當然這是太理想了一個合理的伺服控制系統應該是

1穩態誤差越小越好最好為 0 2過越比例越小越好最好為 0 3上升時間越短越好當然無法為 0但是盡力就是了

速度的回授控制

回授控制的目的就是為了改善系統響應以一階系統代表的馬達控制為例

sτ+1

KmVc ω

在步階響應(Step Response)時其特性如下

1穩態誤差由 Km決定 2過越比例為 0 3上升時間即是其時間常數(τ)

如果用比例控制器(P 控制器)作速度回授的控制則控制方塊圖如下

sτ+1

KmVc ωKp

err

P控制器 直流馬達ωc

速度回授

速度命令 + 速度響應-

24

其中

1速度命令並不直接控制馬達的驅動電壓而是 A將速度命令和速度回授相比找出其誤差訊號 err B依誤差訊號來控制驅動電壓 誤差越大則驅動電壓越高 誤差越小則驅動電壓越低 誤差為負則驅動電壓也為負 其中的比例關係由 P控制器中的 Kp 來調整 2經由數學分析後其步階響應的特性為 A穩態誤差變成 1(1+kpkm)如果 kpkmgtgt1則穩態誤差將趨近於 0 B過越比例仍為 0 C上升時間即是由τ變成τ(1+kpkm)所以上升時間將變短 3換句話說只要 Kp值夠大不論是穩態誤差或是上升時間都會大幅改善

理論上P控制器的增益是越高越好最好是無限大但是實際上是有限制的原因是

1馬達的開環路特性是兩階系統而非一階系統一階系統只是簡化後的結果 2當兩階系統作高增益的回授控制時當增益過高時會產生極嚴重的過越現象使得

馬達產生巨幅震動而難以控制

所以 P控制器的增益雖然是越高越好但調整時仍要小心維持(過越比例為 0)的條件

轉角的回授控制

做為馬達的速度控制P控制器的效果不錯但是如果將 P控制器應用到馬達的轉角控

制其特性就不太理想圖示如下

sτ+1

KmVc ωKp

err

P控制器 直流馬達

θc

轉角回授

轉角命令 + 轉角響應-

s1 θ

其中

1從馬達的速度到轉角之間具有積分特性即 馬達的轉角是馬達速度的積分結果而 馬達的速度是馬達轉角的微分結果而 2其中的積分特性使得整個系統由一階特性變成兩階特性在兩階系統中當設定高

增益時會產生極嚴重的過越現象使得馬達產生巨幅震動而難以控制 3在 P控制器增益無法提高的狀況之下轉角控制效果將無法獲得改善

雖然 P控制器在轉角控制上的效果並不好但是在控制系統中還是有許多法寶可以選擇

25

其中 PD 控制器就是簡單又有效的一個好方法

從表面上來看PD 控制器比 P控制器多了一個微分項就數學上來看這微分項提供了

一個新零點(Zero)可以調整根軌跡圖的走向就實驗上來說這微分項提供了控制器

的預測功能說明如下

sτ+1

KmVc ωKp+sKd

err

P控制器 直流馬達

θc

轉角回授

轉角命令 + 轉角響應-

s1 θ

1轉角控制中 P控制器的問題是在嚴重的過越現象原因是在 P控制器的作用下只有當回授超過命令時才能做出「負向」的控制但這時已經來不及了因為積分器

中已經累積了過多的能量而無法立刻消失使得馬達轉角衝過了頭 2解決之道就是在回授超過命令之前就必須做出「負向」的控制使得積分器累積

的能量逐步減弱在到達目標時才能立刻煞車才能解除過越現象 3而微分項就是這個預測量因為當誤差量越來越小時其微分項是負值雖然微分

項(D)是負值 當誤差量(P)很大時(P+D)的結果還是正值所以還是「正向」控制 當誤差量(P)漸小時(P+D)的結果變成負值才會開始「負向」控制 換句話說在誤差為 0之前即可啟動負向控制產生煞車作用使得馬達提前減速

而即時停止在目標點上自然就解除過越現象了

所以在 PD 控制器中有兩項調整量其中

1Kp增益提供比例控制部分的增益而 Kd增益提供微分控制部分的增益 2Kp增益控制馬達的趨近速度主要影響的是上升時間 3Kd增益控制馬達的提前煞車主要影響的是過越比例 4在兩者搭配下就有機會得到 很快很短的上升時間同時也 不會產生過越現象

PD 控制器的執行

依據 PD 控制器公式可以建立以數位執行的 PD 控制器如下圖所示

cmdKp

fdk

+

-

err

old

+-

Kd

Z-1

out+

+

26

其中

1利用差分公式來取代 PD控制器中的微分公式定義如下 s ==gt (1-Z-1)DT 其中對映的變數包括 s 微分項 Z-1延遲一個抽樣週期 DT抽樣週期單位為 sec 2就執行面而言Z-1是延遲一個抽樣週期也就是以抽樣週期所控制的暫存器 3在上圖中將命令(cmd)和回授(fdk)相減後得到誤差值(err)再將 err延遲一個抽樣週期成為 old所以(err-old)DT即是微分項

4原始的微分控制公式為(err-old)DTKd必須先除再乘但是因為 DT和 Kd 都是常

數可以預先將 Kd修正成 Kd=(KdDT)那麼公式將修正為(err-old)Kd就只需要一個乘法而不需要除法了

同樣的 PD 控制器可以用許多不同的方法作執行包括

1以軟體方式執行例如在 DSP核心中以組合語言撰寫控制模組 2以硬體方式執行例如在 FPGA中直接設計邏輯電路 3以微碼方式執行以微碼作順序控制執行硬體運算工作

這裡先提供用組合語言撰寫的程式模組作為設計參考其他兩種方法將在後續的實驗中

再陸續作說明

模組程式範例PD_controlasm

local cmd R0 IP gnd 輸入點位置命令(可忽略) local fdk R1 IP gnd 輸入點位置回授(可忽略) local out R2 OP 輸出點用以控制速度迴路 local kp R3 256 參數增益 kp10=256 local kd R4 0 參數增益 kd10=256 local err R5 0 內部變數 local old R6 0 內部變數 local gnd R7 0 無輸入時的短路點 data 8 模組變數區長度 initial 開機啟動程序 WR out0 WR old0 RET out=old=0 timer 即時控制程序 RD (cmd) SUB (fdk) WR err MUL kp SFR 8 P=(cmd-fdk)kp256 RDS err SUBX old MUL kd SFR 8 D=(err-old)kd256 ADDS WR out out=P+D RET

27

其中

1PD控制模組中對外的界面變數包括 cmd命令的輸入點 fdk回授的輸入點 out控制的輸出點 2內部參數包括 Kp比例控制增益其中 10=256所以乘完後還需要再右移 8-bit Kd微分控制增益其中 10=256所以乘完後還需要再右移 8-bit 3內部變數包括 err臨時性的變數用以儲存誤差值的計算結果 old儲存性的變數用以儲存上一次抽樣控制時的 err值 4模組程式分成三部分包括 變數宣告local和data所宣告的部分 初值設定initial程序中先將 out和 old設定為 0 即時控制timer程序中依序執行 PD控制器中的每個步驟

控制目標的選擇

從字面上來看速度控制就是控制馬達的速度轉角控制就是控制馬達的轉角沒什麼

好討論的但是實際上確有許多問題第一的問題就是什麼是速度和轉角馬達的速

度和轉角如果不作量測如何得知

既然在量測中取得了速度和轉角資料那麼我們所控制的到底是物理學上的速度和轉

sτ+1

KmVc ωKp+sKd

err

P控制器 直流馬達

θc

轉角回授

轉角命令 + 轉角響應-

s1 θ

KxANG

轉角量測

角還是量測上的速度和轉角以下圖為例

其中

1以轉角量測裝置量測轉角例如裝在馬達軸端的光電盤和解碼電路 2轉角的量測輸出是 ANG而 ANG和物理轉角θ之間有 Km的增益關係 3只要 Km值不是 1那麼系統就不再是單位回授 4如果 Km還有非線性或失真現象那麼控制結果也將有非線性或失真現象

這些問題混雜起來會使得控制系統的分析變得更複雜如果要簡單處理就要認同現

實環境直接以量測結果為控制目標如下圖所示

28

sτ+1

KmVc ωKp+sKd

err

P控制器 直流馬達

θc

轉角回授

+-

s1 θ Kx

ANG轉角量測

其中

1直接以量測結果為控制目標將全系統還原成標準的單位回授控制 2所有的非線性或失真現象都進入開環路討論屬於可以補償的部分 3但是控制結果就是「量測上的轉角」而「物理學上的轉角」

量測誤差的問題

轉角θ

量測ANG

對於量測誤差而言最明顯的問題就是量化誤差圖示如下

其中

1以 DCM模組中的光電盤為例精度為每圈 500格經由乘四解碼計數後其等效

精度增加為每圈 2000格 2比(12000)圈更精密的部分都無法響應換句話說振幅越大的控制其相對誤差越

小而振幅越小的控制其相對誤差越大例如 當振幅為(12)圈時其控制誤差量為 01而 當振幅為(120)圈時其控制誤差量為 1 這是標準的的非線性現象

量化誤差不只影響穩態上的精度還會造成非線性的震動問題圖示如下

t

誤差值

+1

-1

其中

1由於量化誤差的問題只有當誤差超過+1或是-1時才會真正偵測到誤差也才

29

會施加控制量作補償 2所以穩態時的誤差將在+1-1之間擺動造成微幅的振動 3量化誤差越大震動越明顯而量化誤差很小時通常不易察覺出震動現象

微分量的計算

伺服系統中有兩處需要用到微分計算包括

1PD控制器中誤差微分量的計算 2速度控制器中速度回授值的量測

在理論上微分公式是(dXdt)相當於 dXdt = (X(n)-X(n-1))DT (當 DT趨近於 0時)

所以當微分計算中的抽樣週期(DT)越短時微分的計算值將越接近理論值但是事實上

卻非如此以下圖為例

t

X

DTDX

其中

1當 X值為等速度運動時其微分量就是其斜率相當於 DXDT 2DT是微分計算中的抽樣週期理論上越短越好但是由於 DX本身的量化誤差

使得這個原則不再成立例如當斜率為 7394時 若 DT=1000則 DX=7394而 DXDT=7394 若 DT=100 則 DX=739 而 DXDT=739 若 DT=10 則 DX=73 而 DXDT=73 若 DT=1 則 DX=7 而 DXDT=7 3換句話說當抽樣週期越短時DX的量化誤差將越明顯而造成微分計算上更嚴

重的誤差

在 DCM 模組中速度量測的量化誤差分析如下

1馬達上的光電盤精度為每圈 500格經過乘四解碼後等效精度為每圈 2000格 2當馬達轉速為 1200RPM而抽樣頻率為 1KHz時對映的速度量測值為 1200(圈分)2000(格圈)60(秒分)1000(DT秒) = 40(格DT) 3換句話說1200RPM的轉速對映到 40的速度量測值即速度單位=30RPM若最

高轉速為 3000RPM則在+-3000RPM的速度範圍內其量化誤差為 05相當於8-bit的 ADC轉換器精度

4對映不同的抽樣頻率的量化誤差表列如下

30

光電盤精度 最高轉速 抽樣頻率 速度單

速度範圍 量化誤差

500PPR 3000RPM 1KHz 30RPM +-100 05 500PPR 3000RPM 2KHz 60RPM +-50 1 500PPR 3000RPM 4KHz 120RPM +25 2

過溢現象的處理

輸入

輸出

32767

-32768

整數運算都有數值範圍限制以 16-bit 整數而言輸入輸出的關係如下

其中

1當超過正負數的上下限時數值會正負顛倒例如 +32768 將會視為 -32768作處理而 +32769 將會視為 -32768作處理依此類推 2換句話說16-bit的整數運算只有在+-32767之間是線性的對映關係而超過這個範圍就是非線性的對映關係

3不但如此還因為正負顛倒的現象使得原來設計的負回授控制將變為正回授控制

而產生非線性的震盪現象 4換句話說只要計算上稍一不慎就會使得原先穩定的系統產生不穩定的震盪結果

為了避免過溢現象所造成的不穩定問題通常控制系統中會利用飽和處理作改善圖示

如下

輸入

輸出

lmtH

lmtL

31

其中

1當超過計算的上限時將固定設為上限值處理而當超過計算的下限時也將固定

設為下限值處理 2這時的整數運算只有在上下限之間是線性的對映關係而超過這個範圍將還是非線

性的對映關係 3雖然如此但是因為沒有正負顛倒的現象所以不再會有負回授變為正回授的問題

而避免了非線性的震盪現象 4換句話說飽和處理是針對過溢現象的妥協處理方案雖然不完全理想但是是可

接受的最佳選擇

下面是對映的組合語言範例

RD x x為輸入端 MIN lmtH 取得 x和 lmtH中的較小值即是作上限保護的工作 MAX lmtL 取得 x和 lmtL中的較大值即是作下限保護的工作 WR y Y為輸出端 其中

1組合語言中提供MAX和MIN的計算其中 MIN lmtH 比較 AX暫存器和 lmtH而將較低值存入 AX暫存器中 MAX lmtL 比較 AX暫存器和 lmtH而將較高值存入 AX暫存器中 2所以直接可用MIN指令作上限保護而以MAX指令作下限保護兩者合併後即是

完整的飽和處理結果

飽和處理通常應用在高位數轉成低位數的場合例如32-bit轉換成16-bit或是16-bit

轉換成 12-bit 等等例如在本實驗中所有的運算都是以 16-bit 整數作處理但是到

PWM 驅動級輸出時卻要轉換成 12-bit精度的 PWM 命令所以必須先用飽和處理以避免

過溢現象造成的不穩定問題

32

61 實驗 1-開迴路的電壓控制 實驗說明以電壓直接控制轉速的開迴路特性可簡化為一階系統處理方塊圖如

sτ+1

v km ωm

其中V 送給驅動器的 PWM電壓命令

ωm馬達的轉動速度可由處理 photo encoder信號所得的位置微分而得 km一階系統的穩態增益 τ一階系統的時間常數即步階響應中的上升時間

為了觀測直流馬達的開環路特性建立下面的測試方塊圖

其中

1所使用的模組包括 FG1方波產生器產生所需的步階測試波形 FT1馬達模擬以一階系統的低通濾波器來執行 IO1光電盤的回授處理可同時取得轉角和速度的量測值 IO2PWM電壓驅動直接驅動直流馬達作控制 Led四位數字七段顯示模組顯示波形信號資料 2測試目標有兩項(P 參數設定欄)包括 A調整方波命令控制直流馬達作開環路的 PWM電壓控制 B調整馬達模擬參數使模擬結果和實驗結果相符以確認開環路特性

33

實驗畫面顯示如下

測試一 開環路的電壓控制 記錄頻道 CH1電壓命令Y1=-300DY=500 CH2模擬速度Y2=-100DY=500 CH3馬達速度Y3=100DY=50 CH4馬達轉角Y4=300DY=50000 實驗參數 FG1kAMP=256電壓命令的測試振幅 FG1kFRQ=150電壓命令的測試頻率 FT1DT =10 馬達模擬參數 FT1KA =500馬達模擬參數

其中

1用示波器功能記錄四個頻道其中 CH2和 CH3重疊顯示以比較模擬速度和量測

速度之間的差異 2由於 Km 不等於 1所以必須調整 CH3的 Y軸單位才能使得 CH2和 CH3的穩態響應部分重疊

3實驗時可以改變 FG1的參數以調整測試方波的振幅和頻率 4可以調整 FT1的參數使得 CH2和 CH3的暫態響應部分重疊

根據實際的測試結果分析如下

2馬達模擬的參數調整到 DT=10而 KA=500根據公式 τ = 40961000dtka 所以上升時間(τ)為 0082秒或是 82ms 3CH2CH3的 Y軸單位並不一致顯然 Km 不等於 1經計算確認 Km=0098

對應之 plc檔程式說明(exp_pwmplc) echo off 畫面顯示開始

run dsp 0 選擇 DSP1

run stop run reset 既有程式停止

run testDCMmem 下載指定程式

das 1 ampfg1out 0 1024 PWM 波形 Volt 設定 DAS 頻道1

das 2 ampft1lp 0 1024 馬達模擬 Volt 設定 DAS 頻道2

das 3 ampio1spd 0 1024 馬達速度 Volt 設定 DAS 頻道3

das 4 ampio1ang 0 1024 馬達角度 Volt 設定 DAS 頻道4

plot select 0 設定示波器頁數

plot xunit 100000 0 設定示波器 X軸

plot yunit 1 500 -300 設定示波器 Y1 軸

34

plot yunit 2 500 -100 設定示波器 Y2 軸

plot yunit 3 50 100 設定示波器 Y3 軸

plot yunit 4 50000 300 設定示波器 Y4 軸

plot trigger 1 0 1 10 設定示波器觸發

plot scope 9 1 2 3 4 設定示波器顯示

module io2 設定 io2 模組

s cmd ampfg1out

module fg1 設定 fg1 模組

s kAmp 256 s kFrq 150

module ft1 設定 ft1 模組

s u ampfg1out s dt 10 s ka 500

module io3 設定 io3 模組

s led ampfg1out

module 回復預設模組

run 1khz 設定抽樣頻率為 4KHz

run start DSP 開始執行

das stop pause 1 DAS 啟動 das start DAS 啟動

echo on 回復正常訊息顯示

使用者可視情況調整一階濾波器的 ka和 dt值使得 ch2和 ch3 兩組波形完全相符

以求得開迴路系統近似的一階轉移函數 CAI操控設計畫面規劃如下(EXP_PWMCAI) page 1 畫面設計

35

page 2 畫面設計 page 3 畫面設計

36

實測響應圖

訊 號 說 明 訊 號 說 明 ch1 方波產生器訊號 ch3 一階濾波器輸出信號 ch2 馬達角速度訊號 ch4 馬達角位置訊號

直流馬達之開迴路電壓控制響應圖

37

以邏輯分析功能觀測直流馬達之光電盤輸入與 PWM輸出信號

38

62 實驗 2-閉迴路的速度控制 實驗說明為了觀測閉迴路的速度控制響應建立下面的測試方塊圖

加入 PD控制後系統閉迴路的轉移函數經適度的簡化仍能約略以一階系統

處理方塊圖如下

sτ+1

u km ωm

其中

u 送給控制器的速度命令

ωm馬達的轉動速度可由處理 photo encoder 信號所得的位置微分而得

km一階系統的穩態增益 τ一階系統的時間常數即步階響應中的上升時間

方塊圖中的模組功能說明如下

1用 fg1 產生測試用的方波速度命令

2將方波速度命令和速度回授訊號送到 PD 控制器方塊中產生電壓控制訊號再透

過 io2 模組將訊號送出給伺服介面

3用 ft1 建立對照用的一階系統可用 IIR1濾波器方塊產生

4將方波命令產生速度命令再觀測 PHT(io1)上的速度值 spd

5調整 IIR1濾波器的參數使得兩組波形完全相符這時 IIR1濾波器就是閉迴路

速度控制的特性其中 km 為增益而τ為上升時間(單位為 sec)

6增益 km 可從示波器中作簡單計算而上升時間(τ=40964000dtka)

7 Led四位數字七段顯示模組顯示波形信號資料

39

對應之 plc檔程式說明(exp_speedplc) echo off 畫面顯示開始

run dsp 0 選擇 DSP1

run stop run reset 既有程式停止

run testDCMmem 下載指定程式

das 1 ampfg1out 0 1024 PWM 波形 Volt 設定 DAS 頻道1

das 2 ampft1lp 0 1024 馬達模擬 Volt 設定 DAS 頻道2

das 3 ampio1spd 0 1024 馬達速度 Volt 設定 DAS 頻道3

das 4 ampio1ang 0 1024 馬達角度 Volt 設定 DAS 頻道4

plot select 0 設定示波器頁數

plot xunit 100000 0 設定示波器 X軸

plot yunit 1 50 -300 設定示波器 Y1 軸

plot yunit 2 50 -100 設定示波器 Y2 軸

plot yunit 3 50 100 設定示波器 Y3 軸

plot yunit 4 50000 300 設定示波器 Y4 軸

plot trigger 1 0 1 10 設定示波器觸發

plot scope 9 1 2 3 4 設定示波器顯示

module io2 設定 io2 模組

s cmd ampcn2out

module fg1 設定 fg1 模組

s kAmp 50 s kFrq 150

module cn2 設定 cn1 模組

s cmd ampfg1out s fdk ampio1spd s kp 0x4000

module ft1 設定 ft1 模組

s u ampfg1out s dt 2 s ka 320

module io3 設定 io3 模組

s led ampfg1out

module 回復預設模組

run 1khz 設定抽樣頻率為 4KHz

run start DSP 開始執行

das stop pause 1 DAS 啟動 das start DAS 啟動

echo on 回復正常訊息顯示

CAI操控設計畫面規劃如下(EXP_speedCAI)

40

page 1 畫面設計 page 2 與 page 3 畫面設計與實驗一 page 2 與 page 3相同畫面 page 4 畫面設計

41

方塊的參數設定 使用者可視情況調整一階濾波器的 ka和 dt值使得 ch2和 ch3 兩組波形完全相符

以求得此一閉迴路系統近似的一階轉移函數或調整 PD控制器中的 kp和 kp值以調整系統之響應 實測響應圖

訊 號 說 明 訊 號 說 明 ch1 方波產生器產生之速度命令 ch3 一階濾波器輸出信號 ch2 馬達角速度訊號 ch4 馬達角位置訊號

42

直流馬達之閉迴路速度控制響應圖

43

63 實驗 3-閉迴路的位置控制 實驗說明為了觀測閉迴路的位置控制響應將直流馬達的回授改為位置訊號

建立下面的測試方塊圖 方塊圖中的模組功能說明如下

1用 fg1產生測試用的方波位置命令 2將方波位置命令和位置回授訊號送到 PD控制器方塊中產生電壓控制訊號再透過 io2模組將訊號送出到伺服介面驅動馬達轉動

對應之 plc檔程式說明(exp_angleplc) echo off 畫面顯示開始

run dsp 0 選擇 DSP1

run stop run reset 既有程式停止

run testDCMmem 下載指定程式

das 1 ampfg1out 0 1024 PWM 波形 Volt 設定 DAS 頻道1

das 2 ampft1lp 0 1024 馬達模擬 Volt 設定 DAS 頻道2

das 3 ampio1spd 0 1024 馬達速度 Volt 設定 DAS 頻道3

das 4 ampio1ang 0 1024 馬達角度 Volt 設定 DAS 頻道4

plot select 0 設定示波器頁數

plot xunit 100000 0 設定示波器 X軸

plot yunit 1 1000 -300 設定示波器 Y1 軸

plot yunit 2 1000 -100 設定示波器 Y2 軸

plot yunit 3 20 100 設定示波器 Y3 軸

plot yunit 4 1000 300 設定示波器 Y4 軸

plot trigger 1 0 1 10 設定示波器觸發

44

plot scope 9 1 2 3 4 設定示波器顯示

module io2 設定 io2 模組

s cmd ampcn2out

module fg1 設定 fg1 模組

s kAmp 1000 s kFrq 75

module cn2 設定 cn1 模組

s cmd ampfg1out s fdk ampio1ang s kp 0x300 s kd 0x4000

module ft1 設定 ft1 模組

s u ampfg1out s dt 2 s ka 320

module io3 設定 io3 模組

s led ampfg1out

module 回復預設模組

run 1khz 設定抽樣頻率為 4KHz

run start DSP 開始執行

das stop pause 1 DAS 啟動 das start DAS 啟動

echo on 回復正常訊息顯示

CAI操控設計畫面規劃如下(EXP_angleCAI) page 1 畫面設計

45

page 2 與 page 3 畫面設計與實驗一 page 2 與 page 3相同畫面 page 4 畫面設計與實驗二 page 4 畫面 方塊的參數設定 延續上一實驗的說明使用者可以調整 PD控制器中的 kp和 kd值以調整系統之

響應 實測響應圖

訊 號 說 明 訊 號 說 明 ch1 方波產生器產生之位置命令 ch3 馬達角速度訊號 ch2 馬達角位置 ch4 Pd控制器輸出之電壓訊號

46

直流馬達之閉迴路位置控制響應圖

47

64 實驗 4-加減速的位置控制 實驗說明為避免方波命令的過於嚴苛在方波命令的輸出加入一加減速控制功

能方塊以減緩命令變化的幅度增加馬達運動的平順建立的測試方塊圖如下

方塊圖中的模組功能說明如下

1用 fg1產生測試用的方波位置命令 2將方波位置命令送到加減速控制方塊處理後產生新的位置命令再將新的位置命

令與位置回授訊號送到 PD控制器方塊中產生電壓控制訊號最後透過 io2模組將訊號送出到伺服介面驅動馬達轉動

對應之 plc檔程式說明(exp_accplc) echo off 畫面顯示開始

run dsp 0 選擇 DSP1

run stop run reset 既有程式停止

run testDCMmem 下載指定程式

das 1 ampfg1out 0 1024 PWM 波形 Volt 設定 DAS 頻道1

das 2 ampcn1out 0 1024 加速控制 Volt 設定 DAS 頻道2

das 3 ampio1spd 0 1024 馬達速度 Volt 設定 DAS 頻道3

das 4 ampio1ang 0 1024 馬達角度 Volt 設定 DAS 頻道4

plot select 0 設定示波器頁數

plot xunit 100000 0 設定示波器 X軸

plot yunit 1 2000 -300 設定示波器 Y1 軸

plot yunit 2 2000 -100 設定示波器 Y2 軸

plot yunit 3 50 100 設定示波器 Y3 軸

plot yunit 4 2000 300 設定示波器 Y4 軸

48

plot trigger 1 0 1 10 設定示波器觸發

plot scope 9 1 2 3 4 設定示波器顯示

module io2 設定 io2 模組

s cmd ampcn2out

module fg1 設定 fg1 模組

s kAmp 2000 s kFrq 150

module cn1 設定 cn1 模組

s cmd ampfg1out

module cn2 設定 cn2 模組

s cmd ampcn1out s fdk ampio1ang s kp 0x300 s kd 0x4000

module ft1 設定 ft1 模組

s u ampfg1out s dt 2 s ka 320

module io3 設定 io3 模組

s led ampfg1out

module 回復預設模組

run 1khz 設定抽樣頻率為 4KHz

run start DSP 開始執行

das stop pause 1 DAS 啟動 das start DAS 啟動

echo on 回復正常訊息顯示

CAI操控設計畫面規劃如下(EXP_accCAI) page 1 畫面設計

49

page 2 畫面設計與實驗一 page 2相同畫面 page 3 畫面設計與實驗二 page 4相同畫面

參數設定參考之前各實驗的說明可線上機動性的調整 PD控制器中的 kp和 kd值以調整系統之響應 實測響應圖

訊 號 說 明 訊 號 說 明 ch1 方波產生器產生之位置命令 ch3 馬達角位置 ch2 加減速模組輸出之位置命令 ch4 馬達角速度訊號

50

圖一 直流馬達經加減速控制後之閉迴路控制響應圖

51

65 實驗 5-正弦波的位置控制 實驗說明在本實驗中改變命令的波形由方波改變為正弦波並建立如下的測

試方塊圖與上一實驗相比較僅更改命令的波形產生方塊 方塊圖中的模組功能說明如下 1用 fg2產生測試用的弦波位置命令 2將弦波位置命令送到加減速控制方塊處理後產生新的位置命令再與 io1 讀入的位

置回授訊號送到 PD 控制器方塊中產生電壓控制訊號再透過 io2 模組將訊號送出到伺服介面驅動馬達轉動

對應之 plc檔程式說明(exp_sinplc) echo off 畫面顯示開始

run dsp 0 選擇 DSP1

run stop run reset 既有程式停止

run testDCMmem 下載指定程式

das 1 ampfg2out 0 1024 SIN 波形 Volt 設定 DAS 頻道1

das 2 ampcn1out 0 1024 加速控制 Volt 設定 DAS 頻道2

das 3 ampio1spd 0 1024 馬達速度 Volt 設定 DAS 頻道3

das 4 ampio1ang 0 1024 馬達角度 Volt 設定 DAS 頻道4

plot select 0 設定示波器頁數

plot xunit 100000 0 設定示波器 X軸

plot yunit 1 2000 -300 設定示波器 Y1 軸

plot yunit 2 2000 -100 設定示波器 Y2 軸

plot yunit 3 50 100 設定示波器 Y3 軸

plot yunit 4 2000 300 設定示波器 Y4 軸

plot trigger 1 0 1 10 設定示波器觸發

52

plot scope 9 1 2 3 4 設定示波器顯示

module io2 設定 io2 模組

s cmd ampcn2out

module fg2 設定 fg1 模組

s kAmp 2000 s kFrq 100

module cn1 設定 cn1 模組

s cmd ampfg2out

module cn2 設定 cn2 模組

s cmd ampcn1out s fdk ampio1ang s kp 0x300 s kd 0x4000

module ft1 設定 ft1 模組

s u ampfg2out s dt 2 s ka 320

module io3 設定 io3 模組

s led ampfg2out

module 回復預設模組

run 1khz 設定抽樣頻率為 4KHz

run start DSP 開始執行

das stop pause 1 DAS 啟動 das start DAS 啟動

echo on 回復正常訊息顯示

CAI操控設計畫面規劃如下(EXP_sinCAI) page 1 畫面設計

53

page 2 畫面設計 page 3 畫面設計與實驗二 page 4相同畫面

方塊的參數設定可調整 PD控制器中的 kp和 kd值以調整系統之響應 實測響應圖

訊 號 說 明 訊 號 說 明 ch1 弦波產生器產生之位置命令 ch3 馬達角位置訊號 ch2 加減速模組輸出之位置命令 ch4 馬達角速度訊號

54

直流馬達之閉迴路弦波加減速位置控制響應圖

55

7組合語言說明

本節將針對 DC馬達伺服控制實驗專用的程式模組進行功能與程式碼的說明其

有關於波形產生器與資料擷取模組等說明如下

SIN_waveasm 正弦波產生器 PWM_waveasm 方波產生器 IIR1_filterasm 一階濾波器 DAS4asm 資料蒐集模組

弦波產生器

此模組會產生週期性的正弦波方塊圖如下

outfrq

kBiasbias

ampkAmp

kFrqth

kThf=1TB

θ

A

其中

1正弦波有四個參數振幅(A)頻率(F)相位(θ)和偏移(B)其公式為 out = A sin(2πF t +θ) + B 2對於單純的正弦波產生器所對映的參數包括 kAmp 振幅值 kFrq 頻率值kFrq=655368000Hz其中 Hz的範圍為 0~4000例如 1000Hz =gt frq=8192 100Hz =gt frq=819 10Hz =gt frq=82 1Hz =gt frq=8 kTh 相角值0~255代表 0~360的相位當 th=0 時為正弦波 th=64 時為餘弦波 th=128時為反相波依此類推 kBias偏移值 3對於可調變的正弦波產生器其對映的輸入點為 amp 控制振幅的輸入點可產生調幅(AM)波形 frq 控制頻率的輸入點可產生調頻(FM)波形 th 控制相位的輸入點可產生調相(PM)波形 bias控制偏移的輸入點可產生雙頻混波(相加)波形 4若不使用調變功能時各個輸入點時的預設值為 amp 指向 kAmp 的位址 frq 指向 kFrq 的位址

56

th 指向 kTh 的位址 bias指向 kBias的位址

模組程式範例SIN_WAVEasm

local amp R0 IP kAmp 輸入點sin波的振幅 local frq R1 IP kFrq 輸入點sin波的頻率 local th R2 IP kTh 輸入點sin波的相角 local bias R3 IP kBias 輸入點sin波的中心偏移 local out R4 OP 輸出點sin波輸出 local tab R5 TP 表格指標指向 sin[256]的表格 local ang R6 內部變數相位角65536=360deg local kAmp R7 1000 參數振幅值 local kFrq R8 1000 參數頻率值=655368000Hz local kTh R9 0 參數相角值360deg=256 local kBias R10 0 參數偏移值 data 11 模組變數區長度及初值 initial 啟動程序 WR ang0 WR out0 ang=out=0 RET timer 即時控制程序(8KHz) RD ang ADD (frq) WR ang ang+=frq SFR 8 ADD (th) AND 255 ACC=sin(ang256+th) ADD tab WRH RDM table-look-up MUL (amp) SFR 12 ADD (bias) WR out out=ACCamp4096+bias RET table tab 256 sin[256]表格區10=4096 0 101 201 301 401 501 601 700 00~070deg 799 897 995 1092 1189 1285 1380 1474 08~0F 1567 1660 1751 1842 1931 2019 2106 2191 10~17 2276 2359 2440 2520 2598 2675 2751 2824 18~1F 2896 2967 3035 3102 3166 3229 3290 3349 20~27 3406 3461 3513 3564 3612 3659 3703 3745 28~2F 3784 3822 3857 3889 3920 3948 3973 3996 30~37 4017 4036 4052 4065 4076 4085 4091 4095 38~3F 4096 4095 4091 4085 4076 4065 4052 4036 40~4790deg 4017 3996 3973 3948 3920 3889 3857 3822 48~4F 3784 3745 3703 3659 3612 3564 3513 3461 50~57 3406 3349 3290 3229 3166 3102 3035 2967 58~5F

57

2896 2824 2751 2675 2598 2520 2440 2359 60~67 2276 2191 2106 2019 1931 1842 1751 1660 68~6F 1567 1474 1380 1285 1189 1092 995 897 70~77 799 700 601 501 401 301 201 101 78~7F 0 65435 65335 65235 65135 65035 64935 64836 80~87180deg 64737 64639 64541 64444 64347 64251 64156 64062 88~8F 63969 63876 63785 63694 63605 63517 63430 63345 90~97 63260 63177 63096 63016 62938 62861 62785 62712 98~9F 62640 62569 62501 62434 62370 62307 62246 62187 A0~A7 62130 62075 62023 61972 61924 61877 61833 61791 A8~A8 61752 61714 61679 61647 61616 61588 61563 61540 B0~B7 61519 61500 61484 61471 61460 61451 61445 61441 B8~BF 61440 61441 61445 61451 61460 61471 61484 61500 C0~C7270deg 61519 61540 61563 61588 61616 61647 61679 61714 C8~CF 61752 61791 61833 61877 61924 61972 62023 62075 D0~D7 62130 62187 62246 62307 62370 62434 62501 62569 D8~DF 62640 62712 62785 62861 62938 63016 63096 63177 E0~E7 63260 63345 63430 63517 63605 63694 63785 63876 E8~EF 63969 64062 64156 64251 64347 64444 64541 64639 F0~F7 64737 64836 64935 65035 65135 65235 65335 65435 F8~FF

就程式結構而言說明如下

timer 即時控制程序(8KHz) RD ang ADD (frq) WR ang ang+=frq SFR 8 ADD (th) AND 255 ACC=sin(ang256+th) ADD tab WRH RDM table-look-up MUL (amp) SFR 12 ADD (bias) WR out out=ACCamp4096+bias RET

1基本上我們以查表法計算 sin()其輸入θ的範圍為 0~255對映到 0~360deg其輸出 sin(θ)的範圍為+-4096對映到+-10的範圍

2建立一個內部變數 ang其範圍為 0~65535對映到 0~360的相位角 3每個timer程序都執行 ang+=frq的動作更新目前的相位角接著依照 ang的相位角查表得到 sin(ang256+th)值

4由於表格長度為 256-word所以必須將 ang256才能得到正確的對映關係而 th範圍為 0~255所以不需要像 ang一般的做額外處理

5sin()的範圍為(+1-1)而在表格中以(+4096~-4096)的型式記錄相當於 10=4096所以執行 Asin()時還要用 SFR12指令做4096的動作才能正確的取得輸出值

58

6就頻率輸入 frq而言其計算原則是將θ=ωt轉化成θ=Σ(ωdt)因為抽樣頻率

為 8KHz所以 dt=18000而得到 frq=655368000Hz公式其中 Hz為真正的頻率在 8KHz的抽樣頻率下其範圍為 0~4000

鋸齒波產生器

此模組會產生週期性的鋸齒波方塊圖如下

outfrq

kBiasbias

ampkAmp

kFrqth

kThf=1TB

θ

A

其中

1鋸齒波也有四個參數振幅(A)頻率(F)相位(θ)和偏移(B)和正弦波的定義完全一致唯一的差異是其輸出為鋸齒波而非正弦波

2基本波形是從週期開始時為 0一直遞增到週期結束時到達最高點然後立刻回歸

到 0重新開始 3以程式結構而論鋸齒波程式幾乎就是正弦波的相位計算部分只差沒有正弦波的

查表處理而已

模組程式範例SAW_WAVEasm

local amp R0 IP kAmp 輸入點sin波的振幅 local frq R1 IP kFrq 輸入點sin波的頻率 local th R2 IP kTh 輸入點sin波的相角 local bias R3 IP kBias 輸入點sin波的中心偏移 local out R4 OP 輸出點sin波輸出 local ang R5 內部變數相位角65536=360deg local kAmp R6 1000 參數振幅值 local kFrq R7 1000 參數頻率值=655368000Hz local kTh R8 0 參數相角值360deg=256 local kBias R9 0 參數偏移值 data 11 模組變數區長度及初值 initial 啟動程序 WR ang0 WR out0 ang=out=0 RET timer 即時控制程序(8KHz) RD ang ADD (frq) WR ang ang+=frq SFR 8 ADD (th) AND 255 ACC=(ang256+th)amp0x00ff MUL (amp) SFR 8 ADD (bias) WR out out=ACCamp256+bias

59

RET

脈衝波產生器

outfrq

kBiasbias

ampkAmp

kFrqth

kThf=1TB

θ

A

pwm

kDutyduty

此模組會產生週期性的脈衝波方塊圖如下

其中

1脈衝波有五個參數其中振幅(A)頻率(F)相位(θ)和偏移(B)四個參數和正弦波

定義完全一樣另外再增加一個負載率(D) 2基本波形是從週期開始時為 1隔段時間後換為 0然後持續到週期結束再重新開始其中 1所佔有的比例就是負載率當 D=0時為 0而 D=255時為 100

3和其他參數類似負載率(D)以 duty為其輸入點而以 kDuty為其參數值

模組程式範例PLS_WAVEasm

local amp R0 IP kAmp 輸入點脈衝波的振幅 local frq R1 IP kFrq 輸入點脈衝波的頻率 local th R2 IP kTh 輸入點脈衝波的相角 local bias R3 IP kBias 輸入點脈衝波的中心偏移 local duty R4 IP kDuty 輸入點脈衝波的負載率 local out R5 OP 輸出點脈衝波輸出 local ang R6 內部變數相位角65536=360deg local kAmp R7 1000 參數振幅值 local kFrq R8 1000 參數頻率值=655368000Hz local kTh R9 0 參數相角值360deg=256 local kBias R10 0 參數偏移值 local kDuty R11 128 參數負載率100 =256 data 12 模組變數區長度及初值 initial 啟動程序 WR ang0 WR out0 ang=out=0 RET timer 即時控制程序(8KHz)

60

RD ang ADD (frq) WR ang ang+=frq SFR 8 ADD (th) AND 255 ACC=(ang256+th)amp0x00ff SUB (duty) RD (amp) JLT t1 RD 0 ACC=(amp0) t1 ADD (bias) WR out out=ACC+bias RET

IIR 一階濾波器

此模組執行一階的 IIR濾波器方塊圖如下

kau x

Z-1

+

+

-

+低通濾波器

高通濾波器dx lp

hp

濾波器參數的計算公式如下

1假設濾波器的頻寬為 hz則 ωn=hz628 2若系統頻率為 8KHz則抽樣週期 dT為 dT=dt8000 其中 dt為模組參數 3則濾波器參數為 ka=ωndT4096或是 =hzdt62880004096即 =hzdt32 4當 dt決定後所允許的訊號頻寬為(4000dt)換句話說訊號頻寬會因為 dt增加而下降

為了方便實驗的運用下面列出常用的參數對照表

濾波頻寬

(Hz)

10 20 50 100 200 500 1000 2000

訊號頻寬

(Hz)

400 800 2000 4000 4000 4000 4000 4000

模組參數 dt 10 5 2 1 1 1 1 1

模組參數 ka 320 320 320 320 640 1600 3200 6400

表格的運用方式如下

1首先決定濾波頻寬 2接著查表找出對映的參數 dt和 ka 3再查表得到對映的訊號頻寬以決定是否需要串接前級濾波器

61

模組程式範例IIR1_FILTERasm

local u R0 IP 輸入點濾波器輸入 local lp R1 OP 輸出點低通濾波器輸出 local hp R2 OP 輸出點高通濾波器輸出 local dt R3 1 參數抽樣週期 local ka R4 4096 參數增益 ka10=4096 local prd R5 內部變數抽樣週期用 data 6 模組變數區長度 initial 開機啟動程序 WR lp0 WR hp0 WR prd1 RET lp=hp=0prd=1 timer 即時控制程序 SUB prd1 JNZ b9 if (--prdgt0) return RD dt WR prd prd=dt RD (u) SUB lp WR hp hp=u-lp MUL ka SFR 12 ADD lp WR lp lp+=(hpka4096) b9 RET

資料蒐集模組

資料蒐集模組是一個非常特殊的模組專門配合 eTTY 程式中的示波器使用

模組程式範例DAS4asm

local cmd R0 0 紀錄命令0=停止1=前置記錄2=正觸發4=負觸發6=觸發記錄 local dt R1 1 抽樣週期每 dT抽樣一次 local tab R2 TP DAS表格啟始位址 local cnt R3 0 目前記錄點(0~255) local ch1 R4 0 定義頻道1的變數位址 local ch2 R5 0 定義頻道2的變數位址 local ch3 R6 0 定義頻道3的變數位址 local ch4 R7 0 定義頻道4的變數位址 local trg R8 0 定義觸發頻道的變數位址 local th R9 0 觸發準位 local tail R10 0 觸發後的抽樣個數 local buf R11 1 抽樣計數(1~dt) local pnt R12 表格位址計算pnt=tab+cnt4 local len R13 表格長度計算(0~256) data 14 定義模組變數區的長度 table tab 1024 定義表格的長度 initial 啟動程序 WR cmd0 RET cmd=0 timer 控制程序

62

ADD cmd0 JZ t9 if (cmd==0) return SUB buf1 JNZ t9 if (--buf)gt0) return RD dt WR buf dt=buf RD cnt ADD 1 AND 0xff WR cnt cnt=(cnt+1)amp0xff SFL 2 ADD tab WR pnt pnt=tab+cnt4 RD (ch1) WR (pnt) ADD pnt1 pnt++=ch1 RD (ch2) WR (pnt) ADD pnt1 pnt++=ch2 RD (ch3) WR (pnt) ADD pnt1 pnt++=ch3 RD (ch4) WR (pnt) pnt =ch4 RD cmd SUB 1 JZ t9 SUB 1 JZ t2 SUB 1 JZ t3 SUB 1 JZ t4 SUB 1 JZ t5 SUB 1 JZ t6 JR t7 t2 RD (trg) SUB th JGE t9 ADD cmd1 JR t9 wait trgltth t3 RD (trg) SUB th JLE t9 JR t6 wait trggtth t4 RD (trg) SUB th JLE t9 ADD cmd1 JR t9 wait trggtth t5 RD (trg) SUB th JGE t9 JR t6 wait trgltth t6 WR len0 WR cmd7 len=0cmd=7 t7 ADD len1 SUB tail JLT t9 WR cmd0 if ((++len)gt=0x80) cmd=0 t9 RET

與 DC 馬達控制相關的程式模組有以下 4個程式模組說明如下

(1)加減速控制模組 ACC_controlasm (2)光電盤輸入模組 POS_inputasm (3)PWM輸出模組 PWM_outputasm (4)PD控制模組 PD_controlasm

71加減速控制模組 此程式模組主要功能在於執行位置控制的加減速命令修正其數學模式採用 Lynn

濾波器的架構參見下圖

cmd

2

+

old Z -1

-

Z -1

Z -1

Z-1

Z-1x0 x1 x8 x9 x16

+ -

++

2

Z-1

Z-1 y1 y2

+

-

y0

+ +

sumZ-1

+164

12

out

dif

+

63

加減速控制模組方塊圖

其中

1Lynn 濾波器的階數固定成八階也就是 m=8其公式為 H(z) = (1-2Z-m+Z-2m)(1-2Z-1+Z-2)m2

2因為m=8所以m2=64因此最後計算低通濾波的部份時要先做除 64的運算 3因為低通濾波(lp)和 y0之間有 64倍的差異代表 y0y1y2的變化範圍比濾波器輸

入值要擴大許多例如輸入值在+-1000變化時y0y1y2很可能會在+-64000之間變化這範圍已經超出整數處理的範圍很可能會造成錯誤的計算結果

4所以在實驗時輸入值的變化範圍必須控制在+-500之間以保證計算的正確性 5對於 Lynn 濾波器當 m=8時其濾波器的頻寬固定為 1 kHzmdt也就是 dt=1時頻寬為 125 Hz dt=2時頻寬為 625Hz依此類推 6對於 Lynn 濾波器其濾波器的延遲固定為 m個抽樣週期因此設計 hp = x8 - lp 即可得到高通濾波器的對應結果 7其中乘 2和除 64的運算以移位運算取代所以整個程式中並無任何乘法運算 8Lynn 濾波器本身並不是穩定濾波器所以在程式啟動時必須確實的將所有狀態

(x0~x16)歸零否則會產生不穩定的狀態輸出

因為 Lynn濾波器中所有參數固定所以除了抽樣週期 dt 之外並無任何可調參數

抽樣週期 dt 可以控制頻寬dt 越大則濾波器頻寬越低

將步階命令值的輸出送入 Lynn 濾波器中經由低通濾波器的效應可以減緩命

令的變化程度達到加減速控制的目的以下為使用 Lynn 濾波器型式實現加減速控

制的組合語言程式列印 如欲更進一步瞭解 Lynn 濾波器與 FIR 數位濾波器之間的關係可以參考通訊實驗

四數位濾波器設計(FIR)中之說明

ACC_controlasm程式列印 local cmd R0 IP 輸入點位置命令

local out R1 OP 輸出點加減速處理後的位置命令

local dif R2 OP 輸出點位置微分命令

local axis R3 0 馬達編號0=X1=Y2=Z3=C

local old R4 內部變數微分計算用

local sumL R5 內部變數積分計算用

local sumH R6 內部變數積分計算用

local y0 R7 內部變數y(0~2)

local y1 R8 local y2 R9

local x0 R10 內部變數x(0~16)

local x1 R11 local x2 R12 local x3 R13 local x4 R14

local x5 R15 local x6 R16 local x7 R17 local x8 R18

local x9 R19 local x10 R20 local x11 R21 local x12 R22

local x13 R23 local x14 R24 local x15 R25 local x16 R26

64

data 27 模組變數區長度

initial 開機啟動程序

WR dif0 RD (cmd) WR out WR old dif=0 out=old=cmd

sumHL=cmd64

SFL 6 WR sumL RD out SFR 10 SGN 5 WR sumH

RPT 17 WR x00 RPT 3 WR y00 RET x[0~16]=0y[0~2]=0

timer 即時控制程序

RD (cmd) SUBX old WR x0 x0=cmd-old old=cmd

SUB x81 ADD x16 ADD y11 SUB y2 WR y0 y0=x0-2x8+x16+2y1-y2

SGN ADD sumL WR sumL RDH ADC sumH WR sumH sumHL+=y0

WRH RD sumL SFR 6 WR out out=sumHL64

RD y0 SGN SFR WR dif dif=y032mm

RD x0 RPT 16 RDX x1 x[i]=x[i-1] i=1~16

RD y0 RDX y1 WR y2 y[i]=y[i-1] i=1~2

b9 RET

72光電盤輸入模組

DC馬達的位置由光電盤量測之預設儲存於 0xac與 0xbe二個輸入埠位址中其中位址 0xac記錄 X軸馬達的位置位址 0xbe記錄 Y軸馬達的位置由於本實驗的DC馬達接在 Y軸的位置上因此程式中直接選用 Y軸的輸入 光電盤位置輸入的程式列印如下其中速度由位置的差分而得至於馬達的位置

則使用內部 2個 word加以記錄精度為 32位元 POS_inputasm程式列印 local spd R0 OP 輸出點速度量測值

local ang R1 OP 輸出點角度量測值

local angH R2 內部變數角度的 32 位元部分

local mode R3 0x308 模式選擇15MHzAB 相正反向輸入

local pht R4 0xac 輸入阜地址光電盤輸入(0xac)

local phtc R5 0xbe 輸入阜地址光電盤模式(0xbe)

local old R6 內部變數速度更新用

data 7 模組變數區長度

initial 開機啟動程序

RD mode WR (phtc) phtc=mode

RD (pht) WR old WR spd0 RET old=phtspd=0

timer 即時控制程序

RD (pht) SUBX old SGN 11 WR spd spd=(pht-old)old=pht

65

ADD ang WR ang angHL+=spd

RDH ADC angH WR angH

RET

73 PWM輸出控制模組 模組方塊

cmd PWM輸出

程式說明 1在開機時將切換保護時間寫到輸出阜 0xbc上其中切換保護值為 0~6360=5us 2在每次 timer interrupt時將 cmd訊號處理後寫到輸出阜 0xb8上

PWM_outputasm程式列印 local cmd R0 IP gnd 輸入點v相命令

local gain R1 4096 參數輸出增益1=4096

local bias R2 2048 參數輸出偏壓0=2048

local limit R3 4095 參數輸出極限1=4095

local zone R4 0x88f0 參數頻率=12KHz切換保護=5us

local pwm R5 0xb8 輸出阜地址PWM0 輸出(0xb8)

local mode R6 0xbc 輸出阜地址PWM 模式(0xbc)

local p0md R7 0xf8 輸出阜地址port0 模式(0xf8)

local gnd R8 0 輸入接地點

data 9 模組變數區長度

initial 開機啟動程序

RD bias WR (pwm) pwm=bias

RD 0xffff WR (p0md) set port0 mode

RD zone WR (mode) RET mode=zone

stop 關機保護程序

RD bias WR (pwm) RET pwm=bias

timer 即時控制程序

RD (mode) xor 1 and 1 WR (mode) trigger watch-dog

RD (cmd) MUL gain SFR 12 ADD bias ACC=(cmdgain4096)+bias

MAX 0 MIN limit WR (pwm) pwm=limit(ACC)

RET

66

74 PD 控制模組

PD控制的模組方塊參見圖二十一所示其中比例控制的部份直接由增益 kp加以調整微分控制的部份則由誤差的差分經增益 kd的調整而得

Σ+

-

cmd

fdk

err out

Σ

pk

dk

Σ

+

+

+

-

old1minusZ

PD控制器的方塊圖

PD_controlasm程式列印 local cmd R0 IP gnd 輸入點位置命令(可忽略)

local fdk R1 IP gnd 輸入點位置回授(可忽略)

local out R2 OP 輸出點用以控制速度迴路

local kp R3 256 參數增益 kp10=256

local kd R4 0 參數增益 kd10=256

local err R5 0 內部變數

local old R6 0 內部變數

local gnd R7 0 無輸入時的短路點

data 8 模組變數區長度

initial 開機啟動程序

WR out0 WR old0 RET out=old=0

timer 即時控制程序

RD (cmd) SUB (fdk) PRTF WR err

MUL kp SFR 8 P=(cmd-fdk)kp256

RDS err SUBX old MUL kd SFR 8 D=(err-old)kd256

ADDS

WR out out=P+D

RET

程式中預設增益值的 10以整數值 256為基底因此使用 SFR 8的指令加以調

整另外在在計算微分項的程式部份用到 SUBX old的指令其詳細的暫存器動作如

下 參考 piDSP的指令說明SUBX指令將總共用到 3個時序參考錯誤 找不到參照

67

來源在時序 1時將原先 AX的資料拷貝一份到 HX中時序 2時正式執行減

法的動作所以 AX暫存器中的內容會變成 err-old時序 3時DSP會將存放在 HX暫存器中的內容拷貝一份到 old的記憶體中也就是經由 SUBX此一精簡指令將

同時完成計算差分所需要的相減與資料疊代的動作有效的利用 piDSP控制器 DSP核心的精簡指令將可以大幅提昇系統的計算速度

HX AXoldSUBXerr err

old

err

errerr olderr minus

1_err

errerr olderr minus err

1_err

1

2

3

SUBX的指令時序與暫存器變化

68

8附錄快速安裝說明

光纖網路通訊 FPGA 發展系統 (適用於 WIN-XP200098 系統)

快速安裝說明

26Pin 負載輸出入埠

雙電源︵5

12

伏︶輸入埠

單電源︵5

伏︶輸入埠

USB

光纖線輸

號 光纖線輸出埠

入 傳 埠

首先將光碟片 RFFPGA 目錄檔案拷貝在您工作硬碟裡面

第一次安裝時先將 USB 傳輸線接上電腦主機將電源供應器接上 FPGA 模組此時電

腦會出現安裝 USB-Serial 驅動程式選擇從清單安裝此驅動程式放置在光碟片

RFFPGA-USBdrive 選擇您目前安裝系統

可選擇 WIN-98WIN-MEWIN-2000WIN-XP 系統配合您現在工作電腦作業系統

69

注意一般電腦 USB 埠很多插口當您安裝驅動程式時是配合您當時插入之埠

下次如您插入不同接口埠時電腦會再次要求安裝驅動程式這是正常現象請再次安

裝驅動程式否則無法使用

FPLC 操作

首先進入 RFFPGA裡子目錄 testASM直接點選 fPLCexe 出現下面操作畫面(也可直接將

此檔案放置桌面直接點選)

(或者選擇 File 再執行 Setuphellip 選擇您要執行 CAI 檔)

70

進入下面操作畫面 首先使用滑鼠在 FPGA下載按鈕單擊動作使 FPGA變成 DSP晶片 實驗一至實驗五皆為使用 DSP組合語言設計程式其原始程式分別為 testASM1至testASM5可使用 texPad 開啟與編輯程式內容 實驗三與實驗五多有 IO控制動作 當選擇實驗三時出現下面畫面

71

eM_USB 模組

數字型 LED

0 1 2 34 5 6 78 9 A BC D E F

燈號型 LED

44 鍵盤

ADC0 ADC1 DAC0 DAC1

LED 選擇KEY 選擇

模 式 1

0123

注意操作畫面 3與 4 說明開關與按鍵選擇位置後選擇程式下載再按程式啟動如您

按下 0-3按鍵時燈號型 LED會有不同方向閃爍顯示程式停止時結束所有 IO控制動作再按回首頁選擇其他實驗 實驗四與實驗五

模式3

0 1 2 34 5 6 78 9 A BC D E F

按照上面開關選擇直接操作如果以上實驗皆能按照正常操作表示您光纖網路通訊

FPGA發展模組以能正常使用 注意 開機與關機動作順序如下

開機電腦啟動 --- eM_USB 模組電源接上 --- USB 接上電腦 ---

啟動 FPLC 軟體 --- 下載 FPGA 程式

關機關閉 FPLC 軟體 --- eM_USB 模組電源拔掉 --- 拔掉電腦 USB 接頭 ---關掉

電腦

如果以上順序有亂可能造成 USB 找不到驅動造成無法下載經過幾次測試還是

無法下載建議重新啟動電腦主機按照正確步驟操作

72

FPGA 下載操作

進入 FPLC 操作系統按照下列步驟選擇節點模組與下載 bit FPGA 檔案

在 VHDLDEMO 子目錄下您可以選擇您目前 FPGA 種類型號在此型號下我們已將 VHDL

與數位邏輯設計課本範例全部放於此處

73

光纖網路連線 FPGA 下載操作

首先利用光纖線將 eM_USB0 模組光纖輸出埠接至 eM_USB1 模組光纖輸入埠以此

類推最後再將最後 eM_USBN 模組光纖輸出埠接至 eM_USB0 模組光纖輸入埠配置

如附圖方式

個人電腦(Windows) eM_USB模組

0USB

eM_USB模組1

光纖網路

eM_USB模組2

eM_USB模組N

配置完成後進入 FPLC 系統首先必須先將 Node00 下載在 testASM 子目錄裡

piDSPv0bit 檔讓 eM_USB0 模組 FPGA 具備 DSP 功能才能執行光纖網路通訊

操作如下

此時您就可以選擇分別下載至各模組 FPGA 檔 bit

74

安裝 FPLC 注意事項

當您進入 FPLC 時

按 FILE 選擇 programhellip 選擇檔案為 exp_dcmplc 出現下面畫面

正常顯示畫面為

75

DOS 環境操作

在 PC 端的操作是在 Windows 環境中的 DOS 視窗中執行指令範例如下

eFPGA progNETbit 下載 FPGA電路至網路節點0(即 USB節點)中 eFPGA testLEDbit 1 下載 FPGA電路至網路節點1中

對於單一節點的控制程序如下

1將 eM_USB模組連結個人電腦的 USB端 2eM_USB模組開機 3執行下載指令即可 eFPGA xxxxbit 4若要更改 FPGA電路只要重新執行下載指令即可

對於多個網路節點的控制程序如下

1第一組 eM_USB模組連結個人電腦的 USB端再以光纖網路依序其他各節點 2連接 USB界面者為模組0從光纖發射端連接出去的模組為1依此類推 3將所有 eM_USB模組開機 4執行下載指令如下 eFPGA progNETbit 模組0必須先下載指定的 FPGA電路 eFPGA xxxxbit 1 再依序下載其他網路模組的 FPGA電路 eFPGA yyyybit 2 eFPGA zzzzbit 最後再重新下載模組0的 FPGA電路 5換句話說模組0必須先執行 progNETbit讓光纖網路接受 FPGA控制後才能透過光纖網路下載至其他節點等全部網路節點下載完畢後再將模組0的 FPGA重新下載讓模組0也可自由執行任意的 FPGA電路

6若要更改某一個網路節點中的 FPGA電路只要重新執行下述指令 eFPGA progNETbit 模組0必須先下載指定的 FPGA電路 eFPGA yyyybit 2 下載指定網路模組的 FPGA電路 eFPGA zzzz bit 最後再重新下載模組0的 FPGA電路 換句話說除非模組0中的 FPGA已經包括光纖網路管理電路否則一定要先在

模組0中下載網路管理電路後才能下載指定網路節點的 FPGA電路

76

光纖網路通訊 FPGA 發展系統

系統配置

光纖網路通訊 FPGA 發展系統的系統配置圖如下

個人電腦(Windows) eM_USB模組

0USB

eM_USB模組1

光纖網路

eM_USB模組2

eM_USB模組N

其中

1基本模組為 eM_USB模組可用 USB界面和個人電腦連線並提供 USB對光纖網路的轉換功能使得個人電腦可以獨立控制光纖網路中的每個網路節點

2eM_USB模組也可以作為光纖網路中的網路節點透過光纖網路而接受個人電腦的

監控 3就個人電腦而言不論是 USB界面直接連結或是以光纖網路間接連結的 eM_USB模組都是可以直接監控的網路節點最多可以同時控制一個 USB節點和 30個網路節點

4對於每一個網路節點個人電腦都可執行 eM_USB模組中 FPGA的電路下載工作並在適當的 FPGA電路配合下可執行 eM_USB模組中 FPGA內部電路的讀寫控制 5透過適當的 FPGA電路設計各網路節點都可透過光纖網路和其他任何網路節點

作同步通訊執行 FPGA內部記憶體的資料交換資料交換頻率可達 1KHz以上

77

網路模組配置

每個網路模組的標準配置圖如下

eM_USB模組光纖網路

USB eM_FPGA卡

eM_DEMO模組

eM_EXP實驗模組

DC電源

其中

1網路模組以 eM_USB模組為主提供基本的 USB界面和光纖網路連線 2eM_USB模組中的 FPGACPLD採用插卡型式可選擇不同的 eM_FPGA卡包括

eM_2V1K卡可選用 Virtex系列的 XC2V250和 XC2V1000 eM_3S1K卡可選用 Spartan3系列的 XC3S400XC3S1000和 XC3S1500 eM_3S50卡可選用 Spartan3系列的 XC3S50XC3S200和 XC3S400 eM_95XL卡可選用 9500XL系列的 XC95144XL和 XC95288XL 3eM_USB模組中的對外連線有兩種一種是 26P接頭用以連接既有的各種實驗模

組另一種是兩組 50P接頭將 FPGA中各接腳引出用以連接專題實驗 4eM_DEMO模組就是插上 50P接頭的教學模組其中包括 LED 數字顯示和 44鍵盤也具備兩組的 ADC和兩組的 DAC接頭提供類比訊號的測試工具

常用的實驗組合包括

1精簡組合包括(eM_USB+eM_FPGA)提供基本的網路節點適用於專題實驗 2標準組合包括(eM_USB+eM_FPGA+eM_DEMO)提供基礎 FPGA設計的教學實驗

3實驗組合包括(eM_USB+eM_FPGA+eM_DEMO+eM_EXP)提供進階的 FPGA實驗可依需求選用不同的實驗模組

78

eM_USB 模組

eM_USB 模組的電路配置圖如下

TxRx

DCPower

USB

JP2

JP3

光纖界面

外加電源

PC連線

JP1

eM_FPGA模組

FT232 CPLD FlashROM

SRAM

10cm

6cm

JP4

其中

1對外的連線接頭包括 DC電源 可選擇單電源(5V)或是多電源(5V+12V-12V)兩種 USB界面 直接連接個人電腦 光纖界面連接光纖網路 2實驗界面包括 JP1負責內部 CPLD的電路下載 JP2JP3兩組 50P的擴張用接頭 JP4 標準 26P接頭用以連接各種實驗模組 3內部的電路配置包括 A以 SO-DIMM接頭連接各種 eM_FPGA卡 B內附 EEPROMFlashROM和 SRAM提供 FPGA作應用測試 C以一顆 FT232BM作為 USB界面解碼而以一顆 CPLD作為光纖網路解碼 D提供各種 eM_FPGA卡的電路下載功能 4內附五顆 LED由上而下依序為 usbLED指示 USB界面的讀寫狀態 tstLED可由 FPGA電路自行定義 stsLED可由 FPGA電路自行定義 RxLED 可由 FPGA電路自行定義 TxLED 可由 FPGA電路自行定義

79

外部接腳定義

外部接頭的接點順序圖示如下

上視圖

JP11 9 JP4

126225

JP31

50249

JP21

50249

而各接頭的接點定義如下

JP1 JP4 JP2 JP3 1+33V 1+12V 2+12V 1 GND 2 GND 1 GND 2 GND 2GND 3 ADC 4 DAC 3POWER 4ALARM 3 +5V 4 +5V 3nc 5 yPB2 6 yPB3 5RxNET 6TxNET 5+12V 6+12V 4TCK 7 yPB1 6 yPB4 7RxUSB 6TxUSB 7-12V 6-12V 5nc 9 yPB0 10yPB5 9RxCAN 10TxCAN 9 ADC 10 DAC 6TDO 11yPB6 12yPB7 11P0D0 12P0D1 11P1D0 12P1D1 7TDI 13yGND 14yPC3 13P0D2 14P0D3 13P1D2 14P1D3 8nc 15yPC2 16yPC1 15P0D4 16P0D5 15P1D4 16P1D5 9TMS 17yPC0 18yPA0 17P0D6 18P0D7 17P1D6 18P1D7 19yPA1 20yPA2 19P0D8 20P0D9 19P1D8 20P1D9 21yPA3 22GND 21P0D10 22P0D11 21P1D10 22P1D11 23GND 24+5V 23P0D12 24P0D13 23P1D12 24P1D13 25+5V 26nc 25P0D14 26P0D15 25P1D14 26P1D15 27P2D0 28P2D1 27PxA0 28PxA1 29P2D2 30P2D3 29PxA2 30PxA3 31P2D4 32P2D5 31PxA4 32PxA5 33P2D6 34P2D7 33PxA6 34PxA7 35P2D8 36P2D9 35PxB0 36PxB1 37P2D10 38P2D11 37PxB2 38PxB3 39P2D12 40P2D13 39PxB4 40PxB5 41P2D14 42P2D15 41PxB6 42PxB7 43ADC0 44ADC1 43PxC0 44PxC1 45ADC2 46ADC3 45PxC2 46PxC3 47ADC4 48ADC5 47PxC4 48PxC5 49DAC0 50DAC1 49PxC6 50PxC7

80

eM_FPGA 模組

在各種 eM_FPGA 模組中FPGA 對外電路的標準配置圖如下

24576MHz

FlashROM

26PSRAM

EEPROM

mD[8]

yPA[4]

FPGACPLD

mA[19]mRDmWRmCSeeCKeeCSeeDIeeDO

光纖界面 RxNETTxNET

USB 界面 RxUSBTxUSBCLK24MPOWERALARM

LED

tstLEDstsLEDRxLEDTxLED

yPB[8]yPC[4]

ADCDAC

ADC[8]

實驗模組

ADC[2]

DAC[2]

xPA[4]

xPB[8]

xPC[4]

基礎實驗

其中

1FPGACPLD可以選擇下述幾種 XC2V250XC2V1000 採用 eM_2V1K模組其中 FPGA為 FG456包裝 XC3S400XC3S1000XC3S1500採用 eM_3S1K模組其中 FPGA為 FG456包裝 XC3S400XC3S1000XC3S1500採用 eM_3S1K模組其中 FPGA為 FG456包裝 XC3S50XC3S200XC3S400 採用 eM_3S50模組其中 FPGA為 TQ144包裝 XC95144XLXC95288XL 採用 eM_95XL模組其中 CPLD為 TQ144包裝 2採用 FG456包裝者可以控制所有的 IO界面 3採用 TQ144包裝者只是不能控制 RAM和 FlashROM而可以控制其他所有的界面 4所有 FPGA模組都可自由選擇由 USB界面或是由光纖界面下載電路但是 CPLD模組只能固定由 USB界面下載電路

5所有 FPGACPLD模組都可透過 26P接頭連接既有的各種實驗模組

81

FPGA 接腳對照表

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

mD0 XD6 mD0 A17 C13 -- -- mD1 XD7 mD1 B17 D12 -- -- mD2 XD8 mD2 C17 D11 -- -- mD3 XD9 mD3 D17 C11 -- -- mD4 XD10 mD4 E17 D10 -- -- mD5 XD11 mD5 E16 C10 -- -- mD6 XD12 mD6 E14 D9 -- -- mD7 XD13 mD7 E13 D7 -- -- mA0 XD14 mA0 D13 C7 -- -- mA1 XD15 mA1 C13 D6 -- -- mA2 XA0 mA2 V5 C3 -- -- mA3 XA1 mA3 U5 C4 -- -- mA4 XA2 mA4 Y2 D3 -- -- mA5 XA3 mA5 Y1 D4 -- -- mA6 XA4 mA6 V4 E3 -- -- mA7 XA5 mA7 V3 E4 -- -- mA8 XA6 mA8 W2 F3 -- -- mA9 XA7 mA9 W1 F4 -- -- mA10 XA8 mA10 T2 G6 -- -- mA11 XA9 mA11 T1 K3 -- -- mA12 XA10 mA12 R4 K10 -- -- mA13 XA11 mA13 R3 L3 -- -- mA14 XA12 mA14 R2 L4 -- -- mRD XRD mRD R1 D5 -- -- mWR XWR mWR P6 C6 -- --

POWER P0A0 POWER B4 B20 P1 P5 ALARM P0A1 ALARM A4 A19 P2 P6 RxNET P0A2 RxNET C4 B19 P4 P7 TxNET P0A3 TxNET C5 A18 P5 P9 RxUSB P0B0 RxUSB B5 A15 P6 P10 TxUSB P0B1 TxUSB A5 B15 P7 P11 RxCAN P0B2 RxCAN D6 A14 P8 P12 RxCAN P0B3 TxCAN C6 B14 P10 P13

CLK24M CLK24M CLK24M E12 B12 P124 P38

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

PWM0H P3A0 P0D0 E6 A8 P21 P23 PWM0L P3A1 P0D1 E5 B8 P23 P24 PWM1H P3A2 P0D2 C2 B6 P24 P25 PWM1L P3A3 P0D3 C1 A5 P25 P26 PWM2H P3A4 P0D4 D2 B5 P26 P27

82

PWM2L P3A5 P0D5 D1 A4 P27 P28 PWMenb P3A6 P0D6 E4 B4 P28 P30 PHT1Z P3A7 P0D7 E3 A3 P30 P31 PHT1A P3B0 P0D8 G2 C1 P31 P32 PHT1B P3B1 P0D9 G1 C2 P32 P33 PHT0A P3B2 P0D10 H5 D1 P33 P34 PHT0B P3B3 P0D11 J6 D2 P35 P35 AMP0 P3B4 P0D12 H4 E1 P36 P39 AMP1 P3B5 P0D13 H3 E2 P40 P40 AMP2 P3B6 P0D14 H2 F2 P41 P41 AMP3 P3B7 P0D15 H1 G1 P44 P43 eeSK P0C3 P1D0 C10 B9 P20 P22 eeCS P0C2 P1D1 D10 A9 P18 P21 eeDI P0C1 P1D2 F10 B10 P17 P20 eeDO P0C0 P1D3 E10 B11 P15 P19 ssCK P0B7 P1D4 E8 A11 P14 P17 ssCS P0B6 P1D5 E7 A12 P13 P16 ssDI P0B5 P1D6 A6 B13 P12 P15 ssDO P0B4 P1D7 B6 A13 P11 P14

ppCLK P3C0 P1D8 K4 G2 P46 P44 ppDIN P3C1 P1D9 K3 K1 P47 P45 TxD P3C2 P1D10 K2 K2 P50 P46 RxD P3C3 P1D11 K1 L1 P51 P48

tstLED P3C4 P1D12 L5 L2 P52 P49 stsLED P3C5 P1D13 L4 M1 P53 P50 RxLED P3C6 P1D14 L3 M2 P55 P51 TxLED P3C7 P1D15 L2 N1 P56 P52

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

xPA0 P2A0 P2D0 AA3 N2 P59 P53 xPA1 P2A1 P2D1 Y4 T1 P60 P54 xPA2 P2A2 P2D2 AA4 T2 P63 P56 xPA3 P2A3 P2D3 AB4 U2 P68 P57 xPC0 P2A4 P2D4 W5 V1 P69 P58 xPC1 P2A5 P2D5 Y5 V2 P70 P59 xPC2 P2A6 P2D6 AA5 W1 P73 P60 xPC3 P2A7 P2D7 AB5 W2 P74 P61

-- P2B0 P2D8 V6 Y1 P76 P64 -- P2B1 P2D9 V7 Y2 P77 P66 -- P2B2 P2D10 W6 AA3 P78 P68

mCS P2B3 P2D11 Y6 AB4 P79 P69 mA15 P2B4 P2D12 V9 AA4 P80 P70 mA16 P2B5 P2D13 V10 AB5 P82 P71 mA17 P2B6 P2D14 W10 AA5 P83 P74 mA18 P2B7 P2D15 Y10 AA6 P84 P75 CS0 P2C0 ADC0 AA10 AB8 P85 P76

83

SDIN0 P2C1 ADC1 AB10 AA8 P86 P77 CS1 P2C2 ADC2 U10 AB9 P87 P78

SDIN1 P2C3 ADC3 U11 AA9 P89 P79 SCLK P2C4 ADC4 V11 AB10 P90 P80 CS2 P2C5 ADC5 W11 AA10 P92 P81

SDOUT P2C6 ADC6 Y11 AB11 P93 P82 LDAC P2C7 ADC7 AA11 AA11 P95 P83

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

xPB0 P1A0 PxA0 M1 M3 P135 P85 xPB1 P1A1 PxA1 M2 M4 P132 P86 yPB2 P1A2 PxA2 M3 N3 P131 P87 yPB3 P1A3 PxA3 M4 N4 P130 P88 yPB1 P1A4 PxA4 M5 T4 P129 P91 yPB4 P1A5 PxA5 M6 T5 P128 P92 yPB0 P1A6 PxA6 N1 U3 P127 P93 yPB5 P1A7 PxA7 N2 U4 P125 P94 yPB6 P1B0 PxB0 U13 V3 P119 P95 yPB7 P1B1 PxB1 V13 V4 P118 P96 xPB2 P1B2 PxB2 W13 W3 P116 P97 xPB3 P1B3 PxB3 Y13 W4 P113 P98 xPB4 P1B4 PxB4 AA13 Y3 P112 P100 xPB5 P1B5 PxB5 AB13 Y4 P96 P101 yPC3 P1B6 PxB6 U12 Y5 P97 P102 yPC2 P1B7 PxB7 V12 W5 P98 P103 yPC1 P1C7 PxC0 AB17 W11 P108 P113 yPC0 P1C6 PxC1 AA17 Y11 P107 P112 yPA0 P1C5 PxC2 Y17 W10 P105 P111 yPA1 P1C4 PxC3 W17 Y10 P104 P110 yPA2 P1C3 PxC4 AB18 W9 P103 P107 yPA3 P1C2 PxC5 AA18 W8 P102 P106 xPB6 P1C1 PxC6 Y18 W6 P100 P105 xPB7 P1C0 PxC7 W18 Y6 P99 P104

84

eM_DEMO 模組

eM_DEMO 模組的電路配置圖如下

eM_USB 模組

數字型 LED

0 1 2 34 5 6 78 9 A BC D E F

燈號型 LED

44 鍵盤

ADC0 ADC1 DAC0 DAC1

LED 選擇KEY 選擇

其中

1eM_DEMO模組的基本功能包括 A將 xPAxPBxPC等 16個 IO訊號引出控制 LED和鍵盤電路 B將 ADDA訊號引出並放大成+-10V的工作範圍 2LED和鍵盤可以選擇三種模式由 LED和 KEY 兩組開關作選擇圖示如下

模式1

0123

模式2 模式3

0 1 2 34 5 6 78 9 A BC D E F

0123

3模式14鍵輸入並搭配 16點的 LED燈號顯示其中 16點 LED分別對映到 xPA[0~3]xPB[0~7]和 xPC[0~3] 4組按鍵分別對映到 xPC[0~3] 4模式24鍵輸入並搭配四個 7段式數字顯示其中 數字顯示由 xPA[0~3]作數字掃瞄而由 xPB[0~7]作 7段式 LED控制 4組按鍵 分別對映到 xPC[0~3] 5模式316鍵輸入並搭配四個 7段式數字顯示其中 數字顯示由 xPA[0~3]作數字掃瞄而由 xPB[0~7]作 7段式 LED控制 16組按鍵由 xPA[0~3]作鍵盤掃瞄而由 xPC[0~3]作鍵盤讀取 6根據VHDL與數位邏輯設計的章節其中 第 1章至 10章的實驗採用模式1而 第 11章實驗採用模式2而 第 12章之後的實驗都採用模式3

85

FPGA UCF 定義

eM_3S1K 模組

NET CLK LOC = B12

NET XAlt0gt LOC = N2

NET XAlt1gt LOC = T1

NET XAlt2gt LOC = T2

NET XAlt3gt LOC = U2

NET XBlt0gt LOC = M3

NET XBlt1gt LOC = M4

NET XBlt2gt LOC = W3

NET XBlt3gt LOC = W4

NET XBlt4gt LOC = Y3

NET XBlt5gt LOC = Y4

NET XBlt6gt LOC = W6

NET XBlt7gt LOC = Y6

NET XClt0gt LOC = V1

NET XClt1gt LOC = V2

NET XClt2gt LOC = W1

NET XClt3gt LOC = W2

NET YAlt0gt LOC = W10

JP4 接頭

NET YAlt1gt LOC = Y10

NET YAlt2gt LOC = W9

NET YAlt3gt LOC = W8

NET YBlt0gt LOC = U3

NET YBlt1gt LOC = T4

NET YBlt2gt LOC = N3

NET YBlt3gt LOC = N4

NET YBlt4gt LOC = T5

NET YBlt5gt LOC = U4

NET YBlt6gt LOC = V3

NET YBlt7gt LOC = V4

NET YClt0gt LOC = Y11

NET YClt1gt LOC = W11

NET YClt2gt LOC = W5

NET YClt3gt LOC = Y5

在光碟片中 RFFPGAVHDLDEMOBIT3S1K 裡有 VHDL 與數位邏輯設計書本範例原始檔與合成檔

86

eM_3S50 模組

NET CLK LOC = P124

NET XAlt0gt LOC = P59

NET XAlt1gt LOC = P60

NET XAlt2gt LOC = P63

NET XAlt3gt LOC = P68

NET XBlt0gt LOC = P135

NET XBlt1gt LOC = P132

NET XBlt2gt LOC = P116

NET XBlt3gt LOC = P113

NET XBlt4gt LOC = P112

NET XBlt5gt LOC = P96

NET XBlt6gt LOC = P100

NET XBlt7gt LOC = P99

NET XClt0gt LOC = P69

NET XClt1gt LOC = P70

NET XClt2gt LOC = P73

NET XClt3gt LOC = P74

NET YAlt0gt LOC = P105

JP4 接頭

NET YAlt1gt LOC = P104

NET YAlt2gt LOC = P103

NET YAlt3gt LOC = P102

NET YBlt0gt LOC = P127

NET YBlt1gt LOC = P129

NET YBlt2gt LOC = P131

NET YBlt3gt LOC = P130

NET YBlt4gt LOC = P128

NET YBlt5gt LOC = P125

NET YBlt6gt LOC = P119

NET YBlt7gt LOC = P118

NET YClt0gt LOC = P107

NET YClt1gt LOC = P108

NET YClt2gt LOC = P98

NET YClt3gt LOC = P97

在光碟片中 RFFPGAVHDLDEMOBIT3S200 裡有VHDL與數位邏輯設計書本範例原始檔與合成檔

87

eM_95XL 模組

NET CLK LOC = SPIN38

NET XAlt0gt LOC = SPIN53

NET XAlt1gt LOC = SPIN54

NET XAlt2gt LOC = SPIN56

NET XAlt3gt LOC = SPIN57

NET XBlt0gt LOC = SPIN85

NET XBlt1gt LOC = SPIN86

NET XBlt2gt LOC = SPIN97

NET XBlt3gt LOC = SPIN98

NET XBlt4gt LOC = SPIN100

NET XBlt5gt LOC = SPIN101

NET XBlt6gt LOC = SPIN105

NET XBlt7gt LOC = SPIN104

NET XClt0gt LOC = SPIN58

NET XClt1gt LOC = SPIN59

NET XClt2gt LOC = SPIN60

NET XClt3gt LOC = SPIN61

NET YAlt0gt LOC = SPIN111

JP4 接頭

NET YAlt1gt LOC = SPIN110

NET YAlt2gt LOC = SPIN107

NET YAlt3gt LOC = SPIN106

NET YBlt0gt LOC = SPIN93

NET YBlt1gt LOC = SPIN91

NET YBlt2gt LOC = SPIN87

NET YBlt3gt LOC = SPIN88

NET YBlt4gt LOC = SPIN92

NET YBlt5gt LOC = SPIN94

NET YBlt6gt LOC = SPIN95

NET YBlt7gt LOC = SPIN96

NET YClt0gt LOC = SPIN112

NET YClt1gt LOC = SPIN113

NET YClt2gt LOC = SPIN103

NET YClt3gt LOC = SPIN102

在光碟片中 RFFPGAVHDLDEMOSVF95288XL 裡有VHDL與數位邏輯設計書本範例原始檔與合成

檔案

88

eM_FPGA 模組

NET CLK LOC = E12

NET XAlt0gt LOC = AA3

NET XAlt1gt LOC = Y4

NET XAlt2gt LOC = AA4

NET XAlt3gt LOC = AB4

NET XBlt0gt LOC = M1

NET XBlt1gt LOC = M2

NET XBlt2gt LOC = W13

NET XBlt3gt LOC = Y13

NET XBlt4gt LOC = AA13

NET XBlt5gt LOC = AB13

NET XBlt6gt LOC = Y18

NET XBlt7gt LOC = W18

NET XClt0gt LOC = W5

NET XClt1gt LOC = Y5

NET XClt2gt LOC = AA5

NET XClt3gt LOC = AB5

NET YAlt0gt LOC = Y17

JP4 接頭

NET YAlt1gt LOC = W17

NET YAlt2gt LOC = AB18

NET YAlt3gt LOC = AA18

NET YBlt0gt LOC = N1

NET YBlt1gt LOC = M5

NET YBlt2gt LOC = M3

NET YBlt3gt LOC = M4

NET YBlt4gt LOC = M6

NET YBlt5gt LOC = N2

NET YBlt6gt LOC = U13

NET YBlt7gt LOC = V13

NET YClt0gt LOC = AA17

NET YClt1gt LOC = AB17

NET YClt2gt LOC = V12

NET YClt3gt LOC = U12

在光碟片中 RFFPGAVHDLDEMOBIT2V250 裡有VHDL與數位邏輯設計書本範例原始檔與合成檔

89

Page 9: RFFPGA 直流馬達實驗手冊juniortek.com.tw/program/manual/RF-DC-mal.pdf · em_demo模組 em_dcm 直流伺服馬達 dc電源 rffpga 系統的直流馬達實驗規劃 其中包括:

PWM切換保護

對於單一線圈的負載而言PWM切換電路的電路方塊圖如下

負載

正電源

負電源

PWM+

PWM-

P

N

其中

1以兩組電晶體來分別控制正負電源其中的電晶體依據功率需求可選擇功率電晶體

MOSFET或是 IGBT不論哪種選擇其控制原理都一致 2將 PWM訊號分成正向和反向的兩組控制訊號PWM+控制正電源的導通與否而

PWM-控制負電源的導通與否 3切換組合包括 P=OFFN=OFF負載和電源隔離 P=ON N=OFF負載連接上正電源 P=OFFN=ON 負載連接上負電源 P=ON N=ON 正負電源短路這時功率驅動級將瞬間燒毀

原則上只要將 PWM+和 PWM-間的邏輯反向是不可能發生兩者都 ON 的情況但是再考慮

功率電晶體(包括電晶體MOSFET 和 IGBT)的暫態響應電晶體 OFF 的反應時間通常比

電晶體 ON 的反應時間要長一些所以在切換瞬間很可能產生兩者都導通的瞬間狀態

這時可能有兩種結果

1兩者同時導通的時間稍長時功率驅動級將瞬間產生過電流而燒毀 2兩者同時導通的時間非常短這時功率驅動級雖不至於瞬間燒毀但是會產生很高

的熱量使得功率驅動級的溫度快速加高甚至於因為過熱而燒毀

因此 PWM 控制必須加上切換保護其示意圖如下

PWM+ PWM-

切換保護

其中

1基本上PWM-只是 PWM+的反向訊號兩者都由一組 PWM訊號控制 2但是在 ONOFF 切換的瞬間必須加上一段兩者都 OFF的時間這段時間的長度

可依照功率電晶體的 ONOFF特性來設定在 1us~4us之間

9

PWM 啟動保護

在系統開機時很不容易保證各個元件都能依照順序依序啟動因此在系統啟動時必須

自動將 PWM 輸出關掉直到系統完成整個開機程序後才能再將 PWM 訊號重新啟動一

般而言啟動程序如下

1系統開機後功率驅動級通常最快啟動這時 PWM必須保持在 OFF 狀態避免系

統誤動或短路 2之後依次啟動 BIOSLinux網路最後才啟動應用程式 3應用程式啟動後必須依序 A下載 FPGA B下載 DSP控制軟體 C啟動 DSP控制軟體 在啟動 DSP控制軟體後才能重新開啟 PWM的動作 4任何時間中只要 DSP控制停止就必須立刻關閉 PWM控制以避免誤動或短路

所以 PWM 啟動保護是由 DSP 程式直接控制其必要程序包括

1FPGA電路下載完畢並執行工作中 2DSP程式下載完畢並執行工作中

其中任何一個部分停止都必須立刻關閉 PWM 控制一般而言這部分電路都由看護犬

(watch-dog)電路管理而由 DSP 程式負責驅動

DCM 實驗模組

DCM 模組是一個完整的直流馬達實驗機台系統方塊圖如下

YA1

切換保護

YA2

YC0

馬達

PHTA PHTB

PWM+

DIS

YA0 PWM-

+12VSW

YC1

JP4 A

AB

B

雙向控制

光電盤

A

B

其中

1採用雙向控制的 PWM功率驅動級來驅動直流馬達可控制馬達正反轉 2功率驅動級中已有切換保護其控制訊號包括

10

PWM+ PWM- DIS 直流馬達 X X 1 OFF 1 0 0 正電壓驅動 0 1 0 負電壓驅動

3功率驅動級中並沒有啟動保護所以必須附加電源開關作手動控制 4馬達轉角由光電盤的 AB相訊號作回授 5所有控制訊號都經由 JP4接頭接到 RFFPGA控制器中可由 FPGA作控制

三角波產生器

實驗中以中間對齊型的 PWM 訊號為控制目標首先建立對稱的三角波作為參考訊號其

對映的 VHDL 程式範例如下

TRIANGLE_WAVE block signal Q STD_LOGIC_VECTOR (11 downto 0) signal CEDIR STD_LOGIC begin process (CLKRESET) -- sequential logic begin if RESET=1 then --reset Qlt=000000000111 --reset to 7 elsif CLKevent and CLK=1 then --CLK=gt1 trigger if CE=1 then --clock enable if DIR=0 then Qlt=Q+1 --up counter else Qlt=Q-1 --down counter end if end if end process -- combinational logic CE lt= SYSTEM(0) --24MHz clock DIR lt= SYSTEM(13) --4KHz square wave REF lt= Q --12-bit reference (7~3079) end block TRIANGLE_WAVE 其中

1程式設計為可適用於不同的系統時鐘包括 49152MHz和 24576MHz 兩種型式 2計數器的基本頻率為 24576MHz所以用 CE=SYSTEM(0)來控制計數動作 3三角波的頻率設為 4KHz所以計數器的峰值為(2457642=3072) 4正反計數器和系統時序同步而以 SYSTEM(13)做為同步控制由於 SYSTEM(13)為 4KHz的方波設定 DIR=SYSTEM(13)即可控制計數器的上升或下降

5在 RESET時將計數器的初值設為 7使得計數範圍修正為 7~3079所以即使有些同步誤差也不會產生負數輸出的嚴重影響

6三角波以 REF[12]作輸出數值範圍在 7~3079之間頻率為 4KHz

11

如果 PWM 的頻率過低馬達端會產生震動噪音這時就必須提高 PWM 的頻率在前面程

式中如果要將 PWM 頻率從 4KHz 提升為 8KHz則可更改如下

if DIR=0 then Qlt=Q+2 --up counter else Qlt=Q-2 --down counter DIR lt= SYSTEM(12) --8KHz square wave 其中

1將 DIR改由 8KHz的 SYSTEM(12)來控制 2同時將計數器改成+2-2的正反計數器 3如此仍然能夠維持 REF輸出的數值範圍(7~3079)

如果還要再將 PWM 的頻率提高到 16KHz則可更改如下

if DIR=0 then Qlt=Q+4 --up counter else Qlt=Q-4 --down counter DIR lt= SYSTEM(11) --16KHz square wave 其中

1將 DIR改由 16KHz的 SYSTEM(11)來控制 2同時將計數器改成+4-4的正反計數器 3如此仍然能夠維持 REF輸出的數值範圍(7~3079)

表面上三角波產生器的數值精度為 12-bit時間精度為 24MHz但是由於 PWM 訊號將

透過 FPGA2 輸出而高速串列界面的更新速度為 15MHz所以就 DCM 模組所收到的 PWM

控制訊號而言其時間精度將降低為 15MHz而數值上的精度將降低為 8-bit等效範

圍為 0~192 或是+-96 之間整體而言控制上的精度約為 05仍可符合馬達控制的

需求

PWM 波形產生器

接著處理比較的動作並產生 PWM 波形對映的 VHDL 程式範例如下

PWM_COMPARATOR block signal CEPUPD STD_LOGIC signal D0D1D2D3D4 STD_LOGIC begin process (CLK) -- sequential logic begin if CLKevent and CLK=1 then --CLK=gt1 trigger if CE=1 then --CLK enable D4lt=D3 D3lt=D2 D2lt=D1 D1lt=D0 --delay end if end if

12

end process -- combinational logic CE lt= CLK1M D0 lt= 1 when CMDgtREF else 0 --PWM generation PU lt= D1 and D2 and D3 and D4 --up-side output PD lt= not D1 and not D2 and not D3 and not D4 --down-side output PWMU lt= PU --up-side PWM output PWMD lt= PD --down-side PWM output PWMI lt= (not PU and not PD) or not ENB --PWM disable PWMR lt= REF --PWM reference end block PWM_COMPARATOR

程式中所對映的時序如下

CE

REF

CMD

D1D2D3D4PWMUPWMDPWMI

其中

1以 15MHz的 CE訊號為基本頻率 2將電壓命令 CMD和參考波形 REF作比較若 CMDgtREF則設定 D0=0否則設定

D0=1 3將 D0訊號作四次的延遲處理延遲訊號依序為 D1D2D3D4最後再重新組合成

PWM的輸出波形 4其輸出訊號包括 PWMU對映到 DCM模組中的 PWM+訊號 PWMD對映到 DCM模組中的 PWM-訊號 PWMI對映到 DCM模組中的 DIS訊號為切換保護訊號 如此 PWMU作動和 PWMD作動之間將有 2us間隔中是兩者都不作動的也就是

PWMI的作動時間 5當 ENB命令=0時設定 PWMI=1而使得驅動器 OFF

13

回授訊號的處理

精密的伺服馬達動作必須將馬達的位置和速度加以量測後再執行回授控制因此速

度和位置的量測是精密控制中必要的一環我們通常用光電寫碼器或數位尺來進行量測

工作

光電寫碼器(Photo-Encoder)俗稱光電盤是利用光電量測進行的非接觸式數位量測元

件其基本裝置如下

LED光源

光電晶體偵測

以 LED 或是其他光源來發光而用 AB 相的兩組光電晶體來偵測當圓盤隨著馬達作轉

動時光電晶體即可偵測到其移動狀態由於圓盤中的小孔呈等距排列其透光部分和

不透光部分呈 50對 50的比例當圓盤轉動時光電晶體端就可以偵測到下述訊號

光電盤訊號(A 相)

光電盤訊號(B 相)

正轉

其中

1偵測方波的頻率即對應於圓盤轉動的頻率也就是轉速 2偵測方波的個數即對應於圓盤轉過的孔數也就是轉角(相對角度) 3由於 AB相的兩組光電晶體在機械安裝上的角度不同使得讀出訊號也有 90 度的

差異如果馬達正轉則 A相超前如果馬達反轉則 B相超前

有了兩相的光電盤訊號只要能偵測其中的相位變化就可以分辨光電盤的正反轉運動

了例如正轉時的光電盤時序如下

14

光電盤訊號 (A 相 )

光電盤訊號 (B 相 )

正轉

微分訊號(A+)

微分訊號(A-)

微分訊號(B+)

微分訊號(B-)

正轉脈衝(CW)

其中

1針對 AB 兩相訊號作微分處理即可取得 A+A-B+B-的上緣微分和下緣微分 2將微分訊號和和原有的 AB相訊號作比較即可找出正轉脈衝 3計算正轉脈衝的頻率和個數即可取得馬達的速度和轉角 4如此得到的脈衝數將是原有 AB相頻率的四倍所以稱之為乘四解碼電路

同樣的如果針對光電盤的反轉時序一樣可以得出反轉訊號圖示如下

光電盤訊號(A相)

光電盤訊號(B相)

反轉

反轉脈衝(CCW)

其公式如下

CW lt= (A+ and not B) CCW lt= (A+ and B) or (A- and B) or (A- and not B) or (B+ and A) or (B+ and not A) or (B- and not A) or (B- and A)

整合光電盤回授的處理其系統方塊圖如下

數位濾波

D Q

CK

DLA

PHA

D Q

CK

DLB

PHB

CLK

乘四解碼電路

DIR

PLS

數位濾波

PA

PB

正反計數

CNT DB

RD

CS

包括

15

1首先利用簡單的數位濾波器將 AB項的雜訊排除 2接著利用延遲電路作微分處理並以乘四解碼電路解出轉動的脈波和方向 3最後利用正反計數器作計數並將計數值讀入匯流排

數位濾波器

光電盤的 AB 相訊號中如果產生雜訊干擾的現象會使得馬達轉角的計量上產生永久

性的累積誤差將造成控制上無法彌補的錯誤所以 AB 相訊號上的雜訊一定要盡力排

除下面是常用的數位濾波器設計範例

FILTER_A block -- digital filter for A signal CED0D1D2 STD_LOGIC begin process (CLK) -- sequential logic begin if CLKevent and CLK=1 then --CLK=gt1 trigger if CE=1 then --clock enable D2lt=D1 D1lt=D0 D0lt=PA --delay 3 clocks PHA lt= (D0 and D1 and D2) or ((D0 or D1 or D2) and PHA) end if end if end process -- combinational logic CE lt= CLK1M --15MHz clock end block FILTER_A 其中

1以 15MHz的頻率為控制基準 2利用延遲電路依序產生 D0D1D2的延遲訊號 3連續三個 1(D0D1D2 都是 1)定義為 1連續三個 0(D0D1D2 都是 0)定義為 0而其他不連續的 10 都定義為雜訊如此可將高頻的雜訊濾除

4但是相對的AB相訊號的最高頻率將限制為 250KHz(連續 3個 1和連續 3個 0)頻率過高的 AAB相訊號將被視為雜訊而不處理必須特別注意

正反轉的解碼和計數

依據前面的公式說明對映的 VHDL 程式範例如下

DECODER block signal DLADLB STD_LOGIC begin process (CLK) -- sequential logic begin if CLKevent and CLK=1 then --CLK=gt1 trigger DLAlt=PHA DLBlt=PHB --delay 1-clock end if end if

16

end process -- combinational logic DIR lt= (not PHA and DLA and not PHB) or ( PHA and not DLA and PHB) or (not PHB and DLB and PHA) or ( PHB and not DLB and not PHA) PLS lt= (not PHA and DLA) or (PHA and not DLA) or (not PHB and DLB) or (PHB and not DLB) end block DECODER 其中

1PHAPHB為經過雜訊濾波後的 AB相訊號而 DLADLB是其延遲訊號 2根據乘四解碼電路的公式取得 DIR和 PLS訊號其中 DIR用以控制計數器的正反向 PLS用以控制計數器的計數與否

所以接下去就是正反計數器的設計範例如下

COUNTER block signal Q STD_LOGIC_VECTOR(11 downto 0) begin process (CLKRESET) -- sequential logic begin if RESET=1 then --power-on reset Qlt=000000000000 --reset to 0 elsif CLKevent and CLK=1 then --CLK=gt1 trigger if PLS=1 then --clock enable if DIR=1 then Qlt=Q-1 --down counter else Qlt=Q+1 --up counter end if end if end if end process -- combinational logic CNT lt= Q --counter output end block COUNTER 其中

1這是標準的正反計數器架構在開機時自動復歸 2計數器的長度為 12-bit可依需要自行調整

DCM模組中的光電盤精度為每圈500格經過乘四解碼後相當於每圈2000格所以12-bit

計數器只能處理 2 圈的應用範圍絕對不夠在真正應用時一定要用軟體或硬體的方

式再擴張成 16-bit 或是 32-bit 的寬度來處理才行

17

3實驗項目

在直流伺服馬達控制系統中規劃五個實驗項目由系統首頁做選擇每項實驗操

作整個系統實驗組成由各項實驗項目 CAI 檔及各項實驗項目程式連結 PLC 檔結合而成茲表列如下

直 流 伺 服 實 驗 e x p _d c m c ai

開 環 路 電 壓 控 制

系 統 首 頁 實 驗 程 序

e x p _p w m c ai

開 環 路 速 度 控 制 e x p _s p ee d c a i

閉 環 路 位 置 控 制 e x p _a n gl e c a i

加 減 速 的 位 置 控 制 e x p _a c c c ai

正 弦 波 位 置 控 制 e x p _s i n c ai

C A I 圖 控 檔

直 流 伺 服 實 驗 開 環 路 電 壓 控 制

系 統 首 頁 實 驗 程 序

e x p _p w m p lc

開 環 路 速 度 控 制 e x p _s p ee d p l c

閉 環 路 位 置 控 制 e x p _a n gl e p l c

加 減 速 的 位 置 控 制 e x p _a c c p lc

正 弦 波 位 置 控 制 e x p _s i n p lc

e T T Y 批 次 檔

18

4安裝程序

31 將 RFFPGA中的程式拷貝至工作硬碟中進入 DC子目錄資料夾中其中包含下

列檔案

檔案 內容說明 mod SIN_wave MODPWM_wave MODIIR1_filter MODDAS4

MODPOS_inputMODPWM_outputMODACC_controlMODPD_controlMOD這些檔案是由 ASM重新編譯出由 testDCMmem所需執行模組檔

asm SIN_waveasmPWM_waveasmIIR1_filterasmDAS4asm POS_inDCMasmPWM_outDCMasmACC_conDCMasmPD_controlasm是各模組組合語言所設計 SOURCE檔

plc 為進行實驗所需的各批次檔 bit piDSPv0bit為下載到 FPGA的 BIT檔其功能為將 FPGA規劃成

具備 piDSP控制晶片功能提供直流伺服控制所需的控制程式

撰寫 testDCMsys 記載進行 DCM實驗時所需的模組 testDCMMEM 連結完成的 DSP執行檔用來進行 DCM實驗 testDCMvar 紀錄 DCM實驗時的參數對照表

在進行實驗前先將實驗所需的系統程式與模組程式分別說明加以說明系統所

需的程式模組由 testDCMsys 來描述程式列印如下

module fg1 PWM_wavemod 方波產生器

module fg2 SIN_wavemod 弦波產生器

module cn1 ACC_controlmod 加減速控制器

module cn2 PD_controlmod 比例微分控制器

module io1 POS_inputmod 位置和速度讀值

module io2 PWM_outputmod PWM 電壓輸出界面

module ft1 IIR1_filtermod 一階濾波器

module das das4mod 示波器資料蒐集

module io3 LEDKEYmod LEDKEY 界面

其中包括

1兩組波型產生器作為測試命令包括正弦波和方波 2兩組控制器提供包括加減速PD控制器的功能可依照實驗需求搭配使用 3兩組輸入輸出界面執行 PWM輸出和相位回授的界面處理 4一組低通濾波器作為電壓開迴路控制迴路和速度閉迴路控制的模擬使用 5DAS4mod是示波器專用的配合模組不論任何實驗都必須加入此模組 6Ledmod是四位數字七段顯示與 44矩陣按鍵模組

19

5執行程序

首先進入 RFFPGA 裡子目錄 DC直接點選 fPLCexe 出現下面操作畫面(也可直接將此檔

案放置桌面直接點選)

進入下面操作畫面

20

首先使用滑鼠在 FPGA下載按鈕單擊動作使 FPGA變成 piDSP晶片 如您撰寫組合語言時可使用 eASM按鈕 經編譯完成後產生MOD檔 如您撰寫系統連結程式時可使用 eLINK按鈕 經連結完成後產生MEM與VAR檔 點選實驗三後顯示如下 選擇程式下載再按程式啟動這時直流伺服馬達開始做位置控制在操控畫面放置 P 參數設定欄更改參數時馬達即時隨參數改變而產生不同響應 直接點選程式停止時結束所有控制動作再按回首頁選擇其他實驗

21

6實驗說明

下圖所示為直流馬達的控制系統方塊圖透過電流速度以及位置的回授再搭

配適當的控制器可建立完整的閉迴路控制系統在後面的實驗中將依此一系統方塊圖

逐步建立速度和位置的控制實驗各實驗的說明和操作方式及參考實驗結果將逐一進

行詳細的說明

控制

參考位置

速度 位置速

度控制 電流控制

電力電

子換流

位置速

度感測

i

+ -

壓ν

位置

速度

i

DC直流馬達之控制系統方塊圖

PWM 驅動方式只是簡單的開環路控制而高精度的馬達控制必須透過回授控制來完成

對於邏輯電路的設計者而言必須先瞭解基本的回授控制架構以便將來轉換成實用的

邏輯電路設計

設計說明

開環路特性

在電壓驅動的狀況下直流馬達開環路控制的示意圖如下

+-

22

如果換算成數學模式則轉換成下面的架構

+-Vc

R L

EMF

+

-

ITB

J

ω

其中

1其中的變數和參數包括 Vc 控制的電壓命令 R 電樞迴路的等效電阻 L 電樞迴路的等效電感 EMF電樞產生的反電動勢 i 電樞迴路中的電流 T 馬達所產生的扭力 J 馬達和負載的等效慣量 B 馬達和負載的等效摩擦力 ω 馬達所產生的速度 2所牽涉的物理公式包括 電壓迴路Vc = Ri + L(didt) + EMF 即電樞迴路中的電壓平衡 動力負載T = Bω + J(dωdt) 即扭力平衡 馬達特性T = Kti 所產生的扭力和電流成正比 電機特性EMF= Keω 所產生的電動勢和轉速成正比 其中新增的參數包括 Kt馬達的扭力常數 Ke馬達的反電動勢常數 3將微分項作拉式轉換(Laplase Transformation)的對映即 s = ddt 可將微分方程式轉換成更簡單的代數方程式而產生到下面的控制方塊圖

sL+R1Vc

+-EMF

iKt

TsJ+B1 ω

Ke

4在直流馬達的開環路特性中控制電壓(Vc)時輸入點而馬達轉速(ω)是輸出點即是控制馬達電壓以控制馬達轉速

5基本上馬達的開環路特性是個兩階系統類似於低通濾波器的特性在許多應用 場合其開環路特性還可以再簡化成一階系統方塊圖如下

23

sτ +1

KmVc ω 其中 τ一階系統的時間常數 Km一階系統的穩態增益

採用兩階系統的分析方式雖然會比較精細但是用一階系統來分析則可簡化所有的設計

過程因為這裡的實驗重點是邏輯設計所以在本章中我們都用一階系統作分析

系統響應的要求

就控制系統而言最重要的需求就是系統響應包括

穩態特性通常以穩態誤差為指標即是穩態時系統輸出和輸入之間的差異 暫態特性通常以上升時間(Rise Time)和過越比率(Overshoot)為指標

一個理想中的伺服控制系統其系統響應應該是

1穩態誤差為 0即馬達輸出將追隨輸入作變化沒有誤差 2過越比例為 0即馬達輸出絕對不會產生衝過頭的現象 3上升時間為 0即馬達輸出隨時追上輸入命令不會有控制上的延遲現象

當然這是太理想了一個合理的伺服控制系統應該是

1穩態誤差越小越好最好為 0 2過越比例越小越好最好為 0 3上升時間越短越好當然無法為 0但是盡力就是了

速度的回授控制

回授控制的目的就是為了改善系統響應以一階系統代表的馬達控制為例

sτ+1

KmVc ω

在步階響應(Step Response)時其特性如下

1穩態誤差由 Km決定 2過越比例為 0 3上升時間即是其時間常數(τ)

如果用比例控制器(P 控制器)作速度回授的控制則控制方塊圖如下

sτ+1

KmVc ωKp

err

P控制器 直流馬達ωc

速度回授

速度命令 + 速度響應-

24

其中

1速度命令並不直接控制馬達的驅動電壓而是 A將速度命令和速度回授相比找出其誤差訊號 err B依誤差訊號來控制驅動電壓 誤差越大則驅動電壓越高 誤差越小則驅動電壓越低 誤差為負則驅動電壓也為負 其中的比例關係由 P控制器中的 Kp 來調整 2經由數學分析後其步階響應的特性為 A穩態誤差變成 1(1+kpkm)如果 kpkmgtgt1則穩態誤差將趨近於 0 B過越比例仍為 0 C上升時間即是由τ變成τ(1+kpkm)所以上升時間將變短 3換句話說只要 Kp值夠大不論是穩態誤差或是上升時間都會大幅改善

理論上P控制器的增益是越高越好最好是無限大但是實際上是有限制的原因是

1馬達的開環路特性是兩階系統而非一階系統一階系統只是簡化後的結果 2當兩階系統作高增益的回授控制時當增益過高時會產生極嚴重的過越現象使得

馬達產生巨幅震動而難以控制

所以 P控制器的增益雖然是越高越好但調整時仍要小心維持(過越比例為 0)的條件

轉角的回授控制

做為馬達的速度控制P控制器的效果不錯但是如果將 P控制器應用到馬達的轉角控

制其特性就不太理想圖示如下

sτ+1

KmVc ωKp

err

P控制器 直流馬達

θc

轉角回授

轉角命令 + 轉角響應-

s1 θ

其中

1從馬達的速度到轉角之間具有積分特性即 馬達的轉角是馬達速度的積分結果而 馬達的速度是馬達轉角的微分結果而 2其中的積分特性使得整個系統由一階特性變成兩階特性在兩階系統中當設定高

增益時會產生極嚴重的過越現象使得馬達產生巨幅震動而難以控制 3在 P控制器增益無法提高的狀況之下轉角控制效果將無法獲得改善

雖然 P控制器在轉角控制上的效果並不好但是在控制系統中還是有許多法寶可以選擇

25

其中 PD 控制器就是簡單又有效的一個好方法

從表面上來看PD 控制器比 P控制器多了一個微分項就數學上來看這微分項提供了

一個新零點(Zero)可以調整根軌跡圖的走向就實驗上來說這微分項提供了控制器

的預測功能說明如下

sτ+1

KmVc ωKp+sKd

err

P控制器 直流馬達

θc

轉角回授

轉角命令 + 轉角響應-

s1 θ

1轉角控制中 P控制器的問題是在嚴重的過越現象原因是在 P控制器的作用下只有當回授超過命令時才能做出「負向」的控制但這時已經來不及了因為積分器

中已經累積了過多的能量而無法立刻消失使得馬達轉角衝過了頭 2解決之道就是在回授超過命令之前就必須做出「負向」的控制使得積分器累積

的能量逐步減弱在到達目標時才能立刻煞車才能解除過越現象 3而微分項就是這個預測量因為當誤差量越來越小時其微分項是負值雖然微分

項(D)是負值 當誤差量(P)很大時(P+D)的結果還是正值所以還是「正向」控制 當誤差量(P)漸小時(P+D)的結果變成負值才會開始「負向」控制 換句話說在誤差為 0之前即可啟動負向控制產生煞車作用使得馬達提前減速

而即時停止在目標點上自然就解除過越現象了

所以在 PD 控制器中有兩項調整量其中

1Kp增益提供比例控制部分的增益而 Kd增益提供微分控制部分的增益 2Kp增益控制馬達的趨近速度主要影響的是上升時間 3Kd增益控制馬達的提前煞車主要影響的是過越比例 4在兩者搭配下就有機會得到 很快很短的上升時間同時也 不會產生過越現象

PD 控制器的執行

依據 PD 控制器公式可以建立以數位執行的 PD 控制器如下圖所示

cmdKp

fdk

+

-

err

old

+-

Kd

Z-1

out+

+

26

其中

1利用差分公式來取代 PD控制器中的微分公式定義如下 s ==gt (1-Z-1)DT 其中對映的變數包括 s 微分項 Z-1延遲一個抽樣週期 DT抽樣週期單位為 sec 2就執行面而言Z-1是延遲一個抽樣週期也就是以抽樣週期所控制的暫存器 3在上圖中將命令(cmd)和回授(fdk)相減後得到誤差值(err)再將 err延遲一個抽樣週期成為 old所以(err-old)DT即是微分項

4原始的微分控制公式為(err-old)DTKd必須先除再乘但是因為 DT和 Kd 都是常

數可以預先將 Kd修正成 Kd=(KdDT)那麼公式將修正為(err-old)Kd就只需要一個乘法而不需要除法了

同樣的 PD 控制器可以用許多不同的方法作執行包括

1以軟體方式執行例如在 DSP核心中以組合語言撰寫控制模組 2以硬體方式執行例如在 FPGA中直接設計邏輯電路 3以微碼方式執行以微碼作順序控制執行硬體運算工作

這裡先提供用組合語言撰寫的程式模組作為設計參考其他兩種方法將在後續的實驗中

再陸續作說明

模組程式範例PD_controlasm

local cmd R0 IP gnd 輸入點位置命令(可忽略) local fdk R1 IP gnd 輸入點位置回授(可忽略) local out R2 OP 輸出點用以控制速度迴路 local kp R3 256 參數增益 kp10=256 local kd R4 0 參數增益 kd10=256 local err R5 0 內部變數 local old R6 0 內部變數 local gnd R7 0 無輸入時的短路點 data 8 模組變數區長度 initial 開機啟動程序 WR out0 WR old0 RET out=old=0 timer 即時控制程序 RD (cmd) SUB (fdk) WR err MUL kp SFR 8 P=(cmd-fdk)kp256 RDS err SUBX old MUL kd SFR 8 D=(err-old)kd256 ADDS WR out out=P+D RET

27

其中

1PD控制模組中對外的界面變數包括 cmd命令的輸入點 fdk回授的輸入點 out控制的輸出點 2內部參數包括 Kp比例控制增益其中 10=256所以乘完後還需要再右移 8-bit Kd微分控制增益其中 10=256所以乘完後還需要再右移 8-bit 3內部變數包括 err臨時性的變數用以儲存誤差值的計算結果 old儲存性的變數用以儲存上一次抽樣控制時的 err值 4模組程式分成三部分包括 變數宣告local和data所宣告的部分 初值設定initial程序中先將 out和 old設定為 0 即時控制timer程序中依序執行 PD控制器中的每個步驟

控制目標的選擇

從字面上來看速度控制就是控制馬達的速度轉角控制就是控制馬達的轉角沒什麼

好討論的但是實際上確有許多問題第一的問題就是什麼是速度和轉角馬達的速

度和轉角如果不作量測如何得知

既然在量測中取得了速度和轉角資料那麼我們所控制的到底是物理學上的速度和轉

sτ+1

KmVc ωKp+sKd

err

P控制器 直流馬達

θc

轉角回授

轉角命令 + 轉角響應-

s1 θ

KxANG

轉角量測

角還是量測上的速度和轉角以下圖為例

其中

1以轉角量測裝置量測轉角例如裝在馬達軸端的光電盤和解碼電路 2轉角的量測輸出是 ANG而 ANG和物理轉角θ之間有 Km的增益關係 3只要 Km值不是 1那麼系統就不再是單位回授 4如果 Km還有非線性或失真現象那麼控制結果也將有非線性或失真現象

這些問題混雜起來會使得控制系統的分析變得更複雜如果要簡單處理就要認同現

實環境直接以量測結果為控制目標如下圖所示

28

sτ+1

KmVc ωKp+sKd

err

P控制器 直流馬達

θc

轉角回授

+-

s1 θ Kx

ANG轉角量測

其中

1直接以量測結果為控制目標將全系統還原成標準的單位回授控制 2所有的非線性或失真現象都進入開環路討論屬於可以補償的部分 3但是控制結果就是「量測上的轉角」而「物理學上的轉角」

量測誤差的問題

轉角θ

量測ANG

對於量測誤差而言最明顯的問題就是量化誤差圖示如下

其中

1以 DCM模組中的光電盤為例精度為每圈 500格經由乘四解碼計數後其等效

精度增加為每圈 2000格 2比(12000)圈更精密的部分都無法響應換句話說振幅越大的控制其相對誤差越

小而振幅越小的控制其相對誤差越大例如 當振幅為(12)圈時其控制誤差量為 01而 當振幅為(120)圈時其控制誤差量為 1 這是標準的的非線性現象

量化誤差不只影響穩態上的精度還會造成非線性的震動問題圖示如下

t

誤差值

+1

-1

其中

1由於量化誤差的問題只有當誤差超過+1或是-1時才會真正偵測到誤差也才

29

會施加控制量作補償 2所以穩態時的誤差將在+1-1之間擺動造成微幅的振動 3量化誤差越大震動越明顯而量化誤差很小時通常不易察覺出震動現象

微分量的計算

伺服系統中有兩處需要用到微分計算包括

1PD控制器中誤差微分量的計算 2速度控制器中速度回授值的量測

在理論上微分公式是(dXdt)相當於 dXdt = (X(n)-X(n-1))DT (當 DT趨近於 0時)

所以當微分計算中的抽樣週期(DT)越短時微分的計算值將越接近理論值但是事實上

卻非如此以下圖為例

t

X

DTDX

其中

1當 X值為等速度運動時其微分量就是其斜率相當於 DXDT 2DT是微分計算中的抽樣週期理論上越短越好但是由於 DX本身的量化誤差

使得這個原則不再成立例如當斜率為 7394時 若 DT=1000則 DX=7394而 DXDT=7394 若 DT=100 則 DX=739 而 DXDT=739 若 DT=10 則 DX=73 而 DXDT=73 若 DT=1 則 DX=7 而 DXDT=7 3換句話說當抽樣週期越短時DX的量化誤差將越明顯而造成微分計算上更嚴

重的誤差

在 DCM 模組中速度量測的量化誤差分析如下

1馬達上的光電盤精度為每圈 500格經過乘四解碼後等效精度為每圈 2000格 2當馬達轉速為 1200RPM而抽樣頻率為 1KHz時對映的速度量測值為 1200(圈分)2000(格圈)60(秒分)1000(DT秒) = 40(格DT) 3換句話說1200RPM的轉速對映到 40的速度量測值即速度單位=30RPM若最

高轉速為 3000RPM則在+-3000RPM的速度範圍內其量化誤差為 05相當於8-bit的 ADC轉換器精度

4對映不同的抽樣頻率的量化誤差表列如下

30

光電盤精度 最高轉速 抽樣頻率 速度單

速度範圍 量化誤差

500PPR 3000RPM 1KHz 30RPM +-100 05 500PPR 3000RPM 2KHz 60RPM +-50 1 500PPR 3000RPM 4KHz 120RPM +25 2

過溢現象的處理

輸入

輸出

32767

-32768

整數運算都有數值範圍限制以 16-bit 整數而言輸入輸出的關係如下

其中

1當超過正負數的上下限時數值會正負顛倒例如 +32768 將會視為 -32768作處理而 +32769 將會視為 -32768作處理依此類推 2換句話說16-bit的整數運算只有在+-32767之間是線性的對映關係而超過這個範圍就是非線性的對映關係

3不但如此還因為正負顛倒的現象使得原來設計的負回授控制將變為正回授控制

而產生非線性的震盪現象 4換句話說只要計算上稍一不慎就會使得原先穩定的系統產生不穩定的震盪結果

為了避免過溢現象所造成的不穩定問題通常控制系統中會利用飽和處理作改善圖示

如下

輸入

輸出

lmtH

lmtL

31

其中

1當超過計算的上限時將固定設為上限值處理而當超過計算的下限時也將固定

設為下限值處理 2這時的整數運算只有在上下限之間是線性的對映關係而超過這個範圍將還是非線

性的對映關係 3雖然如此但是因為沒有正負顛倒的現象所以不再會有負回授變為正回授的問題

而避免了非線性的震盪現象 4換句話說飽和處理是針對過溢現象的妥協處理方案雖然不完全理想但是是可

接受的最佳選擇

下面是對映的組合語言範例

RD x x為輸入端 MIN lmtH 取得 x和 lmtH中的較小值即是作上限保護的工作 MAX lmtL 取得 x和 lmtL中的較大值即是作下限保護的工作 WR y Y為輸出端 其中

1組合語言中提供MAX和MIN的計算其中 MIN lmtH 比較 AX暫存器和 lmtH而將較低值存入 AX暫存器中 MAX lmtL 比較 AX暫存器和 lmtH而將較高值存入 AX暫存器中 2所以直接可用MIN指令作上限保護而以MAX指令作下限保護兩者合併後即是

完整的飽和處理結果

飽和處理通常應用在高位數轉成低位數的場合例如32-bit轉換成16-bit或是16-bit

轉換成 12-bit 等等例如在本實驗中所有的運算都是以 16-bit 整數作處理但是到

PWM 驅動級輸出時卻要轉換成 12-bit精度的 PWM 命令所以必須先用飽和處理以避免

過溢現象造成的不穩定問題

32

61 實驗 1-開迴路的電壓控制 實驗說明以電壓直接控制轉速的開迴路特性可簡化為一階系統處理方塊圖如

sτ+1

v km ωm

其中V 送給驅動器的 PWM電壓命令

ωm馬達的轉動速度可由處理 photo encoder信號所得的位置微分而得 km一階系統的穩態增益 τ一階系統的時間常數即步階響應中的上升時間

為了觀測直流馬達的開環路特性建立下面的測試方塊圖

其中

1所使用的模組包括 FG1方波產生器產生所需的步階測試波形 FT1馬達模擬以一階系統的低通濾波器來執行 IO1光電盤的回授處理可同時取得轉角和速度的量測值 IO2PWM電壓驅動直接驅動直流馬達作控制 Led四位數字七段顯示模組顯示波形信號資料 2測試目標有兩項(P 參數設定欄)包括 A調整方波命令控制直流馬達作開環路的 PWM電壓控制 B調整馬達模擬參數使模擬結果和實驗結果相符以確認開環路特性

33

實驗畫面顯示如下

測試一 開環路的電壓控制 記錄頻道 CH1電壓命令Y1=-300DY=500 CH2模擬速度Y2=-100DY=500 CH3馬達速度Y3=100DY=50 CH4馬達轉角Y4=300DY=50000 實驗參數 FG1kAMP=256電壓命令的測試振幅 FG1kFRQ=150電壓命令的測試頻率 FT1DT =10 馬達模擬參數 FT1KA =500馬達模擬參數

其中

1用示波器功能記錄四個頻道其中 CH2和 CH3重疊顯示以比較模擬速度和量測

速度之間的差異 2由於 Km 不等於 1所以必須調整 CH3的 Y軸單位才能使得 CH2和 CH3的穩態響應部分重疊

3實驗時可以改變 FG1的參數以調整測試方波的振幅和頻率 4可以調整 FT1的參數使得 CH2和 CH3的暫態響應部分重疊

根據實際的測試結果分析如下

2馬達模擬的參數調整到 DT=10而 KA=500根據公式 τ = 40961000dtka 所以上升時間(τ)為 0082秒或是 82ms 3CH2CH3的 Y軸單位並不一致顯然 Km 不等於 1經計算確認 Km=0098

對應之 plc檔程式說明(exp_pwmplc) echo off 畫面顯示開始

run dsp 0 選擇 DSP1

run stop run reset 既有程式停止

run testDCMmem 下載指定程式

das 1 ampfg1out 0 1024 PWM 波形 Volt 設定 DAS 頻道1

das 2 ampft1lp 0 1024 馬達模擬 Volt 設定 DAS 頻道2

das 3 ampio1spd 0 1024 馬達速度 Volt 設定 DAS 頻道3

das 4 ampio1ang 0 1024 馬達角度 Volt 設定 DAS 頻道4

plot select 0 設定示波器頁數

plot xunit 100000 0 設定示波器 X軸

plot yunit 1 500 -300 設定示波器 Y1 軸

34

plot yunit 2 500 -100 設定示波器 Y2 軸

plot yunit 3 50 100 設定示波器 Y3 軸

plot yunit 4 50000 300 設定示波器 Y4 軸

plot trigger 1 0 1 10 設定示波器觸發

plot scope 9 1 2 3 4 設定示波器顯示

module io2 設定 io2 模組

s cmd ampfg1out

module fg1 設定 fg1 模組

s kAmp 256 s kFrq 150

module ft1 設定 ft1 模組

s u ampfg1out s dt 10 s ka 500

module io3 設定 io3 模組

s led ampfg1out

module 回復預設模組

run 1khz 設定抽樣頻率為 4KHz

run start DSP 開始執行

das stop pause 1 DAS 啟動 das start DAS 啟動

echo on 回復正常訊息顯示

使用者可視情況調整一階濾波器的 ka和 dt值使得 ch2和 ch3 兩組波形完全相符

以求得開迴路系統近似的一階轉移函數 CAI操控設計畫面規劃如下(EXP_PWMCAI) page 1 畫面設計

35

page 2 畫面設計 page 3 畫面設計

36

實測響應圖

訊 號 說 明 訊 號 說 明 ch1 方波產生器訊號 ch3 一階濾波器輸出信號 ch2 馬達角速度訊號 ch4 馬達角位置訊號

直流馬達之開迴路電壓控制響應圖

37

以邏輯分析功能觀測直流馬達之光電盤輸入與 PWM輸出信號

38

62 實驗 2-閉迴路的速度控制 實驗說明為了觀測閉迴路的速度控制響應建立下面的測試方塊圖

加入 PD控制後系統閉迴路的轉移函數經適度的簡化仍能約略以一階系統

處理方塊圖如下

sτ+1

u km ωm

其中

u 送給控制器的速度命令

ωm馬達的轉動速度可由處理 photo encoder 信號所得的位置微分而得

km一階系統的穩態增益 τ一階系統的時間常數即步階響應中的上升時間

方塊圖中的模組功能說明如下

1用 fg1 產生測試用的方波速度命令

2將方波速度命令和速度回授訊號送到 PD 控制器方塊中產生電壓控制訊號再透

過 io2 模組將訊號送出給伺服介面

3用 ft1 建立對照用的一階系統可用 IIR1濾波器方塊產生

4將方波命令產生速度命令再觀測 PHT(io1)上的速度值 spd

5調整 IIR1濾波器的參數使得兩組波形完全相符這時 IIR1濾波器就是閉迴路

速度控制的特性其中 km 為增益而τ為上升時間(單位為 sec)

6增益 km 可從示波器中作簡單計算而上升時間(τ=40964000dtka)

7 Led四位數字七段顯示模組顯示波形信號資料

39

對應之 plc檔程式說明(exp_speedplc) echo off 畫面顯示開始

run dsp 0 選擇 DSP1

run stop run reset 既有程式停止

run testDCMmem 下載指定程式

das 1 ampfg1out 0 1024 PWM 波形 Volt 設定 DAS 頻道1

das 2 ampft1lp 0 1024 馬達模擬 Volt 設定 DAS 頻道2

das 3 ampio1spd 0 1024 馬達速度 Volt 設定 DAS 頻道3

das 4 ampio1ang 0 1024 馬達角度 Volt 設定 DAS 頻道4

plot select 0 設定示波器頁數

plot xunit 100000 0 設定示波器 X軸

plot yunit 1 50 -300 設定示波器 Y1 軸

plot yunit 2 50 -100 設定示波器 Y2 軸

plot yunit 3 50 100 設定示波器 Y3 軸

plot yunit 4 50000 300 設定示波器 Y4 軸

plot trigger 1 0 1 10 設定示波器觸發

plot scope 9 1 2 3 4 設定示波器顯示

module io2 設定 io2 模組

s cmd ampcn2out

module fg1 設定 fg1 模組

s kAmp 50 s kFrq 150

module cn2 設定 cn1 模組

s cmd ampfg1out s fdk ampio1spd s kp 0x4000

module ft1 設定 ft1 模組

s u ampfg1out s dt 2 s ka 320

module io3 設定 io3 模組

s led ampfg1out

module 回復預設模組

run 1khz 設定抽樣頻率為 4KHz

run start DSP 開始執行

das stop pause 1 DAS 啟動 das start DAS 啟動

echo on 回復正常訊息顯示

CAI操控設計畫面規劃如下(EXP_speedCAI)

40

page 1 畫面設計 page 2 與 page 3 畫面設計與實驗一 page 2 與 page 3相同畫面 page 4 畫面設計

41

方塊的參數設定 使用者可視情況調整一階濾波器的 ka和 dt值使得 ch2和 ch3 兩組波形完全相符

以求得此一閉迴路系統近似的一階轉移函數或調整 PD控制器中的 kp和 kp值以調整系統之響應 實測響應圖

訊 號 說 明 訊 號 說 明 ch1 方波產生器產生之速度命令 ch3 一階濾波器輸出信號 ch2 馬達角速度訊號 ch4 馬達角位置訊號

42

直流馬達之閉迴路速度控制響應圖

43

63 實驗 3-閉迴路的位置控制 實驗說明為了觀測閉迴路的位置控制響應將直流馬達的回授改為位置訊號

建立下面的測試方塊圖 方塊圖中的模組功能說明如下

1用 fg1產生測試用的方波位置命令 2將方波位置命令和位置回授訊號送到 PD控制器方塊中產生電壓控制訊號再透過 io2模組將訊號送出到伺服介面驅動馬達轉動

對應之 plc檔程式說明(exp_angleplc) echo off 畫面顯示開始

run dsp 0 選擇 DSP1

run stop run reset 既有程式停止

run testDCMmem 下載指定程式

das 1 ampfg1out 0 1024 PWM 波形 Volt 設定 DAS 頻道1

das 2 ampft1lp 0 1024 馬達模擬 Volt 設定 DAS 頻道2

das 3 ampio1spd 0 1024 馬達速度 Volt 設定 DAS 頻道3

das 4 ampio1ang 0 1024 馬達角度 Volt 設定 DAS 頻道4

plot select 0 設定示波器頁數

plot xunit 100000 0 設定示波器 X軸

plot yunit 1 1000 -300 設定示波器 Y1 軸

plot yunit 2 1000 -100 設定示波器 Y2 軸

plot yunit 3 20 100 設定示波器 Y3 軸

plot yunit 4 1000 300 設定示波器 Y4 軸

plot trigger 1 0 1 10 設定示波器觸發

44

plot scope 9 1 2 3 4 設定示波器顯示

module io2 設定 io2 模組

s cmd ampcn2out

module fg1 設定 fg1 模組

s kAmp 1000 s kFrq 75

module cn2 設定 cn1 模組

s cmd ampfg1out s fdk ampio1ang s kp 0x300 s kd 0x4000

module ft1 設定 ft1 模組

s u ampfg1out s dt 2 s ka 320

module io3 設定 io3 模組

s led ampfg1out

module 回復預設模組

run 1khz 設定抽樣頻率為 4KHz

run start DSP 開始執行

das stop pause 1 DAS 啟動 das start DAS 啟動

echo on 回復正常訊息顯示

CAI操控設計畫面規劃如下(EXP_angleCAI) page 1 畫面設計

45

page 2 與 page 3 畫面設計與實驗一 page 2 與 page 3相同畫面 page 4 畫面設計與實驗二 page 4 畫面 方塊的參數設定 延續上一實驗的說明使用者可以調整 PD控制器中的 kp和 kd值以調整系統之

響應 實測響應圖

訊 號 說 明 訊 號 說 明 ch1 方波產生器產生之位置命令 ch3 馬達角速度訊號 ch2 馬達角位置 ch4 Pd控制器輸出之電壓訊號

46

直流馬達之閉迴路位置控制響應圖

47

64 實驗 4-加減速的位置控制 實驗說明為避免方波命令的過於嚴苛在方波命令的輸出加入一加減速控制功

能方塊以減緩命令變化的幅度增加馬達運動的平順建立的測試方塊圖如下

方塊圖中的模組功能說明如下

1用 fg1產生測試用的方波位置命令 2將方波位置命令送到加減速控制方塊處理後產生新的位置命令再將新的位置命

令與位置回授訊號送到 PD控制器方塊中產生電壓控制訊號最後透過 io2模組將訊號送出到伺服介面驅動馬達轉動

對應之 plc檔程式說明(exp_accplc) echo off 畫面顯示開始

run dsp 0 選擇 DSP1

run stop run reset 既有程式停止

run testDCMmem 下載指定程式

das 1 ampfg1out 0 1024 PWM 波形 Volt 設定 DAS 頻道1

das 2 ampcn1out 0 1024 加速控制 Volt 設定 DAS 頻道2

das 3 ampio1spd 0 1024 馬達速度 Volt 設定 DAS 頻道3

das 4 ampio1ang 0 1024 馬達角度 Volt 設定 DAS 頻道4

plot select 0 設定示波器頁數

plot xunit 100000 0 設定示波器 X軸

plot yunit 1 2000 -300 設定示波器 Y1 軸

plot yunit 2 2000 -100 設定示波器 Y2 軸

plot yunit 3 50 100 設定示波器 Y3 軸

plot yunit 4 2000 300 設定示波器 Y4 軸

48

plot trigger 1 0 1 10 設定示波器觸發

plot scope 9 1 2 3 4 設定示波器顯示

module io2 設定 io2 模組

s cmd ampcn2out

module fg1 設定 fg1 模組

s kAmp 2000 s kFrq 150

module cn1 設定 cn1 模組

s cmd ampfg1out

module cn2 設定 cn2 模組

s cmd ampcn1out s fdk ampio1ang s kp 0x300 s kd 0x4000

module ft1 設定 ft1 模組

s u ampfg1out s dt 2 s ka 320

module io3 設定 io3 模組

s led ampfg1out

module 回復預設模組

run 1khz 設定抽樣頻率為 4KHz

run start DSP 開始執行

das stop pause 1 DAS 啟動 das start DAS 啟動

echo on 回復正常訊息顯示

CAI操控設計畫面規劃如下(EXP_accCAI) page 1 畫面設計

49

page 2 畫面設計與實驗一 page 2相同畫面 page 3 畫面設計與實驗二 page 4相同畫面

參數設定參考之前各實驗的說明可線上機動性的調整 PD控制器中的 kp和 kd值以調整系統之響應 實測響應圖

訊 號 說 明 訊 號 說 明 ch1 方波產生器產生之位置命令 ch3 馬達角位置 ch2 加減速模組輸出之位置命令 ch4 馬達角速度訊號

50

圖一 直流馬達經加減速控制後之閉迴路控制響應圖

51

65 實驗 5-正弦波的位置控制 實驗說明在本實驗中改變命令的波形由方波改變為正弦波並建立如下的測

試方塊圖與上一實驗相比較僅更改命令的波形產生方塊 方塊圖中的模組功能說明如下 1用 fg2產生測試用的弦波位置命令 2將弦波位置命令送到加減速控制方塊處理後產生新的位置命令再與 io1 讀入的位

置回授訊號送到 PD 控制器方塊中產生電壓控制訊號再透過 io2 模組將訊號送出到伺服介面驅動馬達轉動

對應之 plc檔程式說明(exp_sinplc) echo off 畫面顯示開始

run dsp 0 選擇 DSP1

run stop run reset 既有程式停止

run testDCMmem 下載指定程式

das 1 ampfg2out 0 1024 SIN 波形 Volt 設定 DAS 頻道1

das 2 ampcn1out 0 1024 加速控制 Volt 設定 DAS 頻道2

das 3 ampio1spd 0 1024 馬達速度 Volt 設定 DAS 頻道3

das 4 ampio1ang 0 1024 馬達角度 Volt 設定 DAS 頻道4

plot select 0 設定示波器頁數

plot xunit 100000 0 設定示波器 X軸

plot yunit 1 2000 -300 設定示波器 Y1 軸

plot yunit 2 2000 -100 設定示波器 Y2 軸

plot yunit 3 50 100 設定示波器 Y3 軸

plot yunit 4 2000 300 設定示波器 Y4 軸

plot trigger 1 0 1 10 設定示波器觸發

52

plot scope 9 1 2 3 4 設定示波器顯示

module io2 設定 io2 模組

s cmd ampcn2out

module fg2 設定 fg1 模組

s kAmp 2000 s kFrq 100

module cn1 設定 cn1 模組

s cmd ampfg2out

module cn2 設定 cn2 模組

s cmd ampcn1out s fdk ampio1ang s kp 0x300 s kd 0x4000

module ft1 設定 ft1 模組

s u ampfg2out s dt 2 s ka 320

module io3 設定 io3 模組

s led ampfg2out

module 回復預設模組

run 1khz 設定抽樣頻率為 4KHz

run start DSP 開始執行

das stop pause 1 DAS 啟動 das start DAS 啟動

echo on 回復正常訊息顯示

CAI操控設計畫面規劃如下(EXP_sinCAI) page 1 畫面設計

53

page 2 畫面設計 page 3 畫面設計與實驗二 page 4相同畫面

方塊的參數設定可調整 PD控制器中的 kp和 kd值以調整系統之響應 實測響應圖

訊 號 說 明 訊 號 說 明 ch1 弦波產生器產生之位置命令 ch3 馬達角位置訊號 ch2 加減速模組輸出之位置命令 ch4 馬達角速度訊號

54

直流馬達之閉迴路弦波加減速位置控制響應圖

55

7組合語言說明

本節將針對 DC馬達伺服控制實驗專用的程式模組進行功能與程式碼的說明其

有關於波形產生器與資料擷取模組等說明如下

SIN_waveasm 正弦波產生器 PWM_waveasm 方波產生器 IIR1_filterasm 一階濾波器 DAS4asm 資料蒐集模組

弦波產生器

此模組會產生週期性的正弦波方塊圖如下

outfrq

kBiasbias

ampkAmp

kFrqth

kThf=1TB

θ

A

其中

1正弦波有四個參數振幅(A)頻率(F)相位(θ)和偏移(B)其公式為 out = A sin(2πF t +θ) + B 2對於單純的正弦波產生器所對映的參數包括 kAmp 振幅值 kFrq 頻率值kFrq=655368000Hz其中 Hz的範圍為 0~4000例如 1000Hz =gt frq=8192 100Hz =gt frq=819 10Hz =gt frq=82 1Hz =gt frq=8 kTh 相角值0~255代表 0~360的相位當 th=0 時為正弦波 th=64 時為餘弦波 th=128時為反相波依此類推 kBias偏移值 3對於可調變的正弦波產生器其對映的輸入點為 amp 控制振幅的輸入點可產生調幅(AM)波形 frq 控制頻率的輸入點可產生調頻(FM)波形 th 控制相位的輸入點可產生調相(PM)波形 bias控制偏移的輸入點可產生雙頻混波(相加)波形 4若不使用調變功能時各個輸入點時的預設值為 amp 指向 kAmp 的位址 frq 指向 kFrq 的位址

56

th 指向 kTh 的位址 bias指向 kBias的位址

模組程式範例SIN_WAVEasm

local amp R0 IP kAmp 輸入點sin波的振幅 local frq R1 IP kFrq 輸入點sin波的頻率 local th R2 IP kTh 輸入點sin波的相角 local bias R3 IP kBias 輸入點sin波的中心偏移 local out R4 OP 輸出點sin波輸出 local tab R5 TP 表格指標指向 sin[256]的表格 local ang R6 內部變數相位角65536=360deg local kAmp R7 1000 參數振幅值 local kFrq R8 1000 參數頻率值=655368000Hz local kTh R9 0 參數相角值360deg=256 local kBias R10 0 參數偏移值 data 11 模組變數區長度及初值 initial 啟動程序 WR ang0 WR out0 ang=out=0 RET timer 即時控制程序(8KHz) RD ang ADD (frq) WR ang ang+=frq SFR 8 ADD (th) AND 255 ACC=sin(ang256+th) ADD tab WRH RDM table-look-up MUL (amp) SFR 12 ADD (bias) WR out out=ACCamp4096+bias RET table tab 256 sin[256]表格區10=4096 0 101 201 301 401 501 601 700 00~070deg 799 897 995 1092 1189 1285 1380 1474 08~0F 1567 1660 1751 1842 1931 2019 2106 2191 10~17 2276 2359 2440 2520 2598 2675 2751 2824 18~1F 2896 2967 3035 3102 3166 3229 3290 3349 20~27 3406 3461 3513 3564 3612 3659 3703 3745 28~2F 3784 3822 3857 3889 3920 3948 3973 3996 30~37 4017 4036 4052 4065 4076 4085 4091 4095 38~3F 4096 4095 4091 4085 4076 4065 4052 4036 40~4790deg 4017 3996 3973 3948 3920 3889 3857 3822 48~4F 3784 3745 3703 3659 3612 3564 3513 3461 50~57 3406 3349 3290 3229 3166 3102 3035 2967 58~5F

57

2896 2824 2751 2675 2598 2520 2440 2359 60~67 2276 2191 2106 2019 1931 1842 1751 1660 68~6F 1567 1474 1380 1285 1189 1092 995 897 70~77 799 700 601 501 401 301 201 101 78~7F 0 65435 65335 65235 65135 65035 64935 64836 80~87180deg 64737 64639 64541 64444 64347 64251 64156 64062 88~8F 63969 63876 63785 63694 63605 63517 63430 63345 90~97 63260 63177 63096 63016 62938 62861 62785 62712 98~9F 62640 62569 62501 62434 62370 62307 62246 62187 A0~A7 62130 62075 62023 61972 61924 61877 61833 61791 A8~A8 61752 61714 61679 61647 61616 61588 61563 61540 B0~B7 61519 61500 61484 61471 61460 61451 61445 61441 B8~BF 61440 61441 61445 61451 61460 61471 61484 61500 C0~C7270deg 61519 61540 61563 61588 61616 61647 61679 61714 C8~CF 61752 61791 61833 61877 61924 61972 62023 62075 D0~D7 62130 62187 62246 62307 62370 62434 62501 62569 D8~DF 62640 62712 62785 62861 62938 63016 63096 63177 E0~E7 63260 63345 63430 63517 63605 63694 63785 63876 E8~EF 63969 64062 64156 64251 64347 64444 64541 64639 F0~F7 64737 64836 64935 65035 65135 65235 65335 65435 F8~FF

就程式結構而言說明如下

timer 即時控制程序(8KHz) RD ang ADD (frq) WR ang ang+=frq SFR 8 ADD (th) AND 255 ACC=sin(ang256+th) ADD tab WRH RDM table-look-up MUL (amp) SFR 12 ADD (bias) WR out out=ACCamp4096+bias RET

1基本上我們以查表法計算 sin()其輸入θ的範圍為 0~255對映到 0~360deg其輸出 sin(θ)的範圍為+-4096對映到+-10的範圍

2建立一個內部變數 ang其範圍為 0~65535對映到 0~360的相位角 3每個timer程序都執行 ang+=frq的動作更新目前的相位角接著依照 ang的相位角查表得到 sin(ang256+th)值

4由於表格長度為 256-word所以必須將 ang256才能得到正確的對映關係而 th範圍為 0~255所以不需要像 ang一般的做額外處理

5sin()的範圍為(+1-1)而在表格中以(+4096~-4096)的型式記錄相當於 10=4096所以執行 Asin()時還要用 SFR12指令做4096的動作才能正確的取得輸出值

58

6就頻率輸入 frq而言其計算原則是將θ=ωt轉化成θ=Σ(ωdt)因為抽樣頻率

為 8KHz所以 dt=18000而得到 frq=655368000Hz公式其中 Hz為真正的頻率在 8KHz的抽樣頻率下其範圍為 0~4000

鋸齒波產生器

此模組會產生週期性的鋸齒波方塊圖如下

outfrq

kBiasbias

ampkAmp

kFrqth

kThf=1TB

θ

A

其中

1鋸齒波也有四個參數振幅(A)頻率(F)相位(θ)和偏移(B)和正弦波的定義完全一致唯一的差異是其輸出為鋸齒波而非正弦波

2基本波形是從週期開始時為 0一直遞增到週期結束時到達最高點然後立刻回歸

到 0重新開始 3以程式結構而論鋸齒波程式幾乎就是正弦波的相位計算部分只差沒有正弦波的

查表處理而已

模組程式範例SAW_WAVEasm

local amp R0 IP kAmp 輸入點sin波的振幅 local frq R1 IP kFrq 輸入點sin波的頻率 local th R2 IP kTh 輸入點sin波的相角 local bias R3 IP kBias 輸入點sin波的中心偏移 local out R4 OP 輸出點sin波輸出 local ang R5 內部變數相位角65536=360deg local kAmp R6 1000 參數振幅值 local kFrq R7 1000 參數頻率值=655368000Hz local kTh R8 0 參數相角值360deg=256 local kBias R9 0 參數偏移值 data 11 模組變數區長度及初值 initial 啟動程序 WR ang0 WR out0 ang=out=0 RET timer 即時控制程序(8KHz) RD ang ADD (frq) WR ang ang+=frq SFR 8 ADD (th) AND 255 ACC=(ang256+th)amp0x00ff MUL (amp) SFR 8 ADD (bias) WR out out=ACCamp256+bias

59

RET

脈衝波產生器

outfrq

kBiasbias

ampkAmp

kFrqth

kThf=1TB

θ

A

pwm

kDutyduty

此模組會產生週期性的脈衝波方塊圖如下

其中

1脈衝波有五個參數其中振幅(A)頻率(F)相位(θ)和偏移(B)四個參數和正弦波

定義完全一樣另外再增加一個負載率(D) 2基本波形是從週期開始時為 1隔段時間後換為 0然後持續到週期結束再重新開始其中 1所佔有的比例就是負載率當 D=0時為 0而 D=255時為 100

3和其他參數類似負載率(D)以 duty為其輸入點而以 kDuty為其參數值

模組程式範例PLS_WAVEasm

local amp R0 IP kAmp 輸入點脈衝波的振幅 local frq R1 IP kFrq 輸入點脈衝波的頻率 local th R2 IP kTh 輸入點脈衝波的相角 local bias R3 IP kBias 輸入點脈衝波的中心偏移 local duty R4 IP kDuty 輸入點脈衝波的負載率 local out R5 OP 輸出點脈衝波輸出 local ang R6 內部變數相位角65536=360deg local kAmp R7 1000 參數振幅值 local kFrq R8 1000 參數頻率值=655368000Hz local kTh R9 0 參數相角值360deg=256 local kBias R10 0 參數偏移值 local kDuty R11 128 參數負載率100 =256 data 12 模組變數區長度及初值 initial 啟動程序 WR ang0 WR out0 ang=out=0 RET timer 即時控制程序(8KHz)

60

RD ang ADD (frq) WR ang ang+=frq SFR 8 ADD (th) AND 255 ACC=(ang256+th)amp0x00ff SUB (duty) RD (amp) JLT t1 RD 0 ACC=(amp0) t1 ADD (bias) WR out out=ACC+bias RET

IIR 一階濾波器

此模組執行一階的 IIR濾波器方塊圖如下

kau x

Z-1

+

+

-

+低通濾波器

高通濾波器dx lp

hp

濾波器參數的計算公式如下

1假設濾波器的頻寬為 hz則 ωn=hz628 2若系統頻率為 8KHz則抽樣週期 dT為 dT=dt8000 其中 dt為模組參數 3則濾波器參數為 ka=ωndT4096或是 =hzdt62880004096即 =hzdt32 4當 dt決定後所允許的訊號頻寬為(4000dt)換句話說訊號頻寬會因為 dt增加而下降

為了方便實驗的運用下面列出常用的參數對照表

濾波頻寬

(Hz)

10 20 50 100 200 500 1000 2000

訊號頻寬

(Hz)

400 800 2000 4000 4000 4000 4000 4000

模組參數 dt 10 5 2 1 1 1 1 1

模組參數 ka 320 320 320 320 640 1600 3200 6400

表格的運用方式如下

1首先決定濾波頻寬 2接著查表找出對映的參數 dt和 ka 3再查表得到對映的訊號頻寬以決定是否需要串接前級濾波器

61

模組程式範例IIR1_FILTERasm

local u R0 IP 輸入點濾波器輸入 local lp R1 OP 輸出點低通濾波器輸出 local hp R2 OP 輸出點高通濾波器輸出 local dt R3 1 參數抽樣週期 local ka R4 4096 參數增益 ka10=4096 local prd R5 內部變數抽樣週期用 data 6 模組變數區長度 initial 開機啟動程序 WR lp0 WR hp0 WR prd1 RET lp=hp=0prd=1 timer 即時控制程序 SUB prd1 JNZ b9 if (--prdgt0) return RD dt WR prd prd=dt RD (u) SUB lp WR hp hp=u-lp MUL ka SFR 12 ADD lp WR lp lp+=(hpka4096) b9 RET

資料蒐集模組

資料蒐集模組是一個非常特殊的模組專門配合 eTTY 程式中的示波器使用

模組程式範例DAS4asm

local cmd R0 0 紀錄命令0=停止1=前置記錄2=正觸發4=負觸發6=觸發記錄 local dt R1 1 抽樣週期每 dT抽樣一次 local tab R2 TP DAS表格啟始位址 local cnt R3 0 目前記錄點(0~255) local ch1 R4 0 定義頻道1的變數位址 local ch2 R5 0 定義頻道2的變數位址 local ch3 R6 0 定義頻道3的變數位址 local ch4 R7 0 定義頻道4的變數位址 local trg R8 0 定義觸發頻道的變數位址 local th R9 0 觸發準位 local tail R10 0 觸發後的抽樣個數 local buf R11 1 抽樣計數(1~dt) local pnt R12 表格位址計算pnt=tab+cnt4 local len R13 表格長度計算(0~256) data 14 定義模組變數區的長度 table tab 1024 定義表格的長度 initial 啟動程序 WR cmd0 RET cmd=0 timer 控制程序

62

ADD cmd0 JZ t9 if (cmd==0) return SUB buf1 JNZ t9 if (--buf)gt0) return RD dt WR buf dt=buf RD cnt ADD 1 AND 0xff WR cnt cnt=(cnt+1)amp0xff SFL 2 ADD tab WR pnt pnt=tab+cnt4 RD (ch1) WR (pnt) ADD pnt1 pnt++=ch1 RD (ch2) WR (pnt) ADD pnt1 pnt++=ch2 RD (ch3) WR (pnt) ADD pnt1 pnt++=ch3 RD (ch4) WR (pnt) pnt =ch4 RD cmd SUB 1 JZ t9 SUB 1 JZ t2 SUB 1 JZ t3 SUB 1 JZ t4 SUB 1 JZ t5 SUB 1 JZ t6 JR t7 t2 RD (trg) SUB th JGE t9 ADD cmd1 JR t9 wait trgltth t3 RD (trg) SUB th JLE t9 JR t6 wait trggtth t4 RD (trg) SUB th JLE t9 ADD cmd1 JR t9 wait trggtth t5 RD (trg) SUB th JGE t9 JR t6 wait trgltth t6 WR len0 WR cmd7 len=0cmd=7 t7 ADD len1 SUB tail JLT t9 WR cmd0 if ((++len)gt=0x80) cmd=0 t9 RET

與 DC 馬達控制相關的程式模組有以下 4個程式模組說明如下

(1)加減速控制模組 ACC_controlasm (2)光電盤輸入模組 POS_inputasm (3)PWM輸出模組 PWM_outputasm (4)PD控制模組 PD_controlasm

71加減速控制模組 此程式模組主要功能在於執行位置控制的加減速命令修正其數學模式採用 Lynn

濾波器的架構參見下圖

cmd

2

+

old Z -1

-

Z -1

Z -1

Z-1

Z-1x0 x1 x8 x9 x16

+ -

++

2

Z-1

Z-1 y1 y2

+

-

y0

+ +

sumZ-1

+164

12

out

dif

+

63

加減速控制模組方塊圖

其中

1Lynn 濾波器的階數固定成八階也就是 m=8其公式為 H(z) = (1-2Z-m+Z-2m)(1-2Z-1+Z-2)m2

2因為m=8所以m2=64因此最後計算低通濾波的部份時要先做除 64的運算 3因為低通濾波(lp)和 y0之間有 64倍的差異代表 y0y1y2的變化範圍比濾波器輸

入值要擴大許多例如輸入值在+-1000變化時y0y1y2很可能會在+-64000之間變化這範圍已經超出整數處理的範圍很可能會造成錯誤的計算結果

4所以在實驗時輸入值的變化範圍必須控制在+-500之間以保證計算的正確性 5對於 Lynn 濾波器當 m=8時其濾波器的頻寬固定為 1 kHzmdt也就是 dt=1時頻寬為 125 Hz dt=2時頻寬為 625Hz依此類推 6對於 Lynn 濾波器其濾波器的延遲固定為 m個抽樣週期因此設計 hp = x8 - lp 即可得到高通濾波器的對應結果 7其中乘 2和除 64的運算以移位運算取代所以整個程式中並無任何乘法運算 8Lynn 濾波器本身並不是穩定濾波器所以在程式啟動時必須確實的將所有狀態

(x0~x16)歸零否則會產生不穩定的狀態輸出

因為 Lynn濾波器中所有參數固定所以除了抽樣週期 dt 之外並無任何可調參數

抽樣週期 dt 可以控制頻寬dt 越大則濾波器頻寬越低

將步階命令值的輸出送入 Lynn 濾波器中經由低通濾波器的效應可以減緩命

令的變化程度達到加減速控制的目的以下為使用 Lynn 濾波器型式實現加減速控

制的組合語言程式列印 如欲更進一步瞭解 Lynn 濾波器與 FIR 數位濾波器之間的關係可以參考通訊實驗

四數位濾波器設計(FIR)中之說明

ACC_controlasm程式列印 local cmd R0 IP 輸入點位置命令

local out R1 OP 輸出點加減速處理後的位置命令

local dif R2 OP 輸出點位置微分命令

local axis R3 0 馬達編號0=X1=Y2=Z3=C

local old R4 內部變數微分計算用

local sumL R5 內部變數積分計算用

local sumH R6 內部變數積分計算用

local y0 R7 內部變數y(0~2)

local y1 R8 local y2 R9

local x0 R10 內部變數x(0~16)

local x1 R11 local x2 R12 local x3 R13 local x4 R14

local x5 R15 local x6 R16 local x7 R17 local x8 R18

local x9 R19 local x10 R20 local x11 R21 local x12 R22

local x13 R23 local x14 R24 local x15 R25 local x16 R26

64

data 27 模組變數區長度

initial 開機啟動程序

WR dif0 RD (cmd) WR out WR old dif=0 out=old=cmd

sumHL=cmd64

SFL 6 WR sumL RD out SFR 10 SGN 5 WR sumH

RPT 17 WR x00 RPT 3 WR y00 RET x[0~16]=0y[0~2]=0

timer 即時控制程序

RD (cmd) SUBX old WR x0 x0=cmd-old old=cmd

SUB x81 ADD x16 ADD y11 SUB y2 WR y0 y0=x0-2x8+x16+2y1-y2

SGN ADD sumL WR sumL RDH ADC sumH WR sumH sumHL+=y0

WRH RD sumL SFR 6 WR out out=sumHL64

RD y0 SGN SFR WR dif dif=y032mm

RD x0 RPT 16 RDX x1 x[i]=x[i-1] i=1~16

RD y0 RDX y1 WR y2 y[i]=y[i-1] i=1~2

b9 RET

72光電盤輸入模組

DC馬達的位置由光電盤量測之預設儲存於 0xac與 0xbe二個輸入埠位址中其中位址 0xac記錄 X軸馬達的位置位址 0xbe記錄 Y軸馬達的位置由於本實驗的DC馬達接在 Y軸的位置上因此程式中直接選用 Y軸的輸入 光電盤位置輸入的程式列印如下其中速度由位置的差分而得至於馬達的位置

則使用內部 2個 word加以記錄精度為 32位元 POS_inputasm程式列印 local spd R0 OP 輸出點速度量測值

local ang R1 OP 輸出點角度量測值

local angH R2 內部變數角度的 32 位元部分

local mode R3 0x308 模式選擇15MHzAB 相正反向輸入

local pht R4 0xac 輸入阜地址光電盤輸入(0xac)

local phtc R5 0xbe 輸入阜地址光電盤模式(0xbe)

local old R6 內部變數速度更新用

data 7 模組變數區長度

initial 開機啟動程序

RD mode WR (phtc) phtc=mode

RD (pht) WR old WR spd0 RET old=phtspd=0

timer 即時控制程序

RD (pht) SUBX old SGN 11 WR spd spd=(pht-old)old=pht

65

ADD ang WR ang angHL+=spd

RDH ADC angH WR angH

RET

73 PWM輸出控制模組 模組方塊

cmd PWM輸出

程式說明 1在開機時將切換保護時間寫到輸出阜 0xbc上其中切換保護值為 0~6360=5us 2在每次 timer interrupt時將 cmd訊號處理後寫到輸出阜 0xb8上

PWM_outputasm程式列印 local cmd R0 IP gnd 輸入點v相命令

local gain R1 4096 參數輸出增益1=4096

local bias R2 2048 參數輸出偏壓0=2048

local limit R3 4095 參數輸出極限1=4095

local zone R4 0x88f0 參數頻率=12KHz切換保護=5us

local pwm R5 0xb8 輸出阜地址PWM0 輸出(0xb8)

local mode R6 0xbc 輸出阜地址PWM 模式(0xbc)

local p0md R7 0xf8 輸出阜地址port0 模式(0xf8)

local gnd R8 0 輸入接地點

data 9 模組變數區長度

initial 開機啟動程序

RD bias WR (pwm) pwm=bias

RD 0xffff WR (p0md) set port0 mode

RD zone WR (mode) RET mode=zone

stop 關機保護程序

RD bias WR (pwm) RET pwm=bias

timer 即時控制程序

RD (mode) xor 1 and 1 WR (mode) trigger watch-dog

RD (cmd) MUL gain SFR 12 ADD bias ACC=(cmdgain4096)+bias

MAX 0 MIN limit WR (pwm) pwm=limit(ACC)

RET

66

74 PD 控制模組

PD控制的模組方塊參見圖二十一所示其中比例控制的部份直接由增益 kp加以調整微分控制的部份則由誤差的差分經增益 kd的調整而得

Σ+

-

cmd

fdk

err out

Σ

pk

dk

Σ

+

+

+

-

old1minusZ

PD控制器的方塊圖

PD_controlasm程式列印 local cmd R0 IP gnd 輸入點位置命令(可忽略)

local fdk R1 IP gnd 輸入點位置回授(可忽略)

local out R2 OP 輸出點用以控制速度迴路

local kp R3 256 參數增益 kp10=256

local kd R4 0 參數增益 kd10=256

local err R5 0 內部變數

local old R6 0 內部變數

local gnd R7 0 無輸入時的短路點

data 8 模組變數區長度

initial 開機啟動程序

WR out0 WR old0 RET out=old=0

timer 即時控制程序

RD (cmd) SUB (fdk) PRTF WR err

MUL kp SFR 8 P=(cmd-fdk)kp256

RDS err SUBX old MUL kd SFR 8 D=(err-old)kd256

ADDS

WR out out=P+D

RET

程式中預設增益值的 10以整數值 256為基底因此使用 SFR 8的指令加以調

整另外在在計算微分項的程式部份用到 SUBX old的指令其詳細的暫存器動作如

下 參考 piDSP的指令說明SUBX指令將總共用到 3個時序參考錯誤 找不到參照

67

來源在時序 1時將原先 AX的資料拷貝一份到 HX中時序 2時正式執行減

法的動作所以 AX暫存器中的內容會變成 err-old時序 3時DSP會將存放在 HX暫存器中的內容拷貝一份到 old的記憶體中也就是經由 SUBX此一精簡指令將

同時完成計算差分所需要的相減與資料疊代的動作有效的利用 piDSP控制器 DSP核心的精簡指令將可以大幅提昇系統的計算速度

HX AXoldSUBXerr err

old

err

errerr olderr minus

1_err

errerr olderr minus err

1_err

1

2

3

SUBX的指令時序與暫存器變化

68

8附錄快速安裝說明

光纖網路通訊 FPGA 發展系統 (適用於 WIN-XP200098 系統)

快速安裝說明

26Pin 負載輸出入埠

雙電源︵5

12

伏︶輸入埠

單電源︵5

伏︶輸入埠

USB

光纖線輸

號 光纖線輸出埠

入 傳 埠

首先將光碟片 RFFPGA 目錄檔案拷貝在您工作硬碟裡面

第一次安裝時先將 USB 傳輸線接上電腦主機將電源供應器接上 FPGA 模組此時電

腦會出現安裝 USB-Serial 驅動程式選擇從清單安裝此驅動程式放置在光碟片

RFFPGA-USBdrive 選擇您目前安裝系統

可選擇 WIN-98WIN-MEWIN-2000WIN-XP 系統配合您現在工作電腦作業系統

69

注意一般電腦 USB 埠很多插口當您安裝驅動程式時是配合您當時插入之埠

下次如您插入不同接口埠時電腦會再次要求安裝驅動程式這是正常現象請再次安

裝驅動程式否則無法使用

FPLC 操作

首先進入 RFFPGA裡子目錄 testASM直接點選 fPLCexe 出現下面操作畫面(也可直接將

此檔案放置桌面直接點選)

(或者選擇 File 再執行 Setuphellip 選擇您要執行 CAI 檔)

70

進入下面操作畫面 首先使用滑鼠在 FPGA下載按鈕單擊動作使 FPGA變成 DSP晶片 實驗一至實驗五皆為使用 DSP組合語言設計程式其原始程式分別為 testASM1至testASM5可使用 texPad 開啟與編輯程式內容 實驗三與實驗五多有 IO控制動作 當選擇實驗三時出現下面畫面

71

eM_USB 模組

數字型 LED

0 1 2 34 5 6 78 9 A BC D E F

燈號型 LED

44 鍵盤

ADC0 ADC1 DAC0 DAC1

LED 選擇KEY 選擇

模 式 1

0123

注意操作畫面 3與 4 說明開關與按鍵選擇位置後選擇程式下載再按程式啟動如您

按下 0-3按鍵時燈號型 LED會有不同方向閃爍顯示程式停止時結束所有 IO控制動作再按回首頁選擇其他實驗 實驗四與實驗五

模式3

0 1 2 34 5 6 78 9 A BC D E F

按照上面開關選擇直接操作如果以上實驗皆能按照正常操作表示您光纖網路通訊

FPGA發展模組以能正常使用 注意 開機與關機動作順序如下

開機電腦啟動 --- eM_USB 模組電源接上 --- USB 接上電腦 ---

啟動 FPLC 軟體 --- 下載 FPGA 程式

關機關閉 FPLC 軟體 --- eM_USB 模組電源拔掉 --- 拔掉電腦 USB 接頭 ---關掉

電腦

如果以上順序有亂可能造成 USB 找不到驅動造成無法下載經過幾次測試還是

無法下載建議重新啟動電腦主機按照正確步驟操作

72

FPGA 下載操作

進入 FPLC 操作系統按照下列步驟選擇節點模組與下載 bit FPGA 檔案

在 VHDLDEMO 子目錄下您可以選擇您目前 FPGA 種類型號在此型號下我們已將 VHDL

與數位邏輯設計課本範例全部放於此處

73

光纖網路連線 FPGA 下載操作

首先利用光纖線將 eM_USB0 模組光纖輸出埠接至 eM_USB1 模組光纖輸入埠以此

類推最後再將最後 eM_USBN 模組光纖輸出埠接至 eM_USB0 模組光纖輸入埠配置

如附圖方式

個人電腦(Windows) eM_USB模組

0USB

eM_USB模組1

光纖網路

eM_USB模組2

eM_USB模組N

配置完成後進入 FPLC 系統首先必須先將 Node00 下載在 testASM 子目錄裡

piDSPv0bit 檔讓 eM_USB0 模組 FPGA 具備 DSP 功能才能執行光纖網路通訊

操作如下

此時您就可以選擇分別下載至各模組 FPGA 檔 bit

74

安裝 FPLC 注意事項

當您進入 FPLC 時

按 FILE 選擇 programhellip 選擇檔案為 exp_dcmplc 出現下面畫面

正常顯示畫面為

75

DOS 環境操作

在 PC 端的操作是在 Windows 環境中的 DOS 視窗中執行指令範例如下

eFPGA progNETbit 下載 FPGA電路至網路節點0(即 USB節點)中 eFPGA testLEDbit 1 下載 FPGA電路至網路節點1中

對於單一節點的控制程序如下

1將 eM_USB模組連結個人電腦的 USB端 2eM_USB模組開機 3執行下載指令即可 eFPGA xxxxbit 4若要更改 FPGA電路只要重新執行下載指令即可

對於多個網路節點的控制程序如下

1第一組 eM_USB模組連結個人電腦的 USB端再以光纖網路依序其他各節點 2連接 USB界面者為模組0從光纖發射端連接出去的模組為1依此類推 3將所有 eM_USB模組開機 4執行下載指令如下 eFPGA progNETbit 模組0必須先下載指定的 FPGA電路 eFPGA xxxxbit 1 再依序下載其他網路模組的 FPGA電路 eFPGA yyyybit 2 eFPGA zzzzbit 最後再重新下載模組0的 FPGA電路 5換句話說模組0必須先執行 progNETbit讓光纖網路接受 FPGA控制後才能透過光纖網路下載至其他節點等全部網路節點下載完畢後再將模組0的 FPGA重新下載讓模組0也可自由執行任意的 FPGA電路

6若要更改某一個網路節點中的 FPGA電路只要重新執行下述指令 eFPGA progNETbit 模組0必須先下載指定的 FPGA電路 eFPGA yyyybit 2 下載指定網路模組的 FPGA電路 eFPGA zzzz bit 最後再重新下載模組0的 FPGA電路 換句話說除非模組0中的 FPGA已經包括光纖網路管理電路否則一定要先在

模組0中下載網路管理電路後才能下載指定網路節點的 FPGA電路

76

光纖網路通訊 FPGA 發展系統

系統配置

光纖網路通訊 FPGA 發展系統的系統配置圖如下

個人電腦(Windows) eM_USB模組

0USB

eM_USB模組1

光纖網路

eM_USB模組2

eM_USB模組N

其中

1基本模組為 eM_USB模組可用 USB界面和個人電腦連線並提供 USB對光纖網路的轉換功能使得個人電腦可以獨立控制光纖網路中的每個網路節點

2eM_USB模組也可以作為光纖網路中的網路節點透過光纖網路而接受個人電腦的

監控 3就個人電腦而言不論是 USB界面直接連結或是以光纖網路間接連結的 eM_USB模組都是可以直接監控的網路節點最多可以同時控制一個 USB節點和 30個網路節點

4對於每一個網路節點個人電腦都可執行 eM_USB模組中 FPGA的電路下載工作並在適當的 FPGA電路配合下可執行 eM_USB模組中 FPGA內部電路的讀寫控制 5透過適當的 FPGA電路設計各網路節點都可透過光纖網路和其他任何網路節點

作同步通訊執行 FPGA內部記憶體的資料交換資料交換頻率可達 1KHz以上

77

網路模組配置

每個網路模組的標準配置圖如下

eM_USB模組光纖網路

USB eM_FPGA卡

eM_DEMO模組

eM_EXP實驗模組

DC電源

其中

1網路模組以 eM_USB模組為主提供基本的 USB界面和光纖網路連線 2eM_USB模組中的 FPGACPLD採用插卡型式可選擇不同的 eM_FPGA卡包括

eM_2V1K卡可選用 Virtex系列的 XC2V250和 XC2V1000 eM_3S1K卡可選用 Spartan3系列的 XC3S400XC3S1000和 XC3S1500 eM_3S50卡可選用 Spartan3系列的 XC3S50XC3S200和 XC3S400 eM_95XL卡可選用 9500XL系列的 XC95144XL和 XC95288XL 3eM_USB模組中的對外連線有兩種一種是 26P接頭用以連接既有的各種實驗模

組另一種是兩組 50P接頭將 FPGA中各接腳引出用以連接專題實驗 4eM_DEMO模組就是插上 50P接頭的教學模組其中包括 LED 數字顯示和 44鍵盤也具備兩組的 ADC和兩組的 DAC接頭提供類比訊號的測試工具

常用的實驗組合包括

1精簡組合包括(eM_USB+eM_FPGA)提供基本的網路節點適用於專題實驗 2標準組合包括(eM_USB+eM_FPGA+eM_DEMO)提供基礎 FPGA設計的教學實驗

3實驗組合包括(eM_USB+eM_FPGA+eM_DEMO+eM_EXP)提供進階的 FPGA實驗可依需求選用不同的實驗模組

78

eM_USB 模組

eM_USB 模組的電路配置圖如下

TxRx

DCPower

USB

JP2

JP3

光纖界面

外加電源

PC連線

JP1

eM_FPGA模組

FT232 CPLD FlashROM

SRAM

10cm

6cm

JP4

其中

1對外的連線接頭包括 DC電源 可選擇單電源(5V)或是多電源(5V+12V-12V)兩種 USB界面 直接連接個人電腦 光纖界面連接光纖網路 2實驗界面包括 JP1負責內部 CPLD的電路下載 JP2JP3兩組 50P的擴張用接頭 JP4 標準 26P接頭用以連接各種實驗模組 3內部的電路配置包括 A以 SO-DIMM接頭連接各種 eM_FPGA卡 B內附 EEPROMFlashROM和 SRAM提供 FPGA作應用測試 C以一顆 FT232BM作為 USB界面解碼而以一顆 CPLD作為光纖網路解碼 D提供各種 eM_FPGA卡的電路下載功能 4內附五顆 LED由上而下依序為 usbLED指示 USB界面的讀寫狀態 tstLED可由 FPGA電路自行定義 stsLED可由 FPGA電路自行定義 RxLED 可由 FPGA電路自行定義 TxLED 可由 FPGA電路自行定義

79

外部接腳定義

外部接頭的接點順序圖示如下

上視圖

JP11 9 JP4

126225

JP31

50249

JP21

50249

而各接頭的接點定義如下

JP1 JP4 JP2 JP3 1+33V 1+12V 2+12V 1 GND 2 GND 1 GND 2 GND 2GND 3 ADC 4 DAC 3POWER 4ALARM 3 +5V 4 +5V 3nc 5 yPB2 6 yPB3 5RxNET 6TxNET 5+12V 6+12V 4TCK 7 yPB1 6 yPB4 7RxUSB 6TxUSB 7-12V 6-12V 5nc 9 yPB0 10yPB5 9RxCAN 10TxCAN 9 ADC 10 DAC 6TDO 11yPB6 12yPB7 11P0D0 12P0D1 11P1D0 12P1D1 7TDI 13yGND 14yPC3 13P0D2 14P0D3 13P1D2 14P1D3 8nc 15yPC2 16yPC1 15P0D4 16P0D5 15P1D4 16P1D5 9TMS 17yPC0 18yPA0 17P0D6 18P0D7 17P1D6 18P1D7 19yPA1 20yPA2 19P0D8 20P0D9 19P1D8 20P1D9 21yPA3 22GND 21P0D10 22P0D11 21P1D10 22P1D11 23GND 24+5V 23P0D12 24P0D13 23P1D12 24P1D13 25+5V 26nc 25P0D14 26P0D15 25P1D14 26P1D15 27P2D0 28P2D1 27PxA0 28PxA1 29P2D2 30P2D3 29PxA2 30PxA3 31P2D4 32P2D5 31PxA4 32PxA5 33P2D6 34P2D7 33PxA6 34PxA7 35P2D8 36P2D9 35PxB0 36PxB1 37P2D10 38P2D11 37PxB2 38PxB3 39P2D12 40P2D13 39PxB4 40PxB5 41P2D14 42P2D15 41PxB6 42PxB7 43ADC0 44ADC1 43PxC0 44PxC1 45ADC2 46ADC3 45PxC2 46PxC3 47ADC4 48ADC5 47PxC4 48PxC5 49DAC0 50DAC1 49PxC6 50PxC7

80

eM_FPGA 模組

在各種 eM_FPGA 模組中FPGA 對外電路的標準配置圖如下

24576MHz

FlashROM

26PSRAM

EEPROM

mD[8]

yPA[4]

FPGACPLD

mA[19]mRDmWRmCSeeCKeeCSeeDIeeDO

光纖界面 RxNETTxNET

USB 界面 RxUSBTxUSBCLK24MPOWERALARM

LED

tstLEDstsLEDRxLEDTxLED

yPB[8]yPC[4]

ADCDAC

ADC[8]

實驗模組

ADC[2]

DAC[2]

xPA[4]

xPB[8]

xPC[4]

基礎實驗

其中

1FPGACPLD可以選擇下述幾種 XC2V250XC2V1000 採用 eM_2V1K模組其中 FPGA為 FG456包裝 XC3S400XC3S1000XC3S1500採用 eM_3S1K模組其中 FPGA為 FG456包裝 XC3S400XC3S1000XC3S1500採用 eM_3S1K模組其中 FPGA為 FG456包裝 XC3S50XC3S200XC3S400 採用 eM_3S50模組其中 FPGA為 TQ144包裝 XC95144XLXC95288XL 採用 eM_95XL模組其中 CPLD為 TQ144包裝 2採用 FG456包裝者可以控制所有的 IO界面 3採用 TQ144包裝者只是不能控制 RAM和 FlashROM而可以控制其他所有的界面 4所有 FPGA模組都可自由選擇由 USB界面或是由光纖界面下載電路但是 CPLD模組只能固定由 USB界面下載電路

5所有 FPGACPLD模組都可透過 26P接頭連接既有的各種實驗模組

81

FPGA 接腳對照表

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

mD0 XD6 mD0 A17 C13 -- -- mD1 XD7 mD1 B17 D12 -- -- mD2 XD8 mD2 C17 D11 -- -- mD3 XD9 mD3 D17 C11 -- -- mD4 XD10 mD4 E17 D10 -- -- mD5 XD11 mD5 E16 C10 -- -- mD6 XD12 mD6 E14 D9 -- -- mD7 XD13 mD7 E13 D7 -- -- mA0 XD14 mA0 D13 C7 -- -- mA1 XD15 mA1 C13 D6 -- -- mA2 XA0 mA2 V5 C3 -- -- mA3 XA1 mA3 U5 C4 -- -- mA4 XA2 mA4 Y2 D3 -- -- mA5 XA3 mA5 Y1 D4 -- -- mA6 XA4 mA6 V4 E3 -- -- mA7 XA5 mA7 V3 E4 -- -- mA8 XA6 mA8 W2 F3 -- -- mA9 XA7 mA9 W1 F4 -- -- mA10 XA8 mA10 T2 G6 -- -- mA11 XA9 mA11 T1 K3 -- -- mA12 XA10 mA12 R4 K10 -- -- mA13 XA11 mA13 R3 L3 -- -- mA14 XA12 mA14 R2 L4 -- -- mRD XRD mRD R1 D5 -- -- mWR XWR mWR P6 C6 -- --

POWER P0A0 POWER B4 B20 P1 P5 ALARM P0A1 ALARM A4 A19 P2 P6 RxNET P0A2 RxNET C4 B19 P4 P7 TxNET P0A3 TxNET C5 A18 P5 P9 RxUSB P0B0 RxUSB B5 A15 P6 P10 TxUSB P0B1 TxUSB A5 B15 P7 P11 RxCAN P0B2 RxCAN D6 A14 P8 P12 RxCAN P0B3 TxCAN C6 B14 P10 P13

CLK24M CLK24M CLK24M E12 B12 P124 P38

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

PWM0H P3A0 P0D0 E6 A8 P21 P23 PWM0L P3A1 P0D1 E5 B8 P23 P24 PWM1H P3A2 P0D2 C2 B6 P24 P25 PWM1L P3A3 P0D3 C1 A5 P25 P26 PWM2H P3A4 P0D4 D2 B5 P26 P27

82

PWM2L P3A5 P0D5 D1 A4 P27 P28 PWMenb P3A6 P0D6 E4 B4 P28 P30 PHT1Z P3A7 P0D7 E3 A3 P30 P31 PHT1A P3B0 P0D8 G2 C1 P31 P32 PHT1B P3B1 P0D9 G1 C2 P32 P33 PHT0A P3B2 P0D10 H5 D1 P33 P34 PHT0B P3B3 P0D11 J6 D2 P35 P35 AMP0 P3B4 P0D12 H4 E1 P36 P39 AMP1 P3B5 P0D13 H3 E2 P40 P40 AMP2 P3B6 P0D14 H2 F2 P41 P41 AMP3 P3B7 P0D15 H1 G1 P44 P43 eeSK P0C3 P1D0 C10 B9 P20 P22 eeCS P0C2 P1D1 D10 A9 P18 P21 eeDI P0C1 P1D2 F10 B10 P17 P20 eeDO P0C0 P1D3 E10 B11 P15 P19 ssCK P0B7 P1D4 E8 A11 P14 P17 ssCS P0B6 P1D5 E7 A12 P13 P16 ssDI P0B5 P1D6 A6 B13 P12 P15 ssDO P0B4 P1D7 B6 A13 P11 P14

ppCLK P3C0 P1D8 K4 G2 P46 P44 ppDIN P3C1 P1D9 K3 K1 P47 P45 TxD P3C2 P1D10 K2 K2 P50 P46 RxD P3C3 P1D11 K1 L1 P51 P48

tstLED P3C4 P1D12 L5 L2 P52 P49 stsLED P3C5 P1D13 L4 M1 P53 P50 RxLED P3C6 P1D14 L3 M2 P55 P51 TxLED P3C7 P1D15 L2 N1 P56 P52

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

xPA0 P2A0 P2D0 AA3 N2 P59 P53 xPA1 P2A1 P2D1 Y4 T1 P60 P54 xPA2 P2A2 P2D2 AA4 T2 P63 P56 xPA3 P2A3 P2D3 AB4 U2 P68 P57 xPC0 P2A4 P2D4 W5 V1 P69 P58 xPC1 P2A5 P2D5 Y5 V2 P70 P59 xPC2 P2A6 P2D6 AA5 W1 P73 P60 xPC3 P2A7 P2D7 AB5 W2 P74 P61

-- P2B0 P2D8 V6 Y1 P76 P64 -- P2B1 P2D9 V7 Y2 P77 P66 -- P2B2 P2D10 W6 AA3 P78 P68

mCS P2B3 P2D11 Y6 AB4 P79 P69 mA15 P2B4 P2D12 V9 AA4 P80 P70 mA16 P2B5 P2D13 V10 AB5 P82 P71 mA17 P2B6 P2D14 W10 AA5 P83 P74 mA18 P2B7 P2D15 Y10 AA6 P84 P75 CS0 P2C0 ADC0 AA10 AB8 P85 P76

83

SDIN0 P2C1 ADC1 AB10 AA8 P86 P77 CS1 P2C2 ADC2 U10 AB9 P87 P78

SDIN1 P2C3 ADC3 U11 AA9 P89 P79 SCLK P2C4 ADC4 V11 AB10 P90 P80 CS2 P2C5 ADC5 W11 AA10 P92 P81

SDOUT P2C6 ADC6 Y11 AB11 P93 P82 LDAC P2C7 ADC7 AA11 AA11 P95 P83

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

xPB0 P1A0 PxA0 M1 M3 P135 P85 xPB1 P1A1 PxA1 M2 M4 P132 P86 yPB2 P1A2 PxA2 M3 N3 P131 P87 yPB3 P1A3 PxA3 M4 N4 P130 P88 yPB1 P1A4 PxA4 M5 T4 P129 P91 yPB4 P1A5 PxA5 M6 T5 P128 P92 yPB0 P1A6 PxA6 N1 U3 P127 P93 yPB5 P1A7 PxA7 N2 U4 P125 P94 yPB6 P1B0 PxB0 U13 V3 P119 P95 yPB7 P1B1 PxB1 V13 V4 P118 P96 xPB2 P1B2 PxB2 W13 W3 P116 P97 xPB3 P1B3 PxB3 Y13 W4 P113 P98 xPB4 P1B4 PxB4 AA13 Y3 P112 P100 xPB5 P1B5 PxB5 AB13 Y4 P96 P101 yPC3 P1B6 PxB6 U12 Y5 P97 P102 yPC2 P1B7 PxB7 V12 W5 P98 P103 yPC1 P1C7 PxC0 AB17 W11 P108 P113 yPC0 P1C6 PxC1 AA17 Y11 P107 P112 yPA0 P1C5 PxC2 Y17 W10 P105 P111 yPA1 P1C4 PxC3 W17 Y10 P104 P110 yPA2 P1C3 PxC4 AB18 W9 P103 P107 yPA3 P1C2 PxC5 AA18 W8 P102 P106 xPB6 P1C1 PxC6 Y18 W6 P100 P105 xPB7 P1C0 PxC7 W18 Y6 P99 P104

84

eM_DEMO 模組

eM_DEMO 模組的電路配置圖如下

eM_USB 模組

數字型 LED

0 1 2 34 5 6 78 9 A BC D E F

燈號型 LED

44 鍵盤

ADC0 ADC1 DAC0 DAC1

LED 選擇KEY 選擇

其中

1eM_DEMO模組的基本功能包括 A將 xPAxPBxPC等 16個 IO訊號引出控制 LED和鍵盤電路 B將 ADDA訊號引出並放大成+-10V的工作範圍 2LED和鍵盤可以選擇三種模式由 LED和 KEY 兩組開關作選擇圖示如下

模式1

0123

模式2 模式3

0 1 2 34 5 6 78 9 A BC D E F

0123

3模式14鍵輸入並搭配 16點的 LED燈號顯示其中 16點 LED分別對映到 xPA[0~3]xPB[0~7]和 xPC[0~3] 4組按鍵分別對映到 xPC[0~3] 4模式24鍵輸入並搭配四個 7段式數字顯示其中 數字顯示由 xPA[0~3]作數字掃瞄而由 xPB[0~7]作 7段式 LED控制 4組按鍵 分別對映到 xPC[0~3] 5模式316鍵輸入並搭配四個 7段式數字顯示其中 數字顯示由 xPA[0~3]作數字掃瞄而由 xPB[0~7]作 7段式 LED控制 16組按鍵由 xPA[0~3]作鍵盤掃瞄而由 xPC[0~3]作鍵盤讀取 6根據VHDL與數位邏輯設計的章節其中 第 1章至 10章的實驗採用模式1而 第 11章實驗採用模式2而 第 12章之後的實驗都採用模式3

85

FPGA UCF 定義

eM_3S1K 模組

NET CLK LOC = B12

NET XAlt0gt LOC = N2

NET XAlt1gt LOC = T1

NET XAlt2gt LOC = T2

NET XAlt3gt LOC = U2

NET XBlt0gt LOC = M3

NET XBlt1gt LOC = M4

NET XBlt2gt LOC = W3

NET XBlt3gt LOC = W4

NET XBlt4gt LOC = Y3

NET XBlt5gt LOC = Y4

NET XBlt6gt LOC = W6

NET XBlt7gt LOC = Y6

NET XClt0gt LOC = V1

NET XClt1gt LOC = V2

NET XClt2gt LOC = W1

NET XClt3gt LOC = W2

NET YAlt0gt LOC = W10

JP4 接頭

NET YAlt1gt LOC = Y10

NET YAlt2gt LOC = W9

NET YAlt3gt LOC = W8

NET YBlt0gt LOC = U3

NET YBlt1gt LOC = T4

NET YBlt2gt LOC = N3

NET YBlt3gt LOC = N4

NET YBlt4gt LOC = T5

NET YBlt5gt LOC = U4

NET YBlt6gt LOC = V3

NET YBlt7gt LOC = V4

NET YClt0gt LOC = Y11

NET YClt1gt LOC = W11

NET YClt2gt LOC = W5

NET YClt3gt LOC = Y5

在光碟片中 RFFPGAVHDLDEMOBIT3S1K 裡有 VHDL 與數位邏輯設計書本範例原始檔與合成檔

86

eM_3S50 模組

NET CLK LOC = P124

NET XAlt0gt LOC = P59

NET XAlt1gt LOC = P60

NET XAlt2gt LOC = P63

NET XAlt3gt LOC = P68

NET XBlt0gt LOC = P135

NET XBlt1gt LOC = P132

NET XBlt2gt LOC = P116

NET XBlt3gt LOC = P113

NET XBlt4gt LOC = P112

NET XBlt5gt LOC = P96

NET XBlt6gt LOC = P100

NET XBlt7gt LOC = P99

NET XClt0gt LOC = P69

NET XClt1gt LOC = P70

NET XClt2gt LOC = P73

NET XClt3gt LOC = P74

NET YAlt0gt LOC = P105

JP4 接頭

NET YAlt1gt LOC = P104

NET YAlt2gt LOC = P103

NET YAlt3gt LOC = P102

NET YBlt0gt LOC = P127

NET YBlt1gt LOC = P129

NET YBlt2gt LOC = P131

NET YBlt3gt LOC = P130

NET YBlt4gt LOC = P128

NET YBlt5gt LOC = P125

NET YBlt6gt LOC = P119

NET YBlt7gt LOC = P118

NET YClt0gt LOC = P107

NET YClt1gt LOC = P108

NET YClt2gt LOC = P98

NET YClt3gt LOC = P97

在光碟片中 RFFPGAVHDLDEMOBIT3S200 裡有VHDL與數位邏輯設計書本範例原始檔與合成檔

87

eM_95XL 模組

NET CLK LOC = SPIN38

NET XAlt0gt LOC = SPIN53

NET XAlt1gt LOC = SPIN54

NET XAlt2gt LOC = SPIN56

NET XAlt3gt LOC = SPIN57

NET XBlt0gt LOC = SPIN85

NET XBlt1gt LOC = SPIN86

NET XBlt2gt LOC = SPIN97

NET XBlt3gt LOC = SPIN98

NET XBlt4gt LOC = SPIN100

NET XBlt5gt LOC = SPIN101

NET XBlt6gt LOC = SPIN105

NET XBlt7gt LOC = SPIN104

NET XClt0gt LOC = SPIN58

NET XClt1gt LOC = SPIN59

NET XClt2gt LOC = SPIN60

NET XClt3gt LOC = SPIN61

NET YAlt0gt LOC = SPIN111

JP4 接頭

NET YAlt1gt LOC = SPIN110

NET YAlt2gt LOC = SPIN107

NET YAlt3gt LOC = SPIN106

NET YBlt0gt LOC = SPIN93

NET YBlt1gt LOC = SPIN91

NET YBlt2gt LOC = SPIN87

NET YBlt3gt LOC = SPIN88

NET YBlt4gt LOC = SPIN92

NET YBlt5gt LOC = SPIN94

NET YBlt6gt LOC = SPIN95

NET YBlt7gt LOC = SPIN96

NET YClt0gt LOC = SPIN112

NET YClt1gt LOC = SPIN113

NET YClt2gt LOC = SPIN103

NET YClt3gt LOC = SPIN102

在光碟片中 RFFPGAVHDLDEMOSVF95288XL 裡有VHDL與數位邏輯設計書本範例原始檔與合成

檔案

88

eM_FPGA 模組

NET CLK LOC = E12

NET XAlt0gt LOC = AA3

NET XAlt1gt LOC = Y4

NET XAlt2gt LOC = AA4

NET XAlt3gt LOC = AB4

NET XBlt0gt LOC = M1

NET XBlt1gt LOC = M2

NET XBlt2gt LOC = W13

NET XBlt3gt LOC = Y13

NET XBlt4gt LOC = AA13

NET XBlt5gt LOC = AB13

NET XBlt6gt LOC = Y18

NET XBlt7gt LOC = W18

NET XClt0gt LOC = W5

NET XClt1gt LOC = Y5

NET XClt2gt LOC = AA5

NET XClt3gt LOC = AB5

NET YAlt0gt LOC = Y17

JP4 接頭

NET YAlt1gt LOC = W17

NET YAlt2gt LOC = AB18

NET YAlt3gt LOC = AA18

NET YBlt0gt LOC = N1

NET YBlt1gt LOC = M5

NET YBlt2gt LOC = M3

NET YBlt3gt LOC = M4

NET YBlt4gt LOC = M6

NET YBlt5gt LOC = N2

NET YBlt6gt LOC = U13

NET YBlt7gt LOC = V13

NET YClt0gt LOC = AA17

NET YClt1gt LOC = AB17

NET YClt2gt LOC = V12

NET YClt3gt LOC = U12

在光碟片中 RFFPGAVHDLDEMOBIT2V250 裡有VHDL與數位邏輯設計書本範例原始檔與合成檔

89

Page 10: RFFPGA 直流馬達實驗手冊juniortek.com.tw/program/manual/RF-DC-mal.pdf · em_demo模組 em_dcm 直流伺服馬達 dc電源 rffpga 系統的直流馬達實驗規劃 其中包括:

PWM 啟動保護

在系統開機時很不容易保證各個元件都能依照順序依序啟動因此在系統啟動時必須

自動將 PWM 輸出關掉直到系統完成整個開機程序後才能再將 PWM 訊號重新啟動一

般而言啟動程序如下

1系統開機後功率驅動級通常最快啟動這時 PWM必須保持在 OFF 狀態避免系

統誤動或短路 2之後依次啟動 BIOSLinux網路最後才啟動應用程式 3應用程式啟動後必須依序 A下載 FPGA B下載 DSP控制軟體 C啟動 DSP控制軟體 在啟動 DSP控制軟體後才能重新開啟 PWM的動作 4任何時間中只要 DSP控制停止就必須立刻關閉 PWM控制以避免誤動或短路

所以 PWM 啟動保護是由 DSP 程式直接控制其必要程序包括

1FPGA電路下載完畢並執行工作中 2DSP程式下載完畢並執行工作中

其中任何一個部分停止都必須立刻關閉 PWM 控制一般而言這部分電路都由看護犬

(watch-dog)電路管理而由 DSP 程式負責驅動

DCM 實驗模組

DCM 模組是一個完整的直流馬達實驗機台系統方塊圖如下

YA1

切換保護

YA2

YC0

馬達

PHTA PHTB

PWM+

DIS

YA0 PWM-

+12VSW

YC1

JP4 A

AB

B

雙向控制

光電盤

A

B

其中

1採用雙向控制的 PWM功率驅動級來驅動直流馬達可控制馬達正反轉 2功率驅動級中已有切換保護其控制訊號包括

10

PWM+ PWM- DIS 直流馬達 X X 1 OFF 1 0 0 正電壓驅動 0 1 0 負電壓驅動

3功率驅動級中並沒有啟動保護所以必須附加電源開關作手動控制 4馬達轉角由光電盤的 AB相訊號作回授 5所有控制訊號都經由 JP4接頭接到 RFFPGA控制器中可由 FPGA作控制

三角波產生器

實驗中以中間對齊型的 PWM 訊號為控制目標首先建立對稱的三角波作為參考訊號其

對映的 VHDL 程式範例如下

TRIANGLE_WAVE block signal Q STD_LOGIC_VECTOR (11 downto 0) signal CEDIR STD_LOGIC begin process (CLKRESET) -- sequential logic begin if RESET=1 then --reset Qlt=000000000111 --reset to 7 elsif CLKevent and CLK=1 then --CLK=gt1 trigger if CE=1 then --clock enable if DIR=0 then Qlt=Q+1 --up counter else Qlt=Q-1 --down counter end if end if end process -- combinational logic CE lt= SYSTEM(0) --24MHz clock DIR lt= SYSTEM(13) --4KHz square wave REF lt= Q --12-bit reference (7~3079) end block TRIANGLE_WAVE 其中

1程式設計為可適用於不同的系統時鐘包括 49152MHz和 24576MHz 兩種型式 2計數器的基本頻率為 24576MHz所以用 CE=SYSTEM(0)來控制計數動作 3三角波的頻率設為 4KHz所以計數器的峰值為(2457642=3072) 4正反計數器和系統時序同步而以 SYSTEM(13)做為同步控制由於 SYSTEM(13)為 4KHz的方波設定 DIR=SYSTEM(13)即可控制計數器的上升或下降

5在 RESET時將計數器的初值設為 7使得計數範圍修正為 7~3079所以即使有些同步誤差也不會產生負數輸出的嚴重影響

6三角波以 REF[12]作輸出數值範圍在 7~3079之間頻率為 4KHz

11

如果 PWM 的頻率過低馬達端會產生震動噪音這時就必須提高 PWM 的頻率在前面程

式中如果要將 PWM 頻率從 4KHz 提升為 8KHz則可更改如下

if DIR=0 then Qlt=Q+2 --up counter else Qlt=Q-2 --down counter DIR lt= SYSTEM(12) --8KHz square wave 其中

1將 DIR改由 8KHz的 SYSTEM(12)來控制 2同時將計數器改成+2-2的正反計數器 3如此仍然能夠維持 REF輸出的數值範圍(7~3079)

如果還要再將 PWM 的頻率提高到 16KHz則可更改如下

if DIR=0 then Qlt=Q+4 --up counter else Qlt=Q-4 --down counter DIR lt= SYSTEM(11) --16KHz square wave 其中

1將 DIR改由 16KHz的 SYSTEM(11)來控制 2同時將計數器改成+4-4的正反計數器 3如此仍然能夠維持 REF輸出的數值範圍(7~3079)

表面上三角波產生器的數值精度為 12-bit時間精度為 24MHz但是由於 PWM 訊號將

透過 FPGA2 輸出而高速串列界面的更新速度為 15MHz所以就 DCM 模組所收到的 PWM

控制訊號而言其時間精度將降低為 15MHz而數值上的精度將降低為 8-bit等效範

圍為 0~192 或是+-96 之間整體而言控制上的精度約為 05仍可符合馬達控制的

需求

PWM 波形產生器

接著處理比較的動作並產生 PWM 波形對映的 VHDL 程式範例如下

PWM_COMPARATOR block signal CEPUPD STD_LOGIC signal D0D1D2D3D4 STD_LOGIC begin process (CLK) -- sequential logic begin if CLKevent and CLK=1 then --CLK=gt1 trigger if CE=1 then --CLK enable D4lt=D3 D3lt=D2 D2lt=D1 D1lt=D0 --delay end if end if

12

end process -- combinational logic CE lt= CLK1M D0 lt= 1 when CMDgtREF else 0 --PWM generation PU lt= D1 and D2 and D3 and D4 --up-side output PD lt= not D1 and not D2 and not D3 and not D4 --down-side output PWMU lt= PU --up-side PWM output PWMD lt= PD --down-side PWM output PWMI lt= (not PU and not PD) or not ENB --PWM disable PWMR lt= REF --PWM reference end block PWM_COMPARATOR

程式中所對映的時序如下

CE

REF

CMD

D1D2D3D4PWMUPWMDPWMI

其中

1以 15MHz的 CE訊號為基本頻率 2將電壓命令 CMD和參考波形 REF作比較若 CMDgtREF則設定 D0=0否則設定

D0=1 3將 D0訊號作四次的延遲處理延遲訊號依序為 D1D2D3D4最後再重新組合成

PWM的輸出波形 4其輸出訊號包括 PWMU對映到 DCM模組中的 PWM+訊號 PWMD對映到 DCM模組中的 PWM-訊號 PWMI對映到 DCM模組中的 DIS訊號為切換保護訊號 如此 PWMU作動和 PWMD作動之間將有 2us間隔中是兩者都不作動的也就是

PWMI的作動時間 5當 ENB命令=0時設定 PWMI=1而使得驅動器 OFF

13

回授訊號的處理

精密的伺服馬達動作必須將馬達的位置和速度加以量測後再執行回授控制因此速

度和位置的量測是精密控制中必要的一環我們通常用光電寫碼器或數位尺來進行量測

工作

光電寫碼器(Photo-Encoder)俗稱光電盤是利用光電量測進行的非接觸式數位量測元

件其基本裝置如下

LED光源

光電晶體偵測

以 LED 或是其他光源來發光而用 AB 相的兩組光電晶體來偵測當圓盤隨著馬達作轉

動時光電晶體即可偵測到其移動狀態由於圓盤中的小孔呈等距排列其透光部分和

不透光部分呈 50對 50的比例當圓盤轉動時光電晶體端就可以偵測到下述訊號

光電盤訊號(A 相)

光電盤訊號(B 相)

正轉

其中

1偵測方波的頻率即對應於圓盤轉動的頻率也就是轉速 2偵測方波的個數即對應於圓盤轉過的孔數也就是轉角(相對角度) 3由於 AB相的兩組光電晶體在機械安裝上的角度不同使得讀出訊號也有 90 度的

差異如果馬達正轉則 A相超前如果馬達反轉則 B相超前

有了兩相的光電盤訊號只要能偵測其中的相位變化就可以分辨光電盤的正反轉運動

了例如正轉時的光電盤時序如下

14

光電盤訊號 (A 相 )

光電盤訊號 (B 相 )

正轉

微分訊號(A+)

微分訊號(A-)

微分訊號(B+)

微分訊號(B-)

正轉脈衝(CW)

其中

1針對 AB 兩相訊號作微分處理即可取得 A+A-B+B-的上緣微分和下緣微分 2將微分訊號和和原有的 AB相訊號作比較即可找出正轉脈衝 3計算正轉脈衝的頻率和個數即可取得馬達的速度和轉角 4如此得到的脈衝數將是原有 AB相頻率的四倍所以稱之為乘四解碼電路

同樣的如果針對光電盤的反轉時序一樣可以得出反轉訊號圖示如下

光電盤訊號(A相)

光電盤訊號(B相)

反轉

反轉脈衝(CCW)

其公式如下

CW lt= (A+ and not B) CCW lt= (A+ and B) or (A- and B) or (A- and not B) or (B+ and A) or (B+ and not A) or (B- and not A) or (B- and A)

整合光電盤回授的處理其系統方塊圖如下

數位濾波

D Q

CK

DLA

PHA

D Q

CK

DLB

PHB

CLK

乘四解碼電路

DIR

PLS

數位濾波

PA

PB

正反計數

CNT DB

RD

CS

包括

15

1首先利用簡單的數位濾波器將 AB項的雜訊排除 2接著利用延遲電路作微分處理並以乘四解碼電路解出轉動的脈波和方向 3最後利用正反計數器作計數並將計數值讀入匯流排

數位濾波器

光電盤的 AB 相訊號中如果產生雜訊干擾的現象會使得馬達轉角的計量上產生永久

性的累積誤差將造成控制上無法彌補的錯誤所以 AB 相訊號上的雜訊一定要盡力排

除下面是常用的數位濾波器設計範例

FILTER_A block -- digital filter for A signal CED0D1D2 STD_LOGIC begin process (CLK) -- sequential logic begin if CLKevent and CLK=1 then --CLK=gt1 trigger if CE=1 then --clock enable D2lt=D1 D1lt=D0 D0lt=PA --delay 3 clocks PHA lt= (D0 and D1 and D2) or ((D0 or D1 or D2) and PHA) end if end if end process -- combinational logic CE lt= CLK1M --15MHz clock end block FILTER_A 其中

1以 15MHz的頻率為控制基準 2利用延遲電路依序產生 D0D1D2的延遲訊號 3連續三個 1(D0D1D2 都是 1)定義為 1連續三個 0(D0D1D2 都是 0)定義為 0而其他不連續的 10 都定義為雜訊如此可將高頻的雜訊濾除

4但是相對的AB相訊號的最高頻率將限制為 250KHz(連續 3個 1和連續 3個 0)頻率過高的 AAB相訊號將被視為雜訊而不處理必須特別注意

正反轉的解碼和計數

依據前面的公式說明對映的 VHDL 程式範例如下

DECODER block signal DLADLB STD_LOGIC begin process (CLK) -- sequential logic begin if CLKevent and CLK=1 then --CLK=gt1 trigger DLAlt=PHA DLBlt=PHB --delay 1-clock end if end if

16

end process -- combinational logic DIR lt= (not PHA and DLA and not PHB) or ( PHA and not DLA and PHB) or (not PHB and DLB and PHA) or ( PHB and not DLB and not PHA) PLS lt= (not PHA and DLA) or (PHA and not DLA) or (not PHB and DLB) or (PHB and not DLB) end block DECODER 其中

1PHAPHB為經過雜訊濾波後的 AB相訊號而 DLADLB是其延遲訊號 2根據乘四解碼電路的公式取得 DIR和 PLS訊號其中 DIR用以控制計數器的正反向 PLS用以控制計數器的計數與否

所以接下去就是正反計數器的設計範例如下

COUNTER block signal Q STD_LOGIC_VECTOR(11 downto 0) begin process (CLKRESET) -- sequential logic begin if RESET=1 then --power-on reset Qlt=000000000000 --reset to 0 elsif CLKevent and CLK=1 then --CLK=gt1 trigger if PLS=1 then --clock enable if DIR=1 then Qlt=Q-1 --down counter else Qlt=Q+1 --up counter end if end if end if end process -- combinational logic CNT lt= Q --counter output end block COUNTER 其中

1這是標準的正反計數器架構在開機時自動復歸 2計數器的長度為 12-bit可依需要自行調整

DCM模組中的光電盤精度為每圈500格經過乘四解碼後相當於每圈2000格所以12-bit

計數器只能處理 2 圈的應用範圍絕對不夠在真正應用時一定要用軟體或硬體的方

式再擴張成 16-bit 或是 32-bit 的寬度來處理才行

17

3實驗項目

在直流伺服馬達控制系統中規劃五個實驗項目由系統首頁做選擇每項實驗操

作整個系統實驗組成由各項實驗項目 CAI 檔及各項實驗項目程式連結 PLC 檔結合而成茲表列如下

直 流 伺 服 實 驗 e x p _d c m c ai

開 環 路 電 壓 控 制

系 統 首 頁 實 驗 程 序

e x p _p w m c ai

開 環 路 速 度 控 制 e x p _s p ee d c a i

閉 環 路 位 置 控 制 e x p _a n gl e c a i

加 減 速 的 位 置 控 制 e x p _a c c c ai

正 弦 波 位 置 控 制 e x p _s i n c ai

C A I 圖 控 檔

直 流 伺 服 實 驗 開 環 路 電 壓 控 制

系 統 首 頁 實 驗 程 序

e x p _p w m p lc

開 環 路 速 度 控 制 e x p _s p ee d p l c

閉 環 路 位 置 控 制 e x p _a n gl e p l c

加 減 速 的 位 置 控 制 e x p _a c c p lc

正 弦 波 位 置 控 制 e x p _s i n p lc

e T T Y 批 次 檔

18

4安裝程序

31 將 RFFPGA中的程式拷貝至工作硬碟中進入 DC子目錄資料夾中其中包含下

列檔案

檔案 內容說明 mod SIN_wave MODPWM_wave MODIIR1_filter MODDAS4

MODPOS_inputMODPWM_outputMODACC_controlMODPD_controlMOD這些檔案是由 ASM重新編譯出由 testDCMmem所需執行模組檔

asm SIN_waveasmPWM_waveasmIIR1_filterasmDAS4asm POS_inDCMasmPWM_outDCMasmACC_conDCMasmPD_controlasm是各模組組合語言所設計 SOURCE檔

plc 為進行實驗所需的各批次檔 bit piDSPv0bit為下載到 FPGA的 BIT檔其功能為將 FPGA規劃成

具備 piDSP控制晶片功能提供直流伺服控制所需的控制程式

撰寫 testDCMsys 記載進行 DCM實驗時所需的模組 testDCMMEM 連結完成的 DSP執行檔用來進行 DCM實驗 testDCMvar 紀錄 DCM實驗時的參數對照表

在進行實驗前先將實驗所需的系統程式與模組程式分別說明加以說明系統所

需的程式模組由 testDCMsys 來描述程式列印如下

module fg1 PWM_wavemod 方波產生器

module fg2 SIN_wavemod 弦波產生器

module cn1 ACC_controlmod 加減速控制器

module cn2 PD_controlmod 比例微分控制器

module io1 POS_inputmod 位置和速度讀值

module io2 PWM_outputmod PWM 電壓輸出界面

module ft1 IIR1_filtermod 一階濾波器

module das das4mod 示波器資料蒐集

module io3 LEDKEYmod LEDKEY 界面

其中包括

1兩組波型產生器作為測試命令包括正弦波和方波 2兩組控制器提供包括加減速PD控制器的功能可依照實驗需求搭配使用 3兩組輸入輸出界面執行 PWM輸出和相位回授的界面處理 4一組低通濾波器作為電壓開迴路控制迴路和速度閉迴路控制的模擬使用 5DAS4mod是示波器專用的配合模組不論任何實驗都必須加入此模組 6Ledmod是四位數字七段顯示與 44矩陣按鍵模組

19

5執行程序

首先進入 RFFPGA 裡子目錄 DC直接點選 fPLCexe 出現下面操作畫面(也可直接將此檔

案放置桌面直接點選)

進入下面操作畫面

20

首先使用滑鼠在 FPGA下載按鈕單擊動作使 FPGA變成 piDSP晶片 如您撰寫組合語言時可使用 eASM按鈕 經編譯完成後產生MOD檔 如您撰寫系統連結程式時可使用 eLINK按鈕 經連結完成後產生MEM與VAR檔 點選實驗三後顯示如下 選擇程式下載再按程式啟動這時直流伺服馬達開始做位置控制在操控畫面放置 P 參數設定欄更改參數時馬達即時隨參數改變而產生不同響應 直接點選程式停止時結束所有控制動作再按回首頁選擇其他實驗

21

6實驗說明

下圖所示為直流馬達的控制系統方塊圖透過電流速度以及位置的回授再搭

配適當的控制器可建立完整的閉迴路控制系統在後面的實驗中將依此一系統方塊圖

逐步建立速度和位置的控制實驗各實驗的說明和操作方式及參考實驗結果將逐一進

行詳細的說明

控制

參考位置

速度 位置速

度控制 電流控制

電力電

子換流

位置速

度感測

i

+ -

壓ν

位置

速度

i

DC直流馬達之控制系統方塊圖

PWM 驅動方式只是簡單的開環路控制而高精度的馬達控制必須透過回授控制來完成

對於邏輯電路的設計者而言必須先瞭解基本的回授控制架構以便將來轉換成實用的

邏輯電路設計

設計說明

開環路特性

在電壓驅動的狀況下直流馬達開環路控制的示意圖如下

+-

22

如果換算成數學模式則轉換成下面的架構

+-Vc

R L

EMF

+

-

ITB

J

ω

其中

1其中的變數和參數包括 Vc 控制的電壓命令 R 電樞迴路的等效電阻 L 電樞迴路的等效電感 EMF電樞產生的反電動勢 i 電樞迴路中的電流 T 馬達所產生的扭力 J 馬達和負載的等效慣量 B 馬達和負載的等效摩擦力 ω 馬達所產生的速度 2所牽涉的物理公式包括 電壓迴路Vc = Ri + L(didt) + EMF 即電樞迴路中的電壓平衡 動力負載T = Bω + J(dωdt) 即扭力平衡 馬達特性T = Kti 所產生的扭力和電流成正比 電機特性EMF= Keω 所產生的電動勢和轉速成正比 其中新增的參數包括 Kt馬達的扭力常數 Ke馬達的反電動勢常數 3將微分項作拉式轉換(Laplase Transformation)的對映即 s = ddt 可將微分方程式轉換成更簡單的代數方程式而產生到下面的控制方塊圖

sL+R1Vc

+-EMF

iKt

TsJ+B1 ω

Ke

4在直流馬達的開環路特性中控制電壓(Vc)時輸入點而馬達轉速(ω)是輸出點即是控制馬達電壓以控制馬達轉速

5基本上馬達的開環路特性是個兩階系統類似於低通濾波器的特性在許多應用 場合其開環路特性還可以再簡化成一階系統方塊圖如下

23

sτ +1

KmVc ω 其中 τ一階系統的時間常數 Km一階系統的穩態增益

採用兩階系統的分析方式雖然會比較精細但是用一階系統來分析則可簡化所有的設計

過程因為這裡的實驗重點是邏輯設計所以在本章中我們都用一階系統作分析

系統響應的要求

就控制系統而言最重要的需求就是系統響應包括

穩態特性通常以穩態誤差為指標即是穩態時系統輸出和輸入之間的差異 暫態特性通常以上升時間(Rise Time)和過越比率(Overshoot)為指標

一個理想中的伺服控制系統其系統響應應該是

1穩態誤差為 0即馬達輸出將追隨輸入作變化沒有誤差 2過越比例為 0即馬達輸出絕對不會產生衝過頭的現象 3上升時間為 0即馬達輸出隨時追上輸入命令不會有控制上的延遲現象

當然這是太理想了一個合理的伺服控制系統應該是

1穩態誤差越小越好最好為 0 2過越比例越小越好最好為 0 3上升時間越短越好當然無法為 0但是盡力就是了

速度的回授控制

回授控制的目的就是為了改善系統響應以一階系統代表的馬達控制為例

sτ+1

KmVc ω

在步階響應(Step Response)時其特性如下

1穩態誤差由 Km決定 2過越比例為 0 3上升時間即是其時間常數(τ)

如果用比例控制器(P 控制器)作速度回授的控制則控制方塊圖如下

sτ+1

KmVc ωKp

err

P控制器 直流馬達ωc

速度回授

速度命令 + 速度響應-

24

其中

1速度命令並不直接控制馬達的驅動電壓而是 A將速度命令和速度回授相比找出其誤差訊號 err B依誤差訊號來控制驅動電壓 誤差越大則驅動電壓越高 誤差越小則驅動電壓越低 誤差為負則驅動電壓也為負 其中的比例關係由 P控制器中的 Kp 來調整 2經由數學分析後其步階響應的特性為 A穩態誤差變成 1(1+kpkm)如果 kpkmgtgt1則穩態誤差將趨近於 0 B過越比例仍為 0 C上升時間即是由τ變成τ(1+kpkm)所以上升時間將變短 3換句話說只要 Kp值夠大不論是穩態誤差或是上升時間都會大幅改善

理論上P控制器的增益是越高越好最好是無限大但是實際上是有限制的原因是

1馬達的開環路特性是兩階系統而非一階系統一階系統只是簡化後的結果 2當兩階系統作高增益的回授控制時當增益過高時會產生極嚴重的過越現象使得

馬達產生巨幅震動而難以控制

所以 P控制器的增益雖然是越高越好但調整時仍要小心維持(過越比例為 0)的條件

轉角的回授控制

做為馬達的速度控制P控制器的效果不錯但是如果將 P控制器應用到馬達的轉角控

制其特性就不太理想圖示如下

sτ+1

KmVc ωKp

err

P控制器 直流馬達

θc

轉角回授

轉角命令 + 轉角響應-

s1 θ

其中

1從馬達的速度到轉角之間具有積分特性即 馬達的轉角是馬達速度的積分結果而 馬達的速度是馬達轉角的微分結果而 2其中的積分特性使得整個系統由一階特性變成兩階特性在兩階系統中當設定高

增益時會產生極嚴重的過越現象使得馬達產生巨幅震動而難以控制 3在 P控制器增益無法提高的狀況之下轉角控制效果將無法獲得改善

雖然 P控制器在轉角控制上的效果並不好但是在控制系統中還是有許多法寶可以選擇

25

其中 PD 控制器就是簡單又有效的一個好方法

從表面上來看PD 控制器比 P控制器多了一個微分項就數學上來看這微分項提供了

一個新零點(Zero)可以調整根軌跡圖的走向就實驗上來說這微分項提供了控制器

的預測功能說明如下

sτ+1

KmVc ωKp+sKd

err

P控制器 直流馬達

θc

轉角回授

轉角命令 + 轉角響應-

s1 θ

1轉角控制中 P控制器的問題是在嚴重的過越現象原因是在 P控制器的作用下只有當回授超過命令時才能做出「負向」的控制但這時已經來不及了因為積分器

中已經累積了過多的能量而無法立刻消失使得馬達轉角衝過了頭 2解決之道就是在回授超過命令之前就必須做出「負向」的控制使得積分器累積

的能量逐步減弱在到達目標時才能立刻煞車才能解除過越現象 3而微分項就是這個預測量因為當誤差量越來越小時其微分項是負值雖然微分

項(D)是負值 當誤差量(P)很大時(P+D)的結果還是正值所以還是「正向」控制 當誤差量(P)漸小時(P+D)的結果變成負值才會開始「負向」控制 換句話說在誤差為 0之前即可啟動負向控制產生煞車作用使得馬達提前減速

而即時停止在目標點上自然就解除過越現象了

所以在 PD 控制器中有兩項調整量其中

1Kp增益提供比例控制部分的增益而 Kd增益提供微分控制部分的增益 2Kp增益控制馬達的趨近速度主要影響的是上升時間 3Kd增益控制馬達的提前煞車主要影響的是過越比例 4在兩者搭配下就有機會得到 很快很短的上升時間同時也 不會產生過越現象

PD 控制器的執行

依據 PD 控制器公式可以建立以數位執行的 PD 控制器如下圖所示

cmdKp

fdk

+

-

err

old

+-

Kd

Z-1

out+

+

26

其中

1利用差分公式來取代 PD控制器中的微分公式定義如下 s ==gt (1-Z-1)DT 其中對映的變數包括 s 微分項 Z-1延遲一個抽樣週期 DT抽樣週期單位為 sec 2就執行面而言Z-1是延遲一個抽樣週期也就是以抽樣週期所控制的暫存器 3在上圖中將命令(cmd)和回授(fdk)相減後得到誤差值(err)再將 err延遲一個抽樣週期成為 old所以(err-old)DT即是微分項

4原始的微分控制公式為(err-old)DTKd必須先除再乘但是因為 DT和 Kd 都是常

數可以預先將 Kd修正成 Kd=(KdDT)那麼公式將修正為(err-old)Kd就只需要一個乘法而不需要除法了

同樣的 PD 控制器可以用許多不同的方法作執行包括

1以軟體方式執行例如在 DSP核心中以組合語言撰寫控制模組 2以硬體方式執行例如在 FPGA中直接設計邏輯電路 3以微碼方式執行以微碼作順序控制執行硬體運算工作

這裡先提供用組合語言撰寫的程式模組作為設計參考其他兩種方法將在後續的實驗中

再陸續作說明

模組程式範例PD_controlasm

local cmd R0 IP gnd 輸入點位置命令(可忽略) local fdk R1 IP gnd 輸入點位置回授(可忽略) local out R2 OP 輸出點用以控制速度迴路 local kp R3 256 參數增益 kp10=256 local kd R4 0 參數增益 kd10=256 local err R5 0 內部變數 local old R6 0 內部變數 local gnd R7 0 無輸入時的短路點 data 8 模組變數區長度 initial 開機啟動程序 WR out0 WR old0 RET out=old=0 timer 即時控制程序 RD (cmd) SUB (fdk) WR err MUL kp SFR 8 P=(cmd-fdk)kp256 RDS err SUBX old MUL kd SFR 8 D=(err-old)kd256 ADDS WR out out=P+D RET

27

其中

1PD控制模組中對外的界面變數包括 cmd命令的輸入點 fdk回授的輸入點 out控制的輸出點 2內部參數包括 Kp比例控制增益其中 10=256所以乘完後還需要再右移 8-bit Kd微分控制增益其中 10=256所以乘完後還需要再右移 8-bit 3內部變數包括 err臨時性的變數用以儲存誤差值的計算結果 old儲存性的變數用以儲存上一次抽樣控制時的 err值 4模組程式分成三部分包括 變數宣告local和data所宣告的部分 初值設定initial程序中先將 out和 old設定為 0 即時控制timer程序中依序執行 PD控制器中的每個步驟

控制目標的選擇

從字面上來看速度控制就是控制馬達的速度轉角控制就是控制馬達的轉角沒什麼

好討論的但是實際上確有許多問題第一的問題就是什麼是速度和轉角馬達的速

度和轉角如果不作量測如何得知

既然在量測中取得了速度和轉角資料那麼我們所控制的到底是物理學上的速度和轉

sτ+1

KmVc ωKp+sKd

err

P控制器 直流馬達

θc

轉角回授

轉角命令 + 轉角響應-

s1 θ

KxANG

轉角量測

角還是量測上的速度和轉角以下圖為例

其中

1以轉角量測裝置量測轉角例如裝在馬達軸端的光電盤和解碼電路 2轉角的量測輸出是 ANG而 ANG和物理轉角θ之間有 Km的增益關係 3只要 Km值不是 1那麼系統就不再是單位回授 4如果 Km還有非線性或失真現象那麼控制結果也將有非線性或失真現象

這些問題混雜起來會使得控制系統的分析變得更複雜如果要簡單處理就要認同現

實環境直接以量測結果為控制目標如下圖所示

28

sτ+1

KmVc ωKp+sKd

err

P控制器 直流馬達

θc

轉角回授

+-

s1 θ Kx

ANG轉角量測

其中

1直接以量測結果為控制目標將全系統還原成標準的單位回授控制 2所有的非線性或失真現象都進入開環路討論屬於可以補償的部分 3但是控制結果就是「量測上的轉角」而「物理學上的轉角」

量測誤差的問題

轉角θ

量測ANG

對於量測誤差而言最明顯的問題就是量化誤差圖示如下

其中

1以 DCM模組中的光電盤為例精度為每圈 500格經由乘四解碼計數後其等效

精度增加為每圈 2000格 2比(12000)圈更精密的部分都無法響應換句話說振幅越大的控制其相對誤差越

小而振幅越小的控制其相對誤差越大例如 當振幅為(12)圈時其控制誤差量為 01而 當振幅為(120)圈時其控制誤差量為 1 這是標準的的非線性現象

量化誤差不只影響穩態上的精度還會造成非線性的震動問題圖示如下

t

誤差值

+1

-1

其中

1由於量化誤差的問題只有當誤差超過+1或是-1時才會真正偵測到誤差也才

29

會施加控制量作補償 2所以穩態時的誤差將在+1-1之間擺動造成微幅的振動 3量化誤差越大震動越明顯而量化誤差很小時通常不易察覺出震動現象

微分量的計算

伺服系統中有兩處需要用到微分計算包括

1PD控制器中誤差微分量的計算 2速度控制器中速度回授值的量測

在理論上微分公式是(dXdt)相當於 dXdt = (X(n)-X(n-1))DT (當 DT趨近於 0時)

所以當微分計算中的抽樣週期(DT)越短時微分的計算值將越接近理論值但是事實上

卻非如此以下圖為例

t

X

DTDX

其中

1當 X值為等速度運動時其微分量就是其斜率相當於 DXDT 2DT是微分計算中的抽樣週期理論上越短越好但是由於 DX本身的量化誤差

使得這個原則不再成立例如當斜率為 7394時 若 DT=1000則 DX=7394而 DXDT=7394 若 DT=100 則 DX=739 而 DXDT=739 若 DT=10 則 DX=73 而 DXDT=73 若 DT=1 則 DX=7 而 DXDT=7 3換句話說當抽樣週期越短時DX的量化誤差將越明顯而造成微分計算上更嚴

重的誤差

在 DCM 模組中速度量測的量化誤差分析如下

1馬達上的光電盤精度為每圈 500格經過乘四解碼後等效精度為每圈 2000格 2當馬達轉速為 1200RPM而抽樣頻率為 1KHz時對映的速度量測值為 1200(圈分)2000(格圈)60(秒分)1000(DT秒) = 40(格DT) 3換句話說1200RPM的轉速對映到 40的速度量測值即速度單位=30RPM若最

高轉速為 3000RPM則在+-3000RPM的速度範圍內其量化誤差為 05相當於8-bit的 ADC轉換器精度

4對映不同的抽樣頻率的量化誤差表列如下

30

光電盤精度 最高轉速 抽樣頻率 速度單

速度範圍 量化誤差

500PPR 3000RPM 1KHz 30RPM +-100 05 500PPR 3000RPM 2KHz 60RPM +-50 1 500PPR 3000RPM 4KHz 120RPM +25 2

過溢現象的處理

輸入

輸出

32767

-32768

整數運算都有數值範圍限制以 16-bit 整數而言輸入輸出的關係如下

其中

1當超過正負數的上下限時數值會正負顛倒例如 +32768 將會視為 -32768作處理而 +32769 將會視為 -32768作處理依此類推 2換句話說16-bit的整數運算只有在+-32767之間是線性的對映關係而超過這個範圍就是非線性的對映關係

3不但如此還因為正負顛倒的現象使得原來設計的負回授控制將變為正回授控制

而產生非線性的震盪現象 4換句話說只要計算上稍一不慎就會使得原先穩定的系統產生不穩定的震盪結果

為了避免過溢現象所造成的不穩定問題通常控制系統中會利用飽和處理作改善圖示

如下

輸入

輸出

lmtH

lmtL

31

其中

1當超過計算的上限時將固定設為上限值處理而當超過計算的下限時也將固定

設為下限值處理 2這時的整數運算只有在上下限之間是線性的對映關係而超過這個範圍將還是非線

性的對映關係 3雖然如此但是因為沒有正負顛倒的現象所以不再會有負回授變為正回授的問題

而避免了非線性的震盪現象 4換句話說飽和處理是針對過溢現象的妥協處理方案雖然不完全理想但是是可

接受的最佳選擇

下面是對映的組合語言範例

RD x x為輸入端 MIN lmtH 取得 x和 lmtH中的較小值即是作上限保護的工作 MAX lmtL 取得 x和 lmtL中的較大值即是作下限保護的工作 WR y Y為輸出端 其中

1組合語言中提供MAX和MIN的計算其中 MIN lmtH 比較 AX暫存器和 lmtH而將較低值存入 AX暫存器中 MAX lmtL 比較 AX暫存器和 lmtH而將較高值存入 AX暫存器中 2所以直接可用MIN指令作上限保護而以MAX指令作下限保護兩者合併後即是

完整的飽和處理結果

飽和處理通常應用在高位數轉成低位數的場合例如32-bit轉換成16-bit或是16-bit

轉換成 12-bit 等等例如在本實驗中所有的運算都是以 16-bit 整數作處理但是到

PWM 驅動級輸出時卻要轉換成 12-bit精度的 PWM 命令所以必須先用飽和處理以避免

過溢現象造成的不穩定問題

32

61 實驗 1-開迴路的電壓控制 實驗說明以電壓直接控制轉速的開迴路特性可簡化為一階系統處理方塊圖如

sτ+1

v km ωm

其中V 送給驅動器的 PWM電壓命令

ωm馬達的轉動速度可由處理 photo encoder信號所得的位置微分而得 km一階系統的穩態增益 τ一階系統的時間常數即步階響應中的上升時間

為了觀測直流馬達的開環路特性建立下面的測試方塊圖

其中

1所使用的模組包括 FG1方波產生器產生所需的步階測試波形 FT1馬達模擬以一階系統的低通濾波器來執行 IO1光電盤的回授處理可同時取得轉角和速度的量測值 IO2PWM電壓驅動直接驅動直流馬達作控制 Led四位數字七段顯示模組顯示波形信號資料 2測試目標有兩項(P 參數設定欄)包括 A調整方波命令控制直流馬達作開環路的 PWM電壓控制 B調整馬達模擬參數使模擬結果和實驗結果相符以確認開環路特性

33

實驗畫面顯示如下

測試一 開環路的電壓控制 記錄頻道 CH1電壓命令Y1=-300DY=500 CH2模擬速度Y2=-100DY=500 CH3馬達速度Y3=100DY=50 CH4馬達轉角Y4=300DY=50000 實驗參數 FG1kAMP=256電壓命令的測試振幅 FG1kFRQ=150電壓命令的測試頻率 FT1DT =10 馬達模擬參數 FT1KA =500馬達模擬參數

其中

1用示波器功能記錄四個頻道其中 CH2和 CH3重疊顯示以比較模擬速度和量測

速度之間的差異 2由於 Km 不等於 1所以必須調整 CH3的 Y軸單位才能使得 CH2和 CH3的穩態響應部分重疊

3實驗時可以改變 FG1的參數以調整測試方波的振幅和頻率 4可以調整 FT1的參數使得 CH2和 CH3的暫態響應部分重疊

根據實際的測試結果分析如下

2馬達模擬的參數調整到 DT=10而 KA=500根據公式 τ = 40961000dtka 所以上升時間(τ)為 0082秒或是 82ms 3CH2CH3的 Y軸單位並不一致顯然 Km 不等於 1經計算確認 Km=0098

對應之 plc檔程式說明(exp_pwmplc) echo off 畫面顯示開始

run dsp 0 選擇 DSP1

run stop run reset 既有程式停止

run testDCMmem 下載指定程式

das 1 ampfg1out 0 1024 PWM 波形 Volt 設定 DAS 頻道1

das 2 ampft1lp 0 1024 馬達模擬 Volt 設定 DAS 頻道2

das 3 ampio1spd 0 1024 馬達速度 Volt 設定 DAS 頻道3

das 4 ampio1ang 0 1024 馬達角度 Volt 設定 DAS 頻道4

plot select 0 設定示波器頁數

plot xunit 100000 0 設定示波器 X軸

plot yunit 1 500 -300 設定示波器 Y1 軸

34

plot yunit 2 500 -100 設定示波器 Y2 軸

plot yunit 3 50 100 設定示波器 Y3 軸

plot yunit 4 50000 300 設定示波器 Y4 軸

plot trigger 1 0 1 10 設定示波器觸發

plot scope 9 1 2 3 4 設定示波器顯示

module io2 設定 io2 模組

s cmd ampfg1out

module fg1 設定 fg1 模組

s kAmp 256 s kFrq 150

module ft1 設定 ft1 模組

s u ampfg1out s dt 10 s ka 500

module io3 設定 io3 模組

s led ampfg1out

module 回復預設模組

run 1khz 設定抽樣頻率為 4KHz

run start DSP 開始執行

das stop pause 1 DAS 啟動 das start DAS 啟動

echo on 回復正常訊息顯示

使用者可視情況調整一階濾波器的 ka和 dt值使得 ch2和 ch3 兩組波形完全相符

以求得開迴路系統近似的一階轉移函數 CAI操控設計畫面規劃如下(EXP_PWMCAI) page 1 畫面設計

35

page 2 畫面設計 page 3 畫面設計

36

實測響應圖

訊 號 說 明 訊 號 說 明 ch1 方波產生器訊號 ch3 一階濾波器輸出信號 ch2 馬達角速度訊號 ch4 馬達角位置訊號

直流馬達之開迴路電壓控制響應圖

37

以邏輯分析功能觀測直流馬達之光電盤輸入與 PWM輸出信號

38

62 實驗 2-閉迴路的速度控制 實驗說明為了觀測閉迴路的速度控制響應建立下面的測試方塊圖

加入 PD控制後系統閉迴路的轉移函數經適度的簡化仍能約略以一階系統

處理方塊圖如下

sτ+1

u km ωm

其中

u 送給控制器的速度命令

ωm馬達的轉動速度可由處理 photo encoder 信號所得的位置微分而得

km一階系統的穩態增益 τ一階系統的時間常數即步階響應中的上升時間

方塊圖中的模組功能說明如下

1用 fg1 產生測試用的方波速度命令

2將方波速度命令和速度回授訊號送到 PD 控制器方塊中產生電壓控制訊號再透

過 io2 模組將訊號送出給伺服介面

3用 ft1 建立對照用的一階系統可用 IIR1濾波器方塊產生

4將方波命令產生速度命令再觀測 PHT(io1)上的速度值 spd

5調整 IIR1濾波器的參數使得兩組波形完全相符這時 IIR1濾波器就是閉迴路

速度控制的特性其中 km 為增益而τ為上升時間(單位為 sec)

6增益 km 可從示波器中作簡單計算而上升時間(τ=40964000dtka)

7 Led四位數字七段顯示模組顯示波形信號資料

39

對應之 plc檔程式說明(exp_speedplc) echo off 畫面顯示開始

run dsp 0 選擇 DSP1

run stop run reset 既有程式停止

run testDCMmem 下載指定程式

das 1 ampfg1out 0 1024 PWM 波形 Volt 設定 DAS 頻道1

das 2 ampft1lp 0 1024 馬達模擬 Volt 設定 DAS 頻道2

das 3 ampio1spd 0 1024 馬達速度 Volt 設定 DAS 頻道3

das 4 ampio1ang 0 1024 馬達角度 Volt 設定 DAS 頻道4

plot select 0 設定示波器頁數

plot xunit 100000 0 設定示波器 X軸

plot yunit 1 50 -300 設定示波器 Y1 軸

plot yunit 2 50 -100 設定示波器 Y2 軸

plot yunit 3 50 100 設定示波器 Y3 軸

plot yunit 4 50000 300 設定示波器 Y4 軸

plot trigger 1 0 1 10 設定示波器觸發

plot scope 9 1 2 3 4 設定示波器顯示

module io2 設定 io2 模組

s cmd ampcn2out

module fg1 設定 fg1 模組

s kAmp 50 s kFrq 150

module cn2 設定 cn1 模組

s cmd ampfg1out s fdk ampio1spd s kp 0x4000

module ft1 設定 ft1 模組

s u ampfg1out s dt 2 s ka 320

module io3 設定 io3 模組

s led ampfg1out

module 回復預設模組

run 1khz 設定抽樣頻率為 4KHz

run start DSP 開始執行

das stop pause 1 DAS 啟動 das start DAS 啟動

echo on 回復正常訊息顯示

CAI操控設計畫面規劃如下(EXP_speedCAI)

40

page 1 畫面設計 page 2 與 page 3 畫面設計與實驗一 page 2 與 page 3相同畫面 page 4 畫面設計

41

方塊的參數設定 使用者可視情況調整一階濾波器的 ka和 dt值使得 ch2和 ch3 兩組波形完全相符

以求得此一閉迴路系統近似的一階轉移函數或調整 PD控制器中的 kp和 kp值以調整系統之響應 實測響應圖

訊 號 說 明 訊 號 說 明 ch1 方波產生器產生之速度命令 ch3 一階濾波器輸出信號 ch2 馬達角速度訊號 ch4 馬達角位置訊號

42

直流馬達之閉迴路速度控制響應圖

43

63 實驗 3-閉迴路的位置控制 實驗說明為了觀測閉迴路的位置控制響應將直流馬達的回授改為位置訊號

建立下面的測試方塊圖 方塊圖中的模組功能說明如下

1用 fg1產生測試用的方波位置命令 2將方波位置命令和位置回授訊號送到 PD控制器方塊中產生電壓控制訊號再透過 io2模組將訊號送出到伺服介面驅動馬達轉動

對應之 plc檔程式說明(exp_angleplc) echo off 畫面顯示開始

run dsp 0 選擇 DSP1

run stop run reset 既有程式停止

run testDCMmem 下載指定程式

das 1 ampfg1out 0 1024 PWM 波形 Volt 設定 DAS 頻道1

das 2 ampft1lp 0 1024 馬達模擬 Volt 設定 DAS 頻道2

das 3 ampio1spd 0 1024 馬達速度 Volt 設定 DAS 頻道3

das 4 ampio1ang 0 1024 馬達角度 Volt 設定 DAS 頻道4

plot select 0 設定示波器頁數

plot xunit 100000 0 設定示波器 X軸

plot yunit 1 1000 -300 設定示波器 Y1 軸

plot yunit 2 1000 -100 設定示波器 Y2 軸

plot yunit 3 20 100 設定示波器 Y3 軸

plot yunit 4 1000 300 設定示波器 Y4 軸

plot trigger 1 0 1 10 設定示波器觸發

44

plot scope 9 1 2 3 4 設定示波器顯示

module io2 設定 io2 模組

s cmd ampcn2out

module fg1 設定 fg1 模組

s kAmp 1000 s kFrq 75

module cn2 設定 cn1 模組

s cmd ampfg1out s fdk ampio1ang s kp 0x300 s kd 0x4000

module ft1 設定 ft1 模組

s u ampfg1out s dt 2 s ka 320

module io3 設定 io3 模組

s led ampfg1out

module 回復預設模組

run 1khz 設定抽樣頻率為 4KHz

run start DSP 開始執行

das stop pause 1 DAS 啟動 das start DAS 啟動

echo on 回復正常訊息顯示

CAI操控設計畫面規劃如下(EXP_angleCAI) page 1 畫面設計

45

page 2 與 page 3 畫面設計與實驗一 page 2 與 page 3相同畫面 page 4 畫面設計與實驗二 page 4 畫面 方塊的參數設定 延續上一實驗的說明使用者可以調整 PD控制器中的 kp和 kd值以調整系統之

響應 實測響應圖

訊 號 說 明 訊 號 說 明 ch1 方波產生器產生之位置命令 ch3 馬達角速度訊號 ch2 馬達角位置 ch4 Pd控制器輸出之電壓訊號

46

直流馬達之閉迴路位置控制響應圖

47

64 實驗 4-加減速的位置控制 實驗說明為避免方波命令的過於嚴苛在方波命令的輸出加入一加減速控制功

能方塊以減緩命令變化的幅度增加馬達運動的平順建立的測試方塊圖如下

方塊圖中的模組功能說明如下

1用 fg1產生測試用的方波位置命令 2將方波位置命令送到加減速控制方塊處理後產生新的位置命令再將新的位置命

令與位置回授訊號送到 PD控制器方塊中產生電壓控制訊號最後透過 io2模組將訊號送出到伺服介面驅動馬達轉動

對應之 plc檔程式說明(exp_accplc) echo off 畫面顯示開始

run dsp 0 選擇 DSP1

run stop run reset 既有程式停止

run testDCMmem 下載指定程式

das 1 ampfg1out 0 1024 PWM 波形 Volt 設定 DAS 頻道1

das 2 ampcn1out 0 1024 加速控制 Volt 設定 DAS 頻道2

das 3 ampio1spd 0 1024 馬達速度 Volt 設定 DAS 頻道3

das 4 ampio1ang 0 1024 馬達角度 Volt 設定 DAS 頻道4

plot select 0 設定示波器頁數

plot xunit 100000 0 設定示波器 X軸

plot yunit 1 2000 -300 設定示波器 Y1 軸

plot yunit 2 2000 -100 設定示波器 Y2 軸

plot yunit 3 50 100 設定示波器 Y3 軸

plot yunit 4 2000 300 設定示波器 Y4 軸

48

plot trigger 1 0 1 10 設定示波器觸發

plot scope 9 1 2 3 4 設定示波器顯示

module io2 設定 io2 模組

s cmd ampcn2out

module fg1 設定 fg1 模組

s kAmp 2000 s kFrq 150

module cn1 設定 cn1 模組

s cmd ampfg1out

module cn2 設定 cn2 模組

s cmd ampcn1out s fdk ampio1ang s kp 0x300 s kd 0x4000

module ft1 設定 ft1 模組

s u ampfg1out s dt 2 s ka 320

module io3 設定 io3 模組

s led ampfg1out

module 回復預設模組

run 1khz 設定抽樣頻率為 4KHz

run start DSP 開始執行

das stop pause 1 DAS 啟動 das start DAS 啟動

echo on 回復正常訊息顯示

CAI操控設計畫面規劃如下(EXP_accCAI) page 1 畫面設計

49

page 2 畫面設計與實驗一 page 2相同畫面 page 3 畫面設計與實驗二 page 4相同畫面

參數設定參考之前各實驗的說明可線上機動性的調整 PD控制器中的 kp和 kd值以調整系統之響應 實測響應圖

訊 號 說 明 訊 號 說 明 ch1 方波產生器產生之位置命令 ch3 馬達角位置 ch2 加減速模組輸出之位置命令 ch4 馬達角速度訊號

50

圖一 直流馬達經加減速控制後之閉迴路控制響應圖

51

65 實驗 5-正弦波的位置控制 實驗說明在本實驗中改變命令的波形由方波改變為正弦波並建立如下的測

試方塊圖與上一實驗相比較僅更改命令的波形產生方塊 方塊圖中的模組功能說明如下 1用 fg2產生測試用的弦波位置命令 2將弦波位置命令送到加減速控制方塊處理後產生新的位置命令再與 io1 讀入的位

置回授訊號送到 PD 控制器方塊中產生電壓控制訊號再透過 io2 模組將訊號送出到伺服介面驅動馬達轉動

對應之 plc檔程式說明(exp_sinplc) echo off 畫面顯示開始

run dsp 0 選擇 DSP1

run stop run reset 既有程式停止

run testDCMmem 下載指定程式

das 1 ampfg2out 0 1024 SIN 波形 Volt 設定 DAS 頻道1

das 2 ampcn1out 0 1024 加速控制 Volt 設定 DAS 頻道2

das 3 ampio1spd 0 1024 馬達速度 Volt 設定 DAS 頻道3

das 4 ampio1ang 0 1024 馬達角度 Volt 設定 DAS 頻道4

plot select 0 設定示波器頁數

plot xunit 100000 0 設定示波器 X軸

plot yunit 1 2000 -300 設定示波器 Y1 軸

plot yunit 2 2000 -100 設定示波器 Y2 軸

plot yunit 3 50 100 設定示波器 Y3 軸

plot yunit 4 2000 300 設定示波器 Y4 軸

plot trigger 1 0 1 10 設定示波器觸發

52

plot scope 9 1 2 3 4 設定示波器顯示

module io2 設定 io2 模組

s cmd ampcn2out

module fg2 設定 fg1 模組

s kAmp 2000 s kFrq 100

module cn1 設定 cn1 模組

s cmd ampfg2out

module cn2 設定 cn2 模組

s cmd ampcn1out s fdk ampio1ang s kp 0x300 s kd 0x4000

module ft1 設定 ft1 模組

s u ampfg2out s dt 2 s ka 320

module io3 設定 io3 模組

s led ampfg2out

module 回復預設模組

run 1khz 設定抽樣頻率為 4KHz

run start DSP 開始執行

das stop pause 1 DAS 啟動 das start DAS 啟動

echo on 回復正常訊息顯示

CAI操控設計畫面規劃如下(EXP_sinCAI) page 1 畫面設計

53

page 2 畫面設計 page 3 畫面設計與實驗二 page 4相同畫面

方塊的參數設定可調整 PD控制器中的 kp和 kd值以調整系統之響應 實測響應圖

訊 號 說 明 訊 號 說 明 ch1 弦波產生器產生之位置命令 ch3 馬達角位置訊號 ch2 加減速模組輸出之位置命令 ch4 馬達角速度訊號

54

直流馬達之閉迴路弦波加減速位置控制響應圖

55

7組合語言說明

本節將針對 DC馬達伺服控制實驗專用的程式模組進行功能與程式碼的說明其

有關於波形產生器與資料擷取模組等說明如下

SIN_waveasm 正弦波產生器 PWM_waveasm 方波產生器 IIR1_filterasm 一階濾波器 DAS4asm 資料蒐集模組

弦波產生器

此模組會產生週期性的正弦波方塊圖如下

outfrq

kBiasbias

ampkAmp

kFrqth

kThf=1TB

θ

A

其中

1正弦波有四個參數振幅(A)頻率(F)相位(θ)和偏移(B)其公式為 out = A sin(2πF t +θ) + B 2對於單純的正弦波產生器所對映的參數包括 kAmp 振幅值 kFrq 頻率值kFrq=655368000Hz其中 Hz的範圍為 0~4000例如 1000Hz =gt frq=8192 100Hz =gt frq=819 10Hz =gt frq=82 1Hz =gt frq=8 kTh 相角值0~255代表 0~360的相位當 th=0 時為正弦波 th=64 時為餘弦波 th=128時為反相波依此類推 kBias偏移值 3對於可調變的正弦波產生器其對映的輸入點為 amp 控制振幅的輸入點可產生調幅(AM)波形 frq 控制頻率的輸入點可產生調頻(FM)波形 th 控制相位的輸入點可產生調相(PM)波形 bias控制偏移的輸入點可產生雙頻混波(相加)波形 4若不使用調變功能時各個輸入點時的預設值為 amp 指向 kAmp 的位址 frq 指向 kFrq 的位址

56

th 指向 kTh 的位址 bias指向 kBias的位址

模組程式範例SIN_WAVEasm

local amp R0 IP kAmp 輸入點sin波的振幅 local frq R1 IP kFrq 輸入點sin波的頻率 local th R2 IP kTh 輸入點sin波的相角 local bias R3 IP kBias 輸入點sin波的中心偏移 local out R4 OP 輸出點sin波輸出 local tab R5 TP 表格指標指向 sin[256]的表格 local ang R6 內部變數相位角65536=360deg local kAmp R7 1000 參數振幅值 local kFrq R8 1000 參數頻率值=655368000Hz local kTh R9 0 參數相角值360deg=256 local kBias R10 0 參數偏移值 data 11 模組變數區長度及初值 initial 啟動程序 WR ang0 WR out0 ang=out=0 RET timer 即時控制程序(8KHz) RD ang ADD (frq) WR ang ang+=frq SFR 8 ADD (th) AND 255 ACC=sin(ang256+th) ADD tab WRH RDM table-look-up MUL (amp) SFR 12 ADD (bias) WR out out=ACCamp4096+bias RET table tab 256 sin[256]表格區10=4096 0 101 201 301 401 501 601 700 00~070deg 799 897 995 1092 1189 1285 1380 1474 08~0F 1567 1660 1751 1842 1931 2019 2106 2191 10~17 2276 2359 2440 2520 2598 2675 2751 2824 18~1F 2896 2967 3035 3102 3166 3229 3290 3349 20~27 3406 3461 3513 3564 3612 3659 3703 3745 28~2F 3784 3822 3857 3889 3920 3948 3973 3996 30~37 4017 4036 4052 4065 4076 4085 4091 4095 38~3F 4096 4095 4091 4085 4076 4065 4052 4036 40~4790deg 4017 3996 3973 3948 3920 3889 3857 3822 48~4F 3784 3745 3703 3659 3612 3564 3513 3461 50~57 3406 3349 3290 3229 3166 3102 3035 2967 58~5F

57

2896 2824 2751 2675 2598 2520 2440 2359 60~67 2276 2191 2106 2019 1931 1842 1751 1660 68~6F 1567 1474 1380 1285 1189 1092 995 897 70~77 799 700 601 501 401 301 201 101 78~7F 0 65435 65335 65235 65135 65035 64935 64836 80~87180deg 64737 64639 64541 64444 64347 64251 64156 64062 88~8F 63969 63876 63785 63694 63605 63517 63430 63345 90~97 63260 63177 63096 63016 62938 62861 62785 62712 98~9F 62640 62569 62501 62434 62370 62307 62246 62187 A0~A7 62130 62075 62023 61972 61924 61877 61833 61791 A8~A8 61752 61714 61679 61647 61616 61588 61563 61540 B0~B7 61519 61500 61484 61471 61460 61451 61445 61441 B8~BF 61440 61441 61445 61451 61460 61471 61484 61500 C0~C7270deg 61519 61540 61563 61588 61616 61647 61679 61714 C8~CF 61752 61791 61833 61877 61924 61972 62023 62075 D0~D7 62130 62187 62246 62307 62370 62434 62501 62569 D8~DF 62640 62712 62785 62861 62938 63016 63096 63177 E0~E7 63260 63345 63430 63517 63605 63694 63785 63876 E8~EF 63969 64062 64156 64251 64347 64444 64541 64639 F0~F7 64737 64836 64935 65035 65135 65235 65335 65435 F8~FF

就程式結構而言說明如下

timer 即時控制程序(8KHz) RD ang ADD (frq) WR ang ang+=frq SFR 8 ADD (th) AND 255 ACC=sin(ang256+th) ADD tab WRH RDM table-look-up MUL (amp) SFR 12 ADD (bias) WR out out=ACCamp4096+bias RET

1基本上我們以查表法計算 sin()其輸入θ的範圍為 0~255對映到 0~360deg其輸出 sin(θ)的範圍為+-4096對映到+-10的範圍

2建立一個內部變數 ang其範圍為 0~65535對映到 0~360的相位角 3每個timer程序都執行 ang+=frq的動作更新目前的相位角接著依照 ang的相位角查表得到 sin(ang256+th)值

4由於表格長度為 256-word所以必須將 ang256才能得到正確的對映關係而 th範圍為 0~255所以不需要像 ang一般的做額外處理

5sin()的範圍為(+1-1)而在表格中以(+4096~-4096)的型式記錄相當於 10=4096所以執行 Asin()時還要用 SFR12指令做4096的動作才能正確的取得輸出值

58

6就頻率輸入 frq而言其計算原則是將θ=ωt轉化成θ=Σ(ωdt)因為抽樣頻率

為 8KHz所以 dt=18000而得到 frq=655368000Hz公式其中 Hz為真正的頻率在 8KHz的抽樣頻率下其範圍為 0~4000

鋸齒波產生器

此模組會產生週期性的鋸齒波方塊圖如下

outfrq

kBiasbias

ampkAmp

kFrqth

kThf=1TB

θ

A

其中

1鋸齒波也有四個參數振幅(A)頻率(F)相位(θ)和偏移(B)和正弦波的定義完全一致唯一的差異是其輸出為鋸齒波而非正弦波

2基本波形是從週期開始時為 0一直遞增到週期結束時到達最高點然後立刻回歸

到 0重新開始 3以程式結構而論鋸齒波程式幾乎就是正弦波的相位計算部分只差沒有正弦波的

查表處理而已

模組程式範例SAW_WAVEasm

local amp R0 IP kAmp 輸入點sin波的振幅 local frq R1 IP kFrq 輸入點sin波的頻率 local th R2 IP kTh 輸入點sin波的相角 local bias R3 IP kBias 輸入點sin波的中心偏移 local out R4 OP 輸出點sin波輸出 local ang R5 內部變數相位角65536=360deg local kAmp R6 1000 參數振幅值 local kFrq R7 1000 參數頻率值=655368000Hz local kTh R8 0 參數相角值360deg=256 local kBias R9 0 參數偏移值 data 11 模組變數區長度及初值 initial 啟動程序 WR ang0 WR out0 ang=out=0 RET timer 即時控制程序(8KHz) RD ang ADD (frq) WR ang ang+=frq SFR 8 ADD (th) AND 255 ACC=(ang256+th)amp0x00ff MUL (amp) SFR 8 ADD (bias) WR out out=ACCamp256+bias

59

RET

脈衝波產生器

outfrq

kBiasbias

ampkAmp

kFrqth

kThf=1TB

θ

A

pwm

kDutyduty

此模組會產生週期性的脈衝波方塊圖如下

其中

1脈衝波有五個參數其中振幅(A)頻率(F)相位(θ)和偏移(B)四個參數和正弦波

定義完全一樣另外再增加一個負載率(D) 2基本波形是從週期開始時為 1隔段時間後換為 0然後持續到週期結束再重新開始其中 1所佔有的比例就是負載率當 D=0時為 0而 D=255時為 100

3和其他參數類似負載率(D)以 duty為其輸入點而以 kDuty為其參數值

模組程式範例PLS_WAVEasm

local amp R0 IP kAmp 輸入點脈衝波的振幅 local frq R1 IP kFrq 輸入點脈衝波的頻率 local th R2 IP kTh 輸入點脈衝波的相角 local bias R3 IP kBias 輸入點脈衝波的中心偏移 local duty R4 IP kDuty 輸入點脈衝波的負載率 local out R5 OP 輸出點脈衝波輸出 local ang R6 內部變數相位角65536=360deg local kAmp R7 1000 參數振幅值 local kFrq R8 1000 參數頻率值=655368000Hz local kTh R9 0 參數相角值360deg=256 local kBias R10 0 參數偏移值 local kDuty R11 128 參數負載率100 =256 data 12 模組變數區長度及初值 initial 啟動程序 WR ang0 WR out0 ang=out=0 RET timer 即時控制程序(8KHz)

60

RD ang ADD (frq) WR ang ang+=frq SFR 8 ADD (th) AND 255 ACC=(ang256+th)amp0x00ff SUB (duty) RD (amp) JLT t1 RD 0 ACC=(amp0) t1 ADD (bias) WR out out=ACC+bias RET

IIR 一階濾波器

此模組執行一階的 IIR濾波器方塊圖如下

kau x

Z-1

+

+

-

+低通濾波器

高通濾波器dx lp

hp

濾波器參數的計算公式如下

1假設濾波器的頻寬為 hz則 ωn=hz628 2若系統頻率為 8KHz則抽樣週期 dT為 dT=dt8000 其中 dt為模組參數 3則濾波器參數為 ka=ωndT4096或是 =hzdt62880004096即 =hzdt32 4當 dt決定後所允許的訊號頻寬為(4000dt)換句話說訊號頻寬會因為 dt增加而下降

為了方便實驗的運用下面列出常用的參數對照表

濾波頻寬

(Hz)

10 20 50 100 200 500 1000 2000

訊號頻寬

(Hz)

400 800 2000 4000 4000 4000 4000 4000

模組參數 dt 10 5 2 1 1 1 1 1

模組參數 ka 320 320 320 320 640 1600 3200 6400

表格的運用方式如下

1首先決定濾波頻寬 2接著查表找出對映的參數 dt和 ka 3再查表得到對映的訊號頻寬以決定是否需要串接前級濾波器

61

模組程式範例IIR1_FILTERasm

local u R0 IP 輸入點濾波器輸入 local lp R1 OP 輸出點低通濾波器輸出 local hp R2 OP 輸出點高通濾波器輸出 local dt R3 1 參數抽樣週期 local ka R4 4096 參數增益 ka10=4096 local prd R5 內部變數抽樣週期用 data 6 模組變數區長度 initial 開機啟動程序 WR lp0 WR hp0 WR prd1 RET lp=hp=0prd=1 timer 即時控制程序 SUB prd1 JNZ b9 if (--prdgt0) return RD dt WR prd prd=dt RD (u) SUB lp WR hp hp=u-lp MUL ka SFR 12 ADD lp WR lp lp+=(hpka4096) b9 RET

資料蒐集模組

資料蒐集模組是一個非常特殊的模組專門配合 eTTY 程式中的示波器使用

模組程式範例DAS4asm

local cmd R0 0 紀錄命令0=停止1=前置記錄2=正觸發4=負觸發6=觸發記錄 local dt R1 1 抽樣週期每 dT抽樣一次 local tab R2 TP DAS表格啟始位址 local cnt R3 0 目前記錄點(0~255) local ch1 R4 0 定義頻道1的變數位址 local ch2 R5 0 定義頻道2的變數位址 local ch3 R6 0 定義頻道3的變數位址 local ch4 R7 0 定義頻道4的變數位址 local trg R8 0 定義觸發頻道的變數位址 local th R9 0 觸發準位 local tail R10 0 觸發後的抽樣個數 local buf R11 1 抽樣計數(1~dt) local pnt R12 表格位址計算pnt=tab+cnt4 local len R13 表格長度計算(0~256) data 14 定義模組變數區的長度 table tab 1024 定義表格的長度 initial 啟動程序 WR cmd0 RET cmd=0 timer 控制程序

62

ADD cmd0 JZ t9 if (cmd==0) return SUB buf1 JNZ t9 if (--buf)gt0) return RD dt WR buf dt=buf RD cnt ADD 1 AND 0xff WR cnt cnt=(cnt+1)amp0xff SFL 2 ADD tab WR pnt pnt=tab+cnt4 RD (ch1) WR (pnt) ADD pnt1 pnt++=ch1 RD (ch2) WR (pnt) ADD pnt1 pnt++=ch2 RD (ch3) WR (pnt) ADD pnt1 pnt++=ch3 RD (ch4) WR (pnt) pnt =ch4 RD cmd SUB 1 JZ t9 SUB 1 JZ t2 SUB 1 JZ t3 SUB 1 JZ t4 SUB 1 JZ t5 SUB 1 JZ t6 JR t7 t2 RD (trg) SUB th JGE t9 ADD cmd1 JR t9 wait trgltth t3 RD (trg) SUB th JLE t9 JR t6 wait trggtth t4 RD (trg) SUB th JLE t9 ADD cmd1 JR t9 wait trggtth t5 RD (trg) SUB th JGE t9 JR t6 wait trgltth t6 WR len0 WR cmd7 len=0cmd=7 t7 ADD len1 SUB tail JLT t9 WR cmd0 if ((++len)gt=0x80) cmd=0 t9 RET

與 DC 馬達控制相關的程式模組有以下 4個程式模組說明如下

(1)加減速控制模組 ACC_controlasm (2)光電盤輸入模組 POS_inputasm (3)PWM輸出模組 PWM_outputasm (4)PD控制模組 PD_controlasm

71加減速控制模組 此程式模組主要功能在於執行位置控制的加減速命令修正其數學模式採用 Lynn

濾波器的架構參見下圖

cmd

2

+

old Z -1

-

Z -1

Z -1

Z-1

Z-1x0 x1 x8 x9 x16

+ -

++

2

Z-1

Z-1 y1 y2

+

-

y0

+ +

sumZ-1

+164

12

out

dif

+

63

加減速控制模組方塊圖

其中

1Lynn 濾波器的階數固定成八階也就是 m=8其公式為 H(z) = (1-2Z-m+Z-2m)(1-2Z-1+Z-2)m2

2因為m=8所以m2=64因此最後計算低通濾波的部份時要先做除 64的運算 3因為低通濾波(lp)和 y0之間有 64倍的差異代表 y0y1y2的變化範圍比濾波器輸

入值要擴大許多例如輸入值在+-1000變化時y0y1y2很可能會在+-64000之間變化這範圍已經超出整數處理的範圍很可能會造成錯誤的計算結果

4所以在實驗時輸入值的變化範圍必須控制在+-500之間以保證計算的正確性 5對於 Lynn 濾波器當 m=8時其濾波器的頻寬固定為 1 kHzmdt也就是 dt=1時頻寬為 125 Hz dt=2時頻寬為 625Hz依此類推 6對於 Lynn 濾波器其濾波器的延遲固定為 m個抽樣週期因此設計 hp = x8 - lp 即可得到高通濾波器的對應結果 7其中乘 2和除 64的運算以移位運算取代所以整個程式中並無任何乘法運算 8Lynn 濾波器本身並不是穩定濾波器所以在程式啟動時必須確實的將所有狀態

(x0~x16)歸零否則會產生不穩定的狀態輸出

因為 Lynn濾波器中所有參數固定所以除了抽樣週期 dt 之外並無任何可調參數

抽樣週期 dt 可以控制頻寬dt 越大則濾波器頻寬越低

將步階命令值的輸出送入 Lynn 濾波器中經由低通濾波器的效應可以減緩命

令的變化程度達到加減速控制的目的以下為使用 Lynn 濾波器型式實現加減速控

制的組合語言程式列印 如欲更進一步瞭解 Lynn 濾波器與 FIR 數位濾波器之間的關係可以參考通訊實驗

四數位濾波器設計(FIR)中之說明

ACC_controlasm程式列印 local cmd R0 IP 輸入點位置命令

local out R1 OP 輸出點加減速處理後的位置命令

local dif R2 OP 輸出點位置微分命令

local axis R3 0 馬達編號0=X1=Y2=Z3=C

local old R4 內部變數微分計算用

local sumL R5 內部變數積分計算用

local sumH R6 內部變數積分計算用

local y0 R7 內部變數y(0~2)

local y1 R8 local y2 R9

local x0 R10 內部變數x(0~16)

local x1 R11 local x2 R12 local x3 R13 local x4 R14

local x5 R15 local x6 R16 local x7 R17 local x8 R18

local x9 R19 local x10 R20 local x11 R21 local x12 R22

local x13 R23 local x14 R24 local x15 R25 local x16 R26

64

data 27 模組變數區長度

initial 開機啟動程序

WR dif0 RD (cmd) WR out WR old dif=0 out=old=cmd

sumHL=cmd64

SFL 6 WR sumL RD out SFR 10 SGN 5 WR sumH

RPT 17 WR x00 RPT 3 WR y00 RET x[0~16]=0y[0~2]=0

timer 即時控制程序

RD (cmd) SUBX old WR x0 x0=cmd-old old=cmd

SUB x81 ADD x16 ADD y11 SUB y2 WR y0 y0=x0-2x8+x16+2y1-y2

SGN ADD sumL WR sumL RDH ADC sumH WR sumH sumHL+=y0

WRH RD sumL SFR 6 WR out out=sumHL64

RD y0 SGN SFR WR dif dif=y032mm

RD x0 RPT 16 RDX x1 x[i]=x[i-1] i=1~16

RD y0 RDX y1 WR y2 y[i]=y[i-1] i=1~2

b9 RET

72光電盤輸入模組

DC馬達的位置由光電盤量測之預設儲存於 0xac與 0xbe二個輸入埠位址中其中位址 0xac記錄 X軸馬達的位置位址 0xbe記錄 Y軸馬達的位置由於本實驗的DC馬達接在 Y軸的位置上因此程式中直接選用 Y軸的輸入 光電盤位置輸入的程式列印如下其中速度由位置的差分而得至於馬達的位置

則使用內部 2個 word加以記錄精度為 32位元 POS_inputasm程式列印 local spd R0 OP 輸出點速度量測值

local ang R1 OP 輸出點角度量測值

local angH R2 內部變數角度的 32 位元部分

local mode R3 0x308 模式選擇15MHzAB 相正反向輸入

local pht R4 0xac 輸入阜地址光電盤輸入(0xac)

local phtc R5 0xbe 輸入阜地址光電盤模式(0xbe)

local old R6 內部變數速度更新用

data 7 模組變數區長度

initial 開機啟動程序

RD mode WR (phtc) phtc=mode

RD (pht) WR old WR spd0 RET old=phtspd=0

timer 即時控制程序

RD (pht) SUBX old SGN 11 WR spd spd=(pht-old)old=pht

65

ADD ang WR ang angHL+=spd

RDH ADC angH WR angH

RET

73 PWM輸出控制模組 模組方塊

cmd PWM輸出

程式說明 1在開機時將切換保護時間寫到輸出阜 0xbc上其中切換保護值為 0~6360=5us 2在每次 timer interrupt時將 cmd訊號處理後寫到輸出阜 0xb8上

PWM_outputasm程式列印 local cmd R0 IP gnd 輸入點v相命令

local gain R1 4096 參數輸出增益1=4096

local bias R2 2048 參數輸出偏壓0=2048

local limit R3 4095 參數輸出極限1=4095

local zone R4 0x88f0 參數頻率=12KHz切換保護=5us

local pwm R5 0xb8 輸出阜地址PWM0 輸出(0xb8)

local mode R6 0xbc 輸出阜地址PWM 模式(0xbc)

local p0md R7 0xf8 輸出阜地址port0 模式(0xf8)

local gnd R8 0 輸入接地點

data 9 模組變數區長度

initial 開機啟動程序

RD bias WR (pwm) pwm=bias

RD 0xffff WR (p0md) set port0 mode

RD zone WR (mode) RET mode=zone

stop 關機保護程序

RD bias WR (pwm) RET pwm=bias

timer 即時控制程序

RD (mode) xor 1 and 1 WR (mode) trigger watch-dog

RD (cmd) MUL gain SFR 12 ADD bias ACC=(cmdgain4096)+bias

MAX 0 MIN limit WR (pwm) pwm=limit(ACC)

RET

66

74 PD 控制模組

PD控制的模組方塊參見圖二十一所示其中比例控制的部份直接由增益 kp加以調整微分控制的部份則由誤差的差分經增益 kd的調整而得

Σ+

-

cmd

fdk

err out

Σ

pk

dk

Σ

+

+

+

-

old1minusZ

PD控制器的方塊圖

PD_controlasm程式列印 local cmd R0 IP gnd 輸入點位置命令(可忽略)

local fdk R1 IP gnd 輸入點位置回授(可忽略)

local out R2 OP 輸出點用以控制速度迴路

local kp R3 256 參數增益 kp10=256

local kd R4 0 參數增益 kd10=256

local err R5 0 內部變數

local old R6 0 內部變數

local gnd R7 0 無輸入時的短路點

data 8 模組變數區長度

initial 開機啟動程序

WR out0 WR old0 RET out=old=0

timer 即時控制程序

RD (cmd) SUB (fdk) PRTF WR err

MUL kp SFR 8 P=(cmd-fdk)kp256

RDS err SUBX old MUL kd SFR 8 D=(err-old)kd256

ADDS

WR out out=P+D

RET

程式中預設增益值的 10以整數值 256為基底因此使用 SFR 8的指令加以調

整另外在在計算微分項的程式部份用到 SUBX old的指令其詳細的暫存器動作如

下 參考 piDSP的指令說明SUBX指令將總共用到 3個時序參考錯誤 找不到參照

67

來源在時序 1時將原先 AX的資料拷貝一份到 HX中時序 2時正式執行減

法的動作所以 AX暫存器中的內容會變成 err-old時序 3時DSP會將存放在 HX暫存器中的內容拷貝一份到 old的記憶體中也就是經由 SUBX此一精簡指令將

同時完成計算差分所需要的相減與資料疊代的動作有效的利用 piDSP控制器 DSP核心的精簡指令將可以大幅提昇系統的計算速度

HX AXoldSUBXerr err

old

err

errerr olderr minus

1_err

errerr olderr minus err

1_err

1

2

3

SUBX的指令時序與暫存器變化

68

8附錄快速安裝說明

光纖網路通訊 FPGA 發展系統 (適用於 WIN-XP200098 系統)

快速安裝說明

26Pin 負載輸出入埠

雙電源︵5

12

伏︶輸入埠

單電源︵5

伏︶輸入埠

USB

光纖線輸

號 光纖線輸出埠

入 傳 埠

首先將光碟片 RFFPGA 目錄檔案拷貝在您工作硬碟裡面

第一次安裝時先將 USB 傳輸線接上電腦主機將電源供應器接上 FPGA 模組此時電

腦會出現安裝 USB-Serial 驅動程式選擇從清單安裝此驅動程式放置在光碟片

RFFPGA-USBdrive 選擇您目前安裝系統

可選擇 WIN-98WIN-MEWIN-2000WIN-XP 系統配合您現在工作電腦作業系統

69

注意一般電腦 USB 埠很多插口當您安裝驅動程式時是配合您當時插入之埠

下次如您插入不同接口埠時電腦會再次要求安裝驅動程式這是正常現象請再次安

裝驅動程式否則無法使用

FPLC 操作

首先進入 RFFPGA裡子目錄 testASM直接點選 fPLCexe 出現下面操作畫面(也可直接將

此檔案放置桌面直接點選)

(或者選擇 File 再執行 Setuphellip 選擇您要執行 CAI 檔)

70

進入下面操作畫面 首先使用滑鼠在 FPGA下載按鈕單擊動作使 FPGA變成 DSP晶片 實驗一至實驗五皆為使用 DSP組合語言設計程式其原始程式分別為 testASM1至testASM5可使用 texPad 開啟與編輯程式內容 實驗三與實驗五多有 IO控制動作 當選擇實驗三時出現下面畫面

71

eM_USB 模組

數字型 LED

0 1 2 34 5 6 78 9 A BC D E F

燈號型 LED

44 鍵盤

ADC0 ADC1 DAC0 DAC1

LED 選擇KEY 選擇

模 式 1

0123

注意操作畫面 3與 4 說明開關與按鍵選擇位置後選擇程式下載再按程式啟動如您

按下 0-3按鍵時燈號型 LED會有不同方向閃爍顯示程式停止時結束所有 IO控制動作再按回首頁選擇其他實驗 實驗四與實驗五

模式3

0 1 2 34 5 6 78 9 A BC D E F

按照上面開關選擇直接操作如果以上實驗皆能按照正常操作表示您光纖網路通訊

FPGA發展模組以能正常使用 注意 開機與關機動作順序如下

開機電腦啟動 --- eM_USB 模組電源接上 --- USB 接上電腦 ---

啟動 FPLC 軟體 --- 下載 FPGA 程式

關機關閉 FPLC 軟體 --- eM_USB 模組電源拔掉 --- 拔掉電腦 USB 接頭 ---關掉

電腦

如果以上順序有亂可能造成 USB 找不到驅動造成無法下載經過幾次測試還是

無法下載建議重新啟動電腦主機按照正確步驟操作

72

FPGA 下載操作

進入 FPLC 操作系統按照下列步驟選擇節點模組與下載 bit FPGA 檔案

在 VHDLDEMO 子目錄下您可以選擇您目前 FPGA 種類型號在此型號下我們已將 VHDL

與數位邏輯設計課本範例全部放於此處

73

光纖網路連線 FPGA 下載操作

首先利用光纖線將 eM_USB0 模組光纖輸出埠接至 eM_USB1 模組光纖輸入埠以此

類推最後再將最後 eM_USBN 模組光纖輸出埠接至 eM_USB0 模組光纖輸入埠配置

如附圖方式

個人電腦(Windows) eM_USB模組

0USB

eM_USB模組1

光纖網路

eM_USB模組2

eM_USB模組N

配置完成後進入 FPLC 系統首先必須先將 Node00 下載在 testASM 子目錄裡

piDSPv0bit 檔讓 eM_USB0 模組 FPGA 具備 DSP 功能才能執行光纖網路通訊

操作如下

此時您就可以選擇分別下載至各模組 FPGA 檔 bit

74

安裝 FPLC 注意事項

當您進入 FPLC 時

按 FILE 選擇 programhellip 選擇檔案為 exp_dcmplc 出現下面畫面

正常顯示畫面為

75

DOS 環境操作

在 PC 端的操作是在 Windows 環境中的 DOS 視窗中執行指令範例如下

eFPGA progNETbit 下載 FPGA電路至網路節點0(即 USB節點)中 eFPGA testLEDbit 1 下載 FPGA電路至網路節點1中

對於單一節點的控制程序如下

1將 eM_USB模組連結個人電腦的 USB端 2eM_USB模組開機 3執行下載指令即可 eFPGA xxxxbit 4若要更改 FPGA電路只要重新執行下載指令即可

對於多個網路節點的控制程序如下

1第一組 eM_USB模組連結個人電腦的 USB端再以光纖網路依序其他各節點 2連接 USB界面者為模組0從光纖發射端連接出去的模組為1依此類推 3將所有 eM_USB模組開機 4執行下載指令如下 eFPGA progNETbit 模組0必須先下載指定的 FPGA電路 eFPGA xxxxbit 1 再依序下載其他網路模組的 FPGA電路 eFPGA yyyybit 2 eFPGA zzzzbit 最後再重新下載模組0的 FPGA電路 5換句話說模組0必須先執行 progNETbit讓光纖網路接受 FPGA控制後才能透過光纖網路下載至其他節點等全部網路節點下載完畢後再將模組0的 FPGA重新下載讓模組0也可自由執行任意的 FPGA電路

6若要更改某一個網路節點中的 FPGA電路只要重新執行下述指令 eFPGA progNETbit 模組0必須先下載指定的 FPGA電路 eFPGA yyyybit 2 下載指定網路模組的 FPGA電路 eFPGA zzzz bit 最後再重新下載模組0的 FPGA電路 換句話說除非模組0中的 FPGA已經包括光纖網路管理電路否則一定要先在

模組0中下載網路管理電路後才能下載指定網路節點的 FPGA電路

76

光纖網路通訊 FPGA 發展系統

系統配置

光纖網路通訊 FPGA 發展系統的系統配置圖如下

個人電腦(Windows) eM_USB模組

0USB

eM_USB模組1

光纖網路

eM_USB模組2

eM_USB模組N

其中

1基本模組為 eM_USB模組可用 USB界面和個人電腦連線並提供 USB對光纖網路的轉換功能使得個人電腦可以獨立控制光纖網路中的每個網路節點

2eM_USB模組也可以作為光纖網路中的網路節點透過光纖網路而接受個人電腦的

監控 3就個人電腦而言不論是 USB界面直接連結或是以光纖網路間接連結的 eM_USB模組都是可以直接監控的網路節點最多可以同時控制一個 USB節點和 30個網路節點

4對於每一個網路節點個人電腦都可執行 eM_USB模組中 FPGA的電路下載工作並在適當的 FPGA電路配合下可執行 eM_USB模組中 FPGA內部電路的讀寫控制 5透過適當的 FPGA電路設計各網路節點都可透過光纖網路和其他任何網路節點

作同步通訊執行 FPGA內部記憶體的資料交換資料交換頻率可達 1KHz以上

77

網路模組配置

每個網路模組的標準配置圖如下

eM_USB模組光纖網路

USB eM_FPGA卡

eM_DEMO模組

eM_EXP實驗模組

DC電源

其中

1網路模組以 eM_USB模組為主提供基本的 USB界面和光纖網路連線 2eM_USB模組中的 FPGACPLD採用插卡型式可選擇不同的 eM_FPGA卡包括

eM_2V1K卡可選用 Virtex系列的 XC2V250和 XC2V1000 eM_3S1K卡可選用 Spartan3系列的 XC3S400XC3S1000和 XC3S1500 eM_3S50卡可選用 Spartan3系列的 XC3S50XC3S200和 XC3S400 eM_95XL卡可選用 9500XL系列的 XC95144XL和 XC95288XL 3eM_USB模組中的對外連線有兩種一種是 26P接頭用以連接既有的各種實驗模

組另一種是兩組 50P接頭將 FPGA中各接腳引出用以連接專題實驗 4eM_DEMO模組就是插上 50P接頭的教學模組其中包括 LED 數字顯示和 44鍵盤也具備兩組的 ADC和兩組的 DAC接頭提供類比訊號的測試工具

常用的實驗組合包括

1精簡組合包括(eM_USB+eM_FPGA)提供基本的網路節點適用於專題實驗 2標準組合包括(eM_USB+eM_FPGA+eM_DEMO)提供基礎 FPGA設計的教學實驗

3實驗組合包括(eM_USB+eM_FPGA+eM_DEMO+eM_EXP)提供進階的 FPGA實驗可依需求選用不同的實驗模組

78

eM_USB 模組

eM_USB 模組的電路配置圖如下

TxRx

DCPower

USB

JP2

JP3

光纖界面

外加電源

PC連線

JP1

eM_FPGA模組

FT232 CPLD FlashROM

SRAM

10cm

6cm

JP4

其中

1對外的連線接頭包括 DC電源 可選擇單電源(5V)或是多電源(5V+12V-12V)兩種 USB界面 直接連接個人電腦 光纖界面連接光纖網路 2實驗界面包括 JP1負責內部 CPLD的電路下載 JP2JP3兩組 50P的擴張用接頭 JP4 標準 26P接頭用以連接各種實驗模組 3內部的電路配置包括 A以 SO-DIMM接頭連接各種 eM_FPGA卡 B內附 EEPROMFlashROM和 SRAM提供 FPGA作應用測試 C以一顆 FT232BM作為 USB界面解碼而以一顆 CPLD作為光纖網路解碼 D提供各種 eM_FPGA卡的電路下載功能 4內附五顆 LED由上而下依序為 usbLED指示 USB界面的讀寫狀態 tstLED可由 FPGA電路自行定義 stsLED可由 FPGA電路自行定義 RxLED 可由 FPGA電路自行定義 TxLED 可由 FPGA電路自行定義

79

外部接腳定義

外部接頭的接點順序圖示如下

上視圖

JP11 9 JP4

126225

JP31

50249

JP21

50249

而各接頭的接點定義如下

JP1 JP4 JP2 JP3 1+33V 1+12V 2+12V 1 GND 2 GND 1 GND 2 GND 2GND 3 ADC 4 DAC 3POWER 4ALARM 3 +5V 4 +5V 3nc 5 yPB2 6 yPB3 5RxNET 6TxNET 5+12V 6+12V 4TCK 7 yPB1 6 yPB4 7RxUSB 6TxUSB 7-12V 6-12V 5nc 9 yPB0 10yPB5 9RxCAN 10TxCAN 9 ADC 10 DAC 6TDO 11yPB6 12yPB7 11P0D0 12P0D1 11P1D0 12P1D1 7TDI 13yGND 14yPC3 13P0D2 14P0D3 13P1D2 14P1D3 8nc 15yPC2 16yPC1 15P0D4 16P0D5 15P1D4 16P1D5 9TMS 17yPC0 18yPA0 17P0D6 18P0D7 17P1D6 18P1D7 19yPA1 20yPA2 19P0D8 20P0D9 19P1D8 20P1D9 21yPA3 22GND 21P0D10 22P0D11 21P1D10 22P1D11 23GND 24+5V 23P0D12 24P0D13 23P1D12 24P1D13 25+5V 26nc 25P0D14 26P0D15 25P1D14 26P1D15 27P2D0 28P2D1 27PxA0 28PxA1 29P2D2 30P2D3 29PxA2 30PxA3 31P2D4 32P2D5 31PxA4 32PxA5 33P2D6 34P2D7 33PxA6 34PxA7 35P2D8 36P2D9 35PxB0 36PxB1 37P2D10 38P2D11 37PxB2 38PxB3 39P2D12 40P2D13 39PxB4 40PxB5 41P2D14 42P2D15 41PxB6 42PxB7 43ADC0 44ADC1 43PxC0 44PxC1 45ADC2 46ADC3 45PxC2 46PxC3 47ADC4 48ADC5 47PxC4 48PxC5 49DAC0 50DAC1 49PxC6 50PxC7

80

eM_FPGA 模組

在各種 eM_FPGA 模組中FPGA 對外電路的標準配置圖如下

24576MHz

FlashROM

26PSRAM

EEPROM

mD[8]

yPA[4]

FPGACPLD

mA[19]mRDmWRmCSeeCKeeCSeeDIeeDO

光纖界面 RxNETTxNET

USB 界面 RxUSBTxUSBCLK24MPOWERALARM

LED

tstLEDstsLEDRxLEDTxLED

yPB[8]yPC[4]

ADCDAC

ADC[8]

實驗模組

ADC[2]

DAC[2]

xPA[4]

xPB[8]

xPC[4]

基礎實驗

其中

1FPGACPLD可以選擇下述幾種 XC2V250XC2V1000 採用 eM_2V1K模組其中 FPGA為 FG456包裝 XC3S400XC3S1000XC3S1500採用 eM_3S1K模組其中 FPGA為 FG456包裝 XC3S400XC3S1000XC3S1500採用 eM_3S1K模組其中 FPGA為 FG456包裝 XC3S50XC3S200XC3S400 採用 eM_3S50模組其中 FPGA為 TQ144包裝 XC95144XLXC95288XL 採用 eM_95XL模組其中 CPLD為 TQ144包裝 2採用 FG456包裝者可以控制所有的 IO界面 3採用 TQ144包裝者只是不能控制 RAM和 FlashROM而可以控制其他所有的界面 4所有 FPGA模組都可自由選擇由 USB界面或是由光纖界面下載電路但是 CPLD模組只能固定由 USB界面下載電路

5所有 FPGACPLD模組都可透過 26P接頭連接既有的各種實驗模組

81

FPGA 接腳對照表

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

mD0 XD6 mD0 A17 C13 -- -- mD1 XD7 mD1 B17 D12 -- -- mD2 XD8 mD2 C17 D11 -- -- mD3 XD9 mD3 D17 C11 -- -- mD4 XD10 mD4 E17 D10 -- -- mD5 XD11 mD5 E16 C10 -- -- mD6 XD12 mD6 E14 D9 -- -- mD7 XD13 mD7 E13 D7 -- -- mA0 XD14 mA0 D13 C7 -- -- mA1 XD15 mA1 C13 D6 -- -- mA2 XA0 mA2 V5 C3 -- -- mA3 XA1 mA3 U5 C4 -- -- mA4 XA2 mA4 Y2 D3 -- -- mA5 XA3 mA5 Y1 D4 -- -- mA6 XA4 mA6 V4 E3 -- -- mA7 XA5 mA7 V3 E4 -- -- mA8 XA6 mA8 W2 F3 -- -- mA9 XA7 mA9 W1 F4 -- -- mA10 XA8 mA10 T2 G6 -- -- mA11 XA9 mA11 T1 K3 -- -- mA12 XA10 mA12 R4 K10 -- -- mA13 XA11 mA13 R3 L3 -- -- mA14 XA12 mA14 R2 L4 -- -- mRD XRD mRD R1 D5 -- -- mWR XWR mWR P6 C6 -- --

POWER P0A0 POWER B4 B20 P1 P5 ALARM P0A1 ALARM A4 A19 P2 P6 RxNET P0A2 RxNET C4 B19 P4 P7 TxNET P0A3 TxNET C5 A18 P5 P9 RxUSB P0B0 RxUSB B5 A15 P6 P10 TxUSB P0B1 TxUSB A5 B15 P7 P11 RxCAN P0B2 RxCAN D6 A14 P8 P12 RxCAN P0B3 TxCAN C6 B14 P10 P13

CLK24M CLK24M CLK24M E12 B12 P124 P38

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

PWM0H P3A0 P0D0 E6 A8 P21 P23 PWM0L P3A1 P0D1 E5 B8 P23 P24 PWM1H P3A2 P0D2 C2 B6 P24 P25 PWM1L P3A3 P0D3 C1 A5 P25 P26 PWM2H P3A4 P0D4 D2 B5 P26 P27

82

PWM2L P3A5 P0D5 D1 A4 P27 P28 PWMenb P3A6 P0D6 E4 B4 P28 P30 PHT1Z P3A7 P0D7 E3 A3 P30 P31 PHT1A P3B0 P0D8 G2 C1 P31 P32 PHT1B P3B1 P0D9 G1 C2 P32 P33 PHT0A P3B2 P0D10 H5 D1 P33 P34 PHT0B P3B3 P0D11 J6 D2 P35 P35 AMP0 P3B4 P0D12 H4 E1 P36 P39 AMP1 P3B5 P0D13 H3 E2 P40 P40 AMP2 P3B6 P0D14 H2 F2 P41 P41 AMP3 P3B7 P0D15 H1 G1 P44 P43 eeSK P0C3 P1D0 C10 B9 P20 P22 eeCS P0C2 P1D1 D10 A9 P18 P21 eeDI P0C1 P1D2 F10 B10 P17 P20 eeDO P0C0 P1D3 E10 B11 P15 P19 ssCK P0B7 P1D4 E8 A11 P14 P17 ssCS P0B6 P1D5 E7 A12 P13 P16 ssDI P0B5 P1D6 A6 B13 P12 P15 ssDO P0B4 P1D7 B6 A13 P11 P14

ppCLK P3C0 P1D8 K4 G2 P46 P44 ppDIN P3C1 P1D9 K3 K1 P47 P45 TxD P3C2 P1D10 K2 K2 P50 P46 RxD P3C3 P1D11 K1 L1 P51 P48

tstLED P3C4 P1D12 L5 L2 P52 P49 stsLED P3C5 P1D13 L4 M1 P53 P50 RxLED P3C6 P1D14 L3 M2 P55 P51 TxLED P3C7 P1D15 L2 N1 P56 P52

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

xPA0 P2A0 P2D0 AA3 N2 P59 P53 xPA1 P2A1 P2D1 Y4 T1 P60 P54 xPA2 P2A2 P2D2 AA4 T2 P63 P56 xPA3 P2A3 P2D3 AB4 U2 P68 P57 xPC0 P2A4 P2D4 W5 V1 P69 P58 xPC1 P2A5 P2D5 Y5 V2 P70 P59 xPC2 P2A6 P2D6 AA5 W1 P73 P60 xPC3 P2A7 P2D7 AB5 W2 P74 P61

-- P2B0 P2D8 V6 Y1 P76 P64 -- P2B1 P2D9 V7 Y2 P77 P66 -- P2B2 P2D10 W6 AA3 P78 P68

mCS P2B3 P2D11 Y6 AB4 P79 P69 mA15 P2B4 P2D12 V9 AA4 P80 P70 mA16 P2B5 P2D13 V10 AB5 P82 P71 mA17 P2B6 P2D14 W10 AA5 P83 P74 mA18 P2B7 P2D15 Y10 AA6 P84 P75 CS0 P2C0 ADC0 AA10 AB8 P85 P76

83

SDIN0 P2C1 ADC1 AB10 AA8 P86 P77 CS1 P2C2 ADC2 U10 AB9 P87 P78

SDIN1 P2C3 ADC3 U11 AA9 P89 P79 SCLK P2C4 ADC4 V11 AB10 P90 P80 CS2 P2C5 ADC5 W11 AA10 P92 P81

SDOUT P2C6 ADC6 Y11 AB11 P93 P82 LDAC P2C7 ADC7 AA11 AA11 P95 P83

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

xPB0 P1A0 PxA0 M1 M3 P135 P85 xPB1 P1A1 PxA1 M2 M4 P132 P86 yPB2 P1A2 PxA2 M3 N3 P131 P87 yPB3 P1A3 PxA3 M4 N4 P130 P88 yPB1 P1A4 PxA4 M5 T4 P129 P91 yPB4 P1A5 PxA5 M6 T5 P128 P92 yPB0 P1A6 PxA6 N1 U3 P127 P93 yPB5 P1A7 PxA7 N2 U4 P125 P94 yPB6 P1B0 PxB0 U13 V3 P119 P95 yPB7 P1B1 PxB1 V13 V4 P118 P96 xPB2 P1B2 PxB2 W13 W3 P116 P97 xPB3 P1B3 PxB3 Y13 W4 P113 P98 xPB4 P1B4 PxB4 AA13 Y3 P112 P100 xPB5 P1B5 PxB5 AB13 Y4 P96 P101 yPC3 P1B6 PxB6 U12 Y5 P97 P102 yPC2 P1B7 PxB7 V12 W5 P98 P103 yPC1 P1C7 PxC0 AB17 W11 P108 P113 yPC0 P1C6 PxC1 AA17 Y11 P107 P112 yPA0 P1C5 PxC2 Y17 W10 P105 P111 yPA1 P1C4 PxC3 W17 Y10 P104 P110 yPA2 P1C3 PxC4 AB18 W9 P103 P107 yPA3 P1C2 PxC5 AA18 W8 P102 P106 xPB6 P1C1 PxC6 Y18 W6 P100 P105 xPB7 P1C0 PxC7 W18 Y6 P99 P104

84

eM_DEMO 模組

eM_DEMO 模組的電路配置圖如下

eM_USB 模組

數字型 LED

0 1 2 34 5 6 78 9 A BC D E F

燈號型 LED

44 鍵盤

ADC0 ADC1 DAC0 DAC1

LED 選擇KEY 選擇

其中

1eM_DEMO模組的基本功能包括 A將 xPAxPBxPC等 16個 IO訊號引出控制 LED和鍵盤電路 B將 ADDA訊號引出並放大成+-10V的工作範圍 2LED和鍵盤可以選擇三種模式由 LED和 KEY 兩組開關作選擇圖示如下

模式1

0123

模式2 模式3

0 1 2 34 5 6 78 9 A BC D E F

0123

3模式14鍵輸入並搭配 16點的 LED燈號顯示其中 16點 LED分別對映到 xPA[0~3]xPB[0~7]和 xPC[0~3] 4組按鍵分別對映到 xPC[0~3] 4模式24鍵輸入並搭配四個 7段式數字顯示其中 數字顯示由 xPA[0~3]作數字掃瞄而由 xPB[0~7]作 7段式 LED控制 4組按鍵 分別對映到 xPC[0~3] 5模式316鍵輸入並搭配四個 7段式數字顯示其中 數字顯示由 xPA[0~3]作數字掃瞄而由 xPB[0~7]作 7段式 LED控制 16組按鍵由 xPA[0~3]作鍵盤掃瞄而由 xPC[0~3]作鍵盤讀取 6根據VHDL與數位邏輯設計的章節其中 第 1章至 10章的實驗採用模式1而 第 11章實驗採用模式2而 第 12章之後的實驗都採用模式3

85

FPGA UCF 定義

eM_3S1K 模組

NET CLK LOC = B12

NET XAlt0gt LOC = N2

NET XAlt1gt LOC = T1

NET XAlt2gt LOC = T2

NET XAlt3gt LOC = U2

NET XBlt0gt LOC = M3

NET XBlt1gt LOC = M4

NET XBlt2gt LOC = W3

NET XBlt3gt LOC = W4

NET XBlt4gt LOC = Y3

NET XBlt5gt LOC = Y4

NET XBlt6gt LOC = W6

NET XBlt7gt LOC = Y6

NET XClt0gt LOC = V1

NET XClt1gt LOC = V2

NET XClt2gt LOC = W1

NET XClt3gt LOC = W2

NET YAlt0gt LOC = W10

JP4 接頭

NET YAlt1gt LOC = Y10

NET YAlt2gt LOC = W9

NET YAlt3gt LOC = W8

NET YBlt0gt LOC = U3

NET YBlt1gt LOC = T4

NET YBlt2gt LOC = N3

NET YBlt3gt LOC = N4

NET YBlt4gt LOC = T5

NET YBlt5gt LOC = U4

NET YBlt6gt LOC = V3

NET YBlt7gt LOC = V4

NET YClt0gt LOC = Y11

NET YClt1gt LOC = W11

NET YClt2gt LOC = W5

NET YClt3gt LOC = Y5

在光碟片中 RFFPGAVHDLDEMOBIT3S1K 裡有 VHDL 與數位邏輯設計書本範例原始檔與合成檔

86

eM_3S50 模組

NET CLK LOC = P124

NET XAlt0gt LOC = P59

NET XAlt1gt LOC = P60

NET XAlt2gt LOC = P63

NET XAlt3gt LOC = P68

NET XBlt0gt LOC = P135

NET XBlt1gt LOC = P132

NET XBlt2gt LOC = P116

NET XBlt3gt LOC = P113

NET XBlt4gt LOC = P112

NET XBlt5gt LOC = P96

NET XBlt6gt LOC = P100

NET XBlt7gt LOC = P99

NET XClt0gt LOC = P69

NET XClt1gt LOC = P70

NET XClt2gt LOC = P73

NET XClt3gt LOC = P74

NET YAlt0gt LOC = P105

JP4 接頭

NET YAlt1gt LOC = P104

NET YAlt2gt LOC = P103

NET YAlt3gt LOC = P102

NET YBlt0gt LOC = P127

NET YBlt1gt LOC = P129

NET YBlt2gt LOC = P131

NET YBlt3gt LOC = P130

NET YBlt4gt LOC = P128

NET YBlt5gt LOC = P125

NET YBlt6gt LOC = P119

NET YBlt7gt LOC = P118

NET YClt0gt LOC = P107

NET YClt1gt LOC = P108

NET YClt2gt LOC = P98

NET YClt3gt LOC = P97

在光碟片中 RFFPGAVHDLDEMOBIT3S200 裡有VHDL與數位邏輯設計書本範例原始檔與合成檔

87

eM_95XL 模組

NET CLK LOC = SPIN38

NET XAlt0gt LOC = SPIN53

NET XAlt1gt LOC = SPIN54

NET XAlt2gt LOC = SPIN56

NET XAlt3gt LOC = SPIN57

NET XBlt0gt LOC = SPIN85

NET XBlt1gt LOC = SPIN86

NET XBlt2gt LOC = SPIN97

NET XBlt3gt LOC = SPIN98

NET XBlt4gt LOC = SPIN100

NET XBlt5gt LOC = SPIN101

NET XBlt6gt LOC = SPIN105

NET XBlt7gt LOC = SPIN104

NET XClt0gt LOC = SPIN58

NET XClt1gt LOC = SPIN59

NET XClt2gt LOC = SPIN60

NET XClt3gt LOC = SPIN61

NET YAlt0gt LOC = SPIN111

JP4 接頭

NET YAlt1gt LOC = SPIN110

NET YAlt2gt LOC = SPIN107

NET YAlt3gt LOC = SPIN106

NET YBlt0gt LOC = SPIN93

NET YBlt1gt LOC = SPIN91

NET YBlt2gt LOC = SPIN87

NET YBlt3gt LOC = SPIN88

NET YBlt4gt LOC = SPIN92

NET YBlt5gt LOC = SPIN94

NET YBlt6gt LOC = SPIN95

NET YBlt7gt LOC = SPIN96

NET YClt0gt LOC = SPIN112

NET YClt1gt LOC = SPIN113

NET YClt2gt LOC = SPIN103

NET YClt3gt LOC = SPIN102

在光碟片中 RFFPGAVHDLDEMOSVF95288XL 裡有VHDL與數位邏輯設計書本範例原始檔與合成

檔案

88

eM_FPGA 模組

NET CLK LOC = E12

NET XAlt0gt LOC = AA3

NET XAlt1gt LOC = Y4

NET XAlt2gt LOC = AA4

NET XAlt3gt LOC = AB4

NET XBlt0gt LOC = M1

NET XBlt1gt LOC = M2

NET XBlt2gt LOC = W13

NET XBlt3gt LOC = Y13

NET XBlt4gt LOC = AA13

NET XBlt5gt LOC = AB13

NET XBlt6gt LOC = Y18

NET XBlt7gt LOC = W18

NET XClt0gt LOC = W5

NET XClt1gt LOC = Y5

NET XClt2gt LOC = AA5

NET XClt3gt LOC = AB5

NET YAlt0gt LOC = Y17

JP4 接頭

NET YAlt1gt LOC = W17

NET YAlt2gt LOC = AB18

NET YAlt3gt LOC = AA18

NET YBlt0gt LOC = N1

NET YBlt1gt LOC = M5

NET YBlt2gt LOC = M3

NET YBlt3gt LOC = M4

NET YBlt4gt LOC = M6

NET YBlt5gt LOC = N2

NET YBlt6gt LOC = U13

NET YBlt7gt LOC = V13

NET YClt0gt LOC = AA17

NET YClt1gt LOC = AB17

NET YClt2gt LOC = V12

NET YClt3gt LOC = U12

在光碟片中 RFFPGAVHDLDEMOBIT2V250 裡有VHDL與數位邏輯設計書本範例原始檔與合成檔

89

Page 11: RFFPGA 直流馬達實驗手冊juniortek.com.tw/program/manual/RF-DC-mal.pdf · em_demo模組 em_dcm 直流伺服馬達 dc電源 rffpga 系統的直流馬達實驗規劃 其中包括:

PWM+ PWM- DIS 直流馬達 X X 1 OFF 1 0 0 正電壓驅動 0 1 0 負電壓驅動

3功率驅動級中並沒有啟動保護所以必須附加電源開關作手動控制 4馬達轉角由光電盤的 AB相訊號作回授 5所有控制訊號都經由 JP4接頭接到 RFFPGA控制器中可由 FPGA作控制

三角波產生器

實驗中以中間對齊型的 PWM 訊號為控制目標首先建立對稱的三角波作為參考訊號其

對映的 VHDL 程式範例如下

TRIANGLE_WAVE block signal Q STD_LOGIC_VECTOR (11 downto 0) signal CEDIR STD_LOGIC begin process (CLKRESET) -- sequential logic begin if RESET=1 then --reset Qlt=000000000111 --reset to 7 elsif CLKevent and CLK=1 then --CLK=gt1 trigger if CE=1 then --clock enable if DIR=0 then Qlt=Q+1 --up counter else Qlt=Q-1 --down counter end if end if end process -- combinational logic CE lt= SYSTEM(0) --24MHz clock DIR lt= SYSTEM(13) --4KHz square wave REF lt= Q --12-bit reference (7~3079) end block TRIANGLE_WAVE 其中

1程式設計為可適用於不同的系統時鐘包括 49152MHz和 24576MHz 兩種型式 2計數器的基本頻率為 24576MHz所以用 CE=SYSTEM(0)來控制計數動作 3三角波的頻率設為 4KHz所以計數器的峰值為(2457642=3072) 4正反計數器和系統時序同步而以 SYSTEM(13)做為同步控制由於 SYSTEM(13)為 4KHz的方波設定 DIR=SYSTEM(13)即可控制計數器的上升或下降

5在 RESET時將計數器的初值設為 7使得計數範圍修正為 7~3079所以即使有些同步誤差也不會產生負數輸出的嚴重影響

6三角波以 REF[12]作輸出數值範圍在 7~3079之間頻率為 4KHz

11

如果 PWM 的頻率過低馬達端會產生震動噪音這時就必須提高 PWM 的頻率在前面程

式中如果要將 PWM 頻率從 4KHz 提升為 8KHz則可更改如下

if DIR=0 then Qlt=Q+2 --up counter else Qlt=Q-2 --down counter DIR lt= SYSTEM(12) --8KHz square wave 其中

1將 DIR改由 8KHz的 SYSTEM(12)來控制 2同時將計數器改成+2-2的正反計數器 3如此仍然能夠維持 REF輸出的數值範圍(7~3079)

如果還要再將 PWM 的頻率提高到 16KHz則可更改如下

if DIR=0 then Qlt=Q+4 --up counter else Qlt=Q-4 --down counter DIR lt= SYSTEM(11) --16KHz square wave 其中

1將 DIR改由 16KHz的 SYSTEM(11)來控制 2同時將計數器改成+4-4的正反計數器 3如此仍然能夠維持 REF輸出的數值範圍(7~3079)

表面上三角波產生器的數值精度為 12-bit時間精度為 24MHz但是由於 PWM 訊號將

透過 FPGA2 輸出而高速串列界面的更新速度為 15MHz所以就 DCM 模組所收到的 PWM

控制訊號而言其時間精度將降低為 15MHz而數值上的精度將降低為 8-bit等效範

圍為 0~192 或是+-96 之間整體而言控制上的精度約為 05仍可符合馬達控制的

需求

PWM 波形產生器

接著處理比較的動作並產生 PWM 波形對映的 VHDL 程式範例如下

PWM_COMPARATOR block signal CEPUPD STD_LOGIC signal D0D1D2D3D4 STD_LOGIC begin process (CLK) -- sequential logic begin if CLKevent and CLK=1 then --CLK=gt1 trigger if CE=1 then --CLK enable D4lt=D3 D3lt=D2 D2lt=D1 D1lt=D0 --delay end if end if

12

end process -- combinational logic CE lt= CLK1M D0 lt= 1 when CMDgtREF else 0 --PWM generation PU lt= D1 and D2 and D3 and D4 --up-side output PD lt= not D1 and not D2 and not D3 and not D4 --down-side output PWMU lt= PU --up-side PWM output PWMD lt= PD --down-side PWM output PWMI lt= (not PU and not PD) or not ENB --PWM disable PWMR lt= REF --PWM reference end block PWM_COMPARATOR

程式中所對映的時序如下

CE

REF

CMD

D1D2D3D4PWMUPWMDPWMI

其中

1以 15MHz的 CE訊號為基本頻率 2將電壓命令 CMD和參考波形 REF作比較若 CMDgtREF則設定 D0=0否則設定

D0=1 3將 D0訊號作四次的延遲處理延遲訊號依序為 D1D2D3D4最後再重新組合成

PWM的輸出波形 4其輸出訊號包括 PWMU對映到 DCM模組中的 PWM+訊號 PWMD對映到 DCM模組中的 PWM-訊號 PWMI對映到 DCM模組中的 DIS訊號為切換保護訊號 如此 PWMU作動和 PWMD作動之間將有 2us間隔中是兩者都不作動的也就是

PWMI的作動時間 5當 ENB命令=0時設定 PWMI=1而使得驅動器 OFF

13

回授訊號的處理

精密的伺服馬達動作必須將馬達的位置和速度加以量測後再執行回授控制因此速

度和位置的量測是精密控制中必要的一環我們通常用光電寫碼器或數位尺來進行量測

工作

光電寫碼器(Photo-Encoder)俗稱光電盤是利用光電量測進行的非接觸式數位量測元

件其基本裝置如下

LED光源

光電晶體偵測

以 LED 或是其他光源來發光而用 AB 相的兩組光電晶體來偵測當圓盤隨著馬達作轉

動時光電晶體即可偵測到其移動狀態由於圓盤中的小孔呈等距排列其透光部分和

不透光部分呈 50對 50的比例當圓盤轉動時光電晶體端就可以偵測到下述訊號

光電盤訊號(A 相)

光電盤訊號(B 相)

正轉

其中

1偵測方波的頻率即對應於圓盤轉動的頻率也就是轉速 2偵測方波的個數即對應於圓盤轉過的孔數也就是轉角(相對角度) 3由於 AB相的兩組光電晶體在機械安裝上的角度不同使得讀出訊號也有 90 度的

差異如果馬達正轉則 A相超前如果馬達反轉則 B相超前

有了兩相的光電盤訊號只要能偵測其中的相位變化就可以分辨光電盤的正反轉運動

了例如正轉時的光電盤時序如下

14

光電盤訊號 (A 相 )

光電盤訊號 (B 相 )

正轉

微分訊號(A+)

微分訊號(A-)

微分訊號(B+)

微分訊號(B-)

正轉脈衝(CW)

其中

1針對 AB 兩相訊號作微分處理即可取得 A+A-B+B-的上緣微分和下緣微分 2將微分訊號和和原有的 AB相訊號作比較即可找出正轉脈衝 3計算正轉脈衝的頻率和個數即可取得馬達的速度和轉角 4如此得到的脈衝數將是原有 AB相頻率的四倍所以稱之為乘四解碼電路

同樣的如果針對光電盤的反轉時序一樣可以得出反轉訊號圖示如下

光電盤訊號(A相)

光電盤訊號(B相)

反轉

反轉脈衝(CCW)

其公式如下

CW lt= (A+ and not B) CCW lt= (A+ and B) or (A- and B) or (A- and not B) or (B+ and A) or (B+ and not A) or (B- and not A) or (B- and A)

整合光電盤回授的處理其系統方塊圖如下

數位濾波

D Q

CK

DLA

PHA

D Q

CK

DLB

PHB

CLK

乘四解碼電路

DIR

PLS

數位濾波

PA

PB

正反計數

CNT DB

RD

CS

包括

15

1首先利用簡單的數位濾波器將 AB項的雜訊排除 2接著利用延遲電路作微分處理並以乘四解碼電路解出轉動的脈波和方向 3最後利用正反計數器作計數並將計數值讀入匯流排

數位濾波器

光電盤的 AB 相訊號中如果產生雜訊干擾的現象會使得馬達轉角的計量上產生永久

性的累積誤差將造成控制上無法彌補的錯誤所以 AB 相訊號上的雜訊一定要盡力排

除下面是常用的數位濾波器設計範例

FILTER_A block -- digital filter for A signal CED0D1D2 STD_LOGIC begin process (CLK) -- sequential logic begin if CLKevent and CLK=1 then --CLK=gt1 trigger if CE=1 then --clock enable D2lt=D1 D1lt=D0 D0lt=PA --delay 3 clocks PHA lt= (D0 and D1 and D2) or ((D0 or D1 or D2) and PHA) end if end if end process -- combinational logic CE lt= CLK1M --15MHz clock end block FILTER_A 其中

1以 15MHz的頻率為控制基準 2利用延遲電路依序產生 D0D1D2的延遲訊號 3連續三個 1(D0D1D2 都是 1)定義為 1連續三個 0(D0D1D2 都是 0)定義為 0而其他不連續的 10 都定義為雜訊如此可將高頻的雜訊濾除

4但是相對的AB相訊號的最高頻率將限制為 250KHz(連續 3個 1和連續 3個 0)頻率過高的 AAB相訊號將被視為雜訊而不處理必須特別注意

正反轉的解碼和計數

依據前面的公式說明對映的 VHDL 程式範例如下

DECODER block signal DLADLB STD_LOGIC begin process (CLK) -- sequential logic begin if CLKevent and CLK=1 then --CLK=gt1 trigger DLAlt=PHA DLBlt=PHB --delay 1-clock end if end if

16

end process -- combinational logic DIR lt= (not PHA and DLA and not PHB) or ( PHA and not DLA and PHB) or (not PHB and DLB and PHA) or ( PHB and not DLB and not PHA) PLS lt= (not PHA and DLA) or (PHA and not DLA) or (not PHB and DLB) or (PHB and not DLB) end block DECODER 其中

1PHAPHB為經過雜訊濾波後的 AB相訊號而 DLADLB是其延遲訊號 2根據乘四解碼電路的公式取得 DIR和 PLS訊號其中 DIR用以控制計數器的正反向 PLS用以控制計數器的計數與否

所以接下去就是正反計數器的設計範例如下

COUNTER block signal Q STD_LOGIC_VECTOR(11 downto 0) begin process (CLKRESET) -- sequential logic begin if RESET=1 then --power-on reset Qlt=000000000000 --reset to 0 elsif CLKevent and CLK=1 then --CLK=gt1 trigger if PLS=1 then --clock enable if DIR=1 then Qlt=Q-1 --down counter else Qlt=Q+1 --up counter end if end if end if end process -- combinational logic CNT lt= Q --counter output end block COUNTER 其中

1這是標準的正反計數器架構在開機時自動復歸 2計數器的長度為 12-bit可依需要自行調整

DCM模組中的光電盤精度為每圈500格經過乘四解碼後相當於每圈2000格所以12-bit

計數器只能處理 2 圈的應用範圍絕對不夠在真正應用時一定要用軟體或硬體的方

式再擴張成 16-bit 或是 32-bit 的寬度來處理才行

17

3實驗項目

在直流伺服馬達控制系統中規劃五個實驗項目由系統首頁做選擇每項實驗操

作整個系統實驗組成由各項實驗項目 CAI 檔及各項實驗項目程式連結 PLC 檔結合而成茲表列如下

直 流 伺 服 實 驗 e x p _d c m c ai

開 環 路 電 壓 控 制

系 統 首 頁 實 驗 程 序

e x p _p w m c ai

開 環 路 速 度 控 制 e x p _s p ee d c a i

閉 環 路 位 置 控 制 e x p _a n gl e c a i

加 減 速 的 位 置 控 制 e x p _a c c c ai

正 弦 波 位 置 控 制 e x p _s i n c ai

C A I 圖 控 檔

直 流 伺 服 實 驗 開 環 路 電 壓 控 制

系 統 首 頁 實 驗 程 序

e x p _p w m p lc

開 環 路 速 度 控 制 e x p _s p ee d p l c

閉 環 路 位 置 控 制 e x p _a n gl e p l c

加 減 速 的 位 置 控 制 e x p _a c c p lc

正 弦 波 位 置 控 制 e x p _s i n p lc

e T T Y 批 次 檔

18

4安裝程序

31 將 RFFPGA中的程式拷貝至工作硬碟中進入 DC子目錄資料夾中其中包含下

列檔案

檔案 內容說明 mod SIN_wave MODPWM_wave MODIIR1_filter MODDAS4

MODPOS_inputMODPWM_outputMODACC_controlMODPD_controlMOD這些檔案是由 ASM重新編譯出由 testDCMmem所需執行模組檔

asm SIN_waveasmPWM_waveasmIIR1_filterasmDAS4asm POS_inDCMasmPWM_outDCMasmACC_conDCMasmPD_controlasm是各模組組合語言所設計 SOURCE檔

plc 為進行實驗所需的各批次檔 bit piDSPv0bit為下載到 FPGA的 BIT檔其功能為將 FPGA規劃成

具備 piDSP控制晶片功能提供直流伺服控制所需的控制程式

撰寫 testDCMsys 記載進行 DCM實驗時所需的模組 testDCMMEM 連結完成的 DSP執行檔用來進行 DCM實驗 testDCMvar 紀錄 DCM實驗時的參數對照表

在進行實驗前先將實驗所需的系統程式與模組程式分別說明加以說明系統所

需的程式模組由 testDCMsys 來描述程式列印如下

module fg1 PWM_wavemod 方波產生器

module fg2 SIN_wavemod 弦波產生器

module cn1 ACC_controlmod 加減速控制器

module cn2 PD_controlmod 比例微分控制器

module io1 POS_inputmod 位置和速度讀值

module io2 PWM_outputmod PWM 電壓輸出界面

module ft1 IIR1_filtermod 一階濾波器

module das das4mod 示波器資料蒐集

module io3 LEDKEYmod LEDKEY 界面

其中包括

1兩組波型產生器作為測試命令包括正弦波和方波 2兩組控制器提供包括加減速PD控制器的功能可依照實驗需求搭配使用 3兩組輸入輸出界面執行 PWM輸出和相位回授的界面處理 4一組低通濾波器作為電壓開迴路控制迴路和速度閉迴路控制的模擬使用 5DAS4mod是示波器專用的配合模組不論任何實驗都必須加入此模組 6Ledmod是四位數字七段顯示與 44矩陣按鍵模組

19

5執行程序

首先進入 RFFPGA 裡子目錄 DC直接點選 fPLCexe 出現下面操作畫面(也可直接將此檔

案放置桌面直接點選)

進入下面操作畫面

20

首先使用滑鼠在 FPGA下載按鈕單擊動作使 FPGA變成 piDSP晶片 如您撰寫組合語言時可使用 eASM按鈕 經編譯完成後產生MOD檔 如您撰寫系統連結程式時可使用 eLINK按鈕 經連結完成後產生MEM與VAR檔 點選實驗三後顯示如下 選擇程式下載再按程式啟動這時直流伺服馬達開始做位置控制在操控畫面放置 P 參數設定欄更改參數時馬達即時隨參數改變而產生不同響應 直接點選程式停止時結束所有控制動作再按回首頁選擇其他實驗

21

6實驗說明

下圖所示為直流馬達的控制系統方塊圖透過電流速度以及位置的回授再搭

配適當的控制器可建立完整的閉迴路控制系統在後面的實驗中將依此一系統方塊圖

逐步建立速度和位置的控制實驗各實驗的說明和操作方式及參考實驗結果將逐一進

行詳細的說明

控制

參考位置

速度 位置速

度控制 電流控制

電力電

子換流

位置速

度感測

i

+ -

壓ν

位置

速度

i

DC直流馬達之控制系統方塊圖

PWM 驅動方式只是簡單的開環路控制而高精度的馬達控制必須透過回授控制來完成

對於邏輯電路的設計者而言必須先瞭解基本的回授控制架構以便將來轉換成實用的

邏輯電路設計

設計說明

開環路特性

在電壓驅動的狀況下直流馬達開環路控制的示意圖如下

+-

22

如果換算成數學模式則轉換成下面的架構

+-Vc

R L

EMF

+

-

ITB

J

ω

其中

1其中的變數和參數包括 Vc 控制的電壓命令 R 電樞迴路的等效電阻 L 電樞迴路的等效電感 EMF電樞產生的反電動勢 i 電樞迴路中的電流 T 馬達所產生的扭力 J 馬達和負載的等效慣量 B 馬達和負載的等效摩擦力 ω 馬達所產生的速度 2所牽涉的物理公式包括 電壓迴路Vc = Ri + L(didt) + EMF 即電樞迴路中的電壓平衡 動力負載T = Bω + J(dωdt) 即扭力平衡 馬達特性T = Kti 所產生的扭力和電流成正比 電機特性EMF= Keω 所產生的電動勢和轉速成正比 其中新增的參數包括 Kt馬達的扭力常數 Ke馬達的反電動勢常數 3將微分項作拉式轉換(Laplase Transformation)的對映即 s = ddt 可將微分方程式轉換成更簡單的代數方程式而產生到下面的控制方塊圖

sL+R1Vc

+-EMF

iKt

TsJ+B1 ω

Ke

4在直流馬達的開環路特性中控制電壓(Vc)時輸入點而馬達轉速(ω)是輸出點即是控制馬達電壓以控制馬達轉速

5基本上馬達的開環路特性是個兩階系統類似於低通濾波器的特性在許多應用 場合其開環路特性還可以再簡化成一階系統方塊圖如下

23

sτ +1

KmVc ω 其中 τ一階系統的時間常數 Km一階系統的穩態增益

採用兩階系統的分析方式雖然會比較精細但是用一階系統來分析則可簡化所有的設計

過程因為這裡的實驗重點是邏輯設計所以在本章中我們都用一階系統作分析

系統響應的要求

就控制系統而言最重要的需求就是系統響應包括

穩態特性通常以穩態誤差為指標即是穩態時系統輸出和輸入之間的差異 暫態特性通常以上升時間(Rise Time)和過越比率(Overshoot)為指標

一個理想中的伺服控制系統其系統響應應該是

1穩態誤差為 0即馬達輸出將追隨輸入作變化沒有誤差 2過越比例為 0即馬達輸出絕對不會產生衝過頭的現象 3上升時間為 0即馬達輸出隨時追上輸入命令不會有控制上的延遲現象

當然這是太理想了一個合理的伺服控制系統應該是

1穩態誤差越小越好最好為 0 2過越比例越小越好最好為 0 3上升時間越短越好當然無法為 0但是盡力就是了

速度的回授控制

回授控制的目的就是為了改善系統響應以一階系統代表的馬達控制為例

sτ+1

KmVc ω

在步階響應(Step Response)時其特性如下

1穩態誤差由 Km決定 2過越比例為 0 3上升時間即是其時間常數(τ)

如果用比例控制器(P 控制器)作速度回授的控制則控制方塊圖如下

sτ+1

KmVc ωKp

err

P控制器 直流馬達ωc

速度回授

速度命令 + 速度響應-

24

其中

1速度命令並不直接控制馬達的驅動電壓而是 A將速度命令和速度回授相比找出其誤差訊號 err B依誤差訊號來控制驅動電壓 誤差越大則驅動電壓越高 誤差越小則驅動電壓越低 誤差為負則驅動電壓也為負 其中的比例關係由 P控制器中的 Kp 來調整 2經由數學分析後其步階響應的特性為 A穩態誤差變成 1(1+kpkm)如果 kpkmgtgt1則穩態誤差將趨近於 0 B過越比例仍為 0 C上升時間即是由τ變成τ(1+kpkm)所以上升時間將變短 3換句話說只要 Kp值夠大不論是穩態誤差或是上升時間都會大幅改善

理論上P控制器的增益是越高越好最好是無限大但是實際上是有限制的原因是

1馬達的開環路特性是兩階系統而非一階系統一階系統只是簡化後的結果 2當兩階系統作高增益的回授控制時當增益過高時會產生極嚴重的過越現象使得

馬達產生巨幅震動而難以控制

所以 P控制器的增益雖然是越高越好但調整時仍要小心維持(過越比例為 0)的條件

轉角的回授控制

做為馬達的速度控制P控制器的效果不錯但是如果將 P控制器應用到馬達的轉角控

制其特性就不太理想圖示如下

sτ+1

KmVc ωKp

err

P控制器 直流馬達

θc

轉角回授

轉角命令 + 轉角響應-

s1 θ

其中

1從馬達的速度到轉角之間具有積分特性即 馬達的轉角是馬達速度的積分結果而 馬達的速度是馬達轉角的微分結果而 2其中的積分特性使得整個系統由一階特性變成兩階特性在兩階系統中當設定高

增益時會產生極嚴重的過越現象使得馬達產生巨幅震動而難以控制 3在 P控制器增益無法提高的狀況之下轉角控制效果將無法獲得改善

雖然 P控制器在轉角控制上的效果並不好但是在控制系統中還是有許多法寶可以選擇

25

其中 PD 控制器就是簡單又有效的一個好方法

從表面上來看PD 控制器比 P控制器多了一個微分項就數學上來看這微分項提供了

一個新零點(Zero)可以調整根軌跡圖的走向就實驗上來說這微分項提供了控制器

的預測功能說明如下

sτ+1

KmVc ωKp+sKd

err

P控制器 直流馬達

θc

轉角回授

轉角命令 + 轉角響應-

s1 θ

1轉角控制中 P控制器的問題是在嚴重的過越現象原因是在 P控制器的作用下只有當回授超過命令時才能做出「負向」的控制但這時已經來不及了因為積分器

中已經累積了過多的能量而無法立刻消失使得馬達轉角衝過了頭 2解決之道就是在回授超過命令之前就必須做出「負向」的控制使得積分器累積

的能量逐步減弱在到達目標時才能立刻煞車才能解除過越現象 3而微分項就是這個預測量因為當誤差量越來越小時其微分項是負值雖然微分

項(D)是負值 當誤差量(P)很大時(P+D)的結果還是正值所以還是「正向」控制 當誤差量(P)漸小時(P+D)的結果變成負值才會開始「負向」控制 換句話說在誤差為 0之前即可啟動負向控制產生煞車作用使得馬達提前減速

而即時停止在目標點上自然就解除過越現象了

所以在 PD 控制器中有兩項調整量其中

1Kp增益提供比例控制部分的增益而 Kd增益提供微分控制部分的增益 2Kp增益控制馬達的趨近速度主要影響的是上升時間 3Kd增益控制馬達的提前煞車主要影響的是過越比例 4在兩者搭配下就有機會得到 很快很短的上升時間同時也 不會產生過越現象

PD 控制器的執行

依據 PD 控制器公式可以建立以數位執行的 PD 控制器如下圖所示

cmdKp

fdk

+

-

err

old

+-

Kd

Z-1

out+

+

26

其中

1利用差分公式來取代 PD控制器中的微分公式定義如下 s ==gt (1-Z-1)DT 其中對映的變數包括 s 微分項 Z-1延遲一個抽樣週期 DT抽樣週期單位為 sec 2就執行面而言Z-1是延遲一個抽樣週期也就是以抽樣週期所控制的暫存器 3在上圖中將命令(cmd)和回授(fdk)相減後得到誤差值(err)再將 err延遲一個抽樣週期成為 old所以(err-old)DT即是微分項

4原始的微分控制公式為(err-old)DTKd必須先除再乘但是因為 DT和 Kd 都是常

數可以預先將 Kd修正成 Kd=(KdDT)那麼公式將修正為(err-old)Kd就只需要一個乘法而不需要除法了

同樣的 PD 控制器可以用許多不同的方法作執行包括

1以軟體方式執行例如在 DSP核心中以組合語言撰寫控制模組 2以硬體方式執行例如在 FPGA中直接設計邏輯電路 3以微碼方式執行以微碼作順序控制執行硬體運算工作

這裡先提供用組合語言撰寫的程式模組作為設計參考其他兩種方法將在後續的實驗中

再陸續作說明

模組程式範例PD_controlasm

local cmd R0 IP gnd 輸入點位置命令(可忽略) local fdk R1 IP gnd 輸入點位置回授(可忽略) local out R2 OP 輸出點用以控制速度迴路 local kp R3 256 參數增益 kp10=256 local kd R4 0 參數增益 kd10=256 local err R5 0 內部變數 local old R6 0 內部變數 local gnd R7 0 無輸入時的短路點 data 8 模組變數區長度 initial 開機啟動程序 WR out0 WR old0 RET out=old=0 timer 即時控制程序 RD (cmd) SUB (fdk) WR err MUL kp SFR 8 P=(cmd-fdk)kp256 RDS err SUBX old MUL kd SFR 8 D=(err-old)kd256 ADDS WR out out=P+D RET

27

其中

1PD控制模組中對外的界面變數包括 cmd命令的輸入點 fdk回授的輸入點 out控制的輸出點 2內部參數包括 Kp比例控制增益其中 10=256所以乘完後還需要再右移 8-bit Kd微分控制增益其中 10=256所以乘完後還需要再右移 8-bit 3內部變數包括 err臨時性的變數用以儲存誤差值的計算結果 old儲存性的變數用以儲存上一次抽樣控制時的 err值 4模組程式分成三部分包括 變數宣告local和data所宣告的部分 初值設定initial程序中先將 out和 old設定為 0 即時控制timer程序中依序執行 PD控制器中的每個步驟

控制目標的選擇

從字面上來看速度控制就是控制馬達的速度轉角控制就是控制馬達的轉角沒什麼

好討論的但是實際上確有許多問題第一的問題就是什麼是速度和轉角馬達的速

度和轉角如果不作量測如何得知

既然在量測中取得了速度和轉角資料那麼我們所控制的到底是物理學上的速度和轉

sτ+1

KmVc ωKp+sKd

err

P控制器 直流馬達

θc

轉角回授

轉角命令 + 轉角響應-

s1 θ

KxANG

轉角量測

角還是量測上的速度和轉角以下圖為例

其中

1以轉角量測裝置量測轉角例如裝在馬達軸端的光電盤和解碼電路 2轉角的量測輸出是 ANG而 ANG和物理轉角θ之間有 Km的增益關係 3只要 Km值不是 1那麼系統就不再是單位回授 4如果 Km還有非線性或失真現象那麼控制結果也將有非線性或失真現象

這些問題混雜起來會使得控制系統的分析變得更複雜如果要簡單處理就要認同現

實環境直接以量測結果為控制目標如下圖所示

28

sτ+1

KmVc ωKp+sKd

err

P控制器 直流馬達

θc

轉角回授

+-

s1 θ Kx

ANG轉角量測

其中

1直接以量測結果為控制目標將全系統還原成標準的單位回授控制 2所有的非線性或失真現象都進入開環路討論屬於可以補償的部分 3但是控制結果就是「量測上的轉角」而「物理學上的轉角」

量測誤差的問題

轉角θ

量測ANG

對於量測誤差而言最明顯的問題就是量化誤差圖示如下

其中

1以 DCM模組中的光電盤為例精度為每圈 500格經由乘四解碼計數後其等效

精度增加為每圈 2000格 2比(12000)圈更精密的部分都無法響應換句話說振幅越大的控制其相對誤差越

小而振幅越小的控制其相對誤差越大例如 當振幅為(12)圈時其控制誤差量為 01而 當振幅為(120)圈時其控制誤差量為 1 這是標準的的非線性現象

量化誤差不只影響穩態上的精度還會造成非線性的震動問題圖示如下

t

誤差值

+1

-1

其中

1由於量化誤差的問題只有當誤差超過+1或是-1時才會真正偵測到誤差也才

29

會施加控制量作補償 2所以穩態時的誤差將在+1-1之間擺動造成微幅的振動 3量化誤差越大震動越明顯而量化誤差很小時通常不易察覺出震動現象

微分量的計算

伺服系統中有兩處需要用到微分計算包括

1PD控制器中誤差微分量的計算 2速度控制器中速度回授值的量測

在理論上微分公式是(dXdt)相當於 dXdt = (X(n)-X(n-1))DT (當 DT趨近於 0時)

所以當微分計算中的抽樣週期(DT)越短時微分的計算值將越接近理論值但是事實上

卻非如此以下圖為例

t

X

DTDX

其中

1當 X值為等速度運動時其微分量就是其斜率相當於 DXDT 2DT是微分計算中的抽樣週期理論上越短越好但是由於 DX本身的量化誤差

使得這個原則不再成立例如當斜率為 7394時 若 DT=1000則 DX=7394而 DXDT=7394 若 DT=100 則 DX=739 而 DXDT=739 若 DT=10 則 DX=73 而 DXDT=73 若 DT=1 則 DX=7 而 DXDT=7 3換句話說當抽樣週期越短時DX的量化誤差將越明顯而造成微分計算上更嚴

重的誤差

在 DCM 模組中速度量測的量化誤差分析如下

1馬達上的光電盤精度為每圈 500格經過乘四解碼後等效精度為每圈 2000格 2當馬達轉速為 1200RPM而抽樣頻率為 1KHz時對映的速度量測值為 1200(圈分)2000(格圈)60(秒分)1000(DT秒) = 40(格DT) 3換句話說1200RPM的轉速對映到 40的速度量測值即速度單位=30RPM若最

高轉速為 3000RPM則在+-3000RPM的速度範圍內其量化誤差為 05相當於8-bit的 ADC轉換器精度

4對映不同的抽樣頻率的量化誤差表列如下

30

光電盤精度 最高轉速 抽樣頻率 速度單

速度範圍 量化誤差

500PPR 3000RPM 1KHz 30RPM +-100 05 500PPR 3000RPM 2KHz 60RPM +-50 1 500PPR 3000RPM 4KHz 120RPM +25 2

過溢現象的處理

輸入

輸出

32767

-32768

整數運算都有數值範圍限制以 16-bit 整數而言輸入輸出的關係如下

其中

1當超過正負數的上下限時數值會正負顛倒例如 +32768 將會視為 -32768作處理而 +32769 將會視為 -32768作處理依此類推 2換句話說16-bit的整數運算只有在+-32767之間是線性的對映關係而超過這個範圍就是非線性的對映關係

3不但如此還因為正負顛倒的現象使得原來設計的負回授控制將變為正回授控制

而產生非線性的震盪現象 4換句話說只要計算上稍一不慎就會使得原先穩定的系統產生不穩定的震盪結果

為了避免過溢現象所造成的不穩定問題通常控制系統中會利用飽和處理作改善圖示

如下

輸入

輸出

lmtH

lmtL

31

其中

1當超過計算的上限時將固定設為上限值處理而當超過計算的下限時也將固定

設為下限值處理 2這時的整數運算只有在上下限之間是線性的對映關係而超過這個範圍將還是非線

性的對映關係 3雖然如此但是因為沒有正負顛倒的現象所以不再會有負回授變為正回授的問題

而避免了非線性的震盪現象 4換句話說飽和處理是針對過溢現象的妥協處理方案雖然不完全理想但是是可

接受的最佳選擇

下面是對映的組合語言範例

RD x x為輸入端 MIN lmtH 取得 x和 lmtH中的較小值即是作上限保護的工作 MAX lmtL 取得 x和 lmtL中的較大值即是作下限保護的工作 WR y Y為輸出端 其中

1組合語言中提供MAX和MIN的計算其中 MIN lmtH 比較 AX暫存器和 lmtH而將較低值存入 AX暫存器中 MAX lmtL 比較 AX暫存器和 lmtH而將較高值存入 AX暫存器中 2所以直接可用MIN指令作上限保護而以MAX指令作下限保護兩者合併後即是

完整的飽和處理結果

飽和處理通常應用在高位數轉成低位數的場合例如32-bit轉換成16-bit或是16-bit

轉換成 12-bit 等等例如在本實驗中所有的運算都是以 16-bit 整數作處理但是到

PWM 驅動級輸出時卻要轉換成 12-bit精度的 PWM 命令所以必須先用飽和處理以避免

過溢現象造成的不穩定問題

32

61 實驗 1-開迴路的電壓控制 實驗說明以電壓直接控制轉速的開迴路特性可簡化為一階系統處理方塊圖如

sτ+1

v km ωm

其中V 送給驅動器的 PWM電壓命令

ωm馬達的轉動速度可由處理 photo encoder信號所得的位置微分而得 km一階系統的穩態增益 τ一階系統的時間常數即步階響應中的上升時間

為了觀測直流馬達的開環路特性建立下面的測試方塊圖

其中

1所使用的模組包括 FG1方波產生器產生所需的步階測試波形 FT1馬達模擬以一階系統的低通濾波器來執行 IO1光電盤的回授處理可同時取得轉角和速度的量測值 IO2PWM電壓驅動直接驅動直流馬達作控制 Led四位數字七段顯示模組顯示波形信號資料 2測試目標有兩項(P 參數設定欄)包括 A調整方波命令控制直流馬達作開環路的 PWM電壓控制 B調整馬達模擬參數使模擬結果和實驗結果相符以確認開環路特性

33

實驗畫面顯示如下

測試一 開環路的電壓控制 記錄頻道 CH1電壓命令Y1=-300DY=500 CH2模擬速度Y2=-100DY=500 CH3馬達速度Y3=100DY=50 CH4馬達轉角Y4=300DY=50000 實驗參數 FG1kAMP=256電壓命令的測試振幅 FG1kFRQ=150電壓命令的測試頻率 FT1DT =10 馬達模擬參數 FT1KA =500馬達模擬參數

其中

1用示波器功能記錄四個頻道其中 CH2和 CH3重疊顯示以比較模擬速度和量測

速度之間的差異 2由於 Km 不等於 1所以必須調整 CH3的 Y軸單位才能使得 CH2和 CH3的穩態響應部分重疊

3實驗時可以改變 FG1的參數以調整測試方波的振幅和頻率 4可以調整 FT1的參數使得 CH2和 CH3的暫態響應部分重疊

根據實際的測試結果分析如下

2馬達模擬的參數調整到 DT=10而 KA=500根據公式 τ = 40961000dtka 所以上升時間(τ)為 0082秒或是 82ms 3CH2CH3的 Y軸單位並不一致顯然 Km 不等於 1經計算確認 Km=0098

對應之 plc檔程式說明(exp_pwmplc) echo off 畫面顯示開始

run dsp 0 選擇 DSP1

run stop run reset 既有程式停止

run testDCMmem 下載指定程式

das 1 ampfg1out 0 1024 PWM 波形 Volt 設定 DAS 頻道1

das 2 ampft1lp 0 1024 馬達模擬 Volt 設定 DAS 頻道2

das 3 ampio1spd 0 1024 馬達速度 Volt 設定 DAS 頻道3

das 4 ampio1ang 0 1024 馬達角度 Volt 設定 DAS 頻道4

plot select 0 設定示波器頁數

plot xunit 100000 0 設定示波器 X軸

plot yunit 1 500 -300 設定示波器 Y1 軸

34

plot yunit 2 500 -100 設定示波器 Y2 軸

plot yunit 3 50 100 設定示波器 Y3 軸

plot yunit 4 50000 300 設定示波器 Y4 軸

plot trigger 1 0 1 10 設定示波器觸發

plot scope 9 1 2 3 4 設定示波器顯示

module io2 設定 io2 模組

s cmd ampfg1out

module fg1 設定 fg1 模組

s kAmp 256 s kFrq 150

module ft1 設定 ft1 模組

s u ampfg1out s dt 10 s ka 500

module io3 設定 io3 模組

s led ampfg1out

module 回復預設模組

run 1khz 設定抽樣頻率為 4KHz

run start DSP 開始執行

das stop pause 1 DAS 啟動 das start DAS 啟動

echo on 回復正常訊息顯示

使用者可視情況調整一階濾波器的 ka和 dt值使得 ch2和 ch3 兩組波形完全相符

以求得開迴路系統近似的一階轉移函數 CAI操控設計畫面規劃如下(EXP_PWMCAI) page 1 畫面設計

35

page 2 畫面設計 page 3 畫面設計

36

實測響應圖

訊 號 說 明 訊 號 說 明 ch1 方波產生器訊號 ch3 一階濾波器輸出信號 ch2 馬達角速度訊號 ch4 馬達角位置訊號

直流馬達之開迴路電壓控制響應圖

37

以邏輯分析功能觀測直流馬達之光電盤輸入與 PWM輸出信號

38

62 實驗 2-閉迴路的速度控制 實驗說明為了觀測閉迴路的速度控制響應建立下面的測試方塊圖

加入 PD控制後系統閉迴路的轉移函數經適度的簡化仍能約略以一階系統

處理方塊圖如下

sτ+1

u km ωm

其中

u 送給控制器的速度命令

ωm馬達的轉動速度可由處理 photo encoder 信號所得的位置微分而得

km一階系統的穩態增益 τ一階系統的時間常數即步階響應中的上升時間

方塊圖中的模組功能說明如下

1用 fg1 產生測試用的方波速度命令

2將方波速度命令和速度回授訊號送到 PD 控制器方塊中產生電壓控制訊號再透

過 io2 模組將訊號送出給伺服介面

3用 ft1 建立對照用的一階系統可用 IIR1濾波器方塊產生

4將方波命令產生速度命令再觀測 PHT(io1)上的速度值 spd

5調整 IIR1濾波器的參數使得兩組波形完全相符這時 IIR1濾波器就是閉迴路

速度控制的特性其中 km 為增益而τ為上升時間(單位為 sec)

6增益 km 可從示波器中作簡單計算而上升時間(τ=40964000dtka)

7 Led四位數字七段顯示模組顯示波形信號資料

39

對應之 plc檔程式說明(exp_speedplc) echo off 畫面顯示開始

run dsp 0 選擇 DSP1

run stop run reset 既有程式停止

run testDCMmem 下載指定程式

das 1 ampfg1out 0 1024 PWM 波形 Volt 設定 DAS 頻道1

das 2 ampft1lp 0 1024 馬達模擬 Volt 設定 DAS 頻道2

das 3 ampio1spd 0 1024 馬達速度 Volt 設定 DAS 頻道3

das 4 ampio1ang 0 1024 馬達角度 Volt 設定 DAS 頻道4

plot select 0 設定示波器頁數

plot xunit 100000 0 設定示波器 X軸

plot yunit 1 50 -300 設定示波器 Y1 軸

plot yunit 2 50 -100 設定示波器 Y2 軸

plot yunit 3 50 100 設定示波器 Y3 軸

plot yunit 4 50000 300 設定示波器 Y4 軸

plot trigger 1 0 1 10 設定示波器觸發

plot scope 9 1 2 3 4 設定示波器顯示

module io2 設定 io2 模組

s cmd ampcn2out

module fg1 設定 fg1 模組

s kAmp 50 s kFrq 150

module cn2 設定 cn1 模組

s cmd ampfg1out s fdk ampio1spd s kp 0x4000

module ft1 設定 ft1 模組

s u ampfg1out s dt 2 s ka 320

module io3 設定 io3 模組

s led ampfg1out

module 回復預設模組

run 1khz 設定抽樣頻率為 4KHz

run start DSP 開始執行

das stop pause 1 DAS 啟動 das start DAS 啟動

echo on 回復正常訊息顯示

CAI操控設計畫面規劃如下(EXP_speedCAI)

40

page 1 畫面設計 page 2 與 page 3 畫面設計與實驗一 page 2 與 page 3相同畫面 page 4 畫面設計

41

方塊的參數設定 使用者可視情況調整一階濾波器的 ka和 dt值使得 ch2和 ch3 兩組波形完全相符

以求得此一閉迴路系統近似的一階轉移函數或調整 PD控制器中的 kp和 kp值以調整系統之響應 實測響應圖

訊 號 說 明 訊 號 說 明 ch1 方波產生器產生之速度命令 ch3 一階濾波器輸出信號 ch2 馬達角速度訊號 ch4 馬達角位置訊號

42

直流馬達之閉迴路速度控制響應圖

43

63 實驗 3-閉迴路的位置控制 實驗說明為了觀測閉迴路的位置控制響應將直流馬達的回授改為位置訊號

建立下面的測試方塊圖 方塊圖中的模組功能說明如下

1用 fg1產生測試用的方波位置命令 2將方波位置命令和位置回授訊號送到 PD控制器方塊中產生電壓控制訊號再透過 io2模組將訊號送出到伺服介面驅動馬達轉動

對應之 plc檔程式說明(exp_angleplc) echo off 畫面顯示開始

run dsp 0 選擇 DSP1

run stop run reset 既有程式停止

run testDCMmem 下載指定程式

das 1 ampfg1out 0 1024 PWM 波形 Volt 設定 DAS 頻道1

das 2 ampft1lp 0 1024 馬達模擬 Volt 設定 DAS 頻道2

das 3 ampio1spd 0 1024 馬達速度 Volt 設定 DAS 頻道3

das 4 ampio1ang 0 1024 馬達角度 Volt 設定 DAS 頻道4

plot select 0 設定示波器頁數

plot xunit 100000 0 設定示波器 X軸

plot yunit 1 1000 -300 設定示波器 Y1 軸

plot yunit 2 1000 -100 設定示波器 Y2 軸

plot yunit 3 20 100 設定示波器 Y3 軸

plot yunit 4 1000 300 設定示波器 Y4 軸

plot trigger 1 0 1 10 設定示波器觸發

44

plot scope 9 1 2 3 4 設定示波器顯示

module io2 設定 io2 模組

s cmd ampcn2out

module fg1 設定 fg1 模組

s kAmp 1000 s kFrq 75

module cn2 設定 cn1 模組

s cmd ampfg1out s fdk ampio1ang s kp 0x300 s kd 0x4000

module ft1 設定 ft1 模組

s u ampfg1out s dt 2 s ka 320

module io3 設定 io3 模組

s led ampfg1out

module 回復預設模組

run 1khz 設定抽樣頻率為 4KHz

run start DSP 開始執行

das stop pause 1 DAS 啟動 das start DAS 啟動

echo on 回復正常訊息顯示

CAI操控設計畫面規劃如下(EXP_angleCAI) page 1 畫面設計

45

page 2 與 page 3 畫面設計與實驗一 page 2 與 page 3相同畫面 page 4 畫面設計與實驗二 page 4 畫面 方塊的參數設定 延續上一實驗的說明使用者可以調整 PD控制器中的 kp和 kd值以調整系統之

響應 實測響應圖

訊 號 說 明 訊 號 說 明 ch1 方波產生器產生之位置命令 ch3 馬達角速度訊號 ch2 馬達角位置 ch4 Pd控制器輸出之電壓訊號

46

直流馬達之閉迴路位置控制響應圖

47

64 實驗 4-加減速的位置控制 實驗說明為避免方波命令的過於嚴苛在方波命令的輸出加入一加減速控制功

能方塊以減緩命令變化的幅度增加馬達運動的平順建立的測試方塊圖如下

方塊圖中的模組功能說明如下

1用 fg1產生測試用的方波位置命令 2將方波位置命令送到加減速控制方塊處理後產生新的位置命令再將新的位置命

令與位置回授訊號送到 PD控制器方塊中產生電壓控制訊號最後透過 io2模組將訊號送出到伺服介面驅動馬達轉動

對應之 plc檔程式說明(exp_accplc) echo off 畫面顯示開始

run dsp 0 選擇 DSP1

run stop run reset 既有程式停止

run testDCMmem 下載指定程式

das 1 ampfg1out 0 1024 PWM 波形 Volt 設定 DAS 頻道1

das 2 ampcn1out 0 1024 加速控制 Volt 設定 DAS 頻道2

das 3 ampio1spd 0 1024 馬達速度 Volt 設定 DAS 頻道3

das 4 ampio1ang 0 1024 馬達角度 Volt 設定 DAS 頻道4

plot select 0 設定示波器頁數

plot xunit 100000 0 設定示波器 X軸

plot yunit 1 2000 -300 設定示波器 Y1 軸

plot yunit 2 2000 -100 設定示波器 Y2 軸

plot yunit 3 50 100 設定示波器 Y3 軸

plot yunit 4 2000 300 設定示波器 Y4 軸

48

plot trigger 1 0 1 10 設定示波器觸發

plot scope 9 1 2 3 4 設定示波器顯示

module io2 設定 io2 模組

s cmd ampcn2out

module fg1 設定 fg1 模組

s kAmp 2000 s kFrq 150

module cn1 設定 cn1 模組

s cmd ampfg1out

module cn2 設定 cn2 模組

s cmd ampcn1out s fdk ampio1ang s kp 0x300 s kd 0x4000

module ft1 設定 ft1 模組

s u ampfg1out s dt 2 s ka 320

module io3 設定 io3 模組

s led ampfg1out

module 回復預設模組

run 1khz 設定抽樣頻率為 4KHz

run start DSP 開始執行

das stop pause 1 DAS 啟動 das start DAS 啟動

echo on 回復正常訊息顯示

CAI操控設計畫面規劃如下(EXP_accCAI) page 1 畫面設計

49

page 2 畫面設計與實驗一 page 2相同畫面 page 3 畫面設計與實驗二 page 4相同畫面

參數設定參考之前各實驗的說明可線上機動性的調整 PD控制器中的 kp和 kd值以調整系統之響應 實測響應圖

訊 號 說 明 訊 號 說 明 ch1 方波產生器產生之位置命令 ch3 馬達角位置 ch2 加減速模組輸出之位置命令 ch4 馬達角速度訊號

50

圖一 直流馬達經加減速控制後之閉迴路控制響應圖

51

65 實驗 5-正弦波的位置控制 實驗說明在本實驗中改變命令的波形由方波改變為正弦波並建立如下的測

試方塊圖與上一實驗相比較僅更改命令的波形產生方塊 方塊圖中的模組功能說明如下 1用 fg2產生測試用的弦波位置命令 2將弦波位置命令送到加減速控制方塊處理後產生新的位置命令再與 io1 讀入的位

置回授訊號送到 PD 控制器方塊中產生電壓控制訊號再透過 io2 模組將訊號送出到伺服介面驅動馬達轉動

對應之 plc檔程式說明(exp_sinplc) echo off 畫面顯示開始

run dsp 0 選擇 DSP1

run stop run reset 既有程式停止

run testDCMmem 下載指定程式

das 1 ampfg2out 0 1024 SIN 波形 Volt 設定 DAS 頻道1

das 2 ampcn1out 0 1024 加速控制 Volt 設定 DAS 頻道2

das 3 ampio1spd 0 1024 馬達速度 Volt 設定 DAS 頻道3

das 4 ampio1ang 0 1024 馬達角度 Volt 設定 DAS 頻道4

plot select 0 設定示波器頁數

plot xunit 100000 0 設定示波器 X軸

plot yunit 1 2000 -300 設定示波器 Y1 軸

plot yunit 2 2000 -100 設定示波器 Y2 軸

plot yunit 3 50 100 設定示波器 Y3 軸

plot yunit 4 2000 300 設定示波器 Y4 軸

plot trigger 1 0 1 10 設定示波器觸發

52

plot scope 9 1 2 3 4 設定示波器顯示

module io2 設定 io2 模組

s cmd ampcn2out

module fg2 設定 fg1 模組

s kAmp 2000 s kFrq 100

module cn1 設定 cn1 模組

s cmd ampfg2out

module cn2 設定 cn2 模組

s cmd ampcn1out s fdk ampio1ang s kp 0x300 s kd 0x4000

module ft1 設定 ft1 模組

s u ampfg2out s dt 2 s ka 320

module io3 設定 io3 模組

s led ampfg2out

module 回復預設模組

run 1khz 設定抽樣頻率為 4KHz

run start DSP 開始執行

das stop pause 1 DAS 啟動 das start DAS 啟動

echo on 回復正常訊息顯示

CAI操控設計畫面規劃如下(EXP_sinCAI) page 1 畫面設計

53

page 2 畫面設計 page 3 畫面設計與實驗二 page 4相同畫面

方塊的參數設定可調整 PD控制器中的 kp和 kd值以調整系統之響應 實測響應圖

訊 號 說 明 訊 號 說 明 ch1 弦波產生器產生之位置命令 ch3 馬達角位置訊號 ch2 加減速模組輸出之位置命令 ch4 馬達角速度訊號

54

直流馬達之閉迴路弦波加減速位置控制響應圖

55

7組合語言說明

本節將針對 DC馬達伺服控制實驗專用的程式模組進行功能與程式碼的說明其

有關於波形產生器與資料擷取模組等說明如下

SIN_waveasm 正弦波產生器 PWM_waveasm 方波產生器 IIR1_filterasm 一階濾波器 DAS4asm 資料蒐集模組

弦波產生器

此模組會產生週期性的正弦波方塊圖如下

outfrq

kBiasbias

ampkAmp

kFrqth

kThf=1TB

θ

A

其中

1正弦波有四個參數振幅(A)頻率(F)相位(θ)和偏移(B)其公式為 out = A sin(2πF t +θ) + B 2對於單純的正弦波產生器所對映的參數包括 kAmp 振幅值 kFrq 頻率值kFrq=655368000Hz其中 Hz的範圍為 0~4000例如 1000Hz =gt frq=8192 100Hz =gt frq=819 10Hz =gt frq=82 1Hz =gt frq=8 kTh 相角值0~255代表 0~360的相位當 th=0 時為正弦波 th=64 時為餘弦波 th=128時為反相波依此類推 kBias偏移值 3對於可調變的正弦波產生器其對映的輸入點為 amp 控制振幅的輸入點可產生調幅(AM)波形 frq 控制頻率的輸入點可產生調頻(FM)波形 th 控制相位的輸入點可產生調相(PM)波形 bias控制偏移的輸入點可產生雙頻混波(相加)波形 4若不使用調變功能時各個輸入點時的預設值為 amp 指向 kAmp 的位址 frq 指向 kFrq 的位址

56

th 指向 kTh 的位址 bias指向 kBias的位址

模組程式範例SIN_WAVEasm

local amp R0 IP kAmp 輸入點sin波的振幅 local frq R1 IP kFrq 輸入點sin波的頻率 local th R2 IP kTh 輸入點sin波的相角 local bias R3 IP kBias 輸入點sin波的中心偏移 local out R4 OP 輸出點sin波輸出 local tab R5 TP 表格指標指向 sin[256]的表格 local ang R6 內部變數相位角65536=360deg local kAmp R7 1000 參數振幅值 local kFrq R8 1000 參數頻率值=655368000Hz local kTh R9 0 參數相角值360deg=256 local kBias R10 0 參數偏移值 data 11 模組變數區長度及初值 initial 啟動程序 WR ang0 WR out0 ang=out=0 RET timer 即時控制程序(8KHz) RD ang ADD (frq) WR ang ang+=frq SFR 8 ADD (th) AND 255 ACC=sin(ang256+th) ADD tab WRH RDM table-look-up MUL (amp) SFR 12 ADD (bias) WR out out=ACCamp4096+bias RET table tab 256 sin[256]表格區10=4096 0 101 201 301 401 501 601 700 00~070deg 799 897 995 1092 1189 1285 1380 1474 08~0F 1567 1660 1751 1842 1931 2019 2106 2191 10~17 2276 2359 2440 2520 2598 2675 2751 2824 18~1F 2896 2967 3035 3102 3166 3229 3290 3349 20~27 3406 3461 3513 3564 3612 3659 3703 3745 28~2F 3784 3822 3857 3889 3920 3948 3973 3996 30~37 4017 4036 4052 4065 4076 4085 4091 4095 38~3F 4096 4095 4091 4085 4076 4065 4052 4036 40~4790deg 4017 3996 3973 3948 3920 3889 3857 3822 48~4F 3784 3745 3703 3659 3612 3564 3513 3461 50~57 3406 3349 3290 3229 3166 3102 3035 2967 58~5F

57

2896 2824 2751 2675 2598 2520 2440 2359 60~67 2276 2191 2106 2019 1931 1842 1751 1660 68~6F 1567 1474 1380 1285 1189 1092 995 897 70~77 799 700 601 501 401 301 201 101 78~7F 0 65435 65335 65235 65135 65035 64935 64836 80~87180deg 64737 64639 64541 64444 64347 64251 64156 64062 88~8F 63969 63876 63785 63694 63605 63517 63430 63345 90~97 63260 63177 63096 63016 62938 62861 62785 62712 98~9F 62640 62569 62501 62434 62370 62307 62246 62187 A0~A7 62130 62075 62023 61972 61924 61877 61833 61791 A8~A8 61752 61714 61679 61647 61616 61588 61563 61540 B0~B7 61519 61500 61484 61471 61460 61451 61445 61441 B8~BF 61440 61441 61445 61451 61460 61471 61484 61500 C0~C7270deg 61519 61540 61563 61588 61616 61647 61679 61714 C8~CF 61752 61791 61833 61877 61924 61972 62023 62075 D0~D7 62130 62187 62246 62307 62370 62434 62501 62569 D8~DF 62640 62712 62785 62861 62938 63016 63096 63177 E0~E7 63260 63345 63430 63517 63605 63694 63785 63876 E8~EF 63969 64062 64156 64251 64347 64444 64541 64639 F0~F7 64737 64836 64935 65035 65135 65235 65335 65435 F8~FF

就程式結構而言說明如下

timer 即時控制程序(8KHz) RD ang ADD (frq) WR ang ang+=frq SFR 8 ADD (th) AND 255 ACC=sin(ang256+th) ADD tab WRH RDM table-look-up MUL (amp) SFR 12 ADD (bias) WR out out=ACCamp4096+bias RET

1基本上我們以查表法計算 sin()其輸入θ的範圍為 0~255對映到 0~360deg其輸出 sin(θ)的範圍為+-4096對映到+-10的範圍

2建立一個內部變數 ang其範圍為 0~65535對映到 0~360的相位角 3每個timer程序都執行 ang+=frq的動作更新目前的相位角接著依照 ang的相位角查表得到 sin(ang256+th)值

4由於表格長度為 256-word所以必須將 ang256才能得到正確的對映關係而 th範圍為 0~255所以不需要像 ang一般的做額外處理

5sin()的範圍為(+1-1)而在表格中以(+4096~-4096)的型式記錄相當於 10=4096所以執行 Asin()時還要用 SFR12指令做4096的動作才能正確的取得輸出值

58

6就頻率輸入 frq而言其計算原則是將θ=ωt轉化成θ=Σ(ωdt)因為抽樣頻率

為 8KHz所以 dt=18000而得到 frq=655368000Hz公式其中 Hz為真正的頻率在 8KHz的抽樣頻率下其範圍為 0~4000

鋸齒波產生器

此模組會產生週期性的鋸齒波方塊圖如下

outfrq

kBiasbias

ampkAmp

kFrqth

kThf=1TB

θ

A

其中

1鋸齒波也有四個參數振幅(A)頻率(F)相位(θ)和偏移(B)和正弦波的定義完全一致唯一的差異是其輸出為鋸齒波而非正弦波

2基本波形是從週期開始時為 0一直遞增到週期結束時到達最高點然後立刻回歸

到 0重新開始 3以程式結構而論鋸齒波程式幾乎就是正弦波的相位計算部分只差沒有正弦波的

查表處理而已

模組程式範例SAW_WAVEasm

local amp R0 IP kAmp 輸入點sin波的振幅 local frq R1 IP kFrq 輸入點sin波的頻率 local th R2 IP kTh 輸入點sin波的相角 local bias R3 IP kBias 輸入點sin波的中心偏移 local out R4 OP 輸出點sin波輸出 local ang R5 內部變數相位角65536=360deg local kAmp R6 1000 參數振幅值 local kFrq R7 1000 參數頻率值=655368000Hz local kTh R8 0 參數相角值360deg=256 local kBias R9 0 參數偏移值 data 11 模組變數區長度及初值 initial 啟動程序 WR ang0 WR out0 ang=out=0 RET timer 即時控制程序(8KHz) RD ang ADD (frq) WR ang ang+=frq SFR 8 ADD (th) AND 255 ACC=(ang256+th)amp0x00ff MUL (amp) SFR 8 ADD (bias) WR out out=ACCamp256+bias

59

RET

脈衝波產生器

outfrq

kBiasbias

ampkAmp

kFrqth

kThf=1TB

θ

A

pwm

kDutyduty

此模組會產生週期性的脈衝波方塊圖如下

其中

1脈衝波有五個參數其中振幅(A)頻率(F)相位(θ)和偏移(B)四個參數和正弦波

定義完全一樣另外再增加一個負載率(D) 2基本波形是從週期開始時為 1隔段時間後換為 0然後持續到週期結束再重新開始其中 1所佔有的比例就是負載率當 D=0時為 0而 D=255時為 100

3和其他參數類似負載率(D)以 duty為其輸入點而以 kDuty為其參數值

模組程式範例PLS_WAVEasm

local amp R0 IP kAmp 輸入點脈衝波的振幅 local frq R1 IP kFrq 輸入點脈衝波的頻率 local th R2 IP kTh 輸入點脈衝波的相角 local bias R3 IP kBias 輸入點脈衝波的中心偏移 local duty R4 IP kDuty 輸入點脈衝波的負載率 local out R5 OP 輸出點脈衝波輸出 local ang R6 內部變數相位角65536=360deg local kAmp R7 1000 參數振幅值 local kFrq R8 1000 參數頻率值=655368000Hz local kTh R9 0 參數相角值360deg=256 local kBias R10 0 參數偏移值 local kDuty R11 128 參數負載率100 =256 data 12 模組變數區長度及初值 initial 啟動程序 WR ang0 WR out0 ang=out=0 RET timer 即時控制程序(8KHz)

60

RD ang ADD (frq) WR ang ang+=frq SFR 8 ADD (th) AND 255 ACC=(ang256+th)amp0x00ff SUB (duty) RD (amp) JLT t1 RD 0 ACC=(amp0) t1 ADD (bias) WR out out=ACC+bias RET

IIR 一階濾波器

此模組執行一階的 IIR濾波器方塊圖如下

kau x

Z-1

+

+

-

+低通濾波器

高通濾波器dx lp

hp

濾波器參數的計算公式如下

1假設濾波器的頻寬為 hz則 ωn=hz628 2若系統頻率為 8KHz則抽樣週期 dT為 dT=dt8000 其中 dt為模組參數 3則濾波器參數為 ka=ωndT4096或是 =hzdt62880004096即 =hzdt32 4當 dt決定後所允許的訊號頻寬為(4000dt)換句話說訊號頻寬會因為 dt增加而下降

為了方便實驗的運用下面列出常用的參數對照表

濾波頻寬

(Hz)

10 20 50 100 200 500 1000 2000

訊號頻寬

(Hz)

400 800 2000 4000 4000 4000 4000 4000

模組參數 dt 10 5 2 1 1 1 1 1

模組參數 ka 320 320 320 320 640 1600 3200 6400

表格的運用方式如下

1首先決定濾波頻寬 2接著查表找出對映的參數 dt和 ka 3再查表得到對映的訊號頻寬以決定是否需要串接前級濾波器

61

模組程式範例IIR1_FILTERasm

local u R0 IP 輸入點濾波器輸入 local lp R1 OP 輸出點低通濾波器輸出 local hp R2 OP 輸出點高通濾波器輸出 local dt R3 1 參數抽樣週期 local ka R4 4096 參數增益 ka10=4096 local prd R5 內部變數抽樣週期用 data 6 模組變數區長度 initial 開機啟動程序 WR lp0 WR hp0 WR prd1 RET lp=hp=0prd=1 timer 即時控制程序 SUB prd1 JNZ b9 if (--prdgt0) return RD dt WR prd prd=dt RD (u) SUB lp WR hp hp=u-lp MUL ka SFR 12 ADD lp WR lp lp+=(hpka4096) b9 RET

資料蒐集模組

資料蒐集模組是一個非常特殊的模組專門配合 eTTY 程式中的示波器使用

模組程式範例DAS4asm

local cmd R0 0 紀錄命令0=停止1=前置記錄2=正觸發4=負觸發6=觸發記錄 local dt R1 1 抽樣週期每 dT抽樣一次 local tab R2 TP DAS表格啟始位址 local cnt R3 0 目前記錄點(0~255) local ch1 R4 0 定義頻道1的變數位址 local ch2 R5 0 定義頻道2的變數位址 local ch3 R6 0 定義頻道3的變數位址 local ch4 R7 0 定義頻道4的變數位址 local trg R8 0 定義觸發頻道的變數位址 local th R9 0 觸發準位 local tail R10 0 觸發後的抽樣個數 local buf R11 1 抽樣計數(1~dt) local pnt R12 表格位址計算pnt=tab+cnt4 local len R13 表格長度計算(0~256) data 14 定義模組變數區的長度 table tab 1024 定義表格的長度 initial 啟動程序 WR cmd0 RET cmd=0 timer 控制程序

62

ADD cmd0 JZ t9 if (cmd==0) return SUB buf1 JNZ t9 if (--buf)gt0) return RD dt WR buf dt=buf RD cnt ADD 1 AND 0xff WR cnt cnt=(cnt+1)amp0xff SFL 2 ADD tab WR pnt pnt=tab+cnt4 RD (ch1) WR (pnt) ADD pnt1 pnt++=ch1 RD (ch2) WR (pnt) ADD pnt1 pnt++=ch2 RD (ch3) WR (pnt) ADD pnt1 pnt++=ch3 RD (ch4) WR (pnt) pnt =ch4 RD cmd SUB 1 JZ t9 SUB 1 JZ t2 SUB 1 JZ t3 SUB 1 JZ t4 SUB 1 JZ t5 SUB 1 JZ t6 JR t7 t2 RD (trg) SUB th JGE t9 ADD cmd1 JR t9 wait trgltth t3 RD (trg) SUB th JLE t9 JR t6 wait trggtth t4 RD (trg) SUB th JLE t9 ADD cmd1 JR t9 wait trggtth t5 RD (trg) SUB th JGE t9 JR t6 wait trgltth t6 WR len0 WR cmd7 len=0cmd=7 t7 ADD len1 SUB tail JLT t9 WR cmd0 if ((++len)gt=0x80) cmd=0 t9 RET

與 DC 馬達控制相關的程式模組有以下 4個程式模組說明如下

(1)加減速控制模組 ACC_controlasm (2)光電盤輸入模組 POS_inputasm (3)PWM輸出模組 PWM_outputasm (4)PD控制模組 PD_controlasm

71加減速控制模組 此程式模組主要功能在於執行位置控制的加減速命令修正其數學模式採用 Lynn

濾波器的架構參見下圖

cmd

2

+

old Z -1

-

Z -1

Z -1

Z-1

Z-1x0 x1 x8 x9 x16

+ -

++

2

Z-1

Z-1 y1 y2

+

-

y0

+ +

sumZ-1

+164

12

out

dif

+

63

加減速控制模組方塊圖

其中

1Lynn 濾波器的階數固定成八階也就是 m=8其公式為 H(z) = (1-2Z-m+Z-2m)(1-2Z-1+Z-2)m2

2因為m=8所以m2=64因此最後計算低通濾波的部份時要先做除 64的運算 3因為低通濾波(lp)和 y0之間有 64倍的差異代表 y0y1y2的變化範圍比濾波器輸

入值要擴大許多例如輸入值在+-1000變化時y0y1y2很可能會在+-64000之間變化這範圍已經超出整數處理的範圍很可能會造成錯誤的計算結果

4所以在實驗時輸入值的變化範圍必須控制在+-500之間以保證計算的正確性 5對於 Lynn 濾波器當 m=8時其濾波器的頻寬固定為 1 kHzmdt也就是 dt=1時頻寬為 125 Hz dt=2時頻寬為 625Hz依此類推 6對於 Lynn 濾波器其濾波器的延遲固定為 m個抽樣週期因此設計 hp = x8 - lp 即可得到高通濾波器的對應結果 7其中乘 2和除 64的運算以移位運算取代所以整個程式中並無任何乘法運算 8Lynn 濾波器本身並不是穩定濾波器所以在程式啟動時必須確實的將所有狀態

(x0~x16)歸零否則會產生不穩定的狀態輸出

因為 Lynn濾波器中所有參數固定所以除了抽樣週期 dt 之外並無任何可調參數

抽樣週期 dt 可以控制頻寬dt 越大則濾波器頻寬越低

將步階命令值的輸出送入 Lynn 濾波器中經由低通濾波器的效應可以減緩命

令的變化程度達到加減速控制的目的以下為使用 Lynn 濾波器型式實現加減速控

制的組合語言程式列印 如欲更進一步瞭解 Lynn 濾波器與 FIR 數位濾波器之間的關係可以參考通訊實驗

四數位濾波器設計(FIR)中之說明

ACC_controlasm程式列印 local cmd R0 IP 輸入點位置命令

local out R1 OP 輸出點加減速處理後的位置命令

local dif R2 OP 輸出點位置微分命令

local axis R3 0 馬達編號0=X1=Y2=Z3=C

local old R4 內部變數微分計算用

local sumL R5 內部變數積分計算用

local sumH R6 內部變數積分計算用

local y0 R7 內部變數y(0~2)

local y1 R8 local y2 R9

local x0 R10 內部變數x(0~16)

local x1 R11 local x2 R12 local x3 R13 local x4 R14

local x5 R15 local x6 R16 local x7 R17 local x8 R18

local x9 R19 local x10 R20 local x11 R21 local x12 R22

local x13 R23 local x14 R24 local x15 R25 local x16 R26

64

data 27 模組變數區長度

initial 開機啟動程序

WR dif0 RD (cmd) WR out WR old dif=0 out=old=cmd

sumHL=cmd64

SFL 6 WR sumL RD out SFR 10 SGN 5 WR sumH

RPT 17 WR x00 RPT 3 WR y00 RET x[0~16]=0y[0~2]=0

timer 即時控制程序

RD (cmd) SUBX old WR x0 x0=cmd-old old=cmd

SUB x81 ADD x16 ADD y11 SUB y2 WR y0 y0=x0-2x8+x16+2y1-y2

SGN ADD sumL WR sumL RDH ADC sumH WR sumH sumHL+=y0

WRH RD sumL SFR 6 WR out out=sumHL64

RD y0 SGN SFR WR dif dif=y032mm

RD x0 RPT 16 RDX x1 x[i]=x[i-1] i=1~16

RD y0 RDX y1 WR y2 y[i]=y[i-1] i=1~2

b9 RET

72光電盤輸入模組

DC馬達的位置由光電盤量測之預設儲存於 0xac與 0xbe二個輸入埠位址中其中位址 0xac記錄 X軸馬達的位置位址 0xbe記錄 Y軸馬達的位置由於本實驗的DC馬達接在 Y軸的位置上因此程式中直接選用 Y軸的輸入 光電盤位置輸入的程式列印如下其中速度由位置的差分而得至於馬達的位置

則使用內部 2個 word加以記錄精度為 32位元 POS_inputasm程式列印 local spd R0 OP 輸出點速度量測值

local ang R1 OP 輸出點角度量測值

local angH R2 內部變數角度的 32 位元部分

local mode R3 0x308 模式選擇15MHzAB 相正反向輸入

local pht R4 0xac 輸入阜地址光電盤輸入(0xac)

local phtc R5 0xbe 輸入阜地址光電盤模式(0xbe)

local old R6 內部變數速度更新用

data 7 模組變數區長度

initial 開機啟動程序

RD mode WR (phtc) phtc=mode

RD (pht) WR old WR spd0 RET old=phtspd=0

timer 即時控制程序

RD (pht) SUBX old SGN 11 WR spd spd=(pht-old)old=pht

65

ADD ang WR ang angHL+=spd

RDH ADC angH WR angH

RET

73 PWM輸出控制模組 模組方塊

cmd PWM輸出

程式說明 1在開機時將切換保護時間寫到輸出阜 0xbc上其中切換保護值為 0~6360=5us 2在每次 timer interrupt時將 cmd訊號處理後寫到輸出阜 0xb8上

PWM_outputasm程式列印 local cmd R0 IP gnd 輸入點v相命令

local gain R1 4096 參數輸出增益1=4096

local bias R2 2048 參數輸出偏壓0=2048

local limit R3 4095 參數輸出極限1=4095

local zone R4 0x88f0 參數頻率=12KHz切換保護=5us

local pwm R5 0xb8 輸出阜地址PWM0 輸出(0xb8)

local mode R6 0xbc 輸出阜地址PWM 模式(0xbc)

local p0md R7 0xf8 輸出阜地址port0 模式(0xf8)

local gnd R8 0 輸入接地點

data 9 模組變數區長度

initial 開機啟動程序

RD bias WR (pwm) pwm=bias

RD 0xffff WR (p0md) set port0 mode

RD zone WR (mode) RET mode=zone

stop 關機保護程序

RD bias WR (pwm) RET pwm=bias

timer 即時控制程序

RD (mode) xor 1 and 1 WR (mode) trigger watch-dog

RD (cmd) MUL gain SFR 12 ADD bias ACC=(cmdgain4096)+bias

MAX 0 MIN limit WR (pwm) pwm=limit(ACC)

RET

66

74 PD 控制模組

PD控制的模組方塊參見圖二十一所示其中比例控制的部份直接由增益 kp加以調整微分控制的部份則由誤差的差分經增益 kd的調整而得

Σ+

-

cmd

fdk

err out

Σ

pk

dk

Σ

+

+

+

-

old1minusZ

PD控制器的方塊圖

PD_controlasm程式列印 local cmd R0 IP gnd 輸入點位置命令(可忽略)

local fdk R1 IP gnd 輸入點位置回授(可忽略)

local out R2 OP 輸出點用以控制速度迴路

local kp R3 256 參數增益 kp10=256

local kd R4 0 參數增益 kd10=256

local err R5 0 內部變數

local old R6 0 內部變數

local gnd R7 0 無輸入時的短路點

data 8 模組變數區長度

initial 開機啟動程序

WR out0 WR old0 RET out=old=0

timer 即時控制程序

RD (cmd) SUB (fdk) PRTF WR err

MUL kp SFR 8 P=(cmd-fdk)kp256

RDS err SUBX old MUL kd SFR 8 D=(err-old)kd256

ADDS

WR out out=P+D

RET

程式中預設增益值的 10以整數值 256為基底因此使用 SFR 8的指令加以調

整另外在在計算微分項的程式部份用到 SUBX old的指令其詳細的暫存器動作如

下 參考 piDSP的指令說明SUBX指令將總共用到 3個時序參考錯誤 找不到參照

67

來源在時序 1時將原先 AX的資料拷貝一份到 HX中時序 2時正式執行減

法的動作所以 AX暫存器中的內容會變成 err-old時序 3時DSP會將存放在 HX暫存器中的內容拷貝一份到 old的記憶體中也就是經由 SUBX此一精簡指令將

同時完成計算差分所需要的相減與資料疊代的動作有效的利用 piDSP控制器 DSP核心的精簡指令將可以大幅提昇系統的計算速度

HX AXoldSUBXerr err

old

err

errerr olderr minus

1_err

errerr olderr minus err

1_err

1

2

3

SUBX的指令時序與暫存器變化

68

8附錄快速安裝說明

光纖網路通訊 FPGA 發展系統 (適用於 WIN-XP200098 系統)

快速安裝說明

26Pin 負載輸出入埠

雙電源︵5

12

伏︶輸入埠

單電源︵5

伏︶輸入埠

USB

光纖線輸

號 光纖線輸出埠

入 傳 埠

首先將光碟片 RFFPGA 目錄檔案拷貝在您工作硬碟裡面

第一次安裝時先將 USB 傳輸線接上電腦主機將電源供應器接上 FPGA 模組此時電

腦會出現安裝 USB-Serial 驅動程式選擇從清單安裝此驅動程式放置在光碟片

RFFPGA-USBdrive 選擇您目前安裝系統

可選擇 WIN-98WIN-MEWIN-2000WIN-XP 系統配合您現在工作電腦作業系統

69

注意一般電腦 USB 埠很多插口當您安裝驅動程式時是配合您當時插入之埠

下次如您插入不同接口埠時電腦會再次要求安裝驅動程式這是正常現象請再次安

裝驅動程式否則無法使用

FPLC 操作

首先進入 RFFPGA裡子目錄 testASM直接點選 fPLCexe 出現下面操作畫面(也可直接將

此檔案放置桌面直接點選)

(或者選擇 File 再執行 Setuphellip 選擇您要執行 CAI 檔)

70

進入下面操作畫面 首先使用滑鼠在 FPGA下載按鈕單擊動作使 FPGA變成 DSP晶片 實驗一至實驗五皆為使用 DSP組合語言設計程式其原始程式分別為 testASM1至testASM5可使用 texPad 開啟與編輯程式內容 實驗三與實驗五多有 IO控制動作 當選擇實驗三時出現下面畫面

71

eM_USB 模組

數字型 LED

0 1 2 34 5 6 78 9 A BC D E F

燈號型 LED

44 鍵盤

ADC0 ADC1 DAC0 DAC1

LED 選擇KEY 選擇

模 式 1

0123

注意操作畫面 3與 4 說明開關與按鍵選擇位置後選擇程式下載再按程式啟動如您

按下 0-3按鍵時燈號型 LED會有不同方向閃爍顯示程式停止時結束所有 IO控制動作再按回首頁選擇其他實驗 實驗四與實驗五

模式3

0 1 2 34 5 6 78 9 A BC D E F

按照上面開關選擇直接操作如果以上實驗皆能按照正常操作表示您光纖網路通訊

FPGA發展模組以能正常使用 注意 開機與關機動作順序如下

開機電腦啟動 --- eM_USB 模組電源接上 --- USB 接上電腦 ---

啟動 FPLC 軟體 --- 下載 FPGA 程式

關機關閉 FPLC 軟體 --- eM_USB 模組電源拔掉 --- 拔掉電腦 USB 接頭 ---關掉

電腦

如果以上順序有亂可能造成 USB 找不到驅動造成無法下載經過幾次測試還是

無法下載建議重新啟動電腦主機按照正確步驟操作

72

FPGA 下載操作

進入 FPLC 操作系統按照下列步驟選擇節點模組與下載 bit FPGA 檔案

在 VHDLDEMO 子目錄下您可以選擇您目前 FPGA 種類型號在此型號下我們已將 VHDL

與數位邏輯設計課本範例全部放於此處

73

光纖網路連線 FPGA 下載操作

首先利用光纖線將 eM_USB0 模組光纖輸出埠接至 eM_USB1 模組光纖輸入埠以此

類推最後再將最後 eM_USBN 模組光纖輸出埠接至 eM_USB0 模組光纖輸入埠配置

如附圖方式

個人電腦(Windows) eM_USB模組

0USB

eM_USB模組1

光纖網路

eM_USB模組2

eM_USB模組N

配置完成後進入 FPLC 系統首先必須先將 Node00 下載在 testASM 子目錄裡

piDSPv0bit 檔讓 eM_USB0 模組 FPGA 具備 DSP 功能才能執行光纖網路通訊

操作如下

此時您就可以選擇分別下載至各模組 FPGA 檔 bit

74

安裝 FPLC 注意事項

當您進入 FPLC 時

按 FILE 選擇 programhellip 選擇檔案為 exp_dcmplc 出現下面畫面

正常顯示畫面為

75

DOS 環境操作

在 PC 端的操作是在 Windows 環境中的 DOS 視窗中執行指令範例如下

eFPGA progNETbit 下載 FPGA電路至網路節點0(即 USB節點)中 eFPGA testLEDbit 1 下載 FPGA電路至網路節點1中

對於單一節點的控制程序如下

1將 eM_USB模組連結個人電腦的 USB端 2eM_USB模組開機 3執行下載指令即可 eFPGA xxxxbit 4若要更改 FPGA電路只要重新執行下載指令即可

對於多個網路節點的控制程序如下

1第一組 eM_USB模組連結個人電腦的 USB端再以光纖網路依序其他各節點 2連接 USB界面者為模組0從光纖發射端連接出去的模組為1依此類推 3將所有 eM_USB模組開機 4執行下載指令如下 eFPGA progNETbit 模組0必須先下載指定的 FPGA電路 eFPGA xxxxbit 1 再依序下載其他網路模組的 FPGA電路 eFPGA yyyybit 2 eFPGA zzzzbit 最後再重新下載模組0的 FPGA電路 5換句話說模組0必須先執行 progNETbit讓光纖網路接受 FPGA控制後才能透過光纖網路下載至其他節點等全部網路節點下載完畢後再將模組0的 FPGA重新下載讓模組0也可自由執行任意的 FPGA電路

6若要更改某一個網路節點中的 FPGA電路只要重新執行下述指令 eFPGA progNETbit 模組0必須先下載指定的 FPGA電路 eFPGA yyyybit 2 下載指定網路模組的 FPGA電路 eFPGA zzzz bit 最後再重新下載模組0的 FPGA電路 換句話說除非模組0中的 FPGA已經包括光纖網路管理電路否則一定要先在

模組0中下載網路管理電路後才能下載指定網路節點的 FPGA電路

76

光纖網路通訊 FPGA 發展系統

系統配置

光纖網路通訊 FPGA 發展系統的系統配置圖如下

個人電腦(Windows) eM_USB模組

0USB

eM_USB模組1

光纖網路

eM_USB模組2

eM_USB模組N

其中

1基本模組為 eM_USB模組可用 USB界面和個人電腦連線並提供 USB對光纖網路的轉換功能使得個人電腦可以獨立控制光纖網路中的每個網路節點

2eM_USB模組也可以作為光纖網路中的網路節點透過光纖網路而接受個人電腦的

監控 3就個人電腦而言不論是 USB界面直接連結或是以光纖網路間接連結的 eM_USB模組都是可以直接監控的網路節點最多可以同時控制一個 USB節點和 30個網路節點

4對於每一個網路節點個人電腦都可執行 eM_USB模組中 FPGA的電路下載工作並在適當的 FPGA電路配合下可執行 eM_USB模組中 FPGA內部電路的讀寫控制 5透過適當的 FPGA電路設計各網路節點都可透過光纖網路和其他任何網路節點

作同步通訊執行 FPGA內部記憶體的資料交換資料交換頻率可達 1KHz以上

77

網路模組配置

每個網路模組的標準配置圖如下

eM_USB模組光纖網路

USB eM_FPGA卡

eM_DEMO模組

eM_EXP實驗模組

DC電源

其中

1網路模組以 eM_USB模組為主提供基本的 USB界面和光纖網路連線 2eM_USB模組中的 FPGACPLD採用插卡型式可選擇不同的 eM_FPGA卡包括

eM_2V1K卡可選用 Virtex系列的 XC2V250和 XC2V1000 eM_3S1K卡可選用 Spartan3系列的 XC3S400XC3S1000和 XC3S1500 eM_3S50卡可選用 Spartan3系列的 XC3S50XC3S200和 XC3S400 eM_95XL卡可選用 9500XL系列的 XC95144XL和 XC95288XL 3eM_USB模組中的對外連線有兩種一種是 26P接頭用以連接既有的各種實驗模

組另一種是兩組 50P接頭將 FPGA中各接腳引出用以連接專題實驗 4eM_DEMO模組就是插上 50P接頭的教學模組其中包括 LED 數字顯示和 44鍵盤也具備兩組的 ADC和兩組的 DAC接頭提供類比訊號的測試工具

常用的實驗組合包括

1精簡組合包括(eM_USB+eM_FPGA)提供基本的網路節點適用於專題實驗 2標準組合包括(eM_USB+eM_FPGA+eM_DEMO)提供基礎 FPGA設計的教學實驗

3實驗組合包括(eM_USB+eM_FPGA+eM_DEMO+eM_EXP)提供進階的 FPGA實驗可依需求選用不同的實驗模組

78

eM_USB 模組

eM_USB 模組的電路配置圖如下

TxRx

DCPower

USB

JP2

JP3

光纖界面

外加電源

PC連線

JP1

eM_FPGA模組

FT232 CPLD FlashROM

SRAM

10cm

6cm

JP4

其中

1對外的連線接頭包括 DC電源 可選擇單電源(5V)或是多電源(5V+12V-12V)兩種 USB界面 直接連接個人電腦 光纖界面連接光纖網路 2實驗界面包括 JP1負責內部 CPLD的電路下載 JP2JP3兩組 50P的擴張用接頭 JP4 標準 26P接頭用以連接各種實驗模組 3內部的電路配置包括 A以 SO-DIMM接頭連接各種 eM_FPGA卡 B內附 EEPROMFlashROM和 SRAM提供 FPGA作應用測試 C以一顆 FT232BM作為 USB界面解碼而以一顆 CPLD作為光纖網路解碼 D提供各種 eM_FPGA卡的電路下載功能 4內附五顆 LED由上而下依序為 usbLED指示 USB界面的讀寫狀態 tstLED可由 FPGA電路自行定義 stsLED可由 FPGA電路自行定義 RxLED 可由 FPGA電路自行定義 TxLED 可由 FPGA電路自行定義

79

外部接腳定義

外部接頭的接點順序圖示如下

上視圖

JP11 9 JP4

126225

JP31

50249

JP21

50249

而各接頭的接點定義如下

JP1 JP4 JP2 JP3 1+33V 1+12V 2+12V 1 GND 2 GND 1 GND 2 GND 2GND 3 ADC 4 DAC 3POWER 4ALARM 3 +5V 4 +5V 3nc 5 yPB2 6 yPB3 5RxNET 6TxNET 5+12V 6+12V 4TCK 7 yPB1 6 yPB4 7RxUSB 6TxUSB 7-12V 6-12V 5nc 9 yPB0 10yPB5 9RxCAN 10TxCAN 9 ADC 10 DAC 6TDO 11yPB6 12yPB7 11P0D0 12P0D1 11P1D0 12P1D1 7TDI 13yGND 14yPC3 13P0D2 14P0D3 13P1D2 14P1D3 8nc 15yPC2 16yPC1 15P0D4 16P0D5 15P1D4 16P1D5 9TMS 17yPC0 18yPA0 17P0D6 18P0D7 17P1D6 18P1D7 19yPA1 20yPA2 19P0D8 20P0D9 19P1D8 20P1D9 21yPA3 22GND 21P0D10 22P0D11 21P1D10 22P1D11 23GND 24+5V 23P0D12 24P0D13 23P1D12 24P1D13 25+5V 26nc 25P0D14 26P0D15 25P1D14 26P1D15 27P2D0 28P2D1 27PxA0 28PxA1 29P2D2 30P2D3 29PxA2 30PxA3 31P2D4 32P2D5 31PxA4 32PxA5 33P2D6 34P2D7 33PxA6 34PxA7 35P2D8 36P2D9 35PxB0 36PxB1 37P2D10 38P2D11 37PxB2 38PxB3 39P2D12 40P2D13 39PxB4 40PxB5 41P2D14 42P2D15 41PxB6 42PxB7 43ADC0 44ADC1 43PxC0 44PxC1 45ADC2 46ADC3 45PxC2 46PxC3 47ADC4 48ADC5 47PxC4 48PxC5 49DAC0 50DAC1 49PxC6 50PxC7

80

eM_FPGA 模組

在各種 eM_FPGA 模組中FPGA 對外電路的標準配置圖如下

24576MHz

FlashROM

26PSRAM

EEPROM

mD[8]

yPA[4]

FPGACPLD

mA[19]mRDmWRmCSeeCKeeCSeeDIeeDO

光纖界面 RxNETTxNET

USB 界面 RxUSBTxUSBCLK24MPOWERALARM

LED

tstLEDstsLEDRxLEDTxLED

yPB[8]yPC[4]

ADCDAC

ADC[8]

實驗模組

ADC[2]

DAC[2]

xPA[4]

xPB[8]

xPC[4]

基礎實驗

其中

1FPGACPLD可以選擇下述幾種 XC2V250XC2V1000 採用 eM_2V1K模組其中 FPGA為 FG456包裝 XC3S400XC3S1000XC3S1500採用 eM_3S1K模組其中 FPGA為 FG456包裝 XC3S400XC3S1000XC3S1500採用 eM_3S1K模組其中 FPGA為 FG456包裝 XC3S50XC3S200XC3S400 採用 eM_3S50模組其中 FPGA為 TQ144包裝 XC95144XLXC95288XL 採用 eM_95XL模組其中 CPLD為 TQ144包裝 2採用 FG456包裝者可以控制所有的 IO界面 3採用 TQ144包裝者只是不能控制 RAM和 FlashROM而可以控制其他所有的界面 4所有 FPGA模組都可自由選擇由 USB界面或是由光纖界面下載電路但是 CPLD模組只能固定由 USB界面下載電路

5所有 FPGACPLD模組都可透過 26P接頭連接既有的各種實驗模組

81

FPGA 接腳對照表

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

mD0 XD6 mD0 A17 C13 -- -- mD1 XD7 mD1 B17 D12 -- -- mD2 XD8 mD2 C17 D11 -- -- mD3 XD9 mD3 D17 C11 -- -- mD4 XD10 mD4 E17 D10 -- -- mD5 XD11 mD5 E16 C10 -- -- mD6 XD12 mD6 E14 D9 -- -- mD7 XD13 mD7 E13 D7 -- -- mA0 XD14 mA0 D13 C7 -- -- mA1 XD15 mA1 C13 D6 -- -- mA2 XA0 mA2 V5 C3 -- -- mA3 XA1 mA3 U5 C4 -- -- mA4 XA2 mA4 Y2 D3 -- -- mA5 XA3 mA5 Y1 D4 -- -- mA6 XA4 mA6 V4 E3 -- -- mA7 XA5 mA7 V3 E4 -- -- mA8 XA6 mA8 W2 F3 -- -- mA9 XA7 mA9 W1 F4 -- -- mA10 XA8 mA10 T2 G6 -- -- mA11 XA9 mA11 T1 K3 -- -- mA12 XA10 mA12 R4 K10 -- -- mA13 XA11 mA13 R3 L3 -- -- mA14 XA12 mA14 R2 L4 -- -- mRD XRD mRD R1 D5 -- -- mWR XWR mWR P6 C6 -- --

POWER P0A0 POWER B4 B20 P1 P5 ALARM P0A1 ALARM A4 A19 P2 P6 RxNET P0A2 RxNET C4 B19 P4 P7 TxNET P0A3 TxNET C5 A18 P5 P9 RxUSB P0B0 RxUSB B5 A15 P6 P10 TxUSB P0B1 TxUSB A5 B15 P7 P11 RxCAN P0B2 RxCAN D6 A14 P8 P12 RxCAN P0B3 TxCAN C6 B14 P10 P13

CLK24M CLK24M CLK24M E12 B12 P124 P38

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

PWM0H P3A0 P0D0 E6 A8 P21 P23 PWM0L P3A1 P0D1 E5 B8 P23 P24 PWM1H P3A2 P0D2 C2 B6 P24 P25 PWM1L P3A3 P0D3 C1 A5 P25 P26 PWM2H P3A4 P0D4 D2 B5 P26 P27

82

PWM2L P3A5 P0D5 D1 A4 P27 P28 PWMenb P3A6 P0D6 E4 B4 P28 P30 PHT1Z P3A7 P0D7 E3 A3 P30 P31 PHT1A P3B0 P0D8 G2 C1 P31 P32 PHT1B P3B1 P0D9 G1 C2 P32 P33 PHT0A P3B2 P0D10 H5 D1 P33 P34 PHT0B P3B3 P0D11 J6 D2 P35 P35 AMP0 P3B4 P0D12 H4 E1 P36 P39 AMP1 P3B5 P0D13 H3 E2 P40 P40 AMP2 P3B6 P0D14 H2 F2 P41 P41 AMP3 P3B7 P0D15 H1 G1 P44 P43 eeSK P0C3 P1D0 C10 B9 P20 P22 eeCS P0C2 P1D1 D10 A9 P18 P21 eeDI P0C1 P1D2 F10 B10 P17 P20 eeDO P0C0 P1D3 E10 B11 P15 P19 ssCK P0B7 P1D4 E8 A11 P14 P17 ssCS P0B6 P1D5 E7 A12 P13 P16 ssDI P0B5 P1D6 A6 B13 P12 P15 ssDO P0B4 P1D7 B6 A13 P11 P14

ppCLK P3C0 P1D8 K4 G2 P46 P44 ppDIN P3C1 P1D9 K3 K1 P47 P45 TxD P3C2 P1D10 K2 K2 P50 P46 RxD P3C3 P1D11 K1 L1 P51 P48

tstLED P3C4 P1D12 L5 L2 P52 P49 stsLED P3C5 P1D13 L4 M1 P53 P50 RxLED P3C6 P1D14 L3 M2 P55 P51 TxLED P3C7 P1D15 L2 N1 P56 P52

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

xPA0 P2A0 P2D0 AA3 N2 P59 P53 xPA1 P2A1 P2D1 Y4 T1 P60 P54 xPA2 P2A2 P2D2 AA4 T2 P63 P56 xPA3 P2A3 P2D3 AB4 U2 P68 P57 xPC0 P2A4 P2D4 W5 V1 P69 P58 xPC1 P2A5 P2D5 Y5 V2 P70 P59 xPC2 P2A6 P2D6 AA5 W1 P73 P60 xPC3 P2A7 P2D7 AB5 W2 P74 P61

-- P2B0 P2D8 V6 Y1 P76 P64 -- P2B1 P2D9 V7 Y2 P77 P66 -- P2B2 P2D10 W6 AA3 P78 P68

mCS P2B3 P2D11 Y6 AB4 P79 P69 mA15 P2B4 P2D12 V9 AA4 P80 P70 mA16 P2B5 P2D13 V10 AB5 P82 P71 mA17 P2B6 P2D14 W10 AA5 P83 P74 mA18 P2B7 P2D15 Y10 AA6 P84 P75 CS0 P2C0 ADC0 AA10 AB8 P85 P76

83

SDIN0 P2C1 ADC1 AB10 AA8 P86 P77 CS1 P2C2 ADC2 U10 AB9 P87 P78

SDIN1 P2C3 ADC3 U11 AA9 P89 P79 SCLK P2C4 ADC4 V11 AB10 P90 P80 CS2 P2C5 ADC5 W11 AA10 P92 P81

SDOUT P2C6 ADC6 Y11 AB11 P93 P82 LDAC P2C7 ADC7 AA11 AA11 P95 P83

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

xPB0 P1A0 PxA0 M1 M3 P135 P85 xPB1 P1A1 PxA1 M2 M4 P132 P86 yPB2 P1A2 PxA2 M3 N3 P131 P87 yPB3 P1A3 PxA3 M4 N4 P130 P88 yPB1 P1A4 PxA4 M5 T4 P129 P91 yPB4 P1A5 PxA5 M6 T5 P128 P92 yPB0 P1A6 PxA6 N1 U3 P127 P93 yPB5 P1A7 PxA7 N2 U4 P125 P94 yPB6 P1B0 PxB0 U13 V3 P119 P95 yPB7 P1B1 PxB1 V13 V4 P118 P96 xPB2 P1B2 PxB2 W13 W3 P116 P97 xPB3 P1B3 PxB3 Y13 W4 P113 P98 xPB4 P1B4 PxB4 AA13 Y3 P112 P100 xPB5 P1B5 PxB5 AB13 Y4 P96 P101 yPC3 P1B6 PxB6 U12 Y5 P97 P102 yPC2 P1B7 PxB7 V12 W5 P98 P103 yPC1 P1C7 PxC0 AB17 W11 P108 P113 yPC0 P1C6 PxC1 AA17 Y11 P107 P112 yPA0 P1C5 PxC2 Y17 W10 P105 P111 yPA1 P1C4 PxC3 W17 Y10 P104 P110 yPA2 P1C3 PxC4 AB18 W9 P103 P107 yPA3 P1C2 PxC5 AA18 W8 P102 P106 xPB6 P1C1 PxC6 Y18 W6 P100 P105 xPB7 P1C0 PxC7 W18 Y6 P99 P104

84

eM_DEMO 模組

eM_DEMO 模組的電路配置圖如下

eM_USB 模組

數字型 LED

0 1 2 34 5 6 78 9 A BC D E F

燈號型 LED

44 鍵盤

ADC0 ADC1 DAC0 DAC1

LED 選擇KEY 選擇

其中

1eM_DEMO模組的基本功能包括 A將 xPAxPBxPC等 16個 IO訊號引出控制 LED和鍵盤電路 B將 ADDA訊號引出並放大成+-10V的工作範圍 2LED和鍵盤可以選擇三種模式由 LED和 KEY 兩組開關作選擇圖示如下

模式1

0123

模式2 模式3

0 1 2 34 5 6 78 9 A BC D E F

0123

3模式14鍵輸入並搭配 16點的 LED燈號顯示其中 16點 LED分別對映到 xPA[0~3]xPB[0~7]和 xPC[0~3] 4組按鍵分別對映到 xPC[0~3] 4模式24鍵輸入並搭配四個 7段式數字顯示其中 數字顯示由 xPA[0~3]作數字掃瞄而由 xPB[0~7]作 7段式 LED控制 4組按鍵 分別對映到 xPC[0~3] 5模式316鍵輸入並搭配四個 7段式數字顯示其中 數字顯示由 xPA[0~3]作數字掃瞄而由 xPB[0~7]作 7段式 LED控制 16組按鍵由 xPA[0~3]作鍵盤掃瞄而由 xPC[0~3]作鍵盤讀取 6根據VHDL與數位邏輯設計的章節其中 第 1章至 10章的實驗採用模式1而 第 11章實驗採用模式2而 第 12章之後的實驗都採用模式3

85

FPGA UCF 定義

eM_3S1K 模組

NET CLK LOC = B12

NET XAlt0gt LOC = N2

NET XAlt1gt LOC = T1

NET XAlt2gt LOC = T2

NET XAlt3gt LOC = U2

NET XBlt0gt LOC = M3

NET XBlt1gt LOC = M4

NET XBlt2gt LOC = W3

NET XBlt3gt LOC = W4

NET XBlt4gt LOC = Y3

NET XBlt5gt LOC = Y4

NET XBlt6gt LOC = W6

NET XBlt7gt LOC = Y6

NET XClt0gt LOC = V1

NET XClt1gt LOC = V2

NET XClt2gt LOC = W1

NET XClt3gt LOC = W2

NET YAlt0gt LOC = W10

JP4 接頭

NET YAlt1gt LOC = Y10

NET YAlt2gt LOC = W9

NET YAlt3gt LOC = W8

NET YBlt0gt LOC = U3

NET YBlt1gt LOC = T4

NET YBlt2gt LOC = N3

NET YBlt3gt LOC = N4

NET YBlt4gt LOC = T5

NET YBlt5gt LOC = U4

NET YBlt6gt LOC = V3

NET YBlt7gt LOC = V4

NET YClt0gt LOC = Y11

NET YClt1gt LOC = W11

NET YClt2gt LOC = W5

NET YClt3gt LOC = Y5

在光碟片中 RFFPGAVHDLDEMOBIT3S1K 裡有 VHDL 與數位邏輯設計書本範例原始檔與合成檔

86

eM_3S50 模組

NET CLK LOC = P124

NET XAlt0gt LOC = P59

NET XAlt1gt LOC = P60

NET XAlt2gt LOC = P63

NET XAlt3gt LOC = P68

NET XBlt0gt LOC = P135

NET XBlt1gt LOC = P132

NET XBlt2gt LOC = P116

NET XBlt3gt LOC = P113

NET XBlt4gt LOC = P112

NET XBlt5gt LOC = P96

NET XBlt6gt LOC = P100

NET XBlt7gt LOC = P99

NET XClt0gt LOC = P69

NET XClt1gt LOC = P70

NET XClt2gt LOC = P73

NET XClt3gt LOC = P74

NET YAlt0gt LOC = P105

JP4 接頭

NET YAlt1gt LOC = P104

NET YAlt2gt LOC = P103

NET YAlt3gt LOC = P102

NET YBlt0gt LOC = P127

NET YBlt1gt LOC = P129

NET YBlt2gt LOC = P131

NET YBlt3gt LOC = P130

NET YBlt4gt LOC = P128

NET YBlt5gt LOC = P125

NET YBlt6gt LOC = P119

NET YBlt7gt LOC = P118

NET YClt0gt LOC = P107

NET YClt1gt LOC = P108

NET YClt2gt LOC = P98

NET YClt3gt LOC = P97

在光碟片中 RFFPGAVHDLDEMOBIT3S200 裡有VHDL與數位邏輯設計書本範例原始檔與合成檔

87

eM_95XL 模組

NET CLK LOC = SPIN38

NET XAlt0gt LOC = SPIN53

NET XAlt1gt LOC = SPIN54

NET XAlt2gt LOC = SPIN56

NET XAlt3gt LOC = SPIN57

NET XBlt0gt LOC = SPIN85

NET XBlt1gt LOC = SPIN86

NET XBlt2gt LOC = SPIN97

NET XBlt3gt LOC = SPIN98

NET XBlt4gt LOC = SPIN100

NET XBlt5gt LOC = SPIN101

NET XBlt6gt LOC = SPIN105

NET XBlt7gt LOC = SPIN104

NET XClt0gt LOC = SPIN58

NET XClt1gt LOC = SPIN59

NET XClt2gt LOC = SPIN60

NET XClt3gt LOC = SPIN61

NET YAlt0gt LOC = SPIN111

JP4 接頭

NET YAlt1gt LOC = SPIN110

NET YAlt2gt LOC = SPIN107

NET YAlt3gt LOC = SPIN106

NET YBlt0gt LOC = SPIN93

NET YBlt1gt LOC = SPIN91

NET YBlt2gt LOC = SPIN87

NET YBlt3gt LOC = SPIN88

NET YBlt4gt LOC = SPIN92

NET YBlt5gt LOC = SPIN94

NET YBlt6gt LOC = SPIN95

NET YBlt7gt LOC = SPIN96

NET YClt0gt LOC = SPIN112

NET YClt1gt LOC = SPIN113

NET YClt2gt LOC = SPIN103

NET YClt3gt LOC = SPIN102

在光碟片中 RFFPGAVHDLDEMOSVF95288XL 裡有VHDL與數位邏輯設計書本範例原始檔與合成

檔案

88

eM_FPGA 模組

NET CLK LOC = E12

NET XAlt0gt LOC = AA3

NET XAlt1gt LOC = Y4

NET XAlt2gt LOC = AA4

NET XAlt3gt LOC = AB4

NET XBlt0gt LOC = M1

NET XBlt1gt LOC = M2

NET XBlt2gt LOC = W13

NET XBlt3gt LOC = Y13

NET XBlt4gt LOC = AA13

NET XBlt5gt LOC = AB13

NET XBlt6gt LOC = Y18

NET XBlt7gt LOC = W18

NET XClt0gt LOC = W5

NET XClt1gt LOC = Y5

NET XClt2gt LOC = AA5

NET XClt3gt LOC = AB5

NET YAlt0gt LOC = Y17

JP4 接頭

NET YAlt1gt LOC = W17

NET YAlt2gt LOC = AB18

NET YAlt3gt LOC = AA18

NET YBlt0gt LOC = N1

NET YBlt1gt LOC = M5

NET YBlt2gt LOC = M3

NET YBlt3gt LOC = M4

NET YBlt4gt LOC = M6

NET YBlt5gt LOC = N2

NET YBlt6gt LOC = U13

NET YBlt7gt LOC = V13

NET YClt0gt LOC = AA17

NET YClt1gt LOC = AB17

NET YClt2gt LOC = V12

NET YClt3gt LOC = U12

在光碟片中 RFFPGAVHDLDEMOBIT2V250 裡有VHDL與數位邏輯設計書本範例原始檔與合成檔

89

Page 12: RFFPGA 直流馬達實驗手冊juniortek.com.tw/program/manual/RF-DC-mal.pdf · em_demo模組 em_dcm 直流伺服馬達 dc電源 rffpga 系統的直流馬達實驗規劃 其中包括:

如果 PWM 的頻率過低馬達端會產生震動噪音這時就必須提高 PWM 的頻率在前面程

式中如果要將 PWM 頻率從 4KHz 提升為 8KHz則可更改如下

if DIR=0 then Qlt=Q+2 --up counter else Qlt=Q-2 --down counter DIR lt= SYSTEM(12) --8KHz square wave 其中

1將 DIR改由 8KHz的 SYSTEM(12)來控制 2同時將計數器改成+2-2的正反計數器 3如此仍然能夠維持 REF輸出的數值範圍(7~3079)

如果還要再將 PWM 的頻率提高到 16KHz則可更改如下

if DIR=0 then Qlt=Q+4 --up counter else Qlt=Q-4 --down counter DIR lt= SYSTEM(11) --16KHz square wave 其中

1將 DIR改由 16KHz的 SYSTEM(11)來控制 2同時將計數器改成+4-4的正反計數器 3如此仍然能夠維持 REF輸出的數值範圍(7~3079)

表面上三角波產生器的數值精度為 12-bit時間精度為 24MHz但是由於 PWM 訊號將

透過 FPGA2 輸出而高速串列界面的更新速度為 15MHz所以就 DCM 模組所收到的 PWM

控制訊號而言其時間精度將降低為 15MHz而數值上的精度將降低為 8-bit等效範

圍為 0~192 或是+-96 之間整體而言控制上的精度約為 05仍可符合馬達控制的

需求

PWM 波形產生器

接著處理比較的動作並產生 PWM 波形對映的 VHDL 程式範例如下

PWM_COMPARATOR block signal CEPUPD STD_LOGIC signal D0D1D2D3D4 STD_LOGIC begin process (CLK) -- sequential logic begin if CLKevent and CLK=1 then --CLK=gt1 trigger if CE=1 then --CLK enable D4lt=D3 D3lt=D2 D2lt=D1 D1lt=D0 --delay end if end if

12

end process -- combinational logic CE lt= CLK1M D0 lt= 1 when CMDgtREF else 0 --PWM generation PU lt= D1 and D2 and D3 and D4 --up-side output PD lt= not D1 and not D2 and not D3 and not D4 --down-side output PWMU lt= PU --up-side PWM output PWMD lt= PD --down-side PWM output PWMI lt= (not PU and not PD) or not ENB --PWM disable PWMR lt= REF --PWM reference end block PWM_COMPARATOR

程式中所對映的時序如下

CE

REF

CMD

D1D2D3D4PWMUPWMDPWMI

其中

1以 15MHz的 CE訊號為基本頻率 2將電壓命令 CMD和參考波形 REF作比較若 CMDgtREF則設定 D0=0否則設定

D0=1 3將 D0訊號作四次的延遲處理延遲訊號依序為 D1D2D3D4最後再重新組合成

PWM的輸出波形 4其輸出訊號包括 PWMU對映到 DCM模組中的 PWM+訊號 PWMD對映到 DCM模組中的 PWM-訊號 PWMI對映到 DCM模組中的 DIS訊號為切換保護訊號 如此 PWMU作動和 PWMD作動之間將有 2us間隔中是兩者都不作動的也就是

PWMI的作動時間 5當 ENB命令=0時設定 PWMI=1而使得驅動器 OFF

13

回授訊號的處理

精密的伺服馬達動作必須將馬達的位置和速度加以量測後再執行回授控制因此速

度和位置的量測是精密控制中必要的一環我們通常用光電寫碼器或數位尺來進行量測

工作

光電寫碼器(Photo-Encoder)俗稱光電盤是利用光電量測進行的非接觸式數位量測元

件其基本裝置如下

LED光源

光電晶體偵測

以 LED 或是其他光源來發光而用 AB 相的兩組光電晶體來偵測當圓盤隨著馬達作轉

動時光電晶體即可偵測到其移動狀態由於圓盤中的小孔呈等距排列其透光部分和

不透光部分呈 50對 50的比例當圓盤轉動時光電晶體端就可以偵測到下述訊號

光電盤訊號(A 相)

光電盤訊號(B 相)

正轉

其中

1偵測方波的頻率即對應於圓盤轉動的頻率也就是轉速 2偵測方波的個數即對應於圓盤轉過的孔數也就是轉角(相對角度) 3由於 AB相的兩組光電晶體在機械安裝上的角度不同使得讀出訊號也有 90 度的

差異如果馬達正轉則 A相超前如果馬達反轉則 B相超前

有了兩相的光電盤訊號只要能偵測其中的相位變化就可以分辨光電盤的正反轉運動

了例如正轉時的光電盤時序如下

14

光電盤訊號 (A 相 )

光電盤訊號 (B 相 )

正轉

微分訊號(A+)

微分訊號(A-)

微分訊號(B+)

微分訊號(B-)

正轉脈衝(CW)

其中

1針對 AB 兩相訊號作微分處理即可取得 A+A-B+B-的上緣微分和下緣微分 2將微分訊號和和原有的 AB相訊號作比較即可找出正轉脈衝 3計算正轉脈衝的頻率和個數即可取得馬達的速度和轉角 4如此得到的脈衝數將是原有 AB相頻率的四倍所以稱之為乘四解碼電路

同樣的如果針對光電盤的反轉時序一樣可以得出反轉訊號圖示如下

光電盤訊號(A相)

光電盤訊號(B相)

反轉

反轉脈衝(CCW)

其公式如下

CW lt= (A+ and not B) CCW lt= (A+ and B) or (A- and B) or (A- and not B) or (B+ and A) or (B+ and not A) or (B- and not A) or (B- and A)

整合光電盤回授的處理其系統方塊圖如下

數位濾波

D Q

CK

DLA

PHA

D Q

CK

DLB

PHB

CLK

乘四解碼電路

DIR

PLS

數位濾波

PA

PB

正反計數

CNT DB

RD

CS

包括

15

1首先利用簡單的數位濾波器將 AB項的雜訊排除 2接著利用延遲電路作微分處理並以乘四解碼電路解出轉動的脈波和方向 3最後利用正反計數器作計數並將計數值讀入匯流排

數位濾波器

光電盤的 AB 相訊號中如果產生雜訊干擾的現象會使得馬達轉角的計量上產生永久

性的累積誤差將造成控制上無法彌補的錯誤所以 AB 相訊號上的雜訊一定要盡力排

除下面是常用的數位濾波器設計範例

FILTER_A block -- digital filter for A signal CED0D1D2 STD_LOGIC begin process (CLK) -- sequential logic begin if CLKevent and CLK=1 then --CLK=gt1 trigger if CE=1 then --clock enable D2lt=D1 D1lt=D0 D0lt=PA --delay 3 clocks PHA lt= (D0 and D1 and D2) or ((D0 or D1 or D2) and PHA) end if end if end process -- combinational logic CE lt= CLK1M --15MHz clock end block FILTER_A 其中

1以 15MHz的頻率為控制基準 2利用延遲電路依序產生 D0D1D2的延遲訊號 3連續三個 1(D0D1D2 都是 1)定義為 1連續三個 0(D0D1D2 都是 0)定義為 0而其他不連續的 10 都定義為雜訊如此可將高頻的雜訊濾除

4但是相對的AB相訊號的最高頻率將限制為 250KHz(連續 3個 1和連續 3個 0)頻率過高的 AAB相訊號將被視為雜訊而不處理必須特別注意

正反轉的解碼和計數

依據前面的公式說明對映的 VHDL 程式範例如下

DECODER block signal DLADLB STD_LOGIC begin process (CLK) -- sequential logic begin if CLKevent and CLK=1 then --CLK=gt1 trigger DLAlt=PHA DLBlt=PHB --delay 1-clock end if end if

16

end process -- combinational logic DIR lt= (not PHA and DLA and not PHB) or ( PHA and not DLA and PHB) or (not PHB and DLB and PHA) or ( PHB and not DLB and not PHA) PLS lt= (not PHA and DLA) or (PHA and not DLA) or (not PHB and DLB) or (PHB and not DLB) end block DECODER 其中

1PHAPHB為經過雜訊濾波後的 AB相訊號而 DLADLB是其延遲訊號 2根據乘四解碼電路的公式取得 DIR和 PLS訊號其中 DIR用以控制計數器的正反向 PLS用以控制計數器的計數與否

所以接下去就是正反計數器的設計範例如下

COUNTER block signal Q STD_LOGIC_VECTOR(11 downto 0) begin process (CLKRESET) -- sequential logic begin if RESET=1 then --power-on reset Qlt=000000000000 --reset to 0 elsif CLKevent and CLK=1 then --CLK=gt1 trigger if PLS=1 then --clock enable if DIR=1 then Qlt=Q-1 --down counter else Qlt=Q+1 --up counter end if end if end if end process -- combinational logic CNT lt= Q --counter output end block COUNTER 其中

1這是標準的正反計數器架構在開機時自動復歸 2計數器的長度為 12-bit可依需要自行調整

DCM模組中的光電盤精度為每圈500格經過乘四解碼後相當於每圈2000格所以12-bit

計數器只能處理 2 圈的應用範圍絕對不夠在真正應用時一定要用軟體或硬體的方

式再擴張成 16-bit 或是 32-bit 的寬度來處理才行

17

3實驗項目

在直流伺服馬達控制系統中規劃五個實驗項目由系統首頁做選擇每項實驗操

作整個系統實驗組成由各項實驗項目 CAI 檔及各項實驗項目程式連結 PLC 檔結合而成茲表列如下

直 流 伺 服 實 驗 e x p _d c m c ai

開 環 路 電 壓 控 制

系 統 首 頁 實 驗 程 序

e x p _p w m c ai

開 環 路 速 度 控 制 e x p _s p ee d c a i

閉 環 路 位 置 控 制 e x p _a n gl e c a i

加 減 速 的 位 置 控 制 e x p _a c c c ai

正 弦 波 位 置 控 制 e x p _s i n c ai

C A I 圖 控 檔

直 流 伺 服 實 驗 開 環 路 電 壓 控 制

系 統 首 頁 實 驗 程 序

e x p _p w m p lc

開 環 路 速 度 控 制 e x p _s p ee d p l c

閉 環 路 位 置 控 制 e x p _a n gl e p l c

加 減 速 的 位 置 控 制 e x p _a c c p lc

正 弦 波 位 置 控 制 e x p _s i n p lc

e T T Y 批 次 檔

18

4安裝程序

31 將 RFFPGA中的程式拷貝至工作硬碟中進入 DC子目錄資料夾中其中包含下

列檔案

檔案 內容說明 mod SIN_wave MODPWM_wave MODIIR1_filter MODDAS4

MODPOS_inputMODPWM_outputMODACC_controlMODPD_controlMOD這些檔案是由 ASM重新編譯出由 testDCMmem所需執行模組檔

asm SIN_waveasmPWM_waveasmIIR1_filterasmDAS4asm POS_inDCMasmPWM_outDCMasmACC_conDCMasmPD_controlasm是各模組組合語言所設計 SOURCE檔

plc 為進行實驗所需的各批次檔 bit piDSPv0bit為下載到 FPGA的 BIT檔其功能為將 FPGA規劃成

具備 piDSP控制晶片功能提供直流伺服控制所需的控制程式

撰寫 testDCMsys 記載進行 DCM實驗時所需的模組 testDCMMEM 連結完成的 DSP執行檔用來進行 DCM實驗 testDCMvar 紀錄 DCM實驗時的參數對照表

在進行實驗前先將實驗所需的系統程式與模組程式分別說明加以說明系統所

需的程式模組由 testDCMsys 來描述程式列印如下

module fg1 PWM_wavemod 方波產生器

module fg2 SIN_wavemod 弦波產生器

module cn1 ACC_controlmod 加減速控制器

module cn2 PD_controlmod 比例微分控制器

module io1 POS_inputmod 位置和速度讀值

module io2 PWM_outputmod PWM 電壓輸出界面

module ft1 IIR1_filtermod 一階濾波器

module das das4mod 示波器資料蒐集

module io3 LEDKEYmod LEDKEY 界面

其中包括

1兩組波型產生器作為測試命令包括正弦波和方波 2兩組控制器提供包括加減速PD控制器的功能可依照實驗需求搭配使用 3兩組輸入輸出界面執行 PWM輸出和相位回授的界面處理 4一組低通濾波器作為電壓開迴路控制迴路和速度閉迴路控制的模擬使用 5DAS4mod是示波器專用的配合模組不論任何實驗都必須加入此模組 6Ledmod是四位數字七段顯示與 44矩陣按鍵模組

19

5執行程序

首先進入 RFFPGA 裡子目錄 DC直接點選 fPLCexe 出現下面操作畫面(也可直接將此檔

案放置桌面直接點選)

進入下面操作畫面

20

首先使用滑鼠在 FPGA下載按鈕單擊動作使 FPGA變成 piDSP晶片 如您撰寫組合語言時可使用 eASM按鈕 經編譯完成後產生MOD檔 如您撰寫系統連結程式時可使用 eLINK按鈕 經連結完成後產生MEM與VAR檔 點選實驗三後顯示如下 選擇程式下載再按程式啟動這時直流伺服馬達開始做位置控制在操控畫面放置 P 參數設定欄更改參數時馬達即時隨參數改變而產生不同響應 直接點選程式停止時結束所有控制動作再按回首頁選擇其他實驗

21

6實驗說明

下圖所示為直流馬達的控制系統方塊圖透過電流速度以及位置的回授再搭

配適當的控制器可建立完整的閉迴路控制系統在後面的實驗中將依此一系統方塊圖

逐步建立速度和位置的控制實驗各實驗的說明和操作方式及參考實驗結果將逐一進

行詳細的說明

控制

參考位置

速度 位置速

度控制 電流控制

電力電

子換流

位置速

度感測

i

+ -

壓ν

位置

速度

i

DC直流馬達之控制系統方塊圖

PWM 驅動方式只是簡單的開環路控制而高精度的馬達控制必須透過回授控制來完成

對於邏輯電路的設計者而言必須先瞭解基本的回授控制架構以便將來轉換成實用的

邏輯電路設計

設計說明

開環路特性

在電壓驅動的狀況下直流馬達開環路控制的示意圖如下

+-

22

如果換算成數學模式則轉換成下面的架構

+-Vc

R L

EMF

+

-

ITB

J

ω

其中

1其中的變數和參數包括 Vc 控制的電壓命令 R 電樞迴路的等效電阻 L 電樞迴路的等效電感 EMF電樞產生的反電動勢 i 電樞迴路中的電流 T 馬達所產生的扭力 J 馬達和負載的等效慣量 B 馬達和負載的等效摩擦力 ω 馬達所產生的速度 2所牽涉的物理公式包括 電壓迴路Vc = Ri + L(didt) + EMF 即電樞迴路中的電壓平衡 動力負載T = Bω + J(dωdt) 即扭力平衡 馬達特性T = Kti 所產生的扭力和電流成正比 電機特性EMF= Keω 所產生的電動勢和轉速成正比 其中新增的參數包括 Kt馬達的扭力常數 Ke馬達的反電動勢常數 3將微分項作拉式轉換(Laplase Transformation)的對映即 s = ddt 可將微分方程式轉換成更簡單的代數方程式而產生到下面的控制方塊圖

sL+R1Vc

+-EMF

iKt

TsJ+B1 ω

Ke

4在直流馬達的開環路特性中控制電壓(Vc)時輸入點而馬達轉速(ω)是輸出點即是控制馬達電壓以控制馬達轉速

5基本上馬達的開環路特性是個兩階系統類似於低通濾波器的特性在許多應用 場合其開環路特性還可以再簡化成一階系統方塊圖如下

23

sτ +1

KmVc ω 其中 τ一階系統的時間常數 Km一階系統的穩態增益

採用兩階系統的分析方式雖然會比較精細但是用一階系統來分析則可簡化所有的設計

過程因為這裡的實驗重點是邏輯設計所以在本章中我們都用一階系統作分析

系統響應的要求

就控制系統而言最重要的需求就是系統響應包括

穩態特性通常以穩態誤差為指標即是穩態時系統輸出和輸入之間的差異 暫態特性通常以上升時間(Rise Time)和過越比率(Overshoot)為指標

一個理想中的伺服控制系統其系統響應應該是

1穩態誤差為 0即馬達輸出將追隨輸入作變化沒有誤差 2過越比例為 0即馬達輸出絕對不會產生衝過頭的現象 3上升時間為 0即馬達輸出隨時追上輸入命令不會有控制上的延遲現象

當然這是太理想了一個合理的伺服控制系統應該是

1穩態誤差越小越好最好為 0 2過越比例越小越好最好為 0 3上升時間越短越好當然無法為 0但是盡力就是了

速度的回授控制

回授控制的目的就是為了改善系統響應以一階系統代表的馬達控制為例

sτ+1

KmVc ω

在步階響應(Step Response)時其特性如下

1穩態誤差由 Km決定 2過越比例為 0 3上升時間即是其時間常數(τ)

如果用比例控制器(P 控制器)作速度回授的控制則控制方塊圖如下

sτ+1

KmVc ωKp

err

P控制器 直流馬達ωc

速度回授

速度命令 + 速度響應-

24

其中

1速度命令並不直接控制馬達的驅動電壓而是 A將速度命令和速度回授相比找出其誤差訊號 err B依誤差訊號來控制驅動電壓 誤差越大則驅動電壓越高 誤差越小則驅動電壓越低 誤差為負則驅動電壓也為負 其中的比例關係由 P控制器中的 Kp 來調整 2經由數學分析後其步階響應的特性為 A穩態誤差變成 1(1+kpkm)如果 kpkmgtgt1則穩態誤差將趨近於 0 B過越比例仍為 0 C上升時間即是由τ變成τ(1+kpkm)所以上升時間將變短 3換句話說只要 Kp值夠大不論是穩態誤差或是上升時間都會大幅改善

理論上P控制器的增益是越高越好最好是無限大但是實際上是有限制的原因是

1馬達的開環路特性是兩階系統而非一階系統一階系統只是簡化後的結果 2當兩階系統作高增益的回授控制時當增益過高時會產生極嚴重的過越現象使得

馬達產生巨幅震動而難以控制

所以 P控制器的增益雖然是越高越好但調整時仍要小心維持(過越比例為 0)的條件

轉角的回授控制

做為馬達的速度控制P控制器的效果不錯但是如果將 P控制器應用到馬達的轉角控

制其特性就不太理想圖示如下

sτ+1

KmVc ωKp

err

P控制器 直流馬達

θc

轉角回授

轉角命令 + 轉角響應-

s1 θ

其中

1從馬達的速度到轉角之間具有積分特性即 馬達的轉角是馬達速度的積分結果而 馬達的速度是馬達轉角的微分結果而 2其中的積分特性使得整個系統由一階特性變成兩階特性在兩階系統中當設定高

增益時會產生極嚴重的過越現象使得馬達產生巨幅震動而難以控制 3在 P控制器增益無法提高的狀況之下轉角控制效果將無法獲得改善

雖然 P控制器在轉角控制上的效果並不好但是在控制系統中還是有許多法寶可以選擇

25

其中 PD 控制器就是簡單又有效的一個好方法

從表面上來看PD 控制器比 P控制器多了一個微分項就數學上來看這微分項提供了

一個新零點(Zero)可以調整根軌跡圖的走向就實驗上來說這微分項提供了控制器

的預測功能說明如下

sτ+1

KmVc ωKp+sKd

err

P控制器 直流馬達

θc

轉角回授

轉角命令 + 轉角響應-

s1 θ

1轉角控制中 P控制器的問題是在嚴重的過越現象原因是在 P控制器的作用下只有當回授超過命令時才能做出「負向」的控制但這時已經來不及了因為積分器

中已經累積了過多的能量而無法立刻消失使得馬達轉角衝過了頭 2解決之道就是在回授超過命令之前就必須做出「負向」的控制使得積分器累積

的能量逐步減弱在到達目標時才能立刻煞車才能解除過越現象 3而微分項就是這個預測量因為當誤差量越來越小時其微分項是負值雖然微分

項(D)是負值 當誤差量(P)很大時(P+D)的結果還是正值所以還是「正向」控制 當誤差量(P)漸小時(P+D)的結果變成負值才會開始「負向」控制 換句話說在誤差為 0之前即可啟動負向控制產生煞車作用使得馬達提前減速

而即時停止在目標點上自然就解除過越現象了

所以在 PD 控制器中有兩項調整量其中

1Kp增益提供比例控制部分的增益而 Kd增益提供微分控制部分的增益 2Kp增益控制馬達的趨近速度主要影響的是上升時間 3Kd增益控制馬達的提前煞車主要影響的是過越比例 4在兩者搭配下就有機會得到 很快很短的上升時間同時也 不會產生過越現象

PD 控制器的執行

依據 PD 控制器公式可以建立以數位執行的 PD 控制器如下圖所示

cmdKp

fdk

+

-

err

old

+-

Kd

Z-1

out+

+

26

其中

1利用差分公式來取代 PD控制器中的微分公式定義如下 s ==gt (1-Z-1)DT 其中對映的變數包括 s 微分項 Z-1延遲一個抽樣週期 DT抽樣週期單位為 sec 2就執行面而言Z-1是延遲一個抽樣週期也就是以抽樣週期所控制的暫存器 3在上圖中將命令(cmd)和回授(fdk)相減後得到誤差值(err)再將 err延遲一個抽樣週期成為 old所以(err-old)DT即是微分項

4原始的微分控制公式為(err-old)DTKd必須先除再乘但是因為 DT和 Kd 都是常

數可以預先將 Kd修正成 Kd=(KdDT)那麼公式將修正為(err-old)Kd就只需要一個乘法而不需要除法了

同樣的 PD 控制器可以用許多不同的方法作執行包括

1以軟體方式執行例如在 DSP核心中以組合語言撰寫控制模組 2以硬體方式執行例如在 FPGA中直接設計邏輯電路 3以微碼方式執行以微碼作順序控制執行硬體運算工作

這裡先提供用組合語言撰寫的程式模組作為設計參考其他兩種方法將在後續的實驗中

再陸續作說明

模組程式範例PD_controlasm

local cmd R0 IP gnd 輸入點位置命令(可忽略) local fdk R1 IP gnd 輸入點位置回授(可忽略) local out R2 OP 輸出點用以控制速度迴路 local kp R3 256 參數增益 kp10=256 local kd R4 0 參數增益 kd10=256 local err R5 0 內部變數 local old R6 0 內部變數 local gnd R7 0 無輸入時的短路點 data 8 模組變數區長度 initial 開機啟動程序 WR out0 WR old0 RET out=old=0 timer 即時控制程序 RD (cmd) SUB (fdk) WR err MUL kp SFR 8 P=(cmd-fdk)kp256 RDS err SUBX old MUL kd SFR 8 D=(err-old)kd256 ADDS WR out out=P+D RET

27

其中

1PD控制模組中對外的界面變數包括 cmd命令的輸入點 fdk回授的輸入點 out控制的輸出點 2內部參數包括 Kp比例控制增益其中 10=256所以乘完後還需要再右移 8-bit Kd微分控制增益其中 10=256所以乘完後還需要再右移 8-bit 3內部變數包括 err臨時性的變數用以儲存誤差值的計算結果 old儲存性的變數用以儲存上一次抽樣控制時的 err值 4模組程式分成三部分包括 變數宣告local和data所宣告的部分 初值設定initial程序中先將 out和 old設定為 0 即時控制timer程序中依序執行 PD控制器中的每個步驟

控制目標的選擇

從字面上來看速度控制就是控制馬達的速度轉角控制就是控制馬達的轉角沒什麼

好討論的但是實際上確有許多問題第一的問題就是什麼是速度和轉角馬達的速

度和轉角如果不作量測如何得知

既然在量測中取得了速度和轉角資料那麼我們所控制的到底是物理學上的速度和轉

sτ+1

KmVc ωKp+sKd

err

P控制器 直流馬達

θc

轉角回授

轉角命令 + 轉角響應-

s1 θ

KxANG

轉角量測

角還是量測上的速度和轉角以下圖為例

其中

1以轉角量測裝置量測轉角例如裝在馬達軸端的光電盤和解碼電路 2轉角的量測輸出是 ANG而 ANG和物理轉角θ之間有 Km的增益關係 3只要 Km值不是 1那麼系統就不再是單位回授 4如果 Km還有非線性或失真現象那麼控制結果也將有非線性或失真現象

這些問題混雜起來會使得控制系統的分析變得更複雜如果要簡單處理就要認同現

實環境直接以量測結果為控制目標如下圖所示

28

sτ+1

KmVc ωKp+sKd

err

P控制器 直流馬達

θc

轉角回授

+-

s1 θ Kx

ANG轉角量測

其中

1直接以量測結果為控制目標將全系統還原成標準的單位回授控制 2所有的非線性或失真現象都進入開環路討論屬於可以補償的部分 3但是控制結果就是「量測上的轉角」而「物理學上的轉角」

量測誤差的問題

轉角θ

量測ANG

對於量測誤差而言最明顯的問題就是量化誤差圖示如下

其中

1以 DCM模組中的光電盤為例精度為每圈 500格經由乘四解碼計數後其等效

精度增加為每圈 2000格 2比(12000)圈更精密的部分都無法響應換句話說振幅越大的控制其相對誤差越

小而振幅越小的控制其相對誤差越大例如 當振幅為(12)圈時其控制誤差量為 01而 當振幅為(120)圈時其控制誤差量為 1 這是標準的的非線性現象

量化誤差不只影響穩態上的精度還會造成非線性的震動問題圖示如下

t

誤差值

+1

-1

其中

1由於量化誤差的問題只有當誤差超過+1或是-1時才會真正偵測到誤差也才

29

會施加控制量作補償 2所以穩態時的誤差將在+1-1之間擺動造成微幅的振動 3量化誤差越大震動越明顯而量化誤差很小時通常不易察覺出震動現象

微分量的計算

伺服系統中有兩處需要用到微分計算包括

1PD控制器中誤差微分量的計算 2速度控制器中速度回授值的量測

在理論上微分公式是(dXdt)相當於 dXdt = (X(n)-X(n-1))DT (當 DT趨近於 0時)

所以當微分計算中的抽樣週期(DT)越短時微分的計算值將越接近理論值但是事實上

卻非如此以下圖為例

t

X

DTDX

其中

1當 X值為等速度運動時其微分量就是其斜率相當於 DXDT 2DT是微分計算中的抽樣週期理論上越短越好但是由於 DX本身的量化誤差

使得這個原則不再成立例如當斜率為 7394時 若 DT=1000則 DX=7394而 DXDT=7394 若 DT=100 則 DX=739 而 DXDT=739 若 DT=10 則 DX=73 而 DXDT=73 若 DT=1 則 DX=7 而 DXDT=7 3換句話說當抽樣週期越短時DX的量化誤差將越明顯而造成微分計算上更嚴

重的誤差

在 DCM 模組中速度量測的量化誤差分析如下

1馬達上的光電盤精度為每圈 500格經過乘四解碼後等效精度為每圈 2000格 2當馬達轉速為 1200RPM而抽樣頻率為 1KHz時對映的速度量測值為 1200(圈分)2000(格圈)60(秒分)1000(DT秒) = 40(格DT) 3換句話說1200RPM的轉速對映到 40的速度量測值即速度單位=30RPM若最

高轉速為 3000RPM則在+-3000RPM的速度範圍內其量化誤差為 05相當於8-bit的 ADC轉換器精度

4對映不同的抽樣頻率的量化誤差表列如下

30

光電盤精度 最高轉速 抽樣頻率 速度單

速度範圍 量化誤差

500PPR 3000RPM 1KHz 30RPM +-100 05 500PPR 3000RPM 2KHz 60RPM +-50 1 500PPR 3000RPM 4KHz 120RPM +25 2

過溢現象的處理

輸入

輸出

32767

-32768

整數運算都有數值範圍限制以 16-bit 整數而言輸入輸出的關係如下

其中

1當超過正負數的上下限時數值會正負顛倒例如 +32768 將會視為 -32768作處理而 +32769 將會視為 -32768作處理依此類推 2換句話說16-bit的整數運算只有在+-32767之間是線性的對映關係而超過這個範圍就是非線性的對映關係

3不但如此還因為正負顛倒的現象使得原來設計的負回授控制將變為正回授控制

而產生非線性的震盪現象 4換句話說只要計算上稍一不慎就會使得原先穩定的系統產生不穩定的震盪結果

為了避免過溢現象所造成的不穩定問題通常控制系統中會利用飽和處理作改善圖示

如下

輸入

輸出

lmtH

lmtL

31

其中

1當超過計算的上限時將固定設為上限值處理而當超過計算的下限時也將固定

設為下限值處理 2這時的整數運算只有在上下限之間是線性的對映關係而超過這個範圍將還是非線

性的對映關係 3雖然如此但是因為沒有正負顛倒的現象所以不再會有負回授變為正回授的問題

而避免了非線性的震盪現象 4換句話說飽和處理是針對過溢現象的妥協處理方案雖然不完全理想但是是可

接受的最佳選擇

下面是對映的組合語言範例

RD x x為輸入端 MIN lmtH 取得 x和 lmtH中的較小值即是作上限保護的工作 MAX lmtL 取得 x和 lmtL中的較大值即是作下限保護的工作 WR y Y為輸出端 其中

1組合語言中提供MAX和MIN的計算其中 MIN lmtH 比較 AX暫存器和 lmtH而將較低值存入 AX暫存器中 MAX lmtL 比較 AX暫存器和 lmtH而將較高值存入 AX暫存器中 2所以直接可用MIN指令作上限保護而以MAX指令作下限保護兩者合併後即是

完整的飽和處理結果

飽和處理通常應用在高位數轉成低位數的場合例如32-bit轉換成16-bit或是16-bit

轉換成 12-bit 等等例如在本實驗中所有的運算都是以 16-bit 整數作處理但是到

PWM 驅動級輸出時卻要轉換成 12-bit精度的 PWM 命令所以必須先用飽和處理以避免

過溢現象造成的不穩定問題

32

61 實驗 1-開迴路的電壓控制 實驗說明以電壓直接控制轉速的開迴路特性可簡化為一階系統處理方塊圖如

sτ+1

v km ωm

其中V 送給驅動器的 PWM電壓命令

ωm馬達的轉動速度可由處理 photo encoder信號所得的位置微分而得 km一階系統的穩態增益 τ一階系統的時間常數即步階響應中的上升時間

為了觀測直流馬達的開環路特性建立下面的測試方塊圖

其中

1所使用的模組包括 FG1方波產生器產生所需的步階測試波形 FT1馬達模擬以一階系統的低通濾波器來執行 IO1光電盤的回授處理可同時取得轉角和速度的量測值 IO2PWM電壓驅動直接驅動直流馬達作控制 Led四位數字七段顯示模組顯示波形信號資料 2測試目標有兩項(P 參數設定欄)包括 A調整方波命令控制直流馬達作開環路的 PWM電壓控制 B調整馬達模擬參數使模擬結果和實驗結果相符以確認開環路特性

33

實驗畫面顯示如下

測試一 開環路的電壓控制 記錄頻道 CH1電壓命令Y1=-300DY=500 CH2模擬速度Y2=-100DY=500 CH3馬達速度Y3=100DY=50 CH4馬達轉角Y4=300DY=50000 實驗參數 FG1kAMP=256電壓命令的測試振幅 FG1kFRQ=150電壓命令的測試頻率 FT1DT =10 馬達模擬參數 FT1KA =500馬達模擬參數

其中

1用示波器功能記錄四個頻道其中 CH2和 CH3重疊顯示以比較模擬速度和量測

速度之間的差異 2由於 Km 不等於 1所以必須調整 CH3的 Y軸單位才能使得 CH2和 CH3的穩態響應部分重疊

3實驗時可以改變 FG1的參數以調整測試方波的振幅和頻率 4可以調整 FT1的參數使得 CH2和 CH3的暫態響應部分重疊

根據實際的測試結果分析如下

2馬達模擬的參數調整到 DT=10而 KA=500根據公式 τ = 40961000dtka 所以上升時間(τ)為 0082秒或是 82ms 3CH2CH3的 Y軸單位並不一致顯然 Km 不等於 1經計算確認 Km=0098

對應之 plc檔程式說明(exp_pwmplc) echo off 畫面顯示開始

run dsp 0 選擇 DSP1

run stop run reset 既有程式停止

run testDCMmem 下載指定程式

das 1 ampfg1out 0 1024 PWM 波形 Volt 設定 DAS 頻道1

das 2 ampft1lp 0 1024 馬達模擬 Volt 設定 DAS 頻道2

das 3 ampio1spd 0 1024 馬達速度 Volt 設定 DAS 頻道3

das 4 ampio1ang 0 1024 馬達角度 Volt 設定 DAS 頻道4

plot select 0 設定示波器頁數

plot xunit 100000 0 設定示波器 X軸

plot yunit 1 500 -300 設定示波器 Y1 軸

34

plot yunit 2 500 -100 設定示波器 Y2 軸

plot yunit 3 50 100 設定示波器 Y3 軸

plot yunit 4 50000 300 設定示波器 Y4 軸

plot trigger 1 0 1 10 設定示波器觸發

plot scope 9 1 2 3 4 設定示波器顯示

module io2 設定 io2 模組

s cmd ampfg1out

module fg1 設定 fg1 模組

s kAmp 256 s kFrq 150

module ft1 設定 ft1 模組

s u ampfg1out s dt 10 s ka 500

module io3 設定 io3 模組

s led ampfg1out

module 回復預設模組

run 1khz 設定抽樣頻率為 4KHz

run start DSP 開始執行

das stop pause 1 DAS 啟動 das start DAS 啟動

echo on 回復正常訊息顯示

使用者可視情況調整一階濾波器的 ka和 dt值使得 ch2和 ch3 兩組波形完全相符

以求得開迴路系統近似的一階轉移函數 CAI操控設計畫面規劃如下(EXP_PWMCAI) page 1 畫面設計

35

page 2 畫面設計 page 3 畫面設計

36

實測響應圖

訊 號 說 明 訊 號 說 明 ch1 方波產生器訊號 ch3 一階濾波器輸出信號 ch2 馬達角速度訊號 ch4 馬達角位置訊號

直流馬達之開迴路電壓控制響應圖

37

以邏輯分析功能觀測直流馬達之光電盤輸入與 PWM輸出信號

38

62 實驗 2-閉迴路的速度控制 實驗說明為了觀測閉迴路的速度控制響應建立下面的測試方塊圖

加入 PD控制後系統閉迴路的轉移函數經適度的簡化仍能約略以一階系統

處理方塊圖如下

sτ+1

u km ωm

其中

u 送給控制器的速度命令

ωm馬達的轉動速度可由處理 photo encoder 信號所得的位置微分而得

km一階系統的穩態增益 τ一階系統的時間常數即步階響應中的上升時間

方塊圖中的模組功能說明如下

1用 fg1 產生測試用的方波速度命令

2將方波速度命令和速度回授訊號送到 PD 控制器方塊中產生電壓控制訊號再透

過 io2 模組將訊號送出給伺服介面

3用 ft1 建立對照用的一階系統可用 IIR1濾波器方塊產生

4將方波命令產生速度命令再觀測 PHT(io1)上的速度值 spd

5調整 IIR1濾波器的參數使得兩組波形完全相符這時 IIR1濾波器就是閉迴路

速度控制的特性其中 km 為增益而τ為上升時間(單位為 sec)

6增益 km 可從示波器中作簡單計算而上升時間(τ=40964000dtka)

7 Led四位數字七段顯示模組顯示波形信號資料

39

對應之 plc檔程式說明(exp_speedplc) echo off 畫面顯示開始

run dsp 0 選擇 DSP1

run stop run reset 既有程式停止

run testDCMmem 下載指定程式

das 1 ampfg1out 0 1024 PWM 波形 Volt 設定 DAS 頻道1

das 2 ampft1lp 0 1024 馬達模擬 Volt 設定 DAS 頻道2

das 3 ampio1spd 0 1024 馬達速度 Volt 設定 DAS 頻道3

das 4 ampio1ang 0 1024 馬達角度 Volt 設定 DAS 頻道4

plot select 0 設定示波器頁數

plot xunit 100000 0 設定示波器 X軸

plot yunit 1 50 -300 設定示波器 Y1 軸

plot yunit 2 50 -100 設定示波器 Y2 軸

plot yunit 3 50 100 設定示波器 Y3 軸

plot yunit 4 50000 300 設定示波器 Y4 軸

plot trigger 1 0 1 10 設定示波器觸發

plot scope 9 1 2 3 4 設定示波器顯示

module io2 設定 io2 模組

s cmd ampcn2out

module fg1 設定 fg1 模組

s kAmp 50 s kFrq 150

module cn2 設定 cn1 模組

s cmd ampfg1out s fdk ampio1spd s kp 0x4000

module ft1 設定 ft1 模組

s u ampfg1out s dt 2 s ka 320

module io3 設定 io3 模組

s led ampfg1out

module 回復預設模組

run 1khz 設定抽樣頻率為 4KHz

run start DSP 開始執行

das stop pause 1 DAS 啟動 das start DAS 啟動

echo on 回復正常訊息顯示

CAI操控設計畫面規劃如下(EXP_speedCAI)

40

page 1 畫面設計 page 2 與 page 3 畫面設計與實驗一 page 2 與 page 3相同畫面 page 4 畫面設計

41

方塊的參數設定 使用者可視情況調整一階濾波器的 ka和 dt值使得 ch2和 ch3 兩組波形完全相符

以求得此一閉迴路系統近似的一階轉移函數或調整 PD控制器中的 kp和 kp值以調整系統之響應 實測響應圖

訊 號 說 明 訊 號 說 明 ch1 方波產生器產生之速度命令 ch3 一階濾波器輸出信號 ch2 馬達角速度訊號 ch4 馬達角位置訊號

42

直流馬達之閉迴路速度控制響應圖

43

63 實驗 3-閉迴路的位置控制 實驗說明為了觀測閉迴路的位置控制響應將直流馬達的回授改為位置訊號

建立下面的測試方塊圖 方塊圖中的模組功能說明如下

1用 fg1產生測試用的方波位置命令 2將方波位置命令和位置回授訊號送到 PD控制器方塊中產生電壓控制訊號再透過 io2模組將訊號送出到伺服介面驅動馬達轉動

對應之 plc檔程式說明(exp_angleplc) echo off 畫面顯示開始

run dsp 0 選擇 DSP1

run stop run reset 既有程式停止

run testDCMmem 下載指定程式

das 1 ampfg1out 0 1024 PWM 波形 Volt 設定 DAS 頻道1

das 2 ampft1lp 0 1024 馬達模擬 Volt 設定 DAS 頻道2

das 3 ampio1spd 0 1024 馬達速度 Volt 設定 DAS 頻道3

das 4 ampio1ang 0 1024 馬達角度 Volt 設定 DAS 頻道4

plot select 0 設定示波器頁數

plot xunit 100000 0 設定示波器 X軸

plot yunit 1 1000 -300 設定示波器 Y1 軸

plot yunit 2 1000 -100 設定示波器 Y2 軸

plot yunit 3 20 100 設定示波器 Y3 軸

plot yunit 4 1000 300 設定示波器 Y4 軸

plot trigger 1 0 1 10 設定示波器觸發

44

plot scope 9 1 2 3 4 設定示波器顯示

module io2 設定 io2 模組

s cmd ampcn2out

module fg1 設定 fg1 模組

s kAmp 1000 s kFrq 75

module cn2 設定 cn1 模組

s cmd ampfg1out s fdk ampio1ang s kp 0x300 s kd 0x4000

module ft1 設定 ft1 模組

s u ampfg1out s dt 2 s ka 320

module io3 設定 io3 模組

s led ampfg1out

module 回復預設模組

run 1khz 設定抽樣頻率為 4KHz

run start DSP 開始執行

das stop pause 1 DAS 啟動 das start DAS 啟動

echo on 回復正常訊息顯示

CAI操控設計畫面規劃如下(EXP_angleCAI) page 1 畫面設計

45

page 2 與 page 3 畫面設計與實驗一 page 2 與 page 3相同畫面 page 4 畫面設計與實驗二 page 4 畫面 方塊的參數設定 延續上一實驗的說明使用者可以調整 PD控制器中的 kp和 kd值以調整系統之

響應 實測響應圖

訊 號 說 明 訊 號 說 明 ch1 方波產生器產生之位置命令 ch3 馬達角速度訊號 ch2 馬達角位置 ch4 Pd控制器輸出之電壓訊號

46

直流馬達之閉迴路位置控制響應圖

47

64 實驗 4-加減速的位置控制 實驗說明為避免方波命令的過於嚴苛在方波命令的輸出加入一加減速控制功

能方塊以減緩命令變化的幅度增加馬達運動的平順建立的測試方塊圖如下

方塊圖中的模組功能說明如下

1用 fg1產生測試用的方波位置命令 2將方波位置命令送到加減速控制方塊處理後產生新的位置命令再將新的位置命

令與位置回授訊號送到 PD控制器方塊中產生電壓控制訊號最後透過 io2模組將訊號送出到伺服介面驅動馬達轉動

對應之 plc檔程式說明(exp_accplc) echo off 畫面顯示開始

run dsp 0 選擇 DSP1

run stop run reset 既有程式停止

run testDCMmem 下載指定程式

das 1 ampfg1out 0 1024 PWM 波形 Volt 設定 DAS 頻道1

das 2 ampcn1out 0 1024 加速控制 Volt 設定 DAS 頻道2

das 3 ampio1spd 0 1024 馬達速度 Volt 設定 DAS 頻道3

das 4 ampio1ang 0 1024 馬達角度 Volt 設定 DAS 頻道4

plot select 0 設定示波器頁數

plot xunit 100000 0 設定示波器 X軸

plot yunit 1 2000 -300 設定示波器 Y1 軸

plot yunit 2 2000 -100 設定示波器 Y2 軸

plot yunit 3 50 100 設定示波器 Y3 軸

plot yunit 4 2000 300 設定示波器 Y4 軸

48

plot trigger 1 0 1 10 設定示波器觸發

plot scope 9 1 2 3 4 設定示波器顯示

module io2 設定 io2 模組

s cmd ampcn2out

module fg1 設定 fg1 模組

s kAmp 2000 s kFrq 150

module cn1 設定 cn1 模組

s cmd ampfg1out

module cn2 設定 cn2 模組

s cmd ampcn1out s fdk ampio1ang s kp 0x300 s kd 0x4000

module ft1 設定 ft1 模組

s u ampfg1out s dt 2 s ka 320

module io3 設定 io3 模組

s led ampfg1out

module 回復預設模組

run 1khz 設定抽樣頻率為 4KHz

run start DSP 開始執行

das stop pause 1 DAS 啟動 das start DAS 啟動

echo on 回復正常訊息顯示

CAI操控設計畫面規劃如下(EXP_accCAI) page 1 畫面設計

49

page 2 畫面設計與實驗一 page 2相同畫面 page 3 畫面設計與實驗二 page 4相同畫面

參數設定參考之前各實驗的說明可線上機動性的調整 PD控制器中的 kp和 kd值以調整系統之響應 實測響應圖

訊 號 說 明 訊 號 說 明 ch1 方波產生器產生之位置命令 ch3 馬達角位置 ch2 加減速模組輸出之位置命令 ch4 馬達角速度訊號

50

圖一 直流馬達經加減速控制後之閉迴路控制響應圖

51

65 實驗 5-正弦波的位置控制 實驗說明在本實驗中改變命令的波形由方波改變為正弦波並建立如下的測

試方塊圖與上一實驗相比較僅更改命令的波形產生方塊 方塊圖中的模組功能說明如下 1用 fg2產生測試用的弦波位置命令 2將弦波位置命令送到加減速控制方塊處理後產生新的位置命令再與 io1 讀入的位

置回授訊號送到 PD 控制器方塊中產生電壓控制訊號再透過 io2 模組將訊號送出到伺服介面驅動馬達轉動

對應之 plc檔程式說明(exp_sinplc) echo off 畫面顯示開始

run dsp 0 選擇 DSP1

run stop run reset 既有程式停止

run testDCMmem 下載指定程式

das 1 ampfg2out 0 1024 SIN 波形 Volt 設定 DAS 頻道1

das 2 ampcn1out 0 1024 加速控制 Volt 設定 DAS 頻道2

das 3 ampio1spd 0 1024 馬達速度 Volt 設定 DAS 頻道3

das 4 ampio1ang 0 1024 馬達角度 Volt 設定 DAS 頻道4

plot select 0 設定示波器頁數

plot xunit 100000 0 設定示波器 X軸

plot yunit 1 2000 -300 設定示波器 Y1 軸

plot yunit 2 2000 -100 設定示波器 Y2 軸

plot yunit 3 50 100 設定示波器 Y3 軸

plot yunit 4 2000 300 設定示波器 Y4 軸

plot trigger 1 0 1 10 設定示波器觸發

52

plot scope 9 1 2 3 4 設定示波器顯示

module io2 設定 io2 模組

s cmd ampcn2out

module fg2 設定 fg1 模組

s kAmp 2000 s kFrq 100

module cn1 設定 cn1 模組

s cmd ampfg2out

module cn2 設定 cn2 模組

s cmd ampcn1out s fdk ampio1ang s kp 0x300 s kd 0x4000

module ft1 設定 ft1 模組

s u ampfg2out s dt 2 s ka 320

module io3 設定 io3 模組

s led ampfg2out

module 回復預設模組

run 1khz 設定抽樣頻率為 4KHz

run start DSP 開始執行

das stop pause 1 DAS 啟動 das start DAS 啟動

echo on 回復正常訊息顯示

CAI操控設計畫面規劃如下(EXP_sinCAI) page 1 畫面設計

53

page 2 畫面設計 page 3 畫面設計與實驗二 page 4相同畫面

方塊的參數設定可調整 PD控制器中的 kp和 kd值以調整系統之響應 實測響應圖

訊 號 說 明 訊 號 說 明 ch1 弦波產生器產生之位置命令 ch3 馬達角位置訊號 ch2 加減速模組輸出之位置命令 ch4 馬達角速度訊號

54

直流馬達之閉迴路弦波加減速位置控制響應圖

55

7組合語言說明

本節將針對 DC馬達伺服控制實驗專用的程式模組進行功能與程式碼的說明其

有關於波形產生器與資料擷取模組等說明如下

SIN_waveasm 正弦波產生器 PWM_waveasm 方波產生器 IIR1_filterasm 一階濾波器 DAS4asm 資料蒐集模組

弦波產生器

此模組會產生週期性的正弦波方塊圖如下

outfrq

kBiasbias

ampkAmp

kFrqth

kThf=1TB

θ

A

其中

1正弦波有四個參數振幅(A)頻率(F)相位(θ)和偏移(B)其公式為 out = A sin(2πF t +θ) + B 2對於單純的正弦波產生器所對映的參數包括 kAmp 振幅值 kFrq 頻率值kFrq=655368000Hz其中 Hz的範圍為 0~4000例如 1000Hz =gt frq=8192 100Hz =gt frq=819 10Hz =gt frq=82 1Hz =gt frq=8 kTh 相角值0~255代表 0~360的相位當 th=0 時為正弦波 th=64 時為餘弦波 th=128時為反相波依此類推 kBias偏移值 3對於可調變的正弦波產生器其對映的輸入點為 amp 控制振幅的輸入點可產生調幅(AM)波形 frq 控制頻率的輸入點可產生調頻(FM)波形 th 控制相位的輸入點可產生調相(PM)波形 bias控制偏移的輸入點可產生雙頻混波(相加)波形 4若不使用調變功能時各個輸入點時的預設值為 amp 指向 kAmp 的位址 frq 指向 kFrq 的位址

56

th 指向 kTh 的位址 bias指向 kBias的位址

模組程式範例SIN_WAVEasm

local amp R0 IP kAmp 輸入點sin波的振幅 local frq R1 IP kFrq 輸入點sin波的頻率 local th R2 IP kTh 輸入點sin波的相角 local bias R3 IP kBias 輸入點sin波的中心偏移 local out R4 OP 輸出點sin波輸出 local tab R5 TP 表格指標指向 sin[256]的表格 local ang R6 內部變數相位角65536=360deg local kAmp R7 1000 參數振幅值 local kFrq R8 1000 參數頻率值=655368000Hz local kTh R9 0 參數相角值360deg=256 local kBias R10 0 參數偏移值 data 11 模組變數區長度及初值 initial 啟動程序 WR ang0 WR out0 ang=out=0 RET timer 即時控制程序(8KHz) RD ang ADD (frq) WR ang ang+=frq SFR 8 ADD (th) AND 255 ACC=sin(ang256+th) ADD tab WRH RDM table-look-up MUL (amp) SFR 12 ADD (bias) WR out out=ACCamp4096+bias RET table tab 256 sin[256]表格區10=4096 0 101 201 301 401 501 601 700 00~070deg 799 897 995 1092 1189 1285 1380 1474 08~0F 1567 1660 1751 1842 1931 2019 2106 2191 10~17 2276 2359 2440 2520 2598 2675 2751 2824 18~1F 2896 2967 3035 3102 3166 3229 3290 3349 20~27 3406 3461 3513 3564 3612 3659 3703 3745 28~2F 3784 3822 3857 3889 3920 3948 3973 3996 30~37 4017 4036 4052 4065 4076 4085 4091 4095 38~3F 4096 4095 4091 4085 4076 4065 4052 4036 40~4790deg 4017 3996 3973 3948 3920 3889 3857 3822 48~4F 3784 3745 3703 3659 3612 3564 3513 3461 50~57 3406 3349 3290 3229 3166 3102 3035 2967 58~5F

57

2896 2824 2751 2675 2598 2520 2440 2359 60~67 2276 2191 2106 2019 1931 1842 1751 1660 68~6F 1567 1474 1380 1285 1189 1092 995 897 70~77 799 700 601 501 401 301 201 101 78~7F 0 65435 65335 65235 65135 65035 64935 64836 80~87180deg 64737 64639 64541 64444 64347 64251 64156 64062 88~8F 63969 63876 63785 63694 63605 63517 63430 63345 90~97 63260 63177 63096 63016 62938 62861 62785 62712 98~9F 62640 62569 62501 62434 62370 62307 62246 62187 A0~A7 62130 62075 62023 61972 61924 61877 61833 61791 A8~A8 61752 61714 61679 61647 61616 61588 61563 61540 B0~B7 61519 61500 61484 61471 61460 61451 61445 61441 B8~BF 61440 61441 61445 61451 61460 61471 61484 61500 C0~C7270deg 61519 61540 61563 61588 61616 61647 61679 61714 C8~CF 61752 61791 61833 61877 61924 61972 62023 62075 D0~D7 62130 62187 62246 62307 62370 62434 62501 62569 D8~DF 62640 62712 62785 62861 62938 63016 63096 63177 E0~E7 63260 63345 63430 63517 63605 63694 63785 63876 E8~EF 63969 64062 64156 64251 64347 64444 64541 64639 F0~F7 64737 64836 64935 65035 65135 65235 65335 65435 F8~FF

就程式結構而言說明如下

timer 即時控制程序(8KHz) RD ang ADD (frq) WR ang ang+=frq SFR 8 ADD (th) AND 255 ACC=sin(ang256+th) ADD tab WRH RDM table-look-up MUL (amp) SFR 12 ADD (bias) WR out out=ACCamp4096+bias RET

1基本上我們以查表法計算 sin()其輸入θ的範圍為 0~255對映到 0~360deg其輸出 sin(θ)的範圍為+-4096對映到+-10的範圍

2建立一個內部變數 ang其範圍為 0~65535對映到 0~360的相位角 3每個timer程序都執行 ang+=frq的動作更新目前的相位角接著依照 ang的相位角查表得到 sin(ang256+th)值

4由於表格長度為 256-word所以必須將 ang256才能得到正確的對映關係而 th範圍為 0~255所以不需要像 ang一般的做額外處理

5sin()的範圍為(+1-1)而在表格中以(+4096~-4096)的型式記錄相當於 10=4096所以執行 Asin()時還要用 SFR12指令做4096的動作才能正確的取得輸出值

58

6就頻率輸入 frq而言其計算原則是將θ=ωt轉化成θ=Σ(ωdt)因為抽樣頻率

為 8KHz所以 dt=18000而得到 frq=655368000Hz公式其中 Hz為真正的頻率在 8KHz的抽樣頻率下其範圍為 0~4000

鋸齒波產生器

此模組會產生週期性的鋸齒波方塊圖如下

outfrq

kBiasbias

ampkAmp

kFrqth

kThf=1TB

θ

A

其中

1鋸齒波也有四個參數振幅(A)頻率(F)相位(θ)和偏移(B)和正弦波的定義完全一致唯一的差異是其輸出為鋸齒波而非正弦波

2基本波形是從週期開始時為 0一直遞增到週期結束時到達最高點然後立刻回歸

到 0重新開始 3以程式結構而論鋸齒波程式幾乎就是正弦波的相位計算部分只差沒有正弦波的

查表處理而已

模組程式範例SAW_WAVEasm

local amp R0 IP kAmp 輸入點sin波的振幅 local frq R1 IP kFrq 輸入點sin波的頻率 local th R2 IP kTh 輸入點sin波的相角 local bias R3 IP kBias 輸入點sin波的中心偏移 local out R4 OP 輸出點sin波輸出 local ang R5 內部變數相位角65536=360deg local kAmp R6 1000 參數振幅值 local kFrq R7 1000 參數頻率值=655368000Hz local kTh R8 0 參數相角值360deg=256 local kBias R9 0 參數偏移值 data 11 模組變數區長度及初值 initial 啟動程序 WR ang0 WR out0 ang=out=0 RET timer 即時控制程序(8KHz) RD ang ADD (frq) WR ang ang+=frq SFR 8 ADD (th) AND 255 ACC=(ang256+th)amp0x00ff MUL (amp) SFR 8 ADD (bias) WR out out=ACCamp256+bias

59

RET

脈衝波產生器

outfrq

kBiasbias

ampkAmp

kFrqth

kThf=1TB

θ

A

pwm

kDutyduty

此模組會產生週期性的脈衝波方塊圖如下

其中

1脈衝波有五個參數其中振幅(A)頻率(F)相位(θ)和偏移(B)四個參數和正弦波

定義完全一樣另外再增加一個負載率(D) 2基本波形是從週期開始時為 1隔段時間後換為 0然後持續到週期結束再重新開始其中 1所佔有的比例就是負載率當 D=0時為 0而 D=255時為 100

3和其他參數類似負載率(D)以 duty為其輸入點而以 kDuty為其參數值

模組程式範例PLS_WAVEasm

local amp R0 IP kAmp 輸入點脈衝波的振幅 local frq R1 IP kFrq 輸入點脈衝波的頻率 local th R2 IP kTh 輸入點脈衝波的相角 local bias R3 IP kBias 輸入點脈衝波的中心偏移 local duty R4 IP kDuty 輸入點脈衝波的負載率 local out R5 OP 輸出點脈衝波輸出 local ang R6 內部變數相位角65536=360deg local kAmp R7 1000 參數振幅值 local kFrq R8 1000 參數頻率值=655368000Hz local kTh R9 0 參數相角值360deg=256 local kBias R10 0 參數偏移值 local kDuty R11 128 參數負載率100 =256 data 12 模組變數區長度及初值 initial 啟動程序 WR ang0 WR out0 ang=out=0 RET timer 即時控制程序(8KHz)

60

RD ang ADD (frq) WR ang ang+=frq SFR 8 ADD (th) AND 255 ACC=(ang256+th)amp0x00ff SUB (duty) RD (amp) JLT t1 RD 0 ACC=(amp0) t1 ADD (bias) WR out out=ACC+bias RET

IIR 一階濾波器

此模組執行一階的 IIR濾波器方塊圖如下

kau x

Z-1

+

+

-

+低通濾波器

高通濾波器dx lp

hp

濾波器參數的計算公式如下

1假設濾波器的頻寬為 hz則 ωn=hz628 2若系統頻率為 8KHz則抽樣週期 dT為 dT=dt8000 其中 dt為模組參數 3則濾波器參數為 ka=ωndT4096或是 =hzdt62880004096即 =hzdt32 4當 dt決定後所允許的訊號頻寬為(4000dt)換句話說訊號頻寬會因為 dt增加而下降

為了方便實驗的運用下面列出常用的參數對照表

濾波頻寬

(Hz)

10 20 50 100 200 500 1000 2000

訊號頻寬

(Hz)

400 800 2000 4000 4000 4000 4000 4000

模組參數 dt 10 5 2 1 1 1 1 1

模組參數 ka 320 320 320 320 640 1600 3200 6400

表格的運用方式如下

1首先決定濾波頻寬 2接著查表找出對映的參數 dt和 ka 3再查表得到對映的訊號頻寬以決定是否需要串接前級濾波器

61

模組程式範例IIR1_FILTERasm

local u R0 IP 輸入點濾波器輸入 local lp R1 OP 輸出點低通濾波器輸出 local hp R2 OP 輸出點高通濾波器輸出 local dt R3 1 參數抽樣週期 local ka R4 4096 參數增益 ka10=4096 local prd R5 內部變數抽樣週期用 data 6 模組變數區長度 initial 開機啟動程序 WR lp0 WR hp0 WR prd1 RET lp=hp=0prd=1 timer 即時控制程序 SUB prd1 JNZ b9 if (--prdgt0) return RD dt WR prd prd=dt RD (u) SUB lp WR hp hp=u-lp MUL ka SFR 12 ADD lp WR lp lp+=(hpka4096) b9 RET

資料蒐集模組

資料蒐集模組是一個非常特殊的模組專門配合 eTTY 程式中的示波器使用

模組程式範例DAS4asm

local cmd R0 0 紀錄命令0=停止1=前置記錄2=正觸發4=負觸發6=觸發記錄 local dt R1 1 抽樣週期每 dT抽樣一次 local tab R2 TP DAS表格啟始位址 local cnt R3 0 目前記錄點(0~255) local ch1 R4 0 定義頻道1的變數位址 local ch2 R5 0 定義頻道2的變數位址 local ch3 R6 0 定義頻道3的變數位址 local ch4 R7 0 定義頻道4的變數位址 local trg R8 0 定義觸發頻道的變數位址 local th R9 0 觸發準位 local tail R10 0 觸發後的抽樣個數 local buf R11 1 抽樣計數(1~dt) local pnt R12 表格位址計算pnt=tab+cnt4 local len R13 表格長度計算(0~256) data 14 定義模組變數區的長度 table tab 1024 定義表格的長度 initial 啟動程序 WR cmd0 RET cmd=0 timer 控制程序

62

ADD cmd0 JZ t9 if (cmd==0) return SUB buf1 JNZ t9 if (--buf)gt0) return RD dt WR buf dt=buf RD cnt ADD 1 AND 0xff WR cnt cnt=(cnt+1)amp0xff SFL 2 ADD tab WR pnt pnt=tab+cnt4 RD (ch1) WR (pnt) ADD pnt1 pnt++=ch1 RD (ch2) WR (pnt) ADD pnt1 pnt++=ch2 RD (ch3) WR (pnt) ADD pnt1 pnt++=ch3 RD (ch4) WR (pnt) pnt =ch4 RD cmd SUB 1 JZ t9 SUB 1 JZ t2 SUB 1 JZ t3 SUB 1 JZ t4 SUB 1 JZ t5 SUB 1 JZ t6 JR t7 t2 RD (trg) SUB th JGE t9 ADD cmd1 JR t9 wait trgltth t3 RD (trg) SUB th JLE t9 JR t6 wait trggtth t4 RD (trg) SUB th JLE t9 ADD cmd1 JR t9 wait trggtth t5 RD (trg) SUB th JGE t9 JR t6 wait trgltth t6 WR len0 WR cmd7 len=0cmd=7 t7 ADD len1 SUB tail JLT t9 WR cmd0 if ((++len)gt=0x80) cmd=0 t9 RET

與 DC 馬達控制相關的程式模組有以下 4個程式模組說明如下

(1)加減速控制模組 ACC_controlasm (2)光電盤輸入模組 POS_inputasm (3)PWM輸出模組 PWM_outputasm (4)PD控制模組 PD_controlasm

71加減速控制模組 此程式模組主要功能在於執行位置控制的加減速命令修正其數學模式採用 Lynn

濾波器的架構參見下圖

cmd

2

+

old Z -1

-

Z -1

Z -1

Z-1

Z-1x0 x1 x8 x9 x16

+ -

++

2

Z-1

Z-1 y1 y2

+

-

y0

+ +

sumZ-1

+164

12

out

dif

+

63

加減速控制模組方塊圖

其中

1Lynn 濾波器的階數固定成八階也就是 m=8其公式為 H(z) = (1-2Z-m+Z-2m)(1-2Z-1+Z-2)m2

2因為m=8所以m2=64因此最後計算低通濾波的部份時要先做除 64的運算 3因為低通濾波(lp)和 y0之間有 64倍的差異代表 y0y1y2的變化範圍比濾波器輸

入值要擴大許多例如輸入值在+-1000變化時y0y1y2很可能會在+-64000之間變化這範圍已經超出整數處理的範圍很可能會造成錯誤的計算結果

4所以在實驗時輸入值的變化範圍必須控制在+-500之間以保證計算的正確性 5對於 Lynn 濾波器當 m=8時其濾波器的頻寬固定為 1 kHzmdt也就是 dt=1時頻寬為 125 Hz dt=2時頻寬為 625Hz依此類推 6對於 Lynn 濾波器其濾波器的延遲固定為 m個抽樣週期因此設計 hp = x8 - lp 即可得到高通濾波器的對應結果 7其中乘 2和除 64的運算以移位運算取代所以整個程式中並無任何乘法運算 8Lynn 濾波器本身並不是穩定濾波器所以在程式啟動時必須確實的將所有狀態

(x0~x16)歸零否則會產生不穩定的狀態輸出

因為 Lynn濾波器中所有參數固定所以除了抽樣週期 dt 之外並無任何可調參數

抽樣週期 dt 可以控制頻寬dt 越大則濾波器頻寬越低

將步階命令值的輸出送入 Lynn 濾波器中經由低通濾波器的效應可以減緩命

令的變化程度達到加減速控制的目的以下為使用 Lynn 濾波器型式實現加減速控

制的組合語言程式列印 如欲更進一步瞭解 Lynn 濾波器與 FIR 數位濾波器之間的關係可以參考通訊實驗

四數位濾波器設計(FIR)中之說明

ACC_controlasm程式列印 local cmd R0 IP 輸入點位置命令

local out R1 OP 輸出點加減速處理後的位置命令

local dif R2 OP 輸出點位置微分命令

local axis R3 0 馬達編號0=X1=Y2=Z3=C

local old R4 內部變數微分計算用

local sumL R5 內部變數積分計算用

local sumH R6 內部變數積分計算用

local y0 R7 內部變數y(0~2)

local y1 R8 local y2 R9

local x0 R10 內部變數x(0~16)

local x1 R11 local x2 R12 local x3 R13 local x4 R14

local x5 R15 local x6 R16 local x7 R17 local x8 R18

local x9 R19 local x10 R20 local x11 R21 local x12 R22

local x13 R23 local x14 R24 local x15 R25 local x16 R26

64

data 27 模組變數區長度

initial 開機啟動程序

WR dif0 RD (cmd) WR out WR old dif=0 out=old=cmd

sumHL=cmd64

SFL 6 WR sumL RD out SFR 10 SGN 5 WR sumH

RPT 17 WR x00 RPT 3 WR y00 RET x[0~16]=0y[0~2]=0

timer 即時控制程序

RD (cmd) SUBX old WR x0 x0=cmd-old old=cmd

SUB x81 ADD x16 ADD y11 SUB y2 WR y0 y0=x0-2x8+x16+2y1-y2

SGN ADD sumL WR sumL RDH ADC sumH WR sumH sumHL+=y0

WRH RD sumL SFR 6 WR out out=sumHL64

RD y0 SGN SFR WR dif dif=y032mm

RD x0 RPT 16 RDX x1 x[i]=x[i-1] i=1~16

RD y0 RDX y1 WR y2 y[i]=y[i-1] i=1~2

b9 RET

72光電盤輸入模組

DC馬達的位置由光電盤量測之預設儲存於 0xac與 0xbe二個輸入埠位址中其中位址 0xac記錄 X軸馬達的位置位址 0xbe記錄 Y軸馬達的位置由於本實驗的DC馬達接在 Y軸的位置上因此程式中直接選用 Y軸的輸入 光電盤位置輸入的程式列印如下其中速度由位置的差分而得至於馬達的位置

則使用內部 2個 word加以記錄精度為 32位元 POS_inputasm程式列印 local spd R0 OP 輸出點速度量測值

local ang R1 OP 輸出點角度量測值

local angH R2 內部變數角度的 32 位元部分

local mode R3 0x308 模式選擇15MHzAB 相正反向輸入

local pht R4 0xac 輸入阜地址光電盤輸入(0xac)

local phtc R5 0xbe 輸入阜地址光電盤模式(0xbe)

local old R6 內部變數速度更新用

data 7 模組變數區長度

initial 開機啟動程序

RD mode WR (phtc) phtc=mode

RD (pht) WR old WR spd0 RET old=phtspd=0

timer 即時控制程序

RD (pht) SUBX old SGN 11 WR spd spd=(pht-old)old=pht

65

ADD ang WR ang angHL+=spd

RDH ADC angH WR angH

RET

73 PWM輸出控制模組 模組方塊

cmd PWM輸出

程式說明 1在開機時將切換保護時間寫到輸出阜 0xbc上其中切換保護值為 0~6360=5us 2在每次 timer interrupt時將 cmd訊號處理後寫到輸出阜 0xb8上

PWM_outputasm程式列印 local cmd R0 IP gnd 輸入點v相命令

local gain R1 4096 參數輸出增益1=4096

local bias R2 2048 參數輸出偏壓0=2048

local limit R3 4095 參數輸出極限1=4095

local zone R4 0x88f0 參數頻率=12KHz切換保護=5us

local pwm R5 0xb8 輸出阜地址PWM0 輸出(0xb8)

local mode R6 0xbc 輸出阜地址PWM 模式(0xbc)

local p0md R7 0xf8 輸出阜地址port0 模式(0xf8)

local gnd R8 0 輸入接地點

data 9 模組變數區長度

initial 開機啟動程序

RD bias WR (pwm) pwm=bias

RD 0xffff WR (p0md) set port0 mode

RD zone WR (mode) RET mode=zone

stop 關機保護程序

RD bias WR (pwm) RET pwm=bias

timer 即時控制程序

RD (mode) xor 1 and 1 WR (mode) trigger watch-dog

RD (cmd) MUL gain SFR 12 ADD bias ACC=(cmdgain4096)+bias

MAX 0 MIN limit WR (pwm) pwm=limit(ACC)

RET

66

74 PD 控制模組

PD控制的模組方塊參見圖二十一所示其中比例控制的部份直接由增益 kp加以調整微分控制的部份則由誤差的差分經增益 kd的調整而得

Σ+

-

cmd

fdk

err out

Σ

pk

dk

Σ

+

+

+

-

old1minusZ

PD控制器的方塊圖

PD_controlasm程式列印 local cmd R0 IP gnd 輸入點位置命令(可忽略)

local fdk R1 IP gnd 輸入點位置回授(可忽略)

local out R2 OP 輸出點用以控制速度迴路

local kp R3 256 參數增益 kp10=256

local kd R4 0 參數增益 kd10=256

local err R5 0 內部變數

local old R6 0 內部變數

local gnd R7 0 無輸入時的短路點

data 8 模組變數區長度

initial 開機啟動程序

WR out0 WR old0 RET out=old=0

timer 即時控制程序

RD (cmd) SUB (fdk) PRTF WR err

MUL kp SFR 8 P=(cmd-fdk)kp256

RDS err SUBX old MUL kd SFR 8 D=(err-old)kd256

ADDS

WR out out=P+D

RET

程式中預設增益值的 10以整數值 256為基底因此使用 SFR 8的指令加以調

整另外在在計算微分項的程式部份用到 SUBX old的指令其詳細的暫存器動作如

下 參考 piDSP的指令說明SUBX指令將總共用到 3個時序參考錯誤 找不到參照

67

來源在時序 1時將原先 AX的資料拷貝一份到 HX中時序 2時正式執行減

法的動作所以 AX暫存器中的內容會變成 err-old時序 3時DSP會將存放在 HX暫存器中的內容拷貝一份到 old的記憶體中也就是經由 SUBX此一精簡指令將

同時完成計算差分所需要的相減與資料疊代的動作有效的利用 piDSP控制器 DSP核心的精簡指令將可以大幅提昇系統的計算速度

HX AXoldSUBXerr err

old

err

errerr olderr minus

1_err

errerr olderr minus err

1_err

1

2

3

SUBX的指令時序與暫存器變化

68

8附錄快速安裝說明

光纖網路通訊 FPGA 發展系統 (適用於 WIN-XP200098 系統)

快速安裝說明

26Pin 負載輸出入埠

雙電源︵5

12

伏︶輸入埠

單電源︵5

伏︶輸入埠

USB

光纖線輸

號 光纖線輸出埠

入 傳 埠

首先將光碟片 RFFPGA 目錄檔案拷貝在您工作硬碟裡面

第一次安裝時先將 USB 傳輸線接上電腦主機將電源供應器接上 FPGA 模組此時電

腦會出現安裝 USB-Serial 驅動程式選擇從清單安裝此驅動程式放置在光碟片

RFFPGA-USBdrive 選擇您目前安裝系統

可選擇 WIN-98WIN-MEWIN-2000WIN-XP 系統配合您現在工作電腦作業系統

69

注意一般電腦 USB 埠很多插口當您安裝驅動程式時是配合您當時插入之埠

下次如您插入不同接口埠時電腦會再次要求安裝驅動程式這是正常現象請再次安

裝驅動程式否則無法使用

FPLC 操作

首先進入 RFFPGA裡子目錄 testASM直接點選 fPLCexe 出現下面操作畫面(也可直接將

此檔案放置桌面直接點選)

(或者選擇 File 再執行 Setuphellip 選擇您要執行 CAI 檔)

70

進入下面操作畫面 首先使用滑鼠在 FPGA下載按鈕單擊動作使 FPGA變成 DSP晶片 實驗一至實驗五皆為使用 DSP組合語言設計程式其原始程式分別為 testASM1至testASM5可使用 texPad 開啟與編輯程式內容 實驗三與實驗五多有 IO控制動作 當選擇實驗三時出現下面畫面

71

eM_USB 模組

數字型 LED

0 1 2 34 5 6 78 9 A BC D E F

燈號型 LED

44 鍵盤

ADC0 ADC1 DAC0 DAC1

LED 選擇KEY 選擇

模 式 1

0123

注意操作畫面 3與 4 說明開關與按鍵選擇位置後選擇程式下載再按程式啟動如您

按下 0-3按鍵時燈號型 LED會有不同方向閃爍顯示程式停止時結束所有 IO控制動作再按回首頁選擇其他實驗 實驗四與實驗五

模式3

0 1 2 34 5 6 78 9 A BC D E F

按照上面開關選擇直接操作如果以上實驗皆能按照正常操作表示您光纖網路通訊

FPGA發展模組以能正常使用 注意 開機與關機動作順序如下

開機電腦啟動 --- eM_USB 模組電源接上 --- USB 接上電腦 ---

啟動 FPLC 軟體 --- 下載 FPGA 程式

關機關閉 FPLC 軟體 --- eM_USB 模組電源拔掉 --- 拔掉電腦 USB 接頭 ---關掉

電腦

如果以上順序有亂可能造成 USB 找不到驅動造成無法下載經過幾次測試還是

無法下載建議重新啟動電腦主機按照正確步驟操作

72

FPGA 下載操作

進入 FPLC 操作系統按照下列步驟選擇節點模組與下載 bit FPGA 檔案

在 VHDLDEMO 子目錄下您可以選擇您目前 FPGA 種類型號在此型號下我們已將 VHDL

與數位邏輯設計課本範例全部放於此處

73

光纖網路連線 FPGA 下載操作

首先利用光纖線將 eM_USB0 模組光纖輸出埠接至 eM_USB1 模組光纖輸入埠以此

類推最後再將最後 eM_USBN 模組光纖輸出埠接至 eM_USB0 模組光纖輸入埠配置

如附圖方式

個人電腦(Windows) eM_USB模組

0USB

eM_USB模組1

光纖網路

eM_USB模組2

eM_USB模組N

配置完成後進入 FPLC 系統首先必須先將 Node00 下載在 testASM 子目錄裡

piDSPv0bit 檔讓 eM_USB0 模組 FPGA 具備 DSP 功能才能執行光纖網路通訊

操作如下

此時您就可以選擇分別下載至各模組 FPGA 檔 bit

74

安裝 FPLC 注意事項

當您進入 FPLC 時

按 FILE 選擇 programhellip 選擇檔案為 exp_dcmplc 出現下面畫面

正常顯示畫面為

75

DOS 環境操作

在 PC 端的操作是在 Windows 環境中的 DOS 視窗中執行指令範例如下

eFPGA progNETbit 下載 FPGA電路至網路節點0(即 USB節點)中 eFPGA testLEDbit 1 下載 FPGA電路至網路節點1中

對於單一節點的控制程序如下

1將 eM_USB模組連結個人電腦的 USB端 2eM_USB模組開機 3執行下載指令即可 eFPGA xxxxbit 4若要更改 FPGA電路只要重新執行下載指令即可

對於多個網路節點的控制程序如下

1第一組 eM_USB模組連結個人電腦的 USB端再以光纖網路依序其他各節點 2連接 USB界面者為模組0從光纖發射端連接出去的模組為1依此類推 3將所有 eM_USB模組開機 4執行下載指令如下 eFPGA progNETbit 模組0必須先下載指定的 FPGA電路 eFPGA xxxxbit 1 再依序下載其他網路模組的 FPGA電路 eFPGA yyyybit 2 eFPGA zzzzbit 最後再重新下載模組0的 FPGA電路 5換句話說模組0必須先執行 progNETbit讓光纖網路接受 FPGA控制後才能透過光纖網路下載至其他節點等全部網路節點下載完畢後再將模組0的 FPGA重新下載讓模組0也可自由執行任意的 FPGA電路

6若要更改某一個網路節點中的 FPGA電路只要重新執行下述指令 eFPGA progNETbit 模組0必須先下載指定的 FPGA電路 eFPGA yyyybit 2 下載指定網路模組的 FPGA電路 eFPGA zzzz bit 最後再重新下載模組0的 FPGA電路 換句話說除非模組0中的 FPGA已經包括光纖網路管理電路否則一定要先在

模組0中下載網路管理電路後才能下載指定網路節點的 FPGA電路

76

光纖網路通訊 FPGA 發展系統

系統配置

光纖網路通訊 FPGA 發展系統的系統配置圖如下

個人電腦(Windows) eM_USB模組

0USB

eM_USB模組1

光纖網路

eM_USB模組2

eM_USB模組N

其中

1基本模組為 eM_USB模組可用 USB界面和個人電腦連線並提供 USB對光纖網路的轉換功能使得個人電腦可以獨立控制光纖網路中的每個網路節點

2eM_USB模組也可以作為光纖網路中的網路節點透過光纖網路而接受個人電腦的

監控 3就個人電腦而言不論是 USB界面直接連結或是以光纖網路間接連結的 eM_USB模組都是可以直接監控的網路節點最多可以同時控制一個 USB節點和 30個網路節點

4對於每一個網路節點個人電腦都可執行 eM_USB模組中 FPGA的電路下載工作並在適當的 FPGA電路配合下可執行 eM_USB模組中 FPGA內部電路的讀寫控制 5透過適當的 FPGA電路設計各網路節點都可透過光纖網路和其他任何網路節點

作同步通訊執行 FPGA內部記憶體的資料交換資料交換頻率可達 1KHz以上

77

網路模組配置

每個網路模組的標準配置圖如下

eM_USB模組光纖網路

USB eM_FPGA卡

eM_DEMO模組

eM_EXP實驗模組

DC電源

其中

1網路模組以 eM_USB模組為主提供基本的 USB界面和光纖網路連線 2eM_USB模組中的 FPGACPLD採用插卡型式可選擇不同的 eM_FPGA卡包括

eM_2V1K卡可選用 Virtex系列的 XC2V250和 XC2V1000 eM_3S1K卡可選用 Spartan3系列的 XC3S400XC3S1000和 XC3S1500 eM_3S50卡可選用 Spartan3系列的 XC3S50XC3S200和 XC3S400 eM_95XL卡可選用 9500XL系列的 XC95144XL和 XC95288XL 3eM_USB模組中的對外連線有兩種一種是 26P接頭用以連接既有的各種實驗模

組另一種是兩組 50P接頭將 FPGA中各接腳引出用以連接專題實驗 4eM_DEMO模組就是插上 50P接頭的教學模組其中包括 LED 數字顯示和 44鍵盤也具備兩組的 ADC和兩組的 DAC接頭提供類比訊號的測試工具

常用的實驗組合包括

1精簡組合包括(eM_USB+eM_FPGA)提供基本的網路節點適用於專題實驗 2標準組合包括(eM_USB+eM_FPGA+eM_DEMO)提供基礎 FPGA設計的教學實驗

3實驗組合包括(eM_USB+eM_FPGA+eM_DEMO+eM_EXP)提供進階的 FPGA實驗可依需求選用不同的實驗模組

78

eM_USB 模組

eM_USB 模組的電路配置圖如下

TxRx

DCPower

USB

JP2

JP3

光纖界面

外加電源

PC連線

JP1

eM_FPGA模組

FT232 CPLD FlashROM

SRAM

10cm

6cm

JP4

其中

1對外的連線接頭包括 DC電源 可選擇單電源(5V)或是多電源(5V+12V-12V)兩種 USB界面 直接連接個人電腦 光纖界面連接光纖網路 2實驗界面包括 JP1負責內部 CPLD的電路下載 JP2JP3兩組 50P的擴張用接頭 JP4 標準 26P接頭用以連接各種實驗模組 3內部的電路配置包括 A以 SO-DIMM接頭連接各種 eM_FPGA卡 B內附 EEPROMFlashROM和 SRAM提供 FPGA作應用測試 C以一顆 FT232BM作為 USB界面解碼而以一顆 CPLD作為光纖網路解碼 D提供各種 eM_FPGA卡的電路下載功能 4內附五顆 LED由上而下依序為 usbLED指示 USB界面的讀寫狀態 tstLED可由 FPGA電路自行定義 stsLED可由 FPGA電路自行定義 RxLED 可由 FPGA電路自行定義 TxLED 可由 FPGA電路自行定義

79

外部接腳定義

外部接頭的接點順序圖示如下

上視圖

JP11 9 JP4

126225

JP31

50249

JP21

50249

而各接頭的接點定義如下

JP1 JP4 JP2 JP3 1+33V 1+12V 2+12V 1 GND 2 GND 1 GND 2 GND 2GND 3 ADC 4 DAC 3POWER 4ALARM 3 +5V 4 +5V 3nc 5 yPB2 6 yPB3 5RxNET 6TxNET 5+12V 6+12V 4TCK 7 yPB1 6 yPB4 7RxUSB 6TxUSB 7-12V 6-12V 5nc 9 yPB0 10yPB5 9RxCAN 10TxCAN 9 ADC 10 DAC 6TDO 11yPB6 12yPB7 11P0D0 12P0D1 11P1D0 12P1D1 7TDI 13yGND 14yPC3 13P0D2 14P0D3 13P1D2 14P1D3 8nc 15yPC2 16yPC1 15P0D4 16P0D5 15P1D4 16P1D5 9TMS 17yPC0 18yPA0 17P0D6 18P0D7 17P1D6 18P1D7 19yPA1 20yPA2 19P0D8 20P0D9 19P1D8 20P1D9 21yPA3 22GND 21P0D10 22P0D11 21P1D10 22P1D11 23GND 24+5V 23P0D12 24P0D13 23P1D12 24P1D13 25+5V 26nc 25P0D14 26P0D15 25P1D14 26P1D15 27P2D0 28P2D1 27PxA0 28PxA1 29P2D2 30P2D3 29PxA2 30PxA3 31P2D4 32P2D5 31PxA4 32PxA5 33P2D6 34P2D7 33PxA6 34PxA7 35P2D8 36P2D9 35PxB0 36PxB1 37P2D10 38P2D11 37PxB2 38PxB3 39P2D12 40P2D13 39PxB4 40PxB5 41P2D14 42P2D15 41PxB6 42PxB7 43ADC0 44ADC1 43PxC0 44PxC1 45ADC2 46ADC3 45PxC2 46PxC3 47ADC4 48ADC5 47PxC4 48PxC5 49DAC0 50DAC1 49PxC6 50PxC7

80

eM_FPGA 模組

在各種 eM_FPGA 模組中FPGA 對外電路的標準配置圖如下

24576MHz

FlashROM

26PSRAM

EEPROM

mD[8]

yPA[4]

FPGACPLD

mA[19]mRDmWRmCSeeCKeeCSeeDIeeDO

光纖界面 RxNETTxNET

USB 界面 RxUSBTxUSBCLK24MPOWERALARM

LED

tstLEDstsLEDRxLEDTxLED

yPB[8]yPC[4]

ADCDAC

ADC[8]

實驗模組

ADC[2]

DAC[2]

xPA[4]

xPB[8]

xPC[4]

基礎實驗

其中

1FPGACPLD可以選擇下述幾種 XC2V250XC2V1000 採用 eM_2V1K模組其中 FPGA為 FG456包裝 XC3S400XC3S1000XC3S1500採用 eM_3S1K模組其中 FPGA為 FG456包裝 XC3S400XC3S1000XC3S1500採用 eM_3S1K模組其中 FPGA為 FG456包裝 XC3S50XC3S200XC3S400 採用 eM_3S50模組其中 FPGA為 TQ144包裝 XC95144XLXC95288XL 採用 eM_95XL模組其中 CPLD為 TQ144包裝 2採用 FG456包裝者可以控制所有的 IO界面 3採用 TQ144包裝者只是不能控制 RAM和 FlashROM而可以控制其他所有的界面 4所有 FPGA模組都可自由選擇由 USB界面或是由光纖界面下載電路但是 CPLD模組只能固定由 USB界面下載電路

5所有 FPGACPLD模組都可透過 26P接頭連接既有的各種實驗模組

81

FPGA 接腳對照表

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

mD0 XD6 mD0 A17 C13 -- -- mD1 XD7 mD1 B17 D12 -- -- mD2 XD8 mD2 C17 D11 -- -- mD3 XD9 mD3 D17 C11 -- -- mD4 XD10 mD4 E17 D10 -- -- mD5 XD11 mD5 E16 C10 -- -- mD6 XD12 mD6 E14 D9 -- -- mD7 XD13 mD7 E13 D7 -- -- mA0 XD14 mA0 D13 C7 -- -- mA1 XD15 mA1 C13 D6 -- -- mA2 XA0 mA2 V5 C3 -- -- mA3 XA1 mA3 U5 C4 -- -- mA4 XA2 mA4 Y2 D3 -- -- mA5 XA3 mA5 Y1 D4 -- -- mA6 XA4 mA6 V4 E3 -- -- mA7 XA5 mA7 V3 E4 -- -- mA8 XA6 mA8 W2 F3 -- -- mA9 XA7 mA9 W1 F4 -- -- mA10 XA8 mA10 T2 G6 -- -- mA11 XA9 mA11 T1 K3 -- -- mA12 XA10 mA12 R4 K10 -- -- mA13 XA11 mA13 R3 L3 -- -- mA14 XA12 mA14 R2 L4 -- -- mRD XRD mRD R1 D5 -- -- mWR XWR mWR P6 C6 -- --

POWER P0A0 POWER B4 B20 P1 P5 ALARM P0A1 ALARM A4 A19 P2 P6 RxNET P0A2 RxNET C4 B19 P4 P7 TxNET P0A3 TxNET C5 A18 P5 P9 RxUSB P0B0 RxUSB B5 A15 P6 P10 TxUSB P0B1 TxUSB A5 B15 P7 P11 RxCAN P0B2 RxCAN D6 A14 P8 P12 RxCAN P0B3 TxCAN C6 B14 P10 P13

CLK24M CLK24M CLK24M E12 B12 P124 P38

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

PWM0H P3A0 P0D0 E6 A8 P21 P23 PWM0L P3A1 P0D1 E5 B8 P23 P24 PWM1H P3A2 P0D2 C2 B6 P24 P25 PWM1L P3A3 P0D3 C1 A5 P25 P26 PWM2H P3A4 P0D4 D2 B5 P26 P27

82

PWM2L P3A5 P0D5 D1 A4 P27 P28 PWMenb P3A6 P0D6 E4 B4 P28 P30 PHT1Z P3A7 P0D7 E3 A3 P30 P31 PHT1A P3B0 P0D8 G2 C1 P31 P32 PHT1B P3B1 P0D9 G1 C2 P32 P33 PHT0A P3B2 P0D10 H5 D1 P33 P34 PHT0B P3B3 P0D11 J6 D2 P35 P35 AMP0 P3B4 P0D12 H4 E1 P36 P39 AMP1 P3B5 P0D13 H3 E2 P40 P40 AMP2 P3B6 P0D14 H2 F2 P41 P41 AMP3 P3B7 P0D15 H1 G1 P44 P43 eeSK P0C3 P1D0 C10 B9 P20 P22 eeCS P0C2 P1D1 D10 A9 P18 P21 eeDI P0C1 P1D2 F10 B10 P17 P20 eeDO P0C0 P1D3 E10 B11 P15 P19 ssCK P0B7 P1D4 E8 A11 P14 P17 ssCS P0B6 P1D5 E7 A12 P13 P16 ssDI P0B5 P1D6 A6 B13 P12 P15 ssDO P0B4 P1D7 B6 A13 P11 P14

ppCLK P3C0 P1D8 K4 G2 P46 P44 ppDIN P3C1 P1D9 K3 K1 P47 P45 TxD P3C2 P1D10 K2 K2 P50 P46 RxD P3C3 P1D11 K1 L1 P51 P48

tstLED P3C4 P1D12 L5 L2 P52 P49 stsLED P3C5 P1D13 L4 M1 P53 P50 RxLED P3C6 P1D14 L3 M2 P55 P51 TxLED P3C7 P1D15 L2 N1 P56 P52

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

xPA0 P2A0 P2D0 AA3 N2 P59 P53 xPA1 P2A1 P2D1 Y4 T1 P60 P54 xPA2 P2A2 P2D2 AA4 T2 P63 P56 xPA3 P2A3 P2D3 AB4 U2 P68 P57 xPC0 P2A4 P2D4 W5 V1 P69 P58 xPC1 P2A5 P2D5 Y5 V2 P70 P59 xPC2 P2A6 P2D6 AA5 W1 P73 P60 xPC3 P2A7 P2D7 AB5 W2 P74 P61

-- P2B0 P2D8 V6 Y1 P76 P64 -- P2B1 P2D9 V7 Y2 P77 P66 -- P2B2 P2D10 W6 AA3 P78 P68

mCS P2B3 P2D11 Y6 AB4 P79 P69 mA15 P2B4 P2D12 V9 AA4 P80 P70 mA16 P2B5 P2D13 V10 AB5 P82 P71 mA17 P2B6 P2D14 W10 AA5 P83 P74 mA18 P2B7 P2D15 Y10 AA6 P84 P75 CS0 P2C0 ADC0 AA10 AB8 P85 P76

83

SDIN0 P2C1 ADC1 AB10 AA8 P86 P77 CS1 P2C2 ADC2 U10 AB9 P87 P78

SDIN1 P2C3 ADC3 U11 AA9 P89 P79 SCLK P2C4 ADC4 V11 AB10 P90 P80 CS2 P2C5 ADC5 W11 AA10 P92 P81

SDOUT P2C6 ADC6 Y11 AB11 P93 P82 LDAC P2C7 ADC7 AA11 AA11 P95 P83

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

xPB0 P1A0 PxA0 M1 M3 P135 P85 xPB1 P1A1 PxA1 M2 M4 P132 P86 yPB2 P1A2 PxA2 M3 N3 P131 P87 yPB3 P1A3 PxA3 M4 N4 P130 P88 yPB1 P1A4 PxA4 M5 T4 P129 P91 yPB4 P1A5 PxA5 M6 T5 P128 P92 yPB0 P1A6 PxA6 N1 U3 P127 P93 yPB5 P1A7 PxA7 N2 U4 P125 P94 yPB6 P1B0 PxB0 U13 V3 P119 P95 yPB7 P1B1 PxB1 V13 V4 P118 P96 xPB2 P1B2 PxB2 W13 W3 P116 P97 xPB3 P1B3 PxB3 Y13 W4 P113 P98 xPB4 P1B4 PxB4 AA13 Y3 P112 P100 xPB5 P1B5 PxB5 AB13 Y4 P96 P101 yPC3 P1B6 PxB6 U12 Y5 P97 P102 yPC2 P1B7 PxB7 V12 W5 P98 P103 yPC1 P1C7 PxC0 AB17 W11 P108 P113 yPC0 P1C6 PxC1 AA17 Y11 P107 P112 yPA0 P1C5 PxC2 Y17 W10 P105 P111 yPA1 P1C4 PxC3 W17 Y10 P104 P110 yPA2 P1C3 PxC4 AB18 W9 P103 P107 yPA3 P1C2 PxC5 AA18 W8 P102 P106 xPB6 P1C1 PxC6 Y18 W6 P100 P105 xPB7 P1C0 PxC7 W18 Y6 P99 P104

84

eM_DEMO 模組

eM_DEMO 模組的電路配置圖如下

eM_USB 模組

數字型 LED

0 1 2 34 5 6 78 9 A BC D E F

燈號型 LED

44 鍵盤

ADC0 ADC1 DAC0 DAC1

LED 選擇KEY 選擇

其中

1eM_DEMO模組的基本功能包括 A將 xPAxPBxPC等 16個 IO訊號引出控制 LED和鍵盤電路 B將 ADDA訊號引出並放大成+-10V的工作範圍 2LED和鍵盤可以選擇三種模式由 LED和 KEY 兩組開關作選擇圖示如下

模式1

0123

模式2 模式3

0 1 2 34 5 6 78 9 A BC D E F

0123

3模式14鍵輸入並搭配 16點的 LED燈號顯示其中 16點 LED分別對映到 xPA[0~3]xPB[0~7]和 xPC[0~3] 4組按鍵分別對映到 xPC[0~3] 4模式24鍵輸入並搭配四個 7段式數字顯示其中 數字顯示由 xPA[0~3]作數字掃瞄而由 xPB[0~7]作 7段式 LED控制 4組按鍵 分別對映到 xPC[0~3] 5模式316鍵輸入並搭配四個 7段式數字顯示其中 數字顯示由 xPA[0~3]作數字掃瞄而由 xPB[0~7]作 7段式 LED控制 16組按鍵由 xPA[0~3]作鍵盤掃瞄而由 xPC[0~3]作鍵盤讀取 6根據VHDL與數位邏輯設計的章節其中 第 1章至 10章的實驗採用模式1而 第 11章實驗採用模式2而 第 12章之後的實驗都採用模式3

85

FPGA UCF 定義

eM_3S1K 模組

NET CLK LOC = B12

NET XAlt0gt LOC = N2

NET XAlt1gt LOC = T1

NET XAlt2gt LOC = T2

NET XAlt3gt LOC = U2

NET XBlt0gt LOC = M3

NET XBlt1gt LOC = M4

NET XBlt2gt LOC = W3

NET XBlt3gt LOC = W4

NET XBlt4gt LOC = Y3

NET XBlt5gt LOC = Y4

NET XBlt6gt LOC = W6

NET XBlt7gt LOC = Y6

NET XClt0gt LOC = V1

NET XClt1gt LOC = V2

NET XClt2gt LOC = W1

NET XClt3gt LOC = W2

NET YAlt0gt LOC = W10

JP4 接頭

NET YAlt1gt LOC = Y10

NET YAlt2gt LOC = W9

NET YAlt3gt LOC = W8

NET YBlt0gt LOC = U3

NET YBlt1gt LOC = T4

NET YBlt2gt LOC = N3

NET YBlt3gt LOC = N4

NET YBlt4gt LOC = T5

NET YBlt5gt LOC = U4

NET YBlt6gt LOC = V3

NET YBlt7gt LOC = V4

NET YClt0gt LOC = Y11

NET YClt1gt LOC = W11

NET YClt2gt LOC = W5

NET YClt3gt LOC = Y5

在光碟片中 RFFPGAVHDLDEMOBIT3S1K 裡有 VHDL 與數位邏輯設計書本範例原始檔與合成檔

86

eM_3S50 模組

NET CLK LOC = P124

NET XAlt0gt LOC = P59

NET XAlt1gt LOC = P60

NET XAlt2gt LOC = P63

NET XAlt3gt LOC = P68

NET XBlt0gt LOC = P135

NET XBlt1gt LOC = P132

NET XBlt2gt LOC = P116

NET XBlt3gt LOC = P113

NET XBlt4gt LOC = P112

NET XBlt5gt LOC = P96

NET XBlt6gt LOC = P100

NET XBlt7gt LOC = P99

NET XClt0gt LOC = P69

NET XClt1gt LOC = P70

NET XClt2gt LOC = P73

NET XClt3gt LOC = P74

NET YAlt0gt LOC = P105

JP4 接頭

NET YAlt1gt LOC = P104

NET YAlt2gt LOC = P103

NET YAlt3gt LOC = P102

NET YBlt0gt LOC = P127

NET YBlt1gt LOC = P129

NET YBlt2gt LOC = P131

NET YBlt3gt LOC = P130

NET YBlt4gt LOC = P128

NET YBlt5gt LOC = P125

NET YBlt6gt LOC = P119

NET YBlt7gt LOC = P118

NET YClt0gt LOC = P107

NET YClt1gt LOC = P108

NET YClt2gt LOC = P98

NET YClt3gt LOC = P97

在光碟片中 RFFPGAVHDLDEMOBIT3S200 裡有VHDL與數位邏輯設計書本範例原始檔與合成檔

87

eM_95XL 模組

NET CLK LOC = SPIN38

NET XAlt0gt LOC = SPIN53

NET XAlt1gt LOC = SPIN54

NET XAlt2gt LOC = SPIN56

NET XAlt3gt LOC = SPIN57

NET XBlt0gt LOC = SPIN85

NET XBlt1gt LOC = SPIN86

NET XBlt2gt LOC = SPIN97

NET XBlt3gt LOC = SPIN98

NET XBlt4gt LOC = SPIN100

NET XBlt5gt LOC = SPIN101

NET XBlt6gt LOC = SPIN105

NET XBlt7gt LOC = SPIN104

NET XClt0gt LOC = SPIN58

NET XClt1gt LOC = SPIN59

NET XClt2gt LOC = SPIN60

NET XClt3gt LOC = SPIN61

NET YAlt0gt LOC = SPIN111

JP4 接頭

NET YAlt1gt LOC = SPIN110

NET YAlt2gt LOC = SPIN107

NET YAlt3gt LOC = SPIN106

NET YBlt0gt LOC = SPIN93

NET YBlt1gt LOC = SPIN91

NET YBlt2gt LOC = SPIN87

NET YBlt3gt LOC = SPIN88

NET YBlt4gt LOC = SPIN92

NET YBlt5gt LOC = SPIN94

NET YBlt6gt LOC = SPIN95

NET YBlt7gt LOC = SPIN96

NET YClt0gt LOC = SPIN112

NET YClt1gt LOC = SPIN113

NET YClt2gt LOC = SPIN103

NET YClt3gt LOC = SPIN102

在光碟片中 RFFPGAVHDLDEMOSVF95288XL 裡有VHDL與數位邏輯設計書本範例原始檔與合成

檔案

88

eM_FPGA 模組

NET CLK LOC = E12

NET XAlt0gt LOC = AA3

NET XAlt1gt LOC = Y4

NET XAlt2gt LOC = AA4

NET XAlt3gt LOC = AB4

NET XBlt0gt LOC = M1

NET XBlt1gt LOC = M2

NET XBlt2gt LOC = W13

NET XBlt3gt LOC = Y13

NET XBlt4gt LOC = AA13

NET XBlt5gt LOC = AB13

NET XBlt6gt LOC = Y18

NET XBlt7gt LOC = W18

NET XClt0gt LOC = W5

NET XClt1gt LOC = Y5

NET XClt2gt LOC = AA5

NET XClt3gt LOC = AB5

NET YAlt0gt LOC = Y17

JP4 接頭

NET YAlt1gt LOC = W17

NET YAlt2gt LOC = AB18

NET YAlt3gt LOC = AA18

NET YBlt0gt LOC = N1

NET YBlt1gt LOC = M5

NET YBlt2gt LOC = M3

NET YBlt3gt LOC = M4

NET YBlt4gt LOC = M6

NET YBlt5gt LOC = N2

NET YBlt6gt LOC = U13

NET YBlt7gt LOC = V13

NET YClt0gt LOC = AA17

NET YClt1gt LOC = AB17

NET YClt2gt LOC = V12

NET YClt3gt LOC = U12

在光碟片中 RFFPGAVHDLDEMOBIT2V250 裡有VHDL與數位邏輯設計書本範例原始檔與合成檔

89

Page 13: RFFPGA 直流馬達實驗手冊juniortek.com.tw/program/manual/RF-DC-mal.pdf · em_demo模組 em_dcm 直流伺服馬達 dc電源 rffpga 系統的直流馬達實驗規劃 其中包括:

end process -- combinational logic CE lt= CLK1M D0 lt= 1 when CMDgtREF else 0 --PWM generation PU lt= D1 and D2 and D3 and D4 --up-side output PD lt= not D1 and not D2 and not D3 and not D4 --down-side output PWMU lt= PU --up-side PWM output PWMD lt= PD --down-side PWM output PWMI lt= (not PU and not PD) or not ENB --PWM disable PWMR lt= REF --PWM reference end block PWM_COMPARATOR

程式中所對映的時序如下

CE

REF

CMD

D1D2D3D4PWMUPWMDPWMI

其中

1以 15MHz的 CE訊號為基本頻率 2將電壓命令 CMD和參考波形 REF作比較若 CMDgtREF則設定 D0=0否則設定

D0=1 3將 D0訊號作四次的延遲處理延遲訊號依序為 D1D2D3D4最後再重新組合成

PWM的輸出波形 4其輸出訊號包括 PWMU對映到 DCM模組中的 PWM+訊號 PWMD對映到 DCM模組中的 PWM-訊號 PWMI對映到 DCM模組中的 DIS訊號為切換保護訊號 如此 PWMU作動和 PWMD作動之間將有 2us間隔中是兩者都不作動的也就是

PWMI的作動時間 5當 ENB命令=0時設定 PWMI=1而使得驅動器 OFF

13

回授訊號的處理

精密的伺服馬達動作必須將馬達的位置和速度加以量測後再執行回授控制因此速

度和位置的量測是精密控制中必要的一環我們通常用光電寫碼器或數位尺來進行量測

工作

光電寫碼器(Photo-Encoder)俗稱光電盤是利用光電量測進行的非接觸式數位量測元

件其基本裝置如下

LED光源

光電晶體偵測

以 LED 或是其他光源來發光而用 AB 相的兩組光電晶體來偵測當圓盤隨著馬達作轉

動時光電晶體即可偵測到其移動狀態由於圓盤中的小孔呈等距排列其透光部分和

不透光部分呈 50對 50的比例當圓盤轉動時光電晶體端就可以偵測到下述訊號

光電盤訊號(A 相)

光電盤訊號(B 相)

正轉

其中

1偵測方波的頻率即對應於圓盤轉動的頻率也就是轉速 2偵測方波的個數即對應於圓盤轉過的孔數也就是轉角(相對角度) 3由於 AB相的兩組光電晶體在機械安裝上的角度不同使得讀出訊號也有 90 度的

差異如果馬達正轉則 A相超前如果馬達反轉則 B相超前

有了兩相的光電盤訊號只要能偵測其中的相位變化就可以分辨光電盤的正反轉運動

了例如正轉時的光電盤時序如下

14

光電盤訊號 (A 相 )

光電盤訊號 (B 相 )

正轉

微分訊號(A+)

微分訊號(A-)

微分訊號(B+)

微分訊號(B-)

正轉脈衝(CW)

其中

1針對 AB 兩相訊號作微分處理即可取得 A+A-B+B-的上緣微分和下緣微分 2將微分訊號和和原有的 AB相訊號作比較即可找出正轉脈衝 3計算正轉脈衝的頻率和個數即可取得馬達的速度和轉角 4如此得到的脈衝數將是原有 AB相頻率的四倍所以稱之為乘四解碼電路

同樣的如果針對光電盤的反轉時序一樣可以得出反轉訊號圖示如下

光電盤訊號(A相)

光電盤訊號(B相)

反轉

反轉脈衝(CCW)

其公式如下

CW lt= (A+ and not B) CCW lt= (A+ and B) or (A- and B) or (A- and not B) or (B+ and A) or (B+ and not A) or (B- and not A) or (B- and A)

整合光電盤回授的處理其系統方塊圖如下

數位濾波

D Q

CK

DLA

PHA

D Q

CK

DLB

PHB

CLK

乘四解碼電路

DIR

PLS

數位濾波

PA

PB

正反計數

CNT DB

RD

CS

包括

15

1首先利用簡單的數位濾波器將 AB項的雜訊排除 2接著利用延遲電路作微分處理並以乘四解碼電路解出轉動的脈波和方向 3最後利用正反計數器作計數並將計數值讀入匯流排

數位濾波器

光電盤的 AB 相訊號中如果產生雜訊干擾的現象會使得馬達轉角的計量上產生永久

性的累積誤差將造成控制上無法彌補的錯誤所以 AB 相訊號上的雜訊一定要盡力排

除下面是常用的數位濾波器設計範例

FILTER_A block -- digital filter for A signal CED0D1D2 STD_LOGIC begin process (CLK) -- sequential logic begin if CLKevent and CLK=1 then --CLK=gt1 trigger if CE=1 then --clock enable D2lt=D1 D1lt=D0 D0lt=PA --delay 3 clocks PHA lt= (D0 and D1 and D2) or ((D0 or D1 or D2) and PHA) end if end if end process -- combinational logic CE lt= CLK1M --15MHz clock end block FILTER_A 其中

1以 15MHz的頻率為控制基準 2利用延遲電路依序產生 D0D1D2的延遲訊號 3連續三個 1(D0D1D2 都是 1)定義為 1連續三個 0(D0D1D2 都是 0)定義為 0而其他不連續的 10 都定義為雜訊如此可將高頻的雜訊濾除

4但是相對的AB相訊號的最高頻率將限制為 250KHz(連續 3個 1和連續 3個 0)頻率過高的 AAB相訊號將被視為雜訊而不處理必須特別注意

正反轉的解碼和計數

依據前面的公式說明對映的 VHDL 程式範例如下

DECODER block signal DLADLB STD_LOGIC begin process (CLK) -- sequential logic begin if CLKevent and CLK=1 then --CLK=gt1 trigger DLAlt=PHA DLBlt=PHB --delay 1-clock end if end if

16

end process -- combinational logic DIR lt= (not PHA and DLA and not PHB) or ( PHA and not DLA and PHB) or (not PHB and DLB and PHA) or ( PHB and not DLB and not PHA) PLS lt= (not PHA and DLA) or (PHA and not DLA) or (not PHB and DLB) or (PHB and not DLB) end block DECODER 其中

1PHAPHB為經過雜訊濾波後的 AB相訊號而 DLADLB是其延遲訊號 2根據乘四解碼電路的公式取得 DIR和 PLS訊號其中 DIR用以控制計數器的正反向 PLS用以控制計數器的計數與否

所以接下去就是正反計數器的設計範例如下

COUNTER block signal Q STD_LOGIC_VECTOR(11 downto 0) begin process (CLKRESET) -- sequential logic begin if RESET=1 then --power-on reset Qlt=000000000000 --reset to 0 elsif CLKevent and CLK=1 then --CLK=gt1 trigger if PLS=1 then --clock enable if DIR=1 then Qlt=Q-1 --down counter else Qlt=Q+1 --up counter end if end if end if end process -- combinational logic CNT lt= Q --counter output end block COUNTER 其中

1這是標準的正反計數器架構在開機時自動復歸 2計數器的長度為 12-bit可依需要自行調整

DCM模組中的光電盤精度為每圈500格經過乘四解碼後相當於每圈2000格所以12-bit

計數器只能處理 2 圈的應用範圍絕對不夠在真正應用時一定要用軟體或硬體的方

式再擴張成 16-bit 或是 32-bit 的寬度來處理才行

17

3實驗項目

在直流伺服馬達控制系統中規劃五個實驗項目由系統首頁做選擇每項實驗操

作整個系統實驗組成由各項實驗項目 CAI 檔及各項實驗項目程式連結 PLC 檔結合而成茲表列如下

直 流 伺 服 實 驗 e x p _d c m c ai

開 環 路 電 壓 控 制

系 統 首 頁 實 驗 程 序

e x p _p w m c ai

開 環 路 速 度 控 制 e x p _s p ee d c a i

閉 環 路 位 置 控 制 e x p _a n gl e c a i

加 減 速 的 位 置 控 制 e x p _a c c c ai

正 弦 波 位 置 控 制 e x p _s i n c ai

C A I 圖 控 檔

直 流 伺 服 實 驗 開 環 路 電 壓 控 制

系 統 首 頁 實 驗 程 序

e x p _p w m p lc

開 環 路 速 度 控 制 e x p _s p ee d p l c

閉 環 路 位 置 控 制 e x p _a n gl e p l c

加 減 速 的 位 置 控 制 e x p _a c c p lc

正 弦 波 位 置 控 制 e x p _s i n p lc

e T T Y 批 次 檔

18

4安裝程序

31 將 RFFPGA中的程式拷貝至工作硬碟中進入 DC子目錄資料夾中其中包含下

列檔案

檔案 內容說明 mod SIN_wave MODPWM_wave MODIIR1_filter MODDAS4

MODPOS_inputMODPWM_outputMODACC_controlMODPD_controlMOD這些檔案是由 ASM重新編譯出由 testDCMmem所需執行模組檔

asm SIN_waveasmPWM_waveasmIIR1_filterasmDAS4asm POS_inDCMasmPWM_outDCMasmACC_conDCMasmPD_controlasm是各模組組合語言所設計 SOURCE檔

plc 為進行實驗所需的各批次檔 bit piDSPv0bit為下載到 FPGA的 BIT檔其功能為將 FPGA規劃成

具備 piDSP控制晶片功能提供直流伺服控制所需的控制程式

撰寫 testDCMsys 記載進行 DCM實驗時所需的模組 testDCMMEM 連結完成的 DSP執行檔用來進行 DCM實驗 testDCMvar 紀錄 DCM實驗時的參數對照表

在進行實驗前先將實驗所需的系統程式與模組程式分別說明加以說明系統所

需的程式模組由 testDCMsys 來描述程式列印如下

module fg1 PWM_wavemod 方波產生器

module fg2 SIN_wavemod 弦波產生器

module cn1 ACC_controlmod 加減速控制器

module cn2 PD_controlmod 比例微分控制器

module io1 POS_inputmod 位置和速度讀值

module io2 PWM_outputmod PWM 電壓輸出界面

module ft1 IIR1_filtermod 一階濾波器

module das das4mod 示波器資料蒐集

module io3 LEDKEYmod LEDKEY 界面

其中包括

1兩組波型產生器作為測試命令包括正弦波和方波 2兩組控制器提供包括加減速PD控制器的功能可依照實驗需求搭配使用 3兩組輸入輸出界面執行 PWM輸出和相位回授的界面處理 4一組低通濾波器作為電壓開迴路控制迴路和速度閉迴路控制的模擬使用 5DAS4mod是示波器專用的配合模組不論任何實驗都必須加入此模組 6Ledmod是四位數字七段顯示與 44矩陣按鍵模組

19

5執行程序

首先進入 RFFPGA 裡子目錄 DC直接點選 fPLCexe 出現下面操作畫面(也可直接將此檔

案放置桌面直接點選)

進入下面操作畫面

20

首先使用滑鼠在 FPGA下載按鈕單擊動作使 FPGA變成 piDSP晶片 如您撰寫組合語言時可使用 eASM按鈕 經編譯完成後產生MOD檔 如您撰寫系統連結程式時可使用 eLINK按鈕 經連結完成後產生MEM與VAR檔 點選實驗三後顯示如下 選擇程式下載再按程式啟動這時直流伺服馬達開始做位置控制在操控畫面放置 P 參數設定欄更改參數時馬達即時隨參數改變而產生不同響應 直接點選程式停止時結束所有控制動作再按回首頁選擇其他實驗

21

6實驗說明

下圖所示為直流馬達的控制系統方塊圖透過電流速度以及位置的回授再搭

配適當的控制器可建立完整的閉迴路控制系統在後面的實驗中將依此一系統方塊圖

逐步建立速度和位置的控制實驗各實驗的說明和操作方式及參考實驗結果將逐一進

行詳細的說明

控制

參考位置

速度 位置速

度控制 電流控制

電力電

子換流

位置速

度感測

i

+ -

壓ν

位置

速度

i

DC直流馬達之控制系統方塊圖

PWM 驅動方式只是簡單的開環路控制而高精度的馬達控制必須透過回授控制來完成

對於邏輯電路的設計者而言必須先瞭解基本的回授控制架構以便將來轉換成實用的

邏輯電路設計

設計說明

開環路特性

在電壓驅動的狀況下直流馬達開環路控制的示意圖如下

+-

22

如果換算成數學模式則轉換成下面的架構

+-Vc

R L

EMF

+

-

ITB

J

ω

其中

1其中的變數和參數包括 Vc 控制的電壓命令 R 電樞迴路的等效電阻 L 電樞迴路的等效電感 EMF電樞產生的反電動勢 i 電樞迴路中的電流 T 馬達所產生的扭力 J 馬達和負載的等效慣量 B 馬達和負載的等效摩擦力 ω 馬達所產生的速度 2所牽涉的物理公式包括 電壓迴路Vc = Ri + L(didt) + EMF 即電樞迴路中的電壓平衡 動力負載T = Bω + J(dωdt) 即扭力平衡 馬達特性T = Kti 所產生的扭力和電流成正比 電機特性EMF= Keω 所產生的電動勢和轉速成正比 其中新增的參數包括 Kt馬達的扭力常數 Ke馬達的反電動勢常數 3將微分項作拉式轉換(Laplase Transformation)的對映即 s = ddt 可將微分方程式轉換成更簡單的代數方程式而產生到下面的控制方塊圖

sL+R1Vc

+-EMF

iKt

TsJ+B1 ω

Ke

4在直流馬達的開環路特性中控制電壓(Vc)時輸入點而馬達轉速(ω)是輸出點即是控制馬達電壓以控制馬達轉速

5基本上馬達的開環路特性是個兩階系統類似於低通濾波器的特性在許多應用 場合其開環路特性還可以再簡化成一階系統方塊圖如下

23

sτ +1

KmVc ω 其中 τ一階系統的時間常數 Km一階系統的穩態增益

採用兩階系統的分析方式雖然會比較精細但是用一階系統來分析則可簡化所有的設計

過程因為這裡的實驗重點是邏輯設計所以在本章中我們都用一階系統作分析

系統響應的要求

就控制系統而言最重要的需求就是系統響應包括

穩態特性通常以穩態誤差為指標即是穩態時系統輸出和輸入之間的差異 暫態特性通常以上升時間(Rise Time)和過越比率(Overshoot)為指標

一個理想中的伺服控制系統其系統響應應該是

1穩態誤差為 0即馬達輸出將追隨輸入作變化沒有誤差 2過越比例為 0即馬達輸出絕對不會產生衝過頭的現象 3上升時間為 0即馬達輸出隨時追上輸入命令不會有控制上的延遲現象

當然這是太理想了一個合理的伺服控制系統應該是

1穩態誤差越小越好最好為 0 2過越比例越小越好最好為 0 3上升時間越短越好當然無法為 0但是盡力就是了

速度的回授控制

回授控制的目的就是為了改善系統響應以一階系統代表的馬達控制為例

sτ+1

KmVc ω

在步階響應(Step Response)時其特性如下

1穩態誤差由 Km決定 2過越比例為 0 3上升時間即是其時間常數(τ)

如果用比例控制器(P 控制器)作速度回授的控制則控制方塊圖如下

sτ+1

KmVc ωKp

err

P控制器 直流馬達ωc

速度回授

速度命令 + 速度響應-

24

其中

1速度命令並不直接控制馬達的驅動電壓而是 A將速度命令和速度回授相比找出其誤差訊號 err B依誤差訊號來控制驅動電壓 誤差越大則驅動電壓越高 誤差越小則驅動電壓越低 誤差為負則驅動電壓也為負 其中的比例關係由 P控制器中的 Kp 來調整 2經由數學分析後其步階響應的特性為 A穩態誤差變成 1(1+kpkm)如果 kpkmgtgt1則穩態誤差將趨近於 0 B過越比例仍為 0 C上升時間即是由τ變成τ(1+kpkm)所以上升時間將變短 3換句話說只要 Kp值夠大不論是穩態誤差或是上升時間都會大幅改善

理論上P控制器的增益是越高越好最好是無限大但是實際上是有限制的原因是

1馬達的開環路特性是兩階系統而非一階系統一階系統只是簡化後的結果 2當兩階系統作高增益的回授控制時當增益過高時會產生極嚴重的過越現象使得

馬達產生巨幅震動而難以控制

所以 P控制器的增益雖然是越高越好但調整時仍要小心維持(過越比例為 0)的條件

轉角的回授控制

做為馬達的速度控制P控制器的效果不錯但是如果將 P控制器應用到馬達的轉角控

制其特性就不太理想圖示如下

sτ+1

KmVc ωKp

err

P控制器 直流馬達

θc

轉角回授

轉角命令 + 轉角響應-

s1 θ

其中

1從馬達的速度到轉角之間具有積分特性即 馬達的轉角是馬達速度的積分結果而 馬達的速度是馬達轉角的微分結果而 2其中的積分特性使得整個系統由一階特性變成兩階特性在兩階系統中當設定高

增益時會產生極嚴重的過越現象使得馬達產生巨幅震動而難以控制 3在 P控制器增益無法提高的狀況之下轉角控制效果將無法獲得改善

雖然 P控制器在轉角控制上的效果並不好但是在控制系統中還是有許多法寶可以選擇

25

其中 PD 控制器就是簡單又有效的一個好方法

從表面上來看PD 控制器比 P控制器多了一個微分項就數學上來看這微分項提供了

一個新零點(Zero)可以調整根軌跡圖的走向就實驗上來說這微分項提供了控制器

的預測功能說明如下

sτ+1

KmVc ωKp+sKd

err

P控制器 直流馬達

θc

轉角回授

轉角命令 + 轉角響應-

s1 θ

1轉角控制中 P控制器的問題是在嚴重的過越現象原因是在 P控制器的作用下只有當回授超過命令時才能做出「負向」的控制但這時已經來不及了因為積分器

中已經累積了過多的能量而無法立刻消失使得馬達轉角衝過了頭 2解決之道就是在回授超過命令之前就必須做出「負向」的控制使得積分器累積

的能量逐步減弱在到達目標時才能立刻煞車才能解除過越現象 3而微分項就是這個預測量因為當誤差量越來越小時其微分項是負值雖然微分

項(D)是負值 當誤差量(P)很大時(P+D)的結果還是正值所以還是「正向」控制 當誤差量(P)漸小時(P+D)的結果變成負值才會開始「負向」控制 換句話說在誤差為 0之前即可啟動負向控制產生煞車作用使得馬達提前減速

而即時停止在目標點上自然就解除過越現象了

所以在 PD 控制器中有兩項調整量其中

1Kp增益提供比例控制部分的增益而 Kd增益提供微分控制部分的增益 2Kp增益控制馬達的趨近速度主要影響的是上升時間 3Kd增益控制馬達的提前煞車主要影響的是過越比例 4在兩者搭配下就有機會得到 很快很短的上升時間同時也 不會產生過越現象

PD 控制器的執行

依據 PD 控制器公式可以建立以數位執行的 PD 控制器如下圖所示

cmdKp

fdk

+

-

err

old

+-

Kd

Z-1

out+

+

26

其中

1利用差分公式來取代 PD控制器中的微分公式定義如下 s ==gt (1-Z-1)DT 其中對映的變數包括 s 微分項 Z-1延遲一個抽樣週期 DT抽樣週期單位為 sec 2就執行面而言Z-1是延遲一個抽樣週期也就是以抽樣週期所控制的暫存器 3在上圖中將命令(cmd)和回授(fdk)相減後得到誤差值(err)再將 err延遲一個抽樣週期成為 old所以(err-old)DT即是微分項

4原始的微分控制公式為(err-old)DTKd必須先除再乘但是因為 DT和 Kd 都是常

數可以預先將 Kd修正成 Kd=(KdDT)那麼公式將修正為(err-old)Kd就只需要一個乘法而不需要除法了

同樣的 PD 控制器可以用許多不同的方法作執行包括

1以軟體方式執行例如在 DSP核心中以組合語言撰寫控制模組 2以硬體方式執行例如在 FPGA中直接設計邏輯電路 3以微碼方式執行以微碼作順序控制執行硬體運算工作

這裡先提供用組合語言撰寫的程式模組作為設計參考其他兩種方法將在後續的實驗中

再陸續作說明

模組程式範例PD_controlasm

local cmd R0 IP gnd 輸入點位置命令(可忽略) local fdk R1 IP gnd 輸入點位置回授(可忽略) local out R2 OP 輸出點用以控制速度迴路 local kp R3 256 參數增益 kp10=256 local kd R4 0 參數增益 kd10=256 local err R5 0 內部變數 local old R6 0 內部變數 local gnd R7 0 無輸入時的短路點 data 8 模組變數區長度 initial 開機啟動程序 WR out0 WR old0 RET out=old=0 timer 即時控制程序 RD (cmd) SUB (fdk) WR err MUL kp SFR 8 P=(cmd-fdk)kp256 RDS err SUBX old MUL kd SFR 8 D=(err-old)kd256 ADDS WR out out=P+D RET

27

其中

1PD控制模組中對外的界面變數包括 cmd命令的輸入點 fdk回授的輸入點 out控制的輸出點 2內部參數包括 Kp比例控制增益其中 10=256所以乘完後還需要再右移 8-bit Kd微分控制增益其中 10=256所以乘完後還需要再右移 8-bit 3內部變數包括 err臨時性的變數用以儲存誤差值的計算結果 old儲存性的變數用以儲存上一次抽樣控制時的 err值 4模組程式分成三部分包括 變數宣告local和data所宣告的部分 初值設定initial程序中先將 out和 old設定為 0 即時控制timer程序中依序執行 PD控制器中的每個步驟

控制目標的選擇

從字面上來看速度控制就是控制馬達的速度轉角控制就是控制馬達的轉角沒什麼

好討論的但是實際上確有許多問題第一的問題就是什麼是速度和轉角馬達的速

度和轉角如果不作量測如何得知

既然在量測中取得了速度和轉角資料那麼我們所控制的到底是物理學上的速度和轉

sτ+1

KmVc ωKp+sKd

err

P控制器 直流馬達

θc

轉角回授

轉角命令 + 轉角響應-

s1 θ

KxANG

轉角量測

角還是量測上的速度和轉角以下圖為例

其中

1以轉角量測裝置量測轉角例如裝在馬達軸端的光電盤和解碼電路 2轉角的量測輸出是 ANG而 ANG和物理轉角θ之間有 Km的增益關係 3只要 Km值不是 1那麼系統就不再是單位回授 4如果 Km還有非線性或失真現象那麼控制結果也將有非線性或失真現象

這些問題混雜起來會使得控制系統的分析變得更複雜如果要簡單處理就要認同現

實環境直接以量測結果為控制目標如下圖所示

28

sτ+1

KmVc ωKp+sKd

err

P控制器 直流馬達

θc

轉角回授

+-

s1 θ Kx

ANG轉角量測

其中

1直接以量測結果為控制目標將全系統還原成標準的單位回授控制 2所有的非線性或失真現象都進入開環路討論屬於可以補償的部分 3但是控制結果就是「量測上的轉角」而「物理學上的轉角」

量測誤差的問題

轉角θ

量測ANG

對於量測誤差而言最明顯的問題就是量化誤差圖示如下

其中

1以 DCM模組中的光電盤為例精度為每圈 500格經由乘四解碼計數後其等效

精度增加為每圈 2000格 2比(12000)圈更精密的部分都無法響應換句話說振幅越大的控制其相對誤差越

小而振幅越小的控制其相對誤差越大例如 當振幅為(12)圈時其控制誤差量為 01而 當振幅為(120)圈時其控制誤差量為 1 這是標準的的非線性現象

量化誤差不只影響穩態上的精度還會造成非線性的震動問題圖示如下

t

誤差值

+1

-1

其中

1由於量化誤差的問題只有當誤差超過+1或是-1時才會真正偵測到誤差也才

29

會施加控制量作補償 2所以穩態時的誤差將在+1-1之間擺動造成微幅的振動 3量化誤差越大震動越明顯而量化誤差很小時通常不易察覺出震動現象

微分量的計算

伺服系統中有兩處需要用到微分計算包括

1PD控制器中誤差微分量的計算 2速度控制器中速度回授值的量測

在理論上微分公式是(dXdt)相當於 dXdt = (X(n)-X(n-1))DT (當 DT趨近於 0時)

所以當微分計算中的抽樣週期(DT)越短時微分的計算值將越接近理論值但是事實上

卻非如此以下圖為例

t

X

DTDX

其中

1當 X值為等速度運動時其微分量就是其斜率相當於 DXDT 2DT是微分計算中的抽樣週期理論上越短越好但是由於 DX本身的量化誤差

使得這個原則不再成立例如當斜率為 7394時 若 DT=1000則 DX=7394而 DXDT=7394 若 DT=100 則 DX=739 而 DXDT=739 若 DT=10 則 DX=73 而 DXDT=73 若 DT=1 則 DX=7 而 DXDT=7 3換句話說當抽樣週期越短時DX的量化誤差將越明顯而造成微分計算上更嚴

重的誤差

在 DCM 模組中速度量測的量化誤差分析如下

1馬達上的光電盤精度為每圈 500格經過乘四解碼後等效精度為每圈 2000格 2當馬達轉速為 1200RPM而抽樣頻率為 1KHz時對映的速度量測值為 1200(圈分)2000(格圈)60(秒分)1000(DT秒) = 40(格DT) 3換句話說1200RPM的轉速對映到 40的速度量測值即速度單位=30RPM若最

高轉速為 3000RPM則在+-3000RPM的速度範圍內其量化誤差為 05相當於8-bit的 ADC轉換器精度

4對映不同的抽樣頻率的量化誤差表列如下

30

光電盤精度 最高轉速 抽樣頻率 速度單

速度範圍 量化誤差

500PPR 3000RPM 1KHz 30RPM +-100 05 500PPR 3000RPM 2KHz 60RPM +-50 1 500PPR 3000RPM 4KHz 120RPM +25 2

過溢現象的處理

輸入

輸出

32767

-32768

整數運算都有數值範圍限制以 16-bit 整數而言輸入輸出的關係如下

其中

1當超過正負數的上下限時數值會正負顛倒例如 +32768 將會視為 -32768作處理而 +32769 將會視為 -32768作處理依此類推 2換句話說16-bit的整數運算只有在+-32767之間是線性的對映關係而超過這個範圍就是非線性的對映關係

3不但如此還因為正負顛倒的現象使得原來設計的負回授控制將變為正回授控制

而產生非線性的震盪現象 4換句話說只要計算上稍一不慎就會使得原先穩定的系統產生不穩定的震盪結果

為了避免過溢現象所造成的不穩定問題通常控制系統中會利用飽和處理作改善圖示

如下

輸入

輸出

lmtH

lmtL

31

其中

1當超過計算的上限時將固定設為上限值處理而當超過計算的下限時也將固定

設為下限值處理 2這時的整數運算只有在上下限之間是線性的對映關係而超過這個範圍將還是非線

性的對映關係 3雖然如此但是因為沒有正負顛倒的現象所以不再會有負回授變為正回授的問題

而避免了非線性的震盪現象 4換句話說飽和處理是針對過溢現象的妥協處理方案雖然不完全理想但是是可

接受的最佳選擇

下面是對映的組合語言範例

RD x x為輸入端 MIN lmtH 取得 x和 lmtH中的較小值即是作上限保護的工作 MAX lmtL 取得 x和 lmtL中的較大值即是作下限保護的工作 WR y Y為輸出端 其中

1組合語言中提供MAX和MIN的計算其中 MIN lmtH 比較 AX暫存器和 lmtH而將較低值存入 AX暫存器中 MAX lmtL 比較 AX暫存器和 lmtH而將較高值存入 AX暫存器中 2所以直接可用MIN指令作上限保護而以MAX指令作下限保護兩者合併後即是

完整的飽和處理結果

飽和處理通常應用在高位數轉成低位數的場合例如32-bit轉換成16-bit或是16-bit

轉換成 12-bit 等等例如在本實驗中所有的運算都是以 16-bit 整數作處理但是到

PWM 驅動級輸出時卻要轉換成 12-bit精度的 PWM 命令所以必須先用飽和處理以避免

過溢現象造成的不穩定問題

32

61 實驗 1-開迴路的電壓控制 實驗說明以電壓直接控制轉速的開迴路特性可簡化為一階系統處理方塊圖如

sτ+1

v km ωm

其中V 送給驅動器的 PWM電壓命令

ωm馬達的轉動速度可由處理 photo encoder信號所得的位置微分而得 km一階系統的穩態增益 τ一階系統的時間常數即步階響應中的上升時間

為了觀測直流馬達的開環路特性建立下面的測試方塊圖

其中

1所使用的模組包括 FG1方波產生器產生所需的步階測試波形 FT1馬達模擬以一階系統的低通濾波器來執行 IO1光電盤的回授處理可同時取得轉角和速度的量測值 IO2PWM電壓驅動直接驅動直流馬達作控制 Led四位數字七段顯示模組顯示波形信號資料 2測試目標有兩項(P 參數設定欄)包括 A調整方波命令控制直流馬達作開環路的 PWM電壓控制 B調整馬達模擬參數使模擬結果和實驗結果相符以確認開環路特性

33

實驗畫面顯示如下

測試一 開環路的電壓控制 記錄頻道 CH1電壓命令Y1=-300DY=500 CH2模擬速度Y2=-100DY=500 CH3馬達速度Y3=100DY=50 CH4馬達轉角Y4=300DY=50000 實驗參數 FG1kAMP=256電壓命令的測試振幅 FG1kFRQ=150電壓命令的測試頻率 FT1DT =10 馬達模擬參數 FT1KA =500馬達模擬參數

其中

1用示波器功能記錄四個頻道其中 CH2和 CH3重疊顯示以比較模擬速度和量測

速度之間的差異 2由於 Km 不等於 1所以必須調整 CH3的 Y軸單位才能使得 CH2和 CH3的穩態響應部分重疊

3實驗時可以改變 FG1的參數以調整測試方波的振幅和頻率 4可以調整 FT1的參數使得 CH2和 CH3的暫態響應部分重疊

根據實際的測試結果分析如下

2馬達模擬的參數調整到 DT=10而 KA=500根據公式 τ = 40961000dtka 所以上升時間(τ)為 0082秒或是 82ms 3CH2CH3的 Y軸單位並不一致顯然 Km 不等於 1經計算確認 Km=0098

對應之 plc檔程式說明(exp_pwmplc) echo off 畫面顯示開始

run dsp 0 選擇 DSP1

run stop run reset 既有程式停止

run testDCMmem 下載指定程式

das 1 ampfg1out 0 1024 PWM 波形 Volt 設定 DAS 頻道1

das 2 ampft1lp 0 1024 馬達模擬 Volt 設定 DAS 頻道2

das 3 ampio1spd 0 1024 馬達速度 Volt 設定 DAS 頻道3

das 4 ampio1ang 0 1024 馬達角度 Volt 設定 DAS 頻道4

plot select 0 設定示波器頁數

plot xunit 100000 0 設定示波器 X軸

plot yunit 1 500 -300 設定示波器 Y1 軸

34

plot yunit 2 500 -100 設定示波器 Y2 軸

plot yunit 3 50 100 設定示波器 Y3 軸

plot yunit 4 50000 300 設定示波器 Y4 軸

plot trigger 1 0 1 10 設定示波器觸發

plot scope 9 1 2 3 4 設定示波器顯示

module io2 設定 io2 模組

s cmd ampfg1out

module fg1 設定 fg1 模組

s kAmp 256 s kFrq 150

module ft1 設定 ft1 模組

s u ampfg1out s dt 10 s ka 500

module io3 設定 io3 模組

s led ampfg1out

module 回復預設模組

run 1khz 設定抽樣頻率為 4KHz

run start DSP 開始執行

das stop pause 1 DAS 啟動 das start DAS 啟動

echo on 回復正常訊息顯示

使用者可視情況調整一階濾波器的 ka和 dt值使得 ch2和 ch3 兩組波形完全相符

以求得開迴路系統近似的一階轉移函數 CAI操控設計畫面規劃如下(EXP_PWMCAI) page 1 畫面設計

35

page 2 畫面設計 page 3 畫面設計

36

實測響應圖

訊 號 說 明 訊 號 說 明 ch1 方波產生器訊號 ch3 一階濾波器輸出信號 ch2 馬達角速度訊號 ch4 馬達角位置訊號

直流馬達之開迴路電壓控制響應圖

37

以邏輯分析功能觀測直流馬達之光電盤輸入與 PWM輸出信號

38

62 實驗 2-閉迴路的速度控制 實驗說明為了觀測閉迴路的速度控制響應建立下面的測試方塊圖

加入 PD控制後系統閉迴路的轉移函數經適度的簡化仍能約略以一階系統

處理方塊圖如下

sτ+1

u km ωm

其中

u 送給控制器的速度命令

ωm馬達的轉動速度可由處理 photo encoder 信號所得的位置微分而得

km一階系統的穩態增益 τ一階系統的時間常數即步階響應中的上升時間

方塊圖中的模組功能說明如下

1用 fg1 產生測試用的方波速度命令

2將方波速度命令和速度回授訊號送到 PD 控制器方塊中產生電壓控制訊號再透

過 io2 模組將訊號送出給伺服介面

3用 ft1 建立對照用的一階系統可用 IIR1濾波器方塊產生

4將方波命令產生速度命令再觀測 PHT(io1)上的速度值 spd

5調整 IIR1濾波器的參數使得兩組波形完全相符這時 IIR1濾波器就是閉迴路

速度控制的特性其中 km 為增益而τ為上升時間(單位為 sec)

6增益 km 可從示波器中作簡單計算而上升時間(τ=40964000dtka)

7 Led四位數字七段顯示模組顯示波形信號資料

39

對應之 plc檔程式說明(exp_speedplc) echo off 畫面顯示開始

run dsp 0 選擇 DSP1

run stop run reset 既有程式停止

run testDCMmem 下載指定程式

das 1 ampfg1out 0 1024 PWM 波形 Volt 設定 DAS 頻道1

das 2 ampft1lp 0 1024 馬達模擬 Volt 設定 DAS 頻道2

das 3 ampio1spd 0 1024 馬達速度 Volt 設定 DAS 頻道3

das 4 ampio1ang 0 1024 馬達角度 Volt 設定 DAS 頻道4

plot select 0 設定示波器頁數

plot xunit 100000 0 設定示波器 X軸

plot yunit 1 50 -300 設定示波器 Y1 軸

plot yunit 2 50 -100 設定示波器 Y2 軸

plot yunit 3 50 100 設定示波器 Y3 軸

plot yunit 4 50000 300 設定示波器 Y4 軸

plot trigger 1 0 1 10 設定示波器觸發

plot scope 9 1 2 3 4 設定示波器顯示

module io2 設定 io2 模組

s cmd ampcn2out

module fg1 設定 fg1 模組

s kAmp 50 s kFrq 150

module cn2 設定 cn1 模組

s cmd ampfg1out s fdk ampio1spd s kp 0x4000

module ft1 設定 ft1 模組

s u ampfg1out s dt 2 s ka 320

module io3 設定 io3 模組

s led ampfg1out

module 回復預設模組

run 1khz 設定抽樣頻率為 4KHz

run start DSP 開始執行

das stop pause 1 DAS 啟動 das start DAS 啟動

echo on 回復正常訊息顯示

CAI操控設計畫面規劃如下(EXP_speedCAI)

40

page 1 畫面設計 page 2 與 page 3 畫面設計與實驗一 page 2 與 page 3相同畫面 page 4 畫面設計

41

方塊的參數設定 使用者可視情況調整一階濾波器的 ka和 dt值使得 ch2和 ch3 兩組波形完全相符

以求得此一閉迴路系統近似的一階轉移函數或調整 PD控制器中的 kp和 kp值以調整系統之響應 實測響應圖

訊 號 說 明 訊 號 說 明 ch1 方波產生器產生之速度命令 ch3 一階濾波器輸出信號 ch2 馬達角速度訊號 ch4 馬達角位置訊號

42

直流馬達之閉迴路速度控制響應圖

43

63 實驗 3-閉迴路的位置控制 實驗說明為了觀測閉迴路的位置控制響應將直流馬達的回授改為位置訊號

建立下面的測試方塊圖 方塊圖中的模組功能說明如下

1用 fg1產生測試用的方波位置命令 2將方波位置命令和位置回授訊號送到 PD控制器方塊中產生電壓控制訊號再透過 io2模組將訊號送出到伺服介面驅動馬達轉動

對應之 plc檔程式說明(exp_angleplc) echo off 畫面顯示開始

run dsp 0 選擇 DSP1

run stop run reset 既有程式停止

run testDCMmem 下載指定程式

das 1 ampfg1out 0 1024 PWM 波形 Volt 設定 DAS 頻道1

das 2 ampft1lp 0 1024 馬達模擬 Volt 設定 DAS 頻道2

das 3 ampio1spd 0 1024 馬達速度 Volt 設定 DAS 頻道3

das 4 ampio1ang 0 1024 馬達角度 Volt 設定 DAS 頻道4

plot select 0 設定示波器頁數

plot xunit 100000 0 設定示波器 X軸

plot yunit 1 1000 -300 設定示波器 Y1 軸

plot yunit 2 1000 -100 設定示波器 Y2 軸

plot yunit 3 20 100 設定示波器 Y3 軸

plot yunit 4 1000 300 設定示波器 Y4 軸

plot trigger 1 0 1 10 設定示波器觸發

44

plot scope 9 1 2 3 4 設定示波器顯示

module io2 設定 io2 模組

s cmd ampcn2out

module fg1 設定 fg1 模組

s kAmp 1000 s kFrq 75

module cn2 設定 cn1 模組

s cmd ampfg1out s fdk ampio1ang s kp 0x300 s kd 0x4000

module ft1 設定 ft1 模組

s u ampfg1out s dt 2 s ka 320

module io3 設定 io3 模組

s led ampfg1out

module 回復預設模組

run 1khz 設定抽樣頻率為 4KHz

run start DSP 開始執行

das stop pause 1 DAS 啟動 das start DAS 啟動

echo on 回復正常訊息顯示

CAI操控設計畫面規劃如下(EXP_angleCAI) page 1 畫面設計

45

page 2 與 page 3 畫面設計與實驗一 page 2 與 page 3相同畫面 page 4 畫面設計與實驗二 page 4 畫面 方塊的參數設定 延續上一實驗的說明使用者可以調整 PD控制器中的 kp和 kd值以調整系統之

響應 實測響應圖

訊 號 說 明 訊 號 說 明 ch1 方波產生器產生之位置命令 ch3 馬達角速度訊號 ch2 馬達角位置 ch4 Pd控制器輸出之電壓訊號

46

直流馬達之閉迴路位置控制響應圖

47

64 實驗 4-加減速的位置控制 實驗說明為避免方波命令的過於嚴苛在方波命令的輸出加入一加減速控制功

能方塊以減緩命令變化的幅度增加馬達運動的平順建立的測試方塊圖如下

方塊圖中的模組功能說明如下

1用 fg1產生測試用的方波位置命令 2將方波位置命令送到加減速控制方塊處理後產生新的位置命令再將新的位置命

令與位置回授訊號送到 PD控制器方塊中產生電壓控制訊號最後透過 io2模組將訊號送出到伺服介面驅動馬達轉動

對應之 plc檔程式說明(exp_accplc) echo off 畫面顯示開始

run dsp 0 選擇 DSP1

run stop run reset 既有程式停止

run testDCMmem 下載指定程式

das 1 ampfg1out 0 1024 PWM 波形 Volt 設定 DAS 頻道1

das 2 ampcn1out 0 1024 加速控制 Volt 設定 DAS 頻道2

das 3 ampio1spd 0 1024 馬達速度 Volt 設定 DAS 頻道3

das 4 ampio1ang 0 1024 馬達角度 Volt 設定 DAS 頻道4

plot select 0 設定示波器頁數

plot xunit 100000 0 設定示波器 X軸

plot yunit 1 2000 -300 設定示波器 Y1 軸

plot yunit 2 2000 -100 設定示波器 Y2 軸

plot yunit 3 50 100 設定示波器 Y3 軸

plot yunit 4 2000 300 設定示波器 Y4 軸

48

plot trigger 1 0 1 10 設定示波器觸發

plot scope 9 1 2 3 4 設定示波器顯示

module io2 設定 io2 模組

s cmd ampcn2out

module fg1 設定 fg1 模組

s kAmp 2000 s kFrq 150

module cn1 設定 cn1 模組

s cmd ampfg1out

module cn2 設定 cn2 模組

s cmd ampcn1out s fdk ampio1ang s kp 0x300 s kd 0x4000

module ft1 設定 ft1 模組

s u ampfg1out s dt 2 s ka 320

module io3 設定 io3 模組

s led ampfg1out

module 回復預設模組

run 1khz 設定抽樣頻率為 4KHz

run start DSP 開始執行

das stop pause 1 DAS 啟動 das start DAS 啟動

echo on 回復正常訊息顯示

CAI操控設計畫面規劃如下(EXP_accCAI) page 1 畫面設計

49

page 2 畫面設計與實驗一 page 2相同畫面 page 3 畫面設計與實驗二 page 4相同畫面

參數設定參考之前各實驗的說明可線上機動性的調整 PD控制器中的 kp和 kd值以調整系統之響應 實測響應圖

訊 號 說 明 訊 號 說 明 ch1 方波產生器產生之位置命令 ch3 馬達角位置 ch2 加減速模組輸出之位置命令 ch4 馬達角速度訊號

50

圖一 直流馬達經加減速控制後之閉迴路控制響應圖

51

65 實驗 5-正弦波的位置控制 實驗說明在本實驗中改變命令的波形由方波改變為正弦波並建立如下的測

試方塊圖與上一實驗相比較僅更改命令的波形產生方塊 方塊圖中的模組功能說明如下 1用 fg2產生測試用的弦波位置命令 2將弦波位置命令送到加減速控制方塊處理後產生新的位置命令再與 io1 讀入的位

置回授訊號送到 PD 控制器方塊中產生電壓控制訊號再透過 io2 模組將訊號送出到伺服介面驅動馬達轉動

對應之 plc檔程式說明(exp_sinplc) echo off 畫面顯示開始

run dsp 0 選擇 DSP1

run stop run reset 既有程式停止

run testDCMmem 下載指定程式

das 1 ampfg2out 0 1024 SIN 波形 Volt 設定 DAS 頻道1

das 2 ampcn1out 0 1024 加速控制 Volt 設定 DAS 頻道2

das 3 ampio1spd 0 1024 馬達速度 Volt 設定 DAS 頻道3

das 4 ampio1ang 0 1024 馬達角度 Volt 設定 DAS 頻道4

plot select 0 設定示波器頁數

plot xunit 100000 0 設定示波器 X軸

plot yunit 1 2000 -300 設定示波器 Y1 軸

plot yunit 2 2000 -100 設定示波器 Y2 軸

plot yunit 3 50 100 設定示波器 Y3 軸

plot yunit 4 2000 300 設定示波器 Y4 軸

plot trigger 1 0 1 10 設定示波器觸發

52

plot scope 9 1 2 3 4 設定示波器顯示

module io2 設定 io2 模組

s cmd ampcn2out

module fg2 設定 fg1 模組

s kAmp 2000 s kFrq 100

module cn1 設定 cn1 模組

s cmd ampfg2out

module cn2 設定 cn2 模組

s cmd ampcn1out s fdk ampio1ang s kp 0x300 s kd 0x4000

module ft1 設定 ft1 模組

s u ampfg2out s dt 2 s ka 320

module io3 設定 io3 模組

s led ampfg2out

module 回復預設模組

run 1khz 設定抽樣頻率為 4KHz

run start DSP 開始執行

das stop pause 1 DAS 啟動 das start DAS 啟動

echo on 回復正常訊息顯示

CAI操控設計畫面規劃如下(EXP_sinCAI) page 1 畫面設計

53

page 2 畫面設計 page 3 畫面設計與實驗二 page 4相同畫面

方塊的參數設定可調整 PD控制器中的 kp和 kd值以調整系統之響應 實測響應圖

訊 號 說 明 訊 號 說 明 ch1 弦波產生器產生之位置命令 ch3 馬達角位置訊號 ch2 加減速模組輸出之位置命令 ch4 馬達角速度訊號

54

直流馬達之閉迴路弦波加減速位置控制響應圖

55

7組合語言說明

本節將針對 DC馬達伺服控制實驗專用的程式模組進行功能與程式碼的說明其

有關於波形產生器與資料擷取模組等說明如下

SIN_waveasm 正弦波產生器 PWM_waveasm 方波產生器 IIR1_filterasm 一階濾波器 DAS4asm 資料蒐集模組

弦波產生器

此模組會產生週期性的正弦波方塊圖如下

outfrq

kBiasbias

ampkAmp

kFrqth

kThf=1TB

θ

A

其中

1正弦波有四個參數振幅(A)頻率(F)相位(θ)和偏移(B)其公式為 out = A sin(2πF t +θ) + B 2對於單純的正弦波產生器所對映的參數包括 kAmp 振幅值 kFrq 頻率值kFrq=655368000Hz其中 Hz的範圍為 0~4000例如 1000Hz =gt frq=8192 100Hz =gt frq=819 10Hz =gt frq=82 1Hz =gt frq=8 kTh 相角值0~255代表 0~360的相位當 th=0 時為正弦波 th=64 時為餘弦波 th=128時為反相波依此類推 kBias偏移值 3對於可調變的正弦波產生器其對映的輸入點為 amp 控制振幅的輸入點可產生調幅(AM)波形 frq 控制頻率的輸入點可產生調頻(FM)波形 th 控制相位的輸入點可產生調相(PM)波形 bias控制偏移的輸入點可產生雙頻混波(相加)波形 4若不使用調變功能時各個輸入點時的預設值為 amp 指向 kAmp 的位址 frq 指向 kFrq 的位址

56

th 指向 kTh 的位址 bias指向 kBias的位址

模組程式範例SIN_WAVEasm

local amp R0 IP kAmp 輸入點sin波的振幅 local frq R1 IP kFrq 輸入點sin波的頻率 local th R2 IP kTh 輸入點sin波的相角 local bias R3 IP kBias 輸入點sin波的中心偏移 local out R4 OP 輸出點sin波輸出 local tab R5 TP 表格指標指向 sin[256]的表格 local ang R6 內部變數相位角65536=360deg local kAmp R7 1000 參數振幅值 local kFrq R8 1000 參數頻率值=655368000Hz local kTh R9 0 參數相角值360deg=256 local kBias R10 0 參數偏移值 data 11 模組變數區長度及初值 initial 啟動程序 WR ang0 WR out0 ang=out=0 RET timer 即時控制程序(8KHz) RD ang ADD (frq) WR ang ang+=frq SFR 8 ADD (th) AND 255 ACC=sin(ang256+th) ADD tab WRH RDM table-look-up MUL (amp) SFR 12 ADD (bias) WR out out=ACCamp4096+bias RET table tab 256 sin[256]表格區10=4096 0 101 201 301 401 501 601 700 00~070deg 799 897 995 1092 1189 1285 1380 1474 08~0F 1567 1660 1751 1842 1931 2019 2106 2191 10~17 2276 2359 2440 2520 2598 2675 2751 2824 18~1F 2896 2967 3035 3102 3166 3229 3290 3349 20~27 3406 3461 3513 3564 3612 3659 3703 3745 28~2F 3784 3822 3857 3889 3920 3948 3973 3996 30~37 4017 4036 4052 4065 4076 4085 4091 4095 38~3F 4096 4095 4091 4085 4076 4065 4052 4036 40~4790deg 4017 3996 3973 3948 3920 3889 3857 3822 48~4F 3784 3745 3703 3659 3612 3564 3513 3461 50~57 3406 3349 3290 3229 3166 3102 3035 2967 58~5F

57

2896 2824 2751 2675 2598 2520 2440 2359 60~67 2276 2191 2106 2019 1931 1842 1751 1660 68~6F 1567 1474 1380 1285 1189 1092 995 897 70~77 799 700 601 501 401 301 201 101 78~7F 0 65435 65335 65235 65135 65035 64935 64836 80~87180deg 64737 64639 64541 64444 64347 64251 64156 64062 88~8F 63969 63876 63785 63694 63605 63517 63430 63345 90~97 63260 63177 63096 63016 62938 62861 62785 62712 98~9F 62640 62569 62501 62434 62370 62307 62246 62187 A0~A7 62130 62075 62023 61972 61924 61877 61833 61791 A8~A8 61752 61714 61679 61647 61616 61588 61563 61540 B0~B7 61519 61500 61484 61471 61460 61451 61445 61441 B8~BF 61440 61441 61445 61451 61460 61471 61484 61500 C0~C7270deg 61519 61540 61563 61588 61616 61647 61679 61714 C8~CF 61752 61791 61833 61877 61924 61972 62023 62075 D0~D7 62130 62187 62246 62307 62370 62434 62501 62569 D8~DF 62640 62712 62785 62861 62938 63016 63096 63177 E0~E7 63260 63345 63430 63517 63605 63694 63785 63876 E8~EF 63969 64062 64156 64251 64347 64444 64541 64639 F0~F7 64737 64836 64935 65035 65135 65235 65335 65435 F8~FF

就程式結構而言說明如下

timer 即時控制程序(8KHz) RD ang ADD (frq) WR ang ang+=frq SFR 8 ADD (th) AND 255 ACC=sin(ang256+th) ADD tab WRH RDM table-look-up MUL (amp) SFR 12 ADD (bias) WR out out=ACCamp4096+bias RET

1基本上我們以查表法計算 sin()其輸入θ的範圍為 0~255對映到 0~360deg其輸出 sin(θ)的範圍為+-4096對映到+-10的範圍

2建立一個內部變數 ang其範圍為 0~65535對映到 0~360的相位角 3每個timer程序都執行 ang+=frq的動作更新目前的相位角接著依照 ang的相位角查表得到 sin(ang256+th)值

4由於表格長度為 256-word所以必須將 ang256才能得到正確的對映關係而 th範圍為 0~255所以不需要像 ang一般的做額外處理

5sin()的範圍為(+1-1)而在表格中以(+4096~-4096)的型式記錄相當於 10=4096所以執行 Asin()時還要用 SFR12指令做4096的動作才能正確的取得輸出值

58

6就頻率輸入 frq而言其計算原則是將θ=ωt轉化成θ=Σ(ωdt)因為抽樣頻率

為 8KHz所以 dt=18000而得到 frq=655368000Hz公式其中 Hz為真正的頻率在 8KHz的抽樣頻率下其範圍為 0~4000

鋸齒波產生器

此模組會產生週期性的鋸齒波方塊圖如下

outfrq

kBiasbias

ampkAmp

kFrqth

kThf=1TB

θ

A

其中

1鋸齒波也有四個參數振幅(A)頻率(F)相位(θ)和偏移(B)和正弦波的定義完全一致唯一的差異是其輸出為鋸齒波而非正弦波

2基本波形是從週期開始時為 0一直遞增到週期結束時到達最高點然後立刻回歸

到 0重新開始 3以程式結構而論鋸齒波程式幾乎就是正弦波的相位計算部分只差沒有正弦波的

查表處理而已

模組程式範例SAW_WAVEasm

local amp R0 IP kAmp 輸入點sin波的振幅 local frq R1 IP kFrq 輸入點sin波的頻率 local th R2 IP kTh 輸入點sin波的相角 local bias R3 IP kBias 輸入點sin波的中心偏移 local out R4 OP 輸出點sin波輸出 local ang R5 內部變數相位角65536=360deg local kAmp R6 1000 參數振幅值 local kFrq R7 1000 參數頻率值=655368000Hz local kTh R8 0 參數相角值360deg=256 local kBias R9 0 參數偏移值 data 11 模組變數區長度及初值 initial 啟動程序 WR ang0 WR out0 ang=out=0 RET timer 即時控制程序(8KHz) RD ang ADD (frq) WR ang ang+=frq SFR 8 ADD (th) AND 255 ACC=(ang256+th)amp0x00ff MUL (amp) SFR 8 ADD (bias) WR out out=ACCamp256+bias

59

RET

脈衝波產生器

outfrq

kBiasbias

ampkAmp

kFrqth

kThf=1TB

θ

A

pwm

kDutyduty

此模組會產生週期性的脈衝波方塊圖如下

其中

1脈衝波有五個參數其中振幅(A)頻率(F)相位(θ)和偏移(B)四個參數和正弦波

定義完全一樣另外再增加一個負載率(D) 2基本波形是從週期開始時為 1隔段時間後換為 0然後持續到週期結束再重新開始其中 1所佔有的比例就是負載率當 D=0時為 0而 D=255時為 100

3和其他參數類似負載率(D)以 duty為其輸入點而以 kDuty為其參數值

模組程式範例PLS_WAVEasm

local amp R0 IP kAmp 輸入點脈衝波的振幅 local frq R1 IP kFrq 輸入點脈衝波的頻率 local th R2 IP kTh 輸入點脈衝波的相角 local bias R3 IP kBias 輸入點脈衝波的中心偏移 local duty R4 IP kDuty 輸入點脈衝波的負載率 local out R5 OP 輸出點脈衝波輸出 local ang R6 內部變數相位角65536=360deg local kAmp R7 1000 參數振幅值 local kFrq R8 1000 參數頻率值=655368000Hz local kTh R9 0 參數相角值360deg=256 local kBias R10 0 參數偏移值 local kDuty R11 128 參數負載率100 =256 data 12 模組變數區長度及初值 initial 啟動程序 WR ang0 WR out0 ang=out=0 RET timer 即時控制程序(8KHz)

60

RD ang ADD (frq) WR ang ang+=frq SFR 8 ADD (th) AND 255 ACC=(ang256+th)amp0x00ff SUB (duty) RD (amp) JLT t1 RD 0 ACC=(amp0) t1 ADD (bias) WR out out=ACC+bias RET

IIR 一階濾波器

此模組執行一階的 IIR濾波器方塊圖如下

kau x

Z-1

+

+

-

+低通濾波器

高通濾波器dx lp

hp

濾波器參數的計算公式如下

1假設濾波器的頻寬為 hz則 ωn=hz628 2若系統頻率為 8KHz則抽樣週期 dT為 dT=dt8000 其中 dt為模組參數 3則濾波器參數為 ka=ωndT4096或是 =hzdt62880004096即 =hzdt32 4當 dt決定後所允許的訊號頻寬為(4000dt)換句話說訊號頻寬會因為 dt增加而下降

為了方便實驗的運用下面列出常用的參數對照表

濾波頻寬

(Hz)

10 20 50 100 200 500 1000 2000

訊號頻寬

(Hz)

400 800 2000 4000 4000 4000 4000 4000

模組參數 dt 10 5 2 1 1 1 1 1

模組參數 ka 320 320 320 320 640 1600 3200 6400

表格的運用方式如下

1首先決定濾波頻寬 2接著查表找出對映的參數 dt和 ka 3再查表得到對映的訊號頻寬以決定是否需要串接前級濾波器

61

模組程式範例IIR1_FILTERasm

local u R0 IP 輸入點濾波器輸入 local lp R1 OP 輸出點低通濾波器輸出 local hp R2 OP 輸出點高通濾波器輸出 local dt R3 1 參數抽樣週期 local ka R4 4096 參數增益 ka10=4096 local prd R5 內部變數抽樣週期用 data 6 模組變數區長度 initial 開機啟動程序 WR lp0 WR hp0 WR prd1 RET lp=hp=0prd=1 timer 即時控制程序 SUB prd1 JNZ b9 if (--prdgt0) return RD dt WR prd prd=dt RD (u) SUB lp WR hp hp=u-lp MUL ka SFR 12 ADD lp WR lp lp+=(hpka4096) b9 RET

資料蒐集模組

資料蒐集模組是一個非常特殊的模組專門配合 eTTY 程式中的示波器使用

模組程式範例DAS4asm

local cmd R0 0 紀錄命令0=停止1=前置記錄2=正觸發4=負觸發6=觸發記錄 local dt R1 1 抽樣週期每 dT抽樣一次 local tab R2 TP DAS表格啟始位址 local cnt R3 0 目前記錄點(0~255) local ch1 R4 0 定義頻道1的變數位址 local ch2 R5 0 定義頻道2的變數位址 local ch3 R6 0 定義頻道3的變數位址 local ch4 R7 0 定義頻道4的變數位址 local trg R8 0 定義觸發頻道的變數位址 local th R9 0 觸發準位 local tail R10 0 觸發後的抽樣個數 local buf R11 1 抽樣計數(1~dt) local pnt R12 表格位址計算pnt=tab+cnt4 local len R13 表格長度計算(0~256) data 14 定義模組變數區的長度 table tab 1024 定義表格的長度 initial 啟動程序 WR cmd0 RET cmd=0 timer 控制程序

62

ADD cmd0 JZ t9 if (cmd==0) return SUB buf1 JNZ t9 if (--buf)gt0) return RD dt WR buf dt=buf RD cnt ADD 1 AND 0xff WR cnt cnt=(cnt+1)amp0xff SFL 2 ADD tab WR pnt pnt=tab+cnt4 RD (ch1) WR (pnt) ADD pnt1 pnt++=ch1 RD (ch2) WR (pnt) ADD pnt1 pnt++=ch2 RD (ch3) WR (pnt) ADD pnt1 pnt++=ch3 RD (ch4) WR (pnt) pnt =ch4 RD cmd SUB 1 JZ t9 SUB 1 JZ t2 SUB 1 JZ t3 SUB 1 JZ t4 SUB 1 JZ t5 SUB 1 JZ t6 JR t7 t2 RD (trg) SUB th JGE t9 ADD cmd1 JR t9 wait trgltth t3 RD (trg) SUB th JLE t9 JR t6 wait trggtth t4 RD (trg) SUB th JLE t9 ADD cmd1 JR t9 wait trggtth t5 RD (trg) SUB th JGE t9 JR t6 wait trgltth t6 WR len0 WR cmd7 len=0cmd=7 t7 ADD len1 SUB tail JLT t9 WR cmd0 if ((++len)gt=0x80) cmd=0 t9 RET

與 DC 馬達控制相關的程式模組有以下 4個程式模組說明如下

(1)加減速控制模組 ACC_controlasm (2)光電盤輸入模組 POS_inputasm (3)PWM輸出模組 PWM_outputasm (4)PD控制模組 PD_controlasm

71加減速控制模組 此程式模組主要功能在於執行位置控制的加減速命令修正其數學模式採用 Lynn

濾波器的架構參見下圖

cmd

2

+

old Z -1

-

Z -1

Z -1

Z-1

Z-1x0 x1 x8 x9 x16

+ -

++

2

Z-1

Z-1 y1 y2

+

-

y0

+ +

sumZ-1

+164

12

out

dif

+

63

加減速控制模組方塊圖

其中

1Lynn 濾波器的階數固定成八階也就是 m=8其公式為 H(z) = (1-2Z-m+Z-2m)(1-2Z-1+Z-2)m2

2因為m=8所以m2=64因此最後計算低通濾波的部份時要先做除 64的運算 3因為低通濾波(lp)和 y0之間有 64倍的差異代表 y0y1y2的變化範圍比濾波器輸

入值要擴大許多例如輸入值在+-1000變化時y0y1y2很可能會在+-64000之間變化這範圍已經超出整數處理的範圍很可能會造成錯誤的計算結果

4所以在實驗時輸入值的變化範圍必須控制在+-500之間以保證計算的正確性 5對於 Lynn 濾波器當 m=8時其濾波器的頻寬固定為 1 kHzmdt也就是 dt=1時頻寬為 125 Hz dt=2時頻寬為 625Hz依此類推 6對於 Lynn 濾波器其濾波器的延遲固定為 m個抽樣週期因此設計 hp = x8 - lp 即可得到高通濾波器的對應結果 7其中乘 2和除 64的運算以移位運算取代所以整個程式中並無任何乘法運算 8Lynn 濾波器本身並不是穩定濾波器所以在程式啟動時必須確實的將所有狀態

(x0~x16)歸零否則會產生不穩定的狀態輸出

因為 Lynn濾波器中所有參數固定所以除了抽樣週期 dt 之外並無任何可調參數

抽樣週期 dt 可以控制頻寬dt 越大則濾波器頻寬越低

將步階命令值的輸出送入 Lynn 濾波器中經由低通濾波器的效應可以減緩命

令的變化程度達到加減速控制的目的以下為使用 Lynn 濾波器型式實現加減速控

制的組合語言程式列印 如欲更進一步瞭解 Lynn 濾波器與 FIR 數位濾波器之間的關係可以參考通訊實驗

四數位濾波器設計(FIR)中之說明

ACC_controlasm程式列印 local cmd R0 IP 輸入點位置命令

local out R1 OP 輸出點加減速處理後的位置命令

local dif R2 OP 輸出點位置微分命令

local axis R3 0 馬達編號0=X1=Y2=Z3=C

local old R4 內部變數微分計算用

local sumL R5 內部變數積分計算用

local sumH R6 內部變數積分計算用

local y0 R7 內部變數y(0~2)

local y1 R8 local y2 R9

local x0 R10 內部變數x(0~16)

local x1 R11 local x2 R12 local x3 R13 local x4 R14

local x5 R15 local x6 R16 local x7 R17 local x8 R18

local x9 R19 local x10 R20 local x11 R21 local x12 R22

local x13 R23 local x14 R24 local x15 R25 local x16 R26

64

data 27 模組變數區長度

initial 開機啟動程序

WR dif0 RD (cmd) WR out WR old dif=0 out=old=cmd

sumHL=cmd64

SFL 6 WR sumL RD out SFR 10 SGN 5 WR sumH

RPT 17 WR x00 RPT 3 WR y00 RET x[0~16]=0y[0~2]=0

timer 即時控制程序

RD (cmd) SUBX old WR x0 x0=cmd-old old=cmd

SUB x81 ADD x16 ADD y11 SUB y2 WR y0 y0=x0-2x8+x16+2y1-y2

SGN ADD sumL WR sumL RDH ADC sumH WR sumH sumHL+=y0

WRH RD sumL SFR 6 WR out out=sumHL64

RD y0 SGN SFR WR dif dif=y032mm

RD x0 RPT 16 RDX x1 x[i]=x[i-1] i=1~16

RD y0 RDX y1 WR y2 y[i]=y[i-1] i=1~2

b9 RET

72光電盤輸入模組

DC馬達的位置由光電盤量測之預設儲存於 0xac與 0xbe二個輸入埠位址中其中位址 0xac記錄 X軸馬達的位置位址 0xbe記錄 Y軸馬達的位置由於本實驗的DC馬達接在 Y軸的位置上因此程式中直接選用 Y軸的輸入 光電盤位置輸入的程式列印如下其中速度由位置的差分而得至於馬達的位置

則使用內部 2個 word加以記錄精度為 32位元 POS_inputasm程式列印 local spd R0 OP 輸出點速度量測值

local ang R1 OP 輸出點角度量測值

local angH R2 內部變數角度的 32 位元部分

local mode R3 0x308 模式選擇15MHzAB 相正反向輸入

local pht R4 0xac 輸入阜地址光電盤輸入(0xac)

local phtc R5 0xbe 輸入阜地址光電盤模式(0xbe)

local old R6 內部變數速度更新用

data 7 模組變數區長度

initial 開機啟動程序

RD mode WR (phtc) phtc=mode

RD (pht) WR old WR spd0 RET old=phtspd=0

timer 即時控制程序

RD (pht) SUBX old SGN 11 WR spd spd=(pht-old)old=pht

65

ADD ang WR ang angHL+=spd

RDH ADC angH WR angH

RET

73 PWM輸出控制模組 模組方塊

cmd PWM輸出

程式說明 1在開機時將切換保護時間寫到輸出阜 0xbc上其中切換保護值為 0~6360=5us 2在每次 timer interrupt時將 cmd訊號處理後寫到輸出阜 0xb8上

PWM_outputasm程式列印 local cmd R0 IP gnd 輸入點v相命令

local gain R1 4096 參數輸出增益1=4096

local bias R2 2048 參數輸出偏壓0=2048

local limit R3 4095 參數輸出極限1=4095

local zone R4 0x88f0 參數頻率=12KHz切換保護=5us

local pwm R5 0xb8 輸出阜地址PWM0 輸出(0xb8)

local mode R6 0xbc 輸出阜地址PWM 模式(0xbc)

local p0md R7 0xf8 輸出阜地址port0 模式(0xf8)

local gnd R8 0 輸入接地點

data 9 模組變數區長度

initial 開機啟動程序

RD bias WR (pwm) pwm=bias

RD 0xffff WR (p0md) set port0 mode

RD zone WR (mode) RET mode=zone

stop 關機保護程序

RD bias WR (pwm) RET pwm=bias

timer 即時控制程序

RD (mode) xor 1 and 1 WR (mode) trigger watch-dog

RD (cmd) MUL gain SFR 12 ADD bias ACC=(cmdgain4096)+bias

MAX 0 MIN limit WR (pwm) pwm=limit(ACC)

RET

66

74 PD 控制模組

PD控制的模組方塊參見圖二十一所示其中比例控制的部份直接由增益 kp加以調整微分控制的部份則由誤差的差分經增益 kd的調整而得

Σ+

-

cmd

fdk

err out

Σ

pk

dk

Σ

+

+

+

-

old1minusZ

PD控制器的方塊圖

PD_controlasm程式列印 local cmd R0 IP gnd 輸入點位置命令(可忽略)

local fdk R1 IP gnd 輸入點位置回授(可忽略)

local out R2 OP 輸出點用以控制速度迴路

local kp R3 256 參數增益 kp10=256

local kd R4 0 參數增益 kd10=256

local err R5 0 內部變數

local old R6 0 內部變數

local gnd R7 0 無輸入時的短路點

data 8 模組變數區長度

initial 開機啟動程序

WR out0 WR old0 RET out=old=0

timer 即時控制程序

RD (cmd) SUB (fdk) PRTF WR err

MUL kp SFR 8 P=(cmd-fdk)kp256

RDS err SUBX old MUL kd SFR 8 D=(err-old)kd256

ADDS

WR out out=P+D

RET

程式中預設增益值的 10以整數值 256為基底因此使用 SFR 8的指令加以調

整另外在在計算微分項的程式部份用到 SUBX old的指令其詳細的暫存器動作如

下 參考 piDSP的指令說明SUBX指令將總共用到 3個時序參考錯誤 找不到參照

67

來源在時序 1時將原先 AX的資料拷貝一份到 HX中時序 2時正式執行減

法的動作所以 AX暫存器中的內容會變成 err-old時序 3時DSP會將存放在 HX暫存器中的內容拷貝一份到 old的記憶體中也就是經由 SUBX此一精簡指令將

同時完成計算差分所需要的相減與資料疊代的動作有效的利用 piDSP控制器 DSP核心的精簡指令將可以大幅提昇系統的計算速度

HX AXoldSUBXerr err

old

err

errerr olderr minus

1_err

errerr olderr minus err

1_err

1

2

3

SUBX的指令時序與暫存器變化

68

8附錄快速安裝說明

光纖網路通訊 FPGA 發展系統 (適用於 WIN-XP200098 系統)

快速安裝說明

26Pin 負載輸出入埠

雙電源︵5

12

伏︶輸入埠

單電源︵5

伏︶輸入埠

USB

光纖線輸

號 光纖線輸出埠

入 傳 埠

首先將光碟片 RFFPGA 目錄檔案拷貝在您工作硬碟裡面

第一次安裝時先將 USB 傳輸線接上電腦主機將電源供應器接上 FPGA 模組此時電

腦會出現安裝 USB-Serial 驅動程式選擇從清單安裝此驅動程式放置在光碟片

RFFPGA-USBdrive 選擇您目前安裝系統

可選擇 WIN-98WIN-MEWIN-2000WIN-XP 系統配合您現在工作電腦作業系統

69

注意一般電腦 USB 埠很多插口當您安裝驅動程式時是配合您當時插入之埠

下次如您插入不同接口埠時電腦會再次要求安裝驅動程式這是正常現象請再次安

裝驅動程式否則無法使用

FPLC 操作

首先進入 RFFPGA裡子目錄 testASM直接點選 fPLCexe 出現下面操作畫面(也可直接將

此檔案放置桌面直接點選)

(或者選擇 File 再執行 Setuphellip 選擇您要執行 CAI 檔)

70

進入下面操作畫面 首先使用滑鼠在 FPGA下載按鈕單擊動作使 FPGA變成 DSP晶片 實驗一至實驗五皆為使用 DSP組合語言設計程式其原始程式分別為 testASM1至testASM5可使用 texPad 開啟與編輯程式內容 實驗三與實驗五多有 IO控制動作 當選擇實驗三時出現下面畫面

71

eM_USB 模組

數字型 LED

0 1 2 34 5 6 78 9 A BC D E F

燈號型 LED

44 鍵盤

ADC0 ADC1 DAC0 DAC1

LED 選擇KEY 選擇

模 式 1

0123

注意操作畫面 3與 4 說明開關與按鍵選擇位置後選擇程式下載再按程式啟動如您

按下 0-3按鍵時燈號型 LED會有不同方向閃爍顯示程式停止時結束所有 IO控制動作再按回首頁選擇其他實驗 實驗四與實驗五

模式3

0 1 2 34 5 6 78 9 A BC D E F

按照上面開關選擇直接操作如果以上實驗皆能按照正常操作表示您光纖網路通訊

FPGA發展模組以能正常使用 注意 開機與關機動作順序如下

開機電腦啟動 --- eM_USB 模組電源接上 --- USB 接上電腦 ---

啟動 FPLC 軟體 --- 下載 FPGA 程式

關機關閉 FPLC 軟體 --- eM_USB 模組電源拔掉 --- 拔掉電腦 USB 接頭 ---關掉

電腦

如果以上順序有亂可能造成 USB 找不到驅動造成無法下載經過幾次測試還是

無法下載建議重新啟動電腦主機按照正確步驟操作

72

FPGA 下載操作

進入 FPLC 操作系統按照下列步驟選擇節點模組與下載 bit FPGA 檔案

在 VHDLDEMO 子目錄下您可以選擇您目前 FPGA 種類型號在此型號下我們已將 VHDL

與數位邏輯設計課本範例全部放於此處

73

光纖網路連線 FPGA 下載操作

首先利用光纖線將 eM_USB0 模組光纖輸出埠接至 eM_USB1 模組光纖輸入埠以此

類推最後再將最後 eM_USBN 模組光纖輸出埠接至 eM_USB0 模組光纖輸入埠配置

如附圖方式

個人電腦(Windows) eM_USB模組

0USB

eM_USB模組1

光纖網路

eM_USB模組2

eM_USB模組N

配置完成後進入 FPLC 系統首先必須先將 Node00 下載在 testASM 子目錄裡

piDSPv0bit 檔讓 eM_USB0 模組 FPGA 具備 DSP 功能才能執行光纖網路通訊

操作如下

此時您就可以選擇分別下載至各模組 FPGA 檔 bit

74

安裝 FPLC 注意事項

當您進入 FPLC 時

按 FILE 選擇 programhellip 選擇檔案為 exp_dcmplc 出現下面畫面

正常顯示畫面為

75

DOS 環境操作

在 PC 端的操作是在 Windows 環境中的 DOS 視窗中執行指令範例如下

eFPGA progNETbit 下載 FPGA電路至網路節點0(即 USB節點)中 eFPGA testLEDbit 1 下載 FPGA電路至網路節點1中

對於單一節點的控制程序如下

1將 eM_USB模組連結個人電腦的 USB端 2eM_USB模組開機 3執行下載指令即可 eFPGA xxxxbit 4若要更改 FPGA電路只要重新執行下載指令即可

對於多個網路節點的控制程序如下

1第一組 eM_USB模組連結個人電腦的 USB端再以光纖網路依序其他各節點 2連接 USB界面者為模組0從光纖發射端連接出去的模組為1依此類推 3將所有 eM_USB模組開機 4執行下載指令如下 eFPGA progNETbit 模組0必須先下載指定的 FPGA電路 eFPGA xxxxbit 1 再依序下載其他網路模組的 FPGA電路 eFPGA yyyybit 2 eFPGA zzzzbit 最後再重新下載模組0的 FPGA電路 5換句話說模組0必須先執行 progNETbit讓光纖網路接受 FPGA控制後才能透過光纖網路下載至其他節點等全部網路節點下載完畢後再將模組0的 FPGA重新下載讓模組0也可自由執行任意的 FPGA電路

6若要更改某一個網路節點中的 FPGA電路只要重新執行下述指令 eFPGA progNETbit 模組0必須先下載指定的 FPGA電路 eFPGA yyyybit 2 下載指定網路模組的 FPGA電路 eFPGA zzzz bit 最後再重新下載模組0的 FPGA電路 換句話說除非模組0中的 FPGA已經包括光纖網路管理電路否則一定要先在

模組0中下載網路管理電路後才能下載指定網路節點的 FPGA電路

76

光纖網路通訊 FPGA 發展系統

系統配置

光纖網路通訊 FPGA 發展系統的系統配置圖如下

個人電腦(Windows) eM_USB模組

0USB

eM_USB模組1

光纖網路

eM_USB模組2

eM_USB模組N

其中

1基本模組為 eM_USB模組可用 USB界面和個人電腦連線並提供 USB對光纖網路的轉換功能使得個人電腦可以獨立控制光纖網路中的每個網路節點

2eM_USB模組也可以作為光纖網路中的網路節點透過光纖網路而接受個人電腦的

監控 3就個人電腦而言不論是 USB界面直接連結或是以光纖網路間接連結的 eM_USB模組都是可以直接監控的網路節點最多可以同時控制一個 USB節點和 30個網路節點

4對於每一個網路節點個人電腦都可執行 eM_USB模組中 FPGA的電路下載工作並在適當的 FPGA電路配合下可執行 eM_USB模組中 FPGA內部電路的讀寫控制 5透過適當的 FPGA電路設計各網路節點都可透過光纖網路和其他任何網路節點

作同步通訊執行 FPGA內部記憶體的資料交換資料交換頻率可達 1KHz以上

77

網路模組配置

每個網路模組的標準配置圖如下

eM_USB模組光纖網路

USB eM_FPGA卡

eM_DEMO模組

eM_EXP實驗模組

DC電源

其中

1網路模組以 eM_USB模組為主提供基本的 USB界面和光纖網路連線 2eM_USB模組中的 FPGACPLD採用插卡型式可選擇不同的 eM_FPGA卡包括

eM_2V1K卡可選用 Virtex系列的 XC2V250和 XC2V1000 eM_3S1K卡可選用 Spartan3系列的 XC3S400XC3S1000和 XC3S1500 eM_3S50卡可選用 Spartan3系列的 XC3S50XC3S200和 XC3S400 eM_95XL卡可選用 9500XL系列的 XC95144XL和 XC95288XL 3eM_USB模組中的對外連線有兩種一種是 26P接頭用以連接既有的各種實驗模

組另一種是兩組 50P接頭將 FPGA中各接腳引出用以連接專題實驗 4eM_DEMO模組就是插上 50P接頭的教學模組其中包括 LED 數字顯示和 44鍵盤也具備兩組的 ADC和兩組的 DAC接頭提供類比訊號的測試工具

常用的實驗組合包括

1精簡組合包括(eM_USB+eM_FPGA)提供基本的網路節點適用於專題實驗 2標準組合包括(eM_USB+eM_FPGA+eM_DEMO)提供基礎 FPGA設計的教學實驗

3實驗組合包括(eM_USB+eM_FPGA+eM_DEMO+eM_EXP)提供進階的 FPGA實驗可依需求選用不同的實驗模組

78

eM_USB 模組

eM_USB 模組的電路配置圖如下

TxRx

DCPower

USB

JP2

JP3

光纖界面

外加電源

PC連線

JP1

eM_FPGA模組

FT232 CPLD FlashROM

SRAM

10cm

6cm

JP4

其中

1對外的連線接頭包括 DC電源 可選擇單電源(5V)或是多電源(5V+12V-12V)兩種 USB界面 直接連接個人電腦 光纖界面連接光纖網路 2實驗界面包括 JP1負責內部 CPLD的電路下載 JP2JP3兩組 50P的擴張用接頭 JP4 標準 26P接頭用以連接各種實驗模組 3內部的電路配置包括 A以 SO-DIMM接頭連接各種 eM_FPGA卡 B內附 EEPROMFlashROM和 SRAM提供 FPGA作應用測試 C以一顆 FT232BM作為 USB界面解碼而以一顆 CPLD作為光纖網路解碼 D提供各種 eM_FPGA卡的電路下載功能 4內附五顆 LED由上而下依序為 usbLED指示 USB界面的讀寫狀態 tstLED可由 FPGA電路自行定義 stsLED可由 FPGA電路自行定義 RxLED 可由 FPGA電路自行定義 TxLED 可由 FPGA電路自行定義

79

外部接腳定義

外部接頭的接點順序圖示如下

上視圖

JP11 9 JP4

126225

JP31

50249

JP21

50249

而各接頭的接點定義如下

JP1 JP4 JP2 JP3 1+33V 1+12V 2+12V 1 GND 2 GND 1 GND 2 GND 2GND 3 ADC 4 DAC 3POWER 4ALARM 3 +5V 4 +5V 3nc 5 yPB2 6 yPB3 5RxNET 6TxNET 5+12V 6+12V 4TCK 7 yPB1 6 yPB4 7RxUSB 6TxUSB 7-12V 6-12V 5nc 9 yPB0 10yPB5 9RxCAN 10TxCAN 9 ADC 10 DAC 6TDO 11yPB6 12yPB7 11P0D0 12P0D1 11P1D0 12P1D1 7TDI 13yGND 14yPC3 13P0D2 14P0D3 13P1D2 14P1D3 8nc 15yPC2 16yPC1 15P0D4 16P0D5 15P1D4 16P1D5 9TMS 17yPC0 18yPA0 17P0D6 18P0D7 17P1D6 18P1D7 19yPA1 20yPA2 19P0D8 20P0D9 19P1D8 20P1D9 21yPA3 22GND 21P0D10 22P0D11 21P1D10 22P1D11 23GND 24+5V 23P0D12 24P0D13 23P1D12 24P1D13 25+5V 26nc 25P0D14 26P0D15 25P1D14 26P1D15 27P2D0 28P2D1 27PxA0 28PxA1 29P2D2 30P2D3 29PxA2 30PxA3 31P2D4 32P2D5 31PxA4 32PxA5 33P2D6 34P2D7 33PxA6 34PxA7 35P2D8 36P2D9 35PxB0 36PxB1 37P2D10 38P2D11 37PxB2 38PxB3 39P2D12 40P2D13 39PxB4 40PxB5 41P2D14 42P2D15 41PxB6 42PxB7 43ADC0 44ADC1 43PxC0 44PxC1 45ADC2 46ADC3 45PxC2 46PxC3 47ADC4 48ADC5 47PxC4 48PxC5 49DAC0 50DAC1 49PxC6 50PxC7

80

eM_FPGA 模組

在各種 eM_FPGA 模組中FPGA 對外電路的標準配置圖如下

24576MHz

FlashROM

26PSRAM

EEPROM

mD[8]

yPA[4]

FPGACPLD

mA[19]mRDmWRmCSeeCKeeCSeeDIeeDO

光纖界面 RxNETTxNET

USB 界面 RxUSBTxUSBCLK24MPOWERALARM

LED

tstLEDstsLEDRxLEDTxLED

yPB[8]yPC[4]

ADCDAC

ADC[8]

實驗模組

ADC[2]

DAC[2]

xPA[4]

xPB[8]

xPC[4]

基礎實驗

其中

1FPGACPLD可以選擇下述幾種 XC2V250XC2V1000 採用 eM_2V1K模組其中 FPGA為 FG456包裝 XC3S400XC3S1000XC3S1500採用 eM_3S1K模組其中 FPGA為 FG456包裝 XC3S400XC3S1000XC3S1500採用 eM_3S1K模組其中 FPGA為 FG456包裝 XC3S50XC3S200XC3S400 採用 eM_3S50模組其中 FPGA為 TQ144包裝 XC95144XLXC95288XL 採用 eM_95XL模組其中 CPLD為 TQ144包裝 2採用 FG456包裝者可以控制所有的 IO界面 3採用 TQ144包裝者只是不能控制 RAM和 FlashROM而可以控制其他所有的界面 4所有 FPGA模組都可自由選擇由 USB界面或是由光纖界面下載電路但是 CPLD模組只能固定由 USB界面下載電路

5所有 FPGACPLD模組都可透過 26P接頭連接既有的各種實驗模組

81

FPGA 接腳對照表

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

mD0 XD6 mD0 A17 C13 -- -- mD1 XD7 mD1 B17 D12 -- -- mD2 XD8 mD2 C17 D11 -- -- mD3 XD9 mD3 D17 C11 -- -- mD4 XD10 mD4 E17 D10 -- -- mD5 XD11 mD5 E16 C10 -- -- mD6 XD12 mD6 E14 D9 -- -- mD7 XD13 mD7 E13 D7 -- -- mA0 XD14 mA0 D13 C7 -- -- mA1 XD15 mA1 C13 D6 -- -- mA2 XA0 mA2 V5 C3 -- -- mA3 XA1 mA3 U5 C4 -- -- mA4 XA2 mA4 Y2 D3 -- -- mA5 XA3 mA5 Y1 D4 -- -- mA6 XA4 mA6 V4 E3 -- -- mA7 XA5 mA7 V3 E4 -- -- mA8 XA6 mA8 W2 F3 -- -- mA9 XA7 mA9 W1 F4 -- -- mA10 XA8 mA10 T2 G6 -- -- mA11 XA9 mA11 T1 K3 -- -- mA12 XA10 mA12 R4 K10 -- -- mA13 XA11 mA13 R3 L3 -- -- mA14 XA12 mA14 R2 L4 -- -- mRD XRD mRD R1 D5 -- -- mWR XWR mWR P6 C6 -- --

POWER P0A0 POWER B4 B20 P1 P5 ALARM P0A1 ALARM A4 A19 P2 P6 RxNET P0A2 RxNET C4 B19 P4 P7 TxNET P0A3 TxNET C5 A18 P5 P9 RxUSB P0B0 RxUSB B5 A15 P6 P10 TxUSB P0B1 TxUSB A5 B15 P7 P11 RxCAN P0B2 RxCAN D6 A14 P8 P12 RxCAN P0B3 TxCAN C6 B14 P10 P13

CLK24M CLK24M CLK24M E12 B12 P124 P38

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

PWM0H P3A0 P0D0 E6 A8 P21 P23 PWM0L P3A1 P0D1 E5 B8 P23 P24 PWM1H P3A2 P0D2 C2 B6 P24 P25 PWM1L P3A3 P0D3 C1 A5 P25 P26 PWM2H P3A4 P0D4 D2 B5 P26 P27

82

PWM2L P3A5 P0D5 D1 A4 P27 P28 PWMenb P3A6 P0D6 E4 B4 P28 P30 PHT1Z P3A7 P0D7 E3 A3 P30 P31 PHT1A P3B0 P0D8 G2 C1 P31 P32 PHT1B P3B1 P0D9 G1 C2 P32 P33 PHT0A P3B2 P0D10 H5 D1 P33 P34 PHT0B P3B3 P0D11 J6 D2 P35 P35 AMP0 P3B4 P0D12 H4 E1 P36 P39 AMP1 P3B5 P0D13 H3 E2 P40 P40 AMP2 P3B6 P0D14 H2 F2 P41 P41 AMP3 P3B7 P0D15 H1 G1 P44 P43 eeSK P0C3 P1D0 C10 B9 P20 P22 eeCS P0C2 P1D1 D10 A9 P18 P21 eeDI P0C1 P1D2 F10 B10 P17 P20 eeDO P0C0 P1D3 E10 B11 P15 P19 ssCK P0B7 P1D4 E8 A11 P14 P17 ssCS P0B6 P1D5 E7 A12 P13 P16 ssDI P0B5 P1D6 A6 B13 P12 P15 ssDO P0B4 P1D7 B6 A13 P11 P14

ppCLK P3C0 P1D8 K4 G2 P46 P44 ppDIN P3C1 P1D9 K3 K1 P47 P45 TxD P3C2 P1D10 K2 K2 P50 P46 RxD P3C3 P1D11 K1 L1 P51 P48

tstLED P3C4 P1D12 L5 L2 P52 P49 stsLED P3C5 P1D13 L4 M1 P53 P50 RxLED P3C6 P1D14 L3 M2 P55 P51 TxLED P3C7 P1D15 L2 N1 P56 P52

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

xPA0 P2A0 P2D0 AA3 N2 P59 P53 xPA1 P2A1 P2D1 Y4 T1 P60 P54 xPA2 P2A2 P2D2 AA4 T2 P63 P56 xPA3 P2A3 P2D3 AB4 U2 P68 P57 xPC0 P2A4 P2D4 W5 V1 P69 P58 xPC1 P2A5 P2D5 Y5 V2 P70 P59 xPC2 P2A6 P2D6 AA5 W1 P73 P60 xPC3 P2A7 P2D7 AB5 W2 P74 P61

-- P2B0 P2D8 V6 Y1 P76 P64 -- P2B1 P2D9 V7 Y2 P77 P66 -- P2B2 P2D10 W6 AA3 P78 P68

mCS P2B3 P2D11 Y6 AB4 P79 P69 mA15 P2B4 P2D12 V9 AA4 P80 P70 mA16 P2B5 P2D13 V10 AB5 P82 P71 mA17 P2B6 P2D14 W10 AA5 P83 P74 mA18 P2B7 P2D15 Y10 AA6 P84 P75 CS0 P2C0 ADC0 AA10 AB8 P85 P76

83

SDIN0 P2C1 ADC1 AB10 AA8 P86 P77 CS1 P2C2 ADC2 U10 AB9 P87 P78

SDIN1 P2C3 ADC3 U11 AA9 P89 P79 SCLK P2C4 ADC4 V11 AB10 P90 P80 CS2 P2C5 ADC5 W11 AA10 P92 P81

SDOUT P2C6 ADC6 Y11 AB11 P93 P82 LDAC P2C7 ADC7 AA11 AA11 P95 P83

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

xPB0 P1A0 PxA0 M1 M3 P135 P85 xPB1 P1A1 PxA1 M2 M4 P132 P86 yPB2 P1A2 PxA2 M3 N3 P131 P87 yPB3 P1A3 PxA3 M4 N4 P130 P88 yPB1 P1A4 PxA4 M5 T4 P129 P91 yPB4 P1A5 PxA5 M6 T5 P128 P92 yPB0 P1A6 PxA6 N1 U3 P127 P93 yPB5 P1A7 PxA7 N2 U4 P125 P94 yPB6 P1B0 PxB0 U13 V3 P119 P95 yPB7 P1B1 PxB1 V13 V4 P118 P96 xPB2 P1B2 PxB2 W13 W3 P116 P97 xPB3 P1B3 PxB3 Y13 W4 P113 P98 xPB4 P1B4 PxB4 AA13 Y3 P112 P100 xPB5 P1B5 PxB5 AB13 Y4 P96 P101 yPC3 P1B6 PxB6 U12 Y5 P97 P102 yPC2 P1B7 PxB7 V12 W5 P98 P103 yPC1 P1C7 PxC0 AB17 W11 P108 P113 yPC0 P1C6 PxC1 AA17 Y11 P107 P112 yPA0 P1C5 PxC2 Y17 W10 P105 P111 yPA1 P1C4 PxC3 W17 Y10 P104 P110 yPA2 P1C3 PxC4 AB18 W9 P103 P107 yPA3 P1C2 PxC5 AA18 W8 P102 P106 xPB6 P1C1 PxC6 Y18 W6 P100 P105 xPB7 P1C0 PxC7 W18 Y6 P99 P104

84

eM_DEMO 模組

eM_DEMO 模組的電路配置圖如下

eM_USB 模組

數字型 LED

0 1 2 34 5 6 78 9 A BC D E F

燈號型 LED

44 鍵盤

ADC0 ADC1 DAC0 DAC1

LED 選擇KEY 選擇

其中

1eM_DEMO模組的基本功能包括 A將 xPAxPBxPC等 16個 IO訊號引出控制 LED和鍵盤電路 B將 ADDA訊號引出並放大成+-10V的工作範圍 2LED和鍵盤可以選擇三種模式由 LED和 KEY 兩組開關作選擇圖示如下

模式1

0123

模式2 模式3

0 1 2 34 5 6 78 9 A BC D E F

0123

3模式14鍵輸入並搭配 16點的 LED燈號顯示其中 16點 LED分別對映到 xPA[0~3]xPB[0~7]和 xPC[0~3] 4組按鍵分別對映到 xPC[0~3] 4模式24鍵輸入並搭配四個 7段式數字顯示其中 數字顯示由 xPA[0~3]作數字掃瞄而由 xPB[0~7]作 7段式 LED控制 4組按鍵 分別對映到 xPC[0~3] 5模式316鍵輸入並搭配四個 7段式數字顯示其中 數字顯示由 xPA[0~3]作數字掃瞄而由 xPB[0~7]作 7段式 LED控制 16組按鍵由 xPA[0~3]作鍵盤掃瞄而由 xPC[0~3]作鍵盤讀取 6根據VHDL與數位邏輯設計的章節其中 第 1章至 10章的實驗採用模式1而 第 11章實驗採用模式2而 第 12章之後的實驗都採用模式3

85

FPGA UCF 定義

eM_3S1K 模組

NET CLK LOC = B12

NET XAlt0gt LOC = N2

NET XAlt1gt LOC = T1

NET XAlt2gt LOC = T2

NET XAlt3gt LOC = U2

NET XBlt0gt LOC = M3

NET XBlt1gt LOC = M4

NET XBlt2gt LOC = W3

NET XBlt3gt LOC = W4

NET XBlt4gt LOC = Y3

NET XBlt5gt LOC = Y4

NET XBlt6gt LOC = W6

NET XBlt7gt LOC = Y6

NET XClt0gt LOC = V1

NET XClt1gt LOC = V2

NET XClt2gt LOC = W1

NET XClt3gt LOC = W2

NET YAlt0gt LOC = W10

JP4 接頭

NET YAlt1gt LOC = Y10

NET YAlt2gt LOC = W9

NET YAlt3gt LOC = W8

NET YBlt0gt LOC = U3

NET YBlt1gt LOC = T4

NET YBlt2gt LOC = N3

NET YBlt3gt LOC = N4

NET YBlt4gt LOC = T5

NET YBlt5gt LOC = U4

NET YBlt6gt LOC = V3

NET YBlt7gt LOC = V4

NET YClt0gt LOC = Y11

NET YClt1gt LOC = W11

NET YClt2gt LOC = W5

NET YClt3gt LOC = Y5

在光碟片中 RFFPGAVHDLDEMOBIT3S1K 裡有 VHDL 與數位邏輯設計書本範例原始檔與合成檔

86

eM_3S50 模組

NET CLK LOC = P124

NET XAlt0gt LOC = P59

NET XAlt1gt LOC = P60

NET XAlt2gt LOC = P63

NET XAlt3gt LOC = P68

NET XBlt0gt LOC = P135

NET XBlt1gt LOC = P132

NET XBlt2gt LOC = P116

NET XBlt3gt LOC = P113

NET XBlt4gt LOC = P112

NET XBlt5gt LOC = P96

NET XBlt6gt LOC = P100

NET XBlt7gt LOC = P99

NET XClt0gt LOC = P69

NET XClt1gt LOC = P70

NET XClt2gt LOC = P73

NET XClt3gt LOC = P74

NET YAlt0gt LOC = P105

JP4 接頭

NET YAlt1gt LOC = P104

NET YAlt2gt LOC = P103

NET YAlt3gt LOC = P102

NET YBlt0gt LOC = P127

NET YBlt1gt LOC = P129

NET YBlt2gt LOC = P131

NET YBlt3gt LOC = P130

NET YBlt4gt LOC = P128

NET YBlt5gt LOC = P125

NET YBlt6gt LOC = P119

NET YBlt7gt LOC = P118

NET YClt0gt LOC = P107

NET YClt1gt LOC = P108

NET YClt2gt LOC = P98

NET YClt3gt LOC = P97

在光碟片中 RFFPGAVHDLDEMOBIT3S200 裡有VHDL與數位邏輯設計書本範例原始檔與合成檔

87

eM_95XL 模組

NET CLK LOC = SPIN38

NET XAlt0gt LOC = SPIN53

NET XAlt1gt LOC = SPIN54

NET XAlt2gt LOC = SPIN56

NET XAlt3gt LOC = SPIN57

NET XBlt0gt LOC = SPIN85

NET XBlt1gt LOC = SPIN86

NET XBlt2gt LOC = SPIN97

NET XBlt3gt LOC = SPIN98

NET XBlt4gt LOC = SPIN100

NET XBlt5gt LOC = SPIN101

NET XBlt6gt LOC = SPIN105

NET XBlt7gt LOC = SPIN104

NET XClt0gt LOC = SPIN58

NET XClt1gt LOC = SPIN59

NET XClt2gt LOC = SPIN60

NET XClt3gt LOC = SPIN61

NET YAlt0gt LOC = SPIN111

JP4 接頭

NET YAlt1gt LOC = SPIN110

NET YAlt2gt LOC = SPIN107

NET YAlt3gt LOC = SPIN106

NET YBlt0gt LOC = SPIN93

NET YBlt1gt LOC = SPIN91

NET YBlt2gt LOC = SPIN87

NET YBlt3gt LOC = SPIN88

NET YBlt4gt LOC = SPIN92

NET YBlt5gt LOC = SPIN94

NET YBlt6gt LOC = SPIN95

NET YBlt7gt LOC = SPIN96

NET YClt0gt LOC = SPIN112

NET YClt1gt LOC = SPIN113

NET YClt2gt LOC = SPIN103

NET YClt3gt LOC = SPIN102

在光碟片中 RFFPGAVHDLDEMOSVF95288XL 裡有VHDL與數位邏輯設計書本範例原始檔與合成

檔案

88

eM_FPGA 模組

NET CLK LOC = E12

NET XAlt0gt LOC = AA3

NET XAlt1gt LOC = Y4

NET XAlt2gt LOC = AA4

NET XAlt3gt LOC = AB4

NET XBlt0gt LOC = M1

NET XBlt1gt LOC = M2

NET XBlt2gt LOC = W13

NET XBlt3gt LOC = Y13

NET XBlt4gt LOC = AA13

NET XBlt5gt LOC = AB13

NET XBlt6gt LOC = Y18

NET XBlt7gt LOC = W18

NET XClt0gt LOC = W5

NET XClt1gt LOC = Y5

NET XClt2gt LOC = AA5

NET XClt3gt LOC = AB5

NET YAlt0gt LOC = Y17

JP4 接頭

NET YAlt1gt LOC = W17

NET YAlt2gt LOC = AB18

NET YAlt3gt LOC = AA18

NET YBlt0gt LOC = N1

NET YBlt1gt LOC = M5

NET YBlt2gt LOC = M3

NET YBlt3gt LOC = M4

NET YBlt4gt LOC = M6

NET YBlt5gt LOC = N2

NET YBlt6gt LOC = U13

NET YBlt7gt LOC = V13

NET YClt0gt LOC = AA17

NET YClt1gt LOC = AB17

NET YClt2gt LOC = V12

NET YClt3gt LOC = U12

在光碟片中 RFFPGAVHDLDEMOBIT2V250 裡有VHDL與數位邏輯設計書本範例原始檔與合成檔

89

Page 14: RFFPGA 直流馬達實驗手冊juniortek.com.tw/program/manual/RF-DC-mal.pdf · em_demo模組 em_dcm 直流伺服馬達 dc電源 rffpga 系統的直流馬達實驗規劃 其中包括:

回授訊號的處理

精密的伺服馬達動作必須將馬達的位置和速度加以量測後再執行回授控制因此速

度和位置的量測是精密控制中必要的一環我們通常用光電寫碼器或數位尺來進行量測

工作

光電寫碼器(Photo-Encoder)俗稱光電盤是利用光電量測進行的非接觸式數位量測元

件其基本裝置如下

LED光源

光電晶體偵測

以 LED 或是其他光源來發光而用 AB 相的兩組光電晶體來偵測當圓盤隨著馬達作轉

動時光電晶體即可偵測到其移動狀態由於圓盤中的小孔呈等距排列其透光部分和

不透光部分呈 50對 50的比例當圓盤轉動時光電晶體端就可以偵測到下述訊號

光電盤訊號(A 相)

光電盤訊號(B 相)

正轉

其中

1偵測方波的頻率即對應於圓盤轉動的頻率也就是轉速 2偵測方波的個數即對應於圓盤轉過的孔數也就是轉角(相對角度) 3由於 AB相的兩組光電晶體在機械安裝上的角度不同使得讀出訊號也有 90 度的

差異如果馬達正轉則 A相超前如果馬達反轉則 B相超前

有了兩相的光電盤訊號只要能偵測其中的相位變化就可以分辨光電盤的正反轉運動

了例如正轉時的光電盤時序如下

14

光電盤訊號 (A 相 )

光電盤訊號 (B 相 )

正轉

微分訊號(A+)

微分訊號(A-)

微分訊號(B+)

微分訊號(B-)

正轉脈衝(CW)

其中

1針對 AB 兩相訊號作微分處理即可取得 A+A-B+B-的上緣微分和下緣微分 2將微分訊號和和原有的 AB相訊號作比較即可找出正轉脈衝 3計算正轉脈衝的頻率和個數即可取得馬達的速度和轉角 4如此得到的脈衝數將是原有 AB相頻率的四倍所以稱之為乘四解碼電路

同樣的如果針對光電盤的反轉時序一樣可以得出反轉訊號圖示如下

光電盤訊號(A相)

光電盤訊號(B相)

反轉

反轉脈衝(CCW)

其公式如下

CW lt= (A+ and not B) CCW lt= (A+ and B) or (A- and B) or (A- and not B) or (B+ and A) or (B+ and not A) or (B- and not A) or (B- and A)

整合光電盤回授的處理其系統方塊圖如下

數位濾波

D Q

CK

DLA

PHA

D Q

CK

DLB

PHB

CLK

乘四解碼電路

DIR

PLS

數位濾波

PA

PB

正反計數

CNT DB

RD

CS

包括

15

1首先利用簡單的數位濾波器將 AB項的雜訊排除 2接著利用延遲電路作微分處理並以乘四解碼電路解出轉動的脈波和方向 3最後利用正反計數器作計數並將計數值讀入匯流排

數位濾波器

光電盤的 AB 相訊號中如果產生雜訊干擾的現象會使得馬達轉角的計量上產生永久

性的累積誤差將造成控制上無法彌補的錯誤所以 AB 相訊號上的雜訊一定要盡力排

除下面是常用的數位濾波器設計範例

FILTER_A block -- digital filter for A signal CED0D1D2 STD_LOGIC begin process (CLK) -- sequential logic begin if CLKevent and CLK=1 then --CLK=gt1 trigger if CE=1 then --clock enable D2lt=D1 D1lt=D0 D0lt=PA --delay 3 clocks PHA lt= (D0 and D1 and D2) or ((D0 or D1 or D2) and PHA) end if end if end process -- combinational logic CE lt= CLK1M --15MHz clock end block FILTER_A 其中

1以 15MHz的頻率為控制基準 2利用延遲電路依序產生 D0D1D2的延遲訊號 3連續三個 1(D0D1D2 都是 1)定義為 1連續三個 0(D0D1D2 都是 0)定義為 0而其他不連續的 10 都定義為雜訊如此可將高頻的雜訊濾除

4但是相對的AB相訊號的最高頻率將限制為 250KHz(連續 3個 1和連續 3個 0)頻率過高的 AAB相訊號將被視為雜訊而不處理必須特別注意

正反轉的解碼和計數

依據前面的公式說明對映的 VHDL 程式範例如下

DECODER block signal DLADLB STD_LOGIC begin process (CLK) -- sequential logic begin if CLKevent and CLK=1 then --CLK=gt1 trigger DLAlt=PHA DLBlt=PHB --delay 1-clock end if end if

16

end process -- combinational logic DIR lt= (not PHA and DLA and not PHB) or ( PHA and not DLA and PHB) or (not PHB and DLB and PHA) or ( PHB and not DLB and not PHA) PLS lt= (not PHA and DLA) or (PHA and not DLA) or (not PHB and DLB) or (PHB and not DLB) end block DECODER 其中

1PHAPHB為經過雜訊濾波後的 AB相訊號而 DLADLB是其延遲訊號 2根據乘四解碼電路的公式取得 DIR和 PLS訊號其中 DIR用以控制計數器的正反向 PLS用以控制計數器的計數與否

所以接下去就是正反計數器的設計範例如下

COUNTER block signal Q STD_LOGIC_VECTOR(11 downto 0) begin process (CLKRESET) -- sequential logic begin if RESET=1 then --power-on reset Qlt=000000000000 --reset to 0 elsif CLKevent and CLK=1 then --CLK=gt1 trigger if PLS=1 then --clock enable if DIR=1 then Qlt=Q-1 --down counter else Qlt=Q+1 --up counter end if end if end if end process -- combinational logic CNT lt= Q --counter output end block COUNTER 其中

1這是標準的正反計數器架構在開機時自動復歸 2計數器的長度為 12-bit可依需要自行調整

DCM模組中的光電盤精度為每圈500格經過乘四解碼後相當於每圈2000格所以12-bit

計數器只能處理 2 圈的應用範圍絕對不夠在真正應用時一定要用軟體或硬體的方

式再擴張成 16-bit 或是 32-bit 的寬度來處理才行

17

3實驗項目

在直流伺服馬達控制系統中規劃五個實驗項目由系統首頁做選擇每項實驗操

作整個系統實驗組成由各項實驗項目 CAI 檔及各項實驗項目程式連結 PLC 檔結合而成茲表列如下

直 流 伺 服 實 驗 e x p _d c m c ai

開 環 路 電 壓 控 制

系 統 首 頁 實 驗 程 序

e x p _p w m c ai

開 環 路 速 度 控 制 e x p _s p ee d c a i

閉 環 路 位 置 控 制 e x p _a n gl e c a i

加 減 速 的 位 置 控 制 e x p _a c c c ai

正 弦 波 位 置 控 制 e x p _s i n c ai

C A I 圖 控 檔

直 流 伺 服 實 驗 開 環 路 電 壓 控 制

系 統 首 頁 實 驗 程 序

e x p _p w m p lc

開 環 路 速 度 控 制 e x p _s p ee d p l c

閉 環 路 位 置 控 制 e x p _a n gl e p l c

加 減 速 的 位 置 控 制 e x p _a c c p lc

正 弦 波 位 置 控 制 e x p _s i n p lc

e T T Y 批 次 檔

18

4安裝程序

31 將 RFFPGA中的程式拷貝至工作硬碟中進入 DC子目錄資料夾中其中包含下

列檔案

檔案 內容說明 mod SIN_wave MODPWM_wave MODIIR1_filter MODDAS4

MODPOS_inputMODPWM_outputMODACC_controlMODPD_controlMOD這些檔案是由 ASM重新編譯出由 testDCMmem所需執行模組檔

asm SIN_waveasmPWM_waveasmIIR1_filterasmDAS4asm POS_inDCMasmPWM_outDCMasmACC_conDCMasmPD_controlasm是各模組組合語言所設計 SOURCE檔

plc 為進行實驗所需的各批次檔 bit piDSPv0bit為下載到 FPGA的 BIT檔其功能為將 FPGA規劃成

具備 piDSP控制晶片功能提供直流伺服控制所需的控制程式

撰寫 testDCMsys 記載進行 DCM實驗時所需的模組 testDCMMEM 連結完成的 DSP執行檔用來進行 DCM實驗 testDCMvar 紀錄 DCM實驗時的參數對照表

在進行實驗前先將實驗所需的系統程式與模組程式分別說明加以說明系統所

需的程式模組由 testDCMsys 來描述程式列印如下

module fg1 PWM_wavemod 方波產生器

module fg2 SIN_wavemod 弦波產生器

module cn1 ACC_controlmod 加減速控制器

module cn2 PD_controlmod 比例微分控制器

module io1 POS_inputmod 位置和速度讀值

module io2 PWM_outputmod PWM 電壓輸出界面

module ft1 IIR1_filtermod 一階濾波器

module das das4mod 示波器資料蒐集

module io3 LEDKEYmod LEDKEY 界面

其中包括

1兩組波型產生器作為測試命令包括正弦波和方波 2兩組控制器提供包括加減速PD控制器的功能可依照實驗需求搭配使用 3兩組輸入輸出界面執行 PWM輸出和相位回授的界面處理 4一組低通濾波器作為電壓開迴路控制迴路和速度閉迴路控制的模擬使用 5DAS4mod是示波器專用的配合模組不論任何實驗都必須加入此模組 6Ledmod是四位數字七段顯示與 44矩陣按鍵模組

19

5執行程序

首先進入 RFFPGA 裡子目錄 DC直接點選 fPLCexe 出現下面操作畫面(也可直接將此檔

案放置桌面直接點選)

進入下面操作畫面

20

首先使用滑鼠在 FPGA下載按鈕單擊動作使 FPGA變成 piDSP晶片 如您撰寫組合語言時可使用 eASM按鈕 經編譯完成後產生MOD檔 如您撰寫系統連結程式時可使用 eLINK按鈕 經連結完成後產生MEM與VAR檔 點選實驗三後顯示如下 選擇程式下載再按程式啟動這時直流伺服馬達開始做位置控制在操控畫面放置 P 參數設定欄更改參數時馬達即時隨參數改變而產生不同響應 直接點選程式停止時結束所有控制動作再按回首頁選擇其他實驗

21

6實驗說明

下圖所示為直流馬達的控制系統方塊圖透過電流速度以及位置的回授再搭

配適當的控制器可建立完整的閉迴路控制系統在後面的實驗中將依此一系統方塊圖

逐步建立速度和位置的控制實驗各實驗的說明和操作方式及參考實驗結果將逐一進

行詳細的說明

控制

參考位置

速度 位置速

度控制 電流控制

電力電

子換流

位置速

度感測

i

+ -

壓ν

位置

速度

i

DC直流馬達之控制系統方塊圖

PWM 驅動方式只是簡單的開環路控制而高精度的馬達控制必須透過回授控制來完成

對於邏輯電路的設計者而言必須先瞭解基本的回授控制架構以便將來轉換成實用的

邏輯電路設計

設計說明

開環路特性

在電壓驅動的狀況下直流馬達開環路控制的示意圖如下

+-

22

如果換算成數學模式則轉換成下面的架構

+-Vc

R L

EMF

+

-

ITB

J

ω

其中

1其中的變數和參數包括 Vc 控制的電壓命令 R 電樞迴路的等效電阻 L 電樞迴路的等效電感 EMF電樞產生的反電動勢 i 電樞迴路中的電流 T 馬達所產生的扭力 J 馬達和負載的等效慣量 B 馬達和負載的等效摩擦力 ω 馬達所產生的速度 2所牽涉的物理公式包括 電壓迴路Vc = Ri + L(didt) + EMF 即電樞迴路中的電壓平衡 動力負載T = Bω + J(dωdt) 即扭力平衡 馬達特性T = Kti 所產生的扭力和電流成正比 電機特性EMF= Keω 所產生的電動勢和轉速成正比 其中新增的參數包括 Kt馬達的扭力常數 Ke馬達的反電動勢常數 3將微分項作拉式轉換(Laplase Transformation)的對映即 s = ddt 可將微分方程式轉換成更簡單的代數方程式而產生到下面的控制方塊圖

sL+R1Vc

+-EMF

iKt

TsJ+B1 ω

Ke

4在直流馬達的開環路特性中控制電壓(Vc)時輸入點而馬達轉速(ω)是輸出點即是控制馬達電壓以控制馬達轉速

5基本上馬達的開環路特性是個兩階系統類似於低通濾波器的特性在許多應用 場合其開環路特性還可以再簡化成一階系統方塊圖如下

23

sτ +1

KmVc ω 其中 τ一階系統的時間常數 Km一階系統的穩態增益

採用兩階系統的分析方式雖然會比較精細但是用一階系統來分析則可簡化所有的設計

過程因為這裡的實驗重點是邏輯設計所以在本章中我們都用一階系統作分析

系統響應的要求

就控制系統而言最重要的需求就是系統響應包括

穩態特性通常以穩態誤差為指標即是穩態時系統輸出和輸入之間的差異 暫態特性通常以上升時間(Rise Time)和過越比率(Overshoot)為指標

一個理想中的伺服控制系統其系統響應應該是

1穩態誤差為 0即馬達輸出將追隨輸入作變化沒有誤差 2過越比例為 0即馬達輸出絕對不會產生衝過頭的現象 3上升時間為 0即馬達輸出隨時追上輸入命令不會有控制上的延遲現象

當然這是太理想了一個合理的伺服控制系統應該是

1穩態誤差越小越好最好為 0 2過越比例越小越好最好為 0 3上升時間越短越好當然無法為 0但是盡力就是了

速度的回授控制

回授控制的目的就是為了改善系統響應以一階系統代表的馬達控制為例

sτ+1

KmVc ω

在步階響應(Step Response)時其特性如下

1穩態誤差由 Km決定 2過越比例為 0 3上升時間即是其時間常數(τ)

如果用比例控制器(P 控制器)作速度回授的控制則控制方塊圖如下

sτ+1

KmVc ωKp

err

P控制器 直流馬達ωc

速度回授

速度命令 + 速度響應-

24

其中

1速度命令並不直接控制馬達的驅動電壓而是 A將速度命令和速度回授相比找出其誤差訊號 err B依誤差訊號來控制驅動電壓 誤差越大則驅動電壓越高 誤差越小則驅動電壓越低 誤差為負則驅動電壓也為負 其中的比例關係由 P控制器中的 Kp 來調整 2經由數學分析後其步階響應的特性為 A穩態誤差變成 1(1+kpkm)如果 kpkmgtgt1則穩態誤差將趨近於 0 B過越比例仍為 0 C上升時間即是由τ變成τ(1+kpkm)所以上升時間將變短 3換句話說只要 Kp值夠大不論是穩態誤差或是上升時間都會大幅改善

理論上P控制器的增益是越高越好最好是無限大但是實際上是有限制的原因是

1馬達的開環路特性是兩階系統而非一階系統一階系統只是簡化後的結果 2當兩階系統作高增益的回授控制時當增益過高時會產生極嚴重的過越現象使得

馬達產生巨幅震動而難以控制

所以 P控制器的增益雖然是越高越好但調整時仍要小心維持(過越比例為 0)的條件

轉角的回授控制

做為馬達的速度控制P控制器的效果不錯但是如果將 P控制器應用到馬達的轉角控

制其特性就不太理想圖示如下

sτ+1

KmVc ωKp

err

P控制器 直流馬達

θc

轉角回授

轉角命令 + 轉角響應-

s1 θ

其中

1從馬達的速度到轉角之間具有積分特性即 馬達的轉角是馬達速度的積分結果而 馬達的速度是馬達轉角的微分結果而 2其中的積分特性使得整個系統由一階特性變成兩階特性在兩階系統中當設定高

增益時會產生極嚴重的過越現象使得馬達產生巨幅震動而難以控制 3在 P控制器增益無法提高的狀況之下轉角控制效果將無法獲得改善

雖然 P控制器在轉角控制上的效果並不好但是在控制系統中還是有許多法寶可以選擇

25

其中 PD 控制器就是簡單又有效的一個好方法

從表面上來看PD 控制器比 P控制器多了一個微分項就數學上來看這微分項提供了

一個新零點(Zero)可以調整根軌跡圖的走向就實驗上來說這微分項提供了控制器

的預測功能說明如下

sτ+1

KmVc ωKp+sKd

err

P控制器 直流馬達

θc

轉角回授

轉角命令 + 轉角響應-

s1 θ

1轉角控制中 P控制器的問題是在嚴重的過越現象原因是在 P控制器的作用下只有當回授超過命令時才能做出「負向」的控制但這時已經來不及了因為積分器

中已經累積了過多的能量而無法立刻消失使得馬達轉角衝過了頭 2解決之道就是在回授超過命令之前就必須做出「負向」的控制使得積分器累積

的能量逐步減弱在到達目標時才能立刻煞車才能解除過越現象 3而微分項就是這個預測量因為當誤差量越來越小時其微分項是負值雖然微分

項(D)是負值 當誤差量(P)很大時(P+D)的結果還是正值所以還是「正向」控制 當誤差量(P)漸小時(P+D)的結果變成負值才會開始「負向」控制 換句話說在誤差為 0之前即可啟動負向控制產生煞車作用使得馬達提前減速

而即時停止在目標點上自然就解除過越現象了

所以在 PD 控制器中有兩項調整量其中

1Kp增益提供比例控制部分的增益而 Kd增益提供微分控制部分的增益 2Kp增益控制馬達的趨近速度主要影響的是上升時間 3Kd增益控制馬達的提前煞車主要影響的是過越比例 4在兩者搭配下就有機會得到 很快很短的上升時間同時也 不會產生過越現象

PD 控制器的執行

依據 PD 控制器公式可以建立以數位執行的 PD 控制器如下圖所示

cmdKp

fdk

+

-

err

old

+-

Kd

Z-1

out+

+

26

其中

1利用差分公式來取代 PD控制器中的微分公式定義如下 s ==gt (1-Z-1)DT 其中對映的變數包括 s 微分項 Z-1延遲一個抽樣週期 DT抽樣週期單位為 sec 2就執行面而言Z-1是延遲一個抽樣週期也就是以抽樣週期所控制的暫存器 3在上圖中將命令(cmd)和回授(fdk)相減後得到誤差值(err)再將 err延遲一個抽樣週期成為 old所以(err-old)DT即是微分項

4原始的微分控制公式為(err-old)DTKd必須先除再乘但是因為 DT和 Kd 都是常

數可以預先將 Kd修正成 Kd=(KdDT)那麼公式將修正為(err-old)Kd就只需要一個乘法而不需要除法了

同樣的 PD 控制器可以用許多不同的方法作執行包括

1以軟體方式執行例如在 DSP核心中以組合語言撰寫控制模組 2以硬體方式執行例如在 FPGA中直接設計邏輯電路 3以微碼方式執行以微碼作順序控制執行硬體運算工作

這裡先提供用組合語言撰寫的程式模組作為設計參考其他兩種方法將在後續的實驗中

再陸續作說明

模組程式範例PD_controlasm

local cmd R0 IP gnd 輸入點位置命令(可忽略) local fdk R1 IP gnd 輸入點位置回授(可忽略) local out R2 OP 輸出點用以控制速度迴路 local kp R3 256 參數增益 kp10=256 local kd R4 0 參數增益 kd10=256 local err R5 0 內部變數 local old R6 0 內部變數 local gnd R7 0 無輸入時的短路點 data 8 模組變數區長度 initial 開機啟動程序 WR out0 WR old0 RET out=old=0 timer 即時控制程序 RD (cmd) SUB (fdk) WR err MUL kp SFR 8 P=(cmd-fdk)kp256 RDS err SUBX old MUL kd SFR 8 D=(err-old)kd256 ADDS WR out out=P+D RET

27

其中

1PD控制模組中對外的界面變數包括 cmd命令的輸入點 fdk回授的輸入點 out控制的輸出點 2內部參數包括 Kp比例控制增益其中 10=256所以乘完後還需要再右移 8-bit Kd微分控制增益其中 10=256所以乘完後還需要再右移 8-bit 3內部變數包括 err臨時性的變數用以儲存誤差值的計算結果 old儲存性的變數用以儲存上一次抽樣控制時的 err值 4模組程式分成三部分包括 變數宣告local和data所宣告的部分 初值設定initial程序中先將 out和 old設定為 0 即時控制timer程序中依序執行 PD控制器中的每個步驟

控制目標的選擇

從字面上來看速度控制就是控制馬達的速度轉角控制就是控制馬達的轉角沒什麼

好討論的但是實際上確有許多問題第一的問題就是什麼是速度和轉角馬達的速

度和轉角如果不作量測如何得知

既然在量測中取得了速度和轉角資料那麼我們所控制的到底是物理學上的速度和轉

sτ+1

KmVc ωKp+sKd

err

P控制器 直流馬達

θc

轉角回授

轉角命令 + 轉角響應-

s1 θ

KxANG

轉角量測

角還是量測上的速度和轉角以下圖為例

其中

1以轉角量測裝置量測轉角例如裝在馬達軸端的光電盤和解碼電路 2轉角的量測輸出是 ANG而 ANG和物理轉角θ之間有 Km的增益關係 3只要 Km值不是 1那麼系統就不再是單位回授 4如果 Km還有非線性或失真現象那麼控制結果也將有非線性或失真現象

這些問題混雜起來會使得控制系統的分析變得更複雜如果要簡單處理就要認同現

實環境直接以量測結果為控制目標如下圖所示

28

sτ+1

KmVc ωKp+sKd

err

P控制器 直流馬達

θc

轉角回授

+-

s1 θ Kx

ANG轉角量測

其中

1直接以量測結果為控制目標將全系統還原成標準的單位回授控制 2所有的非線性或失真現象都進入開環路討論屬於可以補償的部分 3但是控制結果就是「量測上的轉角」而「物理學上的轉角」

量測誤差的問題

轉角θ

量測ANG

對於量測誤差而言最明顯的問題就是量化誤差圖示如下

其中

1以 DCM模組中的光電盤為例精度為每圈 500格經由乘四解碼計數後其等效

精度增加為每圈 2000格 2比(12000)圈更精密的部分都無法響應換句話說振幅越大的控制其相對誤差越

小而振幅越小的控制其相對誤差越大例如 當振幅為(12)圈時其控制誤差量為 01而 當振幅為(120)圈時其控制誤差量為 1 這是標準的的非線性現象

量化誤差不只影響穩態上的精度還會造成非線性的震動問題圖示如下

t

誤差值

+1

-1

其中

1由於量化誤差的問題只有當誤差超過+1或是-1時才會真正偵測到誤差也才

29

會施加控制量作補償 2所以穩態時的誤差將在+1-1之間擺動造成微幅的振動 3量化誤差越大震動越明顯而量化誤差很小時通常不易察覺出震動現象

微分量的計算

伺服系統中有兩處需要用到微分計算包括

1PD控制器中誤差微分量的計算 2速度控制器中速度回授值的量測

在理論上微分公式是(dXdt)相當於 dXdt = (X(n)-X(n-1))DT (當 DT趨近於 0時)

所以當微分計算中的抽樣週期(DT)越短時微分的計算值將越接近理論值但是事實上

卻非如此以下圖為例

t

X

DTDX

其中

1當 X值為等速度運動時其微分量就是其斜率相當於 DXDT 2DT是微分計算中的抽樣週期理論上越短越好但是由於 DX本身的量化誤差

使得這個原則不再成立例如當斜率為 7394時 若 DT=1000則 DX=7394而 DXDT=7394 若 DT=100 則 DX=739 而 DXDT=739 若 DT=10 則 DX=73 而 DXDT=73 若 DT=1 則 DX=7 而 DXDT=7 3換句話說當抽樣週期越短時DX的量化誤差將越明顯而造成微分計算上更嚴

重的誤差

在 DCM 模組中速度量測的量化誤差分析如下

1馬達上的光電盤精度為每圈 500格經過乘四解碼後等效精度為每圈 2000格 2當馬達轉速為 1200RPM而抽樣頻率為 1KHz時對映的速度量測值為 1200(圈分)2000(格圈)60(秒分)1000(DT秒) = 40(格DT) 3換句話說1200RPM的轉速對映到 40的速度量測值即速度單位=30RPM若最

高轉速為 3000RPM則在+-3000RPM的速度範圍內其量化誤差為 05相當於8-bit的 ADC轉換器精度

4對映不同的抽樣頻率的量化誤差表列如下

30

光電盤精度 最高轉速 抽樣頻率 速度單

速度範圍 量化誤差

500PPR 3000RPM 1KHz 30RPM +-100 05 500PPR 3000RPM 2KHz 60RPM +-50 1 500PPR 3000RPM 4KHz 120RPM +25 2

過溢現象的處理

輸入

輸出

32767

-32768

整數運算都有數值範圍限制以 16-bit 整數而言輸入輸出的關係如下

其中

1當超過正負數的上下限時數值會正負顛倒例如 +32768 將會視為 -32768作處理而 +32769 將會視為 -32768作處理依此類推 2換句話說16-bit的整數運算只有在+-32767之間是線性的對映關係而超過這個範圍就是非線性的對映關係

3不但如此還因為正負顛倒的現象使得原來設計的負回授控制將變為正回授控制

而產生非線性的震盪現象 4換句話說只要計算上稍一不慎就會使得原先穩定的系統產生不穩定的震盪結果

為了避免過溢現象所造成的不穩定問題通常控制系統中會利用飽和處理作改善圖示

如下

輸入

輸出

lmtH

lmtL

31

其中

1當超過計算的上限時將固定設為上限值處理而當超過計算的下限時也將固定

設為下限值處理 2這時的整數運算只有在上下限之間是線性的對映關係而超過這個範圍將還是非線

性的對映關係 3雖然如此但是因為沒有正負顛倒的現象所以不再會有負回授變為正回授的問題

而避免了非線性的震盪現象 4換句話說飽和處理是針對過溢現象的妥協處理方案雖然不完全理想但是是可

接受的最佳選擇

下面是對映的組合語言範例

RD x x為輸入端 MIN lmtH 取得 x和 lmtH中的較小值即是作上限保護的工作 MAX lmtL 取得 x和 lmtL中的較大值即是作下限保護的工作 WR y Y為輸出端 其中

1組合語言中提供MAX和MIN的計算其中 MIN lmtH 比較 AX暫存器和 lmtH而將較低值存入 AX暫存器中 MAX lmtL 比較 AX暫存器和 lmtH而將較高值存入 AX暫存器中 2所以直接可用MIN指令作上限保護而以MAX指令作下限保護兩者合併後即是

完整的飽和處理結果

飽和處理通常應用在高位數轉成低位數的場合例如32-bit轉換成16-bit或是16-bit

轉換成 12-bit 等等例如在本實驗中所有的運算都是以 16-bit 整數作處理但是到

PWM 驅動級輸出時卻要轉換成 12-bit精度的 PWM 命令所以必須先用飽和處理以避免

過溢現象造成的不穩定問題

32

61 實驗 1-開迴路的電壓控制 實驗說明以電壓直接控制轉速的開迴路特性可簡化為一階系統處理方塊圖如

sτ+1

v km ωm

其中V 送給驅動器的 PWM電壓命令

ωm馬達的轉動速度可由處理 photo encoder信號所得的位置微分而得 km一階系統的穩態增益 τ一階系統的時間常數即步階響應中的上升時間

為了觀測直流馬達的開環路特性建立下面的測試方塊圖

其中

1所使用的模組包括 FG1方波產生器產生所需的步階測試波形 FT1馬達模擬以一階系統的低通濾波器來執行 IO1光電盤的回授處理可同時取得轉角和速度的量測值 IO2PWM電壓驅動直接驅動直流馬達作控制 Led四位數字七段顯示模組顯示波形信號資料 2測試目標有兩項(P 參數設定欄)包括 A調整方波命令控制直流馬達作開環路的 PWM電壓控制 B調整馬達模擬參數使模擬結果和實驗結果相符以確認開環路特性

33

實驗畫面顯示如下

測試一 開環路的電壓控制 記錄頻道 CH1電壓命令Y1=-300DY=500 CH2模擬速度Y2=-100DY=500 CH3馬達速度Y3=100DY=50 CH4馬達轉角Y4=300DY=50000 實驗參數 FG1kAMP=256電壓命令的測試振幅 FG1kFRQ=150電壓命令的測試頻率 FT1DT =10 馬達模擬參數 FT1KA =500馬達模擬參數

其中

1用示波器功能記錄四個頻道其中 CH2和 CH3重疊顯示以比較模擬速度和量測

速度之間的差異 2由於 Km 不等於 1所以必須調整 CH3的 Y軸單位才能使得 CH2和 CH3的穩態響應部分重疊

3實驗時可以改變 FG1的參數以調整測試方波的振幅和頻率 4可以調整 FT1的參數使得 CH2和 CH3的暫態響應部分重疊

根據實際的測試結果分析如下

2馬達模擬的參數調整到 DT=10而 KA=500根據公式 τ = 40961000dtka 所以上升時間(τ)為 0082秒或是 82ms 3CH2CH3的 Y軸單位並不一致顯然 Km 不等於 1經計算確認 Km=0098

對應之 plc檔程式說明(exp_pwmplc) echo off 畫面顯示開始

run dsp 0 選擇 DSP1

run stop run reset 既有程式停止

run testDCMmem 下載指定程式

das 1 ampfg1out 0 1024 PWM 波形 Volt 設定 DAS 頻道1

das 2 ampft1lp 0 1024 馬達模擬 Volt 設定 DAS 頻道2

das 3 ampio1spd 0 1024 馬達速度 Volt 設定 DAS 頻道3

das 4 ampio1ang 0 1024 馬達角度 Volt 設定 DAS 頻道4

plot select 0 設定示波器頁數

plot xunit 100000 0 設定示波器 X軸

plot yunit 1 500 -300 設定示波器 Y1 軸

34

plot yunit 2 500 -100 設定示波器 Y2 軸

plot yunit 3 50 100 設定示波器 Y3 軸

plot yunit 4 50000 300 設定示波器 Y4 軸

plot trigger 1 0 1 10 設定示波器觸發

plot scope 9 1 2 3 4 設定示波器顯示

module io2 設定 io2 模組

s cmd ampfg1out

module fg1 設定 fg1 模組

s kAmp 256 s kFrq 150

module ft1 設定 ft1 模組

s u ampfg1out s dt 10 s ka 500

module io3 設定 io3 模組

s led ampfg1out

module 回復預設模組

run 1khz 設定抽樣頻率為 4KHz

run start DSP 開始執行

das stop pause 1 DAS 啟動 das start DAS 啟動

echo on 回復正常訊息顯示

使用者可視情況調整一階濾波器的 ka和 dt值使得 ch2和 ch3 兩組波形完全相符

以求得開迴路系統近似的一階轉移函數 CAI操控設計畫面規劃如下(EXP_PWMCAI) page 1 畫面設計

35

page 2 畫面設計 page 3 畫面設計

36

實測響應圖

訊 號 說 明 訊 號 說 明 ch1 方波產生器訊號 ch3 一階濾波器輸出信號 ch2 馬達角速度訊號 ch4 馬達角位置訊號

直流馬達之開迴路電壓控制響應圖

37

以邏輯分析功能觀測直流馬達之光電盤輸入與 PWM輸出信號

38

62 實驗 2-閉迴路的速度控制 實驗說明為了觀測閉迴路的速度控制響應建立下面的測試方塊圖

加入 PD控制後系統閉迴路的轉移函數經適度的簡化仍能約略以一階系統

處理方塊圖如下

sτ+1

u km ωm

其中

u 送給控制器的速度命令

ωm馬達的轉動速度可由處理 photo encoder 信號所得的位置微分而得

km一階系統的穩態增益 τ一階系統的時間常數即步階響應中的上升時間

方塊圖中的模組功能說明如下

1用 fg1 產生測試用的方波速度命令

2將方波速度命令和速度回授訊號送到 PD 控制器方塊中產生電壓控制訊號再透

過 io2 模組將訊號送出給伺服介面

3用 ft1 建立對照用的一階系統可用 IIR1濾波器方塊產生

4將方波命令產生速度命令再觀測 PHT(io1)上的速度值 spd

5調整 IIR1濾波器的參數使得兩組波形完全相符這時 IIR1濾波器就是閉迴路

速度控制的特性其中 km 為增益而τ為上升時間(單位為 sec)

6增益 km 可從示波器中作簡單計算而上升時間(τ=40964000dtka)

7 Led四位數字七段顯示模組顯示波形信號資料

39

對應之 plc檔程式說明(exp_speedplc) echo off 畫面顯示開始

run dsp 0 選擇 DSP1

run stop run reset 既有程式停止

run testDCMmem 下載指定程式

das 1 ampfg1out 0 1024 PWM 波形 Volt 設定 DAS 頻道1

das 2 ampft1lp 0 1024 馬達模擬 Volt 設定 DAS 頻道2

das 3 ampio1spd 0 1024 馬達速度 Volt 設定 DAS 頻道3

das 4 ampio1ang 0 1024 馬達角度 Volt 設定 DAS 頻道4

plot select 0 設定示波器頁數

plot xunit 100000 0 設定示波器 X軸

plot yunit 1 50 -300 設定示波器 Y1 軸

plot yunit 2 50 -100 設定示波器 Y2 軸

plot yunit 3 50 100 設定示波器 Y3 軸

plot yunit 4 50000 300 設定示波器 Y4 軸

plot trigger 1 0 1 10 設定示波器觸發

plot scope 9 1 2 3 4 設定示波器顯示

module io2 設定 io2 模組

s cmd ampcn2out

module fg1 設定 fg1 模組

s kAmp 50 s kFrq 150

module cn2 設定 cn1 模組

s cmd ampfg1out s fdk ampio1spd s kp 0x4000

module ft1 設定 ft1 模組

s u ampfg1out s dt 2 s ka 320

module io3 設定 io3 模組

s led ampfg1out

module 回復預設模組

run 1khz 設定抽樣頻率為 4KHz

run start DSP 開始執行

das stop pause 1 DAS 啟動 das start DAS 啟動

echo on 回復正常訊息顯示

CAI操控設計畫面規劃如下(EXP_speedCAI)

40

page 1 畫面設計 page 2 與 page 3 畫面設計與實驗一 page 2 與 page 3相同畫面 page 4 畫面設計

41

方塊的參數設定 使用者可視情況調整一階濾波器的 ka和 dt值使得 ch2和 ch3 兩組波形完全相符

以求得此一閉迴路系統近似的一階轉移函數或調整 PD控制器中的 kp和 kp值以調整系統之響應 實測響應圖

訊 號 說 明 訊 號 說 明 ch1 方波產生器產生之速度命令 ch3 一階濾波器輸出信號 ch2 馬達角速度訊號 ch4 馬達角位置訊號

42

直流馬達之閉迴路速度控制響應圖

43

63 實驗 3-閉迴路的位置控制 實驗說明為了觀測閉迴路的位置控制響應將直流馬達的回授改為位置訊號

建立下面的測試方塊圖 方塊圖中的模組功能說明如下

1用 fg1產生測試用的方波位置命令 2將方波位置命令和位置回授訊號送到 PD控制器方塊中產生電壓控制訊號再透過 io2模組將訊號送出到伺服介面驅動馬達轉動

對應之 plc檔程式說明(exp_angleplc) echo off 畫面顯示開始

run dsp 0 選擇 DSP1

run stop run reset 既有程式停止

run testDCMmem 下載指定程式

das 1 ampfg1out 0 1024 PWM 波形 Volt 設定 DAS 頻道1

das 2 ampft1lp 0 1024 馬達模擬 Volt 設定 DAS 頻道2

das 3 ampio1spd 0 1024 馬達速度 Volt 設定 DAS 頻道3

das 4 ampio1ang 0 1024 馬達角度 Volt 設定 DAS 頻道4

plot select 0 設定示波器頁數

plot xunit 100000 0 設定示波器 X軸

plot yunit 1 1000 -300 設定示波器 Y1 軸

plot yunit 2 1000 -100 設定示波器 Y2 軸

plot yunit 3 20 100 設定示波器 Y3 軸

plot yunit 4 1000 300 設定示波器 Y4 軸

plot trigger 1 0 1 10 設定示波器觸發

44

plot scope 9 1 2 3 4 設定示波器顯示

module io2 設定 io2 模組

s cmd ampcn2out

module fg1 設定 fg1 模組

s kAmp 1000 s kFrq 75

module cn2 設定 cn1 模組

s cmd ampfg1out s fdk ampio1ang s kp 0x300 s kd 0x4000

module ft1 設定 ft1 模組

s u ampfg1out s dt 2 s ka 320

module io3 設定 io3 模組

s led ampfg1out

module 回復預設模組

run 1khz 設定抽樣頻率為 4KHz

run start DSP 開始執行

das stop pause 1 DAS 啟動 das start DAS 啟動

echo on 回復正常訊息顯示

CAI操控設計畫面規劃如下(EXP_angleCAI) page 1 畫面設計

45

page 2 與 page 3 畫面設計與實驗一 page 2 與 page 3相同畫面 page 4 畫面設計與實驗二 page 4 畫面 方塊的參數設定 延續上一實驗的說明使用者可以調整 PD控制器中的 kp和 kd值以調整系統之

響應 實測響應圖

訊 號 說 明 訊 號 說 明 ch1 方波產生器產生之位置命令 ch3 馬達角速度訊號 ch2 馬達角位置 ch4 Pd控制器輸出之電壓訊號

46

直流馬達之閉迴路位置控制響應圖

47

64 實驗 4-加減速的位置控制 實驗說明為避免方波命令的過於嚴苛在方波命令的輸出加入一加減速控制功

能方塊以減緩命令變化的幅度增加馬達運動的平順建立的測試方塊圖如下

方塊圖中的模組功能說明如下

1用 fg1產生測試用的方波位置命令 2將方波位置命令送到加減速控制方塊處理後產生新的位置命令再將新的位置命

令與位置回授訊號送到 PD控制器方塊中產生電壓控制訊號最後透過 io2模組將訊號送出到伺服介面驅動馬達轉動

對應之 plc檔程式說明(exp_accplc) echo off 畫面顯示開始

run dsp 0 選擇 DSP1

run stop run reset 既有程式停止

run testDCMmem 下載指定程式

das 1 ampfg1out 0 1024 PWM 波形 Volt 設定 DAS 頻道1

das 2 ampcn1out 0 1024 加速控制 Volt 設定 DAS 頻道2

das 3 ampio1spd 0 1024 馬達速度 Volt 設定 DAS 頻道3

das 4 ampio1ang 0 1024 馬達角度 Volt 設定 DAS 頻道4

plot select 0 設定示波器頁數

plot xunit 100000 0 設定示波器 X軸

plot yunit 1 2000 -300 設定示波器 Y1 軸

plot yunit 2 2000 -100 設定示波器 Y2 軸

plot yunit 3 50 100 設定示波器 Y3 軸

plot yunit 4 2000 300 設定示波器 Y4 軸

48

plot trigger 1 0 1 10 設定示波器觸發

plot scope 9 1 2 3 4 設定示波器顯示

module io2 設定 io2 模組

s cmd ampcn2out

module fg1 設定 fg1 模組

s kAmp 2000 s kFrq 150

module cn1 設定 cn1 模組

s cmd ampfg1out

module cn2 設定 cn2 模組

s cmd ampcn1out s fdk ampio1ang s kp 0x300 s kd 0x4000

module ft1 設定 ft1 模組

s u ampfg1out s dt 2 s ka 320

module io3 設定 io3 模組

s led ampfg1out

module 回復預設模組

run 1khz 設定抽樣頻率為 4KHz

run start DSP 開始執行

das stop pause 1 DAS 啟動 das start DAS 啟動

echo on 回復正常訊息顯示

CAI操控設計畫面規劃如下(EXP_accCAI) page 1 畫面設計

49

page 2 畫面設計與實驗一 page 2相同畫面 page 3 畫面設計與實驗二 page 4相同畫面

參數設定參考之前各實驗的說明可線上機動性的調整 PD控制器中的 kp和 kd值以調整系統之響應 實測響應圖

訊 號 說 明 訊 號 說 明 ch1 方波產生器產生之位置命令 ch3 馬達角位置 ch2 加減速模組輸出之位置命令 ch4 馬達角速度訊號

50

圖一 直流馬達經加減速控制後之閉迴路控制響應圖

51

65 實驗 5-正弦波的位置控制 實驗說明在本實驗中改變命令的波形由方波改變為正弦波並建立如下的測

試方塊圖與上一實驗相比較僅更改命令的波形產生方塊 方塊圖中的模組功能說明如下 1用 fg2產生測試用的弦波位置命令 2將弦波位置命令送到加減速控制方塊處理後產生新的位置命令再與 io1 讀入的位

置回授訊號送到 PD 控制器方塊中產生電壓控制訊號再透過 io2 模組將訊號送出到伺服介面驅動馬達轉動

對應之 plc檔程式說明(exp_sinplc) echo off 畫面顯示開始

run dsp 0 選擇 DSP1

run stop run reset 既有程式停止

run testDCMmem 下載指定程式

das 1 ampfg2out 0 1024 SIN 波形 Volt 設定 DAS 頻道1

das 2 ampcn1out 0 1024 加速控制 Volt 設定 DAS 頻道2

das 3 ampio1spd 0 1024 馬達速度 Volt 設定 DAS 頻道3

das 4 ampio1ang 0 1024 馬達角度 Volt 設定 DAS 頻道4

plot select 0 設定示波器頁數

plot xunit 100000 0 設定示波器 X軸

plot yunit 1 2000 -300 設定示波器 Y1 軸

plot yunit 2 2000 -100 設定示波器 Y2 軸

plot yunit 3 50 100 設定示波器 Y3 軸

plot yunit 4 2000 300 設定示波器 Y4 軸

plot trigger 1 0 1 10 設定示波器觸發

52

plot scope 9 1 2 3 4 設定示波器顯示

module io2 設定 io2 模組

s cmd ampcn2out

module fg2 設定 fg1 模組

s kAmp 2000 s kFrq 100

module cn1 設定 cn1 模組

s cmd ampfg2out

module cn2 設定 cn2 模組

s cmd ampcn1out s fdk ampio1ang s kp 0x300 s kd 0x4000

module ft1 設定 ft1 模組

s u ampfg2out s dt 2 s ka 320

module io3 設定 io3 模組

s led ampfg2out

module 回復預設模組

run 1khz 設定抽樣頻率為 4KHz

run start DSP 開始執行

das stop pause 1 DAS 啟動 das start DAS 啟動

echo on 回復正常訊息顯示

CAI操控設計畫面規劃如下(EXP_sinCAI) page 1 畫面設計

53

page 2 畫面設計 page 3 畫面設計與實驗二 page 4相同畫面

方塊的參數設定可調整 PD控制器中的 kp和 kd值以調整系統之響應 實測響應圖

訊 號 說 明 訊 號 說 明 ch1 弦波產生器產生之位置命令 ch3 馬達角位置訊號 ch2 加減速模組輸出之位置命令 ch4 馬達角速度訊號

54

直流馬達之閉迴路弦波加減速位置控制響應圖

55

7組合語言說明

本節將針對 DC馬達伺服控制實驗專用的程式模組進行功能與程式碼的說明其

有關於波形產生器與資料擷取模組等說明如下

SIN_waveasm 正弦波產生器 PWM_waveasm 方波產生器 IIR1_filterasm 一階濾波器 DAS4asm 資料蒐集模組

弦波產生器

此模組會產生週期性的正弦波方塊圖如下

outfrq

kBiasbias

ampkAmp

kFrqth

kThf=1TB

θ

A

其中

1正弦波有四個參數振幅(A)頻率(F)相位(θ)和偏移(B)其公式為 out = A sin(2πF t +θ) + B 2對於單純的正弦波產生器所對映的參數包括 kAmp 振幅值 kFrq 頻率值kFrq=655368000Hz其中 Hz的範圍為 0~4000例如 1000Hz =gt frq=8192 100Hz =gt frq=819 10Hz =gt frq=82 1Hz =gt frq=8 kTh 相角值0~255代表 0~360的相位當 th=0 時為正弦波 th=64 時為餘弦波 th=128時為反相波依此類推 kBias偏移值 3對於可調變的正弦波產生器其對映的輸入點為 amp 控制振幅的輸入點可產生調幅(AM)波形 frq 控制頻率的輸入點可產生調頻(FM)波形 th 控制相位的輸入點可產生調相(PM)波形 bias控制偏移的輸入點可產生雙頻混波(相加)波形 4若不使用調變功能時各個輸入點時的預設值為 amp 指向 kAmp 的位址 frq 指向 kFrq 的位址

56

th 指向 kTh 的位址 bias指向 kBias的位址

模組程式範例SIN_WAVEasm

local amp R0 IP kAmp 輸入點sin波的振幅 local frq R1 IP kFrq 輸入點sin波的頻率 local th R2 IP kTh 輸入點sin波的相角 local bias R3 IP kBias 輸入點sin波的中心偏移 local out R4 OP 輸出點sin波輸出 local tab R5 TP 表格指標指向 sin[256]的表格 local ang R6 內部變數相位角65536=360deg local kAmp R7 1000 參數振幅值 local kFrq R8 1000 參數頻率值=655368000Hz local kTh R9 0 參數相角值360deg=256 local kBias R10 0 參數偏移值 data 11 模組變數區長度及初值 initial 啟動程序 WR ang0 WR out0 ang=out=0 RET timer 即時控制程序(8KHz) RD ang ADD (frq) WR ang ang+=frq SFR 8 ADD (th) AND 255 ACC=sin(ang256+th) ADD tab WRH RDM table-look-up MUL (amp) SFR 12 ADD (bias) WR out out=ACCamp4096+bias RET table tab 256 sin[256]表格區10=4096 0 101 201 301 401 501 601 700 00~070deg 799 897 995 1092 1189 1285 1380 1474 08~0F 1567 1660 1751 1842 1931 2019 2106 2191 10~17 2276 2359 2440 2520 2598 2675 2751 2824 18~1F 2896 2967 3035 3102 3166 3229 3290 3349 20~27 3406 3461 3513 3564 3612 3659 3703 3745 28~2F 3784 3822 3857 3889 3920 3948 3973 3996 30~37 4017 4036 4052 4065 4076 4085 4091 4095 38~3F 4096 4095 4091 4085 4076 4065 4052 4036 40~4790deg 4017 3996 3973 3948 3920 3889 3857 3822 48~4F 3784 3745 3703 3659 3612 3564 3513 3461 50~57 3406 3349 3290 3229 3166 3102 3035 2967 58~5F

57

2896 2824 2751 2675 2598 2520 2440 2359 60~67 2276 2191 2106 2019 1931 1842 1751 1660 68~6F 1567 1474 1380 1285 1189 1092 995 897 70~77 799 700 601 501 401 301 201 101 78~7F 0 65435 65335 65235 65135 65035 64935 64836 80~87180deg 64737 64639 64541 64444 64347 64251 64156 64062 88~8F 63969 63876 63785 63694 63605 63517 63430 63345 90~97 63260 63177 63096 63016 62938 62861 62785 62712 98~9F 62640 62569 62501 62434 62370 62307 62246 62187 A0~A7 62130 62075 62023 61972 61924 61877 61833 61791 A8~A8 61752 61714 61679 61647 61616 61588 61563 61540 B0~B7 61519 61500 61484 61471 61460 61451 61445 61441 B8~BF 61440 61441 61445 61451 61460 61471 61484 61500 C0~C7270deg 61519 61540 61563 61588 61616 61647 61679 61714 C8~CF 61752 61791 61833 61877 61924 61972 62023 62075 D0~D7 62130 62187 62246 62307 62370 62434 62501 62569 D8~DF 62640 62712 62785 62861 62938 63016 63096 63177 E0~E7 63260 63345 63430 63517 63605 63694 63785 63876 E8~EF 63969 64062 64156 64251 64347 64444 64541 64639 F0~F7 64737 64836 64935 65035 65135 65235 65335 65435 F8~FF

就程式結構而言說明如下

timer 即時控制程序(8KHz) RD ang ADD (frq) WR ang ang+=frq SFR 8 ADD (th) AND 255 ACC=sin(ang256+th) ADD tab WRH RDM table-look-up MUL (amp) SFR 12 ADD (bias) WR out out=ACCamp4096+bias RET

1基本上我們以查表法計算 sin()其輸入θ的範圍為 0~255對映到 0~360deg其輸出 sin(θ)的範圍為+-4096對映到+-10的範圍

2建立一個內部變數 ang其範圍為 0~65535對映到 0~360的相位角 3每個timer程序都執行 ang+=frq的動作更新目前的相位角接著依照 ang的相位角查表得到 sin(ang256+th)值

4由於表格長度為 256-word所以必須將 ang256才能得到正確的對映關係而 th範圍為 0~255所以不需要像 ang一般的做額外處理

5sin()的範圍為(+1-1)而在表格中以(+4096~-4096)的型式記錄相當於 10=4096所以執行 Asin()時還要用 SFR12指令做4096的動作才能正確的取得輸出值

58

6就頻率輸入 frq而言其計算原則是將θ=ωt轉化成θ=Σ(ωdt)因為抽樣頻率

為 8KHz所以 dt=18000而得到 frq=655368000Hz公式其中 Hz為真正的頻率在 8KHz的抽樣頻率下其範圍為 0~4000

鋸齒波產生器

此模組會產生週期性的鋸齒波方塊圖如下

outfrq

kBiasbias

ampkAmp

kFrqth

kThf=1TB

θ

A

其中

1鋸齒波也有四個參數振幅(A)頻率(F)相位(θ)和偏移(B)和正弦波的定義完全一致唯一的差異是其輸出為鋸齒波而非正弦波

2基本波形是從週期開始時為 0一直遞增到週期結束時到達最高點然後立刻回歸

到 0重新開始 3以程式結構而論鋸齒波程式幾乎就是正弦波的相位計算部分只差沒有正弦波的

查表處理而已

模組程式範例SAW_WAVEasm

local amp R0 IP kAmp 輸入點sin波的振幅 local frq R1 IP kFrq 輸入點sin波的頻率 local th R2 IP kTh 輸入點sin波的相角 local bias R3 IP kBias 輸入點sin波的中心偏移 local out R4 OP 輸出點sin波輸出 local ang R5 內部變數相位角65536=360deg local kAmp R6 1000 參數振幅值 local kFrq R7 1000 參數頻率值=655368000Hz local kTh R8 0 參數相角值360deg=256 local kBias R9 0 參數偏移值 data 11 模組變數區長度及初值 initial 啟動程序 WR ang0 WR out0 ang=out=0 RET timer 即時控制程序(8KHz) RD ang ADD (frq) WR ang ang+=frq SFR 8 ADD (th) AND 255 ACC=(ang256+th)amp0x00ff MUL (amp) SFR 8 ADD (bias) WR out out=ACCamp256+bias

59

RET

脈衝波產生器

outfrq

kBiasbias

ampkAmp

kFrqth

kThf=1TB

θ

A

pwm

kDutyduty

此模組會產生週期性的脈衝波方塊圖如下

其中

1脈衝波有五個參數其中振幅(A)頻率(F)相位(θ)和偏移(B)四個參數和正弦波

定義完全一樣另外再增加一個負載率(D) 2基本波形是從週期開始時為 1隔段時間後換為 0然後持續到週期結束再重新開始其中 1所佔有的比例就是負載率當 D=0時為 0而 D=255時為 100

3和其他參數類似負載率(D)以 duty為其輸入點而以 kDuty為其參數值

模組程式範例PLS_WAVEasm

local amp R0 IP kAmp 輸入點脈衝波的振幅 local frq R1 IP kFrq 輸入點脈衝波的頻率 local th R2 IP kTh 輸入點脈衝波的相角 local bias R3 IP kBias 輸入點脈衝波的中心偏移 local duty R4 IP kDuty 輸入點脈衝波的負載率 local out R5 OP 輸出點脈衝波輸出 local ang R6 內部變數相位角65536=360deg local kAmp R7 1000 參數振幅值 local kFrq R8 1000 參數頻率值=655368000Hz local kTh R9 0 參數相角值360deg=256 local kBias R10 0 參數偏移值 local kDuty R11 128 參數負載率100 =256 data 12 模組變數區長度及初值 initial 啟動程序 WR ang0 WR out0 ang=out=0 RET timer 即時控制程序(8KHz)

60

RD ang ADD (frq) WR ang ang+=frq SFR 8 ADD (th) AND 255 ACC=(ang256+th)amp0x00ff SUB (duty) RD (amp) JLT t1 RD 0 ACC=(amp0) t1 ADD (bias) WR out out=ACC+bias RET

IIR 一階濾波器

此模組執行一階的 IIR濾波器方塊圖如下

kau x

Z-1

+

+

-

+低通濾波器

高通濾波器dx lp

hp

濾波器參數的計算公式如下

1假設濾波器的頻寬為 hz則 ωn=hz628 2若系統頻率為 8KHz則抽樣週期 dT為 dT=dt8000 其中 dt為模組參數 3則濾波器參數為 ka=ωndT4096或是 =hzdt62880004096即 =hzdt32 4當 dt決定後所允許的訊號頻寬為(4000dt)換句話說訊號頻寬會因為 dt增加而下降

為了方便實驗的運用下面列出常用的參數對照表

濾波頻寬

(Hz)

10 20 50 100 200 500 1000 2000

訊號頻寬

(Hz)

400 800 2000 4000 4000 4000 4000 4000

模組參數 dt 10 5 2 1 1 1 1 1

模組參數 ka 320 320 320 320 640 1600 3200 6400

表格的運用方式如下

1首先決定濾波頻寬 2接著查表找出對映的參數 dt和 ka 3再查表得到對映的訊號頻寬以決定是否需要串接前級濾波器

61

模組程式範例IIR1_FILTERasm

local u R0 IP 輸入點濾波器輸入 local lp R1 OP 輸出點低通濾波器輸出 local hp R2 OP 輸出點高通濾波器輸出 local dt R3 1 參數抽樣週期 local ka R4 4096 參數增益 ka10=4096 local prd R5 內部變數抽樣週期用 data 6 模組變數區長度 initial 開機啟動程序 WR lp0 WR hp0 WR prd1 RET lp=hp=0prd=1 timer 即時控制程序 SUB prd1 JNZ b9 if (--prdgt0) return RD dt WR prd prd=dt RD (u) SUB lp WR hp hp=u-lp MUL ka SFR 12 ADD lp WR lp lp+=(hpka4096) b9 RET

資料蒐集模組

資料蒐集模組是一個非常特殊的模組專門配合 eTTY 程式中的示波器使用

模組程式範例DAS4asm

local cmd R0 0 紀錄命令0=停止1=前置記錄2=正觸發4=負觸發6=觸發記錄 local dt R1 1 抽樣週期每 dT抽樣一次 local tab R2 TP DAS表格啟始位址 local cnt R3 0 目前記錄點(0~255) local ch1 R4 0 定義頻道1的變數位址 local ch2 R5 0 定義頻道2的變數位址 local ch3 R6 0 定義頻道3的變數位址 local ch4 R7 0 定義頻道4的變數位址 local trg R8 0 定義觸發頻道的變數位址 local th R9 0 觸發準位 local tail R10 0 觸發後的抽樣個數 local buf R11 1 抽樣計數(1~dt) local pnt R12 表格位址計算pnt=tab+cnt4 local len R13 表格長度計算(0~256) data 14 定義模組變數區的長度 table tab 1024 定義表格的長度 initial 啟動程序 WR cmd0 RET cmd=0 timer 控制程序

62

ADD cmd0 JZ t9 if (cmd==0) return SUB buf1 JNZ t9 if (--buf)gt0) return RD dt WR buf dt=buf RD cnt ADD 1 AND 0xff WR cnt cnt=(cnt+1)amp0xff SFL 2 ADD tab WR pnt pnt=tab+cnt4 RD (ch1) WR (pnt) ADD pnt1 pnt++=ch1 RD (ch2) WR (pnt) ADD pnt1 pnt++=ch2 RD (ch3) WR (pnt) ADD pnt1 pnt++=ch3 RD (ch4) WR (pnt) pnt =ch4 RD cmd SUB 1 JZ t9 SUB 1 JZ t2 SUB 1 JZ t3 SUB 1 JZ t4 SUB 1 JZ t5 SUB 1 JZ t6 JR t7 t2 RD (trg) SUB th JGE t9 ADD cmd1 JR t9 wait trgltth t3 RD (trg) SUB th JLE t9 JR t6 wait trggtth t4 RD (trg) SUB th JLE t9 ADD cmd1 JR t9 wait trggtth t5 RD (trg) SUB th JGE t9 JR t6 wait trgltth t6 WR len0 WR cmd7 len=0cmd=7 t7 ADD len1 SUB tail JLT t9 WR cmd0 if ((++len)gt=0x80) cmd=0 t9 RET

與 DC 馬達控制相關的程式模組有以下 4個程式模組說明如下

(1)加減速控制模組 ACC_controlasm (2)光電盤輸入模組 POS_inputasm (3)PWM輸出模組 PWM_outputasm (4)PD控制模組 PD_controlasm

71加減速控制模組 此程式模組主要功能在於執行位置控制的加減速命令修正其數學模式採用 Lynn

濾波器的架構參見下圖

cmd

2

+

old Z -1

-

Z -1

Z -1

Z-1

Z-1x0 x1 x8 x9 x16

+ -

++

2

Z-1

Z-1 y1 y2

+

-

y0

+ +

sumZ-1

+164

12

out

dif

+

63

加減速控制模組方塊圖

其中

1Lynn 濾波器的階數固定成八階也就是 m=8其公式為 H(z) = (1-2Z-m+Z-2m)(1-2Z-1+Z-2)m2

2因為m=8所以m2=64因此最後計算低通濾波的部份時要先做除 64的運算 3因為低通濾波(lp)和 y0之間有 64倍的差異代表 y0y1y2的變化範圍比濾波器輸

入值要擴大許多例如輸入值在+-1000變化時y0y1y2很可能會在+-64000之間變化這範圍已經超出整數處理的範圍很可能會造成錯誤的計算結果

4所以在實驗時輸入值的變化範圍必須控制在+-500之間以保證計算的正確性 5對於 Lynn 濾波器當 m=8時其濾波器的頻寬固定為 1 kHzmdt也就是 dt=1時頻寬為 125 Hz dt=2時頻寬為 625Hz依此類推 6對於 Lynn 濾波器其濾波器的延遲固定為 m個抽樣週期因此設計 hp = x8 - lp 即可得到高通濾波器的對應結果 7其中乘 2和除 64的運算以移位運算取代所以整個程式中並無任何乘法運算 8Lynn 濾波器本身並不是穩定濾波器所以在程式啟動時必須確實的將所有狀態

(x0~x16)歸零否則會產生不穩定的狀態輸出

因為 Lynn濾波器中所有參數固定所以除了抽樣週期 dt 之外並無任何可調參數

抽樣週期 dt 可以控制頻寬dt 越大則濾波器頻寬越低

將步階命令值的輸出送入 Lynn 濾波器中經由低通濾波器的效應可以減緩命

令的變化程度達到加減速控制的目的以下為使用 Lynn 濾波器型式實現加減速控

制的組合語言程式列印 如欲更進一步瞭解 Lynn 濾波器與 FIR 數位濾波器之間的關係可以參考通訊實驗

四數位濾波器設計(FIR)中之說明

ACC_controlasm程式列印 local cmd R0 IP 輸入點位置命令

local out R1 OP 輸出點加減速處理後的位置命令

local dif R2 OP 輸出點位置微分命令

local axis R3 0 馬達編號0=X1=Y2=Z3=C

local old R4 內部變數微分計算用

local sumL R5 內部變數積分計算用

local sumH R6 內部變數積分計算用

local y0 R7 內部變數y(0~2)

local y1 R8 local y2 R9

local x0 R10 內部變數x(0~16)

local x1 R11 local x2 R12 local x3 R13 local x4 R14

local x5 R15 local x6 R16 local x7 R17 local x8 R18

local x9 R19 local x10 R20 local x11 R21 local x12 R22

local x13 R23 local x14 R24 local x15 R25 local x16 R26

64

data 27 模組變數區長度

initial 開機啟動程序

WR dif0 RD (cmd) WR out WR old dif=0 out=old=cmd

sumHL=cmd64

SFL 6 WR sumL RD out SFR 10 SGN 5 WR sumH

RPT 17 WR x00 RPT 3 WR y00 RET x[0~16]=0y[0~2]=0

timer 即時控制程序

RD (cmd) SUBX old WR x0 x0=cmd-old old=cmd

SUB x81 ADD x16 ADD y11 SUB y2 WR y0 y0=x0-2x8+x16+2y1-y2

SGN ADD sumL WR sumL RDH ADC sumH WR sumH sumHL+=y0

WRH RD sumL SFR 6 WR out out=sumHL64

RD y0 SGN SFR WR dif dif=y032mm

RD x0 RPT 16 RDX x1 x[i]=x[i-1] i=1~16

RD y0 RDX y1 WR y2 y[i]=y[i-1] i=1~2

b9 RET

72光電盤輸入模組

DC馬達的位置由光電盤量測之預設儲存於 0xac與 0xbe二個輸入埠位址中其中位址 0xac記錄 X軸馬達的位置位址 0xbe記錄 Y軸馬達的位置由於本實驗的DC馬達接在 Y軸的位置上因此程式中直接選用 Y軸的輸入 光電盤位置輸入的程式列印如下其中速度由位置的差分而得至於馬達的位置

則使用內部 2個 word加以記錄精度為 32位元 POS_inputasm程式列印 local spd R0 OP 輸出點速度量測值

local ang R1 OP 輸出點角度量測值

local angH R2 內部變數角度的 32 位元部分

local mode R3 0x308 模式選擇15MHzAB 相正反向輸入

local pht R4 0xac 輸入阜地址光電盤輸入(0xac)

local phtc R5 0xbe 輸入阜地址光電盤模式(0xbe)

local old R6 內部變數速度更新用

data 7 模組變數區長度

initial 開機啟動程序

RD mode WR (phtc) phtc=mode

RD (pht) WR old WR spd0 RET old=phtspd=0

timer 即時控制程序

RD (pht) SUBX old SGN 11 WR spd spd=(pht-old)old=pht

65

ADD ang WR ang angHL+=spd

RDH ADC angH WR angH

RET

73 PWM輸出控制模組 模組方塊

cmd PWM輸出

程式說明 1在開機時將切換保護時間寫到輸出阜 0xbc上其中切換保護值為 0~6360=5us 2在每次 timer interrupt時將 cmd訊號處理後寫到輸出阜 0xb8上

PWM_outputasm程式列印 local cmd R0 IP gnd 輸入點v相命令

local gain R1 4096 參數輸出增益1=4096

local bias R2 2048 參數輸出偏壓0=2048

local limit R3 4095 參數輸出極限1=4095

local zone R4 0x88f0 參數頻率=12KHz切換保護=5us

local pwm R5 0xb8 輸出阜地址PWM0 輸出(0xb8)

local mode R6 0xbc 輸出阜地址PWM 模式(0xbc)

local p0md R7 0xf8 輸出阜地址port0 模式(0xf8)

local gnd R8 0 輸入接地點

data 9 模組變數區長度

initial 開機啟動程序

RD bias WR (pwm) pwm=bias

RD 0xffff WR (p0md) set port0 mode

RD zone WR (mode) RET mode=zone

stop 關機保護程序

RD bias WR (pwm) RET pwm=bias

timer 即時控制程序

RD (mode) xor 1 and 1 WR (mode) trigger watch-dog

RD (cmd) MUL gain SFR 12 ADD bias ACC=(cmdgain4096)+bias

MAX 0 MIN limit WR (pwm) pwm=limit(ACC)

RET

66

74 PD 控制模組

PD控制的模組方塊參見圖二十一所示其中比例控制的部份直接由增益 kp加以調整微分控制的部份則由誤差的差分經增益 kd的調整而得

Σ+

-

cmd

fdk

err out

Σ

pk

dk

Σ

+

+

+

-

old1minusZ

PD控制器的方塊圖

PD_controlasm程式列印 local cmd R0 IP gnd 輸入點位置命令(可忽略)

local fdk R1 IP gnd 輸入點位置回授(可忽略)

local out R2 OP 輸出點用以控制速度迴路

local kp R3 256 參數增益 kp10=256

local kd R4 0 參數增益 kd10=256

local err R5 0 內部變數

local old R6 0 內部變數

local gnd R7 0 無輸入時的短路點

data 8 模組變數區長度

initial 開機啟動程序

WR out0 WR old0 RET out=old=0

timer 即時控制程序

RD (cmd) SUB (fdk) PRTF WR err

MUL kp SFR 8 P=(cmd-fdk)kp256

RDS err SUBX old MUL kd SFR 8 D=(err-old)kd256

ADDS

WR out out=P+D

RET

程式中預設增益值的 10以整數值 256為基底因此使用 SFR 8的指令加以調

整另外在在計算微分項的程式部份用到 SUBX old的指令其詳細的暫存器動作如

下 參考 piDSP的指令說明SUBX指令將總共用到 3個時序參考錯誤 找不到參照

67

來源在時序 1時將原先 AX的資料拷貝一份到 HX中時序 2時正式執行減

法的動作所以 AX暫存器中的內容會變成 err-old時序 3時DSP會將存放在 HX暫存器中的內容拷貝一份到 old的記憶體中也就是經由 SUBX此一精簡指令將

同時完成計算差分所需要的相減與資料疊代的動作有效的利用 piDSP控制器 DSP核心的精簡指令將可以大幅提昇系統的計算速度

HX AXoldSUBXerr err

old

err

errerr olderr minus

1_err

errerr olderr minus err

1_err

1

2

3

SUBX的指令時序與暫存器變化

68

8附錄快速安裝說明

光纖網路通訊 FPGA 發展系統 (適用於 WIN-XP200098 系統)

快速安裝說明

26Pin 負載輸出入埠

雙電源︵5

12

伏︶輸入埠

單電源︵5

伏︶輸入埠

USB

光纖線輸

號 光纖線輸出埠

入 傳 埠

首先將光碟片 RFFPGA 目錄檔案拷貝在您工作硬碟裡面

第一次安裝時先將 USB 傳輸線接上電腦主機將電源供應器接上 FPGA 模組此時電

腦會出現安裝 USB-Serial 驅動程式選擇從清單安裝此驅動程式放置在光碟片

RFFPGA-USBdrive 選擇您目前安裝系統

可選擇 WIN-98WIN-MEWIN-2000WIN-XP 系統配合您現在工作電腦作業系統

69

注意一般電腦 USB 埠很多插口當您安裝驅動程式時是配合您當時插入之埠

下次如您插入不同接口埠時電腦會再次要求安裝驅動程式這是正常現象請再次安

裝驅動程式否則無法使用

FPLC 操作

首先進入 RFFPGA裡子目錄 testASM直接點選 fPLCexe 出現下面操作畫面(也可直接將

此檔案放置桌面直接點選)

(或者選擇 File 再執行 Setuphellip 選擇您要執行 CAI 檔)

70

進入下面操作畫面 首先使用滑鼠在 FPGA下載按鈕單擊動作使 FPGA變成 DSP晶片 實驗一至實驗五皆為使用 DSP組合語言設計程式其原始程式分別為 testASM1至testASM5可使用 texPad 開啟與編輯程式內容 實驗三與實驗五多有 IO控制動作 當選擇實驗三時出現下面畫面

71

eM_USB 模組

數字型 LED

0 1 2 34 5 6 78 9 A BC D E F

燈號型 LED

44 鍵盤

ADC0 ADC1 DAC0 DAC1

LED 選擇KEY 選擇

模 式 1

0123

注意操作畫面 3與 4 說明開關與按鍵選擇位置後選擇程式下載再按程式啟動如您

按下 0-3按鍵時燈號型 LED會有不同方向閃爍顯示程式停止時結束所有 IO控制動作再按回首頁選擇其他實驗 實驗四與實驗五

模式3

0 1 2 34 5 6 78 9 A BC D E F

按照上面開關選擇直接操作如果以上實驗皆能按照正常操作表示您光纖網路通訊

FPGA發展模組以能正常使用 注意 開機與關機動作順序如下

開機電腦啟動 --- eM_USB 模組電源接上 --- USB 接上電腦 ---

啟動 FPLC 軟體 --- 下載 FPGA 程式

關機關閉 FPLC 軟體 --- eM_USB 模組電源拔掉 --- 拔掉電腦 USB 接頭 ---關掉

電腦

如果以上順序有亂可能造成 USB 找不到驅動造成無法下載經過幾次測試還是

無法下載建議重新啟動電腦主機按照正確步驟操作

72

FPGA 下載操作

進入 FPLC 操作系統按照下列步驟選擇節點模組與下載 bit FPGA 檔案

在 VHDLDEMO 子目錄下您可以選擇您目前 FPGA 種類型號在此型號下我們已將 VHDL

與數位邏輯設計課本範例全部放於此處

73

光纖網路連線 FPGA 下載操作

首先利用光纖線將 eM_USB0 模組光纖輸出埠接至 eM_USB1 模組光纖輸入埠以此

類推最後再將最後 eM_USBN 模組光纖輸出埠接至 eM_USB0 模組光纖輸入埠配置

如附圖方式

個人電腦(Windows) eM_USB模組

0USB

eM_USB模組1

光纖網路

eM_USB模組2

eM_USB模組N

配置完成後進入 FPLC 系統首先必須先將 Node00 下載在 testASM 子目錄裡

piDSPv0bit 檔讓 eM_USB0 模組 FPGA 具備 DSP 功能才能執行光纖網路通訊

操作如下

此時您就可以選擇分別下載至各模組 FPGA 檔 bit

74

安裝 FPLC 注意事項

當您進入 FPLC 時

按 FILE 選擇 programhellip 選擇檔案為 exp_dcmplc 出現下面畫面

正常顯示畫面為

75

DOS 環境操作

在 PC 端的操作是在 Windows 環境中的 DOS 視窗中執行指令範例如下

eFPGA progNETbit 下載 FPGA電路至網路節點0(即 USB節點)中 eFPGA testLEDbit 1 下載 FPGA電路至網路節點1中

對於單一節點的控制程序如下

1將 eM_USB模組連結個人電腦的 USB端 2eM_USB模組開機 3執行下載指令即可 eFPGA xxxxbit 4若要更改 FPGA電路只要重新執行下載指令即可

對於多個網路節點的控制程序如下

1第一組 eM_USB模組連結個人電腦的 USB端再以光纖網路依序其他各節點 2連接 USB界面者為模組0從光纖發射端連接出去的模組為1依此類推 3將所有 eM_USB模組開機 4執行下載指令如下 eFPGA progNETbit 模組0必須先下載指定的 FPGA電路 eFPGA xxxxbit 1 再依序下載其他網路模組的 FPGA電路 eFPGA yyyybit 2 eFPGA zzzzbit 最後再重新下載模組0的 FPGA電路 5換句話說模組0必須先執行 progNETbit讓光纖網路接受 FPGA控制後才能透過光纖網路下載至其他節點等全部網路節點下載完畢後再將模組0的 FPGA重新下載讓模組0也可自由執行任意的 FPGA電路

6若要更改某一個網路節點中的 FPGA電路只要重新執行下述指令 eFPGA progNETbit 模組0必須先下載指定的 FPGA電路 eFPGA yyyybit 2 下載指定網路模組的 FPGA電路 eFPGA zzzz bit 最後再重新下載模組0的 FPGA電路 換句話說除非模組0中的 FPGA已經包括光纖網路管理電路否則一定要先在

模組0中下載網路管理電路後才能下載指定網路節點的 FPGA電路

76

光纖網路通訊 FPGA 發展系統

系統配置

光纖網路通訊 FPGA 發展系統的系統配置圖如下

個人電腦(Windows) eM_USB模組

0USB

eM_USB模組1

光纖網路

eM_USB模組2

eM_USB模組N

其中

1基本模組為 eM_USB模組可用 USB界面和個人電腦連線並提供 USB對光纖網路的轉換功能使得個人電腦可以獨立控制光纖網路中的每個網路節點

2eM_USB模組也可以作為光纖網路中的網路節點透過光纖網路而接受個人電腦的

監控 3就個人電腦而言不論是 USB界面直接連結或是以光纖網路間接連結的 eM_USB模組都是可以直接監控的網路節點最多可以同時控制一個 USB節點和 30個網路節點

4對於每一個網路節點個人電腦都可執行 eM_USB模組中 FPGA的電路下載工作並在適當的 FPGA電路配合下可執行 eM_USB模組中 FPGA內部電路的讀寫控制 5透過適當的 FPGA電路設計各網路節點都可透過光纖網路和其他任何網路節點

作同步通訊執行 FPGA內部記憶體的資料交換資料交換頻率可達 1KHz以上

77

網路模組配置

每個網路模組的標準配置圖如下

eM_USB模組光纖網路

USB eM_FPGA卡

eM_DEMO模組

eM_EXP實驗模組

DC電源

其中

1網路模組以 eM_USB模組為主提供基本的 USB界面和光纖網路連線 2eM_USB模組中的 FPGACPLD採用插卡型式可選擇不同的 eM_FPGA卡包括

eM_2V1K卡可選用 Virtex系列的 XC2V250和 XC2V1000 eM_3S1K卡可選用 Spartan3系列的 XC3S400XC3S1000和 XC3S1500 eM_3S50卡可選用 Spartan3系列的 XC3S50XC3S200和 XC3S400 eM_95XL卡可選用 9500XL系列的 XC95144XL和 XC95288XL 3eM_USB模組中的對外連線有兩種一種是 26P接頭用以連接既有的各種實驗模

組另一種是兩組 50P接頭將 FPGA中各接腳引出用以連接專題實驗 4eM_DEMO模組就是插上 50P接頭的教學模組其中包括 LED 數字顯示和 44鍵盤也具備兩組的 ADC和兩組的 DAC接頭提供類比訊號的測試工具

常用的實驗組合包括

1精簡組合包括(eM_USB+eM_FPGA)提供基本的網路節點適用於專題實驗 2標準組合包括(eM_USB+eM_FPGA+eM_DEMO)提供基礎 FPGA設計的教學實驗

3實驗組合包括(eM_USB+eM_FPGA+eM_DEMO+eM_EXP)提供進階的 FPGA實驗可依需求選用不同的實驗模組

78

eM_USB 模組

eM_USB 模組的電路配置圖如下

TxRx

DCPower

USB

JP2

JP3

光纖界面

外加電源

PC連線

JP1

eM_FPGA模組

FT232 CPLD FlashROM

SRAM

10cm

6cm

JP4

其中

1對外的連線接頭包括 DC電源 可選擇單電源(5V)或是多電源(5V+12V-12V)兩種 USB界面 直接連接個人電腦 光纖界面連接光纖網路 2實驗界面包括 JP1負責內部 CPLD的電路下載 JP2JP3兩組 50P的擴張用接頭 JP4 標準 26P接頭用以連接各種實驗模組 3內部的電路配置包括 A以 SO-DIMM接頭連接各種 eM_FPGA卡 B內附 EEPROMFlashROM和 SRAM提供 FPGA作應用測試 C以一顆 FT232BM作為 USB界面解碼而以一顆 CPLD作為光纖網路解碼 D提供各種 eM_FPGA卡的電路下載功能 4內附五顆 LED由上而下依序為 usbLED指示 USB界面的讀寫狀態 tstLED可由 FPGA電路自行定義 stsLED可由 FPGA電路自行定義 RxLED 可由 FPGA電路自行定義 TxLED 可由 FPGA電路自行定義

79

外部接腳定義

外部接頭的接點順序圖示如下

上視圖

JP11 9 JP4

126225

JP31

50249

JP21

50249

而各接頭的接點定義如下

JP1 JP4 JP2 JP3 1+33V 1+12V 2+12V 1 GND 2 GND 1 GND 2 GND 2GND 3 ADC 4 DAC 3POWER 4ALARM 3 +5V 4 +5V 3nc 5 yPB2 6 yPB3 5RxNET 6TxNET 5+12V 6+12V 4TCK 7 yPB1 6 yPB4 7RxUSB 6TxUSB 7-12V 6-12V 5nc 9 yPB0 10yPB5 9RxCAN 10TxCAN 9 ADC 10 DAC 6TDO 11yPB6 12yPB7 11P0D0 12P0D1 11P1D0 12P1D1 7TDI 13yGND 14yPC3 13P0D2 14P0D3 13P1D2 14P1D3 8nc 15yPC2 16yPC1 15P0D4 16P0D5 15P1D4 16P1D5 9TMS 17yPC0 18yPA0 17P0D6 18P0D7 17P1D6 18P1D7 19yPA1 20yPA2 19P0D8 20P0D9 19P1D8 20P1D9 21yPA3 22GND 21P0D10 22P0D11 21P1D10 22P1D11 23GND 24+5V 23P0D12 24P0D13 23P1D12 24P1D13 25+5V 26nc 25P0D14 26P0D15 25P1D14 26P1D15 27P2D0 28P2D1 27PxA0 28PxA1 29P2D2 30P2D3 29PxA2 30PxA3 31P2D4 32P2D5 31PxA4 32PxA5 33P2D6 34P2D7 33PxA6 34PxA7 35P2D8 36P2D9 35PxB0 36PxB1 37P2D10 38P2D11 37PxB2 38PxB3 39P2D12 40P2D13 39PxB4 40PxB5 41P2D14 42P2D15 41PxB6 42PxB7 43ADC0 44ADC1 43PxC0 44PxC1 45ADC2 46ADC3 45PxC2 46PxC3 47ADC4 48ADC5 47PxC4 48PxC5 49DAC0 50DAC1 49PxC6 50PxC7

80

eM_FPGA 模組

在各種 eM_FPGA 模組中FPGA 對外電路的標準配置圖如下

24576MHz

FlashROM

26PSRAM

EEPROM

mD[8]

yPA[4]

FPGACPLD

mA[19]mRDmWRmCSeeCKeeCSeeDIeeDO

光纖界面 RxNETTxNET

USB 界面 RxUSBTxUSBCLK24MPOWERALARM

LED

tstLEDstsLEDRxLEDTxLED

yPB[8]yPC[4]

ADCDAC

ADC[8]

實驗模組

ADC[2]

DAC[2]

xPA[4]

xPB[8]

xPC[4]

基礎實驗

其中

1FPGACPLD可以選擇下述幾種 XC2V250XC2V1000 採用 eM_2V1K模組其中 FPGA為 FG456包裝 XC3S400XC3S1000XC3S1500採用 eM_3S1K模組其中 FPGA為 FG456包裝 XC3S400XC3S1000XC3S1500採用 eM_3S1K模組其中 FPGA為 FG456包裝 XC3S50XC3S200XC3S400 採用 eM_3S50模組其中 FPGA為 TQ144包裝 XC95144XLXC95288XL 採用 eM_95XL模組其中 CPLD為 TQ144包裝 2採用 FG456包裝者可以控制所有的 IO界面 3採用 TQ144包裝者只是不能控制 RAM和 FlashROM而可以控制其他所有的界面 4所有 FPGA模組都可自由選擇由 USB界面或是由光纖界面下載電路但是 CPLD模組只能固定由 USB界面下載電路

5所有 FPGACPLD模組都可透過 26P接頭連接既有的各種實驗模組

81

FPGA 接腳對照表

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

mD0 XD6 mD0 A17 C13 -- -- mD1 XD7 mD1 B17 D12 -- -- mD2 XD8 mD2 C17 D11 -- -- mD3 XD9 mD3 D17 C11 -- -- mD4 XD10 mD4 E17 D10 -- -- mD5 XD11 mD5 E16 C10 -- -- mD6 XD12 mD6 E14 D9 -- -- mD7 XD13 mD7 E13 D7 -- -- mA0 XD14 mA0 D13 C7 -- -- mA1 XD15 mA1 C13 D6 -- -- mA2 XA0 mA2 V5 C3 -- -- mA3 XA1 mA3 U5 C4 -- -- mA4 XA2 mA4 Y2 D3 -- -- mA5 XA3 mA5 Y1 D4 -- -- mA6 XA4 mA6 V4 E3 -- -- mA7 XA5 mA7 V3 E4 -- -- mA8 XA6 mA8 W2 F3 -- -- mA9 XA7 mA9 W1 F4 -- -- mA10 XA8 mA10 T2 G6 -- -- mA11 XA9 mA11 T1 K3 -- -- mA12 XA10 mA12 R4 K10 -- -- mA13 XA11 mA13 R3 L3 -- -- mA14 XA12 mA14 R2 L4 -- -- mRD XRD mRD R1 D5 -- -- mWR XWR mWR P6 C6 -- --

POWER P0A0 POWER B4 B20 P1 P5 ALARM P0A1 ALARM A4 A19 P2 P6 RxNET P0A2 RxNET C4 B19 P4 P7 TxNET P0A3 TxNET C5 A18 P5 P9 RxUSB P0B0 RxUSB B5 A15 P6 P10 TxUSB P0B1 TxUSB A5 B15 P7 P11 RxCAN P0B2 RxCAN D6 A14 P8 P12 RxCAN P0B3 TxCAN C6 B14 P10 P13

CLK24M CLK24M CLK24M E12 B12 P124 P38

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

PWM0H P3A0 P0D0 E6 A8 P21 P23 PWM0L P3A1 P0D1 E5 B8 P23 P24 PWM1H P3A2 P0D2 C2 B6 P24 P25 PWM1L P3A3 P0D3 C1 A5 P25 P26 PWM2H P3A4 P0D4 D2 B5 P26 P27

82

PWM2L P3A5 P0D5 D1 A4 P27 P28 PWMenb P3A6 P0D6 E4 B4 P28 P30 PHT1Z P3A7 P0D7 E3 A3 P30 P31 PHT1A P3B0 P0D8 G2 C1 P31 P32 PHT1B P3B1 P0D9 G1 C2 P32 P33 PHT0A P3B2 P0D10 H5 D1 P33 P34 PHT0B P3B3 P0D11 J6 D2 P35 P35 AMP0 P3B4 P0D12 H4 E1 P36 P39 AMP1 P3B5 P0D13 H3 E2 P40 P40 AMP2 P3B6 P0D14 H2 F2 P41 P41 AMP3 P3B7 P0D15 H1 G1 P44 P43 eeSK P0C3 P1D0 C10 B9 P20 P22 eeCS P0C2 P1D1 D10 A9 P18 P21 eeDI P0C1 P1D2 F10 B10 P17 P20 eeDO P0C0 P1D3 E10 B11 P15 P19 ssCK P0B7 P1D4 E8 A11 P14 P17 ssCS P0B6 P1D5 E7 A12 P13 P16 ssDI P0B5 P1D6 A6 B13 P12 P15 ssDO P0B4 P1D7 B6 A13 P11 P14

ppCLK P3C0 P1D8 K4 G2 P46 P44 ppDIN P3C1 P1D9 K3 K1 P47 P45 TxD P3C2 P1D10 K2 K2 P50 P46 RxD P3C3 P1D11 K1 L1 P51 P48

tstLED P3C4 P1D12 L5 L2 P52 P49 stsLED P3C5 P1D13 L4 M1 P53 P50 RxLED P3C6 P1D14 L3 M2 P55 P51 TxLED P3C7 P1D15 L2 N1 P56 P52

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

xPA0 P2A0 P2D0 AA3 N2 P59 P53 xPA1 P2A1 P2D1 Y4 T1 P60 P54 xPA2 P2A2 P2D2 AA4 T2 P63 P56 xPA3 P2A3 P2D3 AB4 U2 P68 P57 xPC0 P2A4 P2D4 W5 V1 P69 P58 xPC1 P2A5 P2D5 Y5 V2 P70 P59 xPC2 P2A6 P2D6 AA5 W1 P73 P60 xPC3 P2A7 P2D7 AB5 W2 P74 P61

-- P2B0 P2D8 V6 Y1 P76 P64 -- P2B1 P2D9 V7 Y2 P77 P66 -- P2B2 P2D10 W6 AA3 P78 P68

mCS P2B3 P2D11 Y6 AB4 P79 P69 mA15 P2B4 P2D12 V9 AA4 P80 P70 mA16 P2B5 P2D13 V10 AB5 P82 P71 mA17 P2B6 P2D14 W10 AA5 P83 P74 mA18 P2B7 P2D15 Y10 AA6 P84 P75 CS0 P2C0 ADC0 AA10 AB8 P85 P76

83

SDIN0 P2C1 ADC1 AB10 AA8 P86 P77 CS1 P2C2 ADC2 U10 AB9 P87 P78

SDIN1 P2C3 ADC3 U11 AA9 P89 P79 SCLK P2C4 ADC4 V11 AB10 P90 P80 CS2 P2C5 ADC5 W11 AA10 P92 P81

SDOUT P2C6 ADC6 Y11 AB11 P93 P82 LDAC P2C7 ADC7 AA11 AA11 P95 P83

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

xPB0 P1A0 PxA0 M1 M3 P135 P85 xPB1 P1A1 PxA1 M2 M4 P132 P86 yPB2 P1A2 PxA2 M3 N3 P131 P87 yPB3 P1A3 PxA3 M4 N4 P130 P88 yPB1 P1A4 PxA4 M5 T4 P129 P91 yPB4 P1A5 PxA5 M6 T5 P128 P92 yPB0 P1A6 PxA6 N1 U3 P127 P93 yPB5 P1A7 PxA7 N2 U4 P125 P94 yPB6 P1B0 PxB0 U13 V3 P119 P95 yPB7 P1B1 PxB1 V13 V4 P118 P96 xPB2 P1B2 PxB2 W13 W3 P116 P97 xPB3 P1B3 PxB3 Y13 W4 P113 P98 xPB4 P1B4 PxB4 AA13 Y3 P112 P100 xPB5 P1B5 PxB5 AB13 Y4 P96 P101 yPC3 P1B6 PxB6 U12 Y5 P97 P102 yPC2 P1B7 PxB7 V12 W5 P98 P103 yPC1 P1C7 PxC0 AB17 W11 P108 P113 yPC0 P1C6 PxC1 AA17 Y11 P107 P112 yPA0 P1C5 PxC2 Y17 W10 P105 P111 yPA1 P1C4 PxC3 W17 Y10 P104 P110 yPA2 P1C3 PxC4 AB18 W9 P103 P107 yPA3 P1C2 PxC5 AA18 W8 P102 P106 xPB6 P1C1 PxC6 Y18 W6 P100 P105 xPB7 P1C0 PxC7 W18 Y6 P99 P104

84

eM_DEMO 模組

eM_DEMO 模組的電路配置圖如下

eM_USB 模組

數字型 LED

0 1 2 34 5 6 78 9 A BC D E F

燈號型 LED

44 鍵盤

ADC0 ADC1 DAC0 DAC1

LED 選擇KEY 選擇

其中

1eM_DEMO模組的基本功能包括 A將 xPAxPBxPC等 16個 IO訊號引出控制 LED和鍵盤電路 B將 ADDA訊號引出並放大成+-10V的工作範圍 2LED和鍵盤可以選擇三種模式由 LED和 KEY 兩組開關作選擇圖示如下

模式1

0123

模式2 模式3

0 1 2 34 5 6 78 9 A BC D E F

0123

3模式14鍵輸入並搭配 16點的 LED燈號顯示其中 16點 LED分別對映到 xPA[0~3]xPB[0~7]和 xPC[0~3] 4組按鍵分別對映到 xPC[0~3] 4模式24鍵輸入並搭配四個 7段式數字顯示其中 數字顯示由 xPA[0~3]作數字掃瞄而由 xPB[0~7]作 7段式 LED控制 4組按鍵 分別對映到 xPC[0~3] 5模式316鍵輸入並搭配四個 7段式數字顯示其中 數字顯示由 xPA[0~3]作數字掃瞄而由 xPB[0~7]作 7段式 LED控制 16組按鍵由 xPA[0~3]作鍵盤掃瞄而由 xPC[0~3]作鍵盤讀取 6根據VHDL與數位邏輯設計的章節其中 第 1章至 10章的實驗採用模式1而 第 11章實驗採用模式2而 第 12章之後的實驗都採用模式3

85

FPGA UCF 定義

eM_3S1K 模組

NET CLK LOC = B12

NET XAlt0gt LOC = N2

NET XAlt1gt LOC = T1

NET XAlt2gt LOC = T2

NET XAlt3gt LOC = U2

NET XBlt0gt LOC = M3

NET XBlt1gt LOC = M4

NET XBlt2gt LOC = W3

NET XBlt3gt LOC = W4

NET XBlt4gt LOC = Y3

NET XBlt5gt LOC = Y4

NET XBlt6gt LOC = W6

NET XBlt7gt LOC = Y6

NET XClt0gt LOC = V1

NET XClt1gt LOC = V2

NET XClt2gt LOC = W1

NET XClt3gt LOC = W2

NET YAlt0gt LOC = W10

JP4 接頭

NET YAlt1gt LOC = Y10

NET YAlt2gt LOC = W9

NET YAlt3gt LOC = W8

NET YBlt0gt LOC = U3

NET YBlt1gt LOC = T4

NET YBlt2gt LOC = N3

NET YBlt3gt LOC = N4

NET YBlt4gt LOC = T5

NET YBlt5gt LOC = U4

NET YBlt6gt LOC = V3

NET YBlt7gt LOC = V4

NET YClt0gt LOC = Y11

NET YClt1gt LOC = W11

NET YClt2gt LOC = W5

NET YClt3gt LOC = Y5

在光碟片中 RFFPGAVHDLDEMOBIT3S1K 裡有 VHDL 與數位邏輯設計書本範例原始檔與合成檔

86

eM_3S50 模組

NET CLK LOC = P124

NET XAlt0gt LOC = P59

NET XAlt1gt LOC = P60

NET XAlt2gt LOC = P63

NET XAlt3gt LOC = P68

NET XBlt0gt LOC = P135

NET XBlt1gt LOC = P132

NET XBlt2gt LOC = P116

NET XBlt3gt LOC = P113

NET XBlt4gt LOC = P112

NET XBlt5gt LOC = P96

NET XBlt6gt LOC = P100

NET XBlt7gt LOC = P99

NET XClt0gt LOC = P69

NET XClt1gt LOC = P70

NET XClt2gt LOC = P73

NET XClt3gt LOC = P74

NET YAlt0gt LOC = P105

JP4 接頭

NET YAlt1gt LOC = P104

NET YAlt2gt LOC = P103

NET YAlt3gt LOC = P102

NET YBlt0gt LOC = P127

NET YBlt1gt LOC = P129

NET YBlt2gt LOC = P131

NET YBlt3gt LOC = P130

NET YBlt4gt LOC = P128

NET YBlt5gt LOC = P125

NET YBlt6gt LOC = P119

NET YBlt7gt LOC = P118

NET YClt0gt LOC = P107

NET YClt1gt LOC = P108

NET YClt2gt LOC = P98

NET YClt3gt LOC = P97

在光碟片中 RFFPGAVHDLDEMOBIT3S200 裡有VHDL與數位邏輯設計書本範例原始檔與合成檔

87

eM_95XL 模組

NET CLK LOC = SPIN38

NET XAlt0gt LOC = SPIN53

NET XAlt1gt LOC = SPIN54

NET XAlt2gt LOC = SPIN56

NET XAlt3gt LOC = SPIN57

NET XBlt0gt LOC = SPIN85

NET XBlt1gt LOC = SPIN86

NET XBlt2gt LOC = SPIN97

NET XBlt3gt LOC = SPIN98

NET XBlt4gt LOC = SPIN100

NET XBlt5gt LOC = SPIN101

NET XBlt6gt LOC = SPIN105

NET XBlt7gt LOC = SPIN104

NET XClt0gt LOC = SPIN58

NET XClt1gt LOC = SPIN59

NET XClt2gt LOC = SPIN60

NET XClt3gt LOC = SPIN61

NET YAlt0gt LOC = SPIN111

JP4 接頭

NET YAlt1gt LOC = SPIN110

NET YAlt2gt LOC = SPIN107

NET YAlt3gt LOC = SPIN106

NET YBlt0gt LOC = SPIN93

NET YBlt1gt LOC = SPIN91

NET YBlt2gt LOC = SPIN87

NET YBlt3gt LOC = SPIN88

NET YBlt4gt LOC = SPIN92

NET YBlt5gt LOC = SPIN94

NET YBlt6gt LOC = SPIN95

NET YBlt7gt LOC = SPIN96

NET YClt0gt LOC = SPIN112

NET YClt1gt LOC = SPIN113

NET YClt2gt LOC = SPIN103

NET YClt3gt LOC = SPIN102

在光碟片中 RFFPGAVHDLDEMOSVF95288XL 裡有VHDL與數位邏輯設計書本範例原始檔與合成

檔案

88

eM_FPGA 模組

NET CLK LOC = E12

NET XAlt0gt LOC = AA3

NET XAlt1gt LOC = Y4

NET XAlt2gt LOC = AA4

NET XAlt3gt LOC = AB4

NET XBlt0gt LOC = M1

NET XBlt1gt LOC = M2

NET XBlt2gt LOC = W13

NET XBlt3gt LOC = Y13

NET XBlt4gt LOC = AA13

NET XBlt5gt LOC = AB13

NET XBlt6gt LOC = Y18

NET XBlt7gt LOC = W18

NET XClt0gt LOC = W5

NET XClt1gt LOC = Y5

NET XClt2gt LOC = AA5

NET XClt3gt LOC = AB5

NET YAlt0gt LOC = Y17

JP4 接頭

NET YAlt1gt LOC = W17

NET YAlt2gt LOC = AB18

NET YAlt3gt LOC = AA18

NET YBlt0gt LOC = N1

NET YBlt1gt LOC = M5

NET YBlt2gt LOC = M3

NET YBlt3gt LOC = M4

NET YBlt4gt LOC = M6

NET YBlt5gt LOC = N2

NET YBlt6gt LOC = U13

NET YBlt7gt LOC = V13

NET YClt0gt LOC = AA17

NET YClt1gt LOC = AB17

NET YClt2gt LOC = V12

NET YClt3gt LOC = U12

在光碟片中 RFFPGAVHDLDEMOBIT2V250 裡有VHDL與數位邏輯設計書本範例原始檔與合成檔

89

Page 15: RFFPGA 直流馬達實驗手冊juniortek.com.tw/program/manual/RF-DC-mal.pdf · em_demo模組 em_dcm 直流伺服馬達 dc電源 rffpga 系統的直流馬達實驗規劃 其中包括:

光電盤訊號 (A 相 )

光電盤訊號 (B 相 )

正轉

微分訊號(A+)

微分訊號(A-)

微分訊號(B+)

微分訊號(B-)

正轉脈衝(CW)

其中

1針對 AB 兩相訊號作微分處理即可取得 A+A-B+B-的上緣微分和下緣微分 2將微分訊號和和原有的 AB相訊號作比較即可找出正轉脈衝 3計算正轉脈衝的頻率和個數即可取得馬達的速度和轉角 4如此得到的脈衝數將是原有 AB相頻率的四倍所以稱之為乘四解碼電路

同樣的如果針對光電盤的反轉時序一樣可以得出反轉訊號圖示如下

光電盤訊號(A相)

光電盤訊號(B相)

反轉

反轉脈衝(CCW)

其公式如下

CW lt= (A+ and not B) CCW lt= (A+ and B) or (A- and B) or (A- and not B) or (B+ and A) or (B+ and not A) or (B- and not A) or (B- and A)

整合光電盤回授的處理其系統方塊圖如下

數位濾波

D Q

CK

DLA

PHA

D Q

CK

DLB

PHB

CLK

乘四解碼電路

DIR

PLS

數位濾波

PA

PB

正反計數

CNT DB

RD

CS

包括

15

1首先利用簡單的數位濾波器將 AB項的雜訊排除 2接著利用延遲電路作微分處理並以乘四解碼電路解出轉動的脈波和方向 3最後利用正反計數器作計數並將計數值讀入匯流排

數位濾波器

光電盤的 AB 相訊號中如果產生雜訊干擾的現象會使得馬達轉角的計量上產生永久

性的累積誤差將造成控制上無法彌補的錯誤所以 AB 相訊號上的雜訊一定要盡力排

除下面是常用的數位濾波器設計範例

FILTER_A block -- digital filter for A signal CED0D1D2 STD_LOGIC begin process (CLK) -- sequential logic begin if CLKevent and CLK=1 then --CLK=gt1 trigger if CE=1 then --clock enable D2lt=D1 D1lt=D0 D0lt=PA --delay 3 clocks PHA lt= (D0 and D1 and D2) or ((D0 or D1 or D2) and PHA) end if end if end process -- combinational logic CE lt= CLK1M --15MHz clock end block FILTER_A 其中

1以 15MHz的頻率為控制基準 2利用延遲電路依序產生 D0D1D2的延遲訊號 3連續三個 1(D0D1D2 都是 1)定義為 1連續三個 0(D0D1D2 都是 0)定義為 0而其他不連續的 10 都定義為雜訊如此可將高頻的雜訊濾除

4但是相對的AB相訊號的最高頻率將限制為 250KHz(連續 3個 1和連續 3個 0)頻率過高的 AAB相訊號將被視為雜訊而不處理必須特別注意

正反轉的解碼和計數

依據前面的公式說明對映的 VHDL 程式範例如下

DECODER block signal DLADLB STD_LOGIC begin process (CLK) -- sequential logic begin if CLKevent and CLK=1 then --CLK=gt1 trigger DLAlt=PHA DLBlt=PHB --delay 1-clock end if end if

16

end process -- combinational logic DIR lt= (not PHA and DLA and not PHB) or ( PHA and not DLA and PHB) or (not PHB and DLB and PHA) or ( PHB and not DLB and not PHA) PLS lt= (not PHA and DLA) or (PHA and not DLA) or (not PHB and DLB) or (PHB and not DLB) end block DECODER 其中

1PHAPHB為經過雜訊濾波後的 AB相訊號而 DLADLB是其延遲訊號 2根據乘四解碼電路的公式取得 DIR和 PLS訊號其中 DIR用以控制計數器的正反向 PLS用以控制計數器的計數與否

所以接下去就是正反計數器的設計範例如下

COUNTER block signal Q STD_LOGIC_VECTOR(11 downto 0) begin process (CLKRESET) -- sequential logic begin if RESET=1 then --power-on reset Qlt=000000000000 --reset to 0 elsif CLKevent and CLK=1 then --CLK=gt1 trigger if PLS=1 then --clock enable if DIR=1 then Qlt=Q-1 --down counter else Qlt=Q+1 --up counter end if end if end if end process -- combinational logic CNT lt= Q --counter output end block COUNTER 其中

1這是標準的正反計數器架構在開機時自動復歸 2計數器的長度為 12-bit可依需要自行調整

DCM模組中的光電盤精度為每圈500格經過乘四解碼後相當於每圈2000格所以12-bit

計數器只能處理 2 圈的應用範圍絕對不夠在真正應用時一定要用軟體或硬體的方

式再擴張成 16-bit 或是 32-bit 的寬度來處理才行

17

3實驗項目

在直流伺服馬達控制系統中規劃五個實驗項目由系統首頁做選擇每項實驗操

作整個系統實驗組成由各項實驗項目 CAI 檔及各項實驗項目程式連結 PLC 檔結合而成茲表列如下

直 流 伺 服 實 驗 e x p _d c m c ai

開 環 路 電 壓 控 制

系 統 首 頁 實 驗 程 序

e x p _p w m c ai

開 環 路 速 度 控 制 e x p _s p ee d c a i

閉 環 路 位 置 控 制 e x p _a n gl e c a i

加 減 速 的 位 置 控 制 e x p _a c c c ai

正 弦 波 位 置 控 制 e x p _s i n c ai

C A I 圖 控 檔

直 流 伺 服 實 驗 開 環 路 電 壓 控 制

系 統 首 頁 實 驗 程 序

e x p _p w m p lc

開 環 路 速 度 控 制 e x p _s p ee d p l c

閉 環 路 位 置 控 制 e x p _a n gl e p l c

加 減 速 的 位 置 控 制 e x p _a c c p lc

正 弦 波 位 置 控 制 e x p _s i n p lc

e T T Y 批 次 檔

18

4安裝程序

31 將 RFFPGA中的程式拷貝至工作硬碟中進入 DC子目錄資料夾中其中包含下

列檔案

檔案 內容說明 mod SIN_wave MODPWM_wave MODIIR1_filter MODDAS4

MODPOS_inputMODPWM_outputMODACC_controlMODPD_controlMOD這些檔案是由 ASM重新編譯出由 testDCMmem所需執行模組檔

asm SIN_waveasmPWM_waveasmIIR1_filterasmDAS4asm POS_inDCMasmPWM_outDCMasmACC_conDCMasmPD_controlasm是各模組組合語言所設計 SOURCE檔

plc 為進行實驗所需的各批次檔 bit piDSPv0bit為下載到 FPGA的 BIT檔其功能為將 FPGA規劃成

具備 piDSP控制晶片功能提供直流伺服控制所需的控制程式

撰寫 testDCMsys 記載進行 DCM實驗時所需的模組 testDCMMEM 連結完成的 DSP執行檔用來進行 DCM實驗 testDCMvar 紀錄 DCM實驗時的參數對照表

在進行實驗前先將實驗所需的系統程式與模組程式分別說明加以說明系統所

需的程式模組由 testDCMsys 來描述程式列印如下

module fg1 PWM_wavemod 方波產生器

module fg2 SIN_wavemod 弦波產生器

module cn1 ACC_controlmod 加減速控制器

module cn2 PD_controlmod 比例微分控制器

module io1 POS_inputmod 位置和速度讀值

module io2 PWM_outputmod PWM 電壓輸出界面

module ft1 IIR1_filtermod 一階濾波器

module das das4mod 示波器資料蒐集

module io3 LEDKEYmod LEDKEY 界面

其中包括

1兩組波型產生器作為測試命令包括正弦波和方波 2兩組控制器提供包括加減速PD控制器的功能可依照實驗需求搭配使用 3兩組輸入輸出界面執行 PWM輸出和相位回授的界面處理 4一組低通濾波器作為電壓開迴路控制迴路和速度閉迴路控制的模擬使用 5DAS4mod是示波器專用的配合模組不論任何實驗都必須加入此模組 6Ledmod是四位數字七段顯示與 44矩陣按鍵模組

19

5執行程序

首先進入 RFFPGA 裡子目錄 DC直接點選 fPLCexe 出現下面操作畫面(也可直接將此檔

案放置桌面直接點選)

進入下面操作畫面

20

首先使用滑鼠在 FPGA下載按鈕單擊動作使 FPGA變成 piDSP晶片 如您撰寫組合語言時可使用 eASM按鈕 經編譯完成後產生MOD檔 如您撰寫系統連結程式時可使用 eLINK按鈕 經連結完成後產生MEM與VAR檔 點選實驗三後顯示如下 選擇程式下載再按程式啟動這時直流伺服馬達開始做位置控制在操控畫面放置 P 參數設定欄更改參數時馬達即時隨參數改變而產生不同響應 直接點選程式停止時結束所有控制動作再按回首頁選擇其他實驗

21

6實驗說明

下圖所示為直流馬達的控制系統方塊圖透過電流速度以及位置的回授再搭

配適當的控制器可建立完整的閉迴路控制系統在後面的實驗中將依此一系統方塊圖

逐步建立速度和位置的控制實驗各實驗的說明和操作方式及參考實驗結果將逐一進

行詳細的說明

控制

參考位置

速度 位置速

度控制 電流控制

電力電

子換流

位置速

度感測

i

+ -

壓ν

位置

速度

i

DC直流馬達之控制系統方塊圖

PWM 驅動方式只是簡單的開環路控制而高精度的馬達控制必須透過回授控制來完成

對於邏輯電路的設計者而言必須先瞭解基本的回授控制架構以便將來轉換成實用的

邏輯電路設計

設計說明

開環路特性

在電壓驅動的狀況下直流馬達開環路控制的示意圖如下

+-

22

如果換算成數學模式則轉換成下面的架構

+-Vc

R L

EMF

+

-

ITB

J

ω

其中

1其中的變數和參數包括 Vc 控制的電壓命令 R 電樞迴路的等效電阻 L 電樞迴路的等效電感 EMF電樞產生的反電動勢 i 電樞迴路中的電流 T 馬達所產生的扭力 J 馬達和負載的等效慣量 B 馬達和負載的等效摩擦力 ω 馬達所產生的速度 2所牽涉的物理公式包括 電壓迴路Vc = Ri + L(didt) + EMF 即電樞迴路中的電壓平衡 動力負載T = Bω + J(dωdt) 即扭力平衡 馬達特性T = Kti 所產生的扭力和電流成正比 電機特性EMF= Keω 所產生的電動勢和轉速成正比 其中新增的參數包括 Kt馬達的扭力常數 Ke馬達的反電動勢常數 3將微分項作拉式轉換(Laplase Transformation)的對映即 s = ddt 可將微分方程式轉換成更簡單的代數方程式而產生到下面的控制方塊圖

sL+R1Vc

+-EMF

iKt

TsJ+B1 ω

Ke

4在直流馬達的開環路特性中控制電壓(Vc)時輸入點而馬達轉速(ω)是輸出點即是控制馬達電壓以控制馬達轉速

5基本上馬達的開環路特性是個兩階系統類似於低通濾波器的特性在許多應用 場合其開環路特性還可以再簡化成一階系統方塊圖如下

23

sτ +1

KmVc ω 其中 τ一階系統的時間常數 Km一階系統的穩態增益

採用兩階系統的分析方式雖然會比較精細但是用一階系統來分析則可簡化所有的設計

過程因為這裡的實驗重點是邏輯設計所以在本章中我們都用一階系統作分析

系統響應的要求

就控制系統而言最重要的需求就是系統響應包括

穩態特性通常以穩態誤差為指標即是穩態時系統輸出和輸入之間的差異 暫態特性通常以上升時間(Rise Time)和過越比率(Overshoot)為指標

一個理想中的伺服控制系統其系統響應應該是

1穩態誤差為 0即馬達輸出將追隨輸入作變化沒有誤差 2過越比例為 0即馬達輸出絕對不會產生衝過頭的現象 3上升時間為 0即馬達輸出隨時追上輸入命令不會有控制上的延遲現象

當然這是太理想了一個合理的伺服控制系統應該是

1穩態誤差越小越好最好為 0 2過越比例越小越好最好為 0 3上升時間越短越好當然無法為 0但是盡力就是了

速度的回授控制

回授控制的目的就是為了改善系統響應以一階系統代表的馬達控制為例

sτ+1

KmVc ω

在步階響應(Step Response)時其特性如下

1穩態誤差由 Km決定 2過越比例為 0 3上升時間即是其時間常數(τ)

如果用比例控制器(P 控制器)作速度回授的控制則控制方塊圖如下

sτ+1

KmVc ωKp

err

P控制器 直流馬達ωc

速度回授

速度命令 + 速度響應-

24

其中

1速度命令並不直接控制馬達的驅動電壓而是 A將速度命令和速度回授相比找出其誤差訊號 err B依誤差訊號來控制驅動電壓 誤差越大則驅動電壓越高 誤差越小則驅動電壓越低 誤差為負則驅動電壓也為負 其中的比例關係由 P控制器中的 Kp 來調整 2經由數學分析後其步階響應的特性為 A穩態誤差變成 1(1+kpkm)如果 kpkmgtgt1則穩態誤差將趨近於 0 B過越比例仍為 0 C上升時間即是由τ變成τ(1+kpkm)所以上升時間將變短 3換句話說只要 Kp值夠大不論是穩態誤差或是上升時間都會大幅改善

理論上P控制器的增益是越高越好最好是無限大但是實際上是有限制的原因是

1馬達的開環路特性是兩階系統而非一階系統一階系統只是簡化後的結果 2當兩階系統作高增益的回授控制時當增益過高時會產生極嚴重的過越現象使得

馬達產生巨幅震動而難以控制

所以 P控制器的增益雖然是越高越好但調整時仍要小心維持(過越比例為 0)的條件

轉角的回授控制

做為馬達的速度控制P控制器的效果不錯但是如果將 P控制器應用到馬達的轉角控

制其特性就不太理想圖示如下

sτ+1

KmVc ωKp

err

P控制器 直流馬達

θc

轉角回授

轉角命令 + 轉角響應-

s1 θ

其中

1從馬達的速度到轉角之間具有積分特性即 馬達的轉角是馬達速度的積分結果而 馬達的速度是馬達轉角的微分結果而 2其中的積分特性使得整個系統由一階特性變成兩階特性在兩階系統中當設定高

增益時會產生極嚴重的過越現象使得馬達產生巨幅震動而難以控制 3在 P控制器增益無法提高的狀況之下轉角控制效果將無法獲得改善

雖然 P控制器在轉角控制上的效果並不好但是在控制系統中還是有許多法寶可以選擇

25

其中 PD 控制器就是簡單又有效的一個好方法

從表面上來看PD 控制器比 P控制器多了一個微分項就數學上來看這微分項提供了

一個新零點(Zero)可以調整根軌跡圖的走向就實驗上來說這微分項提供了控制器

的預測功能說明如下

sτ+1

KmVc ωKp+sKd

err

P控制器 直流馬達

θc

轉角回授

轉角命令 + 轉角響應-

s1 θ

1轉角控制中 P控制器的問題是在嚴重的過越現象原因是在 P控制器的作用下只有當回授超過命令時才能做出「負向」的控制但這時已經來不及了因為積分器

中已經累積了過多的能量而無法立刻消失使得馬達轉角衝過了頭 2解決之道就是在回授超過命令之前就必須做出「負向」的控制使得積分器累積

的能量逐步減弱在到達目標時才能立刻煞車才能解除過越現象 3而微分項就是這個預測量因為當誤差量越來越小時其微分項是負值雖然微分

項(D)是負值 當誤差量(P)很大時(P+D)的結果還是正值所以還是「正向」控制 當誤差量(P)漸小時(P+D)的結果變成負值才會開始「負向」控制 換句話說在誤差為 0之前即可啟動負向控制產生煞車作用使得馬達提前減速

而即時停止在目標點上自然就解除過越現象了

所以在 PD 控制器中有兩項調整量其中

1Kp增益提供比例控制部分的增益而 Kd增益提供微分控制部分的增益 2Kp增益控制馬達的趨近速度主要影響的是上升時間 3Kd增益控制馬達的提前煞車主要影響的是過越比例 4在兩者搭配下就有機會得到 很快很短的上升時間同時也 不會產生過越現象

PD 控制器的執行

依據 PD 控制器公式可以建立以數位執行的 PD 控制器如下圖所示

cmdKp

fdk

+

-

err

old

+-

Kd

Z-1

out+

+

26

其中

1利用差分公式來取代 PD控制器中的微分公式定義如下 s ==gt (1-Z-1)DT 其中對映的變數包括 s 微分項 Z-1延遲一個抽樣週期 DT抽樣週期單位為 sec 2就執行面而言Z-1是延遲一個抽樣週期也就是以抽樣週期所控制的暫存器 3在上圖中將命令(cmd)和回授(fdk)相減後得到誤差值(err)再將 err延遲一個抽樣週期成為 old所以(err-old)DT即是微分項

4原始的微分控制公式為(err-old)DTKd必須先除再乘但是因為 DT和 Kd 都是常

數可以預先將 Kd修正成 Kd=(KdDT)那麼公式將修正為(err-old)Kd就只需要一個乘法而不需要除法了

同樣的 PD 控制器可以用許多不同的方法作執行包括

1以軟體方式執行例如在 DSP核心中以組合語言撰寫控制模組 2以硬體方式執行例如在 FPGA中直接設計邏輯電路 3以微碼方式執行以微碼作順序控制執行硬體運算工作

這裡先提供用組合語言撰寫的程式模組作為設計參考其他兩種方法將在後續的實驗中

再陸續作說明

模組程式範例PD_controlasm

local cmd R0 IP gnd 輸入點位置命令(可忽略) local fdk R1 IP gnd 輸入點位置回授(可忽略) local out R2 OP 輸出點用以控制速度迴路 local kp R3 256 參數增益 kp10=256 local kd R4 0 參數增益 kd10=256 local err R5 0 內部變數 local old R6 0 內部變數 local gnd R7 0 無輸入時的短路點 data 8 模組變數區長度 initial 開機啟動程序 WR out0 WR old0 RET out=old=0 timer 即時控制程序 RD (cmd) SUB (fdk) WR err MUL kp SFR 8 P=(cmd-fdk)kp256 RDS err SUBX old MUL kd SFR 8 D=(err-old)kd256 ADDS WR out out=P+D RET

27

其中

1PD控制模組中對外的界面變數包括 cmd命令的輸入點 fdk回授的輸入點 out控制的輸出點 2內部參數包括 Kp比例控制增益其中 10=256所以乘完後還需要再右移 8-bit Kd微分控制增益其中 10=256所以乘完後還需要再右移 8-bit 3內部變數包括 err臨時性的變數用以儲存誤差值的計算結果 old儲存性的變數用以儲存上一次抽樣控制時的 err值 4模組程式分成三部分包括 變數宣告local和data所宣告的部分 初值設定initial程序中先將 out和 old設定為 0 即時控制timer程序中依序執行 PD控制器中的每個步驟

控制目標的選擇

從字面上來看速度控制就是控制馬達的速度轉角控制就是控制馬達的轉角沒什麼

好討論的但是實際上確有許多問題第一的問題就是什麼是速度和轉角馬達的速

度和轉角如果不作量測如何得知

既然在量測中取得了速度和轉角資料那麼我們所控制的到底是物理學上的速度和轉

sτ+1

KmVc ωKp+sKd

err

P控制器 直流馬達

θc

轉角回授

轉角命令 + 轉角響應-

s1 θ

KxANG

轉角量測

角還是量測上的速度和轉角以下圖為例

其中

1以轉角量測裝置量測轉角例如裝在馬達軸端的光電盤和解碼電路 2轉角的量測輸出是 ANG而 ANG和物理轉角θ之間有 Km的增益關係 3只要 Km值不是 1那麼系統就不再是單位回授 4如果 Km還有非線性或失真現象那麼控制結果也將有非線性或失真現象

這些問題混雜起來會使得控制系統的分析變得更複雜如果要簡單處理就要認同現

實環境直接以量測結果為控制目標如下圖所示

28

sτ+1

KmVc ωKp+sKd

err

P控制器 直流馬達

θc

轉角回授

+-

s1 θ Kx

ANG轉角量測

其中

1直接以量測結果為控制目標將全系統還原成標準的單位回授控制 2所有的非線性或失真現象都進入開環路討論屬於可以補償的部分 3但是控制結果就是「量測上的轉角」而「物理學上的轉角」

量測誤差的問題

轉角θ

量測ANG

對於量測誤差而言最明顯的問題就是量化誤差圖示如下

其中

1以 DCM模組中的光電盤為例精度為每圈 500格經由乘四解碼計數後其等效

精度增加為每圈 2000格 2比(12000)圈更精密的部分都無法響應換句話說振幅越大的控制其相對誤差越

小而振幅越小的控制其相對誤差越大例如 當振幅為(12)圈時其控制誤差量為 01而 當振幅為(120)圈時其控制誤差量為 1 這是標準的的非線性現象

量化誤差不只影響穩態上的精度還會造成非線性的震動問題圖示如下

t

誤差值

+1

-1

其中

1由於量化誤差的問題只有當誤差超過+1或是-1時才會真正偵測到誤差也才

29

會施加控制量作補償 2所以穩態時的誤差將在+1-1之間擺動造成微幅的振動 3量化誤差越大震動越明顯而量化誤差很小時通常不易察覺出震動現象

微分量的計算

伺服系統中有兩處需要用到微分計算包括

1PD控制器中誤差微分量的計算 2速度控制器中速度回授值的量測

在理論上微分公式是(dXdt)相當於 dXdt = (X(n)-X(n-1))DT (當 DT趨近於 0時)

所以當微分計算中的抽樣週期(DT)越短時微分的計算值將越接近理論值但是事實上

卻非如此以下圖為例

t

X

DTDX

其中

1當 X值為等速度運動時其微分量就是其斜率相當於 DXDT 2DT是微分計算中的抽樣週期理論上越短越好但是由於 DX本身的量化誤差

使得這個原則不再成立例如當斜率為 7394時 若 DT=1000則 DX=7394而 DXDT=7394 若 DT=100 則 DX=739 而 DXDT=739 若 DT=10 則 DX=73 而 DXDT=73 若 DT=1 則 DX=7 而 DXDT=7 3換句話說當抽樣週期越短時DX的量化誤差將越明顯而造成微分計算上更嚴

重的誤差

在 DCM 模組中速度量測的量化誤差分析如下

1馬達上的光電盤精度為每圈 500格經過乘四解碼後等效精度為每圈 2000格 2當馬達轉速為 1200RPM而抽樣頻率為 1KHz時對映的速度量測值為 1200(圈分)2000(格圈)60(秒分)1000(DT秒) = 40(格DT) 3換句話說1200RPM的轉速對映到 40的速度量測值即速度單位=30RPM若最

高轉速為 3000RPM則在+-3000RPM的速度範圍內其量化誤差為 05相當於8-bit的 ADC轉換器精度

4對映不同的抽樣頻率的量化誤差表列如下

30

光電盤精度 最高轉速 抽樣頻率 速度單

速度範圍 量化誤差

500PPR 3000RPM 1KHz 30RPM +-100 05 500PPR 3000RPM 2KHz 60RPM +-50 1 500PPR 3000RPM 4KHz 120RPM +25 2

過溢現象的處理

輸入

輸出

32767

-32768

整數運算都有數值範圍限制以 16-bit 整數而言輸入輸出的關係如下

其中

1當超過正負數的上下限時數值會正負顛倒例如 +32768 將會視為 -32768作處理而 +32769 將會視為 -32768作處理依此類推 2換句話說16-bit的整數運算只有在+-32767之間是線性的對映關係而超過這個範圍就是非線性的對映關係

3不但如此還因為正負顛倒的現象使得原來設計的負回授控制將變為正回授控制

而產生非線性的震盪現象 4換句話說只要計算上稍一不慎就會使得原先穩定的系統產生不穩定的震盪結果

為了避免過溢現象所造成的不穩定問題通常控制系統中會利用飽和處理作改善圖示

如下

輸入

輸出

lmtH

lmtL

31

其中

1當超過計算的上限時將固定設為上限值處理而當超過計算的下限時也將固定

設為下限值處理 2這時的整數運算只有在上下限之間是線性的對映關係而超過這個範圍將還是非線

性的對映關係 3雖然如此但是因為沒有正負顛倒的現象所以不再會有負回授變為正回授的問題

而避免了非線性的震盪現象 4換句話說飽和處理是針對過溢現象的妥協處理方案雖然不完全理想但是是可

接受的最佳選擇

下面是對映的組合語言範例

RD x x為輸入端 MIN lmtH 取得 x和 lmtH中的較小值即是作上限保護的工作 MAX lmtL 取得 x和 lmtL中的較大值即是作下限保護的工作 WR y Y為輸出端 其中

1組合語言中提供MAX和MIN的計算其中 MIN lmtH 比較 AX暫存器和 lmtH而將較低值存入 AX暫存器中 MAX lmtL 比較 AX暫存器和 lmtH而將較高值存入 AX暫存器中 2所以直接可用MIN指令作上限保護而以MAX指令作下限保護兩者合併後即是

完整的飽和處理結果

飽和處理通常應用在高位數轉成低位數的場合例如32-bit轉換成16-bit或是16-bit

轉換成 12-bit 等等例如在本實驗中所有的運算都是以 16-bit 整數作處理但是到

PWM 驅動級輸出時卻要轉換成 12-bit精度的 PWM 命令所以必須先用飽和處理以避免

過溢現象造成的不穩定問題

32

61 實驗 1-開迴路的電壓控制 實驗說明以電壓直接控制轉速的開迴路特性可簡化為一階系統處理方塊圖如

sτ+1

v km ωm

其中V 送給驅動器的 PWM電壓命令

ωm馬達的轉動速度可由處理 photo encoder信號所得的位置微分而得 km一階系統的穩態增益 τ一階系統的時間常數即步階響應中的上升時間

為了觀測直流馬達的開環路特性建立下面的測試方塊圖

其中

1所使用的模組包括 FG1方波產生器產生所需的步階測試波形 FT1馬達模擬以一階系統的低通濾波器來執行 IO1光電盤的回授處理可同時取得轉角和速度的量測值 IO2PWM電壓驅動直接驅動直流馬達作控制 Led四位數字七段顯示模組顯示波形信號資料 2測試目標有兩項(P 參數設定欄)包括 A調整方波命令控制直流馬達作開環路的 PWM電壓控制 B調整馬達模擬參數使模擬結果和實驗結果相符以確認開環路特性

33

實驗畫面顯示如下

測試一 開環路的電壓控制 記錄頻道 CH1電壓命令Y1=-300DY=500 CH2模擬速度Y2=-100DY=500 CH3馬達速度Y3=100DY=50 CH4馬達轉角Y4=300DY=50000 實驗參數 FG1kAMP=256電壓命令的測試振幅 FG1kFRQ=150電壓命令的測試頻率 FT1DT =10 馬達模擬參數 FT1KA =500馬達模擬參數

其中

1用示波器功能記錄四個頻道其中 CH2和 CH3重疊顯示以比較模擬速度和量測

速度之間的差異 2由於 Km 不等於 1所以必須調整 CH3的 Y軸單位才能使得 CH2和 CH3的穩態響應部分重疊

3實驗時可以改變 FG1的參數以調整測試方波的振幅和頻率 4可以調整 FT1的參數使得 CH2和 CH3的暫態響應部分重疊

根據實際的測試結果分析如下

2馬達模擬的參數調整到 DT=10而 KA=500根據公式 τ = 40961000dtka 所以上升時間(τ)為 0082秒或是 82ms 3CH2CH3的 Y軸單位並不一致顯然 Km 不等於 1經計算確認 Km=0098

對應之 plc檔程式說明(exp_pwmplc) echo off 畫面顯示開始

run dsp 0 選擇 DSP1

run stop run reset 既有程式停止

run testDCMmem 下載指定程式

das 1 ampfg1out 0 1024 PWM 波形 Volt 設定 DAS 頻道1

das 2 ampft1lp 0 1024 馬達模擬 Volt 設定 DAS 頻道2

das 3 ampio1spd 0 1024 馬達速度 Volt 設定 DAS 頻道3

das 4 ampio1ang 0 1024 馬達角度 Volt 設定 DAS 頻道4

plot select 0 設定示波器頁數

plot xunit 100000 0 設定示波器 X軸

plot yunit 1 500 -300 設定示波器 Y1 軸

34

plot yunit 2 500 -100 設定示波器 Y2 軸

plot yunit 3 50 100 設定示波器 Y3 軸

plot yunit 4 50000 300 設定示波器 Y4 軸

plot trigger 1 0 1 10 設定示波器觸發

plot scope 9 1 2 3 4 設定示波器顯示

module io2 設定 io2 模組

s cmd ampfg1out

module fg1 設定 fg1 模組

s kAmp 256 s kFrq 150

module ft1 設定 ft1 模組

s u ampfg1out s dt 10 s ka 500

module io3 設定 io3 模組

s led ampfg1out

module 回復預設模組

run 1khz 設定抽樣頻率為 4KHz

run start DSP 開始執行

das stop pause 1 DAS 啟動 das start DAS 啟動

echo on 回復正常訊息顯示

使用者可視情況調整一階濾波器的 ka和 dt值使得 ch2和 ch3 兩組波形完全相符

以求得開迴路系統近似的一階轉移函數 CAI操控設計畫面規劃如下(EXP_PWMCAI) page 1 畫面設計

35

page 2 畫面設計 page 3 畫面設計

36

實測響應圖

訊 號 說 明 訊 號 說 明 ch1 方波產生器訊號 ch3 一階濾波器輸出信號 ch2 馬達角速度訊號 ch4 馬達角位置訊號

直流馬達之開迴路電壓控制響應圖

37

以邏輯分析功能觀測直流馬達之光電盤輸入與 PWM輸出信號

38

62 實驗 2-閉迴路的速度控制 實驗說明為了觀測閉迴路的速度控制響應建立下面的測試方塊圖

加入 PD控制後系統閉迴路的轉移函數經適度的簡化仍能約略以一階系統

處理方塊圖如下

sτ+1

u km ωm

其中

u 送給控制器的速度命令

ωm馬達的轉動速度可由處理 photo encoder 信號所得的位置微分而得

km一階系統的穩態增益 τ一階系統的時間常數即步階響應中的上升時間

方塊圖中的模組功能說明如下

1用 fg1 產生測試用的方波速度命令

2將方波速度命令和速度回授訊號送到 PD 控制器方塊中產生電壓控制訊號再透

過 io2 模組將訊號送出給伺服介面

3用 ft1 建立對照用的一階系統可用 IIR1濾波器方塊產生

4將方波命令產生速度命令再觀測 PHT(io1)上的速度值 spd

5調整 IIR1濾波器的參數使得兩組波形完全相符這時 IIR1濾波器就是閉迴路

速度控制的特性其中 km 為增益而τ為上升時間(單位為 sec)

6增益 km 可從示波器中作簡單計算而上升時間(τ=40964000dtka)

7 Led四位數字七段顯示模組顯示波形信號資料

39

對應之 plc檔程式說明(exp_speedplc) echo off 畫面顯示開始

run dsp 0 選擇 DSP1

run stop run reset 既有程式停止

run testDCMmem 下載指定程式

das 1 ampfg1out 0 1024 PWM 波形 Volt 設定 DAS 頻道1

das 2 ampft1lp 0 1024 馬達模擬 Volt 設定 DAS 頻道2

das 3 ampio1spd 0 1024 馬達速度 Volt 設定 DAS 頻道3

das 4 ampio1ang 0 1024 馬達角度 Volt 設定 DAS 頻道4

plot select 0 設定示波器頁數

plot xunit 100000 0 設定示波器 X軸

plot yunit 1 50 -300 設定示波器 Y1 軸

plot yunit 2 50 -100 設定示波器 Y2 軸

plot yunit 3 50 100 設定示波器 Y3 軸

plot yunit 4 50000 300 設定示波器 Y4 軸

plot trigger 1 0 1 10 設定示波器觸發

plot scope 9 1 2 3 4 設定示波器顯示

module io2 設定 io2 模組

s cmd ampcn2out

module fg1 設定 fg1 模組

s kAmp 50 s kFrq 150

module cn2 設定 cn1 模組

s cmd ampfg1out s fdk ampio1spd s kp 0x4000

module ft1 設定 ft1 模組

s u ampfg1out s dt 2 s ka 320

module io3 設定 io3 模組

s led ampfg1out

module 回復預設模組

run 1khz 設定抽樣頻率為 4KHz

run start DSP 開始執行

das stop pause 1 DAS 啟動 das start DAS 啟動

echo on 回復正常訊息顯示

CAI操控設計畫面規劃如下(EXP_speedCAI)

40

page 1 畫面設計 page 2 與 page 3 畫面設計與實驗一 page 2 與 page 3相同畫面 page 4 畫面設計

41

方塊的參數設定 使用者可視情況調整一階濾波器的 ka和 dt值使得 ch2和 ch3 兩組波形完全相符

以求得此一閉迴路系統近似的一階轉移函數或調整 PD控制器中的 kp和 kp值以調整系統之響應 實測響應圖

訊 號 說 明 訊 號 說 明 ch1 方波產生器產生之速度命令 ch3 一階濾波器輸出信號 ch2 馬達角速度訊號 ch4 馬達角位置訊號

42

直流馬達之閉迴路速度控制響應圖

43

63 實驗 3-閉迴路的位置控制 實驗說明為了觀測閉迴路的位置控制響應將直流馬達的回授改為位置訊號

建立下面的測試方塊圖 方塊圖中的模組功能說明如下

1用 fg1產生測試用的方波位置命令 2將方波位置命令和位置回授訊號送到 PD控制器方塊中產生電壓控制訊號再透過 io2模組將訊號送出到伺服介面驅動馬達轉動

對應之 plc檔程式說明(exp_angleplc) echo off 畫面顯示開始

run dsp 0 選擇 DSP1

run stop run reset 既有程式停止

run testDCMmem 下載指定程式

das 1 ampfg1out 0 1024 PWM 波形 Volt 設定 DAS 頻道1

das 2 ampft1lp 0 1024 馬達模擬 Volt 設定 DAS 頻道2

das 3 ampio1spd 0 1024 馬達速度 Volt 設定 DAS 頻道3

das 4 ampio1ang 0 1024 馬達角度 Volt 設定 DAS 頻道4

plot select 0 設定示波器頁數

plot xunit 100000 0 設定示波器 X軸

plot yunit 1 1000 -300 設定示波器 Y1 軸

plot yunit 2 1000 -100 設定示波器 Y2 軸

plot yunit 3 20 100 設定示波器 Y3 軸

plot yunit 4 1000 300 設定示波器 Y4 軸

plot trigger 1 0 1 10 設定示波器觸發

44

plot scope 9 1 2 3 4 設定示波器顯示

module io2 設定 io2 模組

s cmd ampcn2out

module fg1 設定 fg1 模組

s kAmp 1000 s kFrq 75

module cn2 設定 cn1 模組

s cmd ampfg1out s fdk ampio1ang s kp 0x300 s kd 0x4000

module ft1 設定 ft1 模組

s u ampfg1out s dt 2 s ka 320

module io3 設定 io3 模組

s led ampfg1out

module 回復預設模組

run 1khz 設定抽樣頻率為 4KHz

run start DSP 開始執行

das stop pause 1 DAS 啟動 das start DAS 啟動

echo on 回復正常訊息顯示

CAI操控設計畫面規劃如下(EXP_angleCAI) page 1 畫面設計

45

page 2 與 page 3 畫面設計與實驗一 page 2 與 page 3相同畫面 page 4 畫面設計與實驗二 page 4 畫面 方塊的參數設定 延續上一實驗的說明使用者可以調整 PD控制器中的 kp和 kd值以調整系統之

響應 實測響應圖

訊 號 說 明 訊 號 說 明 ch1 方波產生器產生之位置命令 ch3 馬達角速度訊號 ch2 馬達角位置 ch4 Pd控制器輸出之電壓訊號

46

直流馬達之閉迴路位置控制響應圖

47

64 實驗 4-加減速的位置控制 實驗說明為避免方波命令的過於嚴苛在方波命令的輸出加入一加減速控制功

能方塊以減緩命令變化的幅度增加馬達運動的平順建立的測試方塊圖如下

方塊圖中的模組功能說明如下

1用 fg1產生測試用的方波位置命令 2將方波位置命令送到加減速控制方塊處理後產生新的位置命令再將新的位置命

令與位置回授訊號送到 PD控制器方塊中產生電壓控制訊號最後透過 io2模組將訊號送出到伺服介面驅動馬達轉動

對應之 plc檔程式說明(exp_accplc) echo off 畫面顯示開始

run dsp 0 選擇 DSP1

run stop run reset 既有程式停止

run testDCMmem 下載指定程式

das 1 ampfg1out 0 1024 PWM 波形 Volt 設定 DAS 頻道1

das 2 ampcn1out 0 1024 加速控制 Volt 設定 DAS 頻道2

das 3 ampio1spd 0 1024 馬達速度 Volt 設定 DAS 頻道3

das 4 ampio1ang 0 1024 馬達角度 Volt 設定 DAS 頻道4

plot select 0 設定示波器頁數

plot xunit 100000 0 設定示波器 X軸

plot yunit 1 2000 -300 設定示波器 Y1 軸

plot yunit 2 2000 -100 設定示波器 Y2 軸

plot yunit 3 50 100 設定示波器 Y3 軸

plot yunit 4 2000 300 設定示波器 Y4 軸

48

plot trigger 1 0 1 10 設定示波器觸發

plot scope 9 1 2 3 4 設定示波器顯示

module io2 設定 io2 模組

s cmd ampcn2out

module fg1 設定 fg1 模組

s kAmp 2000 s kFrq 150

module cn1 設定 cn1 模組

s cmd ampfg1out

module cn2 設定 cn2 模組

s cmd ampcn1out s fdk ampio1ang s kp 0x300 s kd 0x4000

module ft1 設定 ft1 模組

s u ampfg1out s dt 2 s ka 320

module io3 設定 io3 模組

s led ampfg1out

module 回復預設模組

run 1khz 設定抽樣頻率為 4KHz

run start DSP 開始執行

das stop pause 1 DAS 啟動 das start DAS 啟動

echo on 回復正常訊息顯示

CAI操控設計畫面規劃如下(EXP_accCAI) page 1 畫面設計

49

page 2 畫面設計與實驗一 page 2相同畫面 page 3 畫面設計與實驗二 page 4相同畫面

參數設定參考之前各實驗的說明可線上機動性的調整 PD控制器中的 kp和 kd值以調整系統之響應 實測響應圖

訊 號 說 明 訊 號 說 明 ch1 方波產生器產生之位置命令 ch3 馬達角位置 ch2 加減速模組輸出之位置命令 ch4 馬達角速度訊號

50

圖一 直流馬達經加減速控制後之閉迴路控制響應圖

51

65 實驗 5-正弦波的位置控制 實驗說明在本實驗中改變命令的波形由方波改變為正弦波並建立如下的測

試方塊圖與上一實驗相比較僅更改命令的波形產生方塊 方塊圖中的模組功能說明如下 1用 fg2產生測試用的弦波位置命令 2將弦波位置命令送到加減速控制方塊處理後產生新的位置命令再與 io1 讀入的位

置回授訊號送到 PD 控制器方塊中產生電壓控制訊號再透過 io2 模組將訊號送出到伺服介面驅動馬達轉動

對應之 plc檔程式說明(exp_sinplc) echo off 畫面顯示開始

run dsp 0 選擇 DSP1

run stop run reset 既有程式停止

run testDCMmem 下載指定程式

das 1 ampfg2out 0 1024 SIN 波形 Volt 設定 DAS 頻道1

das 2 ampcn1out 0 1024 加速控制 Volt 設定 DAS 頻道2

das 3 ampio1spd 0 1024 馬達速度 Volt 設定 DAS 頻道3

das 4 ampio1ang 0 1024 馬達角度 Volt 設定 DAS 頻道4

plot select 0 設定示波器頁數

plot xunit 100000 0 設定示波器 X軸

plot yunit 1 2000 -300 設定示波器 Y1 軸

plot yunit 2 2000 -100 設定示波器 Y2 軸

plot yunit 3 50 100 設定示波器 Y3 軸

plot yunit 4 2000 300 設定示波器 Y4 軸

plot trigger 1 0 1 10 設定示波器觸發

52

plot scope 9 1 2 3 4 設定示波器顯示

module io2 設定 io2 模組

s cmd ampcn2out

module fg2 設定 fg1 模組

s kAmp 2000 s kFrq 100

module cn1 設定 cn1 模組

s cmd ampfg2out

module cn2 設定 cn2 模組

s cmd ampcn1out s fdk ampio1ang s kp 0x300 s kd 0x4000

module ft1 設定 ft1 模組

s u ampfg2out s dt 2 s ka 320

module io3 設定 io3 模組

s led ampfg2out

module 回復預設模組

run 1khz 設定抽樣頻率為 4KHz

run start DSP 開始執行

das stop pause 1 DAS 啟動 das start DAS 啟動

echo on 回復正常訊息顯示

CAI操控設計畫面規劃如下(EXP_sinCAI) page 1 畫面設計

53

page 2 畫面設計 page 3 畫面設計與實驗二 page 4相同畫面

方塊的參數設定可調整 PD控制器中的 kp和 kd值以調整系統之響應 實測響應圖

訊 號 說 明 訊 號 說 明 ch1 弦波產生器產生之位置命令 ch3 馬達角位置訊號 ch2 加減速模組輸出之位置命令 ch4 馬達角速度訊號

54

直流馬達之閉迴路弦波加減速位置控制響應圖

55

7組合語言說明

本節將針對 DC馬達伺服控制實驗專用的程式模組進行功能與程式碼的說明其

有關於波形產生器與資料擷取模組等說明如下

SIN_waveasm 正弦波產生器 PWM_waveasm 方波產生器 IIR1_filterasm 一階濾波器 DAS4asm 資料蒐集模組

弦波產生器

此模組會產生週期性的正弦波方塊圖如下

outfrq

kBiasbias

ampkAmp

kFrqth

kThf=1TB

θ

A

其中

1正弦波有四個參數振幅(A)頻率(F)相位(θ)和偏移(B)其公式為 out = A sin(2πF t +θ) + B 2對於單純的正弦波產生器所對映的參數包括 kAmp 振幅值 kFrq 頻率值kFrq=655368000Hz其中 Hz的範圍為 0~4000例如 1000Hz =gt frq=8192 100Hz =gt frq=819 10Hz =gt frq=82 1Hz =gt frq=8 kTh 相角值0~255代表 0~360的相位當 th=0 時為正弦波 th=64 時為餘弦波 th=128時為反相波依此類推 kBias偏移值 3對於可調變的正弦波產生器其對映的輸入點為 amp 控制振幅的輸入點可產生調幅(AM)波形 frq 控制頻率的輸入點可產生調頻(FM)波形 th 控制相位的輸入點可產生調相(PM)波形 bias控制偏移的輸入點可產生雙頻混波(相加)波形 4若不使用調變功能時各個輸入點時的預設值為 amp 指向 kAmp 的位址 frq 指向 kFrq 的位址

56

th 指向 kTh 的位址 bias指向 kBias的位址

模組程式範例SIN_WAVEasm

local amp R0 IP kAmp 輸入點sin波的振幅 local frq R1 IP kFrq 輸入點sin波的頻率 local th R2 IP kTh 輸入點sin波的相角 local bias R3 IP kBias 輸入點sin波的中心偏移 local out R4 OP 輸出點sin波輸出 local tab R5 TP 表格指標指向 sin[256]的表格 local ang R6 內部變數相位角65536=360deg local kAmp R7 1000 參數振幅值 local kFrq R8 1000 參數頻率值=655368000Hz local kTh R9 0 參數相角值360deg=256 local kBias R10 0 參數偏移值 data 11 模組變數區長度及初值 initial 啟動程序 WR ang0 WR out0 ang=out=0 RET timer 即時控制程序(8KHz) RD ang ADD (frq) WR ang ang+=frq SFR 8 ADD (th) AND 255 ACC=sin(ang256+th) ADD tab WRH RDM table-look-up MUL (amp) SFR 12 ADD (bias) WR out out=ACCamp4096+bias RET table tab 256 sin[256]表格區10=4096 0 101 201 301 401 501 601 700 00~070deg 799 897 995 1092 1189 1285 1380 1474 08~0F 1567 1660 1751 1842 1931 2019 2106 2191 10~17 2276 2359 2440 2520 2598 2675 2751 2824 18~1F 2896 2967 3035 3102 3166 3229 3290 3349 20~27 3406 3461 3513 3564 3612 3659 3703 3745 28~2F 3784 3822 3857 3889 3920 3948 3973 3996 30~37 4017 4036 4052 4065 4076 4085 4091 4095 38~3F 4096 4095 4091 4085 4076 4065 4052 4036 40~4790deg 4017 3996 3973 3948 3920 3889 3857 3822 48~4F 3784 3745 3703 3659 3612 3564 3513 3461 50~57 3406 3349 3290 3229 3166 3102 3035 2967 58~5F

57

2896 2824 2751 2675 2598 2520 2440 2359 60~67 2276 2191 2106 2019 1931 1842 1751 1660 68~6F 1567 1474 1380 1285 1189 1092 995 897 70~77 799 700 601 501 401 301 201 101 78~7F 0 65435 65335 65235 65135 65035 64935 64836 80~87180deg 64737 64639 64541 64444 64347 64251 64156 64062 88~8F 63969 63876 63785 63694 63605 63517 63430 63345 90~97 63260 63177 63096 63016 62938 62861 62785 62712 98~9F 62640 62569 62501 62434 62370 62307 62246 62187 A0~A7 62130 62075 62023 61972 61924 61877 61833 61791 A8~A8 61752 61714 61679 61647 61616 61588 61563 61540 B0~B7 61519 61500 61484 61471 61460 61451 61445 61441 B8~BF 61440 61441 61445 61451 61460 61471 61484 61500 C0~C7270deg 61519 61540 61563 61588 61616 61647 61679 61714 C8~CF 61752 61791 61833 61877 61924 61972 62023 62075 D0~D7 62130 62187 62246 62307 62370 62434 62501 62569 D8~DF 62640 62712 62785 62861 62938 63016 63096 63177 E0~E7 63260 63345 63430 63517 63605 63694 63785 63876 E8~EF 63969 64062 64156 64251 64347 64444 64541 64639 F0~F7 64737 64836 64935 65035 65135 65235 65335 65435 F8~FF

就程式結構而言說明如下

timer 即時控制程序(8KHz) RD ang ADD (frq) WR ang ang+=frq SFR 8 ADD (th) AND 255 ACC=sin(ang256+th) ADD tab WRH RDM table-look-up MUL (amp) SFR 12 ADD (bias) WR out out=ACCamp4096+bias RET

1基本上我們以查表法計算 sin()其輸入θ的範圍為 0~255對映到 0~360deg其輸出 sin(θ)的範圍為+-4096對映到+-10的範圍

2建立一個內部變數 ang其範圍為 0~65535對映到 0~360的相位角 3每個timer程序都執行 ang+=frq的動作更新目前的相位角接著依照 ang的相位角查表得到 sin(ang256+th)值

4由於表格長度為 256-word所以必須將 ang256才能得到正確的對映關係而 th範圍為 0~255所以不需要像 ang一般的做額外處理

5sin()的範圍為(+1-1)而在表格中以(+4096~-4096)的型式記錄相當於 10=4096所以執行 Asin()時還要用 SFR12指令做4096的動作才能正確的取得輸出值

58

6就頻率輸入 frq而言其計算原則是將θ=ωt轉化成θ=Σ(ωdt)因為抽樣頻率

為 8KHz所以 dt=18000而得到 frq=655368000Hz公式其中 Hz為真正的頻率在 8KHz的抽樣頻率下其範圍為 0~4000

鋸齒波產生器

此模組會產生週期性的鋸齒波方塊圖如下

outfrq

kBiasbias

ampkAmp

kFrqth

kThf=1TB

θ

A

其中

1鋸齒波也有四個參數振幅(A)頻率(F)相位(θ)和偏移(B)和正弦波的定義完全一致唯一的差異是其輸出為鋸齒波而非正弦波

2基本波形是從週期開始時為 0一直遞增到週期結束時到達最高點然後立刻回歸

到 0重新開始 3以程式結構而論鋸齒波程式幾乎就是正弦波的相位計算部分只差沒有正弦波的

查表處理而已

模組程式範例SAW_WAVEasm

local amp R0 IP kAmp 輸入點sin波的振幅 local frq R1 IP kFrq 輸入點sin波的頻率 local th R2 IP kTh 輸入點sin波的相角 local bias R3 IP kBias 輸入點sin波的中心偏移 local out R4 OP 輸出點sin波輸出 local ang R5 內部變數相位角65536=360deg local kAmp R6 1000 參數振幅值 local kFrq R7 1000 參數頻率值=655368000Hz local kTh R8 0 參數相角值360deg=256 local kBias R9 0 參數偏移值 data 11 模組變數區長度及初值 initial 啟動程序 WR ang0 WR out0 ang=out=0 RET timer 即時控制程序(8KHz) RD ang ADD (frq) WR ang ang+=frq SFR 8 ADD (th) AND 255 ACC=(ang256+th)amp0x00ff MUL (amp) SFR 8 ADD (bias) WR out out=ACCamp256+bias

59

RET

脈衝波產生器

outfrq

kBiasbias

ampkAmp

kFrqth

kThf=1TB

θ

A

pwm

kDutyduty

此模組會產生週期性的脈衝波方塊圖如下

其中

1脈衝波有五個參數其中振幅(A)頻率(F)相位(θ)和偏移(B)四個參數和正弦波

定義完全一樣另外再增加一個負載率(D) 2基本波形是從週期開始時為 1隔段時間後換為 0然後持續到週期結束再重新開始其中 1所佔有的比例就是負載率當 D=0時為 0而 D=255時為 100

3和其他參數類似負載率(D)以 duty為其輸入點而以 kDuty為其參數值

模組程式範例PLS_WAVEasm

local amp R0 IP kAmp 輸入點脈衝波的振幅 local frq R1 IP kFrq 輸入點脈衝波的頻率 local th R2 IP kTh 輸入點脈衝波的相角 local bias R3 IP kBias 輸入點脈衝波的中心偏移 local duty R4 IP kDuty 輸入點脈衝波的負載率 local out R5 OP 輸出點脈衝波輸出 local ang R6 內部變數相位角65536=360deg local kAmp R7 1000 參數振幅值 local kFrq R8 1000 參數頻率值=655368000Hz local kTh R9 0 參數相角值360deg=256 local kBias R10 0 參數偏移值 local kDuty R11 128 參數負載率100 =256 data 12 模組變數區長度及初值 initial 啟動程序 WR ang0 WR out0 ang=out=0 RET timer 即時控制程序(8KHz)

60

RD ang ADD (frq) WR ang ang+=frq SFR 8 ADD (th) AND 255 ACC=(ang256+th)amp0x00ff SUB (duty) RD (amp) JLT t1 RD 0 ACC=(amp0) t1 ADD (bias) WR out out=ACC+bias RET

IIR 一階濾波器

此模組執行一階的 IIR濾波器方塊圖如下

kau x

Z-1

+

+

-

+低通濾波器

高通濾波器dx lp

hp

濾波器參數的計算公式如下

1假設濾波器的頻寬為 hz則 ωn=hz628 2若系統頻率為 8KHz則抽樣週期 dT為 dT=dt8000 其中 dt為模組參數 3則濾波器參數為 ka=ωndT4096或是 =hzdt62880004096即 =hzdt32 4當 dt決定後所允許的訊號頻寬為(4000dt)換句話說訊號頻寬會因為 dt增加而下降

為了方便實驗的運用下面列出常用的參數對照表

濾波頻寬

(Hz)

10 20 50 100 200 500 1000 2000

訊號頻寬

(Hz)

400 800 2000 4000 4000 4000 4000 4000

模組參數 dt 10 5 2 1 1 1 1 1

模組參數 ka 320 320 320 320 640 1600 3200 6400

表格的運用方式如下

1首先決定濾波頻寬 2接著查表找出對映的參數 dt和 ka 3再查表得到對映的訊號頻寬以決定是否需要串接前級濾波器

61

模組程式範例IIR1_FILTERasm

local u R0 IP 輸入點濾波器輸入 local lp R1 OP 輸出點低通濾波器輸出 local hp R2 OP 輸出點高通濾波器輸出 local dt R3 1 參數抽樣週期 local ka R4 4096 參數增益 ka10=4096 local prd R5 內部變數抽樣週期用 data 6 模組變數區長度 initial 開機啟動程序 WR lp0 WR hp0 WR prd1 RET lp=hp=0prd=1 timer 即時控制程序 SUB prd1 JNZ b9 if (--prdgt0) return RD dt WR prd prd=dt RD (u) SUB lp WR hp hp=u-lp MUL ka SFR 12 ADD lp WR lp lp+=(hpka4096) b9 RET

資料蒐集模組

資料蒐集模組是一個非常特殊的模組專門配合 eTTY 程式中的示波器使用

模組程式範例DAS4asm

local cmd R0 0 紀錄命令0=停止1=前置記錄2=正觸發4=負觸發6=觸發記錄 local dt R1 1 抽樣週期每 dT抽樣一次 local tab R2 TP DAS表格啟始位址 local cnt R3 0 目前記錄點(0~255) local ch1 R4 0 定義頻道1的變數位址 local ch2 R5 0 定義頻道2的變數位址 local ch3 R6 0 定義頻道3的變數位址 local ch4 R7 0 定義頻道4的變數位址 local trg R8 0 定義觸發頻道的變數位址 local th R9 0 觸發準位 local tail R10 0 觸發後的抽樣個數 local buf R11 1 抽樣計數(1~dt) local pnt R12 表格位址計算pnt=tab+cnt4 local len R13 表格長度計算(0~256) data 14 定義模組變數區的長度 table tab 1024 定義表格的長度 initial 啟動程序 WR cmd0 RET cmd=0 timer 控制程序

62

ADD cmd0 JZ t9 if (cmd==0) return SUB buf1 JNZ t9 if (--buf)gt0) return RD dt WR buf dt=buf RD cnt ADD 1 AND 0xff WR cnt cnt=(cnt+1)amp0xff SFL 2 ADD tab WR pnt pnt=tab+cnt4 RD (ch1) WR (pnt) ADD pnt1 pnt++=ch1 RD (ch2) WR (pnt) ADD pnt1 pnt++=ch2 RD (ch3) WR (pnt) ADD pnt1 pnt++=ch3 RD (ch4) WR (pnt) pnt =ch4 RD cmd SUB 1 JZ t9 SUB 1 JZ t2 SUB 1 JZ t3 SUB 1 JZ t4 SUB 1 JZ t5 SUB 1 JZ t6 JR t7 t2 RD (trg) SUB th JGE t9 ADD cmd1 JR t9 wait trgltth t3 RD (trg) SUB th JLE t9 JR t6 wait trggtth t4 RD (trg) SUB th JLE t9 ADD cmd1 JR t9 wait trggtth t5 RD (trg) SUB th JGE t9 JR t6 wait trgltth t6 WR len0 WR cmd7 len=0cmd=7 t7 ADD len1 SUB tail JLT t9 WR cmd0 if ((++len)gt=0x80) cmd=0 t9 RET

與 DC 馬達控制相關的程式模組有以下 4個程式模組說明如下

(1)加減速控制模組 ACC_controlasm (2)光電盤輸入模組 POS_inputasm (3)PWM輸出模組 PWM_outputasm (4)PD控制模組 PD_controlasm

71加減速控制模組 此程式模組主要功能在於執行位置控制的加減速命令修正其數學模式採用 Lynn

濾波器的架構參見下圖

cmd

2

+

old Z -1

-

Z -1

Z -1

Z-1

Z-1x0 x1 x8 x9 x16

+ -

++

2

Z-1

Z-1 y1 y2

+

-

y0

+ +

sumZ-1

+164

12

out

dif

+

63

加減速控制模組方塊圖

其中

1Lynn 濾波器的階數固定成八階也就是 m=8其公式為 H(z) = (1-2Z-m+Z-2m)(1-2Z-1+Z-2)m2

2因為m=8所以m2=64因此最後計算低通濾波的部份時要先做除 64的運算 3因為低通濾波(lp)和 y0之間有 64倍的差異代表 y0y1y2的變化範圍比濾波器輸

入值要擴大許多例如輸入值在+-1000變化時y0y1y2很可能會在+-64000之間變化這範圍已經超出整數處理的範圍很可能會造成錯誤的計算結果

4所以在實驗時輸入值的變化範圍必須控制在+-500之間以保證計算的正確性 5對於 Lynn 濾波器當 m=8時其濾波器的頻寬固定為 1 kHzmdt也就是 dt=1時頻寬為 125 Hz dt=2時頻寬為 625Hz依此類推 6對於 Lynn 濾波器其濾波器的延遲固定為 m個抽樣週期因此設計 hp = x8 - lp 即可得到高通濾波器的對應結果 7其中乘 2和除 64的運算以移位運算取代所以整個程式中並無任何乘法運算 8Lynn 濾波器本身並不是穩定濾波器所以在程式啟動時必須確實的將所有狀態

(x0~x16)歸零否則會產生不穩定的狀態輸出

因為 Lynn濾波器中所有參數固定所以除了抽樣週期 dt 之外並無任何可調參數

抽樣週期 dt 可以控制頻寬dt 越大則濾波器頻寬越低

將步階命令值的輸出送入 Lynn 濾波器中經由低通濾波器的效應可以減緩命

令的變化程度達到加減速控制的目的以下為使用 Lynn 濾波器型式實現加減速控

制的組合語言程式列印 如欲更進一步瞭解 Lynn 濾波器與 FIR 數位濾波器之間的關係可以參考通訊實驗

四數位濾波器設計(FIR)中之說明

ACC_controlasm程式列印 local cmd R0 IP 輸入點位置命令

local out R1 OP 輸出點加減速處理後的位置命令

local dif R2 OP 輸出點位置微分命令

local axis R3 0 馬達編號0=X1=Y2=Z3=C

local old R4 內部變數微分計算用

local sumL R5 內部變數積分計算用

local sumH R6 內部變數積分計算用

local y0 R7 內部變數y(0~2)

local y1 R8 local y2 R9

local x0 R10 內部變數x(0~16)

local x1 R11 local x2 R12 local x3 R13 local x4 R14

local x5 R15 local x6 R16 local x7 R17 local x8 R18

local x9 R19 local x10 R20 local x11 R21 local x12 R22

local x13 R23 local x14 R24 local x15 R25 local x16 R26

64

data 27 模組變數區長度

initial 開機啟動程序

WR dif0 RD (cmd) WR out WR old dif=0 out=old=cmd

sumHL=cmd64

SFL 6 WR sumL RD out SFR 10 SGN 5 WR sumH

RPT 17 WR x00 RPT 3 WR y00 RET x[0~16]=0y[0~2]=0

timer 即時控制程序

RD (cmd) SUBX old WR x0 x0=cmd-old old=cmd

SUB x81 ADD x16 ADD y11 SUB y2 WR y0 y0=x0-2x8+x16+2y1-y2

SGN ADD sumL WR sumL RDH ADC sumH WR sumH sumHL+=y0

WRH RD sumL SFR 6 WR out out=sumHL64

RD y0 SGN SFR WR dif dif=y032mm

RD x0 RPT 16 RDX x1 x[i]=x[i-1] i=1~16

RD y0 RDX y1 WR y2 y[i]=y[i-1] i=1~2

b9 RET

72光電盤輸入模組

DC馬達的位置由光電盤量測之預設儲存於 0xac與 0xbe二個輸入埠位址中其中位址 0xac記錄 X軸馬達的位置位址 0xbe記錄 Y軸馬達的位置由於本實驗的DC馬達接在 Y軸的位置上因此程式中直接選用 Y軸的輸入 光電盤位置輸入的程式列印如下其中速度由位置的差分而得至於馬達的位置

則使用內部 2個 word加以記錄精度為 32位元 POS_inputasm程式列印 local spd R0 OP 輸出點速度量測值

local ang R1 OP 輸出點角度量測值

local angH R2 內部變數角度的 32 位元部分

local mode R3 0x308 模式選擇15MHzAB 相正反向輸入

local pht R4 0xac 輸入阜地址光電盤輸入(0xac)

local phtc R5 0xbe 輸入阜地址光電盤模式(0xbe)

local old R6 內部變數速度更新用

data 7 模組變數區長度

initial 開機啟動程序

RD mode WR (phtc) phtc=mode

RD (pht) WR old WR spd0 RET old=phtspd=0

timer 即時控制程序

RD (pht) SUBX old SGN 11 WR spd spd=(pht-old)old=pht

65

ADD ang WR ang angHL+=spd

RDH ADC angH WR angH

RET

73 PWM輸出控制模組 模組方塊

cmd PWM輸出

程式說明 1在開機時將切換保護時間寫到輸出阜 0xbc上其中切換保護值為 0~6360=5us 2在每次 timer interrupt時將 cmd訊號處理後寫到輸出阜 0xb8上

PWM_outputasm程式列印 local cmd R0 IP gnd 輸入點v相命令

local gain R1 4096 參數輸出增益1=4096

local bias R2 2048 參數輸出偏壓0=2048

local limit R3 4095 參數輸出極限1=4095

local zone R4 0x88f0 參數頻率=12KHz切換保護=5us

local pwm R5 0xb8 輸出阜地址PWM0 輸出(0xb8)

local mode R6 0xbc 輸出阜地址PWM 模式(0xbc)

local p0md R7 0xf8 輸出阜地址port0 模式(0xf8)

local gnd R8 0 輸入接地點

data 9 模組變數區長度

initial 開機啟動程序

RD bias WR (pwm) pwm=bias

RD 0xffff WR (p0md) set port0 mode

RD zone WR (mode) RET mode=zone

stop 關機保護程序

RD bias WR (pwm) RET pwm=bias

timer 即時控制程序

RD (mode) xor 1 and 1 WR (mode) trigger watch-dog

RD (cmd) MUL gain SFR 12 ADD bias ACC=(cmdgain4096)+bias

MAX 0 MIN limit WR (pwm) pwm=limit(ACC)

RET

66

74 PD 控制模組

PD控制的模組方塊參見圖二十一所示其中比例控制的部份直接由增益 kp加以調整微分控制的部份則由誤差的差分經增益 kd的調整而得

Σ+

-

cmd

fdk

err out

Σ

pk

dk

Σ

+

+

+

-

old1minusZ

PD控制器的方塊圖

PD_controlasm程式列印 local cmd R0 IP gnd 輸入點位置命令(可忽略)

local fdk R1 IP gnd 輸入點位置回授(可忽略)

local out R2 OP 輸出點用以控制速度迴路

local kp R3 256 參數增益 kp10=256

local kd R4 0 參數增益 kd10=256

local err R5 0 內部變數

local old R6 0 內部變數

local gnd R7 0 無輸入時的短路點

data 8 模組變數區長度

initial 開機啟動程序

WR out0 WR old0 RET out=old=0

timer 即時控制程序

RD (cmd) SUB (fdk) PRTF WR err

MUL kp SFR 8 P=(cmd-fdk)kp256

RDS err SUBX old MUL kd SFR 8 D=(err-old)kd256

ADDS

WR out out=P+D

RET

程式中預設增益值的 10以整數值 256為基底因此使用 SFR 8的指令加以調

整另外在在計算微分項的程式部份用到 SUBX old的指令其詳細的暫存器動作如

下 參考 piDSP的指令說明SUBX指令將總共用到 3個時序參考錯誤 找不到參照

67

來源在時序 1時將原先 AX的資料拷貝一份到 HX中時序 2時正式執行減

法的動作所以 AX暫存器中的內容會變成 err-old時序 3時DSP會將存放在 HX暫存器中的內容拷貝一份到 old的記憶體中也就是經由 SUBX此一精簡指令將

同時完成計算差分所需要的相減與資料疊代的動作有效的利用 piDSP控制器 DSP核心的精簡指令將可以大幅提昇系統的計算速度

HX AXoldSUBXerr err

old

err

errerr olderr minus

1_err

errerr olderr minus err

1_err

1

2

3

SUBX的指令時序與暫存器變化

68

8附錄快速安裝說明

光纖網路通訊 FPGA 發展系統 (適用於 WIN-XP200098 系統)

快速安裝說明

26Pin 負載輸出入埠

雙電源︵5

12

伏︶輸入埠

單電源︵5

伏︶輸入埠

USB

光纖線輸

號 光纖線輸出埠

入 傳 埠

首先將光碟片 RFFPGA 目錄檔案拷貝在您工作硬碟裡面

第一次安裝時先將 USB 傳輸線接上電腦主機將電源供應器接上 FPGA 模組此時電

腦會出現安裝 USB-Serial 驅動程式選擇從清單安裝此驅動程式放置在光碟片

RFFPGA-USBdrive 選擇您目前安裝系統

可選擇 WIN-98WIN-MEWIN-2000WIN-XP 系統配合您現在工作電腦作業系統

69

注意一般電腦 USB 埠很多插口當您安裝驅動程式時是配合您當時插入之埠

下次如您插入不同接口埠時電腦會再次要求安裝驅動程式這是正常現象請再次安

裝驅動程式否則無法使用

FPLC 操作

首先進入 RFFPGA裡子目錄 testASM直接點選 fPLCexe 出現下面操作畫面(也可直接將

此檔案放置桌面直接點選)

(或者選擇 File 再執行 Setuphellip 選擇您要執行 CAI 檔)

70

進入下面操作畫面 首先使用滑鼠在 FPGA下載按鈕單擊動作使 FPGA變成 DSP晶片 實驗一至實驗五皆為使用 DSP組合語言設計程式其原始程式分別為 testASM1至testASM5可使用 texPad 開啟與編輯程式內容 實驗三與實驗五多有 IO控制動作 當選擇實驗三時出現下面畫面

71

eM_USB 模組

數字型 LED

0 1 2 34 5 6 78 9 A BC D E F

燈號型 LED

44 鍵盤

ADC0 ADC1 DAC0 DAC1

LED 選擇KEY 選擇

模 式 1

0123

注意操作畫面 3與 4 說明開關與按鍵選擇位置後選擇程式下載再按程式啟動如您

按下 0-3按鍵時燈號型 LED會有不同方向閃爍顯示程式停止時結束所有 IO控制動作再按回首頁選擇其他實驗 實驗四與實驗五

模式3

0 1 2 34 5 6 78 9 A BC D E F

按照上面開關選擇直接操作如果以上實驗皆能按照正常操作表示您光纖網路通訊

FPGA發展模組以能正常使用 注意 開機與關機動作順序如下

開機電腦啟動 --- eM_USB 模組電源接上 --- USB 接上電腦 ---

啟動 FPLC 軟體 --- 下載 FPGA 程式

關機關閉 FPLC 軟體 --- eM_USB 模組電源拔掉 --- 拔掉電腦 USB 接頭 ---關掉

電腦

如果以上順序有亂可能造成 USB 找不到驅動造成無法下載經過幾次測試還是

無法下載建議重新啟動電腦主機按照正確步驟操作

72

FPGA 下載操作

進入 FPLC 操作系統按照下列步驟選擇節點模組與下載 bit FPGA 檔案

在 VHDLDEMO 子目錄下您可以選擇您目前 FPGA 種類型號在此型號下我們已將 VHDL

與數位邏輯設計課本範例全部放於此處

73

光纖網路連線 FPGA 下載操作

首先利用光纖線將 eM_USB0 模組光纖輸出埠接至 eM_USB1 模組光纖輸入埠以此

類推最後再將最後 eM_USBN 模組光纖輸出埠接至 eM_USB0 模組光纖輸入埠配置

如附圖方式

個人電腦(Windows) eM_USB模組

0USB

eM_USB模組1

光纖網路

eM_USB模組2

eM_USB模組N

配置完成後進入 FPLC 系統首先必須先將 Node00 下載在 testASM 子目錄裡

piDSPv0bit 檔讓 eM_USB0 模組 FPGA 具備 DSP 功能才能執行光纖網路通訊

操作如下

此時您就可以選擇分別下載至各模組 FPGA 檔 bit

74

安裝 FPLC 注意事項

當您進入 FPLC 時

按 FILE 選擇 programhellip 選擇檔案為 exp_dcmplc 出現下面畫面

正常顯示畫面為

75

DOS 環境操作

在 PC 端的操作是在 Windows 環境中的 DOS 視窗中執行指令範例如下

eFPGA progNETbit 下載 FPGA電路至網路節點0(即 USB節點)中 eFPGA testLEDbit 1 下載 FPGA電路至網路節點1中

對於單一節點的控制程序如下

1將 eM_USB模組連結個人電腦的 USB端 2eM_USB模組開機 3執行下載指令即可 eFPGA xxxxbit 4若要更改 FPGA電路只要重新執行下載指令即可

對於多個網路節點的控制程序如下

1第一組 eM_USB模組連結個人電腦的 USB端再以光纖網路依序其他各節點 2連接 USB界面者為模組0從光纖發射端連接出去的模組為1依此類推 3將所有 eM_USB模組開機 4執行下載指令如下 eFPGA progNETbit 模組0必須先下載指定的 FPGA電路 eFPGA xxxxbit 1 再依序下載其他網路模組的 FPGA電路 eFPGA yyyybit 2 eFPGA zzzzbit 最後再重新下載模組0的 FPGA電路 5換句話說模組0必須先執行 progNETbit讓光纖網路接受 FPGA控制後才能透過光纖網路下載至其他節點等全部網路節點下載完畢後再將模組0的 FPGA重新下載讓模組0也可自由執行任意的 FPGA電路

6若要更改某一個網路節點中的 FPGA電路只要重新執行下述指令 eFPGA progNETbit 模組0必須先下載指定的 FPGA電路 eFPGA yyyybit 2 下載指定網路模組的 FPGA電路 eFPGA zzzz bit 最後再重新下載模組0的 FPGA電路 換句話說除非模組0中的 FPGA已經包括光纖網路管理電路否則一定要先在

模組0中下載網路管理電路後才能下載指定網路節點的 FPGA電路

76

光纖網路通訊 FPGA 發展系統

系統配置

光纖網路通訊 FPGA 發展系統的系統配置圖如下

個人電腦(Windows) eM_USB模組

0USB

eM_USB模組1

光纖網路

eM_USB模組2

eM_USB模組N

其中

1基本模組為 eM_USB模組可用 USB界面和個人電腦連線並提供 USB對光纖網路的轉換功能使得個人電腦可以獨立控制光纖網路中的每個網路節點

2eM_USB模組也可以作為光纖網路中的網路節點透過光纖網路而接受個人電腦的

監控 3就個人電腦而言不論是 USB界面直接連結或是以光纖網路間接連結的 eM_USB模組都是可以直接監控的網路節點最多可以同時控制一個 USB節點和 30個網路節點

4對於每一個網路節點個人電腦都可執行 eM_USB模組中 FPGA的電路下載工作並在適當的 FPGA電路配合下可執行 eM_USB模組中 FPGA內部電路的讀寫控制 5透過適當的 FPGA電路設計各網路節點都可透過光纖網路和其他任何網路節點

作同步通訊執行 FPGA內部記憶體的資料交換資料交換頻率可達 1KHz以上

77

網路模組配置

每個網路模組的標準配置圖如下

eM_USB模組光纖網路

USB eM_FPGA卡

eM_DEMO模組

eM_EXP實驗模組

DC電源

其中

1網路模組以 eM_USB模組為主提供基本的 USB界面和光纖網路連線 2eM_USB模組中的 FPGACPLD採用插卡型式可選擇不同的 eM_FPGA卡包括

eM_2V1K卡可選用 Virtex系列的 XC2V250和 XC2V1000 eM_3S1K卡可選用 Spartan3系列的 XC3S400XC3S1000和 XC3S1500 eM_3S50卡可選用 Spartan3系列的 XC3S50XC3S200和 XC3S400 eM_95XL卡可選用 9500XL系列的 XC95144XL和 XC95288XL 3eM_USB模組中的對外連線有兩種一種是 26P接頭用以連接既有的各種實驗模

組另一種是兩組 50P接頭將 FPGA中各接腳引出用以連接專題實驗 4eM_DEMO模組就是插上 50P接頭的教學模組其中包括 LED 數字顯示和 44鍵盤也具備兩組的 ADC和兩組的 DAC接頭提供類比訊號的測試工具

常用的實驗組合包括

1精簡組合包括(eM_USB+eM_FPGA)提供基本的網路節點適用於專題實驗 2標準組合包括(eM_USB+eM_FPGA+eM_DEMO)提供基礎 FPGA設計的教學實驗

3實驗組合包括(eM_USB+eM_FPGA+eM_DEMO+eM_EXP)提供進階的 FPGA實驗可依需求選用不同的實驗模組

78

eM_USB 模組

eM_USB 模組的電路配置圖如下

TxRx

DCPower

USB

JP2

JP3

光纖界面

外加電源

PC連線

JP1

eM_FPGA模組

FT232 CPLD FlashROM

SRAM

10cm

6cm

JP4

其中

1對外的連線接頭包括 DC電源 可選擇單電源(5V)或是多電源(5V+12V-12V)兩種 USB界面 直接連接個人電腦 光纖界面連接光纖網路 2實驗界面包括 JP1負責內部 CPLD的電路下載 JP2JP3兩組 50P的擴張用接頭 JP4 標準 26P接頭用以連接各種實驗模組 3內部的電路配置包括 A以 SO-DIMM接頭連接各種 eM_FPGA卡 B內附 EEPROMFlashROM和 SRAM提供 FPGA作應用測試 C以一顆 FT232BM作為 USB界面解碼而以一顆 CPLD作為光纖網路解碼 D提供各種 eM_FPGA卡的電路下載功能 4內附五顆 LED由上而下依序為 usbLED指示 USB界面的讀寫狀態 tstLED可由 FPGA電路自行定義 stsLED可由 FPGA電路自行定義 RxLED 可由 FPGA電路自行定義 TxLED 可由 FPGA電路自行定義

79

外部接腳定義

外部接頭的接點順序圖示如下

上視圖

JP11 9 JP4

126225

JP31

50249

JP21

50249

而各接頭的接點定義如下

JP1 JP4 JP2 JP3 1+33V 1+12V 2+12V 1 GND 2 GND 1 GND 2 GND 2GND 3 ADC 4 DAC 3POWER 4ALARM 3 +5V 4 +5V 3nc 5 yPB2 6 yPB3 5RxNET 6TxNET 5+12V 6+12V 4TCK 7 yPB1 6 yPB4 7RxUSB 6TxUSB 7-12V 6-12V 5nc 9 yPB0 10yPB5 9RxCAN 10TxCAN 9 ADC 10 DAC 6TDO 11yPB6 12yPB7 11P0D0 12P0D1 11P1D0 12P1D1 7TDI 13yGND 14yPC3 13P0D2 14P0D3 13P1D2 14P1D3 8nc 15yPC2 16yPC1 15P0D4 16P0D5 15P1D4 16P1D5 9TMS 17yPC0 18yPA0 17P0D6 18P0D7 17P1D6 18P1D7 19yPA1 20yPA2 19P0D8 20P0D9 19P1D8 20P1D9 21yPA3 22GND 21P0D10 22P0D11 21P1D10 22P1D11 23GND 24+5V 23P0D12 24P0D13 23P1D12 24P1D13 25+5V 26nc 25P0D14 26P0D15 25P1D14 26P1D15 27P2D0 28P2D1 27PxA0 28PxA1 29P2D2 30P2D3 29PxA2 30PxA3 31P2D4 32P2D5 31PxA4 32PxA5 33P2D6 34P2D7 33PxA6 34PxA7 35P2D8 36P2D9 35PxB0 36PxB1 37P2D10 38P2D11 37PxB2 38PxB3 39P2D12 40P2D13 39PxB4 40PxB5 41P2D14 42P2D15 41PxB6 42PxB7 43ADC0 44ADC1 43PxC0 44PxC1 45ADC2 46ADC3 45PxC2 46PxC3 47ADC4 48ADC5 47PxC4 48PxC5 49DAC0 50DAC1 49PxC6 50PxC7

80

eM_FPGA 模組

在各種 eM_FPGA 模組中FPGA 對外電路的標準配置圖如下

24576MHz

FlashROM

26PSRAM

EEPROM

mD[8]

yPA[4]

FPGACPLD

mA[19]mRDmWRmCSeeCKeeCSeeDIeeDO

光纖界面 RxNETTxNET

USB 界面 RxUSBTxUSBCLK24MPOWERALARM

LED

tstLEDstsLEDRxLEDTxLED

yPB[8]yPC[4]

ADCDAC

ADC[8]

實驗模組

ADC[2]

DAC[2]

xPA[4]

xPB[8]

xPC[4]

基礎實驗

其中

1FPGACPLD可以選擇下述幾種 XC2V250XC2V1000 採用 eM_2V1K模組其中 FPGA為 FG456包裝 XC3S400XC3S1000XC3S1500採用 eM_3S1K模組其中 FPGA為 FG456包裝 XC3S400XC3S1000XC3S1500採用 eM_3S1K模組其中 FPGA為 FG456包裝 XC3S50XC3S200XC3S400 採用 eM_3S50模組其中 FPGA為 TQ144包裝 XC95144XLXC95288XL 採用 eM_95XL模組其中 CPLD為 TQ144包裝 2採用 FG456包裝者可以控制所有的 IO界面 3採用 TQ144包裝者只是不能控制 RAM和 FlashROM而可以控制其他所有的界面 4所有 FPGA模組都可自由選擇由 USB界面或是由光纖界面下載電路但是 CPLD模組只能固定由 USB界面下載電路

5所有 FPGACPLD模組都可透過 26P接頭連接既有的各種實驗模組

81

FPGA 接腳對照表

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

mD0 XD6 mD0 A17 C13 -- -- mD1 XD7 mD1 B17 D12 -- -- mD2 XD8 mD2 C17 D11 -- -- mD3 XD9 mD3 D17 C11 -- -- mD4 XD10 mD4 E17 D10 -- -- mD5 XD11 mD5 E16 C10 -- -- mD6 XD12 mD6 E14 D9 -- -- mD7 XD13 mD7 E13 D7 -- -- mA0 XD14 mA0 D13 C7 -- -- mA1 XD15 mA1 C13 D6 -- -- mA2 XA0 mA2 V5 C3 -- -- mA3 XA1 mA3 U5 C4 -- -- mA4 XA2 mA4 Y2 D3 -- -- mA5 XA3 mA5 Y1 D4 -- -- mA6 XA4 mA6 V4 E3 -- -- mA7 XA5 mA7 V3 E4 -- -- mA8 XA6 mA8 W2 F3 -- -- mA9 XA7 mA9 W1 F4 -- -- mA10 XA8 mA10 T2 G6 -- -- mA11 XA9 mA11 T1 K3 -- -- mA12 XA10 mA12 R4 K10 -- -- mA13 XA11 mA13 R3 L3 -- -- mA14 XA12 mA14 R2 L4 -- -- mRD XRD mRD R1 D5 -- -- mWR XWR mWR P6 C6 -- --

POWER P0A0 POWER B4 B20 P1 P5 ALARM P0A1 ALARM A4 A19 P2 P6 RxNET P0A2 RxNET C4 B19 P4 P7 TxNET P0A3 TxNET C5 A18 P5 P9 RxUSB P0B0 RxUSB B5 A15 P6 P10 TxUSB P0B1 TxUSB A5 B15 P7 P11 RxCAN P0B2 RxCAN D6 A14 P8 P12 RxCAN P0B3 TxCAN C6 B14 P10 P13

CLK24M CLK24M CLK24M E12 B12 P124 P38

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

PWM0H P3A0 P0D0 E6 A8 P21 P23 PWM0L P3A1 P0D1 E5 B8 P23 P24 PWM1H P3A2 P0D2 C2 B6 P24 P25 PWM1L P3A3 P0D3 C1 A5 P25 P26 PWM2H P3A4 P0D4 D2 B5 P26 P27

82

PWM2L P3A5 P0D5 D1 A4 P27 P28 PWMenb P3A6 P0D6 E4 B4 P28 P30 PHT1Z P3A7 P0D7 E3 A3 P30 P31 PHT1A P3B0 P0D8 G2 C1 P31 P32 PHT1B P3B1 P0D9 G1 C2 P32 P33 PHT0A P3B2 P0D10 H5 D1 P33 P34 PHT0B P3B3 P0D11 J6 D2 P35 P35 AMP0 P3B4 P0D12 H4 E1 P36 P39 AMP1 P3B5 P0D13 H3 E2 P40 P40 AMP2 P3B6 P0D14 H2 F2 P41 P41 AMP3 P3B7 P0D15 H1 G1 P44 P43 eeSK P0C3 P1D0 C10 B9 P20 P22 eeCS P0C2 P1D1 D10 A9 P18 P21 eeDI P0C1 P1D2 F10 B10 P17 P20 eeDO P0C0 P1D3 E10 B11 P15 P19 ssCK P0B7 P1D4 E8 A11 P14 P17 ssCS P0B6 P1D5 E7 A12 P13 P16 ssDI P0B5 P1D6 A6 B13 P12 P15 ssDO P0B4 P1D7 B6 A13 P11 P14

ppCLK P3C0 P1D8 K4 G2 P46 P44 ppDIN P3C1 P1D9 K3 K1 P47 P45 TxD P3C2 P1D10 K2 K2 P50 P46 RxD P3C3 P1D11 K1 L1 P51 P48

tstLED P3C4 P1D12 L5 L2 P52 P49 stsLED P3C5 P1D13 L4 M1 P53 P50 RxLED P3C6 P1D14 L3 M2 P55 P51 TxLED P3C7 P1D15 L2 N1 P56 P52

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

xPA0 P2A0 P2D0 AA3 N2 P59 P53 xPA1 P2A1 P2D1 Y4 T1 P60 P54 xPA2 P2A2 P2D2 AA4 T2 P63 P56 xPA3 P2A3 P2D3 AB4 U2 P68 P57 xPC0 P2A4 P2D4 W5 V1 P69 P58 xPC1 P2A5 P2D5 Y5 V2 P70 P59 xPC2 P2A6 P2D6 AA5 W1 P73 P60 xPC3 P2A7 P2D7 AB5 W2 P74 P61

-- P2B0 P2D8 V6 Y1 P76 P64 -- P2B1 P2D9 V7 Y2 P77 P66 -- P2B2 P2D10 W6 AA3 P78 P68

mCS P2B3 P2D11 Y6 AB4 P79 P69 mA15 P2B4 P2D12 V9 AA4 P80 P70 mA16 P2B5 P2D13 V10 AB5 P82 P71 mA17 P2B6 P2D14 W10 AA5 P83 P74 mA18 P2B7 P2D15 Y10 AA6 P84 P75 CS0 P2C0 ADC0 AA10 AB8 P85 P76

83

SDIN0 P2C1 ADC1 AB10 AA8 P86 P77 CS1 P2C2 ADC2 U10 AB9 P87 P78

SDIN1 P2C3 ADC3 U11 AA9 P89 P79 SCLK P2C4 ADC4 V11 AB10 P90 P80 CS2 P2C5 ADC5 W11 AA10 P92 P81

SDOUT P2C6 ADC6 Y11 AB11 P93 P82 LDAC P2C7 ADC7 AA11 AA11 P95 P83

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

xPB0 P1A0 PxA0 M1 M3 P135 P85 xPB1 P1A1 PxA1 M2 M4 P132 P86 yPB2 P1A2 PxA2 M3 N3 P131 P87 yPB3 P1A3 PxA3 M4 N4 P130 P88 yPB1 P1A4 PxA4 M5 T4 P129 P91 yPB4 P1A5 PxA5 M6 T5 P128 P92 yPB0 P1A6 PxA6 N1 U3 P127 P93 yPB5 P1A7 PxA7 N2 U4 P125 P94 yPB6 P1B0 PxB0 U13 V3 P119 P95 yPB7 P1B1 PxB1 V13 V4 P118 P96 xPB2 P1B2 PxB2 W13 W3 P116 P97 xPB3 P1B3 PxB3 Y13 W4 P113 P98 xPB4 P1B4 PxB4 AA13 Y3 P112 P100 xPB5 P1B5 PxB5 AB13 Y4 P96 P101 yPC3 P1B6 PxB6 U12 Y5 P97 P102 yPC2 P1B7 PxB7 V12 W5 P98 P103 yPC1 P1C7 PxC0 AB17 W11 P108 P113 yPC0 P1C6 PxC1 AA17 Y11 P107 P112 yPA0 P1C5 PxC2 Y17 W10 P105 P111 yPA1 P1C4 PxC3 W17 Y10 P104 P110 yPA2 P1C3 PxC4 AB18 W9 P103 P107 yPA3 P1C2 PxC5 AA18 W8 P102 P106 xPB6 P1C1 PxC6 Y18 W6 P100 P105 xPB7 P1C0 PxC7 W18 Y6 P99 P104

84

eM_DEMO 模組

eM_DEMO 模組的電路配置圖如下

eM_USB 模組

數字型 LED

0 1 2 34 5 6 78 9 A BC D E F

燈號型 LED

44 鍵盤

ADC0 ADC1 DAC0 DAC1

LED 選擇KEY 選擇

其中

1eM_DEMO模組的基本功能包括 A將 xPAxPBxPC等 16個 IO訊號引出控制 LED和鍵盤電路 B將 ADDA訊號引出並放大成+-10V的工作範圍 2LED和鍵盤可以選擇三種模式由 LED和 KEY 兩組開關作選擇圖示如下

模式1

0123

模式2 模式3

0 1 2 34 5 6 78 9 A BC D E F

0123

3模式14鍵輸入並搭配 16點的 LED燈號顯示其中 16點 LED分別對映到 xPA[0~3]xPB[0~7]和 xPC[0~3] 4組按鍵分別對映到 xPC[0~3] 4模式24鍵輸入並搭配四個 7段式數字顯示其中 數字顯示由 xPA[0~3]作數字掃瞄而由 xPB[0~7]作 7段式 LED控制 4組按鍵 分別對映到 xPC[0~3] 5模式316鍵輸入並搭配四個 7段式數字顯示其中 數字顯示由 xPA[0~3]作數字掃瞄而由 xPB[0~7]作 7段式 LED控制 16組按鍵由 xPA[0~3]作鍵盤掃瞄而由 xPC[0~3]作鍵盤讀取 6根據VHDL與數位邏輯設計的章節其中 第 1章至 10章的實驗採用模式1而 第 11章實驗採用模式2而 第 12章之後的實驗都採用模式3

85

FPGA UCF 定義

eM_3S1K 模組

NET CLK LOC = B12

NET XAlt0gt LOC = N2

NET XAlt1gt LOC = T1

NET XAlt2gt LOC = T2

NET XAlt3gt LOC = U2

NET XBlt0gt LOC = M3

NET XBlt1gt LOC = M4

NET XBlt2gt LOC = W3

NET XBlt3gt LOC = W4

NET XBlt4gt LOC = Y3

NET XBlt5gt LOC = Y4

NET XBlt6gt LOC = W6

NET XBlt7gt LOC = Y6

NET XClt0gt LOC = V1

NET XClt1gt LOC = V2

NET XClt2gt LOC = W1

NET XClt3gt LOC = W2

NET YAlt0gt LOC = W10

JP4 接頭

NET YAlt1gt LOC = Y10

NET YAlt2gt LOC = W9

NET YAlt3gt LOC = W8

NET YBlt0gt LOC = U3

NET YBlt1gt LOC = T4

NET YBlt2gt LOC = N3

NET YBlt3gt LOC = N4

NET YBlt4gt LOC = T5

NET YBlt5gt LOC = U4

NET YBlt6gt LOC = V3

NET YBlt7gt LOC = V4

NET YClt0gt LOC = Y11

NET YClt1gt LOC = W11

NET YClt2gt LOC = W5

NET YClt3gt LOC = Y5

在光碟片中 RFFPGAVHDLDEMOBIT3S1K 裡有 VHDL 與數位邏輯設計書本範例原始檔與合成檔

86

eM_3S50 模組

NET CLK LOC = P124

NET XAlt0gt LOC = P59

NET XAlt1gt LOC = P60

NET XAlt2gt LOC = P63

NET XAlt3gt LOC = P68

NET XBlt0gt LOC = P135

NET XBlt1gt LOC = P132

NET XBlt2gt LOC = P116

NET XBlt3gt LOC = P113

NET XBlt4gt LOC = P112

NET XBlt5gt LOC = P96

NET XBlt6gt LOC = P100

NET XBlt7gt LOC = P99

NET XClt0gt LOC = P69

NET XClt1gt LOC = P70

NET XClt2gt LOC = P73

NET XClt3gt LOC = P74

NET YAlt0gt LOC = P105

JP4 接頭

NET YAlt1gt LOC = P104

NET YAlt2gt LOC = P103

NET YAlt3gt LOC = P102

NET YBlt0gt LOC = P127

NET YBlt1gt LOC = P129

NET YBlt2gt LOC = P131

NET YBlt3gt LOC = P130

NET YBlt4gt LOC = P128

NET YBlt5gt LOC = P125

NET YBlt6gt LOC = P119

NET YBlt7gt LOC = P118

NET YClt0gt LOC = P107

NET YClt1gt LOC = P108

NET YClt2gt LOC = P98

NET YClt3gt LOC = P97

在光碟片中 RFFPGAVHDLDEMOBIT3S200 裡有VHDL與數位邏輯設計書本範例原始檔與合成檔

87

eM_95XL 模組

NET CLK LOC = SPIN38

NET XAlt0gt LOC = SPIN53

NET XAlt1gt LOC = SPIN54

NET XAlt2gt LOC = SPIN56

NET XAlt3gt LOC = SPIN57

NET XBlt0gt LOC = SPIN85

NET XBlt1gt LOC = SPIN86

NET XBlt2gt LOC = SPIN97

NET XBlt3gt LOC = SPIN98

NET XBlt4gt LOC = SPIN100

NET XBlt5gt LOC = SPIN101

NET XBlt6gt LOC = SPIN105

NET XBlt7gt LOC = SPIN104

NET XClt0gt LOC = SPIN58

NET XClt1gt LOC = SPIN59

NET XClt2gt LOC = SPIN60

NET XClt3gt LOC = SPIN61

NET YAlt0gt LOC = SPIN111

JP4 接頭

NET YAlt1gt LOC = SPIN110

NET YAlt2gt LOC = SPIN107

NET YAlt3gt LOC = SPIN106

NET YBlt0gt LOC = SPIN93

NET YBlt1gt LOC = SPIN91

NET YBlt2gt LOC = SPIN87

NET YBlt3gt LOC = SPIN88

NET YBlt4gt LOC = SPIN92

NET YBlt5gt LOC = SPIN94

NET YBlt6gt LOC = SPIN95

NET YBlt7gt LOC = SPIN96

NET YClt0gt LOC = SPIN112

NET YClt1gt LOC = SPIN113

NET YClt2gt LOC = SPIN103

NET YClt3gt LOC = SPIN102

在光碟片中 RFFPGAVHDLDEMOSVF95288XL 裡有VHDL與數位邏輯設計書本範例原始檔與合成

檔案

88

eM_FPGA 模組

NET CLK LOC = E12

NET XAlt0gt LOC = AA3

NET XAlt1gt LOC = Y4

NET XAlt2gt LOC = AA4

NET XAlt3gt LOC = AB4

NET XBlt0gt LOC = M1

NET XBlt1gt LOC = M2

NET XBlt2gt LOC = W13

NET XBlt3gt LOC = Y13

NET XBlt4gt LOC = AA13

NET XBlt5gt LOC = AB13

NET XBlt6gt LOC = Y18

NET XBlt7gt LOC = W18

NET XClt0gt LOC = W5

NET XClt1gt LOC = Y5

NET XClt2gt LOC = AA5

NET XClt3gt LOC = AB5

NET YAlt0gt LOC = Y17

JP4 接頭

NET YAlt1gt LOC = W17

NET YAlt2gt LOC = AB18

NET YAlt3gt LOC = AA18

NET YBlt0gt LOC = N1

NET YBlt1gt LOC = M5

NET YBlt2gt LOC = M3

NET YBlt3gt LOC = M4

NET YBlt4gt LOC = M6

NET YBlt5gt LOC = N2

NET YBlt6gt LOC = U13

NET YBlt7gt LOC = V13

NET YClt0gt LOC = AA17

NET YClt1gt LOC = AB17

NET YClt2gt LOC = V12

NET YClt3gt LOC = U12

在光碟片中 RFFPGAVHDLDEMOBIT2V250 裡有VHDL與數位邏輯設計書本範例原始檔與合成檔

89

Page 16: RFFPGA 直流馬達實驗手冊juniortek.com.tw/program/manual/RF-DC-mal.pdf · em_demo模組 em_dcm 直流伺服馬達 dc電源 rffpga 系統的直流馬達實驗規劃 其中包括:

1首先利用簡單的數位濾波器將 AB項的雜訊排除 2接著利用延遲電路作微分處理並以乘四解碼電路解出轉動的脈波和方向 3最後利用正反計數器作計數並將計數值讀入匯流排

數位濾波器

光電盤的 AB 相訊號中如果產生雜訊干擾的現象會使得馬達轉角的計量上產生永久

性的累積誤差將造成控制上無法彌補的錯誤所以 AB 相訊號上的雜訊一定要盡力排

除下面是常用的數位濾波器設計範例

FILTER_A block -- digital filter for A signal CED0D1D2 STD_LOGIC begin process (CLK) -- sequential logic begin if CLKevent and CLK=1 then --CLK=gt1 trigger if CE=1 then --clock enable D2lt=D1 D1lt=D0 D0lt=PA --delay 3 clocks PHA lt= (D0 and D1 and D2) or ((D0 or D1 or D2) and PHA) end if end if end process -- combinational logic CE lt= CLK1M --15MHz clock end block FILTER_A 其中

1以 15MHz的頻率為控制基準 2利用延遲電路依序產生 D0D1D2的延遲訊號 3連續三個 1(D0D1D2 都是 1)定義為 1連續三個 0(D0D1D2 都是 0)定義為 0而其他不連續的 10 都定義為雜訊如此可將高頻的雜訊濾除

4但是相對的AB相訊號的最高頻率將限制為 250KHz(連續 3個 1和連續 3個 0)頻率過高的 AAB相訊號將被視為雜訊而不處理必須特別注意

正反轉的解碼和計數

依據前面的公式說明對映的 VHDL 程式範例如下

DECODER block signal DLADLB STD_LOGIC begin process (CLK) -- sequential logic begin if CLKevent and CLK=1 then --CLK=gt1 trigger DLAlt=PHA DLBlt=PHB --delay 1-clock end if end if

16

end process -- combinational logic DIR lt= (not PHA and DLA and not PHB) or ( PHA and not DLA and PHB) or (not PHB and DLB and PHA) or ( PHB and not DLB and not PHA) PLS lt= (not PHA and DLA) or (PHA and not DLA) or (not PHB and DLB) or (PHB and not DLB) end block DECODER 其中

1PHAPHB為經過雜訊濾波後的 AB相訊號而 DLADLB是其延遲訊號 2根據乘四解碼電路的公式取得 DIR和 PLS訊號其中 DIR用以控制計數器的正反向 PLS用以控制計數器的計數與否

所以接下去就是正反計數器的設計範例如下

COUNTER block signal Q STD_LOGIC_VECTOR(11 downto 0) begin process (CLKRESET) -- sequential logic begin if RESET=1 then --power-on reset Qlt=000000000000 --reset to 0 elsif CLKevent and CLK=1 then --CLK=gt1 trigger if PLS=1 then --clock enable if DIR=1 then Qlt=Q-1 --down counter else Qlt=Q+1 --up counter end if end if end if end process -- combinational logic CNT lt= Q --counter output end block COUNTER 其中

1這是標準的正反計數器架構在開機時自動復歸 2計數器的長度為 12-bit可依需要自行調整

DCM模組中的光電盤精度為每圈500格經過乘四解碼後相當於每圈2000格所以12-bit

計數器只能處理 2 圈的應用範圍絕對不夠在真正應用時一定要用軟體或硬體的方

式再擴張成 16-bit 或是 32-bit 的寬度來處理才行

17

3實驗項目

在直流伺服馬達控制系統中規劃五個實驗項目由系統首頁做選擇每項實驗操

作整個系統實驗組成由各項實驗項目 CAI 檔及各項實驗項目程式連結 PLC 檔結合而成茲表列如下

直 流 伺 服 實 驗 e x p _d c m c ai

開 環 路 電 壓 控 制

系 統 首 頁 實 驗 程 序

e x p _p w m c ai

開 環 路 速 度 控 制 e x p _s p ee d c a i

閉 環 路 位 置 控 制 e x p _a n gl e c a i

加 減 速 的 位 置 控 制 e x p _a c c c ai

正 弦 波 位 置 控 制 e x p _s i n c ai

C A I 圖 控 檔

直 流 伺 服 實 驗 開 環 路 電 壓 控 制

系 統 首 頁 實 驗 程 序

e x p _p w m p lc

開 環 路 速 度 控 制 e x p _s p ee d p l c

閉 環 路 位 置 控 制 e x p _a n gl e p l c

加 減 速 的 位 置 控 制 e x p _a c c p lc

正 弦 波 位 置 控 制 e x p _s i n p lc

e T T Y 批 次 檔

18

4安裝程序

31 將 RFFPGA中的程式拷貝至工作硬碟中進入 DC子目錄資料夾中其中包含下

列檔案

檔案 內容說明 mod SIN_wave MODPWM_wave MODIIR1_filter MODDAS4

MODPOS_inputMODPWM_outputMODACC_controlMODPD_controlMOD這些檔案是由 ASM重新編譯出由 testDCMmem所需執行模組檔

asm SIN_waveasmPWM_waveasmIIR1_filterasmDAS4asm POS_inDCMasmPWM_outDCMasmACC_conDCMasmPD_controlasm是各模組組合語言所設計 SOURCE檔

plc 為進行實驗所需的各批次檔 bit piDSPv0bit為下載到 FPGA的 BIT檔其功能為將 FPGA規劃成

具備 piDSP控制晶片功能提供直流伺服控制所需的控制程式

撰寫 testDCMsys 記載進行 DCM實驗時所需的模組 testDCMMEM 連結完成的 DSP執行檔用來進行 DCM實驗 testDCMvar 紀錄 DCM實驗時的參數對照表

在進行實驗前先將實驗所需的系統程式與模組程式分別說明加以說明系統所

需的程式模組由 testDCMsys 來描述程式列印如下

module fg1 PWM_wavemod 方波產生器

module fg2 SIN_wavemod 弦波產生器

module cn1 ACC_controlmod 加減速控制器

module cn2 PD_controlmod 比例微分控制器

module io1 POS_inputmod 位置和速度讀值

module io2 PWM_outputmod PWM 電壓輸出界面

module ft1 IIR1_filtermod 一階濾波器

module das das4mod 示波器資料蒐集

module io3 LEDKEYmod LEDKEY 界面

其中包括

1兩組波型產生器作為測試命令包括正弦波和方波 2兩組控制器提供包括加減速PD控制器的功能可依照實驗需求搭配使用 3兩組輸入輸出界面執行 PWM輸出和相位回授的界面處理 4一組低通濾波器作為電壓開迴路控制迴路和速度閉迴路控制的模擬使用 5DAS4mod是示波器專用的配合模組不論任何實驗都必須加入此模組 6Ledmod是四位數字七段顯示與 44矩陣按鍵模組

19

5執行程序

首先進入 RFFPGA 裡子目錄 DC直接點選 fPLCexe 出現下面操作畫面(也可直接將此檔

案放置桌面直接點選)

進入下面操作畫面

20

首先使用滑鼠在 FPGA下載按鈕單擊動作使 FPGA變成 piDSP晶片 如您撰寫組合語言時可使用 eASM按鈕 經編譯完成後產生MOD檔 如您撰寫系統連結程式時可使用 eLINK按鈕 經連結完成後產生MEM與VAR檔 點選實驗三後顯示如下 選擇程式下載再按程式啟動這時直流伺服馬達開始做位置控制在操控畫面放置 P 參數設定欄更改參數時馬達即時隨參數改變而產生不同響應 直接點選程式停止時結束所有控制動作再按回首頁選擇其他實驗

21

6實驗說明

下圖所示為直流馬達的控制系統方塊圖透過電流速度以及位置的回授再搭

配適當的控制器可建立完整的閉迴路控制系統在後面的實驗中將依此一系統方塊圖

逐步建立速度和位置的控制實驗各實驗的說明和操作方式及參考實驗結果將逐一進

行詳細的說明

控制

參考位置

速度 位置速

度控制 電流控制

電力電

子換流

位置速

度感測

i

+ -

壓ν

位置

速度

i

DC直流馬達之控制系統方塊圖

PWM 驅動方式只是簡單的開環路控制而高精度的馬達控制必須透過回授控制來完成

對於邏輯電路的設計者而言必須先瞭解基本的回授控制架構以便將來轉換成實用的

邏輯電路設計

設計說明

開環路特性

在電壓驅動的狀況下直流馬達開環路控制的示意圖如下

+-

22

如果換算成數學模式則轉換成下面的架構

+-Vc

R L

EMF

+

-

ITB

J

ω

其中

1其中的變數和參數包括 Vc 控制的電壓命令 R 電樞迴路的等效電阻 L 電樞迴路的等效電感 EMF電樞產生的反電動勢 i 電樞迴路中的電流 T 馬達所產生的扭力 J 馬達和負載的等效慣量 B 馬達和負載的等效摩擦力 ω 馬達所產生的速度 2所牽涉的物理公式包括 電壓迴路Vc = Ri + L(didt) + EMF 即電樞迴路中的電壓平衡 動力負載T = Bω + J(dωdt) 即扭力平衡 馬達特性T = Kti 所產生的扭力和電流成正比 電機特性EMF= Keω 所產生的電動勢和轉速成正比 其中新增的參數包括 Kt馬達的扭力常數 Ke馬達的反電動勢常數 3將微分項作拉式轉換(Laplase Transformation)的對映即 s = ddt 可將微分方程式轉換成更簡單的代數方程式而產生到下面的控制方塊圖

sL+R1Vc

+-EMF

iKt

TsJ+B1 ω

Ke

4在直流馬達的開環路特性中控制電壓(Vc)時輸入點而馬達轉速(ω)是輸出點即是控制馬達電壓以控制馬達轉速

5基本上馬達的開環路特性是個兩階系統類似於低通濾波器的特性在許多應用 場合其開環路特性還可以再簡化成一階系統方塊圖如下

23

sτ +1

KmVc ω 其中 τ一階系統的時間常數 Km一階系統的穩態增益

採用兩階系統的分析方式雖然會比較精細但是用一階系統來分析則可簡化所有的設計

過程因為這裡的實驗重點是邏輯設計所以在本章中我們都用一階系統作分析

系統響應的要求

就控制系統而言最重要的需求就是系統響應包括

穩態特性通常以穩態誤差為指標即是穩態時系統輸出和輸入之間的差異 暫態特性通常以上升時間(Rise Time)和過越比率(Overshoot)為指標

一個理想中的伺服控制系統其系統響應應該是

1穩態誤差為 0即馬達輸出將追隨輸入作變化沒有誤差 2過越比例為 0即馬達輸出絕對不會產生衝過頭的現象 3上升時間為 0即馬達輸出隨時追上輸入命令不會有控制上的延遲現象

當然這是太理想了一個合理的伺服控制系統應該是

1穩態誤差越小越好最好為 0 2過越比例越小越好最好為 0 3上升時間越短越好當然無法為 0但是盡力就是了

速度的回授控制

回授控制的目的就是為了改善系統響應以一階系統代表的馬達控制為例

sτ+1

KmVc ω

在步階響應(Step Response)時其特性如下

1穩態誤差由 Km決定 2過越比例為 0 3上升時間即是其時間常數(τ)

如果用比例控制器(P 控制器)作速度回授的控制則控制方塊圖如下

sτ+1

KmVc ωKp

err

P控制器 直流馬達ωc

速度回授

速度命令 + 速度響應-

24

其中

1速度命令並不直接控制馬達的驅動電壓而是 A將速度命令和速度回授相比找出其誤差訊號 err B依誤差訊號來控制驅動電壓 誤差越大則驅動電壓越高 誤差越小則驅動電壓越低 誤差為負則驅動電壓也為負 其中的比例關係由 P控制器中的 Kp 來調整 2經由數學分析後其步階響應的特性為 A穩態誤差變成 1(1+kpkm)如果 kpkmgtgt1則穩態誤差將趨近於 0 B過越比例仍為 0 C上升時間即是由τ變成τ(1+kpkm)所以上升時間將變短 3換句話說只要 Kp值夠大不論是穩態誤差或是上升時間都會大幅改善

理論上P控制器的增益是越高越好最好是無限大但是實際上是有限制的原因是

1馬達的開環路特性是兩階系統而非一階系統一階系統只是簡化後的結果 2當兩階系統作高增益的回授控制時當增益過高時會產生極嚴重的過越現象使得

馬達產生巨幅震動而難以控制

所以 P控制器的增益雖然是越高越好但調整時仍要小心維持(過越比例為 0)的條件

轉角的回授控制

做為馬達的速度控制P控制器的效果不錯但是如果將 P控制器應用到馬達的轉角控

制其特性就不太理想圖示如下

sτ+1

KmVc ωKp

err

P控制器 直流馬達

θc

轉角回授

轉角命令 + 轉角響應-

s1 θ

其中

1從馬達的速度到轉角之間具有積分特性即 馬達的轉角是馬達速度的積分結果而 馬達的速度是馬達轉角的微分結果而 2其中的積分特性使得整個系統由一階特性變成兩階特性在兩階系統中當設定高

增益時會產生極嚴重的過越現象使得馬達產生巨幅震動而難以控制 3在 P控制器增益無法提高的狀況之下轉角控制效果將無法獲得改善

雖然 P控制器在轉角控制上的效果並不好但是在控制系統中還是有許多法寶可以選擇

25

其中 PD 控制器就是簡單又有效的一個好方法

從表面上來看PD 控制器比 P控制器多了一個微分項就數學上來看這微分項提供了

一個新零點(Zero)可以調整根軌跡圖的走向就實驗上來說這微分項提供了控制器

的預測功能說明如下

sτ+1

KmVc ωKp+sKd

err

P控制器 直流馬達

θc

轉角回授

轉角命令 + 轉角響應-

s1 θ

1轉角控制中 P控制器的問題是在嚴重的過越現象原因是在 P控制器的作用下只有當回授超過命令時才能做出「負向」的控制但這時已經來不及了因為積分器

中已經累積了過多的能量而無法立刻消失使得馬達轉角衝過了頭 2解決之道就是在回授超過命令之前就必須做出「負向」的控制使得積分器累積

的能量逐步減弱在到達目標時才能立刻煞車才能解除過越現象 3而微分項就是這個預測量因為當誤差量越來越小時其微分項是負值雖然微分

項(D)是負值 當誤差量(P)很大時(P+D)的結果還是正值所以還是「正向」控制 當誤差量(P)漸小時(P+D)的結果變成負值才會開始「負向」控制 換句話說在誤差為 0之前即可啟動負向控制產生煞車作用使得馬達提前減速

而即時停止在目標點上自然就解除過越現象了

所以在 PD 控制器中有兩項調整量其中

1Kp增益提供比例控制部分的增益而 Kd增益提供微分控制部分的增益 2Kp增益控制馬達的趨近速度主要影響的是上升時間 3Kd增益控制馬達的提前煞車主要影響的是過越比例 4在兩者搭配下就有機會得到 很快很短的上升時間同時也 不會產生過越現象

PD 控制器的執行

依據 PD 控制器公式可以建立以數位執行的 PD 控制器如下圖所示

cmdKp

fdk

+

-

err

old

+-

Kd

Z-1

out+

+

26

其中

1利用差分公式來取代 PD控制器中的微分公式定義如下 s ==gt (1-Z-1)DT 其中對映的變數包括 s 微分項 Z-1延遲一個抽樣週期 DT抽樣週期單位為 sec 2就執行面而言Z-1是延遲一個抽樣週期也就是以抽樣週期所控制的暫存器 3在上圖中將命令(cmd)和回授(fdk)相減後得到誤差值(err)再將 err延遲一個抽樣週期成為 old所以(err-old)DT即是微分項

4原始的微分控制公式為(err-old)DTKd必須先除再乘但是因為 DT和 Kd 都是常

數可以預先將 Kd修正成 Kd=(KdDT)那麼公式將修正為(err-old)Kd就只需要一個乘法而不需要除法了

同樣的 PD 控制器可以用許多不同的方法作執行包括

1以軟體方式執行例如在 DSP核心中以組合語言撰寫控制模組 2以硬體方式執行例如在 FPGA中直接設計邏輯電路 3以微碼方式執行以微碼作順序控制執行硬體運算工作

這裡先提供用組合語言撰寫的程式模組作為設計參考其他兩種方法將在後續的實驗中

再陸續作說明

模組程式範例PD_controlasm

local cmd R0 IP gnd 輸入點位置命令(可忽略) local fdk R1 IP gnd 輸入點位置回授(可忽略) local out R2 OP 輸出點用以控制速度迴路 local kp R3 256 參數增益 kp10=256 local kd R4 0 參數增益 kd10=256 local err R5 0 內部變數 local old R6 0 內部變數 local gnd R7 0 無輸入時的短路點 data 8 模組變數區長度 initial 開機啟動程序 WR out0 WR old0 RET out=old=0 timer 即時控制程序 RD (cmd) SUB (fdk) WR err MUL kp SFR 8 P=(cmd-fdk)kp256 RDS err SUBX old MUL kd SFR 8 D=(err-old)kd256 ADDS WR out out=P+D RET

27

其中

1PD控制模組中對外的界面變數包括 cmd命令的輸入點 fdk回授的輸入點 out控制的輸出點 2內部參數包括 Kp比例控制增益其中 10=256所以乘完後還需要再右移 8-bit Kd微分控制增益其中 10=256所以乘完後還需要再右移 8-bit 3內部變數包括 err臨時性的變數用以儲存誤差值的計算結果 old儲存性的變數用以儲存上一次抽樣控制時的 err值 4模組程式分成三部分包括 變數宣告local和data所宣告的部分 初值設定initial程序中先將 out和 old設定為 0 即時控制timer程序中依序執行 PD控制器中的每個步驟

控制目標的選擇

從字面上來看速度控制就是控制馬達的速度轉角控制就是控制馬達的轉角沒什麼

好討論的但是實際上確有許多問題第一的問題就是什麼是速度和轉角馬達的速

度和轉角如果不作量測如何得知

既然在量測中取得了速度和轉角資料那麼我們所控制的到底是物理學上的速度和轉

sτ+1

KmVc ωKp+sKd

err

P控制器 直流馬達

θc

轉角回授

轉角命令 + 轉角響應-

s1 θ

KxANG

轉角量測

角還是量測上的速度和轉角以下圖為例

其中

1以轉角量測裝置量測轉角例如裝在馬達軸端的光電盤和解碼電路 2轉角的量測輸出是 ANG而 ANG和物理轉角θ之間有 Km的增益關係 3只要 Km值不是 1那麼系統就不再是單位回授 4如果 Km還有非線性或失真現象那麼控制結果也將有非線性或失真現象

這些問題混雜起來會使得控制系統的分析變得更複雜如果要簡單處理就要認同現

實環境直接以量測結果為控制目標如下圖所示

28

sτ+1

KmVc ωKp+sKd

err

P控制器 直流馬達

θc

轉角回授

+-

s1 θ Kx

ANG轉角量測

其中

1直接以量測結果為控制目標將全系統還原成標準的單位回授控制 2所有的非線性或失真現象都進入開環路討論屬於可以補償的部分 3但是控制結果就是「量測上的轉角」而「物理學上的轉角」

量測誤差的問題

轉角θ

量測ANG

對於量測誤差而言最明顯的問題就是量化誤差圖示如下

其中

1以 DCM模組中的光電盤為例精度為每圈 500格經由乘四解碼計數後其等效

精度增加為每圈 2000格 2比(12000)圈更精密的部分都無法響應換句話說振幅越大的控制其相對誤差越

小而振幅越小的控制其相對誤差越大例如 當振幅為(12)圈時其控制誤差量為 01而 當振幅為(120)圈時其控制誤差量為 1 這是標準的的非線性現象

量化誤差不只影響穩態上的精度還會造成非線性的震動問題圖示如下

t

誤差值

+1

-1

其中

1由於量化誤差的問題只有當誤差超過+1或是-1時才會真正偵測到誤差也才

29

會施加控制量作補償 2所以穩態時的誤差將在+1-1之間擺動造成微幅的振動 3量化誤差越大震動越明顯而量化誤差很小時通常不易察覺出震動現象

微分量的計算

伺服系統中有兩處需要用到微分計算包括

1PD控制器中誤差微分量的計算 2速度控制器中速度回授值的量測

在理論上微分公式是(dXdt)相當於 dXdt = (X(n)-X(n-1))DT (當 DT趨近於 0時)

所以當微分計算中的抽樣週期(DT)越短時微分的計算值將越接近理論值但是事實上

卻非如此以下圖為例

t

X

DTDX

其中

1當 X值為等速度運動時其微分量就是其斜率相當於 DXDT 2DT是微分計算中的抽樣週期理論上越短越好但是由於 DX本身的量化誤差

使得這個原則不再成立例如當斜率為 7394時 若 DT=1000則 DX=7394而 DXDT=7394 若 DT=100 則 DX=739 而 DXDT=739 若 DT=10 則 DX=73 而 DXDT=73 若 DT=1 則 DX=7 而 DXDT=7 3換句話說當抽樣週期越短時DX的量化誤差將越明顯而造成微分計算上更嚴

重的誤差

在 DCM 模組中速度量測的量化誤差分析如下

1馬達上的光電盤精度為每圈 500格經過乘四解碼後等效精度為每圈 2000格 2當馬達轉速為 1200RPM而抽樣頻率為 1KHz時對映的速度量測值為 1200(圈分)2000(格圈)60(秒分)1000(DT秒) = 40(格DT) 3換句話說1200RPM的轉速對映到 40的速度量測值即速度單位=30RPM若最

高轉速為 3000RPM則在+-3000RPM的速度範圍內其量化誤差為 05相當於8-bit的 ADC轉換器精度

4對映不同的抽樣頻率的量化誤差表列如下

30

光電盤精度 最高轉速 抽樣頻率 速度單

速度範圍 量化誤差

500PPR 3000RPM 1KHz 30RPM +-100 05 500PPR 3000RPM 2KHz 60RPM +-50 1 500PPR 3000RPM 4KHz 120RPM +25 2

過溢現象的處理

輸入

輸出

32767

-32768

整數運算都有數值範圍限制以 16-bit 整數而言輸入輸出的關係如下

其中

1當超過正負數的上下限時數值會正負顛倒例如 +32768 將會視為 -32768作處理而 +32769 將會視為 -32768作處理依此類推 2換句話說16-bit的整數運算只有在+-32767之間是線性的對映關係而超過這個範圍就是非線性的對映關係

3不但如此還因為正負顛倒的現象使得原來設計的負回授控制將變為正回授控制

而產生非線性的震盪現象 4換句話說只要計算上稍一不慎就會使得原先穩定的系統產生不穩定的震盪結果

為了避免過溢現象所造成的不穩定問題通常控制系統中會利用飽和處理作改善圖示

如下

輸入

輸出

lmtH

lmtL

31

其中

1當超過計算的上限時將固定設為上限值處理而當超過計算的下限時也將固定

設為下限值處理 2這時的整數運算只有在上下限之間是線性的對映關係而超過這個範圍將還是非線

性的對映關係 3雖然如此但是因為沒有正負顛倒的現象所以不再會有負回授變為正回授的問題

而避免了非線性的震盪現象 4換句話說飽和處理是針對過溢現象的妥協處理方案雖然不完全理想但是是可

接受的最佳選擇

下面是對映的組合語言範例

RD x x為輸入端 MIN lmtH 取得 x和 lmtH中的較小值即是作上限保護的工作 MAX lmtL 取得 x和 lmtL中的較大值即是作下限保護的工作 WR y Y為輸出端 其中

1組合語言中提供MAX和MIN的計算其中 MIN lmtH 比較 AX暫存器和 lmtH而將較低值存入 AX暫存器中 MAX lmtL 比較 AX暫存器和 lmtH而將較高值存入 AX暫存器中 2所以直接可用MIN指令作上限保護而以MAX指令作下限保護兩者合併後即是

完整的飽和處理結果

飽和處理通常應用在高位數轉成低位數的場合例如32-bit轉換成16-bit或是16-bit

轉換成 12-bit 等等例如在本實驗中所有的運算都是以 16-bit 整數作處理但是到

PWM 驅動級輸出時卻要轉換成 12-bit精度的 PWM 命令所以必須先用飽和處理以避免

過溢現象造成的不穩定問題

32

61 實驗 1-開迴路的電壓控制 實驗說明以電壓直接控制轉速的開迴路特性可簡化為一階系統處理方塊圖如

sτ+1

v km ωm

其中V 送給驅動器的 PWM電壓命令

ωm馬達的轉動速度可由處理 photo encoder信號所得的位置微分而得 km一階系統的穩態增益 τ一階系統的時間常數即步階響應中的上升時間

為了觀測直流馬達的開環路特性建立下面的測試方塊圖

其中

1所使用的模組包括 FG1方波產生器產生所需的步階測試波形 FT1馬達模擬以一階系統的低通濾波器來執行 IO1光電盤的回授處理可同時取得轉角和速度的量測值 IO2PWM電壓驅動直接驅動直流馬達作控制 Led四位數字七段顯示模組顯示波形信號資料 2測試目標有兩項(P 參數設定欄)包括 A調整方波命令控制直流馬達作開環路的 PWM電壓控制 B調整馬達模擬參數使模擬結果和實驗結果相符以確認開環路特性

33

實驗畫面顯示如下

測試一 開環路的電壓控制 記錄頻道 CH1電壓命令Y1=-300DY=500 CH2模擬速度Y2=-100DY=500 CH3馬達速度Y3=100DY=50 CH4馬達轉角Y4=300DY=50000 實驗參數 FG1kAMP=256電壓命令的測試振幅 FG1kFRQ=150電壓命令的測試頻率 FT1DT =10 馬達模擬參數 FT1KA =500馬達模擬參數

其中

1用示波器功能記錄四個頻道其中 CH2和 CH3重疊顯示以比較模擬速度和量測

速度之間的差異 2由於 Km 不等於 1所以必須調整 CH3的 Y軸單位才能使得 CH2和 CH3的穩態響應部分重疊

3實驗時可以改變 FG1的參數以調整測試方波的振幅和頻率 4可以調整 FT1的參數使得 CH2和 CH3的暫態響應部分重疊

根據實際的測試結果分析如下

2馬達模擬的參數調整到 DT=10而 KA=500根據公式 τ = 40961000dtka 所以上升時間(τ)為 0082秒或是 82ms 3CH2CH3的 Y軸單位並不一致顯然 Km 不等於 1經計算確認 Km=0098

對應之 plc檔程式說明(exp_pwmplc) echo off 畫面顯示開始

run dsp 0 選擇 DSP1

run stop run reset 既有程式停止

run testDCMmem 下載指定程式

das 1 ampfg1out 0 1024 PWM 波形 Volt 設定 DAS 頻道1

das 2 ampft1lp 0 1024 馬達模擬 Volt 設定 DAS 頻道2

das 3 ampio1spd 0 1024 馬達速度 Volt 設定 DAS 頻道3

das 4 ampio1ang 0 1024 馬達角度 Volt 設定 DAS 頻道4

plot select 0 設定示波器頁數

plot xunit 100000 0 設定示波器 X軸

plot yunit 1 500 -300 設定示波器 Y1 軸

34

plot yunit 2 500 -100 設定示波器 Y2 軸

plot yunit 3 50 100 設定示波器 Y3 軸

plot yunit 4 50000 300 設定示波器 Y4 軸

plot trigger 1 0 1 10 設定示波器觸發

plot scope 9 1 2 3 4 設定示波器顯示

module io2 設定 io2 模組

s cmd ampfg1out

module fg1 設定 fg1 模組

s kAmp 256 s kFrq 150

module ft1 設定 ft1 模組

s u ampfg1out s dt 10 s ka 500

module io3 設定 io3 模組

s led ampfg1out

module 回復預設模組

run 1khz 設定抽樣頻率為 4KHz

run start DSP 開始執行

das stop pause 1 DAS 啟動 das start DAS 啟動

echo on 回復正常訊息顯示

使用者可視情況調整一階濾波器的 ka和 dt值使得 ch2和 ch3 兩組波形完全相符

以求得開迴路系統近似的一階轉移函數 CAI操控設計畫面規劃如下(EXP_PWMCAI) page 1 畫面設計

35

page 2 畫面設計 page 3 畫面設計

36

實測響應圖

訊 號 說 明 訊 號 說 明 ch1 方波產生器訊號 ch3 一階濾波器輸出信號 ch2 馬達角速度訊號 ch4 馬達角位置訊號

直流馬達之開迴路電壓控制響應圖

37

以邏輯分析功能觀測直流馬達之光電盤輸入與 PWM輸出信號

38

62 實驗 2-閉迴路的速度控制 實驗說明為了觀測閉迴路的速度控制響應建立下面的測試方塊圖

加入 PD控制後系統閉迴路的轉移函數經適度的簡化仍能約略以一階系統

處理方塊圖如下

sτ+1

u km ωm

其中

u 送給控制器的速度命令

ωm馬達的轉動速度可由處理 photo encoder 信號所得的位置微分而得

km一階系統的穩態增益 τ一階系統的時間常數即步階響應中的上升時間

方塊圖中的模組功能說明如下

1用 fg1 產生測試用的方波速度命令

2將方波速度命令和速度回授訊號送到 PD 控制器方塊中產生電壓控制訊號再透

過 io2 模組將訊號送出給伺服介面

3用 ft1 建立對照用的一階系統可用 IIR1濾波器方塊產生

4將方波命令產生速度命令再觀測 PHT(io1)上的速度值 spd

5調整 IIR1濾波器的參數使得兩組波形完全相符這時 IIR1濾波器就是閉迴路

速度控制的特性其中 km 為增益而τ為上升時間(單位為 sec)

6增益 km 可從示波器中作簡單計算而上升時間(τ=40964000dtka)

7 Led四位數字七段顯示模組顯示波形信號資料

39

對應之 plc檔程式說明(exp_speedplc) echo off 畫面顯示開始

run dsp 0 選擇 DSP1

run stop run reset 既有程式停止

run testDCMmem 下載指定程式

das 1 ampfg1out 0 1024 PWM 波形 Volt 設定 DAS 頻道1

das 2 ampft1lp 0 1024 馬達模擬 Volt 設定 DAS 頻道2

das 3 ampio1spd 0 1024 馬達速度 Volt 設定 DAS 頻道3

das 4 ampio1ang 0 1024 馬達角度 Volt 設定 DAS 頻道4

plot select 0 設定示波器頁數

plot xunit 100000 0 設定示波器 X軸

plot yunit 1 50 -300 設定示波器 Y1 軸

plot yunit 2 50 -100 設定示波器 Y2 軸

plot yunit 3 50 100 設定示波器 Y3 軸

plot yunit 4 50000 300 設定示波器 Y4 軸

plot trigger 1 0 1 10 設定示波器觸發

plot scope 9 1 2 3 4 設定示波器顯示

module io2 設定 io2 模組

s cmd ampcn2out

module fg1 設定 fg1 模組

s kAmp 50 s kFrq 150

module cn2 設定 cn1 模組

s cmd ampfg1out s fdk ampio1spd s kp 0x4000

module ft1 設定 ft1 模組

s u ampfg1out s dt 2 s ka 320

module io3 設定 io3 模組

s led ampfg1out

module 回復預設模組

run 1khz 設定抽樣頻率為 4KHz

run start DSP 開始執行

das stop pause 1 DAS 啟動 das start DAS 啟動

echo on 回復正常訊息顯示

CAI操控設計畫面規劃如下(EXP_speedCAI)

40

page 1 畫面設計 page 2 與 page 3 畫面設計與實驗一 page 2 與 page 3相同畫面 page 4 畫面設計

41

方塊的參數設定 使用者可視情況調整一階濾波器的 ka和 dt值使得 ch2和 ch3 兩組波形完全相符

以求得此一閉迴路系統近似的一階轉移函數或調整 PD控制器中的 kp和 kp值以調整系統之響應 實測響應圖

訊 號 說 明 訊 號 說 明 ch1 方波產生器產生之速度命令 ch3 一階濾波器輸出信號 ch2 馬達角速度訊號 ch4 馬達角位置訊號

42

直流馬達之閉迴路速度控制響應圖

43

63 實驗 3-閉迴路的位置控制 實驗說明為了觀測閉迴路的位置控制響應將直流馬達的回授改為位置訊號

建立下面的測試方塊圖 方塊圖中的模組功能說明如下

1用 fg1產生測試用的方波位置命令 2將方波位置命令和位置回授訊號送到 PD控制器方塊中產生電壓控制訊號再透過 io2模組將訊號送出到伺服介面驅動馬達轉動

對應之 plc檔程式說明(exp_angleplc) echo off 畫面顯示開始

run dsp 0 選擇 DSP1

run stop run reset 既有程式停止

run testDCMmem 下載指定程式

das 1 ampfg1out 0 1024 PWM 波形 Volt 設定 DAS 頻道1

das 2 ampft1lp 0 1024 馬達模擬 Volt 設定 DAS 頻道2

das 3 ampio1spd 0 1024 馬達速度 Volt 設定 DAS 頻道3

das 4 ampio1ang 0 1024 馬達角度 Volt 設定 DAS 頻道4

plot select 0 設定示波器頁數

plot xunit 100000 0 設定示波器 X軸

plot yunit 1 1000 -300 設定示波器 Y1 軸

plot yunit 2 1000 -100 設定示波器 Y2 軸

plot yunit 3 20 100 設定示波器 Y3 軸

plot yunit 4 1000 300 設定示波器 Y4 軸

plot trigger 1 0 1 10 設定示波器觸發

44

plot scope 9 1 2 3 4 設定示波器顯示

module io2 設定 io2 模組

s cmd ampcn2out

module fg1 設定 fg1 模組

s kAmp 1000 s kFrq 75

module cn2 設定 cn1 模組

s cmd ampfg1out s fdk ampio1ang s kp 0x300 s kd 0x4000

module ft1 設定 ft1 模組

s u ampfg1out s dt 2 s ka 320

module io3 設定 io3 模組

s led ampfg1out

module 回復預設模組

run 1khz 設定抽樣頻率為 4KHz

run start DSP 開始執行

das stop pause 1 DAS 啟動 das start DAS 啟動

echo on 回復正常訊息顯示

CAI操控設計畫面規劃如下(EXP_angleCAI) page 1 畫面設計

45

page 2 與 page 3 畫面設計與實驗一 page 2 與 page 3相同畫面 page 4 畫面設計與實驗二 page 4 畫面 方塊的參數設定 延續上一實驗的說明使用者可以調整 PD控制器中的 kp和 kd值以調整系統之

響應 實測響應圖

訊 號 說 明 訊 號 說 明 ch1 方波產生器產生之位置命令 ch3 馬達角速度訊號 ch2 馬達角位置 ch4 Pd控制器輸出之電壓訊號

46

直流馬達之閉迴路位置控制響應圖

47

64 實驗 4-加減速的位置控制 實驗說明為避免方波命令的過於嚴苛在方波命令的輸出加入一加減速控制功

能方塊以減緩命令變化的幅度增加馬達運動的平順建立的測試方塊圖如下

方塊圖中的模組功能說明如下

1用 fg1產生測試用的方波位置命令 2將方波位置命令送到加減速控制方塊處理後產生新的位置命令再將新的位置命

令與位置回授訊號送到 PD控制器方塊中產生電壓控制訊號最後透過 io2模組將訊號送出到伺服介面驅動馬達轉動

對應之 plc檔程式說明(exp_accplc) echo off 畫面顯示開始

run dsp 0 選擇 DSP1

run stop run reset 既有程式停止

run testDCMmem 下載指定程式

das 1 ampfg1out 0 1024 PWM 波形 Volt 設定 DAS 頻道1

das 2 ampcn1out 0 1024 加速控制 Volt 設定 DAS 頻道2

das 3 ampio1spd 0 1024 馬達速度 Volt 設定 DAS 頻道3

das 4 ampio1ang 0 1024 馬達角度 Volt 設定 DAS 頻道4

plot select 0 設定示波器頁數

plot xunit 100000 0 設定示波器 X軸

plot yunit 1 2000 -300 設定示波器 Y1 軸

plot yunit 2 2000 -100 設定示波器 Y2 軸

plot yunit 3 50 100 設定示波器 Y3 軸

plot yunit 4 2000 300 設定示波器 Y4 軸

48

plot trigger 1 0 1 10 設定示波器觸發

plot scope 9 1 2 3 4 設定示波器顯示

module io2 設定 io2 模組

s cmd ampcn2out

module fg1 設定 fg1 模組

s kAmp 2000 s kFrq 150

module cn1 設定 cn1 模組

s cmd ampfg1out

module cn2 設定 cn2 模組

s cmd ampcn1out s fdk ampio1ang s kp 0x300 s kd 0x4000

module ft1 設定 ft1 模組

s u ampfg1out s dt 2 s ka 320

module io3 設定 io3 模組

s led ampfg1out

module 回復預設模組

run 1khz 設定抽樣頻率為 4KHz

run start DSP 開始執行

das stop pause 1 DAS 啟動 das start DAS 啟動

echo on 回復正常訊息顯示

CAI操控設計畫面規劃如下(EXP_accCAI) page 1 畫面設計

49

page 2 畫面設計與實驗一 page 2相同畫面 page 3 畫面設計與實驗二 page 4相同畫面

參數設定參考之前各實驗的說明可線上機動性的調整 PD控制器中的 kp和 kd值以調整系統之響應 實測響應圖

訊 號 說 明 訊 號 說 明 ch1 方波產生器產生之位置命令 ch3 馬達角位置 ch2 加減速模組輸出之位置命令 ch4 馬達角速度訊號

50

圖一 直流馬達經加減速控制後之閉迴路控制響應圖

51

65 實驗 5-正弦波的位置控制 實驗說明在本實驗中改變命令的波形由方波改變為正弦波並建立如下的測

試方塊圖與上一實驗相比較僅更改命令的波形產生方塊 方塊圖中的模組功能說明如下 1用 fg2產生測試用的弦波位置命令 2將弦波位置命令送到加減速控制方塊處理後產生新的位置命令再與 io1 讀入的位

置回授訊號送到 PD 控制器方塊中產生電壓控制訊號再透過 io2 模組將訊號送出到伺服介面驅動馬達轉動

對應之 plc檔程式說明(exp_sinplc) echo off 畫面顯示開始

run dsp 0 選擇 DSP1

run stop run reset 既有程式停止

run testDCMmem 下載指定程式

das 1 ampfg2out 0 1024 SIN 波形 Volt 設定 DAS 頻道1

das 2 ampcn1out 0 1024 加速控制 Volt 設定 DAS 頻道2

das 3 ampio1spd 0 1024 馬達速度 Volt 設定 DAS 頻道3

das 4 ampio1ang 0 1024 馬達角度 Volt 設定 DAS 頻道4

plot select 0 設定示波器頁數

plot xunit 100000 0 設定示波器 X軸

plot yunit 1 2000 -300 設定示波器 Y1 軸

plot yunit 2 2000 -100 設定示波器 Y2 軸

plot yunit 3 50 100 設定示波器 Y3 軸

plot yunit 4 2000 300 設定示波器 Y4 軸

plot trigger 1 0 1 10 設定示波器觸發

52

plot scope 9 1 2 3 4 設定示波器顯示

module io2 設定 io2 模組

s cmd ampcn2out

module fg2 設定 fg1 模組

s kAmp 2000 s kFrq 100

module cn1 設定 cn1 模組

s cmd ampfg2out

module cn2 設定 cn2 模組

s cmd ampcn1out s fdk ampio1ang s kp 0x300 s kd 0x4000

module ft1 設定 ft1 模組

s u ampfg2out s dt 2 s ka 320

module io3 設定 io3 模組

s led ampfg2out

module 回復預設模組

run 1khz 設定抽樣頻率為 4KHz

run start DSP 開始執行

das stop pause 1 DAS 啟動 das start DAS 啟動

echo on 回復正常訊息顯示

CAI操控設計畫面規劃如下(EXP_sinCAI) page 1 畫面設計

53

page 2 畫面設計 page 3 畫面設計與實驗二 page 4相同畫面

方塊的參數設定可調整 PD控制器中的 kp和 kd值以調整系統之響應 實測響應圖

訊 號 說 明 訊 號 說 明 ch1 弦波產生器產生之位置命令 ch3 馬達角位置訊號 ch2 加減速模組輸出之位置命令 ch4 馬達角速度訊號

54

直流馬達之閉迴路弦波加減速位置控制響應圖

55

7組合語言說明

本節將針對 DC馬達伺服控制實驗專用的程式模組進行功能與程式碼的說明其

有關於波形產生器與資料擷取模組等說明如下

SIN_waveasm 正弦波產生器 PWM_waveasm 方波產生器 IIR1_filterasm 一階濾波器 DAS4asm 資料蒐集模組

弦波產生器

此模組會產生週期性的正弦波方塊圖如下

outfrq

kBiasbias

ampkAmp

kFrqth

kThf=1TB

θ

A

其中

1正弦波有四個參數振幅(A)頻率(F)相位(θ)和偏移(B)其公式為 out = A sin(2πF t +θ) + B 2對於單純的正弦波產生器所對映的參數包括 kAmp 振幅值 kFrq 頻率值kFrq=655368000Hz其中 Hz的範圍為 0~4000例如 1000Hz =gt frq=8192 100Hz =gt frq=819 10Hz =gt frq=82 1Hz =gt frq=8 kTh 相角值0~255代表 0~360的相位當 th=0 時為正弦波 th=64 時為餘弦波 th=128時為反相波依此類推 kBias偏移值 3對於可調變的正弦波產生器其對映的輸入點為 amp 控制振幅的輸入點可產生調幅(AM)波形 frq 控制頻率的輸入點可產生調頻(FM)波形 th 控制相位的輸入點可產生調相(PM)波形 bias控制偏移的輸入點可產生雙頻混波(相加)波形 4若不使用調變功能時各個輸入點時的預設值為 amp 指向 kAmp 的位址 frq 指向 kFrq 的位址

56

th 指向 kTh 的位址 bias指向 kBias的位址

模組程式範例SIN_WAVEasm

local amp R0 IP kAmp 輸入點sin波的振幅 local frq R1 IP kFrq 輸入點sin波的頻率 local th R2 IP kTh 輸入點sin波的相角 local bias R3 IP kBias 輸入點sin波的中心偏移 local out R4 OP 輸出點sin波輸出 local tab R5 TP 表格指標指向 sin[256]的表格 local ang R6 內部變數相位角65536=360deg local kAmp R7 1000 參數振幅值 local kFrq R8 1000 參數頻率值=655368000Hz local kTh R9 0 參數相角值360deg=256 local kBias R10 0 參數偏移值 data 11 模組變數區長度及初值 initial 啟動程序 WR ang0 WR out0 ang=out=0 RET timer 即時控制程序(8KHz) RD ang ADD (frq) WR ang ang+=frq SFR 8 ADD (th) AND 255 ACC=sin(ang256+th) ADD tab WRH RDM table-look-up MUL (amp) SFR 12 ADD (bias) WR out out=ACCamp4096+bias RET table tab 256 sin[256]表格區10=4096 0 101 201 301 401 501 601 700 00~070deg 799 897 995 1092 1189 1285 1380 1474 08~0F 1567 1660 1751 1842 1931 2019 2106 2191 10~17 2276 2359 2440 2520 2598 2675 2751 2824 18~1F 2896 2967 3035 3102 3166 3229 3290 3349 20~27 3406 3461 3513 3564 3612 3659 3703 3745 28~2F 3784 3822 3857 3889 3920 3948 3973 3996 30~37 4017 4036 4052 4065 4076 4085 4091 4095 38~3F 4096 4095 4091 4085 4076 4065 4052 4036 40~4790deg 4017 3996 3973 3948 3920 3889 3857 3822 48~4F 3784 3745 3703 3659 3612 3564 3513 3461 50~57 3406 3349 3290 3229 3166 3102 3035 2967 58~5F

57

2896 2824 2751 2675 2598 2520 2440 2359 60~67 2276 2191 2106 2019 1931 1842 1751 1660 68~6F 1567 1474 1380 1285 1189 1092 995 897 70~77 799 700 601 501 401 301 201 101 78~7F 0 65435 65335 65235 65135 65035 64935 64836 80~87180deg 64737 64639 64541 64444 64347 64251 64156 64062 88~8F 63969 63876 63785 63694 63605 63517 63430 63345 90~97 63260 63177 63096 63016 62938 62861 62785 62712 98~9F 62640 62569 62501 62434 62370 62307 62246 62187 A0~A7 62130 62075 62023 61972 61924 61877 61833 61791 A8~A8 61752 61714 61679 61647 61616 61588 61563 61540 B0~B7 61519 61500 61484 61471 61460 61451 61445 61441 B8~BF 61440 61441 61445 61451 61460 61471 61484 61500 C0~C7270deg 61519 61540 61563 61588 61616 61647 61679 61714 C8~CF 61752 61791 61833 61877 61924 61972 62023 62075 D0~D7 62130 62187 62246 62307 62370 62434 62501 62569 D8~DF 62640 62712 62785 62861 62938 63016 63096 63177 E0~E7 63260 63345 63430 63517 63605 63694 63785 63876 E8~EF 63969 64062 64156 64251 64347 64444 64541 64639 F0~F7 64737 64836 64935 65035 65135 65235 65335 65435 F8~FF

就程式結構而言說明如下

timer 即時控制程序(8KHz) RD ang ADD (frq) WR ang ang+=frq SFR 8 ADD (th) AND 255 ACC=sin(ang256+th) ADD tab WRH RDM table-look-up MUL (amp) SFR 12 ADD (bias) WR out out=ACCamp4096+bias RET

1基本上我們以查表法計算 sin()其輸入θ的範圍為 0~255對映到 0~360deg其輸出 sin(θ)的範圍為+-4096對映到+-10的範圍

2建立一個內部變數 ang其範圍為 0~65535對映到 0~360的相位角 3每個timer程序都執行 ang+=frq的動作更新目前的相位角接著依照 ang的相位角查表得到 sin(ang256+th)值

4由於表格長度為 256-word所以必須將 ang256才能得到正確的對映關係而 th範圍為 0~255所以不需要像 ang一般的做額外處理

5sin()的範圍為(+1-1)而在表格中以(+4096~-4096)的型式記錄相當於 10=4096所以執行 Asin()時還要用 SFR12指令做4096的動作才能正確的取得輸出值

58

6就頻率輸入 frq而言其計算原則是將θ=ωt轉化成θ=Σ(ωdt)因為抽樣頻率

為 8KHz所以 dt=18000而得到 frq=655368000Hz公式其中 Hz為真正的頻率在 8KHz的抽樣頻率下其範圍為 0~4000

鋸齒波產生器

此模組會產生週期性的鋸齒波方塊圖如下

outfrq

kBiasbias

ampkAmp

kFrqth

kThf=1TB

θ

A

其中

1鋸齒波也有四個參數振幅(A)頻率(F)相位(θ)和偏移(B)和正弦波的定義完全一致唯一的差異是其輸出為鋸齒波而非正弦波

2基本波形是從週期開始時為 0一直遞增到週期結束時到達最高點然後立刻回歸

到 0重新開始 3以程式結構而論鋸齒波程式幾乎就是正弦波的相位計算部分只差沒有正弦波的

查表處理而已

模組程式範例SAW_WAVEasm

local amp R0 IP kAmp 輸入點sin波的振幅 local frq R1 IP kFrq 輸入點sin波的頻率 local th R2 IP kTh 輸入點sin波的相角 local bias R3 IP kBias 輸入點sin波的中心偏移 local out R4 OP 輸出點sin波輸出 local ang R5 內部變數相位角65536=360deg local kAmp R6 1000 參數振幅值 local kFrq R7 1000 參數頻率值=655368000Hz local kTh R8 0 參數相角值360deg=256 local kBias R9 0 參數偏移值 data 11 模組變數區長度及初值 initial 啟動程序 WR ang0 WR out0 ang=out=0 RET timer 即時控制程序(8KHz) RD ang ADD (frq) WR ang ang+=frq SFR 8 ADD (th) AND 255 ACC=(ang256+th)amp0x00ff MUL (amp) SFR 8 ADD (bias) WR out out=ACCamp256+bias

59

RET

脈衝波產生器

outfrq

kBiasbias

ampkAmp

kFrqth

kThf=1TB

θ

A

pwm

kDutyduty

此模組會產生週期性的脈衝波方塊圖如下

其中

1脈衝波有五個參數其中振幅(A)頻率(F)相位(θ)和偏移(B)四個參數和正弦波

定義完全一樣另外再增加一個負載率(D) 2基本波形是從週期開始時為 1隔段時間後換為 0然後持續到週期結束再重新開始其中 1所佔有的比例就是負載率當 D=0時為 0而 D=255時為 100

3和其他參數類似負載率(D)以 duty為其輸入點而以 kDuty為其參數值

模組程式範例PLS_WAVEasm

local amp R0 IP kAmp 輸入點脈衝波的振幅 local frq R1 IP kFrq 輸入點脈衝波的頻率 local th R2 IP kTh 輸入點脈衝波的相角 local bias R3 IP kBias 輸入點脈衝波的中心偏移 local duty R4 IP kDuty 輸入點脈衝波的負載率 local out R5 OP 輸出點脈衝波輸出 local ang R6 內部變數相位角65536=360deg local kAmp R7 1000 參數振幅值 local kFrq R8 1000 參數頻率值=655368000Hz local kTh R9 0 參數相角值360deg=256 local kBias R10 0 參數偏移值 local kDuty R11 128 參數負載率100 =256 data 12 模組變數區長度及初值 initial 啟動程序 WR ang0 WR out0 ang=out=0 RET timer 即時控制程序(8KHz)

60

RD ang ADD (frq) WR ang ang+=frq SFR 8 ADD (th) AND 255 ACC=(ang256+th)amp0x00ff SUB (duty) RD (amp) JLT t1 RD 0 ACC=(amp0) t1 ADD (bias) WR out out=ACC+bias RET

IIR 一階濾波器

此模組執行一階的 IIR濾波器方塊圖如下

kau x

Z-1

+

+

-

+低通濾波器

高通濾波器dx lp

hp

濾波器參數的計算公式如下

1假設濾波器的頻寬為 hz則 ωn=hz628 2若系統頻率為 8KHz則抽樣週期 dT為 dT=dt8000 其中 dt為模組參數 3則濾波器參數為 ka=ωndT4096或是 =hzdt62880004096即 =hzdt32 4當 dt決定後所允許的訊號頻寬為(4000dt)換句話說訊號頻寬會因為 dt增加而下降

為了方便實驗的運用下面列出常用的參數對照表

濾波頻寬

(Hz)

10 20 50 100 200 500 1000 2000

訊號頻寬

(Hz)

400 800 2000 4000 4000 4000 4000 4000

模組參數 dt 10 5 2 1 1 1 1 1

模組參數 ka 320 320 320 320 640 1600 3200 6400

表格的運用方式如下

1首先決定濾波頻寬 2接著查表找出對映的參數 dt和 ka 3再查表得到對映的訊號頻寬以決定是否需要串接前級濾波器

61

模組程式範例IIR1_FILTERasm

local u R0 IP 輸入點濾波器輸入 local lp R1 OP 輸出點低通濾波器輸出 local hp R2 OP 輸出點高通濾波器輸出 local dt R3 1 參數抽樣週期 local ka R4 4096 參數增益 ka10=4096 local prd R5 內部變數抽樣週期用 data 6 模組變數區長度 initial 開機啟動程序 WR lp0 WR hp0 WR prd1 RET lp=hp=0prd=1 timer 即時控制程序 SUB prd1 JNZ b9 if (--prdgt0) return RD dt WR prd prd=dt RD (u) SUB lp WR hp hp=u-lp MUL ka SFR 12 ADD lp WR lp lp+=(hpka4096) b9 RET

資料蒐集模組

資料蒐集模組是一個非常特殊的模組專門配合 eTTY 程式中的示波器使用

模組程式範例DAS4asm

local cmd R0 0 紀錄命令0=停止1=前置記錄2=正觸發4=負觸發6=觸發記錄 local dt R1 1 抽樣週期每 dT抽樣一次 local tab R2 TP DAS表格啟始位址 local cnt R3 0 目前記錄點(0~255) local ch1 R4 0 定義頻道1的變數位址 local ch2 R5 0 定義頻道2的變數位址 local ch3 R6 0 定義頻道3的變數位址 local ch4 R7 0 定義頻道4的變數位址 local trg R8 0 定義觸發頻道的變數位址 local th R9 0 觸發準位 local tail R10 0 觸發後的抽樣個數 local buf R11 1 抽樣計數(1~dt) local pnt R12 表格位址計算pnt=tab+cnt4 local len R13 表格長度計算(0~256) data 14 定義模組變數區的長度 table tab 1024 定義表格的長度 initial 啟動程序 WR cmd0 RET cmd=0 timer 控制程序

62

ADD cmd0 JZ t9 if (cmd==0) return SUB buf1 JNZ t9 if (--buf)gt0) return RD dt WR buf dt=buf RD cnt ADD 1 AND 0xff WR cnt cnt=(cnt+1)amp0xff SFL 2 ADD tab WR pnt pnt=tab+cnt4 RD (ch1) WR (pnt) ADD pnt1 pnt++=ch1 RD (ch2) WR (pnt) ADD pnt1 pnt++=ch2 RD (ch3) WR (pnt) ADD pnt1 pnt++=ch3 RD (ch4) WR (pnt) pnt =ch4 RD cmd SUB 1 JZ t9 SUB 1 JZ t2 SUB 1 JZ t3 SUB 1 JZ t4 SUB 1 JZ t5 SUB 1 JZ t6 JR t7 t2 RD (trg) SUB th JGE t9 ADD cmd1 JR t9 wait trgltth t3 RD (trg) SUB th JLE t9 JR t6 wait trggtth t4 RD (trg) SUB th JLE t9 ADD cmd1 JR t9 wait trggtth t5 RD (trg) SUB th JGE t9 JR t6 wait trgltth t6 WR len0 WR cmd7 len=0cmd=7 t7 ADD len1 SUB tail JLT t9 WR cmd0 if ((++len)gt=0x80) cmd=0 t9 RET

與 DC 馬達控制相關的程式模組有以下 4個程式模組說明如下

(1)加減速控制模組 ACC_controlasm (2)光電盤輸入模組 POS_inputasm (3)PWM輸出模組 PWM_outputasm (4)PD控制模組 PD_controlasm

71加減速控制模組 此程式模組主要功能在於執行位置控制的加減速命令修正其數學模式採用 Lynn

濾波器的架構參見下圖

cmd

2

+

old Z -1

-

Z -1

Z -1

Z-1

Z-1x0 x1 x8 x9 x16

+ -

++

2

Z-1

Z-1 y1 y2

+

-

y0

+ +

sumZ-1

+164

12

out

dif

+

63

加減速控制模組方塊圖

其中

1Lynn 濾波器的階數固定成八階也就是 m=8其公式為 H(z) = (1-2Z-m+Z-2m)(1-2Z-1+Z-2)m2

2因為m=8所以m2=64因此最後計算低通濾波的部份時要先做除 64的運算 3因為低通濾波(lp)和 y0之間有 64倍的差異代表 y0y1y2的變化範圍比濾波器輸

入值要擴大許多例如輸入值在+-1000變化時y0y1y2很可能會在+-64000之間變化這範圍已經超出整數處理的範圍很可能會造成錯誤的計算結果

4所以在實驗時輸入值的變化範圍必須控制在+-500之間以保證計算的正確性 5對於 Lynn 濾波器當 m=8時其濾波器的頻寬固定為 1 kHzmdt也就是 dt=1時頻寬為 125 Hz dt=2時頻寬為 625Hz依此類推 6對於 Lynn 濾波器其濾波器的延遲固定為 m個抽樣週期因此設計 hp = x8 - lp 即可得到高通濾波器的對應結果 7其中乘 2和除 64的運算以移位運算取代所以整個程式中並無任何乘法運算 8Lynn 濾波器本身並不是穩定濾波器所以在程式啟動時必須確實的將所有狀態

(x0~x16)歸零否則會產生不穩定的狀態輸出

因為 Lynn濾波器中所有參數固定所以除了抽樣週期 dt 之外並無任何可調參數

抽樣週期 dt 可以控制頻寬dt 越大則濾波器頻寬越低

將步階命令值的輸出送入 Lynn 濾波器中經由低通濾波器的效應可以減緩命

令的變化程度達到加減速控制的目的以下為使用 Lynn 濾波器型式實現加減速控

制的組合語言程式列印 如欲更進一步瞭解 Lynn 濾波器與 FIR 數位濾波器之間的關係可以參考通訊實驗

四數位濾波器設計(FIR)中之說明

ACC_controlasm程式列印 local cmd R0 IP 輸入點位置命令

local out R1 OP 輸出點加減速處理後的位置命令

local dif R2 OP 輸出點位置微分命令

local axis R3 0 馬達編號0=X1=Y2=Z3=C

local old R4 內部變數微分計算用

local sumL R5 內部變數積分計算用

local sumH R6 內部變數積分計算用

local y0 R7 內部變數y(0~2)

local y1 R8 local y2 R9

local x0 R10 內部變數x(0~16)

local x1 R11 local x2 R12 local x3 R13 local x4 R14

local x5 R15 local x6 R16 local x7 R17 local x8 R18

local x9 R19 local x10 R20 local x11 R21 local x12 R22

local x13 R23 local x14 R24 local x15 R25 local x16 R26

64

data 27 模組變數區長度

initial 開機啟動程序

WR dif0 RD (cmd) WR out WR old dif=0 out=old=cmd

sumHL=cmd64

SFL 6 WR sumL RD out SFR 10 SGN 5 WR sumH

RPT 17 WR x00 RPT 3 WR y00 RET x[0~16]=0y[0~2]=0

timer 即時控制程序

RD (cmd) SUBX old WR x0 x0=cmd-old old=cmd

SUB x81 ADD x16 ADD y11 SUB y2 WR y0 y0=x0-2x8+x16+2y1-y2

SGN ADD sumL WR sumL RDH ADC sumH WR sumH sumHL+=y0

WRH RD sumL SFR 6 WR out out=sumHL64

RD y0 SGN SFR WR dif dif=y032mm

RD x0 RPT 16 RDX x1 x[i]=x[i-1] i=1~16

RD y0 RDX y1 WR y2 y[i]=y[i-1] i=1~2

b9 RET

72光電盤輸入模組

DC馬達的位置由光電盤量測之預設儲存於 0xac與 0xbe二個輸入埠位址中其中位址 0xac記錄 X軸馬達的位置位址 0xbe記錄 Y軸馬達的位置由於本實驗的DC馬達接在 Y軸的位置上因此程式中直接選用 Y軸的輸入 光電盤位置輸入的程式列印如下其中速度由位置的差分而得至於馬達的位置

則使用內部 2個 word加以記錄精度為 32位元 POS_inputasm程式列印 local spd R0 OP 輸出點速度量測值

local ang R1 OP 輸出點角度量測值

local angH R2 內部變數角度的 32 位元部分

local mode R3 0x308 模式選擇15MHzAB 相正反向輸入

local pht R4 0xac 輸入阜地址光電盤輸入(0xac)

local phtc R5 0xbe 輸入阜地址光電盤模式(0xbe)

local old R6 內部變數速度更新用

data 7 模組變數區長度

initial 開機啟動程序

RD mode WR (phtc) phtc=mode

RD (pht) WR old WR spd0 RET old=phtspd=0

timer 即時控制程序

RD (pht) SUBX old SGN 11 WR spd spd=(pht-old)old=pht

65

ADD ang WR ang angHL+=spd

RDH ADC angH WR angH

RET

73 PWM輸出控制模組 模組方塊

cmd PWM輸出

程式說明 1在開機時將切換保護時間寫到輸出阜 0xbc上其中切換保護值為 0~6360=5us 2在每次 timer interrupt時將 cmd訊號處理後寫到輸出阜 0xb8上

PWM_outputasm程式列印 local cmd R0 IP gnd 輸入點v相命令

local gain R1 4096 參數輸出增益1=4096

local bias R2 2048 參數輸出偏壓0=2048

local limit R3 4095 參數輸出極限1=4095

local zone R4 0x88f0 參數頻率=12KHz切換保護=5us

local pwm R5 0xb8 輸出阜地址PWM0 輸出(0xb8)

local mode R6 0xbc 輸出阜地址PWM 模式(0xbc)

local p0md R7 0xf8 輸出阜地址port0 模式(0xf8)

local gnd R8 0 輸入接地點

data 9 模組變數區長度

initial 開機啟動程序

RD bias WR (pwm) pwm=bias

RD 0xffff WR (p0md) set port0 mode

RD zone WR (mode) RET mode=zone

stop 關機保護程序

RD bias WR (pwm) RET pwm=bias

timer 即時控制程序

RD (mode) xor 1 and 1 WR (mode) trigger watch-dog

RD (cmd) MUL gain SFR 12 ADD bias ACC=(cmdgain4096)+bias

MAX 0 MIN limit WR (pwm) pwm=limit(ACC)

RET

66

74 PD 控制模組

PD控制的模組方塊參見圖二十一所示其中比例控制的部份直接由增益 kp加以調整微分控制的部份則由誤差的差分經增益 kd的調整而得

Σ+

-

cmd

fdk

err out

Σ

pk

dk

Σ

+

+

+

-

old1minusZ

PD控制器的方塊圖

PD_controlasm程式列印 local cmd R0 IP gnd 輸入點位置命令(可忽略)

local fdk R1 IP gnd 輸入點位置回授(可忽略)

local out R2 OP 輸出點用以控制速度迴路

local kp R3 256 參數增益 kp10=256

local kd R4 0 參數增益 kd10=256

local err R5 0 內部變數

local old R6 0 內部變數

local gnd R7 0 無輸入時的短路點

data 8 模組變數區長度

initial 開機啟動程序

WR out0 WR old0 RET out=old=0

timer 即時控制程序

RD (cmd) SUB (fdk) PRTF WR err

MUL kp SFR 8 P=(cmd-fdk)kp256

RDS err SUBX old MUL kd SFR 8 D=(err-old)kd256

ADDS

WR out out=P+D

RET

程式中預設增益值的 10以整數值 256為基底因此使用 SFR 8的指令加以調

整另外在在計算微分項的程式部份用到 SUBX old的指令其詳細的暫存器動作如

下 參考 piDSP的指令說明SUBX指令將總共用到 3個時序參考錯誤 找不到參照

67

來源在時序 1時將原先 AX的資料拷貝一份到 HX中時序 2時正式執行減

法的動作所以 AX暫存器中的內容會變成 err-old時序 3時DSP會將存放在 HX暫存器中的內容拷貝一份到 old的記憶體中也就是經由 SUBX此一精簡指令將

同時完成計算差分所需要的相減與資料疊代的動作有效的利用 piDSP控制器 DSP核心的精簡指令將可以大幅提昇系統的計算速度

HX AXoldSUBXerr err

old

err

errerr olderr minus

1_err

errerr olderr minus err

1_err

1

2

3

SUBX的指令時序與暫存器變化

68

8附錄快速安裝說明

光纖網路通訊 FPGA 發展系統 (適用於 WIN-XP200098 系統)

快速安裝說明

26Pin 負載輸出入埠

雙電源︵5

12

伏︶輸入埠

單電源︵5

伏︶輸入埠

USB

光纖線輸

號 光纖線輸出埠

入 傳 埠

首先將光碟片 RFFPGA 目錄檔案拷貝在您工作硬碟裡面

第一次安裝時先將 USB 傳輸線接上電腦主機將電源供應器接上 FPGA 模組此時電

腦會出現安裝 USB-Serial 驅動程式選擇從清單安裝此驅動程式放置在光碟片

RFFPGA-USBdrive 選擇您目前安裝系統

可選擇 WIN-98WIN-MEWIN-2000WIN-XP 系統配合您現在工作電腦作業系統

69

注意一般電腦 USB 埠很多插口當您安裝驅動程式時是配合您當時插入之埠

下次如您插入不同接口埠時電腦會再次要求安裝驅動程式這是正常現象請再次安

裝驅動程式否則無法使用

FPLC 操作

首先進入 RFFPGA裡子目錄 testASM直接點選 fPLCexe 出現下面操作畫面(也可直接將

此檔案放置桌面直接點選)

(或者選擇 File 再執行 Setuphellip 選擇您要執行 CAI 檔)

70

進入下面操作畫面 首先使用滑鼠在 FPGA下載按鈕單擊動作使 FPGA變成 DSP晶片 實驗一至實驗五皆為使用 DSP組合語言設計程式其原始程式分別為 testASM1至testASM5可使用 texPad 開啟與編輯程式內容 實驗三與實驗五多有 IO控制動作 當選擇實驗三時出現下面畫面

71

eM_USB 模組

數字型 LED

0 1 2 34 5 6 78 9 A BC D E F

燈號型 LED

44 鍵盤

ADC0 ADC1 DAC0 DAC1

LED 選擇KEY 選擇

模 式 1

0123

注意操作畫面 3與 4 說明開關與按鍵選擇位置後選擇程式下載再按程式啟動如您

按下 0-3按鍵時燈號型 LED會有不同方向閃爍顯示程式停止時結束所有 IO控制動作再按回首頁選擇其他實驗 實驗四與實驗五

模式3

0 1 2 34 5 6 78 9 A BC D E F

按照上面開關選擇直接操作如果以上實驗皆能按照正常操作表示您光纖網路通訊

FPGA發展模組以能正常使用 注意 開機與關機動作順序如下

開機電腦啟動 --- eM_USB 模組電源接上 --- USB 接上電腦 ---

啟動 FPLC 軟體 --- 下載 FPGA 程式

關機關閉 FPLC 軟體 --- eM_USB 模組電源拔掉 --- 拔掉電腦 USB 接頭 ---關掉

電腦

如果以上順序有亂可能造成 USB 找不到驅動造成無法下載經過幾次測試還是

無法下載建議重新啟動電腦主機按照正確步驟操作

72

FPGA 下載操作

進入 FPLC 操作系統按照下列步驟選擇節點模組與下載 bit FPGA 檔案

在 VHDLDEMO 子目錄下您可以選擇您目前 FPGA 種類型號在此型號下我們已將 VHDL

與數位邏輯設計課本範例全部放於此處

73

光纖網路連線 FPGA 下載操作

首先利用光纖線將 eM_USB0 模組光纖輸出埠接至 eM_USB1 模組光纖輸入埠以此

類推最後再將最後 eM_USBN 模組光纖輸出埠接至 eM_USB0 模組光纖輸入埠配置

如附圖方式

個人電腦(Windows) eM_USB模組

0USB

eM_USB模組1

光纖網路

eM_USB模組2

eM_USB模組N

配置完成後進入 FPLC 系統首先必須先將 Node00 下載在 testASM 子目錄裡

piDSPv0bit 檔讓 eM_USB0 模組 FPGA 具備 DSP 功能才能執行光纖網路通訊

操作如下

此時您就可以選擇分別下載至各模組 FPGA 檔 bit

74

安裝 FPLC 注意事項

當您進入 FPLC 時

按 FILE 選擇 programhellip 選擇檔案為 exp_dcmplc 出現下面畫面

正常顯示畫面為

75

DOS 環境操作

在 PC 端的操作是在 Windows 環境中的 DOS 視窗中執行指令範例如下

eFPGA progNETbit 下載 FPGA電路至網路節點0(即 USB節點)中 eFPGA testLEDbit 1 下載 FPGA電路至網路節點1中

對於單一節點的控制程序如下

1將 eM_USB模組連結個人電腦的 USB端 2eM_USB模組開機 3執行下載指令即可 eFPGA xxxxbit 4若要更改 FPGA電路只要重新執行下載指令即可

對於多個網路節點的控制程序如下

1第一組 eM_USB模組連結個人電腦的 USB端再以光纖網路依序其他各節點 2連接 USB界面者為模組0從光纖發射端連接出去的模組為1依此類推 3將所有 eM_USB模組開機 4執行下載指令如下 eFPGA progNETbit 模組0必須先下載指定的 FPGA電路 eFPGA xxxxbit 1 再依序下載其他網路模組的 FPGA電路 eFPGA yyyybit 2 eFPGA zzzzbit 最後再重新下載模組0的 FPGA電路 5換句話說模組0必須先執行 progNETbit讓光纖網路接受 FPGA控制後才能透過光纖網路下載至其他節點等全部網路節點下載完畢後再將模組0的 FPGA重新下載讓模組0也可自由執行任意的 FPGA電路

6若要更改某一個網路節點中的 FPGA電路只要重新執行下述指令 eFPGA progNETbit 模組0必須先下載指定的 FPGA電路 eFPGA yyyybit 2 下載指定網路模組的 FPGA電路 eFPGA zzzz bit 最後再重新下載模組0的 FPGA電路 換句話說除非模組0中的 FPGA已經包括光纖網路管理電路否則一定要先在

模組0中下載網路管理電路後才能下載指定網路節點的 FPGA電路

76

光纖網路通訊 FPGA 發展系統

系統配置

光纖網路通訊 FPGA 發展系統的系統配置圖如下

個人電腦(Windows) eM_USB模組

0USB

eM_USB模組1

光纖網路

eM_USB模組2

eM_USB模組N

其中

1基本模組為 eM_USB模組可用 USB界面和個人電腦連線並提供 USB對光纖網路的轉換功能使得個人電腦可以獨立控制光纖網路中的每個網路節點

2eM_USB模組也可以作為光纖網路中的網路節點透過光纖網路而接受個人電腦的

監控 3就個人電腦而言不論是 USB界面直接連結或是以光纖網路間接連結的 eM_USB模組都是可以直接監控的網路節點最多可以同時控制一個 USB節點和 30個網路節點

4對於每一個網路節點個人電腦都可執行 eM_USB模組中 FPGA的電路下載工作並在適當的 FPGA電路配合下可執行 eM_USB模組中 FPGA內部電路的讀寫控制 5透過適當的 FPGA電路設計各網路節點都可透過光纖網路和其他任何網路節點

作同步通訊執行 FPGA內部記憶體的資料交換資料交換頻率可達 1KHz以上

77

網路模組配置

每個網路模組的標準配置圖如下

eM_USB模組光纖網路

USB eM_FPGA卡

eM_DEMO模組

eM_EXP實驗模組

DC電源

其中

1網路模組以 eM_USB模組為主提供基本的 USB界面和光纖網路連線 2eM_USB模組中的 FPGACPLD採用插卡型式可選擇不同的 eM_FPGA卡包括

eM_2V1K卡可選用 Virtex系列的 XC2V250和 XC2V1000 eM_3S1K卡可選用 Spartan3系列的 XC3S400XC3S1000和 XC3S1500 eM_3S50卡可選用 Spartan3系列的 XC3S50XC3S200和 XC3S400 eM_95XL卡可選用 9500XL系列的 XC95144XL和 XC95288XL 3eM_USB模組中的對外連線有兩種一種是 26P接頭用以連接既有的各種實驗模

組另一種是兩組 50P接頭將 FPGA中各接腳引出用以連接專題實驗 4eM_DEMO模組就是插上 50P接頭的教學模組其中包括 LED 數字顯示和 44鍵盤也具備兩組的 ADC和兩組的 DAC接頭提供類比訊號的測試工具

常用的實驗組合包括

1精簡組合包括(eM_USB+eM_FPGA)提供基本的網路節點適用於專題實驗 2標準組合包括(eM_USB+eM_FPGA+eM_DEMO)提供基礎 FPGA設計的教學實驗

3實驗組合包括(eM_USB+eM_FPGA+eM_DEMO+eM_EXP)提供進階的 FPGA實驗可依需求選用不同的實驗模組

78

eM_USB 模組

eM_USB 模組的電路配置圖如下

TxRx

DCPower

USB

JP2

JP3

光纖界面

外加電源

PC連線

JP1

eM_FPGA模組

FT232 CPLD FlashROM

SRAM

10cm

6cm

JP4

其中

1對外的連線接頭包括 DC電源 可選擇單電源(5V)或是多電源(5V+12V-12V)兩種 USB界面 直接連接個人電腦 光纖界面連接光纖網路 2實驗界面包括 JP1負責內部 CPLD的電路下載 JP2JP3兩組 50P的擴張用接頭 JP4 標準 26P接頭用以連接各種實驗模組 3內部的電路配置包括 A以 SO-DIMM接頭連接各種 eM_FPGA卡 B內附 EEPROMFlashROM和 SRAM提供 FPGA作應用測試 C以一顆 FT232BM作為 USB界面解碼而以一顆 CPLD作為光纖網路解碼 D提供各種 eM_FPGA卡的電路下載功能 4內附五顆 LED由上而下依序為 usbLED指示 USB界面的讀寫狀態 tstLED可由 FPGA電路自行定義 stsLED可由 FPGA電路自行定義 RxLED 可由 FPGA電路自行定義 TxLED 可由 FPGA電路自行定義

79

外部接腳定義

外部接頭的接點順序圖示如下

上視圖

JP11 9 JP4

126225

JP31

50249

JP21

50249

而各接頭的接點定義如下

JP1 JP4 JP2 JP3 1+33V 1+12V 2+12V 1 GND 2 GND 1 GND 2 GND 2GND 3 ADC 4 DAC 3POWER 4ALARM 3 +5V 4 +5V 3nc 5 yPB2 6 yPB3 5RxNET 6TxNET 5+12V 6+12V 4TCK 7 yPB1 6 yPB4 7RxUSB 6TxUSB 7-12V 6-12V 5nc 9 yPB0 10yPB5 9RxCAN 10TxCAN 9 ADC 10 DAC 6TDO 11yPB6 12yPB7 11P0D0 12P0D1 11P1D0 12P1D1 7TDI 13yGND 14yPC3 13P0D2 14P0D3 13P1D2 14P1D3 8nc 15yPC2 16yPC1 15P0D4 16P0D5 15P1D4 16P1D5 9TMS 17yPC0 18yPA0 17P0D6 18P0D7 17P1D6 18P1D7 19yPA1 20yPA2 19P0D8 20P0D9 19P1D8 20P1D9 21yPA3 22GND 21P0D10 22P0D11 21P1D10 22P1D11 23GND 24+5V 23P0D12 24P0D13 23P1D12 24P1D13 25+5V 26nc 25P0D14 26P0D15 25P1D14 26P1D15 27P2D0 28P2D1 27PxA0 28PxA1 29P2D2 30P2D3 29PxA2 30PxA3 31P2D4 32P2D5 31PxA4 32PxA5 33P2D6 34P2D7 33PxA6 34PxA7 35P2D8 36P2D9 35PxB0 36PxB1 37P2D10 38P2D11 37PxB2 38PxB3 39P2D12 40P2D13 39PxB4 40PxB5 41P2D14 42P2D15 41PxB6 42PxB7 43ADC0 44ADC1 43PxC0 44PxC1 45ADC2 46ADC3 45PxC2 46PxC3 47ADC4 48ADC5 47PxC4 48PxC5 49DAC0 50DAC1 49PxC6 50PxC7

80

eM_FPGA 模組

在各種 eM_FPGA 模組中FPGA 對外電路的標準配置圖如下

24576MHz

FlashROM

26PSRAM

EEPROM

mD[8]

yPA[4]

FPGACPLD

mA[19]mRDmWRmCSeeCKeeCSeeDIeeDO

光纖界面 RxNETTxNET

USB 界面 RxUSBTxUSBCLK24MPOWERALARM

LED

tstLEDstsLEDRxLEDTxLED

yPB[8]yPC[4]

ADCDAC

ADC[8]

實驗模組

ADC[2]

DAC[2]

xPA[4]

xPB[8]

xPC[4]

基礎實驗

其中

1FPGACPLD可以選擇下述幾種 XC2V250XC2V1000 採用 eM_2V1K模組其中 FPGA為 FG456包裝 XC3S400XC3S1000XC3S1500採用 eM_3S1K模組其中 FPGA為 FG456包裝 XC3S400XC3S1000XC3S1500採用 eM_3S1K模組其中 FPGA為 FG456包裝 XC3S50XC3S200XC3S400 採用 eM_3S50模組其中 FPGA為 TQ144包裝 XC95144XLXC95288XL 採用 eM_95XL模組其中 CPLD為 TQ144包裝 2採用 FG456包裝者可以控制所有的 IO界面 3採用 TQ144包裝者只是不能控制 RAM和 FlashROM而可以控制其他所有的界面 4所有 FPGA模組都可自由選擇由 USB界面或是由光纖界面下載電路但是 CPLD模組只能固定由 USB界面下載電路

5所有 FPGACPLD模組都可透過 26P接頭連接既有的各種實驗模組

81

FPGA 接腳對照表

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

mD0 XD6 mD0 A17 C13 -- -- mD1 XD7 mD1 B17 D12 -- -- mD2 XD8 mD2 C17 D11 -- -- mD3 XD9 mD3 D17 C11 -- -- mD4 XD10 mD4 E17 D10 -- -- mD5 XD11 mD5 E16 C10 -- -- mD6 XD12 mD6 E14 D9 -- -- mD7 XD13 mD7 E13 D7 -- -- mA0 XD14 mA0 D13 C7 -- -- mA1 XD15 mA1 C13 D6 -- -- mA2 XA0 mA2 V5 C3 -- -- mA3 XA1 mA3 U5 C4 -- -- mA4 XA2 mA4 Y2 D3 -- -- mA5 XA3 mA5 Y1 D4 -- -- mA6 XA4 mA6 V4 E3 -- -- mA7 XA5 mA7 V3 E4 -- -- mA8 XA6 mA8 W2 F3 -- -- mA9 XA7 mA9 W1 F4 -- -- mA10 XA8 mA10 T2 G6 -- -- mA11 XA9 mA11 T1 K3 -- -- mA12 XA10 mA12 R4 K10 -- -- mA13 XA11 mA13 R3 L3 -- -- mA14 XA12 mA14 R2 L4 -- -- mRD XRD mRD R1 D5 -- -- mWR XWR mWR P6 C6 -- --

POWER P0A0 POWER B4 B20 P1 P5 ALARM P0A1 ALARM A4 A19 P2 P6 RxNET P0A2 RxNET C4 B19 P4 P7 TxNET P0A3 TxNET C5 A18 P5 P9 RxUSB P0B0 RxUSB B5 A15 P6 P10 TxUSB P0B1 TxUSB A5 B15 P7 P11 RxCAN P0B2 RxCAN D6 A14 P8 P12 RxCAN P0B3 TxCAN C6 B14 P10 P13

CLK24M CLK24M CLK24M E12 B12 P124 P38

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

PWM0H P3A0 P0D0 E6 A8 P21 P23 PWM0L P3A1 P0D1 E5 B8 P23 P24 PWM1H P3A2 P0D2 C2 B6 P24 P25 PWM1L P3A3 P0D3 C1 A5 P25 P26 PWM2H P3A4 P0D4 D2 B5 P26 P27

82

PWM2L P3A5 P0D5 D1 A4 P27 P28 PWMenb P3A6 P0D6 E4 B4 P28 P30 PHT1Z P3A7 P0D7 E3 A3 P30 P31 PHT1A P3B0 P0D8 G2 C1 P31 P32 PHT1B P3B1 P0D9 G1 C2 P32 P33 PHT0A P3B2 P0D10 H5 D1 P33 P34 PHT0B P3B3 P0D11 J6 D2 P35 P35 AMP0 P3B4 P0D12 H4 E1 P36 P39 AMP1 P3B5 P0D13 H3 E2 P40 P40 AMP2 P3B6 P0D14 H2 F2 P41 P41 AMP3 P3B7 P0D15 H1 G1 P44 P43 eeSK P0C3 P1D0 C10 B9 P20 P22 eeCS P0C2 P1D1 D10 A9 P18 P21 eeDI P0C1 P1D2 F10 B10 P17 P20 eeDO P0C0 P1D3 E10 B11 P15 P19 ssCK P0B7 P1D4 E8 A11 P14 P17 ssCS P0B6 P1D5 E7 A12 P13 P16 ssDI P0B5 P1D6 A6 B13 P12 P15 ssDO P0B4 P1D7 B6 A13 P11 P14

ppCLK P3C0 P1D8 K4 G2 P46 P44 ppDIN P3C1 P1D9 K3 K1 P47 P45 TxD P3C2 P1D10 K2 K2 P50 P46 RxD P3C3 P1D11 K1 L1 P51 P48

tstLED P3C4 P1D12 L5 L2 P52 P49 stsLED P3C5 P1D13 L4 M1 P53 P50 RxLED P3C6 P1D14 L3 M2 P55 P51 TxLED P3C7 P1D15 L2 N1 P56 P52

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

xPA0 P2A0 P2D0 AA3 N2 P59 P53 xPA1 P2A1 P2D1 Y4 T1 P60 P54 xPA2 P2A2 P2D2 AA4 T2 P63 P56 xPA3 P2A3 P2D3 AB4 U2 P68 P57 xPC0 P2A4 P2D4 W5 V1 P69 P58 xPC1 P2A5 P2D5 Y5 V2 P70 P59 xPC2 P2A6 P2D6 AA5 W1 P73 P60 xPC3 P2A7 P2D7 AB5 W2 P74 P61

-- P2B0 P2D8 V6 Y1 P76 P64 -- P2B1 P2D9 V7 Y2 P77 P66 -- P2B2 P2D10 W6 AA3 P78 P68

mCS P2B3 P2D11 Y6 AB4 P79 P69 mA15 P2B4 P2D12 V9 AA4 P80 P70 mA16 P2B5 P2D13 V10 AB5 P82 P71 mA17 P2B6 P2D14 W10 AA5 P83 P74 mA18 P2B7 P2D15 Y10 AA6 P84 P75 CS0 P2C0 ADC0 AA10 AB8 P85 P76

83

SDIN0 P2C1 ADC1 AB10 AA8 P86 P77 CS1 P2C2 ADC2 U10 AB9 P87 P78

SDIN1 P2C3 ADC3 U11 AA9 P89 P79 SCLK P2C4 ADC4 V11 AB10 P90 P80 CS2 P2C5 ADC5 W11 AA10 P92 P81

SDOUT P2C6 ADC6 Y11 AB11 P93 P82 LDAC P2C7 ADC7 AA11 AA11 P95 P83

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

xPB0 P1A0 PxA0 M1 M3 P135 P85 xPB1 P1A1 PxA1 M2 M4 P132 P86 yPB2 P1A2 PxA2 M3 N3 P131 P87 yPB3 P1A3 PxA3 M4 N4 P130 P88 yPB1 P1A4 PxA4 M5 T4 P129 P91 yPB4 P1A5 PxA5 M6 T5 P128 P92 yPB0 P1A6 PxA6 N1 U3 P127 P93 yPB5 P1A7 PxA7 N2 U4 P125 P94 yPB6 P1B0 PxB0 U13 V3 P119 P95 yPB7 P1B1 PxB1 V13 V4 P118 P96 xPB2 P1B2 PxB2 W13 W3 P116 P97 xPB3 P1B3 PxB3 Y13 W4 P113 P98 xPB4 P1B4 PxB4 AA13 Y3 P112 P100 xPB5 P1B5 PxB5 AB13 Y4 P96 P101 yPC3 P1B6 PxB6 U12 Y5 P97 P102 yPC2 P1B7 PxB7 V12 W5 P98 P103 yPC1 P1C7 PxC0 AB17 W11 P108 P113 yPC0 P1C6 PxC1 AA17 Y11 P107 P112 yPA0 P1C5 PxC2 Y17 W10 P105 P111 yPA1 P1C4 PxC3 W17 Y10 P104 P110 yPA2 P1C3 PxC4 AB18 W9 P103 P107 yPA3 P1C2 PxC5 AA18 W8 P102 P106 xPB6 P1C1 PxC6 Y18 W6 P100 P105 xPB7 P1C0 PxC7 W18 Y6 P99 P104

84

eM_DEMO 模組

eM_DEMO 模組的電路配置圖如下

eM_USB 模組

數字型 LED

0 1 2 34 5 6 78 9 A BC D E F

燈號型 LED

44 鍵盤

ADC0 ADC1 DAC0 DAC1

LED 選擇KEY 選擇

其中

1eM_DEMO模組的基本功能包括 A將 xPAxPBxPC等 16個 IO訊號引出控制 LED和鍵盤電路 B將 ADDA訊號引出並放大成+-10V的工作範圍 2LED和鍵盤可以選擇三種模式由 LED和 KEY 兩組開關作選擇圖示如下

模式1

0123

模式2 模式3

0 1 2 34 5 6 78 9 A BC D E F

0123

3模式14鍵輸入並搭配 16點的 LED燈號顯示其中 16點 LED分別對映到 xPA[0~3]xPB[0~7]和 xPC[0~3] 4組按鍵分別對映到 xPC[0~3] 4模式24鍵輸入並搭配四個 7段式數字顯示其中 數字顯示由 xPA[0~3]作數字掃瞄而由 xPB[0~7]作 7段式 LED控制 4組按鍵 分別對映到 xPC[0~3] 5模式316鍵輸入並搭配四個 7段式數字顯示其中 數字顯示由 xPA[0~3]作數字掃瞄而由 xPB[0~7]作 7段式 LED控制 16組按鍵由 xPA[0~3]作鍵盤掃瞄而由 xPC[0~3]作鍵盤讀取 6根據VHDL與數位邏輯設計的章節其中 第 1章至 10章的實驗採用模式1而 第 11章實驗採用模式2而 第 12章之後的實驗都採用模式3

85

FPGA UCF 定義

eM_3S1K 模組

NET CLK LOC = B12

NET XAlt0gt LOC = N2

NET XAlt1gt LOC = T1

NET XAlt2gt LOC = T2

NET XAlt3gt LOC = U2

NET XBlt0gt LOC = M3

NET XBlt1gt LOC = M4

NET XBlt2gt LOC = W3

NET XBlt3gt LOC = W4

NET XBlt4gt LOC = Y3

NET XBlt5gt LOC = Y4

NET XBlt6gt LOC = W6

NET XBlt7gt LOC = Y6

NET XClt0gt LOC = V1

NET XClt1gt LOC = V2

NET XClt2gt LOC = W1

NET XClt3gt LOC = W2

NET YAlt0gt LOC = W10

JP4 接頭

NET YAlt1gt LOC = Y10

NET YAlt2gt LOC = W9

NET YAlt3gt LOC = W8

NET YBlt0gt LOC = U3

NET YBlt1gt LOC = T4

NET YBlt2gt LOC = N3

NET YBlt3gt LOC = N4

NET YBlt4gt LOC = T5

NET YBlt5gt LOC = U4

NET YBlt6gt LOC = V3

NET YBlt7gt LOC = V4

NET YClt0gt LOC = Y11

NET YClt1gt LOC = W11

NET YClt2gt LOC = W5

NET YClt3gt LOC = Y5

在光碟片中 RFFPGAVHDLDEMOBIT3S1K 裡有 VHDL 與數位邏輯設計書本範例原始檔與合成檔

86

eM_3S50 模組

NET CLK LOC = P124

NET XAlt0gt LOC = P59

NET XAlt1gt LOC = P60

NET XAlt2gt LOC = P63

NET XAlt3gt LOC = P68

NET XBlt0gt LOC = P135

NET XBlt1gt LOC = P132

NET XBlt2gt LOC = P116

NET XBlt3gt LOC = P113

NET XBlt4gt LOC = P112

NET XBlt5gt LOC = P96

NET XBlt6gt LOC = P100

NET XBlt7gt LOC = P99

NET XClt0gt LOC = P69

NET XClt1gt LOC = P70

NET XClt2gt LOC = P73

NET XClt3gt LOC = P74

NET YAlt0gt LOC = P105

JP4 接頭

NET YAlt1gt LOC = P104

NET YAlt2gt LOC = P103

NET YAlt3gt LOC = P102

NET YBlt0gt LOC = P127

NET YBlt1gt LOC = P129

NET YBlt2gt LOC = P131

NET YBlt3gt LOC = P130

NET YBlt4gt LOC = P128

NET YBlt5gt LOC = P125

NET YBlt6gt LOC = P119

NET YBlt7gt LOC = P118

NET YClt0gt LOC = P107

NET YClt1gt LOC = P108

NET YClt2gt LOC = P98

NET YClt3gt LOC = P97

在光碟片中 RFFPGAVHDLDEMOBIT3S200 裡有VHDL與數位邏輯設計書本範例原始檔與合成檔

87

eM_95XL 模組

NET CLK LOC = SPIN38

NET XAlt0gt LOC = SPIN53

NET XAlt1gt LOC = SPIN54

NET XAlt2gt LOC = SPIN56

NET XAlt3gt LOC = SPIN57

NET XBlt0gt LOC = SPIN85

NET XBlt1gt LOC = SPIN86

NET XBlt2gt LOC = SPIN97

NET XBlt3gt LOC = SPIN98

NET XBlt4gt LOC = SPIN100

NET XBlt5gt LOC = SPIN101

NET XBlt6gt LOC = SPIN105

NET XBlt7gt LOC = SPIN104

NET XClt0gt LOC = SPIN58

NET XClt1gt LOC = SPIN59

NET XClt2gt LOC = SPIN60

NET XClt3gt LOC = SPIN61

NET YAlt0gt LOC = SPIN111

JP4 接頭

NET YAlt1gt LOC = SPIN110

NET YAlt2gt LOC = SPIN107

NET YAlt3gt LOC = SPIN106

NET YBlt0gt LOC = SPIN93

NET YBlt1gt LOC = SPIN91

NET YBlt2gt LOC = SPIN87

NET YBlt3gt LOC = SPIN88

NET YBlt4gt LOC = SPIN92

NET YBlt5gt LOC = SPIN94

NET YBlt6gt LOC = SPIN95

NET YBlt7gt LOC = SPIN96

NET YClt0gt LOC = SPIN112

NET YClt1gt LOC = SPIN113

NET YClt2gt LOC = SPIN103

NET YClt3gt LOC = SPIN102

在光碟片中 RFFPGAVHDLDEMOSVF95288XL 裡有VHDL與數位邏輯設計書本範例原始檔與合成

檔案

88

eM_FPGA 模組

NET CLK LOC = E12

NET XAlt0gt LOC = AA3

NET XAlt1gt LOC = Y4

NET XAlt2gt LOC = AA4

NET XAlt3gt LOC = AB4

NET XBlt0gt LOC = M1

NET XBlt1gt LOC = M2

NET XBlt2gt LOC = W13

NET XBlt3gt LOC = Y13

NET XBlt4gt LOC = AA13

NET XBlt5gt LOC = AB13

NET XBlt6gt LOC = Y18

NET XBlt7gt LOC = W18

NET XClt0gt LOC = W5

NET XClt1gt LOC = Y5

NET XClt2gt LOC = AA5

NET XClt3gt LOC = AB5

NET YAlt0gt LOC = Y17

JP4 接頭

NET YAlt1gt LOC = W17

NET YAlt2gt LOC = AB18

NET YAlt3gt LOC = AA18

NET YBlt0gt LOC = N1

NET YBlt1gt LOC = M5

NET YBlt2gt LOC = M3

NET YBlt3gt LOC = M4

NET YBlt4gt LOC = M6

NET YBlt5gt LOC = N2

NET YBlt6gt LOC = U13

NET YBlt7gt LOC = V13

NET YClt0gt LOC = AA17

NET YClt1gt LOC = AB17

NET YClt2gt LOC = V12

NET YClt3gt LOC = U12

在光碟片中 RFFPGAVHDLDEMOBIT2V250 裡有VHDL與數位邏輯設計書本範例原始檔與合成檔

89

Page 17: RFFPGA 直流馬達實驗手冊juniortek.com.tw/program/manual/RF-DC-mal.pdf · em_demo模組 em_dcm 直流伺服馬達 dc電源 rffpga 系統的直流馬達實驗規劃 其中包括:

end process -- combinational logic DIR lt= (not PHA and DLA and not PHB) or ( PHA and not DLA and PHB) or (not PHB and DLB and PHA) or ( PHB and not DLB and not PHA) PLS lt= (not PHA and DLA) or (PHA and not DLA) or (not PHB and DLB) or (PHB and not DLB) end block DECODER 其中

1PHAPHB為經過雜訊濾波後的 AB相訊號而 DLADLB是其延遲訊號 2根據乘四解碼電路的公式取得 DIR和 PLS訊號其中 DIR用以控制計數器的正反向 PLS用以控制計數器的計數與否

所以接下去就是正反計數器的設計範例如下

COUNTER block signal Q STD_LOGIC_VECTOR(11 downto 0) begin process (CLKRESET) -- sequential logic begin if RESET=1 then --power-on reset Qlt=000000000000 --reset to 0 elsif CLKevent and CLK=1 then --CLK=gt1 trigger if PLS=1 then --clock enable if DIR=1 then Qlt=Q-1 --down counter else Qlt=Q+1 --up counter end if end if end if end process -- combinational logic CNT lt= Q --counter output end block COUNTER 其中

1這是標準的正反計數器架構在開機時自動復歸 2計數器的長度為 12-bit可依需要自行調整

DCM模組中的光電盤精度為每圈500格經過乘四解碼後相當於每圈2000格所以12-bit

計數器只能處理 2 圈的應用範圍絕對不夠在真正應用時一定要用軟體或硬體的方

式再擴張成 16-bit 或是 32-bit 的寬度來處理才行

17

3實驗項目

在直流伺服馬達控制系統中規劃五個實驗項目由系統首頁做選擇每項實驗操

作整個系統實驗組成由各項實驗項目 CAI 檔及各項實驗項目程式連結 PLC 檔結合而成茲表列如下

直 流 伺 服 實 驗 e x p _d c m c ai

開 環 路 電 壓 控 制

系 統 首 頁 實 驗 程 序

e x p _p w m c ai

開 環 路 速 度 控 制 e x p _s p ee d c a i

閉 環 路 位 置 控 制 e x p _a n gl e c a i

加 減 速 的 位 置 控 制 e x p _a c c c ai

正 弦 波 位 置 控 制 e x p _s i n c ai

C A I 圖 控 檔

直 流 伺 服 實 驗 開 環 路 電 壓 控 制

系 統 首 頁 實 驗 程 序

e x p _p w m p lc

開 環 路 速 度 控 制 e x p _s p ee d p l c

閉 環 路 位 置 控 制 e x p _a n gl e p l c

加 減 速 的 位 置 控 制 e x p _a c c p lc

正 弦 波 位 置 控 制 e x p _s i n p lc

e T T Y 批 次 檔

18

4安裝程序

31 將 RFFPGA中的程式拷貝至工作硬碟中進入 DC子目錄資料夾中其中包含下

列檔案

檔案 內容說明 mod SIN_wave MODPWM_wave MODIIR1_filter MODDAS4

MODPOS_inputMODPWM_outputMODACC_controlMODPD_controlMOD這些檔案是由 ASM重新編譯出由 testDCMmem所需執行模組檔

asm SIN_waveasmPWM_waveasmIIR1_filterasmDAS4asm POS_inDCMasmPWM_outDCMasmACC_conDCMasmPD_controlasm是各模組組合語言所設計 SOURCE檔

plc 為進行實驗所需的各批次檔 bit piDSPv0bit為下載到 FPGA的 BIT檔其功能為將 FPGA規劃成

具備 piDSP控制晶片功能提供直流伺服控制所需的控制程式

撰寫 testDCMsys 記載進行 DCM實驗時所需的模組 testDCMMEM 連結完成的 DSP執行檔用來進行 DCM實驗 testDCMvar 紀錄 DCM實驗時的參數對照表

在進行實驗前先將實驗所需的系統程式與模組程式分別說明加以說明系統所

需的程式模組由 testDCMsys 來描述程式列印如下

module fg1 PWM_wavemod 方波產生器

module fg2 SIN_wavemod 弦波產生器

module cn1 ACC_controlmod 加減速控制器

module cn2 PD_controlmod 比例微分控制器

module io1 POS_inputmod 位置和速度讀值

module io2 PWM_outputmod PWM 電壓輸出界面

module ft1 IIR1_filtermod 一階濾波器

module das das4mod 示波器資料蒐集

module io3 LEDKEYmod LEDKEY 界面

其中包括

1兩組波型產生器作為測試命令包括正弦波和方波 2兩組控制器提供包括加減速PD控制器的功能可依照實驗需求搭配使用 3兩組輸入輸出界面執行 PWM輸出和相位回授的界面處理 4一組低通濾波器作為電壓開迴路控制迴路和速度閉迴路控制的模擬使用 5DAS4mod是示波器專用的配合模組不論任何實驗都必須加入此模組 6Ledmod是四位數字七段顯示與 44矩陣按鍵模組

19

5執行程序

首先進入 RFFPGA 裡子目錄 DC直接點選 fPLCexe 出現下面操作畫面(也可直接將此檔

案放置桌面直接點選)

進入下面操作畫面

20

首先使用滑鼠在 FPGA下載按鈕單擊動作使 FPGA變成 piDSP晶片 如您撰寫組合語言時可使用 eASM按鈕 經編譯完成後產生MOD檔 如您撰寫系統連結程式時可使用 eLINK按鈕 經連結完成後產生MEM與VAR檔 點選實驗三後顯示如下 選擇程式下載再按程式啟動這時直流伺服馬達開始做位置控制在操控畫面放置 P 參數設定欄更改參數時馬達即時隨參數改變而產生不同響應 直接點選程式停止時結束所有控制動作再按回首頁選擇其他實驗

21

6實驗說明

下圖所示為直流馬達的控制系統方塊圖透過電流速度以及位置的回授再搭

配適當的控制器可建立完整的閉迴路控制系統在後面的實驗中將依此一系統方塊圖

逐步建立速度和位置的控制實驗各實驗的說明和操作方式及參考實驗結果將逐一進

行詳細的說明

控制

參考位置

速度 位置速

度控制 電流控制

電力電

子換流

位置速

度感測

i

+ -

壓ν

位置

速度

i

DC直流馬達之控制系統方塊圖

PWM 驅動方式只是簡單的開環路控制而高精度的馬達控制必須透過回授控制來完成

對於邏輯電路的設計者而言必須先瞭解基本的回授控制架構以便將來轉換成實用的

邏輯電路設計

設計說明

開環路特性

在電壓驅動的狀況下直流馬達開環路控制的示意圖如下

+-

22

如果換算成數學模式則轉換成下面的架構

+-Vc

R L

EMF

+

-

ITB

J

ω

其中

1其中的變數和參數包括 Vc 控制的電壓命令 R 電樞迴路的等效電阻 L 電樞迴路的等效電感 EMF電樞產生的反電動勢 i 電樞迴路中的電流 T 馬達所產生的扭力 J 馬達和負載的等效慣量 B 馬達和負載的等效摩擦力 ω 馬達所產生的速度 2所牽涉的物理公式包括 電壓迴路Vc = Ri + L(didt) + EMF 即電樞迴路中的電壓平衡 動力負載T = Bω + J(dωdt) 即扭力平衡 馬達特性T = Kti 所產生的扭力和電流成正比 電機特性EMF= Keω 所產生的電動勢和轉速成正比 其中新增的參數包括 Kt馬達的扭力常數 Ke馬達的反電動勢常數 3將微分項作拉式轉換(Laplase Transformation)的對映即 s = ddt 可將微分方程式轉換成更簡單的代數方程式而產生到下面的控制方塊圖

sL+R1Vc

+-EMF

iKt

TsJ+B1 ω

Ke

4在直流馬達的開環路特性中控制電壓(Vc)時輸入點而馬達轉速(ω)是輸出點即是控制馬達電壓以控制馬達轉速

5基本上馬達的開環路特性是個兩階系統類似於低通濾波器的特性在許多應用 場合其開環路特性還可以再簡化成一階系統方塊圖如下

23

sτ +1

KmVc ω 其中 τ一階系統的時間常數 Km一階系統的穩態增益

採用兩階系統的分析方式雖然會比較精細但是用一階系統來分析則可簡化所有的設計

過程因為這裡的實驗重點是邏輯設計所以在本章中我們都用一階系統作分析

系統響應的要求

就控制系統而言最重要的需求就是系統響應包括

穩態特性通常以穩態誤差為指標即是穩態時系統輸出和輸入之間的差異 暫態特性通常以上升時間(Rise Time)和過越比率(Overshoot)為指標

一個理想中的伺服控制系統其系統響應應該是

1穩態誤差為 0即馬達輸出將追隨輸入作變化沒有誤差 2過越比例為 0即馬達輸出絕對不會產生衝過頭的現象 3上升時間為 0即馬達輸出隨時追上輸入命令不會有控制上的延遲現象

當然這是太理想了一個合理的伺服控制系統應該是

1穩態誤差越小越好最好為 0 2過越比例越小越好最好為 0 3上升時間越短越好當然無法為 0但是盡力就是了

速度的回授控制

回授控制的目的就是為了改善系統響應以一階系統代表的馬達控制為例

sτ+1

KmVc ω

在步階響應(Step Response)時其特性如下

1穩態誤差由 Km決定 2過越比例為 0 3上升時間即是其時間常數(τ)

如果用比例控制器(P 控制器)作速度回授的控制則控制方塊圖如下

sτ+1

KmVc ωKp

err

P控制器 直流馬達ωc

速度回授

速度命令 + 速度響應-

24

其中

1速度命令並不直接控制馬達的驅動電壓而是 A將速度命令和速度回授相比找出其誤差訊號 err B依誤差訊號來控制驅動電壓 誤差越大則驅動電壓越高 誤差越小則驅動電壓越低 誤差為負則驅動電壓也為負 其中的比例關係由 P控制器中的 Kp 來調整 2經由數學分析後其步階響應的特性為 A穩態誤差變成 1(1+kpkm)如果 kpkmgtgt1則穩態誤差將趨近於 0 B過越比例仍為 0 C上升時間即是由τ變成τ(1+kpkm)所以上升時間將變短 3換句話說只要 Kp值夠大不論是穩態誤差或是上升時間都會大幅改善

理論上P控制器的增益是越高越好最好是無限大但是實際上是有限制的原因是

1馬達的開環路特性是兩階系統而非一階系統一階系統只是簡化後的結果 2當兩階系統作高增益的回授控制時當增益過高時會產生極嚴重的過越現象使得

馬達產生巨幅震動而難以控制

所以 P控制器的增益雖然是越高越好但調整時仍要小心維持(過越比例為 0)的條件

轉角的回授控制

做為馬達的速度控制P控制器的效果不錯但是如果將 P控制器應用到馬達的轉角控

制其特性就不太理想圖示如下

sτ+1

KmVc ωKp

err

P控制器 直流馬達

θc

轉角回授

轉角命令 + 轉角響應-

s1 θ

其中

1從馬達的速度到轉角之間具有積分特性即 馬達的轉角是馬達速度的積分結果而 馬達的速度是馬達轉角的微分結果而 2其中的積分特性使得整個系統由一階特性變成兩階特性在兩階系統中當設定高

增益時會產生極嚴重的過越現象使得馬達產生巨幅震動而難以控制 3在 P控制器增益無法提高的狀況之下轉角控制效果將無法獲得改善

雖然 P控制器在轉角控制上的效果並不好但是在控制系統中還是有許多法寶可以選擇

25

其中 PD 控制器就是簡單又有效的一個好方法

從表面上來看PD 控制器比 P控制器多了一個微分項就數學上來看這微分項提供了

一個新零點(Zero)可以調整根軌跡圖的走向就實驗上來說這微分項提供了控制器

的預測功能說明如下

sτ+1

KmVc ωKp+sKd

err

P控制器 直流馬達

θc

轉角回授

轉角命令 + 轉角響應-

s1 θ

1轉角控制中 P控制器的問題是在嚴重的過越現象原因是在 P控制器的作用下只有當回授超過命令時才能做出「負向」的控制但這時已經來不及了因為積分器

中已經累積了過多的能量而無法立刻消失使得馬達轉角衝過了頭 2解決之道就是在回授超過命令之前就必須做出「負向」的控制使得積分器累積

的能量逐步減弱在到達目標時才能立刻煞車才能解除過越現象 3而微分項就是這個預測量因為當誤差量越來越小時其微分項是負值雖然微分

項(D)是負值 當誤差量(P)很大時(P+D)的結果還是正值所以還是「正向」控制 當誤差量(P)漸小時(P+D)的結果變成負值才會開始「負向」控制 換句話說在誤差為 0之前即可啟動負向控制產生煞車作用使得馬達提前減速

而即時停止在目標點上自然就解除過越現象了

所以在 PD 控制器中有兩項調整量其中

1Kp增益提供比例控制部分的增益而 Kd增益提供微分控制部分的增益 2Kp增益控制馬達的趨近速度主要影響的是上升時間 3Kd增益控制馬達的提前煞車主要影響的是過越比例 4在兩者搭配下就有機會得到 很快很短的上升時間同時也 不會產生過越現象

PD 控制器的執行

依據 PD 控制器公式可以建立以數位執行的 PD 控制器如下圖所示

cmdKp

fdk

+

-

err

old

+-

Kd

Z-1

out+

+

26

其中

1利用差分公式來取代 PD控制器中的微分公式定義如下 s ==gt (1-Z-1)DT 其中對映的變數包括 s 微分項 Z-1延遲一個抽樣週期 DT抽樣週期單位為 sec 2就執行面而言Z-1是延遲一個抽樣週期也就是以抽樣週期所控制的暫存器 3在上圖中將命令(cmd)和回授(fdk)相減後得到誤差值(err)再將 err延遲一個抽樣週期成為 old所以(err-old)DT即是微分項

4原始的微分控制公式為(err-old)DTKd必須先除再乘但是因為 DT和 Kd 都是常

數可以預先將 Kd修正成 Kd=(KdDT)那麼公式將修正為(err-old)Kd就只需要一個乘法而不需要除法了

同樣的 PD 控制器可以用許多不同的方法作執行包括

1以軟體方式執行例如在 DSP核心中以組合語言撰寫控制模組 2以硬體方式執行例如在 FPGA中直接設計邏輯電路 3以微碼方式執行以微碼作順序控制執行硬體運算工作

這裡先提供用組合語言撰寫的程式模組作為設計參考其他兩種方法將在後續的實驗中

再陸續作說明

模組程式範例PD_controlasm

local cmd R0 IP gnd 輸入點位置命令(可忽略) local fdk R1 IP gnd 輸入點位置回授(可忽略) local out R2 OP 輸出點用以控制速度迴路 local kp R3 256 參數增益 kp10=256 local kd R4 0 參數增益 kd10=256 local err R5 0 內部變數 local old R6 0 內部變數 local gnd R7 0 無輸入時的短路點 data 8 模組變數區長度 initial 開機啟動程序 WR out0 WR old0 RET out=old=0 timer 即時控制程序 RD (cmd) SUB (fdk) WR err MUL kp SFR 8 P=(cmd-fdk)kp256 RDS err SUBX old MUL kd SFR 8 D=(err-old)kd256 ADDS WR out out=P+D RET

27

其中

1PD控制模組中對外的界面變數包括 cmd命令的輸入點 fdk回授的輸入點 out控制的輸出點 2內部參數包括 Kp比例控制增益其中 10=256所以乘完後還需要再右移 8-bit Kd微分控制增益其中 10=256所以乘完後還需要再右移 8-bit 3內部變數包括 err臨時性的變數用以儲存誤差值的計算結果 old儲存性的變數用以儲存上一次抽樣控制時的 err值 4模組程式分成三部分包括 變數宣告local和data所宣告的部分 初值設定initial程序中先將 out和 old設定為 0 即時控制timer程序中依序執行 PD控制器中的每個步驟

控制目標的選擇

從字面上來看速度控制就是控制馬達的速度轉角控制就是控制馬達的轉角沒什麼

好討論的但是實際上確有許多問題第一的問題就是什麼是速度和轉角馬達的速

度和轉角如果不作量測如何得知

既然在量測中取得了速度和轉角資料那麼我們所控制的到底是物理學上的速度和轉

sτ+1

KmVc ωKp+sKd

err

P控制器 直流馬達

θc

轉角回授

轉角命令 + 轉角響應-

s1 θ

KxANG

轉角量測

角還是量測上的速度和轉角以下圖為例

其中

1以轉角量測裝置量測轉角例如裝在馬達軸端的光電盤和解碼電路 2轉角的量測輸出是 ANG而 ANG和物理轉角θ之間有 Km的增益關係 3只要 Km值不是 1那麼系統就不再是單位回授 4如果 Km還有非線性或失真現象那麼控制結果也將有非線性或失真現象

這些問題混雜起來會使得控制系統的分析變得更複雜如果要簡單處理就要認同現

實環境直接以量測結果為控制目標如下圖所示

28

sτ+1

KmVc ωKp+sKd

err

P控制器 直流馬達

θc

轉角回授

+-

s1 θ Kx

ANG轉角量測

其中

1直接以量測結果為控制目標將全系統還原成標準的單位回授控制 2所有的非線性或失真現象都進入開環路討論屬於可以補償的部分 3但是控制結果就是「量測上的轉角」而「物理學上的轉角」

量測誤差的問題

轉角θ

量測ANG

對於量測誤差而言最明顯的問題就是量化誤差圖示如下

其中

1以 DCM模組中的光電盤為例精度為每圈 500格經由乘四解碼計數後其等效

精度增加為每圈 2000格 2比(12000)圈更精密的部分都無法響應換句話說振幅越大的控制其相對誤差越

小而振幅越小的控制其相對誤差越大例如 當振幅為(12)圈時其控制誤差量為 01而 當振幅為(120)圈時其控制誤差量為 1 這是標準的的非線性現象

量化誤差不只影響穩態上的精度還會造成非線性的震動問題圖示如下

t

誤差值

+1

-1

其中

1由於量化誤差的問題只有當誤差超過+1或是-1時才會真正偵測到誤差也才

29

會施加控制量作補償 2所以穩態時的誤差將在+1-1之間擺動造成微幅的振動 3量化誤差越大震動越明顯而量化誤差很小時通常不易察覺出震動現象

微分量的計算

伺服系統中有兩處需要用到微分計算包括

1PD控制器中誤差微分量的計算 2速度控制器中速度回授值的量測

在理論上微分公式是(dXdt)相當於 dXdt = (X(n)-X(n-1))DT (當 DT趨近於 0時)

所以當微分計算中的抽樣週期(DT)越短時微分的計算值將越接近理論值但是事實上

卻非如此以下圖為例

t

X

DTDX

其中

1當 X值為等速度運動時其微分量就是其斜率相當於 DXDT 2DT是微分計算中的抽樣週期理論上越短越好但是由於 DX本身的量化誤差

使得這個原則不再成立例如當斜率為 7394時 若 DT=1000則 DX=7394而 DXDT=7394 若 DT=100 則 DX=739 而 DXDT=739 若 DT=10 則 DX=73 而 DXDT=73 若 DT=1 則 DX=7 而 DXDT=7 3換句話說當抽樣週期越短時DX的量化誤差將越明顯而造成微分計算上更嚴

重的誤差

在 DCM 模組中速度量測的量化誤差分析如下

1馬達上的光電盤精度為每圈 500格經過乘四解碼後等效精度為每圈 2000格 2當馬達轉速為 1200RPM而抽樣頻率為 1KHz時對映的速度量測值為 1200(圈分)2000(格圈)60(秒分)1000(DT秒) = 40(格DT) 3換句話說1200RPM的轉速對映到 40的速度量測值即速度單位=30RPM若最

高轉速為 3000RPM則在+-3000RPM的速度範圍內其量化誤差為 05相當於8-bit的 ADC轉換器精度

4對映不同的抽樣頻率的量化誤差表列如下

30

光電盤精度 最高轉速 抽樣頻率 速度單

速度範圍 量化誤差

500PPR 3000RPM 1KHz 30RPM +-100 05 500PPR 3000RPM 2KHz 60RPM +-50 1 500PPR 3000RPM 4KHz 120RPM +25 2

過溢現象的處理

輸入

輸出

32767

-32768

整數運算都有數值範圍限制以 16-bit 整數而言輸入輸出的關係如下

其中

1當超過正負數的上下限時數值會正負顛倒例如 +32768 將會視為 -32768作處理而 +32769 將會視為 -32768作處理依此類推 2換句話說16-bit的整數運算只有在+-32767之間是線性的對映關係而超過這個範圍就是非線性的對映關係

3不但如此還因為正負顛倒的現象使得原來設計的負回授控制將變為正回授控制

而產生非線性的震盪現象 4換句話說只要計算上稍一不慎就會使得原先穩定的系統產生不穩定的震盪結果

為了避免過溢現象所造成的不穩定問題通常控制系統中會利用飽和處理作改善圖示

如下

輸入

輸出

lmtH

lmtL

31

其中

1當超過計算的上限時將固定設為上限值處理而當超過計算的下限時也將固定

設為下限值處理 2這時的整數運算只有在上下限之間是線性的對映關係而超過這個範圍將還是非線

性的對映關係 3雖然如此但是因為沒有正負顛倒的現象所以不再會有負回授變為正回授的問題

而避免了非線性的震盪現象 4換句話說飽和處理是針對過溢現象的妥協處理方案雖然不完全理想但是是可

接受的最佳選擇

下面是對映的組合語言範例

RD x x為輸入端 MIN lmtH 取得 x和 lmtH中的較小值即是作上限保護的工作 MAX lmtL 取得 x和 lmtL中的較大值即是作下限保護的工作 WR y Y為輸出端 其中

1組合語言中提供MAX和MIN的計算其中 MIN lmtH 比較 AX暫存器和 lmtH而將較低值存入 AX暫存器中 MAX lmtL 比較 AX暫存器和 lmtH而將較高值存入 AX暫存器中 2所以直接可用MIN指令作上限保護而以MAX指令作下限保護兩者合併後即是

完整的飽和處理結果

飽和處理通常應用在高位數轉成低位數的場合例如32-bit轉換成16-bit或是16-bit

轉換成 12-bit 等等例如在本實驗中所有的運算都是以 16-bit 整數作處理但是到

PWM 驅動級輸出時卻要轉換成 12-bit精度的 PWM 命令所以必須先用飽和處理以避免

過溢現象造成的不穩定問題

32

61 實驗 1-開迴路的電壓控制 實驗說明以電壓直接控制轉速的開迴路特性可簡化為一階系統處理方塊圖如

sτ+1

v km ωm

其中V 送給驅動器的 PWM電壓命令

ωm馬達的轉動速度可由處理 photo encoder信號所得的位置微分而得 km一階系統的穩態增益 τ一階系統的時間常數即步階響應中的上升時間

為了觀測直流馬達的開環路特性建立下面的測試方塊圖

其中

1所使用的模組包括 FG1方波產生器產生所需的步階測試波形 FT1馬達模擬以一階系統的低通濾波器來執行 IO1光電盤的回授處理可同時取得轉角和速度的量測值 IO2PWM電壓驅動直接驅動直流馬達作控制 Led四位數字七段顯示模組顯示波形信號資料 2測試目標有兩項(P 參數設定欄)包括 A調整方波命令控制直流馬達作開環路的 PWM電壓控制 B調整馬達模擬參數使模擬結果和實驗結果相符以確認開環路特性

33

實驗畫面顯示如下

測試一 開環路的電壓控制 記錄頻道 CH1電壓命令Y1=-300DY=500 CH2模擬速度Y2=-100DY=500 CH3馬達速度Y3=100DY=50 CH4馬達轉角Y4=300DY=50000 實驗參數 FG1kAMP=256電壓命令的測試振幅 FG1kFRQ=150電壓命令的測試頻率 FT1DT =10 馬達模擬參數 FT1KA =500馬達模擬參數

其中

1用示波器功能記錄四個頻道其中 CH2和 CH3重疊顯示以比較模擬速度和量測

速度之間的差異 2由於 Km 不等於 1所以必須調整 CH3的 Y軸單位才能使得 CH2和 CH3的穩態響應部分重疊

3實驗時可以改變 FG1的參數以調整測試方波的振幅和頻率 4可以調整 FT1的參數使得 CH2和 CH3的暫態響應部分重疊

根據實際的測試結果分析如下

2馬達模擬的參數調整到 DT=10而 KA=500根據公式 τ = 40961000dtka 所以上升時間(τ)為 0082秒或是 82ms 3CH2CH3的 Y軸單位並不一致顯然 Km 不等於 1經計算確認 Km=0098

對應之 plc檔程式說明(exp_pwmplc) echo off 畫面顯示開始

run dsp 0 選擇 DSP1

run stop run reset 既有程式停止

run testDCMmem 下載指定程式

das 1 ampfg1out 0 1024 PWM 波形 Volt 設定 DAS 頻道1

das 2 ampft1lp 0 1024 馬達模擬 Volt 設定 DAS 頻道2

das 3 ampio1spd 0 1024 馬達速度 Volt 設定 DAS 頻道3

das 4 ampio1ang 0 1024 馬達角度 Volt 設定 DAS 頻道4

plot select 0 設定示波器頁數

plot xunit 100000 0 設定示波器 X軸

plot yunit 1 500 -300 設定示波器 Y1 軸

34

plot yunit 2 500 -100 設定示波器 Y2 軸

plot yunit 3 50 100 設定示波器 Y3 軸

plot yunit 4 50000 300 設定示波器 Y4 軸

plot trigger 1 0 1 10 設定示波器觸發

plot scope 9 1 2 3 4 設定示波器顯示

module io2 設定 io2 模組

s cmd ampfg1out

module fg1 設定 fg1 模組

s kAmp 256 s kFrq 150

module ft1 設定 ft1 模組

s u ampfg1out s dt 10 s ka 500

module io3 設定 io3 模組

s led ampfg1out

module 回復預設模組

run 1khz 設定抽樣頻率為 4KHz

run start DSP 開始執行

das stop pause 1 DAS 啟動 das start DAS 啟動

echo on 回復正常訊息顯示

使用者可視情況調整一階濾波器的 ka和 dt值使得 ch2和 ch3 兩組波形完全相符

以求得開迴路系統近似的一階轉移函數 CAI操控設計畫面規劃如下(EXP_PWMCAI) page 1 畫面設計

35

page 2 畫面設計 page 3 畫面設計

36

實測響應圖

訊 號 說 明 訊 號 說 明 ch1 方波產生器訊號 ch3 一階濾波器輸出信號 ch2 馬達角速度訊號 ch4 馬達角位置訊號

直流馬達之開迴路電壓控制響應圖

37

以邏輯分析功能觀測直流馬達之光電盤輸入與 PWM輸出信號

38

62 實驗 2-閉迴路的速度控制 實驗說明為了觀測閉迴路的速度控制響應建立下面的測試方塊圖

加入 PD控制後系統閉迴路的轉移函數經適度的簡化仍能約略以一階系統

處理方塊圖如下

sτ+1

u km ωm

其中

u 送給控制器的速度命令

ωm馬達的轉動速度可由處理 photo encoder 信號所得的位置微分而得

km一階系統的穩態增益 τ一階系統的時間常數即步階響應中的上升時間

方塊圖中的模組功能說明如下

1用 fg1 產生測試用的方波速度命令

2將方波速度命令和速度回授訊號送到 PD 控制器方塊中產生電壓控制訊號再透

過 io2 模組將訊號送出給伺服介面

3用 ft1 建立對照用的一階系統可用 IIR1濾波器方塊產生

4將方波命令產生速度命令再觀測 PHT(io1)上的速度值 spd

5調整 IIR1濾波器的參數使得兩組波形完全相符這時 IIR1濾波器就是閉迴路

速度控制的特性其中 km 為增益而τ為上升時間(單位為 sec)

6增益 km 可從示波器中作簡單計算而上升時間(τ=40964000dtka)

7 Led四位數字七段顯示模組顯示波形信號資料

39

對應之 plc檔程式說明(exp_speedplc) echo off 畫面顯示開始

run dsp 0 選擇 DSP1

run stop run reset 既有程式停止

run testDCMmem 下載指定程式

das 1 ampfg1out 0 1024 PWM 波形 Volt 設定 DAS 頻道1

das 2 ampft1lp 0 1024 馬達模擬 Volt 設定 DAS 頻道2

das 3 ampio1spd 0 1024 馬達速度 Volt 設定 DAS 頻道3

das 4 ampio1ang 0 1024 馬達角度 Volt 設定 DAS 頻道4

plot select 0 設定示波器頁數

plot xunit 100000 0 設定示波器 X軸

plot yunit 1 50 -300 設定示波器 Y1 軸

plot yunit 2 50 -100 設定示波器 Y2 軸

plot yunit 3 50 100 設定示波器 Y3 軸

plot yunit 4 50000 300 設定示波器 Y4 軸

plot trigger 1 0 1 10 設定示波器觸發

plot scope 9 1 2 3 4 設定示波器顯示

module io2 設定 io2 模組

s cmd ampcn2out

module fg1 設定 fg1 模組

s kAmp 50 s kFrq 150

module cn2 設定 cn1 模組

s cmd ampfg1out s fdk ampio1spd s kp 0x4000

module ft1 設定 ft1 模組

s u ampfg1out s dt 2 s ka 320

module io3 設定 io3 模組

s led ampfg1out

module 回復預設模組

run 1khz 設定抽樣頻率為 4KHz

run start DSP 開始執行

das stop pause 1 DAS 啟動 das start DAS 啟動

echo on 回復正常訊息顯示

CAI操控設計畫面規劃如下(EXP_speedCAI)

40

page 1 畫面設計 page 2 與 page 3 畫面設計與實驗一 page 2 與 page 3相同畫面 page 4 畫面設計

41

方塊的參數設定 使用者可視情況調整一階濾波器的 ka和 dt值使得 ch2和 ch3 兩組波形完全相符

以求得此一閉迴路系統近似的一階轉移函數或調整 PD控制器中的 kp和 kp值以調整系統之響應 實測響應圖

訊 號 說 明 訊 號 說 明 ch1 方波產生器產生之速度命令 ch3 一階濾波器輸出信號 ch2 馬達角速度訊號 ch4 馬達角位置訊號

42

直流馬達之閉迴路速度控制響應圖

43

63 實驗 3-閉迴路的位置控制 實驗說明為了觀測閉迴路的位置控制響應將直流馬達的回授改為位置訊號

建立下面的測試方塊圖 方塊圖中的模組功能說明如下

1用 fg1產生測試用的方波位置命令 2將方波位置命令和位置回授訊號送到 PD控制器方塊中產生電壓控制訊號再透過 io2模組將訊號送出到伺服介面驅動馬達轉動

對應之 plc檔程式說明(exp_angleplc) echo off 畫面顯示開始

run dsp 0 選擇 DSP1

run stop run reset 既有程式停止

run testDCMmem 下載指定程式

das 1 ampfg1out 0 1024 PWM 波形 Volt 設定 DAS 頻道1

das 2 ampft1lp 0 1024 馬達模擬 Volt 設定 DAS 頻道2

das 3 ampio1spd 0 1024 馬達速度 Volt 設定 DAS 頻道3

das 4 ampio1ang 0 1024 馬達角度 Volt 設定 DAS 頻道4

plot select 0 設定示波器頁數

plot xunit 100000 0 設定示波器 X軸

plot yunit 1 1000 -300 設定示波器 Y1 軸

plot yunit 2 1000 -100 設定示波器 Y2 軸

plot yunit 3 20 100 設定示波器 Y3 軸

plot yunit 4 1000 300 設定示波器 Y4 軸

plot trigger 1 0 1 10 設定示波器觸發

44

plot scope 9 1 2 3 4 設定示波器顯示

module io2 設定 io2 模組

s cmd ampcn2out

module fg1 設定 fg1 模組

s kAmp 1000 s kFrq 75

module cn2 設定 cn1 模組

s cmd ampfg1out s fdk ampio1ang s kp 0x300 s kd 0x4000

module ft1 設定 ft1 模組

s u ampfg1out s dt 2 s ka 320

module io3 設定 io3 模組

s led ampfg1out

module 回復預設模組

run 1khz 設定抽樣頻率為 4KHz

run start DSP 開始執行

das stop pause 1 DAS 啟動 das start DAS 啟動

echo on 回復正常訊息顯示

CAI操控設計畫面規劃如下(EXP_angleCAI) page 1 畫面設計

45

page 2 與 page 3 畫面設計與實驗一 page 2 與 page 3相同畫面 page 4 畫面設計與實驗二 page 4 畫面 方塊的參數設定 延續上一實驗的說明使用者可以調整 PD控制器中的 kp和 kd值以調整系統之

響應 實測響應圖

訊 號 說 明 訊 號 說 明 ch1 方波產生器產生之位置命令 ch3 馬達角速度訊號 ch2 馬達角位置 ch4 Pd控制器輸出之電壓訊號

46

直流馬達之閉迴路位置控制響應圖

47

64 實驗 4-加減速的位置控制 實驗說明為避免方波命令的過於嚴苛在方波命令的輸出加入一加減速控制功

能方塊以減緩命令變化的幅度增加馬達運動的平順建立的測試方塊圖如下

方塊圖中的模組功能說明如下

1用 fg1產生測試用的方波位置命令 2將方波位置命令送到加減速控制方塊處理後產生新的位置命令再將新的位置命

令與位置回授訊號送到 PD控制器方塊中產生電壓控制訊號最後透過 io2模組將訊號送出到伺服介面驅動馬達轉動

對應之 plc檔程式說明(exp_accplc) echo off 畫面顯示開始

run dsp 0 選擇 DSP1

run stop run reset 既有程式停止

run testDCMmem 下載指定程式

das 1 ampfg1out 0 1024 PWM 波形 Volt 設定 DAS 頻道1

das 2 ampcn1out 0 1024 加速控制 Volt 設定 DAS 頻道2

das 3 ampio1spd 0 1024 馬達速度 Volt 設定 DAS 頻道3

das 4 ampio1ang 0 1024 馬達角度 Volt 設定 DAS 頻道4

plot select 0 設定示波器頁數

plot xunit 100000 0 設定示波器 X軸

plot yunit 1 2000 -300 設定示波器 Y1 軸

plot yunit 2 2000 -100 設定示波器 Y2 軸

plot yunit 3 50 100 設定示波器 Y3 軸

plot yunit 4 2000 300 設定示波器 Y4 軸

48

plot trigger 1 0 1 10 設定示波器觸發

plot scope 9 1 2 3 4 設定示波器顯示

module io2 設定 io2 模組

s cmd ampcn2out

module fg1 設定 fg1 模組

s kAmp 2000 s kFrq 150

module cn1 設定 cn1 模組

s cmd ampfg1out

module cn2 設定 cn2 模組

s cmd ampcn1out s fdk ampio1ang s kp 0x300 s kd 0x4000

module ft1 設定 ft1 模組

s u ampfg1out s dt 2 s ka 320

module io3 設定 io3 模組

s led ampfg1out

module 回復預設模組

run 1khz 設定抽樣頻率為 4KHz

run start DSP 開始執行

das stop pause 1 DAS 啟動 das start DAS 啟動

echo on 回復正常訊息顯示

CAI操控設計畫面規劃如下(EXP_accCAI) page 1 畫面設計

49

page 2 畫面設計與實驗一 page 2相同畫面 page 3 畫面設計與實驗二 page 4相同畫面

參數設定參考之前各實驗的說明可線上機動性的調整 PD控制器中的 kp和 kd值以調整系統之響應 實測響應圖

訊 號 說 明 訊 號 說 明 ch1 方波產生器產生之位置命令 ch3 馬達角位置 ch2 加減速模組輸出之位置命令 ch4 馬達角速度訊號

50

圖一 直流馬達經加減速控制後之閉迴路控制響應圖

51

65 實驗 5-正弦波的位置控制 實驗說明在本實驗中改變命令的波形由方波改變為正弦波並建立如下的測

試方塊圖與上一實驗相比較僅更改命令的波形產生方塊 方塊圖中的模組功能說明如下 1用 fg2產生測試用的弦波位置命令 2將弦波位置命令送到加減速控制方塊處理後產生新的位置命令再與 io1 讀入的位

置回授訊號送到 PD 控制器方塊中產生電壓控制訊號再透過 io2 模組將訊號送出到伺服介面驅動馬達轉動

對應之 plc檔程式說明(exp_sinplc) echo off 畫面顯示開始

run dsp 0 選擇 DSP1

run stop run reset 既有程式停止

run testDCMmem 下載指定程式

das 1 ampfg2out 0 1024 SIN 波形 Volt 設定 DAS 頻道1

das 2 ampcn1out 0 1024 加速控制 Volt 設定 DAS 頻道2

das 3 ampio1spd 0 1024 馬達速度 Volt 設定 DAS 頻道3

das 4 ampio1ang 0 1024 馬達角度 Volt 設定 DAS 頻道4

plot select 0 設定示波器頁數

plot xunit 100000 0 設定示波器 X軸

plot yunit 1 2000 -300 設定示波器 Y1 軸

plot yunit 2 2000 -100 設定示波器 Y2 軸

plot yunit 3 50 100 設定示波器 Y3 軸

plot yunit 4 2000 300 設定示波器 Y4 軸

plot trigger 1 0 1 10 設定示波器觸發

52

plot scope 9 1 2 3 4 設定示波器顯示

module io2 設定 io2 模組

s cmd ampcn2out

module fg2 設定 fg1 模組

s kAmp 2000 s kFrq 100

module cn1 設定 cn1 模組

s cmd ampfg2out

module cn2 設定 cn2 模組

s cmd ampcn1out s fdk ampio1ang s kp 0x300 s kd 0x4000

module ft1 設定 ft1 模組

s u ampfg2out s dt 2 s ka 320

module io3 設定 io3 模組

s led ampfg2out

module 回復預設模組

run 1khz 設定抽樣頻率為 4KHz

run start DSP 開始執行

das stop pause 1 DAS 啟動 das start DAS 啟動

echo on 回復正常訊息顯示

CAI操控設計畫面規劃如下(EXP_sinCAI) page 1 畫面設計

53

page 2 畫面設計 page 3 畫面設計與實驗二 page 4相同畫面

方塊的參數設定可調整 PD控制器中的 kp和 kd值以調整系統之響應 實測響應圖

訊 號 說 明 訊 號 說 明 ch1 弦波產生器產生之位置命令 ch3 馬達角位置訊號 ch2 加減速模組輸出之位置命令 ch4 馬達角速度訊號

54

直流馬達之閉迴路弦波加減速位置控制響應圖

55

7組合語言說明

本節將針對 DC馬達伺服控制實驗專用的程式模組進行功能與程式碼的說明其

有關於波形產生器與資料擷取模組等說明如下

SIN_waveasm 正弦波產生器 PWM_waveasm 方波產生器 IIR1_filterasm 一階濾波器 DAS4asm 資料蒐集模組

弦波產生器

此模組會產生週期性的正弦波方塊圖如下

outfrq

kBiasbias

ampkAmp

kFrqth

kThf=1TB

θ

A

其中

1正弦波有四個參數振幅(A)頻率(F)相位(θ)和偏移(B)其公式為 out = A sin(2πF t +θ) + B 2對於單純的正弦波產生器所對映的參數包括 kAmp 振幅值 kFrq 頻率值kFrq=655368000Hz其中 Hz的範圍為 0~4000例如 1000Hz =gt frq=8192 100Hz =gt frq=819 10Hz =gt frq=82 1Hz =gt frq=8 kTh 相角值0~255代表 0~360的相位當 th=0 時為正弦波 th=64 時為餘弦波 th=128時為反相波依此類推 kBias偏移值 3對於可調變的正弦波產生器其對映的輸入點為 amp 控制振幅的輸入點可產生調幅(AM)波形 frq 控制頻率的輸入點可產生調頻(FM)波形 th 控制相位的輸入點可產生調相(PM)波形 bias控制偏移的輸入點可產生雙頻混波(相加)波形 4若不使用調變功能時各個輸入點時的預設值為 amp 指向 kAmp 的位址 frq 指向 kFrq 的位址

56

th 指向 kTh 的位址 bias指向 kBias的位址

模組程式範例SIN_WAVEasm

local amp R0 IP kAmp 輸入點sin波的振幅 local frq R1 IP kFrq 輸入點sin波的頻率 local th R2 IP kTh 輸入點sin波的相角 local bias R3 IP kBias 輸入點sin波的中心偏移 local out R4 OP 輸出點sin波輸出 local tab R5 TP 表格指標指向 sin[256]的表格 local ang R6 內部變數相位角65536=360deg local kAmp R7 1000 參數振幅值 local kFrq R8 1000 參數頻率值=655368000Hz local kTh R9 0 參數相角值360deg=256 local kBias R10 0 參數偏移值 data 11 模組變數區長度及初值 initial 啟動程序 WR ang0 WR out0 ang=out=0 RET timer 即時控制程序(8KHz) RD ang ADD (frq) WR ang ang+=frq SFR 8 ADD (th) AND 255 ACC=sin(ang256+th) ADD tab WRH RDM table-look-up MUL (amp) SFR 12 ADD (bias) WR out out=ACCamp4096+bias RET table tab 256 sin[256]表格區10=4096 0 101 201 301 401 501 601 700 00~070deg 799 897 995 1092 1189 1285 1380 1474 08~0F 1567 1660 1751 1842 1931 2019 2106 2191 10~17 2276 2359 2440 2520 2598 2675 2751 2824 18~1F 2896 2967 3035 3102 3166 3229 3290 3349 20~27 3406 3461 3513 3564 3612 3659 3703 3745 28~2F 3784 3822 3857 3889 3920 3948 3973 3996 30~37 4017 4036 4052 4065 4076 4085 4091 4095 38~3F 4096 4095 4091 4085 4076 4065 4052 4036 40~4790deg 4017 3996 3973 3948 3920 3889 3857 3822 48~4F 3784 3745 3703 3659 3612 3564 3513 3461 50~57 3406 3349 3290 3229 3166 3102 3035 2967 58~5F

57

2896 2824 2751 2675 2598 2520 2440 2359 60~67 2276 2191 2106 2019 1931 1842 1751 1660 68~6F 1567 1474 1380 1285 1189 1092 995 897 70~77 799 700 601 501 401 301 201 101 78~7F 0 65435 65335 65235 65135 65035 64935 64836 80~87180deg 64737 64639 64541 64444 64347 64251 64156 64062 88~8F 63969 63876 63785 63694 63605 63517 63430 63345 90~97 63260 63177 63096 63016 62938 62861 62785 62712 98~9F 62640 62569 62501 62434 62370 62307 62246 62187 A0~A7 62130 62075 62023 61972 61924 61877 61833 61791 A8~A8 61752 61714 61679 61647 61616 61588 61563 61540 B0~B7 61519 61500 61484 61471 61460 61451 61445 61441 B8~BF 61440 61441 61445 61451 61460 61471 61484 61500 C0~C7270deg 61519 61540 61563 61588 61616 61647 61679 61714 C8~CF 61752 61791 61833 61877 61924 61972 62023 62075 D0~D7 62130 62187 62246 62307 62370 62434 62501 62569 D8~DF 62640 62712 62785 62861 62938 63016 63096 63177 E0~E7 63260 63345 63430 63517 63605 63694 63785 63876 E8~EF 63969 64062 64156 64251 64347 64444 64541 64639 F0~F7 64737 64836 64935 65035 65135 65235 65335 65435 F8~FF

就程式結構而言說明如下

timer 即時控制程序(8KHz) RD ang ADD (frq) WR ang ang+=frq SFR 8 ADD (th) AND 255 ACC=sin(ang256+th) ADD tab WRH RDM table-look-up MUL (amp) SFR 12 ADD (bias) WR out out=ACCamp4096+bias RET

1基本上我們以查表法計算 sin()其輸入θ的範圍為 0~255對映到 0~360deg其輸出 sin(θ)的範圍為+-4096對映到+-10的範圍

2建立一個內部變數 ang其範圍為 0~65535對映到 0~360的相位角 3每個timer程序都執行 ang+=frq的動作更新目前的相位角接著依照 ang的相位角查表得到 sin(ang256+th)值

4由於表格長度為 256-word所以必須將 ang256才能得到正確的對映關係而 th範圍為 0~255所以不需要像 ang一般的做額外處理

5sin()的範圍為(+1-1)而在表格中以(+4096~-4096)的型式記錄相當於 10=4096所以執行 Asin()時還要用 SFR12指令做4096的動作才能正確的取得輸出值

58

6就頻率輸入 frq而言其計算原則是將θ=ωt轉化成θ=Σ(ωdt)因為抽樣頻率

為 8KHz所以 dt=18000而得到 frq=655368000Hz公式其中 Hz為真正的頻率在 8KHz的抽樣頻率下其範圍為 0~4000

鋸齒波產生器

此模組會產生週期性的鋸齒波方塊圖如下

outfrq

kBiasbias

ampkAmp

kFrqth

kThf=1TB

θ

A

其中

1鋸齒波也有四個參數振幅(A)頻率(F)相位(θ)和偏移(B)和正弦波的定義完全一致唯一的差異是其輸出為鋸齒波而非正弦波

2基本波形是從週期開始時為 0一直遞增到週期結束時到達最高點然後立刻回歸

到 0重新開始 3以程式結構而論鋸齒波程式幾乎就是正弦波的相位計算部分只差沒有正弦波的

查表處理而已

模組程式範例SAW_WAVEasm

local amp R0 IP kAmp 輸入點sin波的振幅 local frq R1 IP kFrq 輸入點sin波的頻率 local th R2 IP kTh 輸入點sin波的相角 local bias R3 IP kBias 輸入點sin波的中心偏移 local out R4 OP 輸出點sin波輸出 local ang R5 內部變數相位角65536=360deg local kAmp R6 1000 參數振幅值 local kFrq R7 1000 參數頻率值=655368000Hz local kTh R8 0 參數相角值360deg=256 local kBias R9 0 參數偏移值 data 11 模組變數區長度及初值 initial 啟動程序 WR ang0 WR out0 ang=out=0 RET timer 即時控制程序(8KHz) RD ang ADD (frq) WR ang ang+=frq SFR 8 ADD (th) AND 255 ACC=(ang256+th)amp0x00ff MUL (amp) SFR 8 ADD (bias) WR out out=ACCamp256+bias

59

RET

脈衝波產生器

outfrq

kBiasbias

ampkAmp

kFrqth

kThf=1TB

θ

A

pwm

kDutyduty

此模組會產生週期性的脈衝波方塊圖如下

其中

1脈衝波有五個參數其中振幅(A)頻率(F)相位(θ)和偏移(B)四個參數和正弦波

定義完全一樣另外再增加一個負載率(D) 2基本波形是從週期開始時為 1隔段時間後換為 0然後持續到週期結束再重新開始其中 1所佔有的比例就是負載率當 D=0時為 0而 D=255時為 100

3和其他參數類似負載率(D)以 duty為其輸入點而以 kDuty為其參數值

模組程式範例PLS_WAVEasm

local amp R0 IP kAmp 輸入點脈衝波的振幅 local frq R1 IP kFrq 輸入點脈衝波的頻率 local th R2 IP kTh 輸入點脈衝波的相角 local bias R3 IP kBias 輸入點脈衝波的中心偏移 local duty R4 IP kDuty 輸入點脈衝波的負載率 local out R5 OP 輸出點脈衝波輸出 local ang R6 內部變數相位角65536=360deg local kAmp R7 1000 參數振幅值 local kFrq R8 1000 參數頻率值=655368000Hz local kTh R9 0 參數相角值360deg=256 local kBias R10 0 參數偏移值 local kDuty R11 128 參數負載率100 =256 data 12 模組變數區長度及初值 initial 啟動程序 WR ang0 WR out0 ang=out=0 RET timer 即時控制程序(8KHz)

60

RD ang ADD (frq) WR ang ang+=frq SFR 8 ADD (th) AND 255 ACC=(ang256+th)amp0x00ff SUB (duty) RD (amp) JLT t1 RD 0 ACC=(amp0) t1 ADD (bias) WR out out=ACC+bias RET

IIR 一階濾波器

此模組執行一階的 IIR濾波器方塊圖如下

kau x

Z-1

+

+

-

+低通濾波器

高通濾波器dx lp

hp

濾波器參數的計算公式如下

1假設濾波器的頻寬為 hz則 ωn=hz628 2若系統頻率為 8KHz則抽樣週期 dT為 dT=dt8000 其中 dt為模組參數 3則濾波器參數為 ka=ωndT4096或是 =hzdt62880004096即 =hzdt32 4當 dt決定後所允許的訊號頻寬為(4000dt)換句話說訊號頻寬會因為 dt增加而下降

為了方便實驗的運用下面列出常用的參數對照表

濾波頻寬

(Hz)

10 20 50 100 200 500 1000 2000

訊號頻寬

(Hz)

400 800 2000 4000 4000 4000 4000 4000

模組參數 dt 10 5 2 1 1 1 1 1

模組參數 ka 320 320 320 320 640 1600 3200 6400

表格的運用方式如下

1首先決定濾波頻寬 2接著查表找出對映的參數 dt和 ka 3再查表得到對映的訊號頻寬以決定是否需要串接前級濾波器

61

模組程式範例IIR1_FILTERasm

local u R0 IP 輸入點濾波器輸入 local lp R1 OP 輸出點低通濾波器輸出 local hp R2 OP 輸出點高通濾波器輸出 local dt R3 1 參數抽樣週期 local ka R4 4096 參數增益 ka10=4096 local prd R5 內部變數抽樣週期用 data 6 模組變數區長度 initial 開機啟動程序 WR lp0 WR hp0 WR prd1 RET lp=hp=0prd=1 timer 即時控制程序 SUB prd1 JNZ b9 if (--prdgt0) return RD dt WR prd prd=dt RD (u) SUB lp WR hp hp=u-lp MUL ka SFR 12 ADD lp WR lp lp+=(hpka4096) b9 RET

資料蒐集模組

資料蒐集模組是一個非常特殊的模組專門配合 eTTY 程式中的示波器使用

模組程式範例DAS4asm

local cmd R0 0 紀錄命令0=停止1=前置記錄2=正觸發4=負觸發6=觸發記錄 local dt R1 1 抽樣週期每 dT抽樣一次 local tab R2 TP DAS表格啟始位址 local cnt R3 0 目前記錄點(0~255) local ch1 R4 0 定義頻道1的變數位址 local ch2 R5 0 定義頻道2的變數位址 local ch3 R6 0 定義頻道3的變數位址 local ch4 R7 0 定義頻道4的變數位址 local trg R8 0 定義觸發頻道的變數位址 local th R9 0 觸發準位 local tail R10 0 觸發後的抽樣個數 local buf R11 1 抽樣計數(1~dt) local pnt R12 表格位址計算pnt=tab+cnt4 local len R13 表格長度計算(0~256) data 14 定義模組變數區的長度 table tab 1024 定義表格的長度 initial 啟動程序 WR cmd0 RET cmd=0 timer 控制程序

62

ADD cmd0 JZ t9 if (cmd==0) return SUB buf1 JNZ t9 if (--buf)gt0) return RD dt WR buf dt=buf RD cnt ADD 1 AND 0xff WR cnt cnt=(cnt+1)amp0xff SFL 2 ADD tab WR pnt pnt=tab+cnt4 RD (ch1) WR (pnt) ADD pnt1 pnt++=ch1 RD (ch2) WR (pnt) ADD pnt1 pnt++=ch2 RD (ch3) WR (pnt) ADD pnt1 pnt++=ch3 RD (ch4) WR (pnt) pnt =ch4 RD cmd SUB 1 JZ t9 SUB 1 JZ t2 SUB 1 JZ t3 SUB 1 JZ t4 SUB 1 JZ t5 SUB 1 JZ t6 JR t7 t2 RD (trg) SUB th JGE t9 ADD cmd1 JR t9 wait trgltth t3 RD (trg) SUB th JLE t9 JR t6 wait trggtth t4 RD (trg) SUB th JLE t9 ADD cmd1 JR t9 wait trggtth t5 RD (trg) SUB th JGE t9 JR t6 wait trgltth t6 WR len0 WR cmd7 len=0cmd=7 t7 ADD len1 SUB tail JLT t9 WR cmd0 if ((++len)gt=0x80) cmd=0 t9 RET

與 DC 馬達控制相關的程式模組有以下 4個程式模組說明如下

(1)加減速控制模組 ACC_controlasm (2)光電盤輸入模組 POS_inputasm (3)PWM輸出模組 PWM_outputasm (4)PD控制模組 PD_controlasm

71加減速控制模組 此程式模組主要功能在於執行位置控制的加減速命令修正其數學模式採用 Lynn

濾波器的架構參見下圖

cmd

2

+

old Z -1

-

Z -1

Z -1

Z-1

Z-1x0 x1 x8 x9 x16

+ -

++

2

Z-1

Z-1 y1 y2

+

-

y0

+ +

sumZ-1

+164

12

out

dif

+

63

加減速控制模組方塊圖

其中

1Lynn 濾波器的階數固定成八階也就是 m=8其公式為 H(z) = (1-2Z-m+Z-2m)(1-2Z-1+Z-2)m2

2因為m=8所以m2=64因此最後計算低通濾波的部份時要先做除 64的運算 3因為低通濾波(lp)和 y0之間有 64倍的差異代表 y0y1y2的變化範圍比濾波器輸

入值要擴大許多例如輸入值在+-1000變化時y0y1y2很可能會在+-64000之間變化這範圍已經超出整數處理的範圍很可能會造成錯誤的計算結果

4所以在實驗時輸入值的變化範圍必須控制在+-500之間以保證計算的正確性 5對於 Lynn 濾波器當 m=8時其濾波器的頻寬固定為 1 kHzmdt也就是 dt=1時頻寬為 125 Hz dt=2時頻寬為 625Hz依此類推 6對於 Lynn 濾波器其濾波器的延遲固定為 m個抽樣週期因此設計 hp = x8 - lp 即可得到高通濾波器的對應結果 7其中乘 2和除 64的運算以移位運算取代所以整個程式中並無任何乘法運算 8Lynn 濾波器本身並不是穩定濾波器所以在程式啟動時必須確實的將所有狀態

(x0~x16)歸零否則會產生不穩定的狀態輸出

因為 Lynn濾波器中所有參數固定所以除了抽樣週期 dt 之外並無任何可調參數

抽樣週期 dt 可以控制頻寬dt 越大則濾波器頻寬越低

將步階命令值的輸出送入 Lynn 濾波器中經由低通濾波器的效應可以減緩命

令的變化程度達到加減速控制的目的以下為使用 Lynn 濾波器型式實現加減速控

制的組合語言程式列印 如欲更進一步瞭解 Lynn 濾波器與 FIR 數位濾波器之間的關係可以參考通訊實驗

四數位濾波器設計(FIR)中之說明

ACC_controlasm程式列印 local cmd R0 IP 輸入點位置命令

local out R1 OP 輸出點加減速處理後的位置命令

local dif R2 OP 輸出點位置微分命令

local axis R3 0 馬達編號0=X1=Y2=Z3=C

local old R4 內部變數微分計算用

local sumL R5 內部變數積分計算用

local sumH R6 內部變數積分計算用

local y0 R7 內部變數y(0~2)

local y1 R8 local y2 R9

local x0 R10 內部變數x(0~16)

local x1 R11 local x2 R12 local x3 R13 local x4 R14

local x5 R15 local x6 R16 local x7 R17 local x8 R18

local x9 R19 local x10 R20 local x11 R21 local x12 R22

local x13 R23 local x14 R24 local x15 R25 local x16 R26

64

data 27 模組變數區長度

initial 開機啟動程序

WR dif0 RD (cmd) WR out WR old dif=0 out=old=cmd

sumHL=cmd64

SFL 6 WR sumL RD out SFR 10 SGN 5 WR sumH

RPT 17 WR x00 RPT 3 WR y00 RET x[0~16]=0y[0~2]=0

timer 即時控制程序

RD (cmd) SUBX old WR x0 x0=cmd-old old=cmd

SUB x81 ADD x16 ADD y11 SUB y2 WR y0 y0=x0-2x8+x16+2y1-y2

SGN ADD sumL WR sumL RDH ADC sumH WR sumH sumHL+=y0

WRH RD sumL SFR 6 WR out out=sumHL64

RD y0 SGN SFR WR dif dif=y032mm

RD x0 RPT 16 RDX x1 x[i]=x[i-1] i=1~16

RD y0 RDX y1 WR y2 y[i]=y[i-1] i=1~2

b9 RET

72光電盤輸入模組

DC馬達的位置由光電盤量測之預設儲存於 0xac與 0xbe二個輸入埠位址中其中位址 0xac記錄 X軸馬達的位置位址 0xbe記錄 Y軸馬達的位置由於本實驗的DC馬達接在 Y軸的位置上因此程式中直接選用 Y軸的輸入 光電盤位置輸入的程式列印如下其中速度由位置的差分而得至於馬達的位置

則使用內部 2個 word加以記錄精度為 32位元 POS_inputasm程式列印 local spd R0 OP 輸出點速度量測值

local ang R1 OP 輸出點角度量測值

local angH R2 內部變數角度的 32 位元部分

local mode R3 0x308 模式選擇15MHzAB 相正反向輸入

local pht R4 0xac 輸入阜地址光電盤輸入(0xac)

local phtc R5 0xbe 輸入阜地址光電盤模式(0xbe)

local old R6 內部變數速度更新用

data 7 模組變數區長度

initial 開機啟動程序

RD mode WR (phtc) phtc=mode

RD (pht) WR old WR spd0 RET old=phtspd=0

timer 即時控制程序

RD (pht) SUBX old SGN 11 WR spd spd=(pht-old)old=pht

65

ADD ang WR ang angHL+=spd

RDH ADC angH WR angH

RET

73 PWM輸出控制模組 模組方塊

cmd PWM輸出

程式說明 1在開機時將切換保護時間寫到輸出阜 0xbc上其中切換保護值為 0~6360=5us 2在每次 timer interrupt時將 cmd訊號處理後寫到輸出阜 0xb8上

PWM_outputasm程式列印 local cmd R0 IP gnd 輸入點v相命令

local gain R1 4096 參數輸出增益1=4096

local bias R2 2048 參數輸出偏壓0=2048

local limit R3 4095 參數輸出極限1=4095

local zone R4 0x88f0 參數頻率=12KHz切換保護=5us

local pwm R5 0xb8 輸出阜地址PWM0 輸出(0xb8)

local mode R6 0xbc 輸出阜地址PWM 模式(0xbc)

local p0md R7 0xf8 輸出阜地址port0 模式(0xf8)

local gnd R8 0 輸入接地點

data 9 模組變數區長度

initial 開機啟動程序

RD bias WR (pwm) pwm=bias

RD 0xffff WR (p0md) set port0 mode

RD zone WR (mode) RET mode=zone

stop 關機保護程序

RD bias WR (pwm) RET pwm=bias

timer 即時控制程序

RD (mode) xor 1 and 1 WR (mode) trigger watch-dog

RD (cmd) MUL gain SFR 12 ADD bias ACC=(cmdgain4096)+bias

MAX 0 MIN limit WR (pwm) pwm=limit(ACC)

RET

66

74 PD 控制模組

PD控制的模組方塊參見圖二十一所示其中比例控制的部份直接由增益 kp加以調整微分控制的部份則由誤差的差分經增益 kd的調整而得

Σ+

-

cmd

fdk

err out

Σ

pk

dk

Σ

+

+

+

-

old1minusZ

PD控制器的方塊圖

PD_controlasm程式列印 local cmd R0 IP gnd 輸入點位置命令(可忽略)

local fdk R1 IP gnd 輸入點位置回授(可忽略)

local out R2 OP 輸出點用以控制速度迴路

local kp R3 256 參數增益 kp10=256

local kd R4 0 參數增益 kd10=256

local err R5 0 內部變數

local old R6 0 內部變數

local gnd R7 0 無輸入時的短路點

data 8 模組變數區長度

initial 開機啟動程序

WR out0 WR old0 RET out=old=0

timer 即時控制程序

RD (cmd) SUB (fdk) PRTF WR err

MUL kp SFR 8 P=(cmd-fdk)kp256

RDS err SUBX old MUL kd SFR 8 D=(err-old)kd256

ADDS

WR out out=P+D

RET

程式中預設增益值的 10以整數值 256為基底因此使用 SFR 8的指令加以調

整另外在在計算微分項的程式部份用到 SUBX old的指令其詳細的暫存器動作如

下 參考 piDSP的指令說明SUBX指令將總共用到 3個時序參考錯誤 找不到參照

67

來源在時序 1時將原先 AX的資料拷貝一份到 HX中時序 2時正式執行減

法的動作所以 AX暫存器中的內容會變成 err-old時序 3時DSP會將存放在 HX暫存器中的內容拷貝一份到 old的記憶體中也就是經由 SUBX此一精簡指令將

同時完成計算差分所需要的相減與資料疊代的動作有效的利用 piDSP控制器 DSP核心的精簡指令將可以大幅提昇系統的計算速度

HX AXoldSUBXerr err

old

err

errerr olderr minus

1_err

errerr olderr minus err

1_err

1

2

3

SUBX的指令時序與暫存器變化

68

8附錄快速安裝說明

光纖網路通訊 FPGA 發展系統 (適用於 WIN-XP200098 系統)

快速安裝說明

26Pin 負載輸出入埠

雙電源︵5

12

伏︶輸入埠

單電源︵5

伏︶輸入埠

USB

光纖線輸

號 光纖線輸出埠

入 傳 埠

首先將光碟片 RFFPGA 目錄檔案拷貝在您工作硬碟裡面

第一次安裝時先將 USB 傳輸線接上電腦主機將電源供應器接上 FPGA 模組此時電

腦會出現安裝 USB-Serial 驅動程式選擇從清單安裝此驅動程式放置在光碟片

RFFPGA-USBdrive 選擇您目前安裝系統

可選擇 WIN-98WIN-MEWIN-2000WIN-XP 系統配合您現在工作電腦作業系統

69

注意一般電腦 USB 埠很多插口當您安裝驅動程式時是配合您當時插入之埠

下次如您插入不同接口埠時電腦會再次要求安裝驅動程式這是正常現象請再次安

裝驅動程式否則無法使用

FPLC 操作

首先進入 RFFPGA裡子目錄 testASM直接點選 fPLCexe 出現下面操作畫面(也可直接將

此檔案放置桌面直接點選)

(或者選擇 File 再執行 Setuphellip 選擇您要執行 CAI 檔)

70

進入下面操作畫面 首先使用滑鼠在 FPGA下載按鈕單擊動作使 FPGA變成 DSP晶片 實驗一至實驗五皆為使用 DSP組合語言設計程式其原始程式分別為 testASM1至testASM5可使用 texPad 開啟與編輯程式內容 實驗三與實驗五多有 IO控制動作 當選擇實驗三時出現下面畫面

71

eM_USB 模組

數字型 LED

0 1 2 34 5 6 78 9 A BC D E F

燈號型 LED

44 鍵盤

ADC0 ADC1 DAC0 DAC1

LED 選擇KEY 選擇

模 式 1

0123

注意操作畫面 3與 4 說明開關與按鍵選擇位置後選擇程式下載再按程式啟動如您

按下 0-3按鍵時燈號型 LED會有不同方向閃爍顯示程式停止時結束所有 IO控制動作再按回首頁選擇其他實驗 實驗四與實驗五

模式3

0 1 2 34 5 6 78 9 A BC D E F

按照上面開關選擇直接操作如果以上實驗皆能按照正常操作表示您光纖網路通訊

FPGA發展模組以能正常使用 注意 開機與關機動作順序如下

開機電腦啟動 --- eM_USB 模組電源接上 --- USB 接上電腦 ---

啟動 FPLC 軟體 --- 下載 FPGA 程式

關機關閉 FPLC 軟體 --- eM_USB 模組電源拔掉 --- 拔掉電腦 USB 接頭 ---關掉

電腦

如果以上順序有亂可能造成 USB 找不到驅動造成無法下載經過幾次測試還是

無法下載建議重新啟動電腦主機按照正確步驟操作

72

FPGA 下載操作

進入 FPLC 操作系統按照下列步驟選擇節點模組與下載 bit FPGA 檔案

在 VHDLDEMO 子目錄下您可以選擇您目前 FPGA 種類型號在此型號下我們已將 VHDL

與數位邏輯設計課本範例全部放於此處

73

光纖網路連線 FPGA 下載操作

首先利用光纖線將 eM_USB0 模組光纖輸出埠接至 eM_USB1 模組光纖輸入埠以此

類推最後再將最後 eM_USBN 模組光纖輸出埠接至 eM_USB0 模組光纖輸入埠配置

如附圖方式

個人電腦(Windows) eM_USB模組

0USB

eM_USB模組1

光纖網路

eM_USB模組2

eM_USB模組N

配置完成後進入 FPLC 系統首先必須先將 Node00 下載在 testASM 子目錄裡

piDSPv0bit 檔讓 eM_USB0 模組 FPGA 具備 DSP 功能才能執行光纖網路通訊

操作如下

此時您就可以選擇分別下載至各模組 FPGA 檔 bit

74

安裝 FPLC 注意事項

當您進入 FPLC 時

按 FILE 選擇 programhellip 選擇檔案為 exp_dcmplc 出現下面畫面

正常顯示畫面為

75

DOS 環境操作

在 PC 端的操作是在 Windows 環境中的 DOS 視窗中執行指令範例如下

eFPGA progNETbit 下載 FPGA電路至網路節點0(即 USB節點)中 eFPGA testLEDbit 1 下載 FPGA電路至網路節點1中

對於單一節點的控制程序如下

1將 eM_USB模組連結個人電腦的 USB端 2eM_USB模組開機 3執行下載指令即可 eFPGA xxxxbit 4若要更改 FPGA電路只要重新執行下載指令即可

對於多個網路節點的控制程序如下

1第一組 eM_USB模組連結個人電腦的 USB端再以光纖網路依序其他各節點 2連接 USB界面者為模組0從光纖發射端連接出去的模組為1依此類推 3將所有 eM_USB模組開機 4執行下載指令如下 eFPGA progNETbit 模組0必須先下載指定的 FPGA電路 eFPGA xxxxbit 1 再依序下載其他網路模組的 FPGA電路 eFPGA yyyybit 2 eFPGA zzzzbit 最後再重新下載模組0的 FPGA電路 5換句話說模組0必須先執行 progNETbit讓光纖網路接受 FPGA控制後才能透過光纖網路下載至其他節點等全部網路節點下載完畢後再將模組0的 FPGA重新下載讓模組0也可自由執行任意的 FPGA電路

6若要更改某一個網路節點中的 FPGA電路只要重新執行下述指令 eFPGA progNETbit 模組0必須先下載指定的 FPGA電路 eFPGA yyyybit 2 下載指定網路模組的 FPGA電路 eFPGA zzzz bit 最後再重新下載模組0的 FPGA電路 換句話說除非模組0中的 FPGA已經包括光纖網路管理電路否則一定要先在

模組0中下載網路管理電路後才能下載指定網路節點的 FPGA電路

76

光纖網路通訊 FPGA 發展系統

系統配置

光纖網路通訊 FPGA 發展系統的系統配置圖如下

個人電腦(Windows) eM_USB模組

0USB

eM_USB模組1

光纖網路

eM_USB模組2

eM_USB模組N

其中

1基本模組為 eM_USB模組可用 USB界面和個人電腦連線並提供 USB對光纖網路的轉換功能使得個人電腦可以獨立控制光纖網路中的每個網路節點

2eM_USB模組也可以作為光纖網路中的網路節點透過光纖網路而接受個人電腦的

監控 3就個人電腦而言不論是 USB界面直接連結或是以光纖網路間接連結的 eM_USB模組都是可以直接監控的網路節點最多可以同時控制一個 USB節點和 30個網路節點

4對於每一個網路節點個人電腦都可執行 eM_USB模組中 FPGA的電路下載工作並在適當的 FPGA電路配合下可執行 eM_USB模組中 FPGA內部電路的讀寫控制 5透過適當的 FPGA電路設計各網路節點都可透過光纖網路和其他任何網路節點

作同步通訊執行 FPGA內部記憶體的資料交換資料交換頻率可達 1KHz以上

77

網路模組配置

每個網路模組的標準配置圖如下

eM_USB模組光纖網路

USB eM_FPGA卡

eM_DEMO模組

eM_EXP實驗模組

DC電源

其中

1網路模組以 eM_USB模組為主提供基本的 USB界面和光纖網路連線 2eM_USB模組中的 FPGACPLD採用插卡型式可選擇不同的 eM_FPGA卡包括

eM_2V1K卡可選用 Virtex系列的 XC2V250和 XC2V1000 eM_3S1K卡可選用 Spartan3系列的 XC3S400XC3S1000和 XC3S1500 eM_3S50卡可選用 Spartan3系列的 XC3S50XC3S200和 XC3S400 eM_95XL卡可選用 9500XL系列的 XC95144XL和 XC95288XL 3eM_USB模組中的對外連線有兩種一種是 26P接頭用以連接既有的各種實驗模

組另一種是兩組 50P接頭將 FPGA中各接腳引出用以連接專題實驗 4eM_DEMO模組就是插上 50P接頭的教學模組其中包括 LED 數字顯示和 44鍵盤也具備兩組的 ADC和兩組的 DAC接頭提供類比訊號的測試工具

常用的實驗組合包括

1精簡組合包括(eM_USB+eM_FPGA)提供基本的網路節點適用於專題實驗 2標準組合包括(eM_USB+eM_FPGA+eM_DEMO)提供基礎 FPGA設計的教學實驗

3實驗組合包括(eM_USB+eM_FPGA+eM_DEMO+eM_EXP)提供進階的 FPGA實驗可依需求選用不同的實驗模組

78

eM_USB 模組

eM_USB 模組的電路配置圖如下

TxRx

DCPower

USB

JP2

JP3

光纖界面

外加電源

PC連線

JP1

eM_FPGA模組

FT232 CPLD FlashROM

SRAM

10cm

6cm

JP4

其中

1對外的連線接頭包括 DC電源 可選擇單電源(5V)或是多電源(5V+12V-12V)兩種 USB界面 直接連接個人電腦 光纖界面連接光纖網路 2實驗界面包括 JP1負責內部 CPLD的電路下載 JP2JP3兩組 50P的擴張用接頭 JP4 標準 26P接頭用以連接各種實驗模組 3內部的電路配置包括 A以 SO-DIMM接頭連接各種 eM_FPGA卡 B內附 EEPROMFlashROM和 SRAM提供 FPGA作應用測試 C以一顆 FT232BM作為 USB界面解碼而以一顆 CPLD作為光纖網路解碼 D提供各種 eM_FPGA卡的電路下載功能 4內附五顆 LED由上而下依序為 usbLED指示 USB界面的讀寫狀態 tstLED可由 FPGA電路自行定義 stsLED可由 FPGA電路自行定義 RxLED 可由 FPGA電路自行定義 TxLED 可由 FPGA電路自行定義

79

外部接腳定義

外部接頭的接點順序圖示如下

上視圖

JP11 9 JP4

126225

JP31

50249

JP21

50249

而各接頭的接點定義如下

JP1 JP4 JP2 JP3 1+33V 1+12V 2+12V 1 GND 2 GND 1 GND 2 GND 2GND 3 ADC 4 DAC 3POWER 4ALARM 3 +5V 4 +5V 3nc 5 yPB2 6 yPB3 5RxNET 6TxNET 5+12V 6+12V 4TCK 7 yPB1 6 yPB4 7RxUSB 6TxUSB 7-12V 6-12V 5nc 9 yPB0 10yPB5 9RxCAN 10TxCAN 9 ADC 10 DAC 6TDO 11yPB6 12yPB7 11P0D0 12P0D1 11P1D0 12P1D1 7TDI 13yGND 14yPC3 13P0D2 14P0D3 13P1D2 14P1D3 8nc 15yPC2 16yPC1 15P0D4 16P0D5 15P1D4 16P1D5 9TMS 17yPC0 18yPA0 17P0D6 18P0D7 17P1D6 18P1D7 19yPA1 20yPA2 19P0D8 20P0D9 19P1D8 20P1D9 21yPA3 22GND 21P0D10 22P0D11 21P1D10 22P1D11 23GND 24+5V 23P0D12 24P0D13 23P1D12 24P1D13 25+5V 26nc 25P0D14 26P0D15 25P1D14 26P1D15 27P2D0 28P2D1 27PxA0 28PxA1 29P2D2 30P2D3 29PxA2 30PxA3 31P2D4 32P2D5 31PxA4 32PxA5 33P2D6 34P2D7 33PxA6 34PxA7 35P2D8 36P2D9 35PxB0 36PxB1 37P2D10 38P2D11 37PxB2 38PxB3 39P2D12 40P2D13 39PxB4 40PxB5 41P2D14 42P2D15 41PxB6 42PxB7 43ADC0 44ADC1 43PxC0 44PxC1 45ADC2 46ADC3 45PxC2 46PxC3 47ADC4 48ADC5 47PxC4 48PxC5 49DAC0 50DAC1 49PxC6 50PxC7

80

eM_FPGA 模組

在各種 eM_FPGA 模組中FPGA 對外電路的標準配置圖如下

24576MHz

FlashROM

26PSRAM

EEPROM

mD[8]

yPA[4]

FPGACPLD

mA[19]mRDmWRmCSeeCKeeCSeeDIeeDO

光纖界面 RxNETTxNET

USB 界面 RxUSBTxUSBCLK24MPOWERALARM

LED

tstLEDstsLEDRxLEDTxLED

yPB[8]yPC[4]

ADCDAC

ADC[8]

實驗模組

ADC[2]

DAC[2]

xPA[4]

xPB[8]

xPC[4]

基礎實驗

其中

1FPGACPLD可以選擇下述幾種 XC2V250XC2V1000 採用 eM_2V1K模組其中 FPGA為 FG456包裝 XC3S400XC3S1000XC3S1500採用 eM_3S1K模組其中 FPGA為 FG456包裝 XC3S400XC3S1000XC3S1500採用 eM_3S1K模組其中 FPGA為 FG456包裝 XC3S50XC3S200XC3S400 採用 eM_3S50模組其中 FPGA為 TQ144包裝 XC95144XLXC95288XL 採用 eM_95XL模組其中 CPLD為 TQ144包裝 2採用 FG456包裝者可以控制所有的 IO界面 3採用 TQ144包裝者只是不能控制 RAM和 FlashROM而可以控制其他所有的界面 4所有 FPGA模組都可自由選擇由 USB界面或是由光纖界面下載電路但是 CPLD模組只能固定由 USB界面下載電路

5所有 FPGACPLD模組都可透過 26P接頭連接既有的各種實驗模組

81

FPGA 接腳對照表

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

mD0 XD6 mD0 A17 C13 -- -- mD1 XD7 mD1 B17 D12 -- -- mD2 XD8 mD2 C17 D11 -- -- mD3 XD9 mD3 D17 C11 -- -- mD4 XD10 mD4 E17 D10 -- -- mD5 XD11 mD5 E16 C10 -- -- mD6 XD12 mD6 E14 D9 -- -- mD7 XD13 mD7 E13 D7 -- -- mA0 XD14 mA0 D13 C7 -- -- mA1 XD15 mA1 C13 D6 -- -- mA2 XA0 mA2 V5 C3 -- -- mA3 XA1 mA3 U5 C4 -- -- mA4 XA2 mA4 Y2 D3 -- -- mA5 XA3 mA5 Y1 D4 -- -- mA6 XA4 mA6 V4 E3 -- -- mA7 XA5 mA7 V3 E4 -- -- mA8 XA6 mA8 W2 F3 -- -- mA9 XA7 mA9 W1 F4 -- -- mA10 XA8 mA10 T2 G6 -- -- mA11 XA9 mA11 T1 K3 -- -- mA12 XA10 mA12 R4 K10 -- -- mA13 XA11 mA13 R3 L3 -- -- mA14 XA12 mA14 R2 L4 -- -- mRD XRD mRD R1 D5 -- -- mWR XWR mWR P6 C6 -- --

POWER P0A0 POWER B4 B20 P1 P5 ALARM P0A1 ALARM A4 A19 P2 P6 RxNET P0A2 RxNET C4 B19 P4 P7 TxNET P0A3 TxNET C5 A18 P5 P9 RxUSB P0B0 RxUSB B5 A15 P6 P10 TxUSB P0B1 TxUSB A5 B15 P7 P11 RxCAN P0B2 RxCAN D6 A14 P8 P12 RxCAN P0B3 TxCAN C6 B14 P10 P13

CLK24M CLK24M CLK24M E12 B12 P124 P38

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

PWM0H P3A0 P0D0 E6 A8 P21 P23 PWM0L P3A1 P0D1 E5 B8 P23 P24 PWM1H P3A2 P0D2 C2 B6 P24 P25 PWM1L P3A3 P0D3 C1 A5 P25 P26 PWM2H P3A4 P0D4 D2 B5 P26 P27

82

PWM2L P3A5 P0D5 D1 A4 P27 P28 PWMenb P3A6 P0D6 E4 B4 P28 P30 PHT1Z P3A7 P0D7 E3 A3 P30 P31 PHT1A P3B0 P0D8 G2 C1 P31 P32 PHT1B P3B1 P0D9 G1 C2 P32 P33 PHT0A P3B2 P0D10 H5 D1 P33 P34 PHT0B P3B3 P0D11 J6 D2 P35 P35 AMP0 P3B4 P0D12 H4 E1 P36 P39 AMP1 P3B5 P0D13 H3 E2 P40 P40 AMP2 P3B6 P0D14 H2 F2 P41 P41 AMP3 P3B7 P0D15 H1 G1 P44 P43 eeSK P0C3 P1D0 C10 B9 P20 P22 eeCS P0C2 P1D1 D10 A9 P18 P21 eeDI P0C1 P1D2 F10 B10 P17 P20 eeDO P0C0 P1D3 E10 B11 P15 P19 ssCK P0B7 P1D4 E8 A11 P14 P17 ssCS P0B6 P1D5 E7 A12 P13 P16 ssDI P0B5 P1D6 A6 B13 P12 P15 ssDO P0B4 P1D7 B6 A13 P11 P14

ppCLK P3C0 P1D8 K4 G2 P46 P44 ppDIN P3C1 P1D9 K3 K1 P47 P45 TxD P3C2 P1D10 K2 K2 P50 P46 RxD P3C3 P1D11 K1 L1 P51 P48

tstLED P3C4 P1D12 L5 L2 P52 P49 stsLED P3C5 P1D13 L4 M1 P53 P50 RxLED P3C6 P1D14 L3 M2 P55 P51 TxLED P3C7 P1D15 L2 N1 P56 P52

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

xPA0 P2A0 P2D0 AA3 N2 P59 P53 xPA1 P2A1 P2D1 Y4 T1 P60 P54 xPA2 P2A2 P2D2 AA4 T2 P63 P56 xPA3 P2A3 P2D3 AB4 U2 P68 P57 xPC0 P2A4 P2D4 W5 V1 P69 P58 xPC1 P2A5 P2D5 Y5 V2 P70 P59 xPC2 P2A6 P2D6 AA5 W1 P73 P60 xPC3 P2A7 P2D7 AB5 W2 P74 P61

-- P2B0 P2D8 V6 Y1 P76 P64 -- P2B1 P2D9 V7 Y2 P77 P66 -- P2B2 P2D10 W6 AA3 P78 P68

mCS P2B3 P2D11 Y6 AB4 P79 P69 mA15 P2B4 P2D12 V9 AA4 P80 P70 mA16 P2B5 P2D13 V10 AB5 P82 P71 mA17 P2B6 P2D14 W10 AA5 P83 P74 mA18 P2B7 P2D15 Y10 AA6 P84 P75 CS0 P2C0 ADC0 AA10 AB8 P85 P76

83

SDIN0 P2C1 ADC1 AB10 AA8 P86 P77 CS1 P2C2 ADC2 U10 AB9 P87 P78

SDIN1 P2C3 ADC3 U11 AA9 P89 P79 SCLK P2C4 ADC4 V11 AB10 P90 P80 CS2 P2C5 ADC5 W11 AA10 P92 P81

SDOUT P2C6 ADC6 Y11 AB11 P93 P82 LDAC P2C7 ADC7 AA11 AA11 P95 P83

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

xPB0 P1A0 PxA0 M1 M3 P135 P85 xPB1 P1A1 PxA1 M2 M4 P132 P86 yPB2 P1A2 PxA2 M3 N3 P131 P87 yPB3 P1A3 PxA3 M4 N4 P130 P88 yPB1 P1A4 PxA4 M5 T4 P129 P91 yPB4 P1A5 PxA5 M6 T5 P128 P92 yPB0 P1A6 PxA6 N1 U3 P127 P93 yPB5 P1A7 PxA7 N2 U4 P125 P94 yPB6 P1B0 PxB0 U13 V3 P119 P95 yPB7 P1B1 PxB1 V13 V4 P118 P96 xPB2 P1B2 PxB2 W13 W3 P116 P97 xPB3 P1B3 PxB3 Y13 W4 P113 P98 xPB4 P1B4 PxB4 AA13 Y3 P112 P100 xPB5 P1B5 PxB5 AB13 Y4 P96 P101 yPC3 P1B6 PxB6 U12 Y5 P97 P102 yPC2 P1B7 PxB7 V12 W5 P98 P103 yPC1 P1C7 PxC0 AB17 W11 P108 P113 yPC0 P1C6 PxC1 AA17 Y11 P107 P112 yPA0 P1C5 PxC2 Y17 W10 P105 P111 yPA1 P1C4 PxC3 W17 Y10 P104 P110 yPA2 P1C3 PxC4 AB18 W9 P103 P107 yPA3 P1C2 PxC5 AA18 W8 P102 P106 xPB6 P1C1 PxC6 Y18 W6 P100 P105 xPB7 P1C0 PxC7 W18 Y6 P99 P104

84

eM_DEMO 模組

eM_DEMO 模組的電路配置圖如下

eM_USB 模組

數字型 LED

0 1 2 34 5 6 78 9 A BC D E F

燈號型 LED

44 鍵盤

ADC0 ADC1 DAC0 DAC1

LED 選擇KEY 選擇

其中

1eM_DEMO模組的基本功能包括 A將 xPAxPBxPC等 16個 IO訊號引出控制 LED和鍵盤電路 B將 ADDA訊號引出並放大成+-10V的工作範圍 2LED和鍵盤可以選擇三種模式由 LED和 KEY 兩組開關作選擇圖示如下

模式1

0123

模式2 模式3

0 1 2 34 5 6 78 9 A BC D E F

0123

3模式14鍵輸入並搭配 16點的 LED燈號顯示其中 16點 LED分別對映到 xPA[0~3]xPB[0~7]和 xPC[0~3] 4組按鍵分別對映到 xPC[0~3] 4模式24鍵輸入並搭配四個 7段式數字顯示其中 數字顯示由 xPA[0~3]作數字掃瞄而由 xPB[0~7]作 7段式 LED控制 4組按鍵 分別對映到 xPC[0~3] 5模式316鍵輸入並搭配四個 7段式數字顯示其中 數字顯示由 xPA[0~3]作數字掃瞄而由 xPB[0~7]作 7段式 LED控制 16組按鍵由 xPA[0~3]作鍵盤掃瞄而由 xPC[0~3]作鍵盤讀取 6根據VHDL與數位邏輯設計的章節其中 第 1章至 10章的實驗採用模式1而 第 11章實驗採用模式2而 第 12章之後的實驗都採用模式3

85

FPGA UCF 定義

eM_3S1K 模組

NET CLK LOC = B12

NET XAlt0gt LOC = N2

NET XAlt1gt LOC = T1

NET XAlt2gt LOC = T2

NET XAlt3gt LOC = U2

NET XBlt0gt LOC = M3

NET XBlt1gt LOC = M4

NET XBlt2gt LOC = W3

NET XBlt3gt LOC = W4

NET XBlt4gt LOC = Y3

NET XBlt5gt LOC = Y4

NET XBlt6gt LOC = W6

NET XBlt7gt LOC = Y6

NET XClt0gt LOC = V1

NET XClt1gt LOC = V2

NET XClt2gt LOC = W1

NET XClt3gt LOC = W2

NET YAlt0gt LOC = W10

JP4 接頭

NET YAlt1gt LOC = Y10

NET YAlt2gt LOC = W9

NET YAlt3gt LOC = W8

NET YBlt0gt LOC = U3

NET YBlt1gt LOC = T4

NET YBlt2gt LOC = N3

NET YBlt3gt LOC = N4

NET YBlt4gt LOC = T5

NET YBlt5gt LOC = U4

NET YBlt6gt LOC = V3

NET YBlt7gt LOC = V4

NET YClt0gt LOC = Y11

NET YClt1gt LOC = W11

NET YClt2gt LOC = W5

NET YClt3gt LOC = Y5

在光碟片中 RFFPGAVHDLDEMOBIT3S1K 裡有 VHDL 與數位邏輯設計書本範例原始檔與合成檔

86

eM_3S50 模組

NET CLK LOC = P124

NET XAlt0gt LOC = P59

NET XAlt1gt LOC = P60

NET XAlt2gt LOC = P63

NET XAlt3gt LOC = P68

NET XBlt0gt LOC = P135

NET XBlt1gt LOC = P132

NET XBlt2gt LOC = P116

NET XBlt3gt LOC = P113

NET XBlt4gt LOC = P112

NET XBlt5gt LOC = P96

NET XBlt6gt LOC = P100

NET XBlt7gt LOC = P99

NET XClt0gt LOC = P69

NET XClt1gt LOC = P70

NET XClt2gt LOC = P73

NET XClt3gt LOC = P74

NET YAlt0gt LOC = P105

JP4 接頭

NET YAlt1gt LOC = P104

NET YAlt2gt LOC = P103

NET YAlt3gt LOC = P102

NET YBlt0gt LOC = P127

NET YBlt1gt LOC = P129

NET YBlt2gt LOC = P131

NET YBlt3gt LOC = P130

NET YBlt4gt LOC = P128

NET YBlt5gt LOC = P125

NET YBlt6gt LOC = P119

NET YBlt7gt LOC = P118

NET YClt0gt LOC = P107

NET YClt1gt LOC = P108

NET YClt2gt LOC = P98

NET YClt3gt LOC = P97

在光碟片中 RFFPGAVHDLDEMOBIT3S200 裡有VHDL與數位邏輯設計書本範例原始檔與合成檔

87

eM_95XL 模組

NET CLK LOC = SPIN38

NET XAlt0gt LOC = SPIN53

NET XAlt1gt LOC = SPIN54

NET XAlt2gt LOC = SPIN56

NET XAlt3gt LOC = SPIN57

NET XBlt0gt LOC = SPIN85

NET XBlt1gt LOC = SPIN86

NET XBlt2gt LOC = SPIN97

NET XBlt3gt LOC = SPIN98

NET XBlt4gt LOC = SPIN100

NET XBlt5gt LOC = SPIN101

NET XBlt6gt LOC = SPIN105

NET XBlt7gt LOC = SPIN104

NET XClt0gt LOC = SPIN58

NET XClt1gt LOC = SPIN59

NET XClt2gt LOC = SPIN60

NET XClt3gt LOC = SPIN61

NET YAlt0gt LOC = SPIN111

JP4 接頭

NET YAlt1gt LOC = SPIN110

NET YAlt2gt LOC = SPIN107

NET YAlt3gt LOC = SPIN106

NET YBlt0gt LOC = SPIN93

NET YBlt1gt LOC = SPIN91

NET YBlt2gt LOC = SPIN87

NET YBlt3gt LOC = SPIN88

NET YBlt4gt LOC = SPIN92

NET YBlt5gt LOC = SPIN94

NET YBlt6gt LOC = SPIN95

NET YBlt7gt LOC = SPIN96

NET YClt0gt LOC = SPIN112

NET YClt1gt LOC = SPIN113

NET YClt2gt LOC = SPIN103

NET YClt3gt LOC = SPIN102

在光碟片中 RFFPGAVHDLDEMOSVF95288XL 裡有VHDL與數位邏輯設計書本範例原始檔與合成

檔案

88

eM_FPGA 模組

NET CLK LOC = E12

NET XAlt0gt LOC = AA3

NET XAlt1gt LOC = Y4

NET XAlt2gt LOC = AA4

NET XAlt3gt LOC = AB4

NET XBlt0gt LOC = M1

NET XBlt1gt LOC = M2

NET XBlt2gt LOC = W13

NET XBlt3gt LOC = Y13

NET XBlt4gt LOC = AA13

NET XBlt5gt LOC = AB13

NET XBlt6gt LOC = Y18

NET XBlt7gt LOC = W18

NET XClt0gt LOC = W5

NET XClt1gt LOC = Y5

NET XClt2gt LOC = AA5

NET XClt3gt LOC = AB5

NET YAlt0gt LOC = Y17

JP4 接頭

NET YAlt1gt LOC = W17

NET YAlt2gt LOC = AB18

NET YAlt3gt LOC = AA18

NET YBlt0gt LOC = N1

NET YBlt1gt LOC = M5

NET YBlt2gt LOC = M3

NET YBlt3gt LOC = M4

NET YBlt4gt LOC = M6

NET YBlt5gt LOC = N2

NET YBlt6gt LOC = U13

NET YBlt7gt LOC = V13

NET YClt0gt LOC = AA17

NET YClt1gt LOC = AB17

NET YClt2gt LOC = V12

NET YClt3gt LOC = U12

在光碟片中 RFFPGAVHDLDEMOBIT2V250 裡有VHDL與數位邏輯設計書本範例原始檔與合成檔

89

Page 18: RFFPGA 直流馬達實驗手冊juniortek.com.tw/program/manual/RF-DC-mal.pdf · em_demo模組 em_dcm 直流伺服馬達 dc電源 rffpga 系統的直流馬達實驗規劃 其中包括:

3實驗項目

在直流伺服馬達控制系統中規劃五個實驗項目由系統首頁做選擇每項實驗操

作整個系統實驗組成由各項實驗項目 CAI 檔及各項實驗項目程式連結 PLC 檔結合而成茲表列如下

直 流 伺 服 實 驗 e x p _d c m c ai

開 環 路 電 壓 控 制

系 統 首 頁 實 驗 程 序

e x p _p w m c ai

開 環 路 速 度 控 制 e x p _s p ee d c a i

閉 環 路 位 置 控 制 e x p _a n gl e c a i

加 減 速 的 位 置 控 制 e x p _a c c c ai

正 弦 波 位 置 控 制 e x p _s i n c ai

C A I 圖 控 檔

直 流 伺 服 實 驗 開 環 路 電 壓 控 制

系 統 首 頁 實 驗 程 序

e x p _p w m p lc

開 環 路 速 度 控 制 e x p _s p ee d p l c

閉 環 路 位 置 控 制 e x p _a n gl e p l c

加 減 速 的 位 置 控 制 e x p _a c c p lc

正 弦 波 位 置 控 制 e x p _s i n p lc

e T T Y 批 次 檔

18

4安裝程序

31 將 RFFPGA中的程式拷貝至工作硬碟中進入 DC子目錄資料夾中其中包含下

列檔案

檔案 內容說明 mod SIN_wave MODPWM_wave MODIIR1_filter MODDAS4

MODPOS_inputMODPWM_outputMODACC_controlMODPD_controlMOD這些檔案是由 ASM重新編譯出由 testDCMmem所需執行模組檔

asm SIN_waveasmPWM_waveasmIIR1_filterasmDAS4asm POS_inDCMasmPWM_outDCMasmACC_conDCMasmPD_controlasm是各模組組合語言所設計 SOURCE檔

plc 為進行實驗所需的各批次檔 bit piDSPv0bit為下載到 FPGA的 BIT檔其功能為將 FPGA規劃成

具備 piDSP控制晶片功能提供直流伺服控制所需的控制程式

撰寫 testDCMsys 記載進行 DCM實驗時所需的模組 testDCMMEM 連結完成的 DSP執行檔用來進行 DCM實驗 testDCMvar 紀錄 DCM實驗時的參數對照表

在進行實驗前先將實驗所需的系統程式與模組程式分別說明加以說明系統所

需的程式模組由 testDCMsys 來描述程式列印如下

module fg1 PWM_wavemod 方波產生器

module fg2 SIN_wavemod 弦波產生器

module cn1 ACC_controlmod 加減速控制器

module cn2 PD_controlmod 比例微分控制器

module io1 POS_inputmod 位置和速度讀值

module io2 PWM_outputmod PWM 電壓輸出界面

module ft1 IIR1_filtermod 一階濾波器

module das das4mod 示波器資料蒐集

module io3 LEDKEYmod LEDKEY 界面

其中包括

1兩組波型產生器作為測試命令包括正弦波和方波 2兩組控制器提供包括加減速PD控制器的功能可依照實驗需求搭配使用 3兩組輸入輸出界面執行 PWM輸出和相位回授的界面處理 4一組低通濾波器作為電壓開迴路控制迴路和速度閉迴路控制的模擬使用 5DAS4mod是示波器專用的配合模組不論任何實驗都必須加入此模組 6Ledmod是四位數字七段顯示與 44矩陣按鍵模組

19

5執行程序

首先進入 RFFPGA 裡子目錄 DC直接點選 fPLCexe 出現下面操作畫面(也可直接將此檔

案放置桌面直接點選)

進入下面操作畫面

20

首先使用滑鼠在 FPGA下載按鈕單擊動作使 FPGA變成 piDSP晶片 如您撰寫組合語言時可使用 eASM按鈕 經編譯完成後產生MOD檔 如您撰寫系統連結程式時可使用 eLINK按鈕 經連結完成後產生MEM與VAR檔 點選實驗三後顯示如下 選擇程式下載再按程式啟動這時直流伺服馬達開始做位置控制在操控畫面放置 P 參數設定欄更改參數時馬達即時隨參數改變而產生不同響應 直接點選程式停止時結束所有控制動作再按回首頁選擇其他實驗

21

6實驗說明

下圖所示為直流馬達的控制系統方塊圖透過電流速度以及位置的回授再搭

配適當的控制器可建立完整的閉迴路控制系統在後面的實驗中將依此一系統方塊圖

逐步建立速度和位置的控制實驗各實驗的說明和操作方式及參考實驗結果將逐一進

行詳細的說明

控制

參考位置

速度 位置速

度控制 電流控制

電力電

子換流

位置速

度感測

i

+ -

壓ν

位置

速度

i

DC直流馬達之控制系統方塊圖

PWM 驅動方式只是簡單的開環路控制而高精度的馬達控制必須透過回授控制來完成

對於邏輯電路的設計者而言必須先瞭解基本的回授控制架構以便將來轉換成實用的

邏輯電路設計

設計說明

開環路特性

在電壓驅動的狀況下直流馬達開環路控制的示意圖如下

+-

22

如果換算成數學模式則轉換成下面的架構

+-Vc

R L

EMF

+

-

ITB

J

ω

其中

1其中的變數和參數包括 Vc 控制的電壓命令 R 電樞迴路的等效電阻 L 電樞迴路的等效電感 EMF電樞產生的反電動勢 i 電樞迴路中的電流 T 馬達所產生的扭力 J 馬達和負載的等效慣量 B 馬達和負載的等效摩擦力 ω 馬達所產生的速度 2所牽涉的物理公式包括 電壓迴路Vc = Ri + L(didt) + EMF 即電樞迴路中的電壓平衡 動力負載T = Bω + J(dωdt) 即扭力平衡 馬達特性T = Kti 所產生的扭力和電流成正比 電機特性EMF= Keω 所產生的電動勢和轉速成正比 其中新增的參數包括 Kt馬達的扭力常數 Ke馬達的反電動勢常數 3將微分項作拉式轉換(Laplase Transformation)的對映即 s = ddt 可將微分方程式轉換成更簡單的代數方程式而產生到下面的控制方塊圖

sL+R1Vc

+-EMF

iKt

TsJ+B1 ω

Ke

4在直流馬達的開環路特性中控制電壓(Vc)時輸入點而馬達轉速(ω)是輸出點即是控制馬達電壓以控制馬達轉速

5基本上馬達的開環路特性是個兩階系統類似於低通濾波器的特性在許多應用 場合其開環路特性還可以再簡化成一階系統方塊圖如下

23

sτ +1

KmVc ω 其中 τ一階系統的時間常數 Km一階系統的穩態增益

採用兩階系統的分析方式雖然會比較精細但是用一階系統來分析則可簡化所有的設計

過程因為這裡的實驗重點是邏輯設計所以在本章中我們都用一階系統作分析

系統響應的要求

就控制系統而言最重要的需求就是系統響應包括

穩態特性通常以穩態誤差為指標即是穩態時系統輸出和輸入之間的差異 暫態特性通常以上升時間(Rise Time)和過越比率(Overshoot)為指標

一個理想中的伺服控制系統其系統響應應該是

1穩態誤差為 0即馬達輸出將追隨輸入作變化沒有誤差 2過越比例為 0即馬達輸出絕對不會產生衝過頭的現象 3上升時間為 0即馬達輸出隨時追上輸入命令不會有控制上的延遲現象

當然這是太理想了一個合理的伺服控制系統應該是

1穩態誤差越小越好最好為 0 2過越比例越小越好最好為 0 3上升時間越短越好當然無法為 0但是盡力就是了

速度的回授控制

回授控制的目的就是為了改善系統響應以一階系統代表的馬達控制為例

sτ+1

KmVc ω

在步階響應(Step Response)時其特性如下

1穩態誤差由 Km決定 2過越比例為 0 3上升時間即是其時間常數(τ)

如果用比例控制器(P 控制器)作速度回授的控制則控制方塊圖如下

sτ+1

KmVc ωKp

err

P控制器 直流馬達ωc

速度回授

速度命令 + 速度響應-

24

其中

1速度命令並不直接控制馬達的驅動電壓而是 A將速度命令和速度回授相比找出其誤差訊號 err B依誤差訊號來控制驅動電壓 誤差越大則驅動電壓越高 誤差越小則驅動電壓越低 誤差為負則驅動電壓也為負 其中的比例關係由 P控制器中的 Kp 來調整 2經由數學分析後其步階響應的特性為 A穩態誤差變成 1(1+kpkm)如果 kpkmgtgt1則穩態誤差將趨近於 0 B過越比例仍為 0 C上升時間即是由τ變成τ(1+kpkm)所以上升時間將變短 3換句話說只要 Kp值夠大不論是穩態誤差或是上升時間都會大幅改善

理論上P控制器的增益是越高越好最好是無限大但是實際上是有限制的原因是

1馬達的開環路特性是兩階系統而非一階系統一階系統只是簡化後的結果 2當兩階系統作高增益的回授控制時當增益過高時會產生極嚴重的過越現象使得

馬達產生巨幅震動而難以控制

所以 P控制器的增益雖然是越高越好但調整時仍要小心維持(過越比例為 0)的條件

轉角的回授控制

做為馬達的速度控制P控制器的效果不錯但是如果將 P控制器應用到馬達的轉角控

制其特性就不太理想圖示如下

sτ+1

KmVc ωKp

err

P控制器 直流馬達

θc

轉角回授

轉角命令 + 轉角響應-

s1 θ

其中

1從馬達的速度到轉角之間具有積分特性即 馬達的轉角是馬達速度的積分結果而 馬達的速度是馬達轉角的微分結果而 2其中的積分特性使得整個系統由一階特性變成兩階特性在兩階系統中當設定高

增益時會產生極嚴重的過越現象使得馬達產生巨幅震動而難以控制 3在 P控制器增益無法提高的狀況之下轉角控制效果將無法獲得改善

雖然 P控制器在轉角控制上的效果並不好但是在控制系統中還是有許多法寶可以選擇

25

其中 PD 控制器就是簡單又有效的一個好方法

從表面上來看PD 控制器比 P控制器多了一個微分項就數學上來看這微分項提供了

一個新零點(Zero)可以調整根軌跡圖的走向就實驗上來說這微分項提供了控制器

的預測功能說明如下

sτ+1

KmVc ωKp+sKd

err

P控制器 直流馬達

θc

轉角回授

轉角命令 + 轉角響應-

s1 θ

1轉角控制中 P控制器的問題是在嚴重的過越現象原因是在 P控制器的作用下只有當回授超過命令時才能做出「負向」的控制但這時已經來不及了因為積分器

中已經累積了過多的能量而無法立刻消失使得馬達轉角衝過了頭 2解決之道就是在回授超過命令之前就必須做出「負向」的控制使得積分器累積

的能量逐步減弱在到達目標時才能立刻煞車才能解除過越現象 3而微分項就是這個預測量因為當誤差量越來越小時其微分項是負值雖然微分

項(D)是負值 當誤差量(P)很大時(P+D)的結果還是正值所以還是「正向」控制 當誤差量(P)漸小時(P+D)的結果變成負值才會開始「負向」控制 換句話說在誤差為 0之前即可啟動負向控制產生煞車作用使得馬達提前減速

而即時停止在目標點上自然就解除過越現象了

所以在 PD 控制器中有兩項調整量其中

1Kp增益提供比例控制部分的增益而 Kd增益提供微分控制部分的增益 2Kp增益控制馬達的趨近速度主要影響的是上升時間 3Kd增益控制馬達的提前煞車主要影響的是過越比例 4在兩者搭配下就有機會得到 很快很短的上升時間同時也 不會產生過越現象

PD 控制器的執行

依據 PD 控制器公式可以建立以數位執行的 PD 控制器如下圖所示

cmdKp

fdk

+

-

err

old

+-

Kd

Z-1

out+

+

26

其中

1利用差分公式來取代 PD控制器中的微分公式定義如下 s ==gt (1-Z-1)DT 其中對映的變數包括 s 微分項 Z-1延遲一個抽樣週期 DT抽樣週期單位為 sec 2就執行面而言Z-1是延遲一個抽樣週期也就是以抽樣週期所控制的暫存器 3在上圖中將命令(cmd)和回授(fdk)相減後得到誤差值(err)再將 err延遲一個抽樣週期成為 old所以(err-old)DT即是微分項

4原始的微分控制公式為(err-old)DTKd必須先除再乘但是因為 DT和 Kd 都是常

數可以預先將 Kd修正成 Kd=(KdDT)那麼公式將修正為(err-old)Kd就只需要一個乘法而不需要除法了

同樣的 PD 控制器可以用許多不同的方法作執行包括

1以軟體方式執行例如在 DSP核心中以組合語言撰寫控制模組 2以硬體方式執行例如在 FPGA中直接設計邏輯電路 3以微碼方式執行以微碼作順序控制執行硬體運算工作

這裡先提供用組合語言撰寫的程式模組作為設計參考其他兩種方法將在後續的實驗中

再陸續作說明

模組程式範例PD_controlasm

local cmd R0 IP gnd 輸入點位置命令(可忽略) local fdk R1 IP gnd 輸入點位置回授(可忽略) local out R2 OP 輸出點用以控制速度迴路 local kp R3 256 參數增益 kp10=256 local kd R4 0 參數增益 kd10=256 local err R5 0 內部變數 local old R6 0 內部變數 local gnd R7 0 無輸入時的短路點 data 8 模組變數區長度 initial 開機啟動程序 WR out0 WR old0 RET out=old=0 timer 即時控制程序 RD (cmd) SUB (fdk) WR err MUL kp SFR 8 P=(cmd-fdk)kp256 RDS err SUBX old MUL kd SFR 8 D=(err-old)kd256 ADDS WR out out=P+D RET

27

其中

1PD控制模組中對外的界面變數包括 cmd命令的輸入點 fdk回授的輸入點 out控制的輸出點 2內部參數包括 Kp比例控制增益其中 10=256所以乘完後還需要再右移 8-bit Kd微分控制增益其中 10=256所以乘完後還需要再右移 8-bit 3內部變數包括 err臨時性的變數用以儲存誤差值的計算結果 old儲存性的變數用以儲存上一次抽樣控制時的 err值 4模組程式分成三部分包括 變數宣告local和data所宣告的部分 初值設定initial程序中先將 out和 old設定為 0 即時控制timer程序中依序執行 PD控制器中的每個步驟

控制目標的選擇

從字面上來看速度控制就是控制馬達的速度轉角控制就是控制馬達的轉角沒什麼

好討論的但是實際上確有許多問題第一的問題就是什麼是速度和轉角馬達的速

度和轉角如果不作量測如何得知

既然在量測中取得了速度和轉角資料那麼我們所控制的到底是物理學上的速度和轉

sτ+1

KmVc ωKp+sKd

err

P控制器 直流馬達

θc

轉角回授

轉角命令 + 轉角響應-

s1 θ

KxANG

轉角量測

角還是量測上的速度和轉角以下圖為例

其中

1以轉角量測裝置量測轉角例如裝在馬達軸端的光電盤和解碼電路 2轉角的量測輸出是 ANG而 ANG和物理轉角θ之間有 Km的增益關係 3只要 Km值不是 1那麼系統就不再是單位回授 4如果 Km還有非線性或失真現象那麼控制結果也將有非線性或失真現象

這些問題混雜起來會使得控制系統的分析變得更複雜如果要簡單處理就要認同現

實環境直接以量測結果為控制目標如下圖所示

28

sτ+1

KmVc ωKp+sKd

err

P控制器 直流馬達

θc

轉角回授

+-

s1 θ Kx

ANG轉角量測

其中

1直接以量測結果為控制目標將全系統還原成標準的單位回授控制 2所有的非線性或失真現象都進入開環路討論屬於可以補償的部分 3但是控制結果就是「量測上的轉角」而「物理學上的轉角」

量測誤差的問題

轉角θ

量測ANG

對於量測誤差而言最明顯的問題就是量化誤差圖示如下

其中

1以 DCM模組中的光電盤為例精度為每圈 500格經由乘四解碼計數後其等效

精度增加為每圈 2000格 2比(12000)圈更精密的部分都無法響應換句話說振幅越大的控制其相對誤差越

小而振幅越小的控制其相對誤差越大例如 當振幅為(12)圈時其控制誤差量為 01而 當振幅為(120)圈時其控制誤差量為 1 這是標準的的非線性現象

量化誤差不只影響穩態上的精度還會造成非線性的震動問題圖示如下

t

誤差值

+1

-1

其中

1由於量化誤差的問題只有當誤差超過+1或是-1時才會真正偵測到誤差也才

29

會施加控制量作補償 2所以穩態時的誤差將在+1-1之間擺動造成微幅的振動 3量化誤差越大震動越明顯而量化誤差很小時通常不易察覺出震動現象

微分量的計算

伺服系統中有兩處需要用到微分計算包括

1PD控制器中誤差微分量的計算 2速度控制器中速度回授值的量測

在理論上微分公式是(dXdt)相當於 dXdt = (X(n)-X(n-1))DT (當 DT趨近於 0時)

所以當微分計算中的抽樣週期(DT)越短時微分的計算值將越接近理論值但是事實上

卻非如此以下圖為例

t

X

DTDX

其中

1當 X值為等速度運動時其微分量就是其斜率相當於 DXDT 2DT是微分計算中的抽樣週期理論上越短越好但是由於 DX本身的量化誤差

使得這個原則不再成立例如當斜率為 7394時 若 DT=1000則 DX=7394而 DXDT=7394 若 DT=100 則 DX=739 而 DXDT=739 若 DT=10 則 DX=73 而 DXDT=73 若 DT=1 則 DX=7 而 DXDT=7 3換句話說當抽樣週期越短時DX的量化誤差將越明顯而造成微分計算上更嚴

重的誤差

在 DCM 模組中速度量測的量化誤差分析如下

1馬達上的光電盤精度為每圈 500格經過乘四解碼後等效精度為每圈 2000格 2當馬達轉速為 1200RPM而抽樣頻率為 1KHz時對映的速度量測值為 1200(圈分)2000(格圈)60(秒分)1000(DT秒) = 40(格DT) 3換句話說1200RPM的轉速對映到 40的速度量測值即速度單位=30RPM若最

高轉速為 3000RPM則在+-3000RPM的速度範圍內其量化誤差為 05相當於8-bit的 ADC轉換器精度

4對映不同的抽樣頻率的量化誤差表列如下

30

光電盤精度 最高轉速 抽樣頻率 速度單

速度範圍 量化誤差

500PPR 3000RPM 1KHz 30RPM +-100 05 500PPR 3000RPM 2KHz 60RPM +-50 1 500PPR 3000RPM 4KHz 120RPM +25 2

過溢現象的處理

輸入

輸出

32767

-32768

整數運算都有數值範圍限制以 16-bit 整數而言輸入輸出的關係如下

其中

1當超過正負數的上下限時數值會正負顛倒例如 +32768 將會視為 -32768作處理而 +32769 將會視為 -32768作處理依此類推 2換句話說16-bit的整數運算只有在+-32767之間是線性的對映關係而超過這個範圍就是非線性的對映關係

3不但如此還因為正負顛倒的現象使得原來設計的負回授控制將變為正回授控制

而產生非線性的震盪現象 4換句話說只要計算上稍一不慎就會使得原先穩定的系統產生不穩定的震盪結果

為了避免過溢現象所造成的不穩定問題通常控制系統中會利用飽和處理作改善圖示

如下

輸入

輸出

lmtH

lmtL

31

其中

1當超過計算的上限時將固定設為上限值處理而當超過計算的下限時也將固定

設為下限值處理 2這時的整數運算只有在上下限之間是線性的對映關係而超過這個範圍將還是非線

性的對映關係 3雖然如此但是因為沒有正負顛倒的現象所以不再會有負回授變為正回授的問題

而避免了非線性的震盪現象 4換句話說飽和處理是針對過溢現象的妥協處理方案雖然不完全理想但是是可

接受的最佳選擇

下面是對映的組合語言範例

RD x x為輸入端 MIN lmtH 取得 x和 lmtH中的較小值即是作上限保護的工作 MAX lmtL 取得 x和 lmtL中的較大值即是作下限保護的工作 WR y Y為輸出端 其中

1組合語言中提供MAX和MIN的計算其中 MIN lmtH 比較 AX暫存器和 lmtH而將較低值存入 AX暫存器中 MAX lmtL 比較 AX暫存器和 lmtH而將較高值存入 AX暫存器中 2所以直接可用MIN指令作上限保護而以MAX指令作下限保護兩者合併後即是

完整的飽和處理結果

飽和處理通常應用在高位數轉成低位數的場合例如32-bit轉換成16-bit或是16-bit

轉換成 12-bit 等等例如在本實驗中所有的運算都是以 16-bit 整數作處理但是到

PWM 驅動級輸出時卻要轉換成 12-bit精度的 PWM 命令所以必須先用飽和處理以避免

過溢現象造成的不穩定問題

32

61 實驗 1-開迴路的電壓控制 實驗說明以電壓直接控制轉速的開迴路特性可簡化為一階系統處理方塊圖如

sτ+1

v km ωm

其中V 送給驅動器的 PWM電壓命令

ωm馬達的轉動速度可由處理 photo encoder信號所得的位置微分而得 km一階系統的穩態增益 τ一階系統的時間常數即步階響應中的上升時間

為了觀測直流馬達的開環路特性建立下面的測試方塊圖

其中

1所使用的模組包括 FG1方波產生器產生所需的步階測試波形 FT1馬達模擬以一階系統的低通濾波器來執行 IO1光電盤的回授處理可同時取得轉角和速度的量測值 IO2PWM電壓驅動直接驅動直流馬達作控制 Led四位數字七段顯示模組顯示波形信號資料 2測試目標有兩項(P 參數設定欄)包括 A調整方波命令控制直流馬達作開環路的 PWM電壓控制 B調整馬達模擬參數使模擬結果和實驗結果相符以確認開環路特性

33

實驗畫面顯示如下

測試一 開環路的電壓控制 記錄頻道 CH1電壓命令Y1=-300DY=500 CH2模擬速度Y2=-100DY=500 CH3馬達速度Y3=100DY=50 CH4馬達轉角Y4=300DY=50000 實驗參數 FG1kAMP=256電壓命令的測試振幅 FG1kFRQ=150電壓命令的測試頻率 FT1DT =10 馬達模擬參數 FT1KA =500馬達模擬參數

其中

1用示波器功能記錄四個頻道其中 CH2和 CH3重疊顯示以比較模擬速度和量測

速度之間的差異 2由於 Km 不等於 1所以必須調整 CH3的 Y軸單位才能使得 CH2和 CH3的穩態響應部分重疊

3實驗時可以改變 FG1的參數以調整測試方波的振幅和頻率 4可以調整 FT1的參數使得 CH2和 CH3的暫態響應部分重疊

根據實際的測試結果分析如下

2馬達模擬的參數調整到 DT=10而 KA=500根據公式 τ = 40961000dtka 所以上升時間(τ)為 0082秒或是 82ms 3CH2CH3的 Y軸單位並不一致顯然 Km 不等於 1經計算確認 Km=0098

對應之 plc檔程式說明(exp_pwmplc) echo off 畫面顯示開始

run dsp 0 選擇 DSP1

run stop run reset 既有程式停止

run testDCMmem 下載指定程式

das 1 ampfg1out 0 1024 PWM 波形 Volt 設定 DAS 頻道1

das 2 ampft1lp 0 1024 馬達模擬 Volt 設定 DAS 頻道2

das 3 ampio1spd 0 1024 馬達速度 Volt 設定 DAS 頻道3

das 4 ampio1ang 0 1024 馬達角度 Volt 設定 DAS 頻道4

plot select 0 設定示波器頁數

plot xunit 100000 0 設定示波器 X軸

plot yunit 1 500 -300 設定示波器 Y1 軸

34

plot yunit 2 500 -100 設定示波器 Y2 軸

plot yunit 3 50 100 設定示波器 Y3 軸

plot yunit 4 50000 300 設定示波器 Y4 軸

plot trigger 1 0 1 10 設定示波器觸發

plot scope 9 1 2 3 4 設定示波器顯示

module io2 設定 io2 模組

s cmd ampfg1out

module fg1 設定 fg1 模組

s kAmp 256 s kFrq 150

module ft1 設定 ft1 模組

s u ampfg1out s dt 10 s ka 500

module io3 設定 io3 模組

s led ampfg1out

module 回復預設模組

run 1khz 設定抽樣頻率為 4KHz

run start DSP 開始執行

das stop pause 1 DAS 啟動 das start DAS 啟動

echo on 回復正常訊息顯示

使用者可視情況調整一階濾波器的 ka和 dt值使得 ch2和 ch3 兩組波形完全相符

以求得開迴路系統近似的一階轉移函數 CAI操控設計畫面規劃如下(EXP_PWMCAI) page 1 畫面設計

35

page 2 畫面設計 page 3 畫面設計

36

實測響應圖

訊 號 說 明 訊 號 說 明 ch1 方波產生器訊號 ch3 一階濾波器輸出信號 ch2 馬達角速度訊號 ch4 馬達角位置訊號

直流馬達之開迴路電壓控制響應圖

37

以邏輯分析功能觀測直流馬達之光電盤輸入與 PWM輸出信號

38

62 實驗 2-閉迴路的速度控制 實驗說明為了觀測閉迴路的速度控制響應建立下面的測試方塊圖

加入 PD控制後系統閉迴路的轉移函數經適度的簡化仍能約略以一階系統

處理方塊圖如下

sτ+1

u km ωm

其中

u 送給控制器的速度命令

ωm馬達的轉動速度可由處理 photo encoder 信號所得的位置微分而得

km一階系統的穩態增益 τ一階系統的時間常數即步階響應中的上升時間

方塊圖中的模組功能說明如下

1用 fg1 產生測試用的方波速度命令

2將方波速度命令和速度回授訊號送到 PD 控制器方塊中產生電壓控制訊號再透

過 io2 模組將訊號送出給伺服介面

3用 ft1 建立對照用的一階系統可用 IIR1濾波器方塊產生

4將方波命令產生速度命令再觀測 PHT(io1)上的速度值 spd

5調整 IIR1濾波器的參數使得兩組波形完全相符這時 IIR1濾波器就是閉迴路

速度控制的特性其中 km 為增益而τ為上升時間(單位為 sec)

6增益 km 可從示波器中作簡單計算而上升時間(τ=40964000dtka)

7 Led四位數字七段顯示模組顯示波形信號資料

39

對應之 plc檔程式說明(exp_speedplc) echo off 畫面顯示開始

run dsp 0 選擇 DSP1

run stop run reset 既有程式停止

run testDCMmem 下載指定程式

das 1 ampfg1out 0 1024 PWM 波形 Volt 設定 DAS 頻道1

das 2 ampft1lp 0 1024 馬達模擬 Volt 設定 DAS 頻道2

das 3 ampio1spd 0 1024 馬達速度 Volt 設定 DAS 頻道3

das 4 ampio1ang 0 1024 馬達角度 Volt 設定 DAS 頻道4

plot select 0 設定示波器頁數

plot xunit 100000 0 設定示波器 X軸

plot yunit 1 50 -300 設定示波器 Y1 軸

plot yunit 2 50 -100 設定示波器 Y2 軸

plot yunit 3 50 100 設定示波器 Y3 軸

plot yunit 4 50000 300 設定示波器 Y4 軸

plot trigger 1 0 1 10 設定示波器觸發

plot scope 9 1 2 3 4 設定示波器顯示

module io2 設定 io2 模組

s cmd ampcn2out

module fg1 設定 fg1 模組

s kAmp 50 s kFrq 150

module cn2 設定 cn1 模組

s cmd ampfg1out s fdk ampio1spd s kp 0x4000

module ft1 設定 ft1 模組

s u ampfg1out s dt 2 s ka 320

module io3 設定 io3 模組

s led ampfg1out

module 回復預設模組

run 1khz 設定抽樣頻率為 4KHz

run start DSP 開始執行

das stop pause 1 DAS 啟動 das start DAS 啟動

echo on 回復正常訊息顯示

CAI操控設計畫面規劃如下(EXP_speedCAI)

40

page 1 畫面設計 page 2 與 page 3 畫面設計與實驗一 page 2 與 page 3相同畫面 page 4 畫面設計

41

方塊的參數設定 使用者可視情況調整一階濾波器的 ka和 dt值使得 ch2和 ch3 兩組波形完全相符

以求得此一閉迴路系統近似的一階轉移函數或調整 PD控制器中的 kp和 kp值以調整系統之響應 實測響應圖

訊 號 說 明 訊 號 說 明 ch1 方波產生器產生之速度命令 ch3 一階濾波器輸出信號 ch2 馬達角速度訊號 ch4 馬達角位置訊號

42

直流馬達之閉迴路速度控制響應圖

43

63 實驗 3-閉迴路的位置控制 實驗說明為了觀測閉迴路的位置控制響應將直流馬達的回授改為位置訊號

建立下面的測試方塊圖 方塊圖中的模組功能說明如下

1用 fg1產生測試用的方波位置命令 2將方波位置命令和位置回授訊號送到 PD控制器方塊中產生電壓控制訊號再透過 io2模組將訊號送出到伺服介面驅動馬達轉動

對應之 plc檔程式說明(exp_angleplc) echo off 畫面顯示開始

run dsp 0 選擇 DSP1

run stop run reset 既有程式停止

run testDCMmem 下載指定程式

das 1 ampfg1out 0 1024 PWM 波形 Volt 設定 DAS 頻道1

das 2 ampft1lp 0 1024 馬達模擬 Volt 設定 DAS 頻道2

das 3 ampio1spd 0 1024 馬達速度 Volt 設定 DAS 頻道3

das 4 ampio1ang 0 1024 馬達角度 Volt 設定 DAS 頻道4

plot select 0 設定示波器頁數

plot xunit 100000 0 設定示波器 X軸

plot yunit 1 1000 -300 設定示波器 Y1 軸

plot yunit 2 1000 -100 設定示波器 Y2 軸

plot yunit 3 20 100 設定示波器 Y3 軸

plot yunit 4 1000 300 設定示波器 Y4 軸

plot trigger 1 0 1 10 設定示波器觸發

44

plot scope 9 1 2 3 4 設定示波器顯示

module io2 設定 io2 模組

s cmd ampcn2out

module fg1 設定 fg1 模組

s kAmp 1000 s kFrq 75

module cn2 設定 cn1 模組

s cmd ampfg1out s fdk ampio1ang s kp 0x300 s kd 0x4000

module ft1 設定 ft1 模組

s u ampfg1out s dt 2 s ka 320

module io3 設定 io3 模組

s led ampfg1out

module 回復預設模組

run 1khz 設定抽樣頻率為 4KHz

run start DSP 開始執行

das stop pause 1 DAS 啟動 das start DAS 啟動

echo on 回復正常訊息顯示

CAI操控設計畫面規劃如下(EXP_angleCAI) page 1 畫面設計

45

page 2 與 page 3 畫面設計與實驗一 page 2 與 page 3相同畫面 page 4 畫面設計與實驗二 page 4 畫面 方塊的參數設定 延續上一實驗的說明使用者可以調整 PD控制器中的 kp和 kd值以調整系統之

響應 實測響應圖

訊 號 說 明 訊 號 說 明 ch1 方波產生器產生之位置命令 ch3 馬達角速度訊號 ch2 馬達角位置 ch4 Pd控制器輸出之電壓訊號

46

直流馬達之閉迴路位置控制響應圖

47

64 實驗 4-加減速的位置控制 實驗說明為避免方波命令的過於嚴苛在方波命令的輸出加入一加減速控制功

能方塊以減緩命令變化的幅度增加馬達運動的平順建立的測試方塊圖如下

方塊圖中的模組功能說明如下

1用 fg1產生測試用的方波位置命令 2將方波位置命令送到加減速控制方塊處理後產生新的位置命令再將新的位置命

令與位置回授訊號送到 PD控制器方塊中產生電壓控制訊號最後透過 io2模組將訊號送出到伺服介面驅動馬達轉動

對應之 plc檔程式說明(exp_accplc) echo off 畫面顯示開始

run dsp 0 選擇 DSP1

run stop run reset 既有程式停止

run testDCMmem 下載指定程式

das 1 ampfg1out 0 1024 PWM 波形 Volt 設定 DAS 頻道1

das 2 ampcn1out 0 1024 加速控制 Volt 設定 DAS 頻道2

das 3 ampio1spd 0 1024 馬達速度 Volt 設定 DAS 頻道3

das 4 ampio1ang 0 1024 馬達角度 Volt 設定 DAS 頻道4

plot select 0 設定示波器頁數

plot xunit 100000 0 設定示波器 X軸

plot yunit 1 2000 -300 設定示波器 Y1 軸

plot yunit 2 2000 -100 設定示波器 Y2 軸

plot yunit 3 50 100 設定示波器 Y3 軸

plot yunit 4 2000 300 設定示波器 Y4 軸

48

plot trigger 1 0 1 10 設定示波器觸發

plot scope 9 1 2 3 4 設定示波器顯示

module io2 設定 io2 模組

s cmd ampcn2out

module fg1 設定 fg1 模組

s kAmp 2000 s kFrq 150

module cn1 設定 cn1 模組

s cmd ampfg1out

module cn2 設定 cn2 模組

s cmd ampcn1out s fdk ampio1ang s kp 0x300 s kd 0x4000

module ft1 設定 ft1 模組

s u ampfg1out s dt 2 s ka 320

module io3 設定 io3 模組

s led ampfg1out

module 回復預設模組

run 1khz 設定抽樣頻率為 4KHz

run start DSP 開始執行

das stop pause 1 DAS 啟動 das start DAS 啟動

echo on 回復正常訊息顯示

CAI操控設計畫面規劃如下(EXP_accCAI) page 1 畫面設計

49

page 2 畫面設計與實驗一 page 2相同畫面 page 3 畫面設計與實驗二 page 4相同畫面

參數設定參考之前各實驗的說明可線上機動性的調整 PD控制器中的 kp和 kd值以調整系統之響應 實測響應圖

訊 號 說 明 訊 號 說 明 ch1 方波產生器產生之位置命令 ch3 馬達角位置 ch2 加減速模組輸出之位置命令 ch4 馬達角速度訊號

50

圖一 直流馬達經加減速控制後之閉迴路控制響應圖

51

65 實驗 5-正弦波的位置控制 實驗說明在本實驗中改變命令的波形由方波改變為正弦波並建立如下的測

試方塊圖與上一實驗相比較僅更改命令的波形產生方塊 方塊圖中的模組功能說明如下 1用 fg2產生測試用的弦波位置命令 2將弦波位置命令送到加減速控制方塊處理後產生新的位置命令再與 io1 讀入的位

置回授訊號送到 PD 控制器方塊中產生電壓控制訊號再透過 io2 模組將訊號送出到伺服介面驅動馬達轉動

對應之 plc檔程式說明(exp_sinplc) echo off 畫面顯示開始

run dsp 0 選擇 DSP1

run stop run reset 既有程式停止

run testDCMmem 下載指定程式

das 1 ampfg2out 0 1024 SIN 波形 Volt 設定 DAS 頻道1

das 2 ampcn1out 0 1024 加速控制 Volt 設定 DAS 頻道2

das 3 ampio1spd 0 1024 馬達速度 Volt 設定 DAS 頻道3

das 4 ampio1ang 0 1024 馬達角度 Volt 設定 DAS 頻道4

plot select 0 設定示波器頁數

plot xunit 100000 0 設定示波器 X軸

plot yunit 1 2000 -300 設定示波器 Y1 軸

plot yunit 2 2000 -100 設定示波器 Y2 軸

plot yunit 3 50 100 設定示波器 Y3 軸

plot yunit 4 2000 300 設定示波器 Y4 軸

plot trigger 1 0 1 10 設定示波器觸發

52

plot scope 9 1 2 3 4 設定示波器顯示

module io2 設定 io2 模組

s cmd ampcn2out

module fg2 設定 fg1 模組

s kAmp 2000 s kFrq 100

module cn1 設定 cn1 模組

s cmd ampfg2out

module cn2 設定 cn2 模組

s cmd ampcn1out s fdk ampio1ang s kp 0x300 s kd 0x4000

module ft1 設定 ft1 模組

s u ampfg2out s dt 2 s ka 320

module io3 設定 io3 模組

s led ampfg2out

module 回復預設模組

run 1khz 設定抽樣頻率為 4KHz

run start DSP 開始執行

das stop pause 1 DAS 啟動 das start DAS 啟動

echo on 回復正常訊息顯示

CAI操控設計畫面規劃如下(EXP_sinCAI) page 1 畫面設計

53

page 2 畫面設計 page 3 畫面設計與實驗二 page 4相同畫面

方塊的參數設定可調整 PD控制器中的 kp和 kd值以調整系統之響應 實測響應圖

訊 號 說 明 訊 號 說 明 ch1 弦波產生器產生之位置命令 ch3 馬達角位置訊號 ch2 加減速模組輸出之位置命令 ch4 馬達角速度訊號

54

直流馬達之閉迴路弦波加減速位置控制響應圖

55

7組合語言說明

本節將針對 DC馬達伺服控制實驗專用的程式模組進行功能與程式碼的說明其

有關於波形產生器與資料擷取模組等說明如下

SIN_waveasm 正弦波產生器 PWM_waveasm 方波產生器 IIR1_filterasm 一階濾波器 DAS4asm 資料蒐集模組

弦波產生器

此模組會產生週期性的正弦波方塊圖如下

outfrq

kBiasbias

ampkAmp

kFrqth

kThf=1TB

θ

A

其中

1正弦波有四個參數振幅(A)頻率(F)相位(θ)和偏移(B)其公式為 out = A sin(2πF t +θ) + B 2對於單純的正弦波產生器所對映的參數包括 kAmp 振幅值 kFrq 頻率值kFrq=655368000Hz其中 Hz的範圍為 0~4000例如 1000Hz =gt frq=8192 100Hz =gt frq=819 10Hz =gt frq=82 1Hz =gt frq=8 kTh 相角值0~255代表 0~360的相位當 th=0 時為正弦波 th=64 時為餘弦波 th=128時為反相波依此類推 kBias偏移值 3對於可調變的正弦波產生器其對映的輸入點為 amp 控制振幅的輸入點可產生調幅(AM)波形 frq 控制頻率的輸入點可產生調頻(FM)波形 th 控制相位的輸入點可產生調相(PM)波形 bias控制偏移的輸入點可產生雙頻混波(相加)波形 4若不使用調變功能時各個輸入點時的預設值為 amp 指向 kAmp 的位址 frq 指向 kFrq 的位址

56

th 指向 kTh 的位址 bias指向 kBias的位址

模組程式範例SIN_WAVEasm

local amp R0 IP kAmp 輸入點sin波的振幅 local frq R1 IP kFrq 輸入點sin波的頻率 local th R2 IP kTh 輸入點sin波的相角 local bias R3 IP kBias 輸入點sin波的中心偏移 local out R4 OP 輸出點sin波輸出 local tab R5 TP 表格指標指向 sin[256]的表格 local ang R6 內部變數相位角65536=360deg local kAmp R7 1000 參數振幅值 local kFrq R8 1000 參數頻率值=655368000Hz local kTh R9 0 參數相角值360deg=256 local kBias R10 0 參數偏移值 data 11 模組變數區長度及初值 initial 啟動程序 WR ang0 WR out0 ang=out=0 RET timer 即時控制程序(8KHz) RD ang ADD (frq) WR ang ang+=frq SFR 8 ADD (th) AND 255 ACC=sin(ang256+th) ADD tab WRH RDM table-look-up MUL (amp) SFR 12 ADD (bias) WR out out=ACCamp4096+bias RET table tab 256 sin[256]表格區10=4096 0 101 201 301 401 501 601 700 00~070deg 799 897 995 1092 1189 1285 1380 1474 08~0F 1567 1660 1751 1842 1931 2019 2106 2191 10~17 2276 2359 2440 2520 2598 2675 2751 2824 18~1F 2896 2967 3035 3102 3166 3229 3290 3349 20~27 3406 3461 3513 3564 3612 3659 3703 3745 28~2F 3784 3822 3857 3889 3920 3948 3973 3996 30~37 4017 4036 4052 4065 4076 4085 4091 4095 38~3F 4096 4095 4091 4085 4076 4065 4052 4036 40~4790deg 4017 3996 3973 3948 3920 3889 3857 3822 48~4F 3784 3745 3703 3659 3612 3564 3513 3461 50~57 3406 3349 3290 3229 3166 3102 3035 2967 58~5F

57

2896 2824 2751 2675 2598 2520 2440 2359 60~67 2276 2191 2106 2019 1931 1842 1751 1660 68~6F 1567 1474 1380 1285 1189 1092 995 897 70~77 799 700 601 501 401 301 201 101 78~7F 0 65435 65335 65235 65135 65035 64935 64836 80~87180deg 64737 64639 64541 64444 64347 64251 64156 64062 88~8F 63969 63876 63785 63694 63605 63517 63430 63345 90~97 63260 63177 63096 63016 62938 62861 62785 62712 98~9F 62640 62569 62501 62434 62370 62307 62246 62187 A0~A7 62130 62075 62023 61972 61924 61877 61833 61791 A8~A8 61752 61714 61679 61647 61616 61588 61563 61540 B0~B7 61519 61500 61484 61471 61460 61451 61445 61441 B8~BF 61440 61441 61445 61451 61460 61471 61484 61500 C0~C7270deg 61519 61540 61563 61588 61616 61647 61679 61714 C8~CF 61752 61791 61833 61877 61924 61972 62023 62075 D0~D7 62130 62187 62246 62307 62370 62434 62501 62569 D8~DF 62640 62712 62785 62861 62938 63016 63096 63177 E0~E7 63260 63345 63430 63517 63605 63694 63785 63876 E8~EF 63969 64062 64156 64251 64347 64444 64541 64639 F0~F7 64737 64836 64935 65035 65135 65235 65335 65435 F8~FF

就程式結構而言說明如下

timer 即時控制程序(8KHz) RD ang ADD (frq) WR ang ang+=frq SFR 8 ADD (th) AND 255 ACC=sin(ang256+th) ADD tab WRH RDM table-look-up MUL (amp) SFR 12 ADD (bias) WR out out=ACCamp4096+bias RET

1基本上我們以查表法計算 sin()其輸入θ的範圍為 0~255對映到 0~360deg其輸出 sin(θ)的範圍為+-4096對映到+-10的範圍

2建立一個內部變數 ang其範圍為 0~65535對映到 0~360的相位角 3每個timer程序都執行 ang+=frq的動作更新目前的相位角接著依照 ang的相位角查表得到 sin(ang256+th)值

4由於表格長度為 256-word所以必須將 ang256才能得到正確的對映關係而 th範圍為 0~255所以不需要像 ang一般的做額外處理

5sin()的範圍為(+1-1)而在表格中以(+4096~-4096)的型式記錄相當於 10=4096所以執行 Asin()時還要用 SFR12指令做4096的動作才能正確的取得輸出值

58

6就頻率輸入 frq而言其計算原則是將θ=ωt轉化成θ=Σ(ωdt)因為抽樣頻率

為 8KHz所以 dt=18000而得到 frq=655368000Hz公式其中 Hz為真正的頻率在 8KHz的抽樣頻率下其範圍為 0~4000

鋸齒波產生器

此模組會產生週期性的鋸齒波方塊圖如下

outfrq

kBiasbias

ampkAmp

kFrqth

kThf=1TB

θ

A

其中

1鋸齒波也有四個參數振幅(A)頻率(F)相位(θ)和偏移(B)和正弦波的定義完全一致唯一的差異是其輸出為鋸齒波而非正弦波

2基本波形是從週期開始時為 0一直遞增到週期結束時到達最高點然後立刻回歸

到 0重新開始 3以程式結構而論鋸齒波程式幾乎就是正弦波的相位計算部分只差沒有正弦波的

查表處理而已

模組程式範例SAW_WAVEasm

local amp R0 IP kAmp 輸入點sin波的振幅 local frq R1 IP kFrq 輸入點sin波的頻率 local th R2 IP kTh 輸入點sin波的相角 local bias R3 IP kBias 輸入點sin波的中心偏移 local out R4 OP 輸出點sin波輸出 local ang R5 內部變數相位角65536=360deg local kAmp R6 1000 參數振幅值 local kFrq R7 1000 參數頻率值=655368000Hz local kTh R8 0 參數相角值360deg=256 local kBias R9 0 參數偏移值 data 11 模組變數區長度及初值 initial 啟動程序 WR ang0 WR out0 ang=out=0 RET timer 即時控制程序(8KHz) RD ang ADD (frq) WR ang ang+=frq SFR 8 ADD (th) AND 255 ACC=(ang256+th)amp0x00ff MUL (amp) SFR 8 ADD (bias) WR out out=ACCamp256+bias

59

RET

脈衝波產生器

outfrq

kBiasbias

ampkAmp

kFrqth

kThf=1TB

θ

A

pwm

kDutyduty

此模組會產生週期性的脈衝波方塊圖如下

其中

1脈衝波有五個參數其中振幅(A)頻率(F)相位(θ)和偏移(B)四個參數和正弦波

定義完全一樣另外再增加一個負載率(D) 2基本波形是從週期開始時為 1隔段時間後換為 0然後持續到週期結束再重新開始其中 1所佔有的比例就是負載率當 D=0時為 0而 D=255時為 100

3和其他參數類似負載率(D)以 duty為其輸入點而以 kDuty為其參數值

模組程式範例PLS_WAVEasm

local amp R0 IP kAmp 輸入點脈衝波的振幅 local frq R1 IP kFrq 輸入點脈衝波的頻率 local th R2 IP kTh 輸入點脈衝波的相角 local bias R3 IP kBias 輸入點脈衝波的中心偏移 local duty R4 IP kDuty 輸入點脈衝波的負載率 local out R5 OP 輸出點脈衝波輸出 local ang R6 內部變數相位角65536=360deg local kAmp R7 1000 參數振幅值 local kFrq R8 1000 參數頻率值=655368000Hz local kTh R9 0 參數相角值360deg=256 local kBias R10 0 參數偏移值 local kDuty R11 128 參數負載率100 =256 data 12 模組變數區長度及初值 initial 啟動程序 WR ang0 WR out0 ang=out=0 RET timer 即時控制程序(8KHz)

60

RD ang ADD (frq) WR ang ang+=frq SFR 8 ADD (th) AND 255 ACC=(ang256+th)amp0x00ff SUB (duty) RD (amp) JLT t1 RD 0 ACC=(amp0) t1 ADD (bias) WR out out=ACC+bias RET

IIR 一階濾波器

此模組執行一階的 IIR濾波器方塊圖如下

kau x

Z-1

+

+

-

+低通濾波器

高通濾波器dx lp

hp

濾波器參數的計算公式如下

1假設濾波器的頻寬為 hz則 ωn=hz628 2若系統頻率為 8KHz則抽樣週期 dT為 dT=dt8000 其中 dt為模組參數 3則濾波器參數為 ka=ωndT4096或是 =hzdt62880004096即 =hzdt32 4當 dt決定後所允許的訊號頻寬為(4000dt)換句話說訊號頻寬會因為 dt增加而下降

為了方便實驗的運用下面列出常用的參數對照表

濾波頻寬

(Hz)

10 20 50 100 200 500 1000 2000

訊號頻寬

(Hz)

400 800 2000 4000 4000 4000 4000 4000

模組參數 dt 10 5 2 1 1 1 1 1

模組參數 ka 320 320 320 320 640 1600 3200 6400

表格的運用方式如下

1首先決定濾波頻寬 2接著查表找出對映的參數 dt和 ka 3再查表得到對映的訊號頻寬以決定是否需要串接前級濾波器

61

模組程式範例IIR1_FILTERasm

local u R0 IP 輸入點濾波器輸入 local lp R1 OP 輸出點低通濾波器輸出 local hp R2 OP 輸出點高通濾波器輸出 local dt R3 1 參數抽樣週期 local ka R4 4096 參數增益 ka10=4096 local prd R5 內部變數抽樣週期用 data 6 模組變數區長度 initial 開機啟動程序 WR lp0 WR hp0 WR prd1 RET lp=hp=0prd=1 timer 即時控制程序 SUB prd1 JNZ b9 if (--prdgt0) return RD dt WR prd prd=dt RD (u) SUB lp WR hp hp=u-lp MUL ka SFR 12 ADD lp WR lp lp+=(hpka4096) b9 RET

資料蒐集模組

資料蒐集模組是一個非常特殊的模組專門配合 eTTY 程式中的示波器使用

模組程式範例DAS4asm

local cmd R0 0 紀錄命令0=停止1=前置記錄2=正觸發4=負觸發6=觸發記錄 local dt R1 1 抽樣週期每 dT抽樣一次 local tab R2 TP DAS表格啟始位址 local cnt R3 0 目前記錄點(0~255) local ch1 R4 0 定義頻道1的變數位址 local ch2 R5 0 定義頻道2的變數位址 local ch3 R6 0 定義頻道3的變數位址 local ch4 R7 0 定義頻道4的變數位址 local trg R8 0 定義觸發頻道的變數位址 local th R9 0 觸發準位 local tail R10 0 觸發後的抽樣個數 local buf R11 1 抽樣計數(1~dt) local pnt R12 表格位址計算pnt=tab+cnt4 local len R13 表格長度計算(0~256) data 14 定義模組變數區的長度 table tab 1024 定義表格的長度 initial 啟動程序 WR cmd0 RET cmd=0 timer 控制程序

62

ADD cmd0 JZ t9 if (cmd==0) return SUB buf1 JNZ t9 if (--buf)gt0) return RD dt WR buf dt=buf RD cnt ADD 1 AND 0xff WR cnt cnt=(cnt+1)amp0xff SFL 2 ADD tab WR pnt pnt=tab+cnt4 RD (ch1) WR (pnt) ADD pnt1 pnt++=ch1 RD (ch2) WR (pnt) ADD pnt1 pnt++=ch2 RD (ch3) WR (pnt) ADD pnt1 pnt++=ch3 RD (ch4) WR (pnt) pnt =ch4 RD cmd SUB 1 JZ t9 SUB 1 JZ t2 SUB 1 JZ t3 SUB 1 JZ t4 SUB 1 JZ t5 SUB 1 JZ t6 JR t7 t2 RD (trg) SUB th JGE t9 ADD cmd1 JR t9 wait trgltth t3 RD (trg) SUB th JLE t9 JR t6 wait trggtth t4 RD (trg) SUB th JLE t9 ADD cmd1 JR t9 wait trggtth t5 RD (trg) SUB th JGE t9 JR t6 wait trgltth t6 WR len0 WR cmd7 len=0cmd=7 t7 ADD len1 SUB tail JLT t9 WR cmd0 if ((++len)gt=0x80) cmd=0 t9 RET

與 DC 馬達控制相關的程式模組有以下 4個程式模組說明如下

(1)加減速控制模組 ACC_controlasm (2)光電盤輸入模組 POS_inputasm (3)PWM輸出模組 PWM_outputasm (4)PD控制模組 PD_controlasm

71加減速控制模組 此程式模組主要功能在於執行位置控制的加減速命令修正其數學模式採用 Lynn

濾波器的架構參見下圖

cmd

2

+

old Z -1

-

Z -1

Z -1

Z-1

Z-1x0 x1 x8 x9 x16

+ -

++

2

Z-1

Z-1 y1 y2

+

-

y0

+ +

sumZ-1

+164

12

out

dif

+

63

加減速控制模組方塊圖

其中

1Lynn 濾波器的階數固定成八階也就是 m=8其公式為 H(z) = (1-2Z-m+Z-2m)(1-2Z-1+Z-2)m2

2因為m=8所以m2=64因此最後計算低通濾波的部份時要先做除 64的運算 3因為低通濾波(lp)和 y0之間有 64倍的差異代表 y0y1y2的變化範圍比濾波器輸

入值要擴大許多例如輸入值在+-1000變化時y0y1y2很可能會在+-64000之間變化這範圍已經超出整數處理的範圍很可能會造成錯誤的計算結果

4所以在實驗時輸入值的變化範圍必須控制在+-500之間以保證計算的正確性 5對於 Lynn 濾波器當 m=8時其濾波器的頻寬固定為 1 kHzmdt也就是 dt=1時頻寬為 125 Hz dt=2時頻寬為 625Hz依此類推 6對於 Lynn 濾波器其濾波器的延遲固定為 m個抽樣週期因此設計 hp = x8 - lp 即可得到高通濾波器的對應結果 7其中乘 2和除 64的運算以移位運算取代所以整個程式中並無任何乘法運算 8Lynn 濾波器本身並不是穩定濾波器所以在程式啟動時必須確實的將所有狀態

(x0~x16)歸零否則會產生不穩定的狀態輸出

因為 Lynn濾波器中所有參數固定所以除了抽樣週期 dt 之外並無任何可調參數

抽樣週期 dt 可以控制頻寬dt 越大則濾波器頻寬越低

將步階命令值的輸出送入 Lynn 濾波器中經由低通濾波器的效應可以減緩命

令的變化程度達到加減速控制的目的以下為使用 Lynn 濾波器型式實現加減速控

制的組合語言程式列印 如欲更進一步瞭解 Lynn 濾波器與 FIR 數位濾波器之間的關係可以參考通訊實驗

四數位濾波器設計(FIR)中之說明

ACC_controlasm程式列印 local cmd R0 IP 輸入點位置命令

local out R1 OP 輸出點加減速處理後的位置命令

local dif R2 OP 輸出點位置微分命令

local axis R3 0 馬達編號0=X1=Y2=Z3=C

local old R4 內部變數微分計算用

local sumL R5 內部變數積分計算用

local sumH R6 內部變數積分計算用

local y0 R7 內部變數y(0~2)

local y1 R8 local y2 R9

local x0 R10 內部變數x(0~16)

local x1 R11 local x2 R12 local x3 R13 local x4 R14

local x5 R15 local x6 R16 local x7 R17 local x8 R18

local x9 R19 local x10 R20 local x11 R21 local x12 R22

local x13 R23 local x14 R24 local x15 R25 local x16 R26

64

data 27 模組變數區長度

initial 開機啟動程序

WR dif0 RD (cmd) WR out WR old dif=0 out=old=cmd

sumHL=cmd64

SFL 6 WR sumL RD out SFR 10 SGN 5 WR sumH

RPT 17 WR x00 RPT 3 WR y00 RET x[0~16]=0y[0~2]=0

timer 即時控制程序

RD (cmd) SUBX old WR x0 x0=cmd-old old=cmd

SUB x81 ADD x16 ADD y11 SUB y2 WR y0 y0=x0-2x8+x16+2y1-y2

SGN ADD sumL WR sumL RDH ADC sumH WR sumH sumHL+=y0

WRH RD sumL SFR 6 WR out out=sumHL64

RD y0 SGN SFR WR dif dif=y032mm

RD x0 RPT 16 RDX x1 x[i]=x[i-1] i=1~16

RD y0 RDX y1 WR y2 y[i]=y[i-1] i=1~2

b9 RET

72光電盤輸入模組

DC馬達的位置由光電盤量測之預設儲存於 0xac與 0xbe二個輸入埠位址中其中位址 0xac記錄 X軸馬達的位置位址 0xbe記錄 Y軸馬達的位置由於本實驗的DC馬達接在 Y軸的位置上因此程式中直接選用 Y軸的輸入 光電盤位置輸入的程式列印如下其中速度由位置的差分而得至於馬達的位置

則使用內部 2個 word加以記錄精度為 32位元 POS_inputasm程式列印 local spd R0 OP 輸出點速度量測值

local ang R1 OP 輸出點角度量測值

local angH R2 內部變數角度的 32 位元部分

local mode R3 0x308 模式選擇15MHzAB 相正反向輸入

local pht R4 0xac 輸入阜地址光電盤輸入(0xac)

local phtc R5 0xbe 輸入阜地址光電盤模式(0xbe)

local old R6 內部變數速度更新用

data 7 模組變數區長度

initial 開機啟動程序

RD mode WR (phtc) phtc=mode

RD (pht) WR old WR spd0 RET old=phtspd=0

timer 即時控制程序

RD (pht) SUBX old SGN 11 WR spd spd=(pht-old)old=pht

65

ADD ang WR ang angHL+=spd

RDH ADC angH WR angH

RET

73 PWM輸出控制模組 模組方塊

cmd PWM輸出

程式說明 1在開機時將切換保護時間寫到輸出阜 0xbc上其中切換保護值為 0~6360=5us 2在每次 timer interrupt時將 cmd訊號處理後寫到輸出阜 0xb8上

PWM_outputasm程式列印 local cmd R0 IP gnd 輸入點v相命令

local gain R1 4096 參數輸出增益1=4096

local bias R2 2048 參數輸出偏壓0=2048

local limit R3 4095 參數輸出極限1=4095

local zone R4 0x88f0 參數頻率=12KHz切換保護=5us

local pwm R5 0xb8 輸出阜地址PWM0 輸出(0xb8)

local mode R6 0xbc 輸出阜地址PWM 模式(0xbc)

local p0md R7 0xf8 輸出阜地址port0 模式(0xf8)

local gnd R8 0 輸入接地點

data 9 模組變數區長度

initial 開機啟動程序

RD bias WR (pwm) pwm=bias

RD 0xffff WR (p0md) set port0 mode

RD zone WR (mode) RET mode=zone

stop 關機保護程序

RD bias WR (pwm) RET pwm=bias

timer 即時控制程序

RD (mode) xor 1 and 1 WR (mode) trigger watch-dog

RD (cmd) MUL gain SFR 12 ADD bias ACC=(cmdgain4096)+bias

MAX 0 MIN limit WR (pwm) pwm=limit(ACC)

RET

66

74 PD 控制模組

PD控制的模組方塊參見圖二十一所示其中比例控制的部份直接由增益 kp加以調整微分控制的部份則由誤差的差分經增益 kd的調整而得

Σ+

-

cmd

fdk

err out

Σ

pk

dk

Σ

+

+

+

-

old1minusZ

PD控制器的方塊圖

PD_controlasm程式列印 local cmd R0 IP gnd 輸入點位置命令(可忽略)

local fdk R1 IP gnd 輸入點位置回授(可忽略)

local out R2 OP 輸出點用以控制速度迴路

local kp R3 256 參數增益 kp10=256

local kd R4 0 參數增益 kd10=256

local err R5 0 內部變數

local old R6 0 內部變數

local gnd R7 0 無輸入時的短路點

data 8 模組變數區長度

initial 開機啟動程序

WR out0 WR old0 RET out=old=0

timer 即時控制程序

RD (cmd) SUB (fdk) PRTF WR err

MUL kp SFR 8 P=(cmd-fdk)kp256

RDS err SUBX old MUL kd SFR 8 D=(err-old)kd256

ADDS

WR out out=P+D

RET

程式中預設增益值的 10以整數值 256為基底因此使用 SFR 8的指令加以調

整另外在在計算微分項的程式部份用到 SUBX old的指令其詳細的暫存器動作如

下 參考 piDSP的指令說明SUBX指令將總共用到 3個時序參考錯誤 找不到參照

67

來源在時序 1時將原先 AX的資料拷貝一份到 HX中時序 2時正式執行減

法的動作所以 AX暫存器中的內容會變成 err-old時序 3時DSP會將存放在 HX暫存器中的內容拷貝一份到 old的記憶體中也就是經由 SUBX此一精簡指令將

同時完成計算差分所需要的相減與資料疊代的動作有效的利用 piDSP控制器 DSP核心的精簡指令將可以大幅提昇系統的計算速度

HX AXoldSUBXerr err

old

err

errerr olderr minus

1_err

errerr olderr minus err

1_err

1

2

3

SUBX的指令時序與暫存器變化

68

8附錄快速安裝說明

光纖網路通訊 FPGA 發展系統 (適用於 WIN-XP200098 系統)

快速安裝說明

26Pin 負載輸出入埠

雙電源︵5

12

伏︶輸入埠

單電源︵5

伏︶輸入埠

USB

光纖線輸

號 光纖線輸出埠

入 傳 埠

首先將光碟片 RFFPGA 目錄檔案拷貝在您工作硬碟裡面

第一次安裝時先將 USB 傳輸線接上電腦主機將電源供應器接上 FPGA 模組此時電

腦會出現安裝 USB-Serial 驅動程式選擇從清單安裝此驅動程式放置在光碟片

RFFPGA-USBdrive 選擇您目前安裝系統

可選擇 WIN-98WIN-MEWIN-2000WIN-XP 系統配合您現在工作電腦作業系統

69

注意一般電腦 USB 埠很多插口當您安裝驅動程式時是配合您當時插入之埠

下次如您插入不同接口埠時電腦會再次要求安裝驅動程式這是正常現象請再次安

裝驅動程式否則無法使用

FPLC 操作

首先進入 RFFPGA裡子目錄 testASM直接點選 fPLCexe 出現下面操作畫面(也可直接將

此檔案放置桌面直接點選)

(或者選擇 File 再執行 Setuphellip 選擇您要執行 CAI 檔)

70

進入下面操作畫面 首先使用滑鼠在 FPGA下載按鈕單擊動作使 FPGA變成 DSP晶片 實驗一至實驗五皆為使用 DSP組合語言設計程式其原始程式分別為 testASM1至testASM5可使用 texPad 開啟與編輯程式內容 實驗三與實驗五多有 IO控制動作 當選擇實驗三時出現下面畫面

71

eM_USB 模組

數字型 LED

0 1 2 34 5 6 78 9 A BC D E F

燈號型 LED

44 鍵盤

ADC0 ADC1 DAC0 DAC1

LED 選擇KEY 選擇

模 式 1

0123

注意操作畫面 3與 4 說明開關與按鍵選擇位置後選擇程式下載再按程式啟動如您

按下 0-3按鍵時燈號型 LED會有不同方向閃爍顯示程式停止時結束所有 IO控制動作再按回首頁選擇其他實驗 實驗四與實驗五

模式3

0 1 2 34 5 6 78 9 A BC D E F

按照上面開關選擇直接操作如果以上實驗皆能按照正常操作表示您光纖網路通訊

FPGA發展模組以能正常使用 注意 開機與關機動作順序如下

開機電腦啟動 --- eM_USB 模組電源接上 --- USB 接上電腦 ---

啟動 FPLC 軟體 --- 下載 FPGA 程式

關機關閉 FPLC 軟體 --- eM_USB 模組電源拔掉 --- 拔掉電腦 USB 接頭 ---關掉

電腦

如果以上順序有亂可能造成 USB 找不到驅動造成無法下載經過幾次測試還是

無法下載建議重新啟動電腦主機按照正確步驟操作

72

FPGA 下載操作

進入 FPLC 操作系統按照下列步驟選擇節點模組與下載 bit FPGA 檔案

在 VHDLDEMO 子目錄下您可以選擇您目前 FPGA 種類型號在此型號下我們已將 VHDL

與數位邏輯設計課本範例全部放於此處

73

光纖網路連線 FPGA 下載操作

首先利用光纖線將 eM_USB0 模組光纖輸出埠接至 eM_USB1 模組光纖輸入埠以此

類推最後再將最後 eM_USBN 模組光纖輸出埠接至 eM_USB0 模組光纖輸入埠配置

如附圖方式

個人電腦(Windows) eM_USB模組

0USB

eM_USB模組1

光纖網路

eM_USB模組2

eM_USB模組N

配置完成後進入 FPLC 系統首先必須先將 Node00 下載在 testASM 子目錄裡

piDSPv0bit 檔讓 eM_USB0 模組 FPGA 具備 DSP 功能才能執行光纖網路通訊

操作如下

此時您就可以選擇分別下載至各模組 FPGA 檔 bit

74

安裝 FPLC 注意事項

當您進入 FPLC 時

按 FILE 選擇 programhellip 選擇檔案為 exp_dcmplc 出現下面畫面

正常顯示畫面為

75

DOS 環境操作

在 PC 端的操作是在 Windows 環境中的 DOS 視窗中執行指令範例如下

eFPGA progNETbit 下載 FPGA電路至網路節點0(即 USB節點)中 eFPGA testLEDbit 1 下載 FPGA電路至網路節點1中

對於單一節點的控制程序如下

1將 eM_USB模組連結個人電腦的 USB端 2eM_USB模組開機 3執行下載指令即可 eFPGA xxxxbit 4若要更改 FPGA電路只要重新執行下載指令即可

對於多個網路節點的控制程序如下

1第一組 eM_USB模組連結個人電腦的 USB端再以光纖網路依序其他各節點 2連接 USB界面者為模組0從光纖發射端連接出去的模組為1依此類推 3將所有 eM_USB模組開機 4執行下載指令如下 eFPGA progNETbit 模組0必須先下載指定的 FPGA電路 eFPGA xxxxbit 1 再依序下載其他網路模組的 FPGA電路 eFPGA yyyybit 2 eFPGA zzzzbit 最後再重新下載模組0的 FPGA電路 5換句話說模組0必須先執行 progNETbit讓光纖網路接受 FPGA控制後才能透過光纖網路下載至其他節點等全部網路節點下載完畢後再將模組0的 FPGA重新下載讓模組0也可自由執行任意的 FPGA電路

6若要更改某一個網路節點中的 FPGA電路只要重新執行下述指令 eFPGA progNETbit 模組0必須先下載指定的 FPGA電路 eFPGA yyyybit 2 下載指定網路模組的 FPGA電路 eFPGA zzzz bit 最後再重新下載模組0的 FPGA電路 換句話說除非模組0中的 FPGA已經包括光纖網路管理電路否則一定要先在

模組0中下載網路管理電路後才能下載指定網路節點的 FPGA電路

76

光纖網路通訊 FPGA 發展系統

系統配置

光纖網路通訊 FPGA 發展系統的系統配置圖如下

個人電腦(Windows) eM_USB模組

0USB

eM_USB模組1

光纖網路

eM_USB模組2

eM_USB模組N

其中

1基本模組為 eM_USB模組可用 USB界面和個人電腦連線並提供 USB對光纖網路的轉換功能使得個人電腦可以獨立控制光纖網路中的每個網路節點

2eM_USB模組也可以作為光纖網路中的網路節點透過光纖網路而接受個人電腦的

監控 3就個人電腦而言不論是 USB界面直接連結或是以光纖網路間接連結的 eM_USB模組都是可以直接監控的網路節點最多可以同時控制一個 USB節點和 30個網路節點

4對於每一個網路節點個人電腦都可執行 eM_USB模組中 FPGA的電路下載工作並在適當的 FPGA電路配合下可執行 eM_USB模組中 FPGA內部電路的讀寫控制 5透過適當的 FPGA電路設計各網路節點都可透過光纖網路和其他任何網路節點

作同步通訊執行 FPGA內部記憶體的資料交換資料交換頻率可達 1KHz以上

77

網路模組配置

每個網路模組的標準配置圖如下

eM_USB模組光纖網路

USB eM_FPGA卡

eM_DEMO模組

eM_EXP實驗模組

DC電源

其中

1網路模組以 eM_USB模組為主提供基本的 USB界面和光纖網路連線 2eM_USB模組中的 FPGACPLD採用插卡型式可選擇不同的 eM_FPGA卡包括

eM_2V1K卡可選用 Virtex系列的 XC2V250和 XC2V1000 eM_3S1K卡可選用 Spartan3系列的 XC3S400XC3S1000和 XC3S1500 eM_3S50卡可選用 Spartan3系列的 XC3S50XC3S200和 XC3S400 eM_95XL卡可選用 9500XL系列的 XC95144XL和 XC95288XL 3eM_USB模組中的對外連線有兩種一種是 26P接頭用以連接既有的各種實驗模

組另一種是兩組 50P接頭將 FPGA中各接腳引出用以連接專題實驗 4eM_DEMO模組就是插上 50P接頭的教學模組其中包括 LED 數字顯示和 44鍵盤也具備兩組的 ADC和兩組的 DAC接頭提供類比訊號的測試工具

常用的實驗組合包括

1精簡組合包括(eM_USB+eM_FPGA)提供基本的網路節點適用於專題實驗 2標準組合包括(eM_USB+eM_FPGA+eM_DEMO)提供基礎 FPGA設計的教學實驗

3實驗組合包括(eM_USB+eM_FPGA+eM_DEMO+eM_EXP)提供進階的 FPGA實驗可依需求選用不同的實驗模組

78

eM_USB 模組

eM_USB 模組的電路配置圖如下

TxRx

DCPower

USB

JP2

JP3

光纖界面

外加電源

PC連線

JP1

eM_FPGA模組

FT232 CPLD FlashROM

SRAM

10cm

6cm

JP4

其中

1對外的連線接頭包括 DC電源 可選擇單電源(5V)或是多電源(5V+12V-12V)兩種 USB界面 直接連接個人電腦 光纖界面連接光纖網路 2實驗界面包括 JP1負責內部 CPLD的電路下載 JP2JP3兩組 50P的擴張用接頭 JP4 標準 26P接頭用以連接各種實驗模組 3內部的電路配置包括 A以 SO-DIMM接頭連接各種 eM_FPGA卡 B內附 EEPROMFlashROM和 SRAM提供 FPGA作應用測試 C以一顆 FT232BM作為 USB界面解碼而以一顆 CPLD作為光纖網路解碼 D提供各種 eM_FPGA卡的電路下載功能 4內附五顆 LED由上而下依序為 usbLED指示 USB界面的讀寫狀態 tstLED可由 FPGA電路自行定義 stsLED可由 FPGA電路自行定義 RxLED 可由 FPGA電路自行定義 TxLED 可由 FPGA電路自行定義

79

外部接腳定義

外部接頭的接點順序圖示如下

上視圖

JP11 9 JP4

126225

JP31

50249

JP21

50249

而各接頭的接點定義如下

JP1 JP4 JP2 JP3 1+33V 1+12V 2+12V 1 GND 2 GND 1 GND 2 GND 2GND 3 ADC 4 DAC 3POWER 4ALARM 3 +5V 4 +5V 3nc 5 yPB2 6 yPB3 5RxNET 6TxNET 5+12V 6+12V 4TCK 7 yPB1 6 yPB4 7RxUSB 6TxUSB 7-12V 6-12V 5nc 9 yPB0 10yPB5 9RxCAN 10TxCAN 9 ADC 10 DAC 6TDO 11yPB6 12yPB7 11P0D0 12P0D1 11P1D0 12P1D1 7TDI 13yGND 14yPC3 13P0D2 14P0D3 13P1D2 14P1D3 8nc 15yPC2 16yPC1 15P0D4 16P0D5 15P1D4 16P1D5 9TMS 17yPC0 18yPA0 17P0D6 18P0D7 17P1D6 18P1D7 19yPA1 20yPA2 19P0D8 20P0D9 19P1D8 20P1D9 21yPA3 22GND 21P0D10 22P0D11 21P1D10 22P1D11 23GND 24+5V 23P0D12 24P0D13 23P1D12 24P1D13 25+5V 26nc 25P0D14 26P0D15 25P1D14 26P1D15 27P2D0 28P2D1 27PxA0 28PxA1 29P2D2 30P2D3 29PxA2 30PxA3 31P2D4 32P2D5 31PxA4 32PxA5 33P2D6 34P2D7 33PxA6 34PxA7 35P2D8 36P2D9 35PxB0 36PxB1 37P2D10 38P2D11 37PxB2 38PxB3 39P2D12 40P2D13 39PxB4 40PxB5 41P2D14 42P2D15 41PxB6 42PxB7 43ADC0 44ADC1 43PxC0 44PxC1 45ADC2 46ADC3 45PxC2 46PxC3 47ADC4 48ADC5 47PxC4 48PxC5 49DAC0 50DAC1 49PxC6 50PxC7

80

eM_FPGA 模組

在各種 eM_FPGA 模組中FPGA 對外電路的標準配置圖如下

24576MHz

FlashROM

26PSRAM

EEPROM

mD[8]

yPA[4]

FPGACPLD

mA[19]mRDmWRmCSeeCKeeCSeeDIeeDO

光纖界面 RxNETTxNET

USB 界面 RxUSBTxUSBCLK24MPOWERALARM

LED

tstLEDstsLEDRxLEDTxLED

yPB[8]yPC[4]

ADCDAC

ADC[8]

實驗模組

ADC[2]

DAC[2]

xPA[4]

xPB[8]

xPC[4]

基礎實驗

其中

1FPGACPLD可以選擇下述幾種 XC2V250XC2V1000 採用 eM_2V1K模組其中 FPGA為 FG456包裝 XC3S400XC3S1000XC3S1500採用 eM_3S1K模組其中 FPGA為 FG456包裝 XC3S400XC3S1000XC3S1500採用 eM_3S1K模組其中 FPGA為 FG456包裝 XC3S50XC3S200XC3S400 採用 eM_3S50模組其中 FPGA為 TQ144包裝 XC95144XLXC95288XL 採用 eM_95XL模組其中 CPLD為 TQ144包裝 2採用 FG456包裝者可以控制所有的 IO界面 3採用 TQ144包裝者只是不能控制 RAM和 FlashROM而可以控制其他所有的界面 4所有 FPGA模組都可自由選擇由 USB界面或是由光纖界面下載電路但是 CPLD模組只能固定由 USB界面下載電路

5所有 FPGACPLD模組都可透過 26P接頭連接既有的各種實驗模組

81

FPGA 接腳對照表

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

mD0 XD6 mD0 A17 C13 -- -- mD1 XD7 mD1 B17 D12 -- -- mD2 XD8 mD2 C17 D11 -- -- mD3 XD9 mD3 D17 C11 -- -- mD4 XD10 mD4 E17 D10 -- -- mD5 XD11 mD5 E16 C10 -- -- mD6 XD12 mD6 E14 D9 -- -- mD7 XD13 mD7 E13 D7 -- -- mA0 XD14 mA0 D13 C7 -- -- mA1 XD15 mA1 C13 D6 -- -- mA2 XA0 mA2 V5 C3 -- -- mA3 XA1 mA3 U5 C4 -- -- mA4 XA2 mA4 Y2 D3 -- -- mA5 XA3 mA5 Y1 D4 -- -- mA6 XA4 mA6 V4 E3 -- -- mA7 XA5 mA7 V3 E4 -- -- mA8 XA6 mA8 W2 F3 -- -- mA9 XA7 mA9 W1 F4 -- -- mA10 XA8 mA10 T2 G6 -- -- mA11 XA9 mA11 T1 K3 -- -- mA12 XA10 mA12 R4 K10 -- -- mA13 XA11 mA13 R3 L3 -- -- mA14 XA12 mA14 R2 L4 -- -- mRD XRD mRD R1 D5 -- -- mWR XWR mWR P6 C6 -- --

POWER P0A0 POWER B4 B20 P1 P5 ALARM P0A1 ALARM A4 A19 P2 P6 RxNET P0A2 RxNET C4 B19 P4 P7 TxNET P0A3 TxNET C5 A18 P5 P9 RxUSB P0B0 RxUSB B5 A15 P6 P10 TxUSB P0B1 TxUSB A5 B15 P7 P11 RxCAN P0B2 RxCAN D6 A14 P8 P12 RxCAN P0B3 TxCAN C6 B14 P10 P13

CLK24M CLK24M CLK24M E12 B12 P124 P38

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

PWM0H P3A0 P0D0 E6 A8 P21 P23 PWM0L P3A1 P0D1 E5 B8 P23 P24 PWM1H P3A2 P0D2 C2 B6 P24 P25 PWM1L P3A3 P0D3 C1 A5 P25 P26 PWM2H P3A4 P0D4 D2 B5 P26 P27

82

PWM2L P3A5 P0D5 D1 A4 P27 P28 PWMenb P3A6 P0D6 E4 B4 P28 P30 PHT1Z P3A7 P0D7 E3 A3 P30 P31 PHT1A P3B0 P0D8 G2 C1 P31 P32 PHT1B P3B1 P0D9 G1 C2 P32 P33 PHT0A P3B2 P0D10 H5 D1 P33 P34 PHT0B P3B3 P0D11 J6 D2 P35 P35 AMP0 P3B4 P0D12 H4 E1 P36 P39 AMP1 P3B5 P0D13 H3 E2 P40 P40 AMP2 P3B6 P0D14 H2 F2 P41 P41 AMP3 P3B7 P0D15 H1 G1 P44 P43 eeSK P0C3 P1D0 C10 B9 P20 P22 eeCS P0C2 P1D1 D10 A9 P18 P21 eeDI P0C1 P1D2 F10 B10 P17 P20 eeDO P0C0 P1D3 E10 B11 P15 P19 ssCK P0B7 P1D4 E8 A11 P14 P17 ssCS P0B6 P1D5 E7 A12 P13 P16 ssDI P0B5 P1D6 A6 B13 P12 P15 ssDO P0B4 P1D7 B6 A13 P11 P14

ppCLK P3C0 P1D8 K4 G2 P46 P44 ppDIN P3C1 P1D9 K3 K1 P47 P45 TxD P3C2 P1D10 K2 K2 P50 P46 RxD P3C3 P1D11 K1 L1 P51 P48

tstLED P3C4 P1D12 L5 L2 P52 P49 stsLED P3C5 P1D13 L4 M1 P53 P50 RxLED P3C6 P1D14 L3 M2 P55 P51 TxLED P3C7 P1D15 L2 N1 P56 P52

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

xPA0 P2A0 P2D0 AA3 N2 P59 P53 xPA1 P2A1 P2D1 Y4 T1 P60 P54 xPA2 P2A2 P2D2 AA4 T2 P63 P56 xPA3 P2A3 P2D3 AB4 U2 P68 P57 xPC0 P2A4 P2D4 W5 V1 P69 P58 xPC1 P2A5 P2D5 Y5 V2 P70 P59 xPC2 P2A6 P2D6 AA5 W1 P73 P60 xPC3 P2A7 P2D7 AB5 W2 P74 P61

-- P2B0 P2D8 V6 Y1 P76 P64 -- P2B1 P2D9 V7 Y2 P77 P66 -- P2B2 P2D10 W6 AA3 P78 P68

mCS P2B3 P2D11 Y6 AB4 P79 P69 mA15 P2B4 P2D12 V9 AA4 P80 P70 mA16 P2B5 P2D13 V10 AB5 P82 P71 mA17 P2B6 P2D14 W10 AA5 P83 P74 mA18 P2B7 P2D15 Y10 AA6 P84 P75 CS0 P2C0 ADC0 AA10 AB8 P85 P76

83

SDIN0 P2C1 ADC1 AB10 AA8 P86 P77 CS1 P2C2 ADC2 U10 AB9 P87 P78

SDIN1 P2C3 ADC3 U11 AA9 P89 P79 SCLK P2C4 ADC4 V11 AB10 P90 P80 CS2 P2C5 ADC5 W11 AA10 P92 P81

SDOUT P2C6 ADC6 Y11 AB11 P93 P82 LDAC P2C7 ADC7 AA11 AA11 P95 P83

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

xPB0 P1A0 PxA0 M1 M3 P135 P85 xPB1 P1A1 PxA1 M2 M4 P132 P86 yPB2 P1A2 PxA2 M3 N3 P131 P87 yPB3 P1A3 PxA3 M4 N4 P130 P88 yPB1 P1A4 PxA4 M5 T4 P129 P91 yPB4 P1A5 PxA5 M6 T5 P128 P92 yPB0 P1A6 PxA6 N1 U3 P127 P93 yPB5 P1A7 PxA7 N2 U4 P125 P94 yPB6 P1B0 PxB0 U13 V3 P119 P95 yPB7 P1B1 PxB1 V13 V4 P118 P96 xPB2 P1B2 PxB2 W13 W3 P116 P97 xPB3 P1B3 PxB3 Y13 W4 P113 P98 xPB4 P1B4 PxB4 AA13 Y3 P112 P100 xPB5 P1B5 PxB5 AB13 Y4 P96 P101 yPC3 P1B6 PxB6 U12 Y5 P97 P102 yPC2 P1B7 PxB7 V12 W5 P98 P103 yPC1 P1C7 PxC0 AB17 W11 P108 P113 yPC0 P1C6 PxC1 AA17 Y11 P107 P112 yPA0 P1C5 PxC2 Y17 W10 P105 P111 yPA1 P1C4 PxC3 W17 Y10 P104 P110 yPA2 P1C3 PxC4 AB18 W9 P103 P107 yPA3 P1C2 PxC5 AA18 W8 P102 P106 xPB6 P1C1 PxC6 Y18 W6 P100 P105 xPB7 P1C0 PxC7 W18 Y6 P99 P104

84

eM_DEMO 模組

eM_DEMO 模組的電路配置圖如下

eM_USB 模組

數字型 LED

0 1 2 34 5 6 78 9 A BC D E F

燈號型 LED

44 鍵盤

ADC0 ADC1 DAC0 DAC1

LED 選擇KEY 選擇

其中

1eM_DEMO模組的基本功能包括 A將 xPAxPBxPC等 16個 IO訊號引出控制 LED和鍵盤電路 B將 ADDA訊號引出並放大成+-10V的工作範圍 2LED和鍵盤可以選擇三種模式由 LED和 KEY 兩組開關作選擇圖示如下

模式1

0123

模式2 模式3

0 1 2 34 5 6 78 9 A BC D E F

0123

3模式14鍵輸入並搭配 16點的 LED燈號顯示其中 16點 LED分別對映到 xPA[0~3]xPB[0~7]和 xPC[0~3] 4組按鍵分別對映到 xPC[0~3] 4模式24鍵輸入並搭配四個 7段式數字顯示其中 數字顯示由 xPA[0~3]作數字掃瞄而由 xPB[0~7]作 7段式 LED控制 4組按鍵 分別對映到 xPC[0~3] 5模式316鍵輸入並搭配四個 7段式數字顯示其中 數字顯示由 xPA[0~3]作數字掃瞄而由 xPB[0~7]作 7段式 LED控制 16組按鍵由 xPA[0~3]作鍵盤掃瞄而由 xPC[0~3]作鍵盤讀取 6根據VHDL與數位邏輯設計的章節其中 第 1章至 10章的實驗採用模式1而 第 11章實驗採用模式2而 第 12章之後的實驗都採用模式3

85

FPGA UCF 定義

eM_3S1K 模組

NET CLK LOC = B12

NET XAlt0gt LOC = N2

NET XAlt1gt LOC = T1

NET XAlt2gt LOC = T2

NET XAlt3gt LOC = U2

NET XBlt0gt LOC = M3

NET XBlt1gt LOC = M4

NET XBlt2gt LOC = W3

NET XBlt3gt LOC = W4

NET XBlt4gt LOC = Y3

NET XBlt5gt LOC = Y4

NET XBlt6gt LOC = W6

NET XBlt7gt LOC = Y6

NET XClt0gt LOC = V1

NET XClt1gt LOC = V2

NET XClt2gt LOC = W1

NET XClt3gt LOC = W2

NET YAlt0gt LOC = W10

JP4 接頭

NET YAlt1gt LOC = Y10

NET YAlt2gt LOC = W9

NET YAlt3gt LOC = W8

NET YBlt0gt LOC = U3

NET YBlt1gt LOC = T4

NET YBlt2gt LOC = N3

NET YBlt3gt LOC = N4

NET YBlt4gt LOC = T5

NET YBlt5gt LOC = U4

NET YBlt6gt LOC = V3

NET YBlt7gt LOC = V4

NET YClt0gt LOC = Y11

NET YClt1gt LOC = W11

NET YClt2gt LOC = W5

NET YClt3gt LOC = Y5

在光碟片中 RFFPGAVHDLDEMOBIT3S1K 裡有 VHDL 與數位邏輯設計書本範例原始檔與合成檔

86

eM_3S50 模組

NET CLK LOC = P124

NET XAlt0gt LOC = P59

NET XAlt1gt LOC = P60

NET XAlt2gt LOC = P63

NET XAlt3gt LOC = P68

NET XBlt0gt LOC = P135

NET XBlt1gt LOC = P132

NET XBlt2gt LOC = P116

NET XBlt3gt LOC = P113

NET XBlt4gt LOC = P112

NET XBlt5gt LOC = P96

NET XBlt6gt LOC = P100

NET XBlt7gt LOC = P99

NET XClt0gt LOC = P69

NET XClt1gt LOC = P70

NET XClt2gt LOC = P73

NET XClt3gt LOC = P74

NET YAlt0gt LOC = P105

JP4 接頭

NET YAlt1gt LOC = P104

NET YAlt2gt LOC = P103

NET YAlt3gt LOC = P102

NET YBlt0gt LOC = P127

NET YBlt1gt LOC = P129

NET YBlt2gt LOC = P131

NET YBlt3gt LOC = P130

NET YBlt4gt LOC = P128

NET YBlt5gt LOC = P125

NET YBlt6gt LOC = P119

NET YBlt7gt LOC = P118

NET YClt0gt LOC = P107

NET YClt1gt LOC = P108

NET YClt2gt LOC = P98

NET YClt3gt LOC = P97

在光碟片中 RFFPGAVHDLDEMOBIT3S200 裡有VHDL與數位邏輯設計書本範例原始檔與合成檔

87

eM_95XL 模組

NET CLK LOC = SPIN38

NET XAlt0gt LOC = SPIN53

NET XAlt1gt LOC = SPIN54

NET XAlt2gt LOC = SPIN56

NET XAlt3gt LOC = SPIN57

NET XBlt0gt LOC = SPIN85

NET XBlt1gt LOC = SPIN86

NET XBlt2gt LOC = SPIN97

NET XBlt3gt LOC = SPIN98

NET XBlt4gt LOC = SPIN100

NET XBlt5gt LOC = SPIN101

NET XBlt6gt LOC = SPIN105

NET XBlt7gt LOC = SPIN104

NET XClt0gt LOC = SPIN58

NET XClt1gt LOC = SPIN59

NET XClt2gt LOC = SPIN60

NET XClt3gt LOC = SPIN61

NET YAlt0gt LOC = SPIN111

JP4 接頭

NET YAlt1gt LOC = SPIN110

NET YAlt2gt LOC = SPIN107

NET YAlt3gt LOC = SPIN106

NET YBlt0gt LOC = SPIN93

NET YBlt1gt LOC = SPIN91

NET YBlt2gt LOC = SPIN87

NET YBlt3gt LOC = SPIN88

NET YBlt4gt LOC = SPIN92

NET YBlt5gt LOC = SPIN94

NET YBlt6gt LOC = SPIN95

NET YBlt7gt LOC = SPIN96

NET YClt0gt LOC = SPIN112

NET YClt1gt LOC = SPIN113

NET YClt2gt LOC = SPIN103

NET YClt3gt LOC = SPIN102

在光碟片中 RFFPGAVHDLDEMOSVF95288XL 裡有VHDL與數位邏輯設計書本範例原始檔與合成

檔案

88

eM_FPGA 模組

NET CLK LOC = E12

NET XAlt0gt LOC = AA3

NET XAlt1gt LOC = Y4

NET XAlt2gt LOC = AA4

NET XAlt3gt LOC = AB4

NET XBlt0gt LOC = M1

NET XBlt1gt LOC = M2

NET XBlt2gt LOC = W13

NET XBlt3gt LOC = Y13

NET XBlt4gt LOC = AA13

NET XBlt5gt LOC = AB13

NET XBlt6gt LOC = Y18

NET XBlt7gt LOC = W18

NET XClt0gt LOC = W5

NET XClt1gt LOC = Y5

NET XClt2gt LOC = AA5

NET XClt3gt LOC = AB5

NET YAlt0gt LOC = Y17

JP4 接頭

NET YAlt1gt LOC = W17

NET YAlt2gt LOC = AB18

NET YAlt3gt LOC = AA18

NET YBlt0gt LOC = N1

NET YBlt1gt LOC = M5

NET YBlt2gt LOC = M3

NET YBlt3gt LOC = M4

NET YBlt4gt LOC = M6

NET YBlt5gt LOC = N2

NET YBlt6gt LOC = U13

NET YBlt7gt LOC = V13

NET YClt0gt LOC = AA17

NET YClt1gt LOC = AB17

NET YClt2gt LOC = V12

NET YClt3gt LOC = U12

在光碟片中 RFFPGAVHDLDEMOBIT2V250 裡有VHDL與數位邏輯設計書本範例原始檔與合成檔

89

Page 19: RFFPGA 直流馬達實驗手冊juniortek.com.tw/program/manual/RF-DC-mal.pdf · em_demo模組 em_dcm 直流伺服馬達 dc電源 rffpga 系統的直流馬達實驗規劃 其中包括:

4安裝程序

31 將 RFFPGA中的程式拷貝至工作硬碟中進入 DC子目錄資料夾中其中包含下

列檔案

檔案 內容說明 mod SIN_wave MODPWM_wave MODIIR1_filter MODDAS4

MODPOS_inputMODPWM_outputMODACC_controlMODPD_controlMOD這些檔案是由 ASM重新編譯出由 testDCMmem所需執行模組檔

asm SIN_waveasmPWM_waveasmIIR1_filterasmDAS4asm POS_inDCMasmPWM_outDCMasmACC_conDCMasmPD_controlasm是各模組組合語言所設計 SOURCE檔

plc 為進行實驗所需的各批次檔 bit piDSPv0bit為下載到 FPGA的 BIT檔其功能為將 FPGA規劃成

具備 piDSP控制晶片功能提供直流伺服控制所需的控制程式

撰寫 testDCMsys 記載進行 DCM實驗時所需的模組 testDCMMEM 連結完成的 DSP執行檔用來進行 DCM實驗 testDCMvar 紀錄 DCM實驗時的參數對照表

在進行實驗前先將實驗所需的系統程式與模組程式分別說明加以說明系統所

需的程式模組由 testDCMsys 來描述程式列印如下

module fg1 PWM_wavemod 方波產生器

module fg2 SIN_wavemod 弦波產生器

module cn1 ACC_controlmod 加減速控制器

module cn2 PD_controlmod 比例微分控制器

module io1 POS_inputmod 位置和速度讀值

module io2 PWM_outputmod PWM 電壓輸出界面

module ft1 IIR1_filtermod 一階濾波器

module das das4mod 示波器資料蒐集

module io3 LEDKEYmod LEDKEY 界面

其中包括

1兩組波型產生器作為測試命令包括正弦波和方波 2兩組控制器提供包括加減速PD控制器的功能可依照實驗需求搭配使用 3兩組輸入輸出界面執行 PWM輸出和相位回授的界面處理 4一組低通濾波器作為電壓開迴路控制迴路和速度閉迴路控制的模擬使用 5DAS4mod是示波器專用的配合模組不論任何實驗都必須加入此模組 6Ledmod是四位數字七段顯示與 44矩陣按鍵模組

19

5執行程序

首先進入 RFFPGA 裡子目錄 DC直接點選 fPLCexe 出現下面操作畫面(也可直接將此檔

案放置桌面直接點選)

進入下面操作畫面

20

首先使用滑鼠在 FPGA下載按鈕單擊動作使 FPGA變成 piDSP晶片 如您撰寫組合語言時可使用 eASM按鈕 經編譯完成後產生MOD檔 如您撰寫系統連結程式時可使用 eLINK按鈕 經連結完成後產生MEM與VAR檔 點選實驗三後顯示如下 選擇程式下載再按程式啟動這時直流伺服馬達開始做位置控制在操控畫面放置 P 參數設定欄更改參數時馬達即時隨參數改變而產生不同響應 直接點選程式停止時結束所有控制動作再按回首頁選擇其他實驗

21

6實驗說明

下圖所示為直流馬達的控制系統方塊圖透過電流速度以及位置的回授再搭

配適當的控制器可建立完整的閉迴路控制系統在後面的實驗中將依此一系統方塊圖

逐步建立速度和位置的控制實驗各實驗的說明和操作方式及參考實驗結果將逐一進

行詳細的說明

控制

參考位置

速度 位置速

度控制 電流控制

電力電

子換流

位置速

度感測

i

+ -

壓ν

位置

速度

i

DC直流馬達之控制系統方塊圖

PWM 驅動方式只是簡單的開環路控制而高精度的馬達控制必須透過回授控制來完成

對於邏輯電路的設計者而言必須先瞭解基本的回授控制架構以便將來轉換成實用的

邏輯電路設計

設計說明

開環路特性

在電壓驅動的狀況下直流馬達開環路控制的示意圖如下

+-

22

如果換算成數學模式則轉換成下面的架構

+-Vc

R L

EMF

+

-

ITB

J

ω

其中

1其中的變數和參數包括 Vc 控制的電壓命令 R 電樞迴路的等效電阻 L 電樞迴路的等效電感 EMF電樞產生的反電動勢 i 電樞迴路中的電流 T 馬達所產生的扭力 J 馬達和負載的等效慣量 B 馬達和負載的等效摩擦力 ω 馬達所產生的速度 2所牽涉的物理公式包括 電壓迴路Vc = Ri + L(didt) + EMF 即電樞迴路中的電壓平衡 動力負載T = Bω + J(dωdt) 即扭力平衡 馬達特性T = Kti 所產生的扭力和電流成正比 電機特性EMF= Keω 所產生的電動勢和轉速成正比 其中新增的參數包括 Kt馬達的扭力常數 Ke馬達的反電動勢常數 3將微分項作拉式轉換(Laplase Transformation)的對映即 s = ddt 可將微分方程式轉換成更簡單的代數方程式而產生到下面的控制方塊圖

sL+R1Vc

+-EMF

iKt

TsJ+B1 ω

Ke

4在直流馬達的開環路特性中控制電壓(Vc)時輸入點而馬達轉速(ω)是輸出點即是控制馬達電壓以控制馬達轉速

5基本上馬達的開環路特性是個兩階系統類似於低通濾波器的特性在許多應用 場合其開環路特性還可以再簡化成一階系統方塊圖如下

23

sτ +1

KmVc ω 其中 τ一階系統的時間常數 Km一階系統的穩態增益

採用兩階系統的分析方式雖然會比較精細但是用一階系統來分析則可簡化所有的設計

過程因為這裡的實驗重點是邏輯設計所以在本章中我們都用一階系統作分析

系統響應的要求

就控制系統而言最重要的需求就是系統響應包括

穩態特性通常以穩態誤差為指標即是穩態時系統輸出和輸入之間的差異 暫態特性通常以上升時間(Rise Time)和過越比率(Overshoot)為指標

一個理想中的伺服控制系統其系統響應應該是

1穩態誤差為 0即馬達輸出將追隨輸入作變化沒有誤差 2過越比例為 0即馬達輸出絕對不會產生衝過頭的現象 3上升時間為 0即馬達輸出隨時追上輸入命令不會有控制上的延遲現象

當然這是太理想了一個合理的伺服控制系統應該是

1穩態誤差越小越好最好為 0 2過越比例越小越好最好為 0 3上升時間越短越好當然無法為 0但是盡力就是了

速度的回授控制

回授控制的目的就是為了改善系統響應以一階系統代表的馬達控制為例

sτ+1

KmVc ω

在步階響應(Step Response)時其特性如下

1穩態誤差由 Km決定 2過越比例為 0 3上升時間即是其時間常數(τ)

如果用比例控制器(P 控制器)作速度回授的控制則控制方塊圖如下

sτ+1

KmVc ωKp

err

P控制器 直流馬達ωc

速度回授

速度命令 + 速度響應-

24

其中

1速度命令並不直接控制馬達的驅動電壓而是 A將速度命令和速度回授相比找出其誤差訊號 err B依誤差訊號來控制驅動電壓 誤差越大則驅動電壓越高 誤差越小則驅動電壓越低 誤差為負則驅動電壓也為負 其中的比例關係由 P控制器中的 Kp 來調整 2經由數學分析後其步階響應的特性為 A穩態誤差變成 1(1+kpkm)如果 kpkmgtgt1則穩態誤差將趨近於 0 B過越比例仍為 0 C上升時間即是由τ變成τ(1+kpkm)所以上升時間將變短 3換句話說只要 Kp值夠大不論是穩態誤差或是上升時間都會大幅改善

理論上P控制器的增益是越高越好最好是無限大但是實際上是有限制的原因是

1馬達的開環路特性是兩階系統而非一階系統一階系統只是簡化後的結果 2當兩階系統作高增益的回授控制時當增益過高時會產生極嚴重的過越現象使得

馬達產生巨幅震動而難以控制

所以 P控制器的增益雖然是越高越好但調整時仍要小心維持(過越比例為 0)的條件

轉角的回授控制

做為馬達的速度控制P控制器的效果不錯但是如果將 P控制器應用到馬達的轉角控

制其特性就不太理想圖示如下

sτ+1

KmVc ωKp

err

P控制器 直流馬達

θc

轉角回授

轉角命令 + 轉角響應-

s1 θ

其中

1從馬達的速度到轉角之間具有積分特性即 馬達的轉角是馬達速度的積分結果而 馬達的速度是馬達轉角的微分結果而 2其中的積分特性使得整個系統由一階特性變成兩階特性在兩階系統中當設定高

增益時會產生極嚴重的過越現象使得馬達產生巨幅震動而難以控制 3在 P控制器增益無法提高的狀況之下轉角控制效果將無法獲得改善

雖然 P控制器在轉角控制上的效果並不好但是在控制系統中還是有許多法寶可以選擇

25

其中 PD 控制器就是簡單又有效的一個好方法

從表面上來看PD 控制器比 P控制器多了一個微分項就數學上來看這微分項提供了

一個新零點(Zero)可以調整根軌跡圖的走向就實驗上來說這微分項提供了控制器

的預測功能說明如下

sτ+1

KmVc ωKp+sKd

err

P控制器 直流馬達

θc

轉角回授

轉角命令 + 轉角響應-

s1 θ

1轉角控制中 P控制器的問題是在嚴重的過越現象原因是在 P控制器的作用下只有當回授超過命令時才能做出「負向」的控制但這時已經來不及了因為積分器

中已經累積了過多的能量而無法立刻消失使得馬達轉角衝過了頭 2解決之道就是在回授超過命令之前就必須做出「負向」的控制使得積分器累積

的能量逐步減弱在到達目標時才能立刻煞車才能解除過越現象 3而微分項就是這個預測量因為當誤差量越來越小時其微分項是負值雖然微分

項(D)是負值 當誤差量(P)很大時(P+D)的結果還是正值所以還是「正向」控制 當誤差量(P)漸小時(P+D)的結果變成負值才會開始「負向」控制 換句話說在誤差為 0之前即可啟動負向控制產生煞車作用使得馬達提前減速

而即時停止在目標點上自然就解除過越現象了

所以在 PD 控制器中有兩項調整量其中

1Kp增益提供比例控制部分的增益而 Kd增益提供微分控制部分的增益 2Kp增益控制馬達的趨近速度主要影響的是上升時間 3Kd增益控制馬達的提前煞車主要影響的是過越比例 4在兩者搭配下就有機會得到 很快很短的上升時間同時也 不會產生過越現象

PD 控制器的執行

依據 PD 控制器公式可以建立以數位執行的 PD 控制器如下圖所示

cmdKp

fdk

+

-

err

old

+-

Kd

Z-1

out+

+

26

其中

1利用差分公式來取代 PD控制器中的微分公式定義如下 s ==gt (1-Z-1)DT 其中對映的變數包括 s 微分項 Z-1延遲一個抽樣週期 DT抽樣週期單位為 sec 2就執行面而言Z-1是延遲一個抽樣週期也就是以抽樣週期所控制的暫存器 3在上圖中將命令(cmd)和回授(fdk)相減後得到誤差值(err)再將 err延遲一個抽樣週期成為 old所以(err-old)DT即是微分項

4原始的微分控制公式為(err-old)DTKd必須先除再乘但是因為 DT和 Kd 都是常

數可以預先將 Kd修正成 Kd=(KdDT)那麼公式將修正為(err-old)Kd就只需要一個乘法而不需要除法了

同樣的 PD 控制器可以用許多不同的方法作執行包括

1以軟體方式執行例如在 DSP核心中以組合語言撰寫控制模組 2以硬體方式執行例如在 FPGA中直接設計邏輯電路 3以微碼方式執行以微碼作順序控制執行硬體運算工作

這裡先提供用組合語言撰寫的程式模組作為設計參考其他兩種方法將在後續的實驗中

再陸續作說明

模組程式範例PD_controlasm

local cmd R0 IP gnd 輸入點位置命令(可忽略) local fdk R1 IP gnd 輸入點位置回授(可忽略) local out R2 OP 輸出點用以控制速度迴路 local kp R3 256 參數增益 kp10=256 local kd R4 0 參數增益 kd10=256 local err R5 0 內部變數 local old R6 0 內部變數 local gnd R7 0 無輸入時的短路點 data 8 模組變數區長度 initial 開機啟動程序 WR out0 WR old0 RET out=old=0 timer 即時控制程序 RD (cmd) SUB (fdk) WR err MUL kp SFR 8 P=(cmd-fdk)kp256 RDS err SUBX old MUL kd SFR 8 D=(err-old)kd256 ADDS WR out out=P+D RET

27

其中

1PD控制模組中對外的界面變數包括 cmd命令的輸入點 fdk回授的輸入點 out控制的輸出點 2內部參數包括 Kp比例控制增益其中 10=256所以乘完後還需要再右移 8-bit Kd微分控制增益其中 10=256所以乘完後還需要再右移 8-bit 3內部變數包括 err臨時性的變數用以儲存誤差值的計算結果 old儲存性的變數用以儲存上一次抽樣控制時的 err值 4模組程式分成三部分包括 變數宣告local和data所宣告的部分 初值設定initial程序中先將 out和 old設定為 0 即時控制timer程序中依序執行 PD控制器中的每個步驟

控制目標的選擇

從字面上來看速度控制就是控制馬達的速度轉角控制就是控制馬達的轉角沒什麼

好討論的但是實際上確有許多問題第一的問題就是什麼是速度和轉角馬達的速

度和轉角如果不作量測如何得知

既然在量測中取得了速度和轉角資料那麼我們所控制的到底是物理學上的速度和轉

sτ+1

KmVc ωKp+sKd

err

P控制器 直流馬達

θc

轉角回授

轉角命令 + 轉角響應-

s1 θ

KxANG

轉角量測

角還是量測上的速度和轉角以下圖為例

其中

1以轉角量測裝置量測轉角例如裝在馬達軸端的光電盤和解碼電路 2轉角的量測輸出是 ANG而 ANG和物理轉角θ之間有 Km的增益關係 3只要 Km值不是 1那麼系統就不再是單位回授 4如果 Km還有非線性或失真現象那麼控制結果也將有非線性或失真現象

這些問題混雜起來會使得控制系統的分析變得更複雜如果要簡單處理就要認同現

實環境直接以量測結果為控制目標如下圖所示

28

sτ+1

KmVc ωKp+sKd

err

P控制器 直流馬達

θc

轉角回授

+-

s1 θ Kx

ANG轉角量測

其中

1直接以量測結果為控制目標將全系統還原成標準的單位回授控制 2所有的非線性或失真現象都進入開環路討論屬於可以補償的部分 3但是控制結果就是「量測上的轉角」而「物理學上的轉角」

量測誤差的問題

轉角θ

量測ANG

對於量測誤差而言最明顯的問題就是量化誤差圖示如下

其中

1以 DCM模組中的光電盤為例精度為每圈 500格經由乘四解碼計數後其等效

精度增加為每圈 2000格 2比(12000)圈更精密的部分都無法響應換句話說振幅越大的控制其相對誤差越

小而振幅越小的控制其相對誤差越大例如 當振幅為(12)圈時其控制誤差量為 01而 當振幅為(120)圈時其控制誤差量為 1 這是標準的的非線性現象

量化誤差不只影響穩態上的精度還會造成非線性的震動問題圖示如下

t

誤差值

+1

-1

其中

1由於量化誤差的問題只有當誤差超過+1或是-1時才會真正偵測到誤差也才

29

會施加控制量作補償 2所以穩態時的誤差將在+1-1之間擺動造成微幅的振動 3量化誤差越大震動越明顯而量化誤差很小時通常不易察覺出震動現象

微分量的計算

伺服系統中有兩處需要用到微分計算包括

1PD控制器中誤差微分量的計算 2速度控制器中速度回授值的量測

在理論上微分公式是(dXdt)相當於 dXdt = (X(n)-X(n-1))DT (當 DT趨近於 0時)

所以當微分計算中的抽樣週期(DT)越短時微分的計算值將越接近理論值但是事實上

卻非如此以下圖為例

t

X

DTDX

其中

1當 X值為等速度運動時其微分量就是其斜率相當於 DXDT 2DT是微分計算中的抽樣週期理論上越短越好但是由於 DX本身的量化誤差

使得這個原則不再成立例如當斜率為 7394時 若 DT=1000則 DX=7394而 DXDT=7394 若 DT=100 則 DX=739 而 DXDT=739 若 DT=10 則 DX=73 而 DXDT=73 若 DT=1 則 DX=7 而 DXDT=7 3換句話說當抽樣週期越短時DX的量化誤差將越明顯而造成微分計算上更嚴

重的誤差

在 DCM 模組中速度量測的量化誤差分析如下

1馬達上的光電盤精度為每圈 500格經過乘四解碼後等效精度為每圈 2000格 2當馬達轉速為 1200RPM而抽樣頻率為 1KHz時對映的速度量測值為 1200(圈分)2000(格圈)60(秒分)1000(DT秒) = 40(格DT) 3換句話說1200RPM的轉速對映到 40的速度量測值即速度單位=30RPM若最

高轉速為 3000RPM則在+-3000RPM的速度範圍內其量化誤差為 05相當於8-bit的 ADC轉換器精度

4對映不同的抽樣頻率的量化誤差表列如下

30

光電盤精度 最高轉速 抽樣頻率 速度單

速度範圍 量化誤差

500PPR 3000RPM 1KHz 30RPM +-100 05 500PPR 3000RPM 2KHz 60RPM +-50 1 500PPR 3000RPM 4KHz 120RPM +25 2

過溢現象的處理

輸入

輸出

32767

-32768

整數運算都有數值範圍限制以 16-bit 整數而言輸入輸出的關係如下

其中

1當超過正負數的上下限時數值會正負顛倒例如 +32768 將會視為 -32768作處理而 +32769 將會視為 -32768作處理依此類推 2換句話說16-bit的整數運算只有在+-32767之間是線性的對映關係而超過這個範圍就是非線性的對映關係

3不但如此還因為正負顛倒的現象使得原來設計的負回授控制將變為正回授控制

而產生非線性的震盪現象 4換句話說只要計算上稍一不慎就會使得原先穩定的系統產生不穩定的震盪結果

為了避免過溢現象所造成的不穩定問題通常控制系統中會利用飽和處理作改善圖示

如下

輸入

輸出

lmtH

lmtL

31

其中

1當超過計算的上限時將固定設為上限值處理而當超過計算的下限時也將固定

設為下限值處理 2這時的整數運算只有在上下限之間是線性的對映關係而超過這個範圍將還是非線

性的對映關係 3雖然如此但是因為沒有正負顛倒的現象所以不再會有負回授變為正回授的問題

而避免了非線性的震盪現象 4換句話說飽和處理是針對過溢現象的妥協處理方案雖然不完全理想但是是可

接受的最佳選擇

下面是對映的組合語言範例

RD x x為輸入端 MIN lmtH 取得 x和 lmtH中的較小值即是作上限保護的工作 MAX lmtL 取得 x和 lmtL中的較大值即是作下限保護的工作 WR y Y為輸出端 其中

1組合語言中提供MAX和MIN的計算其中 MIN lmtH 比較 AX暫存器和 lmtH而將較低值存入 AX暫存器中 MAX lmtL 比較 AX暫存器和 lmtH而將較高值存入 AX暫存器中 2所以直接可用MIN指令作上限保護而以MAX指令作下限保護兩者合併後即是

完整的飽和處理結果

飽和處理通常應用在高位數轉成低位數的場合例如32-bit轉換成16-bit或是16-bit

轉換成 12-bit 等等例如在本實驗中所有的運算都是以 16-bit 整數作處理但是到

PWM 驅動級輸出時卻要轉換成 12-bit精度的 PWM 命令所以必須先用飽和處理以避免

過溢現象造成的不穩定問題

32

61 實驗 1-開迴路的電壓控制 實驗說明以電壓直接控制轉速的開迴路特性可簡化為一階系統處理方塊圖如

sτ+1

v km ωm

其中V 送給驅動器的 PWM電壓命令

ωm馬達的轉動速度可由處理 photo encoder信號所得的位置微分而得 km一階系統的穩態增益 τ一階系統的時間常數即步階響應中的上升時間

為了觀測直流馬達的開環路特性建立下面的測試方塊圖

其中

1所使用的模組包括 FG1方波產生器產生所需的步階測試波形 FT1馬達模擬以一階系統的低通濾波器來執行 IO1光電盤的回授處理可同時取得轉角和速度的量測值 IO2PWM電壓驅動直接驅動直流馬達作控制 Led四位數字七段顯示模組顯示波形信號資料 2測試目標有兩項(P 參數設定欄)包括 A調整方波命令控制直流馬達作開環路的 PWM電壓控制 B調整馬達模擬參數使模擬結果和實驗結果相符以確認開環路特性

33

實驗畫面顯示如下

測試一 開環路的電壓控制 記錄頻道 CH1電壓命令Y1=-300DY=500 CH2模擬速度Y2=-100DY=500 CH3馬達速度Y3=100DY=50 CH4馬達轉角Y4=300DY=50000 實驗參數 FG1kAMP=256電壓命令的測試振幅 FG1kFRQ=150電壓命令的測試頻率 FT1DT =10 馬達模擬參數 FT1KA =500馬達模擬參數

其中

1用示波器功能記錄四個頻道其中 CH2和 CH3重疊顯示以比較模擬速度和量測

速度之間的差異 2由於 Km 不等於 1所以必須調整 CH3的 Y軸單位才能使得 CH2和 CH3的穩態響應部分重疊

3實驗時可以改變 FG1的參數以調整測試方波的振幅和頻率 4可以調整 FT1的參數使得 CH2和 CH3的暫態響應部分重疊

根據實際的測試結果分析如下

2馬達模擬的參數調整到 DT=10而 KA=500根據公式 τ = 40961000dtka 所以上升時間(τ)為 0082秒或是 82ms 3CH2CH3的 Y軸單位並不一致顯然 Km 不等於 1經計算確認 Km=0098

對應之 plc檔程式說明(exp_pwmplc) echo off 畫面顯示開始

run dsp 0 選擇 DSP1

run stop run reset 既有程式停止

run testDCMmem 下載指定程式

das 1 ampfg1out 0 1024 PWM 波形 Volt 設定 DAS 頻道1

das 2 ampft1lp 0 1024 馬達模擬 Volt 設定 DAS 頻道2

das 3 ampio1spd 0 1024 馬達速度 Volt 設定 DAS 頻道3

das 4 ampio1ang 0 1024 馬達角度 Volt 設定 DAS 頻道4

plot select 0 設定示波器頁數

plot xunit 100000 0 設定示波器 X軸

plot yunit 1 500 -300 設定示波器 Y1 軸

34

plot yunit 2 500 -100 設定示波器 Y2 軸

plot yunit 3 50 100 設定示波器 Y3 軸

plot yunit 4 50000 300 設定示波器 Y4 軸

plot trigger 1 0 1 10 設定示波器觸發

plot scope 9 1 2 3 4 設定示波器顯示

module io2 設定 io2 模組

s cmd ampfg1out

module fg1 設定 fg1 模組

s kAmp 256 s kFrq 150

module ft1 設定 ft1 模組

s u ampfg1out s dt 10 s ka 500

module io3 設定 io3 模組

s led ampfg1out

module 回復預設模組

run 1khz 設定抽樣頻率為 4KHz

run start DSP 開始執行

das stop pause 1 DAS 啟動 das start DAS 啟動

echo on 回復正常訊息顯示

使用者可視情況調整一階濾波器的 ka和 dt值使得 ch2和 ch3 兩組波形完全相符

以求得開迴路系統近似的一階轉移函數 CAI操控設計畫面規劃如下(EXP_PWMCAI) page 1 畫面設計

35

page 2 畫面設計 page 3 畫面設計

36

實測響應圖

訊 號 說 明 訊 號 說 明 ch1 方波產生器訊號 ch3 一階濾波器輸出信號 ch2 馬達角速度訊號 ch4 馬達角位置訊號

直流馬達之開迴路電壓控制響應圖

37

以邏輯分析功能觀測直流馬達之光電盤輸入與 PWM輸出信號

38

62 實驗 2-閉迴路的速度控制 實驗說明為了觀測閉迴路的速度控制響應建立下面的測試方塊圖

加入 PD控制後系統閉迴路的轉移函數經適度的簡化仍能約略以一階系統

處理方塊圖如下

sτ+1

u km ωm

其中

u 送給控制器的速度命令

ωm馬達的轉動速度可由處理 photo encoder 信號所得的位置微分而得

km一階系統的穩態增益 τ一階系統的時間常數即步階響應中的上升時間

方塊圖中的模組功能說明如下

1用 fg1 產生測試用的方波速度命令

2將方波速度命令和速度回授訊號送到 PD 控制器方塊中產生電壓控制訊號再透

過 io2 模組將訊號送出給伺服介面

3用 ft1 建立對照用的一階系統可用 IIR1濾波器方塊產生

4將方波命令產生速度命令再觀測 PHT(io1)上的速度值 spd

5調整 IIR1濾波器的參數使得兩組波形完全相符這時 IIR1濾波器就是閉迴路

速度控制的特性其中 km 為增益而τ為上升時間(單位為 sec)

6增益 km 可從示波器中作簡單計算而上升時間(τ=40964000dtka)

7 Led四位數字七段顯示模組顯示波形信號資料

39

對應之 plc檔程式說明(exp_speedplc) echo off 畫面顯示開始

run dsp 0 選擇 DSP1

run stop run reset 既有程式停止

run testDCMmem 下載指定程式

das 1 ampfg1out 0 1024 PWM 波形 Volt 設定 DAS 頻道1

das 2 ampft1lp 0 1024 馬達模擬 Volt 設定 DAS 頻道2

das 3 ampio1spd 0 1024 馬達速度 Volt 設定 DAS 頻道3

das 4 ampio1ang 0 1024 馬達角度 Volt 設定 DAS 頻道4

plot select 0 設定示波器頁數

plot xunit 100000 0 設定示波器 X軸

plot yunit 1 50 -300 設定示波器 Y1 軸

plot yunit 2 50 -100 設定示波器 Y2 軸

plot yunit 3 50 100 設定示波器 Y3 軸

plot yunit 4 50000 300 設定示波器 Y4 軸

plot trigger 1 0 1 10 設定示波器觸發

plot scope 9 1 2 3 4 設定示波器顯示

module io2 設定 io2 模組

s cmd ampcn2out

module fg1 設定 fg1 模組

s kAmp 50 s kFrq 150

module cn2 設定 cn1 模組

s cmd ampfg1out s fdk ampio1spd s kp 0x4000

module ft1 設定 ft1 模組

s u ampfg1out s dt 2 s ka 320

module io3 設定 io3 模組

s led ampfg1out

module 回復預設模組

run 1khz 設定抽樣頻率為 4KHz

run start DSP 開始執行

das stop pause 1 DAS 啟動 das start DAS 啟動

echo on 回復正常訊息顯示

CAI操控設計畫面規劃如下(EXP_speedCAI)

40

page 1 畫面設計 page 2 與 page 3 畫面設計與實驗一 page 2 與 page 3相同畫面 page 4 畫面設計

41

方塊的參數設定 使用者可視情況調整一階濾波器的 ka和 dt值使得 ch2和 ch3 兩組波形完全相符

以求得此一閉迴路系統近似的一階轉移函數或調整 PD控制器中的 kp和 kp值以調整系統之響應 實測響應圖

訊 號 說 明 訊 號 說 明 ch1 方波產生器產生之速度命令 ch3 一階濾波器輸出信號 ch2 馬達角速度訊號 ch4 馬達角位置訊號

42

直流馬達之閉迴路速度控制響應圖

43

63 實驗 3-閉迴路的位置控制 實驗說明為了觀測閉迴路的位置控制響應將直流馬達的回授改為位置訊號

建立下面的測試方塊圖 方塊圖中的模組功能說明如下

1用 fg1產生測試用的方波位置命令 2將方波位置命令和位置回授訊號送到 PD控制器方塊中產生電壓控制訊號再透過 io2模組將訊號送出到伺服介面驅動馬達轉動

對應之 plc檔程式說明(exp_angleplc) echo off 畫面顯示開始

run dsp 0 選擇 DSP1

run stop run reset 既有程式停止

run testDCMmem 下載指定程式

das 1 ampfg1out 0 1024 PWM 波形 Volt 設定 DAS 頻道1

das 2 ampft1lp 0 1024 馬達模擬 Volt 設定 DAS 頻道2

das 3 ampio1spd 0 1024 馬達速度 Volt 設定 DAS 頻道3

das 4 ampio1ang 0 1024 馬達角度 Volt 設定 DAS 頻道4

plot select 0 設定示波器頁數

plot xunit 100000 0 設定示波器 X軸

plot yunit 1 1000 -300 設定示波器 Y1 軸

plot yunit 2 1000 -100 設定示波器 Y2 軸

plot yunit 3 20 100 設定示波器 Y3 軸

plot yunit 4 1000 300 設定示波器 Y4 軸

plot trigger 1 0 1 10 設定示波器觸發

44

plot scope 9 1 2 3 4 設定示波器顯示

module io2 設定 io2 模組

s cmd ampcn2out

module fg1 設定 fg1 模組

s kAmp 1000 s kFrq 75

module cn2 設定 cn1 模組

s cmd ampfg1out s fdk ampio1ang s kp 0x300 s kd 0x4000

module ft1 設定 ft1 模組

s u ampfg1out s dt 2 s ka 320

module io3 設定 io3 模組

s led ampfg1out

module 回復預設模組

run 1khz 設定抽樣頻率為 4KHz

run start DSP 開始執行

das stop pause 1 DAS 啟動 das start DAS 啟動

echo on 回復正常訊息顯示

CAI操控設計畫面規劃如下(EXP_angleCAI) page 1 畫面設計

45

page 2 與 page 3 畫面設計與實驗一 page 2 與 page 3相同畫面 page 4 畫面設計與實驗二 page 4 畫面 方塊的參數設定 延續上一實驗的說明使用者可以調整 PD控制器中的 kp和 kd值以調整系統之

響應 實測響應圖

訊 號 說 明 訊 號 說 明 ch1 方波產生器產生之位置命令 ch3 馬達角速度訊號 ch2 馬達角位置 ch4 Pd控制器輸出之電壓訊號

46

直流馬達之閉迴路位置控制響應圖

47

64 實驗 4-加減速的位置控制 實驗說明為避免方波命令的過於嚴苛在方波命令的輸出加入一加減速控制功

能方塊以減緩命令變化的幅度增加馬達運動的平順建立的測試方塊圖如下

方塊圖中的模組功能說明如下

1用 fg1產生測試用的方波位置命令 2將方波位置命令送到加減速控制方塊處理後產生新的位置命令再將新的位置命

令與位置回授訊號送到 PD控制器方塊中產生電壓控制訊號最後透過 io2模組將訊號送出到伺服介面驅動馬達轉動

對應之 plc檔程式說明(exp_accplc) echo off 畫面顯示開始

run dsp 0 選擇 DSP1

run stop run reset 既有程式停止

run testDCMmem 下載指定程式

das 1 ampfg1out 0 1024 PWM 波形 Volt 設定 DAS 頻道1

das 2 ampcn1out 0 1024 加速控制 Volt 設定 DAS 頻道2

das 3 ampio1spd 0 1024 馬達速度 Volt 設定 DAS 頻道3

das 4 ampio1ang 0 1024 馬達角度 Volt 設定 DAS 頻道4

plot select 0 設定示波器頁數

plot xunit 100000 0 設定示波器 X軸

plot yunit 1 2000 -300 設定示波器 Y1 軸

plot yunit 2 2000 -100 設定示波器 Y2 軸

plot yunit 3 50 100 設定示波器 Y3 軸

plot yunit 4 2000 300 設定示波器 Y4 軸

48

plot trigger 1 0 1 10 設定示波器觸發

plot scope 9 1 2 3 4 設定示波器顯示

module io2 設定 io2 模組

s cmd ampcn2out

module fg1 設定 fg1 模組

s kAmp 2000 s kFrq 150

module cn1 設定 cn1 模組

s cmd ampfg1out

module cn2 設定 cn2 模組

s cmd ampcn1out s fdk ampio1ang s kp 0x300 s kd 0x4000

module ft1 設定 ft1 模組

s u ampfg1out s dt 2 s ka 320

module io3 設定 io3 模組

s led ampfg1out

module 回復預設模組

run 1khz 設定抽樣頻率為 4KHz

run start DSP 開始執行

das stop pause 1 DAS 啟動 das start DAS 啟動

echo on 回復正常訊息顯示

CAI操控設計畫面規劃如下(EXP_accCAI) page 1 畫面設計

49

page 2 畫面設計與實驗一 page 2相同畫面 page 3 畫面設計與實驗二 page 4相同畫面

參數設定參考之前各實驗的說明可線上機動性的調整 PD控制器中的 kp和 kd值以調整系統之響應 實測響應圖

訊 號 說 明 訊 號 說 明 ch1 方波產生器產生之位置命令 ch3 馬達角位置 ch2 加減速模組輸出之位置命令 ch4 馬達角速度訊號

50

圖一 直流馬達經加減速控制後之閉迴路控制響應圖

51

65 實驗 5-正弦波的位置控制 實驗說明在本實驗中改變命令的波形由方波改變為正弦波並建立如下的測

試方塊圖與上一實驗相比較僅更改命令的波形產生方塊 方塊圖中的模組功能說明如下 1用 fg2產生測試用的弦波位置命令 2將弦波位置命令送到加減速控制方塊處理後產生新的位置命令再與 io1 讀入的位

置回授訊號送到 PD 控制器方塊中產生電壓控制訊號再透過 io2 模組將訊號送出到伺服介面驅動馬達轉動

對應之 plc檔程式說明(exp_sinplc) echo off 畫面顯示開始

run dsp 0 選擇 DSP1

run stop run reset 既有程式停止

run testDCMmem 下載指定程式

das 1 ampfg2out 0 1024 SIN 波形 Volt 設定 DAS 頻道1

das 2 ampcn1out 0 1024 加速控制 Volt 設定 DAS 頻道2

das 3 ampio1spd 0 1024 馬達速度 Volt 設定 DAS 頻道3

das 4 ampio1ang 0 1024 馬達角度 Volt 設定 DAS 頻道4

plot select 0 設定示波器頁數

plot xunit 100000 0 設定示波器 X軸

plot yunit 1 2000 -300 設定示波器 Y1 軸

plot yunit 2 2000 -100 設定示波器 Y2 軸

plot yunit 3 50 100 設定示波器 Y3 軸

plot yunit 4 2000 300 設定示波器 Y4 軸

plot trigger 1 0 1 10 設定示波器觸發

52

plot scope 9 1 2 3 4 設定示波器顯示

module io2 設定 io2 模組

s cmd ampcn2out

module fg2 設定 fg1 模組

s kAmp 2000 s kFrq 100

module cn1 設定 cn1 模組

s cmd ampfg2out

module cn2 設定 cn2 模組

s cmd ampcn1out s fdk ampio1ang s kp 0x300 s kd 0x4000

module ft1 設定 ft1 模組

s u ampfg2out s dt 2 s ka 320

module io3 設定 io3 模組

s led ampfg2out

module 回復預設模組

run 1khz 設定抽樣頻率為 4KHz

run start DSP 開始執行

das stop pause 1 DAS 啟動 das start DAS 啟動

echo on 回復正常訊息顯示

CAI操控設計畫面規劃如下(EXP_sinCAI) page 1 畫面設計

53

page 2 畫面設計 page 3 畫面設計與實驗二 page 4相同畫面

方塊的參數設定可調整 PD控制器中的 kp和 kd值以調整系統之響應 實測響應圖

訊 號 說 明 訊 號 說 明 ch1 弦波產生器產生之位置命令 ch3 馬達角位置訊號 ch2 加減速模組輸出之位置命令 ch4 馬達角速度訊號

54

直流馬達之閉迴路弦波加減速位置控制響應圖

55

7組合語言說明

本節將針對 DC馬達伺服控制實驗專用的程式模組進行功能與程式碼的說明其

有關於波形產生器與資料擷取模組等說明如下

SIN_waveasm 正弦波產生器 PWM_waveasm 方波產生器 IIR1_filterasm 一階濾波器 DAS4asm 資料蒐集模組

弦波產生器

此模組會產生週期性的正弦波方塊圖如下

outfrq

kBiasbias

ampkAmp

kFrqth

kThf=1TB

θ

A

其中

1正弦波有四個參數振幅(A)頻率(F)相位(θ)和偏移(B)其公式為 out = A sin(2πF t +θ) + B 2對於單純的正弦波產生器所對映的參數包括 kAmp 振幅值 kFrq 頻率值kFrq=655368000Hz其中 Hz的範圍為 0~4000例如 1000Hz =gt frq=8192 100Hz =gt frq=819 10Hz =gt frq=82 1Hz =gt frq=8 kTh 相角值0~255代表 0~360的相位當 th=0 時為正弦波 th=64 時為餘弦波 th=128時為反相波依此類推 kBias偏移值 3對於可調變的正弦波產生器其對映的輸入點為 amp 控制振幅的輸入點可產生調幅(AM)波形 frq 控制頻率的輸入點可產生調頻(FM)波形 th 控制相位的輸入點可產生調相(PM)波形 bias控制偏移的輸入點可產生雙頻混波(相加)波形 4若不使用調變功能時各個輸入點時的預設值為 amp 指向 kAmp 的位址 frq 指向 kFrq 的位址

56

th 指向 kTh 的位址 bias指向 kBias的位址

模組程式範例SIN_WAVEasm

local amp R0 IP kAmp 輸入點sin波的振幅 local frq R1 IP kFrq 輸入點sin波的頻率 local th R2 IP kTh 輸入點sin波的相角 local bias R3 IP kBias 輸入點sin波的中心偏移 local out R4 OP 輸出點sin波輸出 local tab R5 TP 表格指標指向 sin[256]的表格 local ang R6 內部變數相位角65536=360deg local kAmp R7 1000 參數振幅值 local kFrq R8 1000 參數頻率值=655368000Hz local kTh R9 0 參數相角值360deg=256 local kBias R10 0 參數偏移值 data 11 模組變數區長度及初值 initial 啟動程序 WR ang0 WR out0 ang=out=0 RET timer 即時控制程序(8KHz) RD ang ADD (frq) WR ang ang+=frq SFR 8 ADD (th) AND 255 ACC=sin(ang256+th) ADD tab WRH RDM table-look-up MUL (amp) SFR 12 ADD (bias) WR out out=ACCamp4096+bias RET table tab 256 sin[256]表格區10=4096 0 101 201 301 401 501 601 700 00~070deg 799 897 995 1092 1189 1285 1380 1474 08~0F 1567 1660 1751 1842 1931 2019 2106 2191 10~17 2276 2359 2440 2520 2598 2675 2751 2824 18~1F 2896 2967 3035 3102 3166 3229 3290 3349 20~27 3406 3461 3513 3564 3612 3659 3703 3745 28~2F 3784 3822 3857 3889 3920 3948 3973 3996 30~37 4017 4036 4052 4065 4076 4085 4091 4095 38~3F 4096 4095 4091 4085 4076 4065 4052 4036 40~4790deg 4017 3996 3973 3948 3920 3889 3857 3822 48~4F 3784 3745 3703 3659 3612 3564 3513 3461 50~57 3406 3349 3290 3229 3166 3102 3035 2967 58~5F

57

2896 2824 2751 2675 2598 2520 2440 2359 60~67 2276 2191 2106 2019 1931 1842 1751 1660 68~6F 1567 1474 1380 1285 1189 1092 995 897 70~77 799 700 601 501 401 301 201 101 78~7F 0 65435 65335 65235 65135 65035 64935 64836 80~87180deg 64737 64639 64541 64444 64347 64251 64156 64062 88~8F 63969 63876 63785 63694 63605 63517 63430 63345 90~97 63260 63177 63096 63016 62938 62861 62785 62712 98~9F 62640 62569 62501 62434 62370 62307 62246 62187 A0~A7 62130 62075 62023 61972 61924 61877 61833 61791 A8~A8 61752 61714 61679 61647 61616 61588 61563 61540 B0~B7 61519 61500 61484 61471 61460 61451 61445 61441 B8~BF 61440 61441 61445 61451 61460 61471 61484 61500 C0~C7270deg 61519 61540 61563 61588 61616 61647 61679 61714 C8~CF 61752 61791 61833 61877 61924 61972 62023 62075 D0~D7 62130 62187 62246 62307 62370 62434 62501 62569 D8~DF 62640 62712 62785 62861 62938 63016 63096 63177 E0~E7 63260 63345 63430 63517 63605 63694 63785 63876 E8~EF 63969 64062 64156 64251 64347 64444 64541 64639 F0~F7 64737 64836 64935 65035 65135 65235 65335 65435 F8~FF

就程式結構而言說明如下

timer 即時控制程序(8KHz) RD ang ADD (frq) WR ang ang+=frq SFR 8 ADD (th) AND 255 ACC=sin(ang256+th) ADD tab WRH RDM table-look-up MUL (amp) SFR 12 ADD (bias) WR out out=ACCamp4096+bias RET

1基本上我們以查表法計算 sin()其輸入θ的範圍為 0~255對映到 0~360deg其輸出 sin(θ)的範圍為+-4096對映到+-10的範圍

2建立一個內部變數 ang其範圍為 0~65535對映到 0~360的相位角 3每個timer程序都執行 ang+=frq的動作更新目前的相位角接著依照 ang的相位角查表得到 sin(ang256+th)值

4由於表格長度為 256-word所以必須將 ang256才能得到正確的對映關係而 th範圍為 0~255所以不需要像 ang一般的做額外處理

5sin()的範圍為(+1-1)而在表格中以(+4096~-4096)的型式記錄相當於 10=4096所以執行 Asin()時還要用 SFR12指令做4096的動作才能正確的取得輸出值

58

6就頻率輸入 frq而言其計算原則是將θ=ωt轉化成θ=Σ(ωdt)因為抽樣頻率

為 8KHz所以 dt=18000而得到 frq=655368000Hz公式其中 Hz為真正的頻率在 8KHz的抽樣頻率下其範圍為 0~4000

鋸齒波產生器

此模組會產生週期性的鋸齒波方塊圖如下

outfrq

kBiasbias

ampkAmp

kFrqth

kThf=1TB

θ

A

其中

1鋸齒波也有四個參數振幅(A)頻率(F)相位(θ)和偏移(B)和正弦波的定義完全一致唯一的差異是其輸出為鋸齒波而非正弦波

2基本波形是從週期開始時為 0一直遞增到週期結束時到達最高點然後立刻回歸

到 0重新開始 3以程式結構而論鋸齒波程式幾乎就是正弦波的相位計算部分只差沒有正弦波的

查表處理而已

模組程式範例SAW_WAVEasm

local amp R0 IP kAmp 輸入點sin波的振幅 local frq R1 IP kFrq 輸入點sin波的頻率 local th R2 IP kTh 輸入點sin波的相角 local bias R3 IP kBias 輸入點sin波的中心偏移 local out R4 OP 輸出點sin波輸出 local ang R5 內部變數相位角65536=360deg local kAmp R6 1000 參數振幅值 local kFrq R7 1000 參數頻率值=655368000Hz local kTh R8 0 參數相角值360deg=256 local kBias R9 0 參數偏移值 data 11 模組變數區長度及初值 initial 啟動程序 WR ang0 WR out0 ang=out=0 RET timer 即時控制程序(8KHz) RD ang ADD (frq) WR ang ang+=frq SFR 8 ADD (th) AND 255 ACC=(ang256+th)amp0x00ff MUL (amp) SFR 8 ADD (bias) WR out out=ACCamp256+bias

59

RET

脈衝波產生器

outfrq

kBiasbias

ampkAmp

kFrqth

kThf=1TB

θ

A

pwm

kDutyduty

此模組會產生週期性的脈衝波方塊圖如下

其中

1脈衝波有五個參數其中振幅(A)頻率(F)相位(θ)和偏移(B)四個參數和正弦波

定義完全一樣另外再增加一個負載率(D) 2基本波形是從週期開始時為 1隔段時間後換為 0然後持續到週期結束再重新開始其中 1所佔有的比例就是負載率當 D=0時為 0而 D=255時為 100

3和其他參數類似負載率(D)以 duty為其輸入點而以 kDuty為其參數值

模組程式範例PLS_WAVEasm

local amp R0 IP kAmp 輸入點脈衝波的振幅 local frq R1 IP kFrq 輸入點脈衝波的頻率 local th R2 IP kTh 輸入點脈衝波的相角 local bias R3 IP kBias 輸入點脈衝波的中心偏移 local duty R4 IP kDuty 輸入點脈衝波的負載率 local out R5 OP 輸出點脈衝波輸出 local ang R6 內部變數相位角65536=360deg local kAmp R7 1000 參數振幅值 local kFrq R8 1000 參數頻率值=655368000Hz local kTh R9 0 參數相角值360deg=256 local kBias R10 0 參數偏移值 local kDuty R11 128 參數負載率100 =256 data 12 模組變數區長度及初值 initial 啟動程序 WR ang0 WR out0 ang=out=0 RET timer 即時控制程序(8KHz)

60

RD ang ADD (frq) WR ang ang+=frq SFR 8 ADD (th) AND 255 ACC=(ang256+th)amp0x00ff SUB (duty) RD (amp) JLT t1 RD 0 ACC=(amp0) t1 ADD (bias) WR out out=ACC+bias RET

IIR 一階濾波器

此模組執行一階的 IIR濾波器方塊圖如下

kau x

Z-1

+

+

-

+低通濾波器

高通濾波器dx lp

hp

濾波器參數的計算公式如下

1假設濾波器的頻寬為 hz則 ωn=hz628 2若系統頻率為 8KHz則抽樣週期 dT為 dT=dt8000 其中 dt為模組參數 3則濾波器參數為 ka=ωndT4096或是 =hzdt62880004096即 =hzdt32 4當 dt決定後所允許的訊號頻寬為(4000dt)換句話說訊號頻寬會因為 dt增加而下降

為了方便實驗的運用下面列出常用的參數對照表

濾波頻寬

(Hz)

10 20 50 100 200 500 1000 2000

訊號頻寬

(Hz)

400 800 2000 4000 4000 4000 4000 4000

模組參數 dt 10 5 2 1 1 1 1 1

模組參數 ka 320 320 320 320 640 1600 3200 6400

表格的運用方式如下

1首先決定濾波頻寬 2接著查表找出對映的參數 dt和 ka 3再查表得到對映的訊號頻寬以決定是否需要串接前級濾波器

61

模組程式範例IIR1_FILTERasm

local u R0 IP 輸入點濾波器輸入 local lp R1 OP 輸出點低通濾波器輸出 local hp R2 OP 輸出點高通濾波器輸出 local dt R3 1 參數抽樣週期 local ka R4 4096 參數增益 ka10=4096 local prd R5 內部變數抽樣週期用 data 6 模組變數區長度 initial 開機啟動程序 WR lp0 WR hp0 WR prd1 RET lp=hp=0prd=1 timer 即時控制程序 SUB prd1 JNZ b9 if (--prdgt0) return RD dt WR prd prd=dt RD (u) SUB lp WR hp hp=u-lp MUL ka SFR 12 ADD lp WR lp lp+=(hpka4096) b9 RET

資料蒐集模組

資料蒐集模組是一個非常特殊的模組專門配合 eTTY 程式中的示波器使用

模組程式範例DAS4asm

local cmd R0 0 紀錄命令0=停止1=前置記錄2=正觸發4=負觸發6=觸發記錄 local dt R1 1 抽樣週期每 dT抽樣一次 local tab R2 TP DAS表格啟始位址 local cnt R3 0 目前記錄點(0~255) local ch1 R4 0 定義頻道1的變數位址 local ch2 R5 0 定義頻道2的變數位址 local ch3 R6 0 定義頻道3的變數位址 local ch4 R7 0 定義頻道4的變數位址 local trg R8 0 定義觸發頻道的變數位址 local th R9 0 觸發準位 local tail R10 0 觸發後的抽樣個數 local buf R11 1 抽樣計數(1~dt) local pnt R12 表格位址計算pnt=tab+cnt4 local len R13 表格長度計算(0~256) data 14 定義模組變數區的長度 table tab 1024 定義表格的長度 initial 啟動程序 WR cmd0 RET cmd=0 timer 控制程序

62

ADD cmd0 JZ t9 if (cmd==0) return SUB buf1 JNZ t9 if (--buf)gt0) return RD dt WR buf dt=buf RD cnt ADD 1 AND 0xff WR cnt cnt=(cnt+1)amp0xff SFL 2 ADD tab WR pnt pnt=tab+cnt4 RD (ch1) WR (pnt) ADD pnt1 pnt++=ch1 RD (ch2) WR (pnt) ADD pnt1 pnt++=ch2 RD (ch3) WR (pnt) ADD pnt1 pnt++=ch3 RD (ch4) WR (pnt) pnt =ch4 RD cmd SUB 1 JZ t9 SUB 1 JZ t2 SUB 1 JZ t3 SUB 1 JZ t4 SUB 1 JZ t5 SUB 1 JZ t6 JR t7 t2 RD (trg) SUB th JGE t9 ADD cmd1 JR t9 wait trgltth t3 RD (trg) SUB th JLE t9 JR t6 wait trggtth t4 RD (trg) SUB th JLE t9 ADD cmd1 JR t9 wait trggtth t5 RD (trg) SUB th JGE t9 JR t6 wait trgltth t6 WR len0 WR cmd7 len=0cmd=7 t7 ADD len1 SUB tail JLT t9 WR cmd0 if ((++len)gt=0x80) cmd=0 t9 RET

與 DC 馬達控制相關的程式模組有以下 4個程式模組說明如下

(1)加減速控制模組 ACC_controlasm (2)光電盤輸入模組 POS_inputasm (3)PWM輸出模組 PWM_outputasm (4)PD控制模組 PD_controlasm

71加減速控制模組 此程式模組主要功能在於執行位置控制的加減速命令修正其數學模式採用 Lynn

濾波器的架構參見下圖

cmd

2

+

old Z -1

-

Z -1

Z -1

Z-1

Z-1x0 x1 x8 x9 x16

+ -

++

2

Z-1

Z-1 y1 y2

+

-

y0

+ +

sumZ-1

+164

12

out

dif

+

63

加減速控制模組方塊圖

其中

1Lynn 濾波器的階數固定成八階也就是 m=8其公式為 H(z) = (1-2Z-m+Z-2m)(1-2Z-1+Z-2)m2

2因為m=8所以m2=64因此最後計算低通濾波的部份時要先做除 64的運算 3因為低通濾波(lp)和 y0之間有 64倍的差異代表 y0y1y2的變化範圍比濾波器輸

入值要擴大許多例如輸入值在+-1000變化時y0y1y2很可能會在+-64000之間變化這範圍已經超出整數處理的範圍很可能會造成錯誤的計算結果

4所以在實驗時輸入值的變化範圍必須控制在+-500之間以保證計算的正確性 5對於 Lynn 濾波器當 m=8時其濾波器的頻寬固定為 1 kHzmdt也就是 dt=1時頻寬為 125 Hz dt=2時頻寬為 625Hz依此類推 6對於 Lynn 濾波器其濾波器的延遲固定為 m個抽樣週期因此設計 hp = x8 - lp 即可得到高通濾波器的對應結果 7其中乘 2和除 64的運算以移位運算取代所以整個程式中並無任何乘法運算 8Lynn 濾波器本身並不是穩定濾波器所以在程式啟動時必須確實的將所有狀態

(x0~x16)歸零否則會產生不穩定的狀態輸出

因為 Lynn濾波器中所有參數固定所以除了抽樣週期 dt 之外並無任何可調參數

抽樣週期 dt 可以控制頻寬dt 越大則濾波器頻寬越低

將步階命令值的輸出送入 Lynn 濾波器中經由低通濾波器的效應可以減緩命

令的變化程度達到加減速控制的目的以下為使用 Lynn 濾波器型式實現加減速控

制的組合語言程式列印 如欲更進一步瞭解 Lynn 濾波器與 FIR 數位濾波器之間的關係可以參考通訊實驗

四數位濾波器設計(FIR)中之說明

ACC_controlasm程式列印 local cmd R0 IP 輸入點位置命令

local out R1 OP 輸出點加減速處理後的位置命令

local dif R2 OP 輸出點位置微分命令

local axis R3 0 馬達編號0=X1=Y2=Z3=C

local old R4 內部變數微分計算用

local sumL R5 內部變數積分計算用

local sumH R6 內部變數積分計算用

local y0 R7 內部變數y(0~2)

local y1 R8 local y2 R9

local x0 R10 內部變數x(0~16)

local x1 R11 local x2 R12 local x3 R13 local x4 R14

local x5 R15 local x6 R16 local x7 R17 local x8 R18

local x9 R19 local x10 R20 local x11 R21 local x12 R22

local x13 R23 local x14 R24 local x15 R25 local x16 R26

64

data 27 模組變數區長度

initial 開機啟動程序

WR dif0 RD (cmd) WR out WR old dif=0 out=old=cmd

sumHL=cmd64

SFL 6 WR sumL RD out SFR 10 SGN 5 WR sumH

RPT 17 WR x00 RPT 3 WR y00 RET x[0~16]=0y[0~2]=0

timer 即時控制程序

RD (cmd) SUBX old WR x0 x0=cmd-old old=cmd

SUB x81 ADD x16 ADD y11 SUB y2 WR y0 y0=x0-2x8+x16+2y1-y2

SGN ADD sumL WR sumL RDH ADC sumH WR sumH sumHL+=y0

WRH RD sumL SFR 6 WR out out=sumHL64

RD y0 SGN SFR WR dif dif=y032mm

RD x0 RPT 16 RDX x1 x[i]=x[i-1] i=1~16

RD y0 RDX y1 WR y2 y[i]=y[i-1] i=1~2

b9 RET

72光電盤輸入模組

DC馬達的位置由光電盤量測之預設儲存於 0xac與 0xbe二個輸入埠位址中其中位址 0xac記錄 X軸馬達的位置位址 0xbe記錄 Y軸馬達的位置由於本實驗的DC馬達接在 Y軸的位置上因此程式中直接選用 Y軸的輸入 光電盤位置輸入的程式列印如下其中速度由位置的差分而得至於馬達的位置

則使用內部 2個 word加以記錄精度為 32位元 POS_inputasm程式列印 local spd R0 OP 輸出點速度量測值

local ang R1 OP 輸出點角度量測值

local angH R2 內部變數角度的 32 位元部分

local mode R3 0x308 模式選擇15MHzAB 相正反向輸入

local pht R4 0xac 輸入阜地址光電盤輸入(0xac)

local phtc R5 0xbe 輸入阜地址光電盤模式(0xbe)

local old R6 內部變數速度更新用

data 7 模組變數區長度

initial 開機啟動程序

RD mode WR (phtc) phtc=mode

RD (pht) WR old WR spd0 RET old=phtspd=0

timer 即時控制程序

RD (pht) SUBX old SGN 11 WR spd spd=(pht-old)old=pht

65

ADD ang WR ang angHL+=spd

RDH ADC angH WR angH

RET

73 PWM輸出控制模組 模組方塊

cmd PWM輸出

程式說明 1在開機時將切換保護時間寫到輸出阜 0xbc上其中切換保護值為 0~6360=5us 2在每次 timer interrupt時將 cmd訊號處理後寫到輸出阜 0xb8上

PWM_outputasm程式列印 local cmd R0 IP gnd 輸入點v相命令

local gain R1 4096 參數輸出增益1=4096

local bias R2 2048 參數輸出偏壓0=2048

local limit R3 4095 參數輸出極限1=4095

local zone R4 0x88f0 參數頻率=12KHz切換保護=5us

local pwm R5 0xb8 輸出阜地址PWM0 輸出(0xb8)

local mode R6 0xbc 輸出阜地址PWM 模式(0xbc)

local p0md R7 0xf8 輸出阜地址port0 模式(0xf8)

local gnd R8 0 輸入接地點

data 9 模組變數區長度

initial 開機啟動程序

RD bias WR (pwm) pwm=bias

RD 0xffff WR (p0md) set port0 mode

RD zone WR (mode) RET mode=zone

stop 關機保護程序

RD bias WR (pwm) RET pwm=bias

timer 即時控制程序

RD (mode) xor 1 and 1 WR (mode) trigger watch-dog

RD (cmd) MUL gain SFR 12 ADD bias ACC=(cmdgain4096)+bias

MAX 0 MIN limit WR (pwm) pwm=limit(ACC)

RET

66

74 PD 控制模組

PD控制的模組方塊參見圖二十一所示其中比例控制的部份直接由增益 kp加以調整微分控制的部份則由誤差的差分經增益 kd的調整而得

Σ+

-

cmd

fdk

err out

Σ

pk

dk

Σ

+

+

+

-

old1minusZ

PD控制器的方塊圖

PD_controlasm程式列印 local cmd R0 IP gnd 輸入點位置命令(可忽略)

local fdk R1 IP gnd 輸入點位置回授(可忽略)

local out R2 OP 輸出點用以控制速度迴路

local kp R3 256 參數增益 kp10=256

local kd R4 0 參數增益 kd10=256

local err R5 0 內部變數

local old R6 0 內部變數

local gnd R7 0 無輸入時的短路點

data 8 模組變數區長度

initial 開機啟動程序

WR out0 WR old0 RET out=old=0

timer 即時控制程序

RD (cmd) SUB (fdk) PRTF WR err

MUL kp SFR 8 P=(cmd-fdk)kp256

RDS err SUBX old MUL kd SFR 8 D=(err-old)kd256

ADDS

WR out out=P+D

RET

程式中預設增益值的 10以整數值 256為基底因此使用 SFR 8的指令加以調

整另外在在計算微分項的程式部份用到 SUBX old的指令其詳細的暫存器動作如

下 參考 piDSP的指令說明SUBX指令將總共用到 3個時序參考錯誤 找不到參照

67

來源在時序 1時將原先 AX的資料拷貝一份到 HX中時序 2時正式執行減

法的動作所以 AX暫存器中的內容會變成 err-old時序 3時DSP會將存放在 HX暫存器中的內容拷貝一份到 old的記憶體中也就是經由 SUBX此一精簡指令將

同時完成計算差分所需要的相減與資料疊代的動作有效的利用 piDSP控制器 DSP核心的精簡指令將可以大幅提昇系統的計算速度

HX AXoldSUBXerr err

old

err

errerr olderr minus

1_err

errerr olderr minus err

1_err

1

2

3

SUBX的指令時序與暫存器變化

68

8附錄快速安裝說明

光纖網路通訊 FPGA 發展系統 (適用於 WIN-XP200098 系統)

快速安裝說明

26Pin 負載輸出入埠

雙電源︵5

12

伏︶輸入埠

單電源︵5

伏︶輸入埠

USB

光纖線輸

號 光纖線輸出埠

入 傳 埠

首先將光碟片 RFFPGA 目錄檔案拷貝在您工作硬碟裡面

第一次安裝時先將 USB 傳輸線接上電腦主機將電源供應器接上 FPGA 模組此時電

腦會出現安裝 USB-Serial 驅動程式選擇從清單安裝此驅動程式放置在光碟片

RFFPGA-USBdrive 選擇您目前安裝系統

可選擇 WIN-98WIN-MEWIN-2000WIN-XP 系統配合您現在工作電腦作業系統

69

注意一般電腦 USB 埠很多插口當您安裝驅動程式時是配合您當時插入之埠

下次如您插入不同接口埠時電腦會再次要求安裝驅動程式這是正常現象請再次安

裝驅動程式否則無法使用

FPLC 操作

首先進入 RFFPGA裡子目錄 testASM直接點選 fPLCexe 出現下面操作畫面(也可直接將

此檔案放置桌面直接點選)

(或者選擇 File 再執行 Setuphellip 選擇您要執行 CAI 檔)

70

進入下面操作畫面 首先使用滑鼠在 FPGA下載按鈕單擊動作使 FPGA變成 DSP晶片 實驗一至實驗五皆為使用 DSP組合語言設計程式其原始程式分別為 testASM1至testASM5可使用 texPad 開啟與編輯程式內容 實驗三與實驗五多有 IO控制動作 當選擇實驗三時出現下面畫面

71

eM_USB 模組

數字型 LED

0 1 2 34 5 6 78 9 A BC D E F

燈號型 LED

44 鍵盤

ADC0 ADC1 DAC0 DAC1

LED 選擇KEY 選擇

模 式 1

0123

注意操作畫面 3與 4 說明開關與按鍵選擇位置後選擇程式下載再按程式啟動如您

按下 0-3按鍵時燈號型 LED會有不同方向閃爍顯示程式停止時結束所有 IO控制動作再按回首頁選擇其他實驗 實驗四與實驗五

模式3

0 1 2 34 5 6 78 9 A BC D E F

按照上面開關選擇直接操作如果以上實驗皆能按照正常操作表示您光纖網路通訊

FPGA發展模組以能正常使用 注意 開機與關機動作順序如下

開機電腦啟動 --- eM_USB 模組電源接上 --- USB 接上電腦 ---

啟動 FPLC 軟體 --- 下載 FPGA 程式

關機關閉 FPLC 軟體 --- eM_USB 模組電源拔掉 --- 拔掉電腦 USB 接頭 ---關掉

電腦

如果以上順序有亂可能造成 USB 找不到驅動造成無法下載經過幾次測試還是

無法下載建議重新啟動電腦主機按照正確步驟操作

72

FPGA 下載操作

進入 FPLC 操作系統按照下列步驟選擇節點模組與下載 bit FPGA 檔案

在 VHDLDEMO 子目錄下您可以選擇您目前 FPGA 種類型號在此型號下我們已將 VHDL

與數位邏輯設計課本範例全部放於此處

73

光纖網路連線 FPGA 下載操作

首先利用光纖線將 eM_USB0 模組光纖輸出埠接至 eM_USB1 模組光纖輸入埠以此

類推最後再將最後 eM_USBN 模組光纖輸出埠接至 eM_USB0 模組光纖輸入埠配置

如附圖方式

個人電腦(Windows) eM_USB模組

0USB

eM_USB模組1

光纖網路

eM_USB模組2

eM_USB模組N

配置完成後進入 FPLC 系統首先必須先將 Node00 下載在 testASM 子目錄裡

piDSPv0bit 檔讓 eM_USB0 模組 FPGA 具備 DSP 功能才能執行光纖網路通訊

操作如下

此時您就可以選擇分別下載至各模組 FPGA 檔 bit

74

安裝 FPLC 注意事項

當您進入 FPLC 時

按 FILE 選擇 programhellip 選擇檔案為 exp_dcmplc 出現下面畫面

正常顯示畫面為

75

DOS 環境操作

在 PC 端的操作是在 Windows 環境中的 DOS 視窗中執行指令範例如下

eFPGA progNETbit 下載 FPGA電路至網路節點0(即 USB節點)中 eFPGA testLEDbit 1 下載 FPGA電路至網路節點1中

對於單一節點的控制程序如下

1將 eM_USB模組連結個人電腦的 USB端 2eM_USB模組開機 3執行下載指令即可 eFPGA xxxxbit 4若要更改 FPGA電路只要重新執行下載指令即可

對於多個網路節點的控制程序如下

1第一組 eM_USB模組連結個人電腦的 USB端再以光纖網路依序其他各節點 2連接 USB界面者為模組0從光纖發射端連接出去的模組為1依此類推 3將所有 eM_USB模組開機 4執行下載指令如下 eFPGA progNETbit 模組0必須先下載指定的 FPGA電路 eFPGA xxxxbit 1 再依序下載其他網路模組的 FPGA電路 eFPGA yyyybit 2 eFPGA zzzzbit 最後再重新下載模組0的 FPGA電路 5換句話說模組0必須先執行 progNETbit讓光纖網路接受 FPGA控制後才能透過光纖網路下載至其他節點等全部網路節點下載完畢後再將模組0的 FPGA重新下載讓模組0也可自由執行任意的 FPGA電路

6若要更改某一個網路節點中的 FPGA電路只要重新執行下述指令 eFPGA progNETbit 模組0必須先下載指定的 FPGA電路 eFPGA yyyybit 2 下載指定網路模組的 FPGA電路 eFPGA zzzz bit 最後再重新下載模組0的 FPGA電路 換句話說除非模組0中的 FPGA已經包括光纖網路管理電路否則一定要先在

模組0中下載網路管理電路後才能下載指定網路節點的 FPGA電路

76

光纖網路通訊 FPGA 發展系統

系統配置

光纖網路通訊 FPGA 發展系統的系統配置圖如下

個人電腦(Windows) eM_USB模組

0USB

eM_USB模組1

光纖網路

eM_USB模組2

eM_USB模組N

其中

1基本模組為 eM_USB模組可用 USB界面和個人電腦連線並提供 USB對光纖網路的轉換功能使得個人電腦可以獨立控制光纖網路中的每個網路節點

2eM_USB模組也可以作為光纖網路中的網路節點透過光纖網路而接受個人電腦的

監控 3就個人電腦而言不論是 USB界面直接連結或是以光纖網路間接連結的 eM_USB模組都是可以直接監控的網路節點最多可以同時控制一個 USB節點和 30個網路節點

4對於每一個網路節點個人電腦都可執行 eM_USB模組中 FPGA的電路下載工作並在適當的 FPGA電路配合下可執行 eM_USB模組中 FPGA內部電路的讀寫控制 5透過適當的 FPGA電路設計各網路節點都可透過光纖網路和其他任何網路節點

作同步通訊執行 FPGA內部記憶體的資料交換資料交換頻率可達 1KHz以上

77

網路模組配置

每個網路模組的標準配置圖如下

eM_USB模組光纖網路

USB eM_FPGA卡

eM_DEMO模組

eM_EXP實驗模組

DC電源

其中

1網路模組以 eM_USB模組為主提供基本的 USB界面和光纖網路連線 2eM_USB模組中的 FPGACPLD採用插卡型式可選擇不同的 eM_FPGA卡包括

eM_2V1K卡可選用 Virtex系列的 XC2V250和 XC2V1000 eM_3S1K卡可選用 Spartan3系列的 XC3S400XC3S1000和 XC3S1500 eM_3S50卡可選用 Spartan3系列的 XC3S50XC3S200和 XC3S400 eM_95XL卡可選用 9500XL系列的 XC95144XL和 XC95288XL 3eM_USB模組中的對外連線有兩種一種是 26P接頭用以連接既有的各種實驗模

組另一種是兩組 50P接頭將 FPGA中各接腳引出用以連接專題實驗 4eM_DEMO模組就是插上 50P接頭的教學模組其中包括 LED 數字顯示和 44鍵盤也具備兩組的 ADC和兩組的 DAC接頭提供類比訊號的測試工具

常用的實驗組合包括

1精簡組合包括(eM_USB+eM_FPGA)提供基本的網路節點適用於專題實驗 2標準組合包括(eM_USB+eM_FPGA+eM_DEMO)提供基礎 FPGA設計的教學實驗

3實驗組合包括(eM_USB+eM_FPGA+eM_DEMO+eM_EXP)提供進階的 FPGA實驗可依需求選用不同的實驗模組

78

eM_USB 模組

eM_USB 模組的電路配置圖如下

TxRx

DCPower

USB

JP2

JP3

光纖界面

外加電源

PC連線

JP1

eM_FPGA模組

FT232 CPLD FlashROM

SRAM

10cm

6cm

JP4

其中

1對外的連線接頭包括 DC電源 可選擇單電源(5V)或是多電源(5V+12V-12V)兩種 USB界面 直接連接個人電腦 光纖界面連接光纖網路 2實驗界面包括 JP1負責內部 CPLD的電路下載 JP2JP3兩組 50P的擴張用接頭 JP4 標準 26P接頭用以連接各種實驗模組 3內部的電路配置包括 A以 SO-DIMM接頭連接各種 eM_FPGA卡 B內附 EEPROMFlashROM和 SRAM提供 FPGA作應用測試 C以一顆 FT232BM作為 USB界面解碼而以一顆 CPLD作為光纖網路解碼 D提供各種 eM_FPGA卡的電路下載功能 4內附五顆 LED由上而下依序為 usbLED指示 USB界面的讀寫狀態 tstLED可由 FPGA電路自行定義 stsLED可由 FPGA電路自行定義 RxLED 可由 FPGA電路自行定義 TxLED 可由 FPGA電路自行定義

79

外部接腳定義

外部接頭的接點順序圖示如下

上視圖

JP11 9 JP4

126225

JP31

50249

JP21

50249

而各接頭的接點定義如下

JP1 JP4 JP2 JP3 1+33V 1+12V 2+12V 1 GND 2 GND 1 GND 2 GND 2GND 3 ADC 4 DAC 3POWER 4ALARM 3 +5V 4 +5V 3nc 5 yPB2 6 yPB3 5RxNET 6TxNET 5+12V 6+12V 4TCK 7 yPB1 6 yPB4 7RxUSB 6TxUSB 7-12V 6-12V 5nc 9 yPB0 10yPB5 9RxCAN 10TxCAN 9 ADC 10 DAC 6TDO 11yPB6 12yPB7 11P0D0 12P0D1 11P1D0 12P1D1 7TDI 13yGND 14yPC3 13P0D2 14P0D3 13P1D2 14P1D3 8nc 15yPC2 16yPC1 15P0D4 16P0D5 15P1D4 16P1D5 9TMS 17yPC0 18yPA0 17P0D6 18P0D7 17P1D6 18P1D7 19yPA1 20yPA2 19P0D8 20P0D9 19P1D8 20P1D9 21yPA3 22GND 21P0D10 22P0D11 21P1D10 22P1D11 23GND 24+5V 23P0D12 24P0D13 23P1D12 24P1D13 25+5V 26nc 25P0D14 26P0D15 25P1D14 26P1D15 27P2D0 28P2D1 27PxA0 28PxA1 29P2D2 30P2D3 29PxA2 30PxA3 31P2D4 32P2D5 31PxA4 32PxA5 33P2D6 34P2D7 33PxA6 34PxA7 35P2D8 36P2D9 35PxB0 36PxB1 37P2D10 38P2D11 37PxB2 38PxB3 39P2D12 40P2D13 39PxB4 40PxB5 41P2D14 42P2D15 41PxB6 42PxB7 43ADC0 44ADC1 43PxC0 44PxC1 45ADC2 46ADC3 45PxC2 46PxC3 47ADC4 48ADC5 47PxC4 48PxC5 49DAC0 50DAC1 49PxC6 50PxC7

80

eM_FPGA 模組

在各種 eM_FPGA 模組中FPGA 對外電路的標準配置圖如下

24576MHz

FlashROM

26PSRAM

EEPROM

mD[8]

yPA[4]

FPGACPLD

mA[19]mRDmWRmCSeeCKeeCSeeDIeeDO

光纖界面 RxNETTxNET

USB 界面 RxUSBTxUSBCLK24MPOWERALARM

LED

tstLEDstsLEDRxLEDTxLED

yPB[8]yPC[4]

ADCDAC

ADC[8]

實驗模組

ADC[2]

DAC[2]

xPA[4]

xPB[8]

xPC[4]

基礎實驗

其中

1FPGACPLD可以選擇下述幾種 XC2V250XC2V1000 採用 eM_2V1K模組其中 FPGA為 FG456包裝 XC3S400XC3S1000XC3S1500採用 eM_3S1K模組其中 FPGA為 FG456包裝 XC3S400XC3S1000XC3S1500採用 eM_3S1K模組其中 FPGA為 FG456包裝 XC3S50XC3S200XC3S400 採用 eM_3S50模組其中 FPGA為 TQ144包裝 XC95144XLXC95288XL 採用 eM_95XL模組其中 CPLD為 TQ144包裝 2採用 FG456包裝者可以控制所有的 IO界面 3採用 TQ144包裝者只是不能控制 RAM和 FlashROM而可以控制其他所有的界面 4所有 FPGA模組都可自由選擇由 USB界面或是由光纖界面下載電路但是 CPLD模組只能固定由 USB界面下載電路

5所有 FPGACPLD模組都可透過 26P接頭連接既有的各種實驗模組

81

FPGA 接腳對照表

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

mD0 XD6 mD0 A17 C13 -- -- mD1 XD7 mD1 B17 D12 -- -- mD2 XD8 mD2 C17 D11 -- -- mD3 XD9 mD3 D17 C11 -- -- mD4 XD10 mD4 E17 D10 -- -- mD5 XD11 mD5 E16 C10 -- -- mD6 XD12 mD6 E14 D9 -- -- mD7 XD13 mD7 E13 D7 -- -- mA0 XD14 mA0 D13 C7 -- -- mA1 XD15 mA1 C13 D6 -- -- mA2 XA0 mA2 V5 C3 -- -- mA3 XA1 mA3 U5 C4 -- -- mA4 XA2 mA4 Y2 D3 -- -- mA5 XA3 mA5 Y1 D4 -- -- mA6 XA4 mA6 V4 E3 -- -- mA7 XA5 mA7 V3 E4 -- -- mA8 XA6 mA8 W2 F3 -- -- mA9 XA7 mA9 W1 F4 -- -- mA10 XA8 mA10 T2 G6 -- -- mA11 XA9 mA11 T1 K3 -- -- mA12 XA10 mA12 R4 K10 -- -- mA13 XA11 mA13 R3 L3 -- -- mA14 XA12 mA14 R2 L4 -- -- mRD XRD mRD R1 D5 -- -- mWR XWR mWR P6 C6 -- --

POWER P0A0 POWER B4 B20 P1 P5 ALARM P0A1 ALARM A4 A19 P2 P6 RxNET P0A2 RxNET C4 B19 P4 P7 TxNET P0A3 TxNET C5 A18 P5 P9 RxUSB P0B0 RxUSB B5 A15 P6 P10 TxUSB P0B1 TxUSB A5 B15 P7 P11 RxCAN P0B2 RxCAN D6 A14 P8 P12 RxCAN P0B3 TxCAN C6 B14 P10 P13

CLK24M CLK24M CLK24M E12 B12 P124 P38

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

PWM0H P3A0 P0D0 E6 A8 P21 P23 PWM0L P3A1 P0D1 E5 B8 P23 P24 PWM1H P3A2 P0D2 C2 B6 P24 P25 PWM1L P3A3 P0D3 C1 A5 P25 P26 PWM2H P3A4 P0D4 D2 B5 P26 P27

82

PWM2L P3A5 P0D5 D1 A4 P27 P28 PWMenb P3A6 P0D6 E4 B4 P28 P30 PHT1Z P3A7 P0D7 E3 A3 P30 P31 PHT1A P3B0 P0D8 G2 C1 P31 P32 PHT1B P3B1 P0D9 G1 C2 P32 P33 PHT0A P3B2 P0D10 H5 D1 P33 P34 PHT0B P3B3 P0D11 J6 D2 P35 P35 AMP0 P3B4 P0D12 H4 E1 P36 P39 AMP1 P3B5 P0D13 H3 E2 P40 P40 AMP2 P3B6 P0D14 H2 F2 P41 P41 AMP3 P3B7 P0D15 H1 G1 P44 P43 eeSK P0C3 P1D0 C10 B9 P20 P22 eeCS P0C2 P1D1 D10 A9 P18 P21 eeDI P0C1 P1D2 F10 B10 P17 P20 eeDO P0C0 P1D3 E10 B11 P15 P19 ssCK P0B7 P1D4 E8 A11 P14 P17 ssCS P0B6 P1D5 E7 A12 P13 P16 ssDI P0B5 P1D6 A6 B13 P12 P15 ssDO P0B4 P1D7 B6 A13 P11 P14

ppCLK P3C0 P1D8 K4 G2 P46 P44 ppDIN P3C1 P1D9 K3 K1 P47 P45 TxD P3C2 P1D10 K2 K2 P50 P46 RxD P3C3 P1D11 K1 L1 P51 P48

tstLED P3C4 P1D12 L5 L2 P52 P49 stsLED P3C5 P1D13 L4 M1 P53 P50 RxLED P3C6 P1D14 L3 M2 P55 P51 TxLED P3C7 P1D15 L2 N1 P56 P52

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

xPA0 P2A0 P2D0 AA3 N2 P59 P53 xPA1 P2A1 P2D1 Y4 T1 P60 P54 xPA2 P2A2 P2D2 AA4 T2 P63 P56 xPA3 P2A3 P2D3 AB4 U2 P68 P57 xPC0 P2A4 P2D4 W5 V1 P69 P58 xPC1 P2A5 P2D5 Y5 V2 P70 P59 xPC2 P2A6 P2D6 AA5 W1 P73 P60 xPC3 P2A7 P2D7 AB5 W2 P74 P61

-- P2B0 P2D8 V6 Y1 P76 P64 -- P2B1 P2D9 V7 Y2 P77 P66 -- P2B2 P2D10 W6 AA3 P78 P68

mCS P2B3 P2D11 Y6 AB4 P79 P69 mA15 P2B4 P2D12 V9 AA4 P80 P70 mA16 P2B5 P2D13 V10 AB5 P82 P71 mA17 P2B6 P2D14 W10 AA5 P83 P74 mA18 P2B7 P2D15 Y10 AA6 P84 P75 CS0 P2C0 ADC0 AA10 AB8 P85 P76

83

SDIN0 P2C1 ADC1 AB10 AA8 P86 P77 CS1 P2C2 ADC2 U10 AB9 P87 P78

SDIN1 P2C3 ADC3 U11 AA9 P89 P79 SCLK P2C4 ADC4 V11 AB10 P90 P80 CS2 P2C5 ADC5 W11 AA10 P92 P81

SDOUT P2C6 ADC6 Y11 AB11 P93 P82 LDAC P2C7 ADC7 AA11 AA11 P95 P83

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

xPB0 P1A0 PxA0 M1 M3 P135 P85 xPB1 P1A1 PxA1 M2 M4 P132 P86 yPB2 P1A2 PxA2 M3 N3 P131 P87 yPB3 P1A3 PxA3 M4 N4 P130 P88 yPB1 P1A4 PxA4 M5 T4 P129 P91 yPB4 P1A5 PxA5 M6 T5 P128 P92 yPB0 P1A6 PxA6 N1 U3 P127 P93 yPB5 P1A7 PxA7 N2 U4 P125 P94 yPB6 P1B0 PxB0 U13 V3 P119 P95 yPB7 P1B1 PxB1 V13 V4 P118 P96 xPB2 P1B2 PxB2 W13 W3 P116 P97 xPB3 P1B3 PxB3 Y13 W4 P113 P98 xPB4 P1B4 PxB4 AA13 Y3 P112 P100 xPB5 P1B5 PxB5 AB13 Y4 P96 P101 yPC3 P1B6 PxB6 U12 Y5 P97 P102 yPC2 P1B7 PxB7 V12 W5 P98 P103 yPC1 P1C7 PxC0 AB17 W11 P108 P113 yPC0 P1C6 PxC1 AA17 Y11 P107 P112 yPA0 P1C5 PxC2 Y17 W10 P105 P111 yPA1 P1C4 PxC3 W17 Y10 P104 P110 yPA2 P1C3 PxC4 AB18 W9 P103 P107 yPA3 P1C2 PxC5 AA18 W8 P102 P106 xPB6 P1C1 PxC6 Y18 W6 P100 P105 xPB7 P1C0 PxC7 W18 Y6 P99 P104

84

eM_DEMO 模組

eM_DEMO 模組的電路配置圖如下

eM_USB 模組

數字型 LED

0 1 2 34 5 6 78 9 A BC D E F

燈號型 LED

44 鍵盤

ADC0 ADC1 DAC0 DAC1

LED 選擇KEY 選擇

其中

1eM_DEMO模組的基本功能包括 A將 xPAxPBxPC等 16個 IO訊號引出控制 LED和鍵盤電路 B將 ADDA訊號引出並放大成+-10V的工作範圍 2LED和鍵盤可以選擇三種模式由 LED和 KEY 兩組開關作選擇圖示如下

模式1

0123

模式2 模式3

0 1 2 34 5 6 78 9 A BC D E F

0123

3模式14鍵輸入並搭配 16點的 LED燈號顯示其中 16點 LED分別對映到 xPA[0~3]xPB[0~7]和 xPC[0~3] 4組按鍵分別對映到 xPC[0~3] 4模式24鍵輸入並搭配四個 7段式數字顯示其中 數字顯示由 xPA[0~3]作數字掃瞄而由 xPB[0~7]作 7段式 LED控制 4組按鍵 分別對映到 xPC[0~3] 5模式316鍵輸入並搭配四個 7段式數字顯示其中 數字顯示由 xPA[0~3]作數字掃瞄而由 xPB[0~7]作 7段式 LED控制 16組按鍵由 xPA[0~3]作鍵盤掃瞄而由 xPC[0~3]作鍵盤讀取 6根據VHDL與數位邏輯設計的章節其中 第 1章至 10章的實驗採用模式1而 第 11章實驗採用模式2而 第 12章之後的實驗都採用模式3

85

FPGA UCF 定義

eM_3S1K 模組

NET CLK LOC = B12

NET XAlt0gt LOC = N2

NET XAlt1gt LOC = T1

NET XAlt2gt LOC = T2

NET XAlt3gt LOC = U2

NET XBlt0gt LOC = M3

NET XBlt1gt LOC = M4

NET XBlt2gt LOC = W3

NET XBlt3gt LOC = W4

NET XBlt4gt LOC = Y3

NET XBlt5gt LOC = Y4

NET XBlt6gt LOC = W6

NET XBlt7gt LOC = Y6

NET XClt0gt LOC = V1

NET XClt1gt LOC = V2

NET XClt2gt LOC = W1

NET XClt3gt LOC = W2

NET YAlt0gt LOC = W10

JP4 接頭

NET YAlt1gt LOC = Y10

NET YAlt2gt LOC = W9

NET YAlt3gt LOC = W8

NET YBlt0gt LOC = U3

NET YBlt1gt LOC = T4

NET YBlt2gt LOC = N3

NET YBlt3gt LOC = N4

NET YBlt4gt LOC = T5

NET YBlt5gt LOC = U4

NET YBlt6gt LOC = V3

NET YBlt7gt LOC = V4

NET YClt0gt LOC = Y11

NET YClt1gt LOC = W11

NET YClt2gt LOC = W5

NET YClt3gt LOC = Y5

在光碟片中 RFFPGAVHDLDEMOBIT3S1K 裡有 VHDL 與數位邏輯設計書本範例原始檔與合成檔

86

eM_3S50 模組

NET CLK LOC = P124

NET XAlt0gt LOC = P59

NET XAlt1gt LOC = P60

NET XAlt2gt LOC = P63

NET XAlt3gt LOC = P68

NET XBlt0gt LOC = P135

NET XBlt1gt LOC = P132

NET XBlt2gt LOC = P116

NET XBlt3gt LOC = P113

NET XBlt4gt LOC = P112

NET XBlt5gt LOC = P96

NET XBlt6gt LOC = P100

NET XBlt7gt LOC = P99

NET XClt0gt LOC = P69

NET XClt1gt LOC = P70

NET XClt2gt LOC = P73

NET XClt3gt LOC = P74

NET YAlt0gt LOC = P105

JP4 接頭

NET YAlt1gt LOC = P104

NET YAlt2gt LOC = P103

NET YAlt3gt LOC = P102

NET YBlt0gt LOC = P127

NET YBlt1gt LOC = P129

NET YBlt2gt LOC = P131

NET YBlt3gt LOC = P130

NET YBlt4gt LOC = P128

NET YBlt5gt LOC = P125

NET YBlt6gt LOC = P119

NET YBlt7gt LOC = P118

NET YClt0gt LOC = P107

NET YClt1gt LOC = P108

NET YClt2gt LOC = P98

NET YClt3gt LOC = P97

在光碟片中 RFFPGAVHDLDEMOBIT3S200 裡有VHDL與數位邏輯設計書本範例原始檔與合成檔

87

eM_95XL 模組

NET CLK LOC = SPIN38

NET XAlt0gt LOC = SPIN53

NET XAlt1gt LOC = SPIN54

NET XAlt2gt LOC = SPIN56

NET XAlt3gt LOC = SPIN57

NET XBlt0gt LOC = SPIN85

NET XBlt1gt LOC = SPIN86

NET XBlt2gt LOC = SPIN97

NET XBlt3gt LOC = SPIN98

NET XBlt4gt LOC = SPIN100

NET XBlt5gt LOC = SPIN101

NET XBlt6gt LOC = SPIN105

NET XBlt7gt LOC = SPIN104

NET XClt0gt LOC = SPIN58

NET XClt1gt LOC = SPIN59

NET XClt2gt LOC = SPIN60

NET XClt3gt LOC = SPIN61

NET YAlt0gt LOC = SPIN111

JP4 接頭

NET YAlt1gt LOC = SPIN110

NET YAlt2gt LOC = SPIN107

NET YAlt3gt LOC = SPIN106

NET YBlt0gt LOC = SPIN93

NET YBlt1gt LOC = SPIN91

NET YBlt2gt LOC = SPIN87

NET YBlt3gt LOC = SPIN88

NET YBlt4gt LOC = SPIN92

NET YBlt5gt LOC = SPIN94

NET YBlt6gt LOC = SPIN95

NET YBlt7gt LOC = SPIN96

NET YClt0gt LOC = SPIN112

NET YClt1gt LOC = SPIN113

NET YClt2gt LOC = SPIN103

NET YClt3gt LOC = SPIN102

在光碟片中 RFFPGAVHDLDEMOSVF95288XL 裡有VHDL與數位邏輯設計書本範例原始檔與合成

檔案

88

eM_FPGA 模組

NET CLK LOC = E12

NET XAlt0gt LOC = AA3

NET XAlt1gt LOC = Y4

NET XAlt2gt LOC = AA4

NET XAlt3gt LOC = AB4

NET XBlt0gt LOC = M1

NET XBlt1gt LOC = M2

NET XBlt2gt LOC = W13

NET XBlt3gt LOC = Y13

NET XBlt4gt LOC = AA13

NET XBlt5gt LOC = AB13

NET XBlt6gt LOC = Y18

NET XBlt7gt LOC = W18

NET XClt0gt LOC = W5

NET XClt1gt LOC = Y5

NET XClt2gt LOC = AA5

NET XClt3gt LOC = AB5

NET YAlt0gt LOC = Y17

JP4 接頭

NET YAlt1gt LOC = W17

NET YAlt2gt LOC = AB18

NET YAlt3gt LOC = AA18

NET YBlt0gt LOC = N1

NET YBlt1gt LOC = M5

NET YBlt2gt LOC = M3

NET YBlt3gt LOC = M4

NET YBlt4gt LOC = M6

NET YBlt5gt LOC = N2

NET YBlt6gt LOC = U13

NET YBlt7gt LOC = V13

NET YClt0gt LOC = AA17

NET YClt1gt LOC = AB17

NET YClt2gt LOC = V12

NET YClt3gt LOC = U12

在光碟片中 RFFPGAVHDLDEMOBIT2V250 裡有VHDL與數位邏輯設計書本範例原始檔與合成檔

89

Page 20: RFFPGA 直流馬達實驗手冊juniortek.com.tw/program/manual/RF-DC-mal.pdf · em_demo模組 em_dcm 直流伺服馬達 dc電源 rffpga 系統的直流馬達實驗規劃 其中包括:

5執行程序

首先進入 RFFPGA 裡子目錄 DC直接點選 fPLCexe 出現下面操作畫面(也可直接將此檔

案放置桌面直接點選)

進入下面操作畫面

20

首先使用滑鼠在 FPGA下載按鈕單擊動作使 FPGA變成 piDSP晶片 如您撰寫組合語言時可使用 eASM按鈕 經編譯完成後產生MOD檔 如您撰寫系統連結程式時可使用 eLINK按鈕 經連結完成後產生MEM與VAR檔 點選實驗三後顯示如下 選擇程式下載再按程式啟動這時直流伺服馬達開始做位置控制在操控畫面放置 P 參數設定欄更改參數時馬達即時隨參數改變而產生不同響應 直接點選程式停止時結束所有控制動作再按回首頁選擇其他實驗

21

6實驗說明

下圖所示為直流馬達的控制系統方塊圖透過電流速度以及位置的回授再搭

配適當的控制器可建立完整的閉迴路控制系統在後面的實驗中將依此一系統方塊圖

逐步建立速度和位置的控制實驗各實驗的說明和操作方式及參考實驗結果將逐一進

行詳細的說明

控制

參考位置

速度 位置速

度控制 電流控制

電力電

子換流

位置速

度感測

i

+ -

壓ν

位置

速度

i

DC直流馬達之控制系統方塊圖

PWM 驅動方式只是簡單的開環路控制而高精度的馬達控制必須透過回授控制來完成

對於邏輯電路的設計者而言必須先瞭解基本的回授控制架構以便將來轉換成實用的

邏輯電路設計

設計說明

開環路特性

在電壓驅動的狀況下直流馬達開環路控制的示意圖如下

+-

22

如果換算成數學模式則轉換成下面的架構

+-Vc

R L

EMF

+

-

ITB

J

ω

其中

1其中的變數和參數包括 Vc 控制的電壓命令 R 電樞迴路的等效電阻 L 電樞迴路的等效電感 EMF電樞產生的反電動勢 i 電樞迴路中的電流 T 馬達所產生的扭力 J 馬達和負載的等效慣量 B 馬達和負載的等效摩擦力 ω 馬達所產生的速度 2所牽涉的物理公式包括 電壓迴路Vc = Ri + L(didt) + EMF 即電樞迴路中的電壓平衡 動力負載T = Bω + J(dωdt) 即扭力平衡 馬達特性T = Kti 所產生的扭力和電流成正比 電機特性EMF= Keω 所產生的電動勢和轉速成正比 其中新增的參數包括 Kt馬達的扭力常數 Ke馬達的反電動勢常數 3將微分項作拉式轉換(Laplase Transformation)的對映即 s = ddt 可將微分方程式轉換成更簡單的代數方程式而產生到下面的控制方塊圖

sL+R1Vc

+-EMF

iKt

TsJ+B1 ω

Ke

4在直流馬達的開環路特性中控制電壓(Vc)時輸入點而馬達轉速(ω)是輸出點即是控制馬達電壓以控制馬達轉速

5基本上馬達的開環路特性是個兩階系統類似於低通濾波器的特性在許多應用 場合其開環路特性還可以再簡化成一階系統方塊圖如下

23

sτ +1

KmVc ω 其中 τ一階系統的時間常數 Km一階系統的穩態增益

採用兩階系統的分析方式雖然會比較精細但是用一階系統來分析則可簡化所有的設計

過程因為這裡的實驗重點是邏輯設計所以在本章中我們都用一階系統作分析

系統響應的要求

就控制系統而言最重要的需求就是系統響應包括

穩態特性通常以穩態誤差為指標即是穩態時系統輸出和輸入之間的差異 暫態特性通常以上升時間(Rise Time)和過越比率(Overshoot)為指標

一個理想中的伺服控制系統其系統響應應該是

1穩態誤差為 0即馬達輸出將追隨輸入作變化沒有誤差 2過越比例為 0即馬達輸出絕對不會產生衝過頭的現象 3上升時間為 0即馬達輸出隨時追上輸入命令不會有控制上的延遲現象

當然這是太理想了一個合理的伺服控制系統應該是

1穩態誤差越小越好最好為 0 2過越比例越小越好最好為 0 3上升時間越短越好當然無法為 0但是盡力就是了

速度的回授控制

回授控制的目的就是為了改善系統響應以一階系統代表的馬達控制為例

sτ+1

KmVc ω

在步階響應(Step Response)時其特性如下

1穩態誤差由 Km決定 2過越比例為 0 3上升時間即是其時間常數(τ)

如果用比例控制器(P 控制器)作速度回授的控制則控制方塊圖如下

sτ+1

KmVc ωKp

err

P控制器 直流馬達ωc

速度回授

速度命令 + 速度響應-

24

其中

1速度命令並不直接控制馬達的驅動電壓而是 A將速度命令和速度回授相比找出其誤差訊號 err B依誤差訊號來控制驅動電壓 誤差越大則驅動電壓越高 誤差越小則驅動電壓越低 誤差為負則驅動電壓也為負 其中的比例關係由 P控制器中的 Kp 來調整 2經由數學分析後其步階響應的特性為 A穩態誤差變成 1(1+kpkm)如果 kpkmgtgt1則穩態誤差將趨近於 0 B過越比例仍為 0 C上升時間即是由τ變成τ(1+kpkm)所以上升時間將變短 3換句話說只要 Kp值夠大不論是穩態誤差或是上升時間都會大幅改善

理論上P控制器的增益是越高越好最好是無限大但是實際上是有限制的原因是

1馬達的開環路特性是兩階系統而非一階系統一階系統只是簡化後的結果 2當兩階系統作高增益的回授控制時當增益過高時會產生極嚴重的過越現象使得

馬達產生巨幅震動而難以控制

所以 P控制器的增益雖然是越高越好但調整時仍要小心維持(過越比例為 0)的條件

轉角的回授控制

做為馬達的速度控制P控制器的效果不錯但是如果將 P控制器應用到馬達的轉角控

制其特性就不太理想圖示如下

sτ+1

KmVc ωKp

err

P控制器 直流馬達

θc

轉角回授

轉角命令 + 轉角響應-

s1 θ

其中

1從馬達的速度到轉角之間具有積分特性即 馬達的轉角是馬達速度的積分結果而 馬達的速度是馬達轉角的微分結果而 2其中的積分特性使得整個系統由一階特性變成兩階特性在兩階系統中當設定高

增益時會產生極嚴重的過越現象使得馬達產生巨幅震動而難以控制 3在 P控制器增益無法提高的狀況之下轉角控制效果將無法獲得改善

雖然 P控制器在轉角控制上的效果並不好但是在控制系統中還是有許多法寶可以選擇

25

其中 PD 控制器就是簡單又有效的一個好方法

從表面上來看PD 控制器比 P控制器多了一個微分項就數學上來看這微分項提供了

一個新零點(Zero)可以調整根軌跡圖的走向就實驗上來說這微分項提供了控制器

的預測功能說明如下

sτ+1

KmVc ωKp+sKd

err

P控制器 直流馬達

θc

轉角回授

轉角命令 + 轉角響應-

s1 θ

1轉角控制中 P控制器的問題是在嚴重的過越現象原因是在 P控制器的作用下只有當回授超過命令時才能做出「負向」的控制但這時已經來不及了因為積分器

中已經累積了過多的能量而無法立刻消失使得馬達轉角衝過了頭 2解決之道就是在回授超過命令之前就必須做出「負向」的控制使得積分器累積

的能量逐步減弱在到達目標時才能立刻煞車才能解除過越現象 3而微分項就是這個預測量因為當誤差量越來越小時其微分項是負值雖然微分

項(D)是負值 當誤差量(P)很大時(P+D)的結果還是正值所以還是「正向」控制 當誤差量(P)漸小時(P+D)的結果變成負值才會開始「負向」控制 換句話說在誤差為 0之前即可啟動負向控制產生煞車作用使得馬達提前減速

而即時停止在目標點上自然就解除過越現象了

所以在 PD 控制器中有兩項調整量其中

1Kp增益提供比例控制部分的增益而 Kd增益提供微分控制部分的增益 2Kp增益控制馬達的趨近速度主要影響的是上升時間 3Kd增益控制馬達的提前煞車主要影響的是過越比例 4在兩者搭配下就有機會得到 很快很短的上升時間同時也 不會產生過越現象

PD 控制器的執行

依據 PD 控制器公式可以建立以數位執行的 PD 控制器如下圖所示

cmdKp

fdk

+

-

err

old

+-

Kd

Z-1

out+

+

26

其中

1利用差分公式來取代 PD控制器中的微分公式定義如下 s ==gt (1-Z-1)DT 其中對映的變數包括 s 微分項 Z-1延遲一個抽樣週期 DT抽樣週期單位為 sec 2就執行面而言Z-1是延遲一個抽樣週期也就是以抽樣週期所控制的暫存器 3在上圖中將命令(cmd)和回授(fdk)相減後得到誤差值(err)再將 err延遲一個抽樣週期成為 old所以(err-old)DT即是微分項

4原始的微分控制公式為(err-old)DTKd必須先除再乘但是因為 DT和 Kd 都是常

數可以預先將 Kd修正成 Kd=(KdDT)那麼公式將修正為(err-old)Kd就只需要一個乘法而不需要除法了

同樣的 PD 控制器可以用許多不同的方法作執行包括

1以軟體方式執行例如在 DSP核心中以組合語言撰寫控制模組 2以硬體方式執行例如在 FPGA中直接設計邏輯電路 3以微碼方式執行以微碼作順序控制執行硬體運算工作

這裡先提供用組合語言撰寫的程式模組作為設計參考其他兩種方法將在後續的實驗中

再陸續作說明

模組程式範例PD_controlasm

local cmd R0 IP gnd 輸入點位置命令(可忽略) local fdk R1 IP gnd 輸入點位置回授(可忽略) local out R2 OP 輸出點用以控制速度迴路 local kp R3 256 參數增益 kp10=256 local kd R4 0 參數增益 kd10=256 local err R5 0 內部變數 local old R6 0 內部變數 local gnd R7 0 無輸入時的短路點 data 8 模組變數區長度 initial 開機啟動程序 WR out0 WR old0 RET out=old=0 timer 即時控制程序 RD (cmd) SUB (fdk) WR err MUL kp SFR 8 P=(cmd-fdk)kp256 RDS err SUBX old MUL kd SFR 8 D=(err-old)kd256 ADDS WR out out=P+D RET

27

其中

1PD控制模組中對外的界面變數包括 cmd命令的輸入點 fdk回授的輸入點 out控制的輸出點 2內部參數包括 Kp比例控制增益其中 10=256所以乘完後還需要再右移 8-bit Kd微分控制增益其中 10=256所以乘完後還需要再右移 8-bit 3內部變數包括 err臨時性的變數用以儲存誤差值的計算結果 old儲存性的變數用以儲存上一次抽樣控制時的 err值 4模組程式分成三部分包括 變數宣告local和data所宣告的部分 初值設定initial程序中先將 out和 old設定為 0 即時控制timer程序中依序執行 PD控制器中的每個步驟

控制目標的選擇

從字面上來看速度控制就是控制馬達的速度轉角控制就是控制馬達的轉角沒什麼

好討論的但是實際上確有許多問題第一的問題就是什麼是速度和轉角馬達的速

度和轉角如果不作量測如何得知

既然在量測中取得了速度和轉角資料那麼我們所控制的到底是物理學上的速度和轉

sτ+1

KmVc ωKp+sKd

err

P控制器 直流馬達

θc

轉角回授

轉角命令 + 轉角響應-

s1 θ

KxANG

轉角量測

角還是量測上的速度和轉角以下圖為例

其中

1以轉角量測裝置量測轉角例如裝在馬達軸端的光電盤和解碼電路 2轉角的量測輸出是 ANG而 ANG和物理轉角θ之間有 Km的增益關係 3只要 Km值不是 1那麼系統就不再是單位回授 4如果 Km還有非線性或失真現象那麼控制結果也將有非線性或失真現象

這些問題混雜起來會使得控制系統的分析變得更複雜如果要簡單處理就要認同現

實環境直接以量測結果為控制目標如下圖所示

28

sτ+1

KmVc ωKp+sKd

err

P控制器 直流馬達

θc

轉角回授

+-

s1 θ Kx

ANG轉角量測

其中

1直接以量測結果為控制目標將全系統還原成標準的單位回授控制 2所有的非線性或失真現象都進入開環路討論屬於可以補償的部分 3但是控制結果就是「量測上的轉角」而「物理學上的轉角」

量測誤差的問題

轉角θ

量測ANG

對於量測誤差而言最明顯的問題就是量化誤差圖示如下

其中

1以 DCM模組中的光電盤為例精度為每圈 500格經由乘四解碼計數後其等效

精度增加為每圈 2000格 2比(12000)圈更精密的部分都無法響應換句話說振幅越大的控制其相對誤差越

小而振幅越小的控制其相對誤差越大例如 當振幅為(12)圈時其控制誤差量為 01而 當振幅為(120)圈時其控制誤差量為 1 這是標準的的非線性現象

量化誤差不只影響穩態上的精度還會造成非線性的震動問題圖示如下

t

誤差值

+1

-1

其中

1由於量化誤差的問題只有當誤差超過+1或是-1時才會真正偵測到誤差也才

29

會施加控制量作補償 2所以穩態時的誤差將在+1-1之間擺動造成微幅的振動 3量化誤差越大震動越明顯而量化誤差很小時通常不易察覺出震動現象

微分量的計算

伺服系統中有兩處需要用到微分計算包括

1PD控制器中誤差微分量的計算 2速度控制器中速度回授值的量測

在理論上微分公式是(dXdt)相當於 dXdt = (X(n)-X(n-1))DT (當 DT趨近於 0時)

所以當微分計算中的抽樣週期(DT)越短時微分的計算值將越接近理論值但是事實上

卻非如此以下圖為例

t

X

DTDX

其中

1當 X值為等速度運動時其微分量就是其斜率相當於 DXDT 2DT是微分計算中的抽樣週期理論上越短越好但是由於 DX本身的量化誤差

使得這個原則不再成立例如當斜率為 7394時 若 DT=1000則 DX=7394而 DXDT=7394 若 DT=100 則 DX=739 而 DXDT=739 若 DT=10 則 DX=73 而 DXDT=73 若 DT=1 則 DX=7 而 DXDT=7 3換句話說當抽樣週期越短時DX的量化誤差將越明顯而造成微分計算上更嚴

重的誤差

在 DCM 模組中速度量測的量化誤差分析如下

1馬達上的光電盤精度為每圈 500格經過乘四解碼後等效精度為每圈 2000格 2當馬達轉速為 1200RPM而抽樣頻率為 1KHz時對映的速度量測值為 1200(圈分)2000(格圈)60(秒分)1000(DT秒) = 40(格DT) 3換句話說1200RPM的轉速對映到 40的速度量測值即速度單位=30RPM若最

高轉速為 3000RPM則在+-3000RPM的速度範圍內其量化誤差為 05相當於8-bit的 ADC轉換器精度

4對映不同的抽樣頻率的量化誤差表列如下

30

光電盤精度 最高轉速 抽樣頻率 速度單

速度範圍 量化誤差

500PPR 3000RPM 1KHz 30RPM +-100 05 500PPR 3000RPM 2KHz 60RPM +-50 1 500PPR 3000RPM 4KHz 120RPM +25 2

過溢現象的處理

輸入

輸出

32767

-32768

整數運算都有數值範圍限制以 16-bit 整數而言輸入輸出的關係如下

其中

1當超過正負數的上下限時數值會正負顛倒例如 +32768 將會視為 -32768作處理而 +32769 將會視為 -32768作處理依此類推 2換句話說16-bit的整數運算只有在+-32767之間是線性的對映關係而超過這個範圍就是非線性的對映關係

3不但如此還因為正負顛倒的現象使得原來設計的負回授控制將變為正回授控制

而產生非線性的震盪現象 4換句話說只要計算上稍一不慎就會使得原先穩定的系統產生不穩定的震盪結果

為了避免過溢現象所造成的不穩定問題通常控制系統中會利用飽和處理作改善圖示

如下

輸入

輸出

lmtH

lmtL

31

其中

1當超過計算的上限時將固定設為上限值處理而當超過計算的下限時也將固定

設為下限值處理 2這時的整數運算只有在上下限之間是線性的對映關係而超過這個範圍將還是非線

性的對映關係 3雖然如此但是因為沒有正負顛倒的現象所以不再會有負回授變為正回授的問題

而避免了非線性的震盪現象 4換句話說飽和處理是針對過溢現象的妥協處理方案雖然不完全理想但是是可

接受的最佳選擇

下面是對映的組合語言範例

RD x x為輸入端 MIN lmtH 取得 x和 lmtH中的較小值即是作上限保護的工作 MAX lmtL 取得 x和 lmtL中的較大值即是作下限保護的工作 WR y Y為輸出端 其中

1組合語言中提供MAX和MIN的計算其中 MIN lmtH 比較 AX暫存器和 lmtH而將較低值存入 AX暫存器中 MAX lmtL 比較 AX暫存器和 lmtH而將較高值存入 AX暫存器中 2所以直接可用MIN指令作上限保護而以MAX指令作下限保護兩者合併後即是

完整的飽和處理結果

飽和處理通常應用在高位數轉成低位數的場合例如32-bit轉換成16-bit或是16-bit

轉換成 12-bit 等等例如在本實驗中所有的運算都是以 16-bit 整數作處理但是到

PWM 驅動級輸出時卻要轉換成 12-bit精度的 PWM 命令所以必須先用飽和處理以避免

過溢現象造成的不穩定問題

32

61 實驗 1-開迴路的電壓控制 實驗說明以電壓直接控制轉速的開迴路特性可簡化為一階系統處理方塊圖如

sτ+1

v km ωm

其中V 送給驅動器的 PWM電壓命令

ωm馬達的轉動速度可由處理 photo encoder信號所得的位置微分而得 km一階系統的穩態增益 τ一階系統的時間常數即步階響應中的上升時間

為了觀測直流馬達的開環路特性建立下面的測試方塊圖

其中

1所使用的模組包括 FG1方波產生器產生所需的步階測試波形 FT1馬達模擬以一階系統的低通濾波器來執行 IO1光電盤的回授處理可同時取得轉角和速度的量測值 IO2PWM電壓驅動直接驅動直流馬達作控制 Led四位數字七段顯示模組顯示波形信號資料 2測試目標有兩項(P 參數設定欄)包括 A調整方波命令控制直流馬達作開環路的 PWM電壓控制 B調整馬達模擬參數使模擬結果和實驗結果相符以確認開環路特性

33

實驗畫面顯示如下

測試一 開環路的電壓控制 記錄頻道 CH1電壓命令Y1=-300DY=500 CH2模擬速度Y2=-100DY=500 CH3馬達速度Y3=100DY=50 CH4馬達轉角Y4=300DY=50000 實驗參數 FG1kAMP=256電壓命令的測試振幅 FG1kFRQ=150電壓命令的測試頻率 FT1DT =10 馬達模擬參數 FT1KA =500馬達模擬參數

其中

1用示波器功能記錄四個頻道其中 CH2和 CH3重疊顯示以比較模擬速度和量測

速度之間的差異 2由於 Km 不等於 1所以必須調整 CH3的 Y軸單位才能使得 CH2和 CH3的穩態響應部分重疊

3實驗時可以改變 FG1的參數以調整測試方波的振幅和頻率 4可以調整 FT1的參數使得 CH2和 CH3的暫態響應部分重疊

根據實際的測試結果分析如下

2馬達模擬的參數調整到 DT=10而 KA=500根據公式 τ = 40961000dtka 所以上升時間(τ)為 0082秒或是 82ms 3CH2CH3的 Y軸單位並不一致顯然 Km 不等於 1經計算確認 Km=0098

對應之 plc檔程式說明(exp_pwmplc) echo off 畫面顯示開始

run dsp 0 選擇 DSP1

run stop run reset 既有程式停止

run testDCMmem 下載指定程式

das 1 ampfg1out 0 1024 PWM 波形 Volt 設定 DAS 頻道1

das 2 ampft1lp 0 1024 馬達模擬 Volt 設定 DAS 頻道2

das 3 ampio1spd 0 1024 馬達速度 Volt 設定 DAS 頻道3

das 4 ampio1ang 0 1024 馬達角度 Volt 設定 DAS 頻道4

plot select 0 設定示波器頁數

plot xunit 100000 0 設定示波器 X軸

plot yunit 1 500 -300 設定示波器 Y1 軸

34

plot yunit 2 500 -100 設定示波器 Y2 軸

plot yunit 3 50 100 設定示波器 Y3 軸

plot yunit 4 50000 300 設定示波器 Y4 軸

plot trigger 1 0 1 10 設定示波器觸發

plot scope 9 1 2 3 4 設定示波器顯示

module io2 設定 io2 模組

s cmd ampfg1out

module fg1 設定 fg1 模組

s kAmp 256 s kFrq 150

module ft1 設定 ft1 模組

s u ampfg1out s dt 10 s ka 500

module io3 設定 io3 模組

s led ampfg1out

module 回復預設模組

run 1khz 設定抽樣頻率為 4KHz

run start DSP 開始執行

das stop pause 1 DAS 啟動 das start DAS 啟動

echo on 回復正常訊息顯示

使用者可視情況調整一階濾波器的 ka和 dt值使得 ch2和 ch3 兩組波形完全相符

以求得開迴路系統近似的一階轉移函數 CAI操控設計畫面規劃如下(EXP_PWMCAI) page 1 畫面設計

35

page 2 畫面設計 page 3 畫面設計

36

實測響應圖

訊 號 說 明 訊 號 說 明 ch1 方波產生器訊號 ch3 一階濾波器輸出信號 ch2 馬達角速度訊號 ch4 馬達角位置訊號

直流馬達之開迴路電壓控制響應圖

37

以邏輯分析功能觀測直流馬達之光電盤輸入與 PWM輸出信號

38

62 實驗 2-閉迴路的速度控制 實驗說明為了觀測閉迴路的速度控制響應建立下面的測試方塊圖

加入 PD控制後系統閉迴路的轉移函數經適度的簡化仍能約略以一階系統

處理方塊圖如下

sτ+1

u km ωm

其中

u 送給控制器的速度命令

ωm馬達的轉動速度可由處理 photo encoder 信號所得的位置微分而得

km一階系統的穩態增益 τ一階系統的時間常數即步階響應中的上升時間

方塊圖中的模組功能說明如下

1用 fg1 產生測試用的方波速度命令

2將方波速度命令和速度回授訊號送到 PD 控制器方塊中產生電壓控制訊號再透

過 io2 模組將訊號送出給伺服介面

3用 ft1 建立對照用的一階系統可用 IIR1濾波器方塊產生

4將方波命令產生速度命令再觀測 PHT(io1)上的速度值 spd

5調整 IIR1濾波器的參數使得兩組波形完全相符這時 IIR1濾波器就是閉迴路

速度控制的特性其中 km 為增益而τ為上升時間(單位為 sec)

6增益 km 可從示波器中作簡單計算而上升時間(τ=40964000dtka)

7 Led四位數字七段顯示模組顯示波形信號資料

39

對應之 plc檔程式說明(exp_speedplc) echo off 畫面顯示開始

run dsp 0 選擇 DSP1

run stop run reset 既有程式停止

run testDCMmem 下載指定程式

das 1 ampfg1out 0 1024 PWM 波形 Volt 設定 DAS 頻道1

das 2 ampft1lp 0 1024 馬達模擬 Volt 設定 DAS 頻道2

das 3 ampio1spd 0 1024 馬達速度 Volt 設定 DAS 頻道3

das 4 ampio1ang 0 1024 馬達角度 Volt 設定 DAS 頻道4

plot select 0 設定示波器頁數

plot xunit 100000 0 設定示波器 X軸

plot yunit 1 50 -300 設定示波器 Y1 軸

plot yunit 2 50 -100 設定示波器 Y2 軸

plot yunit 3 50 100 設定示波器 Y3 軸

plot yunit 4 50000 300 設定示波器 Y4 軸

plot trigger 1 0 1 10 設定示波器觸發

plot scope 9 1 2 3 4 設定示波器顯示

module io2 設定 io2 模組

s cmd ampcn2out

module fg1 設定 fg1 模組

s kAmp 50 s kFrq 150

module cn2 設定 cn1 模組

s cmd ampfg1out s fdk ampio1spd s kp 0x4000

module ft1 設定 ft1 模組

s u ampfg1out s dt 2 s ka 320

module io3 設定 io3 模組

s led ampfg1out

module 回復預設模組

run 1khz 設定抽樣頻率為 4KHz

run start DSP 開始執行

das stop pause 1 DAS 啟動 das start DAS 啟動

echo on 回復正常訊息顯示

CAI操控設計畫面規劃如下(EXP_speedCAI)

40

page 1 畫面設計 page 2 與 page 3 畫面設計與實驗一 page 2 與 page 3相同畫面 page 4 畫面設計

41

方塊的參數設定 使用者可視情況調整一階濾波器的 ka和 dt值使得 ch2和 ch3 兩組波形完全相符

以求得此一閉迴路系統近似的一階轉移函數或調整 PD控制器中的 kp和 kp值以調整系統之響應 實測響應圖

訊 號 說 明 訊 號 說 明 ch1 方波產生器產生之速度命令 ch3 一階濾波器輸出信號 ch2 馬達角速度訊號 ch4 馬達角位置訊號

42

直流馬達之閉迴路速度控制響應圖

43

63 實驗 3-閉迴路的位置控制 實驗說明為了觀測閉迴路的位置控制響應將直流馬達的回授改為位置訊號

建立下面的測試方塊圖 方塊圖中的模組功能說明如下

1用 fg1產生測試用的方波位置命令 2將方波位置命令和位置回授訊號送到 PD控制器方塊中產生電壓控制訊號再透過 io2模組將訊號送出到伺服介面驅動馬達轉動

對應之 plc檔程式說明(exp_angleplc) echo off 畫面顯示開始

run dsp 0 選擇 DSP1

run stop run reset 既有程式停止

run testDCMmem 下載指定程式

das 1 ampfg1out 0 1024 PWM 波形 Volt 設定 DAS 頻道1

das 2 ampft1lp 0 1024 馬達模擬 Volt 設定 DAS 頻道2

das 3 ampio1spd 0 1024 馬達速度 Volt 設定 DAS 頻道3

das 4 ampio1ang 0 1024 馬達角度 Volt 設定 DAS 頻道4

plot select 0 設定示波器頁數

plot xunit 100000 0 設定示波器 X軸

plot yunit 1 1000 -300 設定示波器 Y1 軸

plot yunit 2 1000 -100 設定示波器 Y2 軸

plot yunit 3 20 100 設定示波器 Y3 軸

plot yunit 4 1000 300 設定示波器 Y4 軸

plot trigger 1 0 1 10 設定示波器觸發

44

plot scope 9 1 2 3 4 設定示波器顯示

module io2 設定 io2 模組

s cmd ampcn2out

module fg1 設定 fg1 模組

s kAmp 1000 s kFrq 75

module cn2 設定 cn1 模組

s cmd ampfg1out s fdk ampio1ang s kp 0x300 s kd 0x4000

module ft1 設定 ft1 模組

s u ampfg1out s dt 2 s ka 320

module io3 設定 io3 模組

s led ampfg1out

module 回復預設模組

run 1khz 設定抽樣頻率為 4KHz

run start DSP 開始執行

das stop pause 1 DAS 啟動 das start DAS 啟動

echo on 回復正常訊息顯示

CAI操控設計畫面規劃如下(EXP_angleCAI) page 1 畫面設計

45

page 2 與 page 3 畫面設計與實驗一 page 2 與 page 3相同畫面 page 4 畫面設計與實驗二 page 4 畫面 方塊的參數設定 延續上一實驗的說明使用者可以調整 PD控制器中的 kp和 kd值以調整系統之

響應 實測響應圖

訊 號 說 明 訊 號 說 明 ch1 方波產生器產生之位置命令 ch3 馬達角速度訊號 ch2 馬達角位置 ch4 Pd控制器輸出之電壓訊號

46

直流馬達之閉迴路位置控制響應圖

47

64 實驗 4-加減速的位置控制 實驗說明為避免方波命令的過於嚴苛在方波命令的輸出加入一加減速控制功

能方塊以減緩命令變化的幅度增加馬達運動的平順建立的測試方塊圖如下

方塊圖中的模組功能說明如下

1用 fg1產生測試用的方波位置命令 2將方波位置命令送到加減速控制方塊處理後產生新的位置命令再將新的位置命

令與位置回授訊號送到 PD控制器方塊中產生電壓控制訊號最後透過 io2模組將訊號送出到伺服介面驅動馬達轉動

對應之 plc檔程式說明(exp_accplc) echo off 畫面顯示開始

run dsp 0 選擇 DSP1

run stop run reset 既有程式停止

run testDCMmem 下載指定程式

das 1 ampfg1out 0 1024 PWM 波形 Volt 設定 DAS 頻道1

das 2 ampcn1out 0 1024 加速控制 Volt 設定 DAS 頻道2

das 3 ampio1spd 0 1024 馬達速度 Volt 設定 DAS 頻道3

das 4 ampio1ang 0 1024 馬達角度 Volt 設定 DAS 頻道4

plot select 0 設定示波器頁數

plot xunit 100000 0 設定示波器 X軸

plot yunit 1 2000 -300 設定示波器 Y1 軸

plot yunit 2 2000 -100 設定示波器 Y2 軸

plot yunit 3 50 100 設定示波器 Y3 軸

plot yunit 4 2000 300 設定示波器 Y4 軸

48

plot trigger 1 0 1 10 設定示波器觸發

plot scope 9 1 2 3 4 設定示波器顯示

module io2 設定 io2 模組

s cmd ampcn2out

module fg1 設定 fg1 模組

s kAmp 2000 s kFrq 150

module cn1 設定 cn1 模組

s cmd ampfg1out

module cn2 設定 cn2 模組

s cmd ampcn1out s fdk ampio1ang s kp 0x300 s kd 0x4000

module ft1 設定 ft1 模組

s u ampfg1out s dt 2 s ka 320

module io3 設定 io3 模組

s led ampfg1out

module 回復預設模組

run 1khz 設定抽樣頻率為 4KHz

run start DSP 開始執行

das stop pause 1 DAS 啟動 das start DAS 啟動

echo on 回復正常訊息顯示

CAI操控設計畫面規劃如下(EXP_accCAI) page 1 畫面設計

49

page 2 畫面設計與實驗一 page 2相同畫面 page 3 畫面設計與實驗二 page 4相同畫面

參數設定參考之前各實驗的說明可線上機動性的調整 PD控制器中的 kp和 kd值以調整系統之響應 實測響應圖

訊 號 說 明 訊 號 說 明 ch1 方波產生器產生之位置命令 ch3 馬達角位置 ch2 加減速模組輸出之位置命令 ch4 馬達角速度訊號

50

圖一 直流馬達經加減速控制後之閉迴路控制響應圖

51

65 實驗 5-正弦波的位置控制 實驗說明在本實驗中改變命令的波形由方波改變為正弦波並建立如下的測

試方塊圖與上一實驗相比較僅更改命令的波形產生方塊 方塊圖中的模組功能說明如下 1用 fg2產生測試用的弦波位置命令 2將弦波位置命令送到加減速控制方塊處理後產生新的位置命令再與 io1 讀入的位

置回授訊號送到 PD 控制器方塊中產生電壓控制訊號再透過 io2 模組將訊號送出到伺服介面驅動馬達轉動

對應之 plc檔程式說明(exp_sinplc) echo off 畫面顯示開始

run dsp 0 選擇 DSP1

run stop run reset 既有程式停止

run testDCMmem 下載指定程式

das 1 ampfg2out 0 1024 SIN 波形 Volt 設定 DAS 頻道1

das 2 ampcn1out 0 1024 加速控制 Volt 設定 DAS 頻道2

das 3 ampio1spd 0 1024 馬達速度 Volt 設定 DAS 頻道3

das 4 ampio1ang 0 1024 馬達角度 Volt 設定 DAS 頻道4

plot select 0 設定示波器頁數

plot xunit 100000 0 設定示波器 X軸

plot yunit 1 2000 -300 設定示波器 Y1 軸

plot yunit 2 2000 -100 設定示波器 Y2 軸

plot yunit 3 50 100 設定示波器 Y3 軸

plot yunit 4 2000 300 設定示波器 Y4 軸

plot trigger 1 0 1 10 設定示波器觸發

52

plot scope 9 1 2 3 4 設定示波器顯示

module io2 設定 io2 模組

s cmd ampcn2out

module fg2 設定 fg1 模組

s kAmp 2000 s kFrq 100

module cn1 設定 cn1 模組

s cmd ampfg2out

module cn2 設定 cn2 模組

s cmd ampcn1out s fdk ampio1ang s kp 0x300 s kd 0x4000

module ft1 設定 ft1 模組

s u ampfg2out s dt 2 s ka 320

module io3 設定 io3 模組

s led ampfg2out

module 回復預設模組

run 1khz 設定抽樣頻率為 4KHz

run start DSP 開始執行

das stop pause 1 DAS 啟動 das start DAS 啟動

echo on 回復正常訊息顯示

CAI操控設計畫面規劃如下(EXP_sinCAI) page 1 畫面設計

53

page 2 畫面設計 page 3 畫面設計與實驗二 page 4相同畫面

方塊的參數設定可調整 PD控制器中的 kp和 kd值以調整系統之響應 實測響應圖

訊 號 說 明 訊 號 說 明 ch1 弦波產生器產生之位置命令 ch3 馬達角位置訊號 ch2 加減速模組輸出之位置命令 ch4 馬達角速度訊號

54

直流馬達之閉迴路弦波加減速位置控制響應圖

55

7組合語言說明

本節將針對 DC馬達伺服控制實驗專用的程式模組進行功能與程式碼的說明其

有關於波形產生器與資料擷取模組等說明如下

SIN_waveasm 正弦波產生器 PWM_waveasm 方波產生器 IIR1_filterasm 一階濾波器 DAS4asm 資料蒐集模組

弦波產生器

此模組會產生週期性的正弦波方塊圖如下

outfrq

kBiasbias

ampkAmp

kFrqth

kThf=1TB

θ

A

其中

1正弦波有四個參數振幅(A)頻率(F)相位(θ)和偏移(B)其公式為 out = A sin(2πF t +θ) + B 2對於單純的正弦波產生器所對映的參數包括 kAmp 振幅值 kFrq 頻率值kFrq=655368000Hz其中 Hz的範圍為 0~4000例如 1000Hz =gt frq=8192 100Hz =gt frq=819 10Hz =gt frq=82 1Hz =gt frq=8 kTh 相角值0~255代表 0~360的相位當 th=0 時為正弦波 th=64 時為餘弦波 th=128時為反相波依此類推 kBias偏移值 3對於可調變的正弦波產生器其對映的輸入點為 amp 控制振幅的輸入點可產生調幅(AM)波形 frq 控制頻率的輸入點可產生調頻(FM)波形 th 控制相位的輸入點可產生調相(PM)波形 bias控制偏移的輸入點可產生雙頻混波(相加)波形 4若不使用調變功能時各個輸入點時的預設值為 amp 指向 kAmp 的位址 frq 指向 kFrq 的位址

56

th 指向 kTh 的位址 bias指向 kBias的位址

模組程式範例SIN_WAVEasm

local amp R0 IP kAmp 輸入點sin波的振幅 local frq R1 IP kFrq 輸入點sin波的頻率 local th R2 IP kTh 輸入點sin波的相角 local bias R3 IP kBias 輸入點sin波的中心偏移 local out R4 OP 輸出點sin波輸出 local tab R5 TP 表格指標指向 sin[256]的表格 local ang R6 內部變數相位角65536=360deg local kAmp R7 1000 參數振幅值 local kFrq R8 1000 參數頻率值=655368000Hz local kTh R9 0 參數相角值360deg=256 local kBias R10 0 參數偏移值 data 11 模組變數區長度及初值 initial 啟動程序 WR ang0 WR out0 ang=out=0 RET timer 即時控制程序(8KHz) RD ang ADD (frq) WR ang ang+=frq SFR 8 ADD (th) AND 255 ACC=sin(ang256+th) ADD tab WRH RDM table-look-up MUL (amp) SFR 12 ADD (bias) WR out out=ACCamp4096+bias RET table tab 256 sin[256]表格區10=4096 0 101 201 301 401 501 601 700 00~070deg 799 897 995 1092 1189 1285 1380 1474 08~0F 1567 1660 1751 1842 1931 2019 2106 2191 10~17 2276 2359 2440 2520 2598 2675 2751 2824 18~1F 2896 2967 3035 3102 3166 3229 3290 3349 20~27 3406 3461 3513 3564 3612 3659 3703 3745 28~2F 3784 3822 3857 3889 3920 3948 3973 3996 30~37 4017 4036 4052 4065 4076 4085 4091 4095 38~3F 4096 4095 4091 4085 4076 4065 4052 4036 40~4790deg 4017 3996 3973 3948 3920 3889 3857 3822 48~4F 3784 3745 3703 3659 3612 3564 3513 3461 50~57 3406 3349 3290 3229 3166 3102 3035 2967 58~5F

57

2896 2824 2751 2675 2598 2520 2440 2359 60~67 2276 2191 2106 2019 1931 1842 1751 1660 68~6F 1567 1474 1380 1285 1189 1092 995 897 70~77 799 700 601 501 401 301 201 101 78~7F 0 65435 65335 65235 65135 65035 64935 64836 80~87180deg 64737 64639 64541 64444 64347 64251 64156 64062 88~8F 63969 63876 63785 63694 63605 63517 63430 63345 90~97 63260 63177 63096 63016 62938 62861 62785 62712 98~9F 62640 62569 62501 62434 62370 62307 62246 62187 A0~A7 62130 62075 62023 61972 61924 61877 61833 61791 A8~A8 61752 61714 61679 61647 61616 61588 61563 61540 B0~B7 61519 61500 61484 61471 61460 61451 61445 61441 B8~BF 61440 61441 61445 61451 61460 61471 61484 61500 C0~C7270deg 61519 61540 61563 61588 61616 61647 61679 61714 C8~CF 61752 61791 61833 61877 61924 61972 62023 62075 D0~D7 62130 62187 62246 62307 62370 62434 62501 62569 D8~DF 62640 62712 62785 62861 62938 63016 63096 63177 E0~E7 63260 63345 63430 63517 63605 63694 63785 63876 E8~EF 63969 64062 64156 64251 64347 64444 64541 64639 F0~F7 64737 64836 64935 65035 65135 65235 65335 65435 F8~FF

就程式結構而言說明如下

timer 即時控制程序(8KHz) RD ang ADD (frq) WR ang ang+=frq SFR 8 ADD (th) AND 255 ACC=sin(ang256+th) ADD tab WRH RDM table-look-up MUL (amp) SFR 12 ADD (bias) WR out out=ACCamp4096+bias RET

1基本上我們以查表法計算 sin()其輸入θ的範圍為 0~255對映到 0~360deg其輸出 sin(θ)的範圍為+-4096對映到+-10的範圍

2建立一個內部變數 ang其範圍為 0~65535對映到 0~360的相位角 3每個timer程序都執行 ang+=frq的動作更新目前的相位角接著依照 ang的相位角查表得到 sin(ang256+th)值

4由於表格長度為 256-word所以必須將 ang256才能得到正確的對映關係而 th範圍為 0~255所以不需要像 ang一般的做額外處理

5sin()的範圍為(+1-1)而在表格中以(+4096~-4096)的型式記錄相當於 10=4096所以執行 Asin()時還要用 SFR12指令做4096的動作才能正確的取得輸出值

58

6就頻率輸入 frq而言其計算原則是將θ=ωt轉化成θ=Σ(ωdt)因為抽樣頻率

為 8KHz所以 dt=18000而得到 frq=655368000Hz公式其中 Hz為真正的頻率在 8KHz的抽樣頻率下其範圍為 0~4000

鋸齒波產生器

此模組會產生週期性的鋸齒波方塊圖如下

outfrq

kBiasbias

ampkAmp

kFrqth

kThf=1TB

θ

A

其中

1鋸齒波也有四個參數振幅(A)頻率(F)相位(θ)和偏移(B)和正弦波的定義完全一致唯一的差異是其輸出為鋸齒波而非正弦波

2基本波形是從週期開始時為 0一直遞增到週期結束時到達最高點然後立刻回歸

到 0重新開始 3以程式結構而論鋸齒波程式幾乎就是正弦波的相位計算部分只差沒有正弦波的

查表處理而已

模組程式範例SAW_WAVEasm

local amp R0 IP kAmp 輸入點sin波的振幅 local frq R1 IP kFrq 輸入點sin波的頻率 local th R2 IP kTh 輸入點sin波的相角 local bias R3 IP kBias 輸入點sin波的中心偏移 local out R4 OP 輸出點sin波輸出 local ang R5 內部變數相位角65536=360deg local kAmp R6 1000 參數振幅值 local kFrq R7 1000 參數頻率值=655368000Hz local kTh R8 0 參數相角值360deg=256 local kBias R9 0 參數偏移值 data 11 模組變數區長度及初值 initial 啟動程序 WR ang0 WR out0 ang=out=0 RET timer 即時控制程序(8KHz) RD ang ADD (frq) WR ang ang+=frq SFR 8 ADD (th) AND 255 ACC=(ang256+th)amp0x00ff MUL (amp) SFR 8 ADD (bias) WR out out=ACCamp256+bias

59

RET

脈衝波產生器

outfrq

kBiasbias

ampkAmp

kFrqth

kThf=1TB

θ

A

pwm

kDutyduty

此模組會產生週期性的脈衝波方塊圖如下

其中

1脈衝波有五個參數其中振幅(A)頻率(F)相位(θ)和偏移(B)四個參數和正弦波

定義完全一樣另外再增加一個負載率(D) 2基本波形是從週期開始時為 1隔段時間後換為 0然後持續到週期結束再重新開始其中 1所佔有的比例就是負載率當 D=0時為 0而 D=255時為 100

3和其他參數類似負載率(D)以 duty為其輸入點而以 kDuty為其參數值

模組程式範例PLS_WAVEasm

local amp R0 IP kAmp 輸入點脈衝波的振幅 local frq R1 IP kFrq 輸入點脈衝波的頻率 local th R2 IP kTh 輸入點脈衝波的相角 local bias R3 IP kBias 輸入點脈衝波的中心偏移 local duty R4 IP kDuty 輸入點脈衝波的負載率 local out R5 OP 輸出點脈衝波輸出 local ang R6 內部變數相位角65536=360deg local kAmp R7 1000 參數振幅值 local kFrq R8 1000 參數頻率值=655368000Hz local kTh R9 0 參數相角值360deg=256 local kBias R10 0 參數偏移值 local kDuty R11 128 參數負載率100 =256 data 12 模組變數區長度及初值 initial 啟動程序 WR ang0 WR out0 ang=out=0 RET timer 即時控制程序(8KHz)

60

RD ang ADD (frq) WR ang ang+=frq SFR 8 ADD (th) AND 255 ACC=(ang256+th)amp0x00ff SUB (duty) RD (amp) JLT t1 RD 0 ACC=(amp0) t1 ADD (bias) WR out out=ACC+bias RET

IIR 一階濾波器

此模組執行一階的 IIR濾波器方塊圖如下

kau x

Z-1

+

+

-

+低通濾波器

高通濾波器dx lp

hp

濾波器參數的計算公式如下

1假設濾波器的頻寬為 hz則 ωn=hz628 2若系統頻率為 8KHz則抽樣週期 dT為 dT=dt8000 其中 dt為模組參數 3則濾波器參數為 ka=ωndT4096或是 =hzdt62880004096即 =hzdt32 4當 dt決定後所允許的訊號頻寬為(4000dt)換句話說訊號頻寬會因為 dt增加而下降

為了方便實驗的運用下面列出常用的參數對照表

濾波頻寬

(Hz)

10 20 50 100 200 500 1000 2000

訊號頻寬

(Hz)

400 800 2000 4000 4000 4000 4000 4000

模組參數 dt 10 5 2 1 1 1 1 1

模組參數 ka 320 320 320 320 640 1600 3200 6400

表格的運用方式如下

1首先決定濾波頻寬 2接著查表找出對映的參數 dt和 ka 3再查表得到對映的訊號頻寬以決定是否需要串接前級濾波器

61

模組程式範例IIR1_FILTERasm

local u R0 IP 輸入點濾波器輸入 local lp R1 OP 輸出點低通濾波器輸出 local hp R2 OP 輸出點高通濾波器輸出 local dt R3 1 參數抽樣週期 local ka R4 4096 參數增益 ka10=4096 local prd R5 內部變數抽樣週期用 data 6 模組變數區長度 initial 開機啟動程序 WR lp0 WR hp0 WR prd1 RET lp=hp=0prd=1 timer 即時控制程序 SUB prd1 JNZ b9 if (--prdgt0) return RD dt WR prd prd=dt RD (u) SUB lp WR hp hp=u-lp MUL ka SFR 12 ADD lp WR lp lp+=(hpka4096) b9 RET

資料蒐集模組

資料蒐集模組是一個非常特殊的模組專門配合 eTTY 程式中的示波器使用

模組程式範例DAS4asm

local cmd R0 0 紀錄命令0=停止1=前置記錄2=正觸發4=負觸發6=觸發記錄 local dt R1 1 抽樣週期每 dT抽樣一次 local tab R2 TP DAS表格啟始位址 local cnt R3 0 目前記錄點(0~255) local ch1 R4 0 定義頻道1的變數位址 local ch2 R5 0 定義頻道2的變數位址 local ch3 R6 0 定義頻道3的變數位址 local ch4 R7 0 定義頻道4的變數位址 local trg R8 0 定義觸發頻道的變數位址 local th R9 0 觸發準位 local tail R10 0 觸發後的抽樣個數 local buf R11 1 抽樣計數(1~dt) local pnt R12 表格位址計算pnt=tab+cnt4 local len R13 表格長度計算(0~256) data 14 定義模組變數區的長度 table tab 1024 定義表格的長度 initial 啟動程序 WR cmd0 RET cmd=0 timer 控制程序

62

ADD cmd0 JZ t9 if (cmd==0) return SUB buf1 JNZ t9 if (--buf)gt0) return RD dt WR buf dt=buf RD cnt ADD 1 AND 0xff WR cnt cnt=(cnt+1)amp0xff SFL 2 ADD tab WR pnt pnt=tab+cnt4 RD (ch1) WR (pnt) ADD pnt1 pnt++=ch1 RD (ch2) WR (pnt) ADD pnt1 pnt++=ch2 RD (ch3) WR (pnt) ADD pnt1 pnt++=ch3 RD (ch4) WR (pnt) pnt =ch4 RD cmd SUB 1 JZ t9 SUB 1 JZ t2 SUB 1 JZ t3 SUB 1 JZ t4 SUB 1 JZ t5 SUB 1 JZ t6 JR t7 t2 RD (trg) SUB th JGE t9 ADD cmd1 JR t9 wait trgltth t3 RD (trg) SUB th JLE t9 JR t6 wait trggtth t4 RD (trg) SUB th JLE t9 ADD cmd1 JR t9 wait trggtth t5 RD (trg) SUB th JGE t9 JR t6 wait trgltth t6 WR len0 WR cmd7 len=0cmd=7 t7 ADD len1 SUB tail JLT t9 WR cmd0 if ((++len)gt=0x80) cmd=0 t9 RET

與 DC 馬達控制相關的程式模組有以下 4個程式模組說明如下

(1)加減速控制模組 ACC_controlasm (2)光電盤輸入模組 POS_inputasm (3)PWM輸出模組 PWM_outputasm (4)PD控制模組 PD_controlasm

71加減速控制模組 此程式模組主要功能在於執行位置控制的加減速命令修正其數學模式採用 Lynn

濾波器的架構參見下圖

cmd

2

+

old Z -1

-

Z -1

Z -1

Z-1

Z-1x0 x1 x8 x9 x16

+ -

++

2

Z-1

Z-1 y1 y2

+

-

y0

+ +

sumZ-1

+164

12

out

dif

+

63

加減速控制模組方塊圖

其中

1Lynn 濾波器的階數固定成八階也就是 m=8其公式為 H(z) = (1-2Z-m+Z-2m)(1-2Z-1+Z-2)m2

2因為m=8所以m2=64因此最後計算低通濾波的部份時要先做除 64的運算 3因為低通濾波(lp)和 y0之間有 64倍的差異代表 y0y1y2的變化範圍比濾波器輸

入值要擴大許多例如輸入值在+-1000變化時y0y1y2很可能會在+-64000之間變化這範圍已經超出整數處理的範圍很可能會造成錯誤的計算結果

4所以在實驗時輸入值的變化範圍必須控制在+-500之間以保證計算的正確性 5對於 Lynn 濾波器當 m=8時其濾波器的頻寬固定為 1 kHzmdt也就是 dt=1時頻寬為 125 Hz dt=2時頻寬為 625Hz依此類推 6對於 Lynn 濾波器其濾波器的延遲固定為 m個抽樣週期因此設計 hp = x8 - lp 即可得到高通濾波器的對應結果 7其中乘 2和除 64的運算以移位運算取代所以整個程式中並無任何乘法運算 8Lynn 濾波器本身並不是穩定濾波器所以在程式啟動時必須確實的將所有狀態

(x0~x16)歸零否則會產生不穩定的狀態輸出

因為 Lynn濾波器中所有參數固定所以除了抽樣週期 dt 之外並無任何可調參數

抽樣週期 dt 可以控制頻寬dt 越大則濾波器頻寬越低

將步階命令值的輸出送入 Lynn 濾波器中經由低通濾波器的效應可以減緩命

令的變化程度達到加減速控制的目的以下為使用 Lynn 濾波器型式實現加減速控

制的組合語言程式列印 如欲更進一步瞭解 Lynn 濾波器與 FIR 數位濾波器之間的關係可以參考通訊實驗

四數位濾波器設計(FIR)中之說明

ACC_controlasm程式列印 local cmd R0 IP 輸入點位置命令

local out R1 OP 輸出點加減速處理後的位置命令

local dif R2 OP 輸出點位置微分命令

local axis R3 0 馬達編號0=X1=Y2=Z3=C

local old R4 內部變數微分計算用

local sumL R5 內部變數積分計算用

local sumH R6 內部變數積分計算用

local y0 R7 內部變數y(0~2)

local y1 R8 local y2 R9

local x0 R10 內部變數x(0~16)

local x1 R11 local x2 R12 local x3 R13 local x4 R14

local x5 R15 local x6 R16 local x7 R17 local x8 R18

local x9 R19 local x10 R20 local x11 R21 local x12 R22

local x13 R23 local x14 R24 local x15 R25 local x16 R26

64

data 27 模組變數區長度

initial 開機啟動程序

WR dif0 RD (cmd) WR out WR old dif=0 out=old=cmd

sumHL=cmd64

SFL 6 WR sumL RD out SFR 10 SGN 5 WR sumH

RPT 17 WR x00 RPT 3 WR y00 RET x[0~16]=0y[0~2]=0

timer 即時控制程序

RD (cmd) SUBX old WR x0 x0=cmd-old old=cmd

SUB x81 ADD x16 ADD y11 SUB y2 WR y0 y0=x0-2x8+x16+2y1-y2

SGN ADD sumL WR sumL RDH ADC sumH WR sumH sumHL+=y0

WRH RD sumL SFR 6 WR out out=sumHL64

RD y0 SGN SFR WR dif dif=y032mm

RD x0 RPT 16 RDX x1 x[i]=x[i-1] i=1~16

RD y0 RDX y1 WR y2 y[i]=y[i-1] i=1~2

b9 RET

72光電盤輸入模組

DC馬達的位置由光電盤量測之預設儲存於 0xac與 0xbe二個輸入埠位址中其中位址 0xac記錄 X軸馬達的位置位址 0xbe記錄 Y軸馬達的位置由於本實驗的DC馬達接在 Y軸的位置上因此程式中直接選用 Y軸的輸入 光電盤位置輸入的程式列印如下其中速度由位置的差分而得至於馬達的位置

則使用內部 2個 word加以記錄精度為 32位元 POS_inputasm程式列印 local spd R0 OP 輸出點速度量測值

local ang R1 OP 輸出點角度量測值

local angH R2 內部變數角度的 32 位元部分

local mode R3 0x308 模式選擇15MHzAB 相正反向輸入

local pht R4 0xac 輸入阜地址光電盤輸入(0xac)

local phtc R5 0xbe 輸入阜地址光電盤模式(0xbe)

local old R6 內部變數速度更新用

data 7 模組變數區長度

initial 開機啟動程序

RD mode WR (phtc) phtc=mode

RD (pht) WR old WR spd0 RET old=phtspd=0

timer 即時控制程序

RD (pht) SUBX old SGN 11 WR spd spd=(pht-old)old=pht

65

ADD ang WR ang angHL+=spd

RDH ADC angH WR angH

RET

73 PWM輸出控制模組 模組方塊

cmd PWM輸出

程式說明 1在開機時將切換保護時間寫到輸出阜 0xbc上其中切換保護值為 0~6360=5us 2在每次 timer interrupt時將 cmd訊號處理後寫到輸出阜 0xb8上

PWM_outputasm程式列印 local cmd R0 IP gnd 輸入點v相命令

local gain R1 4096 參數輸出增益1=4096

local bias R2 2048 參數輸出偏壓0=2048

local limit R3 4095 參數輸出極限1=4095

local zone R4 0x88f0 參數頻率=12KHz切換保護=5us

local pwm R5 0xb8 輸出阜地址PWM0 輸出(0xb8)

local mode R6 0xbc 輸出阜地址PWM 模式(0xbc)

local p0md R7 0xf8 輸出阜地址port0 模式(0xf8)

local gnd R8 0 輸入接地點

data 9 模組變數區長度

initial 開機啟動程序

RD bias WR (pwm) pwm=bias

RD 0xffff WR (p0md) set port0 mode

RD zone WR (mode) RET mode=zone

stop 關機保護程序

RD bias WR (pwm) RET pwm=bias

timer 即時控制程序

RD (mode) xor 1 and 1 WR (mode) trigger watch-dog

RD (cmd) MUL gain SFR 12 ADD bias ACC=(cmdgain4096)+bias

MAX 0 MIN limit WR (pwm) pwm=limit(ACC)

RET

66

74 PD 控制模組

PD控制的模組方塊參見圖二十一所示其中比例控制的部份直接由增益 kp加以調整微分控制的部份則由誤差的差分經增益 kd的調整而得

Σ+

-

cmd

fdk

err out

Σ

pk

dk

Σ

+

+

+

-

old1minusZ

PD控制器的方塊圖

PD_controlasm程式列印 local cmd R0 IP gnd 輸入點位置命令(可忽略)

local fdk R1 IP gnd 輸入點位置回授(可忽略)

local out R2 OP 輸出點用以控制速度迴路

local kp R3 256 參數增益 kp10=256

local kd R4 0 參數增益 kd10=256

local err R5 0 內部變數

local old R6 0 內部變數

local gnd R7 0 無輸入時的短路點

data 8 模組變數區長度

initial 開機啟動程序

WR out0 WR old0 RET out=old=0

timer 即時控制程序

RD (cmd) SUB (fdk) PRTF WR err

MUL kp SFR 8 P=(cmd-fdk)kp256

RDS err SUBX old MUL kd SFR 8 D=(err-old)kd256

ADDS

WR out out=P+D

RET

程式中預設增益值的 10以整數值 256為基底因此使用 SFR 8的指令加以調

整另外在在計算微分項的程式部份用到 SUBX old的指令其詳細的暫存器動作如

下 參考 piDSP的指令說明SUBX指令將總共用到 3個時序參考錯誤 找不到參照

67

來源在時序 1時將原先 AX的資料拷貝一份到 HX中時序 2時正式執行減

法的動作所以 AX暫存器中的內容會變成 err-old時序 3時DSP會將存放在 HX暫存器中的內容拷貝一份到 old的記憶體中也就是經由 SUBX此一精簡指令將

同時完成計算差分所需要的相減與資料疊代的動作有效的利用 piDSP控制器 DSP核心的精簡指令將可以大幅提昇系統的計算速度

HX AXoldSUBXerr err

old

err

errerr olderr minus

1_err

errerr olderr minus err

1_err

1

2

3

SUBX的指令時序與暫存器變化

68

8附錄快速安裝說明

光纖網路通訊 FPGA 發展系統 (適用於 WIN-XP200098 系統)

快速安裝說明

26Pin 負載輸出入埠

雙電源︵5

12

伏︶輸入埠

單電源︵5

伏︶輸入埠

USB

光纖線輸

號 光纖線輸出埠

入 傳 埠

首先將光碟片 RFFPGA 目錄檔案拷貝在您工作硬碟裡面

第一次安裝時先將 USB 傳輸線接上電腦主機將電源供應器接上 FPGA 模組此時電

腦會出現安裝 USB-Serial 驅動程式選擇從清單安裝此驅動程式放置在光碟片

RFFPGA-USBdrive 選擇您目前安裝系統

可選擇 WIN-98WIN-MEWIN-2000WIN-XP 系統配合您現在工作電腦作業系統

69

注意一般電腦 USB 埠很多插口當您安裝驅動程式時是配合您當時插入之埠

下次如您插入不同接口埠時電腦會再次要求安裝驅動程式這是正常現象請再次安

裝驅動程式否則無法使用

FPLC 操作

首先進入 RFFPGA裡子目錄 testASM直接點選 fPLCexe 出現下面操作畫面(也可直接將

此檔案放置桌面直接點選)

(或者選擇 File 再執行 Setuphellip 選擇您要執行 CAI 檔)

70

進入下面操作畫面 首先使用滑鼠在 FPGA下載按鈕單擊動作使 FPGA變成 DSP晶片 實驗一至實驗五皆為使用 DSP組合語言設計程式其原始程式分別為 testASM1至testASM5可使用 texPad 開啟與編輯程式內容 實驗三與實驗五多有 IO控制動作 當選擇實驗三時出現下面畫面

71

eM_USB 模組

數字型 LED

0 1 2 34 5 6 78 9 A BC D E F

燈號型 LED

44 鍵盤

ADC0 ADC1 DAC0 DAC1

LED 選擇KEY 選擇

模 式 1

0123

注意操作畫面 3與 4 說明開關與按鍵選擇位置後選擇程式下載再按程式啟動如您

按下 0-3按鍵時燈號型 LED會有不同方向閃爍顯示程式停止時結束所有 IO控制動作再按回首頁選擇其他實驗 實驗四與實驗五

模式3

0 1 2 34 5 6 78 9 A BC D E F

按照上面開關選擇直接操作如果以上實驗皆能按照正常操作表示您光纖網路通訊

FPGA發展模組以能正常使用 注意 開機與關機動作順序如下

開機電腦啟動 --- eM_USB 模組電源接上 --- USB 接上電腦 ---

啟動 FPLC 軟體 --- 下載 FPGA 程式

關機關閉 FPLC 軟體 --- eM_USB 模組電源拔掉 --- 拔掉電腦 USB 接頭 ---關掉

電腦

如果以上順序有亂可能造成 USB 找不到驅動造成無法下載經過幾次測試還是

無法下載建議重新啟動電腦主機按照正確步驟操作

72

FPGA 下載操作

進入 FPLC 操作系統按照下列步驟選擇節點模組與下載 bit FPGA 檔案

在 VHDLDEMO 子目錄下您可以選擇您目前 FPGA 種類型號在此型號下我們已將 VHDL

與數位邏輯設計課本範例全部放於此處

73

光纖網路連線 FPGA 下載操作

首先利用光纖線將 eM_USB0 模組光纖輸出埠接至 eM_USB1 模組光纖輸入埠以此

類推最後再將最後 eM_USBN 模組光纖輸出埠接至 eM_USB0 模組光纖輸入埠配置

如附圖方式

個人電腦(Windows) eM_USB模組

0USB

eM_USB模組1

光纖網路

eM_USB模組2

eM_USB模組N

配置完成後進入 FPLC 系統首先必須先將 Node00 下載在 testASM 子目錄裡

piDSPv0bit 檔讓 eM_USB0 模組 FPGA 具備 DSP 功能才能執行光纖網路通訊

操作如下

此時您就可以選擇分別下載至各模組 FPGA 檔 bit

74

安裝 FPLC 注意事項

當您進入 FPLC 時

按 FILE 選擇 programhellip 選擇檔案為 exp_dcmplc 出現下面畫面

正常顯示畫面為

75

DOS 環境操作

在 PC 端的操作是在 Windows 環境中的 DOS 視窗中執行指令範例如下

eFPGA progNETbit 下載 FPGA電路至網路節點0(即 USB節點)中 eFPGA testLEDbit 1 下載 FPGA電路至網路節點1中

對於單一節點的控制程序如下

1將 eM_USB模組連結個人電腦的 USB端 2eM_USB模組開機 3執行下載指令即可 eFPGA xxxxbit 4若要更改 FPGA電路只要重新執行下載指令即可

對於多個網路節點的控制程序如下

1第一組 eM_USB模組連結個人電腦的 USB端再以光纖網路依序其他各節點 2連接 USB界面者為模組0從光纖發射端連接出去的模組為1依此類推 3將所有 eM_USB模組開機 4執行下載指令如下 eFPGA progNETbit 模組0必須先下載指定的 FPGA電路 eFPGA xxxxbit 1 再依序下載其他網路模組的 FPGA電路 eFPGA yyyybit 2 eFPGA zzzzbit 最後再重新下載模組0的 FPGA電路 5換句話說模組0必須先執行 progNETbit讓光纖網路接受 FPGA控制後才能透過光纖網路下載至其他節點等全部網路節點下載完畢後再將模組0的 FPGA重新下載讓模組0也可自由執行任意的 FPGA電路

6若要更改某一個網路節點中的 FPGA電路只要重新執行下述指令 eFPGA progNETbit 模組0必須先下載指定的 FPGA電路 eFPGA yyyybit 2 下載指定網路模組的 FPGA電路 eFPGA zzzz bit 最後再重新下載模組0的 FPGA電路 換句話說除非模組0中的 FPGA已經包括光纖網路管理電路否則一定要先在

模組0中下載網路管理電路後才能下載指定網路節點的 FPGA電路

76

光纖網路通訊 FPGA 發展系統

系統配置

光纖網路通訊 FPGA 發展系統的系統配置圖如下

個人電腦(Windows) eM_USB模組

0USB

eM_USB模組1

光纖網路

eM_USB模組2

eM_USB模組N

其中

1基本模組為 eM_USB模組可用 USB界面和個人電腦連線並提供 USB對光纖網路的轉換功能使得個人電腦可以獨立控制光纖網路中的每個網路節點

2eM_USB模組也可以作為光纖網路中的網路節點透過光纖網路而接受個人電腦的

監控 3就個人電腦而言不論是 USB界面直接連結或是以光纖網路間接連結的 eM_USB模組都是可以直接監控的網路節點最多可以同時控制一個 USB節點和 30個網路節點

4對於每一個網路節點個人電腦都可執行 eM_USB模組中 FPGA的電路下載工作並在適當的 FPGA電路配合下可執行 eM_USB模組中 FPGA內部電路的讀寫控制 5透過適當的 FPGA電路設計各網路節點都可透過光纖網路和其他任何網路節點

作同步通訊執行 FPGA內部記憶體的資料交換資料交換頻率可達 1KHz以上

77

網路模組配置

每個網路模組的標準配置圖如下

eM_USB模組光纖網路

USB eM_FPGA卡

eM_DEMO模組

eM_EXP實驗模組

DC電源

其中

1網路模組以 eM_USB模組為主提供基本的 USB界面和光纖網路連線 2eM_USB模組中的 FPGACPLD採用插卡型式可選擇不同的 eM_FPGA卡包括

eM_2V1K卡可選用 Virtex系列的 XC2V250和 XC2V1000 eM_3S1K卡可選用 Spartan3系列的 XC3S400XC3S1000和 XC3S1500 eM_3S50卡可選用 Spartan3系列的 XC3S50XC3S200和 XC3S400 eM_95XL卡可選用 9500XL系列的 XC95144XL和 XC95288XL 3eM_USB模組中的對外連線有兩種一種是 26P接頭用以連接既有的各種實驗模

組另一種是兩組 50P接頭將 FPGA中各接腳引出用以連接專題實驗 4eM_DEMO模組就是插上 50P接頭的教學模組其中包括 LED 數字顯示和 44鍵盤也具備兩組的 ADC和兩組的 DAC接頭提供類比訊號的測試工具

常用的實驗組合包括

1精簡組合包括(eM_USB+eM_FPGA)提供基本的網路節點適用於專題實驗 2標準組合包括(eM_USB+eM_FPGA+eM_DEMO)提供基礎 FPGA設計的教學實驗

3實驗組合包括(eM_USB+eM_FPGA+eM_DEMO+eM_EXP)提供進階的 FPGA實驗可依需求選用不同的實驗模組

78

eM_USB 模組

eM_USB 模組的電路配置圖如下

TxRx

DCPower

USB

JP2

JP3

光纖界面

外加電源

PC連線

JP1

eM_FPGA模組

FT232 CPLD FlashROM

SRAM

10cm

6cm

JP4

其中

1對外的連線接頭包括 DC電源 可選擇單電源(5V)或是多電源(5V+12V-12V)兩種 USB界面 直接連接個人電腦 光纖界面連接光纖網路 2實驗界面包括 JP1負責內部 CPLD的電路下載 JP2JP3兩組 50P的擴張用接頭 JP4 標準 26P接頭用以連接各種實驗模組 3內部的電路配置包括 A以 SO-DIMM接頭連接各種 eM_FPGA卡 B內附 EEPROMFlashROM和 SRAM提供 FPGA作應用測試 C以一顆 FT232BM作為 USB界面解碼而以一顆 CPLD作為光纖網路解碼 D提供各種 eM_FPGA卡的電路下載功能 4內附五顆 LED由上而下依序為 usbLED指示 USB界面的讀寫狀態 tstLED可由 FPGA電路自行定義 stsLED可由 FPGA電路自行定義 RxLED 可由 FPGA電路自行定義 TxLED 可由 FPGA電路自行定義

79

外部接腳定義

外部接頭的接點順序圖示如下

上視圖

JP11 9 JP4

126225

JP31

50249

JP21

50249

而各接頭的接點定義如下

JP1 JP4 JP2 JP3 1+33V 1+12V 2+12V 1 GND 2 GND 1 GND 2 GND 2GND 3 ADC 4 DAC 3POWER 4ALARM 3 +5V 4 +5V 3nc 5 yPB2 6 yPB3 5RxNET 6TxNET 5+12V 6+12V 4TCK 7 yPB1 6 yPB4 7RxUSB 6TxUSB 7-12V 6-12V 5nc 9 yPB0 10yPB5 9RxCAN 10TxCAN 9 ADC 10 DAC 6TDO 11yPB6 12yPB7 11P0D0 12P0D1 11P1D0 12P1D1 7TDI 13yGND 14yPC3 13P0D2 14P0D3 13P1D2 14P1D3 8nc 15yPC2 16yPC1 15P0D4 16P0D5 15P1D4 16P1D5 9TMS 17yPC0 18yPA0 17P0D6 18P0D7 17P1D6 18P1D7 19yPA1 20yPA2 19P0D8 20P0D9 19P1D8 20P1D9 21yPA3 22GND 21P0D10 22P0D11 21P1D10 22P1D11 23GND 24+5V 23P0D12 24P0D13 23P1D12 24P1D13 25+5V 26nc 25P0D14 26P0D15 25P1D14 26P1D15 27P2D0 28P2D1 27PxA0 28PxA1 29P2D2 30P2D3 29PxA2 30PxA3 31P2D4 32P2D5 31PxA4 32PxA5 33P2D6 34P2D7 33PxA6 34PxA7 35P2D8 36P2D9 35PxB0 36PxB1 37P2D10 38P2D11 37PxB2 38PxB3 39P2D12 40P2D13 39PxB4 40PxB5 41P2D14 42P2D15 41PxB6 42PxB7 43ADC0 44ADC1 43PxC0 44PxC1 45ADC2 46ADC3 45PxC2 46PxC3 47ADC4 48ADC5 47PxC4 48PxC5 49DAC0 50DAC1 49PxC6 50PxC7

80

eM_FPGA 模組

在各種 eM_FPGA 模組中FPGA 對外電路的標準配置圖如下

24576MHz

FlashROM

26PSRAM

EEPROM

mD[8]

yPA[4]

FPGACPLD

mA[19]mRDmWRmCSeeCKeeCSeeDIeeDO

光纖界面 RxNETTxNET

USB 界面 RxUSBTxUSBCLK24MPOWERALARM

LED

tstLEDstsLEDRxLEDTxLED

yPB[8]yPC[4]

ADCDAC

ADC[8]

實驗模組

ADC[2]

DAC[2]

xPA[4]

xPB[8]

xPC[4]

基礎實驗

其中

1FPGACPLD可以選擇下述幾種 XC2V250XC2V1000 採用 eM_2V1K模組其中 FPGA為 FG456包裝 XC3S400XC3S1000XC3S1500採用 eM_3S1K模組其中 FPGA為 FG456包裝 XC3S400XC3S1000XC3S1500採用 eM_3S1K模組其中 FPGA為 FG456包裝 XC3S50XC3S200XC3S400 採用 eM_3S50模組其中 FPGA為 TQ144包裝 XC95144XLXC95288XL 採用 eM_95XL模組其中 CPLD為 TQ144包裝 2採用 FG456包裝者可以控制所有的 IO界面 3採用 TQ144包裝者只是不能控制 RAM和 FlashROM而可以控制其他所有的界面 4所有 FPGA模組都可自由選擇由 USB界面或是由光纖界面下載電路但是 CPLD模組只能固定由 USB界面下載電路

5所有 FPGACPLD模組都可透過 26P接頭連接既有的各種實驗模組

81

FPGA 接腳對照表

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

mD0 XD6 mD0 A17 C13 -- -- mD1 XD7 mD1 B17 D12 -- -- mD2 XD8 mD2 C17 D11 -- -- mD3 XD9 mD3 D17 C11 -- -- mD4 XD10 mD4 E17 D10 -- -- mD5 XD11 mD5 E16 C10 -- -- mD6 XD12 mD6 E14 D9 -- -- mD7 XD13 mD7 E13 D7 -- -- mA0 XD14 mA0 D13 C7 -- -- mA1 XD15 mA1 C13 D6 -- -- mA2 XA0 mA2 V5 C3 -- -- mA3 XA1 mA3 U5 C4 -- -- mA4 XA2 mA4 Y2 D3 -- -- mA5 XA3 mA5 Y1 D4 -- -- mA6 XA4 mA6 V4 E3 -- -- mA7 XA5 mA7 V3 E4 -- -- mA8 XA6 mA8 W2 F3 -- -- mA9 XA7 mA9 W1 F4 -- -- mA10 XA8 mA10 T2 G6 -- -- mA11 XA9 mA11 T1 K3 -- -- mA12 XA10 mA12 R4 K10 -- -- mA13 XA11 mA13 R3 L3 -- -- mA14 XA12 mA14 R2 L4 -- -- mRD XRD mRD R1 D5 -- -- mWR XWR mWR P6 C6 -- --

POWER P0A0 POWER B4 B20 P1 P5 ALARM P0A1 ALARM A4 A19 P2 P6 RxNET P0A2 RxNET C4 B19 P4 P7 TxNET P0A3 TxNET C5 A18 P5 P9 RxUSB P0B0 RxUSB B5 A15 P6 P10 TxUSB P0B1 TxUSB A5 B15 P7 P11 RxCAN P0B2 RxCAN D6 A14 P8 P12 RxCAN P0B3 TxCAN C6 B14 P10 P13

CLK24M CLK24M CLK24M E12 B12 P124 P38

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

PWM0H P3A0 P0D0 E6 A8 P21 P23 PWM0L P3A1 P0D1 E5 B8 P23 P24 PWM1H P3A2 P0D2 C2 B6 P24 P25 PWM1L P3A3 P0D3 C1 A5 P25 P26 PWM2H P3A4 P0D4 D2 B5 P26 P27

82

PWM2L P3A5 P0D5 D1 A4 P27 P28 PWMenb P3A6 P0D6 E4 B4 P28 P30 PHT1Z P3A7 P0D7 E3 A3 P30 P31 PHT1A P3B0 P0D8 G2 C1 P31 P32 PHT1B P3B1 P0D9 G1 C2 P32 P33 PHT0A P3B2 P0D10 H5 D1 P33 P34 PHT0B P3B3 P0D11 J6 D2 P35 P35 AMP0 P3B4 P0D12 H4 E1 P36 P39 AMP1 P3B5 P0D13 H3 E2 P40 P40 AMP2 P3B6 P0D14 H2 F2 P41 P41 AMP3 P3B7 P0D15 H1 G1 P44 P43 eeSK P0C3 P1D0 C10 B9 P20 P22 eeCS P0C2 P1D1 D10 A9 P18 P21 eeDI P0C1 P1D2 F10 B10 P17 P20 eeDO P0C0 P1D3 E10 B11 P15 P19 ssCK P0B7 P1D4 E8 A11 P14 P17 ssCS P0B6 P1D5 E7 A12 P13 P16 ssDI P0B5 P1D6 A6 B13 P12 P15 ssDO P0B4 P1D7 B6 A13 P11 P14

ppCLK P3C0 P1D8 K4 G2 P46 P44 ppDIN P3C1 P1D9 K3 K1 P47 P45 TxD P3C2 P1D10 K2 K2 P50 P46 RxD P3C3 P1D11 K1 L1 P51 P48

tstLED P3C4 P1D12 L5 L2 P52 P49 stsLED P3C5 P1D13 L4 M1 P53 P50 RxLED P3C6 P1D14 L3 M2 P55 P51 TxLED P3C7 P1D15 L2 N1 P56 P52

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

xPA0 P2A0 P2D0 AA3 N2 P59 P53 xPA1 P2A1 P2D1 Y4 T1 P60 P54 xPA2 P2A2 P2D2 AA4 T2 P63 P56 xPA3 P2A3 P2D3 AB4 U2 P68 P57 xPC0 P2A4 P2D4 W5 V1 P69 P58 xPC1 P2A5 P2D5 Y5 V2 P70 P59 xPC2 P2A6 P2D6 AA5 W1 P73 P60 xPC3 P2A7 P2D7 AB5 W2 P74 P61

-- P2B0 P2D8 V6 Y1 P76 P64 -- P2B1 P2D9 V7 Y2 P77 P66 -- P2B2 P2D10 W6 AA3 P78 P68

mCS P2B3 P2D11 Y6 AB4 P79 P69 mA15 P2B4 P2D12 V9 AA4 P80 P70 mA16 P2B5 P2D13 V10 AB5 P82 P71 mA17 P2B6 P2D14 W10 AA5 P83 P74 mA18 P2B7 P2D15 Y10 AA6 P84 P75 CS0 P2C0 ADC0 AA10 AB8 P85 P76

83

SDIN0 P2C1 ADC1 AB10 AA8 P86 P77 CS1 P2C2 ADC2 U10 AB9 P87 P78

SDIN1 P2C3 ADC3 U11 AA9 P89 P79 SCLK P2C4 ADC4 V11 AB10 P90 P80 CS2 P2C5 ADC5 W11 AA10 P92 P81

SDOUT P2C6 ADC6 Y11 AB11 P93 P82 LDAC P2C7 ADC7 AA11 AA11 P95 P83

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

xPB0 P1A0 PxA0 M1 M3 P135 P85 xPB1 P1A1 PxA1 M2 M4 P132 P86 yPB2 P1A2 PxA2 M3 N3 P131 P87 yPB3 P1A3 PxA3 M4 N4 P130 P88 yPB1 P1A4 PxA4 M5 T4 P129 P91 yPB4 P1A5 PxA5 M6 T5 P128 P92 yPB0 P1A6 PxA6 N1 U3 P127 P93 yPB5 P1A7 PxA7 N2 U4 P125 P94 yPB6 P1B0 PxB0 U13 V3 P119 P95 yPB7 P1B1 PxB1 V13 V4 P118 P96 xPB2 P1B2 PxB2 W13 W3 P116 P97 xPB3 P1B3 PxB3 Y13 W4 P113 P98 xPB4 P1B4 PxB4 AA13 Y3 P112 P100 xPB5 P1B5 PxB5 AB13 Y4 P96 P101 yPC3 P1B6 PxB6 U12 Y5 P97 P102 yPC2 P1B7 PxB7 V12 W5 P98 P103 yPC1 P1C7 PxC0 AB17 W11 P108 P113 yPC0 P1C6 PxC1 AA17 Y11 P107 P112 yPA0 P1C5 PxC2 Y17 W10 P105 P111 yPA1 P1C4 PxC3 W17 Y10 P104 P110 yPA2 P1C3 PxC4 AB18 W9 P103 P107 yPA3 P1C2 PxC5 AA18 W8 P102 P106 xPB6 P1C1 PxC6 Y18 W6 P100 P105 xPB7 P1C0 PxC7 W18 Y6 P99 P104

84

eM_DEMO 模組

eM_DEMO 模組的電路配置圖如下

eM_USB 模組

數字型 LED

0 1 2 34 5 6 78 9 A BC D E F

燈號型 LED

44 鍵盤

ADC0 ADC1 DAC0 DAC1

LED 選擇KEY 選擇

其中

1eM_DEMO模組的基本功能包括 A將 xPAxPBxPC等 16個 IO訊號引出控制 LED和鍵盤電路 B將 ADDA訊號引出並放大成+-10V的工作範圍 2LED和鍵盤可以選擇三種模式由 LED和 KEY 兩組開關作選擇圖示如下

模式1

0123

模式2 模式3

0 1 2 34 5 6 78 9 A BC D E F

0123

3模式14鍵輸入並搭配 16點的 LED燈號顯示其中 16點 LED分別對映到 xPA[0~3]xPB[0~7]和 xPC[0~3] 4組按鍵分別對映到 xPC[0~3] 4模式24鍵輸入並搭配四個 7段式數字顯示其中 數字顯示由 xPA[0~3]作數字掃瞄而由 xPB[0~7]作 7段式 LED控制 4組按鍵 分別對映到 xPC[0~3] 5模式316鍵輸入並搭配四個 7段式數字顯示其中 數字顯示由 xPA[0~3]作數字掃瞄而由 xPB[0~7]作 7段式 LED控制 16組按鍵由 xPA[0~3]作鍵盤掃瞄而由 xPC[0~3]作鍵盤讀取 6根據VHDL與數位邏輯設計的章節其中 第 1章至 10章的實驗採用模式1而 第 11章實驗採用模式2而 第 12章之後的實驗都採用模式3

85

FPGA UCF 定義

eM_3S1K 模組

NET CLK LOC = B12

NET XAlt0gt LOC = N2

NET XAlt1gt LOC = T1

NET XAlt2gt LOC = T2

NET XAlt3gt LOC = U2

NET XBlt0gt LOC = M3

NET XBlt1gt LOC = M4

NET XBlt2gt LOC = W3

NET XBlt3gt LOC = W4

NET XBlt4gt LOC = Y3

NET XBlt5gt LOC = Y4

NET XBlt6gt LOC = W6

NET XBlt7gt LOC = Y6

NET XClt0gt LOC = V1

NET XClt1gt LOC = V2

NET XClt2gt LOC = W1

NET XClt3gt LOC = W2

NET YAlt0gt LOC = W10

JP4 接頭

NET YAlt1gt LOC = Y10

NET YAlt2gt LOC = W9

NET YAlt3gt LOC = W8

NET YBlt0gt LOC = U3

NET YBlt1gt LOC = T4

NET YBlt2gt LOC = N3

NET YBlt3gt LOC = N4

NET YBlt4gt LOC = T5

NET YBlt5gt LOC = U4

NET YBlt6gt LOC = V3

NET YBlt7gt LOC = V4

NET YClt0gt LOC = Y11

NET YClt1gt LOC = W11

NET YClt2gt LOC = W5

NET YClt3gt LOC = Y5

在光碟片中 RFFPGAVHDLDEMOBIT3S1K 裡有 VHDL 與數位邏輯設計書本範例原始檔與合成檔

86

eM_3S50 模組

NET CLK LOC = P124

NET XAlt0gt LOC = P59

NET XAlt1gt LOC = P60

NET XAlt2gt LOC = P63

NET XAlt3gt LOC = P68

NET XBlt0gt LOC = P135

NET XBlt1gt LOC = P132

NET XBlt2gt LOC = P116

NET XBlt3gt LOC = P113

NET XBlt4gt LOC = P112

NET XBlt5gt LOC = P96

NET XBlt6gt LOC = P100

NET XBlt7gt LOC = P99

NET XClt0gt LOC = P69

NET XClt1gt LOC = P70

NET XClt2gt LOC = P73

NET XClt3gt LOC = P74

NET YAlt0gt LOC = P105

JP4 接頭

NET YAlt1gt LOC = P104

NET YAlt2gt LOC = P103

NET YAlt3gt LOC = P102

NET YBlt0gt LOC = P127

NET YBlt1gt LOC = P129

NET YBlt2gt LOC = P131

NET YBlt3gt LOC = P130

NET YBlt4gt LOC = P128

NET YBlt5gt LOC = P125

NET YBlt6gt LOC = P119

NET YBlt7gt LOC = P118

NET YClt0gt LOC = P107

NET YClt1gt LOC = P108

NET YClt2gt LOC = P98

NET YClt3gt LOC = P97

在光碟片中 RFFPGAVHDLDEMOBIT3S200 裡有VHDL與數位邏輯設計書本範例原始檔與合成檔

87

eM_95XL 模組

NET CLK LOC = SPIN38

NET XAlt0gt LOC = SPIN53

NET XAlt1gt LOC = SPIN54

NET XAlt2gt LOC = SPIN56

NET XAlt3gt LOC = SPIN57

NET XBlt0gt LOC = SPIN85

NET XBlt1gt LOC = SPIN86

NET XBlt2gt LOC = SPIN97

NET XBlt3gt LOC = SPIN98

NET XBlt4gt LOC = SPIN100

NET XBlt5gt LOC = SPIN101

NET XBlt6gt LOC = SPIN105

NET XBlt7gt LOC = SPIN104

NET XClt0gt LOC = SPIN58

NET XClt1gt LOC = SPIN59

NET XClt2gt LOC = SPIN60

NET XClt3gt LOC = SPIN61

NET YAlt0gt LOC = SPIN111

JP4 接頭

NET YAlt1gt LOC = SPIN110

NET YAlt2gt LOC = SPIN107

NET YAlt3gt LOC = SPIN106

NET YBlt0gt LOC = SPIN93

NET YBlt1gt LOC = SPIN91

NET YBlt2gt LOC = SPIN87

NET YBlt3gt LOC = SPIN88

NET YBlt4gt LOC = SPIN92

NET YBlt5gt LOC = SPIN94

NET YBlt6gt LOC = SPIN95

NET YBlt7gt LOC = SPIN96

NET YClt0gt LOC = SPIN112

NET YClt1gt LOC = SPIN113

NET YClt2gt LOC = SPIN103

NET YClt3gt LOC = SPIN102

在光碟片中 RFFPGAVHDLDEMOSVF95288XL 裡有VHDL與數位邏輯設計書本範例原始檔與合成

檔案

88

eM_FPGA 模組

NET CLK LOC = E12

NET XAlt0gt LOC = AA3

NET XAlt1gt LOC = Y4

NET XAlt2gt LOC = AA4

NET XAlt3gt LOC = AB4

NET XBlt0gt LOC = M1

NET XBlt1gt LOC = M2

NET XBlt2gt LOC = W13

NET XBlt3gt LOC = Y13

NET XBlt4gt LOC = AA13

NET XBlt5gt LOC = AB13

NET XBlt6gt LOC = Y18

NET XBlt7gt LOC = W18

NET XClt0gt LOC = W5

NET XClt1gt LOC = Y5

NET XClt2gt LOC = AA5

NET XClt3gt LOC = AB5

NET YAlt0gt LOC = Y17

JP4 接頭

NET YAlt1gt LOC = W17

NET YAlt2gt LOC = AB18

NET YAlt3gt LOC = AA18

NET YBlt0gt LOC = N1

NET YBlt1gt LOC = M5

NET YBlt2gt LOC = M3

NET YBlt3gt LOC = M4

NET YBlt4gt LOC = M6

NET YBlt5gt LOC = N2

NET YBlt6gt LOC = U13

NET YBlt7gt LOC = V13

NET YClt0gt LOC = AA17

NET YClt1gt LOC = AB17

NET YClt2gt LOC = V12

NET YClt3gt LOC = U12

在光碟片中 RFFPGAVHDLDEMOBIT2V250 裡有VHDL與數位邏輯設計書本範例原始檔與合成檔

89

Page 21: RFFPGA 直流馬達實驗手冊juniortek.com.tw/program/manual/RF-DC-mal.pdf · em_demo模組 em_dcm 直流伺服馬達 dc電源 rffpga 系統的直流馬達實驗規劃 其中包括:

首先使用滑鼠在 FPGA下載按鈕單擊動作使 FPGA變成 piDSP晶片 如您撰寫組合語言時可使用 eASM按鈕 經編譯完成後產生MOD檔 如您撰寫系統連結程式時可使用 eLINK按鈕 經連結完成後產生MEM與VAR檔 點選實驗三後顯示如下 選擇程式下載再按程式啟動這時直流伺服馬達開始做位置控制在操控畫面放置 P 參數設定欄更改參數時馬達即時隨參數改變而產生不同響應 直接點選程式停止時結束所有控制動作再按回首頁選擇其他實驗

21

6實驗說明

下圖所示為直流馬達的控制系統方塊圖透過電流速度以及位置的回授再搭

配適當的控制器可建立完整的閉迴路控制系統在後面的實驗中將依此一系統方塊圖

逐步建立速度和位置的控制實驗各實驗的說明和操作方式及參考實驗結果將逐一進

行詳細的說明

控制

參考位置

速度 位置速

度控制 電流控制

電力電

子換流

位置速

度感測

i

+ -

壓ν

位置

速度

i

DC直流馬達之控制系統方塊圖

PWM 驅動方式只是簡單的開環路控制而高精度的馬達控制必須透過回授控制來完成

對於邏輯電路的設計者而言必須先瞭解基本的回授控制架構以便將來轉換成實用的

邏輯電路設計

設計說明

開環路特性

在電壓驅動的狀況下直流馬達開環路控制的示意圖如下

+-

22

如果換算成數學模式則轉換成下面的架構

+-Vc

R L

EMF

+

-

ITB

J

ω

其中

1其中的變數和參數包括 Vc 控制的電壓命令 R 電樞迴路的等效電阻 L 電樞迴路的等效電感 EMF電樞產生的反電動勢 i 電樞迴路中的電流 T 馬達所產生的扭力 J 馬達和負載的等效慣量 B 馬達和負載的等效摩擦力 ω 馬達所產生的速度 2所牽涉的物理公式包括 電壓迴路Vc = Ri + L(didt) + EMF 即電樞迴路中的電壓平衡 動力負載T = Bω + J(dωdt) 即扭力平衡 馬達特性T = Kti 所產生的扭力和電流成正比 電機特性EMF= Keω 所產生的電動勢和轉速成正比 其中新增的參數包括 Kt馬達的扭力常數 Ke馬達的反電動勢常數 3將微分項作拉式轉換(Laplase Transformation)的對映即 s = ddt 可將微分方程式轉換成更簡單的代數方程式而產生到下面的控制方塊圖

sL+R1Vc

+-EMF

iKt

TsJ+B1 ω

Ke

4在直流馬達的開環路特性中控制電壓(Vc)時輸入點而馬達轉速(ω)是輸出點即是控制馬達電壓以控制馬達轉速

5基本上馬達的開環路特性是個兩階系統類似於低通濾波器的特性在許多應用 場合其開環路特性還可以再簡化成一階系統方塊圖如下

23

sτ +1

KmVc ω 其中 τ一階系統的時間常數 Km一階系統的穩態增益

採用兩階系統的分析方式雖然會比較精細但是用一階系統來分析則可簡化所有的設計

過程因為這裡的實驗重點是邏輯設計所以在本章中我們都用一階系統作分析

系統響應的要求

就控制系統而言最重要的需求就是系統響應包括

穩態特性通常以穩態誤差為指標即是穩態時系統輸出和輸入之間的差異 暫態特性通常以上升時間(Rise Time)和過越比率(Overshoot)為指標

一個理想中的伺服控制系統其系統響應應該是

1穩態誤差為 0即馬達輸出將追隨輸入作變化沒有誤差 2過越比例為 0即馬達輸出絕對不會產生衝過頭的現象 3上升時間為 0即馬達輸出隨時追上輸入命令不會有控制上的延遲現象

當然這是太理想了一個合理的伺服控制系統應該是

1穩態誤差越小越好最好為 0 2過越比例越小越好最好為 0 3上升時間越短越好當然無法為 0但是盡力就是了

速度的回授控制

回授控制的目的就是為了改善系統響應以一階系統代表的馬達控制為例

sτ+1

KmVc ω

在步階響應(Step Response)時其特性如下

1穩態誤差由 Km決定 2過越比例為 0 3上升時間即是其時間常數(τ)

如果用比例控制器(P 控制器)作速度回授的控制則控制方塊圖如下

sτ+1

KmVc ωKp

err

P控制器 直流馬達ωc

速度回授

速度命令 + 速度響應-

24

其中

1速度命令並不直接控制馬達的驅動電壓而是 A將速度命令和速度回授相比找出其誤差訊號 err B依誤差訊號來控制驅動電壓 誤差越大則驅動電壓越高 誤差越小則驅動電壓越低 誤差為負則驅動電壓也為負 其中的比例關係由 P控制器中的 Kp 來調整 2經由數學分析後其步階響應的特性為 A穩態誤差變成 1(1+kpkm)如果 kpkmgtgt1則穩態誤差將趨近於 0 B過越比例仍為 0 C上升時間即是由τ變成τ(1+kpkm)所以上升時間將變短 3換句話說只要 Kp值夠大不論是穩態誤差或是上升時間都會大幅改善

理論上P控制器的增益是越高越好最好是無限大但是實際上是有限制的原因是

1馬達的開環路特性是兩階系統而非一階系統一階系統只是簡化後的結果 2當兩階系統作高增益的回授控制時當增益過高時會產生極嚴重的過越現象使得

馬達產生巨幅震動而難以控制

所以 P控制器的增益雖然是越高越好但調整時仍要小心維持(過越比例為 0)的條件

轉角的回授控制

做為馬達的速度控制P控制器的效果不錯但是如果將 P控制器應用到馬達的轉角控

制其特性就不太理想圖示如下

sτ+1

KmVc ωKp

err

P控制器 直流馬達

θc

轉角回授

轉角命令 + 轉角響應-

s1 θ

其中

1從馬達的速度到轉角之間具有積分特性即 馬達的轉角是馬達速度的積分結果而 馬達的速度是馬達轉角的微分結果而 2其中的積分特性使得整個系統由一階特性變成兩階特性在兩階系統中當設定高

增益時會產生極嚴重的過越現象使得馬達產生巨幅震動而難以控制 3在 P控制器增益無法提高的狀況之下轉角控制效果將無法獲得改善

雖然 P控制器在轉角控制上的效果並不好但是在控制系統中還是有許多法寶可以選擇

25

其中 PD 控制器就是簡單又有效的一個好方法

從表面上來看PD 控制器比 P控制器多了一個微分項就數學上來看這微分項提供了

一個新零點(Zero)可以調整根軌跡圖的走向就實驗上來說這微分項提供了控制器

的預測功能說明如下

sτ+1

KmVc ωKp+sKd

err

P控制器 直流馬達

θc

轉角回授

轉角命令 + 轉角響應-

s1 θ

1轉角控制中 P控制器的問題是在嚴重的過越現象原因是在 P控制器的作用下只有當回授超過命令時才能做出「負向」的控制但這時已經來不及了因為積分器

中已經累積了過多的能量而無法立刻消失使得馬達轉角衝過了頭 2解決之道就是在回授超過命令之前就必須做出「負向」的控制使得積分器累積

的能量逐步減弱在到達目標時才能立刻煞車才能解除過越現象 3而微分項就是這個預測量因為當誤差量越來越小時其微分項是負值雖然微分

項(D)是負值 當誤差量(P)很大時(P+D)的結果還是正值所以還是「正向」控制 當誤差量(P)漸小時(P+D)的結果變成負值才會開始「負向」控制 換句話說在誤差為 0之前即可啟動負向控制產生煞車作用使得馬達提前減速

而即時停止在目標點上自然就解除過越現象了

所以在 PD 控制器中有兩項調整量其中

1Kp增益提供比例控制部分的增益而 Kd增益提供微分控制部分的增益 2Kp增益控制馬達的趨近速度主要影響的是上升時間 3Kd增益控制馬達的提前煞車主要影響的是過越比例 4在兩者搭配下就有機會得到 很快很短的上升時間同時也 不會產生過越現象

PD 控制器的執行

依據 PD 控制器公式可以建立以數位執行的 PD 控制器如下圖所示

cmdKp

fdk

+

-

err

old

+-

Kd

Z-1

out+

+

26

其中

1利用差分公式來取代 PD控制器中的微分公式定義如下 s ==gt (1-Z-1)DT 其中對映的變數包括 s 微分項 Z-1延遲一個抽樣週期 DT抽樣週期單位為 sec 2就執行面而言Z-1是延遲一個抽樣週期也就是以抽樣週期所控制的暫存器 3在上圖中將命令(cmd)和回授(fdk)相減後得到誤差值(err)再將 err延遲一個抽樣週期成為 old所以(err-old)DT即是微分項

4原始的微分控制公式為(err-old)DTKd必須先除再乘但是因為 DT和 Kd 都是常

數可以預先將 Kd修正成 Kd=(KdDT)那麼公式將修正為(err-old)Kd就只需要一個乘法而不需要除法了

同樣的 PD 控制器可以用許多不同的方法作執行包括

1以軟體方式執行例如在 DSP核心中以組合語言撰寫控制模組 2以硬體方式執行例如在 FPGA中直接設計邏輯電路 3以微碼方式執行以微碼作順序控制執行硬體運算工作

這裡先提供用組合語言撰寫的程式模組作為設計參考其他兩種方法將在後續的實驗中

再陸續作說明

模組程式範例PD_controlasm

local cmd R0 IP gnd 輸入點位置命令(可忽略) local fdk R1 IP gnd 輸入點位置回授(可忽略) local out R2 OP 輸出點用以控制速度迴路 local kp R3 256 參數增益 kp10=256 local kd R4 0 參數增益 kd10=256 local err R5 0 內部變數 local old R6 0 內部變數 local gnd R7 0 無輸入時的短路點 data 8 模組變數區長度 initial 開機啟動程序 WR out0 WR old0 RET out=old=0 timer 即時控制程序 RD (cmd) SUB (fdk) WR err MUL kp SFR 8 P=(cmd-fdk)kp256 RDS err SUBX old MUL kd SFR 8 D=(err-old)kd256 ADDS WR out out=P+D RET

27

其中

1PD控制模組中對外的界面變數包括 cmd命令的輸入點 fdk回授的輸入點 out控制的輸出點 2內部參數包括 Kp比例控制增益其中 10=256所以乘完後還需要再右移 8-bit Kd微分控制增益其中 10=256所以乘完後還需要再右移 8-bit 3內部變數包括 err臨時性的變數用以儲存誤差值的計算結果 old儲存性的變數用以儲存上一次抽樣控制時的 err值 4模組程式分成三部分包括 變數宣告local和data所宣告的部分 初值設定initial程序中先將 out和 old設定為 0 即時控制timer程序中依序執行 PD控制器中的每個步驟

控制目標的選擇

從字面上來看速度控制就是控制馬達的速度轉角控制就是控制馬達的轉角沒什麼

好討論的但是實際上確有許多問題第一的問題就是什麼是速度和轉角馬達的速

度和轉角如果不作量測如何得知

既然在量測中取得了速度和轉角資料那麼我們所控制的到底是物理學上的速度和轉

sτ+1

KmVc ωKp+sKd

err

P控制器 直流馬達

θc

轉角回授

轉角命令 + 轉角響應-

s1 θ

KxANG

轉角量測

角還是量測上的速度和轉角以下圖為例

其中

1以轉角量測裝置量測轉角例如裝在馬達軸端的光電盤和解碼電路 2轉角的量測輸出是 ANG而 ANG和物理轉角θ之間有 Km的增益關係 3只要 Km值不是 1那麼系統就不再是單位回授 4如果 Km還有非線性或失真現象那麼控制結果也將有非線性或失真現象

這些問題混雜起來會使得控制系統的分析變得更複雜如果要簡單處理就要認同現

實環境直接以量測結果為控制目標如下圖所示

28

sτ+1

KmVc ωKp+sKd

err

P控制器 直流馬達

θc

轉角回授

+-

s1 θ Kx

ANG轉角量測

其中

1直接以量測結果為控制目標將全系統還原成標準的單位回授控制 2所有的非線性或失真現象都進入開環路討論屬於可以補償的部分 3但是控制結果就是「量測上的轉角」而「物理學上的轉角」

量測誤差的問題

轉角θ

量測ANG

對於量測誤差而言最明顯的問題就是量化誤差圖示如下

其中

1以 DCM模組中的光電盤為例精度為每圈 500格經由乘四解碼計數後其等效

精度增加為每圈 2000格 2比(12000)圈更精密的部分都無法響應換句話說振幅越大的控制其相對誤差越

小而振幅越小的控制其相對誤差越大例如 當振幅為(12)圈時其控制誤差量為 01而 當振幅為(120)圈時其控制誤差量為 1 這是標準的的非線性現象

量化誤差不只影響穩態上的精度還會造成非線性的震動問題圖示如下

t

誤差值

+1

-1

其中

1由於量化誤差的問題只有當誤差超過+1或是-1時才會真正偵測到誤差也才

29

會施加控制量作補償 2所以穩態時的誤差將在+1-1之間擺動造成微幅的振動 3量化誤差越大震動越明顯而量化誤差很小時通常不易察覺出震動現象

微分量的計算

伺服系統中有兩處需要用到微分計算包括

1PD控制器中誤差微分量的計算 2速度控制器中速度回授值的量測

在理論上微分公式是(dXdt)相當於 dXdt = (X(n)-X(n-1))DT (當 DT趨近於 0時)

所以當微分計算中的抽樣週期(DT)越短時微分的計算值將越接近理論值但是事實上

卻非如此以下圖為例

t

X

DTDX

其中

1當 X值為等速度運動時其微分量就是其斜率相當於 DXDT 2DT是微分計算中的抽樣週期理論上越短越好但是由於 DX本身的量化誤差

使得這個原則不再成立例如當斜率為 7394時 若 DT=1000則 DX=7394而 DXDT=7394 若 DT=100 則 DX=739 而 DXDT=739 若 DT=10 則 DX=73 而 DXDT=73 若 DT=1 則 DX=7 而 DXDT=7 3換句話說當抽樣週期越短時DX的量化誤差將越明顯而造成微分計算上更嚴

重的誤差

在 DCM 模組中速度量測的量化誤差分析如下

1馬達上的光電盤精度為每圈 500格經過乘四解碼後等效精度為每圈 2000格 2當馬達轉速為 1200RPM而抽樣頻率為 1KHz時對映的速度量測值為 1200(圈分)2000(格圈)60(秒分)1000(DT秒) = 40(格DT) 3換句話說1200RPM的轉速對映到 40的速度量測值即速度單位=30RPM若最

高轉速為 3000RPM則在+-3000RPM的速度範圍內其量化誤差為 05相當於8-bit的 ADC轉換器精度

4對映不同的抽樣頻率的量化誤差表列如下

30

光電盤精度 最高轉速 抽樣頻率 速度單

速度範圍 量化誤差

500PPR 3000RPM 1KHz 30RPM +-100 05 500PPR 3000RPM 2KHz 60RPM +-50 1 500PPR 3000RPM 4KHz 120RPM +25 2

過溢現象的處理

輸入

輸出

32767

-32768

整數運算都有數值範圍限制以 16-bit 整數而言輸入輸出的關係如下

其中

1當超過正負數的上下限時數值會正負顛倒例如 +32768 將會視為 -32768作處理而 +32769 將會視為 -32768作處理依此類推 2換句話說16-bit的整數運算只有在+-32767之間是線性的對映關係而超過這個範圍就是非線性的對映關係

3不但如此還因為正負顛倒的現象使得原來設計的負回授控制將變為正回授控制

而產生非線性的震盪現象 4換句話說只要計算上稍一不慎就會使得原先穩定的系統產生不穩定的震盪結果

為了避免過溢現象所造成的不穩定問題通常控制系統中會利用飽和處理作改善圖示

如下

輸入

輸出

lmtH

lmtL

31

其中

1當超過計算的上限時將固定設為上限值處理而當超過計算的下限時也將固定

設為下限值處理 2這時的整數運算只有在上下限之間是線性的對映關係而超過這個範圍將還是非線

性的對映關係 3雖然如此但是因為沒有正負顛倒的現象所以不再會有負回授變為正回授的問題

而避免了非線性的震盪現象 4換句話說飽和處理是針對過溢現象的妥協處理方案雖然不完全理想但是是可

接受的最佳選擇

下面是對映的組合語言範例

RD x x為輸入端 MIN lmtH 取得 x和 lmtH中的較小值即是作上限保護的工作 MAX lmtL 取得 x和 lmtL中的較大值即是作下限保護的工作 WR y Y為輸出端 其中

1組合語言中提供MAX和MIN的計算其中 MIN lmtH 比較 AX暫存器和 lmtH而將較低值存入 AX暫存器中 MAX lmtL 比較 AX暫存器和 lmtH而將較高值存入 AX暫存器中 2所以直接可用MIN指令作上限保護而以MAX指令作下限保護兩者合併後即是

完整的飽和處理結果

飽和處理通常應用在高位數轉成低位數的場合例如32-bit轉換成16-bit或是16-bit

轉換成 12-bit 等等例如在本實驗中所有的運算都是以 16-bit 整數作處理但是到

PWM 驅動級輸出時卻要轉換成 12-bit精度的 PWM 命令所以必須先用飽和處理以避免

過溢現象造成的不穩定問題

32

61 實驗 1-開迴路的電壓控制 實驗說明以電壓直接控制轉速的開迴路特性可簡化為一階系統處理方塊圖如

sτ+1

v km ωm

其中V 送給驅動器的 PWM電壓命令

ωm馬達的轉動速度可由處理 photo encoder信號所得的位置微分而得 km一階系統的穩態增益 τ一階系統的時間常數即步階響應中的上升時間

為了觀測直流馬達的開環路特性建立下面的測試方塊圖

其中

1所使用的模組包括 FG1方波產生器產生所需的步階測試波形 FT1馬達模擬以一階系統的低通濾波器來執行 IO1光電盤的回授處理可同時取得轉角和速度的量測值 IO2PWM電壓驅動直接驅動直流馬達作控制 Led四位數字七段顯示模組顯示波形信號資料 2測試目標有兩項(P 參數設定欄)包括 A調整方波命令控制直流馬達作開環路的 PWM電壓控制 B調整馬達模擬參數使模擬結果和實驗結果相符以確認開環路特性

33

實驗畫面顯示如下

測試一 開環路的電壓控制 記錄頻道 CH1電壓命令Y1=-300DY=500 CH2模擬速度Y2=-100DY=500 CH3馬達速度Y3=100DY=50 CH4馬達轉角Y4=300DY=50000 實驗參數 FG1kAMP=256電壓命令的測試振幅 FG1kFRQ=150電壓命令的測試頻率 FT1DT =10 馬達模擬參數 FT1KA =500馬達模擬參數

其中

1用示波器功能記錄四個頻道其中 CH2和 CH3重疊顯示以比較模擬速度和量測

速度之間的差異 2由於 Km 不等於 1所以必須調整 CH3的 Y軸單位才能使得 CH2和 CH3的穩態響應部分重疊

3實驗時可以改變 FG1的參數以調整測試方波的振幅和頻率 4可以調整 FT1的參數使得 CH2和 CH3的暫態響應部分重疊

根據實際的測試結果分析如下

2馬達模擬的參數調整到 DT=10而 KA=500根據公式 τ = 40961000dtka 所以上升時間(τ)為 0082秒或是 82ms 3CH2CH3的 Y軸單位並不一致顯然 Km 不等於 1經計算確認 Km=0098

對應之 plc檔程式說明(exp_pwmplc) echo off 畫面顯示開始

run dsp 0 選擇 DSP1

run stop run reset 既有程式停止

run testDCMmem 下載指定程式

das 1 ampfg1out 0 1024 PWM 波形 Volt 設定 DAS 頻道1

das 2 ampft1lp 0 1024 馬達模擬 Volt 設定 DAS 頻道2

das 3 ampio1spd 0 1024 馬達速度 Volt 設定 DAS 頻道3

das 4 ampio1ang 0 1024 馬達角度 Volt 設定 DAS 頻道4

plot select 0 設定示波器頁數

plot xunit 100000 0 設定示波器 X軸

plot yunit 1 500 -300 設定示波器 Y1 軸

34

plot yunit 2 500 -100 設定示波器 Y2 軸

plot yunit 3 50 100 設定示波器 Y3 軸

plot yunit 4 50000 300 設定示波器 Y4 軸

plot trigger 1 0 1 10 設定示波器觸發

plot scope 9 1 2 3 4 設定示波器顯示

module io2 設定 io2 模組

s cmd ampfg1out

module fg1 設定 fg1 模組

s kAmp 256 s kFrq 150

module ft1 設定 ft1 模組

s u ampfg1out s dt 10 s ka 500

module io3 設定 io3 模組

s led ampfg1out

module 回復預設模組

run 1khz 設定抽樣頻率為 4KHz

run start DSP 開始執行

das stop pause 1 DAS 啟動 das start DAS 啟動

echo on 回復正常訊息顯示

使用者可視情況調整一階濾波器的 ka和 dt值使得 ch2和 ch3 兩組波形完全相符

以求得開迴路系統近似的一階轉移函數 CAI操控設計畫面規劃如下(EXP_PWMCAI) page 1 畫面設計

35

page 2 畫面設計 page 3 畫面設計

36

實測響應圖

訊 號 說 明 訊 號 說 明 ch1 方波產生器訊號 ch3 一階濾波器輸出信號 ch2 馬達角速度訊號 ch4 馬達角位置訊號

直流馬達之開迴路電壓控制響應圖

37

以邏輯分析功能觀測直流馬達之光電盤輸入與 PWM輸出信號

38

62 實驗 2-閉迴路的速度控制 實驗說明為了觀測閉迴路的速度控制響應建立下面的測試方塊圖

加入 PD控制後系統閉迴路的轉移函數經適度的簡化仍能約略以一階系統

處理方塊圖如下

sτ+1

u km ωm

其中

u 送給控制器的速度命令

ωm馬達的轉動速度可由處理 photo encoder 信號所得的位置微分而得

km一階系統的穩態增益 τ一階系統的時間常數即步階響應中的上升時間

方塊圖中的模組功能說明如下

1用 fg1 產生測試用的方波速度命令

2將方波速度命令和速度回授訊號送到 PD 控制器方塊中產生電壓控制訊號再透

過 io2 模組將訊號送出給伺服介面

3用 ft1 建立對照用的一階系統可用 IIR1濾波器方塊產生

4將方波命令產生速度命令再觀測 PHT(io1)上的速度值 spd

5調整 IIR1濾波器的參數使得兩組波形完全相符這時 IIR1濾波器就是閉迴路

速度控制的特性其中 km 為增益而τ為上升時間(單位為 sec)

6增益 km 可從示波器中作簡單計算而上升時間(τ=40964000dtka)

7 Led四位數字七段顯示模組顯示波形信號資料

39

對應之 plc檔程式說明(exp_speedplc) echo off 畫面顯示開始

run dsp 0 選擇 DSP1

run stop run reset 既有程式停止

run testDCMmem 下載指定程式

das 1 ampfg1out 0 1024 PWM 波形 Volt 設定 DAS 頻道1

das 2 ampft1lp 0 1024 馬達模擬 Volt 設定 DAS 頻道2

das 3 ampio1spd 0 1024 馬達速度 Volt 設定 DAS 頻道3

das 4 ampio1ang 0 1024 馬達角度 Volt 設定 DAS 頻道4

plot select 0 設定示波器頁數

plot xunit 100000 0 設定示波器 X軸

plot yunit 1 50 -300 設定示波器 Y1 軸

plot yunit 2 50 -100 設定示波器 Y2 軸

plot yunit 3 50 100 設定示波器 Y3 軸

plot yunit 4 50000 300 設定示波器 Y4 軸

plot trigger 1 0 1 10 設定示波器觸發

plot scope 9 1 2 3 4 設定示波器顯示

module io2 設定 io2 模組

s cmd ampcn2out

module fg1 設定 fg1 模組

s kAmp 50 s kFrq 150

module cn2 設定 cn1 模組

s cmd ampfg1out s fdk ampio1spd s kp 0x4000

module ft1 設定 ft1 模組

s u ampfg1out s dt 2 s ka 320

module io3 設定 io3 模組

s led ampfg1out

module 回復預設模組

run 1khz 設定抽樣頻率為 4KHz

run start DSP 開始執行

das stop pause 1 DAS 啟動 das start DAS 啟動

echo on 回復正常訊息顯示

CAI操控設計畫面規劃如下(EXP_speedCAI)

40

page 1 畫面設計 page 2 與 page 3 畫面設計與實驗一 page 2 與 page 3相同畫面 page 4 畫面設計

41

方塊的參數設定 使用者可視情況調整一階濾波器的 ka和 dt值使得 ch2和 ch3 兩組波形完全相符

以求得此一閉迴路系統近似的一階轉移函數或調整 PD控制器中的 kp和 kp值以調整系統之響應 實測響應圖

訊 號 說 明 訊 號 說 明 ch1 方波產生器產生之速度命令 ch3 一階濾波器輸出信號 ch2 馬達角速度訊號 ch4 馬達角位置訊號

42

直流馬達之閉迴路速度控制響應圖

43

63 實驗 3-閉迴路的位置控制 實驗說明為了觀測閉迴路的位置控制響應將直流馬達的回授改為位置訊號

建立下面的測試方塊圖 方塊圖中的模組功能說明如下

1用 fg1產生測試用的方波位置命令 2將方波位置命令和位置回授訊號送到 PD控制器方塊中產生電壓控制訊號再透過 io2模組將訊號送出到伺服介面驅動馬達轉動

對應之 plc檔程式說明(exp_angleplc) echo off 畫面顯示開始

run dsp 0 選擇 DSP1

run stop run reset 既有程式停止

run testDCMmem 下載指定程式

das 1 ampfg1out 0 1024 PWM 波形 Volt 設定 DAS 頻道1

das 2 ampft1lp 0 1024 馬達模擬 Volt 設定 DAS 頻道2

das 3 ampio1spd 0 1024 馬達速度 Volt 設定 DAS 頻道3

das 4 ampio1ang 0 1024 馬達角度 Volt 設定 DAS 頻道4

plot select 0 設定示波器頁數

plot xunit 100000 0 設定示波器 X軸

plot yunit 1 1000 -300 設定示波器 Y1 軸

plot yunit 2 1000 -100 設定示波器 Y2 軸

plot yunit 3 20 100 設定示波器 Y3 軸

plot yunit 4 1000 300 設定示波器 Y4 軸

plot trigger 1 0 1 10 設定示波器觸發

44

plot scope 9 1 2 3 4 設定示波器顯示

module io2 設定 io2 模組

s cmd ampcn2out

module fg1 設定 fg1 模組

s kAmp 1000 s kFrq 75

module cn2 設定 cn1 模組

s cmd ampfg1out s fdk ampio1ang s kp 0x300 s kd 0x4000

module ft1 設定 ft1 模組

s u ampfg1out s dt 2 s ka 320

module io3 設定 io3 模組

s led ampfg1out

module 回復預設模組

run 1khz 設定抽樣頻率為 4KHz

run start DSP 開始執行

das stop pause 1 DAS 啟動 das start DAS 啟動

echo on 回復正常訊息顯示

CAI操控設計畫面規劃如下(EXP_angleCAI) page 1 畫面設計

45

page 2 與 page 3 畫面設計與實驗一 page 2 與 page 3相同畫面 page 4 畫面設計與實驗二 page 4 畫面 方塊的參數設定 延續上一實驗的說明使用者可以調整 PD控制器中的 kp和 kd值以調整系統之

響應 實測響應圖

訊 號 說 明 訊 號 說 明 ch1 方波產生器產生之位置命令 ch3 馬達角速度訊號 ch2 馬達角位置 ch4 Pd控制器輸出之電壓訊號

46

直流馬達之閉迴路位置控制響應圖

47

64 實驗 4-加減速的位置控制 實驗說明為避免方波命令的過於嚴苛在方波命令的輸出加入一加減速控制功

能方塊以減緩命令變化的幅度增加馬達運動的平順建立的測試方塊圖如下

方塊圖中的模組功能說明如下

1用 fg1產生測試用的方波位置命令 2將方波位置命令送到加減速控制方塊處理後產生新的位置命令再將新的位置命

令與位置回授訊號送到 PD控制器方塊中產生電壓控制訊號最後透過 io2模組將訊號送出到伺服介面驅動馬達轉動

對應之 plc檔程式說明(exp_accplc) echo off 畫面顯示開始

run dsp 0 選擇 DSP1

run stop run reset 既有程式停止

run testDCMmem 下載指定程式

das 1 ampfg1out 0 1024 PWM 波形 Volt 設定 DAS 頻道1

das 2 ampcn1out 0 1024 加速控制 Volt 設定 DAS 頻道2

das 3 ampio1spd 0 1024 馬達速度 Volt 設定 DAS 頻道3

das 4 ampio1ang 0 1024 馬達角度 Volt 設定 DAS 頻道4

plot select 0 設定示波器頁數

plot xunit 100000 0 設定示波器 X軸

plot yunit 1 2000 -300 設定示波器 Y1 軸

plot yunit 2 2000 -100 設定示波器 Y2 軸

plot yunit 3 50 100 設定示波器 Y3 軸

plot yunit 4 2000 300 設定示波器 Y4 軸

48

plot trigger 1 0 1 10 設定示波器觸發

plot scope 9 1 2 3 4 設定示波器顯示

module io2 設定 io2 模組

s cmd ampcn2out

module fg1 設定 fg1 模組

s kAmp 2000 s kFrq 150

module cn1 設定 cn1 模組

s cmd ampfg1out

module cn2 設定 cn2 模組

s cmd ampcn1out s fdk ampio1ang s kp 0x300 s kd 0x4000

module ft1 設定 ft1 模組

s u ampfg1out s dt 2 s ka 320

module io3 設定 io3 模組

s led ampfg1out

module 回復預設模組

run 1khz 設定抽樣頻率為 4KHz

run start DSP 開始執行

das stop pause 1 DAS 啟動 das start DAS 啟動

echo on 回復正常訊息顯示

CAI操控設計畫面規劃如下(EXP_accCAI) page 1 畫面設計

49

page 2 畫面設計與實驗一 page 2相同畫面 page 3 畫面設計與實驗二 page 4相同畫面

參數設定參考之前各實驗的說明可線上機動性的調整 PD控制器中的 kp和 kd值以調整系統之響應 實測響應圖

訊 號 說 明 訊 號 說 明 ch1 方波產生器產生之位置命令 ch3 馬達角位置 ch2 加減速模組輸出之位置命令 ch4 馬達角速度訊號

50

圖一 直流馬達經加減速控制後之閉迴路控制響應圖

51

65 實驗 5-正弦波的位置控制 實驗說明在本實驗中改變命令的波形由方波改變為正弦波並建立如下的測

試方塊圖與上一實驗相比較僅更改命令的波形產生方塊 方塊圖中的模組功能說明如下 1用 fg2產生測試用的弦波位置命令 2將弦波位置命令送到加減速控制方塊處理後產生新的位置命令再與 io1 讀入的位

置回授訊號送到 PD 控制器方塊中產生電壓控制訊號再透過 io2 模組將訊號送出到伺服介面驅動馬達轉動

對應之 plc檔程式說明(exp_sinplc) echo off 畫面顯示開始

run dsp 0 選擇 DSP1

run stop run reset 既有程式停止

run testDCMmem 下載指定程式

das 1 ampfg2out 0 1024 SIN 波形 Volt 設定 DAS 頻道1

das 2 ampcn1out 0 1024 加速控制 Volt 設定 DAS 頻道2

das 3 ampio1spd 0 1024 馬達速度 Volt 設定 DAS 頻道3

das 4 ampio1ang 0 1024 馬達角度 Volt 設定 DAS 頻道4

plot select 0 設定示波器頁數

plot xunit 100000 0 設定示波器 X軸

plot yunit 1 2000 -300 設定示波器 Y1 軸

plot yunit 2 2000 -100 設定示波器 Y2 軸

plot yunit 3 50 100 設定示波器 Y3 軸

plot yunit 4 2000 300 設定示波器 Y4 軸

plot trigger 1 0 1 10 設定示波器觸發

52

plot scope 9 1 2 3 4 設定示波器顯示

module io2 設定 io2 模組

s cmd ampcn2out

module fg2 設定 fg1 模組

s kAmp 2000 s kFrq 100

module cn1 設定 cn1 模組

s cmd ampfg2out

module cn2 設定 cn2 模組

s cmd ampcn1out s fdk ampio1ang s kp 0x300 s kd 0x4000

module ft1 設定 ft1 模組

s u ampfg2out s dt 2 s ka 320

module io3 設定 io3 模組

s led ampfg2out

module 回復預設模組

run 1khz 設定抽樣頻率為 4KHz

run start DSP 開始執行

das stop pause 1 DAS 啟動 das start DAS 啟動

echo on 回復正常訊息顯示

CAI操控設計畫面規劃如下(EXP_sinCAI) page 1 畫面設計

53

page 2 畫面設計 page 3 畫面設計與實驗二 page 4相同畫面

方塊的參數設定可調整 PD控制器中的 kp和 kd值以調整系統之響應 實測響應圖

訊 號 說 明 訊 號 說 明 ch1 弦波產生器產生之位置命令 ch3 馬達角位置訊號 ch2 加減速模組輸出之位置命令 ch4 馬達角速度訊號

54

直流馬達之閉迴路弦波加減速位置控制響應圖

55

7組合語言說明

本節將針對 DC馬達伺服控制實驗專用的程式模組進行功能與程式碼的說明其

有關於波形產生器與資料擷取模組等說明如下

SIN_waveasm 正弦波產生器 PWM_waveasm 方波產生器 IIR1_filterasm 一階濾波器 DAS4asm 資料蒐集模組

弦波產生器

此模組會產生週期性的正弦波方塊圖如下

outfrq

kBiasbias

ampkAmp

kFrqth

kThf=1TB

θ

A

其中

1正弦波有四個參數振幅(A)頻率(F)相位(θ)和偏移(B)其公式為 out = A sin(2πF t +θ) + B 2對於單純的正弦波產生器所對映的參數包括 kAmp 振幅值 kFrq 頻率值kFrq=655368000Hz其中 Hz的範圍為 0~4000例如 1000Hz =gt frq=8192 100Hz =gt frq=819 10Hz =gt frq=82 1Hz =gt frq=8 kTh 相角值0~255代表 0~360的相位當 th=0 時為正弦波 th=64 時為餘弦波 th=128時為反相波依此類推 kBias偏移值 3對於可調變的正弦波產生器其對映的輸入點為 amp 控制振幅的輸入點可產生調幅(AM)波形 frq 控制頻率的輸入點可產生調頻(FM)波形 th 控制相位的輸入點可產生調相(PM)波形 bias控制偏移的輸入點可產生雙頻混波(相加)波形 4若不使用調變功能時各個輸入點時的預設值為 amp 指向 kAmp 的位址 frq 指向 kFrq 的位址

56

th 指向 kTh 的位址 bias指向 kBias的位址

模組程式範例SIN_WAVEasm

local amp R0 IP kAmp 輸入點sin波的振幅 local frq R1 IP kFrq 輸入點sin波的頻率 local th R2 IP kTh 輸入點sin波的相角 local bias R3 IP kBias 輸入點sin波的中心偏移 local out R4 OP 輸出點sin波輸出 local tab R5 TP 表格指標指向 sin[256]的表格 local ang R6 內部變數相位角65536=360deg local kAmp R7 1000 參數振幅值 local kFrq R8 1000 參數頻率值=655368000Hz local kTh R9 0 參數相角值360deg=256 local kBias R10 0 參數偏移值 data 11 模組變數區長度及初值 initial 啟動程序 WR ang0 WR out0 ang=out=0 RET timer 即時控制程序(8KHz) RD ang ADD (frq) WR ang ang+=frq SFR 8 ADD (th) AND 255 ACC=sin(ang256+th) ADD tab WRH RDM table-look-up MUL (amp) SFR 12 ADD (bias) WR out out=ACCamp4096+bias RET table tab 256 sin[256]表格區10=4096 0 101 201 301 401 501 601 700 00~070deg 799 897 995 1092 1189 1285 1380 1474 08~0F 1567 1660 1751 1842 1931 2019 2106 2191 10~17 2276 2359 2440 2520 2598 2675 2751 2824 18~1F 2896 2967 3035 3102 3166 3229 3290 3349 20~27 3406 3461 3513 3564 3612 3659 3703 3745 28~2F 3784 3822 3857 3889 3920 3948 3973 3996 30~37 4017 4036 4052 4065 4076 4085 4091 4095 38~3F 4096 4095 4091 4085 4076 4065 4052 4036 40~4790deg 4017 3996 3973 3948 3920 3889 3857 3822 48~4F 3784 3745 3703 3659 3612 3564 3513 3461 50~57 3406 3349 3290 3229 3166 3102 3035 2967 58~5F

57

2896 2824 2751 2675 2598 2520 2440 2359 60~67 2276 2191 2106 2019 1931 1842 1751 1660 68~6F 1567 1474 1380 1285 1189 1092 995 897 70~77 799 700 601 501 401 301 201 101 78~7F 0 65435 65335 65235 65135 65035 64935 64836 80~87180deg 64737 64639 64541 64444 64347 64251 64156 64062 88~8F 63969 63876 63785 63694 63605 63517 63430 63345 90~97 63260 63177 63096 63016 62938 62861 62785 62712 98~9F 62640 62569 62501 62434 62370 62307 62246 62187 A0~A7 62130 62075 62023 61972 61924 61877 61833 61791 A8~A8 61752 61714 61679 61647 61616 61588 61563 61540 B0~B7 61519 61500 61484 61471 61460 61451 61445 61441 B8~BF 61440 61441 61445 61451 61460 61471 61484 61500 C0~C7270deg 61519 61540 61563 61588 61616 61647 61679 61714 C8~CF 61752 61791 61833 61877 61924 61972 62023 62075 D0~D7 62130 62187 62246 62307 62370 62434 62501 62569 D8~DF 62640 62712 62785 62861 62938 63016 63096 63177 E0~E7 63260 63345 63430 63517 63605 63694 63785 63876 E8~EF 63969 64062 64156 64251 64347 64444 64541 64639 F0~F7 64737 64836 64935 65035 65135 65235 65335 65435 F8~FF

就程式結構而言說明如下

timer 即時控制程序(8KHz) RD ang ADD (frq) WR ang ang+=frq SFR 8 ADD (th) AND 255 ACC=sin(ang256+th) ADD tab WRH RDM table-look-up MUL (amp) SFR 12 ADD (bias) WR out out=ACCamp4096+bias RET

1基本上我們以查表法計算 sin()其輸入θ的範圍為 0~255對映到 0~360deg其輸出 sin(θ)的範圍為+-4096對映到+-10的範圍

2建立一個內部變數 ang其範圍為 0~65535對映到 0~360的相位角 3每個timer程序都執行 ang+=frq的動作更新目前的相位角接著依照 ang的相位角查表得到 sin(ang256+th)值

4由於表格長度為 256-word所以必須將 ang256才能得到正確的對映關係而 th範圍為 0~255所以不需要像 ang一般的做額外處理

5sin()的範圍為(+1-1)而在表格中以(+4096~-4096)的型式記錄相當於 10=4096所以執行 Asin()時還要用 SFR12指令做4096的動作才能正確的取得輸出值

58

6就頻率輸入 frq而言其計算原則是將θ=ωt轉化成θ=Σ(ωdt)因為抽樣頻率

為 8KHz所以 dt=18000而得到 frq=655368000Hz公式其中 Hz為真正的頻率在 8KHz的抽樣頻率下其範圍為 0~4000

鋸齒波產生器

此模組會產生週期性的鋸齒波方塊圖如下

outfrq

kBiasbias

ampkAmp

kFrqth

kThf=1TB

θ

A

其中

1鋸齒波也有四個參數振幅(A)頻率(F)相位(θ)和偏移(B)和正弦波的定義完全一致唯一的差異是其輸出為鋸齒波而非正弦波

2基本波形是從週期開始時為 0一直遞增到週期結束時到達最高點然後立刻回歸

到 0重新開始 3以程式結構而論鋸齒波程式幾乎就是正弦波的相位計算部分只差沒有正弦波的

查表處理而已

模組程式範例SAW_WAVEasm

local amp R0 IP kAmp 輸入點sin波的振幅 local frq R1 IP kFrq 輸入點sin波的頻率 local th R2 IP kTh 輸入點sin波的相角 local bias R3 IP kBias 輸入點sin波的中心偏移 local out R4 OP 輸出點sin波輸出 local ang R5 內部變數相位角65536=360deg local kAmp R6 1000 參數振幅值 local kFrq R7 1000 參數頻率值=655368000Hz local kTh R8 0 參數相角值360deg=256 local kBias R9 0 參數偏移值 data 11 模組變數區長度及初值 initial 啟動程序 WR ang0 WR out0 ang=out=0 RET timer 即時控制程序(8KHz) RD ang ADD (frq) WR ang ang+=frq SFR 8 ADD (th) AND 255 ACC=(ang256+th)amp0x00ff MUL (amp) SFR 8 ADD (bias) WR out out=ACCamp256+bias

59

RET

脈衝波產生器

outfrq

kBiasbias

ampkAmp

kFrqth

kThf=1TB

θ

A

pwm

kDutyduty

此模組會產生週期性的脈衝波方塊圖如下

其中

1脈衝波有五個參數其中振幅(A)頻率(F)相位(θ)和偏移(B)四個參數和正弦波

定義完全一樣另外再增加一個負載率(D) 2基本波形是從週期開始時為 1隔段時間後換為 0然後持續到週期結束再重新開始其中 1所佔有的比例就是負載率當 D=0時為 0而 D=255時為 100

3和其他參數類似負載率(D)以 duty為其輸入點而以 kDuty為其參數值

模組程式範例PLS_WAVEasm

local amp R0 IP kAmp 輸入點脈衝波的振幅 local frq R1 IP kFrq 輸入點脈衝波的頻率 local th R2 IP kTh 輸入點脈衝波的相角 local bias R3 IP kBias 輸入點脈衝波的中心偏移 local duty R4 IP kDuty 輸入點脈衝波的負載率 local out R5 OP 輸出點脈衝波輸出 local ang R6 內部變數相位角65536=360deg local kAmp R7 1000 參數振幅值 local kFrq R8 1000 參數頻率值=655368000Hz local kTh R9 0 參數相角值360deg=256 local kBias R10 0 參數偏移值 local kDuty R11 128 參數負載率100 =256 data 12 模組變數區長度及初值 initial 啟動程序 WR ang0 WR out0 ang=out=0 RET timer 即時控制程序(8KHz)

60

RD ang ADD (frq) WR ang ang+=frq SFR 8 ADD (th) AND 255 ACC=(ang256+th)amp0x00ff SUB (duty) RD (amp) JLT t1 RD 0 ACC=(amp0) t1 ADD (bias) WR out out=ACC+bias RET

IIR 一階濾波器

此模組執行一階的 IIR濾波器方塊圖如下

kau x

Z-1

+

+

-

+低通濾波器

高通濾波器dx lp

hp

濾波器參數的計算公式如下

1假設濾波器的頻寬為 hz則 ωn=hz628 2若系統頻率為 8KHz則抽樣週期 dT為 dT=dt8000 其中 dt為模組參數 3則濾波器參數為 ka=ωndT4096或是 =hzdt62880004096即 =hzdt32 4當 dt決定後所允許的訊號頻寬為(4000dt)換句話說訊號頻寬會因為 dt增加而下降

為了方便實驗的運用下面列出常用的參數對照表

濾波頻寬

(Hz)

10 20 50 100 200 500 1000 2000

訊號頻寬

(Hz)

400 800 2000 4000 4000 4000 4000 4000

模組參數 dt 10 5 2 1 1 1 1 1

模組參數 ka 320 320 320 320 640 1600 3200 6400

表格的運用方式如下

1首先決定濾波頻寬 2接著查表找出對映的參數 dt和 ka 3再查表得到對映的訊號頻寬以決定是否需要串接前級濾波器

61

模組程式範例IIR1_FILTERasm

local u R0 IP 輸入點濾波器輸入 local lp R1 OP 輸出點低通濾波器輸出 local hp R2 OP 輸出點高通濾波器輸出 local dt R3 1 參數抽樣週期 local ka R4 4096 參數增益 ka10=4096 local prd R5 內部變數抽樣週期用 data 6 模組變數區長度 initial 開機啟動程序 WR lp0 WR hp0 WR prd1 RET lp=hp=0prd=1 timer 即時控制程序 SUB prd1 JNZ b9 if (--prdgt0) return RD dt WR prd prd=dt RD (u) SUB lp WR hp hp=u-lp MUL ka SFR 12 ADD lp WR lp lp+=(hpka4096) b9 RET

資料蒐集模組

資料蒐集模組是一個非常特殊的模組專門配合 eTTY 程式中的示波器使用

模組程式範例DAS4asm

local cmd R0 0 紀錄命令0=停止1=前置記錄2=正觸發4=負觸發6=觸發記錄 local dt R1 1 抽樣週期每 dT抽樣一次 local tab R2 TP DAS表格啟始位址 local cnt R3 0 目前記錄點(0~255) local ch1 R4 0 定義頻道1的變數位址 local ch2 R5 0 定義頻道2的變數位址 local ch3 R6 0 定義頻道3的變數位址 local ch4 R7 0 定義頻道4的變數位址 local trg R8 0 定義觸發頻道的變數位址 local th R9 0 觸發準位 local tail R10 0 觸發後的抽樣個數 local buf R11 1 抽樣計數(1~dt) local pnt R12 表格位址計算pnt=tab+cnt4 local len R13 表格長度計算(0~256) data 14 定義模組變數區的長度 table tab 1024 定義表格的長度 initial 啟動程序 WR cmd0 RET cmd=0 timer 控制程序

62

ADD cmd0 JZ t9 if (cmd==0) return SUB buf1 JNZ t9 if (--buf)gt0) return RD dt WR buf dt=buf RD cnt ADD 1 AND 0xff WR cnt cnt=(cnt+1)amp0xff SFL 2 ADD tab WR pnt pnt=tab+cnt4 RD (ch1) WR (pnt) ADD pnt1 pnt++=ch1 RD (ch2) WR (pnt) ADD pnt1 pnt++=ch2 RD (ch3) WR (pnt) ADD pnt1 pnt++=ch3 RD (ch4) WR (pnt) pnt =ch4 RD cmd SUB 1 JZ t9 SUB 1 JZ t2 SUB 1 JZ t3 SUB 1 JZ t4 SUB 1 JZ t5 SUB 1 JZ t6 JR t7 t2 RD (trg) SUB th JGE t9 ADD cmd1 JR t9 wait trgltth t3 RD (trg) SUB th JLE t9 JR t6 wait trggtth t4 RD (trg) SUB th JLE t9 ADD cmd1 JR t9 wait trggtth t5 RD (trg) SUB th JGE t9 JR t6 wait trgltth t6 WR len0 WR cmd7 len=0cmd=7 t7 ADD len1 SUB tail JLT t9 WR cmd0 if ((++len)gt=0x80) cmd=0 t9 RET

與 DC 馬達控制相關的程式模組有以下 4個程式模組說明如下

(1)加減速控制模組 ACC_controlasm (2)光電盤輸入模組 POS_inputasm (3)PWM輸出模組 PWM_outputasm (4)PD控制模組 PD_controlasm

71加減速控制模組 此程式模組主要功能在於執行位置控制的加減速命令修正其數學模式採用 Lynn

濾波器的架構參見下圖

cmd

2

+

old Z -1

-

Z -1

Z -1

Z-1

Z-1x0 x1 x8 x9 x16

+ -

++

2

Z-1

Z-1 y1 y2

+

-

y0

+ +

sumZ-1

+164

12

out

dif

+

63

加減速控制模組方塊圖

其中

1Lynn 濾波器的階數固定成八階也就是 m=8其公式為 H(z) = (1-2Z-m+Z-2m)(1-2Z-1+Z-2)m2

2因為m=8所以m2=64因此最後計算低通濾波的部份時要先做除 64的運算 3因為低通濾波(lp)和 y0之間有 64倍的差異代表 y0y1y2的變化範圍比濾波器輸

入值要擴大許多例如輸入值在+-1000變化時y0y1y2很可能會在+-64000之間變化這範圍已經超出整數處理的範圍很可能會造成錯誤的計算結果

4所以在實驗時輸入值的變化範圍必須控制在+-500之間以保證計算的正確性 5對於 Lynn 濾波器當 m=8時其濾波器的頻寬固定為 1 kHzmdt也就是 dt=1時頻寬為 125 Hz dt=2時頻寬為 625Hz依此類推 6對於 Lynn 濾波器其濾波器的延遲固定為 m個抽樣週期因此設計 hp = x8 - lp 即可得到高通濾波器的對應結果 7其中乘 2和除 64的運算以移位運算取代所以整個程式中並無任何乘法運算 8Lynn 濾波器本身並不是穩定濾波器所以在程式啟動時必須確實的將所有狀態

(x0~x16)歸零否則會產生不穩定的狀態輸出

因為 Lynn濾波器中所有參數固定所以除了抽樣週期 dt 之外並無任何可調參數

抽樣週期 dt 可以控制頻寬dt 越大則濾波器頻寬越低

將步階命令值的輸出送入 Lynn 濾波器中經由低通濾波器的效應可以減緩命

令的變化程度達到加減速控制的目的以下為使用 Lynn 濾波器型式實現加減速控

制的組合語言程式列印 如欲更進一步瞭解 Lynn 濾波器與 FIR 數位濾波器之間的關係可以參考通訊實驗

四數位濾波器設計(FIR)中之說明

ACC_controlasm程式列印 local cmd R0 IP 輸入點位置命令

local out R1 OP 輸出點加減速處理後的位置命令

local dif R2 OP 輸出點位置微分命令

local axis R3 0 馬達編號0=X1=Y2=Z3=C

local old R4 內部變數微分計算用

local sumL R5 內部變數積分計算用

local sumH R6 內部變數積分計算用

local y0 R7 內部變數y(0~2)

local y1 R8 local y2 R9

local x0 R10 內部變數x(0~16)

local x1 R11 local x2 R12 local x3 R13 local x4 R14

local x5 R15 local x6 R16 local x7 R17 local x8 R18

local x9 R19 local x10 R20 local x11 R21 local x12 R22

local x13 R23 local x14 R24 local x15 R25 local x16 R26

64

data 27 模組變數區長度

initial 開機啟動程序

WR dif0 RD (cmd) WR out WR old dif=0 out=old=cmd

sumHL=cmd64

SFL 6 WR sumL RD out SFR 10 SGN 5 WR sumH

RPT 17 WR x00 RPT 3 WR y00 RET x[0~16]=0y[0~2]=0

timer 即時控制程序

RD (cmd) SUBX old WR x0 x0=cmd-old old=cmd

SUB x81 ADD x16 ADD y11 SUB y2 WR y0 y0=x0-2x8+x16+2y1-y2

SGN ADD sumL WR sumL RDH ADC sumH WR sumH sumHL+=y0

WRH RD sumL SFR 6 WR out out=sumHL64

RD y0 SGN SFR WR dif dif=y032mm

RD x0 RPT 16 RDX x1 x[i]=x[i-1] i=1~16

RD y0 RDX y1 WR y2 y[i]=y[i-1] i=1~2

b9 RET

72光電盤輸入模組

DC馬達的位置由光電盤量測之預設儲存於 0xac與 0xbe二個輸入埠位址中其中位址 0xac記錄 X軸馬達的位置位址 0xbe記錄 Y軸馬達的位置由於本實驗的DC馬達接在 Y軸的位置上因此程式中直接選用 Y軸的輸入 光電盤位置輸入的程式列印如下其中速度由位置的差分而得至於馬達的位置

則使用內部 2個 word加以記錄精度為 32位元 POS_inputasm程式列印 local spd R0 OP 輸出點速度量測值

local ang R1 OP 輸出點角度量測值

local angH R2 內部變數角度的 32 位元部分

local mode R3 0x308 模式選擇15MHzAB 相正反向輸入

local pht R4 0xac 輸入阜地址光電盤輸入(0xac)

local phtc R5 0xbe 輸入阜地址光電盤模式(0xbe)

local old R6 內部變數速度更新用

data 7 模組變數區長度

initial 開機啟動程序

RD mode WR (phtc) phtc=mode

RD (pht) WR old WR spd0 RET old=phtspd=0

timer 即時控制程序

RD (pht) SUBX old SGN 11 WR spd spd=(pht-old)old=pht

65

ADD ang WR ang angHL+=spd

RDH ADC angH WR angH

RET

73 PWM輸出控制模組 模組方塊

cmd PWM輸出

程式說明 1在開機時將切換保護時間寫到輸出阜 0xbc上其中切換保護值為 0~6360=5us 2在每次 timer interrupt時將 cmd訊號處理後寫到輸出阜 0xb8上

PWM_outputasm程式列印 local cmd R0 IP gnd 輸入點v相命令

local gain R1 4096 參數輸出增益1=4096

local bias R2 2048 參數輸出偏壓0=2048

local limit R3 4095 參數輸出極限1=4095

local zone R4 0x88f0 參數頻率=12KHz切換保護=5us

local pwm R5 0xb8 輸出阜地址PWM0 輸出(0xb8)

local mode R6 0xbc 輸出阜地址PWM 模式(0xbc)

local p0md R7 0xf8 輸出阜地址port0 模式(0xf8)

local gnd R8 0 輸入接地點

data 9 模組變數區長度

initial 開機啟動程序

RD bias WR (pwm) pwm=bias

RD 0xffff WR (p0md) set port0 mode

RD zone WR (mode) RET mode=zone

stop 關機保護程序

RD bias WR (pwm) RET pwm=bias

timer 即時控制程序

RD (mode) xor 1 and 1 WR (mode) trigger watch-dog

RD (cmd) MUL gain SFR 12 ADD bias ACC=(cmdgain4096)+bias

MAX 0 MIN limit WR (pwm) pwm=limit(ACC)

RET

66

74 PD 控制模組

PD控制的模組方塊參見圖二十一所示其中比例控制的部份直接由增益 kp加以調整微分控制的部份則由誤差的差分經增益 kd的調整而得

Σ+

-

cmd

fdk

err out

Σ

pk

dk

Σ

+

+

+

-

old1minusZ

PD控制器的方塊圖

PD_controlasm程式列印 local cmd R0 IP gnd 輸入點位置命令(可忽略)

local fdk R1 IP gnd 輸入點位置回授(可忽略)

local out R2 OP 輸出點用以控制速度迴路

local kp R3 256 參數增益 kp10=256

local kd R4 0 參數增益 kd10=256

local err R5 0 內部變數

local old R6 0 內部變數

local gnd R7 0 無輸入時的短路點

data 8 模組變數區長度

initial 開機啟動程序

WR out0 WR old0 RET out=old=0

timer 即時控制程序

RD (cmd) SUB (fdk) PRTF WR err

MUL kp SFR 8 P=(cmd-fdk)kp256

RDS err SUBX old MUL kd SFR 8 D=(err-old)kd256

ADDS

WR out out=P+D

RET

程式中預設增益值的 10以整數值 256為基底因此使用 SFR 8的指令加以調

整另外在在計算微分項的程式部份用到 SUBX old的指令其詳細的暫存器動作如

下 參考 piDSP的指令說明SUBX指令將總共用到 3個時序參考錯誤 找不到參照

67

來源在時序 1時將原先 AX的資料拷貝一份到 HX中時序 2時正式執行減

法的動作所以 AX暫存器中的內容會變成 err-old時序 3時DSP會將存放在 HX暫存器中的內容拷貝一份到 old的記憶體中也就是經由 SUBX此一精簡指令將

同時完成計算差分所需要的相減與資料疊代的動作有效的利用 piDSP控制器 DSP核心的精簡指令將可以大幅提昇系統的計算速度

HX AXoldSUBXerr err

old

err

errerr olderr minus

1_err

errerr olderr minus err

1_err

1

2

3

SUBX的指令時序與暫存器變化

68

8附錄快速安裝說明

光纖網路通訊 FPGA 發展系統 (適用於 WIN-XP200098 系統)

快速安裝說明

26Pin 負載輸出入埠

雙電源︵5

12

伏︶輸入埠

單電源︵5

伏︶輸入埠

USB

光纖線輸

號 光纖線輸出埠

入 傳 埠

首先將光碟片 RFFPGA 目錄檔案拷貝在您工作硬碟裡面

第一次安裝時先將 USB 傳輸線接上電腦主機將電源供應器接上 FPGA 模組此時電

腦會出現安裝 USB-Serial 驅動程式選擇從清單安裝此驅動程式放置在光碟片

RFFPGA-USBdrive 選擇您目前安裝系統

可選擇 WIN-98WIN-MEWIN-2000WIN-XP 系統配合您現在工作電腦作業系統

69

注意一般電腦 USB 埠很多插口當您安裝驅動程式時是配合您當時插入之埠

下次如您插入不同接口埠時電腦會再次要求安裝驅動程式這是正常現象請再次安

裝驅動程式否則無法使用

FPLC 操作

首先進入 RFFPGA裡子目錄 testASM直接點選 fPLCexe 出現下面操作畫面(也可直接將

此檔案放置桌面直接點選)

(或者選擇 File 再執行 Setuphellip 選擇您要執行 CAI 檔)

70

進入下面操作畫面 首先使用滑鼠在 FPGA下載按鈕單擊動作使 FPGA變成 DSP晶片 實驗一至實驗五皆為使用 DSP組合語言設計程式其原始程式分別為 testASM1至testASM5可使用 texPad 開啟與編輯程式內容 實驗三與實驗五多有 IO控制動作 當選擇實驗三時出現下面畫面

71

eM_USB 模組

數字型 LED

0 1 2 34 5 6 78 9 A BC D E F

燈號型 LED

44 鍵盤

ADC0 ADC1 DAC0 DAC1

LED 選擇KEY 選擇

模 式 1

0123

注意操作畫面 3與 4 說明開關與按鍵選擇位置後選擇程式下載再按程式啟動如您

按下 0-3按鍵時燈號型 LED會有不同方向閃爍顯示程式停止時結束所有 IO控制動作再按回首頁選擇其他實驗 實驗四與實驗五

模式3

0 1 2 34 5 6 78 9 A BC D E F

按照上面開關選擇直接操作如果以上實驗皆能按照正常操作表示您光纖網路通訊

FPGA發展模組以能正常使用 注意 開機與關機動作順序如下

開機電腦啟動 --- eM_USB 模組電源接上 --- USB 接上電腦 ---

啟動 FPLC 軟體 --- 下載 FPGA 程式

關機關閉 FPLC 軟體 --- eM_USB 模組電源拔掉 --- 拔掉電腦 USB 接頭 ---關掉

電腦

如果以上順序有亂可能造成 USB 找不到驅動造成無法下載經過幾次測試還是

無法下載建議重新啟動電腦主機按照正確步驟操作

72

FPGA 下載操作

進入 FPLC 操作系統按照下列步驟選擇節點模組與下載 bit FPGA 檔案

在 VHDLDEMO 子目錄下您可以選擇您目前 FPGA 種類型號在此型號下我們已將 VHDL

與數位邏輯設計課本範例全部放於此處

73

光纖網路連線 FPGA 下載操作

首先利用光纖線將 eM_USB0 模組光纖輸出埠接至 eM_USB1 模組光纖輸入埠以此

類推最後再將最後 eM_USBN 模組光纖輸出埠接至 eM_USB0 模組光纖輸入埠配置

如附圖方式

個人電腦(Windows) eM_USB模組

0USB

eM_USB模組1

光纖網路

eM_USB模組2

eM_USB模組N

配置完成後進入 FPLC 系統首先必須先將 Node00 下載在 testASM 子目錄裡

piDSPv0bit 檔讓 eM_USB0 模組 FPGA 具備 DSP 功能才能執行光纖網路通訊

操作如下

此時您就可以選擇分別下載至各模組 FPGA 檔 bit

74

安裝 FPLC 注意事項

當您進入 FPLC 時

按 FILE 選擇 programhellip 選擇檔案為 exp_dcmplc 出現下面畫面

正常顯示畫面為

75

DOS 環境操作

在 PC 端的操作是在 Windows 環境中的 DOS 視窗中執行指令範例如下

eFPGA progNETbit 下載 FPGA電路至網路節點0(即 USB節點)中 eFPGA testLEDbit 1 下載 FPGA電路至網路節點1中

對於單一節點的控制程序如下

1將 eM_USB模組連結個人電腦的 USB端 2eM_USB模組開機 3執行下載指令即可 eFPGA xxxxbit 4若要更改 FPGA電路只要重新執行下載指令即可

對於多個網路節點的控制程序如下

1第一組 eM_USB模組連結個人電腦的 USB端再以光纖網路依序其他各節點 2連接 USB界面者為模組0從光纖發射端連接出去的模組為1依此類推 3將所有 eM_USB模組開機 4執行下載指令如下 eFPGA progNETbit 模組0必須先下載指定的 FPGA電路 eFPGA xxxxbit 1 再依序下載其他網路模組的 FPGA電路 eFPGA yyyybit 2 eFPGA zzzzbit 最後再重新下載模組0的 FPGA電路 5換句話說模組0必須先執行 progNETbit讓光纖網路接受 FPGA控制後才能透過光纖網路下載至其他節點等全部網路節點下載完畢後再將模組0的 FPGA重新下載讓模組0也可自由執行任意的 FPGA電路

6若要更改某一個網路節點中的 FPGA電路只要重新執行下述指令 eFPGA progNETbit 模組0必須先下載指定的 FPGA電路 eFPGA yyyybit 2 下載指定網路模組的 FPGA電路 eFPGA zzzz bit 最後再重新下載模組0的 FPGA電路 換句話說除非模組0中的 FPGA已經包括光纖網路管理電路否則一定要先在

模組0中下載網路管理電路後才能下載指定網路節點的 FPGA電路

76

光纖網路通訊 FPGA 發展系統

系統配置

光纖網路通訊 FPGA 發展系統的系統配置圖如下

個人電腦(Windows) eM_USB模組

0USB

eM_USB模組1

光纖網路

eM_USB模組2

eM_USB模組N

其中

1基本模組為 eM_USB模組可用 USB界面和個人電腦連線並提供 USB對光纖網路的轉換功能使得個人電腦可以獨立控制光纖網路中的每個網路節點

2eM_USB模組也可以作為光纖網路中的網路節點透過光纖網路而接受個人電腦的

監控 3就個人電腦而言不論是 USB界面直接連結或是以光纖網路間接連結的 eM_USB模組都是可以直接監控的網路節點最多可以同時控制一個 USB節點和 30個網路節點

4對於每一個網路節點個人電腦都可執行 eM_USB模組中 FPGA的電路下載工作並在適當的 FPGA電路配合下可執行 eM_USB模組中 FPGA內部電路的讀寫控制 5透過適當的 FPGA電路設計各網路節點都可透過光纖網路和其他任何網路節點

作同步通訊執行 FPGA內部記憶體的資料交換資料交換頻率可達 1KHz以上

77

網路模組配置

每個網路模組的標準配置圖如下

eM_USB模組光纖網路

USB eM_FPGA卡

eM_DEMO模組

eM_EXP實驗模組

DC電源

其中

1網路模組以 eM_USB模組為主提供基本的 USB界面和光纖網路連線 2eM_USB模組中的 FPGACPLD採用插卡型式可選擇不同的 eM_FPGA卡包括

eM_2V1K卡可選用 Virtex系列的 XC2V250和 XC2V1000 eM_3S1K卡可選用 Spartan3系列的 XC3S400XC3S1000和 XC3S1500 eM_3S50卡可選用 Spartan3系列的 XC3S50XC3S200和 XC3S400 eM_95XL卡可選用 9500XL系列的 XC95144XL和 XC95288XL 3eM_USB模組中的對外連線有兩種一種是 26P接頭用以連接既有的各種實驗模

組另一種是兩組 50P接頭將 FPGA中各接腳引出用以連接專題實驗 4eM_DEMO模組就是插上 50P接頭的教學模組其中包括 LED 數字顯示和 44鍵盤也具備兩組的 ADC和兩組的 DAC接頭提供類比訊號的測試工具

常用的實驗組合包括

1精簡組合包括(eM_USB+eM_FPGA)提供基本的網路節點適用於專題實驗 2標準組合包括(eM_USB+eM_FPGA+eM_DEMO)提供基礎 FPGA設計的教學實驗

3實驗組合包括(eM_USB+eM_FPGA+eM_DEMO+eM_EXP)提供進階的 FPGA實驗可依需求選用不同的實驗模組

78

eM_USB 模組

eM_USB 模組的電路配置圖如下

TxRx

DCPower

USB

JP2

JP3

光纖界面

外加電源

PC連線

JP1

eM_FPGA模組

FT232 CPLD FlashROM

SRAM

10cm

6cm

JP4

其中

1對外的連線接頭包括 DC電源 可選擇單電源(5V)或是多電源(5V+12V-12V)兩種 USB界面 直接連接個人電腦 光纖界面連接光纖網路 2實驗界面包括 JP1負責內部 CPLD的電路下載 JP2JP3兩組 50P的擴張用接頭 JP4 標準 26P接頭用以連接各種實驗模組 3內部的電路配置包括 A以 SO-DIMM接頭連接各種 eM_FPGA卡 B內附 EEPROMFlashROM和 SRAM提供 FPGA作應用測試 C以一顆 FT232BM作為 USB界面解碼而以一顆 CPLD作為光纖網路解碼 D提供各種 eM_FPGA卡的電路下載功能 4內附五顆 LED由上而下依序為 usbLED指示 USB界面的讀寫狀態 tstLED可由 FPGA電路自行定義 stsLED可由 FPGA電路自行定義 RxLED 可由 FPGA電路自行定義 TxLED 可由 FPGA電路自行定義

79

外部接腳定義

外部接頭的接點順序圖示如下

上視圖

JP11 9 JP4

126225

JP31

50249

JP21

50249

而各接頭的接點定義如下

JP1 JP4 JP2 JP3 1+33V 1+12V 2+12V 1 GND 2 GND 1 GND 2 GND 2GND 3 ADC 4 DAC 3POWER 4ALARM 3 +5V 4 +5V 3nc 5 yPB2 6 yPB3 5RxNET 6TxNET 5+12V 6+12V 4TCK 7 yPB1 6 yPB4 7RxUSB 6TxUSB 7-12V 6-12V 5nc 9 yPB0 10yPB5 9RxCAN 10TxCAN 9 ADC 10 DAC 6TDO 11yPB6 12yPB7 11P0D0 12P0D1 11P1D0 12P1D1 7TDI 13yGND 14yPC3 13P0D2 14P0D3 13P1D2 14P1D3 8nc 15yPC2 16yPC1 15P0D4 16P0D5 15P1D4 16P1D5 9TMS 17yPC0 18yPA0 17P0D6 18P0D7 17P1D6 18P1D7 19yPA1 20yPA2 19P0D8 20P0D9 19P1D8 20P1D9 21yPA3 22GND 21P0D10 22P0D11 21P1D10 22P1D11 23GND 24+5V 23P0D12 24P0D13 23P1D12 24P1D13 25+5V 26nc 25P0D14 26P0D15 25P1D14 26P1D15 27P2D0 28P2D1 27PxA0 28PxA1 29P2D2 30P2D3 29PxA2 30PxA3 31P2D4 32P2D5 31PxA4 32PxA5 33P2D6 34P2D7 33PxA6 34PxA7 35P2D8 36P2D9 35PxB0 36PxB1 37P2D10 38P2D11 37PxB2 38PxB3 39P2D12 40P2D13 39PxB4 40PxB5 41P2D14 42P2D15 41PxB6 42PxB7 43ADC0 44ADC1 43PxC0 44PxC1 45ADC2 46ADC3 45PxC2 46PxC3 47ADC4 48ADC5 47PxC4 48PxC5 49DAC0 50DAC1 49PxC6 50PxC7

80

eM_FPGA 模組

在各種 eM_FPGA 模組中FPGA 對外電路的標準配置圖如下

24576MHz

FlashROM

26PSRAM

EEPROM

mD[8]

yPA[4]

FPGACPLD

mA[19]mRDmWRmCSeeCKeeCSeeDIeeDO

光纖界面 RxNETTxNET

USB 界面 RxUSBTxUSBCLK24MPOWERALARM

LED

tstLEDstsLEDRxLEDTxLED

yPB[8]yPC[4]

ADCDAC

ADC[8]

實驗模組

ADC[2]

DAC[2]

xPA[4]

xPB[8]

xPC[4]

基礎實驗

其中

1FPGACPLD可以選擇下述幾種 XC2V250XC2V1000 採用 eM_2V1K模組其中 FPGA為 FG456包裝 XC3S400XC3S1000XC3S1500採用 eM_3S1K模組其中 FPGA為 FG456包裝 XC3S400XC3S1000XC3S1500採用 eM_3S1K模組其中 FPGA為 FG456包裝 XC3S50XC3S200XC3S400 採用 eM_3S50模組其中 FPGA為 TQ144包裝 XC95144XLXC95288XL 採用 eM_95XL模組其中 CPLD為 TQ144包裝 2採用 FG456包裝者可以控制所有的 IO界面 3採用 TQ144包裝者只是不能控制 RAM和 FlashROM而可以控制其他所有的界面 4所有 FPGA模組都可自由選擇由 USB界面或是由光纖界面下載電路但是 CPLD模組只能固定由 USB界面下載電路

5所有 FPGACPLD模組都可透過 26P接頭連接既有的各種實驗模組

81

FPGA 接腳對照表

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

mD0 XD6 mD0 A17 C13 -- -- mD1 XD7 mD1 B17 D12 -- -- mD2 XD8 mD2 C17 D11 -- -- mD3 XD9 mD3 D17 C11 -- -- mD4 XD10 mD4 E17 D10 -- -- mD5 XD11 mD5 E16 C10 -- -- mD6 XD12 mD6 E14 D9 -- -- mD7 XD13 mD7 E13 D7 -- -- mA0 XD14 mA0 D13 C7 -- -- mA1 XD15 mA1 C13 D6 -- -- mA2 XA0 mA2 V5 C3 -- -- mA3 XA1 mA3 U5 C4 -- -- mA4 XA2 mA4 Y2 D3 -- -- mA5 XA3 mA5 Y1 D4 -- -- mA6 XA4 mA6 V4 E3 -- -- mA7 XA5 mA7 V3 E4 -- -- mA8 XA6 mA8 W2 F3 -- -- mA9 XA7 mA9 W1 F4 -- -- mA10 XA8 mA10 T2 G6 -- -- mA11 XA9 mA11 T1 K3 -- -- mA12 XA10 mA12 R4 K10 -- -- mA13 XA11 mA13 R3 L3 -- -- mA14 XA12 mA14 R2 L4 -- -- mRD XRD mRD R1 D5 -- -- mWR XWR mWR P6 C6 -- --

POWER P0A0 POWER B4 B20 P1 P5 ALARM P0A1 ALARM A4 A19 P2 P6 RxNET P0A2 RxNET C4 B19 P4 P7 TxNET P0A3 TxNET C5 A18 P5 P9 RxUSB P0B0 RxUSB B5 A15 P6 P10 TxUSB P0B1 TxUSB A5 B15 P7 P11 RxCAN P0B2 RxCAN D6 A14 P8 P12 RxCAN P0B3 TxCAN C6 B14 P10 P13

CLK24M CLK24M CLK24M E12 B12 P124 P38

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

PWM0H P3A0 P0D0 E6 A8 P21 P23 PWM0L P3A1 P0D1 E5 B8 P23 P24 PWM1H P3A2 P0D2 C2 B6 P24 P25 PWM1L P3A3 P0D3 C1 A5 P25 P26 PWM2H P3A4 P0D4 D2 B5 P26 P27

82

PWM2L P3A5 P0D5 D1 A4 P27 P28 PWMenb P3A6 P0D6 E4 B4 P28 P30 PHT1Z P3A7 P0D7 E3 A3 P30 P31 PHT1A P3B0 P0D8 G2 C1 P31 P32 PHT1B P3B1 P0D9 G1 C2 P32 P33 PHT0A P3B2 P0D10 H5 D1 P33 P34 PHT0B P3B3 P0D11 J6 D2 P35 P35 AMP0 P3B4 P0D12 H4 E1 P36 P39 AMP1 P3B5 P0D13 H3 E2 P40 P40 AMP2 P3B6 P0D14 H2 F2 P41 P41 AMP3 P3B7 P0D15 H1 G1 P44 P43 eeSK P0C3 P1D0 C10 B9 P20 P22 eeCS P0C2 P1D1 D10 A9 P18 P21 eeDI P0C1 P1D2 F10 B10 P17 P20 eeDO P0C0 P1D3 E10 B11 P15 P19 ssCK P0B7 P1D4 E8 A11 P14 P17 ssCS P0B6 P1D5 E7 A12 P13 P16 ssDI P0B5 P1D6 A6 B13 P12 P15 ssDO P0B4 P1D7 B6 A13 P11 P14

ppCLK P3C0 P1D8 K4 G2 P46 P44 ppDIN P3C1 P1D9 K3 K1 P47 P45 TxD P3C2 P1D10 K2 K2 P50 P46 RxD P3C3 P1D11 K1 L1 P51 P48

tstLED P3C4 P1D12 L5 L2 P52 P49 stsLED P3C5 P1D13 L4 M1 P53 P50 RxLED P3C6 P1D14 L3 M2 P55 P51 TxLED P3C7 P1D15 L2 N1 P56 P52

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

xPA0 P2A0 P2D0 AA3 N2 P59 P53 xPA1 P2A1 P2D1 Y4 T1 P60 P54 xPA2 P2A2 P2D2 AA4 T2 P63 P56 xPA3 P2A3 P2D3 AB4 U2 P68 P57 xPC0 P2A4 P2D4 W5 V1 P69 P58 xPC1 P2A5 P2D5 Y5 V2 P70 P59 xPC2 P2A6 P2D6 AA5 W1 P73 P60 xPC3 P2A7 P2D7 AB5 W2 P74 P61

-- P2B0 P2D8 V6 Y1 P76 P64 -- P2B1 P2D9 V7 Y2 P77 P66 -- P2B2 P2D10 W6 AA3 P78 P68

mCS P2B3 P2D11 Y6 AB4 P79 P69 mA15 P2B4 P2D12 V9 AA4 P80 P70 mA16 P2B5 P2D13 V10 AB5 P82 P71 mA17 P2B6 P2D14 W10 AA5 P83 P74 mA18 P2B7 P2D15 Y10 AA6 P84 P75 CS0 P2C0 ADC0 AA10 AB8 P85 P76

83

SDIN0 P2C1 ADC1 AB10 AA8 P86 P77 CS1 P2C2 ADC2 U10 AB9 P87 P78

SDIN1 P2C3 ADC3 U11 AA9 P89 P79 SCLK P2C4 ADC4 V11 AB10 P90 P80 CS2 P2C5 ADC5 W11 AA10 P92 P81

SDOUT P2C6 ADC6 Y11 AB11 P93 P82 LDAC P2C7 ADC7 AA11 AA11 P95 P83

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

xPB0 P1A0 PxA0 M1 M3 P135 P85 xPB1 P1A1 PxA1 M2 M4 P132 P86 yPB2 P1A2 PxA2 M3 N3 P131 P87 yPB3 P1A3 PxA3 M4 N4 P130 P88 yPB1 P1A4 PxA4 M5 T4 P129 P91 yPB4 P1A5 PxA5 M6 T5 P128 P92 yPB0 P1A6 PxA6 N1 U3 P127 P93 yPB5 P1A7 PxA7 N2 U4 P125 P94 yPB6 P1B0 PxB0 U13 V3 P119 P95 yPB7 P1B1 PxB1 V13 V4 P118 P96 xPB2 P1B2 PxB2 W13 W3 P116 P97 xPB3 P1B3 PxB3 Y13 W4 P113 P98 xPB4 P1B4 PxB4 AA13 Y3 P112 P100 xPB5 P1B5 PxB5 AB13 Y4 P96 P101 yPC3 P1B6 PxB6 U12 Y5 P97 P102 yPC2 P1B7 PxB7 V12 W5 P98 P103 yPC1 P1C7 PxC0 AB17 W11 P108 P113 yPC0 P1C6 PxC1 AA17 Y11 P107 P112 yPA0 P1C5 PxC2 Y17 W10 P105 P111 yPA1 P1C4 PxC3 W17 Y10 P104 P110 yPA2 P1C3 PxC4 AB18 W9 P103 P107 yPA3 P1C2 PxC5 AA18 W8 P102 P106 xPB6 P1C1 PxC6 Y18 W6 P100 P105 xPB7 P1C0 PxC7 W18 Y6 P99 P104

84

eM_DEMO 模組

eM_DEMO 模組的電路配置圖如下

eM_USB 模組

數字型 LED

0 1 2 34 5 6 78 9 A BC D E F

燈號型 LED

44 鍵盤

ADC0 ADC1 DAC0 DAC1

LED 選擇KEY 選擇

其中

1eM_DEMO模組的基本功能包括 A將 xPAxPBxPC等 16個 IO訊號引出控制 LED和鍵盤電路 B將 ADDA訊號引出並放大成+-10V的工作範圍 2LED和鍵盤可以選擇三種模式由 LED和 KEY 兩組開關作選擇圖示如下

模式1

0123

模式2 模式3

0 1 2 34 5 6 78 9 A BC D E F

0123

3模式14鍵輸入並搭配 16點的 LED燈號顯示其中 16點 LED分別對映到 xPA[0~3]xPB[0~7]和 xPC[0~3] 4組按鍵分別對映到 xPC[0~3] 4模式24鍵輸入並搭配四個 7段式數字顯示其中 數字顯示由 xPA[0~3]作數字掃瞄而由 xPB[0~7]作 7段式 LED控制 4組按鍵 分別對映到 xPC[0~3] 5模式316鍵輸入並搭配四個 7段式數字顯示其中 數字顯示由 xPA[0~3]作數字掃瞄而由 xPB[0~7]作 7段式 LED控制 16組按鍵由 xPA[0~3]作鍵盤掃瞄而由 xPC[0~3]作鍵盤讀取 6根據VHDL與數位邏輯設計的章節其中 第 1章至 10章的實驗採用模式1而 第 11章實驗採用模式2而 第 12章之後的實驗都採用模式3

85

FPGA UCF 定義

eM_3S1K 模組

NET CLK LOC = B12

NET XAlt0gt LOC = N2

NET XAlt1gt LOC = T1

NET XAlt2gt LOC = T2

NET XAlt3gt LOC = U2

NET XBlt0gt LOC = M3

NET XBlt1gt LOC = M4

NET XBlt2gt LOC = W3

NET XBlt3gt LOC = W4

NET XBlt4gt LOC = Y3

NET XBlt5gt LOC = Y4

NET XBlt6gt LOC = W6

NET XBlt7gt LOC = Y6

NET XClt0gt LOC = V1

NET XClt1gt LOC = V2

NET XClt2gt LOC = W1

NET XClt3gt LOC = W2

NET YAlt0gt LOC = W10

JP4 接頭

NET YAlt1gt LOC = Y10

NET YAlt2gt LOC = W9

NET YAlt3gt LOC = W8

NET YBlt0gt LOC = U3

NET YBlt1gt LOC = T4

NET YBlt2gt LOC = N3

NET YBlt3gt LOC = N4

NET YBlt4gt LOC = T5

NET YBlt5gt LOC = U4

NET YBlt6gt LOC = V3

NET YBlt7gt LOC = V4

NET YClt0gt LOC = Y11

NET YClt1gt LOC = W11

NET YClt2gt LOC = W5

NET YClt3gt LOC = Y5

在光碟片中 RFFPGAVHDLDEMOBIT3S1K 裡有 VHDL 與數位邏輯設計書本範例原始檔與合成檔

86

eM_3S50 模組

NET CLK LOC = P124

NET XAlt0gt LOC = P59

NET XAlt1gt LOC = P60

NET XAlt2gt LOC = P63

NET XAlt3gt LOC = P68

NET XBlt0gt LOC = P135

NET XBlt1gt LOC = P132

NET XBlt2gt LOC = P116

NET XBlt3gt LOC = P113

NET XBlt4gt LOC = P112

NET XBlt5gt LOC = P96

NET XBlt6gt LOC = P100

NET XBlt7gt LOC = P99

NET XClt0gt LOC = P69

NET XClt1gt LOC = P70

NET XClt2gt LOC = P73

NET XClt3gt LOC = P74

NET YAlt0gt LOC = P105

JP4 接頭

NET YAlt1gt LOC = P104

NET YAlt2gt LOC = P103

NET YAlt3gt LOC = P102

NET YBlt0gt LOC = P127

NET YBlt1gt LOC = P129

NET YBlt2gt LOC = P131

NET YBlt3gt LOC = P130

NET YBlt4gt LOC = P128

NET YBlt5gt LOC = P125

NET YBlt6gt LOC = P119

NET YBlt7gt LOC = P118

NET YClt0gt LOC = P107

NET YClt1gt LOC = P108

NET YClt2gt LOC = P98

NET YClt3gt LOC = P97

在光碟片中 RFFPGAVHDLDEMOBIT3S200 裡有VHDL與數位邏輯設計書本範例原始檔與合成檔

87

eM_95XL 模組

NET CLK LOC = SPIN38

NET XAlt0gt LOC = SPIN53

NET XAlt1gt LOC = SPIN54

NET XAlt2gt LOC = SPIN56

NET XAlt3gt LOC = SPIN57

NET XBlt0gt LOC = SPIN85

NET XBlt1gt LOC = SPIN86

NET XBlt2gt LOC = SPIN97

NET XBlt3gt LOC = SPIN98

NET XBlt4gt LOC = SPIN100

NET XBlt5gt LOC = SPIN101

NET XBlt6gt LOC = SPIN105

NET XBlt7gt LOC = SPIN104

NET XClt0gt LOC = SPIN58

NET XClt1gt LOC = SPIN59

NET XClt2gt LOC = SPIN60

NET XClt3gt LOC = SPIN61

NET YAlt0gt LOC = SPIN111

JP4 接頭

NET YAlt1gt LOC = SPIN110

NET YAlt2gt LOC = SPIN107

NET YAlt3gt LOC = SPIN106

NET YBlt0gt LOC = SPIN93

NET YBlt1gt LOC = SPIN91

NET YBlt2gt LOC = SPIN87

NET YBlt3gt LOC = SPIN88

NET YBlt4gt LOC = SPIN92

NET YBlt5gt LOC = SPIN94

NET YBlt6gt LOC = SPIN95

NET YBlt7gt LOC = SPIN96

NET YClt0gt LOC = SPIN112

NET YClt1gt LOC = SPIN113

NET YClt2gt LOC = SPIN103

NET YClt3gt LOC = SPIN102

在光碟片中 RFFPGAVHDLDEMOSVF95288XL 裡有VHDL與數位邏輯設計書本範例原始檔與合成

檔案

88

eM_FPGA 模組

NET CLK LOC = E12

NET XAlt0gt LOC = AA3

NET XAlt1gt LOC = Y4

NET XAlt2gt LOC = AA4

NET XAlt3gt LOC = AB4

NET XBlt0gt LOC = M1

NET XBlt1gt LOC = M2

NET XBlt2gt LOC = W13

NET XBlt3gt LOC = Y13

NET XBlt4gt LOC = AA13

NET XBlt5gt LOC = AB13

NET XBlt6gt LOC = Y18

NET XBlt7gt LOC = W18

NET XClt0gt LOC = W5

NET XClt1gt LOC = Y5

NET XClt2gt LOC = AA5

NET XClt3gt LOC = AB5

NET YAlt0gt LOC = Y17

JP4 接頭

NET YAlt1gt LOC = W17

NET YAlt2gt LOC = AB18

NET YAlt3gt LOC = AA18

NET YBlt0gt LOC = N1

NET YBlt1gt LOC = M5

NET YBlt2gt LOC = M3

NET YBlt3gt LOC = M4

NET YBlt4gt LOC = M6

NET YBlt5gt LOC = N2

NET YBlt6gt LOC = U13

NET YBlt7gt LOC = V13

NET YClt0gt LOC = AA17

NET YClt1gt LOC = AB17

NET YClt2gt LOC = V12

NET YClt3gt LOC = U12

在光碟片中 RFFPGAVHDLDEMOBIT2V250 裡有VHDL與數位邏輯設計書本範例原始檔與合成檔

89

Page 22: RFFPGA 直流馬達實驗手冊juniortek.com.tw/program/manual/RF-DC-mal.pdf · em_demo模組 em_dcm 直流伺服馬達 dc電源 rffpga 系統的直流馬達實驗規劃 其中包括:

6實驗說明

下圖所示為直流馬達的控制系統方塊圖透過電流速度以及位置的回授再搭

配適當的控制器可建立完整的閉迴路控制系統在後面的實驗中將依此一系統方塊圖

逐步建立速度和位置的控制實驗各實驗的說明和操作方式及參考實驗結果將逐一進

行詳細的說明

控制

參考位置

速度 位置速

度控制 電流控制

電力電

子換流

位置速

度感測

i

+ -

壓ν

位置

速度

i

DC直流馬達之控制系統方塊圖

PWM 驅動方式只是簡單的開環路控制而高精度的馬達控制必須透過回授控制來完成

對於邏輯電路的設計者而言必須先瞭解基本的回授控制架構以便將來轉換成實用的

邏輯電路設計

設計說明

開環路特性

在電壓驅動的狀況下直流馬達開環路控制的示意圖如下

+-

22

如果換算成數學模式則轉換成下面的架構

+-Vc

R L

EMF

+

-

ITB

J

ω

其中

1其中的變數和參數包括 Vc 控制的電壓命令 R 電樞迴路的等效電阻 L 電樞迴路的等效電感 EMF電樞產生的反電動勢 i 電樞迴路中的電流 T 馬達所產生的扭力 J 馬達和負載的等效慣量 B 馬達和負載的等效摩擦力 ω 馬達所產生的速度 2所牽涉的物理公式包括 電壓迴路Vc = Ri + L(didt) + EMF 即電樞迴路中的電壓平衡 動力負載T = Bω + J(dωdt) 即扭力平衡 馬達特性T = Kti 所產生的扭力和電流成正比 電機特性EMF= Keω 所產生的電動勢和轉速成正比 其中新增的參數包括 Kt馬達的扭力常數 Ke馬達的反電動勢常數 3將微分項作拉式轉換(Laplase Transformation)的對映即 s = ddt 可將微分方程式轉換成更簡單的代數方程式而產生到下面的控制方塊圖

sL+R1Vc

+-EMF

iKt

TsJ+B1 ω

Ke

4在直流馬達的開環路特性中控制電壓(Vc)時輸入點而馬達轉速(ω)是輸出點即是控制馬達電壓以控制馬達轉速

5基本上馬達的開環路特性是個兩階系統類似於低通濾波器的特性在許多應用 場合其開環路特性還可以再簡化成一階系統方塊圖如下

23

sτ +1

KmVc ω 其中 τ一階系統的時間常數 Km一階系統的穩態增益

採用兩階系統的分析方式雖然會比較精細但是用一階系統來分析則可簡化所有的設計

過程因為這裡的實驗重點是邏輯設計所以在本章中我們都用一階系統作分析

系統響應的要求

就控制系統而言最重要的需求就是系統響應包括

穩態特性通常以穩態誤差為指標即是穩態時系統輸出和輸入之間的差異 暫態特性通常以上升時間(Rise Time)和過越比率(Overshoot)為指標

一個理想中的伺服控制系統其系統響應應該是

1穩態誤差為 0即馬達輸出將追隨輸入作變化沒有誤差 2過越比例為 0即馬達輸出絕對不會產生衝過頭的現象 3上升時間為 0即馬達輸出隨時追上輸入命令不會有控制上的延遲現象

當然這是太理想了一個合理的伺服控制系統應該是

1穩態誤差越小越好最好為 0 2過越比例越小越好最好為 0 3上升時間越短越好當然無法為 0但是盡力就是了

速度的回授控制

回授控制的目的就是為了改善系統響應以一階系統代表的馬達控制為例

sτ+1

KmVc ω

在步階響應(Step Response)時其特性如下

1穩態誤差由 Km決定 2過越比例為 0 3上升時間即是其時間常數(τ)

如果用比例控制器(P 控制器)作速度回授的控制則控制方塊圖如下

sτ+1

KmVc ωKp

err

P控制器 直流馬達ωc

速度回授

速度命令 + 速度響應-

24

其中

1速度命令並不直接控制馬達的驅動電壓而是 A將速度命令和速度回授相比找出其誤差訊號 err B依誤差訊號來控制驅動電壓 誤差越大則驅動電壓越高 誤差越小則驅動電壓越低 誤差為負則驅動電壓也為負 其中的比例關係由 P控制器中的 Kp 來調整 2經由數學分析後其步階響應的特性為 A穩態誤差變成 1(1+kpkm)如果 kpkmgtgt1則穩態誤差將趨近於 0 B過越比例仍為 0 C上升時間即是由τ變成τ(1+kpkm)所以上升時間將變短 3換句話說只要 Kp值夠大不論是穩態誤差或是上升時間都會大幅改善

理論上P控制器的增益是越高越好最好是無限大但是實際上是有限制的原因是

1馬達的開環路特性是兩階系統而非一階系統一階系統只是簡化後的結果 2當兩階系統作高增益的回授控制時當增益過高時會產生極嚴重的過越現象使得

馬達產生巨幅震動而難以控制

所以 P控制器的增益雖然是越高越好但調整時仍要小心維持(過越比例為 0)的條件

轉角的回授控制

做為馬達的速度控制P控制器的效果不錯但是如果將 P控制器應用到馬達的轉角控

制其特性就不太理想圖示如下

sτ+1

KmVc ωKp

err

P控制器 直流馬達

θc

轉角回授

轉角命令 + 轉角響應-

s1 θ

其中

1從馬達的速度到轉角之間具有積分特性即 馬達的轉角是馬達速度的積分結果而 馬達的速度是馬達轉角的微分結果而 2其中的積分特性使得整個系統由一階特性變成兩階特性在兩階系統中當設定高

增益時會產生極嚴重的過越現象使得馬達產生巨幅震動而難以控制 3在 P控制器增益無法提高的狀況之下轉角控制效果將無法獲得改善

雖然 P控制器在轉角控制上的效果並不好但是在控制系統中還是有許多法寶可以選擇

25

其中 PD 控制器就是簡單又有效的一個好方法

從表面上來看PD 控制器比 P控制器多了一個微分項就數學上來看這微分項提供了

一個新零點(Zero)可以調整根軌跡圖的走向就實驗上來說這微分項提供了控制器

的預測功能說明如下

sτ+1

KmVc ωKp+sKd

err

P控制器 直流馬達

θc

轉角回授

轉角命令 + 轉角響應-

s1 θ

1轉角控制中 P控制器的問題是在嚴重的過越現象原因是在 P控制器的作用下只有當回授超過命令時才能做出「負向」的控制但這時已經來不及了因為積分器

中已經累積了過多的能量而無法立刻消失使得馬達轉角衝過了頭 2解決之道就是在回授超過命令之前就必須做出「負向」的控制使得積分器累積

的能量逐步減弱在到達目標時才能立刻煞車才能解除過越現象 3而微分項就是這個預測量因為當誤差量越來越小時其微分項是負值雖然微分

項(D)是負值 當誤差量(P)很大時(P+D)的結果還是正值所以還是「正向」控制 當誤差量(P)漸小時(P+D)的結果變成負值才會開始「負向」控制 換句話說在誤差為 0之前即可啟動負向控制產生煞車作用使得馬達提前減速

而即時停止在目標點上自然就解除過越現象了

所以在 PD 控制器中有兩項調整量其中

1Kp增益提供比例控制部分的增益而 Kd增益提供微分控制部分的增益 2Kp增益控制馬達的趨近速度主要影響的是上升時間 3Kd增益控制馬達的提前煞車主要影響的是過越比例 4在兩者搭配下就有機會得到 很快很短的上升時間同時也 不會產生過越現象

PD 控制器的執行

依據 PD 控制器公式可以建立以數位執行的 PD 控制器如下圖所示

cmdKp

fdk

+

-

err

old

+-

Kd

Z-1

out+

+

26

其中

1利用差分公式來取代 PD控制器中的微分公式定義如下 s ==gt (1-Z-1)DT 其中對映的變數包括 s 微分項 Z-1延遲一個抽樣週期 DT抽樣週期單位為 sec 2就執行面而言Z-1是延遲一個抽樣週期也就是以抽樣週期所控制的暫存器 3在上圖中將命令(cmd)和回授(fdk)相減後得到誤差值(err)再將 err延遲一個抽樣週期成為 old所以(err-old)DT即是微分項

4原始的微分控制公式為(err-old)DTKd必須先除再乘但是因為 DT和 Kd 都是常

數可以預先將 Kd修正成 Kd=(KdDT)那麼公式將修正為(err-old)Kd就只需要一個乘法而不需要除法了

同樣的 PD 控制器可以用許多不同的方法作執行包括

1以軟體方式執行例如在 DSP核心中以組合語言撰寫控制模組 2以硬體方式執行例如在 FPGA中直接設計邏輯電路 3以微碼方式執行以微碼作順序控制執行硬體運算工作

這裡先提供用組合語言撰寫的程式模組作為設計參考其他兩種方法將在後續的實驗中

再陸續作說明

模組程式範例PD_controlasm

local cmd R0 IP gnd 輸入點位置命令(可忽略) local fdk R1 IP gnd 輸入點位置回授(可忽略) local out R2 OP 輸出點用以控制速度迴路 local kp R3 256 參數增益 kp10=256 local kd R4 0 參數增益 kd10=256 local err R5 0 內部變數 local old R6 0 內部變數 local gnd R7 0 無輸入時的短路點 data 8 模組變數區長度 initial 開機啟動程序 WR out0 WR old0 RET out=old=0 timer 即時控制程序 RD (cmd) SUB (fdk) WR err MUL kp SFR 8 P=(cmd-fdk)kp256 RDS err SUBX old MUL kd SFR 8 D=(err-old)kd256 ADDS WR out out=P+D RET

27

其中

1PD控制模組中對外的界面變數包括 cmd命令的輸入點 fdk回授的輸入點 out控制的輸出點 2內部參數包括 Kp比例控制增益其中 10=256所以乘完後還需要再右移 8-bit Kd微分控制增益其中 10=256所以乘完後還需要再右移 8-bit 3內部變數包括 err臨時性的變數用以儲存誤差值的計算結果 old儲存性的變數用以儲存上一次抽樣控制時的 err值 4模組程式分成三部分包括 變數宣告local和data所宣告的部分 初值設定initial程序中先將 out和 old設定為 0 即時控制timer程序中依序執行 PD控制器中的每個步驟

控制目標的選擇

從字面上來看速度控制就是控制馬達的速度轉角控制就是控制馬達的轉角沒什麼

好討論的但是實際上確有許多問題第一的問題就是什麼是速度和轉角馬達的速

度和轉角如果不作量測如何得知

既然在量測中取得了速度和轉角資料那麼我們所控制的到底是物理學上的速度和轉

sτ+1

KmVc ωKp+sKd

err

P控制器 直流馬達

θc

轉角回授

轉角命令 + 轉角響應-

s1 θ

KxANG

轉角量測

角還是量測上的速度和轉角以下圖為例

其中

1以轉角量測裝置量測轉角例如裝在馬達軸端的光電盤和解碼電路 2轉角的量測輸出是 ANG而 ANG和物理轉角θ之間有 Km的增益關係 3只要 Km值不是 1那麼系統就不再是單位回授 4如果 Km還有非線性或失真現象那麼控制結果也將有非線性或失真現象

這些問題混雜起來會使得控制系統的分析變得更複雜如果要簡單處理就要認同現

實環境直接以量測結果為控制目標如下圖所示

28

sτ+1

KmVc ωKp+sKd

err

P控制器 直流馬達

θc

轉角回授

+-

s1 θ Kx

ANG轉角量測

其中

1直接以量測結果為控制目標將全系統還原成標準的單位回授控制 2所有的非線性或失真現象都進入開環路討論屬於可以補償的部分 3但是控制結果就是「量測上的轉角」而「物理學上的轉角」

量測誤差的問題

轉角θ

量測ANG

對於量測誤差而言最明顯的問題就是量化誤差圖示如下

其中

1以 DCM模組中的光電盤為例精度為每圈 500格經由乘四解碼計數後其等效

精度增加為每圈 2000格 2比(12000)圈更精密的部分都無法響應換句話說振幅越大的控制其相對誤差越

小而振幅越小的控制其相對誤差越大例如 當振幅為(12)圈時其控制誤差量為 01而 當振幅為(120)圈時其控制誤差量為 1 這是標準的的非線性現象

量化誤差不只影響穩態上的精度還會造成非線性的震動問題圖示如下

t

誤差值

+1

-1

其中

1由於量化誤差的問題只有當誤差超過+1或是-1時才會真正偵測到誤差也才

29

會施加控制量作補償 2所以穩態時的誤差將在+1-1之間擺動造成微幅的振動 3量化誤差越大震動越明顯而量化誤差很小時通常不易察覺出震動現象

微分量的計算

伺服系統中有兩處需要用到微分計算包括

1PD控制器中誤差微分量的計算 2速度控制器中速度回授值的量測

在理論上微分公式是(dXdt)相當於 dXdt = (X(n)-X(n-1))DT (當 DT趨近於 0時)

所以當微分計算中的抽樣週期(DT)越短時微分的計算值將越接近理論值但是事實上

卻非如此以下圖為例

t

X

DTDX

其中

1當 X值為等速度運動時其微分量就是其斜率相當於 DXDT 2DT是微分計算中的抽樣週期理論上越短越好但是由於 DX本身的量化誤差

使得這個原則不再成立例如當斜率為 7394時 若 DT=1000則 DX=7394而 DXDT=7394 若 DT=100 則 DX=739 而 DXDT=739 若 DT=10 則 DX=73 而 DXDT=73 若 DT=1 則 DX=7 而 DXDT=7 3換句話說當抽樣週期越短時DX的量化誤差將越明顯而造成微分計算上更嚴

重的誤差

在 DCM 模組中速度量測的量化誤差分析如下

1馬達上的光電盤精度為每圈 500格經過乘四解碼後等效精度為每圈 2000格 2當馬達轉速為 1200RPM而抽樣頻率為 1KHz時對映的速度量測值為 1200(圈分)2000(格圈)60(秒分)1000(DT秒) = 40(格DT) 3換句話說1200RPM的轉速對映到 40的速度量測值即速度單位=30RPM若最

高轉速為 3000RPM則在+-3000RPM的速度範圍內其量化誤差為 05相當於8-bit的 ADC轉換器精度

4對映不同的抽樣頻率的量化誤差表列如下

30

光電盤精度 最高轉速 抽樣頻率 速度單

速度範圍 量化誤差

500PPR 3000RPM 1KHz 30RPM +-100 05 500PPR 3000RPM 2KHz 60RPM +-50 1 500PPR 3000RPM 4KHz 120RPM +25 2

過溢現象的處理

輸入

輸出

32767

-32768

整數運算都有數值範圍限制以 16-bit 整數而言輸入輸出的關係如下

其中

1當超過正負數的上下限時數值會正負顛倒例如 +32768 將會視為 -32768作處理而 +32769 將會視為 -32768作處理依此類推 2換句話說16-bit的整數運算只有在+-32767之間是線性的對映關係而超過這個範圍就是非線性的對映關係

3不但如此還因為正負顛倒的現象使得原來設計的負回授控制將變為正回授控制

而產生非線性的震盪現象 4換句話說只要計算上稍一不慎就會使得原先穩定的系統產生不穩定的震盪結果

為了避免過溢現象所造成的不穩定問題通常控制系統中會利用飽和處理作改善圖示

如下

輸入

輸出

lmtH

lmtL

31

其中

1當超過計算的上限時將固定設為上限值處理而當超過計算的下限時也將固定

設為下限值處理 2這時的整數運算只有在上下限之間是線性的對映關係而超過這個範圍將還是非線

性的對映關係 3雖然如此但是因為沒有正負顛倒的現象所以不再會有負回授變為正回授的問題

而避免了非線性的震盪現象 4換句話說飽和處理是針對過溢現象的妥協處理方案雖然不完全理想但是是可

接受的最佳選擇

下面是對映的組合語言範例

RD x x為輸入端 MIN lmtH 取得 x和 lmtH中的較小值即是作上限保護的工作 MAX lmtL 取得 x和 lmtL中的較大值即是作下限保護的工作 WR y Y為輸出端 其中

1組合語言中提供MAX和MIN的計算其中 MIN lmtH 比較 AX暫存器和 lmtH而將較低值存入 AX暫存器中 MAX lmtL 比較 AX暫存器和 lmtH而將較高值存入 AX暫存器中 2所以直接可用MIN指令作上限保護而以MAX指令作下限保護兩者合併後即是

完整的飽和處理結果

飽和處理通常應用在高位數轉成低位數的場合例如32-bit轉換成16-bit或是16-bit

轉換成 12-bit 等等例如在本實驗中所有的運算都是以 16-bit 整數作處理但是到

PWM 驅動級輸出時卻要轉換成 12-bit精度的 PWM 命令所以必須先用飽和處理以避免

過溢現象造成的不穩定問題

32

61 實驗 1-開迴路的電壓控制 實驗說明以電壓直接控制轉速的開迴路特性可簡化為一階系統處理方塊圖如

sτ+1

v km ωm

其中V 送給驅動器的 PWM電壓命令

ωm馬達的轉動速度可由處理 photo encoder信號所得的位置微分而得 km一階系統的穩態增益 τ一階系統的時間常數即步階響應中的上升時間

為了觀測直流馬達的開環路特性建立下面的測試方塊圖

其中

1所使用的模組包括 FG1方波產生器產生所需的步階測試波形 FT1馬達模擬以一階系統的低通濾波器來執行 IO1光電盤的回授處理可同時取得轉角和速度的量測值 IO2PWM電壓驅動直接驅動直流馬達作控制 Led四位數字七段顯示模組顯示波形信號資料 2測試目標有兩項(P 參數設定欄)包括 A調整方波命令控制直流馬達作開環路的 PWM電壓控制 B調整馬達模擬參數使模擬結果和實驗結果相符以確認開環路特性

33

實驗畫面顯示如下

測試一 開環路的電壓控制 記錄頻道 CH1電壓命令Y1=-300DY=500 CH2模擬速度Y2=-100DY=500 CH3馬達速度Y3=100DY=50 CH4馬達轉角Y4=300DY=50000 實驗參數 FG1kAMP=256電壓命令的測試振幅 FG1kFRQ=150電壓命令的測試頻率 FT1DT =10 馬達模擬參數 FT1KA =500馬達模擬參數

其中

1用示波器功能記錄四個頻道其中 CH2和 CH3重疊顯示以比較模擬速度和量測

速度之間的差異 2由於 Km 不等於 1所以必須調整 CH3的 Y軸單位才能使得 CH2和 CH3的穩態響應部分重疊

3實驗時可以改變 FG1的參數以調整測試方波的振幅和頻率 4可以調整 FT1的參數使得 CH2和 CH3的暫態響應部分重疊

根據實際的測試結果分析如下

2馬達模擬的參數調整到 DT=10而 KA=500根據公式 τ = 40961000dtka 所以上升時間(τ)為 0082秒或是 82ms 3CH2CH3的 Y軸單位並不一致顯然 Km 不等於 1經計算確認 Km=0098

對應之 plc檔程式說明(exp_pwmplc) echo off 畫面顯示開始

run dsp 0 選擇 DSP1

run stop run reset 既有程式停止

run testDCMmem 下載指定程式

das 1 ampfg1out 0 1024 PWM 波形 Volt 設定 DAS 頻道1

das 2 ampft1lp 0 1024 馬達模擬 Volt 設定 DAS 頻道2

das 3 ampio1spd 0 1024 馬達速度 Volt 設定 DAS 頻道3

das 4 ampio1ang 0 1024 馬達角度 Volt 設定 DAS 頻道4

plot select 0 設定示波器頁數

plot xunit 100000 0 設定示波器 X軸

plot yunit 1 500 -300 設定示波器 Y1 軸

34

plot yunit 2 500 -100 設定示波器 Y2 軸

plot yunit 3 50 100 設定示波器 Y3 軸

plot yunit 4 50000 300 設定示波器 Y4 軸

plot trigger 1 0 1 10 設定示波器觸發

plot scope 9 1 2 3 4 設定示波器顯示

module io2 設定 io2 模組

s cmd ampfg1out

module fg1 設定 fg1 模組

s kAmp 256 s kFrq 150

module ft1 設定 ft1 模組

s u ampfg1out s dt 10 s ka 500

module io3 設定 io3 模組

s led ampfg1out

module 回復預設模組

run 1khz 設定抽樣頻率為 4KHz

run start DSP 開始執行

das stop pause 1 DAS 啟動 das start DAS 啟動

echo on 回復正常訊息顯示

使用者可視情況調整一階濾波器的 ka和 dt值使得 ch2和 ch3 兩組波形完全相符

以求得開迴路系統近似的一階轉移函數 CAI操控設計畫面規劃如下(EXP_PWMCAI) page 1 畫面設計

35

page 2 畫面設計 page 3 畫面設計

36

實測響應圖

訊 號 說 明 訊 號 說 明 ch1 方波產生器訊號 ch3 一階濾波器輸出信號 ch2 馬達角速度訊號 ch4 馬達角位置訊號

直流馬達之開迴路電壓控制響應圖

37

以邏輯分析功能觀測直流馬達之光電盤輸入與 PWM輸出信號

38

62 實驗 2-閉迴路的速度控制 實驗說明為了觀測閉迴路的速度控制響應建立下面的測試方塊圖

加入 PD控制後系統閉迴路的轉移函數經適度的簡化仍能約略以一階系統

處理方塊圖如下

sτ+1

u km ωm

其中

u 送給控制器的速度命令

ωm馬達的轉動速度可由處理 photo encoder 信號所得的位置微分而得

km一階系統的穩態增益 τ一階系統的時間常數即步階響應中的上升時間

方塊圖中的模組功能說明如下

1用 fg1 產生測試用的方波速度命令

2將方波速度命令和速度回授訊號送到 PD 控制器方塊中產生電壓控制訊號再透

過 io2 模組將訊號送出給伺服介面

3用 ft1 建立對照用的一階系統可用 IIR1濾波器方塊產生

4將方波命令產生速度命令再觀測 PHT(io1)上的速度值 spd

5調整 IIR1濾波器的參數使得兩組波形完全相符這時 IIR1濾波器就是閉迴路

速度控制的特性其中 km 為增益而τ為上升時間(單位為 sec)

6增益 km 可從示波器中作簡單計算而上升時間(τ=40964000dtka)

7 Led四位數字七段顯示模組顯示波形信號資料

39

對應之 plc檔程式說明(exp_speedplc) echo off 畫面顯示開始

run dsp 0 選擇 DSP1

run stop run reset 既有程式停止

run testDCMmem 下載指定程式

das 1 ampfg1out 0 1024 PWM 波形 Volt 設定 DAS 頻道1

das 2 ampft1lp 0 1024 馬達模擬 Volt 設定 DAS 頻道2

das 3 ampio1spd 0 1024 馬達速度 Volt 設定 DAS 頻道3

das 4 ampio1ang 0 1024 馬達角度 Volt 設定 DAS 頻道4

plot select 0 設定示波器頁數

plot xunit 100000 0 設定示波器 X軸

plot yunit 1 50 -300 設定示波器 Y1 軸

plot yunit 2 50 -100 設定示波器 Y2 軸

plot yunit 3 50 100 設定示波器 Y3 軸

plot yunit 4 50000 300 設定示波器 Y4 軸

plot trigger 1 0 1 10 設定示波器觸發

plot scope 9 1 2 3 4 設定示波器顯示

module io2 設定 io2 模組

s cmd ampcn2out

module fg1 設定 fg1 模組

s kAmp 50 s kFrq 150

module cn2 設定 cn1 模組

s cmd ampfg1out s fdk ampio1spd s kp 0x4000

module ft1 設定 ft1 模組

s u ampfg1out s dt 2 s ka 320

module io3 設定 io3 模組

s led ampfg1out

module 回復預設模組

run 1khz 設定抽樣頻率為 4KHz

run start DSP 開始執行

das stop pause 1 DAS 啟動 das start DAS 啟動

echo on 回復正常訊息顯示

CAI操控設計畫面規劃如下(EXP_speedCAI)

40

page 1 畫面設計 page 2 與 page 3 畫面設計與實驗一 page 2 與 page 3相同畫面 page 4 畫面設計

41

方塊的參數設定 使用者可視情況調整一階濾波器的 ka和 dt值使得 ch2和 ch3 兩組波形完全相符

以求得此一閉迴路系統近似的一階轉移函數或調整 PD控制器中的 kp和 kp值以調整系統之響應 實測響應圖

訊 號 說 明 訊 號 說 明 ch1 方波產生器產生之速度命令 ch3 一階濾波器輸出信號 ch2 馬達角速度訊號 ch4 馬達角位置訊號

42

直流馬達之閉迴路速度控制響應圖

43

63 實驗 3-閉迴路的位置控制 實驗說明為了觀測閉迴路的位置控制響應將直流馬達的回授改為位置訊號

建立下面的測試方塊圖 方塊圖中的模組功能說明如下

1用 fg1產生測試用的方波位置命令 2將方波位置命令和位置回授訊號送到 PD控制器方塊中產生電壓控制訊號再透過 io2模組將訊號送出到伺服介面驅動馬達轉動

對應之 plc檔程式說明(exp_angleplc) echo off 畫面顯示開始

run dsp 0 選擇 DSP1

run stop run reset 既有程式停止

run testDCMmem 下載指定程式

das 1 ampfg1out 0 1024 PWM 波形 Volt 設定 DAS 頻道1

das 2 ampft1lp 0 1024 馬達模擬 Volt 設定 DAS 頻道2

das 3 ampio1spd 0 1024 馬達速度 Volt 設定 DAS 頻道3

das 4 ampio1ang 0 1024 馬達角度 Volt 設定 DAS 頻道4

plot select 0 設定示波器頁數

plot xunit 100000 0 設定示波器 X軸

plot yunit 1 1000 -300 設定示波器 Y1 軸

plot yunit 2 1000 -100 設定示波器 Y2 軸

plot yunit 3 20 100 設定示波器 Y3 軸

plot yunit 4 1000 300 設定示波器 Y4 軸

plot trigger 1 0 1 10 設定示波器觸發

44

plot scope 9 1 2 3 4 設定示波器顯示

module io2 設定 io2 模組

s cmd ampcn2out

module fg1 設定 fg1 模組

s kAmp 1000 s kFrq 75

module cn2 設定 cn1 模組

s cmd ampfg1out s fdk ampio1ang s kp 0x300 s kd 0x4000

module ft1 設定 ft1 模組

s u ampfg1out s dt 2 s ka 320

module io3 設定 io3 模組

s led ampfg1out

module 回復預設模組

run 1khz 設定抽樣頻率為 4KHz

run start DSP 開始執行

das stop pause 1 DAS 啟動 das start DAS 啟動

echo on 回復正常訊息顯示

CAI操控設計畫面規劃如下(EXP_angleCAI) page 1 畫面設計

45

page 2 與 page 3 畫面設計與實驗一 page 2 與 page 3相同畫面 page 4 畫面設計與實驗二 page 4 畫面 方塊的參數設定 延續上一實驗的說明使用者可以調整 PD控制器中的 kp和 kd值以調整系統之

響應 實測響應圖

訊 號 說 明 訊 號 說 明 ch1 方波產生器產生之位置命令 ch3 馬達角速度訊號 ch2 馬達角位置 ch4 Pd控制器輸出之電壓訊號

46

直流馬達之閉迴路位置控制響應圖

47

64 實驗 4-加減速的位置控制 實驗說明為避免方波命令的過於嚴苛在方波命令的輸出加入一加減速控制功

能方塊以減緩命令變化的幅度增加馬達運動的平順建立的測試方塊圖如下

方塊圖中的模組功能說明如下

1用 fg1產生測試用的方波位置命令 2將方波位置命令送到加減速控制方塊處理後產生新的位置命令再將新的位置命

令與位置回授訊號送到 PD控制器方塊中產生電壓控制訊號最後透過 io2模組將訊號送出到伺服介面驅動馬達轉動

對應之 plc檔程式說明(exp_accplc) echo off 畫面顯示開始

run dsp 0 選擇 DSP1

run stop run reset 既有程式停止

run testDCMmem 下載指定程式

das 1 ampfg1out 0 1024 PWM 波形 Volt 設定 DAS 頻道1

das 2 ampcn1out 0 1024 加速控制 Volt 設定 DAS 頻道2

das 3 ampio1spd 0 1024 馬達速度 Volt 設定 DAS 頻道3

das 4 ampio1ang 0 1024 馬達角度 Volt 設定 DAS 頻道4

plot select 0 設定示波器頁數

plot xunit 100000 0 設定示波器 X軸

plot yunit 1 2000 -300 設定示波器 Y1 軸

plot yunit 2 2000 -100 設定示波器 Y2 軸

plot yunit 3 50 100 設定示波器 Y3 軸

plot yunit 4 2000 300 設定示波器 Y4 軸

48

plot trigger 1 0 1 10 設定示波器觸發

plot scope 9 1 2 3 4 設定示波器顯示

module io2 設定 io2 模組

s cmd ampcn2out

module fg1 設定 fg1 模組

s kAmp 2000 s kFrq 150

module cn1 設定 cn1 模組

s cmd ampfg1out

module cn2 設定 cn2 模組

s cmd ampcn1out s fdk ampio1ang s kp 0x300 s kd 0x4000

module ft1 設定 ft1 模組

s u ampfg1out s dt 2 s ka 320

module io3 設定 io3 模組

s led ampfg1out

module 回復預設模組

run 1khz 設定抽樣頻率為 4KHz

run start DSP 開始執行

das stop pause 1 DAS 啟動 das start DAS 啟動

echo on 回復正常訊息顯示

CAI操控設計畫面規劃如下(EXP_accCAI) page 1 畫面設計

49

page 2 畫面設計與實驗一 page 2相同畫面 page 3 畫面設計與實驗二 page 4相同畫面

參數設定參考之前各實驗的說明可線上機動性的調整 PD控制器中的 kp和 kd值以調整系統之響應 實測響應圖

訊 號 說 明 訊 號 說 明 ch1 方波產生器產生之位置命令 ch3 馬達角位置 ch2 加減速模組輸出之位置命令 ch4 馬達角速度訊號

50

圖一 直流馬達經加減速控制後之閉迴路控制響應圖

51

65 實驗 5-正弦波的位置控制 實驗說明在本實驗中改變命令的波形由方波改變為正弦波並建立如下的測

試方塊圖與上一實驗相比較僅更改命令的波形產生方塊 方塊圖中的模組功能說明如下 1用 fg2產生測試用的弦波位置命令 2將弦波位置命令送到加減速控制方塊處理後產生新的位置命令再與 io1 讀入的位

置回授訊號送到 PD 控制器方塊中產生電壓控制訊號再透過 io2 模組將訊號送出到伺服介面驅動馬達轉動

對應之 plc檔程式說明(exp_sinplc) echo off 畫面顯示開始

run dsp 0 選擇 DSP1

run stop run reset 既有程式停止

run testDCMmem 下載指定程式

das 1 ampfg2out 0 1024 SIN 波形 Volt 設定 DAS 頻道1

das 2 ampcn1out 0 1024 加速控制 Volt 設定 DAS 頻道2

das 3 ampio1spd 0 1024 馬達速度 Volt 設定 DAS 頻道3

das 4 ampio1ang 0 1024 馬達角度 Volt 設定 DAS 頻道4

plot select 0 設定示波器頁數

plot xunit 100000 0 設定示波器 X軸

plot yunit 1 2000 -300 設定示波器 Y1 軸

plot yunit 2 2000 -100 設定示波器 Y2 軸

plot yunit 3 50 100 設定示波器 Y3 軸

plot yunit 4 2000 300 設定示波器 Y4 軸

plot trigger 1 0 1 10 設定示波器觸發

52

plot scope 9 1 2 3 4 設定示波器顯示

module io2 設定 io2 模組

s cmd ampcn2out

module fg2 設定 fg1 模組

s kAmp 2000 s kFrq 100

module cn1 設定 cn1 模組

s cmd ampfg2out

module cn2 設定 cn2 模組

s cmd ampcn1out s fdk ampio1ang s kp 0x300 s kd 0x4000

module ft1 設定 ft1 模組

s u ampfg2out s dt 2 s ka 320

module io3 設定 io3 模組

s led ampfg2out

module 回復預設模組

run 1khz 設定抽樣頻率為 4KHz

run start DSP 開始執行

das stop pause 1 DAS 啟動 das start DAS 啟動

echo on 回復正常訊息顯示

CAI操控設計畫面規劃如下(EXP_sinCAI) page 1 畫面設計

53

page 2 畫面設計 page 3 畫面設計與實驗二 page 4相同畫面

方塊的參數設定可調整 PD控制器中的 kp和 kd值以調整系統之響應 實測響應圖

訊 號 說 明 訊 號 說 明 ch1 弦波產生器產生之位置命令 ch3 馬達角位置訊號 ch2 加減速模組輸出之位置命令 ch4 馬達角速度訊號

54

直流馬達之閉迴路弦波加減速位置控制響應圖

55

7組合語言說明

本節將針對 DC馬達伺服控制實驗專用的程式模組進行功能與程式碼的說明其

有關於波形產生器與資料擷取模組等說明如下

SIN_waveasm 正弦波產生器 PWM_waveasm 方波產生器 IIR1_filterasm 一階濾波器 DAS4asm 資料蒐集模組

弦波產生器

此模組會產生週期性的正弦波方塊圖如下

outfrq

kBiasbias

ampkAmp

kFrqth

kThf=1TB

θ

A

其中

1正弦波有四個參數振幅(A)頻率(F)相位(θ)和偏移(B)其公式為 out = A sin(2πF t +θ) + B 2對於單純的正弦波產生器所對映的參數包括 kAmp 振幅值 kFrq 頻率值kFrq=655368000Hz其中 Hz的範圍為 0~4000例如 1000Hz =gt frq=8192 100Hz =gt frq=819 10Hz =gt frq=82 1Hz =gt frq=8 kTh 相角值0~255代表 0~360的相位當 th=0 時為正弦波 th=64 時為餘弦波 th=128時為反相波依此類推 kBias偏移值 3對於可調變的正弦波產生器其對映的輸入點為 amp 控制振幅的輸入點可產生調幅(AM)波形 frq 控制頻率的輸入點可產生調頻(FM)波形 th 控制相位的輸入點可產生調相(PM)波形 bias控制偏移的輸入點可產生雙頻混波(相加)波形 4若不使用調變功能時各個輸入點時的預設值為 amp 指向 kAmp 的位址 frq 指向 kFrq 的位址

56

th 指向 kTh 的位址 bias指向 kBias的位址

模組程式範例SIN_WAVEasm

local amp R0 IP kAmp 輸入點sin波的振幅 local frq R1 IP kFrq 輸入點sin波的頻率 local th R2 IP kTh 輸入點sin波的相角 local bias R3 IP kBias 輸入點sin波的中心偏移 local out R4 OP 輸出點sin波輸出 local tab R5 TP 表格指標指向 sin[256]的表格 local ang R6 內部變數相位角65536=360deg local kAmp R7 1000 參數振幅值 local kFrq R8 1000 參數頻率值=655368000Hz local kTh R9 0 參數相角值360deg=256 local kBias R10 0 參數偏移值 data 11 模組變數區長度及初值 initial 啟動程序 WR ang0 WR out0 ang=out=0 RET timer 即時控制程序(8KHz) RD ang ADD (frq) WR ang ang+=frq SFR 8 ADD (th) AND 255 ACC=sin(ang256+th) ADD tab WRH RDM table-look-up MUL (amp) SFR 12 ADD (bias) WR out out=ACCamp4096+bias RET table tab 256 sin[256]表格區10=4096 0 101 201 301 401 501 601 700 00~070deg 799 897 995 1092 1189 1285 1380 1474 08~0F 1567 1660 1751 1842 1931 2019 2106 2191 10~17 2276 2359 2440 2520 2598 2675 2751 2824 18~1F 2896 2967 3035 3102 3166 3229 3290 3349 20~27 3406 3461 3513 3564 3612 3659 3703 3745 28~2F 3784 3822 3857 3889 3920 3948 3973 3996 30~37 4017 4036 4052 4065 4076 4085 4091 4095 38~3F 4096 4095 4091 4085 4076 4065 4052 4036 40~4790deg 4017 3996 3973 3948 3920 3889 3857 3822 48~4F 3784 3745 3703 3659 3612 3564 3513 3461 50~57 3406 3349 3290 3229 3166 3102 3035 2967 58~5F

57

2896 2824 2751 2675 2598 2520 2440 2359 60~67 2276 2191 2106 2019 1931 1842 1751 1660 68~6F 1567 1474 1380 1285 1189 1092 995 897 70~77 799 700 601 501 401 301 201 101 78~7F 0 65435 65335 65235 65135 65035 64935 64836 80~87180deg 64737 64639 64541 64444 64347 64251 64156 64062 88~8F 63969 63876 63785 63694 63605 63517 63430 63345 90~97 63260 63177 63096 63016 62938 62861 62785 62712 98~9F 62640 62569 62501 62434 62370 62307 62246 62187 A0~A7 62130 62075 62023 61972 61924 61877 61833 61791 A8~A8 61752 61714 61679 61647 61616 61588 61563 61540 B0~B7 61519 61500 61484 61471 61460 61451 61445 61441 B8~BF 61440 61441 61445 61451 61460 61471 61484 61500 C0~C7270deg 61519 61540 61563 61588 61616 61647 61679 61714 C8~CF 61752 61791 61833 61877 61924 61972 62023 62075 D0~D7 62130 62187 62246 62307 62370 62434 62501 62569 D8~DF 62640 62712 62785 62861 62938 63016 63096 63177 E0~E7 63260 63345 63430 63517 63605 63694 63785 63876 E8~EF 63969 64062 64156 64251 64347 64444 64541 64639 F0~F7 64737 64836 64935 65035 65135 65235 65335 65435 F8~FF

就程式結構而言說明如下

timer 即時控制程序(8KHz) RD ang ADD (frq) WR ang ang+=frq SFR 8 ADD (th) AND 255 ACC=sin(ang256+th) ADD tab WRH RDM table-look-up MUL (amp) SFR 12 ADD (bias) WR out out=ACCamp4096+bias RET

1基本上我們以查表法計算 sin()其輸入θ的範圍為 0~255對映到 0~360deg其輸出 sin(θ)的範圍為+-4096對映到+-10的範圍

2建立一個內部變數 ang其範圍為 0~65535對映到 0~360的相位角 3每個timer程序都執行 ang+=frq的動作更新目前的相位角接著依照 ang的相位角查表得到 sin(ang256+th)值

4由於表格長度為 256-word所以必須將 ang256才能得到正確的對映關係而 th範圍為 0~255所以不需要像 ang一般的做額外處理

5sin()的範圍為(+1-1)而在表格中以(+4096~-4096)的型式記錄相當於 10=4096所以執行 Asin()時還要用 SFR12指令做4096的動作才能正確的取得輸出值

58

6就頻率輸入 frq而言其計算原則是將θ=ωt轉化成θ=Σ(ωdt)因為抽樣頻率

為 8KHz所以 dt=18000而得到 frq=655368000Hz公式其中 Hz為真正的頻率在 8KHz的抽樣頻率下其範圍為 0~4000

鋸齒波產生器

此模組會產生週期性的鋸齒波方塊圖如下

outfrq

kBiasbias

ampkAmp

kFrqth

kThf=1TB

θ

A

其中

1鋸齒波也有四個參數振幅(A)頻率(F)相位(θ)和偏移(B)和正弦波的定義完全一致唯一的差異是其輸出為鋸齒波而非正弦波

2基本波形是從週期開始時為 0一直遞增到週期結束時到達最高點然後立刻回歸

到 0重新開始 3以程式結構而論鋸齒波程式幾乎就是正弦波的相位計算部分只差沒有正弦波的

查表處理而已

模組程式範例SAW_WAVEasm

local amp R0 IP kAmp 輸入點sin波的振幅 local frq R1 IP kFrq 輸入點sin波的頻率 local th R2 IP kTh 輸入點sin波的相角 local bias R3 IP kBias 輸入點sin波的中心偏移 local out R4 OP 輸出點sin波輸出 local ang R5 內部變數相位角65536=360deg local kAmp R6 1000 參數振幅值 local kFrq R7 1000 參數頻率值=655368000Hz local kTh R8 0 參數相角值360deg=256 local kBias R9 0 參數偏移值 data 11 模組變數區長度及初值 initial 啟動程序 WR ang0 WR out0 ang=out=0 RET timer 即時控制程序(8KHz) RD ang ADD (frq) WR ang ang+=frq SFR 8 ADD (th) AND 255 ACC=(ang256+th)amp0x00ff MUL (amp) SFR 8 ADD (bias) WR out out=ACCamp256+bias

59

RET

脈衝波產生器

outfrq

kBiasbias

ampkAmp

kFrqth

kThf=1TB

θ

A

pwm

kDutyduty

此模組會產生週期性的脈衝波方塊圖如下

其中

1脈衝波有五個參數其中振幅(A)頻率(F)相位(θ)和偏移(B)四個參數和正弦波

定義完全一樣另外再增加一個負載率(D) 2基本波形是從週期開始時為 1隔段時間後換為 0然後持續到週期結束再重新開始其中 1所佔有的比例就是負載率當 D=0時為 0而 D=255時為 100

3和其他參數類似負載率(D)以 duty為其輸入點而以 kDuty為其參數值

模組程式範例PLS_WAVEasm

local amp R0 IP kAmp 輸入點脈衝波的振幅 local frq R1 IP kFrq 輸入點脈衝波的頻率 local th R2 IP kTh 輸入點脈衝波的相角 local bias R3 IP kBias 輸入點脈衝波的中心偏移 local duty R4 IP kDuty 輸入點脈衝波的負載率 local out R5 OP 輸出點脈衝波輸出 local ang R6 內部變數相位角65536=360deg local kAmp R7 1000 參數振幅值 local kFrq R8 1000 參數頻率值=655368000Hz local kTh R9 0 參數相角值360deg=256 local kBias R10 0 參數偏移值 local kDuty R11 128 參數負載率100 =256 data 12 模組變數區長度及初值 initial 啟動程序 WR ang0 WR out0 ang=out=0 RET timer 即時控制程序(8KHz)

60

RD ang ADD (frq) WR ang ang+=frq SFR 8 ADD (th) AND 255 ACC=(ang256+th)amp0x00ff SUB (duty) RD (amp) JLT t1 RD 0 ACC=(amp0) t1 ADD (bias) WR out out=ACC+bias RET

IIR 一階濾波器

此模組執行一階的 IIR濾波器方塊圖如下

kau x

Z-1

+

+

-

+低通濾波器

高通濾波器dx lp

hp

濾波器參數的計算公式如下

1假設濾波器的頻寬為 hz則 ωn=hz628 2若系統頻率為 8KHz則抽樣週期 dT為 dT=dt8000 其中 dt為模組參數 3則濾波器參數為 ka=ωndT4096或是 =hzdt62880004096即 =hzdt32 4當 dt決定後所允許的訊號頻寬為(4000dt)換句話說訊號頻寬會因為 dt增加而下降

為了方便實驗的運用下面列出常用的參數對照表

濾波頻寬

(Hz)

10 20 50 100 200 500 1000 2000

訊號頻寬

(Hz)

400 800 2000 4000 4000 4000 4000 4000

模組參數 dt 10 5 2 1 1 1 1 1

模組參數 ka 320 320 320 320 640 1600 3200 6400

表格的運用方式如下

1首先決定濾波頻寬 2接著查表找出對映的參數 dt和 ka 3再查表得到對映的訊號頻寬以決定是否需要串接前級濾波器

61

模組程式範例IIR1_FILTERasm

local u R0 IP 輸入點濾波器輸入 local lp R1 OP 輸出點低通濾波器輸出 local hp R2 OP 輸出點高通濾波器輸出 local dt R3 1 參數抽樣週期 local ka R4 4096 參數增益 ka10=4096 local prd R5 內部變數抽樣週期用 data 6 模組變數區長度 initial 開機啟動程序 WR lp0 WR hp0 WR prd1 RET lp=hp=0prd=1 timer 即時控制程序 SUB prd1 JNZ b9 if (--prdgt0) return RD dt WR prd prd=dt RD (u) SUB lp WR hp hp=u-lp MUL ka SFR 12 ADD lp WR lp lp+=(hpka4096) b9 RET

資料蒐集模組

資料蒐集模組是一個非常特殊的模組專門配合 eTTY 程式中的示波器使用

模組程式範例DAS4asm

local cmd R0 0 紀錄命令0=停止1=前置記錄2=正觸發4=負觸發6=觸發記錄 local dt R1 1 抽樣週期每 dT抽樣一次 local tab R2 TP DAS表格啟始位址 local cnt R3 0 目前記錄點(0~255) local ch1 R4 0 定義頻道1的變數位址 local ch2 R5 0 定義頻道2的變數位址 local ch3 R6 0 定義頻道3的變數位址 local ch4 R7 0 定義頻道4的變數位址 local trg R8 0 定義觸發頻道的變數位址 local th R9 0 觸發準位 local tail R10 0 觸發後的抽樣個數 local buf R11 1 抽樣計數(1~dt) local pnt R12 表格位址計算pnt=tab+cnt4 local len R13 表格長度計算(0~256) data 14 定義模組變數區的長度 table tab 1024 定義表格的長度 initial 啟動程序 WR cmd0 RET cmd=0 timer 控制程序

62

ADD cmd0 JZ t9 if (cmd==0) return SUB buf1 JNZ t9 if (--buf)gt0) return RD dt WR buf dt=buf RD cnt ADD 1 AND 0xff WR cnt cnt=(cnt+1)amp0xff SFL 2 ADD tab WR pnt pnt=tab+cnt4 RD (ch1) WR (pnt) ADD pnt1 pnt++=ch1 RD (ch2) WR (pnt) ADD pnt1 pnt++=ch2 RD (ch3) WR (pnt) ADD pnt1 pnt++=ch3 RD (ch4) WR (pnt) pnt =ch4 RD cmd SUB 1 JZ t9 SUB 1 JZ t2 SUB 1 JZ t3 SUB 1 JZ t4 SUB 1 JZ t5 SUB 1 JZ t6 JR t7 t2 RD (trg) SUB th JGE t9 ADD cmd1 JR t9 wait trgltth t3 RD (trg) SUB th JLE t9 JR t6 wait trggtth t4 RD (trg) SUB th JLE t9 ADD cmd1 JR t9 wait trggtth t5 RD (trg) SUB th JGE t9 JR t6 wait trgltth t6 WR len0 WR cmd7 len=0cmd=7 t7 ADD len1 SUB tail JLT t9 WR cmd0 if ((++len)gt=0x80) cmd=0 t9 RET

與 DC 馬達控制相關的程式模組有以下 4個程式模組說明如下

(1)加減速控制模組 ACC_controlasm (2)光電盤輸入模組 POS_inputasm (3)PWM輸出模組 PWM_outputasm (4)PD控制模組 PD_controlasm

71加減速控制模組 此程式模組主要功能在於執行位置控制的加減速命令修正其數學模式採用 Lynn

濾波器的架構參見下圖

cmd

2

+

old Z -1

-

Z -1

Z -1

Z-1

Z-1x0 x1 x8 x9 x16

+ -

++

2

Z-1

Z-1 y1 y2

+

-

y0

+ +

sumZ-1

+164

12

out

dif

+

63

加減速控制模組方塊圖

其中

1Lynn 濾波器的階數固定成八階也就是 m=8其公式為 H(z) = (1-2Z-m+Z-2m)(1-2Z-1+Z-2)m2

2因為m=8所以m2=64因此最後計算低通濾波的部份時要先做除 64的運算 3因為低通濾波(lp)和 y0之間有 64倍的差異代表 y0y1y2的變化範圍比濾波器輸

入值要擴大許多例如輸入值在+-1000變化時y0y1y2很可能會在+-64000之間變化這範圍已經超出整數處理的範圍很可能會造成錯誤的計算結果

4所以在實驗時輸入值的變化範圍必須控制在+-500之間以保證計算的正確性 5對於 Lynn 濾波器當 m=8時其濾波器的頻寬固定為 1 kHzmdt也就是 dt=1時頻寬為 125 Hz dt=2時頻寬為 625Hz依此類推 6對於 Lynn 濾波器其濾波器的延遲固定為 m個抽樣週期因此設計 hp = x8 - lp 即可得到高通濾波器的對應結果 7其中乘 2和除 64的運算以移位運算取代所以整個程式中並無任何乘法運算 8Lynn 濾波器本身並不是穩定濾波器所以在程式啟動時必須確實的將所有狀態

(x0~x16)歸零否則會產生不穩定的狀態輸出

因為 Lynn濾波器中所有參數固定所以除了抽樣週期 dt 之外並無任何可調參數

抽樣週期 dt 可以控制頻寬dt 越大則濾波器頻寬越低

將步階命令值的輸出送入 Lynn 濾波器中經由低通濾波器的效應可以減緩命

令的變化程度達到加減速控制的目的以下為使用 Lynn 濾波器型式實現加減速控

制的組合語言程式列印 如欲更進一步瞭解 Lynn 濾波器與 FIR 數位濾波器之間的關係可以參考通訊實驗

四數位濾波器設計(FIR)中之說明

ACC_controlasm程式列印 local cmd R0 IP 輸入點位置命令

local out R1 OP 輸出點加減速處理後的位置命令

local dif R2 OP 輸出點位置微分命令

local axis R3 0 馬達編號0=X1=Y2=Z3=C

local old R4 內部變數微分計算用

local sumL R5 內部變數積分計算用

local sumH R6 內部變數積分計算用

local y0 R7 內部變數y(0~2)

local y1 R8 local y2 R9

local x0 R10 內部變數x(0~16)

local x1 R11 local x2 R12 local x3 R13 local x4 R14

local x5 R15 local x6 R16 local x7 R17 local x8 R18

local x9 R19 local x10 R20 local x11 R21 local x12 R22

local x13 R23 local x14 R24 local x15 R25 local x16 R26

64

data 27 模組變數區長度

initial 開機啟動程序

WR dif0 RD (cmd) WR out WR old dif=0 out=old=cmd

sumHL=cmd64

SFL 6 WR sumL RD out SFR 10 SGN 5 WR sumH

RPT 17 WR x00 RPT 3 WR y00 RET x[0~16]=0y[0~2]=0

timer 即時控制程序

RD (cmd) SUBX old WR x0 x0=cmd-old old=cmd

SUB x81 ADD x16 ADD y11 SUB y2 WR y0 y0=x0-2x8+x16+2y1-y2

SGN ADD sumL WR sumL RDH ADC sumH WR sumH sumHL+=y0

WRH RD sumL SFR 6 WR out out=sumHL64

RD y0 SGN SFR WR dif dif=y032mm

RD x0 RPT 16 RDX x1 x[i]=x[i-1] i=1~16

RD y0 RDX y1 WR y2 y[i]=y[i-1] i=1~2

b9 RET

72光電盤輸入模組

DC馬達的位置由光電盤量測之預設儲存於 0xac與 0xbe二個輸入埠位址中其中位址 0xac記錄 X軸馬達的位置位址 0xbe記錄 Y軸馬達的位置由於本實驗的DC馬達接在 Y軸的位置上因此程式中直接選用 Y軸的輸入 光電盤位置輸入的程式列印如下其中速度由位置的差分而得至於馬達的位置

則使用內部 2個 word加以記錄精度為 32位元 POS_inputasm程式列印 local spd R0 OP 輸出點速度量測值

local ang R1 OP 輸出點角度量測值

local angH R2 內部變數角度的 32 位元部分

local mode R3 0x308 模式選擇15MHzAB 相正反向輸入

local pht R4 0xac 輸入阜地址光電盤輸入(0xac)

local phtc R5 0xbe 輸入阜地址光電盤模式(0xbe)

local old R6 內部變數速度更新用

data 7 模組變數區長度

initial 開機啟動程序

RD mode WR (phtc) phtc=mode

RD (pht) WR old WR spd0 RET old=phtspd=0

timer 即時控制程序

RD (pht) SUBX old SGN 11 WR spd spd=(pht-old)old=pht

65

ADD ang WR ang angHL+=spd

RDH ADC angH WR angH

RET

73 PWM輸出控制模組 模組方塊

cmd PWM輸出

程式說明 1在開機時將切換保護時間寫到輸出阜 0xbc上其中切換保護值為 0~6360=5us 2在每次 timer interrupt時將 cmd訊號處理後寫到輸出阜 0xb8上

PWM_outputasm程式列印 local cmd R0 IP gnd 輸入點v相命令

local gain R1 4096 參數輸出增益1=4096

local bias R2 2048 參數輸出偏壓0=2048

local limit R3 4095 參數輸出極限1=4095

local zone R4 0x88f0 參數頻率=12KHz切換保護=5us

local pwm R5 0xb8 輸出阜地址PWM0 輸出(0xb8)

local mode R6 0xbc 輸出阜地址PWM 模式(0xbc)

local p0md R7 0xf8 輸出阜地址port0 模式(0xf8)

local gnd R8 0 輸入接地點

data 9 模組變數區長度

initial 開機啟動程序

RD bias WR (pwm) pwm=bias

RD 0xffff WR (p0md) set port0 mode

RD zone WR (mode) RET mode=zone

stop 關機保護程序

RD bias WR (pwm) RET pwm=bias

timer 即時控制程序

RD (mode) xor 1 and 1 WR (mode) trigger watch-dog

RD (cmd) MUL gain SFR 12 ADD bias ACC=(cmdgain4096)+bias

MAX 0 MIN limit WR (pwm) pwm=limit(ACC)

RET

66

74 PD 控制模組

PD控制的模組方塊參見圖二十一所示其中比例控制的部份直接由增益 kp加以調整微分控制的部份則由誤差的差分經增益 kd的調整而得

Σ+

-

cmd

fdk

err out

Σ

pk

dk

Σ

+

+

+

-

old1minusZ

PD控制器的方塊圖

PD_controlasm程式列印 local cmd R0 IP gnd 輸入點位置命令(可忽略)

local fdk R1 IP gnd 輸入點位置回授(可忽略)

local out R2 OP 輸出點用以控制速度迴路

local kp R3 256 參數增益 kp10=256

local kd R4 0 參數增益 kd10=256

local err R5 0 內部變數

local old R6 0 內部變數

local gnd R7 0 無輸入時的短路點

data 8 模組變數區長度

initial 開機啟動程序

WR out0 WR old0 RET out=old=0

timer 即時控制程序

RD (cmd) SUB (fdk) PRTF WR err

MUL kp SFR 8 P=(cmd-fdk)kp256

RDS err SUBX old MUL kd SFR 8 D=(err-old)kd256

ADDS

WR out out=P+D

RET

程式中預設增益值的 10以整數值 256為基底因此使用 SFR 8的指令加以調

整另外在在計算微分項的程式部份用到 SUBX old的指令其詳細的暫存器動作如

下 參考 piDSP的指令說明SUBX指令將總共用到 3個時序參考錯誤 找不到參照

67

來源在時序 1時將原先 AX的資料拷貝一份到 HX中時序 2時正式執行減

法的動作所以 AX暫存器中的內容會變成 err-old時序 3時DSP會將存放在 HX暫存器中的內容拷貝一份到 old的記憶體中也就是經由 SUBX此一精簡指令將

同時完成計算差分所需要的相減與資料疊代的動作有效的利用 piDSP控制器 DSP核心的精簡指令將可以大幅提昇系統的計算速度

HX AXoldSUBXerr err

old

err

errerr olderr minus

1_err

errerr olderr minus err

1_err

1

2

3

SUBX的指令時序與暫存器變化

68

8附錄快速安裝說明

光纖網路通訊 FPGA 發展系統 (適用於 WIN-XP200098 系統)

快速安裝說明

26Pin 負載輸出入埠

雙電源︵5

12

伏︶輸入埠

單電源︵5

伏︶輸入埠

USB

光纖線輸

號 光纖線輸出埠

入 傳 埠

首先將光碟片 RFFPGA 目錄檔案拷貝在您工作硬碟裡面

第一次安裝時先將 USB 傳輸線接上電腦主機將電源供應器接上 FPGA 模組此時電

腦會出現安裝 USB-Serial 驅動程式選擇從清單安裝此驅動程式放置在光碟片

RFFPGA-USBdrive 選擇您目前安裝系統

可選擇 WIN-98WIN-MEWIN-2000WIN-XP 系統配合您現在工作電腦作業系統

69

注意一般電腦 USB 埠很多插口當您安裝驅動程式時是配合您當時插入之埠

下次如您插入不同接口埠時電腦會再次要求安裝驅動程式這是正常現象請再次安

裝驅動程式否則無法使用

FPLC 操作

首先進入 RFFPGA裡子目錄 testASM直接點選 fPLCexe 出現下面操作畫面(也可直接將

此檔案放置桌面直接點選)

(或者選擇 File 再執行 Setuphellip 選擇您要執行 CAI 檔)

70

進入下面操作畫面 首先使用滑鼠在 FPGA下載按鈕單擊動作使 FPGA變成 DSP晶片 實驗一至實驗五皆為使用 DSP組合語言設計程式其原始程式分別為 testASM1至testASM5可使用 texPad 開啟與編輯程式內容 實驗三與實驗五多有 IO控制動作 當選擇實驗三時出現下面畫面

71

eM_USB 模組

數字型 LED

0 1 2 34 5 6 78 9 A BC D E F

燈號型 LED

44 鍵盤

ADC0 ADC1 DAC0 DAC1

LED 選擇KEY 選擇

模 式 1

0123

注意操作畫面 3與 4 說明開關與按鍵選擇位置後選擇程式下載再按程式啟動如您

按下 0-3按鍵時燈號型 LED會有不同方向閃爍顯示程式停止時結束所有 IO控制動作再按回首頁選擇其他實驗 實驗四與實驗五

模式3

0 1 2 34 5 6 78 9 A BC D E F

按照上面開關選擇直接操作如果以上實驗皆能按照正常操作表示您光纖網路通訊

FPGA發展模組以能正常使用 注意 開機與關機動作順序如下

開機電腦啟動 --- eM_USB 模組電源接上 --- USB 接上電腦 ---

啟動 FPLC 軟體 --- 下載 FPGA 程式

關機關閉 FPLC 軟體 --- eM_USB 模組電源拔掉 --- 拔掉電腦 USB 接頭 ---關掉

電腦

如果以上順序有亂可能造成 USB 找不到驅動造成無法下載經過幾次測試還是

無法下載建議重新啟動電腦主機按照正確步驟操作

72

FPGA 下載操作

進入 FPLC 操作系統按照下列步驟選擇節點模組與下載 bit FPGA 檔案

在 VHDLDEMO 子目錄下您可以選擇您目前 FPGA 種類型號在此型號下我們已將 VHDL

與數位邏輯設計課本範例全部放於此處

73

光纖網路連線 FPGA 下載操作

首先利用光纖線將 eM_USB0 模組光纖輸出埠接至 eM_USB1 模組光纖輸入埠以此

類推最後再將最後 eM_USBN 模組光纖輸出埠接至 eM_USB0 模組光纖輸入埠配置

如附圖方式

個人電腦(Windows) eM_USB模組

0USB

eM_USB模組1

光纖網路

eM_USB模組2

eM_USB模組N

配置完成後進入 FPLC 系統首先必須先將 Node00 下載在 testASM 子目錄裡

piDSPv0bit 檔讓 eM_USB0 模組 FPGA 具備 DSP 功能才能執行光纖網路通訊

操作如下

此時您就可以選擇分別下載至各模組 FPGA 檔 bit

74

安裝 FPLC 注意事項

當您進入 FPLC 時

按 FILE 選擇 programhellip 選擇檔案為 exp_dcmplc 出現下面畫面

正常顯示畫面為

75

DOS 環境操作

在 PC 端的操作是在 Windows 環境中的 DOS 視窗中執行指令範例如下

eFPGA progNETbit 下載 FPGA電路至網路節點0(即 USB節點)中 eFPGA testLEDbit 1 下載 FPGA電路至網路節點1中

對於單一節點的控制程序如下

1將 eM_USB模組連結個人電腦的 USB端 2eM_USB模組開機 3執行下載指令即可 eFPGA xxxxbit 4若要更改 FPGA電路只要重新執行下載指令即可

對於多個網路節點的控制程序如下

1第一組 eM_USB模組連結個人電腦的 USB端再以光纖網路依序其他各節點 2連接 USB界面者為模組0從光纖發射端連接出去的模組為1依此類推 3將所有 eM_USB模組開機 4執行下載指令如下 eFPGA progNETbit 模組0必須先下載指定的 FPGA電路 eFPGA xxxxbit 1 再依序下載其他網路模組的 FPGA電路 eFPGA yyyybit 2 eFPGA zzzzbit 最後再重新下載模組0的 FPGA電路 5換句話說模組0必須先執行 progNETbit讓光纖網路接受 FPGA控制後才能透過光纖網路下載至其他節點等全部網路節點下載完畢後再將模組0的 FPGA重新下載讓模組0也可自由執行任意的 FPGA電路

6若要更改某一個網路節點中的 FPGA電路只要重新執行下述指令 eFPGA progNETbit 模組0必須先下載指定的 FPGA電路 eFPGA yyyybit 2 下載指定網路模組的 FPGA電路 eFPGA zzzz bit 最後再重新下載模組0的 FPGA電路 換句話說除非模組0中的 FPGA已經包括光纖網路管理電路否則一定要先在

模組0中下載網路管理電路後才能下載指定網路節點的 FPGA電路

76

光纖網路通訊 FPGA 發展系統

系統配置

光纖網路通訊 FPGA 發展系統的系統配置圖如下

個人電腦(Windows) eM_USB模組

0USB

eM_USB模組1

光纖網路

eM_USB模組2

eM_USB模組N

其中

1基本模組為 eM_USB模組可用 USB界面和個人電腦連線並提供 USB對光纖網路的轉換功能使得個人電腦可以獨立控制光纖網路中的每個網路節點

2eM_USB模組也可以作為光纖網路中的網路節點透過光纖網路而接受個人電腦的

監控 3就個人電腦而言不論是 USB界面直接連結或是以光纖網路間接連結的 eM_USB模組都是可以直接監控的網路節點最多可以同時控制一個 USB節點和 30個網路節點

4對於每一個網路節點個人電腦都可執行 eM_USB模組中 FPGA的電路下載工作並在適當的 FPGA電路配合下可執行 eM_USB模組中 FPGA內部電路的讀寫控制 5透過適當的 FPGA電路設計各網路節點都可透過光纖網路和其他任何網路節點

作同步通訊執行 FPGA內部記憶體的資料交換資料交換頻率可達 1KHz以上

77

網路模組配置

每個網路模組的標準配置圖如下

eM_USB模組光纖網路

USB eM_FPGA卡

eM_DEMO模組

eM_EXP實驗模組

DC電源

其中

1網路模組以 eM_USB模組為主提供基本的 USB界面和光纖網路連線 2eM_USB模組中的 FPGACPLD採用插卡型式可選擇不同的 eM_FPGA卡包括

eM_2V1K卡可選用 Virtex系列的 XC2V250和 XC2V1000 eM_3S1K卡可選用 Spartan3系列的 XC3S400XC3S1000和 XC3S1500 eM_3S50卡可選用 Spartan3系列的 XC3S50XC3S200和 XC3S400 eM_95XL卡可選用 9500XL系列的 XC95144XL和 XC95288XL 3eM_USB模組中的對外連線有兩種一種是 26P接頭用以連接既有的各種實驗模

組另一種是兩組 50P接頭將 FPGA中各接腳引出用以連接專題實驗 4eM_DEMO模組就是插上 50P接頭的教學模組其中包括 LED 數字顯示和 44鍵盤也具備兩組的 ADC和兩組的 DAC接頭提供類比訊號的測試工具

常用的實驗組合包括

1精簡組合包括(eM_USB+eM_FPGA)提供基本的網路節點適用於專題實驗 2標準組合包括(eM_USB+eM_FPGA+eM_DEMO)提供基礎 FPGA設計的教學實驗

3實驗組合包括(eM_USB+eM_FPGA+eM_DEMO+eM_EXP)提供進階的 FPGA實驗可依需求選用不同的實驗模組

78

eM_USB 模組

eM_USB 模組的電路配置圖如下

TxRx

DCPower

USB

JP2

JP3

光纖界面

外加電源

PC連線

JP1

eM_FPGA模組

FT232 CPLD FlashROM

SRAM

10cm

6cm

JP4

其中

1對外的連線接頭包括 DC電源 可選擇單電源(5V)或是多電源(5V+12V-12V)兩種 USB界面 直接連接個人電腦 光纖界面連接光纖網路 2實驗界面包括 JP1負責內部 CPLD的電路下載 JP2JP3兩組 50P的擴張用接頭 JP4 標準 26P接頭用以連接各種實驗模組 3內部的電路配置包括 A以 SO-DIMM接頭連接各種 eM_FPGA卡 B內附 EEPROMFlashROM和 SRAM提供 FPGA作應用測試 C以一顆 FT232BM作為 USB界面解碼而以一顆 CPLD作為光纖網路解碼 D提供各種 eM_FPGA卡的電路下載功能 4內附五顆 LED由上而下依序為 usbLED指示 USB界面的讀寫狀態 tstLED可由 FPGA電路自行定義 stsLED可由 FPGA電路自行定義 RxLED 可由 FPGA電路自行定義 TxLED 可由 FPGA電路自行定義

79

外部接腳定義

外部接頭的接點順序圖示如下

上視圖

JP11 9 JP4

126225

JP31

50249

JP21

50249

而各接頭的接點定義如下

JP1 JP4 JP2 JP3 1+33V 1+12V 2+12V 1 GND 2 GND 1 GND 2 GND 2GND 3 ADC 4 DAC 3POWER 4ALARM 3 +5V 4 +5V 3nc 5 yPB2 6 yPB3 5RxNET 6TxNET 5+12V 6+12V 4TCK 7 yPB1 6 yPB4 7RxUSB 6TxUSB 7-12V 6-12V 5nc 9 yPB0 10yPB5 9RxCAN 10TxCAN 9 ADC 10 DAC 6TDO 11yPB6 12yPB7 11P0D0 12P0D1 11P1D0 12P1D1 7TDI 13yGND 14yPC3 13P0D2 14P0D3 13P1D2 14P1D3 8nc 15yPC2 16yPC1 15P0D4 16P0D5 15P1D4 16P1D5 9TMS 17yPC0 18yPA0 17P0D6 18P0D7 17P1D6 18P1D7 19yPA1 20yPA2 19P0D8 20P0D9 19P1D8 20P1D9 21yPA3 22GND 21P0D10 22P0D11 21P1D10 22P1D11 23GND 24+5V 23P0D12 24P0D13 23P1D12 24P1D13 25+5V 26nc 25P0D14 26P0D15 25P1D14 26P1D15 27P2D0 28P2D1 27PxA0 28PxA1 29P2D2 30P2D3 29PxA2 30PxA3 31P2D4 32P2D5 31PxA4 32PxA5 33P2D6 34P2D7 33PxA6 34PxA7 35P2D8 36P2D9 35PxB0 36PxB1 37P2D10 38P2D11 37PxB2 38PxB3 39P2D12 40P2D13 39PxB4 40PxB5 41P2D14 42P2D15 41PxB6 42PxB7 43ADC0 44ADC1 43PxC0 44PxC1 45ADC2 46ADC3 45PxC2 46PxC3 47ADC4 48ADC5 47PxC4 48PxC5 49DAC0 50DAC1 49PxC6 50PxC7

80

eM_FPGA 模組

在各種 eM_FPGA 模組中FPGA 對外電路的標準配置圖如下

24576MHz

FlashROM

26PSRAM

EEPROM

mD[8]

yPA[4]

FPGACPLD

mA[19]mRDmWRmCSeeCKeeCSeeDIeeDO

光纖界面 RxNETTxNET

USB 界面 RxUSBTxUSBCLK24MPOWERALARM

LED

tstLEDstsLEDRxLEDTxLED

yPB[8]yPC[4]

ADCDAC

ADC[8]

實驗模組

ADC[2]

DAC[2]

xPA[4]

xPB[8]

xPC[4]

基礎實驗

其中

1FPGACPLD可以選擇下述幾種 XC2V250XC2V1000 採用 eM_2V1K模組其中 FPGA為 FG456包裝 XC3S400XC3S1000XC3S1500採用 eM_3S1K模組其中 FPGA為 FG456包裝 XC3S400XC3S1000XC3S1500採用 eM_3S1K模組其中 FPGA為 FG456包裝 XC3S50XC3S200XC3S400 採用 eM_3S50模組其中 FPGA為 TQ144包裝 XC95144XLXC95288XL 採用 eM_95XL模組其中 CPLD為 TQ144包裝 2採用 FG456包裝者可以控制所有的 IO界面 3採用 TQ144包裝者只是不能控制 RAM和 FlashROM而可以控制其他所有的界面 4所有 FPGA模組都可自由選擇由 USB界面或是由光纖界面下載電路但是 CPLD模組只能固定由 USB界面下載電路

5所有 FPGACPLD模組都可透過 26P接頭連接既有的各種實驗模組

81

FPGA 接腳對照表

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

mD0 XD6 mD0 A17 C13 -- -- mD1 XD7 mD1 B17 D12 -- -- mD2 XD8 mD2 C17 D11 -- -- mD3 XD9 mD3 D17 C11 -- -- mD4 XD10 mD4 E17 D10 -- -- mD5 XD11 mD5 E16 C10 -- -- mD6 XD12 mD6 E14 D9 -- -- mD7 XD13 mD7 E13 D7 -- -- mA0 XD14 mA0 D13 C7 -- -- mA1 XD15 mA1 C13 D6 -- -- mA2 XA0 mA2 V5 C3 -- -- mA3 XA1 mA3 U5 C4 -- -- mA4 XA2 mA4 Y2 D3 -- -- mA5 XA3 mA5 Y1 D4 -- -- mA6 XA4 mA6 V4 E3 -- -- mA7 XA5 mA7 V3 E4 -- -- mA8 XA6 mA8 W2 F3 -- -- mA9 XA7 mA9 W1 F4 -- -- mA10 XA8 mA10 T2 G6 -- -- mA11 XA9 mA11 T1 K3 -- -- mA12 XA10 mA12 R4 K10 -- -- mA13 XA11 mA13 R3 L3 -- -- mA14 XA12 mA14 R2 L4 -- -- mRD XRD mRD R1 D5 -- -- mWR XWR mWR P6 C6 -- --

POWER P0A0 POWER B4 B20 P1 P5 ALARM P0A1 ALARM A4 A19 P2 P6 RxNET P0A2 RxNET C4 B19 P4 P7 TxNET P0A3 TxNET C5 A18 P5 P9 RxUSB P0B0 RxUSB B5 A15 P6 P10 TxUSB P0B1 TxUSB A5 B15 P7 P11 RxCAN P0B2 RxCAN D6 A14 P8 P12 RxCAN P0B3 TxCAN C6 B14 P10 P13

CLK24M CLK24M CLK24M E12 B12 P124 P38

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

PWM0H P3A0 P0D0 E6 A8 P21 P23 PWM0L P3A1 P0D1 E5 B8 P23 P24 PWM1H P3A2 P0D2 C2 B6 P24 P25 PWM1L P3A3 P0D3 C1 A5 P25 P26 PWM2H P3A4 P0D4 D2 B5 P26 P27

82

PWM2L P3A5 P0D5 D1 A4 P27 P28 PWMenb P3A6 P0D6 E4 B4 P28 P30 PHT1Z P3A7 P0D7 E3 A3 P30 P31 PHT1A P3B0 P0D8 G2 C1 P31 P32 PHT1B P3B1 P0D9 G1 C2 P32 P33 PHT0A P3B2 P0D10 H5 D1 P33 P34 PHT0B P3B3 P0D11 J6 D2 P35 P35 AMP0 P3B4 P0D12 H4 E1 P36 P39 AMP1 P3B5 P0D13 H3 E2 P40 P40 AMP2 P3B6 P0D14 H2 F2 P41 P41 AMP3 P3B7 P0D15 H1 G1 P44 P43 eeSK P0C3 P1D0 C10 B9 P20 P22 eeCS P0C2 P1D1 D10 A9 P18 P21 eeDI P0C1 P1D2 F10 B10 P17 P20 eeDO P0C0 P1D3 E10 B11 P15 P19 ssCK P0B7 P1D4 E8 A11 P14 P17 ssCS P0B6 P1D5 E7 A12 P13 P16 ssDI P0B5 P1D6 A6 B13 P12 P15 ssDO P0B4 P1D7 B6 A13 P11 P14

ppCLK P3C0 P1D8 K4 G2 P46 P44 ppDIN P3C1 P1D9 K3 K1 P47 P45 TxD P3C2 P1D10 K2 K2 P50 P46 RxD P3C3 P1D11 K1 L1 P51 P48

tstLED P3C4 P1D12 L5 L2 P52 P49 stsLED P3C5 P1D13 L4 M1 P53 P50 RxLED P3C6 P1D14 L3 M2 P55 P51 TxLED P3C7 P1D15 L2 N1 P56 P52

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

xPA0 P2A0 P2D0 AA3 N2 P59 P53 xPA1 P2A1 P2D1 Y4 T1 P60 P54 xPA2 P2A2 P2D2 AA4 T2 P63 P56 xPA3 P2A3 P2D3 AB4 U2 P68 P57 xPC0 P2A4 P2D4 W5 V1 P69 P58 xPC1 P2A5 P2D5 Y5 V2 P70 P59 xPC2 P2A6 P2D6 AA5 W1 P73 P60 xPC3 P2A7 P2D7 AB5 W2 P74 P61

-- P2B0 P2D8 V6 Y1 P76 P64 -- P2B1 P2D9 V7 Y2 P77 P66 -- P2B2 P2D10 W6 AA3 P78 P68

mCS P2B3 P2D11 Y6 AB4 P79 P69 mA15 P2B4 P2D12 V9 AA4 P80 P70 mA16 P2B5 P2D13 V10 AB5 P82 P71 mA17 P2B6 P2D14 W10 AA5 P83 P74 mA18 P2B7 P2D15 Y10 AA6 P84 P75 CS0 P2C0 ADC0 AA10 AB8 P85 P76

83

SDIN0 P2C1 ADC1 AB10 AA8 P86 P77 CS1 P2C2 ADC2 U10 AB9 P87 P78

SDIN1 P2C3 ADC3 U11 AA9 P89 P79 SCLK P2C4 ADC4 V11 AB10 P90 P80 CS2 P2C5 ADC5 W11 AA10 P92 P81

SDOUT P2C6 ADC6 Y11 AB11 P93 P82 LDAC P2C7 ADC7 AA11 AA11 P95 P83

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

xPB0 P1A0 PxA0 M1 M3 P135 P85 xPB1 P1A1 PxA1 M2 M4 P132 P86 yPB2 P1A2 PxA2 M3 N3 P131 P87 yPB3 P1A3 PxA3 M4 N4 P130 P88 yPB1 P1A4 PxA4 M5 T4 P129 P91 yPB4 P1A5 PxA5 M6 T5 P128 P92 yPB0 P1A6 PxA6 N1 U3 P127 P93 yPB5 P1A7 PxA7 N2 U4 P125 P94 yPB6 P1B0 PxB0 U13 V3 P119 P95 yPB7 P1B1 PxB1 V13 V4 P118 P96 xPB2 P1B2 PxB2 W13 W3 P116 P97 xPB3 P1B3 PxB3 Y13 W4 P113 P98 xPB4 P1B4 PxB4 AA13 Y3 P112 P100 xPB5 P1B5 PxB5 AB13 Y4 P96 P101 yPC3 P1B6 PxB6 U12 Y5 P97 P102 yPC2 P1B7 PxB7 V12 W5 P98 P103 yPC1 P1C7 PxC0 AB17 W11 P108 P113 yPC0 P1C6 PxC1 AA17 Y11 P107 P112 yPA0 P1C5 PxC2 Y17 W10 P105 P111 yPA1 P1C4 PxC3 W17 Y10 P104 P110 yPA2 P1C3 PxC4 AB18 W9 P103 P107 yPA3 P1C2 PxC5 AA18 W8 P102 P106 xPB6 P1C1 PxC6 Y18 W6 P100 P105 xPB7 P1C0 PxC7 W18 Y6 P99 P104

84

eM_DEMO 模組

eM_DEMO 模組的電路配置圖如下

eM_USB 模組

數字型 LED

0 1 2 34 5 6 78 9 A BC D E F

燈號型 LED

44 鍵盤

ADC0 ADC1 DAC0 DAC1

LED 選擇KEY 選擇

其中

1eM_DEMO模組的基本功能包括 A將 xPAxPBxPC等 16個 IO訊號引出控制 LED和鍵盤電路 B將 ADDA訊號引出並放大成+-10V的工作範圍 2LED和鍵盤可以選擇三種模式由 LED和 KEY 兩組開關作選擇圖示如下

模式1

0123

模式2 模式3

0 1 2 34 5 6 78 9 A BC D E F

0123

3模式14鍵輸入並搭配 16點的 LED燈號顯示其中 16點 LED分別對映到 xPA[0~3]xPB[0~7]和 xPC[0~3] 4組按鍵分別對映到 xPC[0~3] 4模式24鍵輸入並搭配四個 7段式數字顯示其中 數字顯示由 xPA[0~3]作數字掃瞄而由 xPB[0~7]作 7段式 LED控制 4組按鍵 分別對映到 xPC[0~3] 5模式316鍵輸入並搭配四個 7段式數字顯示其中 數字顯示由 xPA[0~3]作數字掃瞄而由 xPB[0~7]作 7段式 LED控制 16組按鍵由 xPA[0~3]作鍵盤掃瞄而由 xPC[0~3]作鍵盤讀取 6根據VHDL與數位邏輯設計的章節其中 第 1章至 10章的實驗採用模式1而 第 11章實驗採用模式2而 第 12章之後的實驗都採用模式3

85

FPGA UCF 定義

eM_3S1K 模組

NET CLK LOC = B12

NET XAlt0gt LOC = N2

NET XAlt1gt LOC = T1

NET XAlt2gt LOC = T2

NET XAlt3gt LOC = U2

NET XBlt0gt LOC = M3

NET XBlt1gt LOC = M4

NET XBlt2gt LOC = W3

NET XBlt3gt LOC = W4

NET XBlt4gt LOC = Y3

NET XBlt5gt LOC = Y4

NET XBlt6gt LOC = W6

NET XBlt7gt LOC = Y6

NET XClt0gt LOC = V1

NET XClt1gt LOC = V2

NET XClt2gt LOC = W1

NET XClt3gt LOC = W2

NET YAlt0gt LOC = W10

JP4 接頭

NET YAlt1gt LOC = Y10

NET YAlt2gt LOC = W9

NET YAlt3gt LOC = W8

NET YBlt0gt LOC = U3

NET YBlt1gt LOC = T4

NET YBlt2gt LOC = N3

NET YBlt3gt LOC = N4

NET YBlt4gt LOC = T5

NET YBlt5gt LOC = U4

NET YBlt6gt LOC = V3

NET YBlt7gt LOC = V4

NET YClt0gt LOC = Y11

NET YClt1gt LOC = W11

NET YClt2gt LOC = W5

NET YClt3gt LOC = Y5

在光碟片中 RFFPGAVHDLDEMOBIT3S1K 裡有 VHDL 與數位邏輯設計書本範例原始檔與合成檔

86

eM_3S50 模組

NET CLK LOC = P124

NET XAlt0gt LOC = P59

NET XAlt1gt LOC = P60

NET XAlt2gt LOC = P63

NET XAlt3gt LOC = P68

NET XBlt0gt LOC = P135

NET XBlt1gt LOC = P132

NET XBlt2gt LOC = P116

NET XBlt3gt LOC = P113

NET XBlt4gt LOC = P112

NET XBlt5gt LOC = P96

NET XBlt6gt LOC = P100

NET XBlt7gt LOC = P99

NET XClt0gt LOC = P69

NET XClt1gt LOC = P70

NET XClt2gt LOC = P73

NET XClt3gt LOC = P74

NET YAlt0gt LOC = P105

JP4 接頭

NET YAlt1gt LOC = P104

NET YAlt2gt LOC = P103

NET YAlt3gt LOC = P102

NET YBlt0gt LOC = P127

NET YBlt1gt LOC = P129

NET YBlt2gt LOC = P131

NET YBlt3gt LOC = P130

NET YBlt4gt LOC = P128

NET YBlt5gt LOC = P125

NET YBlt6gt LOC = P119

NET YBlt7gt LOC = P118

NET YClt0gt LOC = P107

NET YClt1gt LOC = P108

NET YClt2gt LOC = P98

NET YClt3gt LOC = P97

在光碟片中 RFFPGAVHDLDEMOBIT3S200 裡有VHDL與數位邏輯設計書本範例原始檔與合成檔

87

eM_95XL 模組

NET CLK LOC = SPIN38

NET XAlt0gt LOC = SPIN53

NET XAlt1gt LOC = SPIN54

NET XAlt2gt LOC = SPIN56

NET XAlt3gt LOC = SPIN57

NET XBlt0gt LOC = SPIN85

NET XBlt1gt LOC = SPIN86

NET XBlt2gt LOC = SPIN97

NET XBlt3gt LOC = SPIN98

NET XBlt4gt LOC = SPIN100

NET XBlt5gt LOC = SPIN101

NET XBlt6gt LOC = SPIN105

NET XBlt7gt LOC = SPIN104

NET XClt0gt LOC = SPIN58

NET XClt1gt LOC = SPIN59

NET XClt2gt LOC = SPIN60

NET XClt3gt LOC = SPIN61

NET YAlt0gt LOC = SPIN111

JP4 接頭

NET YAlt1gt LOC = SPIN110

NET YAlt2gt LOC = SPIN107

NET YAlt3gt LOC = SPIN106

NET YBlt0gt LOC = SPIN93

NET YBlt1gt LOC = SPIN91

NET YBlt2gt LOC = SPIN87

NET YBlt3gt LOC = SPIN88

NET YBlt4gt LOC = SPIN92

NET YBlt5gt LOC = SPIN94

NET YBlt6gt LOC = SPIN95

NET YBlt7gt LOC = SPIN96

NET YClt0gt LOC = SPIN112

NET YClt1gt LOC = SPIN113

NET YClt2gt LOC = SPIN103

NET YClt3gt LOC = SPIN102

在光碟片中 RFFPGAVHDLDEMOSVF95288XL 裡有VHDL與數位邏輯設計書本範例原始檔與合成

檔案

88

eM_FPGA 模組

NET CLK LOC = E12

NET XAlt0gt LOC = AA3

NET XAlt1gt LOC = Y4

NET XAlt2gt LOC = AA4

NET XAlt3gt LOC = AB4

NET XBlt0gt LOC = M1

NET XBlt1gt LOC = M2

NET XBlt2gt LOC = W13

NET XBlt3gt LOC = Y13

NET XBlt4gt LOC = AA13

NET XBlt5gt LOC = AB13

NET XBlt6gt LOC = Y18

NET XBlt7gt LOC = W18

NET XClt0gt LOC = W5

NET XClt1gt LOC = Y5

NET XClt2gt LOC = AA5

NET XClt3gt LOC = AB5

NET YAlt0gt LOC = Y17

JP4 接頭

NET YAlt1gt LOC = W17

NET YAlt2gt LOC = AB18

NET YAlt3gt LOC = AA18

NET YBlt0gt LOC = N1

NET YBlt1gt LOC = M5

NET YBlt2gt LOC = M3

NET YBlt3gt LOC = M4

NET YBlt4gt LOC = M6

NET YBlt5gt LOC = N2

NET YBlt6gt LOC = U13

NET YBlt7gt LOC = V13

NET YClt0gt LOC = AA17

NET YClt1gt LOC = AB17

NET YClt2gt LOC = V12

NET YClt3gt LOC = U12

在光碟片中 RFFPGAVHDLDEMOBIT2V250 裡有VHDL與數位邏輯設計書本範例原始檔與合成檔

89

Page 23: RFFPGA 直流馬達實驗手冊juniortek.com.tw/program/manual/RF-DC-mal.pdf · em_demo模組 em_dcm 直流伺服馬達 dc電源 rffpga 系統的直流馬達實驗規劃 其中包括:

如果換算成數學模式則轉換成下面的架構

+-Vc

R L

EMF

+

-

ITB

J

ω

其中

1其中的變數和參數包括 Vc 控制的電壓命令 R 電樞迴路的等效電阻 L 電樞迴路的等效電感 EMF電樞產生的反電動勢 i 電樞迴路中的電流 T 馬達所產生的扭力 J 馬達和負載的等效慣量 B 馬達和負載的等效摩擦力 ω 馬達所產生的速度 2所牽涉的物理公式包括 電壓迴路Vc = Ri + L(didt) + EMF 即電樞迴路中的電壓平衡 動力負載T = Bω + J(dωdt) 即扭力平衡 馬達特性T = Kti 所產生的扭力和電流成正比 電機特性EMF= Keω 所產生的電動勢和轉速成正比 其中新增的參數包括 Kt馬達的扭力常數 Ke馬達的反電動勢常數 3將微分項作拉式轉換(Laplase Transformation)的對映即 s = ddt 可將微分方程式轉換成更簡單的代數方程式而產生到下面的控制方塊圖

sL+R1Vc

+-EMF

iKt

TsJ+B1 ω

Ke

4在直流馬達的開環路特性中控制電壓(Vc)時輸入點而馬達轉速(ω)是輸出點即是控制馬達電壓以控制馬達轉速

5基本上馬達的開環路特性是個兩階系統類似於低通濾波器的特性在許多應用 場合其開環路特性還可以再簡化成一階系統方塊圖如下

23

sτ +1

KmVc ω 其中 τ一階系統的時間常數 Km一階系統的穩態增益

採用兩階系統的分析方式雖然會比較精細但是用一階系統來分析則可簡化所有的設計

過程因為這裡的實驗重點是邏輯設計所以在本章中我們都用一階系統作分析

系統響應的要求

就控制系統而言最重要的需求就是系統響應包括

穩態特性通常以穩態誤差為指標即是穩態時系統輸出和輸入之間的差異 暫態特性通常以上升時間(Rise Time)和過越比率(Overshoot)為指標

一個理想中的伺服控制系統其系統響應應該是

1穩態誤差為 0即馬達輸出將追隨輸入作變化沒有誤差 2過越比例為 0即馬達輸出絕對不會產生衝過頭的現象 3上升時間為 0即馬達輸出隨時追上輸入命令不會有控制上的延遲現象

當然這是太理想了一個合理的伺服控制系統應該是

1穩態誤差越小越好最好為 0 2過越比例越小越好最好為 0 3上升時間越短越好當然無法為 0但是盡力就是了

速度的回授控制

回授控制的目的就是為了改善系統響應以一階系統代表的馬達控制為例

sτ+1

KmVc ω

在步階響應(Step Response)時其特性如下

1穩態誤差由 Km決定 2過越比例為 0 3上升時間即是其時間常數(τ)

如果用比例控制器(P 控制器)作速度回授的控制則控制方塊圖如下

sτ+1

KmVc ωKp

err

P控制器 直流馬達ωc

速度回授

速度命令 + 速度響應-

24

其中

1速度命令並不直接控制馬達的驅動電壓而是 A將速度命令和速度回授相比找出其誤差訊號 err B依誤差訊號來控制驅動電壓 誤差越大則驅動電壓越高 誤差越小則驅動電壓越低 誤差為負則驅動電壓也為負 其中的比例關係由 P控制器中的 Kp 來調整 2經由數學分析後其步階響應的特性為 A穩態誤差變成 1(1+kpkm)如果 kpkmgtgt1則穩態誤差將趨近於 0 B過越比例仍為 0 C上升時間即是由τ變成τ(1+kpkm)所以上升時間將變短 3換句話說只要 Kp值夠大不論是穩態誤差或是上升時間都會大幅改善

理論上P控制器的增益是越高越好最好是無限大但是實際上是有限制的原因是

1馬達的開環路特性是兩階系統而非一階系統一階系統只是簡化後的結果 2當兩階系統作高增益的回授控制時當增益過高時會產生極嚴重的過越現象使得

馬達產生巨幅震動而難以控制

所以 P控制器的增益雖然是越高越好但調整時仍要小心維持(過越比例為 0)的條件

轉角的回授控制

做為馬達的速度控制P控制器的效果不錯但是如果將 P控制器應用到馬達的轉角控

制其特性就不太理想圖示如下

sτ+1

KmVc ωKp

err

P控制器 直流馬達

θc

轉角回授

轉角命令 + 轉角響應-

s1 θ

其中

1從馬達的速度到轉角之間具有積分特性即 馬達的轉角是馬達速度的積分結果而 馬達的速度是馬達轉角的微分結果而 2其中的積分特性使得整個系統由一階特性變成兩階特性在兩階系統中當設定高

增益時會產生極嚴重的過越現象使得馬達產生巨幅震動而難以控制 3在 P控制器增益無法提高的狀況之下轉角控制效果將無法獲得改善

雖然 P控制器在轉角控制上的效果並不好但是在控制系統中還是有許多法寶可以選擇

25

其中 PD 控制器就是簡單又有效的一個好方法

從表面上來看PD 控制器比 P控制器多了一個微分項就數學上來看這微分項提供了

一個新零點(Zero)可以調整根軌跡圖的走向就實驗上來說這微分項提供了控制器

的預測功能說明如下

sτ+1

KmVc ωKp+sKd

err

P控制器 直流馬達

θc

轉角回授

轉角命令 + 轉角響應-

s1 θ

1轉角控制中 P控制器的問題是在嚴重的過越現象原因是在 P控制器的作用下只有當回授超過命令時才能做出「負向」的控制但這時已經來不及了因為積分器

中已經累積了過多的能量而無法立刻消失使得馬達轉角衝過了頭 2解決之道就是在回授超過命令之前就必須做出「負向」的控制使得積分器累積

的能量逐步減弱在到達目標時才能立刻煞車才能解除過越現象 3而微分項就是這個預測量因為當誤差量越來越小時其微分項是負值雖然微分

項(D)是負值 當誤差量(P)很大時(P+D)的結果還是正值所以還是「正向」控制 當誤差量(P)漸小時(P+D)的結果變成負值才會開始「負向」控制 換句話說在誤差為 0之前即可啟動負向控制產生煞車作用使得馬達提前減速

而即時停止在目標點上自然就解除過越現象了

所以在 PD 控制器中有兩項調整量其中

1Kp增益提供比例控制部分的增益而 Kd增益提供微分控制部分的增益 2Kp增益控制馬達的趨近速度主要影響的是上升時間 3Kd增益控制馬達的提前煞車主要影響的是過越比例 4在兩者搭配下就有機會得到 很快很短的上升時間同時也 不會產生過越現象

PD 控制器的執行

依據 PD 控制器公式可以建立以數位執行的 PD 控制器如下圖所示

cmdKp

fdk

+

-

err

old

+-

Kd

Z-1

out+

+

26

其中

1利用差分公式來取代 PD控制器中的微分公式定義如下 s ==gt (1-Z-1)DT 其中對映的變數包括 s 微分項 Z-1延遲一個抽樣週期 DT抽樣週期單位為 sec 2就執行面而言Z-1是延遲一個抽樣週期也就是以抽樣週期所控制的暫存器 3在上圖中將命令(cmd)和回授(fdk)相減後得到誤差值(err)再將 err延遲一個抽樣週期成為 old所以(err-old)DT即是微分項

4原始的微分控制公式為(err-old)DTKd必須先除再乘但是因為 DT和 Kd 都是常

數可以預先將 Kd修正成 Kd=(KdDT)那麼公式將修正為(err-old)Kd就只需要一個乘法而不需要除法了

同樣的 PD 控制器可以用許多不同的方法作執行包括

1以軟體方式執行例如在 DSP核心中以組合語言撰寫控制模組 2以硬體方式執行例如在 FPGA中直接設計邏輯電路 3以微碼方式執行以微碼作順序控制執行硬體運算工作

這裡先提供用組合語言撰寫的程式模組作為設計參考其他兩種方法將在後續的實驗中

再陸續作說明

模組程式範例PD_controlasm

local cmd R0 IP gnd 輸入點位置命令(可忽略) local fdk R1 IP gnd 輸入點位置回授(可忽略) local out R2 OP 輸出點用以控制速度迴路 local kp R3 256 參數增益 kp10=256 local kd R4 0 參數增益 kd10=256 local err R5 0 內部變數 local old R6 0 內部變數 local gnd R7 0 無輸入時的短路點 data 8 模組變數區長度 initial 開機啟動程序 WR out0 WR old0 RET out=old=0 timer 即時控制程序 RD (cmd) SUB (fdk) WR err MUL kp SFR 8 P=(cmd-fdk)kp256 RDS err SUBX old MUL kd SFR 8 D=(err-old)kd256 ADDS WR out out=P+D RET

27

其中

1PD控制模組中對外的界面變數包括 cmd命令的輸入點 fdk回授的輸入點 out控制的輸出點 2內部參數包括 Kp比例控制增益其中 10=256所以乘完後還需要再右移 8-bit Kd微分控制增益其中 10=256所以乘完後還需要再右移 8-bit 3內部變數包括 err臨時性的變數用以儲存誤差值的計算結果 old儲存性的變數用以儲存上一次抽樣控制時的 err值 4模組程式分成三部分包括 變數宣告local和data所宣告的部分 初值設定initial程序中先將 out和 old設定為 0 即時控制timer程序中依序執行 PD控制器中的每個步驟

控制目標的選擇

從字面上來看速度控制就是控制馬達的速度轉角控制就是控制馬達的轉角沒什麼

好討論的但是實際上確有許多問題第一的問題就是什麼是速度和轉角馬達的速

度和轉角如果不作量測如何得知

既然在量測中取得了速度和轉角資料那麼我們所控制的到底是物理學上的速度和轉

sτ+1

KmVc ωKp+sKd

err

P控制器 直流馬達

θc

轉角回授

轉角命令 + 轉角響應-

s1 θ

KxANG

轉角量測

角還是量測上的速度和轉角以下圖為例

其中

1以轉角量測裝置量測轉角例如裝在馬達軸端的光電盤和解碼電路 2轉角的量測輸出是 ANG而 ANG和物理轉角θ之間有 Km的增益關係 3只要 Km值不是 1那麼系統就不再是單位回授 4如果 Km還有非線性或失真現象那麼控制結果也將有非線性或失真現象

這些問題混雜起來會使得控制系統的分析變得更複雜如果要簡單處理就要認同現

實環境直接以量測結果為控制目標如下圖所示

28

sτ+1

KmVc ωKp+sKd

err

P控制器 直流馬達

θc

轉角回授

+-

s1 θ Kx

ANG轉角量測

其中

1直接以量測結果為控制目標將全系統還原成標準的單位回授控制 2所有的非線性或失真現象都進入開環路討論屬於可以補償的部分 3但是控制結果就是「量測上的轉角」而「物理學上的轉角」

量測誤差的問題

轉角θ

量測ANG

對於量測誤差而言最明顯的問題就是量化誤差圖示如下

其中

1以 DCM模組中的光電盤為例精度為每圈 500格經由乘四解碼計數後其等效

精度增加為每圈 2000格 2比(12000)圈更精密的部分都無法響應換句話說振幅越大的控制其相對誤差越

小而振幅越小的控制其相對誤差越大例如 當振幅為(12)圈時其控制誤差量為 01而 當振幅為(120)圈時其控制誤差量為 1 這是標準的的非線性現象

量化誤差不只影響穩態上的精度還會造成非線性的震動問題圖示如下

t

誤差值

+1

-1

其中

1由於量化誤差的問題只有當誤差超過+1或是-1時才會真正偵測到誤差也才

29

會施加控制量作補償 2所以穩態時的誤差將在+1-1之間擺動造成微幅的振動 3量化誤差越大震動越明顯而量化誤差很小時通常不易察覺出震動現象

微分量的計算

伺服系統中有兩處需要用到微分計算包括

1PD控制器中誤差微分量的計算 2速度控制器中速度回授值的量測

在理論上微分公式是(dXdt)相當於 dXdt = (X(n)-X(n-1))DT (當 DT趨近於 0時)

所以當微分計算中的抽樣週期(DT)越短時微分的計算值將越接近理論值但是事實上

卻非如此以下圖為例

t

X

DTDX

其中

1當 X值為等速度運動時其微分量就是其斜率相當於 DXDT 2DT是微分計算中的抽樣週期理論上越短越好但是由於 DX本身的量化誤差

使得這個原則不再成立例如當斜率為 7394時 若 DT=1000則 DX=7394而 DXDT=7394 若 DT=100 則 DX=739 而 DXDT=739 若 DT=10 則 DX=73 而 DXDT=73 若 DT=1 則 DX=7 而 DXDT=7 3換句話說當抽樣週期越短時DX的量化誤差將越明顯而造成微分計算上更嚴

重的誤差

在 DCM 模組中速度量測的量化誤差分析如下

1馬達上的光電盤精度為每圈 500格經過乘四解碼後等效精度為每圈 2000格 2當馬達轉速為 1200RPM而抽樣頻率為 1KHz時對映的速度量測值為 1200(圈分)2000(格圈)60(秒分)1000(DT秒) = 40(格DT) 3換句話說1200RPM的轉速對映到 40的速度量測值即速度單位=30RPM若最

高轉速為 3000RPM則在+-3000RPM的速度範圍內其量化誤差為 05相當於8-bit的 ADC轉換器精度

4對映不同的抽樣頻率的量化誤差表列如下

30

光電盤精度 最高轉速 抽樣頻率 速度單

速度範圍 量化誤差

500PPR 3000RPM 1KHz 30RPM +-100 05 500PPR 3000RPM 2KHz 60RPM +-50 1 500PPR 3000RPM 4KHz 120RPM +25 2

過溢現象的處理

輸入

輸出

32767

-32768

整數運算都有數值範圍限制以 16-bit 整數而言輸入輸出的關係如下

其中

1當超過正負數的上下限時數值會正負顛倒例如 +32768 將會視為 -32768作處理而 +32769 將會視為 -32768作處理依此類推 2換句話說16-bit的整數運算只有在+-32767之間是線性的對映關係而超過這個範圍就是非線性的對映關係

3不但如此還因為正負顛倒的現象使得原來設計的負回授控制將變為正回授控制

而產生非線性的震盪現象 4換句話說只要計算上稍一不慎就會使得原先穩定的系統產生不穩定的震盪結果

為了避免過溢現象所造成的不穩定問題通常控制系統中會利用飽和處理作改善圖示

如下

輸入

輸出

lmtH

lmtL

31

其中

1當超過計算的上限時將固定設為上限值處理而當超過計算的下限時也將固定

設為下限值處理 2這時的整數運算只有在上下限之間是線性的對映關係而超過這個範圍將還是非線

性的對映關係 3雖然如此但是因為沒有正負顛倒的現象所以不再會有負回授變為正回授的問題

而避免了非線性的震盪現象 4換句話說飽和處理是針對過溢現象的妥協處理方案雖然不完全理想但是是可

接受的最佳選擇

下面是對映的組合語言範例

RD x x為輸入端 MIN lmtH 取得 x和 lmtH中的較小值即是作上限保護的工作 MAX lmtL 取得 x和 lmtL中的較大值即是作下限保護的工作 WR y Y為輸出端 其中

1組合語言中提供MAX和MIN的計算其中 MIN lmtH 比較 AX暫存器和 lmtH而將較低值存入 AX暫存器中 MAX lmtL 比較 AX暫存器和 lmtH而將較高值存入 AX暫存器中 2所以直接可用MIN指令作上限保護而以MAX指令作下限保護兩者合併後即是

完整的飽和處理結果

飽和處理通常應用在高位數轉成低位數的場合例如32-bit轉換成16-bit或是16-bit

轉換成 12-bit 等等例如在本實驗中所有的運算都是以 16-bit 整數作處理但是到

PWM 驅動級輸出時卻要轉換成 12-bit精度的 PWM 命令所以必須先用飽和處理以避免

過溢現象造成的不穩定問題

32

61 實驗 1-開迴路的電壓控制 實驗說明以電壓直接控制轉速的開迴路特性可簡化為一階系統處理方塊圖如

sτ+1

v km ωm

其中V 送給驅動器的 PWM電壓命令

ωm馬達的轉動速度可由處理 photo encoder信號所得的位置微分而得 km一階系統的穩態增益 τ一階系統的時間常數即步階響應中的上升時間

為了觀測直流馬達的開環路特性建立下面的測試方塊圖

其中

1所使用的模組包括 FG1方波產生器產生所需的步階測試波形 FT1馬達模擬以一階系統的低通濾波器來執行 IO1光電盤的回授處理可同時取得轉角和速度的量測值 IO2PWM電壓驅動直接驅動直流馬達作控制 Led四位數字七段顯示模組顯示波形信號資料 2測試目標有兩項(P 參數設定欄)包括 A調整方波命令控制直流馬達作開環路的 PWM電壓控制 B調整馬達模擬參數使模擬結果和實驗結果相符以確認開環路特性

33

實驗畫面顯示如下

測試一 開環路的電壓控制 記錄頻道 CH1電壓命令Y1=-300DY=500 CH2模擬速度Y2=-100DY=500 CH3馬達速度Y3=100DY=50 CH4馬達轉角Y4=300DY=50000 實驗參數 FG1kAMP=256電壓命令的測試振幅 FG1kFRQ=150電壓命令的測試頻率 FT1DT =10 馬達模擬參數 FT1KA =500馬達模擬參數

其中

1用示波器功能記錄四個頻道其中 CH2和 CH3重疊顯示以比較模擬速度和量測

速度之間的差異 2由於 Km 不等於 1所以必須調整 CH3的 Y軸單位才能使得 CH2和 CH3的穩態響應部分重疊

3實驗時可以改變 FG1的參數以調整測試方波的振幅和頻率 4可以調整 FT1的參數使得 CH2和 CH3的暫態響應部分重疊

根據實際的測試結果分析如下

2馬達模擬的參數調整到 DT=10而 KA=500根據公式 τ = 40961000dtka 所以上升時間(τ)為 0082秒或是 82ms 3CH2CH3的 Y軸單位並不一致顯然 Km 不等於 1經計算確認 Km=0098

對應之 plc檔程式說明(exp_pwmplc) echo off 畫面顯示開始

run dsp 0 選擇 DSP1

run stop run reset 既有程式停止

run testDCMmem 下載指定程式

das 1 ampfg1out 0 1024 PWM 波形 Volt 設定 DAS 頻道1

das 2 ampft1lp 0 1024 馬達模擬 Volt 設定 DAS 頻道2

das 3 ampio1spd 0 1024 馬達速度 Volt 設定 DAS 頻道3

das 4 ampio1ang 0 1024 馬達角度 Volt 設定 DAS 頻道4

plot select 0 設定示波器頁數

plot xunit 100000 0 設定示波器 X軸

plot yunit 1 500 -300 設定示波器 Y1 軸

34

plot yunit 2 500 -100 設定示波器 Y2 軸

plot yunit 3 50 100 設定示波器 Y3 軸

plot yunit 4 50000 300 設定示波器 Y4 軸

plot trigger 1 0 1 10 設定示波器觸發

plot scope 9 1 2 3 4 設定示波器顯示

module io2 設定 io2 模組

s cmd ampfg1out

module fg1 設定 fg1 模組

s kAmp 256 s kFrq 150

module ft1 設定 ft1 模組

s u ampfg1out s dt 10 s ka 500

module io3 設定 io3 模組

s led ampfg1out

module 回復預設模組

run 1khz 設定抽樣頻率為 4KHz

run start DSP 開始執行

das stop pause 1 DAS 啟動 das start DAS 啟動

echo on 回復正常訊息顯示

使用者可視情況調整一階濾波器的 ka和 dt值使得 ch2和 ch3 兩組波形完全相符

以求得開迴路系統近似的一階轉移函數 CAI操控設計畫面規劃如下(EXP_PWMCAI) page 1 畫面設計

35

page 2 畫面設計 page 3 畫面設計

36

實測響應圖

訊 號 說 明 訊 號 說 明 ch1 方波產生器訊號 ch3 一階濾波器輸出信號 ch2 馬達角速度訊號 ch4 馬達角位置訊號

直流馬達之開迴路電壓控制響應圖

37

以邏輯分析功能觀測直流馬達之光電盤輸入與 PWM輸出信號

38

62 實驗 2-閉迴路的速度控制 實驗說明為了觀測閉迴路的速度控制響應建立下面的測試方塊圖

加入 PD控制後系統閉迴路的轉移函數經適度的簡化仍能約略以一階系統

處理方塊圖如下

sτ+1

u km ωm

其中

u 送給控制器的速度命令

ωm馬達的轉動速度可由處理 photo encoder 信號所得的位置微分而得

km一階系統的穩態增益 τ一階系統的時間常數即步階響應中的上升時間

方塊圖中的模組功能說明如下

1用 fg1 產生測試用的方波速度命令

2將方波速度命令和速度回授訊號送到 PD 控制器方塊中產生電壓控制訊號再透

過 io2 模組將訊號送出給伺服介面

3用 ft1 建立對照用的一階系統可用 IIR1濾波器方塊產生

4將方波命令產生速度命令再觀測 PHT(io1)上的速度值 spd

5調整 IIR1濾波器的參數使得兩組波形完全相符這時 IIR1濾波器就是閉迴路

速度控制的特性其中 km 為增益而τ為上升時間(單位為 sec)

6增益 km 可從示波器中作簡單計算而上升時間(τ=40964000dtka)

7 Led四位數字七段顯示模組顯示波形信號資料

39

對應之 plc檔程式說明(exp_speedplc) echo off 畫面顯示開始

run dsp 0 選擇 DSP1

run stop run reset 既有程式停止

run testDCMmem 下載指定程式

das 1 ampfg1out 0 1024 PWM 波形 Volt 設定 DAS 頻道1

das 2 ampft1lp 0 1024 馬達模擬 Volt 設定 DAS 頻道2

das 3 ampio1spd 0 1024 馬達速度 Volt 設定 DAS 頻道3

das 4 ampio1ang 0 1024 馬達角度 Volt 設定 DAS 頻道4

plot select 0 設定示波器頁數

plot xunit 100000 0 設定示波器 X軸

plot yunit 1 50 -300 設定示波器 Y1 軸

plot yunit 2 50 -100 設定示波器 Y2 軸

plot yunit 3 50 100 設定示波器 Y3 軸

plot yunit 4 50000 300 設定示波器 Y4 軸

plot trigger 1 0 1 10 設定示波器觸發

plot scope 9 1 2 3 4 設定示波器顯示

module io2 設定 io2 模組

s cmd ampcn2out

module fg1 設定 fg1 模組

s kAmp 50 s kFrq 150

module cn2 設定 cn1 模組

s cmd ampfg1out s fdk ampio1spd s kp 0x4000

module ft1 設定 ft1 模組

s u ampfg1out s dt 2 s ka 320

module io3 設定 io3 模組

s led ampfg1out

module 回復預設模組

run 1khz 設定抽樣頻率為 4KHz

run start DSP 開始執行

das stop pause 1 DAS 啟動 das start DAS 啟動

echo on 回復正常訊息顯示

CAI操控設計畫面規劃如下(EXP_speedCAI)

40

page 1 畫面設計 page 2 與 page 3 畫面設計與實驗一 page 2 與 page 3相同畫面 page 4 畫面設計

41

方塊的參數設定 使用者可視情況調整一階濾波器的 ka和 dt值使得 ch2和 ch3 兩組波形完全相符

以求得此一閉迴路系統近似的一階轉移函數或調整 PD控制器中的 kp和 kp值以調整系統之響應 實測響應圖

訊 號 說 明 訊 號 說 明 ch1 方波產生器產生之速度命令 ch3 一階濾波器輸出信號 ch2 馬達角速度訊號 ch4 馬達角位置訊號

42

直流馬達之閉迴路速度控制響應圖

43

63 實驗 3-閉迴路的位置控制 實驗說明為了觀測閉迴路的位置控制響應將直流馬達的回授改為位置訊號

建立下面的測試方塊圖 方塊圖中的模組功能說明如下

1用 fg1產生測試用的方波位置命令 2將方波位置命令和位置回授訊號送到 PD控制器方塊中產生電壓控制訊號再透過 io2模組將訊號送出到伺服介面驅動馬達轉動

對應之 plc檔程式說明(exp_angleplc) echo off 畫面顯示開始

run dsp 0 選擇 DSP1

run stop run reset 既有程式停止

run testDCMmem 下載指定程式

das 1 ampfg1out 0 1024 PWM 波形 Volt 設定 DAS 頻道1

das 2 ampft1lp 0 1024 馬達模擬 Volt 設定 DAS 頻道2

das 3 ampio1spd 0 1024 馬達速度 Volt 設定 DAS 頻道3

das 4 ampio1ang 0 1024 馬達角度 Volt 設定 DAS 頻道4

plot select 0 設定示波器頁數

plot xunit 100000 0 設定示波器 X軸

plot yunit 1 1000 -300 設定示波器 Y1 軸

plot yunit 2 1000 -100 設定示波器 Y2 軸

plot yunit 3 20 100 設定示波器 Y3 軸

plot yunit 4 1000 300 設定示波器 Y4 軸

plot trigger 1 0 1 10 設定示波器觸發

44

plot scope 9 1 2 3 4 設定示波器顯示

module io2 設定 io2 模組

s cmd ampcn2out

module fg1 設定 fg1 模組

s kAmp 1000 s kFrq 75

module cn2 設定 cn1 模組

s cmd ampfg1out s fdk ampio1ang s kp 0x300 s kd 0x4000

module ft1 設定 ft1 模組

s u ampfg1out s dt 2 s ka 320

module io3 設定 io3 模組

s led ampfg1out

module 回復預設模組

run 1khz 設定抽樣頻率為 4KHz

run start DSP 開始執行

das stop pause 1 DAS 啟動 das start DAS 啟動

echo on 回復正常訊息顯示

CAI操控設計畫面規劃如下(EXP_angleCAI) page 1 畫面設計

45

page 2 與 page 3 畫面設計與實驗一 page 2 與 page 3相同畫面 page 4 畫面設計與實驗二 page 4 畫面 方塊的參數設定 延續上一實驗的說明使用者可以調整 PD控制器中的 kp和 kd值以調整系統之

響應 實測響應圖

訊 號 說 明 訊 號 說 明 ch1 方波產生器產生之位置命令 ch3 馬達角速度訊號 ch2 馬達角位置 ch4 Pd控制器輸出之電壓訊號

46

直流馬達之閉迴路位置控制響應圖

47

64 實驗 4-加減速的位置控制 實驗說明為避免方波命令的過於嚴苛在方波命令的輸出加入一加減速控制功

能方塊以減緩命令變化的幅度增加馬達運動的平順建立的測試方塊圖如下

方塊圖中的模組功能說明如下

1用 fg1產生測試用的方波位置命令 2將方波位置命令送到加減速控制方塊處理後產生新的位置命令再將新的位置命

令與位置回授訊號送到 PD控制器方塊中產生電壓控制訊號最後透過 io2模組將訊號送出到伺服介面驅動馬達轉動

對應之 plc檔程式說明(exp_accplc) echo off 畫面顯示開始

run dsp 0 選擇 DSP1

run stop run reset 既有程式停止

run testDCMmem 下載指定程式

das 1 ampfg1out 0 1024 PWM 波形 Volt 設定 DAS 頻道1

das 2 ampcn1out 0 1024 加速控制 Volt 設定 DAS 頻道2

das 3 ampio1spd 0 1024 馬達速度 Volt 設定 DAS 頻道3

das 4 ampio1ang 0 1024 馬達角度 Volt 設定 DAS 頻道4

plot select 0 設定示波器頁數

plot xunit 100000 0 設定示波器 X軸

plot yunit 1 2000 -300 設定示波器 Y1 軸

plot yunit 2 2000 -100 設定示波器 Y2 軸

plot yunit 3 50 100 設定示波器 Y3 軸

plot yunit 4 2000 300 設定示波器 Y4 軸

48

plot trigger 1 0 1 10 設定示波器觸發

plot scope 9 1 2 3 4 設定示波器顯示

module io2 設定 io2 模組

s cmd ampcn2out

module fg1 設定 fg1 模組

s kAmp 2000 s kFrq 150

module cn1 設定 cn1 模組

s cmd ampfg1out

module cn2 設定 cn2 模組

s cmd ampcn1out s fdk ampio1ang s kp 0x300 s kd 0x4000

module ft1 設定 ft1 模組

s u ampfg1out s dt 2 s ka 320

module io3 設定 io3 模組

s led ampfg1out

module 回復預設模組

run 1khz 設定抽樣頻率為 4KHz

run start DSP 開始執行

das stop pause 1 DAS 啟動 das start DAS 啟動

echo on 回復正常訊息顯示

CAI操控設計畫面規劃如下(EXP_accCAI) page 1 畫面設計

49

page 2 畫面設計與實驗一 page 2相同畫面 page 3 畫面設計與實驗二 page 4相同畫面

參數設定參考之前各實驗的說明可線上機動性的調整 PD控制器中的 kp和 kd值以調整系統之響應 實測響應圖

訊 號 說 明 訊 號 說 明 ch1 方波產生器產生之位置命令 ch3 馬達角位置 ch2 加減速模組輸出之位置命令 ch4 馬達角速度訊號

50

圖一 直流馬達經加減速控制後之閉迴路控制響應圖

51

65 實驗 5-正弦波的位置控制 實驗說明在本實驗中改變命令的波形由方波改變為正弦波並建立如下的測

試方塊圖與上一實驗相比較僅更改命令的波形產生方塊 方塊圖中的模組功能說明如下 1用 fg2產生測試用的弦波位置命令 2將弦波位置命令送到加減速控制方塊處理後產生新的位置命令再與 io1 讀入的位

置回授訊號送到 PD 控制器方塊中產生電壓控制訊號再透過 io2 模組將訊號送出到伺服介面驅動馬達轉動

對應之 plc檔程式說明(exp_sinplc) echo off 畫面顯示開始

run dsp 0 選擇 DSP1

run stop run reset 既有程式停止

run testDCMmem 下載指定程式

das 1 ampfg2out 0 1024 SIN 波形 Volt 設定 DAS 頻道1

das 2 ampcn1out 0 1024 加速控制 Volt 設定 DAS 頻道2

das 3 ampio1spd 0 1024 馬達速度 Volt 設定 DAS 頻道3

das 4 ampio1ang 0 1024 馬達角度 Volt 設定 DAS 頻道4

plot select 0 設定示波器頁數

plot xunit 100000 0 設定示波器 X軸

plot yunit 1 2000 -300 設定示波器 Y1 軸

plot yunit 2 2000 -100 設定示波器 Y2 軸

plot yunit 3 50 100 設定示波器 Y3 軸

plot yunit 4 2000 300 設定示波器 Y4 軸

plot trigger 1 0 1 10 設定示波器觸發

52

plot scope 9 1 2 3 4 設定示波器顯示

module io2 設定 io2 模組

s cmd ampcn2out

module fg2 設定 fg1 模組

s kAmp 2000 s kFrq 100

module cn1 設定 cn1 模組

s cmd ampfg2out

module cn2 設定 cn2 模組

s cmd ampcn1out s fdk ampio1ang s kp 0x300 s kd 0x4000

module ft1 設定 ft1 模組

s u ampfg2out s dt 2 s ka 320

module io3 設定 io3 模組

s led ampfg2out

module 回復預設模組

run 1khz 設定抽樣頻率為 4KHz

run start DSP 開始執行

das stop pause 1 DAS 啟動 das start DAS 啟動

echo on 回復正常訊息顯示

CAI操控設計畫面規劃如下(EXP_sinCAI) page 1 畫面設計

53

page 2 畫面設計 page 3 畫面設計與實驗二 page 4相同畫面

方塊的參數設定可調整 PD控制器中的 kp和 kd值以調整系統之響應 實測響應圖

訊 號 說 明 訊 號 說 明 ch1 弦波產生器產生之位置命令 ch3 馬達角位置訊號 ch2 加減速模組輸出之位置命令 ch4 馬達角速度訊號

54

直流馬達之閉迴路弦波加減速位置控制響應圖

55

7組合語言說明

本節將針對 DC馬達伺服控制實驗專用的程式模組進行功能與程式碼的說明其

有關於波形產生器與資料擷取模組等說明如下

SIN_waveasm 正弦波產生器 PWM_waveasm 方波產生器 IIR1_filterasm 一階濾波器 DAS4asm 資料蒐集模組

弦波產生器

此模組會產生週期性的正弦波方塊圖如下

outfrq

kBiasbias

ampkAmp

kFrqth

kThf=1TB

θ

A

其中

1正弦波有四個參數振幅(A)頻率(F)相位(θ)和偏移(B)其公式為 out = A sin(2πF t +θ) + B 2對於單純的正弦波產生器所對映的參數包括 kAmp 振幅值 kFrq 頻率值kFrq=655368000Hz其中 Hz的範圍為 0~4000例如 1000Hz =gt frq=8192 100Hz =gt frq=819 10Hz =gt frq=82 1Hz =gt frq=8 kTh 相角值0~255代表 0~360的相位當 th=0 時為正弦波 th=64 時為餘弦波 th=128時為反相波依此類推 kBias偏移值 3對於可調變的正弦波產生器其對映的輸入點為 amp 控制振幅的輸入點可產生調幅(AM)波形 frq 控制頻率的輸入點可產生調頻(FM)波形 th 控制相位的輸入點可產生調相(PM)波形 bias控制偏移的輸入點可產生雙頻混波(相加)波形 4若不使用調變功能時各個輸入點時的預設值為 amp 指向 kAmp 的位址 frq 指向 kFrq 的位址

56

th 指向 kTh 的位址 bias指向 kBias的位址

模組程式範例SIN_WAVEasm

local amp R0 IP kAmp 輸入點sin波的振幅 local frq R1 IP kFrq 輸入點sin波的頻率 local th R2 IP kTh 輸入點sin波的相角 local bias R3 IP kBias 輸入點sin波的中心偏移 local out R4 OP 輸出點sin波輸出 local tab R5 TP 表格指標指向 sin[256]的表格 local ang R6 內部變數相位角65536=360deg local kAmp R7 1000 參數振幅值 local kFrq R8 1000 參數頻率值=655368000Hz local kTh R9 0 參數相角值360deg=256 local kBias R10 0 參數偏移值 data 11 模組變數區長度及初值 initial 啟動程序 WR ang0 WR out0 ang=out=0 RET timer 即時控制程序(8KHz) RD ang ADD (frq) WR ang ang+=frq SFR 8 ADD (th) AND 255 ACC=sin(ang256+th) ADD tab WRH RDM table-look-up MUL (amp) SFR 12 ADD (bias) WR out out=ACCamp4096+bias RET table tab 256 sin[256]表格區10=4096 0 101 201 301 401 501 601 700 00~070deg 799 897 995 1092 1189 1285 1380 1474 08~0F 1567 1660 1751 1842 1931 2019 2106 2191 10~17 2276 2359 2440 2520 2598 2675 2751 2824 18~1F 2896 2967 3035 3102 3166 3229 3290 3349 20~27 3406 3461 3513 3564 3612 3659 3703 3745 28~2F 3784 3822 3857 3889 3920 3948 3973 3996 30~37 4017 4036 4052 4065 4076 4085 4091 4095 38~3F 4096 4095 4091 4085 4076 4065 4052 4036 40~4790deg 4017 3996 3973 3948 3920 3889 3857 3822 48~4F 3784 3745 3703 3659 3612 3564 3513 3461 50~57 3406 3349 3290 3229 3166 3102 3035 2967 58~5F

57

2896 2824 2751 2675 2598 2520 2440 2359 60~67 2276 2191 2106 2019 1931 1842 1751 1660 68~6F 1567 1474 1380 1285 1189 1092 995 897 70~77 799 700 601 501 401 301 201 101 78~7F 0 65435 65335 65235 65135 65035 64935 64836 80~87180deg 64737 64639 64541 64444 64347 64251 64156 64062 88~8F 63969 63876 63785 63694 63605 63517 63430 63345 90~97 63260 63177 63096 63016 62938 62861 62785 62712 98~9F 62640 62569 62501 62434 62370 62307 62246 62187 A0~A7 62130 62075 62023 61972 61924 61877 61833 61791 A8~A8 61752 61714 61679 61647 61616 61588 61563 61540 B0~B7 61519 61500 61484 61471 61460 61451 61445 61441 B8~BF 61440 61441 61445 61451 61460 61471 61484 61500 C0~C7270deg 61519 61540 61563 61588 61616 61647 61679 61714 C8~CF 61752 61791 61833 61877 61924 61972 62023 62075 D0~D7 62130 62187 62246 62307 62370 62434 62501 62569 D8~DF 62640 62712 62785 62861 62938 63016 63096 63177 E0~E7 63260 63345 63430 63517 63605 63694 63785 63876 E8~EF 63969 64062 64156 64251 64347 64444 64541 64639 F0~F7 64737 64836 64935 65035 65135 65235 65335 65435 F8~FF

就程式結構而言說明如下

timer 即時控制程序(8KHz) RD ang ADD (frq) WR ang ang+=frq SFR 8 ADD (th) AND 255 ACC=sin(ang256+th) ADD tab WRH RDM table-look-up MUL (amp) SFR 12 ADD (bias) WR out out=ACCamp4096+bias RET

1基本上我們以查表法計算 sin()其輸入θ的範圍為 0~255對映到 0~360deg其輸出 sin(θ)的範圍為+-4096對映到+-10的範圍

2建立一個內部變數 ang其範圍為 0~65535對映到 0~360的相位角 3每個timer程序都執行 ang+=frq的動作更新目前的相位角接著依照 ang的相位角查表得到 sin(ang256+th)值

4由於表格長度為 256-word所以必須將 ang256才能得到正確的對映關係而 th範圍為 0~255所以不需要像 ang一般的做額外處理

5sin()的範圍為(+1-1)而在表格中以(+4096~-4096)的型式記錄相當於 10=4096所以執行 Asin()時還要用 SFR12指令做4096的動作才能正確的取得輸出值

58

6就頻率輸入 frq而言其計算原則是將θ=ωt轉化成θ=Σ(ωdt)因為抽樣頻率

為 8KHz所以 dt=18000而得到 frq=655368000Hz公式其中 Hz為真正的頻率在 8KHz的抽樣頻率下其範圍為 0~4000

鋸齒波產生器

此模組會產生週期性的鋸齒波方塊圖如下

outfrq

kBiasbias

ampkAmp

kFrqth

kThf=1TB

θ

A

其中

1鋸齒波也有四個參數振幅(A)頻率(F)相位(θ)和偏移(B)和正弦波的定義完全一致唯一的差異是其輸出為鋸齒波而非正弦波

2基本波形是從週期開始時為 0一直遞增到週期結束時到達最高點然後立刻回歸

到 0重新開始 3以程式結構而論鋸齒波程式幾乎就是正弦波的相位計算部分只差沒有正弦波的

查表處理而已

模組程式範例SAW_WAVEasm

local amp R0 IP kAmp 輸入點sin波的振幅 local frq R1 IP kFrq 輸入點sin波的頻率 local th R2 IP kTh 輸入點sin波的相角 local bias R3 IP kBias 輸入點sin波的中心偏移 local out R4 OP 輸出點sin波輸出 local ang R5 內部變數相位角65536=360deg local kAmp R6 1000 參數振幅值 local kFrq R7 1000 參數頻率值=655368000Hz local kTh R8 0 參數相角值360deg=256 local kBias R9 0 參數偏移值 data 11 模組變數區長度及初值 initial 啟動程序 WR ang0 WR out0 ang=out=0 RET timer 即時控制程序(8KHz) RD ang ADD (frq) WR ang ang+=frq SFR 8 ADD (th) AND 255 ACC=(ang256+th)amp0x00ff MUL (amp) SFR 8 ADD (bias) WR out out=ACCamp256+bias

59

RET

脈衝波產生器

outfrq

kBiasbias

ampkAmp

kFrqth

kThf=1TB

θ

A

pwm

kDutyduty

此模組會產生週期性的脈衝波方塊圖如下

其中

1脈衝波有五個參數其中振幅(A)頻率(F)相位(θ)和偏移(B)四個參數和正弦波

定義完全一樣另外再增加一個負載率(D) 2基本波形是從週期開始時為 1隔段時間後換為 0然後持續到週期結束再重新開始其中 1所佔有的比例就是負載率當 D=0時為 0而 D=255時為 100

3和其他參數類似負載率(D)以 duty為其輸入點而以 kDuty為其參數值

模組程式範例PLS_WAVEasm

local amp R0 IP kAmp 輸入點脈衝波的振幅 local frq R1 IP kFrq 輸入點脈衝波的頻率 local th R2 IP kTh 輸入點脈衝波的相角 local bias R3 IP kBias 輸入點脈衝波的中心偏移 local duty R4 IP kDuty 輸入點脈衝波的負載率 local out R5 OP 輸出點脈衝波輸出 local ang R6 內部變數相位角65536=360deg local kAmp R7 1000 參數振幅值 local kFrq R8 1000 參數頻率值=655368000Hz local kTh R9 0 參數相角值360deg=256 local kBias R10 0 參數偏移值 local kDuty R11 128 參數負載率100 =256 data 12 模組變數區長度及初值 initial 啟動程序 WR ang0 WR out0 ang=out=0 RET timer 即時控制程序(8KHz)

60

RD ang ADD (frq) WR ang ang+=frq SFR 8 ADD (th) AND 255 ACC=(ang256+th)amp0x00ff SUB (duty) RD (amp) JLT t1 RD 0 ACC=(amp0) t1 ADD (bias) WR out out=ACC+bias RET

IIR 一階濾波器

此模組執行一階的 IIR濾波器方塊圖如下

kau x

Z-1

+

+

-

+低通濾波器

高通濾波器dx lp

hp

濾波器參數的計算公式如下

1假設濾波器的頻寬為 hz則 ωn=hz628 2若系統頻率為 8KHz則抽樣週期 dT為 dT=dt8000 其中 dt為模組參數 3則濾波器參數為 ka=ωndT4096或是 =hzdt62880004096即 =hzdt32 4當 dt決定後所允許的訊號頻寬為(4000dt)換句話說訊號頻寬會因為 dt增加而下降

為了方便實驗的運用下面列出常用的參數對照表

濾波頻寬

(Hz)

10 20 50 100 200 500 1000 2000

訊號頻寬

(Hz)

400 800 2000 4000 4000 4000 4000 4000

模組參數 dt 10 5 2 1 1 1 1 1

模組參數 ka 320 320 320 320 640 1600 3200 6400

表格的運用方式如下

1首先決定濾波頻寬 2接著查表找出對映的參數 dt和 ka 3再查表得到對映的訊號頻寬以決定是否需要串接前級濾波器

61

模組程式範例IIR1_FILTERasm

local u R0 IP 輸入點濾波器輸入 local lp R1 OP 輸出點低通濾波器輸出 local hp R2 OP 輸出點高通濾波器輸出 local dt R3 1 參數抽樣週期 local ka R4 4096 參數增益 ka10=4096 local prd R5 內部變數抽樣週期用 data 6 模組變數區長度 initial 開機啟動程序 WR lp0 WR hp0 WR prd1 RET lp=hp=0prd=1 timer 即時控制程序 SUB prd1 JNZ b9 if (--prdgt0) return RD dt WR prd prd=dt RD (u) SUB lp WR hp hp=u-lp MUL ka SFR 12 ADD lp WR lp lp+=(hpka4096) b9 RET

資料蒐集模組

資料蒐集模組是一個非常特殊的模組專門配合 eTTY 程式中的示波器使用

模組程式範例DAS4asm

local cmd R0 0 紀錄命令0=停止1=前置記錄2=正觸發4=負觸發6=觸發記錄 local dt R1 1 抽樣週期每 dT抽樣一次 local tab R2 TP DAS表格啟始位址 local cnt R3 0 目前記錄點(0~255) local ch1 R4 0 定義頻道1的變數位址 local ch2 R5 0 定義頻道2的變數位址 local ch3 R6 0 定義頻道3的變數位址 local ch4 R7 0 定義頻道4的變數位址 local trg R8 0 定義觸發頻道的變數位址 local th R9 0 觸發準位 local tail R10 0 觸發後的抽樣個數 local buf R11 1 抽樣計數(1~dt) local pnt R12 表格位址計算pnt=tab+cnt4 local len R13 表格長度計算(0~256) data 14 定義模組變數區的長度 table tab 1024 定義表格的長度 initial 啟動程序 WR cmd0 RET cmd=0 timer 控制程序

62

ADD cmd0 JZ t9 if (cmd==0) return SUB buf1 JNZ t9 if (--buf)gt0) return RD dt WR buf dt=buf RD cnt ADD 1 AND 0xff WR cnt cnt=(cnt+1)amp0xff SFL 2 ADD tab WR pnt pnt=tab+cnt4 RD (ch1) WR (pnt) ADD pnt1 pnt++=ch1 RD (ch2) WR (pnt) ADD pnt1 pnt++=ch2 RD (ch3) WR (pnt) ADD pnt1 pnt++=ch3 RD (ch4) WR (pnt) pnt =ch4 RD cmd SUB 1 JZ t9 SUB 1 JZ t2 SUB 1 JZ t3 SUB 1 JZ t4 SUB 1 JZ t5 SUB 1 JZ t6 JR t7 t2 RD (trg) SUB th JGE t9 ADD cmd1 JR t9 wait trgltth t3 RD (trg) SUB th JLE t9 JR t6 wait trggtth t4 RD (trg) SUB th JLE t9 ADD cmd1 JR t9 wait trggtth t5 RD (trg) SUB th JGE t9 JR t6 wait trgltth t6 WR len0 WR cmd7 len=0cmd=7 t7 ADD len1 SUB tail JLT t9 WR cmd0 if ((++len)gt=0x80) cmd=0 t9 RET

與 DC 馬達控制相關的程式模組有以下 4個程式模組說明如下

(1)加減速控制模組 ACC_controlasm (2)光電盤輸入模組 POS_inputasm (3)PWM輸出模組 PWM_outputasm (4)PD控制模組 PD_controlasm

71加減速控制模組 此程式模組主要功能在於執行位置控制的加減速命令修正其數學模式採用 Lynn

濾波器的架構參見下圖

cmd

2

+

old Z -1

-

Z -1

Z -1

Z-1

Z-1x0 x1 x8 x9 x16

+ -

++

2

Z-1

Z-1 y1 y2

+

-

y0

+ +

sumZ-1

+164

12

out

dif

+

63

加減速控制模組方塊圖

其中

1Lynn 濾波器的階數固定成八階也就是 m=8其公式為 H(z) = (1-2Z-m+Z-2m)(1-2Z-1+Z-2)m2

2因為m=8所以m2=64因此最後計算低通濾波的部份時要先做除 64的運算 3因為低通濾波(lp)和 y0之間有 64倍的差異代表 y0y1y2的變化範圍比濾波器輸

入值要擴大許多例如輸入值在+-1000變化時y0y1y2很可能會在+-64000之間變化這範圍已經超出整數處理的範圍很可能會造成錯誤的計算結果

4所以在實驗時輸入值的變化範圍必須控制在+-500之間以保證計算的正確性 5對於 Lynn 濾波器當 m=8時其濾波器的頻寬固定為 1 kHzmdt也就是 dt=1時頻寬為 125 Hz dt=2時頻寬為 625Hz依此類推 6對於 Lynn 濾波器其濾波器的延遲固定為 m個抽樣週期因此設計 hp = x8 - lp 即可得到高通濾波器的對應結果 7其中乘 2和除 64的運算以移位運算取代所以整個程式中並無任何乘法運算 8Lynn 濾波器本身並不是穩定濾波器所以在程式啟動時必須確實的將所有狀態

(x0~x16)歸零否則會產生不穩定的狀態輸出

因為 Lynn濾波器中所有參數固定所以除了抽樣週期 dt 之外並無任何可調參數

抽樣週期 dt 可以控制頻寬dt 越大則濾波器頻寬越低

將步階命令值的輸出送入 Lynn 濾波器中經由低通濾波器的效應可以減緩命

令的變化程度達到加減速控制的目的以下為使用 Lynn 濾波器型式實現加減速控

制的組合語言程式列印 如欲更進一步瞭解 Lynn 濾波器與 FIR 數位濾波器之間的關係可以參考通訊實驗

四數位濾波器設計(FIR)中之說明

ACC_controlasm程式列印 local cmd R0 IP 輸入點位置命令

local out R1 OP 輸出點加減速處理後的位置命令

local dif R2 OP 輸出點位置微分命令

local axis R3 0 馬達編號0=X1=Y2=Z3=C

local old R4 內部變數微分計算用

local sumL R5 內部變數積分計算用

local sumH R6 內部變數積分計算用

local y0 R7 內部變數y(0~2)

local y1 R8 local y2 R9

local x0 R10 內部變數x(0~16)

local x1 R11 local x2 R12 local x3 R13 local x4 R14

local x5 R15 local x6 R16 local x7 R17 local x8 R18

local x9 R19 local x10 R20 local x11 R21 local x12 R22

local x13 R23 local x14 R24 local x15 R25 local x16 R26

64

data 27 模組變數區長度

initial 開機啟動程序

WR dif0 RD (cmd) WR out WR old dif=0 out=old=cmd

sumHL=cmd64

SFL 6 WR sumL RD out SFR 10 SGN 5 WR sumH

RPT 17 WR x00 RPT 3 WR y00 RET x[0~16]=0y[0~2]=0

timer 即時控制程序

RD (cmd) SUBX old WR x0 x0=cmd-old old=cmd

SUB x81 ADD x16 ADD y11 SUB y2 WR y0 y0=x0-2x8+x16+2y1-y2

SGN ADD sumL WR sumL RDH ADC sumH WR sumH sumHL+=y0

WRH RD sumL SFR 6 WR out out=sumHL64

RD y0 SGN SFR WR dif dif=y032mm

RD x0 RPT 16 RDX x1 x[i]=x[i-1] i=1~16

RD y0 RDX y1 WR y2 y[i]=y[i-1] i=1~2

b9 RET

72光電盤輸入模組

DC馬達的位置由光電盤量測之預設儲存於 0xac與 0xbe二個輸入埠位址中其中位址 0xac記錄 X軸馬達的位置位址 0xbe記錄 Y軸馬達的位置由於本實驗的DC馬達接在 Y軸的位置上因此程式中直接選用 Y軸的輸入 光電盤位置輸入的程式列印如下其中速度由位置的差分而得至於馬達的位置

則使用內部 2個 word加以記錄精度為 32位元 POS_inputasm程式列印 local spd R0 OP 輸出點速度量測值

local ang R1 OP 輸出點角度量測值

local angH R2 內部變數角度的 32 位元部分

local mode R3 0x308 模式選擇15MHzAB 相正反向輸入

local pht R4 0xac 輸入阜地址光電盤輸入(0xac)

local phtc R5 0xbe 輸入阜地址光電盤模式(0xbe)

local old R6 內部變數速度更新用

data 7 模組變數區長度

initial 開機啟動程序

RD mode WR (phtc) phtc=mode

RD (pht) WR old WR spd0 RET old=phtspd=0

timer 即時控制程序

RD (pht) SUBX old SGN 11 WR spd spd=(pht-old)old=pht

65

ADD ang WR ang angHL+=spd

RDH ADC angH WR angH

RET

73 PWM輸出控制模組 模組方塊

cmd PWM輸出

程式說明 1在開機時將切換保護時間寫到輸出阜 0xbc上其中切換保護值為 0~6360=5us 2在每次 timer interrupt時將 cmd訊號處理後寫到輸出阜 0xb8上

PWM_outputasm程式列印 local cmd R0 IP gnd 輸入點v相命令

local gain R1 4096 參數輸出增益1=4096

local bias R2 2048 參數輸出偏壓0=2048

local limit R3 4095 參數輸出極限1=4095

local zone R4 0x88f0 參數頻率=12KHz切換保護=5us

local pwm R5 0xb8 輸出阜地址PWM0 輸出(0xb8)

local mode R6 0xbc 輸出阜地址PWM 模式(0xbc)

local p0md R7 0xf8 輸出阜地址port0 模式(0xf8)

local gnd R8 0 輸入接地點

data 9 模組變數區長度

initial 開機啟動程序

RD bias WR (pwm) pwm=bias

RD 0xffff WR (p0md) set port0 mode

RD zone WR (mode) RET mode=zone

stop 關機保護程序

RD bias WR (pwm) RET pwm=bias

timer 即時控制程序

RD (mode) xor 1 and 1 WR (mode) trigger watch-dog

RD (cmd) MUL gain SFR 12 ADD bias ACC=(cmdgain4096)+bias

MAX 0 MIN limit WR (pwm) pwm=limit(ACC)

RET

66

74 PD 控制模組

PD控制的模組方塊參見圖二十一所示其中比例控制的部份直接由增益 kp加以調整微分控制的部份則由誤差的差分經增益 kd的調整而得

Σ+

-

cmd

fdk

err out

Σ

pk

dk

Σ

+

+

+

-

old1minusZ

PD控制器的方塊圖

PD_controlasm程式列印 local cmd R0 IP gnd 輸入點位置命令(可忽略)

local fdk R1 IP gnd 輸入點位置回授(可忽略)

local out R2 OP 輸出點用以控制速度迴路

local kp R3 256 參數增益 kp10=256

local kd R4 0 參數增益 kd10=256

local err R5 0 內部變數

local old R6 0 內部變數

local gnd R7 0 無輸入時的短路點

data 8 模組變數區長度

initial 開機啟動程序

WR out0 WR old0 RET out=old=0

timer 即時控制程序

RD (cmd) SUB (fdk) PRTF WR err

MUL kp SFR 8 P=(cmd-fdk)kp256

RDS err SUBX old MUL kd SFR 8 D=(err-old)kd256

ADDS

WR out out=P+D

RET

程式中預設增益值的 10以整數值 256為基底因此使用 SFR 8的指令加以調

整另外在在計算微分項的程式部份用到 SUBX old的指令其詳細的暫存器動作如

下 參考 piDSP的指令說明SUBX指令將總共用到 3個時序參考錯誤 找不到參照

67

來源在時序 1時將原先 AX的資料拷貝一份到 HX中時序 2時正式執行減

法的動作所以 AX暫存器中的內容會變成 err-old時序 3時DSP會將存放在 HX暫存器中的內容拷貝一份到 old的記憶體中也就是經由 SUBX此一精簡指令將

同時完成計算差分所需要的相減與資料疊代的動作有效的利用 piDSP控制器 DSP核心的精簡指令將可以大幅提昇系統的計算速度

HX AXoldSUBXerr err

old

err

errerr olderr minus

1_err

errerr olderr minus err

1_err

1

2

3

SUBX的指令時序與暫存器變化

68

8附錄快速安裝說明

光纖網路通訊 FPGA 發展系統 (適用於 WIN-XP200098 系統)

快速安裝說明

26Pin 負載輸出入埠

雙電源︵5

12

伏︶輸入埠

單電源︵5

伏︶輸入埠

USB

光纖線輸

號 光纖線輸出埠

入 傳 埠

首先將光碟片 RFFPGA 目錄檔案拷貝在您工作硬碟裡面

第一次安裝時先將 USB 傳輸線接上電腦主機將電源供應器接上 FPGA 模組此時電

腦會出現安裝 USB-Serial 驅動程式選擇從清單安裝此驅動程式放置在光碟片

RFFPGA-USBdrive 選擇您目前安裝系統

可選擇 WIN-98WIN-MEWIN-2000WIN-XP 系統配合您現在工作電腦作業系統

69

注意一般電腦 USB 埠很多插口當您安裝驅動程式時是配合您當時插入之埠

下次如您插入不同接口埠時電腦會再次要求安裝驅動程式這是正常現象請再次安

裝驅動程式否則無法使用

FPLC 操作

首先進入 RFFPGA裡子目錄 testASM直接點選 fPLCexe 出現下面操作畫面(也可直接將

此檔案放置桌面直接點選)

(或者選擇 File 再執行 Setuphellip 選擇您要執行 CAI 檔)

70

進入下面操作畫面 首先使用滑鼠在 FPGA下載按鈕單擊動作使 FPGA變成 DSP晶片 實驗一至實驗五皆為使用 DSP組合語言設計程式其原始程式分別為 testASM1至testASM5可使用 texPad 開啟與編輯程式內容 實驗三與實驗五多有 IO控制動作 當選擇實驗三時出現下面畫面

71

eM_USB 模組

數字型 LED

0 1 2 34 5 6 78 9 A BC D E F

燈號型 LED

44 鍵盤

ADC0 ADC1 DAC0 DAC1

LED 選擇KEY 選擇

模 式 1

0123

注意操作畫面 3與 4 說明開關與按鍵選擇位置後選擇程式下載再按程式啟動如您

按下 0-3按鍵時燈號型 LED會有不同方向閃爍顯示程式停止時結束所有 IO控制動作再按回首頁選擇其他實驗 實驗四與實驗五

模式3

0 1 2 34 5 6 78 9 A BC D E F

按照上面開關選擇直接操作如果以上實驗皆能按照正常操作表示您光纖網路通訊

FPGA發展模組以能正常使用 注意 開機與關機動作順序如下

開機電腦啟動 --- eM_USB 模組電源接上 --- USB 接上電腦 ---

啟動 FPLC 軟體 --- 下載 FPGA 程式

關機關閉 FPLC 軟體 --- eM_USB 模組電源拔掉 --- 拔掉電腦 USB 接頭 ---關掉

電腦

如果以上順序有亂可能造成 USB 找不到驅動造成無法下載經過幾次測試還是

無法下載建議重新啟動電腦主機按照正確步驟操作

72

FPGA 下載操作

進入 FPLC 操作系統按照下列步驟選擇節點模組與下載 bit FPGA 檔案

在 VHDLDEMO 子目錄下您可以選擇您目前 FPGA 種類型號在此型號下我們已將 VHDL

與數位邏輯設計課本範例全部放於此處

73

光纖網路連線 FPGA 下載操作

首先利用光纖線將 eM_USB0 模組光纖輸出埠接至 eM_USB1 模組光纖輸入埠以此

類推最後再將最後 eM_USBN 模組光纖輸出埠接至 eM_USB0 模組光纖輸入埠配置

如附圖方式

個人電腦(Windows) eM_USB模組

0USB

eM_USB模組1

光纖網路

eM_USB模組2

eM_USB模組N

配置完成後進入 FPLC 系統首先必須先將 Node00 下載在 testASM 子目錄裡

piDSPv0bit 檔讓 eM_USB0 模組 FPGA 具備 DSP 功能才能執行光纖網路通訊

操作如下

此時您就可以選擇分別下載至各模組 FPGA 檔 bit

74

安裝 FPLC 注意事項

當您進入 FPLC 時

按 FILE 選擇 programhellip 選擇檔案為 exp_dcmplc 出現下面畫面

正常顯示畫面為

75

DOS 環境操作

在 PC 端的操作是在 Windows 環境中的 DOS 視窗中執行指令範例如下

eFPGA progNETbit 下載 FPGA電路至網路節點0(即 USB節點)中 eFPGA testLEDbit 1 下載 FPGA電路至網路節點1中

對於單一節點的控制程序如下

1將 eM_USB模組連結個人電腦的 USB端 2eM_USB模組開機 3執行下載指令即可 eFPGA xxxxbit 4若要更改 FPGA電路只要重新執行下載指令即可

對於多個網路節點的控制程序如下

1第一組 eM_USB模組連結個人電腦的 USB端再以光纖網路依序其他各節點 2連接 USB界面者為模組0從光纖發射端連接出去的模組為1依此類推 3將所有 eM_USB模組開機 4執行下載指令如下 eFPGA progNETbit 模組0必須先下載指定的 FPGA電路 eFPGA xxxxbit 1 再依序下載其他網路模組的 FPGA電路 eFPGA yyyybit 2 eFPGA zzzzbit 最後再重新下載模組0的 FPGA電路 5換句話說模組0必須先執行 progNETbit讓光纖網路接受 FPGA控制後才能透過光纖網路下載至其他節點等全部網路節點下載完畢後再將模組0的 FPGA重新下載讓模組0也可自由執行任意的 FPGA電路

6若要更改某一個網路節點中的 FPGA電路只要重新執行下述指令 eFPGA progNETbit 模組0必須先下載指定的 FPGA電路 eFPGA yyyybit 2 下載指定網路模組的 FPGA電路 eFPGA zzzz bit 最後再重新下載模組0的 FPGA電路 換句話說除非模組0中的 FPGA已經包括光纖網路管理電路否則一定要先在

模組0中下載網路管理電路後才能下載指定網路節點的 FPGA電路

76

光纖網路通訊 FPGA 發展系統

系統配置

光纖網路通訊 FPGA 發展系統的系統配置圖如下

個人電腦(Windows) eM_USB模組

0USB

eM_USB模組1

光纖網路

eM_USB模組2

eM_USB模組N

其中

1基本模組為 eM_USB模組可用 USB界面和個人電腦連線並提供 USB對光纖網路的轉換功能使得個人電腦可以獨立控制光纖網路中的每個網路節點

2eM_USB模組也可以作為光纖網路中的網路節點透過光纖網路而接受個人電腦的

監控 3就個人電腦而言不論是 USB界面直接連結或是以光纖網路間接連結的 eM_USB模組都是可以直接監控的網路節點最多可以同時控制一個 USB節點和 30個網路節點

4對於每一個網路節點個人電腦都可執行 eM_USB模組中 FPGA的電路下載工作並在適當的 FPGA電路配合下可執行 eM_USB模組中 FPGA內部電路的讀寫控制 5透過適當的 FPGA電路設計各網路節點都可透過光纖網路和其他任何網路節點

作同步通訊執行 FPGA內部記憶體的資料交換資料交換頻率可達 1KHz以上

77

網路模組配置

每個網路模組的標準配置圖如下

eM_USB模組光纖網路

USB eM_FPGA卡

eM_DEMO模組

eM_EXP實驗模組

DC電源

其中

1網路模組以 eM_USB模組為主提供基本的 USB界面和光纖網路連線 2eM_USB模組中的 FPGACPLD採用插卡型式可選擇不同的 eM_FPGA卡包括

eM_2V1K卡可選用 Virtex系列的 XC2V250和 XC2V1000 eM_3S1K卡可選用 Spartan3系列的 XC3S400XC3S1000和 XC3S1500 eM_3S50卡可選用 Spartan3系列的 XC3S50XC3S200和 XC3S400 eM_95XL卡可選用 9500XL系列的 XC95144XL和 XC95288XL 3eM_USB模組中的對外連線有兩種一種是 26P接頭用以連接既有的各種實驗模

組另一種是兩組 50P接頭將 FPGA中各接腳引出用以連接專題實驗 4eM_DEMO模組就是插上 50P接頭的教學模組其中包括 LED 數字顯示和 44鍵盤也具備兩組的 ADC和兩組的 DAC接頭提供類比訊號的測試工具

常用的實驗組合包括

1精簡組合包括(eM_USB+eM_FPGA)提供基本的網路節點適用於專題實驗 2標準組合包括(eM_USB+eM_FPGA+eM_DEMO)提供基礎 FPGA設計的教學實驗

3實驗組合包括(eM_USB+eM_FPGA+eM_DEMO+eM_EXP)提供進階的 FPGA實驗可依需求選用不同的實驗模組

78

eM_USB 模組

eM_USB 模組的電路配置圖如下

TxRx

DCPower

USB

JP2

JP3

光纖界面

外加電源

PC連線

JP1

eM_FPGA模組

FT232 CPLD FlashROM

SRAM

10cm

6cm

JP4

其中

1對外的連線接頭包括 DC電源 可選擇單電源(5V)或是多電源(5V+12V-12V)兩種 USB界面 直接連接個人電腦 光纖界面連接光纖網路 2實驗界面包括 JP1負責內部 CPLD的電路下載 JP2JP3兩組 50P的擴張用接頭 JP4 標準 26P接頭用以連接各種實驗模組 3內部的電路配置包括 A以 SO-DIMM接頭連接各種 eM_FPGA卡 B內附 EEPROMFlashROM和 SRAM提供 FPGA作應用測試 C以一顆 FT232BM作為 USB界面解碼而以一顆 CPLD作為光纖網路解碼 D提供各種 eM_FPGA卡的電路下載功能 4內附五顆 LED由上而下依序為 usbLED指示 USB界面的讀寫狀態 tstLED可由 FPGA電路自行定義 stsLED可由 FPGA電路自行定義 RxLED 可由 FPGA電路自行定義 TxLED 可由 FPGA電路自行定義

79

外部接腳定義

外部接頭的接點順序圖示如下

上視圖

JP11 9 JP4

126225

JP31

50249

JP21

50249

而各接頭的接點定義如下

JP1 JP4 JP2 JP3 1+33V 1+12V 2+12V 1 GND 2 GND 1 GND 2 GND 2GND 3 ADC 4 DAC 3POWER 4ALARM 3 +5V 4 +5V 3nc 5 yPB2 6 yPB3 5RxNET 6TxNET 5+12V 6+12V 4TCK 7 yPB1 6 yPB4 7RxUSB 6TxUSB 7-12V 6-12V 5nc 9 yPB0 10yPB5 9RxCAN 10TxCAN 9 ADC 10 DAC 6TDO 11yPB6 12yPB7 11P0D0 12P0D1 11P1D0 12P1D1 7TDI 13yGND 14yPC3 13P0D2 14P0D3 13P1D2 14P1D3 8nc 15yPC2 16yPC1 15P0D4 16P0D5 15P1D4 16P1D5 9TMS 17yPC0 18yPA0 17P0D6 18P0D7 17P1D6 18P1D7 19yPA1 20yPA2 19P0D8 20P0D9 19P1D8 20P1D9 21yPA3 22GND 21P0D10 22P0D11 21P1D10 22P1D11 23GND 24+5V 23P0D12 24P0D13 23P1D12 24P1D13 25+5V 26nc 25P0D14 26P0D15 25P1D14 26P1D15 27P2D0 28P2D1 27PxA0 28PxA1 29P2D2 30P2D3 29PxA2 30PxA3 31P2D4 32P2D5 31PxA4 32PxA5 33P2D6 34P2D7 33PxA6 34PxA7 35P2D8 36P2D9 35PxB0 36PxB1 37P2D10 38P2D11 37PxB2 38PxB3 39P2D12 40P2D13 39PxB4 40PxB5 41P2D14 42P2D15 41PxB6 42PxB7 43ADC0 44ADC1 43PxC0 44PxC1 45ADC2 46ADC3 45PxC2 46PxC3 47ADC4 48ADC5 47PxC4 48PxC5 49DAC0 50DAC1 49PxC6 50PxC7

80

eM_FPGA 模組

在各種 eM_FPGA 模組中FPGA 對外電路的標準配置圖如下

24576MHz

FlashROM

26PSRAM

EEPROM

mD[8]

yPA[4]

FPGACPLD

mA[19]mRDmWRmCSeeCKeeCSeeDIeeDO

光纖界面 RxNETTxNET

USB 界面 RxUSBTxUSBCLK24MPOWERALARM

LED

tstLEDstsLEDRxLEDTxLED

yPB[8]yPC[4]

ADCDAC

ADC[8]

實驗模組

ADC[2]

DAC[2]

xPA[4]

xPB[8]

xPC[4]

基礎實驗

其中

1FPGACPLD可以選擇下述幾種 XC2V250XC2V1000 採用 eM_2V1K模組其中 FPGA為 FG456包裝 XC3S400XC3S1000XC3S1500採用 eM_3S1K模組其中 FPGA為 FG456包裝 XC3S400XC3S1000XC3S1500採用 eM_3S1K模組其中 FPGA為 FG456包裝 XC3S50XC3S200XC3S400 採用 eM_3S50模組其中 FPGA為 TQ144包裝 XC95144XLXC95288XL 採用 eM_95XL模組其中 CPLD為 TQ144包裝 2採用 FG456包裝者可以控制所有的 IO界面 3採用 TQ144包裝者只是不能控制 RAM和 FlashROM而可以控制其他所有的界面 4所有 FPGA模組都可自由選擇由 USB界面或是由光纖界面下載電路但是 CPLD模組只能固定由 USB界面下載電路

5所有 FPGACPLD模組都可透過 26P接頭連接既有的各種實驗模組

81

FPGA 接腳對照表

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

mD0 XD6 mD0 A17 C13 -- -- mD1 XD7 mD1 B17 D12 -- -- mD2 XD8 mD2 C17 D11 -- -- mD3 XD9 mD3 D17 C11 -- -- mD4 XD10 mD4 E17 D10 -- -- mD5 XD11 mD5 E16 C10 -- -- mD6 XD12 mD6 E14 D9 -- -- mD7 XD13 mD7 E13 D7 -- -- mA0 XD14 mA0 D13 C7 -- -- mA1 XD15 mA1 C13 D6 -- -- mA2 XA0 mA2 V5 C3 -- -- mA3 XA1 mA3 U5 C4 -- -- mA4 XA2 mA4 Y2 D3 -- -- mA5 XA3 mA5 Y1 D4 -- -- mA6 XA4 mA6 V4 E3 -- -- mA7 XA5 mA7 V3 E4 -- -- mA8 XA6 mA8 W2 F3 -- -- mA9 XA7 mA9 W1 F4 -- -- mA10 XA8 mA10 T2 G6 -- -- mA11 XA9 mA11 T1 K3 -- -- mA12 XA10 mA12 R4 K10 -- -- mA13 XA11 mA13 R3 L3 -- -- mA14 XA12 mA14 R2 L4 -- -- mRD XRD mRD R1 D5 -- -- mWR XWR mWR P6 C6 -- --

POWER P0A0 POWER B4 B20 P1 P5 ALARM P0A1 ALARM A4 A19 P2 P6 RxNET P0A2 RxNET C4 B19 P4 P7 TxNET P0A3 TxNET C5 A18 P5 P9 RxUSB P0B0 RxUSB B5 A15 P6 P10 TxUSB P0B1 TxUSB A5 B15 P7 P11 RxCAN P0B2 RxCAN D6 A14 P8 P12 RxCAN P0B3 TxCAN C6 B14 P10 P13

CLK24M CLK24M CLK24M E12 B12 P124 P38

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

PWM0H P3A0 P0D0 E6 A8 P21 P23 PWM0L P3A1 P0D1 E5 B8 P23 P24 PWM1H P3A2 P0D2 C2 B6 P24 P25 PWM1L P3A3 P0D3 C1 A5 P25 P26 PWM2H P3A4 P0D4 D2 B5 P26 P27

82

PWM2L P3A5 P0D5 D1 A4 P27 P28 PWMenb P3A6 P0D6 E4 B4 P28 P30 PHT1Z P3A7 P0D7 E3 A3 P30 P31 PHT1A P3B0 P0D8 G2 C1 P31 P32 PHT1B P3B1 P0D9 G1 C2 P32 P33 PHT0A P3B2 P0D10 H5 D1 P33 P34 PHT0B P3B3 P0D11 J6 D2 P35 P35 AMP0 P3B4 P0D12 H4 E1 P36 P39 AMP1 P3B5 P0D13 H3 E2 P40 P40 AMP2 P3B6 P0D14 H2 F2 P41 P41 AMP3 P3B7 P0D15 H1 G1 P44 P43 eeSK P0C3 P1D0 C10 B9 P20 P22 eeCS P0C2 P1D1 D10 A9 P18 P21 eeDI P0C1 P1D2 F10 B10 P17 P20 eeDO P0C0 P1D3 E10 B11 P15 P19 ssCK P0B7 P1D4 E8 A11 P14 P17 ssCS P0B6 P1D5 E7 A12 P13 P16 ssDI P0B5 P1D6 A6 B13 P12 P15 ssDO P0B4 P1D7 B6 A13 P11 P14

ppCLK P3C0 P1D8 K4 G2 P46 P44 ppDIN P3C1 P1D9 K3 K1 P47 P45 TxD P3C2 P1D10 K2 K2 P50 P46 RxD P3C3 P1D11 K1 L1 P51 P48

tstLED P3C4 P1D12 L5 L2 P52 P49 stsLED P3C5 P1D13 L4 M1 P53 P50 RxLED P3C6 P1D14 L3 M2 P55 P51 TxLED P3C7 P1D15 L2 N1 P56 P52

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

xPA0 P2A0 P2D0 AA3 N2 P59 P53 xPA1 P2A1 P2D1 Y4 T1 P60 P54 xPA2 P2A2 P2D2 AA4 T2 P63 P56 xPA3 P2A3 P2D3 AB4 U2 P68 P57 xPC0 P2A4 P2D4 W5 V1 P69 P58 xPC1 P2A5 P2D5 Y5 V2 P70 P59 xPC2 P2A6 P2D6 AA5 W1 P73 P60 xPC3 P2A7 P2D7 AB5 W2 P74 P61

-- P2B0 P2D8 V6 Y1 P76 P64 -- P2B1 P2D9 V7 Y2 P77 P66 -- P2B2 P2D10 W6 AA3 P78 P68

mCS P2B3 P2D11 Y6 AB4 P79 P69 mA15 P2B4 P2D12 V9 AA4 P80 P70 mA16 P2B5 P2D13 V10 AB5 P82 P71 mA17 P2B6 P2D14 W10 AA5 P83 P74 mA18 P2B7 P2D15 Y10 AA6 P84 P75 CS0 P2C0 ADC0 AA10 AB8 P85 P76

83

SDIN0 P2C1 ADC1 AB10 AA8 P86 P77 CS1 P2C2 ADC2 U10 AB9 P87 P78

SDIN1 P2C3 ADC3 U11 AA9 P89 P79 SCLK P2C4 ADC4 V11 AB10 P90 P80 CS2 P2C5 ADC5 W11 AA10 P92 P81

SDOUT P2C6 ADC6 Y11 AB11 P93 P82 LDAC P2C7 ADC7 AA11 AA11 P95 P83

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

xPB0 P1A0 PxA0 M1 M3 P135 P85 xPB1 P1A1 PxA1 M2 M4 P132 P86 yPB2 P1A2 PxA2 M3 N3 P131 P87 yPB3 P1A3 PxA3 M4 N4 P130 P88 yPB1 P1A4 PxA4 M5 T4 P129 P91 yPB4 P1A5 PxA5 M6 T5 P128 P92 yPB0 P1A6 PxA6 N1 U3 P127 P93 yPB5 P1A7 PxA7 N2 U4 P125 P94 yPB6 P1B0 PxB0 U13 V3 P119 P95 yPB7 P1B1 PxB1 V13 V4 P118 P96 xPB2 P1B2 PxB2 W13 W3 P116 P97 xPB3 P1B3 PxB3 Y13 W4 P113 P98 xPB4 P1B4 PxB4 AA13 Y3 P112 P100 xPB5 P1B5 PxB5 AB13 Y4 P96 P101 yPC3 P1B6 PxB6 U12 Y5 P97 P102 yPC2 P1B7 PxB7 V12 W5 P98 P103 yPC1 P1C7 PxC0 AB17 W11 P108 P113 yPC0 P1C6 PxC1 AA17 Y11 P107 P112 yPA0 P1C5 PxC2 Y17 W10 P105 P111 yPA1 P1C4 PxC3 W17 Y10 P104 P110 yPA2 P1C3 PxC4 AB18 W9 P103 P107 yPA3 P1C2 PxC5 AA18 W8 P102 P106 xPB6 P1C1 PxC6 Y18 W6 P100 P105 xPB7 P1C0 PxC7 W18 Y6 P99 P104

84

eM_DEMO 模組

eM_DEMO 模組的電路配置圖如下

eM_USB 模組

數字型 LED

0 1 2 34 5 6 78 9 A BC D E F

燈號型 LED

44 鍵盤

ADC0 ADC1 DAC0 DAC1

LED 選擇KEY 選擇

其中

1eM_DEMO模組的基本功能包括 A將 xPAxPBxPC等 16個 IO訊號引出控制 LED和鍵盤電路 B將 ADDA訊號引出並放大成+-10V的工作範圍 2LED和鍵盤可以選擇三種模式由 LED和 KEY 兩組開關作選擇圖示如下

模式1

0123

模式2 模式3

0 1 2 34 5 6 78 9 A BC D E F

0123

3模式14鍵輸入並搭配 16點的 LED燈號顯示其中 16點 LED分別對映到 xPA[0~3]xPB[0~7]和 xPC[0~3] 4組按鍵分別對映到 xPC[0~3] 4模式24鍵輸入並搭配四個 7段式數字顯示其中 數字顯示由 xPA[0~3]作數字掃瞄而由 xPB[0~7]作 7段式 LED控制 4組按鍵 分別對映到 xPC[0~3] 5模式316鍵輸入並搭配四個 7段式數字顯示其中 數字顯示由 xPA[0~3]作數字掃瞄而由 xPB[0~7]作 7段式 LED控制 16組按鍵由 xPA[0~3]作鍵盤掃瞄而由 xPC[0~3]作鍵盤讀取 6根據VHDL與數位邏輯設計的章節其中 第 1章至 10章的實驗採用模式1而 第 11章實驗採用模式2而 第 12章之後的實驗都採用模式3

85

FPGA UCF 定義

eM_3S1K 模組

NET CLK LOC = B12

NET XAlt0gt LOC = N2

NET XAlt1gt LOC = T1

NET XAlt2gt LOC = T2

NET XAlt3gt LOC = U2

NET XBlt0gt LOC = M3

NET XBlt1gt LOC = M4

NET XBlt2gt LOC = W3

NET XBlt3gt LOC = W4

NET XBlt4gt LOC = Y3

NET XBlt5gt LOC = Y4

NET XBlt6gt LOC = W6

NET XBlt7gt LOC = Y6

NET XClt0gt LOC = V1

NET XClt1gt LOC = V2

NET XClt2gt LOC = W1

NET XClt3gt LOC = W2

NET YAlt0gt LOC = W10

JP4 接頭

NET YAlt1gt LOC = Y10

NET YAlt2gt LOC = W9

NET YAlt3gt LOC = W8

NET YBlt0gt LOC = U3

NET YBlt1gt LOC = T4

NET YBlt2gt LOC = N3

NET YBlt3gt LOC = N4

NET YBlt4gt LOC = T5

NET YBlt5gt LOC = U4

NET YBlt6gt LOC = V3

NET YBlt7gt LOC = V4

NET YClt0gt LOC = Y11

NET YClt1gt LOC = W11

NET YClt2gt LOC = W5

NET YClt3gt LOC = Y5

在光碟片中 RFFPGAVHDLDEMOBIT3S1K 裡有 VHDL 與數位邏輯設計書本範例原始檔與合成檔

86

eM_3S50 模組

NET CLK LOC = P124

NET XAlt0gt LOC = P59

NET XAlt1gt LOC = P60

NET XAlt2gt LOC = P63

NET XAlt3gt LOC = P68

NET XBlt0gt LOC = P135

NET XBlt1gt LOC = P132

NET XBlt2gt LOC = P116

NET XBlt3gt LOC = P113

NET XBlt4gt LOC = P112

NET XBlt5gt LOC = P96

NET XBlt6gt LOC = P100

NET XBlt7gt LOC = P99

NET XClt0gt LOC = P69

NET XClt1gt LOC = P70

NET XClt2gt LOC = P73

NET XClt3gt LOC = P74

NET YAlt0gt LOC = P105

JP4 接頭

NET YAlt1gt LOC = P104

NET YAlt2gt LOC = P103

NET YAlt3gt LOC = P102

NET YBlt0gt LOC = P127

NET YBlt1gt LOC = P129

NET YBlt2gt LOC = P131

NET YBlt3gt LOC = P130

NET YBlt4gt LOC = P128

NET YBlt5gt LOC = P125

NET YBlt6gt LOC = P119

NET YBlt7gt LOC = P118

NET YClt0gt LOC = P107

NET YClt1gt LOC = P108

NET YClt2gt LOC = P98

NET YClt3gt LOC = P97

在光碟片中 RFFPGAVHDLDEMOBIT3S200 裡有VHDL與數位邏輯設計書本範例原始檔與合成檔

87

eM_95XL 模組

NET CLK LOC = SPIN38

NET XAlt0gt LOC = SPIN53

NET XAlt1gt LOC = SPIN54

NET XAlt2gt LOC = SPIN56

NET XAlt3gt LOC = SPIN57

NET XBlt0gt LOC = SPIN85

NET XBlt1gt LOC = SPIN86

NET XBlt2gt LOC = SPIN97

NET XBlt3gt LOC = SPIN98

NET XBlt4gt LOC = SPIN100

NET XBlt5gt LOC = SPIN101

NET XBlt6gt LOC = SPIN105

NET XBlt7gt LOC = SPIN104

NET XClt0gt LOC = SPIN58

NET XClt1gt LOC = SPIN59

NET XClt2gt LOC = SPIN60

NET XClt3gt LOC = SPIN61

NET YAlt0gt LOC = SPIN111

JP4 接頭

NET YAlt1gt LOC = SPIN110

NET YAlt2gt LOC = SPIN107

NET YAlt3gt LOC = SPIN106

NET YBlt0gt LOC = SPIN93

NET YBlt1gt LOC = SPIN91

NET YBlt2gt LOC = SPIN87

NET YBlt3gt LOC = SPIN88

NET YBlt4gt LOC = SPIN92

NET YBlt5gt LOC = SPIN94

NET YBlt6gt LOC = SPIN95

NET YBlt7gt LOC = SPIN96

NET YClt0gt LOC = SPIN112

NET YClt1gt LOC = SPIN113

NET YClt2gt LOC = SPIN103

NET YClt3gt LOC = SPIN102

在光碟片中 RFFPGAVHDLDEMOSVF95288XL 裡有VHDL與數位邏輯設計書本範例原始檔與合成

檔案

88

eM_FPGA 模組

NET CLK LOC = E12

NET XAlt0gt LOC = AA3

NET XAlt1gt LOC = Y4

NET XAlt2gt LOC = AA4

NET XAlt3gt LOC = AB4

NET XBlt0gt LOC = M1

NET XBlt1gt LOC = M2

NET XBlt2gt LOC = W13

NET XBlt3gt LOC = Y13

NET XBlt4gt LOC = AA13

NET XBlt5gt LOC = AB13

NET XBlt6gt LOC = Y18

NET XBlt7gt LOC = W18

NET XClt0gt LOC = W5

NET XClt1gt LOC = Y5

NET XClt2gt LOC = AA5

NET XClt3gt LOC = AB5

NET YAlt0gt LOC = Y17

JP4 接頭

NET YAlt1gt LOC = W17

NET YAlt2gt LOC = AB18

NET YAlt3gt LOC = AA18

NET YBlt0gt LOC = N1

NET YBlt1gt LOC = M5

NET YBlt2gt LOC = M3

NET YBlt3gt LOC = M4

NET YBlt4gt LOC = M6

NET YBlt5gt LOC = N2

NET YBlt6gt LOC = U13

NET YBlt7gt LOC = V13

NET YClt0gt LOC = AA17

NET YClt1gt LOC = AB17

NET YClt2gt LOC = V12

NET YClt3gt LOC = U12

在光碟片中 RFFPGAVHDLDEMOBIT2V250 裡有VHDL與數位邏輯設計書本範例原始檔與合成檔

89

Page 24: RFFPGA 直流馬達實驗手冊juniortek.com.tw/program/manual/RF-DC-mal.pdf · em_demo模組 em_dcm 直流伺服馬達 dc電源 rffpga 系統的直流馬達實驗規劃 其中包括:

sτ +1

KmVc ω 其中 τ一階系統的時間常數 Km一階系統的穩態增益

採用兩階系統的分析方式雖然會比較精細但是用一階系統來分析則可簡化所有的設計

過程因為這裡的實驗重點是邏輯設計所以在本章中我們都用一階系統作分析

系統響應的要求

就控制系統而言最重要的需求就是系統響應包括

穩態特性通常以穩態誤差為指標即是穩態時系統輸出和輸入之間的差異 暫態特性通常以上升時間(Rise Time)和過越比率(Overshoot)為指標

一個理想中的伺服控制系統其系統響應應該是

1穩態誤差為 0即馬達輸出將追隨輸入作變化沒有誤差 2過越比例為 0即馬達輸出絕對不會產生衝過頭的現象 3上升時間為 0即馬達輸出隨時追上輸入命令不會有控制上的延遲現象

當然這是太理想了一個合理的伺服控制系統應該是

1穩態誤差越小越好最好為 0 2過越比例越小越好最好為 0 3上升時間越短越好當然無法為 0但是盡力就是了

速度的回授控制

回授控制的目的就是為了改善系統響應以一階系統代表的馬達控制為例

sτ+1

KmVc ω

在步階響應(Step Response)時其特性如下

1穩態誤差由 Km決定 2過越比例為 0 3上升時間即是其時間常數(τ)

如果用比例控制器(P 控制器)作速度回授的控制則控制方塊圖如下

sτ+1

KmVc ωKp

err

P控制器 直流馬達ωc

速度回授

速度命令 + 速度響應-

24

其中

1速度命令並不直接控制馬達的驅動電壓而是 A將速度命令和速度回授相比找出其誤差訊號 err B依誤差訊號來控制驅動電壓 誤差越大則驅動電壓越高 誤差越小則驅動電壓越低 誤差為負則驅動電壓也為負 其中的比例關係由 P控制器中的 Kp 來調整 2經由數學分析後其步階響應的特性為 A穩態誤差變成 1(1+kpkm)如果 kpkmgtgt1則穩態誤差將趨近於 0 B過越比例仍為 0 C上升時間即是由τ變成τ(1+kpkm)所以上升時間將變短 3換句話說只要 Kp值夠大不論是穩態誤差或是上升時間都會大幅改善

理論上P控制器的增益是越高越好最好是無限大但是實際上是有限制的原因是

1馬達的開環路特性是兩階系統而非一階系統一階系統只是簡化後的結果 2當兩階系統作高增益的回授控制時當增益過高時會產生極嚴重的過越現象使得

馬達產生巨幅震動而難以控制

所以 P控制器的增益雖然是越高越好但調整時仍要小心維持(過越比例為 0)的條件

轉角的回授控制

做為馬達的速度控制P控制器的效果不錯但是如果將 P控制器應用到馬達的轉角控

制其特性就不太理想圖示如下

sτ+1

KmVc ωKp

err

P控制器 直流馬達

θc

轉角回授

轉角命令 + 轉角響應-

s1 θ

其中

1從馬達的速度到轉角之間具有積分特性即 馬達的轉角是馬達速度的積分結果而 馬達的速度是馬達轉角的微分結果而 2其中的積分特性使得整個系統由一階特性變成兩階特性在兩階系統中當設定高

增益時會產生極嚴重的過越現象使得馬達產生巨幅震動而難以控制 3在 P控制器增益無法提高的狀況之下轉角控制效果將無法獲得改善

雖然 P控制器在轉角控制上的效果並不好但是在控制系統中還是有許多法寶可以選擇

25

其中 PD 控制器就是簡單又有效的一個好方法

從表面上來看PD 控制器比 P控制器多了一個微分項就數學上來看這微分項提供了

一個新零點(Zero)可以調整根軌跡圖的走向就實驗上來說這微分項提供了控制器

的預測功能說明如下

sτ+1

KmVc ωKp+sKd

err

P控制器 直流馬達

θc

轉角回授

轉角命令 + 轉角響應-

s1 θ

1轉角控制中 P控制器的問題是在嚴重的過越現象原因是在 P控制器的作用下只有當回授超過命令時才能做出「負向」的控制但這時已經來不及了因為積分器

中已經累積了過多的能量而無法立刻消失使得馬達轉角衝過了頭 2解決之道就是在回授超過命令之前就必須做出「負向」的控制使得積分器累積

的能量逐步減弱在到達目標時才能立刻煞車才能解除過越現象 3而微分項就是這個預測量因為當誤差量越來越小時其微分項是負值雖然微分

項(D)是負值 當誤差量(P)很大時(P+D)的結果還是正值所以還是「正向」控制 當誤差量(P)漸小時(P+D)的結果變成負值才會開始「負向」控制 換句話說在誤差為 0之前即可啟動負向控制產生煞車作用使得馬達提前減速

而即時停止在目標點上自然就解除過越現象了

所以在 PD 控制器中有兩項調整量其中

1Kp增益提供比例控制部分的增益而 Kd增益提供微分控制部分的增益 2Kp增益控制馬達的趨近速度主要影響的是上升時間 3Kd增益控制馬達的提前煞車主要影響的是過越比例 4在兩者搭配下就有機會得到 很快很短的上升時間同時也 不會產生過越現象

PD 控制器的執行

依據 PD 控制器公式可以建立以數位執行的 PD 控制器如下圖所示

cmdKp

fdk

+

-

err

old

+-

Kd

Z-1

out+

+

26

其中

1利用差分公式來取代 PD控制器中的微分公式定義如下 s ==gt (1-Z-1)DT 其中對映的變數包括 s 微分項 Z-1延遲一個抽樣週期 DT抽樣週期單位為 sec 2就執行面而言Z-1是延遲一個抽樣週期也就是以抽樣週期所控制的暫存器 3在上圖中將命令(cmd)和回授(fdk)相減後得到誤差值(err)再將 err延遲一個抽樣週期成為 old所以(err-old)DT即是微分項

4原始的微分控制公式為(err-old)DTKd必須先除再乘但是因為 DT和 Kd 都是常

數可以預先將 Kd修正成 Kd=(KdDT)那麼公式將修正為(err-old)Kd就只需要一個乘法而不需要除法了

同樣的 PD 控制器可以用許多不同的方法作執行包括

1以軟體方式執行例如在 DSP核心中以組合語言撰寫控制模組 2以硬體方式執行例如在 FPGA中直接設計邏輯電路 3以微碼方式執行以微碼作順序控制執行硬體運算工作

這裡先提供用組合語言撰寫的程式模組作為設計參考其他兩種方法將在後續的實驗中

再陸續作說明

模組程式範例PD_controlasm

local cmd R0 IP gnd 輸入點位置命令(可忽略) local fdk R1 IP gnd 輸入點位置回授(可忽略) local out R2 OP 輸出點用以控制速度迴路 local kp R3 256 參數增益 kp10=256 local kd R4 0 參數增益 kd10=256 local err R5 0 內部變數 local old R6 0 內部變數 local gnd R7 0 無輸入時的短路點 data 8 模組變數區長度 initial 開機啟動程序 WR out0 WR old0 RET out=old=0 timer 即時控制程序 RD (cmd) SUB (fdk) WR err MUL kp SFR 8 P=(cmd-fdk)kp256 RDS err SUBX old MUL kd SFR 8 D=(err-old)kd256 ADDS WR out out=P+D RET

27

其中

1PD控制模組中對外的界面變數包括 cmd命令的輸入點 fdk回授的輸入點 out控制的輸出點 2內部參數包括 Kp比例控制增益其中 10=256所以乘完後還需要再右移 8-bit Kd微分控制增益其中 10=256所以乘完後還需要再右移 8-bit 3內部變數包括 err臨時性的變數用以儲存誤差值的計算結果 old儲存性的變數用以儲存上一次抽樣控制時的 err值 4模組程式分成三部分包括 變數宣告local和data所宣告的部分 初值設定initial程序中先將 out和 old設定為 0 即時控制timer程序中依序執行 PD控制器中的每個步驟

控制目標的選擇

從字面上來看速度控制就是控制馬達的速度轉角控制就是控制馬達的轉角沒什麼

好討論的但是實際上確有許多問題第一的問題就是什麼是速度和轉角馬達的速

度和轉角如果不作量測如何得知

既然在量測中取得了速度和轉角資料那麼我們所控制的到底是物理學上的速度和轉

sτ+1

KmVc ωKp+sKd

err

P控制器 直流馬達

θc

轉角回授

轉角命令 + 轉角響應-

s1 θ

KxANG

轉角量測

角還是量測上的速度和轉角以下圖為例

其中

1以轉角量測裝置量測轉角例如裝在馬達軸端的光電盤和解碼電路 2轉角的量測輸出是 ANG而 ANG和物理轉角θ之間有 Km的增益關係 3只要 Km值不是 1那麼系統就不再是單位回授 4如果 Km還有非線性或失真現象那麼控制結果也將有非線性或失真現象

這些問題混雜起來會使得控制系統的分析變得更複雜如果要簡單處理就要認同現

實環境直接以量測結果為控制目標如下圖所示

28

sτ+1

KmVc ωKp+sKd

err

P控制器 直流馬達

θc

轉角回授

+-

s1 θ Kx

ANG轉角量測

其中

1直接以量測結果為控制目標將全系統還原成標準的單位回授控制 2所有的非線性或失真現象都進入開環路討論屬於可以補償的部分 3但是控制結果就是「量測上的轉角」而「物理學上的轉角」

量測誤差的問題

轉角θ

量測ANG

對於量測誤差而言最明顯的問題就是量化誤差圖示如下

其中

1以 DCM模組中的光電盤為例精度為每圈 500格經由乘四解碼計數後其等效

精度增加為每圈 2000格 2比(12000)圈更精密的部分都無法響應換句話說振幅越大的控制其相對誤差越

小而振幅越小的控制其相對誤差越大例如 當振幅為(12)圈時其控制誤差量為 01而 當振幅為(120)圈時其控制誤差量為 1 這是標準的的非線性現象

量化誤差不只影響穩態上的精度還會造成非線性的震動問題圖示如下

t

誤差值

+1

-1

其中

1由於量化誤差的問題只有當誤差超過+1或是-1時才會真正偵測到誤差也才

29

會施加控制量作補償 2所以穩態時的誤差將在+1-1之間擺動造成微幅的振動 3量化誤差越大震動越明顯而量化誤差很小時通常不易察覺出震動現象

微分量的計算

伺服系統中有兩處需要用到微分計算包括

1PD控制器中誤差微分量的計算 2速度控制器中速度回授值的量測

在理論上微分公式是(dXdt)相當於 dXdt = (X(n)-X(n-1))DT (當 DT趨近於 0時)

所以當微分計算中的抽樣週期(DT)越短時微分的計算值將越接近理論值但是事實上

卻非如此以下圖為例

t

X

DTDX

其中

1當 X值為等速度運動時其微分量就是其斜率相當於 DXDT 2DT是微分計算中的抽樣週期理論上越短越好但是由於 DX本身的量化誤差

使得這個原則不再成立例如當斜率為 7394時 若 DT=1000則 DX=7394而 DXDT=7394 若 DT=100 則 DX=739 而 DXDT=739 若 DT=10 則 DX=73 而 DXDT=73 若 DT=1 則 DX=7 而 DXDT=7 3換句話說當抽樣週期越短時DX的量化誤差將越明顯而造成微分計算上更嚴

重的誤差

在 DCM 模組中速度量測的量化誤差分析如下

1馬達上的光電盤精度為每圈 500格經過乘四解碼後等效精度為每圈 2000格 2當馬達轉速為 1200RPM而抽樣頻率為 1KHz時對映的速度量測值為 1200(圈分)2000(格圈)60(秒分)1000(DT秒) = 40(格DT) 3換句話說1200RPM的轉速對映到 40的速度量測值即速度單位=30RPM若最

高轉速為 3000RPM則在+-3000RPM的速度範圍內其量化誤差為 05相當於8-bit的 ADC轉換器精度

4對映不同的抽樣頻率的量化誤差表列如下

30

光電盤精度 最高轉速 抽樣頻率 速度單

速度範圍 量化誤差

500PPR 3000RPM 1KHz 30RPM +-100 05 500PPR 3000RPM 2KHz 60RPM +-50 1 500PPR 3000RPM 4KHz 120RPM +25 2

過溢現象的處理

輸入

輸出

32767

-32768

整數運算都有數值範圍限制以 16-bit 整數而言輸入輸出的關係如下

其中

1當超過正負數的上下限時數值會正負顛倒例如 +32768 將會視為 -32768作處理而 +32769 將會視為 -32768作處理依此類推 2換句話說16-bit的整數運算只有在+-32767之間是線性的對映關係而超過這個範圍就是非線性的對映關係

3不但如此還因為正負顛倒的現象使得原來設計的負回授控制將變為正回授控制

而產生非線性的震盪現象 4換句話說只要計算上稍一不慎就會使得原先穩定的系統產生不穩定的震盪結果

為了避免過溢現象所造成的不穩定問題通常控制系統中會利用飽和處理作改善圖示

如下

輸入

輸出

lmtH

lmtL

31

其中

1當超過計算的上限時將固定設為上限值處理而當超過計算的下限時也將固定

設為下限值處理 2這時的整數運算只有在上下限之間是線性的對映關係而超過這個範圍將還是非線

性的對映關係 3雖然如此但是因為沒有正負顛倒的現象所以不再會有負回授變為正回授的問題

而避免了非線性的震盪現象 4換句話說飽和處理是針對過溢現象的妥協處理方案雖然不完全理想但是是可

接受的最佳選擇

下面是對映的組合語言範例

RD x x為輸入端 MIN lmtH 取得 x和 lmtH中的較小值即是作上限保護的工作 MAX lmtL 取得 x和 lmtL中的較大值即是作下限保護的工作 WR y Y為輸出端 其中

1組合語言中提供MAX和MIN的計算其中 MIN lmtH 比較 AX暫存器和 lmtH而將較低值存入 AX暫存器中 MAX lmtL 比較 AX暫存器和 lmtH而將較高值存入 AX暫存器中 2所以直接可用MIN指令作上限保護而以MAX指令作下限保護兩者合併後即是

完整的飽和處理結果

飽和處理通常應用在高位數轉成低位數的場合例如32-bit轉換成16-bit或是16-bit

轉換成 12-bit 等等例如在本實驗中所有的運算都是以 16-bit 整數作處理但是到

PWM 驅動級輸出時卻要轉換成 12-bit精度的 PWM 命令所以必須先用飽和處理以避免

過溢現象造成的不穩定問題

32

61 實驗 1-開迴路的電壓控制 實驗說明以電壓直接控制轉速的開迴路特性可簡化為一階系統處理方塊圖如

sτ+1

v km ωm

其中V 送給驅動器的 PWM電壓命令

ωm馬達的轉動速度可由處理 photo encoder信號所得的位置微分而得 km一階系統的穩態增益 τ一階系統的時間常數即步階響應中的上升時間

為了觀測直流馬達的開環路特性建立下面的測試方塊圖

其中

1所使用的模組包括 FG1方波產生器產生所需的步階測試波形 FT1馬達模擬以一階系統的低通濾波器來執行 IO1光電盤的回授處理可同時取得轉角和速度的量測值 IO2PWM電壓驅動直接驅動直流馬達作控制 Led四位數字七段顯示模組顯示波形信號資料 2測試目標有兩項(P 參數設定欄)包括 A調整方波命令控制直流馬達作開環路的 PWM電壓控制 B調整馬達模擬參數使模擬結果和實驗結果相符以確認開環路特性

33

實驗畫面顯示如下

測試一 開環路的電壓控制 記錄頻道 CH1電壓命令Y1=-300DY=500 CH2模擬速度Y2=-100DY=500 CH3馬達速度Y3=100DY=50 CH4馬達轉角Y4=300DY=50000 實驗參數 FG1kAMP=256電壓命令的測試振幅 FG1kFRQ=150電壓命令的測試頻率 FT1DT =10 馬達模擬參數 FT1KA =500馬達模擬參數

其中

1用示波器功能記錄四個頻道其中 CH2和 CH3重疊顯示以比較模擬速度和量測

速度之間的差異 2由於 Km 不等於 1所以必須調整 CH3的 Y軸單位才能使得 CH2和 CH3的穩態響應部分重疊

3實驗時可以改變 FG1的參數以調整測試方波的振幅和頻率 4可以調整 FT1的參數使得 CH2和 CH3的暫態響應部分重疊

根據實際的測試結果分析如下

2馬達模擬的參數調整到 DT=10而 KA=500根據公式 τ = 40961000dtka 所以上升時間(τ)為 0082秒或是 82ms 3CH2CH3的 Y軸單位並不一致顯然 Km 不等於 1經計算確認 Km=0098

對應之 plc檔程式說明(exp_pwmplc) echo off 畫面顯示開始

run dsp 0 選擇 DSP1

run stop run reset 既有程式停止

run testDCMmem 下載指定程式

das 1 ampfg1out 0 1024 PWM 波形 Volt 設定 DAS 頻道1

das 2 ampft1lp 0 1024 馬達模擬 Volt 設定 DAS 頻道2

das 3 ampio1spd 0 1024 馬達速度 Volt 設定 DAS 頻道3

das 4 ampio1ang 0 1024 馬達角度 Volt 設定 DAS 頻道4

plot select 0 設定示波器頁數

plot xunit 100000 0 設定示波器 X軸

plot yunit 1 500 -300 設定示波器 Y1 軸

34

plot yunit 2 500 -100 設定示波器 Y2 軸

plot yunit 3 50 100 設定示波器 Y3 軸

plot yunit 4 50000 300 設定示波器 Y4 軸

plot trigger 1 0 1 10 設定示波器觸發

plot scope 9 1 2 3 4 設定示波器顯示

module io2 設定 io2 模組

s cmd ampfg1out

module fg1 設定 fg1 模組

s kAmp 256 s kFrq 150

module ft1 設定 ft1 模組

s u ampfg1out s dt 10 s ka 500

module io3 設定 io3 模組

s led ampfg1out

module 回復預設模組

run 1khz 設定抽樣頻率為 4KHz

run start DSP 開始執行

das stop pause 1 DAS 啟動 das start DAS 啟動

echo on 回復正常訊息顯示

使用者可視情況調整一階濾波器的 ka和 dt值使得 ch2和 ch3 兩組波形完全相符

以求得開迴路系統近似的一階轉移函數 CAI操控設計畫面規劃如下(EXP_PWMCAI) page 1 畫面設計

35

page 2 畫面設計 page 3 畫面設計

36

實測響應圖

訊 號 說 明 訊 號 說 明 ch1 方波產生器訊號 ch3 一階濾波器輸出信號 ch2 馬達角速度訊號 ch4 馬達角位置訊號

直流馬達之開迴路電壓控制響應圖

37

以邏輯分析功能觀測直流馬達之光電盤輸入與 PWM輸出信號

38

62 實驗 2-閉迴路的速度控制 實驗說明為了觀測閉迴路的速度控制響應建立下面的測試方塊圖

加入 PD控制後系統閉迴路的轉移函數經適度的簡化仍能約略以一階系統

處理方塊圖如下

sτ+1

u km ωm

其中

u 送給控制器的速度命令

ωm馬達的轉動速度可由處理 photo encoder 信號所得的位置微分而得

km一階系統的穩態增益 τ一階系統的時間常數即步階響應中的上升時間

方塊圖中的模組功能說明如下

1用 fg1 產生測試用的方波速度命令

2將方波速度命令和速度回授訊號送到 PD 控制器方塊中產生電壓控制訊號再透

過 io2 模組將訊號送出給伺服介面

3用 ft1 建立對照用的一階系統可用 IIR1濾波器方塊產生

4將方波命令產生速度命令再觀測 PHT(io1)上的速度值 spd

5調整 IIR1濾波器的參數使得兩組波形完全相符這時 IIR1濾波器就是閉迴路

速度控制的特性其中 km 為增益而τ為上升時間(單位為 sec)

6增益 km 可從示波器中作簡單計算而上升時間(τ=40964000dtka)

7 Led四位數字七段顯示模組顯示波形信號資料

39

對應之 plc檔程式說明(exp_speedplc) echo off 畫面顯示開始

run dsp 0 選擇 DSP1

run stop run reset 既有程式停止

run testDCMmem 下載指定程式

das 1 ampfg1out 0 1024 PWM 波形 Volt 設定 DAS 頻道1

das 2 ampft1lp 0 1024 馬達模擬 Volt 設定 DAS 頻道2

das 3 ampio1spd 0 1024 馬達速度 Volt 設定 DAS 頻道3

das 4 ampio1ang 0 1024 馬達角度 Volt 設定 DAS 頻道4

plot select 0 設定示波器頁數

plot xunit 100000 0 設定示波器 X軸

plot yunit 1 50 -300 設定示波器 Y1 軸

plot yunit 2 50 -100 設定示波器 Y2 軸

plot yunit 3 50 100 設定示波器 Y3 軸

plot yunit 4 50000 300 設定示波器 Y4 軸

plot trigger 1 0 1 10 設定示波器觸發

plot scope 9 1 2 3 4 設定示波器顯示

module io2 設定 io2 模組

s cmd ampcn2out

module fg1 設定 fg1 模組

s kAmp 50 s kFrq 150

module cn2 設定 cn1 模組

s cmd ampfg1out s fdk ampio1spd s kp 0x4000

module ft1 設定 ft1 模組

s u ampfg1out s dt 2 s ka 320

module io3 設定 io3 模組

s led ampfg1out

module 回復預設模組

run 1khz 設定抽樣頻率為 4KHz

run start DSP 開始執行

das stop pause 1 DAS 啟動 das start DAS 啟動

echo on 回復正常訊息顯示

CAI操控設計畫面規劃如下(EXP_speedCAI)

40

page 1 畫面設計 page 2 與 page 3 畫面設計與實驗一 page 2 與 page 3相同畫面 page 4 畫面設計

41

方塊的參數設定 使用者可視情況調整一階濾波器的 ka和 dt值使得 ch2和 ch3 兩組波形完全相符

以求得此一閉迴路系統近似的一階轉移函數或調整 PD控制器中的 kp和 kp值以調整系統之響應 實測響應圖

訊 號 說 明 訊 號 說 明 ch1 方波產生器產生之速度命令 ch3 一階濾波器輸出信號 ch2 馬達角速度訊號 ch4 馬達角位置訊號

42

直流馬達之閉迴路速度控制響應圖

43

63 實驗 3-閉迴路的位置控制 實驗說明為了觀測閉迴路的位置控制響應將直流馬達的回授改為位置訊號

建立下面的測試方塊圖 方塊圖中的模組功能說明如下

1用 fg1產生測試用的方波位置命令 2將方波位置命令和位置回授訊號送到 PD控制器方塊中產生電壓控制訊號再透過 io2模組將訊號送出到伺服介面驅動馬達轉動

對應之 plc檔程式說明(exp_angleplc) echo off 畫面顯示開始

run dsp 0 選擇 DSP1

run stop run reset 既有程式停止

run testDCMmem 下載指定程式

das 1 ampfg1out 0 1024 PWM 波形 Volt 設定 DAS 頻道1

das 2 ampft1lp 0 1024 馬達模擬 Volt 設定 DAS 頻道2

das 3 ampio1spd 0 1024 馬達速度 Volt 設定 DAS 頻道3

das 4 ampio1ang 0 1024 馬達角度 Volt 設定 DAS 頻道4

plot select 0 設定示波器頁數

plot xunit 100000 0 設定示波器 X軸

plot yunit 1 1000 -300 設定示波器 Y1 軸

plot yunit 2 1000 -100 設定示波器 Y2 軸

plot yunit 3 20 100 設定示波器 Y3 軸

plot yunit 4 1000 300 設定示波器 Y4 軸

plot trigger 1 0 1 10 設定示波器觸發

44

plot scope 9 1 2 3 4 設定示波器顯示

module io2 設定 io2 模組

s cmd ampcn2out

module fg1 設定 fg1 模組

s kAmp 1000 s kFrq 75

module cn2 設定 cn1 模組

s cmd ampfg1out s fdk ampio1ang s kp 0x300 s kd 0x4000

module ft1 設定 ft1 模組

s u ampfg1out s dt 2 s ka 320

module io3 設定 io3 模組

s led ampfg1out

module 回復預設模組

run 1khz 設定抽樣頻率為 4KHz

run start DSP 開始執行

das stop pause 1 DAS 啟動 das start DAS 啟動

echo on 回復正常訊息顯示

CAI操控設計畫面規劃如下(EXP_angleCAI) page 1 畫面設計

45

page 2 與 page 3 畫面設計與實驗一 page 2 與 page 3相同畫面 page 4 畫面設計與實驗二 page 4 畫面 方塊的參數設定 延續上一實驗的說明使用者可以調整 PD控制器中的 kp和 kd值以調整系統之

響應 實測響應圖

訊 號 說 明 訊 號 說 明 ch1 方波產生器產生之位置命令 ch3 馬達角速度訊號 ch2 馬達角位置 ch4 Pd控制器輸出之電壓訊號

46

直流馬達之閉迴路位置控制響應圖

47

64 實驗 4-加減速的位置控制 實驗說明為避免方波命令的過於嚴苛在方波命令的輸出加入一加減速控制功

能方塊以減緩命令變化的幅度增加馬達運動的平順建立的測試方塊圖如下

方塊圖中的模組功能說明如下

1用 fg1產生測試用的方波位置命令 2將方波位置命令送到加減速控制方塊處理後產生新的位置命令再將新的位置命

令與位置回授訊號送到 PD控制器方塊中產生電壓控制訊號最後透過 io2模組將訊號送出到伺服介面驅動馬達轉動

對應之 plc檔程式說明(exp_accplc) echo off 畫面顯示開始

run dsp 0 選擇 DSP1

run stop run reset 既有程式停止

run testDCMmem 下載指定程式

das 1 ampfg1out 0 1024 PWM 波形 Volt 設定 DAS 頻道1

das 2 ampcn1out 0 1024 加速控制 Volt 設定 DAS 頻道2

das 3 ampio1spd 0 1024 馬達速度 Volt 設定 DAS 頻道3

das 4 ampio1ang 0 1024 馬達角度 Volt 設定 DAS 頻道4

plot select 0 設定示波器頁數

plot xunit 100000 0 設定示波器 X軸

plot yunit 1 2000 -300 設定示波器 Y1 軸

plot yunit 2 2000 -100 設定示波器 Y2 軸

plot yunit 3 50 100 設定示波器 Y3 軸

plot yunit 4 2000 300 設定示波器 Y4 軸

48

plot trigger 1 0 1 10 設定示波器觸發

plot scope 9 1 2 3 4 設定示波器顯示

module io2 設定 io2 模組

s cmd ampcn2out

module fg1 設定 fg1 模組

s kAmp 2000 s kFrq 150

module cn1 設定 cn1 模組

s cmd ampfg1out

module cn2 設定 cn2 模組

s cmd ampcn1out s fdk ampio1ang s kp 0x300 s kd 0x4000

module ft1 設定 ft1 模組

s u ampfg1out s dt 2 s ka 320

module io3 設定 io3 模組

s led ampfg1out

module 回復預設模組

run 1khz 設定抽樣頻率為 4KHz

run start DSP 開始執行

das stop pause 1 DAS 啟動 das start DAS 啟動

echo on 回復正常訊息顯示

CAI操控設計畫面規劃如下(EXP_accCAI) page 1 畫面設計

49

page 2 畫面設計與實驗一 page 2相同畫面 page 3 畫面設計與實驗二 page 4相同畫面

參數設定參考之前各實驗的說明可線上機動性的調整 PD控制器中的 kp和 kd值以調整系統之響應 實測響應圖

訊 號 說 明 訊 號 說 明 ch1 方波產生器產生之位置命令 ch3 馬達角位置 ch2 加減速模組輸出之位置命令 ch4 馬達角速度訊號

50

圖一 直流馬達經加減速控制後之閉迴路控制響應圖

51

65 實驗 5-正弦波的位置控制 實驗說明在本實驗中改變命令的波形由方波改變為正弦波並建立如下的測

試方塊圖與上一實驗相比較僅更改命令的波形產生方塊 方塊圖中的模組功能說明如下 1用 fg2產生測試用的弦波位置命令 2將弦波位置命令送到加減速控制方塊處理後產生新的位置命令再與 io1 讀入的位

置回授訊號送到 PD 控制器方塊中產生電壓控制訊號再透過 io2 模組將訊號送出到伺服介面驅動馬達轉動

對應之 plc檔程式說明(exp_sinplc) echo off 畫面顯示開始

run dsp 0 選擇 DSP1

run stop run reset 既有程式停止

run testDCMmem 下載指定程式

das 1 ampfg2out 0 1024 SIN 波形 Volt 設定 DAS 頻道1

das 2 ampcn1out 0 1024 加速控制 Volt 設定 DAS 頻道2

das 3 ampio1spd 0 1024 馬達速度 Volt 設定 DAS 頻道3

das 4 ampio1ang 0 1024 馬達角度 Volt 設定 DAS 頻道4

plot select 0 設定示波器頁數

plot xunit 100000 0 設定示波器 X軸

plot yunit 1 2000 -300 設定示波器 Y1 軸

plot yunit 2 2000 -100 設定示波器 Y2 軸

plot yunit 3 50 100 設定示波器 Y3 軸

plot yunit 4 2000 300 設定示波器 Y4 軸

plot trigger 1 0 1 10 設定示波器觸發

52

plot scope 9 1 2 3 4 設定示波器顯示

module io2 設定 io2 模組

s cmd ampcn2out

module fg2 設定 fg1 模組

s kAmp 2000 s kFrq 100

module cn1 設定 cn1 模組

s cmd ampfg2out

module cn2 設定 cn2 模組

s cmd ampcn1out s fdk ampio1ang s kp 0x300 s kd 0x4000

module ft1 設定 ft1 模組

s u ampfg2out s dt 2 s ka 320

module io3 設定 io3 模組

s led ampfg2out

module 回復預設模組

run 1khz 設定抽樣頻率為 4KHz

run start DSP 開始執行

das stop pause 1 DAS 啟動 das start DAS 啟動

echo on 回復正常訊息顯示

CAI操控設計畫面規劃如下(EXP_sinCAI) page 1 畫面設計

53

page 2 畫面設計 page 3 畫面設計與實驗二 page 4相同畫面

方塊的參數設定可調整 PD控制器中的 kp和 kd值以調整系統之響應 實測響應圖

訊 號 說 明 訊 號 說 明 ch1 弦波產生器產生之位置命令 ch3 馬達角位置訊號 ch2 加減速模組輸出之位置命令 ch4 馬達角速度訊號

54

直流馬達之閉迴路弦波加減速位置控制響應圖

55

7組合語言說明

本節將針對 DC馬達伺服控制實驗專用的程式模組進行功能與程式碼的說明其

有關於波形產生器與資料擷取模組等說明如下

SIN_waveasm 正弦波產生器 PWM_waveasm 方波產生器 IIR1_filterasm 一階濾波器 DAS4asm 資料蒐集模組

弦波產生器

此模組會產生週期性的正弦波方塊圖如下

outfrq

kBiasbias

ampkAmp

kFrqth

kThf=1TB

θ

A

其中

1正弦波有四個參數振幅(A)頻率(F)相位(θ)和偏移(B)其公式為 out = A sin(2πF t +θ) + B 2對於單純的正弦波產生器所對映的參數包括 kAmp 振幅值 kFrq 頻率值kFrq=655368000Hz其中 Hz的範圍為 0~4000例如 1000Hz =gt frq=8192 100Hz =gt frq=819 10Hz =gt frq=82 1Hz =gt frq=8 kTh 相角值0~255代表 0~360的相位當 th=0 時為正弦波 th=64 時為餘弦波 th=128時為反相波依此類推 kBias偏移值 3對於可調變的正弦波產生器其對映的輸入點為 amp 控制振幅的輸入點可產生調幅(AM)波形 frq 控制頻率的輸入點可產生調頻(FM)波形 th 控制相位的輸入點可產生調相(PM)波形 bias控制偏移的輸入點可產生雙頻混波(相加)波形 4若不使用調變功能時各個輸入點時的預設值為 amp 指向 kAmp 的位址 frq 指向 kFrq 的位址

56

th 指向 kTh 的位址 bias指向 kBias的位址

模組程式範例SIN_WAVEasm

local amp R0 IP kAmp 輸入點sin波的振幅 local frq R1 IP kFrq 輸入點sin波的頻率 local th R2 IP kTh 輸入點sin波的相角 local bias R3 IP kBias 輸入點sin波的中心偏移 local out R4 OP 輸出點sin波輸出 local tab R5 TP 表格指標指向 sin[256]的表格 local ang R6 內部變數相位角65536=360deg local kAmp R7 1000 參數振幅值 local kFrq R8 1000 參數頻率值=655368000Hz local kTh R9 0 參數相角值360deg=256 local kBias R10 0 參數偏移值 data 11 模組變數區長度及初值 initial 啟動程序 WR ang0 WR out0 ang=out=0 RET timer 即時控制程序(8KHz) RD ang ADD (frq) WR ang ang+=frq SFR 8 ADD (th) AND 255 ACC=sin(ang256+th) ADD tab WRH RDM table-look-up MUL (amp) SFR 12 ADD (bias) WR out out=ACCamp4096+bias RET table tab 256 sin[256]表格區10=4096 0 101 201 301 401 501 601 700 00~070deg 799 897 995 1092 1189 1285 1380 1474 08~0F 1567 1660 1751 1842 1931 2019 2106 2191 10~17 2276 2359 2440 2520 2598 2675 2751 2824 18~1F 2896 2967 3035 3102 3166 3229 3290 3349 20~27 3406 3461 3513 3564 3612 3659 3703 3745 28~2F 3784 3822 3857 3889 3920 3948 3973 3996 30~37 4017 4036 4052 4065 4076 4085 4091 4095 38~3F 4096 4095 4091 4085 4076 4065 4052 4036 40~4790deg 4017 3996 3973 3948 3920 3889 3857 3822 48~4F 3784 3745 3703 3659 3612 3564 3513 3461 50~57 3406 3349 3290 3229 3166 3102 3035 2967 58~5F

57

2896 2824 2751 2675 2598 2520 2440 2359 60~67 2276 2191 2106 2019 1931 1842 1751 1660 68~6F 1567 1474 1380 1285 1189 1092 995 897 70~77 799 700 601 501 401 301 201 101 78~7F 0 65435 65335 65235 65135 65035 64935 64836 80~87180deg 64737 64639 64541 64444 64347 64251 64156 64062 88~8F 63969 63876 63785 63694 63605 63517 63430 63345 90~97 63260 63177 63096 63016 62938 62861 62785 62712 98~9F 62640 62569 62501 62434 62370 62307 62246 62187 A0~A7 62130 62075 62023 61972 61924 61877 61833 61791 A8~A8 61752 61714 61679 61647 61616 61588 61563 61540 B0~B7 61519 61500 61484 61471 61460 61451 61445 61441 B8~BF 61440 61441 61445 61451 61460 61471 61484 61500 C0~C7270deg 61519 61540 61563 61588 61616 61647 61679 61714 C8~CF 61752 61791 61833 61877 61924 61972 62023 62075 D0~D7 62130 62187 62246 62307 62370 62434 62501 62569 D8~DF 62640 62712 62785 62861 62938 63016 63096 63177 E0~E7 63260 63345 63430 63517 63605 63694 63785 63876 E8~EF 63969 64062 64156 64251 64347 64444 64541 64639 F0~F7 64737 64836 64935 65035 65135 65235 65335 65435 F8~FF

就程式結構而言說明如下

timer 即時控制程序(8KHz) RD ang ADD (frq) WR ang ang+=frq SFR 8 ADD (th) AND 255 ACC=sin(ang256+th) ADD tab WRH RDM table-look-up MUL (amp) SFR 12 ADD (bias) WR out out=ACCamp4096+bias RET

1基本上我們以查表法計算 sin()其輸入θ的範圍為 0~255對映到 0~360deg其輸出 sin(θ)的範圍為+-4096對映到+-10的範圍

2建立一個內部變數 ang其範圍為 0~65535對映到 0~360的相位角 3每個timer程序都執行 ang+=frq的動作更新目前的相位角接著依照 ang的相位角查表得到 sin(ang256+th)值

4由於表格長度為 256-word所以必須將 ang256才能得到正確的對映關係而 th範圍為 0~255所以不需要像 ang一般的做額外處理

5sin()的範圍為(+1-1)而在表格中以(+4096~-4096)的型式記錄相當於 10=4096所以執行 Asin()時還要用 SFR12指令做4096的動作才能正確的取得輸出值

58

6就頻率輸入 frq而言其計算原則是將θ=ωt轉化成θ=Σ(ωdt)因為抽樣頻率

為 8KHz所以 dt=18000而得到 frq=655368000Hz公式其中 Hz為真正的頻率在 8KHz的抽樣頻率下其範圍為 0~4000

鋸齒波產生器

此模組會產生週期性的鋸齒波方塊圖如下

outfrq

kBiasbias

ampkAmp

kFrqth

kThf=1TB

θ

A

其中

1鋸齒波也有四個參數振幅(A)頻率(F)相位(θ)和偏移(B)和正弦波的定義完全一致唯一的差異是其輸出為鋸齒波而非正弦波

2基本波形是從週期開始時為 0一直遞增到週期結束時到達最高點然後立刻回歸

到 0重新開始 3以程式結構而論鋸齒波程式幾乎就是正弦波的相位計算部分只差沒有正弦波的

查表處理而已

模組程式範例SAW_WAVEasm

local amp R0 IP kAmp 輸入點sin波的振幅 local frq R1 IP kFrq 輸入點sin波的頻率 local th R2 IP kTh 輸入點sin波的相角 local bias R3 IP kBias 輸入點sin波的中心偏移 local out R4 OP 輸出點sin波輸出 local ang R5 內部變數相位角65536=360deg local kAmp R6 1000 參數振幅值 local kFrq R7 1000 參數頻率值=655368000Hz local kTh R8 0 參數相角值360deg=256 local kBias R9 0 參數偏移值 data 11 模組變數區長度及初值 initial 啟動程序 WR ang0 WR out0 ang=out=0 RET timer 即時控制程序(8KHz) RD ang ADD (frq) WR ang ang+=frq SFR 8 ADD (th) AND 255 ACC=(ang256+th)amp0x00ff MUL (amp) SFR 8 ADD (bias) WR out out=ACCamp256+bias

59

RET

脈衝波產生器

outfrq

kBiasbias

ampkAmp

kFrqth

kThf=1TB

θ

A

pwm

kDutyduty

此模組會產生週期性的脈衝波方塊圖如下

其中

1脈衝波有五個參數其中振幅(A)頻率(F)相位(θ)和偏移(B)四個參數和正弦波

定義完全一樣另外再增加一個負載率(D) 2基本波形是從週期開始時為 1隔段時間後換為 0然後持續到週期結束再重新開始其中 1所佔有的比例就是負載率當 D=0時為 0而 D=255時為 100

3和其他參數類似負載率(D)以 duty為其輸入點而以 kDuty為其參數值

模組程式範例PLS_WAVEasm

local amp R0 IP kAmp 輸入點脈衝波的振幅 local frq R1 IP kFrq 輸入點脈衝波的頻率 local th R2 IP kTh 輸入點脈衝波的相角 local bias R3 IP kBias 輸入點脈衝波的中心偏移 local duty R4 IP kDuty 輸入點脈衝波的負載率 local out R5 OP 輸出點脈衝波輸出 local ang R6 內部變數相位角65536=360deg local kAmp R7 1000 參數振幅值 local kFrq R8 1000 參數頻率值=655368000Hz local kTh R9 0 參數相角值360deg=256 local kBias R10 0 參數偏移值 local kDuty R11 128 參數負載率100 =256 data 12 模組變數區長度及初值 initial 啟動程序 WR ang0 WR out0 ang=out=0 RET timer 即時控制程序(8KHz)

60

RD ang ADD (frq) WR ang ang+=frq SFR 8 ADD (th) AND 255 ACC=(ang256+th)amp0x00ff SUB (duty) RD (amp) JLT t1 RD 0 ACC=(amp0) t1 ADD (bias) WR out out=ACC+bias RET

IIR 一階濾波器

此模組執行一階的 IIR濾波器方塊圖如下

kau x

Z-1

+

+

-

+低通濾波器

高通濾波器dx lp

hp

濾波器參數的計算公式如下

1假設濾波器的頻寬為 hz則 ωn=hz628 2若系統頻率為 8KHz則抽樣週期 dT為 dT=dt8000 其中 dt為模組參數 3則濾波器參數為 ka=ωndT4096或是 =hzdt62880004096即 =hzdt32 4當 dt決定後所允許的訊號頻寬為(4000dt)換句話說訊號頻寬會因為 dt增加而下降

為了方便實驗的運用下面列出常用的參數對照表

濾波頻寬

(Hz)

10 20 50 100 200 500 1000 2000

訊號頻寬

(Hz)

400 800 2000 4000 4000 4000 4000 4000

模組參數 dt 10 5 2 1 1 1 1 1

模組參數 ka 320 320 320 320 640 1600 3200 6400

表格的運用方式如下

1首先決定濾波頻寬 2接著查表找出對映的參數 dt和 ka 3再查表得到對映的訊號頻寬以決定是否需要串接前級濾波器

61

模組程式範例IIR1_FILTERasm

local u R0 IP 輸入點濾波器輸入 local lp R1 OP 輸出點低通濾波器輸出 local hp R2 OP 輸出點高通濾波器輸出 local dt R3 1 參數抽樣週期 local ka R4 4096 參數增益 ka10=4096 local prd R5 內部變數抽樣週期用 data 6 模組變數區長度 initial 開機啟動程序 WR lp0 WR hp0 WR prd1 RET lp=hp=0prd=1 timer 即時控制程序 SUB prd1 JNZ b9 if (--prdgt0) return RD dt WR prd prd=dt RD (u) SUB lp WR hp hp=u-lp MUL ka SFR 12 ADD lp WR lp lp+=(hpka4096) b9 RET

資料蒐集模組

資料蒐集模組是一個非常特殊的模組專門配合 eTTY 程式中的示波器使用

模組程式範例DAS4asm

local cmd R0 0 紀錄命令0=停止1=前置記錄2=正觸發4=負觸發6=觸發記錄 local dt R1 1 抽樣週期每 dT抽樣一次 local tab R2 TP DAS表格啟始位址 local cnt R3 0 目前記錄點(0~255) local ch1 R4 0 定義頻道1的變數位址 local ch2 R5 0 定義頻道2的變數位址 local ch3 R6 0 定義頻道3的變數位址 local ch4 R7 0 定義頻道4的變數位址 local trg R8 0 定義觸發頻道的變數位址 local th R9 0 觸發準位 local tail R10 0 觸發後的抽樣個數 local buf R11 1 抽樣計數(1~dt) local pnt R12 表格位址計算pnt=tab+cnt4 local len R13 表格長度計算(0~256) data 14 定義模組變數區的長度 table tab 1024 定義表格的長度 initial 啟動程序 WR cmd0 RET cmd=0 timer 控制程序

62

ADD cmd0 JZ t9 if (cmd==0) return SUB buf1 JNZ t9 if (--buf)gt0) return RD dt WR buf dt=buf RD cnt ADD 1 AND 0xff WR cnt cnt=(cnt+1)amp0xff SFL 2 ADD tab WR pnt pnt=tab+cnt4 RD (ch1) WR (pnt) ADD pnt1 pnt++=ch1 RD (ch2) WR (pnt) ADD pnt1 pnt++=ch2 RD (ch3) WR (pnt) ADD pnt1 pnt++=ch3 RD (ch4) WR (pnt) pnt =ch4 RD cmd SUB 1 JZ t9 SUB 1 JZ t2 SUB 1 JZ t3 SUB 1 JZ t4 SUB 1 JZ t5 SUB 1 JZ t6 JR t7 t2 RD (trg) SUB th JGE t9 ADD cmd1 JR t9 wait trgltth t3 RD (trg) SUB th JLE t9 JR t6 wait trggtth t4 RD (trg) SUB th JLE t9 ADD cmd1 JR t9 wait trggtth t5 RD (trg) SUB th JGE t9 JR t6 wait trgltth t6 WR len0 WR cmd7 len=0cmd=7 t7 ADD len1 SUB tail JLT t9 WR cmd0 if ((++len)gt=0x80) cmd=0 t9 RET

與 DC 馬達控制相關的程式模組有以下 4個程式模組說明如下

(1)加減速控制模組 ACC_controlasm (2)光電盤輸入模組 POS_inputasm (3)PWM輸出模組 PWM_outputasm (4)PD控制模組 PD_controlasm

71加減速控制模組 此程式模組主要功能在於執行位置控制的加減速命令修正其數學模式採用 Lynn

濾波器的架構參見下圖

cmd

2

+

old Z -1

-

Z -1

Z -1

Z-1

Z-1x0 x1 x8 x9 x16

+ -

++

2

Z-1

Z-1 y1 y2

+

-

y0

+ +

sumZ-1

+164

12

out

dif

+

63

加減速控制模組方塊圖

其中

1Lynn 濾波器的階數固定成八階也就是 m=8其公式為 H(z) = (1-2Z-m+Z-2m)(1-2Z-1+Z-2)m2

2因為m=8所以m2=64因此最後計算低通濾波的部份時要先做除 64的運算 3因為低通濾波(lp)和 y0之間有 64倍的差異代表 y0y1y2的變化範圍比濾波器輸

入值要擴大許多例如輸入值在+-1000變化時y0y1y2很可能會在+-64000之間變化這範圍已經超出整數處理的範圍很可能會造成錯誤的計算結果

4所以在實驗時輸入值的變化範圍必須控制在+-500之間以保證計算的正確性 5對於 Lynn 濾波器當 m=8時其濾波器的頻寬固定為 1 kHzmdt也就是 dt=1時頻寬為 125 Hz dt=2時頻寬為 625Hz依此類推 6對於 Lynn 濾波器其濾波器的延遲固定為 m個抽樣週期因此設計 hp = x8 - lp 即可得到高通濾波器的對應結果 7其中乘 2和除 64的運算以移位運算取代所以整個程式中並無任何乘法運算 8Lynn 濾波器本身並不是穩定濾波器所以在程式啟動時必須確實的將所有狀態

(x0~x16)歸零否則會產生不穩定的狀態輸出

因為 Lynn濾波器中所有參數固定所以除了抽樣週期 dt 之外並無任何可調參數

抽樣週期 dt 可以控制頻寬dt 越大則濾波器頻寬越低

將步階命令值的輸出送入 Lynn 濾波器中經由低通濾波器的效應可以減緩命

令的變化程度達到加減速控制的目的以下為使用 Lynn 濾波器型式實現加減速控

制的組合語言程式列印 如欲更進一步瞭解 Lynn 濾波器與 FIR 數位濾波器之間的關係可以參考通訊實驗

四數位濾波器設計(FIR)中之說明

ACC_controlasm程式列印 local cmd R0 IP 輸入點位置命令

local out R1 OP 輸出點加減速處理後的位置命令

local dif R2 OP 輸出點位置微分命令

local axis R3 0 馬達編號0=X1=Y2=Z3=C

local old R4 內部變數微分計算用

local sumL R5 內部變數積分計算用

local sumH R6 內部變數積分計算用

local y0 R7 內部變數y(0~2)

local y1 R8 local y2 R9

local x0 R10 內部變數x(0~16)

local x1 R11 local x2 R12 local x3 R13 local x4 R14

local x5 R15 local x6 R16 local x7 R17 local x8 R18

local x9 R19 local x10 R20 local x11 R21 local x12 R22

local x13 R23 local x14 R24 local x15 R25 local x16 R26

64

data 27 模組變數區長度

initial 開機啟動程序

WR dif0 RD (cmd) WR out WR old dif=0 out=old=cmd

sumHL=cmd64

SFL 6 WR sumL RD out SFR 10 SGN 5 WR sumH

RPT 17 WR x00 RPT 3 WR y00 RET x[0~16]=0y[0~2]=0

timer 即時控制程序

RD (cmd) SUBX old WR x0 x0=cmd-old old=cmd

SUB x81 ADD x16 ADD y11 SUB y2 WR y0 y0=x0-2x8+x16+2y1-y2

SGN ADD sumL WR sumL RDH ADC sumH WR sumH sumHL+=y0

WRH RD sumL SFR 6 WR out out=sumHL64

RD y0 SGN SFR WR dif dif=y032mm

RD x0 RPT 16 RDX x1 x[i]=x[i-1] i=1~16

RD y0 RDX y1 WR y2 y[i]=y[i-1] i=1~2

b9 RET

72光電盤輸入模組

DC馬達的位置由光電盤量測之預設儲存於 0xac與 0xbe二個輸入埠位址中其中位址 0xac記錄 X軸馬達的位置位址 0xbe記錄 Y軸馬達的位置由於本實驗的DC馬達接在 Y軸的位置上因此程式中直接選用 Y軸的輸入 光電盤位置輸入的程式列印如下其中速度由位置的差分而得至於馬達的位置

則使用內部 2個 word加以記錄精度為 32位元 POS_inputasm程式列印 local spd R0 OP 輸出點速度量測值

local ang R1 OP 輸出點角度量測值

local angH R2 內部變數角度的 32 位元部分

local mode R3 0x308 模式選擇15MHzAB 相正反向輸入

local pht R4 0xac 輸入阜地址光電盤輸入(0xac)

local phtc R5 0xbe 輸入阜地址光電盤模式(0xbe)

local old R6 內部變數速度更新用

data 7 模組變數區長度

initial 開機啟動程序

RD mode WR (phtc) phtc=mode

RD (pht) WR old WR spd0 RET old=phtspd=0

timer 即時控制程序

RD (pht) SUBX old SGN 11 WR spd spd=(pht-old)old=pht

65

ADD ang WR ang angHL+=spd

RDH ADC angH WR angH

RET

73 PWM輸出控制模組 模組方塊

cmd PWM輸出

程式說明 1在開機時將切換保護時間寫到輸出阜 0xbc上其中切換保護值為 0~6360=5us 2在每次 timer interrupt時將 cmd訊號處理後寫到輸出阜 0xb8上

PWM_outputasm程式列印 local cmd R0 IP gnd 輸入點v相命令

local gain R1 4096 參數輸出增益1=4096

local bias R2 2048 參數輸出偏壓0=2048

local limit R3 4095 參數輸出極限1=4095

local zone R4 0x88f0 參數頻率=12KHz切換保護=5us

local pwm R5 0xb8 輸出阜地址PWM0 輸出(0xb8)

local mode R6 0xbc 輸出阜地址PWM 模式(0xbc)

local p0md R7 0xf8 輸出阜地址port0 模式(0xf8)

local gnd R8 0 輸入接地點

data 9 模組變數區長度

initial 開機啟動程序

RD bias WR (pwm) pwm=bias

RD 0xffff WR (p0md) set port0 mode

RD zone WR (mode) RET mode=zone

stop 關機保護程序

RD bias WR (pwm) RET pwm=bias

timer 即時控制程序

RD (mode) xor 1 and 1 WR (mode) trigger watch-dog

RD (cmd) MUL gain SFR 12 ADD bias ACC=(cmdgain4096)+bias

MAX 0 MIN limit WR (pwm) pwm=limit(ACC)

RET

66

74 PD 控制模組

PD控制的模組方塊參見圖二十一所示其中比例控制的部份直接由增益 kp加以調整微分控制的部份則由誤差的差分經增益 kd的調整而得

Σ+

-

cmd

fdk

err out

Σ

pk

dk

Σ

+

+

+

-

old1minusZ

PD控制器的方塊圖

PD_controlasm程式列印 local cmd R0 IP gnd 輸入點位置命令(可忽略)

local fdk R1 IP gnd 輸入點位置回授(可忽略)

local out R2 OP 輸出點用以控制速度迴路

local kp R3 256 參數增益 kp10=256

local kd R4 0 參數增益 kd10=256

local err R5 0 內部變數

local old R6 0 內部變數

local gnd R7 0 無輸入時的短路點

data 8 模組變數區長度

initial 開機啟動程序

WR out0 WR old0 RET out=old=0

timer 即時控制程序

RD (cmd) SUB (fdk) PRTF WR err

MUL kp SFR 8 P=(cmd-fdk)kp256

RDS err SUBX old MUL kd SFR 8 D=(err-old)kd256

ADDS

WR out out=P+D

RET

程式中預設增益值的 10以整數值 256為基底因此使用 SFR 8的指令加以調

整另外在在計算微分項的程式部份用到 SUBX old的指令其詳細的暫存器動作如

下 參考 piDSP的指令說明SUBX指令將總共用到 3個時序參考錯誤 找不到參照

67

來源在時序 1時將原先 AX的資料拷貝一份到 HX中時序 2時正式執行減

法的動作所以 AX暫存器中的內容會變成 err-old時序 3時DSP會將存放在 HX暫存器中的內容拷貝一份到 old的記憶體中也就是經由 SUBX此一精簡指令將

同時完成計算差分所需要的相減與資料疊代的動作有效的利用 piDSP控制器 DSP核心的精簡指令將可以大幅提昇系統的計算速度

HX AXoldSUBXerr err

old

err

errerr olderr minus

1_err

errerr olderr minus err

1_err

1

2

3

SUBX的指令時序與暫存器變化

68

8附錄快速安裝說明

光纖網路通訊 FPGA 發展系統 (適用於 WIN-XP200098 系統)

快速安裝說明

26Pin 負載輸出入埠

雙電源︵5

12

伏︶輸入埠

單電源︵5

伏︶輸入埠

USB

光纖線輸

號 光纖線輸出埠

入 傳 埠

首先將光碟片 RFFPGA 目錄檔案拷貝在您工作硬碟裡面

第一次安裝時先將 USB 傳輸線接上電腦主機將電源供應器接上 FPGA 模組此時電

腦會出現安裝 USB-Serial 驅動程式選擇從清單安裝此驅動程式放置在光碟片

RFFPGA-USBdrive 選擇您目前安裝系統

可選擇 WIN-98WIN-MEWIN-2000WIN-XP 系統配合您現在工作電腦作業系統

69

注意一般電腦 USB 埠很多插口當您安裝驅動程式時是配合您當時插入之埠

下次如您插入不同接口埠時電腦會再次要求安裝驅動程式這是正常現象請再次安

裝驅動程式否則無法使用

FPLC 操作

首先進入 RFFPGA裡子目錄 testASM直接點選 fPLCexe 出現下面操作畫面(也可直接將

此檔案放置桌面直接點選)

(或者選擇 File 再執行 Setuphellip 選擇您要執行 CAI 檔)

70

進入下面操作畫面 首先使用滑鼠在 FPGA下載按鈕單擊動作使 FPGA變成 DSP晶片 實驗一至實驗五皆為使用 DSP組合語言設計程式其原始程式分別為 testASM1至testASM5可使用 texPad 開啟與編輯程式內容 實驗三與實驗五多有 IO控制動作 當選擇實驗三時出現下面畫面

71

eM_USB 模組

數字型 LED

0 1 2 34 5 6 78 9 A BC D E F

燈號型 LED

44 鍵盤

ADC0 ADC1 DAC0 DAC1

LED 選擇KEY 選擇

模 式 1

0123

注意操作畫面 3與 4 說明開關與按鍵選擇位置後選擇程式下載再按程式啟動如您

按下 0-3按鍵時燈號型 LED會有不同方向閃爍顯示程式停止時結束所有 IO控制動作再按回首頁選擇其他實驗 實驗四與實驗五

模式3

0 1 2 34 5 6 78 9 A BC D E F

按照上面開關選擇直接操作如果以上實驗皆能按照正常操作表示您光纖網路通訊

FPGA發展模組以能正常使用 注意 開機與關機動作順序如下

開機電腦啟動 --- eM_USB 模組電源接上 --- USB 接上電腦 ---

啟動 FPLC 軟體 --- 下載 FPGA 程式

關機關閉 FPLC 軟體 --- eM_USB 模組電源拔掉 --- 拔掉電腦 USB 接頭 ---關掉

電腦

如果以上順序有亂可能造成 USB 找不到驅動造成無法下載經過幾次測試還是

無法下載建議重新啟動電腦主機按照正確步驟操作

72

FPGA 下載操作

進入 FPLC 操作系統按照下列步驟選擇節點模組與下載 bit FPGA 檔案

在 VHDLDEMO 子目錄下您可以選擇您目前 FPGA 種類型號在此型號下我們已將 VHDL

與數位邏輯設計課本範例全部放於此處

73

光纖網路連線 FPGA 下載操作

首先利用光纖線將 eM_USB0 模組光纖輸出埠接至 eM_USB1 模組光纖輸入埠以此

類推最後再將最後 eM_USBN 模組光纖輸出埠接至 eM_USB0 模組光纖輸入埠配置

如附圖方式

個人電腦(Windows) eM_USB模組

0USB

eM_USB模組1

光纖網路

eM_USB模組2

eM_USB模組N

配置完成後進入 FPLC 系統首先必須先將 Node00 下載在 testASM 子目錄裡

piDSPv0bit 檔讓 eM_USB0 模組 FPGA 具備 DSP 功能才能執行光纖網路通訊

操作如下

此時您就可以選擇分別下載至各模組 FPGA 檔 bit

74

安裝 FPLC 注意事項

當您進入 FPLC 時

按 FILE 選擇 programhellip 選擇檔案為 exp_dcmplc 出現下面畫面

正常顯示畫面為

75

DOS 環境操作

在 PC 端的操作是在 Windows 環境中的 DOS 視窗中執行指令範例如下

eFPGA progNETbit 下載 FPGA電路至網路節點0(即 USB節點)中 eFPGA testLEDbit 1 下載 FPGA電路至網路節點1中

對於單一節點的控制程序如下

1將 eM_USB模組連結個人電腦的 USB端 2eM_USB模組開機 3執行下載指令即可 eFPGA xxxxbit 4若要更改 FPGA電路只要重新執行下載指令即可

對於多個網路節點的控制程序如下

1第一組 eM_USB模組連結個人電腦的 USB端再以光纖網路依序其他各節點 2連接 USB界面者為模組0從光纖發射端連接出去的模組為1依此類推 3將所有 eM_USB模組開機 4執行下載指令如下 eFPGA progNETbit 模組0必須先下載指定的 FPGA電路 eFPGA xxxxbit 1 再依序下載其他網路模組的 FPGA電路 eFPGA yyyybit 2 eFPGA zzzzbit 最後再重新下載模組0的 FPGA電路 5換句話說模組0必須先執行 progNETbit讓光纖網路接受 FPGA控制後才能透過光纖網路下載至其他節點等全部網路節點下載完畢後再將模組0的 FPGA重新下載讓模組0也可自由執行任意的 FPGA電路

6若要更改某一個網路節點中的 FPGA電路只要重新執行下述指令 eFPGA progNETbit 模組0必須先下載指定的 FPGA電路 eFPGA yyyybit 2 下載指定網路模組的 FPGA電路 eFPGA zzzz bit 最後再重新下載模組0的 FPGA電路 換句話說除非模組0中的 FPGA已經包括光纖網路管理電路否則一定要先在

模組0中下載網路管理電路後才能下載指定網路節點的 FPGA電路

76

光纖網路通訊 FPGA 發展系統

系統配置

光纖網路通訊 FPGA 發展系統的系統配置圖如下

個人電腦(Windows) eM_USB模組

0USB

eM_USB模組1

光纖網路

eM_USB模組2

eM_USB模組N

其中

1基本模組為 eM_USB模組可用 USB界面和個人電腦連線並提供 USB對光纖網路的轉換功能使得個人電腦可以獨立控制光纖網路中的每個網路節點

2eM_USB模組也可以作為光纖網路中的網路節點透過光纖網路而接受個人電腦的

監控 3就個人電腦而言不論是 USB界面直接連結或是以光纖網路間接連結的 eM_USB模組都是可以直接監控的網路節點最多可以同時控制一個 USB節點和 30個網路節點

4對於每一個網路節點個人電腦都可執行 eM_USB模組中 FPGA的電路下載工作並在適當的 FPGA電路配合下可執行 eM_USB模組中 FPGA內部電路的讀寫控制 5透過適當的 FPGA電路設計各網路節點都可透過光纖網路和其他任何網路節點

作同步通訊執行 FPGA內部記憶體的資料交換資料交換頻率可達 1KHz以上

77

網路模組配置

每個網路模組的標準配置圖如下

eM_USB模組光纖網路

USB eM_FPGA卡

eM_DEMO模組

eM_EXP實驗模組

DC電源

其中

1網路模組以 eM_USB模組為主提供基本的 USB界面和光纖網路連線 2eM_USB模組中的 FPGACPLD採用插卡型式可選擇不同的 eM_FPGA卡包括

eM_2V1K卡可選用 Virtex系列的 XC2V250和 XC2V1000 eM_3S1K卡可選用 Spartan3系列的 XC3S400XC3S1000和 XC3S1500 eM_3S50卡可選用 Spartan3系列的 XC3S50XC3S200和 XC3S400 eM_95XL卡可選用 9500XL系列的 XC95144XL和 XC95288XL 3eM_USB模組中的對外連線有兩種一種是 26P接頭用以連接既有的各種實驗模

組另一種是兩組 50P接頭將 FPGA中各接腳引出用以連接專題實驗 4eM_DEMO模組就是插上 50P接頭的教學模組其中包括 LED 數字顯示和 44鍵盤也具備兩組的 ADC和兩組的 DAC接頭提供類比訊號的測試工具

常用的實驗組合包括

1精簡組合包括(eM_USB+eM_FPGA)提供基本的網路節點適用於專題實驗 2標準組合包括(eM_USB+eM_FPGA+eM_DEMO)提供基礎 FPGA設計的教學實驗

3實驗組合包括(eM_USB+eM_FPGA+eM_DEMO+eM_EXP)提供進階的 FPGA實驗可依需求選用不同的實驗模組

78

eM_USB 模組

eM_USB 模組的電路配置圖如下

TxRx

DCPower

USB

JP2

JP3

光纖界面

外加電源

PC連線

JP1

eM_FPGA模組

FT232 CPLD FlashROM

SRAM

10cm

6cm

JP4

其中

1對外的連線接頭包括 DC電源 可選擇單電源(5V)或是多電源(5V+12V-12V)兩種 USB界面 直接連接個人電腦 光纖界面連接光纖網路 2實驗界面包括 JP1負責內部 CPLD的電路下載 JP2JP3兩組 50P的擴張用接頭 JP4 標準 26P接頭用以連接各種實驗模組 3內部的電路配置包括 A以 SO-DIMM接頭連接各種 eM_FPGA卡 B內附 EEPROMFlashROM和 SRAM提供 FPGA作應用測試 C以一顆 FT232BM作為 USB界面解碼而以一顆 CPLD作為光纖網路解碼 D提供各種 eM_FPGA卡的電路下載功能 4內附五顆 LED由上而下依序為 usbLED指示 USB界面的讀寫狀態 tstLED可由 FPGA電路自行定義 stsLED可由 FPGA電路自行定義 RxLED 可由 FPGA電路自行定義 TxLED 可由 FPGA電路自行定義

79

外部接腳定義

外部接頭的接點順序圖示如下

上視圖

JP11 9 JP4

126225

JP31

50249

JP21

50249

而各接頭的接點定義如下

JP1 JP4 JP2 JP3 1+33V 1+12V 2+12V 1 GND 2 GND 1 GND 2 GND 2GND 3 ADC 4 DAC 3POWER 4ALARM 3 +5V 4 +5V 3nc 5 yPB2 6 yPB3 5RxNET 6TxNET 5+12V 6+12V 4TCK 7 yPB1 6 yPB4 7RxUSB 6TxUSB 7-12V 6-12V 5nc 9 yPB0 10yPB5 9RxCAN 10TxCAN 9 ADC 10 DAC 6TDO 11yPB6 12yPB7 11P0D0 12P0D1 11P1D0 12P1D1 7TDI 13yGND 14yPC3 13P0D2 14P0D3 13P1D2 14P1D3 8nc 15yPC2 16yPC1 15P0D4 16P0D5 15P1D4 16P1D5 9TMS 17yPC0 18yPA0 17P0D6 18P0D7 17P1D6 18P1D7 19yPA1 20yPA2 19P0D8 20P0D9 19P1D8 20P1D9 21yPA3 22GND 21P0D10 22P0D11 21P1D10 22P1D11 23GND 24+5V 23P0D12 24P0D13 23P1D12 24P1D13 25+5V 26nc 25P0D14 26P0D15 25P1D14 26P1D15 27P2D0 28P2D1 27PxA0 28PxA1 29P2D2 30P2D3 29PxA2 30PxA3 31P2D4 32P2D5 31PxA4 32PxA5 33P2D6 34P2D7 33PxA6 34PxA7 35P2D8 36P2D9 35PxB0 36PxB1 37P2D10 38P2D11 37PxB2 38PxB3 39P2D12 40P2D13 39PxB4 40PxB5 41P2D14 42P2D15 41PxB6 42PxB7 43ADC0 44ADC1 43PxC0 44PxC1 45ADC2 46ADC3 45PxC2 46PxC3 47ADC4 48ADC5 47PxC4 48PxC5 49DAC0 50DAC1 49PxC6 50PxC7

80

eM_FPGA 模組

在各種 eM_FPGA 模組中FPGA 對外電路的標準配置圖如下

24576MHz

FlashROM

26PSRAM

EEPROM

mD[8]

yPA[4]

FPGACPLD

mA[19]mRDmWRmCSeeCKeeCSeeDIeeDO

光纖界面 RxNETTxNET

USB 界面 RxUSBTxUSBCLK24MPOWERALARM

LED

tstLEDstsLEDRxLEDTxLED

yPB[8]yPC[4]

ADCDAC

ADC[8]

實驗模組

ADC[2]

DAC[2]

xPA[4]

xPB[8]

xPC[4]

基礎實驗

其中

1FPGACPLD可以選擇下述幾種 XC2V250XC2V1000 採用 eM_2V1K模組其中 FPGA為 FG456包裝 XC3S400XC3S1000XC3S1500採用 eM_3S1K模組其中 FPGA為 FG456包裝 XC3S400XC3S1000XC3S1500採用 eM_3S1K模組其中 FPGA為 FG456包裝 XC3S50XC3S200XC3S400 採用 eM_3S50模組其中 FPGA為 TQ144包裝 XC95144XLXC95288XL 採用 eM_95XL模組其中 CPLD為 TQ144包裝 2採用 FG456包裝者可以控制所有的 IO界面 3採用 TQ144包裝者只是不能控制 RAM和 FlashROM而可以控制其他所有的界面 4所有 FPGA模組都可自由選擇由 USB界面或是由光纖界面下載電路但是 CPLD模組只能固定由 USB界面下載電路

5所有 FPGACPLD模組都可透過 26P接頭連接既有的各種實驗模組

81

FPGA 接腳對照表

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

mD0 XD6 mD0 A17 C13 -- -- mD1 XD7 mD1 B17 D12 -- -- mD2 XD8 mD2 C17 D11 -- -- mD3 XD9 mD3 D17 C11 -- -- mD4 XD10 mD4 E17 D10 -- -- mD5 XD11 mD5 E16 C10 -- -- mD6 XD12 mD6 E14 D9 -- -- mD7 XD13 mD7 E13 D7 -- -- mA0 XD14 mA0 D13 C7 -- -- mA1 XD15 mA1 C13 D6 -- -- mA2 XA0 mA2 V5 C3 -- -- mA3 XA1 mA3 U5 C4 -- -- mA4 XA2 mA4 Y2 D3 -- -- mA5 XA3 mA5 Y1 D4 -- -- mA6 XA4 mA6 V4 E3 -- -- mA7 XA5 mA7 V3 E4 -- -- mA8 XA6 mA8 W2 F3 -- -- mA9 XA7 mA9 W1 F4 -- -- mA10 XA8 mA10 T2 G6 -- -- mA11 XA9 mA11 T1 K3 -- -- mA12 XA10 mA12 R4 K10 -- -- mA13 XA11 mA13 R3 L3 -- -- mA14 XA12 mA14 R2 L4 -- -- mRD XRD mRD R1 D5 -- -- mWR XWR mWR P6 C6 -- --

POWER P0A0 POWER B4 B20 P1 P5 ALARM P0A1 ALARM A4 A19 P2 P6 RxNET P0A2 RxNET C4 B19 P4 P7 TxNET P0A3 TxNET C5 A18 P5 P9 RxUSB P0B0 RxUSB B5 A15 P6 P10 TxUSB P0B1 TxUSB A5 B15 P7 P11 RxCAN P0B2 RxCAN D6 A14 P8 P12 RxCAN P0B3 TxCAN C6 B14 P10 P13

CLK24M CLK24M CLK24M E12 B12 P124 P38

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

PWM0H P3A0 P0D0 E6 A8 P21 P23 PWM0L P3A1 P0D1 E5 B8 P23 P24 PWM1H P3A2 P0D2 C2 B6 P24 P25 PWM1L P3A3 P0D3 C1 A5 P25 P26 PWM2H P3A4 P0D4 D2 B5 P26 P27

82

PWM2L P3A5 P0D5 D1 A4 P27 P28 PWMenb P3A6 P0D6 E4 B4 P28 P30 PHT1Z P3A7 P0D7 E3 A3 P30 P31 PHT1A P3B0 P0D8 G2 C1 P31 P32 PHT1B P3B1 P0D9 G1 C2 P32 P33 PHT0A P3B2 P0D10 H5 D1 P33 P34 PHT0B P3B3 P0D11 J6 D2 P35 P35 AMP0 P3B4 P0D12 H4 E1 P36 P39 AMP1 P3B5 P0D13 H3 E2 P40 P40 AMP2 P3B6 P0D14 H2 F2 P41 P41 AMP3 P3B7 P0D15 H1 G1 P44 P43 eeSK P0C3 P1D0 C10 B9 P20 P22 eeCS P0C2 P1D1 D10 A9 P18 P21 eeDI P0C1 P1D2 F10 B10 P17 P20 eeDO P0C0 P1D3 E10 B11 P15 P19 ssCK P0B7 P1D4 E8 A11 P14 P17 ssCS P0B6 P1D5 E7 A12 P13 P16 ssDI P0B5 P1D6 A6 B13 P12 P15 ssDO P0B4 P1D7 B6 A13 P11 P14

ppCLK P3C0 P1D8 K4 G2 P46 P44 ppDIN P3C1 P1D9 K3 K1 P47 P45 TxD P3C2 P1D10 K2 K2 P50 P46 RxD P3C3 P1D11 K1 L1 P51 P48

tstLED P3C4 P1D12 L5 L2 P52 P49 stsLED P3C5 P1D13 L4 M1 P53 P50 RxLED P3C6 P1D14 L3 M2 P55 P51 TxLED P3C7 P1D15 L2 N1 P56 P52

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

xPA0 P2A0 P2D0 AA3 N2 P59 P53 xPA1 P2A1 P2D1 Y4 T1 P60 P54 xPA2 P2A2 P2D2 AA4 T2 P63 P56 xPA3 P2A3 P2D3 AB4 U2 P68 P57 xPC0 P2A4 P2D4 W5 V1 P69 P58 xPC1 P2A5 P2D5 Y5 V2 P70 P59 xPC2 P2A6 P2D6 AA5 W1 P73 P60 xPC3 P2A7 P2D7 AB5 W2 P74 P61

-- P2B0 P2D8 V6 Y1 P76 P64 -- P2B1 P2D9 V7 Y2 P77 P66 -- P2B2 P2D10 W6 AA3 P78 P68

mCS P2B3 P2D11 Y6 AB4 P79 P69 mA15 P2B4 P2D12 V9 AA4 P80 P70 mA16 P2B5 P2D13 V10 AB5 P82 P71 mA17 P2B6 P2D14 W10 AA5 P83 P74 mA18 P2B7 P2D15 Y10 AA6 P84 P75 CS0 P2C0 ADC0 AA10 AB8 P85 P76

83

SDIN0 P2C1 ADC1 AB10 AA8 P86 P77 CS1 P2C2 ADC2 U10 AB9 P87 P78

SDIN1 P2C3 ADC3 U11 AA9 P89 P79 SCLK P2C4 ADC4 V11 AB10 P90 P80 CS2 P2C5 ADC5 W11 AA10 P92 P81

SDOUT P2C6 ADC6 Y11 AB11 P93 P82 LDAC P2C7 ADC7 AA11 AA11 P95 P83

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

xPB0 P1A0 PxA0 M1 M3 P135 P85 xPB1 P1A1 PxA1 M2 M4 P132 P86 yPB2 P1A2 PxA2 M3 N3 P131 P87 yPB3 P1A3 PxA3 M4 N4 P130 P88 yPB1 P1A4 PxA4 M5 T4 P129 P91 yPB4 P1A5 PxA5 M6 T5 P128 P92 yPB0 P1A6 PxA6 N1 U3 P127 P93 yPB5 P1A7 PxA7 N2 U4 P125 P94 yPB6 P1B0 PxB0 U13 V3 P119 P95 yPB7 P1B1 PxB1 V13 V4 P118 P96 xPB2 P1B2 PxB2 W13 W3 P116 P97 xPB3 P1B3 PxB3 Y13 W4 P113 P98 xPB4 P1B4 PxB4 AA13 Y3 P112 P100 xPB5 P1B5 PxB5 AB13 Y4 P96 P101 yPC3 P1B6 PxB6 U12 Y5 P97 P102 yPC2 P1B7 PxB7 V12 W5 P98 P103 yPC1 P1C7 PxC0 AB17 W11 P108 P113 yPC0 P1C6 PxC1 AA17 Y11 P107 P112 yPA0 P1C5 PxC2 Y17 W10 P105 P111 yPA1 P1C4 PxC3 W17 Y10 P104 P110 yPA2 P1C3 PxC4 AB18 W9 P103 P107 yPA3 P1C2 PxC5 AA18 W8 P102 P106 xPB6 P1C1 PxC6 Y18 W6 P100 P105 xPB7 P1C0 PxC7 W18 Y6 P99 P104

84

eM_DEMO 模組

eM_DEMO 模組的電路配置圖如下

eM_USB 模組

數字型 LED

0 1 2 34 5 6 78 9 A BC D E F

燈號型 LED

44 鍵盤

ADC0 ADC1 DAC0 DAC1

LED 選擇KEY 選擇

其中

1eM_DEMO模組的基本功能包括 A將 xPAxPBxPC等 16個 IO訊號引出控制 LED和鍵盤電路 B將 ADDA訊號引出並放大成+-10V的工作範圍 2LED和鍵盤可以選擇三種模式由 LED和 KEY 兩組開關作選擇圖示如下

模式1

0123

模式2 模式3

0 1 2 34 5 6 78 9 A BC D E F

0123

3模式14鍵輸入並搭配 16點的 LED燈號顯示其中 16點 LED分別對映到 xPA[0~3]xPB[0~7]和 xPC[0~3] 4組按鍵分別對映到 xPC[0~3] 4模式24鍵輸入並搭配四個 7段式數字顯示其中 數字顯示由 xPA[0~3]作數字掃瞄而由 xPB[0~7]作 7段式 LED控制 4組按鍵 分別對映到 xPC[0~3] 5模式316鍵輸入並搭配四個 7段式數字顯示其中 數字顯示由 xPA[0~3]作數字掃瞄而由 xPB[0~7]作 7段式 LED控制 16組按鍵由 xPA[0~3]作鍵盤掃瞄而由 xPC[0~3]作鍵盤讀取 6根據VHDL與數位邏輯設計的章節其中 第 1章至 10章的實驗採用模式1而 第 11章實驗採用模式2而 第 12章之後的實驗都採用模式3

85

FPGA UCF 定義

eM_3S1K 模組

NET CLK LOC = B12

NET XAlt0gt LOC = N2

NET XAlt1gt LOC = T1

NET XAlt2gt LOC = T2

NET XAlt3gt LOC = U2

NET XBlt0gt LOC = M3

NET XBlt1gt LOC = M4

NET XBlt2gt LOC = W3

NET XBlt3gt LOC = W4

NET XBlt4gt LOC = Y3

NET XBlt5gt LOC = Y4

NET XBlt6gt LOC = W6

NET XBlt7gt LOC = Y6

NET XClt0gt LOC = V1

NET XClt1gt LOC = V2

NET XClt2gt LOC = W1

NET XClt3gt LOC = W2

NET YAlt0gt LOC = W10

JP4 接頭

NET YAlt1gt LOC = Y10

NET YAlt2gt LOC = W9

NET YAlt3gt LOC = W8

NET YBlt0gt LOC = U3

NET YBlt1gt LOC = T4

NET YBlt2gt LOC = N3

NET YBlt3gt LOC = N4

NET YBlt4gt LOC = T5

NET YBlt5gt LOC = U4

NET YBlt6gt LOC = V3

NET YBlt7gt LOC = V4

NET YClt0gt LOC = Y11

NET YClt1gt LOC = W11

NET YClt2gt LOC = W5

NET YClt3gt LOC = Y5

在光碟片中 RFFPGAVHDLDEMOBIT3S1K 裡有 VHDL 與數位邏輯設計書本範例原始檔與合成檔

86

eM_3S50 模組

NET CLK LOC = P124

NET XAlt0gt LOC = P59

NET XAlt1gt LOC = P60

NET XAlt2gt LOC = P63

NET XAlt3gt LOC = P68

NET XBlt0gt LOC = P135

NET XBlt1gt LOC = P132

NET XBlt2gt LOC = P116

NET XBlt3gt LOC = P113

NET XBlt4gt LOC = P112

NET XBlt5gt LOC = P96

NET XBlt6gt LOC = P100

NET XBlt7gt LOC = P99

NET XClt0gt LOC = P69

NET XClt1gt LOC = P70

NET XClt2gt LOC = P73

NET XClt3gt LOC = P74

NET YAlt0gt LOC = P105

JP4 接頭

NET YAlt1gt LOC = P104

NET YAlt2gt LOC = P103

NET YAlt3gt LOC = P102

NET YBlt0gt LOC = P127

NET YBlt1gt LOC = P129

NET YBlt2gt LOC = P131

NET YBlt3gt LOC = P130

NET YBlt4gt LOC = P128

NET YBlt5gt LOC = P125

NET YBlt6gt LOC = P119

NET YBlt7gt LOC = P118

NET YClt0gt LOC = P107

NET YClt1gt LOC = P108

NET YClt2gt LOC = P98

NET YClt3gt LOC = P97

在光碟片中 RFFPGAVHDLDEMOBIT3S200 裡有VHDL與數位邏輯設計書本範例原始檔與合成檔

87

eM_95XL 模組

NET CLK LOC = SPIN38

NET XAlt0gt LOC = SPIN53

NET XAlt1gt LOC = SPIN54

NET XAlt2gt LOC = SPIN56

NET XAlt3gt LOC = SPIN57

NET XBlt0gt LOC = SPIN85

NET XBlt1gt LOC = SPIN86

NET XBlt2gt LOC = SPIN97

NET XBlt3gt LOC = SPIN98

NET XBlt4gt LOC = SPIN100

NET XBlt5gt LOC = SPIN101

NET XBlt6gt LOC = SPIN105

NET XBlt7gt LOC = SPIN104

NET XClt0gt LOC = SPIN58

NET XClt1gt LOC = SPIN59

NET XClt2gt LOC = SPIN60

NET XClt3gt LOC = SPIN61

NET YAlt0gt LOC = SPIN111

JP4 接頭

NET YAlt1gt LOC = SPIN110

NET YAlt2gt LOC = SPIN107

NET YAlt3gt LOC = SPIN106

NET YBlt0gt LOC = SPIN93

NET YBlt1gt LOC = SPIN91

NET YBlt2gt LOC = SPIN87

NET YBlt3gt LOC = SPIN88

NET YBlt4gt LOC = SPIN92

NET YBlt5gt LOC = SPIN94

NET YBlt6gt LOC = SPIN95

NET YBlt7gt LOC = SPIN96

NET YClt0gt LOC = SPIN112

NET YClt1gt LOC = SPIN113

NET YClt2gt LOC = SPIN103

NET YClt3gt LOC = SPIN102

在光碟片中 RFFPGAVHDLDEMOSVF95288XL 裡有VHDL與數位邏輯設計書本範例原始檔與合成

檔案

88

eM_FPGA 模組

NET CLK LOC = E12

NET XAlt0gt LOC = AA3

NET XAlt1gt LOC = Y4

NET XAlt2gt LOC = AA4

NET XAlt3gt LOC = AB4

NET XBlt0gt LOC = M1

NET XBlt1gt LOC = M2

NET XBlt2gt LOC = W13

NET XBlt3gt LOC = Y13

NET XBlt4gt LOC = AA13

NET XBlt5gt LOC = AB13

NET XBlt6gt LOC = Y18

NET XBlt7gt LOC = W18

NET XClt0gt LOC = W5

NET XClt1gt LOC = Y5

NET XClt2gt LOC = AA5

NET XClt3gt LOC = AB5

NET YAlt0gt LOC = Y17

JP4 接頭

NET YAlt1gt LOC = W17

NET YAlt2gt LOC = AB18

NET YAlt3gt LOC = AA18

NET YBlt0gt LOC = N1

NET YBlt1gt LOC = M5

NET YBlt2gt LOC = M3

NET YBlt3gt LOC = M4

NET YBlt4gt LOC = M6

NET YBlt5gt LOC = N2

NET YBlt6gt LOC = U13

NET YBlt7gt LOC = V13

NET YClt0gt LOC = AA17

NET YClt1gt LOC = AB17

NET YClt2gt LOC = V12

NET YClt3gt LOC = U12

在光碟片中 RFFPGAVHDLDEMOBIT2V250 裡有VHDL與數位邏輯設計書本範例原始檔與合成檔

89

Page 25: RFFPGA 直流馬達實驗手冊juniortek.com.tw/program/manual/RF-DC-mal.pdf · em_demo模組 em_dcm 直流伺服馬達 dc電源 rffpga 系統的直流馬達實驗規劃 其中包括:

其中

1速度命令並不直接控制馬達的驅動電壓而是 A將速度命令和速度回授相比找出其誤差訊號 err B依誤差訊號來控制驅動電壓 誤差越大則驅動電壓越高 誤差越小則驅動電壓越低 誤差為負則驅動電壓也為負 其中的比例關係由 P控制器中的 Kp 來調整 2經由數學分析後其步階響應的特性為 A穩態誤差變成 1(1+kpkm)如果 kpkmgtgt1則穩態誤差將趨近於 0 B過越比例仍為 0 C上升時間即是由τ變成τ(1+kpkm)所以上升時間將變短 3換句話說只要 Kp值夠大不論是穩態誤差或是上升時間都會大幅改善

理論上P控制器的增益是越高越好最好是無限大但是實際上是有限制的原因是

1馬達的開環路特性是兩階系統而非一階系統一階系統只是簡化後的結果 2當兩階系統作高增益的回授控制時當增益過高時會產生極嚴重的過越現象使得

馬達產生巨幅震動而難以控制

所以 P控制器的增益雖然是越高越好但調整時仍要小心維持(過越比例為 0)的條件

轉角的回授控制

做為馬達的速度控制P控制器的效果不錯但是如果將 P控制器應用到馬達的轉角控

制其特性就不太理想圖示如下

sτ+1

KmVc ωKp

err

P控制器 直流馬達

θc

轉角回授

轉角命令 + 轉角響應-

s1 θ

其中

1從馬達的速度到轉角之間具有積分特性即 馬達的轉角是馬達速度的積分結果而 馬達的速度是馬達轉角的微分結果而 2其中的積分特性使得整個系統由一階特性變成兩階特性在兩階系統中當設定高

增益時會產生極嚴重的過越現象使得馬達產生巨幅震動而難以控制 3在 P控制器增益無法提高的狀況之下轉角控制效果將無法獲得改善

雖然 P控制器在轉角控制上的效果並不好但是在控制系統中還是有許多法寶可以選擇

25

其中 PD 控制器就是簡單又有效的一個好方法

從表面上來看PD 控制器比 P控制器多了一個微分項就數學上來看這微分項提供了

一個新零點(Zero)可以調整根軌跡圖的走向就實驗上來說這微分項提供了控制器

的預測功能說明如下

sτ+1

KmVc ωKp+sKd

err

P控制器 直流馬達

θc

轉角回授

轉角命令 + 轉角響應-

s1 θ

1轉角控制中 P控制器的問題是在嚴重的過越現象原因是在 P控制器的作用下只有當回授超過命令時才能做出「負向」的控制但這時已經來不及了因為積分器

中已經累積了過多的能量而無法立刻消失使得馬達轉角衝過了頭 2解決之道就是在回授超過命令之前就必須做出「負向」的控制使得積分器累積

的能量逐步減弱在到達目標時才能立刻煞車才能解除過越現象 3而微分項就是這個預測量因為當誤差量越來越小時其微分項是負值雖然微分

項(D)是負值 當誤差量(P)很大時(P+D)的結果還是正值所以還是「正向」控制 當誤差量(P)漸小時(P+D)的結果變成負值才會開始「負向」控制 換句話說在誤差為 0之前即可啟動負向控制產生煞車作用使得馬達提前減速

而即時停止在目標點上自然就解除過越現象了

所以在 PD 控制器中有兩項調整量其中

1Kp增益提供比例控制部分的增益而 Kd增益提供微分控制部分的增益 2Kp增益控制馬達的趨近速度主要影響的是上升時間 3Kd增益控制馬達的提前煞車主要影響的是過越比例 4在兩者搭配下就有機會得到 很快很短的上升時間同時也 不會產生過越現象

PD 控制器的執行

依據 PD 控制器公式可以建立以數位執行的 PD 控制器如下圖所示

cmdKp

fdk

+

-

err

old

+-

Kd

Z-1

out+

+

26

其中

1利用差分公式來取代 PD控制器中的微分公式定義如下 s ==gt (1-Z-1)DT 其中對映的變數包括 s 微分項 Z-1延遲一個抽樣週期 DT抽樣週期單位為 sec 2就執行面而言Z-1是延遲一個抽樣週期也就是以抽樣週期所控制的暫存器 3在上圖中將命令(cmd)和回授(fdk)相減後得到誤差值(err)再將 err延遲一個抽樣週期成為 old所以(err-old)DT即是微分項

4原始的微分控制公式為(err-old)DTKd必須先除再乘但是因為 DT和 Kd 都是常

數可以預先將 Kd修正成 Kd=(KdDT)那麼公式將修正為(err-old)Kd就只需要一個乘法而不需要除法了

同樣的 PD 控制器可以用許多不同的方法作執行包括

1以軟體方式執行例如在 DSP核心中以組合語言撰寫控制模組 2以硬體方式執行例如在 FPGA中直接設計邏輯電路 3以微碼方式執行以微碼作順序控制執行硬體運算工作

這裡先提供用組合語言撰寫的程式模組作為設計參考其他兩種方法將在後續的實驗中

再陸續作說明

模組程式範例PD_controlasm

local cmd R0 IP gnd 輸入點位置命令(可忽略) local fdk R1 IP gnd 輸入點位置回授(可忽略) local out R2 OP 輸出點用以控制速度迴路 local kp R3 256 參數增益 kp10=256 local kd R4 0 參數增益 kd10=256 local err R5 0 內部變數 local old R6 0 內部變數 local gnd R7 0 無輸入時的短路點 data 8 模組變數區長度 initial 開機啟動程序 WR out0 WR old0 RET out=old=0 timer 即時控制程序 RD (cmd) SUB (fdk) WR err MUL kp SFR 8 P=(cmd-fdk)kp256 RDS err SUBX old MUL kd SFR 8 D=(err-old)kd256 ADDS WR out out=P+D RET

27

其中

1PD控制模組中對外的界面變數包括 cmd命令的輸入點 fdk回授的輸入點 out控制的輸出點 2內部參數包括 Kp比例控制增益其中 10=256所以乘完後還需要再右移 8-bit Kd微分控制增益其中 10=256所以乘完後還需要再右移 8-bit 3內部變數包括 err臨時性的變數用以儲存誤差值的計算結果 old儲存性的變數用以儲存上一次抽樣控制時的 err值 4模組程式分成三部分包括 變數宣告local和data所宣告的部分 初值設定initial程序中先將 out和 old設定為 0 即時控制timer程序中依序執行 PD控制器中的每個步驟

控制目標的選擇

從字面上來看速度控制就是控制馬達的速度轉角控制就是控制馬達的轉角沒什麼

好討論的但是實際上確有許多問題第一的問題就是什麼是速度和轉角馬達的速

度和轉角如果不作量測如何得知

既然在量測中取得了速度和轉角資料那麼我們所控制的到底是物理學上的速度和轉

sτ+1

KmVc ωKp+sKd

err

P控制器 直流馬達

θc

轉角回授

轉角命令 + 轉角響應-

s1 θ

KxANG

轉角量測

角還是量測上的速度和轉角以下圖為例

其中

1以轉角量測裝置量測轉角例如裝在馬達軸端的光電盤和解碼電路 2轉角的量測輸出是 ANG而 ANG和物理轉角θ之間有 Km的增益關係 3只要 Km值不是 1那麼系統就不再是單位回授 4如果 Km還有非線性或失真現象那麼控制結果也將有非線性或失真現象

這些問題混雜起來會使得控制系統的分析變得更複雜如果要簡單處理就要認同現

實環境直接以量測結果為控制目標如下圖所示

28

sτ+1

KmVc ωKp+sKd

err

P控制器 直流馬達

θc

轉角回授

+-

s1 θ Kx

ANG轉角量測

其中

1直接以量測結果為控制目標將全系統還原成標準的單位回授控制 2所有的非線性或失真現象都進入開環路討論屬於可以補償的部分 3但是控制結果就是「量測上的轉角」而「物理學上的轉角」

量測誤差的問題

轉角θ

量測ANG

對於量測誤差而言最明顯的問題就是量化誤差圖示如下

其中

1以 DCM模組中的光電盤為例精度為每圈 500格經由乘四解碼計數後其等效

精度增加為每圈 2000格 2比(12000)圈更精密的部分都無法響應換句話說振幅越大的控制其相對誤差越

小而振幅越小的控制其相對誤差越大例如 當振幅為(12)圈時其控制誤差量為 01而 當振幅為(120)圈時其控制誤差量為 1 這是標準的的非線性現象

量化誤差不只影響穩態上的精度還會造成非線性的震動問題圖示如下

t

誤差值

+1

-1

其中

1由於量化誤差的問題只有當誤差超過+1或是-1時才會真正偵測到誤差也才

29

會施加控制量作補償 2所以穩態時的誤差將在+1-1之間擺動造成微幅的振動 3量化誤差越大震動越明顯而量化誤差很小時通常不易察覺出震動現象

微分量的計算

伺服系統中有兩處需要用到微分計算包括

1PD控制器中誤差微分量的計算 2速度控制器中速度回授值的量測

在理論上微分公式是(dXdt)相當於 dXdt = (X(n)-X(n-1))DT (當 DT趨近於 0時)

所以當微分計算中的抽樣週期(DT)越短時微分的計算值將越接近理論值但是事實上

卻非如此以下圖為例

t

X

DTDX

其中

1當 X值為等速度運動時其微分量就是其斜率相當於 DXDT 2DT是微分計算中的抽樣週期理論上越短越好但是由於 DX本身的量化誤差

使得這個原則不再成立例如當斜率為 7394時 若 DT=1000則 DX=7394而 DXDT=7394 若 DT=100 則 DX=739 而 DXDT=739 若 DT=10 則 DX=73 而 DXDT=73 若 DT=1 則 DX=7 而 DXDT=7 3換句話說當抽樣週期越短時DX的量化誤差將越明顯而造成微分計算上更嚴

重的誤差

在 DCM 模組中速度量測的量化誤差分析如下

1馬達上的光電盤精度為每圈 500格經過乘四解碼後等效精度為每圈 2000格 2當馬達轉速為 1200RPM而抽樣頻率為 1KHz時對映的速度量測值為 1200(圈分)2000(格圈)60(秒分)1000(DT秒) = 40(格DT) 3換句話說1200RPM的轉速對映到 40的速度量測值即速度單位=30RPM若最

高轉速為 3000RPM則在+-3000RPM的速度範圍內其量化誤差為 05相當於8-bit的 ADC轉換器精度

4對映不同的抽樣頻率的量化誤差表列如下

30

光電盤精度 最高轉速 抽樣頻率 速度單

速度範圍 量化誤差

500PPR 3000RPM 1KHz 30RPM +-100 05 500PPR 3000RPM 2KHz 60RPM +-50 1 500PPR 3000RPM 4KHz 120RPM +25 2

過溢現象的處理

輸入

輸出

32767

-32768

整數運算都有數值範圍限制以 16-bit 整數而言輸入輸出的關係如下

其中

1當超過正負數的上下限時數值會正負顛倒例如 +32768 將會視為 -32768作處理而 +32769 將會視為 -32768作處理依此類推 2換句話說16-bit的整數運算只有在+-32767之間是線性的對映關係而超過這個範圍就是非線性的對映關係

3不但如此還因為正負顛倒的現象使得原來設計的負回授控制將變為正回授控制

而產生非線性的震盪現象 4換句話說只要計算上稍一不慎就會使得原先穩定的系統產生不穩定的震盪結果

為了避免過溢現象所造成的不穩定問題通常控制系統中會利用飽和處理作改善圖示

如下

輸入

輸出

lmtH

lmtL

31

其中

1當超過計算的上限時將固定設為上限值處理而當超過計算的下限時也將固定

設為下限值處理 2這時的整數運算只有在上下限之間是線性的對映關係而超過這個範圍將還是非線

性的對映關係 3雖然如此但是因為沒有正負顛倒的現象所以不再會有負回授變為正回授的問題

而避免了非線性的震盪現象 4換句話說飽和處理是針對過溢現象的妥協處理方案雖然不完全理想但是是可

接受的最佳選擇

下面是對映的組合語言範例

RD x x為輸入端 MIN lmtH 取得 x和 lmtH中的較小值即是作上限保護的工作 MAX lmtL 取得 x和 lmtL中的較大值即是作下限保護的工作 WR y Y為輸出端 其中

1組合語言中提供MAX和MIN的計算其中 MIN lmtH 比較 AX暫存器和 lmtH而將較低值存入 AX暫存器中 MAX lmtL 比較 AX暫存器和 lmtH而將較高值存入 AX暫存器中 2所以直接可用MIN指令作上限保護而以MAX指令作下限保護兩者合併後即是

完整的飽和處理結果

飽和處理通常應用在高位數轉成低位數的場合例如32-bit轉換成16-bit或是16-bit

轉換成 12-bit 等等例如在本實驗中所有的運算都是以 16-bit 整數作處理但是到

PWM 驅動級輸出時卻要轉換成 12-bit精度的 PWM 命令所以必須先用飽和處理以避免

過溢現象造成的不穩定問題

32

61 實驗 1-開迴路的電壓控制 實驗說明以電壓直接控制轉速的開迴路特性可簡化為一階系統處理方塊圖如

sτ+1

v km ωm

其中V 送給驅動器的 PWM電壓命令

ωm馬達的轉動速度可由處理 photo encoder信號所得的位置微分而得 km一階系統的穩態增益 τ一階系統的時間常數即步階響應中的上升時間

為了觀測直流馬達的開環路特性建立下面的測試方塊圖

其中

1所使用的模組包括 FG1方波產生器產生所需的步階測試波形 FT1馬達模擬以一階系統的低通濾波器來執行 IO1光電盤的回授處理可同時取得轉角和速度的量測值 IO2PWM電壓驅動直接驅動直流馬達作控制 Led四位數字七段顯示模組顯示波形信號資料 2測試目標有兩項(P 參數設定欄)包括 A調整方波命令控制直流馬達作開環路的 PWM電壓控制 B調整馬達模擬參數使模擬結果和實驗結果相符以確認開環路特性

33

實驗畫面顯示如下

測試一 開環路的電壓控制 記錄頻道 CH1電壓命令Y1=-300DY=500 CH2模擬速度Y2=-100DY=500 CH3馬達速度Y3=100DY=50 CH4馬達轉角Y4=300DY=50000 實驗參數 FG1kAMP=256電壓命令的測試振幅 FG1kFRQ=150電壓命令的測試頻率 FT1DT =10 馬達模擬參數 FT1KA =500馬達模擬參數

其中

1用示波器功能記錄四個頻道其中 CH2和 CH3重疊顯示以比較模擬速度和量測

速度之間的差異 2由於 Km 不等於 1所以必須調整 CH3的 Y軸單位才能使得 CH2和 CH3的穩態響應部分重疊

3實驗時可以改變 FG1的參數以調整測試方波的振幅和頻率 4可以調整 FT1的參數使得 CH2和 CH3的暫態響應部分重疊

根據實際的測試結果分析如下

2馬達模擬的參數調整到 DT=10而 KA=500根據公式 τ = 40961000dtka 所以上升時間(τ)為 0082秒或是 82ms 3CH2CH3的 Y軸單位並不一致顯然 Km 不等於 1經計算確認 Km=0098

對應之 plc檔程式說明(exp_pwmplc) echo off 畫面顯示開始

run dsp 0 選擇 DSP1

run stop run reset 既有程式停止

run testDCMmem 下載指定程式

das 1 ampfg1out 0 1024 PWM 波形 Volt 設定 DAS 頻道1

das 2 ampft1lp 0 1024 馬達模擬 Volt 設定 DAS 頻道2

das 3 ampio1spd 0 1024 馬達速度 Volt 設定 DAS 頻道3

das 4 ampio1ang 0 1024 馬達角度 Volt 設定 DAS 頻道4

plot select 0 設定示波器頁數

plot xunit 100000 0 設定示波器 X軸

plot yunit 1 500 -300 設定示波器 Y1 軸

34

plot yunit 2 500 -100 設定示波器 Y2 軸

plot yunit 3 50 100 設定示波器 Y3 軸

plot yunit 4 50000 300 設定示波器 Y4 軸

plot trigger 1 0 1 10 設定示波器觸發

plot scope 9 1 2 3 4 設定示波器顯示

module io2 設定 io2 模組

s cmd ampfg1out

module fg1 設定 fg1 模組

s kAmp 256 s kFrq 150

module ft1 設定 ft1 模組

s u ampfg1out s dt 10 s ka 500

module io3 設定 io3 模組

s led ampfg1out

module 回復預設模組

run 1khz 設定抽樣頻率為 4KHz

run start DSP 開始執行

das stop pause 1 DAS 啟動 das start DAS 啟動

echo on 回復正常訊息顯示

使用者可視情況調整一階濾波器的 ka和 dt值使得 ch2和 ch3 兩組波形完全相符

以求得開迴路系統近似的一階轉移函數 CAI操控設計畫面規劃如下(EXP_PWMCAI) page 1 畫面設計

35

page 2 畫面設計 page 3 畫面設計

36

實測響應圖

訊 號 說 明 訊 號 說 明 ch1 方波產生器訊號 ch3 一階濾波器輸出信號 ch2 馬達角速度訊號 ch4 馬達角位置訊號

直流馬達之開迴路電壓控制響應圖

37

以邏輯分析功能觀測直流馬達之光電盤輸入與 PWM輸出信號

38

62 實驗 2-閉迴路的速度控制 實驗說明為了觀測閉迴路的速度控制響應建立下面的測試方塊圖

加入 PD控制後系統閉迴路的轉移函數經適度的簡化仍能約略以一階系統

處理方塊圖如下

sτ+1

u km ωm

其中

u 送給控制器的速度命令

ωm馬達的轉動速度可由處理 photo encoder 信號所得的位置微分而得

km一階系統的穩態增益 τ一階系統的時間常數即步階響應中的上升時間

方塊圖中的模組功能說明如下

1用 fg1 產生測試用的方波速度命令

2將方波速度命令和速度回授訊號送到 PD 控制器方塊中產生電壓控制訊號再透

過 io2 模組將訊號送出給伺服介面

3用 ft1 建立對照用的一階系統可用 IIR1濾波器方塊產生

4將方波命令產生速度命令再觀測 PHT(io1)上的速度值 spd

5調整 IIR1濾波器的參數使得兩組波形完全相符這時 IIR1濾波器就是閉迴路

速度控制的特性其中 km 為增益而τ為上升時間(單位為 sec)

6增益 km 可從示波器中作簡單計算而上升時間(τ=40964000dtka)

7 Led四位數字七段顯示模組顯示波形信號資料

39

對應之 plc檔程式說明(exp_speedplc) echo off 畫面顯示開始

run dsp 0 選擇 DSP1

run stop run reset 既有程式停止

run testDCMmem 下載指定程式

das 1 ampfg1out 0 1024 PWM 波形 Volt 設定 DAS 頻道1

das 2 ampft1lp 0 1024 馬達模擬 Volt 設定 DAS 頻道2

das 3 ampio1spd 0 1024 馬達速度 Volt 設定 DAS 頻道3

das 4 ampio1ang 0 1024 馬達角度 Volt 設定 DAS 頻道4

plot select 0 設定示波器頁數

plot xunit 100000 0 設定示波器 X軸

plot yunit 1 50 -300 設定示波器 Y1 軸

plot yunit 2 50 -100 設定示波器 Y2 軸

plot yunit 3 50 100 設定示波器 Y3 軸

plot yunit 4 50000 300 設定示波器 Y4 軸

plot trigger 1 0 1 10 設定示波器觸發

plot scope 9 1 2 3 4 設定示波器顯示

module io2 設定 io2 模組

s cmd ampcn2out

module fg1 設定 fg1 模組

s kAmp 50 s kFrq 150

module cn2 設定 cn1 模組

s cmd ampfg1out s fdk ampio1spd s kp 0x4000

module ft1 設定 ft1 模組

s u ampfg1out s dt 2 s ka 320

module io3 設定 io3 模組

s led ampfg1out

module 回復預設模組

run 1khz 設定抽樣頻率為 4KHz

run start DSP 開始執行

das stop pause 1 DAS 啟動 das start DAS 啟動

echo on 回復正常訊息顯示

CAI操控設計畫面規劃如下(EXP_speedCAI)

40

page 1 畫面設計 page 2 與 page 3 畫面設計與實驗一 page 2 與 page 3相同畫面 page 4 畫面設計

41

方塊的參數設定 使用者可視情況調整一階濾波器的 ka和 dt值使得 ch2和 ch3 兩組波形完全相符

以求得此一閉迴路系統近似的一階轉移函數或調整 PD控制器中的 kp和 kp值以調整系統之響應 實測響應圖

訊 號 說 明 訊 號 說 明 ch1 方波產生器產生之速度命令 ch3 一階濾波器輸出信號 ch2 馬達角速度訊號 ch4 馬達角位置訊號

42

直流馬達之閉迴路速度控制響應圖

43

63 實驗 3-閉迴路的位置控制 實驗說明為了觀測閉迴路的位置控制響應將直流馬達的回授改為位置訊號

建立下面的測試方塊圖 方塊圖中的模組功能說明如下

1用 fg1產生測試用的方波位置命令 2將方波位置命令和位置回授訊號送到 PD控制器方塊中產生電壓控制訊號再透過 io2模組將訊號送出到伺服介面驅動馬達轉動

對應之 plc檔程式說明(exp_angleplc) echo off 畫面顯示開始

run dsp 0 選擇 DSP1

run stop run reset 既有程式停止

run testDCMmem 下載指定程式

das 1 ampfg1out 0 1024 PWM 波形 Volt 設定 DAS 頻道1

das 2 ampft1lp 0 1024 馬達模擬 Volt 設定 DAS 頻道2

das 3 ampio1spd 0 1024 馬達速度 Volt 設定 DAS 頻道3

das 4 ampio1ang 0 1024 馬達角度 Volt 設定 DAS 頻道4

plot select 0 設定示波器頁數

plot xunit 100000 0 設定示波器 X軸

plot yunit 1 1000 -300 設定示波器 Y1 軸

plot yunit 2 1000 -100 設定示波器 Y2 軸

plot yunit 3 20 100 設定示波器 Y3 軸

plot yunit 4 1000 300 設定示波器 Y4 軸

plot trigger 1 0 1 10 設定示波器觸發

44

plot scope 9 1 2 3 4 設定示波器顯示

module io2 設定 io2 模組

s cmd ampcn2out

module fg1 設定 fg1 模組

s kAmp 1000 s kFrq 75

module cn2 設定 cn1 模組

s cmd ampfg1out s fdk ampio1ang s kp 0x300 s kd 0x4000

module ft1 設定 ft1 模組

s u ampfg1out s dt 2 s ka 320

module io3 設定 io3 模組

s led ampfg1out

module 回復預設模組

run 1khz 設定抽樣頻率為 4KHz

run start DSP 開始執行

das stop pause 1 DAS 啟動 das start DAS 啟動

echo on 回復正常訊息顯示

CAI操控設計畫面規劃如下(EXP_angleCAI) page 1 畫面設計

45

page 2 與 page 3 畫面設計與實驗一 page 2 與 page 3相同畫面 page 4 畫面設計與實驗二 page 4 畫面 方塊的參數設定 延續上一實驗的說明使用者可以調整 PD控制器中的 kp和 kd值以調整系統之

響應 實測響應圖

訊 號 說 明 訊 號 說 明 ch1 方波產生器產生之位置命令 ch3 馬達角速度訊號 ch2 馬達角位置 ch4 Pd控制器輸出之電壓訊號

46

直流馬達之閉迴路位置控制響應圖

47

64 實驗 4-加減速的位置控制 實驗說明為避免方波命令的過於嚴苛在方波命令的輸出加入一加減速控制功

能方塊以減緩命令變化的幅度增加馬達運動的平順建立的測試方塊圖如下

方塊圖中的模組功能說明如下

1用 fg1產生測試用的方波位置命令 2將方波位置命令送到加減速控制方塊處理後產生新的位置命令再將新的位置命

令與位置回授訊號送到 PD控制器方塊中產生電壓控制訊號最後透過 io2模組將訊號送出到伺服介面驅動馬達轉動

對應之 plc檔程式說明(exp_accplc) echo off 畫面顯示開始

run dsp 0 選擇 DSP1

run stop run reset 既有程式停止

run testDCMmem 下載指定程式

das 1 ampfg1out 0 1024 PWM 波形 Volt 設定 DAS 頻道1

das 2 ampcn1out 0 1024 加速控制 Volt 設定 DAS 頻道2

das 3 ampio1spd 0 1024 馬達速度 Volt 設定 DAS 頻道3

das 4 ampio1ang 0 1024 馬達角度 Volt 設定 DAS 頻道4

plot select 0 設定示波器頁數

plot xunit 100000 0 設定示波器 X軸

plot yunit 1 2000 -300 設定示波器 Y1 軸

plot yunit 2 2000 -100 設定示波器 Y2 軸

plot yunit 3 50 100 設定示波器 Y3 軸

plot yunit 4 2000 300 設定示波器 Y4 軸

48

plot trigger 1 0 1 10 設定示波器觸發

plot scope 9 1 2 3 4 設定示波器顯示

module io2 設定 io2 模組

s cmd ampcn2out

module fg1 設定 fg1 模組

s kAmp 2000 s kFrq 150

module cn1 設定 cn1 模組

s cmd ampfg1out

module cn2 設定 cn2 模組

s cmd ampcn1out s fdk ampio1ang s kp 0x300 s kd 0x4000

module ft1 設定 ft1 模組

s u ampfg1out s dt 2 s ka 320

module io3 設定 io3 模組

s led ampfg1out

module 回復預設模組

run 1khz 設定抽樣頻率為 4KHz

run start DSP 開始執行

das stop pause 1 DAS 啟動 das start DAS 啟動

echo on 回復正常訊息顯示

CAI操控設計畫面規劃如下(EXP_accCAI) page 1 畫面設計

49

page 2 畫面設計與實驗一 page 2相同畫面 page 3 畫面設計與實驗二 page 4相同畫面

參數設定參考之前各實驗的說明可線上機動性的調整 PD控制器中的 kp和 kd值以調整系統之響應 實測響應圖

訊 號 說 明 訊 號 說 明 ch1 方波產生器產生之位置命令 ch3 馬達角位置 ch2 加減速模組輸出之位置命令 ch4 馬達角速度訊號

50

圖一 直流馬達經加減速控制後之閉迴路控制響應圖

51

65 實驗 5-正弦波的位置控制 實驗說明在本實驗中改變命令的波形由方波改變為正弦波並建立如下的測

試方塊圖與上一實驗相比較僅更改命令的波形產生方塊 方塊圖中的模組功能說明如下 1用 fg2產生測試用的弦波位置命令 2將弦波位置命令送到加減速控制方塊處理後產生新的位置命令再與 io1 讀入的位

置回授訊號送到 PD 控制器方塊中產生電壓控制訊號再透過 io2 模組將訊號送出到伺服介面驅動馬達轉動

對應之 plc檔程式說明(exp_sinplc) echo off 畫面顯示開始

run dsp 0 選擇 DSP1

run stop run reset 既有程式停止

run testDCMmem 下載指定程式

das 1 ampfg2out 0 1024 SIN 波形 Volt 設定 DAS 頻道1

das 2 ampcn1out 0 1024 加速控制 Volt 設定 DAS 頻道2

das 3 ampio1spd 0 1024 馬達速度 Volt 設定 DAS 頻道3

das 4 ampio1ang 0 1024 馬達角度 Volt 設定 DAS 頻道4

plot select 0 設定示波器頁數

plot xunit 100000 0 設定示波器 X軸

plot yunit 1 2000 -300 設定示波器 Y1 軸

plot yunit 2 2000 -100 設定示波器 Y2 軸

plot yunit 3 50 100 設定示波器 Y3 軸

plot yunit 4 2000 300 設定示波器 Y4 軸

plot trigger 1 0 1 10 設定示波器觸發

52

plot scope 9 1 2 3 4 設定示波器顯示

module io2 設定 io2 模組

s cmd ampcn2out

module fg2 設定 fg1 模組

s kAmp 2000 s kFrq 100

module cn1 設定 cn1 模組

s cmd ampfg2out

module cn2 設定 cn2 模組

s cmd ampcn1out s fdk ampio1ang s kp 0x300 s kd 0x4000

module ft1 設定 ft1 模組

s u ampfg2out s dt 2 s ka 320

module io3 設定 io3 模組

s led ampfg2out

module 回復預設模組

run 1khz 設定抽樣頻率為 4KHz

run start DSP 開始執行

das stop pause 1 DAS 啟動 das start DAS 啟動

echo on 回復正常訊息顯示

CAI操控設計畫面規劃如下(EXP_sinCAI) page 1 畫面設計

53

page 2 畫面設計 page 3 畫面設計與實驗二 page 4相同畫面

方塊的參數設定可調整 PD控制器中的 kp和 kd值以調整系統之響應 實測響應圖

訊 號 說 明 訊 號 說 明 ch1 弦波產生器產生之位置命令 ch3 馬達角位置訊號 ch2 加減速模組輸出之位置命令 ch4 馬達角速度訊號

54

直流馬達之閉迴路弦波加減速位置控制響應圖

55

7組合語言說明

本節將針對 DC馬達伺服控制實驗專用的程式模組進行功能與程式碼的說明其

有關於波形產生器與資料擷取模組等說明如下

SIN_waveasm 正弦波產生器 PWM_waveasm 方波產生器 IIR1_filterasm 一階濾波器 DAS4asm 資料蒐集模組

弦波產生器

此模組會產生週期性的正弦波方塊圖如下

outfrq

kBiasbias

ampkAmp

kFrqth

kThf=1TB

θ

A

其中

1正弦波有四個參數振幅(A)頻率(F)相位(θ)和偏移(B)其公式為 out = A sin(2πF t +θ) + B 2對於單純的正弦波產生器所對映的參數包括 kAmp 振幅值 kFrq 頻率值kFrq=655368000Hz其中 Hz的範圍為 0~4000例如 1000Hz =gt frq=8192 100Hz =gt frq=819 10Hz =gt frq=82 1Hz =gt frq=8 kTh 相角值0~255代表 0~360的相位當 th=0 時為正弦波 th=64 時為餘弦波 th=128時為反相波依此類推 kBias偏移值 3對於可調變的正弦波產生器其對映的輸入點為 amp 控制振幅的輸入點可產生調幅(AM)波形 frq 控制頻率的輸入點可產生調頻(FM)波形 th 控制相位的輸入點可產生調相(PM)波形 bias控制偏移的輸入點可產生雙頻混波(相加)波形 4若不使用調變功能時各個輸入點時的預設值為 amp 指向 kAmp 的位址 frq 指向 kFrq 的位址

56

th 指向 kTh 的位址 bias指向 kBias的位址

模組程式範例SIN_WAVEasm

local amp R0 IP kAmp 輸入點sin波的振幅 local frq R1 IP kFrq 輸入點sin波的頻率 local th R2 IP kTh 輸入點sin波的相角 local bias R3 IP kBias 輸入點sin波的中心偏移 local out R4 OP 輸出點sin波輸出 local tab R5 TP 表格指標指向 sin[256]的表格 local ang R6 內部變數相位角65536=360deg local kAmp R7 1000 參數振幅值 local kFrq R8 1000 參數頻率值=655368000Hz local kTh R9 0 參數相角值360deg=256 local kBias R10 0 參數偏移值 data 11 模組變數區長度及初值 initial 啟動程序 WR ang0 WR out0 ang=out=0 RET timer 即時控制程序(8KHz) RD ang ADD (frq) WR ang ang+=frq SFR 8 ADD (th) AND 255 ACC=sin(ang256+th) ADD tab WRH RDM table-look-up MUL (amp) SFR 12 ADD (bias) WR out out=ACCamp4096+bias RET table tab 256 sin[256]表格區10=4096 0 101 201 301 401 501 601 700 00~070deg 799 897 995 1092 1189 1285 1380 1474 08~0F 1567 1660 1751 1842 1931 2019 2106 2191 10~17 2276 2359 2440 2520 2598 2675 2751 2824 18~1F 2896 2967 3035 3102 3166 3229 3290 3349 20~27 3406 3461 3513 3564 3612 3659 3703 3745 28~2F 3784 3822 3857 3889 3920 3948 3973 3996 30~37 4017 4036 4052 4065 4076 4085 4091 4095 38~3F 4096 4095 4091 4085 4076 4065 4052 4036 40~4790deg 4017 3996 3973 3948 3920 3889 3857 3822 48~4F 3784 3745 3703 3659 3612 3564 3513 3461 50~57 3406 3349 3290 3229 3166 3102 3035 2967 58~5F

57

2896 2824 2751 2675 2598 2520 2440 2359 60~67 2276 2191 2106 2019 1931 1842 1751 1660 68~6F 1567 1474 1380 1285 1189 1092 995 897 70~77 799 700 601 501 401 301 201 101 78~7F 0 65435 65335 65235 65135 65035 64935 64836 80~87180deg 64737 64639 64541 64444 64347 64251 64156 64062 88~8F 63969 63876 63785 63694 63605 63517 63430 63345 90~97 63260 63177 63096 63016 62938 62861 62785 62712 98~9F 62640 62569 62501 62434 62370 62307 62246 62187 A0~A7 62130 62075 62023 61972 61924 61877 61833 61791 A8~A8 61752 61714 61679 61647 61616 61588 61563 61540 B0~B7 61519 61500 61484 61471 61460 61451 61445 61441 B8~BF 61440 61441 61445 61451 61460 61471 61484 61500 C0~C7270deg 61519 61540 61563 61588 61616 61647 61679 61714 C8~CF 61752 61791 61833 61877 61924 61972 62023 62075 D0~D7 62130 62187 62246 62307 62370 62434 62501 62569 D8~DF 62640 62712 62785 62861 62938 63016 63096 63177 E0~E7 63260 63345 63430 63517 63605 63694 63785 63876 E8~EF 63969 64062 64156 64251 64347 64444 64541 64639 F0~F7 64737 64836 64935 65035 65135 65235 65335 65435 F8~FF

就程式結構而言說明如下

timer 即時控制程序(8KHz) RD ang ADD (frq) WR ang ang+=frq SFR 8 ADD (th) AND 255 ACC=sin(ang256+th) ADD tab WRH RDM table-look-up MUL (amp) SFR 12 ADD (bias) WR out out=ACCamp4096+bias RET

1基本上我們以查表法計算 sin()其輸入θ的範圍為 0~255對映到 0~360deg其輸出 sin(θ)的範圍為+-4096對映到+-10的範圍

2建立一個內部變數 ang其範圍為 0~65535對映到 0~360的相位角 3每個timer程序都執行 ang+=frq的動作更新目前的相位角接著依照 ang的相位角查表得到 sin(ang256+th)值

4由於表格長度為 256-word所以必須將 ang256才能得到正確的對映關係而 th範圍為 0~255所以不需要像 ang一般的做額外處理

5sin()的範圍為(+1-1)而在表格中以(+4096~-4096)的型式記錄相當於 10=4096所以執行 Asin()時還要用 SFR12指令做4096的動作才能正確的取得輸出值

58

6就頻率輸入 frq而言其計算原則是將θ=ωt轉化成θ=Σ(ωdt)因為抽樣頻率

為 8KHz所以 dt=18000而得到 frq=655368000Hz公式其中 Hz為真正的頻率在 8KHz的抽樣頻率下其範圍為 0~4000

鋸齒波產生器

此模組會產生週期性的鋸齒波方塊圖如下

outfrq

kBiasbias

ampkAmp

kFrqth

kThf=1TB

θ

A

其中

1鋸齒波也有四個參數振幅(A)頻率(F)相位(θ)和偏移(B)和正弦波的定義完全一致唯一的差異是其輸出為鋸齒波而非正弦波

2基本波形是從週期開始時為 0一直遞增到週期結束時到達最高點然後立刻回歸

到 0重新開始 3以程式結構而論鋸齒波程式幾乎就是正弦波的相位計算部分只差沒有正弦波的

查表處理而已

模組程式範例SAW_WAVEasm

local amp R0 IP kAmp 輸入點sin波的振幅 local frq R1 IP kFrq 輸入點sin波的頻率 local th R2 IP kTh 輸入點sin波的相角 local bias R3 IP kBias 輸入點sin波的中心偏移 local out R4 OP 輸出點sin波輸出 local ang R5 內部變數相位角65536=360deg local kAmp R6 1000 參數振幅值 local kFrq R7 1000 參數頻率值=655368000Hz local kTh R8 0 參數相角值360deg=256 local kBias R9 0 參數偏移值 data 11 模組變數區長度及初值 initial 啟動程序 WR ang0 WR out0 ang=out=0 RET timer 即時控制程序(8KHz) RD ang ADD (frq) WR ang ang+=frq SFR 8 ADD (th) AND 255 ACC=(ang256+th)amp0x00ff MUL (amp) SFR 8 ADD (bias) WR out out=ACCamp256+bias

59

RET

脈衝波產生器

outfrq

kBiasbias

ampkAmp

kFrqth

kThf=1TB

θ

A

pwm

kDutyduty

此模組會產生週期性的脈衝波方塊圖如下

其中

1脈衝波有五個參數其中振幅(A)頻率(F)相位(θ)和偏移(B)四個參數和正弦波

定義完全一樣另外再增加一個負載率(D) 2基本波形是從週期開始時為 1隔段時間後換為 0然後持續到週期結束再重新開始其中 1所佔有的比例就是負載率當 D=0時為 0而 D=255時為 100

3和其他參數類似負載率(D)以 duty為其輸入點而以 kDuty為其參數值

模組程式範例PLS_WAVEasm

local amp R0 IP kAmp 輸入點脈衝波的振幅 local frq R1 IP kFrq 輸入點脈衝波的頻率 local th R2 IP kTh 輸入點脈衝波的相角 local bias R3 IP kBias 輸入點脈衝波的中心偏移 local duty R4 IP kDuty 輸入點脈衝波的負載率 local out R5 OP 輸出點脈衝波輸出 local ang R6 內部變數相位角65536=360deg local kAmp R7 1000 參數振幅值 local kFrq R8 1000 參數頻率值=655368000Hz local kTh R9 0 參數相角值360deg=256 local kBias R10 0 參數偏移值 local kDuty R11 128 參數負載率100 =256 data 12 模組變數區長度及初值 initial 啟動程序 WR ang0 WR out0 ang=out=0 RET timer 即時控制程序(8KHz)

60

RD ang ADD (frq) WR ang ang+=frq SFR 8 ADD (th) AND 255 ACC=(ang256+th)amp0x00ff SUB (duty) RD (amp) JLT t1 RD 0 ACC=(amp0) t1 ADD (bias) WR out out=ACC+bias RET

IIR 一階濾波器

此模組執行一階的 IIR濾波器方塊圖如下

kau x

Z-1

+

+

-

+低通濾波器

高通濾波器dx lp

hp

濾波器參數的計算公式如下

1假設濾波器的頻寬為 hz則 ωn=hz628 2若系統頻率為 8KHz則抽樣週期 dT為 dT=dt8000 其中 dt為模組參數 3則濾波器參數為 ka=ωndT4096或是 =hzdt62880004096即 =hzdt32 4當 dt決定後所允許的訊號頻寬為(4000dt)換句話說訊號頻寬會因為 dt增加而下降

為了方便實驗的運用下面列出常用的參數對照表

濾波頻寬

(Hz)

10 20 50 100 200 500 1000 2000

訊號頻寬

(Hz)

400 800 2000 4000 4000 4000 4000 4000

模組參數 dt 10 5 2 1 1 1 1 1

模組參數 ka 320 320 320 320 640 1600 3200 6400

表格的運用方式如下

1首先決定濾波頻寬 2接著查表找出對映的參數 dt和 ka 3再查表得到對映的訊號頻寬以決定是否需要串接前級濾波器

61

模組程式範例IIR1_FILTERasm

local u R0 IP 輸入點濾波器輸入 local lp R1 OP 輸出點低通濾波器輸出 local hp R2 OP 輸出點高通濾波器輸出 local dt R3 1 參數抽樣週期 local ka R4 4096 參數增益 ka10=4096 local prd R5 內部變數抽樣週期用 data 6 模組變數區長度 initial 開機啟動程序 WR lp0 WR hp0 WR prd1 RET lp=hp=0prd=1 timer 即時控制程序 SUB prd1 JNZ b9 if (--prdgt0) return RD dt WR prd prd=dt RD (u) SUB lp WR hp hp=u-lp MUL ka SFR 12 ADD lp WR lp lp+=(hpka4096) b9 RET

資料蒐集模組

資料蒐集模組是一個非常特殊的模組專門配合 eTTY 程式中的示波器使用

模組程式範例DAS4asm

local cmd R0 0 紀錄命令0=停止1=前置記錄2=正觸發4=負觸發6=觸發記錄 local dt R1 1 抽樣週期每 dT抽樣一次 local tab R2 TP DAS表格啟始位址 local cnt R3 0 目前記錄點(0~255) local ch1 R4 0 定義頻道1的變數位址 local ch2 R5 0 定義頻道2的變數位址 local ch3 R6 0 定義頻道3的變數位址 local ch4 R7 0 定義頻道4的變數位址 local trg R8 0 定義觸發頻道的變數位址 local th R9 0 觸發準位 local tail R10 0 觸發後的抽樣個數 local buf R11 1 抽樣計數(1~dt) local pnt R12 表格位址計算pnt=tab+cnt4 local len R13 表格長度計算(0~256) data 14 定義模組變數區的長度 table tab 1024 定義表格的長度 initial 啟動程序 WR cmd0 RET cmd=0 timer 控制程序

62

ADD cmd0 JZ t9 if (cmd==0) return SUB buf1 JNZ t9 if (--buf)gt0) return RD dt WR buf dt=buf RD cnt ADD 1 AND 0xff WR cnt cnt=(cnt+1)amp0xff SFL 2 ADD tab WR pnt pnt=tab+cnt4 RD (ch1) WR (pnt) ADD pnt1 pnt++=ch1 RD (ch2) WR (pnt) ADD pnt1 pnt++=ch2 RD (ch3) WR (pnt) ADD pnt1 pnt++=ch3 RD (ch4) WR (pnt) pnt =ch4 RD cmd SUB 1 JZ t9 SUB 1 JZ t2 SUB 1 JZ t3 SUB 1 JZ t4 SUB 1 JZ t5 SUB 1 JZ t6 JR t7 t2 RD (trg) SUB th JGE t9 ADD cmd1 JR t9 wait trgltth t3 RD (trg) SUB th JLE t9 JR t6 wait trggtth t4 RD (trg) SUB th JLE t9 ADD cmd1 JR t9 wait trggtth t5 RD (trg) SUB th JGE t9 JR t6 wait trgltth t6 WR len0 WR cmd7 len=0cmd=7 t7 ADD len1 SUB tail JLT t9 WR cmd0 if ((++len)gt=0x80) cmd=0 t9 RET

與 DC 馬達控制相關的程式模組有以下 4個程式模組說明如下

(1)加減速控制模組 ACC_controlasm (2)光電盤輸入模組 POS_inputasm (3)PWM輸出模組 PWM_outputasm (4)PD控制模組 PD_controlasm

71加減速控制模組 此程式模組主要功能在於執行位置控制的加減速命令修正其數學模式採用 Lynn

濾波器的架構參見下圖

cmd

2

+

old Z -1

-

Z -1

Z -1

Z-1

Z-1x0 x1 x8 x9 x16

+ -

++

2

Z-1

Z-1 y1 y2

+

-

y0

+ +

sumZ-1

+164

12

out

dif

+

63

加減速控制模組方塊圖

其中

1Lynn 濾波器的階數固定成八階也就是 m=8其公式為 H(z) = (1-2Z-m+Z-2m)(1-2Z-1+Z-2)m2

2因為m=8所以m2=64因此最後計算低通濾波的部份時要先做除 64的運算 3因為低通濾波(lp)和 y0之間有 64倍的差異代表 y0y1y2的變化範圍比濾波器輸

入值要擴大許多例如輸入值在+-1000變化時y0y1y2很可能會在+-64000之間變化這範圍已經超出整數處理的範圍很可能會造成錯誤的計算結果

4所以在實驗時輸入值的變化範圍必須控制在+-500之間以保證計算的正確性 5對於 Lynn 濾波器當 m=8時其濾波器的頻寬固定為 1 kHzmdt也就是 dt=1時頻寬為 125 Hz dt=2時頻寬為 625Hz依此類推 6對於 Lynn 濾波器其濾波器的延遲固定為 m個抽樣週期因此設計 hp = x8 - lp 即可得到高通濾波器的對應結果 7其中乘 2和除 64的運算以移位運算取代所以整個程式中並無任何乘法運算 8Lynn 濾波器本身並不是穩定濾波器所以在程式啟動時必須確實的將所有狀態

(x0~x16)歸零否則會產生不穩定的狀態輸出

因為 Lynn濾波器中所有參數固定所以除了抽樣週期 dt 之外並無任何可調參數

抽樣週期 dt 可以控制頻寬dt 越大則濾波器頻寬越低

將步階命令值的輸出送入 Lynn 濾波器中經由低通濾波器的效應可以減緩命

令的變化程度達到加減速控制的目的以下為使用 Lynn 濾波器型式實現加減速控

制的組合語言程式列印 如欲更進一步瞭解 Lynn 濾波器與 FIR 數位濾波器之間的關係可以參考通訊實驗

四數位濾波器設計(FIR)中之說明

ACC_controlasm程式列印 local cmd R0 IP 輸入點位置命令

local out R1 OP 輸出點加減速處理後的位置命令

local dif R2 OP 輸出點位置微分命令

local axis R3 0 馬達編號0=X1=Y2=Z3=C

local old R4 內部變數微分計算用

local sumL R5 內部變數積分計算用

local sumH R6 內部變數積分計算用

local y0 R7 內部變數y(0~2)

local y1 R8 local y2 R9

local x0 R10 內部變數x(0~16)

local x1 R11 local x2 R12 local x3 R13 local x4 R14

local x5 R15 local x6 R16 local x7 R17 local x8 R18

local x9 R19 local x10 R20 local x11 R21 local x12 R22

local x13 R23 local x14 R24 local x15 R25 local x16 R26

64

data 27 模組變數區長度

initial 開機啟動程序

WR dif0 RD (cmd) WR out WR old dif=0 out=old=cmd

sumHL=cmd64

SFL 6 WR sumL RD out SFR 10 SGN 5 WR sumH

RPT 17 WR x00 RPT 3 WR y00 RET x[0~16]=0y[0~2]=0

timer 即時控制程序

RD (cmd) SUBX old WR x0 x0=cmd-old old=cmd

SUB x81 ADD x16 ADD y11 SUB y2 WR y0 y0=x0-2x8+x16+2y1-y2

SGN ADD sumL WR sumL RDH ADC sumH WR sumH sumHL+=y0

WRH RD sumL SFR 6 WR out out=sumHL64

RD y0 SGN SFR WR dif dif=y032mm

RD x0 RPT 16 RDX x1 x[i]=x[i-1] i=1~16

RD y0 RDX y1 WR y2 y[i]=y[i-1] i=1~2

b9 RET

72光電盤輸入模組

DC馬達的位置由光電盤量測之預設儲存於 0xac與 0xbe二個輸入埠位址中其中位址 0xac記錄 X軸馬達的位置位址 0xbe記錄 Y軸馬達的位置由於本實驗的DC馬達接在 Y軸的位置上因此程式中直接選用 Y軸的輸入 光電盤位置輸入的程式列印如下其中速度由位置的差分而得至於馬達的位置

則使用內部 2個 word加以記錄精度為 32位元 POS_inputasm程式列印 local spd R0 OP 輸出點速度量測值

local ang R1 OP 輸出點角度量測值

local angH R2 內部變數角度的 32 位元部分

local mode R3 0x308 模式選擇15MHzAB 相正反向輸入

local pht R4 0xac 輸入阜地址光電盤輸入(0xac)

local phtc R5 0xbe 輸入阜地址光電盤模式(0xbe)

local old R6 內部變數速度更新用

data 7 模組變數區長度

initial 開機啟動程序

RD mode WR (phtc) phtc=mode

RD (pht) WR old WR spd0 RET old=phtspd=0

timer 即時控制程序

RD (pht) SUBX old SGN 11 WR spd spd=(pht-old)old=pht

65

ADD ang WR ang angHL+=spd

RDH ADC angH WR angH

RET

73 PWM輸出控制模組 模組方塊

cmd PWM輸出

程式說明 1在開機時將切換保護時間寫到輸出阜 0xbc上其中切換保護值為 0~6360=5us 2在每次 timer interrupt時將 cmd訊號處理後寫到輸出阜 0xb8上

PWM_outputasm程式列印 local cmd R0 IP gnd 輸入點v相命令

local gain R1 4096 參數輸出增益1=4096

local bias R2 2048 參數輸出偏壓0=2048

local limit R3 4095 參數輸出極限1=4095

local zone R4 0x88f0 參數頻率=12KHz切換保護=5us

local pwm R5 0xb8 輸出阜地址PWM0 輸出(0xb8)

local mode R6 0xbc 輸出阜地址PWM 模式(0xbc)

local p0md R7 0xf8 輸出阜地址port0 模式(0xf8)

local gnd R8 0 輸入接地點

data 9 模組變數區長度

initial 開機啟動程序

RD bias WR (pwm) pwm=bias

RD 0xffff WR (p0md) set port0 mode

RD zone WR (mode) RET mode=zone

stop 關機保護程序

RD bias WR (pwm) RET pwm=bias

timer 即時控制程序

RD (mode) xor 1 and 1 WR (mode) trigger watch-dog

RD (cmd) MUL gain SFR 12 ADD bias ACC=(cmdgain4096)+bias

MAX 0 MIN limit WR (pwm) pwm=limit(ACC)

RET

66

74 PD 控制模組

PD控制的模組方塊參見圖二十一所示其中比例控制的部份直接由增益 kp加以調整微分控制的部份則由誤差的差分經增益 kd的調整而得

Σ+

-

cmd

fdk

err out

Σ

pk

dk

Σ

+

+

+

-

old1minusZ

PD控制器的方塊圖

PD_controlasm程式列印 local cmd R0 IP gnd 輸入點位置命令(可忽略)

local fdk R1 IP gnd 輸入點位置回授(可忽略)

local out R2 OP 輸出點用以控制速度迴路

local kp R3 256 參數增益 kp10=256

local kd R4 0 參數增益 kd10=256

local err R5 0 內部變數

local old R6 0 內部變數

local gnd R7 0 無輸入時的短路點

data 8 模組變數區長度

initial 開機啟動程序

WR out0 WR old0 RET out=old=0

timer 即時控制程序

RD (cmd) SUB (fdk) PRTF WR err

MUL kp SFR 8 P=(cmd-fdk)kp256

RDS err SUBX old MUL kd SFR 8 D=(err-old)kd256

ADDS

WR out out=P+D

RET

程式中預設增益值的 10以整數值 256為基底因此使用 SFR 8的指令加以調

整另外在在計算微分項的程式部份用到 SUBX old的指令其詳細的暫存器動作如

下 參考 piDSP的指令說明SUBX指令將總共用到 3個時序參考錯誤 找不到參照

67

來源在時序 1時將原先 AX的資料拷貝一份到 HX中時序 2時正式執行減

法的動作所以 AX暫存器中的內容會變成 err-old時序 3時DSP會將存放在 HX暫存器中的內容拷貝一份到 old的記憶體中也就是經由 SUBX此一精簡指令將

同時完成計算差分所需要的相減與資料疊代的動作有效的利用 piDSP控制器 DSP核心的精簡指令將可以大幅提昇系統的計算速度

HX AXoldSUBXerr err

old

err

errerr olderr minus

1_err

errerr olderr minus err

1_err

1

2

3

SUBX的指令時序與暫存器變化

68

8附錄快速安裝說明

光纖網路通訊 FPGA 發展系統 (適用於 WIN-XP200098 系統)

快速安裝說明

26Pin 負載輸出入埠

雙電源︵5

12

伏︶輸入埠

單電源︵5

伏︶輸入埠

USB

光纖線輸

號 光纖線輸出埠

入 傳 埠

首先將光碟片 RFFPGA 目錄檔案拷貝在您工作硬碟裡面

第一次安裝時先將 USB 傳輸線接上電腦主機將電源供應器接上 FPGA 模組此時電

腦會出現安裝 USB-Serial 驅動程式選擇從清單安裝此驅動程式放置在光碟片

RFFPGA-USBdrive 選擇您目前安裝系統

可選擇 WIN-98WIN-MEWIN-2000WIN-XP 系統配合您現在工作電腦作業系統

69

注意一般電腦 USB 埠很多插口當您安裝驅動程式時是配合您當時插入之埠

下次如您插入不同接口埠時電腦會再次要求安裝驅動程式這是正常現象請再次安

裝驅動程式否則無法使用

FPLC 操作

首先進入 RFFPGA裡子目錄 testASM直接點選 fPLCexe 出現下面操作畫面(也可直接將

此檔案放置桌面直接點選)

(或者選擇 File 再執行 Setuphellip 選擇您要執行 CAI 檔)

70

進入下面操作畫面 首先使用滑鼠在 FPGA下載按鈕單擊動作使 FPGA變成 DSP晶片 實驗一至實驗五皆為使用 DSP組合語言設計程式其原始程式分別為 testASM1至testASM5可使用 texPad 開啟與編輯程式內容 實驗三與實驗五多有 IO控制動作 當選擇實驗三時出現下面畫面

71

eM_USB 模組

數字型 LED

0 1 2 34 5 6 78 9 A BC D E F

燈號型 LED

44 鍵盤

ADC0 ADC1 DAC0 DAC1

LED 選擇KEY 選擇

模 式 1

0123

注意操作畫面 3與 4 說明開關與按鍵選擇位置後選擇程式下載再按程式啟動如您

按下 0-3按鍵時燈號型 LED會有不同方向閃爍顯示程式停止時結束所有 IO控制動作再按回首頁選擇其他實驗 實驗四與實驗五

模式3

0 1 2 34 5 6 78 9 A BC D E F

按照上面開關選擇直接操作如果以上實驗皆能按照正常操作表示您光纖網路通訊

FPGA發展模組以能正常使用 注意 開機與關機動作順序如下

開機電腦啟動 --- eM_USB 模組電源接上 --- USB 接上電腦 ---

啟動 FPLC 軟體 --- 下載 FPGA 程式

關機關閉 FPLC 軟體 --- eM_USB 模組電源拔掉 --- 拔掉電腦 USB 接頭 ---關掉

電腦

如果以上順序有亂可能造成 USB 找不到驅動造成無法下載經過幾次測試還是

無法下載建議重新啟動電腦主機按照正確步驟操作

72

FPGA 下載操作

進入 FPLC 操作系統按照下列步驟選擇節點模組與下載 bit FPGA 檔案

在 VHDLDEMO 子目錄下您可以選擇您目前 FPGA 種類型號在此型號下我們已將 VHDL

與數位邏輯設計課本範例全部放於此處

73

光纖網路連線 FPGA 下載操作

首先利用光纖線將 eM_USB0 模組光纖輸出埠接至 eM_USB1 模組光纖輸入埠以此

類推最後再將最後 eM_USBN 模組光纖輸出埠接至 eM_USB0 模組光纖輸入埠配置

如附圖方式

個人電腦(Windows) eM_USB模組

0USB

eM_USB模組1

光纖網路

eM_USB模組2

eM_USB模組N

配置完成後進入 FPLC 系統首先必須先將 Node00 下載在 testASM 子目錄裡

piDSPv0bit 檔讓 eM_USB0 模組 FPGA 具備 DSP 功能才能執行光纖網路通訊

操作如下

此時您就可以選擇分別下載至各模組 FPGA 檔 bit

74

安裝 FPLC 注意事項

當您進入 FPLC 時

按 FILE 選擇 programhellip 選擇檔案為 exp_dcmplc 出現下面畫面

正常顯示畫面為

75

DOS 環境操作

在 PC 端的操作是在 Windows 環境中的 DOS 視窗中執行指令範例如下

eFPGA progNETbit 下載 FPGA電路至網路節點0(即 USB節點)中 eFPGA testLEDbit 1 下載 FPGA電路至網路節點1中

對於單一節點的控制程序如下

1將 eM_USB模組連結個人電腦的 USB端 2eM_USB模組開機 3執行下載指令即可 eFPGA xxxxbit 4若要更改 FPGA電路只要重新執行下載指令即可

對於多個網路節點的控制程序如下

1第一組 eM_USB模組連結個人電腦的 USB端再以光纖網路依序其他各節點 2連接 USB界面者為模組0從光纖發射端連接出去的模組為1依此類推 3將所有 eM_USB模組開機 4執行下載指令如下 eFPGA progNETbit 模組0必須先下載指定的 FPGA電路 eFPGA xxxxbit 1 再依序下載其他網路模組的 FPGA電路 eFPGA yyyybit 2 eFPGA zzzzbit 最後再重新下載模組0的 FPGA電路 5換句話說模組0必須先執行 progNETbit讓光纖網路接受 FPGA控制後才能透過光纖網路下載至其他節點等全部網路節點下載完畢後再將模組0的 FPGA重新下載讓模組0也可自由執行任意的 FPGA電路

6若要更改某一個網路節點中的 FPGA電路只要重新執行下述指令 eFPGA progNETbit 模組0必須先下載指定的 FPGA電路 eFPGA yyyybit 2 下載指定網路模組的 FPGA電路 eFPGA zzzz bit 最後再重新下載模組0的 FPGA電路 換句話說除非模組0中的 FPGA已經包括光纖網路管理電路否則一定要先在

模組0中下載網路管理電路後才能下載指定網路節點的 FPGA電路

76

光纖網路通訊 FPGA 發展系統

系統配置

光纖網路通訊 FPGA 發展系統的系統配置圖如下

個人電腦(Windows) eM_USB模組

0USB

eM_USB模組1

光纖網路

eM_USB模組2

eM_USB模組N

其中

1基本模組為 eM_USB模組可用 USB界面和個人電腦連線並提供 USB對光纖網路的轉換功能使得個人電腦可以獨立控制光纖網路中的每個網路節點

2eM_USB模組也可以作為光纖網路中的網路節點透過光纖網路而接受個人電腦的

監控 3就個人電腦而言不論是 USB界面直接連結或是以光纖網路間接連結的 eM_USB模組都是可以直接監控的網路節點最多可以同時控制一個 USB節點和 30個網路節點

4對於每一個網路節點個人電腦都可執行 eM_USB模組中 FPGA的電路下載工作並在適當的 FPGA電路配合下可執行 eM_USB模組中 FPGA內部電路的讀寫控制 5透過適當的 FPGA電路設計各網路節點都可透過光纖網路和其他任何網路節點

作同步通訊執行 FPGA內部記憶體的資料交換資料交換頻率可達 1KHz以上

77

網路模組配置

每個網路模組的標準配置圖如下

eM_USB模組光纖網路

USB eM_FPGA卡

eM_DEMO模組

eM_EXP實驗模組

DC電源

其中

1網路模組以 eM_USB模組為主提供基本的 USB界面和光纖網路連線 2eM_USB模組中的 FPGACPLD採用插卡型式可選擇不同的 eM_FPGA卡包括

eM_2V1K卡可選用 Virtex系列的 XC2V250和 XC2V1000 eM_3S1K卡可選用 Spartan3系列的 XC3S400XC3S1000和 XC3S1500 eM_3S50卡可選用 Spartan3系列的 XC3S50XC3S200和 XC3S400 eM_95XL卡可選用 9500XL系列的 XC95144XL和 XC95288XL 3eM_USB模組中的對外連線有兩種一種是 26P接頭用以連接既有的各種實驗模

組另一種是兩組 50P接頭將 FPGA中各接腳引出用以連接專題實驗 4eM_DEMO模組就是插上 50P接頭的教學模組其中包括 LED 數字顯示和 44鍵盤也具備兩組的 ADC和兩組的 DAC接頭提供類比訊號的測試工具

常用的實驗組合包括

1精簡組合包括(eM_USB+eM_FPGA)提供基本的網路節點適用於專題實驗 2標準組合包括(eM_USB+eM_FPGA+eM_DEMO)提供基礎 FPGA設計的教學實驗

3實驗組合包括(eM_USB+eM_FPGA+eM_DEMO+eM_EXP)提供進階的 FPGA實驗可依需求選用不同的實驗模組

78

eM_USB 模組

eM_USB 模組的電路配置圖如下

TxRx

DCPower

USB

JP2

JP3

光纖界面

外加電源

PC連線

JP1

eM_FPGA模組

FT232 CPLD FlashROM

SRAM

10cm

6cm

JP4

其中

1對外的連線接頭包括 DC電源 可選擇單電源(5V)或是多電源(5V+12V-12V)兩種 USB界面 直接連接個人電腦 光纖界面連接光纖網路 2實驗界面包括 JP1負責內部 CPLD的電路下載 JP2JP3兩組 50P的擴張用接頭 JP4 標準 26P接頭用以連接各種實驗模組 3內部的電路配置包括 A以 SO-DIMM接頭連接各種 eM_FPGA卡 B內附 EEPROMFlashROM和 SRAM提供 FPGA作應用測試 C以一顆 FT232BM作為 USB界面解碼而以一顆 CPLD作為光纖網路解碼 D提供各種 eM_FPGA卡的電路下載功能 4內附五顆 LED由上而下依序為 usbLED指示 USB界面的讀寫狀態 tstLED可由 FPGA電路自行定義 stsLED可由 FPGA電路自行定義 RxLED 可由 FPGA電路自行定義 TxLED 可由 FPGA電路自行定義

79

外部接腳定義

外部接頭的接點順序圖示如下

上視圖

JP11 9 JP4

126225

JP31

50249

JP21

50249

而各接頭的接點定義如下

JP1 JP4 JP2 JP3 1+33V 1+12V 2+12V 1 GND 2 GND 1 GND 2 GND 2GND 3 ADC 4 DAC 3POWER 4ALARM 3 +5V 4 +5V 3nc 5 yPB2 6 yPB3 5RxNET 6TxNET 5+12V 6+12V 4TCK 7 yPB1 6 yPB4 7RxUSB 6TxUSB 7-12V 6-12V 5nc 9 yPB0 10yPB5 9RxCAN 10TxCAN 9 ADC 10 DAC 6TDO 11yPB6 12yPB7 11P0D0 12P0D1 11P1D0 12P1D1 7TDI 13yGND 14yPC3 13P0D2 14P0D3 13P1D2 14P1D3 8nc 15yPC2 16yPC1 15P0D4 16P0D5 15P1D4 16P1D5 9TMS 17yPC0 18yPA0 17P0D6 18P0D7 17P1D6 18P1D7 19yPA1 20yPA2 19P0D8 20P0D9 19P1D8 20P1D9 21yPA3 22GND 21P0D10 22P0D11 21P1D10 22P1D11 23GND 24+5V 23P0D12 24P0D13 23P1D12 24P1D13 25+5V 26nc 25P0D14 26P0D15 25P1D14 26P1D15 27P2D0 28P2D1 27PxA0 28PxA1 29P2D2 30P2D3 29PxA2 30PxA3 31P2D4 32P2D5 31PxA4 32PxA5 33P2D6 34P2D7 33PxA6 34PxA7 35P2D8 36P2D9 35PxB0 36PxB1 37P2D10 38P2D11 37PxB2 38PxB3 39P2D12 40P2D13 39PxB4 40PxB5 41P2D14 42P2D15 41PxB6 42PxB7 43ADC0 44ADC1 43PxC0 44PxC1 45ADC2 46ADC3 45PxC2 46PxC3 47ADC4 48ADC5 47PxC4 48PxC5 49DAC0 50DAC1 49PxC6 50PxC7

80

eM_FPGA 模組

在各種 eM_FPGA 模組中FPGA 對外電路的標準配置圖如下

24576MHz

FlashROM

26PSRAM

EEPROM

mD[8]

yPA[4]

FPGACPLD

mA[19]mRDmWRmCSeeCKeeCSeeDIeeDO

光纖界面 RxNETTxNET

USB 界面 RxUSBTxUSBCLK24MPOWERALARM

LED

tstLEDstsLEDRxLEDTxLED

yPB[8]yPC[4]

ADCDAC

ADC[8]

實驗模組

ADC[2]

DAC[2]

xPA[4]

xPB[8]

xPC[4]

基礎實驗

其中

1FPGACPLD可以選擇下述幾種 XC2V250XC2V1000 採用 eM_2V1K模組其中 FPGA為 FG456包裝 XC3S400XC3S1000XC3S1500採用 eM_3S1K模組其中 FPGA為 FG456包裝 XC3S400XC3S1000XC3S1500採用 eM_3S1K模組其中 FPGA為 FG456包裝 XC3S50XC3S200XC3S400 採用 eM_3S50模組其中 FPGA為 TQ144包裝 XC95144XLXC95288XL 採用 eM_95XL模組其中 CPLD為 TQ144包裝 2採用 FG456包裝者可以控制所有的 IO界面 3採用 TQ144包裝者只是不能控制 RAM和 FlashROM而可以控制其他所有的界面 4所有 FPGA模組都可自由選擇由 USB界面或是由光纖界面下載電路但是 CPLD模組只能固定由 USB界面下載電路

5所有 FPGACPLD模組都可透過 26P接頭連接既有的各種實驗模組

81

FPGA 接腳對照表

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

mD0 XD6 mD0 A17 C13 -- -- mD1 XD7 mD1 B17 D12 -- -- mD2 XD8 mD2 C17 D11 -- -- mD3 XD9 mD3 D17 C11 -- -- mD4 XD10 mD4 E17 D10 -- -- mD5 XD11 mD5 E16 C10 -- -- mD6 XD12 mD6 E14 D9 -- -- mD7 XD13 mD7 E13 D7 -- -- mA0 XD14 mA0 D13 C7 -- -- mA1 XD15 mA1 C13 D6 -- -- mA2 XA0 mA2 V5 C3 -- -- mA3 XA1 mA3 U5 C4 -- -- mA4 XA2 mA4 Y2 D3 -- -- mA5 XA3 mA5 Y1 D4 -- -- mA6 XA4 mA6 V4 E3 -- -- mA7 XA5 mA7 V3 E4 -- -- mA8 XA6 mA8 W2 F3 -- -- mA9 XA7 mA9 W1 F4 -- -- mA10 XA8 mA10 T2 G6 -- -- mA11 XA9 mA11 T1 K3 -- -- mA12 XA10 mA12 R4 K10 -- -- mA13 XA11 mA13 R3 L3 -- -- mA14 XA12 mA14 R2 L4 -- -- mRD XRD mRD R1 D5 -- -- mWR XWR mWR P6 C6 -- --

POWER P0A0 POWER B4 B20 P1 P5 ALARM P0A1 ALARM A4 A19 P2 P6 RxNET P0A2 RxNET C4 B19 P4 P7 TxNET P0A3 TxNET C5 A18 P5 P9 RxUSB P0B0 RxUSB B5 A15 P6 P10 TxUSB P0B1 TxUSB A5 B15 P7 P11 RxCAN P0B2 RxCAN D6 A14 P8 P12 RxCAN P0B3 TxCAN C6 B14 P10 P13

CLK24M CLK24M CLK24M E12 B12 P124 P38

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

PWM0H P3A0 P0D0 E6 A8 P21 P23 PWM0L P3A1 P0D1 E5 B8 P23 P24 PWM1H P3A2 P0D2 C2 B6 P24 P25 PWM1L P3A3 P0D3 C1 A5 P25 P26 PWM2H P3A4 P0D4 D2 B5 P26 P27

82

PWM2L P3A5 P0D5 D1 A4 P27 P28 PWMenb P3A6 P0D6 E4 B4 P28 P30 PHT1Z P3A7 P0D7 E3 A3 P30 P31 PHT1A P3B0 P0D8 G2 C1 P31 P32 PHT1B P3B1 P0D9 G1 C2 P32 P33 PHT0A P3B2 P0D10 H5 D1 P33 P34 PHT0B P3B3 P0D11 J6 D2 P35 P35 AMP0 P3B4 P0D12 H4 E1 P36 P39 AMP1 P3B5 P0D13 H3 E2 P40 P40 AMP2 P3B6 P0D14 H2 F2 P41 P41 AMP3 P3B7 P0D15 H1 G1 P44 P43 eeSK P0C3 P1D0 C10 B9 P20 P22 eeCS P0C2 P1D1 D10 A9 P18 P21 eeDI P0C1 P1D2 F10 B10 P17 P20 eeDO P0C0 P1D3 E10 B11 P15 P19 ssCK P0B7 P1D4 E8 A11 P14 P17 ssCS P0B6 P1D5 E7 A12 P13 P16 ssDI P0B5 P1D6 A6 B13 P12 P15 ssDO P0B4 P1D7 B6 A13 P11 P14

ppCLK P3C0 P1D8 K4 G2 P46 P44 ppDIN P3C1 P1D9 K3 K1 P47 P45 TxD P3C2 P1D10 K2 K2 P50 P46 RxD P3C3 P1D11 K1 L1 P51 P48

tstLED P3C4 P1D12 L5 L2 P52 P49 stsLED P3C5 P1D13 L4 M1 P53 P50 RxLED P3C6 P1D14 L3 M2 P55 P51 TxLED P3C7 P1D15 L2 N1 P56 P52

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

xPA0 P2A0 P2D0 AA3 N2 P59 P53 xPA1 P2A1 P2D1 Y4 T1 P60 P54 xPA2 P2A2 P2D2 AA4 T2 P63 P56 xPA3 P2A3 P2D3 AB4 U2 P68 P57 xPC0 P2A4 P2D4 W5 V1 P69 P58 xPC1 P2A5 P2D5 Y5 V2 P70 P59 xPC2 P2A6 P2D6 AA5 W1 P73 P60 xPC3 P2A7 P2D7 AB5 W2 P74 P61

-- P2B0 P2D8 V6 Y1 P76 P64 -- P2B1 P2D9 V7 Y2 P77 P66 -- P2B2 P2D10 W6 AA3 P78 P68

mCS P2B3 P2D11 Y6 AB4 P79 P69 mA15 P2B4 P2D12 V9 AA4 P80 P70 mA16 P2B5 P2D13 V10 AB5 P82 P71 mA17 P2B6 P2D14 W10 AA5 P83 P74 mA18 P2B7 P2D15 Y10 AA6 P84 P75 CS0 P2C0 ADC0 AA10 AB8 P85 P76

83

SDIN0 P2C1 ADC1 AB10 AA8 P86 P77 CS1 P2C2 ADC2 U10 AB9 P87 P78

SDIN1 P2C3 ADC3 U11 AA9 P89 P79 SCLK P2C4 ADC4 V11 AB10 P90 P80 CS2 P2C5 ADC5 W11 AA10 P92 P81

SDOUT P2C6 ADC6 Y11 AB11 P93 P82 LDAC P2C7 ADC7 AA11 AA11 P95 P83

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

xPB0 P1A0 PxA0 M1 M3 P135 P85 xPB1 P1A1 PxA1 M2 M4 P132 P86 yPB2 P1A2 PxA2 M3 N3 P131 P87 yPB3 P1A3 PxA3 M4 N4 P130 P88 yPB1 P1A4 PxA4 M5 T4 P129 P91 yPB4 P1A5 PxA5 M6 T5 P128 P92 yPB0 P1A6 PxA6 N1 U3 P127 P93 yPB5 P1A7 PxA7 N2 U4 P125 P94 yPB6 P1B0 PxB0 U13 V3 P119 P95 yPB7 P1B1 PxB1 V13 V4 P118 P96 xPB2 P1B2 PxB2 W13 W3 P116 P97 xPB3 P1B3 PxB3 Y13 W4 P113 P98 xPB4 P1B4 PxB4 AA13 Y3 P112 P100 xPB5 P1B5 PxB5 AB13 Y4 P96 P101 yPC3 P1B6 PxB6 U12 Y5 P97 P102 yPC2 P1B7 PxB7 V12 W5 P98 P103 yPC1 P1C7 PxC0 AB17 W11 P108 P113 yPC0 P1C6 PxC1 AA17 Y11 P107 P112 yPA0 P1C5 PxC2 Y17 W10 P105 P111 yPA1 P1C4 PxC3 W17 Y10 P104 P110 yPA2 P1C3 PxC4 AB18 W9 P103 P107 yPA3 P1C2 PxC5 AA18 W8 P102 P106 xPB6 P1C1 PxC6 Y18 W6 P100 P105 xPB7 P1C0 PxC7 W18 Y6 P99 P104

84

eM_DEMO 模組

eM_DEMO 模組的電路配置圖如下

eM_USB 模組

數字型 LED

0 1 2 34 5 6 78 9 A BC D E F

燈號型 LED

44 鍵盤

ADC0 ADC1 DAC0 DAC1

LED 選擇KEY 選擇

其中

1eM_DEMO模組的基本功能包括 A將 xPAxPBxPC等 16個 IO訊號引出控制 LED和鍵盤電路 B將 ADDA訊號引出並放大成+-10V的工作範圍 2LED和鍵盤可以選擇三種模式由 LED和 KEY 兩組開關作選擇圖示如下

模式1

0123

模式2 模式3

0 1 2 34 5 6 78 9 A BC D E F

0123

3模式14鍵輸入並搭配 16點的 LED燈號顯示其中 16點 LED分別對映到 xPA[0~3]xPB[0~7]和 xPC[0~3] 4組按鍵分別對映到 xPC[0~3] 4模式24鍵輸入並搭配四個 7段式數字顯示其中 數字顯示由 xPA[0~3]作數字掃瞄而由 xPB[0~7]作 7段式 LED控制 4組按鍵 分別對映到 xPC[0~3] 5模式316鍵輸入並搭配四個 7段式數字顯示其中 數字顯示由 xPA[0~3]作數字掃瞄而由 xPB[0~7]作 7段式 LED控制 16組按鍵由 xPA[0~3]作鍵盤掃瞄而由 xPC[0~3]作鍵盤讀取 6根據VHDL與數位邏輯設計的章節其中 第 1章至 10章的實驗採用模式1而 第 11章實驗採用模式2而 第 12章之後的實驗都採用模式3

85

FPGA UCF 定義

eM_3S1K 模組

NET CLK LOC = B12

NET XAlt0gt LOC = N2

NET XAlt1gt LOC = T1

NET XAlt2gt LOC = T2

NET XAlt3gt LOC = U2

NET XBlt0gt LOC = M3

NET XBlt1gt LOC = M4

NET XBlt2gt LOC = W3

NET XBlt3gt LOC = W4

NET XBlt4gt LOC = Y3

NET XBlt5gt LOC = Y4

NET XBlt6gt LOC = W6

NET XBlt7gt LOC = Y6

NET XClt0gt LOC = V1

NET XClt1gt LOC = V2

NET XClt2gt LOC = W1

NET XClt3gt LOC = W2

NET YAlt0gt LOC = W10

JP4 接頭

NET YAlt1gt LOC = Y10

NET YAlt2gt LOC = W9

NET YAlt3gt LOC = W8

NET YBlt0gt LOC = U3

NET YBlt1gt LOC = T4

NET YBlt2gt LOC = N3

NET YBlt3gt LOC = N4

NET YBlt4gt LOC = T5

NET YBlt5gt LOC = U4

NET YBlt6gt LOC = V3

NET YBlt7gt LOC = V4

NET YClt0gt LOC = Y11

NET YClt1gt LOC = W11

NET YClt2gt LOC = W5

NET YClt3gt LOC = Y5

在光碟片中 RFFPGAVHDLDEMOBIT3S1K 裡有 VHDL 與數位邏輯設計書本範例原始檔與合成檔

86

eM_3S50 模組

NET CLK LOC = P124

NET XAlt0gt LOC = P59

NET XAlt1gt LOC = P60

NET XAlt2gt LOC = P63

NET XAlt3gt LOC = P68

NET XBlt0gt LOC = P135

NET XBlt1gt LOC = P132

NET XBlt2gt LOC = P116

NET XBlt3gt LOC = P113

NET XBlt4gt LOC = P112

NET XBlt5gt LOC = P96

NET XBlt6gt LOC = P100

NET XBlt7gt LOC = P99

NET XClt0gt LOC = P69

NET XClt1gt LOC = P70

NET XClt2gt LOC = P73

NET XClt3gt LOC = P74

NET YAlt0gt LOC = P105

JP4 接頭

NET YAlt1gt LOC = P104

NET YAlt2gt LOC = P103

NET YAlt3gt LOC = P102

NET YBlt0gt LOC = P127

NET YBlt1gt LOC = P129

NET YBlt2gt LOC = P131

NET YBlt3gt LOC = P130

NET YBlt4gt LOC = P128

NET YBlt5gt LOC = P125

NET YBlt6gt LOC = P119

NET YBlt7gt LOC = P118

NET YClt0gt LOC = P107

NET YClt1gt LOC = P108

NET YClt2gt LOC = P98

NET YClt3gt LOC = P97

在光碟片中 RFFPGAVHDLDEMOBIT3S200 裡有VHDL與數位邏輯設計書本範例原始檔與合成檔

87

eM_95XL 模組

NET CLK LOC = SPIN38

NET XAlt0gt LOC = SPIN53

NET XAlt1gt LOC = SPIN54

NET XAlt2gt LOC = SPIN56

NET XAlt3gt LOC = SPIN57

NET XBlt0gt LOC = SPIN85

NET XBlt1gt LOC = SPIN86

NET XBlt2gt LOC = SPIN97

NET XBlt3gt LOC = SPIN98

NET XBlt4gt LOC = SPIN100

NET XBlt5gt LOC = SPIN101

NET XBlt6gt LOC = SPIN105

NET XBlt7gt LOC = SPIN104

NET XClt0gt LOC = SPIN58

NET XClt1gt LOC = SPIN59

NET XClt2gt LOC = SPIN60

NET XClt3gt LOC = SPIN61

NET YAlt0gt LOC = SPIN111

JP4 接頭

NET YAlt1gt LOC = SPIN110

NET YAlt2gt LOC = SPIN107

NET YAlt3gt LOC = SPIN106

NET YBlt0gt LOC = SPIN93

NET YBlt1gt LOC = SPIN91

NET YBlt2gt LOC = SPIN87

NET YBlt3gt LOC = SPIN88

NET YBlt4gt LOC = SPIN92

NET YBlt5gt LOC = SPIN94

NET YBlt6gt LOC = SPIN95

NET YBlt7gt LOC = SPIN96

NET YClt0gt LOC = SPIN112

NET YClt1gt LOC = SPIN113

NET YClt2gt LOC = SPIN103

NET YClt3gt LOC = SPIN102

在光碟片中 RFFPGAVHDLDEMOSVF95288XL 裡有VHDL與數位邏輯設計書本範例原始檔與合成

檔案

88

eM_FPGA 模組

NET CLK LOC = E12

NET XAlt0gt LOC = AA3

NET XAlt1gt LOC = Y4

NET XAlt2gt LOC = AA4

NET XAlt3gt LOC = AB4

NET XBlt0gt LOC = M1

NET XBlt1gt LOC = M2

NET XBlt2gt LOC = W13

NET XBlt3gt LOC = Y13

NET XBlt4gt LOC = AA13

NET XBlt5gt LOC = AB13

NET XBlt6gt LOC = Y18

NET XBlt7gt LOC = W18

NET XClt0gt LOC = W5

NET XClt1gt LOC = Y5

NET XClt2gt LOC = AA5

NET XClt3gt LOC = AB5

NET YAlt0gt LOC = Y17

JP4 接頭

NET YAlt1gt LOC = W17

NET YAlt2gt LOC = AB18

NET YAlt3gt LOC = AA18

NET YBlt0gt LOC = N1

NET YBlt1gt LOC = M5

NET YBlt2gt LOC = M3

NET YBlt3gt LOC = M4

NET YBlt4gt LOC = M6

NET YBlt5gt LOC = N2

NET YBlt6gt LOC = U13

NET YBlt7gt LOC = V13

NET YClt0gt LOC = AA17

NET YClt1gt LOC = AB17

NET YClt2gt LOC = V12

NET YClt3gt LOC = U12

在光碟片中 RFFPGAVHDLDEMOBIT2V250 裡有VHDL與數位邏輯設計書本範例原始檔與合成檔

89

Page 26: RFFPGA 直流馬達實驗手冊juniortek.com.tw/program/manual/RF-DC-mal.pdf · em_demo模組 em_dcm 直流伺服馬達 dc電源 rffpga 系統的直流馬達實驗規劃 其中包括:

其中 PD 控制器就是簡單又有效的一個好方法

從表面上來看PD 控制器比 P控制器多了一個微分項就數學上來看這微分項提供了

一個新零點(Zero)可以調整根軌跡圖的走向就實驗上來說這微分項提供了控制器

的預測功能說明如下

sτ+1

KmVc ωKp+sKd

err

P控制器 直流馬達

θc

轉角回授

轉角命令 + 轉角響應-

s1 θ

1轉角控制中 P控制器的問題是在嚴重的過越現象原因是在 P控制器的作用下只有當回授超過命令時才能做出「負向」的控制但這時已經來不及了因為積分器

中已經累積了過多的能量而無法立刻消失使得馬達轉角衝過了頭 2解決之道就是在回授超過命令之前就必須做出「負向」的控制使得積分器累積

的能量逐步減弱在到達目標時才能立刻煞車才能解除過越現象 3而微分項就是這個預測量因為當誤差量越來越小時其微分項是負值雖然微分

項(D)是負值 當誤差量(P)很大時(P+D)的結果還是正值所以還是「正向」控制 當誤差量(P)漸小時(P+D)的結果變成負值才會開始「負向」控制 換句話說在誤差為 0之前即可啟動負向控制產生煞車作用使得馬達提前減速

而即時停止在目標點上自然就解除過越現象了

所以在 PD 控制器中有兩項調整量其中

1Kp增益提供比例控制部分的增益而 Kd增益提供微分控制部分的增益 2Kp增益控制馬達的趨近速度主要影響的是上升時間 3Kd增益控制馬達的提前煞車主要影響的是過越比例 4在兩者搭配下就有機會得到 很快很短的上升時間同時也 不會產生過越現象

PD 控制器的執行

依據 PD 控制器公式可以建立以數位執行的 PD 控制器如下圖所示

cmdKp

fdk

+

-

err

old

+-

Kd

Z-1

out+

+

26

其中

1利用差分公式來取代 PD控制器中的微分公式定義如下 s ==gt (1-Z-1)DT 其中對映的變數包括 s 微分項 Z-1延遲一個抽樣週期 DT抽樣週期單位為 sec 2就執行面而言Z-1是延遲一個抽樣週期也就是以抽樣週期所控制的暫存器 3在上圖中將命令(cmd)和回授(fdk)相減後得到誤差值(err)再將 err延遲一個抽樣週期成為 old所以(err-old)DT即是微分項

4原始的微分控制公式為(err-old)DTKd必須先除再乘但是因為 DT和 Kd 都是常

數可以預先將 Kd修正成 Kd=(KdDT)那麼公式將修正為(err-old)Kd就只需要一個乘法而不需要除法了

同樣的 PD 控制器可以用許多不同的方法作執行包括

1以軟體方式執行例如在 DSP核心中以組合語言撰寫控制模組 2以硬體方式執行例如在 FPGA中直接設計邏輯電路 3以微碼方式執行以微碼作順序控制執行硬體運算工作

這裡先提供用組合語言撰寫的程式模組作為設計參考其他兩種方法將在後續的實驗中

再陸續作說明

模組程式範例PD_controlasm

local cmd R0 IP gnd 輸入點位置命令(可忽略) local fdk R1 IP gnd 輸入點位置回授(可忽略) local out R2 OP 輸出點用以控制速度迴路 local kp R3 256 參數增益 kp10=256 local kd R4 0 參數增益 kd10=256 local err R5 0 內部變數 local old R6 0 內部變數 local gnd R7 0 無輸入時的短路點 data 8 模組變數區長度 initial 開機啟動程序 WR out0 WR old0 RET out=old=0 timer 即時控制程序 RD (cmd) SUB (fdk) WR err MUL kp SFR 8 P=(cmd-fdk)kp256 RDS err SUBX old MUL kd SFR 8 D=(err-old)kd256 ADDS WR out out=P+D RET

27

其中

1PD控制模組中對外的界面變數包括 cmd命令的輸入點 fdk回授的輸入點 out控制的輸出點 2內部參數包括 Kp比例控制增益其中 10=256所以乘完後還需要再右移 8-bit Kd微分控制增益其中 10=256所以乘完後還需要再右移 8-bit 3內部變數包括 err臨時性的變數用以儲存誤差值的計算結果 old儲存性的變數用以儲存上一次抽樣控制時的 err值 4模組程式分成三部分包括 變數宣告local和data所宣告的部分 初值設定initial程序中先將 out和 old設定為 0 即時控制timer程序中依序執行 PD控制器中的每個步驟

控制目標的選擇

從字面上來看速度控制就是控制馬達的速度轉角控制就是控制馬達的轉角沒什麼

好討論的但是實際上確有許多問題第一的問題就是什麼是速度和轉角馬達的速

度和轉角如果不作量測如何得知

既然在量測中取得了速度和轉角資料那麼我們所控制的到底是物理學上的速度和轉

sτ+1

KmVc ωKp+sKd

err

P控制器 直流馬達

θc

轉角回授

轉角命令 + 轉角響應-

s1 θ

KxANG

轉角量測

角還是量測上的速度和轉角以下圖為例

其中

1以轉角量測裝置量測轉角例如裝在馬達軸端的光電盤和解碼電路 2轉角的量測輸出是 ANG而 ANG和物理轉角θ之間有 Km的增益關係 3只要 Km值不是 1那麼系統就不再是單位回授 4如果 Km還有非線性或失真現象那麼控制結果也將有非線性或失真現象

這些問題混雜起來會使得控制系統的分析變得更複雜如果要簡單處理就要認同現

實環境直接以量測結果為控制目標如下圖所示

28

sτ+1

KmVc ωKp+sKd

err

P控制器 直流馬達

θc

轉角回授

+-

s1 θ Kx

ANG轉角量測

其中

1直接以量測結果為控制目標將全系統還原成標準的單位回授控制 2所有的非線性或失真現象都進入開環路討論屬於可以補償的部分 3但是控制結果就是「量測上的轉角」而「物理學上的轉角」

量測誤差的問題

轉角θ

量測ANG

對於量測誤差而言最明顯的問題就是量化誤差圖示如下

其中

1以 DCM模組中的光電盤為例精度為每圈 500格經由乘四解碼計數後其等效

精度增加為每圈 2000格 2比(12000)圈更精密的部分都無法響應換句話說振幅越大的控制其相對誤差越

小而振幅越小的控制其相對誤差越大例如 當振幅為(12)圈時其控制誤差量為 01而 當振幅為(120)圈時其控制誤差量為 1 這是標準的的非線性現象

量化誤差不只影響穩態上的精度還會造成非線性的震動問題圖示如下

t

誤差值

+1

-1

其中

1由於量化誤差的問題只有當誤差超過+1或是-1時才會真正偵測到誤差也才

29

會施加控制量作補償 2所以穩態時的誤差將在+1-1之間擺動造成微幅的振動 3量化誤差越大震動越明顯而量化誤差很小時通常不易察覺出震動現象

微分量的計算

伺服系統中有兩處需要用到微分計算包括

1PD控制器中誤差微分量的計算 2速度控制器中速度回授值的量測

在理論上微分公式是(dXdt)相當於 dXdt = (X(n)-X(n-1))DT (當 DT趨近於 0時)

所以當微分計算中的抽樣週期(DT)越短時微分的計算值將越接近理論值但是事實上

卻非如此以下圖為例

t

X

DTDX

其中

1當 X值為等速度運動時其微分量就是其斜率相當於 DXDT 2DT是微分計算中的抽樣週期理論上越短越好但是由於 DX本身的量化誤差

使得這個原則不再成立例如當斜率為 7394時 若 DT=1000則 DX=7394而 DXDT=7394 若 DT=100 則 DX=739 而 DXDT=739 若 DT=10 則 DX=73 而 DXDT=73 若 DT=1 則 DX=7 而 DXDT=7 3換句話說當抽樣週期越短時DX的量化誤差將越明顯而造成微分計算上更嚴

重的誤差

在 DCM 模組中速度量測的量化誤差分析如下

1馬達上的光電盤精度為每圈 500格經過乘四解碼後等效精度為每圈 2000格 2當馬達轉速為 1200RPM而抽樣頻率為 1KHz時對映的速度量測值為 1200(圈分)2000(格圈)60(秒分)1000(DT秒) = 40(格DT) 3換句話說1200RPM的轉速對映到 40的速度量測值即速度單位=30RPM若最

高轉速為 3000RPM則在+-3000RPM的速度範圍內其量化誤差為 05相當於8-bit的 ADC轉換器精度

4對映不同的抽樣頻率的量化誤差表列如下

30

光電盤精度 最高轉速 抽樣頻率 速度單

速度範圍 量化誤差

500PPR 3000RPM 1KHz 30RPM +-100 05 500PPR 3000RPM 2KHz 60RPM +-50 1 500PPR 3000RPM 4KHz 120RPM +25 2

過溢現象的處理

輸入

輸出

32767

-32768

整數運算都有數值範圍限制以 16-bit 整數而言輸入輸出的關係如下

其中

1當超過正負數的上下限時數值會正負顛倒例如 +32768 將會視為 -32768作處理而 +32769 將會視為 -32768作處理依此類推 2換句話說16-bit的整數運算只有在+-32767之間是線性的對映關係而超過這個範圍就是非線性的對映關係

3不但如此還因為正負顛倒的現象使得原來設計的負回授控制將變為正回授控制

而產生非線性的震盪現象 4換句話說只要計算上稍一不慎就會使得原先穩定的系統產生不穩定的震盪結果

為了避免過溢現象所造成的不穩定問題通常控制系統中會利用飽和處理作改善圖示

如下

輸入

輸出

lmtH

lmtL

31

其中

1當超過計算的上限時將固定設為上限值處理而當超過計算的下限時也將固定

設為下限值處理 2這時的整數運算只有在上下限之間是線性的對映關係而超過這個範圍將還是非線

性的對映關係 3雖然如此但是因為沒有正負顛倒的現象所以不再會有負回授變為正回授的問題

而避免了非線性的震盪現象 4換句話說飽和處理是針對過溢現象的妥協處理方案雖然不完全理想但是是可

接受的最佳選擇

下面是對映的組合語言範例

RD x x為輸入端 MIN lmtH 取得 x和 lmtH中的較小值即是作上限保護的工作 MAX lmtL 取得 x和 lmtL中的較大值即是作下限保護的工作 WR y Y為輸出端 其中

1組合語言中提供MAX和MIN的計算其中 MIN lmtH 比較 AX暫存器和 lmtH而將較低值存入 AX暫存器中 MAX lmtL 比較 AX暫存器和 lmtH而將較高值存入 AX暫存器中 2所以直接可用MIN指令作上限保護而以MAX指令作下限保護兩者合併後即是

完整的飽和處理結果

飽和處理通常應用在高位數轉成低位數的場合例如32-bit轉換成16-bit或是16-bit

轉換成 12-bit 等等例如在本實驗中所有的運算都是以 16-bit 整數作處理但是到

PWM 驅動級輸出時卻要轉換成 12-bit精度的 PWM 命令所以必須先用飽和處理以避免

過溢現象造成的不穩定問題

32

61 實驗 1-開迴路的電壓控制 實驗說明以電壓直接控制轉速的開迴路特性可簡化為一階系統處理方塊圖如

sτ+1

v km ωm

其中V 送給驅動器的 PWM電壓命令

ωm馬達的轉動速度可由處理 photo encoder信號所得的位置微分而得 km一階系統的穩態增益 τ一階系統的時間常數即步階響應中的上升時間

為了觀測直流馬達的開環路特性建立下面的測試方塊圖

其中

1所使用的模組包括 FG1方波產生器產生所需的步階測試波形 FT1馬達模擬以一階系統的低通濾波器來執行 IO1光電盤的回授處理可同時取得轉角和速度的量測值 IO2PWM電壓驅動直接驅動直流馬達作控制 Led四位數字七段顯示模組顯示波形信號資料 2測試目標有兩項(P 參數設定欄)包括 A調整方波命令控制直流馬達作開環路的 PWM電壓控制 B調整馬達模擬參數使模擬結果和實驗結果相符以確認開環路特性

33

實驗畫面顯示如下

測試一 開環路的電壓控制 記錄頻道 CH1電壓命令Y1=-300DY=500 CH2模擬速度Y2=-100DY=500 CH3馬達速度Y3=100DY=50 CH4馬達轉角Y4=300DY=50000 實驗參數 FG1kAMP=256電壓命令的測試振幅 FG1kFRQ=150電壓命令的測試頻率 FT1DT =10 馬達模擬參數 FT1KA =500馬達模擬參數

其中

1用示波器功能記錄四個頻道其中 CH2和 CH3重疊顯示以比較模擬速度和量測

速度之間的差異 2由於 Km 不等於 1所以必須調整 CH3的 Y軸單位才能使得 CH2和 CH3的穩態響應部分重疊

3實驗時可以改變 FG1的參數以調整測試方波的振幅和頻率 4可以調整 FT1的參數使得 CH2和 CH3的暫態響應部分重疊

根據實際的測試結果分析如下

2馬達模擬的參數調整到 DT=10而 KA=500根據公式 τ = 40961000dtka 所以上升時間(τ)為 0082秒或是 82ms 3CH2CH3的 Y軸單位並不一致顯然 Km 不等於 1經計算確認 Km=0098

對應之 plc檔程式說明(exp_pwmplc) echo off 畫面顯示開始

run dsp 0 選擇 DSP1

run stop run reset 既有程式停止

run testDCMmem 下載指定程式

das 1 ampfg1out 0 1024 PWM 波形 Volt 設定 DAS 頻道1

das 2 ampft1lp 0 1024 馬達模擬 Volt 設定 DAS 頻道2

das 3 ampio1spd 0 1024 馬達速度 Volt 設定 DAS 頻道3

das 4 ampio1ang 0 1024 馬達角度 Volt 設定 DAS 頻道4

plot select 0 設定示波器頁數

plot xunit 100000 0 設定示波器 X軸

plot yunit 1 500 -300 設定示波器 Y1 軸

34

plot yunit 2 500 -100 設定示波器 Y2 軸

plot yunit 3 50 100 設定示波器 Y3 軸

plot yunit 4 50000 300 設定示波器 Y4 軸

plot trigger 1 0 1 10 設定示波器觸發

plot scope 9 1 2 3 4 設定示波器顯示

module io2 設定 io2 模組

s cmd ampfg1out

module fg1 設定 fg1 模組

s kAmp 256 s kFrq 150

module ft1 設定 ft1 模組

s u ampfg1out s dt 10 s ka 500

module io3 設定 io3 模組

s led ampfg1out

module 回復預設模組

run 1khz 設定抽樣頻率為 4KHz

run start DSP 開始執行

das stop pause 1 DAS 啟動 das start DAS 啟動

echo on 回復正常訊息顯示

使用者可視情況調整一階濾波器的 ka和 dt值使得 ch2和 ch3 兩組波形完全相符

以求得開迴路系統近似的一階轉移函數 CAI操控設計畫面規劃如下(EXP_PWMCAI) page 1 畫面設計

35

page 2 畫面設計 page 3 畫面設計

36

實測響應圖

訊 號 說 明 訊 號 說 明 ch1 方波產生器訊號 ch3 一階濾波器輸出信號 ch2 馬達角速度訊號 ch4 馬達角位置訊號

直流馬達之開迴路電壓控制響應圖

37

以邏輯分析功能觀測直流馬達之光電盤輸入與 PWM輸出信號

38

62 實驗 2-閉迴路的速度控制 實驗說明為了觀測閉迴路的速度控制響應建立下面的測試方塊圖

加入 PD控制後系統閉迴路的轉移函數經適度的簡化仍能約略以一階系統

處理方塊圖如下

sτ+1

u km ωm

其中

u 送給控制器的速度命令

ωm馬達的轉動速度可由處理 photo encoder 信號所得的位置微分而得

km一階系統的穩態增益 τ一階系統的時間常數即步階響應中的上升時間

方塊圖中的模組功能說明如下

1用 fg1 產生測試用的方波速度命令

2將方波速度命令和速度回授訊號送到 PD 控制器方塊中產生電壓控制訊號再透

過 io2 模組將訊號送出給伺服介面

3用 ft1 建立對照用的一階系統可用 IIR1濾波器方塊產生

4將方波命令產生速度命令再觀測 PHT(io1)上的速度值 spd

5調整 IIR1濾波器的參數使得兩組波形完全相符這時 IIR1濾波器就是閉迴路

速度控制的特性其中 km 為增益而τ為上升時間(單位為 sec)

6增益 km 可從示波器中作簡單計算而上升時間(τ=40964000dtka)

7 Led四位數字七段顯示模組顯示波形信號資料

39

對應之 plc檔程式說明(exp_speedplc) echo off 畫面顯示開始

run dsp 0 選擇 DSP1

run stop run reset 既有程式停止

run testDCMmem 下載指定程式

das 1 ampfg1out 0 1024 PWM 波形 Volt 設定 DAS 頻道1

das 2 ampft1lp 0 1024 馬達模擬 Volt 設定 DAS 頻道2

das 3 ampio1spd 0 1024 馬達速度 Volt 設定 DAS 頻道3

das 4 ampio1ang 0 1024 馬達角度 Volt 設定 DAS 頻道4

plot select 0 設定示波器頁數

plot xunit 100000 0 設定示波器 X軸

plot yunit 1 50 -300 設定示波器 Y1 軸

plot yunit 2 50 -100 設定示波器 Y2 軸

plot yunit 3 50 100 設定示波器 Y3 軸

plot yunit 4 50000 300 設定示波器 Y4 軸

plot trigger 1 0 1 10 設定示波器觸發

plot scope 9 1 2 3 4 設定示波器顯示

module io2 設定 io2 模組

s cmd ampcn2out

module fg1 設定 fg1 模組

s kAmp 50 s kFrq 150

module cn2 設定 cn1 模組

s cmd ampfg1out s fdk ampio1spd s kp 0x4000

module ft1 設定 ft1 模組

s u ampfg1out s dt 2 s ka 320

module io3 設定 io3 模組

s led ampfg1out

module 回復預設模組

run 1khz 設定抽樣頻率為 4KHz

run start DSP 開始執行

das stop pause 1 DAS 啟動 das start DAS 啟動

echo on 回復正常訊息顯示

CAI操控設計畫面規劃如下(EXP_speedCAI)

40

page 1 畫面設計 page 2 與 page 3 畫面設計與實驗一 page 2 與 page 3相同畫面 page 4 畫面設計

41

方塊的參數設定 使用者可視情況調整一階濾波器的 ka和 dt值使得 ch2和 ch3 兩組波形完全相符

以求得此一閉迴路系統近似的一階轉移函數或調整 PD控制器中的 kp和 kp值以調整系統之響應 實測響應圖

訊 號 說 明 訊 號 說 明 ch1 方波產生器產生之速度命令 ch3 一階濾波器輸出信號 ch2 馬達角速度訊號 ch4 馬達角位置訊號

42

直流馬達之閉迴路速度控制響應圖

43

63 實驗 3-閉迴路的位置控制 實驗說明為了觀測閉迴路的位置控制響應將直流馬達的回授改為位置訊號

建立下面的測試方塊圖 方塊圖中的模組功能說明如下

1用 fg1產生測試用的方波位置命令 2將方波位置命令和位置回授訊號送到 PD控制器方塊中產生電壓控制訊號再透過 io2模組將訊號送出到伺服介面驅動馬達轉動

對應之 plc檔程式說明(exp_angleplc) echo off 畫面顯示開始

run dsp 0 選擇 DSP1

run stop run reset 既有程式停止

run testDCMmem 下載指定程式

das 1 ampfg1out 0 1024 PWM 波形 Volt 設定 DAS 頻道1

das 2 ampft1lp 0 1024 馬達模擬 Volt 設定 DAS 頻道2

das 3 ampio1spd 0 1024 馬達速度 Volt 設定 DAS 頻道3

das 4 ampio1ang 0 1024 馬達角度 Volt 設定 DAS 頻道4

plot select 0 設定示波器頁數

plot xunit 100000 0 設定示波器 X軸

plot yunit 1 1000 -300 設定示波器 Y1 軸

plot yunit 2 1000 -100 設定示波器 Y2 軸

plot yunit 3 20 100 設定示波器 Y3 軸

plot yunit 4 1000 300 設定示波器 Y4 軸

plot trigger 1 0 1 10 設定示波器觸發

44

plot scope 9 1 2 3 4 設定示波器顯示

module io2 設定 io2 模組

s cmd ampcn2out

module fg1 設定 fg1 模組

s kAmp 1000 s kFrq 75

module cn2 設定 cn1 模組

s cmd ampfg1out s fdk ampio1ang s kp 0x300 s kd 0x4000

module ft1 設定 ft1 模組

s u ampfg1out s dt 2 s ka 320

module io3 設定 io3 模組

s led ampfg1out

module 回復預設模組

run 1khz 設定抽樣頻率為 4KHz

run start DSP 開始執行

das stop pause 1 DAS 啟動 das start DAS 啟動

echo on 回復正常訊息顯示

CAI操控設計畫面規劃如下(EXP_angleCAI) page 1 畫面設計

45

page 2 與 page 3 畫面設計與實驗一 page 2 與 page 3相同畫面 page 4 畫面設計與實驗二 page 4 畫面 方塊的參數設定 延續上一實驗的說明使用者可以調整 PD控制器中的 kp和 kd值以調整系統之

響應 實測響應圖

訊 號 說 明 訊 號 說 明 ch1 方波產生器產生之位置命令 ch3 馬達角速度訊號 ch2 馬達角位置 ch4 Pd控制器輸出之電壓訊號

46

直流馬達之閉迴路位置控制響應圖

47

64 實驗 4-加減速的位置控制 實驗說明為避免方波命令的過於嚴苛在方波命令的輸出加入一加減速控制功

能方塊以減緩命令變化的幅度增加馬達運動的平順建立的測試方塊圖如下

方塊圖中的模組功能說明如下

1用 fg1產生測試用的方波位置命令 2將方波位置命令送到加減速控制方塊處理後產生新的位置命令再將新的位置命

令與位置回授訊號送到 PD控制器方塊中產生電壓控制訊號最後透過 io2模組將訊號送出到伺服介面驅動馬達轉動

對應之 plc檔程式說明(exp_accplc) echo off 畫面顯示開始

run dsp 0 選擇 DSP1

run stop run reset 既有程式停止

run testDCMmem 下載指定程式

das 1 ampfg1out 0 1024 PWM 波形 Volt 設定 DAS 頻道1

das 2 ampcn1out 0 1024 加速控制 Volt 設定 DAS 頻道2

das 3 ampio1spd 0 1024 馬達速度 Volt 設定 DAS 頻道3

das 4 ampio1ang 0 1024 馬達角度 Volt 設定 DAS 頻道4

plot select 0 設定示波器頁數

plot xunit 100000 0 設定示波器 X軸

plot yunit 1 2000 -300 設定示波器 Y1 軸

plot yunit 2 2000 -100 設定示波器 Y2 軸

plot yunit 3 50 100 設定示波器 Y3 軸

plot yunit 4 2000 300 設定示波器 Y4 軸

48

plot trigger 1 0 1 10 設定示波器觸發

plot scope 9 1 2 3 4 設定示波器顯示

module io2 設定 io2 模組

s cmd ampcn2out

module fg1 設定 fg1 模組

s kAmp 2000 s kFrq 150

module cn1 設定 cn1 模組

s cmd ampfg1out

module cn2 設定 cn2 模組

s cmd ampcn1out s fdk ampio1ang s kp 0x300 s kd 0x4000

module ft1 設定 ft1 模組

s u ampfg1out s dt 2 s ka 320

module io3 設定 io3 模組

s led ampfg1out

module 回復預設模組

run 1khz 設定抽樣頻率為 4KHz

run start DSP 開始執行

das stop pause 1 DAS 啟動 das start DAS 啟動

echo on 回復正常訊息顯示

CAI操控設計畫面規劃如下(EXP_accCAI) page 1 畫面設計

49

page 2 畫面設計與實驗一 page 2相同畫面 page 3 畫面設計與實驗二 page 4相同畫面

參數設定參考之前各實驗的說明可線上機動性的調整 PD控制器中的 kp和 kd值以調整系統之響應 實測響應圖

訊 號 說 明 訊 號 說 明 ch1 方波產生器產生之位置命令 ch3 馬達角位置 ch2 加減速模組輸出之位置命令 ch4 馬達角速度訊號

50

圖一 直流馬達經加減速控制後之閉迴路控制響應圖

51

65 實驗 5-正弦波的位置控制 實驗說明在本實驗中改變命令的波形由方波改變為正弦波並建立如下的測

試方塊圖與上一實驗相比較僅更改命令的波形產生方塊 方塊圖中的模組功能說明如下 1用 fg2產生測試用的弦波位置命令 2將弦波位置命令送到加減速控制方塊處理後產生新的位置命令再與 io1 讀入的位

置回授訊號送到 PD 控制器方塊中產生電壓控制訊號再透過 io2 模組將訊號送出到伺服介面驅動馬達轉動

對應之 plc檔程式說明(exp_sinplc) echo off 畫面顯示開始

run dsp 0 選擇 DSP1

run stop run reset 既有程式停止

run testDCMmem 下載指定程式

das 1 ampfg2out 0 1024 SIN 波形 Volt 設定 DAS 頻道1

das 2 ampcn1out 0 1024 加速控制 Volt 設定 DAS 頻道2

das 3 ampio1spd 0 1024 馬達速度 Volt 設定 DAS 頻道3

das 4 ampio1ang 0 1024 馬達角度 Volt 設定 DAS 頻道4

plot select 0 設定示波器頁數

plot xunit 100000 0 設定示波器 X軸

plot yunit 1 2000 -300 設定示波器 Y1 軸

plot yunit 2 2000 -100 設定示波器 Y2 軸

plot yunit 3 50 100 設定示波器 Y3 軸

plot yunit 4 2000 300 設定示波器 Y4 軸

plot trigger 1 0 1 10 設定示波器觸發

52

plot scope 9 1 2 3 4 設定示波器顯示

module io2 設定 io2 模組

s cmd ampcn2out

module fg2 設定 fg1 模組

s kAmp 2000 s kFrq 100

module cn1 設定 cn1 模組

s cmd ampfg2out

module cn2 設定 cn2 模組

s cmd ampcn1out s fdk ampio1ang s kp 0x300 s kd 0x4000

module ft1 設定 ft1 模組

s u ampfg2out s dt 2 s ka 320

module io3 設定 io3 模組

s led ampfg2out

module 回復預設模組

run 1khz 設定抽樣頻率為 4KHz

run start DSP 開始執行

das stop pause 1 DAS 啟動 das start DAS 啟動

echo on 回復正常訊息顯示

CAI操控設計畫面規劃如下(EXP_sinCAI) page 1 畫面設計

53

page 2 畫面設計 page 3 畫面設計與實驗二 page 4相同畫面

方塊的參數設定可調整 PD控制器中的 kp和 kd值以調整系統之響應 實測響應圖

訊 號 說 明 訊 號 說 明 ch1 弦波產生器產生之位置命令 ch3 馬達角位置訊號 ch2 加減速模組輸出之位置命令 ch4 馬達角速度訊號

54

直流馬達之閉迴路弦波加減速位置控制響應圖

55

7組合語言說明

本節將針對 DC馬達伺服控制實驗專用的程式模組進行功能與程式碼的說明其

有關於波形產生器與資料擷取模組等說明如下

SIN_waveasm 正弦波產生器 PWM_waveasm 方波產生器 IIR1_filterasm 一階濾波器 DAS4asm 資料蒐集模組

弦波產生器

此模組會產生週期性的正弦波方塊圖如下

outfrq

kBiasbias

ampkAmp

kFrqth

kThf=1TB

θ

A

其中

1正弦波有四個參數振幅(A)頻率(F)相位(θ)和偏移(B)其公式為 out = A sin(2πF t +θ) + B 2對於單純的正弦波產生器所對映的參數包括 kAmp 振幅值 kFrq 頻率值kFrq=655368000Hz其中 Hz的範圍為 0~4000例如 1000Hz =gt frq=8192 100Hz =gt frq=819 10Hz =gt frq=82 1Hz =gt frq=8 kTh 相角值0~255代表 0~360的相位當 th=0 時為正弦波 th=64 時為餘弦波 th=128時為反相波依此類推 kBias偏移值 3對於可調變的正弦波產生器其對映的輸入點為 amp 控制振幅的輸入點可產生調幅(AM)波形 frq 控制頻率的輸入點可產生調頻(FM)波形 th 控制相位的輸入點可產生調相(PM)波形 bias控制偏移的輸入點可產生雙頻混波(相加)波形 4若不使用調變功能時各個輸入點時的預設值為 amp 指向 kAmp 的位址 frq 指向 kFrq 的位址

56

th 指向 kTh 的位址 bias指向 kBias的位址

模組程式範例SIN_WAVEasm

local amp R0 IP kAmp 輸入點sin波的振幅 local frq R1 IP kFrq 輸入點sin波的頻率 local th R2 IP kTh 輸入點sin波的相角 local bias R3 IP kBias 輸入點sin波的中心偏移 local out R4 OP 輸出點sin波輸出 local tab R5 TP 表格指標指向 sin[256]的表格 local ang R6 內部變數相位角65536=360deg local kAmp R7 1000 參數振幅值 local kFrq R8 1000 參數頻率值=655368000Hz local kTh R9 0 參數相角值360deg=256 local kBias R10 0 參數偏移值 data 11 模組變數區長度及初值 initial 啟動程序 WR ang0 WR out0 ang=out=0 RET timer 即時控制程序(8KHz) RD ang ADD (frq) WR ang ang+=frq SFR 8 ADD (th) AND 255 ACC=sin(ang256+th) ADD tab WRH RDM table-look-up MUL (amp) SFR 12 ADD (bias) WR out out=ACCamp4096+bias RET table tab 256 sin[256]表格區10=4096 0 101 201 301 401 501 601 700 00~070deg 799 897 995 1092 1189 1285 1380 1474 08~0F 1567 1660 1751 1842 1931 2019 2106 2191 10~17 2276 2359 2440 2520 2598 2675 2751 2824 18~1F 2896 2967 3035 3102 3166 3229 3290 3349 20~27 3406 3461 3513 3564 3612 3659 3703 3745 28~2F 3784 3822 3857 3889 3920 3948 3973 3996 30~37 4017 4036 4052 4065 4076 4085 4091 4095 38~3F 4096 4095 4091 4085 4076 4065 4052 4036 40~4790deg 4017 3996 3973 3948 3920 3889 3857 3822 48~4F 3784 3745 3703 3659 3612 3564 3513 3461 50~57 3406 3349 3290 3229 3166 3102 3035 2967 58~5F

57

2896 2824 2751 2675 2598 2520 2440 2359 60~67 2276 2191 2106 2019 1931 1842 1751 1660 68~6F 1567 1474 1380 1285 1189 1092 995 897 70~77 799 700 601 501 401 301 201 101 78~7F 0 65435 65335 65235 65135 65035 64935 64836 80~87180deg 64737 64639 64541 64444 64347 64251 64156 64062 88~8F 63969 63876 63785 63694 63605 63517 63430 63345 90~97 63260 63177 63096 63016 62938 62861 62785 62712 98~9F 62640 62569 62501 62434 62370 62307 62246 62187 A0~A7 62130 62075 62023 61972 61924 61877 61833 61791 A8~A8 61752 61714 61679 61647 61616 61588 61563 61540 B0~B7 61519 61500 61484 61471 61460 61451 61445 61441 B8~BF 61440 61441 61445 61451 61460 61471 61484 61500 C0~C7270deg 61519 61540 61563 61588 61616 61647 61679 61714 C8~CF 61752 61791 61833 61877 61924 61972 62023 62075 D0~D7 62130 62187 62246 62307 62370 62434 62501 62569 D8~DF 62640 62712 62785 62861 62938 63016 63096 63177 E0~E7 63260 63345 63430 63517 63605 63694 63785 63876 E8~EF 63969 64062 64156 64251 64347 64444 64541 64639 F0~F7 64737 64836 64935 65035 65135 65235 65335 65435 F8~FF

就程式結構而言說明如下

timer 即時控制程序(8KHz) RD ang ADD (frq) WR ang ang+=frq SFR 8 ADD (th) AND 255 ACC=sin(ang256+th) ADD tab WRH RDM table-look-up MUL (amp) SFR 12 ADD (bias) WR out out=ACCamp4096+bias RET

1基本上我們以查表法計算 sin()其輸入θ的範圍為 0~255對映到 0~360deg其輸出 sin(θ)的範圍為+-4096對映到+-10的範圍

2建立一個內部變數 ang其範圍為 0~65535對映到 0~360的相位角 3每個timer程序都執行 ang+=frq的動作更新目前的相位角接著依照 ang的相位角查表得到 sin(ang256+th)值

4由於表格長度為 256-word所以必須將 ang256才能得到正確的對映關係而 th範圍為 0~255所以不需要像 ang一般的做額外處理

5sin()的範圍為(+1-1)而在表格中以(+4096~-4096)的型式記錄相當於 10=4096所以執行 Asin()時還要用 SFR12指令做4096的動作才能正確的取得輸出值

58

6就頻率輸入 frq而言其計算原則是將θ=ωt轉化成θ=Σ(ωdt)因為抽樣頻率

為 8KHz所以 dt=18000而得到 frq=655368000Hz公式其中 Hz為真正的頻率在 8KHz的抽樣頻率下其範圍為 0~4000

鋸齒波產生器

此模組會產生週期性的鋸齒波方塊圖如下

outfrq

kBiasbias

ampkAmp

kFrqth

kThf=1TB

θ

A

其中

1鋸齒波也有四個參數振幅(A)頻率(F)相位(θ)和偏移(B)和正弦波的定義完全一致唯一的差異是其輸出為鋸齒波而非正弦波

2基本波形是從週期開始時為 0一直遞增到週期結束時到達最高點然後立刻回歸

到 0重新開始 3以程式結構而論鋸齒波程式幾乎就是正弦波的相位計算部分只差沒有正弦波的

查表處理而已

模組程式範例SAW_WAVEasm

local amp R0 IP kAmp 輸入點sin波的振幅 local frq R1 IP kFrq 輸入點sin波的頻率 local th R2 IP kTh 輸入點sin波的相角 local bias R3 IP kBias 輸入點sin波的中心偏移 local out R4 OP 輸出點sin波輸出 local ang R5 內部變數相位角65536=360deg local kAmp R6 1000 參數振幅值 local kFrq R7 1000 參數頻率值=655368000Hz local kTh R8 0 參數相角值360deg=256 local kBias R9 0 參數偏移值 data 11 模組變數區長度及初值 initial 啟動程序 WR ang0 WR out0 ang=out=0 RET timer 即時控制程序(8KHz) RD ang ADD (frq) WR ang ang+=frq SFR 8 ADD (th) AND 255 ACC=(ang256+th)amp0x00ff MUL (amp) SFR 8 ADD (bias) WR out out=ACCamp256+bias

59

RET

脈衝波產生器

outfrq

kBiasbias

ampkAmp

kFrqth

kThf=1TB

θ

A

pwm

kDutyduty

此模組會產生週期性的脈衝波方塊圖如下

其中

1脈衝波有五個參數其中振幅(A)頻率(F)相位(θ)和偏移(B)四個參數和正弦波

定義完全一樣另外再增加一個負載率(D) 2基本波形是從週期開始時為 1隔段時間後換為 0然後持續到週期結束再重新開始其中 1所佔有的比例就是負載率當 D=0時為 0而 D=255時為 100

3和其他參數類似負載率(D)以 duty為其輸入點而以 kDuty為其參數值

模組程式範例PLS_WAVEasm

local amp R0 IP kAmp 輸入點脈衝波的振幅 local frq R1 IP kFrq 輸入點脈衝波的頻率 local th R2 IP kTh 輸入點脈衝波的相角 local bias R3 IP kBias 輸入點脈衝波的中心偏移 local duty R4 IP kDuty 輸入點脈衝波的負載率 local out R5 OP 輸出點脈衝波輸出 local ang R6 內部變數相位角65536=360deg local kAmp R7 1000 參數振幅值 local kFrq R8 1000 參數頻率值=655368000Hz local kTh R9 0 參數相角值360deg=256 local kBias R10 0 參數偏移值 local kDuty R11 128 參數負載率100 =256 data 12 模組變數區長度及初值 initial 啟動程序 WR ang0 WR out0 ang=out=0 RET timer 即時控制程序(8KHz)

60

RD ang ADD (frq) WR ang ang+=frq SFR 8 ADD (th) AND 255 ACC=(ang256+th)amp0x00ff SUB (duty) RD (amp) JLT t1 RD 0 ACC=(amp0) t1 ADD (bias) WR out out=ACC+bias RET

IIR 一階濾波器

此模組執行一階的 IIR濾波器方塊圖如下

kau x

Z-1

+

+

-

+低通濾波器

高通濾波器dx lp

hp

濾波器參數的計算公式如下

1假設濾波器的頻寬為 hz則 ωn=hz628 2若系統頻率為 8KHz則抽樣週期 dT為 dT=dt8000 其中 dt為模組參數 3則濾波器參數為 ka=ωndT4096或是 =hzdt62880004096即 =hzdt32 4當 dt決定後所允許的訊號頻寬為(4000dt)換句話說訊號頻寬會因為 dt增加而下降

為了方便實驗的運用下面列出常用的參數對照表

濾波頻寬

(Hz)

10 20 50 100 200 500 1000 2000

訊號頻寬

(Hz)

400 800 2000 4000 4000 4000 4000 4000

模組參數 dt 10 5 2 1 1 1 1 1

模組參數 ka 320 320 320 320 640 1600 3200 6400

表格的運用方式如下

1首先決定濾波頻寬 2接著查表找出對映的參數 dt和 ka 3再查表得到對映的訊號頻寬以決定是否需要串接前級濾波器

61

模組程式範例IIR1_FILTERasm

local u R0 IP 輸入點濾波器輸入 local lp R1 OP 輸出點低通濾波器輸出 local hp R2 OP 輸出點高通濾波器輸出 local dt R3 1 參數抽樣週期 local ka R4 4096 參數增益 ka10=4096 local prd R5 內部變數抽樣週期用 data 6 模組變數區長度 initial 開機啟動程序 WR lp0 WR hp0 WR prd1 RET lp=hp=0prd=1 timer 即時控制程序 SUB prd1 JNZ b9 if (--prdgt0) return RD dt WR prd prd=dt RD (u) SUB lp WR hp hp=u-lp MUL ka SFR 12 ADD lp WR lp lp+=(hpka4096) b9 RET

資料蒐集模組

資料蒐集模組是一個非常特殊的模組專門配合 eTTY 程式中的示波器使用

模組程式範例DAS4asm

local cmd R0 0 紀錄命令0=停止1=前置記錄2=正觸發4=負觸發6=觸發記錄 local dt R1 1 抽樣週期每 dT抽樣一次 local tab R2 TP DAS表格啟始位址 local cnt R3 0 目前記錄點(0~255) local ch1 R4 0 定義頻道1的變數位址 local ch2 R5 0 定義頻道2的變數位址 local ch3 R6 0 定義頻道3的變數位址 local ch4 R7 0 定義頻道4的變數位址 local trg R8 0 定義觸發頻道的變數位址 local th R9 0 觸發準位 local tail R10 0 觸發後的抽樣個數 local buf R11 1 抽樣計數(1~dt) local pnt R12 表格位址計算pnt=tab+cnt4 local len R13 表格長度計算(0~256) data 14 定義模組變數區的長度 table tab 1024 定義表格的長度 initial 啟動程序 WR cmd0 RET cmd=0 timer 控制程序

62

ADD cmd0 JZ t9 if (cmd==0) return SUB buf1 JNZ t9 if (--buf)gt0) return RD dt WR buf dt=buf RD cnt ADD 1 AND 0xff WR cnt cnt=(cnt+1)amp0xff SFL 2 ADD tab WR pnt pnt=tab+cnt4 RD (ch1) WR (pnt) ADD pnt1 pnt++=ch1 RD (ch2) WR (pnt) ADD pnt1 pnt++=ch2 RD (ch3) WR (pnt) ADD pnt1 pnt++=ch3 RD (ch4) WR (pnt) pnt =ch4 RD cmd SUB 1 JZ t9 SUB 1 JZ t2 SUB 1 JZ t3 SUB 1 JZ t4 SUB 1 JZ t5 SUB 1 JZ t6 JR t7 t2 RD (trg) SUB th JGE t9 ADD cmd1 JR t9 wait trgltth t3 RD (trg) SUB th JLE t9 JR t6 wait trggtth t4 RD (trg) SUB th JLE t9 ADD cmd1 JR t9 wait trggtth t5 RD (trg) SUB th JGE t9 JR t6 wait trgltth t6 WR len0 WR cmd7 len=0cmd=7 t7 ADD len1 SUB tail JLT t9 WR cmd0 if ((++len)gt=0x80) cmd=0 t9 RET

與 DC 馬達控制相關的程式模組有以下 4個程式模組說明如下

(1)加減速控制模組 ACC_controlasm (2)光電盤輸入模組 POS_inputasm (3)PWM輸出模組 PWM_outputasm (4)PD控制模組 PD_controlasm

71加減速控制模組 此程式模組主要功能在於執行位置控制的加減速命令修正其數學模式採用 Lynn

濾波器的架構參見下圖

cmd

2

+

old Z -1

-

Z -1

Z -1

Z-1

Z-1x0 x1 x8 x9 x16

+ -

++

2

Z-1

Z-1 y1 y2

+

-

y0

+ +

sumZ-1

+164

12

out

dif

+

63

加減速控制模組方塊圖

其中

1Lynn 濾波器的階數固定成八階也就是 m=8其公式為 H(z) = (1-2Z-m+Z-2m)(1-2Z-1+Z-2)m2

2因為m=8所以m2=64因此最後計算低通濾波的部份時要先做除 64的運算 3因為低通濾波(lp)和 y0之間有 64倍的差異代表 y0y1y2的變化範圍比濾波器輸

入值要擴大許多例如輸入值在+-1000變化時y0y1y2很可能會在+-64000之間變化這範圍已經超出整數處理的範圍很可能會造成錯誤的計算結果

4所以在實驗時輸入值的變化範圍必須控制在+-500之間以保證計算的正確性 5對於 Lynn 濾波器當 m=8時其濾波器的頻寬固定為 1 kHzmdt也就是 dt=1時頻寬為 125 Hz dt=2時頻寬為 625Hz依此類推 6對於 Lynn 濾波器其濾波器的延遲固定為 m個抽樣週期因此設計 hp = x8 - lp 即可得到高通濾波器的對應結果 7其中乘 2和除 64的運算以移位運算取代所以整個程式中並無任何乘法運算 8Lynn 濾波器本身並不是穩定濾波器所以在程式啟動時必須確實的將所有狀態

(x0~x16)歸零否則會產生不穩定的狀態輸出

因為 Lynn濾波器中所有參數固定所以除了抽樣週期 dt 之外並無任何可調參數

抽樣週期 dt 可以控制頻寬dt 越大則濾波器頻寬越低

將步階命令值的輸出送入 Lynn 濾波器中經由低通濾波器的效應可以減緩命

令的變化程度達到加減速控制的目的以下為使用 Lynn 濾波器型式實現加減速控

制的組合語言程式列印 如欲更進一步瞭解 Lynn 濾波器與 FIR 數位濾波器之間的關係可以參考通訊實驗

四數位濾波器設計(FIR)中之說明

ACC_controlasm程式列印 local cmd R0 IP 輸入點位置命令

local out R1 OP 輸出點加減速處理後的位置命令

local dif R2 OP 輸出點位置微分命令

local axis R3 0 馬達編號0=X1=Y2=Z3=C

local old R4 內部變數微分計算用

local sumL R5 內部變數積分計算用

local sumH R6 內部變數積分計算用

local y0 R7 內部變數y(0~2)

local y1 R8 local y2 R9

local x0 R10 內部變數x(0~16)

local x1 R11 local x2 R12 local x3 R13 local x4 R14

local x5 R15 local x6 R16 local x7 R17 local x8 R18

local x9 R19 local x10 R20 local x11 R21 local x12 R22

local x13 R23 local x14 R24 local x15 R25 local x16 R26

64

data 27 模組變數區長度

initial 開機啟動程序

WR dif0 RD (cmd) WR out WR old dif=0 out=old=cmd

sumHL=cmd64

SFL 6 WR sumL RD out SFR 10 SGN 5 WR sumH

RPT 17 WR x00 RPT 3 WR y00 RET x[0~16]=0y[0~2]=0

timer 即時控制程序

RD (cmd) SUBX old WR x0 x0=cmd-old old=cmd

SUB x81 ADD x16 ADD y11 SUB y2 WR y0 y0=x0-2x8+x16+2y1-y2

SGN ADD sumL WR sumL RDH ADC sumH WR sumH sumHL+=y0

WRH RD sumL SFR 6 WR out out=sumHL64

RD y0 SGN SFR WR dif dif=y032mm

RD x0 RPT 16 RDX x1 x[i]=x[i-1] i=1~16

RD y0 RDX y1 WR y2 y[i]=y[i-1] i=1~2

b9 RET

72光電盤輸入模組

DC馬達的位置由光電盤量測之預設儲存於 0xac與 0xbe二個輸入埠位址中其中位址 0xac記錄 X軸馬達的位置位址 0xbe記錄 Y軸馬達的位置由於本實驗的DC馬達接在 Y軸的位置上因此程式中直接選用 Y軸的輸入 光電盤位置輸入的程式列印如下其中速度由位置的差分而得至於馬達的位置

則使用內部 2個 word加以記錄精度為 32位元 POS_inputasm程式列印 local spd R0 OP 輸出點速度量測值

local ang R1 OP 輸出點角度量測值

local angH R2 內部變數角度的 32 位元部分

local mode R3 0x308 模式選擇15MHzAB 相正反向輸入

local pht R4 0xac 輸入阜地址光電盤輸入(0xac)

local phtc R5 0xbe 輸入阜地址光電盤模式(0xbe)

local old R6 內部變數速度更新用

data 7 模組變數區長度

initial 開機啟動程序

RD mode WR (phtc) phtc=mode

RD (pht) WR old WR spd0 RET old=phtspd=0

timer 即時控制程序

RD (pht) SUBX old SGN 11 WR spd spd=(pht-old)old=pht

65

ADD ang WR ang angHL+=spd

RDH ADC angH WR angH

RET

73 PWM輸出控制模組 模組方塊

cmd PWM輸出

程式說明 1在開機時將切換保護時間寫到輸出阜 0xbc上其中切換保護值為 0~6360=5us 2在每次 timer interrupt時將 cmd訊號處理後寫到輸出阜 0xb8上

PWM_outputasm程式列印 local cmd R0 IP gnd 輸入點v相命令

local gain R1 4096 參數輸出增益1=4096

local bias R2 2048 參數輸出偏壓0=2048

local limit R3 4095 參數輸出極限1=4095

local zone R4 0x88f0 參數頻率=12KHz切換保護=5us

local pwm R5 0xb8 輸出阜地址PWM0 輸出(0xb8)

local mode R6 0xbc 輸出阜地址PWM 模式(0xbc)

local p0md R7 0xf8 輸出阜地址port0 模式(0xf8)

local gnd R8 0 輸入接地點

data 9 模組變數區長度

initial 開機啟動程序

RD bias WR (pwm) pwm=bias

RD 0xffff WR (p0md) set port0 mode

RD zone WR (mode) RET mode=zone

stop 關機保護程序

RD bias WR (pwm) RET pwm=bias

timer 即時控制程序

RD (mode) xor 1 and 1 WR (mode) trigger watch-dog

RD (cmd) MUL gain SFR 12 ADD bias ACC=(cmdgain4096)+bias

MAX 0 MIN limit WR (pwm) pwm=limit(ACC)

RET

66

74 PD 控制模組

PD控制的模組方塊參見圖二十一所示其中比例控制的部份直接由增益 kp加以調整微分控制的部份則由誤差的差分經增益 kd的調整而得

Σ+

-

cmd

fdk

err out

Σ

pk

dk

Σ

+

+

+

-

old1minusZ

PD控制器的方塊圖

PD_controlasm程式列印 local cmd R0 IP gnd 輸入點位置命令(可忽略)

local fdk R1 IP gnd 輸入點位置回授(可忽略)

local out R2 OP 輸出點用以控制速度迴路

local kp R3 256 參數增益 kp10=256

local kd R4 0 參數增益 kd10=256

local err R5 0 內部變數

local old R6 0 內部變數

local gnd R7 0 無輸入時的短路點

data 8 模組變數區長度

initial 開機啟動程序

WR out0 WR old0 RET out=old=0

timer 即時控制程序

RD (cmd) SUB (fdk) PRTF WR err

MUL kp SFR 8 P=(cmd-fdk)kp256

RDS err SUBX old MUL kd SFR 8 D=(err-old)kd256

ADDS

WR out out=P+D

RET

程式中預設增益值的 10以整數值 256為基底因此使用 SFR 8的指令加以調

整另外在在計算微分項的程式部份用到 SUBX old的指令其詳細的暫存器動作如

下 參考 piDSP的指令說明SUBX指令將總共用到 3個時序參考錯誤 找不到參照

67

來源在時序 1時將原先 AX的資料拷貝一份到 HX中時序 2時正式執行減

法的動作所以 AX暫存器中的內容會變成 err-old時序 3時DSP會將存放在 HX暫存器中的內容拷貝一份到 old的記憶體中也就是經由 SUBX此一精簡指令將

同時完成計算差分所需要的相減與資料疊代的動作有效的利用 piDSP控制器 DSP核心的精簡指令將可以大幅提昇系統的計算速度

HX AXoldSUBXerr err

old

err

errerr olderr minus

1_err

errerr olderr minus err

1_err

1

2

3

SUBX的指令時序與暫存器變化

68

8附錄快速安裝說明

光纖網路通訊 FPGA 發展系統 (適用於 WIN-XP200098 系統)

快速安裝說明

26Pin 負載輸出入埠

雙電源︵5

12

伏︶輸入埠

單電源︵5

伏︶輸入埠

USB

光纖線輸

號 光纖線輸出埠

入 傳 埠

首先將光碟片 RFFPGA 目錄檔案拷貝在您工作硬碟裡面

第一次安裝時先將 USB 傳輸線接上電腦主機將電源供應器接上 FPGA 模組此時電

腦會出現安裝 USB-Serial 驅動程式選擇從清單安裝此驅動程式放置在光碟片

RFFPGA-USBdrive 選擇您目前安裝系統

可選擇 WIN-98WIN-MEWIN-2000WIN-XP 系統配合您現在工作電腦作業系統

69

注意一般電腦 USB 埠很多插口當您安裝驅動程式時是配合您當時插入之埠

下次如您插入不同接口埠時電腦會再次要求安裝驅動程式這是正常現象請再次安

裝驅動程式否則無法使用

FPLC 操作

首先進入 RFFPGA裡子目錄 testASM直接點選 fPLCexe 出現下面操作畫面(也可直接將

此檔案放置桌面直接點選)

(或者選擇 File 再執行 Setuphellip 選擇您要執行 CAI 檔)

70

進入下面操作畫面 首先使用滑鼠在 FPGA下載按鈕單擊動作使 FPGA變成 DSP晶片 實驗一至實驗五皆為使用 DSP組合語言設計程式其原始程式分別為 testASM1至testASM5可使用 texPad 開啟與編輯程式內容 實驗三與實驗五多有 IO控制動作 當選擇實驗三時出現下面畫面

71

eM_USB 模組

數字型 LED

0 1 2 34 5 6 78 9 A BC D E F

燈號型 LED

44 鍵盤

ADC0 ADC1 DAC0 DAC1

LED 選擇KEY 選擇

模 式 1

0123

注意操作畫面 3與 4 說明開關與按鍵選擇位置後選擇程式下載再按程式啟動如您

按下 0-3按鍵時燈號型 LED會有不同方向閃爍顯示程式停止時結束所有 IO控制動作再按回首頁選擇其他實驗 實驗四與實驗五

模式3

0 1 2 34 5 6 78 9 A BC D E F

按照上面開關選擇直接操作如果以上實驗皆能按照正常操作表示您光纖網路通訊

FPGA發展模組以能正常使用 注意 開機與關機動作順序如下

開機電腦啟動 --- eM_USB 模組電源接上 --- USB 接上電腦 ---

啟動 FPLC 軟體 --- 下載 FPGA 程式

關機關閉 FPLC 軟體 --- eM_USB 模組電源拔掉 --- 拔掉電腦 USB 接頭 ---關掉

電腦

如果以上順序有亂可能造成 USB 找不到驅動造成無法下載經過幾次測試還是

無法下載建議重新啟動電腦主機按照正確步驟操作

72

FPGA 下載操作

進入 FPLC 操作系統按照下列步驟選擇節點模組與下載 bit FPGA 檔案

在 VHDLDEMO 子目錄下您可以選擇您目前 FPGA 種類型號在此型號下我們已將 VHDL

與數位邏輯設計課本範例全部放於此處

73

光纖網路連線 FPGA 下載操作

首先利用光纖線將 eM_USB0 模組光纖輸出埠接至 eM_USB1 模組光纖輸入埠以此

類推最後再將最後 eM_USBN 模組光纖輸出埠接至 eM_USB0 模組光纖輸入埠配置

如附圖方式

個人電腦(Windows) eM_USB模組

0USB

eM_USB模組1

光纖網路

eM_USB模組2

eM_USB模組N

配置完成後進入 FPLC 系統首先必須先將 Node00 下載在 testASM 子目錄裡

piDSPv0bit 檔讓 eM_USB0 模組 FPGA 具備 DSP 功能才能執行光纖網路通訊

操作如下

此時您就可以選擇分別下載至各模組 FPGA 檔 bit

74

安裝 FPLC 注意事項

當您進入 FPLC 時

按 FILE 選擇 programhellip 選擇檔案為 exp_dcmplc 出現下面畫面

正常顯示畫面為

75

DOS 環境操作

在 PC 端的操作是在 Windows 環境中的 DOS 視窗中執行指令範例如下

eFPGA progNETbit 下載 FPGA電路至網路節點0(即 USB節點)中 eFPGA testLEDbit 1 下載 FPGA電路至網路節點1中

對於單一節點的控制程序如下

1將 eM_USB模組連結個人電腦的 USB端 2eM_USB模組開機 3執行下載指令即可 eFPGA xxxxbit 4若要更改 FPGA電路只要重新執行下載指令即可

對於多個網路節點的控制程序如下

1第一組 eM_USB模組連結個人電腦的 USB端再以光纖網路依序其他各節點 2連接 USB界面者為模組0從光纖發射端連接出去的模組為1依此類推 3將所有 eM_USB模組開機 4執行下載指令如下 eFPGA progNETbit 模組0必須先下載指定的 FPGA電路 eFPGA xxxxbit 1 再依序下載其他網路模組的 FPGA電路 eFPGA yyyybit 2 eFPGA zzzzbit 最後再重新下載模組0的 FPGA電路 5換句話說模組0必須先執行 progNETbit讓光纖網路接受 FPGA控制後才能透過光纖網路下載至其他節點等全部網路節點下載完畢後再將模組0的 FPGA重新下載讓模組0也可自由執行任意的 FPGA電路

6若要更改某一個網路節點中的 FPGA電路只要重新執行下述指令 eFPGA progNETbit 模組0必須先下載指定的 FPGA電路 eFPGA yyyybit 2 下載指定網路模組的 FPGA電路 eFPGA zzzz bit 最後再重新下載模組0的 FPGA電路 換句話說除非模組0中的 FPGA已經包括光纖網路管理電路否則一定要先在

模組0中下載網路管理電路後才能下載指定網路節點的 FPGA電路

76

光纖網路通訊 FPGA 發展系統

系統配置

光纖網路通訊 FPGA 發展系統的系統配置圖如下

個人電腦(Windows) eM_USB模組

0USB

eM_USB模組1

光纖網路

eM_USB模組2

eM_USB模組N

其中

1基本模組為 eM_USB模組可用 USB界面和個人電腦連線並提供 USB對光纖網路的轉換功能使得個人電腦可以獨立控制光纖網路中的每個網路節點

2eM_USB模組也可以作為光纖網路中的網路節點透過光纖網路而接受個人電腦的

監控 3就個人電腦而言不論是 USB界面直接連結或是以光纖網路間接連結的 eM_USB模組都是可以直接監控的網路節點最多可以同時控制一個 USB節點和 30個網路節點

4對於每一個網路節點個人電腦都可執行 eM_USB模組中 FPGA的電路下載工作並在適當的 FPGA電路配合下可執行 eM_USB模組中 FPGA內部電路的讀寫控制 5透過適當的 FPGA電路設計各網路節點都可透過光纖網路和其他任何網路節點

作同步通訊執行 FPGA內部記憶體的資料交換資料交換頻率可達 1KHz以上

77

網路模組配置

每個網路模組的標準配置圖如下

eM_USB模組光纖網路

USB eM_FPGA卡

eM_DEMO模組

eM_EXP實驗模組

DC電源

其中

1網路模組以 eM_USB模組為主提供基本的 USB界面和光纖網路連線 2eM_USB模組中的 FPGACPLD採用插卡型式可選擇不同的 eM_FPGA卡包括

eM_2V1K卡可選用 Virtex系列的 XC2V250和 XC2V1000 eM_3S1K卡可選用 Spartan3系列的 XC3S400XC3S1000和 XC3S1500 eM_3S50卡可選用 Spartan3系列的 XC3S50XC3S200和 XC3S400 eM_95XL卡可選用 9500XL系列的 XC95144XL和 XC95288XL 3eM_USB模組中的對外連線有兩種一種是 26P接頭用以連接既有的各種實驗模

組另一種是兩組 50P接頭將 FPGA中各接腳引出用以連接專題實驗 4eM_DEMO模組就是插上 50P接頭的教學模組其中包括 LED 數字顯示和 44鍵盤也具備兩組的 ADC和兩組的 DAC接頭提供類比訊號的測試工具

常用的實驗組合包括

1精簡組合包括(eM_USB+eM_FPGA)提供基本的網路節點適用於專題實驗 2標準組合包括(eM_USB+eM_FPGA+eM_DEMO)提供基礎 FPGA設計的教學實驗

3實驗組合包括(eM_USB+eM_FPGA+eM_DEMO+eM_EXP)提供進階的 FPGA實驗可依需求選用不同的實驗模組

78

eM_USB 模組

eM_USB 模組的電路配置圖如下

TxRx

DCPower

USB

JP2

JP3

光纖界面

外加電源

PC連線

JP1

eM_FPGA模組

FT232 CPLD FlashROM

SRAM

10cm

6cm

JP4

其中

1對外的連線接頭包括 DC電源 可選擇單電源(5V)或是多電源(5V+12V-12V)兩種 USB界面 直接連接個人電腦 光纖界面連接光纖網路 2實驗界面包括 JP1負責內部 CPLD的電路下載 JP2JP3兩組 50P的擴張用接頭 JP4 標準 26P接頭用以連接各種實驗模組 3內部的電路配置包括 A以 SO-DIMM接頭連接各種 eM_FPGA卡 B內附 EEPROMFlashROM和 SRAM提供 FPGA作應用測試 C以一顆 FT232BM作為 USB界面解碼而以一顆 CPLD作為光纖網路解碼 D提供各種 eM_FPGA卡的電路下載功能 4內附五顆 LED由上而下依序為 usbLED指示 USB界面的讀寫狀態 tstLED可由 FPGA電路自行定義 stsLED可由 FPGA電路自行定義 RxLED 可由 FPGA電路自行定義 TxLED 可由 FPGA電路自行定義

79

外部接腳定義

外部接頭的接點順序圖示如下

上視圖

JP11 9 JP4

126225

JP31

50249

JP21

50249

而各接頭的接點定義如下

JP1 JP4 JP2 JP3 1+33V 1+12V 2+12V 1 GND 2 GND 1 GND 2 GND 2GND 3 ADC 4 DAC 3POWER 4ALARM 3 +5V 4 +5V 3nc 5 yPB2 6 yPB3 5RxNET 6TxNET 5+12V 6+12V 4TCK 7 yPB1 6 yPB4 7RxUSB 6TxUSB 7-12V 6-12V 5nc 9 yPB0 10yPB5 9RxCAN 10TxCAN 9 ADC 10 DAC 6TDO 11yPB6 12yPB7 11P0D0 12P0D1 11P1D0 12P1D1 7TDI 13yGND 14yPC3 13P0D2 14P0D3 13P1D2 14P1D3 8nc 15yPC2 16yPC1 15P0D4 16P0D5 15P1D4 16P1D5 9TMS 17yPC0 18yPA0 17P0D6 18P0D7 17P1D6 18P1D7 19yPA1 20yPA2 19P0D8 20P0D9 19P1D8 20P1D9 21yPA3 22GND 21P0D10 22P0D11 21P1D10 22P1D11 23GND 24+5V 23P0D12 24P0D13 23P1D12 24P1D13 25+5V 26nc 25P0D14 26P0D15 25P1D14 26P1D15 27P2D0 28P2D1 27PxA0 28PxA1 29P2D2 30P2D3 29PxA2 30PxA3 31P2D4 32P2D5 31PxA4 32PxA5 33P2D6 34P2D7 33PxA6 34PxA7 35P2D8 36P2D9 35PxB0 36PxB1 37P2D10 38P2D11 37PxB2 38PxB3 39P2D12 40P2D13 39PxB4 40PxB5 41P2D14 42P2D15 41PxB6 42PxB7 43ADC0 44ADC1 43PxC0 44PxC1 45ADC2 46ADC3 45PxC2 46PxC3 47ADC4 48ADC5 47PxC4 48PxC5 49DAC0 50DAC1 49PxC6 50PxC7

80

eM_FPGA 模組

在各種 eM_FPGA 模組中FPGA 對外電路的標準配置圖如下

24576MHz

FlashROM

26PSRAM

EEPROM

mD[8]

yPA[4]

FPGACPLD

mA[19]mRDmWRmCSeeCKeeCSeeDIeeDO

光纖界面 RxNETTxNET

USB 界面 RxUSBTxUSBCLK24MPOWERALARM

LED

tstLEDstsLEDRxLEDTxLED

yPB[8]yPC[4]

ADCDAC

ADC[8]

實驗模組

ADC[2]

DAC[2]

xPA[4]

xPB[8]

xPC[4]

基礎實驗

其中

1FPGACPLD可以選擇下述幾種 XC2V250XC2V1000 採用 eM_2V1K模組其中 FPGA為 FG456包裝 XC3S400XC3S1000XC3S1500採用 eM_3S1K模組其中 FPGA為 FG456包裝 XC3S400XC3S1000XC3S1500採用 eM_3S1K模組其中 FPGA為 FG456包裝 XC3S50XC3S200XC3S400 採用 eM_3S50模組其中 FPGA為 TQ144包裝 XC95144XLXC95288XL 採用 eM_95XL模組其中 CPLD為 TQ144包裝 2採用 FG456包裝者可以控制所有的 IO界面 3採用 TQ144包裝者只是不能控制 RAM和 FlashROM而可以控制其他所有的界面 4所有 FPGA模組都可自由選擇由 USB界面或是由光纖界面下載電路但是 CPLD模組只能固定由 USB界面下載電路

5所有 FPGACPLD模組都可透過 26P接頭連接既有的各種實驗模組

81

FPGA 接腳對照表

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

mD0 XD6 mD0 A17 C13 -- -- mD1 XD7 mD1 B17 D12 -- -- mD2 XD8 mD2 C17 D11 -- -- mD3 XD9 mD3 D17 C11 -- -- mD4 XD10 mD4 E17 D10 -- -- mD5 XD11 mD5 E16 C10 -- -- mD6 XD12 mD6 E14 D9 -- -- mD7 XD13 mD7 E13 D7 -- -- mA0 XD14 mA0 D13 C7 -- -- mA1 XD15 mA1 C13 D6 -- -- mA2 XA0 mA2 V5 C3 -- -- mA3 XA1 mA3 U5 C4 -- -- mA4 XA2 mA4 Y2 D3 -- -- mA5 XA3 mA5 Y1 D4 -- -- mA6 XA4 mA6 V4 E3 -- -- mA7 XA5 mA7 V3 E4 -- -- mA8 XA6 mA8 W2 F3 -- -- mA9 XA7 mA9 W1 F4 -- -- mA10 XA8 mA10 T2 G6 -- -- mA11 XA9 mA11 T1 K3 -- -- mA12 XA10 mA12 R4 K10 -- -- mA13 XA11 mA13 R3 L3 -- -- mA14 XA12 mA14 R2 L4 -- -- mRD XRD mRD R1 D5 -- -- mWR XWR mWR P6 C6 -- --

POWER P0A0 POWER B4 B20 P1 P5 ALARM P0A1 ALARM A4 A19 P2 P6 RxNET P0A2 RxNET C4 B19 P4 P7 TxNET P0A3 TxNET C5 A18 P5 P9 RxUSB P0B0 RxUSB B5 A15 P6 P10 TxUSB P0B1 TxUSB A5 B15 P7 P11 RxCAN P0B2 RxCAN D6 A14 P8 P12 RxCAN P0B3 TxCAN C6 B14 P10 P13

CLK24M CLK24M CLK24M E12 B12 P124 P38

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

PWM0H P3A0 P0D0 E6 A8 P21 P23 PWM0L P3A1 P0D1 E5 B8 P23 P24 PWM1H P3A2 P0D2 C2 B6 P24 P25 PWM1L P3A3 P0D3 C1 A5 P25 P26 PWM2H P3A4 P0D4 D2 B5 P26 P27

82

PWM2L P3A5 P0D5 D1 A4 P27 P28 PWMenb P3A6 P0D6 E4 B4 P28 P30 PHT1Z P3A7 P0D7 E3 A3 P30 P31 PHT1A P3B0 P0D8 G2 C1 P31 P32 PHT1B P3B1 P0D9 G1 C2 P32 P33 PHT0A P3B2 P0D10 H5 D1 P33 P34 PHT0B P3B3 P0D11 J6 D2 P35 P35 AMP0 P3B4 P0D12 H4 E1 P36 P39 AMP1 P3B5 P0D13 H3 E2 P40 P40 AMP2 P3B6 P0D14 H2 F2 P41 P41 AMP3 P3B7 P0D15 H1 G1 P44 P43 eeSK P0C3 P1D0 C10 B9 P20 P22 eeCS P0C2 P1D1 D10 A9 P18 P21 eeDI P0C1 P1D2 F10 B10 P17 P20 eeDO P0C0 P1D3 E10 B11 P15 P19 ssCK P0B7 P1D4 E8 A11 P14 P17 ssCS P0B6 P1D5 E7 A12 P13 P16 ssDI P0B5 P1D6 A6 B13 P12 P15 ssDO P0B4 P1D7 B6 A13 P11 P14

ppCLK P3C0 P1D8 K4 G2 P46 P44 ppDIN P3C1 P1D9 K3 K1 P47 P45 TxD P3C2 P1D10 K2 K2 P50 P46 RxD P3C3 P1D11 K1 L1 P51 P48

tstLED P3C4 P1D12 L5 L2 P52 P49 stsLED P3C5 P1D13 L4 M1 P53 P50 RxLED P3C6 P1D14 L3 M2 P55 P51 TxLED P3C7 P1D15 L2 N1 P56 P52

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

xPA0 P2A0 P2D0 AA3 N2 P59 P53 xPA1 P2A1 P2D1 Y4 T1 P60 P54 xPA2 P2A2 P2D2 AA4 T2 P63 P56 xPA3 P2A3 P2D3 AB4 U2 P68 P57 xPC0 P2A4 P2D4 W5 V1 P69 P58 xPC1 P2A5 P2D5 Y5 V2 P70 P59 xPC2 P2A6 P2D6 AA5 W1 P73 P60 xPC3 P2A7 P2D7 AB5 W2 P74 P61

-- P2B0 P2D8 V6 Y1 P76 P64 -- P2B1 P2D9 V7 Y2 P77 P66 -- P2B2 P2D10 W6 AA3 P78 P68

mCS P2B3 P2D11 Y6 AB4 P79 P69 mA15 P2B4 P2D12 V9 AA4 P80 P70 mA16 P2B5 P2D13 V10 AB5 P82 P71 mA17 P2B6 P2D14 W10 AA5 P83 P74 mA18 P2B7 P2D15 Y10 AA6 P84 P75 CS0 P2C0 ADC0 AA10 AB8 P85 P76

83

SDIN0 P2C1 ADC1 AB10 AA8 P86 P77 CS1 P2C2 ADC2 U10 AB9 P87 P78

SDIN1 P2C3 ADC3 U11 AA9 P89 P79 SCLK P2C4 ADC4 V11 AB10 P90 P80 CS2 P2C5 ADC5 W11 AA10 P92 P81

SDOUT P2C6 ADC6 Y11 AB11 P93 P82 LDAC P2C7 ADC7 AA11 AA11 P95 P83

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

xPB0 P1A0 PxA0 M1 M3 P135 P85 xPB1 P1A1 PxA1 M2 M4 P132 P86 yPB2 P1A2 PxA2 M3 N3 P131 P87 yPB3 P1A3 PxA3 M4 N4 P130 P88 yPB1 P1A4 PxA4 M5 T4 P129 P91 yPB4 P1A5 PxA5 M6 T5 P128 P92 yPB0 P1A6 PxA6 N1 U3 P127 P93 yPB5 P1A7 PxA7 N2 U4 P125 P94 yPB6 P1B0 PxB0 U13 V3 P119 P95 yPB7 P1B1 PxB1 V13 V4 P118 P96 xPB2 P1B2 PxB2 W13 W3 P116 P97 xPB3 P1B3 PxB3 Y13 W4 P113 P98 xPB4 P1B4 PxB4 AA13 Y3 P112 P100 xPB5 P1B5 PxB5 AB13 Y4 P96 P101 yPC3 P1B6 PxB6 U12 Y5 P97 P102 yPC2 P1B7 PxB7 V12 W5 P98 P103 yPC1 P1C7 PxC0 AB17 W11 P108 P113 yPC0 P1C6 PxC1 AA17 Y11 P107 P112 yPA0 P1C5 PxC2 Y17 W10 P105 P111 yPA1 P1C4 PxC3 W17 Y10 P104 P110 yPA2 P1C3 PxC4 AB18 W9 P103 P107 yPA3 P1C2 PxC5 AA18 W8 P102 P106 xPB6 P1C1 PxC6 Y18 W6 P100 P105 xPB7 P1C0 PxC7 W18 Y6 P99 P104

84

eM_DEMO 模組

eM_DEMO 模組的電路配置圖如下

eM_USB 模組

數字型 LED

0 1 2 34 5 6 78 9 A BC D E F

燈號型 LED

44 鍵盤

ADC0 ADC1 DAC0 DAC1

LED 選擇KEY 選擇

其中

1eM_DEMO模組的基本功能包括 A將 xPAxPBxPC等 16個 IO訊號引出控制 LED和鍵盤電路 B將 ADDA訊號引出並放大成+-10V的工作範圍 2LED和鍵盤可以選擇三種模式由 LED和 KEY 兩組開關作選擇圖示如下

模式1

0123

模式2 模式3

0 1 2 34 5 6 78 9 A BC D E F

0123

3模式14鍵輸入並搭配 16點的 LED燈號顯示其中 16點 LED分別對映到 xPA[0~3]xPB[0~7]和 xPC[0~3] 4組按鍵分別對映到 xPC[0~3] 4模式24鍵輸入並搭配四個 7段式數字顯示其中 數字顯示由 xPA[0~3]作數字掃瞄而由 xPB[0~7]作 7段式 LED控制 4組按鍵 分別對映到 xPC[0~3] 5模式316鍵輸入並搭配四個 7段式數字顯示其中 數字顯示由 xPA[0~3]作數字掃瞄而由 xPB[0~7]作 7段式 LED控制 16組按鍵由 xPA[0~3]作鍵盤掃瞄而由 xPC[0~3]作鍵盤讀取 6根據VHDL與數位邏輯設計的章節其中 第 1章至 10章的實驗採用模式1而 第 11章實驗採用模式2而 第 12章之後的實驗都採用模式3

85

FPGA UCF 定義

eM_3S1K 模組

NET CLK LOC = B12

NET XAlt0gt LOC = N2

NET XAlt1gt LOC = T1

NET XAlt2gt LOC = T2

NET XAlt3gt LOC = U2

NET XBlt0gt LOC = M3

NET XBlt1gt LOC = M4

NET XBlt2gt LOC = W3

NET XBlt3gt LOC = W4

NET XBlt4gt LOC = Y3

NET XBlt5gt LOC = Y4

NET XBlt6gt LOC = W6

NET XBlt7gt LOC = Y6

NET XClt0gt LOC = V1

NET XClt1gt LOC = V2

NET XClt2gt LOC = W1

NET XClt3gt LOC = W2

NET YAlt0gt LOC = W10

JP4 接頭

NET YAlt1gt LOC = Y10

NET YAlt2gt LOC = W9

NET YAlt3gt LOC = W8

NET YBlt0gt LOC = U3

NET YBlt1gt LOC = T4

NET YBlt2gt LOC = N3

NET YBlt3gt LOC = N4

NET YBlt4gt LOC = T5

NET YBlt5gt LOC = U4

NET YBlt6gt LOC = V3

NET YBlt7gt LOC = V4

NET YClt0gt LOC = Y11

NET YClt1gt LOC = W11

NET YClt2gt LOC = W5

NET YClt3gt LOC = Y5

在光碟片中 RFFPGAVHDLDEMOBIT3S1K 裡有 VHDL 與數位邏輯設計書本範例原始檔與合成檔

86

eM_3S50 模組

NET CLK LOC = P124

NET XAlt0gt LOC = P59

NET XAlt1gt LOC = P60

NET XAlt2gt LOC = P63

NET XAlt3gt LOC = P68

NET XBlt0gt LOC = P135

NET XBlt1gt LOC = P132

NET XBlt2gt LOC = P116

NET XBlt3gt LOC = P113

NET XBlt4gt LOC = P112

NET XBlt5gt LOC = P96

NET XBlt6gt LOC = P100

NET XBlt7gt LOC = P99

NET XClt0gt LOC = P69

NET XClt1gt LOC = P70

NET XClt2gt LOC = P73

NET XClt3gt LOC = P74

NET YAlt0gt LOC = P105

JP4 接頭

NET YAlt1gt LOC = P104

NET YAlt2gt LOC = P103

NET YAlt3gt LOC = P102

NET YBlt0gt LOC = P127

NET YBlt1gt LOC = P129

NET YBlt2gt LOC = P131

NET YBlt3gt LOC = P130

NET YBlt4gt LOC = P128

NET YBlt5gt LOC = P125

NET YBlt6gt LOC = P119

NET YBlt7gt LOC = P118

NET YClt0gt LOC = P107

NET YClt1gt LOC = P108

NET YClt2gt LOC = P98

NET YClt3gt LOC = P97

在光碟片中 RFFPGAVHDLDEMOBIT3S200 裡有VHDL與數位邏輯設計書本範例原始檔與合成檔

87

eM_95XL 模組

NET CLK LOC = SPIN38

NET XAlt0gt LOC = SPIN53

NET XAlt1gt LOC = SPIN54

NET XAlt2gt LOC = SPIN56

NET XAlt3gt LOC = SPIN57

NET XBlt0gt LOC = SPIN85

NET XBlt1gt LOC = SPIN86

NET XBlt2gt LOC = SPIN97

NET XBlt3gt LOC = SPIN98

NET XBlt4gt LOC = SPIN100

NET XBlt5gt LOC = SPIN101

NET XBlt6gt LOC = SPIN105

NET XBlt7gt LOC = SPIN104

NET XClt0gt LOC = SPIN58

NET XClt1gt LOC = SPIN59

NET XClt2gt LOC = SPIN60

NET XClt3gt LOC = SPIN61

NET YAlt0gt LOC = SPIN111

JP4 接頭

NET YAlt1gt LOC = SPIN110

NET YAlt2gt LOC = SPIN107

NET YAlt3gt LOC = SPIN106

NET YBlt0gt LOC = SPIN93

NET YBlt1gt LOC = SPIN91

NET YBlt2gt LOC = SPIN87

NET YBlt3gt LOC = SPIN88

NET YBlt4gt LOC = SPIN92

NET YBlt5gt LOC = SPIN94

NET YBlt6gt LOC = SPIN95

NET YBlt7gt LOC = SPIN96

NET YClt0gt LOC = SPIN112

NET YClt1gt LOC = SPIN113

NET YClt2gt LOC = SPIN103

NET YClt3gt LOC = SPIN102

在光碟片中 RFFPGAVHDLDEMOSVF95288XL 裡有VHDL與數位邏輯設計書本範例原始檔與合成

檔案

88

eM_FPGA 模組

NET CLK LOC = E12

NET XAlt0gt LOC = AA3

NET XAlt1gt LOC = Y4

NET XAlt2gt LOC = AA4

NET XAlt3gt LOC = AB4

NET XBlt0gt LOC = M1

NET XBlt1gt LOC = M2

NET XBlt2gt LOC = W13

NET XBlt3gt LOC = Y13

NET XBlt4gt LOC = AA13

NET XBlt5gt LOC = AB13

NET XBlt6gt LOC = Y18

NET XBlt7gt LOC = W18

NET XClt0gt LOC = W5

NET XClt1gt LOC = Y5

NET XClt2gt LOC = AA5

NET XClt3gt LOC = AB5

NET YAlt0gt LOC = Y17

JP4 接頭

NET YAlt1gt LOC = W17

NET YAlt2gt LOC = AB18

NET YAlt3gt LOC = AA18

NET YBlt0gt LOC = N1

NET YBlt1gt LOC = M5

NET YBlt2gt LOC = M3

NET YBlt3gt LOC = M4

NET YBlt4gt LOC = M6

NET YBlt5gt LOC = N2

NET YBlt6gt LOC = U13

NET YBlt7gt LOC = V13

NET YClt0gt LOC = AA17

NET YClt1gt LOC = AB17

NET YClt2gt LOC = V12

NET YClt3gt LOC = U12

在光碟片中 RFFPGAVHDLDEMOBIT2V250 裡有VHDL與數位邏輯設計書本範例原始檔與合成檔

89

Page 27: RFFPGA 直流馬達實驗手冊juniortek.com.tw/program/manual/RF-DC-mal.pdf · em_demo模組 em_dcm 直流伺服馬達 dc電源 rffpga 系統的直流馬達實驗規劃 其中包括:

其中

1利用差分公式來取代 PD控制器中的微分公式定義如下 s ==gt (1-Z-1)DT 其中對映的變數包括 s 微分項 Z-1延遲一個抽樣週期 DT抽樣週期單位為 sec 2就執行面而言Z-1是延遲一個抽樣週期也就是以抽樣週期所控制的暫存器 3在上圖中將命令(cmd)和回授(fdk)相減後得到誤差值(err)再將 err延遲一個抽樣週期成為 old所以(err-old)DT即是微分項

4原始的微分控制公式為(err-old)DTKd必須先除再乘但是因為 DT和 Kd 都是常

數可以預先將 Kd修正成 Kd=(KdDT)那麼公式將修正為(err-old)Kd就只需要一個乘法而不需要除法了

同樣的 PD 控制器可以用許多不同的方法作執行包括

1以軟體方式執行例如在 DSP核心中以組合語言撰寫控制模組 2以硬體方式執行例如在 FPGA中直接設計邏輯電路 3以微碼方式執行以微碼作順序控制執行硬體運算工作

這裡先提供用組合語言撰寫的程式模組作為設計參考其他兩種方法將在後續的實驗中

再陸續作說明

模組程式範例PD_controlasm

local cmd R0 IP gnd 輸入點位置命令(可忽略) local fdk R1 IP gnd 輸入點位置回授(可忽略) local out R2 OP 輸出點用以控制速度迴路 local kp R3 256 參數增益 kp10=256 local kd R4 0 參數增益 kd10=256 local err R5 0 內部變數 local old R6 0 內部變數 local gnd R7 0 無輸入時的短路點 data 8 模組變數區長度 initial 開機啟動程序 WR out0 WR old0 RET out=old=0 timer 即時控制程序 RD (cmd) SUB (fdk) WR err MUL kp SFR 8 P=(cmd-fdk)kp256 RDS err SUBX old MUL kd SFR 8 D=(err-old)kd256 ADDS WR out out=P+D RET

27

其中

1PD控制模組中對外的界面變數包括 cmd命令的輸入點 fdk回授的輸入點 out控制的輸出點 2內部參數包括 Kp比例控制增益其中 10=256所以乘完後還需要再右移 8-bit Kd微分控制增益其中 10=256所以乘完後還需要再右移 8-bit 3內部變數包括 err臨時性的變數用以儲存誤差值的計算結果 old儲存性的變數用以儲存上一次抽樣控制時的 err值 4模組程式分成三部分包括 變數宣告local和data所宣告的部分 初值設定initial程序中先將 out和 old設定為 0 即時控制timer程序中依序執行 PD控制器中的每個步驟

控制目標的選擇

從字面上來看速度控制就是控制馬達的速度轉角控制就是控制馬達的轉角沒什麼

好討論的但是實際上確有許多問題第一的問題就是什麼是速度和轉角馬達的速

度和轉角如果不作量測如何得知

既然在量測中取得了速度和轉角資料那麼我們所控制的到底是物理學上的速度和轉

sτ+1

KmVc ωKp+sKd

err

P控制器 直流馬達

θc

轉角回授

轉角命令 + 轉角響應-

s1 θ

KxANG

轉角量測

角還是量測上的速度和轉角以下圖為例

其中

1以轉角量測裝置量測轉角例如裝在馬達軸端的光電盤和解碼電路 2轉角的量測輸出是 ANG而 ANG和物理轉角θ之間有 Km的增益關係 3只要 Km值不是 1那麼系統就不再是單位回授 4如果 Km還有非線性或失真現象那麼控制結果也將有非線性或失真現象

這些問題混雜起來會使得控制系統的分析變得更複雜如果要簡單處理就要認同現

實環境直接以量測結果為控制目標如下圖所示

28

sτ+1

KmVc ωKp+sKd

err

P控制器 直流馬達

θc

轉角回授

+-

s1 θ Kx

ANG轉角量測

其中

1直接以量測結果為控制目標將全系統還原成標準的單位回授控制 2所有的非線性或失真現象都進入開環路討論屬於可以補償的部分 3但是控制結果就是「量測上的轉角」而「物理學上的轉角」

量測誤差的問題

轉角θ

量測ANG

對於量測誤差而言最明顯的問題就是量化誤差圖示如下

其中

1以 DCM模組中的光電盤為例精度為每圈 500格經由乘四解碼計數後其等效

精度增加為每圈 2000格 2比(12000)圈更精密的部分都無法響應換句話說振幅越大的控制其相對誤差越

小而振幅越小的控制其相對誤差越大例如 當振幅為(12)圈時其控制誤差量為 01而 當振幅為(120)圈時其控制誤差量為 1 這是標準的的非線性現象

量化誤差不只影響穩態上的精度還會造成非線性的震動問題圖示如下

t

誤差值

+1

-1

其中

1由於量化誤差的問題只有當誤差超過+1或是-1時才會真正偵測到誤差也才

29

會施加控制量作補償 2所以穩態時的誤差將在+1-1之間擺動造成微幅的振動 3量化誤差越大震動越明顯而量化誤差很小時通常不易察覺出震動現象

微分量的計算

伺服系統中有兩處需要用到微分計算包括

1PD控制器中誤差微分量的計算 2速度控制器中速度回授值的量測

在理論上微分公式是(dXdt)相當於 dXdt = (X(n)-X(n-1))DT (當 DT趨近於 0時)

所以當微分計算中的抽樣週期(DT)越短時微分的計算值將越接近理論值但是事實上

卻非如此以下圖為例

t

X

DTDX

其中

1當 X值為等速度運動時其微分量就是其斜率相當於 DXDT 2DT是微分計算中的抽樣週期理論上越短越好但是由於 DX本身的量化誤差

使得這個原則不再成立例如當斜率為 7394時 若 DT=1000則 DX=7394而 DXDT=7394 若 DT=100 則 DX=739 而 DXDT=739 若 DT=10 則 DX=73 而 DXDT=73 若 DT=1 則 DX=7 而 DXDT=7 3換句話說當抽樣週期越短時DX的量化誤差將越明顯而造成微分計算上更嚴

重的誤差

在 DCM 模組中速度量測的量化誤差分析如下

1馬達上的光電盤精度為每圈 500格經過乘四解碼後等效精度為每圈 2000格 2當馬達轉速為 1200RPM而抽樣頻率為 1KHz時對映的速度量測值為 1200(圈分)2000(格圈)60(秒分)1000(DT秒) = 40(格DT) 3換句話說1200RPM的轉速對映到 40的速度量測值即速度單位=30RPM若最

高轉速為 3000RPM則在+-3000RPM的速度範圍內其量化誤差為 05相當於8-bit的 ADC轉換器精度

4對映不同的抽樣頻率的量化誤差表列如下

30

光電盤精度 最高轉速 抽樣頻率 速度單

速度範圍 量化誤差

500PPR 3000RPM 1KHz 30RPM +-100 05 500PPR 3000RPM 2KHz 60RPM +-50 1 500PPR 3000RPM 4KHz 120RPM +25 2

過溢現象的處理

輸入

輸出

32767

-32768

整數運算都有數值範圍限制以 16-bit 整數而言輸入輸出的關係如下

其中

1當超過正負數的上下限時數值會正負顛倒例如 +32768 將會視為 -32768作處理而 +32769 將會視為 -32768作處理依此類推 2換句話說16-bit的整數運算只有在+-32767之間是線性的對映關係而超過這個範圍就是非線性的對映關係

3不但如此還因為正負顛倒的現象使得原來設計的負回授控制將變為正回授控制

而產生非線性的震盪現象 4換句話說只要計算上稍一不慎就會使得原先穩定的系統產生不穩定的震盪結果

為了避免過溢現象所造成的不穩定問題通常控制系統中會利用飽和處理作改善圖示

如下

輸入

輸出

lmtH

lmtL

31

其中

1當超過計算的上限時將固定設為上限值處理而當超過計算的下限時也將固定

設為下限值處理 2這時的整數運算只有在上下限之間是線性的對映關係而超過這個範圍將還是非線

性的對映關係 3雖然如此但是因為沒有正負顛倒的現象所以不再會有負回授變為正回授的問題

而避免了非線性的震盪現象 4換句話說飽和處理是針對過溢現象的妥協處理方案雖然不完全理想但是是可

接受的最佳選擇

下面是對映的組合語言範例

RD x x為輸入端 MIN lmtH 取得 x和 lmtH中的較小值即是作上限保護的工作 MAX lmtL 取得 x和 lmtL中的較大值即是作下限保護的工作 WR y Y為輸出端 其中

1組合語言中提供MAX和MIN的計算其中 MIN lmtH 比較 AX暫存器和 lmtH而將較低值存入 AX暫存器中 MAX lmtL 比較 AX暫存器和 lmtH而將較高值存入 AX暫存器中 2所以直接可用MIN指令作上限保護而以MAX指令作下限保護兩者合併後即是

完整的飽和處理結果

飽和處理通常應用在高位數轉成低位數的場合例如32-bit轉換成16-bit或是16-bit

轉換成 12-bit 等等例如在本實驗中所有的運算都是以 16-bit 整數作處理但是到

PWM 驅動級輸出時卻要轉換成 12-bit精度的 PWM 命令所以必須先用飽和處理以避免

過溢現象造成的不穩定問題

32

61 實驗 1-開迴路的電壓控制 實驗說明以電壓直接控制轉速的開迴路特性可簡化為一階系統處理方塊圖如

sτ+1

v km ωm

其中V 送給驅動器的 PWM電壓命令

ωm馬達的轉動速度可由處理 photo encoder信號所得的位置微分而得 km一階系統的穩態增益 τ一階系統的時間常數即步階響應中的上升時間

為了觀測直流馬達的開環路特性建立下面的測試方塊圖

其中

1所使用的模組包括 FG1方波產生器產生所需的步階測試波形 FT1馬達模擬以一階系統的低通濾波器來執行 IO1光電盤的回授處理可同時取得轉角和速度的量測值 IO2PWM電壓驅動直接驅動直流馬達作控制 Led四位數字七段顯示模組顯示波形信號資料 2測試目標有兩項(P 參數設定欄)包括 A調整方波命令控制直流馬達作開環路的 PWM電壓控制 B調整馬達模擬參數使模擬結果和實驗結果相符以確認開環路特性

33

實驗畫面顯示如下

測試一 開環路的電壓控制 記錄頻道 CH1電壓命令Y1=-300DY=500 CH2模擬速度Y2=-100DY=500 CH3馬達速度Y3=100DY=50 CH4馬達轉角Y4=300DY=50000 實驗參數 FG1kAMP=256電壓命令的測試振幅 FG1kFRQ=150電壓命令的測試頻率 FT1DT =10 馬達模擬參數 FT1KA =500馬達模擬參數

其中

1用示波器功能記錄四個頻道其中 CH2和 CH3重疊顯示以比較模擬速度和量測

速度之間的差異 2由於 Km 不等於 1所以必須調整 CH3的 Y軸單位才能使得 CH2和 CH3的穩態響應部分重疊

3實驗時可以改變 FG1的參數以調整測試方波的振幅和頻率 4可以調整 FT1的參數使得 CH2和 CH3的暫態響應部分重疊

根據實際的測試結果分析如下

2馬達模擬的參數調整到 DT=10而 KA=500根據公式 τ = 40961000dtka 所以上升時間(τ)為 0082秒或是 82ms 3CH2CH3的 Y軸單位並不一致顯然 Km 不等於 1經計算確認 Km=0098

對應之 plc檔程式說明(exp_pwmplc) echo off 畫面顯示開始

run dsp 0 選擇 DSP1

run stop run reset 既有程式停止

run testDCMmem 下載指定程式

das 1 ampfg1out 0 1024 PWM 波形 Volt 設定 DAS 頻道1

das 2 ampft1lp 0 1024 馬達模擬 Volt 設定 DAS 頻道2

das 3 ampio1spd 0 1024 馬達速度 Volt 設定 DAS 頻道3

das 4 ampio1ang 0 1024 馬達角度 Volt 設定 DAS 頻道4

plot select 0 設定示波器頁數

plot xunit 100000 0 設定示波器 X軸

plot yunit 1 500 -300 設定示波器 Y1 軸

34

plot yunit 2 500 -100 設定示波器 Y2 軸

plot yunit 3 50 100 設定示波器 Y3 軸

plot yunit 4 50000 300 設定示波器 Y4 軸

plot trigger 1 0 1 10 設定示波器觸發

plot scope 9 1 2 3 4 設定示波器顯示

module io2 設定 io2 模組

s cmd ampfg1out

module fg1 設定 fg1 模組

s kAmp 256 s kFrq 150

module ft1 設定 ft1 模組

s u ampfg1out s dt 10 s ka 500

module io3 設定 io3 模組

s led ampfg1out

module 回復預設模組

run 1khz 設定抽樣頻率為 4KHz

run start DSP 開始執行

das stop pause 1 DAS 啟動 das start DAS 啟動

echo on 回復正常訊息顯示

使用者可視情況調整一階濾波器的 ka和 dt值使得 ch2和 ch3 兩組波形完全相符

以求得開迴路系統近似的一階轉移函數 CAI操控設計畫面規劃如下(EXP_PWMCAI) page 1 畫面設計

35

page 2 畫面設計 page 3 畫面設計

36

實測響應圖

訊 號 說 明 訊 號 說 明 ch1 方波產生器訊號 ch3 一階濾波器輸出信號 ch2 馬達角速度訊號 ch4 馬達角位置訊號

直流馬達之開迴路電壓控制響應圖

37

以邏輯分析功能觀測直流馬達之光電盤輸入與 PWM輸出信號

38

62 實驗 2-閉迴路的速度控制 實驗說明為了觀測閉迴路的速度控制響應建立下面的測試方塊圖

加入 PD控制後系統閉迴路的轉移函數經適度的簡化仍能約略以一階系統

處理方塊圖如下

sτ+1

u km ωm

其中

u 送給控制器的速度命令

ωm馬達的轉動速度可由處理 photo encoder 信號所得的位置微分而得

km一階系統的穩態增益 τ一階系統的時間常數即步階響應中的上升時間

方塊圖中的模組功能說明如下

1用 fg1 產生測試用的方波速度命令

2將方波速度命令和速度回授訊號送到 PD 控制器方塊中產生電壓控制訊號再透

過 io2 模組將訊號送出給伺服介面

3用 ft1 建立對照用的一階系統可用 IIR1濾波器方塊產生

4將方波命令產生速度命令再觀測 PHT(io1)上的速度值 spd

5調整 IIR1濾波器的參數使得兩組波形完全相符這時 IIR1濾波器就是閉迴路

速度控制的特性其中 km 為增益而τ為上升時間(單位為 sec)

6增益 km 可從示波器中作簡單計算而上升時間(τ=40964000dtka)

7 Led四位數字七段顯示模組顯示波形信號資料

39

對應之 plc檔程式說明(exp_speedplc) echo off 畫面顯示開始

run dsp 0 選擇 DSP1

run stop run reset 既有程式停止

run testDCMmem 下載指定程式

das 1 ampfg1out 0 1024 PWM 波形 Volt 設定 DAS 頻道1

das 2 ampft1lp 0 1024 馬達模擬 Volt 設定 DAS 頻道2

das 3 ampio1spd 0 1024 馬達速度 Volt 設定 DAS 頻道3

das 4 ampio1ang 0 1024 馬達角度 Volt 設定 DAS 頻道4

plot select 0 設定示波器頁數

plot xunit 100000 0 設定示波器 X軸

plot yunit 1 50 -300 設定示波器 Y1 軸

plot yunit 2 50 -100 設定示波器 Y2 軸

plot yunit 3 50 100 設定示波器 Y3 軸

plot yunit 4 50000 300 設定示波器 Y4 軸

plot trigger 1 0 1 10 設定示波器觸發

plot scope 9 1 2 3 4 設定示波器顯示

module io2 設定 io2 模組

s cmd ampcn2out

module fg1 設定 fg1 模組

s kAmp 50 s kFrq 150

module cn2 設定 cn1 模組

s cmd ampfg1out s fdk ampio1spd s kp 0x4000

module ft1 設定 ft1 模組

s u ampfg1out s dt 2 s ka 320

module io3 設定 io3 模組

s led ampfg1out

module 回復預設模組

run 1khz 設定抽樣頻率為 4KHz

run start DSP 開始執行

das stop pause 1 DAS 啟動 das start DAS 啟動

echo on 回復正常訊息顯示

CAI操控設計畫面規劃如下(EXP_speedCAI)

40

page 1 畫面設計 page 2 與 page 3 畫面設計與實驗一 page 2 與 page 3相同畫面 page 4 畫面設計

41

方塊的參數設定 使用者可視情況調整一階濾波器的 ka和 dt值使得 ch2和 ch3 兩組波形完全相符

以求得此一閉迴路系統近似的一階轉移函數或調整 PD控制器中的 kp和 kp值以調整系統之響應 實測響應圖

訊 號 說 明 訊 號 說 明 ch1 方波產生器產生之速度命令 ch3 一階濾波器輸出信號 ch2 馬達角速度訊號 ch4 馬達角位置訊號

42

直流馬達之閉迴路速度控制響應圖

43

63 實驗 3-閉迴路的位置控制 實驗說明為了觀測閉迴路的位置控制響應將直流馬達的回授改為位置訊號

建立下面的測試方塊圖 方塊圖中的模組功能說明如下

1用 fg1產生測試用的方波位置命令 2將方波位置命令和位置回授訊號送到 PD控制器方塊中產生電壓控制訊號再透過 io2模組將訊號送出到伺服介面驅動馬達轉動

對應之 plc檔程式說明(exp_angleplc) echo off 畫面顯示開始

run dsp 0 選擇 DSP1

run stop run reset 既有程式停止

run testDCMmem 下載指定程式

das 1 ampfg1out 0 1024 PWM 波形 Volt 設定 DAS 頻道1

das 2 ampft1lp 0 1024 馬達模擬 Volt 設定 DAS 頻道2

das 3 ampio1spd 0 1024 馬達速度 Volt 設定 DAS 頻道3

das 4 ampio1ang 0 1024 馬達角度 Volt 設定 DAS 頻道4

plot select 0 設定示波器頁數

plot xunit 100000 0 設定示波器 X軸

plot yunit 1 1000 -300 設定示波器 Y1 軸

plot yunit 2 1000 -100 設定示波器 Y2 軸

plot yunit 3 20 100 設定示波器 Y3 軸

plot yunit 4 1000 300 設定示波器 Y4 軸

plot trigger 1 0 1 10 設定示波器觸發

44

plot scope 9 1 2 3 4 設定示波器顯示

module io2 設定 io2 模組

s cmd ampcn2out

module fg1 設定 fg1 模組

s kAmp 1000 s kFrq 75

module cn2 設定 cn1 模組

s cmd ampfg1out s fdk ampio1ang s kp 0x300 s kd 0x4000

module ft1 設定 ft1 模組

s u ampfg1out s dt 2 s ka 320

module io3 設定 io3 模組

s led ampfg1out

module 回復預設模組

run 1khz 設定抽樣頻率為 4KHz

run start DSP 開始執行

das stop pause 1 DAS 啟動 das start DAS 啟動

echo on 回復正常訊息顯示

CAI操控設計畫面規劃如下(EXP_angleCAI) page 1 畫面設計

45

page 2 與 page 3 畫面設計與實驗一 page 2 與 page 3相同畫面 page 4 畫面設計與實驗二 page 4 畫面 方塊的參數設定 延續上一實驗的說明使用者可以調整 PD控制器中的 kp和 kd值以調整系統之

響應 實測響應圖

訊 號 說 明 訊 號 說 明 ch1 方波產生器產生之位置命令 ch3 馬達角速度訊號 ch2 馬達角位置 ch4 Pd控制器輸出之電壓訊號

46

直流馬達之閉迴路位置控制響應圖

47

64 實驗 4-加減速的位置控制 實驗說明為避免方波命令的過於嚴苛在方波命令的輸出加入一加減速控制功

能方塊以減緩命令變化的幅度增加馬達運動的平順建立的測試方塊圖如下

方塊圖中的模組功能說明如下

1用 fg1產生測試用的方波位置命令 2將方波位置命令送到加減速控制方塊處理後產生新的位置命令再將新的位置命

令與位置回授訊號送到 PD控制器方塊中產生電壓控制訊號最後透過 io2模組將訊號送出到伺服介面驅動馬達轉動

對應之 plc檔程式說明(exp_accplc) echo off 畫面顯示開始

run dsp 0 選擇 DSP1

run stop run reset 既有程式停止

run testDCMmem 下載指定程式

das 1 ampfg1out 0 1024 PWM 波形 Volt 設定 DAS 頻道1

das 2 ampcn1out 0 1024 加速控制 Volt 設定 DAS 頻道2

das 3 ampio1spd 0 1024 馬達速度 Volt 設定 DAS 頻道3

das 4 ampio1ang 0 1024 馬達角度 Volt 設定 DAS 頻道4

plot select 0 設定示波器頁數

plot xunit 100000 0 設定示波器 X軸

plot yunit 1 2000 -300 設定示波器 Y1 軸

plot yunit 2 2000 -100 設定示波器 Y2 軸

plot yunit 3 50 100 設定示波器 Y3 軸

plot yunit 4 2000 300 設定示波器 Y4 軸

48

plot trigger 1 0 1 10 設定示波器觸發

plot scope 9 1 2 3 4 設定示波器顯示

module io2 設定 io2 模組

s cmd ampcn2out

module fg1 設定 fg1 模組

s kAmp 2000 s kFrq 150

module cn1 設定 cn1 模組

s cmd ampfg1out

module cn2 設定 cn2 模組

s cmd ampcn1out s fdk ampio1ang s kp 0x300 s kd 0x4000

module ft1 設定 ft1 模組

s u ampfg1out s dt 2 s ka 320

module io3 設定 io3 模組

s led ampfg1out

module 回復預設模組

run 1khz 設定抽樣頻率為 4KHz

run start DSP 開始執行

das stop pause 1 DAS 啟動 das start DAS 啟動

echo on 回復正常訊息顯示

CAI操控設計畫面規劃如下(EXP_accCAI) page 1 畫面設計

49

page 2 畫面設計與實驗一 page 2相同畫面 page 3 畫面設計與實驗二 page 4相同畫面

參數設定參考之前各實驗的說明可線上機動性的調整 PD控制器中的 kp和 kd值以調整系統之響應 實測響應圖

訊 號 說 明 訊 號 說 明 ch1 方波產生器產生之位置命令 ch3 馬達角位置 ch2 加減速模組輸出之位置命令 ch4 馬達角速度訊號

50

圖一 直流馬達經加減速控制後之閉迴路控制響應圖

51

65 實驗 5-正弦波的位置控制 實驗說明在本實驗中改變命令的波形由方波改變為正弦波並建立如下的測

試方塊圖與上一實驗相比較僅更改命令的波形產生方塊 方塊圖中的模組功能說明如下 1用 fg2產生測試用的弦波位置命令 2將弦波位置命令送到加減速控制方塊處理後產生新的位置命令再與 io1 讀入的位

置回授訊號送到 PD 控制器方塊中產生電壓控制訊號再透過 io2 模組將訊號送出到伺服介面驅動馬達轉動

對應之 plc檔程式說明(exp_sinplc) echo off 畫面顯示開始

run dsp 0 選擇 DSP1

run stop run reset 既有程式停止

run testDCMmem 下載指定程式

das 1 ampfg2out 0 1024 SIN 波形 Volt 設定 DAS 頻道1

das 2 ampcn1out 0 1024 加速控制 Volt 設定 DAS 頻道2

das 3 ampio1spd 0 1024 馬達速度 Volt 設定 DAS 頻道3

das 4 ampio1ang 0 1024 馬達角度 Volt 設定 DAS 頻道4

plot select 0 設定示波器頁數

plot xunit 100000 0 設定示波器 X軸

plot yunit 1 2000 -300 設定示波器 Y1 軸

plot yunit 2 2000 -100 設定示波器 Y2 軸

plot yunit 3 50 100 設定示波器 Y3 軸

plot yunit 4 2000 300 設定示波器 Y4 軸

plot trigger 1 0 1 10 設定示波器觸發

52

plot scope 9 1 2 3 4 設定示波器顯示

module io2 設定 io2 模組

s cmd ampcn2out

module fg2 設定 fg1 模組

s kAmp 2000 s kFrq 100

module cn1 設定 cn1 模組

s cmd ampfg2out

module cn2 設定 cn2 模組

s cmd ampcn1out s fdk ampio1ang s kp 0x300 s kd 0x4000

module ft1 設定 ft1 模組

s u ampfg2out s dt 2 s ka 320

module io3 設定 io3 模組

s led ampfg2out

module 回復預設模組

run 1khz 設定抽樣頻率為 4KHz

run start DSP 開始執行

das stop pause 1 DAS 啟動 das start DAS 啟動

echo on 回復正常訊息顯示

CAI操控設計畫面規劃如下(EXP_sinCAI) page 1 畫面設計

53

page 2 畫面設計 page 3 畫面設計與實驗二 page 4相同畫面

方塊的參數設定可調整 PD控制器中的 kp和 kd值以調整系統之響應 實測響應圖

訊 號 說 明 訊 號 說 明 ch1 弦波產生器產生之位置命令 ch3 馬達角位置訊號 ch2 加減速模組輸出之位置命令 ch4 馬達角速度訊號

54

直流馬達之閉迴路弦波加減速位置控制響應圖

55

7組合語言說明

本節將針對 DC馬達伺服控制實驗專用的程式模組進行功能與程式碼的說明其

有關於波形產生器與資料擷取模組等說明如下

SIN_waveasm 正弦波產生器 PWM_waveasm 方波產生器 IIR1_filterasm 一階濾波器 DAS4asm 資料蒐集模組

弦波產生器

此模組會產生週期性的正弦波方塊圖如下

outfrq

kBiasbias

ampkAmp

kFrqth

kThf=1TB

θ

A

其中

1正弦波有四個參數振幅(A)頻率(F)相位(θ)和偏移(B)其公式為 out = A sin(2πF t +θ) + B 2對於單純的正弦波產生器所對映的參數包括 kAmp 振幅值 kFrq 頻率值kFrq=655368000Hz其中 Hz的範圍為 0~4000例如 1000Hz =gt frq=8192 100Hz =gt frq=819 10Hz =gt frq=82 1Hz =gt frq=8 kTh 相角值0~255代表 0~360的相位當 th=0 時為正弦波 th=64 時為餘弦波 th=128時為反相波依此類推 kBias偏移值 3對於可調變的正弦波產生器其對映的輸入點為 amp 控制振幅的輸入點可產生調幅(AM)波形 frq 控制頻率的輸入點可產生調頻(FM)波形 th 控制相位的輸入點可產生調相(PM)波形 bias控制偏移的輸入點可產生雙頻混波(相加)波形 4若不使用調變功能時各個輸入點時的預設值為 amp 指向 kAmp 的位址 frq 指向 kFrq 的位址

56

th 指向 kTh 的位址 bias指向 kBias的位址

模組程式範例SIN_WAVEasm

local amp R0 IP kAmp 輸入點sin波的振幅 local frq R1 IP kFrq 輸入點sin波的頻率 local th R2 IP kTh 輸入點sin波的相角 local bias R3 IP kBias 輸入點sin波的中心偏移 local out R4 OP 輸出點sin波輸出 local tab R5 TP 表格指標指向 sin[256]的表格 local ang R6 內部變數相位角65536=360deg local kAmp R7 1000 參數振幅值 local kFrq R8 1000 參數頻率值=655368000Hz local kTh R9 0 參數相角值360deg=256 local kBias R10 0 參數偏移值 data 11 模組變數區長度及初值 initial 啟動程序 WR ang0 WR out0 ang=out=0 RET timer 即時控制程序(8KHz) RD ang ADD (frq) WR ang ang+=frq SFR 8 ADD (th) AND 255 ACC=sin(ang256+th) ADD tab WRH RDM table-look-up MUL (amp) SFR 12 ADD (bias) WR out out=ACCamp4096+bias RET table tab 256 sin[256]表格區10=4096 0 101 201 301 401 501 601 700 00~070deg 799 897 995 1092 1189 1285 1380 1474 08~0F 1567 1660 1751 1842 1931 2019 2106 2191 10~17 2276 2359 2440 2520 2598 2675 2751 2824 18~1F 2896 2967 3035 3102 3166 3229 3290 3349 20~27 3406 3461 3513 3564 3612 3659 3703 3745 28~2F 3784 3822 3857 3889 3920 3948 3973 3996 30~37 4017 4036 4052 4065 4076 4085 4091 4095 38~3F 4096 4095 4091 4085 4076 4065 4052 4036 40~4790deg 4017 3996 3973 3948 3920 3889 3857 3822 48~4F 3784 3745 3703 3659 3612 3564 3513 3461 50~57 3406 3349 3290 3229 3166 3102 3035 2967 58~5F

57

2896 2824 2751 2675 2598 2520 2440 2359 60~67 2276 2191 2106 2019 1931 1842 1751 1660 68~6F 1567 1474 1380 1285 1189 1092 995 897 70~77 799 700 601 501 401 301 201 101 78~7F 0 65435 65335 65235 65135 65035 64935 64836 80~87180deg 64737 64639 64541 64444 64347 64251 64156 64062 88~8F 63969 63876 63785 63694 63605 63517 63430 63345 90~97 63260 63177 63096 63016 62938 62861 62785 62712 98~9F 62640 62569 62501 62434 62370 62307 62246 62187 A0~A7 62130 62075 62023 61972 61924 61877 61833 61791 A8~A8 61752 61714 61679 61647 61616 61588 61563 61540 B0~B7 61519 61500 61484 61471 61460 61451 61445 61441 B8~BF 61440 61441 61445 61451 61460 61471 61484 61500 C0~C7270deg 61519 61540 61563 61588 61616 61647 61679 61714 C8~CF 61752 61791 61833 61877 61924 61972 62023 62075 D0~D7 62130 62187 62246 62307 62370 62434 62501 62569 D8~DF 62640 62712 62785 62861 62938 63016 63096 63177 E0~E7 63260 63345 63430 63517 63605 63694 63785 63876 E8~EF 63969 64062 64156 64251 64347 64444 64541 64639 F0~F7 64737 64836 64935 65035 65135 65235 65335 65435 F8~FF

就程式結構而言說明如下

timer 即時控制程序(8KHz) RD ang ADD (frq) WR ang ang+=frq SFR 8 ADD (th) AND 255 ACC=sin(ang256+th) ADD tab WRH RDM table-look-up MUL (amp) SFR 12 ADD (bias) WR out out=ACCamp4096+bias RET

1基本上我們以查表法計算 sin()其輸入θ的範圍為 0~255對映到 0~360deg其輸出 sin(θ)的範圍為+-4096對映到+-10的範圍

2建立一個內部變數 ang其範圍為 0~65535對映到 0~360的相位角 3每個timer程序都執行 ang+=frq的動作更新目前的相位角接著依照 ang的相位角查表得到 sin(ang256+th)值

4由於表格長度為 256-word所以必須將 ang256才能得到正確的對映關係而 th範圍為 0~255所以不需要像 ang一般的做額外處理

5sin()的範圍為(+1-1)而在表格中以(+4096~-4096)的型式記錄相當於 10=4096所以執行 Asin()時還要用 SFR12指令做4096的動作才能正確的取得輸出值

58

6就頻率輸入 frq而言其計算原則是將θ=ωt轉化成θ=Σ(ωdt)因為抽樣頻率

為 8KHz所以 dt=18000而得到 frq=655368000Hz公式其中 Hz為真正的頻率在 8KHz的抽樣頻率下其範圍為 0~4000

鋸齒波產生器

此模組會產生週期性的鋸齒波方塊圖如下

outfrq

kBiasbias

ampkAmp

kFrqth

kThf=1TB

θ

A

其中

1鋸齒波也有四個參數振幅(A)頻率(F)相位(θ)和偏移(B)和正弦波的定義完全一致唯一的差異是其輸出為鋸齒波而非正弦波

2基本波形是從週期開始時為 0一直遞增到週期結束時到達最高點然後立刻回歸

到 0重新開始 3以程式結構而論鋸齒波程式幾乎就是正弦波的相位計算部分只差沒有正弦波的

查表處理而已

模組程式範例SAW_WAVEasm

local amp R0 IP kAmp 輸入點sin波的振幅 local frq R1 IP kFrq 輸入點sin波的頻率 local th R2 IP kTh 輸入點sin波的相角 local bias R3 IP kBias 輸入點sin波的中心偏移 local out R4 OP 輸出點sin波輸出 local ang R5 內部變數相位角65536=360deg local kAmp R6 1000 參數振幅值 local kFrq R7 1000 參數頻率值=655368000Hz local kTh R8 0 參數相角值360deg=256 local kBias R9 0 參數偏移值 data 11 模組變數區長度及初值 initial 啟動程序 WR ang0 WR out0 ang=out=0 RET timer 即時控制程序(8KHz) RD ang ADD (frq) WR ang ang+=frq SFR 8 ADD (th) AND 255 ACC=(ang256+th)amp0x00ff MUL (amp) SFR 8 ADD (bias) WR out out=ACCamp256+bias

59

RET

脈衝波產生器

outfrq

kBiasbias

ampkAmp

kFrqth

kThf=1TB

θ

A

pwm

kDutyduty

此模組會產生週期性的脈衝波方塊圖如下

其中

1脈衝波有五個參數其中振幅(A)頻率(F)相位(θ)和偏移(B)四個參數和正弦波

定義完全一樣另外再增加一個負載率(D) 2基本波形是從週期開始時為 1隔段時間後換為 0然後持續到週期結束再重新開始其中 1所佔有的比例就是負載率當 D=0時為 0而 D=255時為 100

3和其他參數類似負載率(D)以 duty為其輸入點而以 kDuty為其參數值

模組程式範例PLS_WAVEasm

local amp R0 IP kAmp 輸入點脈衝波的振幅 local frq R1 IP kFrq 輸入點脈衝波的頻率 local th R2 IP kTh 輸入點脈衝波的相角 local bias R3 IP kBias 輸入點脈衝波的中心偏移 local duty R4 IP kDuty 輸入點脈衝波的負載率 local out R5 OP 輸出點脈衝波輸出 local ang R6 內部變數相位角65536=360deg local kAmp R7 1000 參數振幅值 local kFrq R8 1000 參數頻率值=655368000Hz local kTh R9 0 參數相角值360deg=256 local kBias R10 0 參數偏移值 local kDuty R11 128 參數負載率100 =256 data 12 模組變數區長度及初值 initial 啟動程序 WR ang0 WR out0 ang=out=0 RET timer 即時控制程序(8KHz)

60

RD ang ADD (frq) WR ang ang+=frq SFR 8 ADD (th) AND 255 ACC=(ang256+th)amp0x00ff SUB (duty) RD (amp) JLT t1 RD 0 ACC=(amp0) t1 ADD (bias) WR out out=ACC+bias RET

IIR 一階濾波器

此模組執行一階的 IIR濾波器方塊圖如下

kau x

Z-1

+

+

-

+低通濾波器

高通濾波器dx lp

hp

濾波器參數的計算公式如下

1假設濾波器的頻寬為 hz則 ωn=hz628 2若系統頻率為 8KHz則抽樣週期 dT為 dT=dt8000 其中 dt為模組參數 3則濾波器參數為 ka=ωndT4096或是 =hzdt62880004096即 =hzdt32 4當 dt決定後所允許的訊號頻寬為(4000dt)換句話說訊號頻寬會因為 dt增加而下降

為了方便實驗的運用下面列出常用的參數對照表

濾波頻寬

(Hz)

10 20 50 100 200 500 1000 2000

訊號頻寬

(Hz)

400 800 2000 4000 4000 4000 4000 4000

模組參數 dt 10 5 2 1 1 1 1 1

模組參數 ka 320 320 320 320 640 1600 3200 6400

表格的運用方式如下

1首先決定濾波頻寬 2接著查表找出對映的參數 dt和 ka 3再查表得到對映的訊號頻寬以決定是否需要串接前級濾波器

61

模組程式範例IIR1_FILTERasm

local u R0 IP 輸入點濾波器輸入 local lp R1 OP 輸出點低通濾波器輸出 local hp R2 OP 輸出點高通濾波器輸出 local dt R3 1 參數抽樣週期 local ka R4 4096 參數增益 ka10=4096 local prd R5 內部變數抽樣週期用 data 6 模組變數區長度 initial 開機啟動程序 WR lp0 WR hp0 WR prd1 RET lp=hp=0prd=1 timer 即時控制程序 SUB prd1 JNZ b9 if (--prdgt0) return RD dt WR prd prd=dt RD (u) SUB lp WR hp hp=u-lp MUL ka SFR 12 ADD lp WR lp lp+=(hpka4096) b9 RET

資料蒐集模組

資料蒐集模組是一個非常特殊的模組專門配合 eTTY 程式中的示波器使用

模組程式範例DAS4asm

local cmd R0 0 紀錄命令0=停止1=前置記錄2=正觸發4=負觸發6=觸發記錄 local dt R1 1 抽樣週期每 dT抽樣一次 local tab R2 TP DAS表格啟始位址 local cnt R3 0 目前記錄點(0~255) local ch1 R4 0 定義頻道1的變數位址 local ch2 R5 0 定義頻道2的變數位址 local ch3 R6 0 定義頻道3的變數位址 local ch4 R7 0 定義頻道4的變數位址 local trg R8 0 定義觸發頻道的變數位址 local th R9 0 觸發準位 local tail R10 0 觸發後的抽樣個數 local buf R11 1 抽樣計數(1~dt) local pnt R12 表格位址計算pnt=tab+cnt4 local len R13 表格長度計算(0~256) data 14 定義模組變數區的長度 table tab 1024 定義表格的長度 initial 啟動程序 WR cmd0 RET cmd=0 timer 控制程序

62

ADD cmd0 JZ t9 if (cmd==0) return SUB buf1 JNZ t9 if (--buf)gt0) return RD dt WR buf dt=buf RD cnt ADD 1 AND 0xff WR cnt cnt=(cnt+1)amp0xff SFL 2 ADD tab WR pnt pnt=tab+cnt4 RD (ch1) WR (pnt) ADD pnt1 pnt++=ch1 RD (ch2) WR (pnt) ADD pnt1 pnt++=ch2 RD (ch3) WR (pnt) ADD pnt1 pnt++=ch3 RD (ch4) WR (pnt) pnt =ch4 RD cmd SUB 1 JZ t9 SUB 1 JZ t2 SUB 1 JZ t3 SUB 1 JZ t4 SUB 1 JZ t5 SUB 1 JZ t6 JR t7 t2 RD (trg) SUB th JGE t9 ADD cmd1 JR t9 wait trgltth t3 RD (trg) SUB th JLE t9 JR t6 wait trggtth t4 RD (trg) SUB th JLE t9 ADD cmd1 JR t9 wait trggtth t5 RD (trg) SUB th JGE t9 JR t6 wait trgltth t6 WR len0 WR cmd7 len=0cmd=7 t7 ADD len1 SUB tail JLT t9 WR cmd0 if ((++len)gt=0x80) cmd=0 t9 RET

與 DC 馬達控制相關的程式模組有以下 4個程式模組說明如下

(1)加減速控制模組 ACC_controlasm (2)光電盤輸入模組 POS_inputasm (3)PWM輸出模組 PWM_outputasm (4)PD控制模組 PD_controlasm

71加減速控制模組 此程式模組主要功能在於執行位置控制的加減速命令修正其數學模式採用 Lynn

濾波器的架構參見下圖

cmd

2

+

old Z -1

-

Z -1

Z -1

Z-1

Z-1x0 x1 x8 x9 x16

+ -

++

2

Z-1

Z-1 y1 y2

+

-

y0

+ +

sumZ-1

+164

12

out

dif

+

63

加減速控制模組方塊圖

其中

1Lynn 濾波器的階數固定成八階也就是 m=8其公式為 H(z) = (1-2Z-m+Z-2m)(1-2Z-1+Z-2)m2

2因為m=8所以m2=64因此最後計算低通濾波的部份時要先做除 64的運算 3因為低通濾波(lp)和 y0之間有 64倍的差異代表 y0y1y2的變化範圍比濾波器輸

入值要擴大許多例如輸入值在+-1000變化時y0y1y2很可能會在+-64000之間變化這範圍已經超出整數處理的範圍很可能會造成錯誤的計算結果

4所以在實驗時輸入值的變化範圍必須控制在+-500之間以保證計算的正確性 5對於 Lynn 濾波器當 m=8時其濾波器的頻寬固定為 1 kHzmdt也就是 dt=1時頻寬為 125 Hz dt=2時頻寬為 625Hz依此類推 6對於 Lynn 濾波器其濾波器的延遲固定為 m個抽樣週期因此設計 hp = x8 - lp 即可得到高通濾波器的對應結果 7其中乘 2和除 64的運算以移位運算取代所以整個程式中並無任何乘法運算 8Lynn 濾波器本身並不是穩定濾波器所以在程式啟動時必須確實的將所有狀態

(x0~x16)歸零否則會產生不穩定的狀態輸出

因為 Lynn濾波器中所有參數固定所以除了抽樣週期 dt 之外並無任何可調參數

抽樣週期 dt 可以控制頻寬dt 越大則濾波器頻寬越低

將步階命令值的輸出送入 Lynn 濾波器中經由低通濾波器的效應可以減緩命

令的變化程度達到加減速控制的目的以下為使用 Lynn 濾波器型式實現加減速控

制的組合語言程式列印 如欲更進一步瞭解 Lynn 濾波器與 FIR 數位濾波器之間的關係可以參考通訊實驗

四數位濾波器設計(FIR)中之說明

ACC_controlasm程式列印 local cmd R0 IP 輸入點位置命令

local out R1 OP 輸出點加減速處理後的位置命令

local dif R2 OP 輸出點位置微分命令

local axis R3 0 馬達編號0=X1=Y2=Z3=C

local old R4 內部變數微分計算用

local sumL R5 內部變數積分計算用

local sumH R6 內部變數積分計算用

local y0 R7 內部變數y(0~2)

local y1 R8 local y2 R9

local x0 R10 內部變數x(0~16)

local x1 R11 local x2 R12 local x3 R13 local x4 R14

local x5 R15 local x6 R16 local x7 R17 local x8 R18

local x9 R19 local x10 R20 local x11 R21 local x12 R22

local x13 R23 local x14 R24 local x15 R25 local x16 R26

64

data 27 模組變數區長度

initial 開機啟動程序

WR dif0 RD (cmd) WR out WR old dif=0 out=old=cmd

sumHL=cmd64

SFL 6 WR sumL RD out SFR 10 SGN 5 WR sumH

RPT 17 WR x00 RPT 3 WR y00 RET x[0~16]=0y[0~2]=0

timer 即時控制程序

RD (cmd) SUBX old WR x0 x0=cmd-old old=cmd

SUB x81 ADD x16 ADD y11 SUB y2 WR y0 y0=x0-2x8+x16+2y1-y2

SGN ADD sumL WR sumL RDH ADC sumH WR sumH sumHL+=y0

WRH RD sumL SFR 6 WR out out=sumHL64

RD y0 SGN SFR WR dif dif=y032mm

RD x0 RPT 16 RDX x1 x[i]=x[i-1] i=1~16

RD y0 RDX y1 WR y2 y[i]=y[i-1] i=1~2

b9 RET

72光電盤輸入模組

DC馬達的位置由光電盤量測之預設儲存於 0xac與 0xbe二個輸入埠位址中其中位址 0xac記錄 X軸馬達的位置位址 0xbe記錄 Y軸馬達的位置由於本實驗的DC馬達接在 Y軸的位置上因此程式中直接選用 Y軸的輸入 光電盤位置輸入的程式列印如下其中速度由位置的差分而得至於馬達的位置

則使用內部 2個 word加以記錄精度為 32位元 POS_inputasm程式列印 local spd R0 OP 輸出點速度量測值

local ang R1 OP 輸出點角度量測值

local angH R2 內部變數角度的 32 位元部分

local mode R3 0x308 模式選擇15MHzAB 相正反向輸入

local pht R4 0xac 輸入阜地址光電盤輸入(0xac)

local phtc R5 0xbe 輸入阜地址光電盤模式(0xbe)

local old R6 內部變數速度更新用

data 7 模組變數區長度

initial 開機啟動程序

RD mode WR (phtc) phtc=mode

RD (pht) WR old WR spd0 RET old=phtspd=0

timer 即時控制程序

RD (pht) SUBX old SGN 11 WR spd spd=(pht-old)old=pht

65

ADD ang WR ang angHL+=spd

RDH ADC angH WR angH

RET

73 PWM輸出控制模組 模組方塊

cmd PWM輸出

程式說明 1在開機時將切換保護時間寫到輸出阜 0xbc上其中切換保護值為 0~6360=5us 2在每次 timer interrupt時將 cmd訊號處理後寫到輸出阜 0xb8上

PWM_outputasm程式列印 local cmd R0 IP gnd 輸入點v相命令

local gain R1 4096 參數輸出增益1=4096

local bias R2 2048 參數輸出偏壓0=2048

local limit R3 4095 參數輸出極限1=4095

local zone R4 0x88f0 參數頻率=12KHz切換保護=5us

local pwm R5 0xb8 輸出阜地址PWM0 輸出(0xb8)

local mode R6 0xbc 輸出阜地址PWM 模式(0xbc)

local p0md R7 0xf8 輸出阜地址port0 模式(0xf8)

local gnd R8 0 輸入接地點

data 9 模組變數區長度

initial 開機啟動程序

RD bias WR (pwm) pwm=bias

RD 0xffff WR (p0md) set port0 mode

RD zone WR (mode) RET mode=zone

stop 關機保護程序

RD bias WR (pwm) RET pwm=bias

timer 即時控制程序

RD (mode) xor 1 and 1 WR (mode) trigger watch-dog

RD (cmd) MUL gain SFR 12 ADD bias ACC=(cmdgain4096)+bias

MAX 0 MIN limit WR (pwm) pwm=limit(ACC)

RET

66

74 PD 控制模組

PD控制的模組方塊參見圖二十一所示其中比例控制的部份直接由增益 kp加以調整微分控制的部份則由誤差的差分經增益 kd的調整而得

Σ+

-

cmd

fdk

err out

Σ

pk

dk

Σ

+

+

+

-

old1minusZ

PD控制器的方塊圖

PD_controlasm程式列印 local cmd R0 IP gnd 輸入點位置命令(可忽略)

local fdk R1 IP gnd 輸入點位置回授(可忽略)

local out R2 OP 輸出點用以控制速度迴路

local kp R3 256 參數增益 kp10=256

local kd R4 0 參數增益 kd10=256

local err R5 0 內部變數

local old R6 0 內部變數

local gnd R7 0 無輸入時的短路點

data 8 模組變數區長度

initial 開機啟動程序

WR out0 WR old0 RET out=old=0

timer 即時控制程序

RD (cmd) SUB (fdk) PRTF WR err

MUL kp SFR 8 P=(cmd-fdk)kp256

RDS err SUBX old MUL kd SFR 8 D=(err-old)kd256

ADDS

WR out out=P+D

RET

程式中預設增益值的 10以整數值 256為基底因此使用 SFR 8的指令加以調

整另外在在計算微分項的程式部份用到 SUBX old的指令其詳細的暫存器動作如

下 參考 piDSP的指令說明SUBX指令將總共用到 3個時序參考錯誤 找不到參照

67

來源在時序 1時將原先 AX的資料拷貝一份到 HX中時序 2時正式執行減

法的動作所以 AX暫存器中的內容會變成 err-old時序 3時DSP會將存放在 HX暫存器中的內容拷貝一份到 old的記憶體中也就是經由 SUBX此一精簡指令將

同時完成計算差分所需要的相減與資料疊代的動作有效的利用 piDSP控制器 DSP核心的精簡指令將可以大幅提昇系統的計算速度

HX AXoldSUBXerr err

old

err

errerr olderr minus

1_err

errerr olderr minus err

1_err

1

2

3

SUBX的指令時序與暫存器變化

68

8附錄快速安裝說明

光纖網路通訊 FPGA 發展系統 (適用於 WIN-XP200098 系統)

快速安裝說明

26Pin 負載輸出入埠

雙電源︵5

12

伏︶輸入埠

單電源︵5

伏︶輸入埠

USB

光纖線輸

號 光纖線輸出埠

入 傳 埠

首先將光碟片 RFFPGA 目錄檔案拷貝在您工作硬碟裡面

第一次安裝時先將 USB 傳輸線接上電腦主機將電源供應器接上 FPGA 模組此時電

腦會出現安裝 USB-Serial 驅動程式選擇從清單安裝此驅動程式放置在光碟片

RFFPGA-USBdrive 選擇您目前安裝系統

可選擇 WIN-98WIN-MEWIN-2000WIN-XP 系統配合您現在工作電腦作業系統

69

注意一般電腦 USB 埠很多插口當您安裝驅動程式時是配合您當時插入之埠

下次如您插入不同接口埠時電腦會再次要求安裝驅動程式這是正常現象請再次安

裝驅動程式否則無法使用

FPLC 操作

首先進入 RFFPGA裡子目錄 testASM直接點選 fPLCexe 出現下面操作畫面(也可直接將

此檔案放置桌面直接點選)

(或者選擇 File 再執行 Setuphellip 選擇您要執行 CAI 檔)

70

進入下面操作畫面 首先使用滑鼠在 FPGA下載按鈕單擊動作使 FPGA變成 DSP晶片 實驗一至實驗五皆為使用 DSP組合語言設計程式其原始程式分別為 testASM1至testASM5可使用 texPad 開啟與編輯程式內容 實驗三與實驗五多有 IO控制動作 當選擇實驗三時出現下面畫面

71

eM_USB 模組

數字型 LED

0 1 2 34 5 6 78 9 A BC D E F

燈號型 LED

44 鍵盤

ADC0 ADC1 DAC0 DAC1

LED 選擇KEY 選擇

模 式 1

0123

注意操作畫面 3與 4 說明開關與按鍵選擇位置後選擇程式下載再按程式啟動如您

按下 0-3按鍵時燈號型 LED會有不同方向閃爍顯示程式停止時結束所有 IO控制動作再按回首頁選擇其他實驗 實驗四與實驗五

模式3

0 1 2 34 5 6 78 9 A BC D E F

按照上面開關選擇直接操作如果以上實驗皆能按照正常操作表示您光纖網路通訊

FPGA發展模組以能正常使用 注意 開機與關機動作順序如下

開機電腦啟動 --- eM_USB 模組電源接上 --- USB 接上電腦 ---

啟動 FPLC 軟體 --- 下載 FPGA 程式

關機關閉 FPLC 軟體 --- eM_USB 模組電源拔掉 --- 拔掉電腦 USB 接頭 ---關掉

電腦

如果以上順序有亂可能造成 USB 找不到驅動造成無法下載經過幾次測試還是

無法下載建議重新啟動電腦主機按照正確步驟操作

72

FPGA 下載操作

進入 FPLC 操作系統按照下列步驟選擇節點模組與下載 bit FPGA 檔案

在 VHDLDEMO 子目錄下您可以選擇您目前 FPGA 種類型號在此型號下我們已將 VHDL

與數位邏輯設計課本範例全部放於此處

73

光纖網路連線 FPGA 下載操作

首先利用光纖線將 eM_USB0 模組光纖輸出埠接至 eM_USB1 模組光纖輸入埠以此

類推最後再將最後 eM_USBN 模組光纖輸出埠接至 eM_USB0 模組光纖輸入埠配置

如附圖方式

個人電腦(Windows) eM_USB模組

0USB

eM_USB模組1

光纖網路

eM_USB模組2

eM_USB模組N

配置完成後進入 FPLC 系統首先必須先將 Node00 下載在 testASM 子目錄裡

piDSPv0bit 檔讓 eM_USB0 模組 FPGA 具備 DSP 功能才能執行光纖網路通訊

操作如下

此時您就可以選擇分別下載至各模組 FPGA 檔 bit

74

安裝 FPLC 注意事項

當您進入 FPLC 時

按 FILE 選擇 programhellip 選擇檔案為 exp_dcmplc 出現下面畫面

正常顯示畫面為

75

DOS 環境操作

在 PC 端的操作是在 Windows 環境中的 DOS 視窗中執行指令範例如下

eFPGA progNETbit 下載 FPGA電路至網路節點0(即 USB節點)中 eFPGA testLEDbit 1 下載 FPGA電路至網路節點1中

對於單一節點的控制程序如下

1將 eM_USB模組連結個人電腦的 USB端 2eM_USB模組開機 3執行下載指令即可 eFPGA xxxxbit 4若要更改 FPGA電路只要重新執行下載指令即可

對於多個網路節點的控制程序如下

1第一組 eM_USB模組連結個人電腦的 USB端再以光纖網路依序其他各節點 2連接 USB界面者為模組0從光纖發射端連接出去的模組為1依此類推 3將所有 eM_USB模組開機 4執行下載指令如下 eFPGA progNETbit 模組0必須先下載指定的 FPGA電路 eFPGA xxxxbit 1 再依序下載其他網路模組的 FPGA電路 eFPGA yyyybit 2 eFPGA zzzzbit 最後再重新下載模組0的 FPGA電路 5換句話說模組0必須先執行 progNETbit讓光纖網路接受 FPGA控制後才能透過光纖網路下載至其他節點等全部網路節點下載完畢後再將模組0的 FPGA重新下載讓模組0也可自由執行任意的 FPGA電路

6若要更改某一個網路節點中的 FPGA電路只要重新執行下述指令 eFPGA progNETbit 模組0必須先下載指定的 FPGA電路 eFPGA yyyybit 2 下載指定網路模組的 FPGA電路 eFPGA zzzz bit 最後再重新下載模組0的 FPGA電路 換句話說除非模組0中的 FPGA已經包括光纖網路管理電路否則一定要先在

模組0中下載網路管理電路後才能下載指定網路節點的 FPGA電路

76

光纖網路通訊 FPGA 發展系統

系統配置

光纖網路通訊 FPGA 發展系統的系統配置圖如下

個人電腦(Windows) eM_USB模組

0USB

eM_USB模組1

光纖網路

eM_USB模組2

eM_USB模組N

其中

1基本模組為 eM_USB模組可用 USB界面和個人電腦連線並提供 USB對光纖網路的轉換功能使得個人電腦可以獨立控制光纖網路中的每個網路節點

2eM_USB模組也可以作為光纖網路中的網路節點透過光纖網路而接受個人電腦的

監控 3就個人電腦而言不論是 USB界面直接連結或是以光纖網路間接連結的 eM_USB模組都是可以直接監控的網路節點最多可以同時控制一個 USB節點和 30個網路節點

4對於每一個網路節點個人電腦都可執行 eM_USB模組中 FPGA的電路下載工作並在適當的 FPGA電路配合下可執行 eM_USB模組中 FPGA內部電路的讀寫控制 5透過適當的 FPGA電路設計各網路節點都可透過光纖網路和其他任何網路節點

作同步通訊執行 FPGA內部記憶體的資料交換資料交換頻率可達 1KHz以上

77

網路模組配置

每個網路模組的標準配置圖如下

eM_USB模組光纖網路

USB eM_FPGA卡

eM_DEMO模組

eM_EXP實驗模組

DC電源

其中

1網路模組以 eM_USB模組為主提供基本的 USB界面和光纖網路連線 2eM_USB模組中的 FPGACPLD採用插卡型式可選擇不同的 eM_FPGA卡包括

eM_2V1K卡可選用 Virtex系列的 XC2V250和 XC2V1000 eM_3S1K卡可選用 Spartan3系列的 XC3S400XC3S1000和 XC3S1500 eM_3S50卡可選用 Spartan3系列的 XC3S50XC3S200和 XC3S400 eM_95XL卡可選用 9500XL系列的 XC95144XL和 XC95288XL 3eM_USB模組中的對外連線有兩種一種是 26P接頭用以連接既有的各種實驗模

組另一種是兩組 50P接頭將 FPGA中各接腳引出用以連接專題實驗 4eM_DEMO模組就是插上 50P接頭的教學模組其中包括 LED 數字顯示和 44鍵盤也具備兩組的 ADC和兩組的 DAC接頭提供類比訊號的測試工具

常用的實驗組合包括

1精簡組合包括(eM_USB+eM_FPGA)提供基本的網路節點適用於專題實驗 2標準組合包括(eM_USB+eM_FPGA+eM_DEMO)提供基礎 FPGA設計的教學實驗

3實驗組合包括(eM_USB+eM_FPGA+eM_DEMO+eM_EXP)提供進階的 FPGA實驗可依需求選用不同的實驗模組

78

eM_USB 模組

eM_USB 模組的電路配置圖如下

TxRx

DCPower

USB

JP2

JP3

光纖界面

外加電源

PC連線

JP1

eM_FPGA模組

FT232 CPLD FlashROM

SRAM

10cm

6cm

JP4

其中

1對外的連線接頭包括 DC電源 可選擇單電源(5V)或是多電源(5V+12V-12V)兩種 USB界面 直接連接個人電腦 光纖界面連接光纖網路 2實驗界面包括 JP1負責內部 CPLD的電路下載 JP2JP3兩組 50P的擴張用接頭 JP4 標準 26P接頭用以連接各種實驗模組 3內部的電路配置包括 A以 SO-DIMM接頭連接各種 eM_FPGA卡 B內附 EEPROMFlashROM和 SRAM提供 FPGA作應用測試 C以一顆 FT232BM作為 USB界面解碼而以一顆 CPLD作為光纖網路解碼 D提供各種 eM_FPGA卡的電路下載功能 4內附五顆 LED由上而下依序為 usbLED指示 USB界面的讀寫狀態 tstLED可由 FPGA電路自行定義 stsLED可由 FPGA電路自行定義 RxLED 可由 FPGA電路自行定義 TxLED 可由 FPGA電路自行定義

79

外部接腳定義

外部接頭的接點順序圖示如下

上視圖

JP11 9 JP4

126225

JP31

50249

JP21

50249

而各接頭的接點定義如下

JP1 JP4 JP2 JP3 1+33V 1+12V 2+12V 1 GND 2 GND 1 GND 2 GND 2GND 3 ADC 4 DAC 3POWER 4ALARM 3 +5V 4 +5V 3nc 5 yPB2 6 yPB3 5RxNET 6TxNET 5+12V 6+12V 4TCK 7 yPB1 6 yPB4 7RxUSB 6TxUSB 7-12V 6-12V 5nc 9 yPB0 10yPB5 9RxCAN 10TxCAN 9 ADC 10 DAC 6TDO 11yPB6 12yPB7 11P0D0 12P0D1 11P1D0 12P1D1 7TDI 13yGND 14yPC3 13P0D2 14P0D3 13P1D2 14P1D3 8nc 15yPC2 16yPC1 15P0D4 16P0D5 15P1D4 16P1D5 9TMS 17yPC0 18yPA0 17P0D6 18P0D7 17P1D6 18P1D7 19yPA1 20yPA2 19P0D8 20P0D9 19P1D8 20P1D9 21yPA3 22GND 21P0D10 22P0D11 21P1D10 22P1D11 23GND 24+5V 23P0D12 24P0D13 23P1D12 24P1D13 25+5V 26nc 25P0D14 26P0D15 25P1D14 26P1D15 27P2D0 28P2D1 27PxA0 28PxA1 29P2D2 30P2D3 29PxA2 30PxA3 31P2D4 32P2D5 31PxA4 32PxA5 33P2D6 34P2D7 33PxA6 34PxA7 35P2D8 36P2D9 35PxB0 36PxB1 37P2D10 38P2D11 37PxB2 38PxB3 39P2D12 40P2D13 39PxB4 40PxB5 41P2D14 42P2D15 41PxB6 42PxB7 43ADC0 44ADC1 43PxC0 44PxC1 45ADC2 46ADC3 45PxC2 46PxC3 47ADC4 48ADC5 47PxC4 48PxC5 49DAC0 50DAC1 49PxC6 50PxC7

80

eM_FPGA 模組

在各種 eM_FPGA 模組中FPGA 對外電路的標準配置圖如下

24576MHz

FlashROM

26PSRAM

EEPROM

mD[8]

yPA[4]

FPGACPLD

mA[19]mRDmWRmCSeeCKeeCSeeDIeeDO

光纖界面 RxNETTxNET

USB 界面 RxUSBTxUSBCLK24MPOWERALARM

LED

tstLEDstsLEDRxLEDTxLED

yPB[8]yPC[4]

ADCDAC

ADC[8]

實驗模組

ADC[2]

DAC[2]

xPA[4]

xPB[8]

xPC[4]

基礎實驗

其中

1FPGACPLD可以選擇下述幾種 XC2V250XC2V1000 採用 eM_2V1K模組其中 FPGA為 FG456包裝 XC3S400XC3S1000XC3S1500採用 eM_3S1K模組其中 FPGA為 FG456包裝 XC3S400XC3S1000XC3S1500採用 eM_3S1K模組其中 FPGA為 FG456包裝 XC3S50XC3S200XC3S400 採用 eM_3S50模組其中 FPGA為 TQ144包裝 XC95144XLXC95288XL 採用 eM_95XL模組其中 CPLD為 TQ144包裝 2採用 FG456包裝者可以控制所有的 IO界面 3採用 TQ144包裝者只是不能控制 RAM和 FlashROM而可以控制其他所有的界面 4所有 FPGA模組都可自由選擇由 USB界面或是由光纖界面下載電路但是 CPLD模組只能固定由 USB界面下載電路

5所有 FPGACPLD模組都可透過 26P接頭連接既有的各種實驗模組

81

FPGA 接腳對照表

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

mD0 XD6 mD0 A17 C13 -- -- mD1 XD7 mD1 B17 D12 -- -- mD2 XD8 mD2 C17 D11 -- -- mD3 XD9 mD3 D17 C11 -- -- mD4 XD10 mD4 E17 D10 -- -- mD5 XD11 mD5 E16 C10 -- -- mD6 XD12 mD6 E14 D9 -- -- mD7 XD13 mD7 E13 D7 -- -- mA0 XD14 mA0 D13 C7 -- -- mA1 XD15 mA1 C13 D6 -- -- mA2 XA0 mA2 V5 C3 -- -- mA3 XA1 mA3 U5 C4 -- -- mA4 XA2 mA4 Y2 D3 -- -- mA5 XA3 mA5 Y1 D4 -- -- mA6 XA4 mA6 V4 E3 -- -- mA7 XA5 mA7 V3 E4 -- -- mA8 XA6 mA8 W2 F3 -- -- mA9 XA7 mA9 W1 F4 -- -- mA10 XA8 mA10 T2 G6 -- -- mA11 XA9 mA11 T1 K3 -- -- mA12 XA10 mA12 R4 K10 -- -- mA13 XA11 mA13 R3 L3 -- -- mA14 XA12 mA14 R2 L4 -- -- mRD XRD mRD R1 D5 -- -- mWR XWR mWR P6 C6 -- --

POWER P0A0 POWER B4 B20 P1 P5 ALARM P0A1 ALARM A4 A19 P2 P6 RxNET P0A2 RxNET C4 B19 P4 P7 TxNET P0A3 TxNET C5 A18 P5 P9 RxUSB P0B0 RxUSB B5 A15 P6 P10 TxUSB P0B1 TxUSB A5 B15 P7 P11 RxCAN P0B2 RxCAN D6 A14 P8 P12 RxCAN P0B3 TxCAN C6 B14 P10 P13

CLK24M CLK24M CLK24M E12 B12 P124 P38

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

PWM0H P3A0 P0D0 E6 A8 P21 P23 PWM0L P3A1 P0D1 E5 B8 P23 P24 PWM1H P3A2 P0D2 C2 B6 P24 P25 PWM1L P3A3 P0D3 C1 A5 P25 P26 PWM2H P3A4 P0D4 D2 B5 P26 P27

82

PWM2L P3A5 P0D5 D1 A4 P27 P28 PWMenb P3A6 P0D6 E4 B4 P28 P30 PHT1Z P3A7 P0D7 E3 A3 P30 P31 PHT1A P3B0 P0D8 G2 C1 P31 P32 PHT1B P3B1 P0D9 G1 C2 P32 P33 PHT0A P3B2 P0D10 H5 D1 P33 P34 PHT0B P3B3 P0D11 J6 D2 P35 P35 AMP0 P3B4 P0D12 H4 E1 P36 P39 AMP1 P3B5 P0D13 H3 E2 P40 P40 AMP2 P3B6 P0D14 H2 F2 P41 P41 AMP3 P3B7 P0D15 H1 G1 P44 P43 eeSK P0C3 P1D0 C10 B9 P20 P22 eeCS P0C2 P1D1 D10 A9 P18 P21 eeDI P0C1 P1D2 F10 B10 P17 P20 eeDO P0C0 P1D3 E10 B11 P15 P19 ssCK P0B7 P1D4 E8 A11 P14 P17 ssCS P0B6 P1D5 E7 A12 P13 P16 ssDI P0B5 P1D6 A6 B13 P12 P15 ssDO P0B4 P1D7 B6 A13 P11 P14

ppCLK P3C0 P1D8 K4 G2 P46 P44 ppDIN P3C1 P1D9 K3 K1 P47 P45 TxD P3C2 P1D10 K2 K2 P50 P46 RxD P3C3 P1D11 K1 L1 P51 P48

tstLED P3C4 P1D12 L5 L2 P52 P49 stsLED P3C5 P1D13 L4 M1 P53 P50 RxLED P3C6 P1D14 L3 M2 P55 P51 TxLED P3C7 P1D15 L2 N1 P56 P52

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

xPA0 P2A0 P2D0 AA3 N2 P59 P53 xPA1 P2A1 P2D1 Y4 T1 P60 P54 xPA2 P2A2 P2D2 AA4 T2 P63 P56 xPA3 P2A3 P2D3 AB4 U2 P68 P57 xPC0 P2A4 P2D4 W5 V1 P69 P58 xPC1 P2A5 P2D5 Y5 V2 P70 P59 xPC2 P2A6 P2D6 AA5 W1 P73 P60 xPC3 P2A7 P2D7 AB5 W2 P74 P61

-- P2B0 P2D8 V6 Y1 P76 P64 -- P2B1 P2D9 V7 Y2 P77 P66 -- P2B2 P2D10 W6 AA3 P78 P68

mCS P2B3 P2D11 Y6 AB4 P79 P69 mA15 P2B4 P2D12 V9 AA4 P80 P70 mA16 P2B5 P2D13 V10 AB5 P82 P71 mA17 P2B6 P2D14 W10 AA5 P83 P74 mA18 P2B7 P2D15 Y10 AA6 P84 P75 CS0 P2C0 ADC0 AA10 AB8 P85 P76

83

SDIN0 P2C1 ADC1 AB10 AA8 P86 P77 CS1 P2C2 ADC2 U10 AB9 P87 P78

SDIN1 P2C3 ADC3 U11 AA9 P89 P79 SCLK P2C4 ADC4 V11 AB10 P90 P80 CS2 P2C5 ADC5 W11 AA10 P92 P81

SDOUT P2C6 ADC6 Y11 AB11 P93 P82 LDAC P2C7 ADC7 AA11 AA11 P95 P83

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

xPB0 P1A0 PxA0 M1 M3 P135 P85 xPB1 P1A1 PxA1 M2 M4 P132 P86 yPB2 P1A2 PxA2 M3 N3 P131 P87 yPB3 P1A3 PxA3 M4 N4 P130 P88 yPB1 P1A4 PxA4 M5 T4 P129 P91 yPB4 P1A5 PxA5 M6 T5 P128 P92 yPB0 P1A6 PxA6 N1 U3 P127 P93 yPB5 P1A7 PxA7 N2 U4 P125 P94 yPB6 P1B0 PxB0 U13 V3 P119 P95 yPB7 P1B1 PxB1 V13 V4 P118 P96 xPB2 P1B2 PxB2 W13 W3 P116 P97 xPB3 P1B3 PxB3 Y13 W4 P113 P98 xPB4 P1B4 PxB4 AA13 Y3 P112 P100 xPB5 P1B5 PxB5 AB13 Y4 P96 P101 yPC3 P1B6 PxB6 U12 Y5 P97 P102 yPC2 P1B7 PxB7 V12 W5 P98 P103 yPC1 P1C7 PxC0 AB17 W11 P108 P113 yPC0 P1C6 PxC1 AA17 Y11 P107 P112 yPA0 P1C5 PxC2 Y17 W10 P105 P111 yPA1 P1C4 PxC3 W17 Y10 P104 P110 yPA2 P1C3 PxC4 AB18 W9 P103 P107 yPA3 P1C2 PxC5 AA18 W8 P102 P106 xPB6 P1C1 PxC6 Y18 W6 P100 P105 xPB7 P1C0 PxC7 W18 Y6 P99 P104

84

eM_DEMO 模組

eM_DEMO 模組的電路配置圖如下

eM_USB 模組

數字型 LED

0 1 2 34 5 6 78 9 A BC D E F

燈號型 LED

44 鍵盤

ADC0 ADC1 DAC0 DAC1

LED 選擇KEY 選擇

其中

1eM_DEMO模組的基本功能包括 A將 xPAxPBxPC等 16個 IO訊號引出控制 LED和鍵盤電路 B將 ADDA訊號引出並放大成+-10V的工作範圍 2LED和鍵盤可以選擇三種模式由 LED和 KEY 兩組開關作選擇圖示如下

模式1

0123

模式2 模式3

0 1 2 34 5 6 78 9 A BC D E F

0123

3模式14鍵輸入並搭配 16點的 LED燈號顯示其中 16點 LED分別對映到 xPA[0~3]xPB[0~7]和 xPC[0~3] 4組按鍵分別對映到 xPC[0~3] 4模式24鍵輸入並搭配四個 7段式數字顯示其中 數字顯示由 xPA[0~3]作數字掃瞄而由 xPB[0~7]作 7段式 LED控制 4組按鍵 分別對映到 xPC[0~3] 5模式316鍵輸入並搭配四個 7段式數字顯示其中 數字顯示由 xPA[0~3]作數字掃瞄而由 xPB[0~7]作 7段式 LED控制 16組按鍵由 xPA[0~3]作鍵盤掃瞄而由 xPC[0~3]作鍵盤讀取 6根據VHDL與數位邏輯設計的章節其中 第 1章至 10章的實驗採用模式1而 第 11章實驗採用模式2而 第 12章之後的實驗都採用模式3

85

FPGA UCF 定義

eM_3S1K 模組

NET CLK LOC = B12

NET XAlt0gt LOC = N2

NET XAlt1gt LOC = T1

NET XAlt2gt LOC = T2

NET XAlt3gt LOC = U2

NET XBlt0gt LOC = M3

NET XBlt1gt LOC = M4

NET XBlt2gt LOC = W3

NET XBlt3gt LOC = W4

NET XBlt4gt LOC = Y3

NET XBlt5gt LOC = Y4

NET XBlt6gt LOC = W6

NET XBlt7gt LOC = Y6

NET XClt0gt LOC = V1

NET XClt1gt LOC = V2

NET XClt2gt LOC = W1

NET XClt3gt LOC = W2

NET YAlt0gt LOC = W10

JP4 接頭

NET YAlt1gt LOC = Y10

NET YAlt2gt LOC = W9

NET YAlt3gt LOC = W8

NET YBlt0gt LOC = U3

NET YBlt1gt LOC = T4

NET YBlt2gt LOC = N3

NET YBlt3gt LOC = N4

NET YBlt4gt LOC = T5

NET YBlt5gt LOC = U4

NET YBlt6gt LOC = V3

NET YBlt7gt LOC = V4

NET YClt0gt LOC = Y11

NET YClt1gt LOC = W11

NET YClt2gt LOC = W5

NET YClt3gt LOC = Y5

在光碟片中 RFFPGAVHDLDEMOBIT3S1K 裡有 VHDL 與數位邏輯設計書本範例原始檔與合成檔

86

eM_3S50 模組

NET CLK LOC = P124

NET XAlt0gt LOC = P59

NET XAlt1gt LOC = P60

NET XAlt2gt LOC = P63

NET XAlt3gt LOC = P68

NET XBlt0gt LOC = P135

NET XBlt1gt LOC = P132

NET XBlt2gt LOC = P116

NET XBlt3gt LOC = P113

NET XBlt4gt LOC = P112

NET XBlt5gt LOC = P96

NET XBlt6gt LOC = P100

NET XBlt7gt LOC = P99

NET XClt0gt LOC = P69

NET XClt1gt LOC = P70

NET XClt2gt LOC = P73

NET XClt3gt LOC = P74

NET YAlt0gt LOC = P105

JP4 接頭

NET YAlt1gt LOC = P104

NET YAlt2gt LOC = P103

NET YAlt3gt LOC = P102

NET YBlt0gt LOC = P127

NET YBlt1gt LOC = P129

NET YBlt2gt LOC = P131

NET YBlt3gt LOC = P130

NET YBlt4gt LOC = P128

NET YBlt5gt LOC = P125

NET YBlt6gt LOC = P119

NET YBlt7gt LOC = P118

NET YClt0gt LOC = P107

NET YClt1gt LOC = P108

NET YClt2gt LOC = P98

NET YClt3gt LOC = P97

在光碟片中 RFFPGAVHDLDEMOBIT3S200 裡有VHDL與數位邏輯設計書本範例原始檔與合成檔

87

eM_95XL 模組

NET CLK LOC = SPIN38

NET XAlt0gt LOC = SPIN53

NET XAlt1gt LOC = SPIN54

NET XAlt2gt LOC = SPIN56

NET XAlt3gt LOC = SPIN57

NET XBlt0gt LOC = SPIN85

NET XBlt1gt LOC = SPIN86

NET XBlt2gt LOC = SPIN97

NET XBlt3gt LOC = SPIN98

NET XBlt4gt LOC = SPIN100

NET XBlt5gt LOC = SPIN101

NET XBlt6gt LOC = SPIN105

NET XBlt7gt LOC = SPIN104

NET XClt0gt LOC = SPIN58

NET XClt1gt LOC = SPIN59

NET XClt2gt LOC = SPIN60

NET XClt3gt LOC = SPIN61

NET YAlt0gt LOC = SPIN111

JP4 接頭

NET YAlt1gt LOC = SPIN110

NET YAlt2gt LOC = SPIN107

NET YAlt3gt LOC = SPIN106

NET YBlt0gt LOC = SPIN93

NET YBlt1gt LOC = SPIN91

NET YBlt2gt LOC = SPIN87

NET YBlt3gt LOC = SPIN88

NET YBlt4gt LOC = SPIN92

NET YBlt5gt LOC = SPIN94

NET YBlt6gt LOC = SPIN95

NET YBlt7gt LOC = SPIN96

NET YClt0gt LOC = SPIN112

NET YClt1gt LOC = SPIN113

NET YClt2gt LOC = SPIN103

NET YClt3gt LOC = SPIN102

在光碟片中 RFFPGAVHDLDEMOSVF95288XL 裡有VHDL與數位邏輯設計書本範例原始檔與合成

檔案

88

eM_FPGA 模組

NET CLK LOC = E12

NET XAlt0gt LOC = AA3

NET XAlt1gt LOC = Y4

NET XAlt2gt LOC = AA4

NET XAlt3gt LOC = AB4

NET XBlt0gt LOC = M1

NET XBlt1gt LOC = M2

NET XBlt2gt LOC = W13

NET XBlt3gt LOC = Y13

NET XBlt4gt LOC = AA13

NET XBlt5gt LOC = AB13

NET XBlt6gt LOC = Y18

NET XBlt7gt LOC = W18

NET XClt0gt LOC = W5

NET XClt1gt LOC = Y5

NET XClt2gt LOC = AA5

NET XClt3gt LOC = AB5

NET YAlt0gt LOC = Y17

JP4 接頭

NET YAlt1gt LOC = W17

NET YAlt2gt LOC = AB18

NET YAlt3gt LOC = AA18

NET YBlt0gt LOC = N1

NET YBlt1gt LOC = M5

NET YBlt2gt LOC = M3

NET YBlt3gt LOC = M4

NET YBlt4gt LOC = M6

NET YBlt5gt LOC = N2

NET YBlt6gt LOC = U13

NET YBlt7gt LOC = V13

NET YClt0gt LOC = AA17

NET YClt1gt LOC = AB17

NET YClt2gt LOC = V12

NET YClt3gt LOC = U12

在光碟片中 RFFPGAVHDLDEMOBIT2V250 裡有VHDL與數位邏輯設計書本範例原始檔與合成檔

89

Page 28: RFFPGA 直流馬達實驗手冊juniortek.com.tw/program/manual/RF-DC-mal.pdf · em_demo模組 em_dcm 直流伺服馬達 dc電源 rffpga 系統的直流馬達實驗規劃 其中包括:

其中

1PD控制模組中對外的界面變數包括 cmd命令的輸入點 fdk回授的輸入點 out控制的輸出點 2內部參數包括 Kp比例控制增益其中 10=256所以乘完後還需要再右移 8-bit Kd微分控制增益其中 10=256所以乘完後還需要再右移 8-bit 3內部變數包括 err臨時性的變數用以儲存誤差值的計算結果 old儲存性的變數用以儲存上一次抽樣控制時的 err值 4模組程式分成三部分包括 變數宣告local和data所宣告的部分 初值設定initial程序中先將 out和 old設定為 0 即時控制timer程序中依序執行 PD控制器中的每個步驟

控制目標的選擇

從字面上來看速度控制就是控制馬達的速度轉角控制就是控制馬達的轉角沒什麼

好討論的但是實際上確有許多問題第一的問題就是什麼是速度和轉角馬達的速

度和轉角如果不作量測如何得知

既然在量測中取得了速度和轉角資料那麼我們所控制的到底是物理學上的速度和轉

sτ+1

KmVc ωKp+sKd

err

P控制器 直流馬達

θc

轉角回授

轉角命令 + 轉角響應-

s1 θ

KxANG

轉角量測

角還是量測上的速度和轉角以下圖為例

其中

1以轉角量測裝置量測轉角例如裝在馬達軸端的光電盤和解碼電路 2轉角的量測輸出是 ANG而 ANG和物理轉角θ之間有 Km的增益關係 3只要 Km值不是 1那麼系統就不再是單位回授 4如果 Km還有非線性或失真現象那麼控制結果也將有非線性或失真現象

這些問題混雜起來會使得控制系統的分析變得更複雜如果要簡單處理就要認同現

實環境直接以量測結果為控制目標如下圖所示

28

sτ+1

KmVc ωKp+sKd

err

P控制器 直流馬達

θc

轉角回授

+-

s1 θ Kx

ANG轉角量測

其中

1直接以量測結果為控制目標將全系統還原成標準的單位回授控制 2所有的非線性或失真現象都進入開環路討論屬於可以補償的部分 3但是控制結果就是「量測上的轉角」而「物理學上的轉角」

量測誤差的問題

轉角θ

量測ANG

對於量測誤差而言最明顯的問題就是量化誤差圖示如下

其中

1以 DCM模組中的光電盤為例精度為每圈 500格經由乘四解碼計數後其等效

精度增加為每圈 2000格 2比(12000)圈更精密的部分都無法響應換句話說振幅越大的控制其相對誤差越

小而振幅越小的控制其相對誤差越大例如 當振幅為(12)圈時其控制誤差量為 01而 當振幅為(120)圈時其控制誤差量為 1 這是標準的的非線性現象

量化誤差不只影響穩態上的精度還會造成非線性的震動問題圖示如下

t

誤差值

+1

-1

其中

1由於量化誤差的問題只有當誤差超過+1或是-1時才會真正偵測到誤差也才

29

會施加控制量作補償 2所以穩態時的誤差將在+1-1之間擺動造成微幅的振動 3量化誤差越大震動越明顯而量化誤差很小時通常不易察覺出震動現象

微分量的計算

伺服系統中有兩處需要用到微分計算包括

1PD控制器中誤差微分量的計算 2速度控制器中速度回授值的量測

在理論上微分公式是(dXdt)相當於 dXdt = (X(n)-X(n-1))DT (當 DT趨近於 0時)

所以當微分計算中的抽樣週期(DT)越短時微分的計算值將越接近理論值但是事實上

卻非如此以下圖為例

t

X

DTDX

其中

1當 X值為等速度運動時其微分量就是其斜率相當於 DXDT 2DT是微分計算中的抽樣週期理論上越短越好但是由於 DX本身的量化誤差

使得這個原則不再成立例如當斜率為 7394時 若 DT=1000則 DX=7394而 DXDT=7394 若 DT=100 則 DX=739 而 DXDT=739 若 DT=10 則 DX=73 而 DXDT=73 若 DT=1 則 DX=7 而 DXDT=7 3換句話說當抽樣週期越短時DX的量化誤差將越明顯而造成微分計算上更嚴

重的誤差

在 DCM 模組中速度量測的量化誤差分析如下

1馬達上的光電盤精度為每圈 500格經過乘四解碼後等效精度為每圈 2000格 2當馬達轉速為 1200RPM而抽樣頻率為 1KHz時對映的速度量測值為 1200(圈分)2000(格圈)60(秒分)1000(DT秒) = 40(格DT) 3換句話說1200RPM的轉速對映到 40的速度量測值即速度單位=30RPM若最

高轉速為 3000RPM則在+-3000RPM的速度範圍內其量化誤差為 05相當於8-bit的 ADC轉換器精度

4對映不同的抽樣頻率的量化誤差表列如下

30

光電盤精度 最高轉速 抽樣頻率 速度單

速度範圍 量化誤差

500PPR 3000RPM 1KHz 30RPM +-100 05 500PPR 3000RPM 2KHz 60RPM +-50 1 500PPR 3000RPM 4KHz 120RPM +25 2

過溢現象的處理

輸入

輸出

32767

-32768

整數運算都有數值範圍限制以 16-bit 整數而言輸入輸出的關係如下

其中

1當超過正負數的上下限時數值會正負顛倒例如 +32768 將會視為 -32768作處理而 +32769 將會視為 -32768作處理依此類推 2換句話說16-bit的整數運算只有在+-32767之間是線性的對映關係而超過這個範圍就是非線性的對映關係

3不但如此還因為正負顛倒的現象使得原來設計的負回授控制將變為正回授控制

而產生非線性的震盪現象 4換句話說只要計算上稍一不慎就會使得原先穩定的系統產生不穩定的震盪結果

為了避免過溢現象所造成的不穩定問題通常控制系統中會利用飽和處理作改善圖示

如下

輸入

輸出

lmtH

lmtL

31

其中

1當超過計算的上限時將固定設為上限值處理而當超過計算的下限時也將固定

設為下限值處理 2這時的整數運算只有在上下限之間是線性的對映關係而超過這個範圍將還是非線

性的對映關係 3雖然如此但是因為沒有正負顛倒的現象所以不再會有負回授變為正回授的問題

而避免了非線性的震盪現象 4換句話說飽和處理是針對過溢現象的妥協處理方案雖然不完全理想但是是可

接受的最佳選擇

下面是對映的組合語言範例

RD x x為輸入端 MIN lmtH 取得 x和 lmtH中的較小值即是作上限保護的工作 MAX lmtL 取得 x和 lmtL中的較大值即是作下限保護的工作 WR y Y為輸出端 其中

1組合語言中提供MAX和MIN的計算其中 MIN lmtH 比較 AX暫存器和 lmtH而將較低值存入 AX暫存器中 MAX lmtL 比較 AX暫存器和 lmtH而將較高值存入 AX暫存器中 2所以直接可用MIN指令作上限保護而以MAX指令作下限保護兩者合併後即是

完整的飽和處理結果

飽和處理通常應用在高位數轉成低位數的場合例如32-bit轉換成16-bit或是16-bit

轉換成 12-bit 等等例如在本實驗中所有的運算都是以 16-bit 整數作處理但是到

PWM 驅動級輸出時卻要轉換成 12-bit精度的 PWM 命令所以必須先用飽和處理以避免

過溢現象造成的不穩定問題

32

61 實驗 1-開迴路的電壓控制 實驗說明以電壓直接控制轉速的開迴路特性可簡化為一階系統處理方塊圖如

sτ+1

v km ωm

其中V 送給驅動器的 PWM電壓命令

ωm馬達的轉動速度可由處理 photo encoder信號所得的位置微分而得 km一階系統的穩態增益 τ一階系統的時間常數即步階響應中的上升時間

為了觀測直流馬達的開環路特性建立下面的測試方塊圖

其中

1所使用的模組包括 FG1方波產生器產生所需的步階測試波形 FT1馬達模擬以一階系統的低通濾波器來執行 IO1光電盤的回授處理可同時取得轉角和速度的量測值 IO2PWM電壓驅動直接驅動直流馬達作控制 Led四位數字七段顯示模組顯示波形信號資料 2測試目標有兩項(P 參數設定欄)包括 A調整方波命令控制直流馬達作開環路的 PWM電壓控制 B調整馬達模擬參數使模擬結果和實驗結果相符以確認開環路特性

33

實驗畫面顯示如下

測試一 開環路的電壓控制 記錄頻道 CH1電壓命令Y1=-300DY=500 CH2模擬速度Y2=-100DY=500 CH3馬達速度Y3=100DY=50 CH4馬達轉角Y4=300DY=50000 實驗參數 FG1kAMP=256電壓命令的測試振幅 FG1kFRQ=150電壓命令的測試頻率 FT1DT =10 馬達模擬參數 FT1KA =500馬達模擬參數

其中

1用示波器功能記錄四個頻道其中 CH2和 CH3重疊顯示以比較模擬速度和量測

速度之間的差異 2由於 Km 不等於 1所以必須調整 CH3的 Y軸單位才能使得 CH2和 CH3的穩態響應部分重疊

3實驗時可以改變 FG1的參數以調整測試方波的振幅和頻率 4可以調整 FT1的參數使得 CH2和 CH3的暫態響應部分重疊

根據實際的測試結果分析如下

2馬達模擬的參數調整到 DT=10而 KA=500根據公式 τ = 40961000dtka 所以上升時間(τ)為 0082秒或是 82ms 3CH2CH3的 Y軸單位並不一致顯然 Km 不等於 1經計算確認 Km=0098

對應之 plc檔程式說明(exp_pwmplc) echo off 畫面顯示開始

run dsp 0 選擇 DSP1

run stop run reset 既有程式停止

run testDCMmem 下載指定程式

das 1 ampfg1out 0 1024 PWM 波形 Volt 設定 DAS 頻道1

das 2 ampft1lp 0 1024 馬達模擬 Volt 設定 DAS 頻道2

das 3 ampio1spd 0 1024 馬達速度 Volt 設定 DAS 頻道3

das 4 ampio1ang 0 1024 馬達角度 Volt 設定 DAS 頻道4

plot select 0 設定示波器頁數

plot xunit 100000 0 設定示波器 X軸

plot yunit 1 500 -300 設定示波器 Y1 軸

34

plot yunit 2 500 -100 設定示波器 Y2 軸

plot yunit 3 50 100 設定示波器 Y3 軸

plot yunit 4 50000 300 設定示波器 Y4 軸

plot trigger 1 0 1 10 設定示波器觸發

plot scope 9 1 2 3 4 設定示波器顯示

module io2 設定 io2 模組

s cmd ampfg1out

module fg1 設定 fg1 模組

s kAmp 256 s kFrq 150

module ft1 設定 ft1 模組

s u ampfg1out s dt 10 s ka 500

module io3 設定 io3 模組

s led ampfg1out

module 回復預設模組

run 1khz 設定抽樣頻率為 4KHz

run start DSP 開始執行

das stop pause 1 DAS 啟動 das start DAS 啟動

echo on 回復正常訊息顯示

使用者可視情況調整一階濾波器的 ka和 dt值使得 ch2和 ch3 兩組波形完全相符

以求得開迴路系統近似的一階轉移函數 CAI操控設計畫面規劃如下(EXP_PWMCAI) page 1 畫面設計

35

page 2 畫面設計 page 3 畫面設計

36

實測響應圖

訊 號 說 明 訊 號 說 明 ch1 方波產生器訊號 ch3 一階濾波器輸出信號 ch2 馬達角速度訊號 ch4 馬達角位置訊號

直流馬達之開迴路電壓控制響應圖

37

以邏輯分析功能觀測直流馬達之光電盤輸入與 PWM輸出信號

38

62 實驗 2-閉迴路的速度控制 實驗說明為了觀測閉迴路的速度控制響應建立下面的測試方塊圖

加入 PD控制後系統閉迴路的轉移函數經適度的簡化仍能約略以一階系統

處理方塊圖如下

sτ+1

u km ωm

其中

u 送給控制器的速度命令

ωm馬達的轉動速度可由處理 photo encoder 信號所得的位置微分而得

km一階系統的穩態增益 τ一階系統的時間常數即步階響應中的上升時間

方塊圖中的模組功能說明如下

1用 fg1 產生測試用的方波速度命令

2將方波速度命令和速度回授訊號送到 PD 控制器方塊中產生電壓控制訊號再透

過 io2 模組將訊號送出給伺服介面

3用 ft1 建立對照用的一階系統可用 IIR1濾波器方塊產生

4將方波命令產生速度命令再觀測 PHT(io1)上的速度值 spd

5調整 IIR1濾波器的參數使得兩組波形完全相符這時 IIR1濾波器就是閉迴路

速度控制的特性其中 km 為增益而τ為上升時間(單位為 sec)

6增益 km 可從示波器中作簡單計算而上升時間(τ=40964000dtka)

7 Led四位數字七段顯示模組顯示波形信號資料

39

對應之 plc檔程式說明(exp_speedplc) echo off 畫面顯示開始

run dsp 0 選擇 DSP1

run stop run reset 既有程式停止

run testDCMmem 下載指定程式

das 1 ampfg1out 0 1024 PWM 波形 Volt 設定 DAS 頻道1

das 2 ampft1lp 0 1024 馬達模擬 Volt 設定 DAS 頻道2

das 3 ampio1spd 0 1024 馬達速度 Volt 設定 DAS 頻道3

das 4 ampio1ang 0 1024 馬達角度 Volt 設定 DAS 頻道4

plot select 0 設定示波器頁數

plot xunit 100000 0 設定示波器 X軸

plot yunit 1 50 -300 設定示波器 Y1 軸

plot yunit 2 50 -100 設定示波器 Y2 軸

plot yunit 3 50 100 設定示波器 Y3 軸

plot yunit 4 50000 300 設定示波器 Y4 軸

plot trigger 1 0 1 10 設定示波器觸發

plot scope 9 1 2 3 4 設定示波器顯示

module io2 設定 io2 模組

s cmd ampcn2out

module fg1 設定 fg1 模組

s kAmp 50 s kFrq 150

module cn2 設定 cn1 模組

s cmd ampfg1out s fdk ampio1spd s kp 0x4000

module ft1 設定 ft1 模組

s u ampfg1out s dt 2 s ka 320

module io3 設定 io3 模組

s led ampfg1out

module 回復預設模組

run 1khz 設定抽樣頻率為 4KHz

run start DSP 開始執行

das stop pause 1 DAS 啟動 das start DAS 啟動

echo on 回復正常訊息顯示

CAI操控設計畫面規劃如下(EXP_speedCAI)

40

page 1 畫面設計 page 2 與 page 3 畫面設計與實驗一 page 2 與 page 3相同畫面 page 4 畫面設計

41

方塊的參數設定 使用者可視情況調整一階濾波器的 ka和 dt值使得 ch2和 ch3 兩組波形完全相符

以求得此一閉迴路系統近似的一階轉移函數或調整 PD控制器中的 kp和 kp值以調整系統之響應 實測響應圖

訊 號 說 明 訊 號 說 明 ch1 方波產生器產生之速度命令 ch3 一階濾波器輸出信號 ch2 馬達角速度訊號 ch4 馬達角位置訊號

42

直流馬達之閉迴路速度控制響應圖

43

63 實驗 3-閉迴路的位置控制 實驗說明為了觀測閉迴路的位置控制響應將直流馬達的回授改為位置訊號

建立下面的測試方塊圖 方塊圖中的模組功能說明如下

1用 fg1產生測試用的方波位置命令 2將方波位置命令和位置回授訊號送到 PD控制器方塊中產生電壓控制訊號再透過 io2模組將訊號送出到伺服介面驅動馬達轉動

對應之 plc檔程式說明(exp_angleplc) echo off 畫面顯示開始

run dsp 0 選擇 DSP1

run stop run reset 既有程式停止

run testDCMmem 下載指定程式

das 1 ampfg1out 0 1024 PWM 波形 Volt 設定 DAS 頻道1

das 2 ampft1lp 0 1024 馬達模擬 Volt 設定 DAS 頻道2

das 3 ampio1spd 0 1024 馬達速度 Volt 設定 DAS 頻道3

das 4 ampio1ang 0 1024 馬達角度 Volt 設定 DAS 頻道4

plot select 0 設定示波器頁數

plot xunit 100000 0 設定示波器 X軸

plot yunit 1 1000 -300 設定示波器 Y1 軸

plot yunit 2 1000 -100 設定示波器 Y2 軸

plot yunit 3 20 100 設定示波器 Y3 軸

plot yunit 4 1000 300 設定示波器 Y4 軸

plot trigger 1 0 1 10 設定示波器觸發

44

plot scope 9 1 2 3 4 設定示波器顯示

module io2 設定 io2 模組

s cmd ampcn2out

module fg1 設定 fg1 模組

s kAmp 1000 s kFrq 75

module cn2 設定 cn1 模組

s cmd ampfg1out s fdk ampio1ang s kp 0x300 s kd 0x4000

module ft1 設定 ft1 模組

s u ampfg1out s dt 2 s ka 320

module io3 設定 io3 模組

s led ampfg1out

module 回復預設模組

run 1khz 設定抽樣頻率為 4KHz

run start DSP 開始執行

das stop pause 1 DAS 啟動 das start DAS 啟動

echo on 回復正常訊息顯示

CAI操控設計畫面規劃如下(EXP_angleCAI) page 1 畫面設計

45

page 2 與 page 3 畫面設計與實驗一 page 2 與 page 3相同畫面 page 4 畫面設計與實驗二 page 4 畫面 方塊的參數設定 延續上一實驗的說明使用者可以調整 PD控制器中的 kp和 kd值以調整系統之

響應 實測響應圖

訊 號 說 明 訊 號 說 明 ch1 方波產生器產生之位置命令 ch3 馬達角速度訊號 ch2 馬達角位置 ch4 Pd控制器輸出之電壓訊號

46

直流馬達之閉迴路位置控制響應圖

47

64 實驗 4-加減速的位置控制 實驗說明為避免方波命令的過於嚴苛在方波命令的輸出加入一加減速控制功

能方塊以減緩命令變化的幅度增加馬達運動的平順建立的測試方塊圖如下

方塊圖中的模組功能說明如下

1用 fg1產生測試用的方波位置命令 2將方波位置命令送到加減速控制方塊處理後產生新的位置命令再將新的位置命

令與位置回授訊號送到 PD控制器方塊中產生電壓控制訊號最後透過 io2模組將訊號送出到伺服介面驅動馬達轉動

對應之 plc檔程式說明(exp_accplc) echo off 畫面顯示開始

run dsp 0 選擇 DSP1

run stop run reset 既有程式停止

run testDCMmem 下載指定程式

das 1 ampfg1out 0 1024 PWM 波形 Volt 設定 DAS 頻道1

das 2 ampcn1out 0 1024 加速控制 Volt 設定 DAS 頻道2

das 3 ampio1spd 0 1024 馬達速度 Volt 設定 DAS 頻道3

das 4 ampio1ang 0 1024 馬達角度 Volt 設定 DAS 頻道4

plot select 0 設定示波器頁數

plot xunit 100000 0 設定示波器 X軸

plot yunit 1 2000 -300 設定示波器 Y1 軸

plot yunit 2 2000 -100 設定示波器 Y2 軸

plot yunit 3 50 100 設定示波器 Y3 軸

plot yunit 4 2000 300 設定示波器 Y4 軸

48

plot trigger 1 0 1 10 設定示波器觸發

plot scope 9 1 2 3 4 設定示波器顯示

module io2 設定 io2 模組

s cmd ampcn2out

module fg1 設定 fg1 模組

s kAmp 2000 s kFrq 150

module cn1 設定 cn1 模組

s cmd ampfg1out

module cn2 設定 cn2 模組

s cmd ampcn1out s fdk ampio1ang s kp 0x300 s kd 0x4000

module ft1 設定 ft1 模組

s u ampfg1out s dt 2 s ka 320

module io3 設定 io3 模組

s led ampfg1out

module 回復預設模組

run 1khz 設定抽樣頻率為 4KHz

run start DSP 開始執行

das stop pause 1 DAS 啟動 das start DAS 啟動

echo on 回復正常訊息顯示

CAI操控設計畫面規劃如下(EXP_accCAI) page 1 畫面設計

49

page 2 畫面設計與實驗一 page 2相同畫面 page 3 畫面設計與實驗二 page 4相同畫面

參數設定參考之前各實驗的說明可線上機動性的調整 PD控制器中的 kp和 kd值以調整系統之響應 實測響應圖

訊 號 說 明 訊 號 說 明 ch1 方波產生器產生之位置命令 ch3 馬達角位置 ch2 加減速模組輸出之位置命令 ch4 馬達角速度訊號

50

圖一 直流馬達經加減速控制後之閉迴路控制響應圖

51

65 實驗 5-正弦波的位置控制 實驗說明在本實驗中改變命令的波形由方波改變為正弦波並建立如下的測

試方塊圖與上一實驗相比較僅更改命令的波形產生方塊 方塊圖中的模組功能說明如下 1用 fg2產生測試用的弦波位置命令 2將弦波位置命令送到加減速控制方塊處理後產生新的位置命令再與 io1 讀入的位

置回授訊號送到 PD 控制器方塊中產生電壓控制訊號再透過 io2 模組將訊號送出到伺服介面驅動馬達轉動

對應之 plc檔程式說明(exp_sinplc) echo off 畫面顯示開始

run dsp 0 選擇 DSP1

run stop run reset 既有程式停止

run testDCMmem 下載指定程式

das 1 ampfg2out 0 1024 SIN 波形 Volt 設定 DAS 頻道1

das 2 ampcn1out 0 1024 加速控制 Volt 設定 DAS 頻道2

das 3 ampio1spd 0 1024 馬達速度 Volt 設定 DAS 頻道3

das 4 ampio1ang 0 1024 馬達角度 Volt 設定 DAS 頻道4

plot select 0 設定示波器頁數

plot xunit 100000 0 設定示波器 X軸

plot yunit 1 2000 -300 設定示波器 Y1 軸

plot yunit 2 2000 -100 設定示波器 Y2 軸

plot yunit 3 50 100 設定示波器 Y3 軸

plot yunit 4 2000 300 設定示波器 Y4 軸

plot trigger 1 0 1 10 設定示波器觸發

52

plot scope 9 1 2 3 4 設定示波器顯示

module io2 設定 io2 模組

s cmd ampcn2out

module fg2 設定 fg1 模組

s kAmp 2000 s kFrq 100

module cn1 設定 cn1 模組

s cmd ampfg2out

module cn2 設定 cn2 模組

s cmd ampcn1out s fdk ampio1ang s kp 0x300 s kd 0x4000

module ft1 設定 ft1 模組

s u ampfg2out s dt 2 s ka 320

module io3 設定 io3 模組

s led ampfg2out

module 回復預設模組

run 1khz 設定抽樣頻率為 4KHz

run start DSP 開始執行

das stop pause 1 DAS 啟動 das start DAS 啟動

echo on 回復正常訊息顯示

CAI操控設計畫面規劃如下(EXP_sinCAI) page 1 畫面設計

53

page 2 畫面設計 page 3 畫面設計與實驗二 page 4相同畫面

方塊的參數設定可調整 PD控制器中的 kp和 kd值以調整系統之響應 實測響應圖

訊 號 說 明 訊 號 說 明 ch1 弦波產生器產生之位置命令 ch3 馬達角位置訊號 ch2 加減速模組輸出之位置命令 ch4 馬達角速度訊號

54

直流馬達之閉迴路弦波加減速位置控制響應圖

55

7組合語言說明

本節將針對 DC馬達伺服控制實驗專用的程式模組進行功能與程式碼的說明其

有關於波形產生器與資料擷取模組等說明如下

SIN_waveasm 正弦波產生器 PWM_waveasm 方波產生器 IIR1_filterasm 一階濾波器 DAS4asm 資料蒐集模組

弦波產生器

此模組會產生週期性的正弦波方塊圖如下

outfrq

kBiasbias

ampkAmp

kFrqth

kThf=1TB

θ

A

其中

1正弦波有四個參數振幅(A)頻率(F)相位(θ)和偏移(B)其公式為 out = A sin(2πF t +θ) + B 2對於單純的正弦波產生器所對映的參數包括 kAmp 振幅值 kFrq 頻率值kFrq=655368000Hz其中 Hz的範圍為 0~4000例如 1000Hz =gt frq=8192 100Hz =gt frq=819 10Hz =gt frq=82 1Hz =gt frq=8 kTh 相角值0~255代表 0~360的相位當 th=0 時為正弦波 th=64 時為餘弦波 th=128時為反相波依此類推 kBias偏移值 3對於可調變的正弦波產生器其對映的輸入點為 amp 控制振幅的輸入點可產生調幅(AM)波形 frq 控制頻率的輸入點可產生調頻(FM)波形 th 控制相位的輸入點可產生調相(PM)波形 bias控制偏移的輸入點可產生雙頻混波(相加)波形 4若不使用調變功能時各個輸入點時的預設值為 amp 指向 kAmp 的位址 frq 指向 kFrq 的位址

56

th 指向 kTh 的位址 bias指向 kBias的位址

模組程式範例SIN_WAVEasm

local amp R0 IP kAmp 輸入點sin波的振幅 local frq R1 IP kFrq 輸入點sin波的頻率 local th R2 IP kTh 輸入點sin波的相角 local bias R3 IP kBias 輸入點sin波的中心偏移 local out R4 OP 輸出點sin波輸出 local tab R5 TP 表格指標指向 sin[256]的表格 local ang R6 內部變數相位角65536=360deg local kAmp R7 1000 參數振幅值 local kFrq R8 1000 參數頻率值=655368000Hz local kTh R9 0 參數相角值360deg=256 local kBias R10 0 參數偏移值 data 11 模組變數區長度及初值 initial 啟動程序 WR ang0 WR out0 ang=out=0 RET timer 即時控制程序(8KHz) RD ang ADD (frq) WR ang ang+=frq SFR 8 ADD (th) AND 255 ACC=sin(ang256+th) ADD tab WRH RDM table-look-up MUL (amp) SFR 12 ADD (bias) WR out out=ACCamp4096+bias RET table tab 256 sin[256]表格區10=4096 0 101 201 301 401 501 601 700 00~070deg 799 897 995 1092 1189 1285 1380 1474 08~0F 1567 1660 1751 1842 1931 2019 2106 2191 10~17 2276 2359 2440 2520 2598 2675 2751 2824 18~1F 2896 2967 3035 3102 3166 3229 3290 3349 20~27 3406 3461 3513 3564 3612 3659 3703 3745 28~2F 3784 3822 3857 3889 3920 3948 3973 3996 30~37 4017 4036 4052 4065 4076 4085 4091 4095 38~3F 4096 4095 4091 4085 4076 4065 4052 4036 40~4790deg 4017 3996 3973 3948 3920 3889 3857 3822 48~4F 3784 3745 3703 3659 3612 3564 3513 3461 50~57 3406 3349 3290 3229 3166 3102 3035 2967 58~5F

57

2896 2824 2751 2675 2598 2520 2440 2359 60~67 2276 2191 2106 2019 1931 1842 1751 1660 68~6F 1567 1474 1380 1285 1189 1092 995 897 70~77 799 700 601 501 401 301 201 101 78~7F 0 65435 65335 65235 65135 65035 64935 64836 80~87180deg 64737 64639 64541 64444 64347 64251 64156 64062 88~8F 63969 63876 63785 63694 63605 63517 63430 63345 90~97 63260 63177 63096 63016 62938 62861 62785 62712 98~9F 62640 62569 62501 62434 62370 62307 62246 62187 A0~A7 62130 62075 62023 61972 61924 61877 61833 61791 A8~A8 61752 61714 61679 61647 61616 61588 61563 61540 B0~B7 61519 61500 61484 61471 61460 61451 61445 61441 B8~BF 61440 61441 61445 61451 61460 61471 61484 61500 C0~C7270deg 61519 61540 61563 61588 61616 61647 61679 61714 C8~CF 61752 61791 61833 61877 61924 61972 62023 62075 D0~D7 62130 62187 62246 62307 62370 62434 62501 62569 D8~DF 62640 62712 62785 62861 62938 63016 63096 63177 E0~E7 63260 63345 63430 63517 63605 63694 63785 63876 E8~EF 63969 64062 64156 64251 64347 64444 64541 64639 F0~F7 64737 64836 64935 65035 65135 65235 65335 65435 F8~FF

就程式結構而言說明如下

timer 即時控制程序(8KHz) RD ang ADD (frq) WR ang ang+=frq SFR 8 ADD (th) AND 255 ACC=sin(ang256+th) ADD tab WRH RDM table-look-up MUL (amp) SFR 12 ADD (bias) WR out out=ACCamp4096+bias RET

1基本上我們以查表法計算 sin()其輸入θ的範圍為 0~255對映到 0~360deg其輸出 sin(θ)的範圍為+-4096對映到+-10的範圍

2建立一個內部變數 ang其範圍為 0~65535對映到 0~360的相位角 3每個timer程序都執行 ang+=frq的動作更新目前的相位角接著依照 ang的相位角查表得到 sin(ang256+th)值

4由於表格長度為 256-word所以必須將 ang256才能得到正確的對映關係而 th範圍為 0~255所以不需要像 ang一般的做額外處理

5sin()的範圍為(+1-1)而在表格中以(+4096~-4096)的型式記錄相當於 10=4096所以執行 Asin()時還要用 SFR12指令做4096的動作才能正確的取得輸出值

58

6就頻率輸入 frq而言其計算原則是將θ=ωt轉化成θ=Σ(ωdt)因為抽樣頻率

為 8KHz所以 dt=18000而得到 frq=655368000Hz公式其中 Hz為真正的頻率在 8KHz的抽樣頻率下其範圍為 0~4000

鋸齒波產生器

此模組會產生週期性的鋸齒波方塊圖如下

outfrq

kBiasbias

ampkAmp

kFrqth

kThf=1TB

θ

A

其中

1鋸齒波也有四個參數振幅(A)頻率(F)相位(θ)和偏移(B)和正弦波的定義完全一致唯一的差異是其輸出為鋸齒波而非正弦波

2基本波形是從週期開始時為 0一直遞增到週期結束時到達最高點然後立刻回歸

到 0重新開始 3以程式結構而論鋸齒波程式幾乎就是正弦波的相位計算部分只差沒有正弦波的

查表處理而已

模組程式範例SAW_WAVEasm

local amp R0 IP kAmp 輸入點sin波的振幅 local frq R1 IP kFrq 輸入點sin波的頻率 local th R2 IP kTh 輸入點sin波的相角 local bias R3 IP kBias 輸入點sin波的中心偏移 local out R4 OP 輸出點sin波輸出 local ang R5 內部變數相位角65536=360deg local kAmp R6 1000 參數振幅值 local kFrq R7 1000 參數頻率值=655368000Hz local kTh R8 0 參數相角值360deg=256 local kBias R9 0 參數偏移值 data 11 模組變數區長度及初值 initial 啟動程序 WR ang0 WR out0 ang=out=0 RET timer 即時控制程序(8KHz) RD ang ADD (frq) WR ang ang+=frq SFR 8 ADD (th) AND 255 ACC=(ang256+th)amp0x00ff MUL (amp) SFR 8 ADD (bias) WR out out=ACCamp256+bias

59

RET

脈衝波產生器

outfrq

kBiasbias

ampkAmp

kFrqth

kThf=1TB

θ

A

pwm

kDutyduty

此模組會產生週期性的脈衝波方塊圖如下

其中

1脈衝波有五個參數其中振幅(A)頻率(F)相位(θ)和偏移(B)四個參數和正弦波

定義完全一樣另外再增加一個負載率(D) 2基本波形是從週期開始時為 1隔段時間後換為 0然後持續到週期結束再重新開始其中 1所佔有的比例就是負載率當 D=0時為 0而 D=255時為 100

3和其他參數類似負載率(D)以 duty為其輸入點而以 kDuty為其參數值

模組程式範例PLS_WAVEasm

local amp R0 IP kAmp 輸入點脈衝波的振幅 local frq R1 IP kFrq 輸入點脈衝波的頻率 local th R2 IP kTh 輸入點脈衝波的相角 local bias R3 IP kBias 輸入點脈衝波的中心偏移 local duty R4 IP kDuty 輸入點脈衝波的負載率 local out R5 OP 輸出點脈衝波輸出 local ang R6 內部變數相位角65536=360deg local kAmp R7 1000 參數振幅值 local kFrq R8 1000 參數頻率值=655368000Hz local kTh R9 0 參數相角值360deg=256 local kBias R10 0 參數偏移值 local kDuty R11 128 參數負載率100 =256 data 12 模組變數區長度及初值 initial 啟動程序 WR ang0 WR out0 ang=out=0 RET timer 即時控制程序(8KHz)

60

RD ang ADD (frq) WR ang ang+=frq SFR 8 ADD (th) AND 255 ACC=(ang256+th)amp0x00ff SUB (duty) RD (amp) JLT t1 RD 0 ACC=(amp0) t1 ADD (bias) WR out out=ACC+bias RET

IIR 一階濾波器

此模組執行一階的 IIR濾波器方塊圖如下

kau x

Z-1

+

+

-

+低通濾波器

高通濾波器dx lp

hp

濾波器參數的計算公式如下

1假設濾波器的頻寬為 hz則 ωn=hz628 2若系統頻率為 8KHz則抽樣週期 dT為 dT=dt8000 其中 dt為模組參數 3則濾波器參數為 ka=ωndT4096或是 =hzdt62880004096即 =hzdt32 4當 dt決定後所允許的訊號頻寬為(4000dt)換句話說訊號頻寬會因為 dt增加而下降

為了方便實驗的運用下面列出常用的參數對照表

濾波頻寬

(Hz)

10 20 50 100 200 500 1000 2000

訊號頻寬

(Hz)

400 800 2000 4000 4000 4000 4000 4000

模組參數 dt 10 5 2 1 1 1 1 1

模組參數 ka 320 320 320 320 640 1600 3200 6400

表格的運用方式如下

1首先決定濾波頻寬 2接著查表找出對映的參數 dt和 ka 3再查表得到對映的訊號頻寬以決定是否需要串接前級濾波器

61

模組程式範例IIR1_FILTERasm

local u R0 IP 輸入點濾波器輸入 local lp R1 OP 輸出點低通濾波器輸出 local hp R2 OP 輸出點高通濾波器輸出 local dt R3 1 參數抽樣週期 local ka R4 4096 參數增益 ka10=4096 local prd R5 內部變數抽樣週期用 data 6 模組變數區長度 initial 開機啟動程序 WR lp0 WR hp0 WR prd1 RET lp=hp=0prd=1 timer 即時控制程序 SUB prd1 JNZ b9 if (--prdgt0) return RD dt WR prd prd=dt RD (u) SUB lp WR hp hp=u-lp MUL ka SFR 12 ADD lp WR lp lp+=(hpka4096) b9 RET

資料蒐集模組

資料蒐集模組是一個非常特殊的模組專門配合 eTTY 程式中的示波器使用

模組程式範例DAS4asm

local cmd R0 0 紀錄命令0=停止1=前置記錄2=正觸發4=負觸發6=觸發記錄 local dt R1 1 抽樣週期每 dT抽樣一次 local tab R2 TP DAS表格啟始位址 local cnt R3 0 目前記錄點(0~255) local ch1 R4 0 定義頻道1的變數位址 local ch2 R5 0 定義頻道2的變數位址 local ch3 R6 0 定義頻道3的變數位址 local ch4 R7 0 定義頻道4的變數位址 local trg R8 0 定義觸發頻道的變數位址 local th R9 0 觸發準位 local tail R10 0 觸發後的抽樣個數 local buf R11 1 抽樣計數(1~dt) local pnt R12 表格位址計算pnt=tab+cnt4 local len R13 表格長度計算(0~256) data 14 定義模組變數區的長度 table tab 1024 定義表格的長度 initial 啟動程序 WR cmd0 RET cmd=0 timer 控制程序

62

ADD cmd0 JZ t9 if (cmd==0) return SUB buf1 JNZ t9 if (--buf)gt0) return RD dt WR buf dt=buf RD cnt ADD 1 AND 0xff WR cnt cnt=(cnt+1)amp0xff SFL 2 ADD tab WR pnt pnt=tab+cnt4 RD (ch1) WR (pnt) ADD pnt1 pnt++=ch1 RD (ch2) WR (pnt) ADD pnt1 pnt++=ch2 RD (ch3) WR (pnt) ADD pnt1 pnt++=ch3 RD (ch4) WR (pnt) pnt =ch4 RD cmd SUB 1 JZ t9 SUB 1 JZ t2 SUB 1 JZ t3 SUB 1 JZ t4 SUB 1 JZ t5 SUB 1 JZ t6 JR t7 t2 RD (trg) SUB th JGE t9 ADD cmd1 JR t9 wait trgltth t3 RD (trg) SUB th JLE t9 JR t6 wait trggtth t4 RD (trg) SUB th JLE t9 ADD cmd1 JR t9 wait trggtth t5 RD (trg) SUB th JGE t9 JR t6 wait trgltth t6 WR len0 WR cmd7 len=0cmd=7 t7 ADD len1 SUB tail JLT t9 WR cmd0 if ((++len)gt=0x80) cmd=0 t9 RET

與 DC 馬達控制相關的程式模組有以下 4個程式模組說明如下

(1)加減速控制模組 ACC_controlasm (2)光電盤輸入模組 POS_inputasm (3)PWM輸出模組 PWM_outputasm (4)PD控制模組 PD_controlasm

71加減速控制模組 此程式模組主要功能在於執行位置控制的加減速命令修正其數學模式採用 Lynn

濾波器的架構參見下圖

cmd

2

+

old Z -1

-

Z -1

Z -1

Z-1

Z-1x0 x1 x8 x9 x16

+ -

++

2

Z-1

Z-1 y1 y2

+

-

y0

+ +

sumZ-1

+164

12

out

dif

+

63

加減速控制模組方塊圖

其中

1Lynn 濾波器的階數固定成八階也就是 m=8其公式為 H(z) = (1-2Z-m+Z-2m)(1-2Z-1+Z-2)m2

2因為m=8所以m2=64因此最後計算低通濾波的部份時要先做除 64的運算 3因為低通濾波(lp)和 y0之間有 64倍的差異代表 y0y1y2的變化範圍比濾波器輸

入值要擴大許多例如輸入值在+-1000變化時y0y1y2很可能會在+-64000之間變化這範圍已經超出整數處理的範圍很可能會造成錯誤的計算結果

4所以在實驗時輸入值的變化範圍必須控制在+-500之間以保證計算的正確性 5對於 Lynn 濾波器當 m=8時其濾波器的頻寬固定為 1 kHzmdt也就是 dt=1時頻寬為 125 Hz dt=2時頻寬為 625Hz依此類推 6對於 Lynn 濾波器其濾波器的延遲固定為 m個抽樣週期因此設計 hp = x8 - lp 即可得到高通濾波器的對應結果 7其中乘 2和除 64的運算以移位運算取代所以整個程式中並無任何乘法運算 8Lynn 濾波器本身並不是穩定濾波器所以在程式啟動時必須確實的將所有狀態

(x0~x16)歸零否則會產生不穩定的狀態輸出

因為 Lynn濾波器中所有參數固定所以除了抽樣週期 dt 之外並無任何可調參數

抽樣週期 dt 可以控制頻寬dt 越大則濾波器頻寬越低

將步階命令值的輸出送入 Lynn 濾波器中經由低通濾波器的效應可以減緩命

令的變化程度達到加減速控制的目的以下為使用 Lynn 濾波器型式實現加減速控

制的組合語言程式列印 如欲更進一步瞭解 Lynn 濾波器與 FIR 數位濾波器之間的關係可以參考通訊實驗

四數位濾波器設計(FIR)中之說明

ACC_controlasm程式列印 local cmd R0 IP 輸入點位置命令

local out R1 OP 輸出點加減速處理後的位置命令

local dif R2 OP 輸出點位置微分命令

local axis R3 0 馬達編號0=X1=Y2=Z3=C

local old R4 內部變數微分計算用

local sumL R5 內部變數積分計算用

local sumH R6 內部變數積分計算用

local y0 R7 內部變數y(0~2)

local y1 R8 local y2 R9

local x0 R10 內部變數x(0~16)

local x1 R11 local x2 R12 local x3 R13 local x4 R14

local x5 R15 local x6 R16 local x7 R17 local x8 R18

local x9 R19 local x10 R20 local x11 R21 local x12 R22

local x13 R23 local x14 R24 local x15 R25 local x16 R26

64

data 27 模組變數區長度

initial 開機啟動程序

WR dif0 RD (cmd) WR out WR old dif=0 out=old=cmd

sumHL=cmd64

SFL 6 WR sumL RD out SFR 10 SGN 5 WR sumH

RPT 17 WR x00 RPT 3 WR y00 RET x[0~16]=0y[0~2]=0

timer 即時控制程序

RD (cmd) SUBX old WR x0 x0=cmd-old old=cmd

SUB x81 ADD x16 ADD y11 SUB y2 WR y0 y0=x0-2x8+x16+2y1-y2

SGN ADD sumL WR sumL RDH ADC sumH WR sumH sumHL+=y0

WRH RD sumL SFR 6 WR out out=sumHL64

RD y0 SGN SFR WR dif dif=y032mm

RD x0 RPT 16 RDX x1 x[i]=x[i-1] i=1~16

RD y0 RDX y1 WR y2 y[i]=y[i-1] i=1~2

b9 RET

72光電盤輸入模組

DC馬達的位置由光電盤量測之預設儲存於 0xac與 0xbe二個輸入埠位址中其中位址 0xac記錄 X軸馬達的位置位址 0xbe記錄 Y軸馬達的位置由於本實驗的DC馬達接在 Y軸的位置上因此程式中直接選用 Y軸的輸入 光電盤位置輸入的程式列印如下其中速度由位置的差分而得至於馬達的位置

則使用內部 2個 word加以記錄精度為 32位元 POS_inputasm程式列印 local spd R0 OP 輸出點速度量測值

local ang R1 OP 輸出點角度量測值

local angH R2 內部變數角度的 32 位元部分

local mode R3 0x308 模式選擇15MHzAB 相正反向輸入

local pht R4 0xac 輸入阜地址光電盤輸入(0xac)

local phtc R5 0xbe 輸入阜地址光電盤模式(0xbe)

local old R6 內部變數速度更新用

data 7 模組變數區長度

initial 開機啟動程序

RD mode WR (phtc) phtc=mode

RD (pht) WR old WR spd0 RET old=phtspd=0

timer 即時控制程序

RD (pht) SUBX old SGN 11 WR spd spd=(pht-old)old=pht

65

ADD ang WR ang angHL+=spd

RDH ADC angH WR angH

RET

73 PWM輸出控制模組 模組方塊

cmd PWM輸出

程式說明 1在開機時將切換保護時間寫到輸出阜 0xbc上其中切換保護值為 0~6360=5us 2在每次 timer interrupt時將 cmd訊號處理後寫到輸出阜 0xb8上

PWM_outputasm程式列印 local cmd R0 IP gnd 輸入點v相命令

local gain R1 4096 參數輸出增益1=4096

local bias R2 2048 參數輸出偏壓0=2048

local limit R3 4095 參數輸出極限1=4095

local zone R4 0x88f0 參數頻率=12KHz切換保護=5us

local pwm R5 0xb8 輸出阜地址PWM0 輸出(0xb8)

local mode R6 0xbc 輸出阜地址PWM 模式(0xbc)

local p0md R7 0xf8 輸出阜地址port0 模式(0xf8)

local gnd R8 0 輸入接地點

data 9 模組變數區長度

initial 開機啟動程序

RD bias WR (pwm) pwm=bias

RD 0xffff WR (p0md) set port0 mode

RD zone WR (mode) RET mode=zone

stop 關機保護程序

RD bias WR (pwm) RET pwm=bias

timer 即時控制程序

RD (mode) xor 1 and 1 WR (mode) trigger watch-dog

RD (cmd) MUL gain SFR 12 ADD bias ACC=(cmdgain4096)+bias

MAX 0 MIN limit WR (pwm) pwm=limit(ACC)

RET

66

74 PD 控制模組

PD控制的模組方塊參見圖二十一所示其中比例控制的部份直接由增益 kp加以調整微分控制的部份則由誤差的差分經增益 kd的調整而得

Σ+

-

cmd

fdk

err out

Σ

pk

dk

Σ

+

+

+

-

old1minusZ

PD控制器的方塊圖

PD_controlasm程式列印 local cmd R0 IP gnd 輸入點位置命令(可忽略)

local fdk R1 IP gnd 輸入點位置回授(可忽略)

local out R2 OP 輸出點用以控制速度迴路

local kp R3 256 參數增益 kp10=256

local kd R4 0 參數增益 kd10=256

local err R5 0 內部變數

local old R6 0 內部變數

local gnd R7 0 無輸入時的短路點

data 8 模組變數區長度

initial 開機啟動程序

WR out0 WR old0 RET out=old=0

timer 即時控制程序

RD (cmd) SUB (fdk) PRTF WR err

MUL kp SFR 8 P=(cmd-fdk)kp256

RDS err SUBX old MUL kd SFR 8 D=(err-old)kd256

ADDS

WR out out=P+D

RET

程式中預設增益值的 10以整數值 256為基底因此使用 SFR 8的指令加以調

整另外在在計算微分項的程式部份用到 SUBX old的指令其詳細的暫存器動作如

下 參考 piDSP的指令說明SUBX指令將總共用到 3個時序參考錯誤 找不到參照

67

來源在時序 1時將原先 AX的資料拷貝一份到 HX中時序 2時正式執行減

法的動作所以 AX暫存器中的內容會變成 err-old時序 3時DSP會將存放在 HX暫存器中的內容拷貝一份到 old的記憶體中也就是經由 SUBX此一精簡指令將

同時完成計算差分所需要的相減與資料疊代的動作有效的利用 piDSP控制器 DSP核心的精簡指令將可以大幅提昇系統的計算速度

HX AXoldSUBXerr err

old

err

errerr olderr minus

1_err

errerr olderr minus err

1_err

1

2

3

SUBX的指令時序與暫存器變化

68

8附錄快速安裝說明

光纖網路通訊 FPGA 發展系統 (適用於 WIN-XP200098 系統)

快速安裝說明

26Pin 負載輸出入埠

雙電源︵5

12

伏︶輸入埠

單電源︵5

伏︶輸入埠

USB

光纖線輸

號 光纖線輸出埠

入 傳 埠

首先將光碟片 RFFPGA 目錄檔案拷貝在您工作硬碟裡面

第一次安裝時先將 USB 傳輸線接上電腦主機將電源供應器接上 FPGA 模組此時電

腦會出現安裝 USB-Serial 驅動程式選擇從清單安裝此驅動程式放置在光碟片

RFFPGA-USBdrive 選擇您目前安裝系統

可選擇 WIN-98WIN-MEWIN-2000WIN-XP 系統配合您現在工作電腦作業系統

69

注意一般電腦 USB 埠很多插口當您安裝驅動程式時是配合您當時插入之埠

下次如您插入不同接口埠時電腦會再次要求安裝驅動程式這是正常現象請再次安

裝驅動程式否則無法使用

FPLC 操作

首先進入 RFFPGA裡子目錄 testASM直接點選 fPLCexe 出現下面操作畫面(也可直接將

此檔案放置桌面直接點選)

(或者選擇 File 再執行 Setuphellip 選擇您要執行 CAI 檔)

70

進入下面操作畫面 首先使用滑鼠在 FPGA下載按鈕單擊動作使 FPGA變成 DSP晶片 實驗一至實驗五皆為使用 DSP組合語言設計程式其原始程式分別為 testASM1至testASM5可使用 texPad 開啟與編輯程式內容 實驗三與實驗五多有 IO控制動作 當選擇實驗三時出現下面畫面

71

eM_USB 模組

數字型 LED

0 1 2 34 5 6 78 9 A BC D E F

燈號型 LED

44 鍵盤

ADC0 ADC1 DAC0 DAC1

LED 選擇KEY 選擇

模 式 1

0123

注意操作畫面 3與 4 說明開關與按鍵選擇位置後選擇程式下載再按程式啟動如您

按下 0-3按鍵時燈號型 LED會有不同方向閃爍顯示程式停止時結束所有 IO控制動作再按回首頁選擇其他實驗 實驗四與實驗五

模式3

0 1 2 34 5 6 78 9 A BC D E F

按照上面開關選擇直接操作如果以上實驗皆能按照正常操作表示您光纖網路通訊

FPGA發展模組以能正常使用 注意 開機與關機動作順序如下

開機電腦啟動 --- eM_USB 模組電源接上 --- USB 接上電腦 ---

啟動 FPLC 軟體 --- 下載 FPGA 程式

關機關閉 FPLC 軟體 --- eM_USB 模組電源拔掉 --- 拔掉電腦 USB 接頭 ---關掉

電腦

如果以上順序有亂可能造成 USB 找不到驅動造成無法下載經過幾次測試還是

無法下載建議重新啟動電腦主機按照正確步驟操作

72

FPGA 下載操作

進入 FPLC 操作系統按照下列步驟選擇節點模組與下載 bit FPGA 檔案

在 VHDLDEMO 子目錄下您可以選擇您目前 FPGA 種類型號在此型號下我們已將 VHDL

與數位邏輯設計課本範例全部放於此處

73

光纖網路連線 FPGA 下載操作

首先利用光纖線將 eM_USB0 模組光纖輸出埠接至 eM_USB1 模組光纖輸入埠以此

類推最後再將最後 eM_USBN 模組光纖輸出埠接至 eM_USB0 模組光纖輸入埠配置

如附圖方式

個人電腦(Windows) eM_USB模組

0USB

eM_USB模組1

光纖網路

eM_USB模組2

eM_USB模組N

配置完成後進入 FPLC 系統首先必須先將 Node00 下載在 testASM 子目錄裡

piDSPv0bit 檔讓 eM_USB0 模組 FPGA 具備 DSP 功能才能執行光纖網路通訊

操作如下

此時您就可以選擇分別下載至各模組 FPGA 檔 bit

74

安裝 FPLC 注意事項

當您進入 FPLC 時

按 FILE 選擇 programhellip 選擇檔案為 exp_dcmplc 出現下面畫面

正常顯示畫面為

75

DOS 環境操作

在 PC 端的操作是在 Windows 環境中的 DOS 視窗中執行指令範例如下

eFPGA progNETbit 下載 FPGA電路至網路節點0(即 USB節點)中 eFPGA testLEDbit 1 下載 FPGA電路至網路節點1中

對於單一節點的控制程序如下

1將 eM_USB模組連結個人電腦的 USB端 2eM_USB模組開機 3執行下載指令即可 eFPGA xxxxbit 4若要更改 FPGA電路只要重新執行下載指令即可

對於多個網路節點的控制程序如下

1第一組 eM_USB模組連結個人電腦的 USB端再以光纖網路依序其他各節點 2連接 USB界面者為模組0從光纖發射端連接出去的模組為1依此類推 3將所有 eM_USB模組開機 4執行下載指令如下 eFPGA progNETbit 模組0必須先下載指定的 FPGA電路 eFPGA xxxxbit 1 再依序下載其他網路模組的 FPGA電路 eFPGA yyyybit 2 eFPGA zzzzbit 最後再重新下載模組0的 FPGA電路 5換句話說模組0必須先執行 progNETbit讓光纖網路接受 FPGA控制後才能透過光纖網路下載至其他節點等全部網路節點下載完畢後再將模組0的 FPGA重新下載讓模組0也可自由執行任意的 FPGA電路

6若要更改某一個網路節點中的 FPGA電路只要重新執行下述指令 eFPGA progNETbit 模組0必須先下載指定的 FPGA電路 eFPGA yyyybit 2 下載指定網路模組的 FPGA電路 eFPGA zzzz bit 最後再重新下載模組0的 FPGA電路 換句話說除非模組0中的 FPGA已經包括光纖網路管理電路否則一定要先在

模組0中下載網路管理電路後才能下載指定網路節點的 FPGA電路

76

光纖網路通訊 FPGA 發展系統

系統配置

光纖網路通訊 FPGA 發展系統的系統配置圖如下

個人電腦(Windows) eM_USB模組

0USB

eM_USB模組1

光纖網路

eM_USB模組2

eM_USB模組N

其中

1基本模組為 eM_USB模組可用 USB界面和個人電腦連線並提供 USB對光纖網路的轉換功能使得個人電腦可以獨立控制光纖網路中的每個網路節點

2eM_USB模組也可以作為光纖網路中的網路節點透過光纖網路而接受個人電腦的

監控 3就個人電腦而言不論是 USB界面直接連結或是以光纖網路間接連結的 eM_USB模組都是可以直接監控的網路節點最多可以同時控制一個 USB節點和 30個網路節點

4對於每一個網路節點個人電腦都可執行 eM_USB模組中 FPGA的電路下載工作並在適當的 FPGA電路配合下可執行 eM_USB模組中 FPGA內部電路的讀寫控制 5透過適當的 FPGA電路設計各網路節點都可透過光纖網路和其他任何網路節點

作同步通訊執行 FPGA內部記憶體的資料交換資料交換頻率可達 1KHz以上

77

網路模組配置

每個網路模組的標準配置圖如下

eM_USB模組光纖網路

USB eM_FPGA卡

eM_DEMO模組

eM_EXP實驗模組

DC電源

其中

1網路模組以 eM_USB模組為主提供基本的 USB界面和光纖網路連線 2eM_USB模組中的 FPGACPLD採用插卡型式可選擇不同的 eM_FPGA卡包括

eM_2V1K卡可選用 Virtex系列的 XC2V250和 XC2V1000 eM_3S1K卡可選用 Spartan3系列的 XC3S400XC3S1000和 XC3S1500 eM_3S50卡可選用 Spartan3系列的 XC3S50XC3S200和 XC3S400 eM_95XL卡可選用 9500XL系列的 XC95144XL和 XC95288XL 3eM_USB模組中的對外連線有兩種一種是 26P接頭用以連接既有的各種實驗模

組另一種是兩組 50P接頭將 FPGA中各接腳引出用以連接專題實驗 4eM_DEMO模組就是插上 50P接頭的教學模組其中包括 LED 數字顯示和 44鍵盤也具備兩組的 ADC和兩組的 DAC接頭提供類比訊號的測試工具

常用的實驗組合包括

1精簡組合包括(eM_USB+eM_FPGA)提供基本的網路節點適用於專題實驗 2標準組合包括(eM_USB+eM_FPGA+eM_DEMO)提供基礎 FPGA設計的教學實驗

3實驗組合包括(eM_USB+eM_FPGA+eM_DEMO+eM_EXP)提供進階的 FPGA實驗可依需求選用不同的實驗模組

78

eM_USB 模組

eM_USB 模組的電路配置圖如下

TxRx

DCPower

USB

JP2

JP3

光纖界面

外加電源

PC連線

JP1

eM_FPGA模組

FT232 CPLD FlashROM

SRAM

10cm

6cm

JP4

其中

1對外的連線接頭包括 DC電源 可選擇單電源(5V)或是多電源(5V+12V-12V)兩種 USB界面 直接連接個人電腦 光纖界面連接光纖網路 2實驗界面包括 JP1負責內部 CPLD的電路下載 JP2JP3兩組 50P的擴張用接頭 JP4 標準 26P接頭用以連接各種實驗模組 3內部的電路配置包括 A以 SO-DIMM接頭連接各種 eM_FPGA卡 B內附 EEPROMFlashROM和 SRAM提供 FPGA作應用測試 C以一顆 FT232BM作為 USB界面解碼而以一顆 CPLD作為光纖網路解碼 D提供各種 eM_FPGA卡的電路下載功能 4內附五顆 LED由上而下依序為 usbLED指示 USB界面的讀寫狀態 tstLED可由 FPGA電路自行定義 stsLED可由 FPGA電路自行定義 RxLED 可由 FPGA電路自行定義 TxLED 可由 FPGA電路自行定義

79

外部接腳定義

外部接頭的接點順序圖示如下

上視圖

JP11 9 JP4

126225

JP31

50249

JP21

50249

而各接頭的接點定義如下

JP1 JP4 JP2 JP3 1+33V 1+12V 2+12V 1 GND 2 GND 1 GND 2 GND 2GND 3 ADC 4 DAC 3POWER 4ALARM 3 +5V 4 +5V 3nc 5 yPB2 6 yPB3 5RxNET 6TxNET 5+12V 6+12V 4TCK 7 yPB1 6 yPB4 7RxUSB 6TxUSB 7-12V 6-12V 5nc 9 yPB0 10yPB5 9RxCAN 10TxCAN 9 ADC 10 DAC 6TDO 11yPB6 12yPB7 11P0D0 12P0D1 11P1D0 12P1D1 7TDI 13yGND 14yPC3 13P0D2 14P0D3 13P1D2 14P1D3 8nc 15yPC2 16yPC1 15P0D4 16P0D5 15P1D4 16P1D5 9TMS 17yPC0 18yPA0 17P0D6 18P0D7 17P1D6 18P1D7 19yPA1 20yPA2 19P0D8 20P0D9 19P1D8 20P1D9 21yPA3 22GND 21P0D10 22P0D11 21P1D10 22P1D11 23GND 24+5V 23P0D12 24P0D13 23P1D12 24P1D13 25+5V 26nc 25P0D14 26P0D15 25P1D14 26P1D15 27P2D0 28P2D1 27PxA0 28PxA1 29P2D2 30P2D3 29PxA2 30PxA3 31P2D4 32P2D5 31PxA4 32PxA5 33P2D6 34P2D7 33PxA6 34PxA7 35P2D8 36P2D9 35PxB0 36PxB1 37P2D10 38P2D11 37PxB2 38PxB3 39P2D12 40P2D13 39PxB4 40PxB5 41P2D14 42P2D15 41PxB6 42PxB7 43ADC0 44ADC1 43PxC0 44PxC1 45ADC2 46ADC3 45PxC2 46PxC3 47ADC4 48ADC5 47PxC4 48PxC5 49DAC0 50DAC1 49PxC6 50PxC7

80

eM_FPGA 模組

在各種 eM_FPGA 模組中FPGA 對外電路的標準配置圖如下

24576MHz

FlashROM

26PSRAM

EEPROM

mD[8]

yPA[4]

FPGACPLD

mA[19]mRDmWRmCSeeCKeeCSeeDIeeDO

光纖界面 RxNETTxNET

USB 界面 RxUSBTxUSBCLK24MPOWERALARM

LED

tstLEDstsLEDRxLEDTxLED

yPB[8]yPC[4]

ADCDAC

ADC[8]

實驗模組

ADC[2]

DAC[2]

xPA[4]

xPB[8]

xPC[4]

基礎實驗

其中

1FPGACPLD可以選擇下述幾種 XC2V250XC2V1000 採用 eM_2V1K模組其中 FPGA為 FG456包裝 XC3S400XC3S1000XC3S1500採用 eM_3S1K模組其中 FPGA為 FG456包裝 XC3S400XC3S1000XC3S1500採用 eM_3S1K模組其中 FPGA為 FG456包裝 XC3S50XC3S200XC3S400 採用 eM_3S50模組其中 FPGA為 TQ144包裝 XC95144XLXC95288XL 採用 eM_95XL模組其中 CPLD為 TQ144包裝 2採用 FG456包裝者可以控制所有的 IO界面 3採用 TQ144包裝者只是不能控制 RAM和 FlashROM而可以控制其他所有的界面 4所有 FPGA模組都可自由選擇由 USB界面或是由光纖界面下載電路但是 CPLD模組只能固定由 USB界面下載電路

5所有 FPGACPLD模組都可透過 26P接頭連接既有的各種實驗模組

81

FPGA 接腳對照表

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

mD0 XD6 mD0 A17 C13 -- -- mD1 XD7 mD1 B17 D12 -- -- mD2 XD8 mD2 C17 D11 -- -- mD3 XD9 mD3 D17 C11 -- -- mD4 XD10 mD4 E17 D10 -- -- mD5 XD11 mD5 E16 C10 -- -- mD6 XD12 mD6 E14 D9 -- -- mD7 XD13 mD7 E13 D7 -- -- mA0 XD14 mA0 D13 C7 -- -- mA1 XD15 mA1 C13 D6 -- -- mA2 XA0 mA2 V5 C3 -- -- mA3 XA1 mA3 U5 C4 -- -- mA4 XA2 mA4 Y2 D3 -- -- mA5 XA3 mA5 Y1 D4 -- -- mA6 XA4 mA6 V4 E3 -- -- mA7 XA5 mA7 V3 E4 -- -- mA8 XA6 mA8 W2 F3 -- -- mA9 XA7 mA9 W1 F4 -- -- mA10 XA8 mA10 T2 G6 -- -- mA11 XA9 mA11 T1 K3 -- -- mA12 XA10 mA12 R4 K10 -- -- mA13 XA11 mA13 R3 L3 -- -- mA14 XA12 mA14 R2 L4 -- -- mRD XRD mRD R1 D5 -- -- mWR XWR mWR P6 C6 -- --

POWER P0A0 POWER B4 B20 P1 P5 ALARM P0A1 ALARM A4 A19 P2 P6 RxNET P0A2 RxNET C4 B19 P4 P7 TxNET P0A3 TxNET C5 A18 P5 P9 RxUSB P0B0 RxUSB B5 A15 P6 P10 TxUSB P0B1 TxUSB A5 B15 P7 P11 RxCAN P0B2 RxCAN D6 A14 P8 P12 RxCAN P0B3 TxCAN C6 B14 P10 P13

CLK24M CLK24M CLK24M E12 B12 P124 P38

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

PWM0H P3A0 P0D0 E6 A8 P21 P23 PWM0L P3A1 P0D1 E5 B8 P23 P24 PWM1H P3A2 P0D2 C2 B6 P24 P25 PWM1L P3A3 P0D3 C1 A5 P25 P26 PWM2H P3A4 P0D4 D2 B5 P26 P27

82

PWM2L P3A5 P0D5 D1 A4 P27 P28 PWMenb P3A6 P0D6 E4 B4 P28 P30 PHT1Z P3A7 P0D7 E3 A3 P30 P31 PHT1A P3B0 P0D8 G2 C1 P31 P32 PHT1B P3B1 P0D9 G1 C2 P32 P33 PHT0A P3B2 P0D10 H5 D1 P33 P34 PHT0B P3B3 P0D11 J6 D2 P35 P35 AMP0 P3B4 P0D12 H4 E1 P36 P39 AMP1 P3B5 P0D13 H3 E2 P40 P40 AMP2 P3B6 P0D14 H2 F2 P41 P41 AMP3 P3B7 P0D15 H1 G1 P44 P43 eeSK P0C3 P1D0 C10 B9 P20 P22 eeCS P0C2 P1D1 D10 A9 P18 P21 eeDI P0C1 P1D2 F10 B10 P17 P20 eeDO P0C0 P1D3 E10 B11 P15 P19 ssCK P0B7 P1D4 E8 A11 P14 P17 ssCS P0B6 P1D5 E7 A12 P13 P16 ssDI P0B5 P1D6 A6 B13 P12 P15 ssDO P0B4 P1D7 B6 A13 P11 P14

ppCLK P3C0 P1D8 K4 G2 P46 P44 ppDIN P3C1 P1D9 K3 K1 P47 P45 TxD P3C2 P1D10 K2 K2 P50 P46 RxD P3C3 P1D11 K1 L1 P51 P48

tstLED P3C4 P1D12 L5 L2 P52 P49 stsLED P3C5 P1D13 L4 M1 P53 P50 RxLED P3C6 P1D14 L3 M2 P55 P51 TxLED P3C7 P1D15 L2 N1 P56 P52

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

xPA0 P2A0 P2D0 AA3 N2 P59 P53 xPA1 P2A1 P2D1 Y4 T1 P60 P54 xPA2 P2A2 P2D2 AA4 T2 P63 P56 xPA3 P2A3 P2D3 AB4 U2 P68 P57 xPC0 P2A4 P2D4 W5 V1 P69 P58 xPC1 P2A5 P2D5 Y5 V2 P70 P59 xPC2 P2A6 P2D6 AA5 W1 P73 P60 xPC3 P2A7 P2D7 AB5 W2 P74 P61

-- P2B0 P2D8 V6 Y1 P76 P64 -- P2B1 P2D9 V7 Y2 P77 P66 -- P2B2 P2D10 W6 AA3 P78 P68

mCS P2B3 P2D11 Y6 AB4 P79 P69 mA15 P2B4 P2D12 V9 AA4 P80 P70 mA16 P2B5 P2D13 V10 AB5 P82 P71 mA17 P2B6 P2D14 W10 AA5 P83 P74 mA18 P2B7 P2D15 Y10 AA6 P84 P75 CS0 P2C0 ADC0 AA10 AB8 P85 P76

83

SDIN0 P2C1 ADC1 AB10 AA8 P86 P77 CS1 P2C2 ADC2 U10 AB9 P87 P78

SDIN1 P2C3 ADC3 U11 AA9 P89 P79 SCLK P2C4 ADC4 V11 AB10 P90 P80 CS2 P2C5 ADC5 W11 AA10 P92 P81

SDOUT P2C6 ADC6 Y11 AB11 P93 P82 LDAC P2C7 ADC7 AA11 AA11 P95 P83

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

xPB0 P1A0 PxA0 M1 M3 P135 P85 xPB1 P1A1 PxA1 M2 M4 P132 P86 yPB2 P1A2 PxA2 M3 N3 P131 P87 yPB3 P1A3 PxA3 M4 N4 P130 P88 yPB1 P1A4 PxA4 M5 T4 P129 P91 yPB4 P1A5 PxA5 M6 T5 P128 P92 yPB0 P1A6 PxA6 N1 U3 P127 P93 yPB5 P1A7 PxA7 N2 U4 P125 P94 yPB6 P1B0 PxB0 U13 V3 P119 P95 yPB7 P1B1 PxB1 V13 V4 P118 P96 xPB2 P1B2 PxB2 W13 W3 P116 P97 xPB3 P1B3 PxB3 Y13 W4 P113 P98 xPB4 P1B4 PxB4 AA13 Y3 P112 P100 xPB5 P1B5 PxB5 AB13 Y4 P96 P101 yPC3 P1B6 PxB6 U12 Y5 P97 P102 yPC2 P1B7 PxB7 V12 W5 P98 P103 yPC1 P1C7 PxC0 AB17 W11 P108 P113 yPC0 P1C6 PxC1 AA17 Y11 P107 P112 yPA0 P1C5 PxC2 Y17 W10 P105 P111 yPA1 P1C4 PxC3 W17 Y10 P104 P110 yPA2 P1C3 PxC4 AB18 W9 P103 P107 yPA3 P1C2 PxC5 AA18 W8 P102 P106 xPB6 P1C1 PxC6 Y18 W6 P100 P105 xPB7 P1C0 PxC7 W18 Y6 P99 P104

84

eM_DEMO 模組

eM_DEMO 模組的電路配置圖如下

eM_USB 模組

數字型 LED

0 1 2 34 5 6 78 9 A BC D E F

燈號型 LED

44 鍵盤

ADC0 ADC1 DAC0 DAC1

LED 選擇KEY 選擇

其中

1eM_DEMO模組的基本功能包括 A將 xPAxPBxPC等 16個 IO訊號引出控制 LED和鍵盤電路 B將 ADDA訊號引出並放大成+-10V的工作範圍 2LED和鍵盤可以選擇三種模式由 LED和 KEY 兩組開關作選擇圖示如下

模式1

0123

模式2 模式3

0 1 2 34 5 6 78 9 A BC D E F

0123

3模式14鍵輸入並搭配 16點的 LED燈號顯示其中 16點 LED分別對映到 xPA[0~3]xPB[0~7]和 xPC[0~3] 4組按鍵分別對映到 xPC[0~3] 4模式24鍵輸入並搭配四個 7段式數字顯示其中 數字顯示由 xPA[0~3]作數字掃瞄而由 xPB[0~7]作 7段式 LED控制 4組按鍵 分別對映到 xPC[0~3] 5模式316鍵輸入並搭配四個 7段式數字顯示其中 數字顯示由 xPA[0~3]作數字掃瞄而由 xPB[0~7]作 7段式 LED控制 16組按鍵由 xPA[0~3]作鍵盤掃瞄而由 xPC[0~3]作鍵盤讀取 6根據VHDL與數位邏輯設計的章節其中 第 1章至 10章的實驗採用模式1而 第 11章實驗採用模式2而 第 12章之後的實驗都採用模式3

85

FPGA UCF 定義

eM_3S1K 模組

NET CLK LOC = B12

NET XAlt0gt LOC = N2

NET XAlt1gt LOC = T1

NET XAlt2gt LOC = T2

NET XAlt3gt LOC = U2

NET XBlt0gt LOC = M3

NET XBlt1gt LOC = M4

NET XBlt2gt LOC = W3

NET XBlt3gt LOC = W4

NET XBlt4gt LOC = Y3

NET XBlt5gt LOC = Y4

NET XBlt6gt LOC = W6

NET XBlt7gt LOC = Y6

NET XClt0gt LOC = V1

NET XClt1gt LOC = V2

NET XClt2gt LOC = W1

NET XClt3gt LOC = W2

NET YAlt0gt LOC = W10

JP4 接頭

NET YAlt1gt LOC = Y10

NET YAlt2gt LOC = W9

NET YAlt3gt LOC = W8

NET YBlt0gt LOC = U3

NET YBlt1gt LOC = T4

NET YBlt2gt LOC = N3

NET YBlt3gt LOC = N4

NET YBlt4gt LOC = T5

NET YBlt5gt LOC = U4

NET YBlt6gt LOC = V3

NET YBlt7gt LOC = V4

NET YClt0gt LOC = Y11

NET YClt1gt LOC = W11

NET YClt2gt LOC = W5

NET YClt3gt LOC = Y5

在光碟片中 RFFPGAVHDLDEMOBIT3S1K 裡有 VHDL 與數位邏輯設計書本範例原始檔與合成檔

86

eM_3S50 模組

NET CLK LOC = P124

NET XAlt0gt LOC = P59

NET XAlt1gt LOC = P60

NET XAlt2gt LOC = P63

NET XAlt3gt LOC = P68

NET XBlt0gt LOC = P135

NET XBlt1gt LOC = P132

NET XBlt2gt LOC = P116

NET XBlt3gt LOC = P113

NET XBlt4gt LOC = P112

NET XBlt5gt LOC = P96

NET XBlt6gt LOC = P100

NET XBlt7gt LOC = P99

NET XClt0gt LOC = P69

NET XClt1gt LOC = P70

NET XClt2gt LOC = P73

NET XClt3gt LOC = P74

NET YAlt0gt LOC = P105

JP4 接頭

NET YAlt1gt LOC = P104

NET YAlt2gt LOC = P103

NET YAlt3gt LOC = P102

NET YBlt0gt LOC = P127

NET YBlt1gt LOC = P129

NET YBlt2gt LOC = P131

NET YBlt3gt LOC = P130

NET YBlt4gt LOC = P128

NET YBlt5gt LOC = P125

NET YBlt6gt LOC = P119

NET YBlt7gt LOC = P118

NET YClt0gt LOC = P107

NET YClt1gt LOC = P108

NET YClt2gt LOC = P98

NET YClt3gt LOC = P97

在光碟片中 RFFPGAVHDLDEMOBIT3S200 裡有VHDL與數位邏輯設計書本範例原始檔與合成檔

87

eM_95XL 模組

NET CLK LOC = SPIN38

NET XAlt0gt LOC = SPIN53

NET XAlt1gt LOC = SPIN54

NET XAlt2gt LOC = SPIN56

NET XAlt3gt LOC = SPIN57

NET XBlt0gt LOC = SPIN85

NET XBlt1gt LOC = SPIN86

NET XBlt2gt LOC = SPIN97

NET XBlt3gt LOC = SPIN98

NET XBlt4gt LOC = SPIN100

NET XBlt5gt LOC = SPIN101

NET XBlt6gt LOC = SPIN105

NET XBlt7gt LOC = SPIN104

NET XClt0gt LOC = SPIN58

NET XClt1gt LOC = SPIN59

NET XClt2gt LOC = SPIN60

NET XClt3gt LOC = SPIN61

NET YAlt0gt LOC = SPIN111

JP4 接頭

NET YAlt1gt LOC = SPIN110

NET YAlt2gt LOC = SPIN107

NET YAlt3gt LOC = SPIN106

NET YBlt0gt LOC = SPIN93

NET YBlt1gt LOC = SPIN91

NET YBlt2gt LOC = SPIN87

NET YBlt3gt LOC = SPIN88

NET YBlt4gt LOC = SPIN92

NET YBlt5gt LOC = SPIN94

NET YBlt6gt LOC = SPIN95

NET YBlt7gt LOC = SPIN96

NET YClt0gt LOC = SPIN112

NET YClt1gt LOC = SPIN113

NET YClt2gt LOC = SPIN103

NET YClt3gt LOC = SPIN102

在光碟片中 RFFPGAVHDLDEMOSVF95288XL 裡有VHDL與數位邏輯設計書本範例原始檔與合成

檔案

88

eM_FPGA 模組

NET CLK LOC = E12

NET XAlt0gt LOC = AA3

NET XAlt1gt LOC = Y4

NET XAlt2gt LOC = AA4

NET XAlt3gt LOC = AB4

NET XBlt0gt LOC = M1

NET XBlt1gt LOC = M2

NET XBlt2gt LOC = W13

NET XBlt3gt LOC = Y13

NET XBlt4gt LOC = AA13

NET XBlt5gt LOC = AB13

NET XBlt6gt LOC = Y18

NET XBlt7gt LOC = W18

NET XClt0gt LOC = W5

NET XClt1gt LOC = Y5

NET XClt2gt LOC = AA5

NET XClt3gt LOC = AB5

NET YAlt0gt LOC = Y17

JP4 接頭

NET YAlt1gt LOC = W17

NET YAlt2gt LOC = AB18

NET YAlt3gt LOC = AA18

NET YBlt0gt LOC = N1

NET YBlt1gt LOC = M5

NET YBlt2gt LOC = M3

NET YBlt3gt LOC = M4

NET YBlt4gt LOC = M6

NET YBlt5gt LOC = N2

NET YBlt6gt LOC = U13

NET YBlt7gt LOC = V13

NET YClt0gt LOC = AA17

NET YClt1gt LOC = AB17

NET YClt2gt LOC = V12

NET YClt3gt LOC = U12

在光碟片中 RFFPGAVHDLDEMOBIT2V250 裡有VHDL與數位邏輯設計書本範例原始檔與合成檔

89

Page 29: RFFPGA 直流馬達實驗手冊juniortek.com.tw/program/manual/RF-DC-mal.pdf · em_demo模組 em_dcm 直流伺服馬達 dc電源 rffpga 系統的直流馬達實驗規劃 其中包括:

sτ+1

KmVc ωKp+sKd

err

P控制器 直流馬達

θc

轉角回授

+-

s1 θ Kx

ANG轉角量測

其中

1直接以量測結果為控制目標將全系統還原成標準的單位回授控制 2所有的非線性或失真現象都進入開環路討論屬於可以補償的部分 3但是控制結果就是「量測上的轉角」而「物理學上的轉角」

量測誤差的問題

轉角θ

量測ANG

對於量測誤差而言最明顯的問題就是量化誤差圖示如下

其中

1以 DCM模組中的光電盤為例精度為每圈 500格經由乘四解碼計數後其等效

精度增加為每圈 2000格 2比(12000)圈更精密的部分都無法響應換句話說振幅越大的控制其相對誤差越

小而振幅越小的控制其相對誤差越大例如 當振幅為(12)圈時其控制誤差量為 01而 當振幅為(120)圈時其控制誤差量為 1 這是標準的的非線性現象

量化誤差不只影響穩態上的精度還會造成非線性的震動問題圖示如下

t

誤差值

+1

-1

其中

1由於量化誤差的問題只有當誤差超過+1或是-1時才會真正偵測到誤差也才

29

會施加控制量作補償 2所以穩態時的誤差將在+1-1之間擺動造成微幅的振動 3量化誤差越大震動越明顯而量化誤差很小時通常不易察覺出震動現象

微分量的計算

伺服系統中有兩處需要用到微分計算包括

1PD控制器中誤差微分量的計算 2速度控制器中速度回授值的量測

在理論上微分公式是(dXdt)相當於 dXdt = (X(n)-X(n-1))DT (當 DT趨近於 0時)

所以當微分計算中的抽樣週期(DT)越短時微分的計算值將越接近理論值但是事實上

卻非如此以下圖為例

t

X

DTDX

其中

1當 X值為等速度運動時其微分量就是其斜率相當於 DXDT 2DT是微分計算中的抽樣週期理論上越短越好但是由於 DX本身的量化誤差

使得這個原則不再成立例如當斜率為 7394時 若 DT=1000則 DX=7394而 DXDT=7394 若 DT=100 則 DX=739 而 DXDT=739 若 DT=10 則 DX=73 而 DXDT=73 若 DT=1 則 DX=7 而 DXDT=7 3換句話說當抽樣週期越短時DX的量化誤差將越明顯而造成微分計算上更嚴

重的誤差

在 DCM 模組中速度量測的量化誤差分析如下

1馬達上的光電盤精度為每圈 500格經過乘四解碼後等效精度為每圈 2000格 2當馬達轉速為 1200RPM而抽樣頻率為 1KHz時對映的速度量測值為 1200(圈分)2000(格圈)60(秒分)1000(DT秒) = 40(格DT) 3換句話說1200RPM的轉速對映到 40的速度量測值即速度單位=30RPM若最

高轉速為 3000RPM則在+-3000RPM的速度範圍內其量化誤差為 05相當於8-bit的 ADC轉換器精度

4對映不同的抽樣頻率的量化誤差表列如下

30

光電盤精度 最高轉速 抽樣頻率 速度單

速度範圍 量化誤差

500PPR 3000RPM 1KHz 30RPM +-100 05 500PPR 3000RPM 2KHz 60RPM +-50 1 500PPR 3000RPM 4KHz 120RPM +25 2

過溢現象的處理

輸入

輸出

32767

-32768

整數運算都有數值範圍限制以 16-bit 整數而言輸入輸出的關係如下

其中

1當超過正負數的上下限時數值會正負顛倒例如 +32768 將會視為 -32768作處理而 +32769 將會視為 -32768作處理依此類推 2換句話說16-bit的整數運算只有在+-32767之間是線性的對映關係而超過這個範圍就是非線性的對映關係

3不但如此還因為正負顛倒的現象使得原來設計的負回授控制將變為正回授控制

而產生非線性的震盪現象 4換句話說只要計算上稍一不慎就會使得原先穩定的系統產生不穩定的震盪結果

為了避免過溢現象所造成的不穩定問題通常控制系統中會利用飽和處理作改善圖示

如下

輸入

輸出

lmtH

lmtL

31

其中

1當超過計算的上限時將固定設為上限值處理而當超過計算的下限時也將固定

設為下限值處理 2這時的整數運算只有在上下限之間是線性的對映關係而超過這個範圍將還是非線

性的對映關係 3雖然如此但是因為沒有正負顛倒的現象所以不再會有負回授變為正回授的問題

而避免了非線性的震盪現象 4換句話說飽和處理是針對過溢現象的妥協處理方案雖然不完全理想但是是可

接受的最佳選擇

下面是對映的組合語言範例

RD x x為輸入端 MIN lmtH 取得 x和 lmtH中的較小值即是作上限保護的工作 MAX lmtL 取得 x和 lmtL中的較大值即是作下限保護的工作 WR y Y為輸出端 其中

1組合語言中提供MAX和MIN的計算其中 MIN lmtH 比較 AX暫存器和 lmtH而將較低值存入 AX暫存器中 MAX lmtL 比較 AX暫存器和 lmtH而將較高值存入 AX暫存器中 2所以直接可用MIN指令作上限保護而以MAX指令作下限保護兩者合併後即是

完整的飽和處理結果

飽和處理通常應用在高位數轉成低位數的場合例如32-bit轉換成16-bit或是16-bit

轉換成 12-bit 等等例如在本實驗中所有的運算都是以 16-bit 整數作處理但是到

PWM 驅動級輸出時卻要轉換成 12-bit精度的 PWM 命令所以必須先用飽和處理以避免

過溢現象造成的不穩定問題

32

61 實驗 1-開迴路的電壓控制 實驗說明以電壓直接控制轉速的開迴路特性可簡化為一階系統處理方塊圖如

sτ+1

v km ωm

其中V 送給驅動器的 PWM電壓命令

ωm馬達的轉動速度可由處理 photo encoder信號所得的位置微分而得 km一階系統的穩態增益 τ一階系統的時間常數即步階響應中的上升時間

為了觀測直流馬達的開環路特性建立下面的測試方塊圖

其中

1所使用的模組包括 FG1方波產生器產生所需的步階測試波形 FT1馬達模擬以一階系統的低通濾波器來執行 IO1光電盤的回授處理可同時取得轉角和速度的量測值 IO2PWM電壓驅動直接驅動直流馬達作控制 Led四位數字七段顯示模組顯示波形信號資料 2測試目標有兩項(P 參數設定欄)包括 A調整方波命令控制直流馬達作開環路的 PWM電壓控制 B調整馬達模擬參數使模擬結果和實驗結果相符以確認開環路特性

33

實驗畫面顯示如下

測試一 開環路的電壓控制 記錄頻道 CH1電壓命令Y1=-300DY=500 CH2模擬速度Y2=-100DY=500 CH3馬達速度Y3=100DY=50 CH4馬達轉角Y4=300DY=50000 實驗參數 FG1kAMP=256電壓命令的測試振幅 FG1kFRQ=150電壓命令的測試頻率 FT1DT =10 馬達模擬參數 FT1KA =500馬達模擬參數

其中

1用示波器功能記錄四個頻道其中 CH2和 CH3重疊顯示以比較模擬速度和量測

速度之間的差異 2由於 Km 不等於 1所以必須調整 CH3的 Y軸單位才能使得 CH2和 CH3的穩態響應部分重疊

3實驗時可以改變 FG1的參數以調整測試方波的振幅和頻率 4可以調整 FT1的參數使得 CH2和 CH3的暫態響應部分重疊

根據實際的測試結果分析如下

2馬達模擬的參數調整到 DT=10而 KA=500根據公式 τ = 40961000dtka 所以上升時間(τ)為 0082秒或是 82ms 3CH2CH3的 Y軸單位並不一致顯然 Km 不等於 1經計算確認 Km=0098

對應之 plc檔程式說明(exp_pwmplc) echo off 畫面顯示開始

run dsp 0 選擇 DSP1

run stop run reset 既有程式停止

run testDCMmem 下載指定程式

das 1 ampfg1out 0 1024 PWM 波形 Volt 設定 DAS 頻道1

das 2 ampft1lp 0 1024 馬達模擬 Volt 設定 DAS 頻道2

das 3 ampio1spd 0 1024 馬達速度 Volt 設定 DAS 頻道3

das 4 ampio1ang 0 1024 馬達角度 Volt 設定 DAS 頻道4

plot select 0 設定示波器頁數

plot xunit 100000 0 設定示波器 X軸

plot yunit 1 500 -300 設定示波器 Y1 軸

34

plot yunit 2 500 -100 設定示波器 Y2 軸

plot yunit 3 50 100 設定示波器 Y3 軸

plot yunit 4 50000 300 設定示波器 Y4 軸

plot trigger 1 0 1 10 設定示波器觸發

plot scope 9 1 2 3 4 設定示波器顯示

module io2 設定 io2 模組

s cmd ampfg1out

module fg1 設定 fg1 模組

s kAmp 256 s kFrq 150

module ft1 設定 ft1 模組

s u ampfg1out s dt 10 s ka 500

module io3 設定 io3 模組

s led ampfg1out

module 回復預設模組

run 1khz 設定抽樣頻率為 4KHz

run start DSP 開始執行

das stop pause 1 DAS 啟動 das start DAS 啟動

echo on 回復正常訊息顯示

使用者可視情況調整一階濾波器的 ka和 dt值使得 ch2和 ch3 兩組波形完全相符

以求得開迴路系統近似的一階轉移函數 CAI操控設計畫面規劃如下(EXP_PWMCAI) page 1 畫面設計

35

page 2 畫面設計 page 3 畫面設計

36

實測響應圖

訊 號 說 明 訊 號 說 明 ch1 方波產生器訊號 ch3 一階濾波器輸出信號 ch2 馬達角速度訊號 ch4 馬達角位置訊號

直流馬達之開迴路電壓控制響應圖

37

以邏輯分析功能觀測直流馬達之光電盤輸入與 PWM輸出信號

38

62 實驗 2-閉迴路的速度控制 實驗說明為了觀測閉迴路的速度控制響應建立下面的測試方塊圖

加入 PD控制後系統閉迴路的轉移函數經適度的簡化仍能約略以一階系統

處理方塊圖如下

sτ+1

u km ωm

其中

u 送給控制器的速度命令

ωm馬達的轉動速度可由處理 photo encoder 信號所得的位置微分而得

km一階系統的穩態增益 τ一階系統的時間常數即步階響應中的上升時間

方塊圖中的模組功能說明如下

1用 fg1 產生測試用的方波速度命令

2將方波速度命令和速度回授訊號送到 PD 控制器方塊中產生電壓控制訊號再透

過 io2 模組將訊號送出給伺服介面

3用 ft1 建立對照用的一階系統可用 IIR1濾波器方塊產生

4將方波命令產生速度命令再觀測 PHT(io1)上的速度值 spd

5調整 IIR1濾波器的參數使得兩組波形完全相符這時 IIR1濾波器就是閉迴路

速度控制的特性其中 km 為增益而τ為上升時間(單位為 sec)

6增益 km 可從示波器中作簡單計算而上升時間(τ=40964000dtka)

7 Led四位數字七段顯示模組顯示波形信號資料

39

對應之 plc檔程式說明(exp_speedplc) echo off 畫面顯示開始

run dsp 0 選擇 DSP1

run stop run reset 既有程式停止

run testDCMmem 下載指定程式

das 1 ampfg1out 0 1024 PWM 波形 Volt 設定 DAS 頻道1

das 2 ampft1lp 0 1024 馬達模擬 Volt 設定 DAS 頻道2

das 3 ampio1spd 0 1024 馬達速度 Volt 設定 DAS 頻道3

das 4 ampio1ang 0 1024 馬達角度 Volt 設定 DAS 頻道4

plot select 0 設定示波器頁數

plot xunit 100000 0 設定示波器 X軸

plot yunit 1 50 -300 設定示波器 Y1 軸

plot yunit 2 50 -100 設定示波器 Y2 軸

plot yunit 3 50 100 設定示波器 Y3 軸

plot yunit 4 50000 300 設定示波器 Y4 軸

plot trigger 1 0 1 10 設定示波器觸發

plot scope 9 1 2 3 4 設定示波器顯示

module io2 設定 io2 模組

s cmd ampcn2out

module fg1 設定 fg1 模組

s kAmp 50 s kFrq 150

module cn2 設定 cn1 模組

s cmd ampfg1out s fdk ampio1spd s kp 0x4000

module ft1 設定 ft1 模組

s u ampfg1out s dt 2 s ka 320

module io3 設定 io3 模組

s led ampfg1out

module 回復預設模組

run 1khz 設定抽樣頻率為 4KHz

run start DSP 開始執行

das stop pause 1 DAS 啟動 das start DAS 啟動

echo on 回復正常訊息顯示

CAI操控設計畫面規劃如下(EXP_speedCAI)

40

page 1 畫面設計 page 2 與 page 3 畫面設計與實驗一 page 2 與 page 3相同畫面 page 4 畫面設計

41

方塊的參數設定 使用者可視情況調整一階濾波器的 ka和 dt值使得 ch2和 ch3 兩組波形完全相符

以求得此一閉迴路系統近似的一階轉移函數或調整 PD控制器中的 kp和 kp值以調整系統之響應 實測響應圖

訊 號 說 明 訊 號 說 明 ch1 方波產生器產生之速度命令 ch3 一階濾波器輸出信號 ch2 馬達角速度訊號 ch4 馬達角位置訊號

42

直流馬達之閉迴路速度控制響應圖

43

63 實驗 3-閉迴路的位置控制 實驗說明為了觀測閉迴路的位置控制響應將直流馬達的回授改為位置訊號

建立下面的測試方塊圖 方塊圖中的模組功能說明如下

1用 fg1產生測試用的方波位置命令 2將方波位置命令和位置回授訊號送到 PD控制器方塊中產生電壓控制訊號再透過 io2模組將訊號送出到伺服介面驅動馬達轉動

對應之 plc檔程式說明(exp_angleplc) echo off 畫面顯示開始

run dsp 0 選擇 DSP1

run stop run reset 既有程式停止

run testDCMmem 下載指定程式

das 1 ampfg1out 0 1024 PWM 波形 Volt 設定 DAS 頻道1

das 2 ampft1lp 0 1024 馬達模擬 Volt 設定 DAS 頻道2

das 3 ampio1spd 0 1024 馬達速度 Volt 設定 DAS 頻道3

das 4 ampio1ang 0 1024 馬達角度 Volt 設定 DAS 頻道4

plot select 0 設定示波器頁數

plot xunit 100000 0 設定示波器 X軸

plot yunit 1 1000 -300 設定示波器 Y1 軸

plot yunit 2 1000 -100 設定示波器 Y2 軸

plot yunit 3 20 100 設定示波器 Y3 軸

plot yunit 4 1000 300 設定示波器 Y4 軸

plot trigger 1 0 1 10 設定示波器觸發

44

plot scope 9 1 2 3 4 設定示波器顯示

module io2 設定 io2 模組

s cmd ampcn2out

module fg1 設定 fg1 模組

s kAmp 1000 s kFrq 75

module cn2 設定 cn1 模組

s cmd ampfg1out s fdk ampio1ang s kp 0x300 s kd 0x4000

module ft1 設定 ft1 模組

s u ampfg1out s dt 2 s ka 320

module io3 設定 io3 模組

s led ampfg1out

module 回復預設模組

run 1khz 設定抽樣頻率為 4KHz

run start DSP 開始執行

das stop pause 1 DAS 啟動 das start DAS 啟動

echo on 回復正常訊息顯示

CAI操控設計畫面規劃如下(EXP_angleCAI) page 1 畫面設計

45

page 2 與 page 3 畫面設計與實驗一 page 2 與 page 3相同畫面 page 4 畫面設計與實驗二 page 4 畫面 方塊的參數設定 延續上一實驗的說明使用者可以調整 PD控制器中的 kp和 kd值以調整系統之

響應 實測響應圖

訊 號 說 明 訊 號 說 明 ch1 方波產生器產生之位置命令 ch3 馬達角速度訊號 ch2 馬達角位置 ch4 Pd控制器輸出之電壓訊號

46

直流馬達之閉迴路位置控制響應圖

47

64 實驗 4-加減速的位置控制 實驗說明為避免方波命令的過於嚴苛在方波命令的輸出加入一加減速控制功

能方塊以減緩命令變化的幅度增加馬達運動的平順建立的測試方塊圖如下

方塊圖中的模組功能說明如下

1用 fg1產生測試用的方波位置命令 2將方波位置命令送到加減速控制方塊處理後產生新的位置命令再將新的位置命

令與位置回授訊號送到 PD控制器方塊中產生電壓控制訊號最後透過 io2模組將訊號送出到伺服介面驅動馬達轉動

對應之 plc檔程式說明(exp_accplc) echo off 畫面顯示開始

run dsp 0 選擇 DSP1

run stop run reset 既有程式停止

run testDCMmem 下載指定程式

das 1 ampfg1out 0 1024 PWM 波形 Volt 設定 DAS 頻道1

das 2 ampcn1out 0 1024 加速控制 Volt 設定 DAS 頻道2

das 3 ampio1spd 0 1024 馬達速度 Volt 設定 DAS 頻道3

das 4 ampio1ang 0 1024 馬達角度 Volt 設定 DAS 頻道4

plot select 0 設定示波器頁數

plot xunit 100000 0 設定示波器 X軸

plot yunit 1 2000 -300 設定示波器 Y1 軸

plot yunit 2 2000 -100 設定示波器 Y2 軸

plot yunit 3 50 100 設定示波器 Y3 軸

plot yunit 4 2000 300 設定示波器 Y4 軸

48

plot trigger 1 0 1 10 設定示波器觸發

plot scope 9 1 2 3 4 設定示波器顯示

module io2 設定 io2 模組

s cmd ampcn2out

module fg1 設定 fg1 模組

s kAmp 2000 s kFrq 150

module cn1 設定 cn1 模組

s cmd ampfg1out

module cn2 設定 cn2 模組

s cmd ampcn1out s fdk ampio1ang s kp 0x300 s kd 0x4000

module ft1 設定 ft1 模組

s u ampfg1out s dt 2 s ka 320

module io3 設定 io3 模組

s led ampfg1out

module 回復預設模組

run 1khz 設定抽樣頻率為 4KHz

run start DSP 開始執行

das stop pause 1 DAS 啟動 das start DAS 啟動

echo on 回復正常訊息顯示

CAI操控設計畫面規劃如下(EXP_accCAI) page 1 畫面設計

49

page 2 畫面設計與實驗一 page 2相同畫面 page 3 畫面設計與實驗二 page 4相同畫面

參數設定參考之前各實驗的說明可線上機動性的調整 PD控制器中的 kp和 kd值以調整系統之響應 實測響應圖

訊 號 說 明 訊 號 說 明 ch1 方波產生器產生之位置命令 ch3 馬達角位置 ch2 加減速模組輸出之位置命令 ch4 馬達角速度訊號

50

圖一 直流馬達經加減速控制後之閉迴路控制響應圖

51

65 實驗 5-正弦波的位置控制 實驗說明在本實驗中改變命令的波形由方波改變為正弦波並建立如下的測

試方塊圖與上一實驗相比較僅更改命令的波形產生方塊 方塊圖中的模組功能說明如下 1用 fg2產生測試用的弦波位置命令 2將弦波位置命令送到加減速控制方塊處理後產生新的位置命令再與 io1 讀入的位

置回授訊號送到 PD 控制器方塊中產生電壓控制訊號再透過 io2 模組將訊號送出到伺服介面驅動馬達轉動

對應之 plc檔程式說明(exp_sinplc) echo off 畫面顯示開始

run dsp 0 選擇 DSP1

run stop run reset 既有程式停止

run testDCMmem 下載指定程式

das 1 ampfg2out 0 1024 SIN 波形 Volt 設定 DAS 頻道1

das 2 ampcn1out 0 1024 加速控制 Volt 設定 DAS 頻道2

das 3 ampio1spd 0 1024 馬達速度 Volt 設定 DAS 頻道3

das 4 ampio1ang 0 1024 馬達角度 Volt 設定 DAS 頻道4

plot select 0 設定示波器頁數

plot xunit 100000 0 設定示波器 X軸

plot yunit 1 2000 -300 設定示波器 Y1 軸

plot yunit 2 2000 -100 設定示波器 Y2 軸

plot yunit 3 50 100 設定示波器 Y3 軸

plot yunit 4 2000 300 設定示波器 Y4 軸

plot trigger 1 0 1 10 設定示波器觸發

52

plot scope 9 1 2 3 4 設定示波器顯示

module io2 設定 io2 模組

s cmd ampcn2out

module fg2 設定 fg1 模組

s kAmp 2000 s kFrq 100

module cn1 設定 cn1 模組

s cmd ampfg2out

module cn2 設定 cn2 模組

s cmd ampcn1out s fdk ampio1ang s kp 0x300 s kd 0x4000

module ft1 設定 ft1 模組

s u ampfg2out s dt 2 s ka 320

module io3 設定 io3 模組

s led ampfg2out

module 回復預設模組

run 1khz 設定抽樣頻率為 4KHz

run start DSP 開始執行

das stop pause 1 DAS 啟動 das start DAS 啟動

echo on 回復正常訊息顯示

CAI操控設計畫面規劃如下(EXP_sinCAI) page 1 畫面設計

53

page 2 畫面設計 page 3 畫面設計與實驗二 page 4相同畫面

方塊的參數設定可調整 PD控制器中的 kp和 kd值以調整系統之響應 實測響應圖

訊 號 說 明 訊 號 說 明 ch1 弦波產生器產生之位置命令 ch3 馬達角位置訊號 ch2 加減速模組輸出之位置命令 ch4 馬達角速度訊號

54

直流馬達之閉迴路弦波加減速位置控制響應圖

55

7組合語言說明

本節將針對 DC馬達伺服控制實驗專用的程式模組進行功能與程式碼的說明其

有關於波形產生器與資料擷取模組等說明如下

SIN_waveasm 正弦波產生器 PWM_waveasm 方波產生器 IIR1_filterasm 一階濾波器 DAS4asm 資料蒐集模組

弦波產生器

此模組會產生週期性的正弦波方塊圖如下

outfrq

kBiasbias

ampkAmp

kFrqth

kThf=1TB

θ

A

其中

1正弦波有四個參數振幅(A)頻率(F)相位(θ)和偏移(B)其公式為 out = A sin(2πF t +θ) + B 2對於單純的正弦波產生器所對映的參數包括 kAmp 振幅值 kFrq 頻率值kFrq=655368000Hz其中 Hz的範圍為 0~4000例如 1000Hz =gt frq=8192 100Hz =gt frq=819 10Hz =gt frq=82 1Hz =gt frq=8 kTh 相角值0~255代表 0~360的相位當 th=0 時為正弦波 th=64 時為餘弦波 th=128時為反相波依此類推 kBias偏移值 3對於可調變的正弦波產生器其對映的輸入點為 amp 控制振幅的輸入點可產生調幅(AM)波形 frq 控制頻率的輸入點可產生調頻(FM)波形 th 控制相位的輸入點可產生調相(PM)波形 bias控制偏移的輸入點可產生雙頻混波(相加)波形 4若不使用調變功能時各個輸入點時的預設值為 amp 指向 kAmp 的位址 frq 指向 kFrq 的位址

56

th 指向 kTh 的位址 bias指向 kBias的位址

模組程式範例SIN_WAVEasm

local amp R0 IP kAmp 輸入點sin波的振幅 local frq R1 IP kFrq 輸入點sin波的頻率 local th R2 IP kTh 輸入點sin波的相角 local bias R3 IP kBias 輸入點sin波的中心偏移 local out R4 OP 輸出點sin波輸出 local tab R5 TP 表格指標指向 sin[256]的表格 local ang R6 內部變數相位角65536=360deg local kAmp R7 1000 參數振幅值 local kFrq R8 1000 參數頻率值=655368000Hz local kTh R9 0 參數相角值360deg=256 local kBias R10 0 參數偏移值 data 11 模組變數區長度及初值 initial 啟動程序 WR ang0 WR out0 ang=out=0 RET timer 即時控制程序(8KHz) RD ang ADD (frq) WR ang ang+=frq SFR 8 ADD (th) AND 255 ACC=sin(ang256+th) ADD tab WRH RDM table-look-up MUL (amp) SFR 12 ADD (bias) WR out out=ACCamp4096+bias RET table tab 256 sin[256]表格區10=4096 0 101 201 301 401 501 601 700 00~070deg 799 897 995 1092 1189 1285 1380 1474 08~0F 1567 1660 1751 1842 1931 2019 2106 2191 10~17 2276 2359 2440 2520 2598 2675 2751 2824 18~1F 2896 2967 3035 3102 3166 3229 3290 3349 20~27 3406 3461 3513 3564 3612 3659 3703 3745 28~2F 3784 3822 3857 3889 3920 3948 3973 3996 30~37 4017 4036 4052 4065 4076 4085 4091 4095 38~3F 4096 4095 4091 4085 4076 4065 4052 4036 40~4790deg 4017 3996 3973 3948 3920 3889 3857 3822 48~4F 3784 3745 3703 3659 3612 3564 3513 3461 50~57 3406 3349 3290 3229 3166 3102 3035 2967 58~5F

57

2896 2824 2751 2675 2598 2520 2440 2359 60~67 2276 2191 2106 2019 1931 1842 1751 1660 68~6F 1567 1474 1380 1285 1189 1092 995 897 70~77 799 700 601 501 401 301 201 101 78~7F 0 65435 65335 65235 65135 65035 64935 64836 80~87180deg 64737 64639 64541 64444 64347 64251 64156 64062 88~8F 63969 63876 63785 63694 63605 63517 63430 63345 90~97 63260 63177 63096 63016 62938 62861 62785 62712 98~9F 62640 62569 62501 62434 62370 62307 62246 62187 A0~A7 62130 62075 62023 61972 61924 61877 61833 61791 A8~A8 61752 61714 61679 61647 61616 61588 61563 61540 B0~B7 61519 61500 61484 61471 61460 61451 61445 61441 B8~BF 61440 61441 61445 61451 61460 61471 61484 61500 C0~C7270deg 61519 61540 61563 61588 61616 61647 61679 61714 C8~CF 61752 61791 61833 61877 61924 61972 62023 62075 D0~D7 62130 62187 62246 62307 62370 62434 62501 62569 D8~DF 62640 62712 62785 62861 62938 63016 63096 63177 E0~E7 63260 63345 63430 63517 63605 63694 63785 63876 E8~EF 63969 64062 64156 64251 64347 64444 64541 64639 F0~F7 64737 64836 64935 65035 65135 65235 65335 65435 F8~FF

就程式結構而言說明如下

timer 即時控制程序(8KHz) RD ang ADD (frq) WR ang ang+=frq SFR 8 ADD (th) AND 255 ACC=sin(ang256+th) ADD tab WRH RDM table-look-up MUL (amp) SFR 12 ADD (bias) WR out out=ACCamp4096+bias RET

1基本上我們以查表法計算 sin()其輸入θ的範圍為 0~255對映到 0~360deg其輸出 sin(θ)的範圍為+-4096對映到+-10的範圍

2建立一個內部變數 ang其範圍為 0~65535對映到 0~360的相位角 3每個timer程序都執行 ang+=frq的動作更新目前的相位角接著依照 ang的相位角查表得到 sin(ang256+th)值

4由於表格長度為 256-word所以必須將 ang256才能得到正確的對映關係而 th範圍為 0~255所以不需要像 ang一般的做額外處理

5sin()的範圍為(+1-1)而在表格中以(+4096~-4096)的型式記錄相當於 10=4096所以執行 Asin()時還要用 SFR12指令做4096的動作才能正確的取得輸出值

58

6就頻率輸入 frq而言其計算原則是將θ=ωt轉化成θ=Σ(ωdt)因為抽樣頻率

為 8KHz所以 dt=18000而得到 frq=655368000Hz公式其中 Hz為真正的頻率在 8KHz的抽樣頻率下其範圍為 0~4000

鋸齒波產生器

此模組會產生週期性的鋸齒波方塊圖如下

outfrq

kBiasbias

ampkAmp

kFrqth

kThf=1TB

θ

A

其中

1鋸齒波也有四個參數振幅(A)頻率(F)相位(θ)和偏移(B)和正弦波的定義完全一致唯一的差異是其輸出為鋸齒波而非正弦波

2基本波形是從週期開始時為 0一直遞增到週期結束時到達最高點然後立刻回歸

到 0重新開始 3以程式結構而論鋸齒波程式幾乎就是正弦波的相位計算部分只差沒有正弦波的

查表處理而已

模組程式範例SAW_WAVEasm

local amp R0 IP kAmp 輸入點sin波的振幅 local frq R1 IP kFrq 輸入點sin波的頻率 local th R2 IP kTh 輸入點sin波的相角 local bias R3 IP kBias 輸入點sin波的中心偏移 local out R4 OP 輸出點sin波輸出 local ang R5 內部變數相位角65536=360deg local kAmp R6 1000 參數振幅值 local kFrq R7 1000 參數頻率值=655368000Hz local kTh R8 0 參數相角值360deg=256 local kBias R9 0 參數偏移值 data 11 模組變數區長度及初值 initial 啟動程序 WR ang0 WR out0 ang=out=0 RET timer 即時控制程序(8KHz) RD ang ADD (frq) WR ang ang+=frq SFR 8 ADD (th) AND 255 ACC=(ang256+th)amp0x00ff MUL (amp) SFR 8 ADD (bias) WR out out=ACCamp256+bias

59

RET

脈衝波產生器

outfrq

kBiasbias

ampkAmp

kFrqth

kThf=1TB

θ

A

pwm

kDutyduty

此模組會產生週期性的脈衝波方塊圖如下

其中

1脈衝波有五個參數其中振幅(A)頻率(F)相位(θ)和偏移(B)四個參數和正弦波

定義完全一樣另外再增加一個負載率(D) 2基本波形是從週期開始時為 1隔段時間後換為 0然後持續到週期結束再重新開始其中 1所佔有的比例就是負載率當 D=0時為 0而 D=255時為 100

3和其他參數類似負載率(D)以 duty為其輸入點而以 kDuty為其參數值

模組程式範例PLS_WAVEasm

local amp R0 IP kAmp 輸入點脈衝波的振幅 local frq R1 IP kFrq 輸入點脈衝波的頻率 local th R2 IP kTh 輸入點脈衝波的相角 local bias R3 IP kBias 輸入點脈衝波的中心偏移 local duty R4 IP kDuty 輸入點脈衝波的負載率 local out R5 OP 輸出點脈衝波輸出 local ang R6 內部變數相位角65536=360deg local kAmp R7 1000 參數振幅值 local kFrq R8 1000 參數頻率值=655368000Hz local kTh R9 0 參數相角值360deg=256 local kBias R10 0 參數偏移值 local kDuty R11 128 參數負載率100 =256 data 12 模組變數區長度及初值 initial 啟動程序 WR ang0 WR out0 ang=out=0 RET timer 即時控制程序(8KHz)

60

RD ang ADD (frq) WR ang ang+=frq SFR 8 ADD (th) AND 255 ACC=(ang256+th)amp0x00ff SUB (duty) RD (amp) JLT t1 RD 0 ACC=(amp0) t1 ADD (bias) WR out out=ACC+bias RET

IIR 一階濾波器

此模組執行一階的 IIR濾波器方塊圖如下

kau x

Z-1

+

+

-

+低通濾波器

高通濾波器dx lp

hp

濾波器參數的計算公式如下

1假設濾波器的頻寬為 hz則 ωn=hz628 2若系統頻率為 8KHz則抽樣週期 dT為 dT=dt8000 其中 dt為模組參數 3則濾波器參數為 ka=ωndT4096或是 =hzdt62880004096即 =hzdt32 4當 dt決定後所允許的訊號頻寬為(4000dt)換句話說訊號頻寬會因為 dt增加而下降

為了方便實驗的運用下面列出常用的參數對照表

濾波頻寬

(Hz)

10 20 50 100 200 500 1000 2000

訊號頻寬

(Hz)

400 800 2000 4000 4000 4000 4000 4000

模組參數 dt 10 5 2 1 1 1 1 1

模組參數 ka 320 320 320 320 640 1600 3200 6400

表格的運用方式如下

1首先決定濾波頻寬 2接著查表找出對映的參數 dt和 ka 3再查表得到對映的訊號頻寬以決定是否需要串接前級濾波器

61

模組程式範例IIR1_FILTERasm

local u R0 IP 輸入點濾波器輸入 local lp R1 OP 輸出點低通濾波器輸出 local hp R2 OP 輸出點高通濾波器輸出 local dt R3 1 參數抽樣週期 local ka R4 4096 參數增益 ka10=4096 local prd R5 內部變數抽樣週期用 data 6 模組變數區長度 initial 開機啟動程序 WR lp0 WR hp0 WR prd1 RET lp=hp=0prd=1 timer 即時控制程序 SUB prd1 JNZ b9 if (--prdgt0) return RD dt WR prd prd=dt RD (u) SUB lp WR hp hp=u-lp MUL ka SFR 12 ADD lp WR lp lp+=(hpka4096) b9 RET

資料蒐集模組

資料蒐集模組是一個非常特殊的模組專門配合 eTTY 程式中的示波器使用

模組程式範例DAS4asm

local cmd R0 0 紀錄命令0=停止1=前置記錄2=正觸發4=負觸發6=觸發記錄 local dt R1 1 抽樣週期每 dT抽樣一次 local tab R2 TP DAS表格啟始位址 local cnt R3 0 目前記錄點(0~255) local ch1 R4 0 定義頻道1的變數位址 local ch2 R5 0 定義頻道2的變數位址 local ch3 R6 0 定義頻道3的變數位址 local ch4 R7 0 定義頻道4的變數位址 local trg R8 0 定義觸發頻道的變數位址 local th R9 0 觸發準位 local tail R10 0 觸發後的抽樣個數 local buf R11 1 抽樣計數(1~dt) local pnt R12 表格位址計算pnt=tab+cnt4 local len R13 表格長度計算(0~256) data 14 定義模組變數區的長度 table tab 1024 定義表格的長度 initial 啟動程序 WR cmd0 RET cmd=0 timer 控制程序

62

ADD cmd0 JZ t9 if (cmd==0) return SUB buf1 JNZ t9 if (--buf)gt0) return RD dt WR buf dt=buf RD cnt ADD 1 AND 0xff WR cnt cnt=(cnt+1)amp0xff SFL 2 ADD tab WR pnt pnt=tab+cnt4 RD (ch1) WR (pnt) ADD pnt1 pnt++=ch1 RD (ch2) WR (pnt) ADD pnt1 pnt++=ch2 RD (ch3) WR (pnt) ADD pnt1 pnt++=ch3 RD (ch4) WR (pnt) pnt =ch4 RD cmd SUB 1 JZ t9 SUB 1 JZ t2 SUB 1 JZ t3 SUB 1 JZ t4 SUB 1 JZ t5 SUB 1 JZ t6 JR t7 t2 RD (trg) SUB th JGE t9 ADD cmd1 JR t9 wait trgltth t3 RD (trg) SUB th JLE t9 JR t6 wait trggtth t4 RD (trg) SUB th JLE t9 ADD cmd1 JR t9 wait trggtth t5 RD (trg) SUB th JGE t9 JR t6 wait trgltth t6 WR len0 WR cmd7 len=0cmd=7 t7 ADD len1 SUB tail JLT t9 WR cmd0 if ((++len)gt=0x80) cmd=0 t9 RET

與 DC 馬達控制相關的程式模組有以下 4個程式模組說明如下

(1)加減速控制模組 ACC_controlasm (2)光電盤輸入模組 POS_inputasm (3)PWM輸出模組 PWM_outputasm (4)PD控制模組 PD_controlasm

71加減速控制模組 此程式模組主要功能在於執行位置控制的加減速命令修正其數學模式採用 Lynn

濾波器的架構參見下圖

cmd

2

+

old Z -1

-

Z -1

Z -1

Z-1

Z-1x0 x1 x8 x9 x16

+ -

++

2

Z-1

Z-1 y1 y2

+

-

y0

+ +

sumZ-1

+164

12

out

dif

+

63

加減速控制模組方塊圖

其中

1Lynn 濾波器的階數固定成八階也就是 m=8其公式為 H(z) = (1-2Z-m+Z-2m)(1-2Z-1+Z-2)m2

2因為m=8所以m2=64因此最後計算低通濾波的部份時要先做除 64的運算 3因為低通濾波(lp)和 y0之間有 64倍的差異代表 y0y1y2的變化範圍比濾波器輸

入值要擴大許多例如輸入值在+-1000變化時y0y1y2很可能會在+-64000之間變化這範圍已經超出整數處理的範圍很可能會造成錯誤的計算結果

4所以在實驗時輸入值的變化範圍必須控制在+-500之間以保證計算的正確性 5對於 Lynn 濾波器當 m=8時其濾波器的頻寬固定為 1 kHzmdt也就是 dt=1時頻寬為 125 Hz dt=2時頻寬為 625Hz依此類推 6對於 Lynn 濾波器其濾波器的延遲固定為 m個抽樣週期因此設計 hp = x8 - lp 即可得到高通濾波器的對應結果 7其中乘 2和除 64的運算以移位運算取代所以整個程式中並無任何乘法運算 8Lynn 濾波器本身並不是穩定濾波器所以在程式啟動時必須確實的將所有狀態

(x0~x16)歸零否則會產生不穩定的狀態輸出

因為 Lynn濾波器中所有參數固定所以除了抽樣週期 dt 之外並無任何可調參數

抽樣週期 dt 可以控制頻寬dt 越大則濾波器頻寬越低

將步階命令值的輸出送入 Lynn 濾波器中經由低通濾波器的效應可以減緩命

令的變化程度達到加減速控制的目的以下為使用 Lynn 濾波器型式實現加減速控

制的組合語言程式列印 如欲更進一步瞭解 Lynn 濾波器與 FIR 數位濾波器之間的關係可以參考通訊實驗

四數位濾波器設計(FIR)中之說明

ACC_controlasm程式列印 local cmd R0 IP 輸入點位置命令

local out R1 OP 輸出點加減速處理後的位置命令

local dif R2 OP 輸出點位置微分命令

local axis R3 0 馬達編號0=X1=Y2=Z3=C

local old R4 內部變數微分計算用

local sumL R5 內部變數積分計算用

local sumH R6 內部變數積分計算用

local y0 R7 內部變數y(0~2)

local y1 R8 local y2 R9

local x0 R10 內部變數x(0~16)

local x1 R11 local x2 R12 local x3 R13 local x4 R14

local x5 R15 local x6 R16 local x7 R17 local x8 R18

local x9 R19 local x10 R20 local x11 R21 local x12 R22

local x13 R23 local x14 R24 local x15 R25 local x16 R26

64

data 27 模組變數區長度

initial 開機啟動程序

WR dif0 RD (cmd) WR out WR old dif=0 out=old=cmd

sumHL=cmd64

SFL 6 WR sumL RD out SFR 10 SGN 5 WR sumH

RPT 17 WR x00 RPT 3 WR y00 RET x[0~16]=0y[0~2]=0

timer 即時控制程序

RD (cmd) SUBX old WR x0 x0=cmd-old old=cmd

SUB x81 ADD x16 ADD y11 SUB y2 WR y0 y0=x0-2x8+x16+2y1-y2

SGN ADD sumL WR sumL RDH ADC sumH WR sumH sumHL+=y0

WRH RD sumL SFR 6 WR out out=sumHL64

RD y0 SGN SFR WR dif dif=y032mm

RD x0 RPT 16 RDX x1 x[i]=x[i-1] i=1~16

RD y0 RDX y1 WR y2 y[i]=y[i-1] i=1~2

b9 RET

72光電盤輸入模組

DC馬達的位置由光電盤量測之預設儲存於 0xac與 0xbe二個輸入埠位址中其中位址 0xac記錄 X軸馬達的位置位址 0xbe記錄 Y軸馬達的位置由於本實驗的DC馬達接在 Y軸的位置上因此程式中直接選用 Y軸的輸入 光電盤位置輸入的程式列印如下其中速度由位置的差分而得至於馬達的位置

則使用內部 2個 word加以記錄精度為 32位元 POS_inputasm程式列印 local spd R0 OP 輸出點速度量測值

local ang R1 OP 輸出點角度量測值

local angH R2 內部變數角度的 32 位元部分

local mode R3 0x308 模式選擇15MHzAB 相正反向輸入

local pht R4 0xac 輸入阜地址光電盤輸入(0xac)

local phtc R5 0xbe 輸入阜地址光電盤模式(0xbe)

local old R6 內部變數速度更新用

data 7 模組變數區長度

initial 開機啟動程序

RD mode WR (phtc) phtc=mode

RD (pht) WR old WR spd0 RET old=phtspd=0

timer 即時控制程序

RD (pht) SUBX old SGN 11 WR spd spd=(pht-old)old=pht

65

ADD ang WR ang angHL+=spd

RDH ADC angH WR angH

RET

73 PWM輸出控制模組 模組方塊

cmd PWM輸出

程式說明 1在開機時將切換保護時間寫到輸出阜 0xbc上其中切換保護值為 0~6360=5us 2在每次 timer interrupt時將 cmd訊號處理後寫到輸出阜 0xb8上

PWM_outputasm程式列印 local cmd R0 IP gnd 輸入點v相命令

local gain R1 4096 參數輸出增益1=4096

local bias R2 2048 參數輸出偏壓0=2048

local limit R3 4095 參數輸出極限1=4095

local zone R4 0x88f0 參數頻率=12KHz切換保護=5us

local pwm R5 0xb8 輸出阜地址PWM0 輸出(0xb8)

local mode R6 0xbc 輸出阜地址PWM 模式(0xbc)

local p0md R7 0xf8 輸出阜地址port0 模式(0xf8)

local gnd R8 0 輸入接地點

data 9 模組變數區長度

initial 開機啟動程序

RD bias WR (pwm) pwm=bias

RD 0xffff WR (p0md) set port0 mode

RD zone WR (mode) RET mode=zone

stop 關機保護程序

RD bias WR (pwm) RET pwm=bias

timer 即時控制程序

RD (mode) xor 1 and 1 WR (mode) trigger watch-dog

RD (cmd) MUL gain SFR 12 ADD bias ACC=(cmdgain4096)+bias

MAX 0 MIN limit WR (pwm) pwm=limit(ACC)

RET

66

74 PD 控制模組

PD控制的模組方塊參見圖二十一所示其中比例控制的部份直接由增益 kp加以調整微分控制的部份則由誤差的差分經增益 kd的調整而得

Σ+

-

cmd

fdk

err out

Σ

pk

dk

Σ

+

+

+

-

old1minusZ

PD控制器的方塊圖

PD_controlasm程式列印 local cmd R0 IP gnd 輸入點位置命令(可忽略)

local fdk R1 IP gnd 輸入點位置回授(可忽略)

local out R2 OP 輸出點用以控制速度迴路

local kp R3 256 參數增益 kp10=256

local kd R4 0 參數增益 kd10=256

local err R5 0 內部變數

local old R6 0 內部變數

local gnd R7 0 無輸入時的短路點

data 8 模組變數區長度

initial 開機啟動程序

WR out0 WR old0 RET out=old=0

timer 即時控制程序

RD (cmd) SUB (fdk) PRTF WR err

MUL kp SFR 8 P=(cmd-fdk)kp256

RDS err SUBX old MUL kd SFR 8 D=(err-old)kd256

ADDS

WR out out=P+D

RET

程式中預設增益值的 10以整數值 256為基底因此使用 SFR 8的指令加以調

整另外在在計算微分項的程式部份用到 SUBX old的指令其詳細的暫存器動作如

下 參考 piDSP的指令說明SUBX指令將總共用到 3個時序參考錯誤 找不到參照

67

來源在時序 1時將原先 AX的資料拷貝一份到 HX中時序 2時正式執行減

法的動作所以 AX暫存器中的內容會變成 err-old時序 3時DSP會將存放在 HX暫存器中的內容拷貝一份到 old的記憶體中也就是經由 SUBX此一精簡指令將

同時完成計算差分所需要的相減與資料疊代的動作有效的利用 piDSP控制器 DSP核心的精簡指令將可以大幅提昇系統的計算速度

HX AXoldSUBXerr err

old

err

errerr olderr minus

1_err

errerr olderr minus err

1_err

1

2

3

SUBX的指令時序與暫存器變化

68

8附錄快速安裝說明

光纖網路通訊 FPGA 發展系統 (適用於 WIN-XP200098 系統)

快速安裝說明

26Pin 負載輸出入埠

雙電源︵5

12

伏︶輸入埠

單電源︵5

伏︶輸入埠

USB

光纖線輸

號 光纖線輸出埠

入 傳 埠

首先將光碟片 RFFPGA 目錄檔案拷貝在您工作硬碟裡面

第一次安裝時先將 USB 傳輸線接上電腦主機將電源供應器接上 FPGA 模組此時電

腦會出現安裝 USB-Serial 驅動程式選擇從清單安裝此驅動程式放置在光碟片

RFFPGA-USBdrive 選擇您目前安裝系統

可選擇 WIN-98WIN-MEWIN-2000WIN-XP 系統配合您現在工作電腦作業系統

69

注意一般電腦 USB 埠很多插口當您安裝驅動程式時是配合您當時插入之埠

下次如您插入不同接口埠時電腦會再次要求安裝驅動程式這是正常現象請再次安

裝驅動程式否則無法使用

FPLC 操作

首先進入 RFFPGA裡子目錄 testASM直接點選 fPLCexe 出現下面操作畫面(也可直接將

此檔案放置桌面直接點選)

(或者選擇 File 再執行 Setuphellip 選擇您要執行 CAI 檔)

70

進入下面操作畫面 首先使用滑鼠在 FPGA下載按鈕單擊動作使 FPGA變成 DSP晶片 實驗一至實驗五皆為使用 DSP組合語言設計程式其原始程式分別為 testASM1至testASM5可使用 texPad 開啟與編輯程式內容 實驗三與實驗五多有 IO控制動作 當選擇實驗三時出現下面畫面

71

eM_USB 模組

數字型 LED

0 1 2 34 5 6 78 9 A BC D E F

燈號型 LED

44 鍵盤

ADC0 ADC1 DAC0 DAC1

LED 選擇KEY 選擇

模 式 1

0123

注意操作畫面 3與 4 說明開關與按鍵選擇位置後選擇程式下載再按程式啟動如您

按下 0-3按鍵時燈號型 LED會有不同方向閃爍顯示程式停止時結束所有 IO控制動作再按回首頁選擇其他實驗 實驗四與實驗五

模式3

0 1 2 34 5 6 78 9 A BC D E F

按照上面開關選擇直接操作如果以上實驗皆能按照正常操作表示您光纖網路通訊

FPGA發展模組以能正常使用 注意 開機與關機動作順序如下

開機電腦啟動 --- eM_USB 模組電源接上 --- USB 接上電腦 ---

啟動 FPLC 軟體 --- 下載 FPGA 程式

關機關閉 FPLC 軟體 --- eM_USB 模組電源拔掉 --- 拔掉電腦 USB 接頭 ---關掉

電腦

如果以上順序有亂可能造成 USB 找不到驅動造成無法下載經過幾次測試還是

無法下載建議重新啟動電腦主機按照正確步驟操作

72

FPGA 下載操作

進入 FPLC 操作系統按照下列步驟選擇節點模組與下載 bit FPGA 檔案

在 VHDLDEMO 子目錄下您可以選擇您目前 FPGA 種類型號在此型號下我們已將 VHDL

與數位邏輯設計課本範例全部放於此處

73

光纖網路連線 FPGA 下載操作

首先利用光纖線將 eM_USB0 模組光纖輸出埠接至 eM_USB1 模組光纖輸入埠以此

類推最後再將最後 eM_USBN 模組光纖輸出埠接至 eM_USB0 模組光纖輸入埠配置

如附圖方式

個人電腦(Windows) eM_USB模組

0USB

eM_USB模組1

光纖網路

eM_USB模組2

eM_USB模組N

配置完成後進入 FPLC 系統首先必須先將 Node00 下載在 testASM 子目錄裡

piDSPv0bit 檔讓 eM_USB0 模組 FPGA 具備 DSP 功能才能執行光纖網路通訊

操作如下

此時您就可以選擇分別下載至各模組 FPGA 檔 bit

74

安裝 FPLC 注意事項

當您進入 FPLC 時

按 FILE 選擇 programhellip 選擇檔案為 exp_dcmplc 出現下面畫面

正常顯示畫面為

75

DOS 環境操作

在 PC 端的操作是在 Windows 環境中的 DOS 視窗中執行指令範例如下

eFPGA progNETbit 下載 FPGA電路至網路節點0(即 USB節點)中 eFPGA testLEDbit 1 下載 FPGA電路至網路節點1中

對於單一節點的控制程序如下

1將 eM_USB模組連結個人電腦的 USB端 2eM_USB模組開機 3執行下載指令即可 eFPGA xxxxbit 4若要更改 FPGA電路只要重新執行下載指令即可

對於多個網路節點的控制程序如下

1第一組 eM_USB模組連結個人電腦的 USB端再以光纖網路依序其他各節點 2連接 USB界面者為模組0從光纖發射端連接出去的模組為1依此類推 3將所有 eM_USB模組開機 4執行下載指令如下 eFPGA progNETbit 模組0必須先下載指定的 FPGA電路 eFPGA xxxxbit 1 再依序下載其他網路模組的 FPGA電路 eFPGA yyyybit 2 eFPGA zzzzbit 最後再重新下載模組0的 FPGA電路 5換句話說模組0必須先執行 progNETbit讓光纖網路接受 FPGA控制後才能透過光纖網路下載至其他節點等全部網路節點下載完畢後再將模組0的 FPGA重新下載讓模組0也可自由執行任意的 FPGA電路

6若要更改某一個網路節點中的 FPGA電路只要重新執行下述指令 eFPGA progNETbit 模組0必須先下載指定的 FPGA電路 eFPGA yyyybit 2 下載指定網路模組的 FPGA電路 eFPGA zzzz bit 最後再重新下載模組0的 FPGA電路 換句話說除非模組0中的 FPGA已經包括光纖網路管理電路否則一定要先在

模組0中下載網路管理電路後才能下載指定網路節點的 FPGA電路

76

光纖網路通訊 FPGA 發展系統

系統配置

光纖網路通訊 FPGA 發展系統的系統配置圖如下

個人電腦(Windows) eM_USB模組

0USB

eM_USB模組1

光纖網路

eM_USB模組2

eM_USB模組N

其中

1基本模組為 eM_USB模組可用 USB界面和個人電腦連線並提供 USB對光纖網路的轉換功能使得個人電腦可以獨立控制光纖網路中的每個網路節點

2eM_USB模組也可以作為光纖網路中的網路節點透過光纖網路而接受個人電腦的

監控 3就個人電腦而言不論是 USB界面直接連結或是以光纖網路間接連結的 eM_USB模組都是可以直接監控的網路節點最多可以同時控制一個 USB節點和 30個網路節點

4對於每一個網路節點個人電腦都可執行 eM_USB模組中 FPGA的電路下載工作並在適當的 FPGA電路配合下可執行 eM_USB模組中 FPGA內部電路的讀寫控制 5透過適當的 FPGA電路設計各網路節點都可透過光纖網路和其他任何網路節點

作同步通訊執行 FPGA內部記憶體的資料交換資料交換頻率可達 1KHz以上

77

網路模組配置

每個網路模組的標準配置圖如下

eM_USB模組光纖網路

USB eM_FPGA卡

eM_DEMO模組

eM_EXP實驗模組

DC電源

其中

1網路模組以 eM_USB模組為主提供基本的 USB界面和光纖網路連線 2eM_USB模組中的 FPGACPLD採用插卡型式可選擇不同的 eM_FPGA卡包括

eM_2V1K卡可選用 Virtex系列的 XC2V250和 XC2V1000 eM_3S1K卡可選用 Spartan3系列的 XC3S400XC3S1000和 XC3S1500 eM_3S50卡可選用 Spartan3系列的 XC3S50XC3S200和 XC3S400 eM_95XL卡可選用 9500XL系列的 XC95144XL和 XC95288XL 3eM_USB模組中的對外連線有兩種一種是 26P接頭用以連接既有的各種實驗模

組另一種是兩組 50P接頭將 FPGA中各接腳引出用以連接專題實驗 4eM_DEMO模組就是插上 50P接頭的教學模組其中包括 LED 數字顯示和 44鍵盤也具備兩組的 ADC和兩組的 DAC接頭提供類比訊號的測試工具

常用的實驗組合包括

1精簡組合包括(eM_USB+eM_FPGA)提供基本的網路節點適用於專題實驗 2標準組合包括(eM_USB+eM_FPGA+eM_DEMO)提供基礎 FPGA設計的教學實驗

3實驗組合包括(eM_USB+eM_FPGA+eM_DEMO+eM_EXP)提供進階的 FPGA實驗可依需求選用不同的實驗模組

78

eM_USB 模組

eM_USB 模組的電路配置圖如下

TxRx

DCPower

USB

JP2

JP3

光纖界面

外加電源

PC連線

JP1

eM_FPGA模組

FT232 CPLD FlashROM

SRAM

10cm

6cm

JP4

其中

1對外的連線接頭包括 DC電源 可選擇單電源(5V)或是多電源(5V+12V-12V)兩種 USB界面 直接連接個人電腦 光纖界面連接光纖網路 2實驗界面包括 JP1負責內部 CPLD的電路下載 JP2JP3兩組 50P的擴張用接頭 JP4 標準 26P接頭用以連接各種實驗模組 3內部的電路配置包括 A以 SO-DIMM接頭連接各種 eM_FPGA卡 B內附 EEPROMFlashROM和 SRAM提供 FPGA作應用測試 C以一顆 FT232BM作為 USB界面解碼而以一顆 CPLD作為光纖網路解碼 D提供各種 eM_FPGA卡的電路下載功能 4內附五顆 LED由上而下依序為 usbLED指示 USB界面的讀寫狀態 tstLED可由 FPGA電路自行定義 stsLED可由 FPGA電路自行定義 RxLED 可由 FPGA電路自行定義 TxLED 可由 FPGA電路自行定義

79

外部接腳定義

外部接頭的接點順序圖示如下

上視圖

JP11 9 JP4

126225

JP31

50249

JP21

50249

而各接頭的接點定義如下

JP1 JP4 JP2 JP3 1+33V 1+12V 2+12V 1 GND 2 GND 1 GND 2 GND 2GND 3 ADC 4 DAC 3POWER 4ALARM 3 +5V 4 +5V 3nc 5 yPB2 6 yPB3 5RxNET 6TxNET 5+12V 6+12V 4TCK 7 yPB1 6 yPB4 7RxUSB 6TxUSB 7-12V 6-12V 5nc 9 yPB0 10yPB5 9RxCAN 10TxCAN 9 ADC 10 DAC 6TDO 11yPB6 12yPB7 11P0D0 12P0D1 11P1D0 12P1D1 7TDI 13yGND 14yPC3 13P0D2 14P0D3 13P1D2 14P1D3 8nc 15yPC2 16yPC1 15P0D4 16P0D5 15P1D4 16P1D5 9TMS 17yPC0 18yPA0 17P0D6 18P0D7 17P1D6 18P1D7 19yPA1 20yPA2 19P0D8 20P0D9 19P1D8 20P1D9 21yPA3 22GND 21P0D10 22P0D11 21P1D10 22P1D11 23GND 24+5V 23P0D12 24P0D13 23P1D12 24P1D13 25+5V 26nc 25P0D14 26P0D15 25P1D14 26P1D15 27P2D0 28P2D1 27PxA0 28PxA1 29P2D2 30P2D3 29PxA2 30PxA3 31P2D4 32P2D5 31PxA4 32PxA5 33P2D6 34P2D7 33PxA6 34PxA7 35P2D8 36P2D9 35PxB0 36PxB1 37P2D10 38P2D11 37PxB2 38PxB3 39P2D12 40P2D13 39PxB4 40PxB5 41P2D14 42P2D15 41PxB6 42PxB7 43ADC0 44ADC1 43PxC0 44PxC1 45ADC2 46ADC3 45PxC2 46PxC3 47ADC4 48ADC5 47PxC4 48PxC5 49DAC0 50DAC1 49PxC6 50PxC7

80

eM_FPGA 模組

在各種 eM_FPGA 模組中FPGA 對外電路的標準配置圖如下

24576MHz

FlashROM

26PSRAM

EEPROM

mD[8]

yPA[4]

FPGACPLD

mA[19]mRDmWRmCSeeCKeeCSeeDIeeDO

光纖界面 RxNETTxNET

USB 界面 RxUSBTxUSBCLK24MPOWERALARM

LED

tstLEDstsLEDRxLEDTxLED

yPB[8]yPC[4]

ADCDAC

ADC[8]

實驗模組

ADC[2]

DAC[2]

xPA[4]

xPB[8]

xPC[4]

基礎實驗

其中

1FPGACPLD可以選擇下述幾種 XC2V250XC2V1000 採用 eM_2V1K模組其中 FPGA為 FG456包裝 XC3S400XC3S1000XC3S1500採用 eM_3S1K模組其中 FPGA為 FG456包裝 XC3S400XC3S1000XC3S1500採用 eM_3S1K模組其中 FPGA為 FG456包裝 XC3S50XC3S200XC3S400 採用 eM_3S50模組其中 FPGA為 TQ144包裝 XC95144XLXC95288XL 採用 eM_95XL模組其中 CPLD為 TQ144包裝 2採用 FG456包裝者可以控制所有的 IO界面 3採用 TQ144包裝者只是不能控制 RAM和 FlashROM而可以控制其他所有的界面 4所有 FPGA模組都可自由選擇由 USB界面或是由光纖界面下載電路但是 CPLD模組只能固定由 USB界面下載電路

5所有 FPGACPLD模組都可透過 26P接頭連接既有的各種實驗模組

81

FPGA 接腳對照表

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

mD0 XD6 mD0 A17 C13 -- -- mD1 XD7 mD1 B17 D12 -- -- mD2 XD8 mD2 C17 D11 -- -- mD3 XD9 mD3 D17 C11 -- -- mD4 XD10 mD4 E17 D10 -- -- mD5 XD11 mD5 E16 C10 -- -- mD6 XD12 mD6 E14 D9 -- -- mD7 XD13 mD7 E13 D7 -- -- mA0 XD14 mA0 D13 C7 -- -- mA1 XD15 mA1 C13 D6 -- -- mA2 XA0 mA2 V5 C3 -- -- mA3 XA1 mA3 U5 C4 -- -- mA4 XA2 mA4 Y2 D3 -- -- mA5 XA3 mA5 Y1 D4 -- -- mA6 XA4 mA6 V4 E3 -- -- mA7 XA5 mA7 V3 E4 -- -- mA8 XA6 mA8 W2 F3 -- -- mA9 XA7 mA9 W1 F4 -- -- mA10 XA8 mA10 T2 G6 -- -- mA11 XA9 mA11 T1 K3 -- -- mA12 XA10 mA12 R4 K10 -- -- mA13 XA11 mA13 R3 L3 -- -- mA14 XA12 mA14 R2 L4 -- -- mRD XRD mRD R1 D5 -- -- mWR XWR mWR P6 C6 -- --

POWER P0A0 POWER B4 B20 P1 P5 ALARM P0A1 ALARM A4 A19 P2 P6 RxNET P0A2 RxNET C4 B19 P4 P7 TxNET P0A3 TxNET C5 A18 P5 P9 RxUSB P0B0 RxUSB B5 A15 P6 P10 TxUSB P0B1 TxUSB A5 B15 P7 P11 RxCAN P0B2 RxCAN D6 A14 P8 P12 RxCAN P0B3 TxCAN C6 B14 P10 P13

CLK24M CLK24M CLK24M E12 B12 P124 P38

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

PWM0H P3A0 P0D0 E6 A8 P21 P23 PWM0L P3A1 P0D1 E5 B8 P23 P24 PWM1H P3A2 P0D2 C2 B6 P24 P25 PWM1L P3A3 P0D3 C1 A5 P25 P26 PWM2H P3A4 P0D4 D2 B5 P26 P27

82

PWM2L P3A5 P0D5 D1 A4 P27 P28 PWMenb P3A6 P0D6 E4 B4 P28 P30 PHT1Z P3A7 P0D7 E3 A3 P30 P31 PHT1A P3B0 P0D8 G2 C1 P31 P32 PHT1B P3B1 P0D9 G1 C2 P32 P33 PHT0A P3B2 P0D10 H5 D1 P33 P34 PHT0B P3B3 P0D11 J6 D2 P35 P35 AMP0 P3B4 P0D12 H4 E1 P36 P39 AMP1 P3B5 P0D13 H3 E2 P40 P40 AMP2 P3B6 P0D14 H2 F2 P41 P41 AMP3 P3B7 P0D15 H1 G1 P44 P43 eeSK P0C3 P1D0 C10 B9 P20 P22 eeCS P0C2 P1D1 D10 A9 P18 P21 eeDI P0C1 P1D2 F10 B10 P17 P20 eeDO P0C0 P1D3 E10 B11 P15 P19 ssCK P0B7 P1D4 E8 A11 P14 P17 ssCS P0B6 P1D5 E7 A12 P13 P16 ssDI P0B5 P1D6 A6 B13 P12 P15 ssDO P0B4 P1D7 B6 A13 P11 P14

ppCLK P3C0 P1D8 K4 G2 P46 P44 ppDIN P3C1 P1D9 K3 K1 P47 P45 TxD P3C2 P1D10 K2 K2 P50 P46 RxD P3C3 P1D11 K1 L1 P51 P48

tstLED P3C4 P1D12 L5 L2 P52 P49 stsLED P3C5 P1D13 L4 M1 P53 P50 RxLED P3C6 P1D14 L3 M2 P55 P51 TxLED P3C7 P1D15 L2 N1 P56 P52

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

xPA0 P2A0 P2D0 AA3 N2 P59 P53 xPA1 P2A1 P2D1 Y4 T1 P60 P54 xPA2 P2A2 P2D2 AA4 T2 P63 P56 xPA3 P2A3 P2D3 AB4 U2 P68 P57 xPC0 P2A4 P2D4 W5 V1 P69 P58 xPC1 P2A5 P2D5 Y5 V2 P70 P59 xPC2 P2A6 P2D6 AA5 W1 P73 P60 xPC3 P2A7 P2D7 AB5 W2 P74 P61

-- P2B0 P2D8 V6 Y1 P76 P64 -- P2B1 P2D9 V7 Y2 P77 P66 -- P2B2 P2D10 W6 AA3 P78 P68

mCS P2B3 P2D11 Y6 AB4 P79 P69 mA15 P2B4 P2D12 V9 AA4 P80 P70 mA16 P2B5 P2D13 V10 AB5 P82 P71 mA17 P2B6 P2D14 W10 AA5 P83 P74 mA18 P2B7 P2D15 Y10 AA6 P84 P75 CS0 P2C0 ADC0 AA10 AB8 P85 P76

83

SDIN0 P2C1 ADC1 AB10 AA8 P86 P77 CS1 P2C2 ADC2 U10 AB9 P87 P78

SDIN1 P2C3 ADC3 U11 AA9 P89 P79 SCLK P2C4 ADC4 V11 AB10 P90 P80 CS2 P2C5 ADC5 W11 AA10 P92 P81

SDOUT P2C6 ADC6 Y11 AB11 P93 P82 LDAC P2C7 ADC7 AA11 AA11 P95 P83

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

xPB0 P1A0 PxA0 M1 M3 P135 P85 xPB1 P1A1 PxA1 M2 M4 P132 P86 yPB2 P1A2 PxA2 M3 N3 P131 P87 yPB3 P1A3 PxA3 M4 N4 P130 P88 yPB1 P1A4 PxA4 M5 T4 P129 P91 yPB4 P1A5 PxA5 M6 T5 P128 P92 yPB0 P1A6 PxA6 N1 U3 P127 P93 yPB5 P1A7 PxA7 N2 U4 P125 P94 yPB6 P1B0 PxB0 U13 V3 P119 P95 yPB7 P1B1 PxB1 V13 V4 P118 P96 xPB2 P1B2 PxB2 W13 W3 P116 P97 xPB3 P1B3 PxB3 Y13 W4 P113 P98 xPB4 P1B4 PxB4 AA13 Y3 P112 P100 xPB5 P1B5 PxB5 AB13 Y4 P96 P101 yPC3 P1B6 PxB6 U12 Y5 P97 P102 yPC2 P1B7 PxB7 V12 W5 P98 P103 yPC1 P1C7 PxC0 AB17 W11 P108 P113 yPC0 P1C6 PxC1 AA17 Y11 P107 P112 yPA0 P1C5 PxC2 Y17 W10 P105 P111 yPA1 P1C4 PxC3 W17 Y10 P104 P110 yPA2 P1C3 PxC4 AB18 W9 P103 P107 yPA3 P1C2 PxC5 AA18 W8 P102 P106 xPB6 P1C1 PxC6 Y18 W6 P100 P105 xPB7 P1C0 PxC7 W18 Y6 P99 P104

84

eM_DEMO 模組

eM_DEMO 模組的電路配置圖如下

eM_USB 模組

數字型 LED

0 1 2 34 5 6 78 9 A BC D E F

燈號型 LED

44 鍵盤

ADC0 ADC1 DAC0 DAC1

LED 選擇KEY 選擇

其中

1eM_DEMO模組的基本功能包括 A將 xPAxPBxPC等 16個 IO訊號引出控制 LED和鍵盤電路 B將 ADDA訊號引出並放大成+-10V的工作範圍 2LED和鍵盤可以選擇三種模式由 LED和 KEY 兩組開關作選擇圖示如下

模式1

0123

模式2 模式3

0 1 2 34 5 6 78 9 A BC D E F

0123

3模式14鍵輸入並搭配 16點的 LED燈號顯示其中 16點 LED分別對映到 xPA[0~3]xPB[0~7]和 xPC[0~3] 4組按鍵分別對映到 xPC[0~3] 4模式24鍵輸入並搭配四個 7段式數字顯示其中 數字顯示由 xPA[0~3]作數字掃瞄而由 xPB[0~7]作 7段式 LED控制 4組按鍵 分別對映到 xPC[0~3] 5模式316鍵輸入並搭配四個 7段式數字顯示其中 數字顯示由 xPA[0~3]作數字掃瞄而由 xPB[0~7]作 7段式 LED控制 16組按鍵由 xPA[0~3]作鍵盤掃瞄而由 xPC[0~3]作鍵盤讀取 6根據VHDL與數位邏輯設計的章節其中 第 1章至 10章的實驗採用模式1而 第 11章實驗採用模式2而 第 12章之後的實驗都採用模式3

85

FPGA UCF 定義

eM_3S1K 模組

NET CLK LOC = B12

NET XAlt0gt LOC = N2

NET XAlt1gt LOC = T1

NET XAlt2gt LOC = T2

NET XAlt3gt LOC = U2

NET XBlt0gt LOC = M3

NET XBlt1gt LOC = M4

NET XBlt2gt LOC = W3

NET XBlt3gt LOC = W4

NET XBlt4gt LOC = Y3

NET XBlt5gt LOC = Y4

NET XBlt6gt LOC = W6

NET XBlt7gt LOC = Y6

NET XClt0gt LOC = V1

NET XClt1gt LOC = V2

NET XClt2gt LOC = W1

NET XClt3gt LOC = W2

NET YAlt0gt LOC = W10

JP4 接頭

NET YAlt1gt LOC = Y10

NET YAlt2gt LOC = W9

NET YAlt3gt LOC = W8

NET YBlt0gt LOC = U3

NET YBlt1gt LOC = T4

NET YBlt2gt LOC = N3

NET YBlt3gt LOC = N4

NET YBlt4gt LOC = T5

NET YBlt5gt LOC = U4

NET YBlt6gt LOC = V3

NET YBlt7gt LOC = V4

NET YClt0gt LOC = Y11

NET YClt1gt LOC = W11

NET YClt2gt LOC = W5

NET YClt3gt LOC = Y5

在光碟片中 RFFPGAVHDLDEMOBIT3S1K 裡有 VHDL 與數位邏輯設計書本範例原始檔與合成檔

86

eM_3S50 模組

NET CLK LOC = P124

NET XAlt0gt LOC = P59

NET XAlt1gt LOC = P60

NET XAlt2gt LOC = P63

NET XAlt3gt LOC = P68

NET XBlt0gt LOC = P135

NET XBlt1gt LOC = P132

NET XBlt2gt LOC = P116

NET XBlt3gt LOC = P113

NET XBlt4gt LOC = P112

NET XBlt5gt LOC = P96

NET XBlt6gt LOC = P100

NET XBlt7gt LOC = P99

NET XClt0gt LOC = P69

NET XClt1gt LOC = P70

NET XClt2gt LOC = P73

NET XClt3gt LOC = P74

NET YAlt0gt LOC = P105

JP4 接頭

NET YAlt1gt LOC = P104

NET YAlt2gt LOC = P103

NET YAlt3gt LOC = P102

NET YBlt0gt LOC = P127

NET YBlt1gt LOC = P129

NET YBlt2gt LOC = P131

NET YBlt3gt LOC = P130

NET YBlt4gt LOC = P128

NET YBlt5gt LOC = P125

NET YBlt6gt LOC = P119

NET YBlt7gt LOC = P118

NET YClt0gt LOC = P107

NET YClt1gt LOC = P108

NET YClt2gt LOC = P98

NET YClt3gt LOC = P97

在光碟片中 RFFPGAVHDLDEMOBIT3S200 裡有VHDL與數位邏輯設計書本範例原始檔與合成檔

87

eM_95XL 模組

NET CLK LOC = SPIN38

NET XAlt0gt LOC = SPIN53

NET XAlt1gt LOC = SPIN54

NET XAlt2gt LOC = SPIN56

NET XAlt3gt LOC = SPIN57

NET XBlt0gt LOC = SPIN85

NET XBlt1gt LOC = SPIN86

NET XBlt2gt LOC = SPIN97

NET XBlt3gt LOC = SPIN98

NET XBlt4gt LOC = SPIN100

NET XBlt5gt LOC = SPIN101

NET XBlt6gt LOC = SPIN105

NET XBlt7gt LOC = SPIN104

NET XClt0gt LOC = SPIN58

NET XClt1gt LOC = SPIN59

NET XClt2gt LOC = SPIN60

NET XClt3gt LOC = SPIN61

NET YAlt0gt LOC = SPIN111

JP4 接頭

NET YAlt1gt LOC = SPIN110

NET YAlt2gt LOC = SPIN107

NET YAlt3gt LOC = SPIN106

NET YBlt0gt LOC = SPIN93

NET YBlt1gt LOC = SPIN91

NET YBlt2gt LOC = SPIN87

NET YBlt3gt LOC = SPIN88

NET YBlt4gt LOC = SPIN92

NET YBlt5gt LOC = SPIN94

NET YBlt6gt LOC = SPIN95

NET YBlt7gt LOC = SPIN96

NET YClt0gt LOC = SPIN112

NET YClt1gt LOC = SPIN113

NET YClt2gt LOC = SPIN103

NET YClt3gt LOC = SPIN102

在光碟片中 RFFPGAVHDLDEMOSVF95288XL 裡有VHDL與數位邏輯設計書本範例原始檔與合成

檔案

88

eM_FPGA 模組

NET CLK LOC = E12

NET XAlt0gt LOC = AA3

NET XAlt1gt LOC = Y4

NET XAlt2gt LOC = AA4

NET XAlt3gt LOC = AB4

NET XBlt0gt LOC = M1

NET XBlt1gt LOC = M2

NET XBlt2gt LOC = W13

NET XBlt3gt LOC = Y13

NET XBlt4gt LOC = AA13

NET XBlt5gt LOC = AB13

NET XBlt6gt LOC = Y18

NET XBlt7gt LOC = W18

NET XClt0gt LOC = W5

NET XClt1gt LOC = Y5

NET XClt2gt LOC = AA5

NET XClt3gt LOC = AB5

NET YAlt0gt LOC = Y17

JP4 接頭

NET YAlt1gt LOC = W17

NET YAlt2gt LOC = AB18

NET YAlt3gt LOC = AA18

NET YBlt0gt LOC = N1

NET YBlt1gt LOC = M5

NET YBlt2gt LOC = M3

NET YBlt3gt LOC = M4

NET YBlt4gt LOC = M6

NET YBlt5gt LOC = N2

NET YBlt6gt LOC = U13

NET YBlt7gt LOC = V13

NET YClt0gt LOC = AA17

NET YClt1gt LOC = AB17

NET YClt2gt LOC = V12

NET YClt3gt LOC = U12

在光碟片中 RFFPGAVHDLDEMOBIT2V250 裡有VHDL與數位邏輯設計書本範例原始檔與合成檔

89

Page 30: RFFPGA 直流馬達實驗手冊juniortek.com.tw/program/manual/RF-DC-mal.pdf · em_demo模組 em_dcm 直流伺服馬達 dc電源 rffpga 系統的直流馬達實驗規劃 其中包括:

會施加控制量作補償 2所以穩態時的誤差將在+1-1之間擺動造成微幅的振動 3量化誤差越大震動越明顯而量化誤差很小時通常不易察覺出震動現象

微分量的計算

伺服系統中有兩處需要用到微分計算包括

1PD控制器中誤差微分量的計算 2速度控制器中速度回授值的量測

在理論上微分公式是(dXdt)相當於 dXdt = (X(n)-X(n-1))DT (當 DT趨近於 0時)

所以當微分計算中的抽樣週期(DT)越短時微分的計算值將越接近理論值但是事實上

卻非如此以下圖為例

t

X

DTDX

其中

1當 X值為等速度運動時其微分量就是其斜率相當於 DXDT 2DT是微分計算中的抽樣週期理論上越短越好但是由於 DX本身的量化誤差

使得這個原則不再成立例如當斜率為 7394時 若 DT=1000則 DX=7394而 DXDT=7394 若 DT=100 則 DX=739 而 DXDT=739 若 DT=10 則 DX=73 而 DXDT=73 若 DT=1 則 DX=7 而 DXDT=7 3換句話說當抽樣週期越短時DX的量化誤差將越明顯而造成微分計算上更嚴

重的誤差

在 DCM 模組中速度量測的量化誤差分析如下

1馬達上的光電盤精度為每圈 500格經過乘四解碼後等效精度為每圈 2000格 2當馬達轉速為 1200RPM而抽樣頻率為 1KHz時對映的速度量測值為 1200(圈分)2000(格圈)60(秒分)1000(DT秒) = 40(格DT) 3換句話說1200RPM的轉速對映到 40的速度量測值即速度單位=30RPM若最

高轉速為 3000RPM則在+-3000RPM的速度範圍內其量化誤差為 05相當於8-bit的 ADC轉換器精度

4對映不同的抽樣頻率的量化誤差表列如下

30

光電盤精度 最高轉速 抽樣頻率 速度單

速度範圍 量化誤差

500PPR 3000RPM 1KHz 30RPM +-100 05 500PPR 3000RPM 2KHz 60RPM +-50 1 500PPR 3000RPM 4KHz 120RPM +25 2

過溢現象的處理

輸入

輸出

32767

-32768

整數運算都有數值範圍限制以 16-bit 整數而言輸入輸出的關係如下

其中

1當超過正負數的上下限時數值會正負顛倒例如 +32768 將會視為 -32768作處理而 +32769 將會視為 -32768作處理依此類推 2換句話說16-bit的整數運算只有在+-32767之間是線性的對映關係而超過這個範圍就是非線性的對映關係

3不但如此還因為正負顛倒的現象使得原來設計的負回授控制將變為正回授控制

而產生非線性的震盪現象 4換句話說只要計算上稍一不慎就會使得原先穩定的系統產生不穩定的震盪結果

為了避免過溢現象所造成的不穩定問題通常控制系統中會利用飽和處理作改善圖示

如下

輸入

輸出

lmtH

lmtL

31

其中

1當超過計算的上限時將固定設為上限值處理而當超過計算的下限時也將固定

設為下限值處理 2這時的整數運算只有在上下限之間是線性的對映關係而超過這個範圍將還是非線

性的對映關係 3雖然如此但是因為沒有正負顛倒的現象所以不再會有負回授變為正回授的問題

而避免了非線性的震盪現象 4換句話說飽和處理是針對過溢現象的妥協處理方案雖然不完全理想但是是可

接受的最佳選擇

下面是對映的組合語言範例

RD x x為輸入端 MIN lmtH 取得 x和 lmtH中的較小值即是作上限保護的工作 MAX lmtL 取得 x和 lmtL中的較大值即是作下限保護的工作 WR y Y為輸出端 其中

1組合語言中提供MAX和MIN的計算其中 MIN lmtH 比較 AX暫存器和 lmtH而將較低值存入 AX暫存器中 MAX lmtL 比較 AX暫存器和 lmtH而將較高值存入 AX暫存器中 2所以直接可用MIN指令作上限保護而以MAX指令作下限保護兩者合併後即是

完整的飽和處理結果

飽和處理通常應用在高位數轉成低位數的場合例如32-bit轉換成16-bit或是16-bit

轉換成 12-bit 等等例如在本實驗中所有的運算都是以 16-bit 整數作處理但是到

PWM 驅動級輸出時卻要轉換成 12-bit精度的 PWM 命令所以必須先用飽和處理以避免

過溢現象造成的不穩定問題

32

61 實驗 1-開迴路的電壓控制 實驗說明以電壓直接控制轉速的開迴路特性可簡化為一階系統處理方塊圖如

sτ+1

v km ωm

其中V 送給驅動器的 PWM電壓命令

ωm馬達的轉動速度可由處理 photo encoder信號所得的位置微分而得 km一階系統的穩態增益 τ一階系統的時間常數即步階響應中的上升時間

為了觀測直流馬達的開環路特性建立下面的測試方塊圖

其中

1所使用的模組包括 FG1方波產生器產生所需的步階測試波形 FT1馬達模擬以一階系統的低通濾波器來執行 IO1光電盤的回授處理可同時取得轉角和速度的量測值 IO2PWM電壓驅動直接驅動直流馬達作控制 Led四位數字七段顯示模組顯示波形信號資料 2測試目標有兩項(P 參數設定欄)包括 A調整方波命令控制直流馬達作開環路的 PWM電壓控制 B調整馬達模擬參數使模擬結果和實驗結果相符以確認開環路特性

33

實驗畫面顯示如下

測試一 開環路的電壓控制 記錄頻道 CH1電壓命令Y1=-300DY=500 CH2模擬速度Y2=-100DY=500 CH3馬達速度Y3=100DY=50 CH4馬達轉角Y4=300DY=50000 實驗參數 FG1kAMP=256電壓命令的測試振幅 FG1kFRQ=150電壓命令的測試頻率 FT1DT =10 馬達模擬參數 FT1KA =500馬達模擬參數

其中

1用示波器功能記錄四個頻道其中 CH2和 CH3重疊顯示以比較模擬速度和量測

速度之間的差異 2由於 Km 不等於 1所以必須調整 CH3的 Y軸單位才能使得 CH2和 CH3的穩態響應部分重疊

3實驗時可以改變 FG1的參數以調整測試方波的振幅和頻率 4可以調整 FT1的參數使得 CH2和 CH3的暫態響應部分重疊

根據實際的測試結果分析如下

2馬達模擬的參數調整到 DT=10而 KA=500根據公式 τ = 40961000dtka 所以上升時間(τ)為 0082秒或是 82ms 3CH2CH3的 Y軸單位並不一致顯然 Km 不等於 1經計算確認 Km=0098

對應之 plc檔程式說明(exp_pwmplc) echo off 畫面顯示開始

run dsp 0 選擇 DSP1

run stop run reset 既有程式停止

run testDCMmem 下載指定程式

das 1 ampfg1out 0 1024 PWM 波形 Volt 設定 DAS 頻道1

das 2 ampft1lp 0 1024 馬達模擬 Volt 設定 DAS 頻道2

das 3 ampio1spd 0 1024 馬達速度 Volt 設定 DAS 頻道3

das 4 ampio1ang 0 1024 馬達角度 Volt 設定 DAS 頻道4

plot select 0 設定示波器頁數

plot xunit 100000 0 設定示波器 X軸

plot yunit 1 500 -300 設定示波器 Y1 軸

34

plot yunit 2 500 -100 設定示波器 Y2 軸

plot yunit 3 50 100 設定示波器 Y3 軸

plot yunit 4 50000 300 設定示波器 Y4 軸

plot trigger 1 0 1 10 設定示波器觸發

plot scope 9 1 2 3 4 設定示波器顯示

module io2 設定 io2 模組

s cmd ampfg1out

module fg1 設定 fg1 模組

s kAmp 256 s kFrq 150

module ft1 設定 ft1 模組

s u ampfg1out s dt 10 s ka 500

module io3 設定 io3 模組

s led ampfg1out

module 回復預設模組

run 1khz 設定抽樣頻率為 4KHz

run start DSP 開始執行

das stop pause 1 DAS 啟動 das start DAS 啟動

echo on 回復正常訊息顯示

使用者可視情況調整一階濾波器的 ka和 dt值使得 ch2和 ch3 兩組波形完全相符

以求得開迴路系統近似的一階轉移函數 CAI操控設計畫面規劃如下(EXP_PWMCAI) page 1 畫面設計

35

page 2 畫面設計 page 3 畫面設計

36

實測響應圖

訊 號 說 明 訊 號 說 明 ch1 方波產生器訊號 ch3 一階濾波器輸出信號 ch2 馬達角速度訊號 ch4 馬達角位置訊號

直流馬達之開迴路電壓控制響應圖

37

以邏輯分析功能觀測直流馬達之光電盤輸入與 PWM輸出信號

38

62 實驗 2-閉迴路的速度控制 實驗說明為了觀測閉迴路的速度控制響應建立下面的測試方塊圖

加入 PD控制後系統閉迴路的轉移函數經適度的簡化仍能約略以一階系統

處理方塊圖如下

sτ+1

u km ωm

其中

u 送給控制器的速度命令

ωm馬達的轉動速度可由處理 photo encoder 信號所得的位置微分而得

km一階系統的穩態增益 τ一階系統的時間常數即步階響應中的上升時間

方塊圖中的模組功能說明如下

1用 fg1 產生測試用的方波速度命令

2將方波速度命令和速度回授訊號送到 PD 控制器方塊中產生電壓控制訊號再透

過 io2 模組將訊號送出給伺服介面

3用 ft1 建立對照用的一階系統可用 IIR1濾波器方塊產生

4將方波命令產生速度命令再觀測 PHT(io1)上的速度值 spd

5調整 IIR1濾波器的參數使得兩組波形完全相符這時 IIR1濾波器就是閉迴路

速度控制的特性其中 km 為增益而τ為上升時間(單位為 sec)

6增益 km 可從示波器中作簡單計算而上升時間(τ=40964000dtka)

7 Led四位數字七段顯示模組顯示波形信號資料

39

對應之 plc檔程式說明(exp_speedplc) echo off 畫面顯示開始

run dsp 0 選擇 DSP1

run stop run reset 既有程式停止

run testDCMmem 下載指定程式

das 1 ampfg1out 0 1024 PWM 波形 Volt 設定 DAS 頻道1

das 2 ampft1lp 0 1024 馬達模擬 Volt 設定 DAS 頻道2

das 3 ampio1spd 0 1024 馬達速度 Volt 設定 DAS 頻道3

das 4 ampio1ang 0 1024 馬達角度 Volt 設定 DAS 頻道4

plot select 0 設定示波器頁數

plot xunit 100000 0 設定示波器 X軸

plot yunit 1 50 -300 設定示波器 Y1 軸

plot yunit 2 50 -100 設定示波器 Y2 軸

plot yunit 3 50 100 設定示波器 Y3 軸

plot yunit 4 50000 300 設定示波器 Y4 軸

plot trigger 1 0 1 10 設定示波器觸發

plot scope 9 1 2 3 4 設定示波器顯示

module io2 設定 io2 模組

s cmd ampcn2out

module fg1 設定 fg1 模組

s kAmp 50 s kFrq 150

module cn2 設定 cn1 模組

s cmd ampfg1out s fdk ampio1spd s kp 0x4000

module ft1 設定 ft1 模組

s u ampfg1out s dt 2 s ka 320

module io3 設定 io3 模組

s led ampfg1out

module 回復預設模組

run 1khz 設定抽樣頻率為 4KHz

run start DSP 開始執行

das stop pause 1 DAS 啟動 das start DAS 啟動

echo on 回復正常訊息顯示

CAI操控設計畫面規劃如下(EXP_speedCAI)

40

page 1 畫面設計 page 2 與 page 3 畫面設計與實驗一 page 2 與 page 3相同畫面 page 4 畫面設計

41

方塊的參數設定 使用者可視情況調整一階濾波器的 ka和 dt值使得 ch2和 ch3 兩組波形完全相符

以求得此一閉迴路系統近似的一階轉移函數或調整 PD控制器中的 kp和 kp值以調整系統之響應 實測響應圖

訊 號 說 明 訊 號 說 明 ch1 方波產生器產生之速度命令 ch3 一階濾波器輸出信號 ch2 馬達角速度訊號 ch4 馬達角位置訊號

42

直流馬達之閉迴路速度控制響應圖

43

63 實驗 3-閉迴路的位置控制 實驗說明為了觀測閉迴路的位置控制響應將直流馬達的回授改為位置訊號

建立下面的測試方塊圖 方塊圖中的模組功能說明如下

1用 fg1產生測試用的方波位置命令 2將方波位置命令和位置回授訊號送到 PD控制器方塊中產生電壓控制訊號再透過 io2模組將訊號送出到伺服介面驅動馬達轉動

對應之 plc檔程式說明(exp_angleplc) echo off 畫面顯示開始

run dsp 0 選擇 DSP1

run stop run reset 既有程式停止

run testDCMmem 下載指定程式

das 1 ampfg1out 0 1024 PWM 波形 Volt 設定 DAS 頻道1

das 2 ampft1lp 0 1024 馬達模擬 Volt 設定 DAS 頻道2

das 3 ampio1spd 0 1024 馬達速度 Volt 設定 DAS 頻道3

das 4 ampio1ang 0 1024 馬達角度 Volt 設定 DAS 頻道4

plot select 0 設定示波器頁數

plot xunit 100000 0 設定示波器 X軸

plot yunit 1 1000 -300 設定示波器 Y1 軸

plot yunit 2 1000 -100 設定示波器 Y2 軸

plot yunit 3 20 100 設定示波器 Y3 軸

plot yunit 4 1000 300 設定示波器 Y4 軸

plot trigger 1 0 1 10 設定示波器觸發

44

plot scope 9 1 2 3 4 設定示波器顯示

module io2 設定 io2 模組

s cmd ampcn2out

module fg1 設定 fg1 模組

s kAmp 1000 s kFrq 75

module cn2 設定 cn1 模組

s cmd ampfg1out s fdk ampio1ang s kp 0x300 s kd 0x4000

module ft1 設定 ft1 模組

s u ampfg1out s dt 2 s ka 320

module io3 設定 io3 模組

s led ampfg1out

module 回復預設模組

run 1khz 設定抽樣頻率為 4KHz

run start DSP 開始執行

das stop pause 1 DAS 啟動 das start DAS 啟動

echo on 回復正常訊息顯示

CAI操控設計畫面規劃如下(EXP_angleCAI) page 1 畫面設計

45

page 2 與 page 3 畫面設計與實驗一 page 2 與 page 3相同畫面 page 4 畫面設計與實驗二 page 4 畫面 方塊的參數設定 延續上一實驗的說明使用者可以調整 PD控制器中的 kp和 kd值以調整系統之

響應 實測響應圖

訊 號 說 明 訊 號 說 明 ch1 方波產生器產生之位置命令 ch3 馬達角速度訊號 ch2 馬達角位置 ch4 Pd控制器輸出之電壓訊號

46

直流馬達之閉迴路位置控制響應圖

47

64 實驗 4-加減速的位置控制 實驗說明為避免方波命令的過於嚴苛在方波命令的輸出加入一加減速控制功

能方塊以減緩命令變化的幅度增加馬達運動的平順建立的測試方塊圖如下

方塊圖中的模組功能說明如下

1用 fg1產生測試用的方波位置命令 2將方波位置命令送到加減速控制方塊處理後產生新的位置命令再將新的位置命

令與位置回授訊號送到 PD控制器方塊中產生電壓控制訊號最後透過 io2模組將訊號送出到伺服介面驅動馬達轉動

對應之 plc檔程式說明(exp_accplc) echo off 畫面顯示開始

run dsp 0 選擇 DSP1

run stop run reset 既有程式停止

run testDCMmem 下載指定程式

das 1 ampfg1out 0 1024 PWM 波形 Volt 設定 DAS 頻道1

das 2 ampcn1out 0 1024 加速控制 Volt 設定 DAS 頻道2

das 3 ampio1spd 0 1024 馬達速度 Volt 設定 DAS 頻道3

das 4 ampio1ang 0 1024 馬達角度 Volt 設定 DAS 頻道4

plot select 0 設定示波器頁數

plot xunit 100000 0 設定示波器 X軸

plot yunit 1 2000 -300 設定示波器 Y1 軸

plot yunit 2 2000 -100 設定示波器 Y2 軸

plot yunit 3 50 100 設定示波器 Y3 軸

plot yunit 4 2000 300 設定示波器 Y4 軸

48

plot trigger 1 0 1 10 設定示波器觸發

plot scope 9 1 2 3 4 設定示波器顯示

module io2 設定 io2 模組

s cmd ampcn2out

module fg1 設定 fg1 模組

s kAmp 2000 s kFrq 150

module cn1 設定 cn1 模組

s cmd ampfg1out

module cn2 設定 cn2 模組

s cmd ampcn1out s fdk ampio1ang s kp 0x300 s kd 0x4000

module ft1 設定 ft1 模組

s u ampfg1out s dt 2 s ka 320

module io3 設定 io3 模組

s led ampfg1out

module 回復預設模組

run 1khz 設定抽樣頻率為 4KHz

run start DSP 開始執行

das stop pause 1 DAS 啟動 das start DAS 啟動

echo on 回復正常訊息顯示

CAI操控設計畫面規劃如下(EXP_accCAI) page 1 畫面設計

49

page 2 畫面設計與實驗一 page 2相同畫面 page 3 畫面設計與實驗二 page 4相同畫面

參數設定參考之前各實驗的說明可線上機動性的調整 PD控制器中的 kp和 kd值以調整系統之響應 實測響應圖

訊 號 說 明 訊 號 說 明 ch1 方波產生器產生之位置命令 ch3 馬達角位置 ch2 加減速模組輸出之位置命令 ch4 馬達角速度訊號

50

圖一 直流馬達經加減速控制後之閉迴路控制響應圖

51

65 實驗 5-正弦波的位置控制 實驗說明在本實驗中改變命令的波形由方波改變為正弦波並建立如下的測

試方塊圖與上一實驗相比較僅更改命令的波形產生方塊 方塊圖中的模組功能說明如下 1用 fg2產生測試用的弦波位置命令 2將弦波位置命令送到加減速控制方塊處理後產生新的位置命令再與 io1 讀入的位

置回授訊號送到 PD 控制器方塊中產生電壓控制訊號再透過 io2 模組將訊號送出到伺服介面驅動馬達轉動

對應之 plc檔程式說明(exp_sinplc) echo off 畫面顯示開始

run dsp 0 選擇 DSP1

run stop run reset 既有程式停止

run testDCMmem 下載指定程式

das 1 ampfg2out 0 1024 SIN 波形 Volt 設定 DAS 頻道1

das 2 ampcn1out 0 1024 加速控制 Volt 設定 DAS 頻道2

das 3 ampio1spd 0 1024 馬達速度 Volt 設定 DAS 頻道3

das 4 ampio1ang 0 1024 馬達角度 Volt 設定 DAS 頻道4

plot select 0 設定示波器頁數

plot xunit 100000 0 設定示波器 X軸

plot yunit 1 2000 -300 設定示波器 Y1 軸

plot yunit 2 2000 -100 設定示波器 Y2 軸

plot yunit 3 50 100 設定示波器 Y3 軸

plot yunit 4 2000 300 設定示波器 Y4 軸

plot trigger 1 0 1 10 設定示波器觸發

52

plot scope 9 1 2 3 4 設定示波器顯示

module io2 設定 io2 模組

s cmd ampcn2out

module fg2 設定 fg1 模組

s kAmp 2000 s kFrq 100

module cn1 設定 cn1 模組

s cmd ampfg2out

module cn2 設定 cn2 模組

s cmd ampcn1out s fdk ampio1ang s kp 0x300 s kd 0x4000

module ft1 設定 ft1 模組

s u ampfg2out s dt 2 s ka 320

module io3 設定 io3 模組

s led ampfg2out

module 回復預設模組

run 1khz 設定抽樣頻率為 4KHz

run start DSP 開始執行

das stop pause 1 DAS 啟動 das start DAS 啟動

echo on 回復正常訊息顯示

CAI操控設計畫面規劃如下(EXP_sinCAI) page 1 畫面設計

53

page 2 畫面設計 page 3 畫面設計與實驗二 page 4相同畫面

方塊的參數設定可調整 PD控制器中的 kp和 kd值以調整系統之響應 實測響應圖

訊 號 說 明 訊 號 說 明 ch1 弦波產生器產生之位置命令 ch3 馬達角位置訊號 ch2 加減速模組輸出之位置命令 ch4 馬達角速度訊號

54

直流馬達之閉迴路弦波加減速位置控制響應圖

55

7組合語言說明

本節將針對 DC馬達伺服控制實驗專用的程式模組進行功能與程式碼的說明其

有關於波形產生器與資料擷取模組等說明如下

SIN_waveasm 正弦波產生器 PWM_waveasm 方波產生器 IIR1_filterasm 一階濾波器 DAS4asm 資料蒐集模組

弦波產生器

此模組會產生週期性的正弦波方塊圖如下

outfrq

kBiasbias

ampkAmp

kFrqth

kThf=1TB

θ

A

其中

1正弦波有四個參數振幅(A)頻率(F)相位(θ)和偏移(B)其公式為 out = A sin(2πF t +θ) + B 2對於單純的正弦波產生器所對映的參數包括 kAmp 振幅值 kFrq 頻率值kFrq=655368000Hz其中 Hz的範圍為 0~4000例如 1000Hz =gt frq=8192 100Hz =gt frq=819 10Hz =gt frq=82 1Hz =gt frq=8 kTh 相角值0~255代表 0~360的相位當 th=0 時為正弦波 th=64 時為餘弦波 th=128時為反相波依此類推 kBias偏移值 3對於可調變的正弦波產生器其對映的輸入點為 amp 控制振幅的輸入點可產生調幅(AM)波形 frq 控制頻率的輸入點可產生調頻(FM)波形 th 控制相位的輸入點可產生調相(PM)波形 bias控制偏移的輸入點可產生雙頻混波(相加)波形 4若不使用調變功能時各個輸入點時的預設值為 amp 指向 kAmp 的位址 frq 指向 kFrq 的位址

56

th 指向 kTh 的位址 bias指向 kBias的位址

模組程式範例SIN_WAVEasm

local amp R0 IP kAmp 輸入點sin波的振幅 local frq R1 IP kFrq 輸入點sin波的頻率 local th R2 IP kTh 輸入點sin波的相角 local bias R3 IP kBias 輸入點sin波的中心偏移 local out R4 OP 輸出點sin波輸出 local tab R5 TP 表格指標指向 sin[256]的表格 local ang R6 內部變數相位角65536=360deg local kAmp R7 1000 參數振幅值 local kFrq R8 1000 參數頻率值=655368000Hz local kTh R9 0 參數相角值360deg=256 local kBias R10 0 參數偏移值 data 11 模組變數區長度及初值 initial 啟動程序 WR ang0 WR out0 ang=out=0 RET timer 即時控制程序(8KHz) RD ang ADD (frq) WR ang ang+=frq SFR 8 ADD (th) AND 255 ACC=sin(ang256+th) ADD tab WRH RDM table-look-up MUL (amp) SFR 12 ADD (bias) WR out out=ACCamp4096+bias RET table tab 256 sin[256]表格區10=4096 0 101 201 301 401 501 601 700 00~070deg 799 897 995 1092 1189 1285 1380 1474 08~0F 1567 1660 1751 1842 1931 2019 2106 2191 10~17 2276 2359 2440 2520 2598 2675 2751 2824 18~1F 2896 2967 3035 3102 3166 3229 3290 3349 20~27 3406 3461 3513 3564 3612 3659 3703 3745 28~2F 3784 3822 3857 3889 3920 3948 3973 3996 30~37 4017 4036 4052 4065 4076 4085 4091 4095 38~3F 4096 4095 4091 4085 4076 4065 4052 4036 40~4790deg 4017 3996 3973 3948 3920 3889 3857 3822 48~4F 3784 3745 3703 3659 3612 3564 3513 3461 50~57 3406 3349 3290 3229 3166 3102 3035 2967 58~5F

57

2896 2824 2751 2675 2598 2520 2440 2359 60~67 2276 2191 2106 2019 1931 1842 1751 1660 68~6F 1567 1474 1380 1285 1189 1092 995 897 70~77 799 700 601 501 401 301 201 101 78~7F 0 65435 65335 65235 65135 65035 64935 64836 80~87180deg 64737 64639 64541 64444 64347 64251 64156 64062 88~8F 63969 63876 63785 63694 63605 63517 63430 63345 90~97 63260 63177 63096 63016 62938 62861 62785 62712 98~9F 62640 62569 62501 62434 62370 62307 62246 62187 A0~A7 62130 62075 62023 61972 61924 61877 61833 61791 A8~A8 61752 61714 61679 61647 61616 61588 61563 61540 B0~B7 61519 61500 61484 61471 61460 61451 61445 61441 B8~BF 61440 61441 61445 61451 61460 61471 61484 61500 C0~C7270deg 61519 61540 61563 61588 61616 61647 61679 61714 C8~CF 61752 61791 61833 61877 61924 61972 62023 62075 D0~D7 62130 62187 62246 62307 62370 62434 62501 62569 D8~DF 62640 62712 62785 62861 62938 63016 63096 63177 E0~E7 63260 63345 63430 63517 63605 63694 63785 63876 E8~EF 63969 64062 64156 64251 64347 64444 64541 64639 F0~F7 64737 64836 64935 65035 65135 65235 65335 65435 F8~FF

就程式結構而言說明如下

timer 即時控制程序(8KHz) RD ang ADD (frq) WR ang ang+=frq SFR 8 ADD (th) AND 255 ACC=sin(ang256+th) ADD tab WRH RDM table-look-up MUL (amp) SFR 12 ADD (bias) WR out out=ACCamp4096+bias RET

1基本上我們以查表法計算 sin()其輸入θ的範圍為 0~255對映到 0~360deg其輸出 sin(θ)的範圍為+-4096對映到+-10的範圍

2建立一個內部變數 ang其範圍為 0~65535對映到 0~360的相位角 3每個timer程序都執行 ang+=frq的動作更新目前的相位角接著依照 ang的相位角查表得到 sin(ang256+th)值

4由於表格長度為 256-word所以必須將 ang256才能得到正確的對映關係而 th範圍為 0~255所以不需要像 ang一般的做額外處理

5sin()的範圍為(+1-1)而在表格中以(+4096~-4096)的型式記錄相當於 10=4096所以執行 Asin()時還要用 SFR12指令做4096的動作才能正確的取得輸出值

58

6就頻率輸入 frq而言其計算原則是將θ=ωt轉化成θ=Σ(ωdt)因為抽樣頻率

為 8KHz所以 dt=18000而得到 frq=655368000Hz公式其中 Hz為真正的頻率在 8KHz的抽樣頻率下其範圍為 0~4000

鋸齒波產生器

此模組會產生週期性的鋸齒波方塊圖如下

outfrq

kBiasbias

ampkAmp

kFrqth

kThf=1TB

θ

A

其中

1鋸齒波也有四個參數振幅(A)頻率(F)相位(θ)和偏移(B)和正弦波的定義完全一致唯一的差異是其輸出為鋸齒波而非正弦波

2基本波形是從週期開始時為 0一直遞增到週期結束時到達最高點然後立刻回歸

到 0重新開始 3以程式結構而論鋸齒波程式幾乎就是正弦波的相位計算部分只差沒有正弦波的

查表處理而已

模組程式範例SAW_WAVEasm

local amp R0 IP kAmp 輸入點sin波的振幅 local frq R1 IP kFrq 輸入點sin波的頻率 local th R2 IP kTh 輸入點sin波的相角 local bias R3 IP kBias 輸入點sin波的中心偏移 local out R4 OP 輸出點sin波輸出 local ang R5 內部變數相位角65536=360deg local kAmp R6 1000 參數振幅值 local kFrq R7 1000 參數頻率值=655368000Hz local kTh R8 0 參數相角值360deg=256 local kBias R9 0 參數偏移值 data 11 模組變數區長度及初值 initial 啟動程序 WR ang0 WR out0 ang=out=0 RET timer 即時控制程序(8KHz) RD ang ADD (frq) WR ang ang+=frq SFR 8 ADD (th) AND 255 ACC=(ang256+th)amp0x00ff MUL (amp) SFR 8 ADD (bias) WR out out=ACCamp256+bias

59

RET

脈衝波產生器

outfrq

kBiasbias

ampkAmp

kFrqth

kThf=1TB

θ

A

pwm

kDutyduty

此模組會產生週期性的脈衝波方塊圖如下

其中

1脈衝波有五個參數其中振幅(A)頻率(F)相位(θ)和偏移(B)四個參數和正弦波

定義完全一樣另外再增加一個負載率(D) 2基本波形是從週期開始時為 1隔段時間後換為 0然後持續到週期結束再重新開始其中 1所佔有的比例就是負載率當 D=0時為 0而 D=255時為 100

3和其他參數類似負載率(D)以 duty為其輸入點而以 kDuty為其參數值

模組程式範例PLS_WAVEasm

local amp R0 IP kAmp 輸入點脈衝波的振幅 local frq R1 IP kFrq 輸入點脈衝波的頻率 local th R2 IP kTh 輸入點脈衝波的相角 local bias R3 IP kBias 輸入點脈衝波的中心偏移 local duty R4 IP kDuty 輸入點脈衝波的負載率 local out R5 OP 輸出點脈衝波輸出 local ang R6 內部變數相位角65536=360deg local kAmp R7 1000 參數振幅值 local kFrq R8 1000 參數頻率值=655368000Hz local kTh R9 0 參數相角值360deg=256 local kBias R10 0 參數偏移值 local kDuty R11 128 參數負載率100 =256 data 12 模組變數區長度及初值 initial 啟動程序 WR ang0 WR out0 ang=out=0 RET timer 即時控制程序(8KHz)

60

RD ang ADD (frq) WR ang ang+=frq SFR 8 ADD (th) AND 255 ACC=(ang256+th)amp0x00ff SUB (duty) RD (amp) JLT t1 RD 0 ACC=(amp0) t1 ADD (bias) WR out out=ACC+bias RET

IIR 一階濾波器

此模組執行一階的 IIR濾波器方塊圖如下

kau x

Z-1

+

+

-

+低通濾波器

高通濾波器dx lp

hp

濾波器參數的計算公式如下

1假設濾波器的頻寬為 hz則 ωn=hz628 2若系統頻率為 8KHz則抽樣週期 dT為 dT=dt8000 其中 dt為模組參數 3則濾波器參數為 ka=ωndT4096或是 =hzdt62880004096即 =hzdt32 4當 dt決定後所允許的訊號頻寬為(4000dt)換句話說訊號頻寬會因為 dt增加而下降

為了方便實驗的運用下面列出常用的參數對照表

濾波頻寬

(Hz)

10 20 50 100 200 500 1000 2000

訊號頻寬

(Hz)

400 800 2000 4000 4000 4000 4000 4000

模組參數 dt 10 5 2 1 1 1 1 1

模組參數 ka 320 320 320 320 640 1600 3200 6400

表格的運用方式如下

1首先決定濾波頻寬 2接著查表找出對映的參數 dt和 ka 3再查表得到對映的訊號頻寬以決定是否需要串接前級濾波器

61

模組程式範例IIR1_FILTERasm

local u R0 IP 輸入點濾波器輸入 local lp R1 OP 輸出點低通濾波器輸出 local hp R2 OP 輸出點高通濾波器輸出 local dt R3 1 參數抽樣週期 local ka R4 4096 參數增益 ka10=4096 local prd R5 內部變數抽樣週期用 data 6 模組變數區長度 initial 開機啟動程序 WR lp0 WR hp0 WR prd1 RET lp=hp=0prd=1 timer 即時控制程序 SUB prd1 JNZ b9 if (--prdgt0) return RD dt WR prd prd=dt RD (u) SUB lp WR hp hp=u-lp MUL ka SFR 12 ADD lp WR lp lp+=(hpka4096) b9 RET

資料蒐集模組

資料蒐集模組是一個非常特殊的模組專門配合 eTTY 程式中的示波器使用

模組程式範例DAS4asm

local cmd R0 0 紀錄命令0=停止1=前置記錄2=正觸發4=負觸發6=觸發記錄 local dt R1 1 抽樣週期每 dT抽樣一次 local tab R2 TP DAS表格啟始位址 local cnt R3 0 目前記錄點(0~255) local ch1 R4 0 定義頻道1的變數位址 local ch2 R5 0 定義頻道2的變數位址 local ch3 R6 0 定義頻道3的變數位址 local ch4 R7 0 定義頻道4的變數位址 local trg R8 0 定義觸發頻道的變數位址 local th R9 0 觸發準位 local tail R10 0 觸發後的抽樣個數 local buf R11 1 抽樣計數(1~dt) local pnt R12 表格位址計算pnt=tab+cnt4 local len R13 表格長度計算(0~256) data 14 定義模組變數區的長度 table tab 1024 定義表格的長度 initial 啟動程序 WR cmd0 RET cmd=0 timer 控制程序

62

ADD cmd0 JZ t9 if (cmd==0) return SUB buf1 JNZ t9 if (--buf)gt0) return RD dt WR buf dt=buf RD cnt ADD 1 AND 0xff WR cnt cnt=(cnt+1)amp0xff SFL 2 ADD tab WR pnt pnt=tab+cnt4 RD (ch1) WR (pnt) ADD pnt1 pnt++=ch1 RD (ch2) WR (pnt) ADD pnt1 pnt++=ch2 RD (ch3) WR (pnt) ADD pnt1 pnt++=ch3 RD (ch4) WR (pnt) pnt =ch4 RD cmd SUB 1 JZ t9 SUB 1 JZ t2 SUB 1 JZ t3 SUB 1 JZ t4 SUB 1 JZ t5 SUB 1 JZ t6 JR t7 t2 RD (trg) SUB th JGE t9 ADD cmd1 JR t9 wait trgltth t3 RD (trg) SUB th JLE t9 JR t6 wait trggtth t4 RD (trg) SUB th JLE t9 ADD cmd1 JR t9 wait trggtth t5 RD (trg) SUB th JGE t9 JR t6 wait trgltth t6 WR len0 WR cmd7 len=0cmd=7 t7 ADD len1 SUB tail JLT t9 WR cmd0 if ((++len)gt=0x80) cmd=0 t9 RET

與 DC 馬達控制相關的程式模組有以下 4個程式模組說明如下

(1)加減速控制模組 ACC_controlasm (2)光電盤輸入模組 POS_inputasm (3)PWM輸出模組 PWM_outputasm (4)PD控制模組 PD_controlasm

71加減速控制模組 此程式模組主要功能在於執行位置控制的加減速命令修正其數學模式採用 Lynn

濾波器的架構參見下圖

cmd

2

+

old Z -1

-

Z -1

Z -1

Z-1

Z-1x0 x1 x8 x9 x16

+ -

++

2

Z-1

Z-1 y1 y2

+

-

y0

+ +

sumZ-1

+164

12

out

dif

+

63

加減速控制模組方塊圖

其中

1Lynn 濾波器的階數固定成八階也就是 m=8其公式為 H(z) = (1-2Z-m+Z-2m)(1-2Z-1+Z-2)m2

2因為m=8所以m2=64因此最後計算低通濾波的部份時要先做除 64的運算 3因為低通濾波(lp)和 y0之間有 64倍的差異代表 y0y1y2的變化範圍比濾波器輸

入值要擴大許多例如輸入值在+-1000變化時y0y1y2很可能會在+-64000之間變化這範圍已經超出整數處理的範圍很可能會造成錯誤的計算結果

4所以在實驗時輸入值的變化範圍必須控制在+-500之間以保證計算的正確性 5對於 Lynn 濾波器當 m=8時其濾波器的頻寬固定為 1 kHzmdt也就是 dt=1時頻寬為 125 Hz dt=2時頻寬為 625Hz依此類推 6對於 Lynn 濾波器其濾波器的延遲固定為 m個抽樣週期因此設計 hp = x8 - lp 即可得到高通濾波器的對應結果 7其中乘 2和除 64的運算以移位運算取代所以整個程式中並無任何乘法運算 8Lynn 濾波器本身並不是穩定濾波器所以在程式啟動時必須確實的將所有狀態

(x0~x16)歸零否則會產生不穩定的狀態輸出

因為 Lynn濾波器中所有參數固定所以除了抽樣週期 dt 之外並無任何可調參數

抽樣週期 dt 可以控制頻寬dt 越大則濾波器頻寬越低

將步階命令值的輸出送入 Lynn 濾波器中經由低通濾波器的效應可以減緩命

令的變化程度達到加減速控制的目的以下為使用 Lynn 濾波器型式實現加減速控

制的組合語言程式列印 如欲更進一步瞭解 Lynn 濾波器與 FIR 數位濾波器之間的關係可以參考通訊實驗

四數位濾波器設計(FIR)中之說明

ACC_controlasm程式列印 local cmd R0 IP 輸入點位置命令

local out R1 OP 輸出點加減速處理後的位置命令

local dif R2 OP 輸出點位置微分命令

local axis R3 0 馬達編號0=X1=Y2=Z3=C

local old R4 內部變數微分計算用

local sumL R5 內部變數積分計算用

local sumH R6 內部變數積分計算用

local y0 R7 內部變數y(0~2)

local y1 R8 local y2 R9

local x0 R10 內部變數x(0~16)

local x1 R11 local x2 R12 local x3 R13 local x4 R14

local x5 R15 local x6 R16 local x7 R17 local x8 R18

local x9 R19 local x10 R20 local x11 R21 local x12 R22

local x13 R23 local x14 R24 local x15 R25 local x16 R26

64

data 27 模組變數區長度

initial 開機啟動程序

WR dif0 RD (cmd) WR out WR old dif=0 out=old=cmd

sumHL=cmd64

SFL 6 WR sumL RD out SFR 10 SGN 5 WR sumH

RPT 17 WR x00 RPT 3 WR y00 RET x[0~16]=0y[0~2]=0

timer 即時控制程序

RD (cmd) SUBX old WR x0 x0=cmd-old old=cmd

SUB x81 ADD x16 ADD y11 SUB y2 WR y0 y0=x0-2x8+x16+2y1-y2

SGN ADD sumL WR sumL RDH ADC sumH WR sumH sumHL+=y0

WRH RD sumL SFR 6 WR out out=sumHL64

RD y0 SGN SFR WR dif dif=y032mm

RD x0 RPT 16 RDX x1 x[i]=x[i-1] i=1~16

RD y0 RDX y1 WR y2 y[i]=y[i-1] i=1~2

b9 RET

72光電盤輸入模組

DC馬達的位置由光電盤量測之預設儲存於 0xac與 0xbe二個輸入埠位址中其中位址 0xac記錄 X軸馬達的位置位址 0xbe記錄 Y軸馬達的位置由於本實驗的DC馬達接在 Y軸的位置上因此程式中直接選用 Y軸的輸入 光電盤位置輸入的程式列印如下其中速度由位置的差分而得至於馬達的位置

則使用內部 2個 word加以記錄精度為 32位元 POS_inputasm程式列印 local spd R0 OP 輸出點速度量測值

local ang R1 OP 輸出點角度量測值

local angH R2 內部變數角度的 32 位元部分

local mode R3 0x308 模式選擇15MHzAB 相正反向輸入

local pht R4 0xac 輸入阜地址光電盤輸入(0xac)

local phtc R5 0xbe 輸入阜地址光電盤模式(0xbe)

local old R6 內部變數速度更新用

data 7 模組變數區長度

initial 開機啟動程序

RD mode WR (phtc) phtc=mode

RD (pht) WR old WR spd0 RET old=phtspd=0

timer 即時控制程序

RD (pht) SUBX old SGN 11 WR spd spd=(pht-old)old=pht

65

ADD ang WR ang angHL+=spd

RDH ADC angH WR angH

RET

73 PWM輸出控制模組 模組方塊

cmd PWM輸出

程式說明 1在開機時將切換保護時間寫到輸出阜 0xbc上其中切換保護值為 0~6360=5us 2在每次 timer interrupt時將 cmd訊號處理後寫到輸出阜 0xb8上

PWM_outputasm程式列印 local cmd R0 IP gnd 輸入點v相命令

local gain R1 4096 參數輸出增益1=4096

local bias R2 2048 參數輸出偏壓0=2048

local limit R3 4095 參數輸出極限1=4095

local zone R4 0x88f0 參數頻率=12KHz切換保護=5us

local pwm R5 0xb8 輸出阜地址PWM0 輸出(0xb8)

local mode R6 0xbc 輸出阜地址PWM 模式(0xbc)

local p0md R7 0xf8 輸出阜地址port0 模式(0xf8)

local gnd R8 0 輸入接地點

data 9 模組變數區長度

initial 開機啟動程序

RD bias WR (pwm) pwm=bias

RD 0xffff WR (p0md) set port0 mode

RD zone WR (mode) RET mode=zone

stop 關機保護程序

RD bias WR (pwm) RET pwm=bias

timer 即時控制程序

RD (mode) xor 1 and 1 WR (mode) trigger watch-dog

RD (cmd) MUL gain SFR 12 ADD bias ACC=(cmdgain4096)+bias

MAX 0 MIN limit WR (pwm) pwm=limit(ACC)

RET

66

74 PD 控制模組

PD控制的模組方塊參見圖二十一所示其中比例控制的部份直接由增益 kp加以調整微分控制的部份則由誤差的差分經增益 kd的調整而得

Σ+

-

cmd

fdk

err out

Σ

pk

dk

Σ

+

+

+

-

old1minusZ

PD控制器的方塊圖

PD_controlasm程式列印 local cmd R0 IP gnd 輸入點位置命令(可忽略)

local fdk R1 IP gnd 輸入點位置回授(可忽略)

local out R2 OP 輸出點用以控制速度迴路

local kp R3 256 參數增益 kp10=256

local kd R4 0 參數增益 kd10=256

local err R5 0 內部變數

local old R6 0 內部變數

local gnd R7 0 無輸入時的短路點

data 8 模組變數區長度

initial 開機啟動程序

WR out0 WR old0 RET out=old=0

timer 即時控制程序

RD (cmd) SUB (fdk) PRTF WR err

MUL kp SFR 8 P=(cmd-fdk)kp256

RDS err SUBX old MUL kd SFR 8 D=(err-old)kd256

ADDS

WR out out=P+D

RET

程式中預設增益值的 10以整數值 256為基底因此使用 SFR 8的指令加以調

整另外在在計算微分項的程式部份用到 SUBX old的指令其詳細的暫存器動作如

下 參考 piDSP的指令說明SUBX指令將總共用到 3個時序參考錯誤 找不到參照

67

來源在時序 1時將原先 AX的資料拷貝一份到 HX中時序 2時正式執行減

法的動作所以 AX暫存器中的內容會變成 err-old時序 3時DSP會將存放在 HX暫存器中的內容拷貝一份到 old的記憶體中也就是經由 SUBX此一精簡指令將

同時完成計算差分所需要的相減與資料疊代的動作有效的利用 piDSP控制器 DSP核心的精簡指令將可以大幅提昇系統的計算速度

HX AXoldSUBXerr err

old

err

errerr olderr minus

1_err

errerr olderr minus err

1_err

1

2

3

SUBX的指令時序與暫存器變化

68

8附錄快速安裝說明

光纖網路通訊 FPGA 發展系統 (適用於 WIN-XP200098 系統)

快速安裝說明

26Pin 負載輸出入埠

雙電源︵5

12

伏︶輸入埠

單電源︵5

伏︶輸入埠

USB

光纖線輸

號 光纖線輸出埠

入 傳 埠

首先將光碟片 RFFPGA 目錄檔案拷貝在您工作硬碟裡面

第一次安裝時先將 USB 傳輸線接上電腦主機將電源供應器接上 FPGA 模組此時電

腦會出現安裝 USB-Serial 驅動程式選擇從清單安裝此驅動程式放置在光碟片

RFFPGA-USBdrive 選擇您目前安裝系統

可選擇 WIN-98WIN-MEWIN-2000WIN-XP 系統配合您現在工作電腦作業系統

69

注意一般電腦 USB 埠很多插口當您安裝驅動程式時是配合您當時插入之埠

下次如您插入不同接口埠時電腦會再次要求安裝驅動程式這是正常現象請再次安

裝驅動程式否則無法使用

FPLC 操作

首先進入 RFFPGA裡子目錄 testASM直接點選 fPLCexe 出現下面操作畫面(也可直接將

此檔案放置桌面直接點選)

(或者選擇 File 再執行 Setuphellip 選擇您要執行 CAI 檔)

70

進入下面操作畫面 首先使用滑鼠在 FPGA下載按鈕單擊動作使 FPGA變成 DSP晶片 實驗一至實驗五皆為使用 DSP組合語言設計程式其原始程式分別為 testASM1至testASM5可使用 texPad 開啟與編輯程式內容 實驗三與實驗五多有 IO控制動作 當選擇實驗三時出現下面畫面

71

eM_USB 模組

數字型 LED

0 1 2 34 5 6 78 9 A BC D E F

燈號型 LED

44 鍵盤

ADC0 ADC1 DAC0 DAC1

LED 選擇KEY 選擇

模 式 1

0123

注意操作畫面 3與 4 說明開關與按鍵選擇位置後選擇程式下載再按程式啟動如您

按下 0-3按鍵時燈號型 LED會有不同方向閃爍顯示程式停止時結束所有 IO控制動作再按回首頁選擇其他實驗 實驗四與實驗五

模式3

0 1 2 34 5 6 78 9 A BC D E F

按照上面開關選擇直接操作如果以上實驗皆能按照正常操作表示您光纖網路通訊

FPGA發展模組以能正常使用 注意 開機與關機動作順序如下

開機電腦啟動 --- eM_USB 模組電源接上 --- USB 接上電腦 ---

啟動 FPLC 軟體 --- 下載 FPGA 程式

關機關閉 FPLC 軟體 --- eM_USB 模組電源拔掉 --- 拔掉電腦 USB 接頭 ---關掉

電腦

如果以上順序有亂可能造成 USB 找不到驅動造成無法下載經過幾次測試還是

無法下載建議重新啟動電腦主機按照正確步驟操作

72

FPGA 下載操作

進入 FPLC 操作系統按照下列步驟選擇節點模組與下載 bit FPGA 檔案

在 VHDLDEMO 子目錄下您可以選擇您目前 FPGA 種類型號在此型號下我們已將 VHDL

與數位邏輯設計課本範例全部放於此處

73

光纖網路連線 FPGA 下載操作

首先利用光纖線將 eM_USB0 模組光纖輸出埠接至 eM_USB1 模組光纖輸入埠以此

類推最後再將最後 eM_USBN 模組光纖輸出埠接至 eM_USB0 模組光纖輸入埠配置

如附圖方式

個人電腦(Windows) eM_USB模組

0USB

eM_USB模組1

光纖網路

eM_USB模組2

eM_USB模組N

配置完成後進入 FPLC 系統首先必須先將 Node00 下載在 testASM 子目錄裡

piDSPv0bit 檔讓 eM_USB0 模組 FPGA 具備 DSP 功能才能執行光纖網路通訊

操作如下

此時您就可以選擇分別下載至各模組 FPGA 檔 bit

74

安裝 FPLC 注意事項

當您進入 FPLC 時

按 FILE 選擇 programhellip 選擇檔案為 exp_dcmplc 出現下面畫面

正常顯示畫面為

75

DOS 環境操作

在 PC 端的操作是在 Windows 環境中的 DOS 視窗中執行指令範例如下

eFPGA progNETbit 下載 FPGA電路至網路節點0(即 USB節點)中 eFPGA testLEDbit 1 下載 FPGA電路至網路節點1中

對於單一節點的控制程序如下

1將 eM_USB模組連結個人電腦的 USB端 2eM_USB模組開機 3執行下載指令即可 eFPGA xxxxbit 4若要更改 FPGA電路只要重新執行下載指令即可

對於多個網路節點的控制程序如下

1第一組 eM_USB模組連結個人電腦的 USB端再以光纖網路依序其他各節點 2連接 USB界面者為模組0從光纖發射端連接出去的模組為1依此類推 3將所有 eM_USB模組開機 4執行下載指令如下 eFPGA progNETbit 模組0必須先下載指定的 FPGA電路 eFPGA xxxxbit 1 再依序下載其他網路模組的 FPGA電路 eFPGA yyyybit 2 eFPGA zzzzbit 最後再重新下載模組0的 FPGA電路 5換句話說模組0必須先執行 progNETbit讓光纖網路接受 FPGA控制後才能透過光纖網路下載至其他節點等全部網路節點下載完畢後再將模組0的 FPGA重新下載讓模組0也可自由執行任意的 FPGA電路

6若要更改某一個網路節點中的 FPGA電路只要重新執行下述指令 eFPGA progNETbit 模組0必須先下載指定的 FPGA電路 eFPGA yyyybit 2 下載指定網路模組的 FPGA電路 eFPGA zzzz bit 最後再重新下載模組0的 FPGA電路 換句話說除非模組0中的 FPGA已經包括光纖網路管理電路否則一定要先在

模組0中下載網路管理電路後才能下載指定網路節點的 FPGA電路

76

光纖網路通訊 FPGA 發展系統

系統配置

光纖網路通訊 FPGA 發展系統的系統配置圖如下

個人電腦(Windows) eM_USB模組

0USB

eM_USB模組1

光纖網路

eM_USB模組2

eM_USB模組N

其中

1基本模組為 eM_USB模組可用 USB界面和個人電腦連線並提供 USB對光纖網路的轉換功能使得個人電腦可以獨立控制光纖網路中的每個網路節點

2eM_USB模組也可以作為光纖網路中的網路節點透過光纖網路而接受個人電腦的

監控 3就個人電腦而言不論是 USB界面直接連結或是以光纖網路間接連結的 eM_USB模組都是可以直接監控的網路節點最多可以同時控制一個 USB節點和 30個網路節點

4對於每一個網路節點個人電腦都可執行 eM_USB模組中 FPGA的電路下載工作並在適當的 FPGA電路配合下可執行 eM_USB模組中 FPGA內部電路的讀寫控制 5透過適當的 FPGA電路設計各網路節點都可透過光纖網路和其他任何網路節點

作同步通訊執行 FPGA內部記憶體的資料交換資料交換頻率可達 1KHz以上

77

網路模組配置

每個網路模組的標準配置圖如下

eM_USB模組光纖網路

USB eM_FPGA卡

eM_DEMO模組

eM_EXP實驗模組

DC電源

其中

1網路模組以 eM_USB模組為主提供基本的 USB界面和光纖網路連線 2eM_USB模組中的 FPGACPLD採用插卡型式可選擇不同的 eM_FPGA卡包括

eM_2V1K卡可選用 Virtex系列的 XC2V250和 XC2V1000 eM_3S1K卡可選用 Spartan3系列的 XC3S400XC3S1000和 XC3S1500 eM_3S50卡可選用 Spartan3系列的 XC3S50XC3S200和 XC3S400 eM_95XL卡可選用 9500XL系列的 XC95144XL和 XC95288XL 3eM_USB模組中的對外連線有兩種一種是 26P接頭用以連接既有的各種實驗模

組另一種是兩組 50P接頭將 FPGA中各接腳引出用以連接專題實驗 4eM_DEMO模組就是插上 50P接頭的教學模組其中包括 LED 數字顯示和 44鍵盤也具備兩組的 ADC和兩組的 DAC接頭提供類比訊號的測試工具

常用的實驗組合包括

1精簡組合包括(eM_USB+eM_FPGA)提供基本的網路節點適用於專題實驗 2標準組合包括(eM_USB+eM_FPGA+eM_DEMO)提供基礎 FPGA設計的教學實驗

3實驗組合包括(eM_USB+eM_FPGA+eM_DEMO+eM_EXP)提供進階的 FPGA實驗可依需求選用不同的實驗模組

78

eM_USB 模組

eM_USB 模組的電路配置圖如下

TxRx

DCPower

USB

JP2

JP3

光纖界面

外加電源

PC連線

JP1

eM_FPGA模組

FT232 CPLD FlashROM

SRAM

10cm

6cm

JP4

其中

1對外的連線接頭包括 DC電源 可選擇單電源(5V)或是多電源(5V+12V-12V)兩種 USB界面 直接連接個人電腦 光纖界面連接光纖網路 2實驗界面包括 JP1負責內部 CPLD的電路下載 JP2JP3兩組 50P的擴張用接頭 JP4 標準 26P接頭用以連接各種實驗模組 3內部的電路配置包括 A以 SO-DIMM接頭連接各種 eM_FPGA卡 B內附 EEPROMFlashROM和 SRAM提供 FPGA作應用測試 C以一顆 FT232BM作為 USB界面解碼而以一顆 CPLD作為光纖網路解碼 D提供各種 eM_FPGA卡的電路下載功能 4內附五顆 LED由上而下依序為 usbLED指示 USB界面的讀寫狀態 tstLED可由 FPGA電路自行定義 stsLED可由 FPGA電路自行定義 RxLED 可由 FPGA電路自行定義 TxLED 可由 FPGA電路自行定義

79

外部接腳定義

外部接頭的接點順序圖示如下

上視圖

JP11 9 JP4

126225

JP31

50249

JP21

50249

而各接頭的接點定義如下

JP1 JP4 JP2 JP3 1+33V 1+12V 2+12V 1 GND 2 GND 1 GND 2 GND 2GND 3 ADC 4 DAC 3POWER 4ALARM 3 +5V 4 +5V 3nc 5 yPB2 6 yPB3 5RxNET 6TxNET 5+12V 6+12V 4TCK 7 yPB1 6 yPB4 7RxUSB 6TxUSB 7-12V 6-12V 5nc 9 yPB0 10yPB5 9RxCAN 10TxCAN 9 ADC 10 DAC 6TDO 11yPB6 12yPB7 11P0D0 12P0D1 11P1D0 12P1D1 7TDI 13yGND 14yPC3 13P0D2 14P0D3 13P1D2 14P1D3 8nc 15yPC2 16yPC1 15P0D4 16P0D5 15P1D4 16P1D5 9TMS 17yPC0 18yPA0 17P0D6 18P0D7 17P1D6 18P1D7 19yPA1 20yPA2 19P0D8 20P0D9 19P1D8 20P1D9 21yPA3 22GND 21P0D10 22P0D11 21P1D10 22P1D11 23GND 24+5V 23P0D12 24P0D13 23P1D12 24P1D13 25+5V 26nc 25P0D14 26P0D15 25P1D14 26P1D15 27P2D0 28P2D1 27PxA0 28PxA1 29P2D2 30P2D3 29PxA2 30PxA3 31P2D4 32P2D5 31PxA4 32PxA5 33P2D6 34P2D7 33PxA6 34PxA7 35P2D8 36P2D9 35PxB0 36PxB1 37P2D10 38P2D11 37PxB2 38PxB3 39P2D12 40P2D13 39PxB4 40PxB5 41P2D14 42P2D15 41PxB6 42PxB7 43ADC0 44ADC1 43PxC0 44PxC1 45ADC2 46ADC3 45PxC2 46PxC3 47ADC4 48ADC5 47PxC4 48PxC5 49DAC0 50DAC1 49PxC6 50PxC7

80

eM_FPGA 模組

在各種 eM_FPGA 模組中FPGA 對外電路的標準配置圖如下

24576MHz

FlashROM

26PSRAM

EEPROM

mD[8]

yPA[4]

FPGACPLD

mA[19]mRDmWRmCSeeCKeeCSeeDIeeDO

光纖界面 RxNETTxNET

USB 界面 RxUSBTxUSBCLK24MPOWERALARM

LED

tstLEDstsLEDRxLEDTxLED

yPB[8]yPC[4]

ADCDAC

ADC[8]

實驗模組

ADC[2]

DAC[2]

xPA[4]

xPB[8]

xPC[4]

基礎實驗

其中

1FPGACPLD可以選擇下述幾種 XC2V250XC2V1000 採用 eM_2V1K模組其中 FPGA為 FG456包裝 XC3S400XC3S1000XC3S1500採用 eM_3S1K模組其中 FPGA為 FG456包裝 XC3S400XC3S1000XC3S1500採用 eM_3S1K模組其中 FPGA為 FG456包裝 XC3S50XC3S200XC3S400 採用 eM_3S50模組其中 FPGA為 TQ144包裝 XC95144XLXC95288XL 採用 eM_95XL模組其中 CPLD為 TQ144包裝 2採用 FG456包裝者可以控制所有的 IO界面 3採用 TQ144包裝者只是不能控制 RAM和 FlashROM而可以控制其他所有的界面 4所有 FPGA模組都可自由選擇由 USB界面或是由光纖界面下載電路但是 CPLD模組只能固定由 USB界面下載電路

5所有 FPGACPLD模組都可透過 26P接頭連接既有的各種實驗模組

81

FPGA 接腳對照表

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

mD0 XD6 mD0 A17 C13 -- -- mD1 XD7 mD1 B17 D12 -- -- mD2 XD8 mD2 C17 D11 -- -- mD3 XD9 mD3 D17 C11 -- -- mD4 XD10 mD4 E17 D10 -- -- mD5 XD11 mD5 E16 C10 -- -- mD6 XD12 mD6 E14 D9 -- -- mD7 XD13 mD7 E13 D7 -- -- mA0 XD14 mA0 D13 C7 -- -- mA1 XD15 mA1 C13 D6 -- -- mA2 XA0 mA2 V5 C3 -- -- mA3 XA1 mA3 U5 C4 -- -- mA4 XA2 mA4 Y2 D3 -- -- mA5 XA3 mA5 Y1 D4 -- -- mA6 XA4 mA6 V4 E3 -- -- mA7 XA5 mA7 V3 E4 -- -- mA8 XA6 mA8 W2 F3 -- -- mA9 XA7 mA9 W1 F4 -- -- mA10 XA8 mA10 T2 G6 -- -- mA11 XA9 mA11 T1 K3 -- -- mA12 XA10 mA12 R4 K10 -- -- mA13 XA11 mA13 R3 L3 -- -- mA14 XA12 mA14 R2 L4 -- -- mRD XRD mRD R1 D5 -- -- mWR XWR mWR P6 C6 -- --

POWER P0A0 POWER B4 B20 P1 P5 ALARM P0A1 ALARM A4 A19 P2 P6 RxNET P0A2 RxNET C4 B19 P4 P7 TxNET P0A3 TxNET C5 A18 P5 P9 RxUSB P0B0 RxUSB B5 A15 P6 P10 TxUSB P0B1 TxUSB A5 B15 P7 P11 RxCAN P0B2 RxCAN D6 A14 P8 P12 RxCAN P0B3 TxCAN C6 B14 P10 P13

CLK24M CLK24M CLK24M E12 B12 P124 P38

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

PWM0H P3A0 P0D0 E6 A8 P21 P23 PWM0L P3A1 P0D1 E5 B8 P23 P24 PWM1H P3A2 P0D2 C2 B6 P24 P25 PWM1L P3A3 P0D3 C1 A5 P25 P26 PWM2H P3A4 P0D4 D2 B5 P26 P27

82

PWM2L P3A5 P0D5 D1 A4 P27 P28 PWMenb P3A6 P0D6 E4 B4 P28 P30 PHT1Z P3A7 P0D7 E3 A3 P30 P31 PHT1A P3B0 P0D8 G2 C1 P31 P32 PHT1B P3B1 P0D9 G1 C2 P32 P33 PHT0A P3B2 P0D10 H5 D1 P33 P34 PHT0B P3B3 P0D11 J6 D2 P35 P35 AMP0 P3B4 P0D12 H4 E1 P36 P39 AMP1 P3B5 P0D13 H3 E2 P40 P40 AMP2 P3B6 P0D14 H2 F2 P41 P41 AMP3 P3B7 P0D15 H1 G1 P44 P43 eeSK P0C3 P1D0 C10 B9 P20 P22 eeCS P0C2 P1D1 D10 A9 P18 P21 eeDI P0C1 P1D2 F10 B10 P17 P20 eeDO P0C0 P1D3 E10 B11 P15 P19 ssCK P0B7 P1D4 E8 A11 P14 P17 ssCS P0B6 P1D5 E7 A12 P13 P16 ssDI P0B5 P1D6 A6 B13 P12 P15 ssDO P0B4 P1D7 B6 A13 P11 P14

ppCLK P3C0 P1D8 K4 G2 P46 P44 ppDIN P3C1 P1D9 K3 K1 P47 P45 TxD P3C2 P1D10 K2 K2 P50 P46 RxD P3C3 P1D11 K1 L1 P51 P48

tstLED P3C4 P1D12 L5 L2 P52 P49 stsLED P3C5 P1D13 L4 M1 P53 P50 RxLED P3C6 P1D14 L3 M2 P55 P51 TxLED P3C7 P1D15 L2 N1 P56 P52

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

xPA0 P2A0 P2D0 AA3 N2 P59 P53 xPA1 P2A1 P2D1 Y4 T1 P60 P54 xPA2 P2A2 P2D2 AA4 T2 P63 P56 xPA3 P2A3 P2D3 AB4 U2 P68 P57 xPC0 P2A4 P2D4 W5 V1 P69 P58 xPC1 P2A5 P2D5 Y5 V2 P70 P59 xPC2 P2A6 P2D6 AA5 W1 P73 P60 xPC3 P2A7 P2D7 AB5 W2 P74 P61

-- P2B0 P2D8 V6 Y1 P76 P64 -- P2B1 P2D9 V7 Y2 P77 P66 -- P2B2 P2D10 W6 AA3 P78 P68

mCS P2B3 P2D11 Y6 AB4 P79 P69 mA15 P2B4 P2D12 V9 AA4 P80 P70 mA16 P2B5 P2D13 V10 AB5 P82 P71 mA17 P2B6 P2D14 W10 AA5 P83 P74 mA18 P2B7 P2D15 Y10 AA6 P84 P75 CS0 P2C0 ADC0 AA10 AB8 P85 P76

83

SDIN0 P2C1 ADC1 AB10 AA8 P86 P77 CS1 P2C2 ADC2 U10 AB9 P87 P78

SDIN1 P2C3 ADC3 U11 AA9 P89 P79 SCLK P2C4 ADC4 V11 AB10 P90 P80 CS2 P2C5 ADC5 W11 AA10 P92 P81

SDOUT P2C6 ADC6 Y11 AB11 P93 P82 LDAC P2C7 ADC7 AA11 AA11 P95 P83

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

xPB0 P1A0 PxA0 M1 M3 P135 P85 xPB1 P1A1 PxA1 M2 M4 P132 P86 yPB2 P1A2 PxA2 M3 N3 P131 P87 yPB3 P1A3 PxA3 M4 N4 P130 P88 yPB1 P1A4 PxA4 M5 T4 P129 P91 yPB4 P1A5 PxA5 M6 T5 P128 P92 yPB0 P1A6 PxA6 N1 U3 P127 P93 yPB5 P1A7 PxA7 N2 U4 P125 P94 yPB6 P1B0 PxB0 U13 V3 P119 P95 yPB7 P1B1 PxB1 V13 V4 P118 P96 xPB2 P1B2 PxB2 W13 W3 P116 P97 xPB3 P1B3 PxB3 Y13 W4 P113 P98 xPB4 P1B4 PxB4 AA13 Y3 P112 P100 xPB5 P1B5 PxB5 AB13 Y4 P96 P101 yPC3 P1B6 PxB6 U12 Y5 P97 P102 yPC2 P1B7 PxB7 V12 W5 P98 P103 yPC1 P1C7 PxC0 AB17 W11 P108 P113 yPC0 P1C6 PxC1 AA17 Y11 P107 P112 yPA0 P1C5 PxC2 Y17 W10 P105 P111 yPA1 P1C4 PxC3 W17 Y10 P104 P110 yPA2 P1C3 PxC4 AB18 W9 P103 P107 yPA3 P1C2 PxC5 AA18 W8 P102 P106 xPB6 P1C1 PxC6 Y18 W6 P100 P105 xPB7 P1C0 PxC7 W18 Y6 P99 P104

84

eM_DEMO 模組

eM_DEMO 模組的電路配置圖如下

eM_USB 模組

數字型 LED

0 1 2 34 5 6 78 9 A BC D E F

燈號型 LED

44 鍵盤

ADC0 ADC1 DAC0 DAC1

LED 選擇KEY 選擇

其中

1eM_DEMO模組的基本功能包括 A將 xPAxPBxPC等 16個 IO訊號引出控制 LED和鍵盤電路 B將 ADDA訊號引出並放大成+-10V的工作範圍 2LED和鍵盤可以選擇三種模式由 LED和 KEY 兩組開關作選擇圖示如下

模式1

0123

模式2 模式3

0 1 2 34 5 6 78 9 A BC D E F

0123

3模式14鍵輸入並搭配 16點的 LED燈號顯示其中 16點 LED分別對映到 xPA[0~3]xPB[0~7]和 xPC[0~3] 4組按鍵分別對映到 xPC[0~3] 4模式24鍵輸入並搭配四個 7段式數字顯示其中 數字顯示由 xPA[0~3]作數字掃瞄而由 xPB[0~7]作 7段式 LED控制 4組按鍵 分別對映到 xPC[0~3] 5模式316鍵輸入並搭配四個 7段式數字顯示其中 數字顯示由 xPA[0~3]作數字掃瞄而由 xPB[0~7]作 7段式 LED控制 16組按鍵由 xPA[0~3]作鍵盤掃瞄而由 xPC[0~3]作鍵盤讀取 6根據VHDL與數位邏輯設計的章節其中 第 1章至 10章的實驗採用模式1而 第 11章實驗採用模式2而 第 12章之後的實驗都採用模式3

85

FPGA UCF 定義

eM_3S1K 模組

NET CLK LOC = B12

NET XAlt0gt LOC = N2

NET XAlt1gt LOC = T1

NET XAlt2gt LOC = T2

NET XAlt3gt LOC = U2

NET XBlt0gt LOC = M3

NET XBlt1gt LOC = M4

NET XBlt2gt LOC = W3

NET XBlt3gt LOC = W4

NET XBlt4gt LOC = Y3

NET XBlt5gt LOC = Y4

NET XBlt6gt LOC = W6

NET XBlt7gt LOC = Y6

NET XClt0gt LOC = V1

NET XClt1gt LOC = V2

NET XClt2gt LOC = W1

NET XClt3gt LOC = W2

NET YAlt0gt LOC = W10

JP4 接頭

NET YAlt1gt LOC = Y10

NET YAlt2gt LOC = W9

NET YAlt3gt LOC = W8

NET YBlt0gt LOC = U3

NET YBlt1gt LOC = T4

NET YBlt2gt LOC = N3

NET YBlt3gt LOC = N4

NET YBlt4gt LOC = T5

NET YBlt5gt LOC = U4

NET YBlt6gt LOC = V3

NET YBlt7gt LOC = V4

NET YClt0gt LOC = Y11

NET YClt1gt LOC = W11

NET YClt2gt LOC = W5

NET YClt3gt LOC = Y5

在光碟片中 RFFPGAVHDLDEMOBIT3S1K 裡有 VHDL 與數位邏輯設計書本範例原始檔與合成檔

86

eM_3S50 模組

NET CLK LOC = P124

NET XAlt0gt LOC = P59

NET XAlt1gt LOC = P60

NET XAlt2gt LOC = P63

NET XAlt3gt LOC = P68

NET XBlt0gt LOC = P135

NET XBlt1gt LOC = P132

NET XBlt2gt LOC = P116

NET XBlt3gt LOC = P113

NET XBlt4gt LOC = P112

NET XBlt5gt LOC = P96

NET XBlt6gt LOC = P100

NET XBlt7gt LOC = P99

NET XClt0gt LOC = P69

NET XClt1gt LOC = P70

NET XClt2gt LOC = P73

NET XClt3gt LOC = P74

NET YAlt0gt LOC = P105

JP4 接頭

NET YAlt1gt LOC = P104

NET YAlt2gt LOC = P103

NET YAlt3gt LOC = P102

NET YBlt0gt LOC = P127

NET YBlt1gt LOC = P129

NET YBlt2gt LOC = P131

NET YBlt3gt LOC = P130

NET YBlt4gt LOC = P128

NET YBlt5gt LOC = P125

NET YBlt6gt LOC = P119

NET YBlt7gt LOC = P118

NET YClt0gt LOC = P107

NET YClt1gt LOC = P108

NET YClt2gt LOC = P98

NET YClt3gt LOC = P97

在光碟片中 RFFPGAVHDLDEMOBIT3S200 裡有VHDL與數位邏輯設計書本範例原始檔與合成檔

87

eM_95XL 模組

NET CLK LOC = SPIN38

NET XAlt0gt LOC = SPIN53

NET XAlt1gt LOC = SPIN54

NET XAlt2gt LOC = SPIN56

NET XAlt3gt LOC = SPIN57

NET XBlt0gt LOC = SPIN85

NET XBlt1gt LOC = SPIN86

NET XBlt2gt LOC = SPIN97

NET XBlt3gt LOC = SPIN98

NET XBlt4gt LOC = SPIN100

NET XBlt5gt LOC = SPIN101

NET XBlt6gt LOC = SPIN105

NET XBlt7gt LOC = SPIN104

NET XClt0gt LOC = SPIN58

NET XClt1gt LOC = SPIN59

NET XClt2gt LOC = SPIN60

NET XClt3gt LOC = SPIN61

NET YAlt0gt LOC = SPIN111

JP4 接頭

NET YAlt1gt LOC = SPIN110

NET YAlt2gt LOC = SPIN107

NET YAlt3gt LOC = SPIN106

NET YBlt0gt LOC = SPIN93

NET YBlt1gt LOC = SPIN91

NET YBlt2gt LOC = SPIN87

NET YBlt3gt LOC = SPIN88

NET YBlt4gt LOC = SPIN92

NET YBlt5gt LOC = SPIN94

NET YBlt6gt LOC = SPIN95

NET YBlt7gt LOC = SPIN96

NET YClt0gt LOC = SPIN112

NET YClt1gt LOC = SPIN113

NET YClt2gt LOC = SPIN103

NET YClt3gt LOC = SPIN102

在光碟片中 RFFPGAVHDLDEMOSVF95288XL 裡有VHDL與數位邏輯設計書本範例原始檔與合成

檔案

88

eM_FPGA 模組

NET CLK LOC = E12

NET XAlt0gt LOC = AA3

NET XAlt1gt LOC = Y4

NET XAlt2gt LOC = AA4

NET XAlt3gt LOC = AB4

NET XBlt0gt LOC = M1

NET XBlt1gt LOC = M2

NET XBlt2gt LOC = W13

NET XBlt3gt LOC = Y13

NET XBlt4gt LOC = AA13

NET XBlt5gt LOC = AB13

NET XBlt6gt LOC = Y18

NET XBlt7gt LOC = W18

NET XClt0gt LOC = W5

NET XClt1gt LOC = Y5

NET XClt2gt LOC = AA5

NET XClt3gt LOC = AB5

NET YAlt0gt LOC = Y17

JP4 接頭

NET YAlt1gt LOC = W17

NET YAlt2gt LOC = AB18

NET YAlt3gt LOC = AA18

NET YBlt0gt LOC = N1

NET YBlt1gt LOC = M5

NET YBlt2gt LOC = M3

NET YBlt3gt LOC = M4

NET YBlt4gt LOC = M6

NET YBlt5gt LOC = N2

NET YBlt6gt LOC = U13

NET YBlt7gt LOC = V13

NET YClt0gt LOC = AA17

NET YClt1gt LOC = AB17

NET YClt2gt LOC = V12

NET YClt3gt LOC = U12

在光碟片中 RFFPGAVHDLDEMOBIT2V250 裡有VHDL與數位邏輯設計書本範例原始檔與合成檔

89

Page 31: RFFPGA 直流馬達實驗手冊juniortek.com.tw/program/manual/RF-DC-mal.pdf · em_demo模組 em_dcm 直流伺服馬達 dc電源 rffpga 系統的直流馬達實驗規劃 其中包括:

光電盤精度 最高轉速 抽樣頻率 速度單

速度範圍 量化誤差

500PPR 3000RPM 1KHz 30RPM +-100 05 500PPR 3000RPM 2KHz 60RPM +-50 1 500PPR 3000RPM 4KHz 120RPM +25 2

過溢現象的處理

輸入

輸出

32767

-32768

整數運算都有數值範圍限制以 16-bit 整數而言輸入輸出的關係如下

其中

1當超過正負數的上下限時數值會正負顛倒例如 +32768 將會視為 -32768作處理而 +32769 將會視為 -32768作處理依此類推 2換句話說16-bit的整數運算只有在+-32767之間是線性的對映關係而超過這個範圍就是非線性的對映關係

3不但如此還因為正負顛倒的現象使得原來設計的負回授控制將變為正回授控制

而產生非線性的震盪現象 4換句話說只要計算上稍一不慎就會使得原先穩定的系統產生不穩定的震盪結果

為了避免過溢現象所造成的不穩定問題通常控制系統中會利用飽和處理作改善圖示

如下

輸入

輸出

lmtH

lmtL

31

其中

1當超過計算的上限時將固定設為上限值處理而當超過計算的下限時也將固定

設為下限值處理 2這時的整數運算只有在上下限之間是線性的對映關係而超過這個範圍將還是非線

性的對映關係 3雖然如此但是因為沒有正負顛倒的現象所以不再會有負回授變為正回授的問題

而避免了非線性的震盪現象 4換句話說飽和處理是針對過溢現象的妥協處理方案雖然不完全理想但是是可

接受的最佳選擇

下面是對映的組合語言範例

RD x x為輸入端 MIN lmtH 取得 x和 lmtH中的較小值即是作上限保護的工作 MAX lmtL 取得 x和 lmtL中的較大值即是作下限保護的工作 WR y Y為輸出端 其中

1組合語言中提供MAX和MIN的計算其中 MIN lmtH 比較 AX暫存器和 lmtH而將較低值存入 AX暫存器中 MAX lmtL 比較 AX暫存器和 lmtH而將較高值存入 AX暫存器中 2所以直接可用MIN指令作上限保護而以MAX指令作下限保護兩者合併後即是

完整的飽和處理結果

飽和處理通常應用在高位數轉成低位數的場合例如32-bit轉換成16-bit或是16-bit

轉換成 12-bit 等等例如在本實驗中所有的運算都是以 16-bit 整數作處理但是到

PWM 驅動級輸出時卻要轉換成 12-bit精度的 PWM 命令所以必須先用飽和處理以避免

過溢現象造成的不穩定問題

32

61 實驗 1-開迴路的電壓控制 實驗說明以電壓直接控制轉速的開迴路特性可簡化為一階系統處理方塊圖如

sτ+1

v km ωm

其中V 送給驅動器的 PWM電壓命令

ωm馬達的轉動速度可由處理 photo encoder信號所得的位置微分而得 km一階系統的穩態增益 τ一階系統的時間常數即步階響應中的上升時間

為了觀測直流馬達的開環路特性建立下面的測試方塊圖

其中

1所使用的模組包括 FG1方波產生器產生所需的步階測試波形 FT1馬達模擬以一階系統的低通濾波器來執行 IO1光電盤的回授處理可同時取得轉角和速度的量測值 IO2PWM電壓驅動直接驅動直流馬達作控制 Led四位數字七段顯示模組顯示波形信號資料 2測試目標有兩項(P 參數設定欄)包括 A調整方波命令控制直流馬達作開環路的 PWM電壓控制 B調整馬達模擬參數使模擬結果和實驗結果相符以確認開環路特性

33

實驗畫面顯示如下

測試一 開環路的電壓控制 記錄頻道 CH1電壓命令Y1=-300DY=500 CH2模擬速度Y2=-100DY=500 CH3馬達速度Y3=100DY=50 CH4馬達轉角Y4=300DY=50000 實驗參數 FG1kAMP=256電壓命令的測試振幅 FG1kFRQ=150電壓命令的測試頻率 FT1DT =10 馬達模擬參數 FT1KA =500馬達模擬參數

其中

1用示波器功能記錄四個頻道其中 CH2和 CH3重疊顯示以比較模擬速度和量測

速度之間的差異 2由於 Km 不等於 1所以必須調整 CH3的 Y軸單位才能使得 CH2和 CH3的穩態響應部分重疊

3實驗時可以改變 FG1的參數以調整測試方波的振幅和頻率 4可以調整 FT1的參數使得 CH2和 CH3的暫態響應部分重疊

根據實際的測試結果分析如下

2馬達模擬的參數調整到 DT=10而 KA=500根據公式 τ = 40961000dtka 所以上升時間(τ)為 0082秒或是 82ms 3CH2CH3的 Y軸單位並不一致顯然 Km 不等於 1經計算確認 Km=0098

對應之 plc檔程式說明(exp_pwmplc) echo off 畫面顯示開始

run dsp 0 選擇 DSP1

run stop run reset 既有程式停止

run testDCMmem 下載指定程式

das 1 ampfg1out 0 1024 PWM 波形 Volt 設定 DAS 頻道1

das 2 ampft1lp 0 1024 馬達模擬 Volt 設定 DAS 頻道2

das 3 ampio1spd 0 1024 馬達速度 Volt 設定 DAS 頻道3

das 4 ampio1ang 0 1024 馬達角度 Volt 設定 DAS 頻道4

plot select 0 設定示波器頁數

plot xunit 100000 0 設定示波器 X軸

plot yunit 1 500 -300 設定示波器 Y1 軸

34

plot yunit 2 500 -100 設定示波器 Y2 軸

plot yunit 3 50 100 設定示波器 Y3 軸

plot yunit 4 50000 300 設定示波器 Y4 軸

plot trigger 1 0 1 10 設定示波器觸發

plot scope 9 1 2 3 4 設定示波器顯示

module io2 設定 io2 模組

s cmd ampfg1out

module fg1 設定 fg1 模組

s kAmp 256 s kFrq 150

module ft1 設定 ft1 模組

s u ampfg1out s dt 10 s ka 500

module io3 設定 io3 模組

s led ampfg1out

module 回復預設模組

run 1khz 設定抽樣頻率為 4KHz

run start DSP 開始執行

das stop pause 1 DAS 啟動 das start DAS 啟動

echo on 回復正常訊息顯示

使用者可視情況調整一階濾波器的 ka和 dt值使得 ch2和 ch3 兩組波形完全相符

以求得開迴路系統近似的一階轉移函數 CAI操控設計畫面規劃如下(EXP_PWMCAI) page 1 畫面設計

35

page 2 畫面設計 page 3 畫面設計

36

實測響應圖

訊 號 說 明 訊 號 說 明 ch1 方波產生器訊號 ch3 一階濾波器輸出信號 ch2 馬達角速度訊號 ch4 馬達角位置訊號

直流馬達之開迴路電壓控制響應圖

37

以邏輯分析功能觀測直流馬達之光電盤輸入與 PWM輸出信號

38

62 實驗 2-閉迴路的速度控制 實驗說明為了觀測閉迴路的速度控制響應建立下面的測試方塊圖

加入 PD控制後系統閉迴路的轉移函數經適度的簡化仍能約略以一階系統

處理方塊圖如下

sτ+1

u km ωm

其中

u 送給控制器的速度命令

ωm馬達的轉動速度可由處理 photo encoder 信號所得的位置微分而得

km一階系統的穩態增益 τ一階系統的時間常數即步階響應中的上升時間

方塊圖中的模組功能說明如下

1用 fg1 產生測試用的方波速度命令

2將方波速度命令和速度回授訊號送到 PD 控制器方塊中產生電壓控制訊號再透

過 io2 模組將訊號送出給伺服介面

3用 ft1 建立對照用的一階系統可用 IIR1濾波器方塊產生

4將方波命令產生速度命令再觀測 PHT(io1)上的速度值 spd

5調整 IIR1濾波器的參數使得兩組波形完全相符這時 IIR1濾波器就是閉迴路

速度控制的特性其中 km 為增益而τ為上升時間(單位為 sec)

6增益 km 可從示波器中作簡單計算而上升時間(τ=40964000dtka)

7 Led四位數字七段顯示模組顯示波形信號資料

39

對應之 plc檔程式說明(exp_speedplc) echo off 畫面顯示開始

run dsp 0 選擇 DSP1

run stop run reset 既有程式停止

run testDCMmem 下載指定程式

das 1 ampfg1out 0 1024 PWM 波形 Volt 設定 DAS 頻道1

das 2 ampft1lp 0 1024 馬達模擬 Volt 設定 DAS 頻道2

das 3 ampio1spd 0 1024 馬達速度 Volt 設定 DAS 頻道3

das 4 ampio1ang 0 1024 馬達角度 Volt 設定 DAS 頻道4

plot select 0 設定示波器頁數

plot xunit 100000 0 設定示波器 X軸

plot yunit 1 50 -300 設定示波器 Y1 軸

plot yunit 2 50 -100 設定示波器 Y2 軸

plot yunit 3 50 100 設定示波器 Y3 軸

plot yunit 4 50000 300 設定示波器 Y4 軸

plot trigger 1 0 1 10 設定示波器觸發

plot scope 9 1 2 3 4 設定示波器顯示

module io2 設定 io2 模組

s cmd ampcn2out

module fg1 設定 fg1 模組

s kAmp 50 s kFrq 150

module cn2 設定 cn1 模組

s cmd ampfg1out s fdk ampio1spd s kp 0x4000

module ft1 設定 ft1 模組

s u ampfg1out s dt 2 s ka 320

module io3 設定 io3 模組

s led ampfg1out

module 回復預設模組

run 1khz 設定抽樣頻率為 4KHz

run start DSP 開始執行

das stop pause 1 DAS 啟動 das start DAS 啟動

echo on 回復正常訊息顯示

CAI操控設計畫面規劃如下(EXP_speedCAI)

40

page 1 畫面設計 page 2 與 page 3 畫面設計與實驗一 page 2 與 page 3相同畫面 page 4 畫面設計

41

方塊的參數設定 使用者可視情況調整一階濾波器的 ka和 dt值使得 ch2和 ch3 兩組波形完全相符

以求得此一閉迴路系統近似的一階轉移函數或調整 PD控制器中的 kp和 kp值以調整系統之響應 實測響應圖

訊 號 說 明 訊 號 說 明 ch1 方波產生器產生之速度命令 ch3 一階濾波器輸出信號 ch2 馬達角速度訊號 ch4 馬達角位置訊號

42

直流馬達之閉迴路速度控制響應圖

43

63 實驗 3-閉迴路的位置控制 實驗說明為了觀測閉迴路的位置控制響應將直流馬達的回授改為位置訊號

建立下面的測試方塊圖 方塊圖中的模組功能說明如下

1用 fg1產生測試用的方波位置命令 2將方波位置命令和位置回授訊號送到 PD控制器方塊中產生電壓控制訊號再透過 io2模組將訊號送出到伺服介面驅動馬達轉動

對應之 plc檔程式說明(exp_angleplc) echo off 畫面顯示開始

run dsp 0 選擇 DSP1

run stop run reset 既有程式停止

run testDCMmem 下載指定程式

das 1 ampfg1out 0 1024 PWM 波形 Volt 設定 DAS 頻道1

das 2 ampft1lp 0 1024 馬達模擬 Volt 設定 DAS 頻道2

das 3 ampio1spd 0 1024 馬達速度 Volt 設定 DAS 頻道3

das 4 ampio1ang 0 1024 馬達角度 Volt 設定 DAS 頻道4

plot select 0 設定示波器頁數

plot xunit 100000 0 設定示波器 X軸

plot yunit 1 1000 -300 設定示波器 Y1 軸

plot yunit 2 1000 -100 設定示波器 Y2 軸

plot yunit 3 20 100 設定示波器 Y3 軸

plot yunit 4 1000 300 設定示波器 Y4 軸

plot trigger 1 0 1 10 設定示波器觸發

44

plot scope 9 1 2 3 4 設定示波器顯示

module io2 設定 io2 模組

s cmd ampcn2out

module fg1 設定 fg1 模組

s kAmp 1000 s kFrq 75

module cn2 設定 cn1 模組

s cmd ampfg1out s fdk ampio1ang s kp 0x300 s kd 0x4000

module ft1 設定 ft1 模組

s u ampfg1out s dt 2 s ka 320

module io3 設定 io3 模組

s led ampfg1out

module 回復預設模組

run 1khz 設定抽樣頻率為 4KHz

run start DSP 開始執行

das stop pause 1 DAS 啟動 das start DAS 啟動

echo on 回復正常訊息顯示

CAI操控設計畫面規劃如下(EXP_angleCAI) page 1 畫面設計

45

page 2 與 page 3 畫面設計與實驗一 page 2 與 page 3相同畫面 page 4 畫面設計與實驗二 page 4 畫面 方塊的參數設定 延續上一實驗的說明使用者可以調整 PD控制器中的 kp和 kd值以調整系統之

響應 實測響應圖

訊 號 說 明 訊 號 說 明 ch1 方波產生器產生之位置命令 ch3 馬達角速度訊號 ch2 馬達角位置 ch4 Pd控制器輸出之電壓訊號

46

直流馬達之閉迴路位置控制響應圖

47

64 實驗 4-加減速的位置控制 實驗說明為避免方波命令的過於嚴苛在方波命令的輸出加入一加減速控制功

能方塊以減緩命令變化的幅度增加馬達運動的平順建立的測試方塊圖如下

方塊圖中的模組功能說明如下

1用 fg1產生測試用的方波位置命令 2將方波位置命令送到加減速控制方塊處理後產生新的位置命令再將新的位置命

令與位置回授訊號送到 PD控制器方塊中產生電壓控制訊號最後透過 io2模組將訊號送出到伺服介面驅動馬達轉動

對應之 plc檔程式說明(exp_accplc) echo off 畫面顯示開始

run dsp 0 選擇 DSP1

run stop run reset 既有程式停止

run testDCMmem 下載指定程式

das 1 ampfg1out 0 1024 PWM 波形 Volt 設定 DAS 頻道1

das 2 ampcn1out 0 1024 加速控制 Volt 設定 DAS 頻道2

das 3 ampio1spd 0 1024 馬達速度 Volt 設定 DAS 頻道3

das 4 ampio1ang 0 1024 馬達角度 Volt 設定 DAS 頻道4

plot select 0 設定示波器頁數

plot xunit 100000 0 設定示波器 X軸

plot yunit 1 2000 -300 設定示波器 Y1 軸

plot yunit 2 2000 -100 設定示波器 Y2 軸

plot yunit 3 50 100 設定示波器 Y3 軸

plot yunit 4 2000 300 設定示波器 Y4 軸

48

plot trigger 1 0 1 10 設定示波器觸發

plot scope 9 1 2 3 4 設定示波器顯示

module io2 設定 io2 模組

s cmd ampcn2out

module fg1 設定 fg1 模組

s kAmp 2000 s kFrq 150

module cn1 設定 cn1 模組

s cmd ampfg1out

module cn2 設定 cn2 模組

s cmd ampcn1out s fdk ampio1ang s kp 0x300 s kd 0x4000

module ft1 設定 ft1 模組

s u ampfg1out s dt 2 s ka 320

module io3 設定 io3 模組

s led ampfg1out

module 回復預設模組

run 1khz 設定抽樣頻率為 4KHz

run start DSP 開始執行

das stop pause 1 DAS 啟動 das start DAS 啟動

echo on 回復正常訊息顯示

CAI操控設計畫面規劃如下(EXP_accCAI) page 1 畫面設計

49

page 2 畫面設計與實驗一 page 2相同畫面 page 3 畫面設計與實驗二 page 4相同畫面

參數設定參考之前各實驗的說明可線上機動性的調整 PD控制器中的 kp和 kd值以調整系統之響應 實測響應圖

訊 號 說 明 訊 號 說 明 ch1 方波產生器產生之位置命令 ch3 馬達角位置 ch2 加減速模組輸出之位置命令 ch4 馬達角速度訊號

50

圖一 直流馬達經加減速控制後之閉迴路控制響應圖

51

65 實驗 5-正弦波的位置控制 實驗說明在本實驗中改變命令的波形由方波改變為正弦波並建立如下的測

試方塊圖與上一實驗相比較僅更改命令的波形產生方塊 方塊圖中的模組功能說明如下 1用 fg2產生測試用的弦波位置命令 2將弦波位置命令送到加減速控制方塊處理後產生新的位置命令再與 io1 讀入的位

置回授訊號送到 PD 控制器方塊中產生電壓控制訊號再透過 io2 模組將訊號送出到伺服介面驅動馬達轉動

對應之 plc檔程式說明(exp_sinplc) echo off 畫面顯示開始

run dsp 0 選擇 DSP1

run stop run reset 既有程式停止

run testDCMmem 下載指定程式

das 1 ampfg2out 0 1024 SIN 波形 Volt 設定 DAS 頻道1

das 2 ampcn1out 0 1024 加速控制 Volt 設定 DAS 頻道2

das 3 ampio1spd 0 1024 馬達速度 Volt 設定 DAS 頻道3

das 4 ampio1ang 0 1024 馬達角度 Volt 設定 DAS 頻道4

plot select 0 設定示波器頁數

plot xunit 100000 0 設定示波器 X軸

plot yunit 1 2000 -300 設定示波器 Y1 軸

plot yunit 2 2000 -100 設定示波器 Y2 軸

plot yunit 3 50 100 設定示波器 Y3 軸

plot yunit 4 2000 300 設定示波器 Y4 軸

plot trigger 1 0 1 10 設定示波器觸發

52

plot scope 9 1 2 3 4 設定示波器顯示

module io2 設定 io2 模組

s cmd ampcn2out

module fg2 設定 fg1 模組

s kAmp 2000 s kFrq 100

module cn1 設定 cn1 模組

s cmd ampfg2out

module cn2 設定 cn2 模組

s cmd ampcn1out s fdk ampio1ang s kp 0x300 s kd 0x4000

module ft1 設定 ft1 模組

s u ampfg2out s dt 2 s ka 320

module io3 設定 io3 模組

s led ampfg2out

module 回復預設模組

run 1khz 設定抽樣頻率為 4KHz

run start DSP 開始執行

das stop pause 1 DAS 啟動 das start DAS 啟動

echo on 回復正常訊息顯示

CAI操控設計畫面規劃如下(EXP_sinCAI) page 1 畫面設計

53

page 2 畫面設計 page 3 畫面設計與實驗二 page 4相同畫面

方塊的參數設定可調整 PD控制器中的 kp和 kd值以調整系統之響應 實測響應圖

訊 號 說 明 訊 號 說 明 ch1 弦波產生器產生之位置命令 ch3 馬達角位置訊號 ch2 加減速模組輸出之位置命令 ch4 馬達角速度訊號

54

直流馬達之閉迴路弦波加減速位置控制響應圖

55

7組合語言說明

本節將針對 DC馬達伺服控制實驗專用的程式模組進行功能與程式碼的說明其

有關於波形產生器與資料擷取模組等說明如下

SIN_waveasm 正弦波產生器 PWM_waveasm 方波產生器 IIR1_filterasm 一階濾波器 DAS4asm 資料蒐集模組

弦波產生器

此模組會產生週期性的正弦波方塊圖如下

outfrq

kBiasbias

ampkAmp

kFrqth

kThf=1TB

θ

A

其中

1正弦波有四個參數振幅(A)頻率(F)相位(θ)和偏移(B)其公式為 out = A sin(2πF t +θ) + B 2對於單純的正弦波產生器所對映的參數包括 kAmp 振幅值 kFrq 頻率值kFrq=655368000Hz其中 Hz的範圍為 0~4000例如 1000Hz =gt frq=8192 100Hz =gt frq=819 10Hz =gt frq=82 1Hz =gt frq=8 kTh 相角值0~255代表 0~360的相位當 th=0 時為正弦波 th=64 時為餘弦波 th=128時為反相波依此類推 kBias偏移值 3對於可調變的正弦波產生器其對映的輸入點為 amp 控制振幅的輸入點可產生調幅(AM)波形 frq 控制頻率的輸入點可產生調頻(FM)波形 th 控制相位的輸入點可產生調相(PM)波形 bias控制偏移的輸入點可產生雙頻混波(相加)波形 4若不使用調變功能時各個輸入點時的預設值為 amp 指向 kAmp 的位址 frq 指向 kFrq 的位址

56

th 指向 kTh 的位址 bias指向 kBias的位址

模組程式範例SIN_WAVEasm

local amp R0 IP kAmp 輸入點sin波的振幅 local frq R1 IP kFrq 輸入點sin波的頻率 local th R2 IP kTh 輸入點sin波的相角 local bias R3 IP kBias 輸入點sin波的中心偏移 local out R4 OP 輸出點sin波輸出 local tab R5 TP 表格指標指向 sin[256]的表格 local ang R6 內部變數相位角65536=360deg local kAmp R7 1000 參數振幅值 local kFrq R8 1000 參數頻率值=655368000Hz local kTh R9 0 參數相角值360deg=256 local kBias R10 0 參數偏移值 data 11 模組變數區長度及初值 initial 啟動程序 WR ang0 WR out0 ang=out=0 RET timer 即時控制程序(8KHz) RD ang ADD (frq) WR ang ang+=frq SFR 8 ADD (th) AND 255 ACC=sin(ang256+th) ADD tab WRH RDM table-look-up MUL (amp) SFR 12 ADD (bias) WR out out=ACCamp4096+bias RET table tab 256 sin[256]表格區10=4096 0 101 201 301 401 501 601 700 00~070deg 799 897 995 1092 1189 1285 1380 1474 08~0F 1567 1660 1751 1842 1931 2019 2106 2191 10~17 2276 2359 2440 2520 2598 2675 2751 2824 18~1F 2896 2967 3035 3102 3166 3229 3290 3349 20~27 3406 3461 3513 3564 3612 3659 3703 3745 28~2F 3784 3822 3857 3889 3920 3948 3973 3996 30~37 4017 4036 4052 4065 4076 4085 4091 4095 38~3F 4096 4095 4091 4085 4076 4065 4052 4036 40~4790deg 4017 3996 3973 3948 3920 3889 3857 3822 48~4F 3784 3745 3703 3659 3612 3564 3513 3461 50~57 3406 3349 3290 3229 3166 3102 3035 2967 58~5F

57

2896 2824 2751 2675 2598 2520 2440 2359 60~67 2276 2191 2106 2019 1931 1842 1751 1660 68~6F 1567 1474 1380 1285 1189 1092 995 897 70~77 799 700 601 501 401 301 201 101 78~7F 0 65435 65335 65235 65135 65035 64935 64836 80~87180deg 64737 64639 64541 64444 64347 64251 64156 64062 88~8F 63969 63876 63785 63694 63605 63517 63430 63345 90~97 63260 63177 63096 63016 62938 62861 62785 62712 98~9F 62640 62569 62501 62434 62370 62307 62246 62187 A0~A7 62130 62075 62023 61972 61924 61877 61833 61791 A8~A8 61752 61714 61679 61647 61616 61588 61563 61540 B0~B7 61519 61500 61484 61471 61460 61451 61445 61441 B8~BF 61440 61441 61445 61451 61460 61471 61484 61500 C0~C7270deg 61519 61540 61563 61588 61616 61647 61679 61714 C8~CF 61752 61791 61833 61877 61924 61972 62023 62075 D0~D7 62130 62187 62246 62307 62370 62434 62501 62569 D8~DF 62640 62712 62785 62861 62938 63016 63096 63177 E0~E7 63260 63345 63430 63517 63605 63694 63785 63876 E8~EF 63969 64062 64156 64251 64347 64444 64541 64639 F0~F7 64737 64836 64935 65035 65135 65235 65335 65435 F8~FF

就程式結構而言說明如下

timer 即時控制程序(8KHz) RD ang ADD (frq) WR ang ang+=frq SFR 8 ADD (th) AND 255 ACC=sin(ang256+th) ADD tab WRH RDM table-look-up MUL (amp) SFR 12 ADD (bias) WR out out=ACCamp4096+bias RET

1基本上我們以查表法計算 sin()其輸入θ的範圍為 0~255對映到 0~360deg其輸出 sin(θ)的範圍為+-4096對映到+-10的範圍

2建立一個內部變數 ang其範圍為 0~65535對映到 0~360的相位角 3每個timer程序都執行 ang+=frq的動作更新目前的相位角接著依照 ang的相位角查表得到 sin(ang256+th)值

4由於表格長度為 256-word所以必須將 ang256才能得到正確的對映關係而 th範圍為 0~255所以不需要像 ang一般的做額外處理

5sin()的範圍為(+1-1)而在表格中以(+4096~-4096)的型式記錄相當於 10=4096所以執行 Asin()時還要用 SFR12指令做4096的動作才能正確的取得輸出值

58

6就頻率輸入 frq而言其計算原則是將θ=ωt轉化成θ=Σ(ωdt)因為抽樣頻率

為 8KHz所以 dt=18000而得到 frq=655368000Hz公式其中 Hz為真正的頻率在 8KHz的抽樣頻率下其範圍為 0~4000

鋸齒波產生器

此模組會產生週期性的鋸齒波方塊圖如下

outfrq

kBiasbias

ampkAmp

kFrqth

kThf=1TB

θ

A

其中

1鋸齒波也有四個參數振幅(A)頻率(F)相位(θ)和偏移(B)和正弦波的定義完全一致唯一的差異是其輸出為鋸齒波而非正弦波

2基本波形是從週期開始時為 0一直遞增到週期結束時到達最高點然後立刻回歸

到 0重新開始 3以程式結構而論鋸齒波程式幾乎就是正弦波的相位計算部分只差沒有正弦波的

查表處理而已

模組程式範例SAW_WAVEasm

local amp R0 IP kAmp 輸入點sin波的振幅 local frq R1 IP kFrq 輸入點sin波的頻率 local th R2 IP kTh 輸入點sin波的相角 local bias R3 IP kBias 輸入點sin波的中心偏移 local out R4 OP 輸出點sin波輸出 local ang R5 內部變數相位角65536=360deg local kAmp R6 1000 參數振幅值 local kFrq R7 1000 參數頻率值=655368000Hz local kTh R8 0 參數相角值360deg=256 local kBias R9 0 參數偏移值 data 11 模組變數區長度及初值 initial 啟動程序 WR ang0 WR out0 ang=out=0 RET timer 即時控制程序(8KHz) RD ang ADD (frq) WR ang ang+=frq SFR 8 ADD (th) AND 255 ACC=(ang256+th)amp0x00ff MUL (amp) SFR 8 ADD (bias) WR out out=ACCamp256+bias

59

RET

脈衝波產生器

outfrq

kBiasbias

ampkAmp

kFrqth

kThf=1TB

θ

A

pwm

kDutyduty

此模組會產生週期性的脈衝波方塊圖如下

其中

1脈衝波有五個參數其中振幅(A)頻率(F)相位(θ)和偏移(B)四個參數和正弦波

定義完全一樣另外再增加一個負載率(D) 2基本波形是從週期開始時為 1隔段時間後換為 0然後持續到週期結束再重新開始其中 1所佔有的比例就是負載率當 D=0時為 0而 D=255時為 100

3和其他參數類似負載率(D)以 duty為其輸入點而以 kDuty為其參數值

模組程式範例PLS_WAVEasm

local amp R0 IP kAmp 輸入點脈衝波的振幅 local frq R1 IP kFrq 輸入點脈衝波的頻率 local th R2 IP kTh 輸入點脈衝波的相角 local bias R3 IP kBias 輸入點脈衝波的中心偏移 local duty R4 IP kDuty 輸入點脈衝波的負載率 local out R5 OP 輸出點脈衝波輸出 local ang R6 內部變數相位角65536=360deg local kAmp R7 1000 參數振幅值 local kFrq R8 1000 參數頻率值=655368000Hz local kTh R9 0 參數相角值360deg=256 local kBias R10 0 參數偏移值 local kDuty R11 128 參數負載率100 =256 data 12 模組變數區長度及初值 initial 啟動程序 WR ang0 WR out0 ang=out=0 RET timer 即時控制程序(8KHz)

60

RD ang ADD (frq) WR ang ang+=frq SFR 8 ADD (th) AND 255 ACC=(ang256+th)amp0x00ff SUB (duty) RD (amp) JLT t1 RD 0 ACC=(amp0) t1 ADD (bias) WR out out=ACC+bias RET

IIR 一階濾波器

此模組執行一階的 IIR濾波器方塊圖如下

kau x

Z-1

+

+

-

+低通濾波器

高通濾波器dx lp

hp

濾波器參數的計算公式如下

1假設濾波器的頻寬為 hz則 ωn=hz628 2若系統頻率為 8KHz則抽樣週期 dT為 dT=dt8000 其中 dt為模組參數 3則濾波器參數為 ka=ωndT4096或是 =hzdt62880004096即 =hzdt32 4當 dt決定後所允許的訊號頻寬為(4000dt)換句話說訊號頻寬會因為 dt增加而下降

為了方便實驗的運用下面列出常用的參數對照表

濾波頻寬

(Hz)

10 20 50 100 200 500 1000 2000

訊號頻寬

(Hz)

400 800 2000 4000 4000 4000 4000 4000

模組參數 dt 10 5 2 1 1 1 1 1

模組參數 ka 320 320 320 320 640 1600 3200 6400

表格的運用方式如下

1首先決定濾波頻寬 2接著查表找出對映的參數 dt和 ka 3再查表得到對映的訊號頻寬以決定是否需要串接前級濾波器

61

模組程式範例IIR1_FILTERasm

local u R0 IP 輸入點濾波器輸入 local lp R1 OP 輸出點低通濾波器輸出 local hp R2 OP 輸出點高通濾波器輸出 local dt R3 1 參數抽樣週期 local ka R4 4096 參數增益 ka10=4096 local prd R5 內部變數抽樣週期用 data 6 模組變數區長度 initial 開機啟動程序 WR lp0 WR hp0 WR prd1 RET lp=hp=0prd=1 timer 即時控制程序 SUB prd1 JNZ b9 if (--prdgt0) return RD dt WR prd prd=dt RD (u) SUB lp WR hp hp=u-lp MUL ka SFR 12 ADD lp WR lp lp+=(hpka4096) b9 RET

資料蒐集模組

資料蒐集模組是一個非常特殊的模組專門配合 eTTY 程式中的示波器使用

模組程式範例DAS4asm

local cmd R0 0 紀錄命令0=停止1=前置記錄2=正觸發4=負觸發6=觸發記錄 local dt R1 1 抽樣週期每 dT抽樣一次 local tab R2 TP DAS表格啟始位址 local cnt R3 0 目前記錄點(0~255) local ch1 R4 0 定義頻道1的變數位址 local ch2 R5 0 定義頻道2的變數位址 local ch3 R6 0 定義頻道3的變數位址 local ch4 R7 0 定義頻道4的變數位址 local trg R8 0 定義觸發頻道的變數位址 local th R9 0 觸發準位 local tail R10 0 觸發後的抽樣個數 local buf R11 1 抽樣計數(1~dt) local pnt R12 表格位址計算pnt=tab+cnt4 local len R13 表格長度計算(0~256) data 14 定義模組變數區的長度 table tab 1024 定義表格的長度 initial 啟動程序 WR cmd0 RET cmd=0 timer 控制程序

62

ADD cmd0 JZ t9 if (cmd==0) return SUB buf1 JNZ t9 if (--buf)gt0) return RD dt WR buf dt=buf RD cnt ADD 1 AND 0xff WR cnt cnt=(cnt+1)amp0xff SFL 2 ADD tab WR pnt pnt=tab+cnt4 RD (ch1) WR (pnt) ADD pnt1 pnt++=ch1 RD (ch2) WR (pnt) ADD pnt1 pnt++=ch2 RD (ch3) WR (pnt) ADD pnt1 pnt++=ch3 RD (ch4) WR (pnt) pnt =ch4 RD cmd SUB 1 JZ t9 SUB 1 JZ t2 SUB 1 JZ t3 SUB 1 JZ t4 SUB 1 JZ t5 SUB 1 JZ t6 JR t7 t2 RD (trg) SUB th JGE t9 ADD cmd1 JR t9 wait trgltth t3 RD (trg) SUB th JLE t9 JR t6 wait trggtth t4 RD (trg) SUB th JLE t9 ADD cmd1 JR t9 wait trggtth t5 RD (trg) SUB th JGE t9 JR t6 wait trgltth t6 WR len0 WR cmd7 len=0cmd=7 t7 ADD len1 SUB tail JLT t9 WR cmd0 if ((++len)gt=0x80) cmd=0 t9 RET

與 DC 馬達控制相關的程式模組有以下 4個程式模組說明如下

(1)加減速控制模組 ACC_controlasm (2)光電盤輸入模組 POS_inputasm (3)PWM輸出模組 PWM_outputasm (4)PD控制模組 PD_controlasm

71加減速控制模組 此程式模組主要功能在於執行位置控制的加減速命令修正其數學模式採用 Lynn

濾波器的架構參見下圖

cmd

2

+

old Z -1

-

Z -1

Z -1

Z-1

Z-1x0 x1 x8 x9 x16

+ -

++

2

Z-1

Z-1 y1 y2

+

-

y0

+ +

sumZ-1

+164

12

out

dif

+

63

加減速控制模組方塊圖

其中

1Lynn 濾波器的階數固定成八階也就是 m=8其公式為 H(z) = (1-2Z-m+Z-2m)(1-2Z-1+Z-2)m2

2因為m=8所以m2=64因此最後計算低通濾波的部份時要先做除 64的運算 3因為低通濾波(lp)和 y0之間有 64倍的差異代表 y0y1y2的變化範圍比濾波器輸

入值要擴大許多例如輸入值在+-1000變化時y0y1y2很可能會在+-64000之間變化這範圍已經超出整數處理的範圍很可能會造成錯誤的計算結果

4所以在實驗時輸入值的變化範圍必須控制在+-500之間以保證計算的正確性 5對於 Lynn 濾波器當 m=8時其濾波器的頻寬固定為 1 kHzmdt也就是 dt=1時頻寬為 125 Hz dt=2時頻寬為 625Hz依此類推 6對於 Lynn 濾波器其濾波器的延遲固定為 m個抽樣週期因此設計 hp = x8 - lp 即可得到高通濾波器的對應結果 7其中乘 2和除 64的運算以移位運算取代所以整個程式中並無任何乘法運算 8Lynn 濾波器本身並不是穩定濾波器所以在程式啟動時必須確實的將所有狀態

(x0~x16)歸零否則會產生不穩定的狀態輸出

因為 Lynn濾波器中所有參數固定所以除了抽樣週期 dt 之外並無任何可調參數

抽樣週期 dt 可以控制頻寬dt 越大則濾波器頻寬越低

將步階命令值的輸出送入 Lynn 濾波器中經由低通濾波器的效應可以減緩命

令的變化程度達到加減速控制的目的以下為使用 Lynn 濾波器型式實現加減速控

制的組合語言程式列印 如欲更進一步瞭解 Lynn 濾波器與 FIR 數位濾波器之間的關係可以參考通訊實驗

四數位濾波器設計(FIR)中之說明

ACC_controlasm程式列印 local cmd R0 IP 輸入點位置命令

local out R1 OP 輸出點加減速處理後的位置命令

local dif R2 OP 輸出點位置微分命令

local axis R3 0 馬達編號0=X1=Y2=Z3=C

local old R4 內部變數微分計算用

local sumL R5 內部變數積分計算用

local sumH R6 內部變數積分計算用

local y0 R7 內部變數y(0~2)

local y1 R8 local y2 R9

local x0 R10 內部變數x(0~16)

local x1 R11 local x2 R12 local x3 R13 local x4 R14

local x5 R15 local x6 R16 local x7 R17 local x8 R18

local x9 R19 local x10 R20 local x11 R21 local x12 R22

local x13 R23 local x14 R24 local x15 R25 local x16 R26

64

data 27 模組變數區長度

initial 開機啟動程序

WR dif0 RD (cmd) WR out WR old dif=0 out=old=cmd

sumHL=cmd64

SFL 6 WR sumL RD out SFR 10 SGN 5 WR sumH

RPT 17 WR x00 RPT 3 WR y00 RET x[0~16]=0y[0~2]=0

timer 即時控制程序

RD (cmd) SUBX old WR x0 x0=cmd-old old=cmd

SUB x81 ADD x16 ADD y11 SUB y2 WR y0 y0=x0-2x8+x16+2y1-y2

SGN ADD sumL WR sumL RDH ADC sumH WR sumH sumHL+=y0

WRH RD sumL SFR 6 WR out out=sumHL64

RD y0 SGN SFR WR dif dif=y032mm

RD x0 RPT 16 RDX x1 x[i]=x[i-1] i=1~16

RD y0 RDX y1 WR y2 y[i]=y[i-1] i=1~2

b9 RET

72光電盤輸入模組

DC馬達的位置由光電盤量測之預設儲存於 0xac與 0xbe二個輸入埠位址中其中位址 0xac記錄 X軸馬達的位置位址 0xbe記錄 Y軸馬達的位置由於本實驗的DC馬達接在 Y軸的位置上因此程式中直接選用 Y軸的輸入 光電盤位置輸入的程式列印如下其中速度由位置的差分而得至於馬達的位置

則使用內部 2個 word加以記錄精度為 32位元 POS_inputasm程式列印 local spd R0 OP 輸出點速度量測值

local ang R1 OP 輸出點角度量測值

local angH R2 內部變數角度的 32 位元部分

local mode R3 0x308 模式選擇15MHzAB 相正反向輸入

local pht R4 0xac 輸入阜地址光電盤輸入(0xac)

local phtc R5 0xbe 輸入阜地址光電盤模式(0xbe)

local old R6 內部變數速度更新用

data 7 模組變數區長度

initial 開機啟動程序

RD mode WR (phtc) phtc=mode

RD (pht) WR old WR spd0 RET old=phtspd=0

timer 即時控制程序

RD (pht) SUBX old SGN 11 WR spd spd=(pht-old)old=pht

65

ADD ang WR ang angHL+=spd

RDH ADC angH WR angH

RET

73 PWM輸出控制模組 模組方塊

cmd PWM輸出

程式說明 1在開機時將切換保護時間寫到輸出阜 0xbc上其中切換保護值為 0~6360=5us 2在每次 timer interrupt時將 cmd訊號處理後寫到輸出阜 0xb8上

PWM_outputasm程式列印 local cmd R0 IP gnd 輸入點v相命令

local gain R1 4096 參數輸出增益1=4096

local bias R2 2048 參數輸出偏壓0=2048

local limit R3 4095 參數輸出極限1=4095

local zone R4 0x88f0 參數頻率=12KHz切換保護=5us

local pwm R5 0xb8 輸出阜地址PWM0 輸出(0xb8)

local mode R6 0xbc 輸出阜地址PWM 模式(0xbc)

local p0md R7 0xf8 輸出阜地址port0 模式(0xf8)

local gnd R8 0 輸入接地點

data 9 模組變數區長度

initial 開機啟動程序

RD bias WR (pwm) pwm=bias

RD 0xffff WR (p0md) set port0 mode

RD zone WR (mode) RET mode=zone

stop 關機保護程序

RD bias WR (pwm) RET pwm=bias

timer 即時控制程序

RD (mode) xor 1 and 1 WR (mode) trigger watch-dog

RD (cmd) MUL gain SFR 12 ADD bias ACC=(cmdgain4096)+bias

MAX 0 MIN limit WR (pwm) pwm=limit(ACC)

RET

66

74 PD 控制模組

PD控制的模組方塊參見圖二十一所示其中比例控制的部份直接由增益 kp加以調整微分控制的部份則由誤差的差分經增益 kd的調整而得

Σ+

-

cmd

fdk

err out

Σ

pk

dk

Σ

+

+

+

-

old1minusZ

PD控制器的方塊圖

PD_controlasm程式列印 local cmd R0 IP gnd 輸入點位置命令(可忽略)

local fdk R1 IP gnd 輸入點位置回授(可忽略)

local out R2 OP 輸出點用以控制速度迴路

local kp R3 256 參數增益 kp10=256

local kd R4 0 參數增益 kd10=256

local err R5 0 內部變數

local old R6 0 內部變數

local gnd R7 0 無輸入時的短路點

data 8 模組變數區長度

initial 開機啟動程序

WR out0 WR old0 RET out=old=0

timer 即時控制程序

RD (cmd) SUB (fdk) PRTF WR err

MUL kp SFR 8 P=(cmd-fdk)kp256

RDS err SUBX old MUL kd SFR 8 D=(err-old)kd256

ADDS

WR out out=P+D

RET

程式中預設增益值的 10以整數值 256為基底因此使用 SFR 8的指令加以調

整另外在在計算微分項的程式部份用到 SUBX old的指令其詳細的暫存器動作如

下 參考 piDSP的指令說明SUBX指令將總共用到 3個時序參考錯誤 找不到參照

67

來源在時序 1時將原先 AX的資料拷貝一份到 HX中時序 2時正式執行減

法的動作所以 AX暫存器中的內容會變成 err-old時序 3時DSP會將存放在 HX暫存器中的內容拷貝一份到 old的記憶體中也就是經由 SUBX此一精簡指令將

同時完成計算差分所需要的相減與資料疊代的動作有效的利用 piDSP控制器 DSP核心的精簡指令將可以大幅提昇系統的計算速度

HX AXoldSUBXerr err

old

err

errerr olderr minus

1_err

errerr olderr minus err

1_err

1

2

3

SUBX的指令時序與暫存器變化

68

8附錄快速安裝說明

光纖網路通訊 FPGA 發展系統 (適用於 WIN-XP200098 系統)

快速安裝說明

26Pin 負載輸出入埠

雙電源︵5

12

伏︶輸入埠

單電源︵5

伏︶輸入埠

USB

光纖線輸

號 光纖線輸出埠

入 傳 埠

首先將光碟片 RFFPGA 目錄檔案拷貝在您工作硬碟裡面

第一次安裝時先將 USB 傳輸線接上電腦主機將電源供應器接上 FPGA 模組此時電

腦會出現安裝 USB-Serial 驅動程式選擇從清單安裝此驅動程式放置在光碟片

RFFPGA-USBdrive 選擇您目前安裝系統

可選擇 WIN-98WIN-MEWIN-2000WIN-XP 系統配合您現在工作電腦作業系統

69

注意一般電腦 USB 埠很多插口當您安裝驅動程式時是配合您當時插入之埠

下次如您插入不同接口埠時電腦會再次要求安裝驅動程式這是正常現象請再次安

裝驅動程式否則無法使用

FPLC 操作

首先進入 RFFPGA裡子目錄 testASM直接點選 fPLCexe 出現下面操作畫面(也可直接將

此檔案放置桌面直接點選)

(或者選擇 File 再執行 Setuphellip 選擇您要執行 CAI 檔)

70

進入下面操作畫面 首先使用滑鼠在 FPGA下載按鈕單擊動作使 FPGA變成 DSP晶片 實驗一至實驗五皆為使用 DSP組合語言設計程式其原始程式分別為 testASM1至testASM5可使用 texPad 開啟與編輯程式內容 實驗三與實驗五多有 IO控制動作 當選擇實驗三時出現下面畫面

71

eM_USB 模組

數字型 LED

0 1 2 34 5 6 78 9 A BC D E F

燈號型 LED

44 鍵盤

ADC0 ADC1 DAC0 DAC1

LED 選擇KEY 選擇

模 式 1

0123

注意操作畫面 3與 4 說明開關與按鍵選擇位置後選擇程式下載再按程式啟動如您

按下 0-3按鍵時燈號型 LED會有不同方向閃爍顯示程式停止時結束所有 IO控制動作再按回首頁選擇其他實驗 實驗四與實驗五

模式3

0 1 2 34 5 6 78 9 A BC D E F

按照上面開關選擇直接操作如果以上實驗皆能按照正常操作表示您光纖網路通訊

FPGA發展模組以能正常使用 注意 開機與關機動作順序如下

開機電腦啟動 --- eM_USB 模組電源接上 --- USB 接上電腦 ---

啟動 FPLC 軟體 --- 下載 FPGA 程式

關機關閉 FPLC 軟體 --- eM_USB 模組電源拔掉 --- 拔掉電腦 USB 接頭 ---關掉

電腦

如果以上順序有亂可能造成 USB 找不到驅動造成無法下載經過幾次測試還是

無法下載建議重新啟動電腦主機按照正確步驟操作

72

FPGA 下載操作

進入 FPLC 操作系統按照下列步驟選擇節點模組與下載 bit FPGA 檔案

在 VHDLDEMO 子目錄下您可以選擇您目前 FPGA 種類型號在此型號下我們已將 VHDL

與數位邏輯設計課本範例全部放於此處

73

光纖網路連線 FPGA 下載操作

首先利用光纖線將 eM_USB0 模組光纖輸出埠接至 eM_USB1 模組光纖輸入埠以此

類推最後再將最後 eM_USBN 模組光纖輸出埠接至 eM_USB0 模組光纖輸入埠配置

如附圖方式

個人電腦(Windows) eM_USB模組

0USB

eM_USB模組1

光纖網路

eM_USB模組2

eM_USB模組N

配置完成後進入 FPLC 系統首先必須先將 Node00 下載在 testASM 子目錄裡

piDSPv0bit 檔讓 eM_USB0 模組 FPGA 具備 DSP 功能才能執行光纖網路通訊

操作如下

此時您就可以選擇分別下載至各模組 FPGA 檔 bit

74

安裝 FPLC 注意事項

當您進入 FPLC 時

按 FILE 選擇 programhellip 選擇檔案為 exp_dcmplc 出現下面畫面

正常顯示畫面為

75

DOS 環境操作

在 PC 端的操作是在 Windows 環境中的 DOS 視窗中執行指令範例如下

eFPGA progNETbit 下載 FPGA電路至網路節點0(即 USB節點)中 eFPGA testLEDbit 1 下載 FPGA電路至網路節點1中

對於單一節點的控制程序如下

1將 eM_USB模組連結個人電腦的 USB端 2eM_USB模組開機 3執行下載指令即可 eFPGA xxxxbit 4若要更改 FPGA電路只要重新執行下載指令即可

對於多個網路節點的控制程序如下

1第一組 eM_USB模組連結個人電腦的 USB端再以光纖網路依序其他各節點 2連接 USB界面者為模組0從光纖發射端連接出去的模組為1依此類推 3將所有 eM_USB模組開機 4執行下載指令如下 eFPGA progNETbit 模組0必須先下載指定的 FPGA電路 eFPGA xxxxbit 1 再依序下載其他網路模組的 FPGA電路 eFPGA yyyybit 2 eFPGA zzzzbit 最後再重新下載模組0的 FPGA電路 5換句話說模組0必須先執行 progNETbit讓光纖網路接受 FPGA控制後才能透過光纖網路下載至其他節點等全部網路節點下載完畢後再將模組0的 FPGA重新下載讓模組0也可自由執行任意的 FPGA電路

6若要更改某一個網路節點中的 FPGA電路只要重新執行下述指令 eFPGA progNETbit 模組0必須先下載指定的 FPGA電路 eFPGA yyyybit 2 下載指定網路模組的 FPGA電路 eFPGA zzzz bit 最後再重新下載模組0的 FPGA電路 換句話說除非模組0中的 FPGA已經包括光纖網路管理電路否則一定要先在

模組0中下載網路管理電路後才能下載指定網路節點的 FPGA電路

76

光纖網路通訊 FPGA 發展系統

系統配置

光纖網路通訊 FPGA 發展系統的系統配置圖如下

個人電腦(Windows) eM_USB模組

0USB

eM_USB模組1

光纖網路

eM_USB模組2

eM_USB模組N

其中

1基本模組為 eM_USB模組可用 USB界面和個人電腦連線並提供 USB對光纖網路的轉換功能使得個人電腦可以獨立控制光纖網路中的每個網路節點

2eM_USB模組也可以作為光纖網路中的網路節點透過光纖網路而接受個人電腦的

監控 3就個人電腦而言不論是 USB界面直接連結或是以光纖網路間接連結的 eM_USB模組都是可以直接監控的網路節點最多可以同時控制一個 USB節點和 30個網路節點

4對於每一個網路節點個人電腦都可執行 eM_USB模組中 FPGA的電路下載工作並在適當的 FPGA電路配合下可執行 eM_USB模組中 FPGA內部電路的讀寫控制 5透過適當的 FPGA電路設計各網路節點都可透過光纖網路和其他任何網路節點

作同步通訊執行 FPGA內部記憶體的資料交換資料交換頻率可達 1KHz以上

77

網路模組配置

每個網路模組的標準配置圖如下

eM_USB模組光纖網路

USB eM_FPGA卡

eM_DEMO模組

eM_EXP實驗模組

DC電源

其中

1網路模組以 eM_USB模組為主提供基本的 USB界面和光纖網路連線 2eM_USB模組中的 FPGACPLD採用插卡型式可選擇不同的 eM_FPGA卡包括

eM_2V1K卡可選用 Virtex系列的 XC2V250和 XC2V1000 eM_3S1K卡可選用 Spartan3系列的 XC3S400XC3S1000和 XC3S1500 eM_3S50卡可選用 Spartan3系列的 XC3S50XC3S200和 XC3S400 eM_95XL卡可選用 9500XL系列的 XC95144XL和 XC95288XL 3eM_USB模組中的對外連線有兩種一種是 26P接頭用以連接既有的各種實驗模

組另一種是兩組 50P接頭將 FPGA中各接腳引出用以連接專題實驗 4eM_DEMO模組就是插上 50P接頭的教學模組其中包括 LED 數字顯示和 44鍵盤也具備兩組的 ADC和兩組的 DAC接頭提供類比訊號的測試工具

常用的實驗組合包括

1精簡組合包括(eM_USB+eM_FPGA)提供基本的網路節點適用於專題實驗 2標準組合包括(eM_USB+eM_FPGA+eM_DEMO)提供基礎 FPGA設計的教學實驗

3實驗組合包括(eM_USB+eM_FPGA+eM_DEMO+eM_EXP)提供進階的 FPGA實驗可依需求選用不同的實驗模組

78

eM_USB 模組

eM_USB 模組的電路配置圖如下

TxRx

DCPower

USB

JP2

JP3

光纖界面

外加電源

PC連線

JP1

eM_FPGA模組

FT232 CPLD FlashROM

SRAM

10cm

6cm

JP4

其中

1對外的連線接頭包括 DC電源 可選擇單電源(5V)或是多電源(5V+12V-12V)兩種 USB界面 直接連接個人電腦 光纖界面連接光纖網路 2實驗界面包括 JP1負責內部 CPLD的電路下載 JP2JP3兩組 50P的擴張用接頭 JP4 標準 26P接頭用以連接各種實驗模組 3內部的電路配置包括 A以 SO-DIMM接頭連接各種 eM_FPGA卡 B內附 EEPROMFlashROM和 SRAM提供 FPGA作應用測試 C以一顆 FT232BM作為 USB界面解碼而以一顆 CPLD作為光纖網路解碼 D提供各種 eM_FPGA卡的電路下載功能 4內附五顆 LED由上而下依序為 usbLED指示 USB界面的讀寫狀態 tstLED可由 FPGA電路自行定義 stsLED可由 FPGA電路自行定義 RxLED 可由 FPGA電路自行定義 TxLED 可由 FPGA電路自行定義

79

外部接腳定義

外部接頭的接點順序圖示如下

上視圖

JP11 9 JP4

126225

JP31

50249

JP21

50249

而各接頭的接點定義如下

JP1 JP4 JP2 JP3 1+33V 1+12V 2+12V 1 GND 2 GND 1 GND 2 GND 2GND 3 ADC 4 DAC 3POWER 4ALARM 3 +5V 4 +5V 3nc 5 yPB2 6 yPB3 5RxNET 6TxNET 5+12V 6+12V 4TCK 7 yPB1 6 yPB4 7RxUSB 6TxUSB 7-12V 6-12V 5nc 9 yPB0 10yPB5 9RxCAN 10TxCAN 9 ADC 10 DAC 6TDO 11yPB6 12yPB7 11P0D0 12P0D1 11P1D0 12P1D1 7TDI 13yGND 14yPC3 13P0D2 14P0D3 13P1D2 14P1D3 8nc 15yPC2 16yPC1 15P0D4 16P0D5 15P1D4 16P1D5 9TMS 17yPC0 18yPA0 17P0D6 18P0D7 17P1D6 18P1D7 19yPA1 20yPA2 19P0D8 20P0D9 19P1D8 20P1D9 21yPA3 22GND 21P0D10 22P0D11 21P1D10 22P1D11 23GND 24+5V 23P0D12 24P0D13 23P1D12 24P1D13 25+5V 26nc 25P0D14 26P0D15 25P1D14 26P1D15 27P2D0 28P2D1 27PxA0 28PxA1 29P2D2 30P2D3 29PxA2 30PxA3 31P2D4 32P2D5 31PxA4 32PxA5 33P2D6 34P2D7 33PxA6 34PxA7 35P2D8 36P2D9 35PxB0 36PxB1 37P2D10 38P2D11 37PxB2 38PxB3 39P2D12 40P2D13 39PxB4 40PxB5 41P2D14 42P2D15 41PxB6 42PxB7 43ADC0 44ADC1 43PxC0 44PxC1 45ADC2 46ADC3 45PxC2 46PxC3 47ADC4 48ADC5 47PxC4 48PxC5 49DAC0 50DAC1 49PxC6 50PxC7

80

eM_FPGA 模組

在各種 eM_FPGA 模組中FPGA 對外電路的標準配置圖如下

24576MHz

FlashROM

26PSRAM

EEPROM

mD[8]

yPA[4]

FPGACPLD

mA[19]mRDmWRmCSeeCKeeCSeeDIeeDO

光纖界面 RxNETTxNET

USB 界面 RxUSBTxUSBCLK24MPOWERALARM

LED

tstLEDstsLEDRxLEDTxLED

yPB[8]yPC[4]

ADCDAC

ADC[8]

實驗模組

ADC[2]

DAC[2]

xPA[4]

xPB[8]

xPC[4]

基礎實驗

其中

1FPGACPLD可以選擇下述幾種 XC2V250XC2V1000 採用 eM_2V1K模組其中 FPGA為 FG456包裝 XC3S400XC3S1000XC3S1500採用 eM_3S1K模組其中 FPGA為 FG456包裝 XC3S400XC3S1000XC3S1500採用 eM_3S1K模組其中 FPGA為 FG456包裝 XC3S50XC3S200XC3S400 採用 eM_3S50模組其中 FPGA為 TQ144包裝 XC95144XLXC95288XL 採用 eM_95XL模組其中 CPLD為 TQ144包裝 2採用 FG456包裝者可以控制所有的 IO界面 3採用 TQ144包裝者只是不能控制 RAM和 FlashROM而可以控制其他所有的界面 4所有 FPGA模組都可自由選擇由 USB界面或是由光纖界面下載電路但是 CPLD模組只能固定由 USB界面下載電路

5所有 FPGACPLD模組都可透過 26P接頭連接既有的各種實驗模組

81

FPGA 接腳對照表

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

mD0 XD6 mD0 A17 C13 -- -- mD1 XD7 mD1 B17 D12 -- -- mD2 XD8 mD2 C17 D11 -- -- mD3 XD9 mD3 D17 C11 -- -- mD4 XD10 mD4 E17 D10 -- -- mD5 XD11 mD5 E16 C10 -- -- mD6 XD12 mD6 E14 D9 -- -- mD7 XD13 mD7 E13 D7 -- -- mA0 XD14 mA0 D13 C7 -- -- mA1 XD15 mA1 C13 D6 -- -- mA2 XA0 mA2 V5 C3 -- -- mA3 XA1 mA3 U5 C4 -- -- mA4 XA2 mA4 Y2 D3 -- -- mA5 XA3 mA5 Y1 D4 -- -- mA6 XA4 mA6 V4 E3 -- -- mA7 XA5 mA7 V3 E4 -- -- mA8 XA6 mA8 W2 F3 -- -- mA9 XA7 mA9 W1 F4 -- -- mA10 XA8 mA10 T2 G6 -- -- mA11 XA9 mA11 T1 K3 -- -- mA12 XA10 mA12 R4 K10 -- -- mA13 XA11 mA13 R3 L3 -- -- mA14 XA12 mA14 R2 L4 -- -- mRD XRD mRD R1 D5 -- -- mWR XWR mWR P6 C6 -- --

POWER P0A0 POWER B4 B20 P1 P5 ALARM P0A1 ALARM A4 A19 P2 P6 RxNET P0A2 RxNET C4 B19 P4 P7 TxNET P0A3 TxNET C5 A18 P5 P9 RxUSB P0B0 RxUSB B5 A15 P6 P10 TxUSB P0B1 TxUSB A5 B15 P7 P11 RxCAN P0B2 RxCAN D6 A14 P8 P12 RxCAN P0B3 TxCAN C6 B14 P10 P13

CLK24M CLK24M CLK24M E12 B12 P124 P38

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

PWM0H P3A0 P0D0 E6 A8 P21 P23 PWM0L P3A1 P0D1 E5 B8 P23 P24 PWM1H P3A2 P0D2 C2 B6 P24 P25 PWM1L P3A3 P0D3 C1 A5 P25 P26 PWM2H P3A4 P0D4 D2 B5 P26 P27

82

PWM2L P3A5 P0D5 D1 A4 P27 P28 PWMenb P3A6 P0D6 E4 B4 P28 P30 PHT1Z P3A7 P0D7 E3 A3 P30 P31 PHT1A P3B0 P0D8 G2 C1 P31 P32 PHT1B P3B1 P0D9 G1 C2 P32 P33 PHT0A P3B2 P0D10 H5 D1 P33 P34 PHT0B P3B3 P0D11 J6 D2 P35 P35 AMP0 P3B4 P0D12 H4 E1 P36 P39 AMP1 P3B5 P0D13 H3 E2 P40 P40 AMP2 P3B6 P0D14 H2 F2 P41 P41 AMP3 P3B7 P0D15 H1 G1 P44 P43 eeSK P0C3 P1D0 C10 B9 P20 P22 eeCS P0C2 P1D1 D10 A9 P18 P21 eeDI P0C1 P1D2 F10 B10 P17 P20 eeDO P0C0 P1D3 E10 B11 P15 P19 ssCK P0B7 P1D4 E8 A11 P14 P17 ssCS P0B6 P1D5 E7 A12 P13 P16 ssDI P0B5 P1D6 A6 B13 P12 P15 ssDO P0B4 P1D7 B6 A13 P11 P14

ppCLK P3C0 P1D8 K4 G2 P46 P44 ppDIN P3C1 P1D9 K3 K1 P47 P45 TxD P3C2 P1D10 K2 K2 P50 P46 RxD P3C3 P1D11 K1 L1 P51 P48

tstLED P3C4 P1D12 L5 L2 P52 P49 stsLED P3C5 P1D13 L4 M1 P53 P50 RxLED P3C6 P1D14 L3 M2 P55 P51 TxLED P3C7 P1D15 L2 N1 P56 P52

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

xPA0 P2A0 P2D0 AA3 N2 P59 P53 xPA1 P2A1 P2D1 Y4 T1 P60 P54 xPA2 P2A2 P2D2 AA4 T2 P63 P56 xPA3 P2A3 P2D3 AB4 U2 P68 P57 xPC0 P2A4 P2D4 W5 V1 P69 P58 xPC1 P2A5 P2D5 Y5 V2 P70 P59 xPC2 P2A6 P2D6 AA5 W1 P73 P60 xPC3 P2A7 P2D7 AB5 W2 P74 P61

-- P2B0 P2D8 V6 Y1 P76 P64 -- P2B1 P2D9 V7 Y2 P77 P66 -- P2B2 P2D10 W6 AA3 P78 P68

mCS P2B3 P2D11 Y6 AB4 P79 P69 mA15 P2B4 P2D12 V9 AA4 P80 P70 mA16 P2B5 P2D13 V10 AB5 P82 P71 mA17 P2B6 P2D14 W10 AA5 P83 P74 mA18 P2B7 P2D15 Y10 AA6 P84 P75 CS0 P2C0 ADC0 AA10 AB8 P85 P76

83

SDIN0 P2C1 ADC1 AB10 AA8 P86 P77 CS1 P2C2 ADC2 U10 AB9 P87 P78

SDIN1 P2C3 ADC3 U11 AA9 P89 P79 SCLK P2C4 ADC4 V11 AB10 P90 P80 CS2 P2C5 ADC5 W11 AA10 P92 P81

SDOUT P2C6 ADC6 Y11 AB11 P93 P82 LDAC P2C7 ADC7 AA11 AA11 P95 P83

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

xPB0 P1A0 PxA0 M1 M3 P135 P85 xPB1 P1A1 PxA1 M2 M4 P132 P86 yPB2 P1A2 PxA2 M3 N3 P131 P87 yPB3 P1A3 PxA3 M4 N4 P130 P88 yPB1 P1A4 PxA4 M5 T4 P129 P91 yPB4 P1A5 PxA5 M6 T5 P128 P92 yPB0 P1A6 PxA6 N1 U3 P127 P93 yPB5 P1A7 PxA7 N2 U4 P125 P94 yPB6 P1B0 PxB0 U13 V3 P119 P95 yPB7 P1B1 PxB1 V13 V4 P118 P96 xPB2 P1B2 PxB2 W13 W3 P116 P97 xPB3 P1B3 PxB3 Y13 W4 P113 P98 xPB4 P1B4 PxB4 AA13 Y3 P112 P100 xPB5 P1B5 PxB5 AB13 Y4 P96 P101 yPC3 P1B6 PxB6 U12 Y5 P97 P102 yPC2 P1B7 PxB7 V12 W5 P98 P103 yPC1 P1C7 PxC0 AB17 W11 P108 P113 yPC0 P1C6 PxC1 AA17 Y11 P107 P112 yPA0 P1C5 PxC2 Y17 W10 P105 P111 yPA1 P1C4 PxC3 W17 Y10 P104 P110 yPA2 P1C3 PxC4 AB18 W9 P103 P107 yPA3 P1C2 PxC5 AA18 W8 P102 P106 xPB6 P1C1 PxC6 Y18 W6 P100 P105 xPB7 P1C0 PxC7 W18 Y6 P99 P104

84

eM_DEMO 模組

eM_DEMO 模組的電路配置圖如下

eM_USB 模組

數字型 LED

0 1 2 34 5 6 78 9 A BC D E F

燈號型 LED

44 鍵盤

ADC0 ADC1 DAC0 DAC1

LED 選擇KEY 選擇

其中

1eM_DEMO模組的基本功能包括 A將 xPAxPBxPC等 16個 IO訊號引出控制 LED和鍵盤電路 B將 ADDA訊號引出並放大成+-10V的工作範圍 2LED和鍵盤可以選擇三種模式由 LED和 KEY 兩組開關作選擇圖示如下

模式1

0123

模式2 模式3

0 1 2 34 5 6 78 9 A BC D E F

0123

3模式14鍵輸入並搭配 16點的 LED燈號顯示其中 16點 LED分別對映到 xPA[0~3]xPB[0~7]和 xPC[0~3] 4組按鍵分別對映到 xPC[0~3] 4模式24鍵輸入並搭配四個 7段式數字顯示其中 數字顯示由 xPA[0~3]作數字掃瞄而由 xPB[0~7]作 7段式 LED控制 4組按鍵 分別對映到 xPC[0~3] 5模式316鍵輸入並搭配四個 7段式數字顯示其中 數字顯示由 xPA[0~3]作數字掃瞄而由 xPB[0~7]作 7段式 LED控制 16組按鍵由 xPA[0~3]作鍵盤掃瞄而由 xPC[0~3]作鍵盤讀取 6根據VHDL與數位邏輯設計的章節其中 第 1章至 10章的實驗採用模式1而 第 11章實驗採用模式2而 第 12章之後的實驗都採用模式3

85

FPGA UCF 定義

eM_3S1K 模組

NET CLK LOC = B12

NET XAlt0gt LOC = N2

NET XAlt1gt LOC = T1

NET XAlt2gt LOC = T2

NET XAlt3gt LOC = U2

NET XBlt0gt LOC = M3

NET XBlt1gt LOC = M4

NET XBlt2gt LOC = W3

NET XBlt3gt LOC = W4

NET XBlt4gt LOC = Y3

NET XBlt5gt LOC = Y4

NET XBlt6gt LOC = W6

NET XBlt7gt LOC = Y6

NET XClt0gt LOC = V1

NET XClt1gt LOC = V2

NET XClt2gt LOC = W1

NET XClt3gt LOC = W2

NET YAlt0gt LOC = W10

JP4 接頭

NET YAlt1gt LOC = Y10

NET YAlt2gt LOC = W9

NET YAlt3gt LOC = W8

NET YBlt0gt LOC = U3

NET YBlt1gt LOC = T4

NET YBlt2gt LOC = N3

NET YBlt3gt LOC = N4

NET YBlt4gt LOC = T5

NET YBlt5gt LOC = U4

NET YBlt6gt LOC = V3

NET YBlt7gt LOC = V4

NET YClt0gt LOC = Y11

NET YClt1gt LOC = W11

NET YClt2gt LOC = W5

NET YClt3gt LOC = Y5

在光碟片中 RFFPGAVHDLDEMOBIT3S1K 裡有 VHDL 與數位邏輯設計書本範例原始檔與合成檔

86

eM_3S50 模組

NET CLK LOC = P124

NET XAlt0gt LOC = P59

NET XAlt1gt LOC = P60

NET XAlt2gt LOC = P63

NET XAlt3gt LOC = P68

NET XBlt0gt LOC = P135

NET XBlt1gt LOC = P132

NET XBlt2gt LOC = P116

NET XBlt3gt LOC = P113

NET XBlt4gt LOC = P112

NET XBlt5gt LOC = P96

NET XBlt6gt LOC = P100

NET XBlt7gt LOC = P99

NET XClt0gt LOC = P69

NET XClt1gt LOC = P70

NET XClt2gt LOC = P73

NET XClt3gt LOC = P74

NET YAlt0gt LOC = P105

JP4 接頭

NET YAlt1gt LOC = P104

NET YAlt2gt LOC = P103

NET YAlt3gt LOC = P102

NET YBlt0gt LOC = P127

NET YBlt1gt LOC = P129

NET YBlt2gt LOC = P131

NET YBlt3gt LOC = P130

NET YBlt4gt LOC = P128

NET YBlt5gt LOC = P125

NET YBlt6gt LOC = P119

NET YBlt7gt LOC = P118

NET YClt0gt LOC = P107

NET YClt1gt LOC = P108

NET YClt2gt LOC = P98

NET YClt3gt LOC = P97

在光碟片中 RFFPGAVHDLDEMOBIT3S200 裡有VHDL與數位邏輯設計書本範例原始檔與合成檔

87

eM_95XL 模組

NET CLK LOC = SPIN38

NET XAlt0gt LOC = SPIN53

NET XAlt1gt LOC = SPIN54

NET XAlt2gt LOC = SPIN56

NET XAlt3gt LOC = SPIN57

NET XBlt0gt LOC = SPIN85

NET XBlt1gt LOC = SPIN86

NET XBlt2gt LOC = SPIN97

NET XBlt3gt LOC = SPIN98

NET XBlt4gt LOC = SPIN100

NET XBlt5gt LOC = SPIN101

NET XBlt6gt LOC = SPIN105

NET XBlt7gt LOC = SPIN104

NET XClt0gt LOC = SPIN58

NET XClt1gt LOC = SPIN59

NET XClt2gt LOC = SPIN60

NET XClt3gt LOC = SPIN61

NET YAlt0gt LOC = SPIN111

JP4 接頭

NET YAlt1gt LOC = SPIN110

NET YAlt2gt LOC = SPIN107

NET YAlt3gt LOC = SPIN106

NET YBlt0gt LOC = SPIN93

NET YBlt1gt LOC = SPIN91

NET YBlt2gt LOC = SPIN87

NET YBlt3gt LOC = SPIN88

NET YBlt4gt LOC = SPIN92

NET YBlt5gt LOC = SPIN94

NET YBlt6gt LOC = SPIN95

NET YBlt7gt LOC = SPIN96

NET YClt0gt LOC = SPIN112

NET YClt1gt LOC = SPIN113

NET YClt2gt LOC = SPIN103

NET YClt3gt LOC = SPIN102

在光碟片中 RFFPGAVHDLDEMOSVF95288XL 裡有VHDL與數位邏輯設計書本範例原始檔與合成

檔案

88

eM_FPGA 模組

NET CLK LOC = E12

NET XAlt0gt LOC = AA3

NET XAlt1gt LOC = Y4

NET XAlt2gt LOC = AA4

NET XAlt3gt LOC = AB4

NET XBlt0gt LOC = M1

NET XBlt1gt LOC = M2

NET XBlt2gt LOC = W13

NET XBlt3gt LOC = Y13

NET XBlt4gt LOC = AA13

NET XBlt5gt LOC = AB13

NET XBlt6gt LOC = Y18

NET XBlt7gt LOC = W18

NET XClt0gt LOC = W5

NET XClt1gt LOC = Y5

NET XClt2gt LOC = AA5

NET XClt3gt LOC = AB5

NET YAlt0gt LOC = Y17

JP4 接頭

NET YAlt1gt LOC = W17

NET YAlt2gt LOC = AB18

NET YAlt3gt LOC = AA18

NET YBlt0gt LOC = N1

NET YBlt1gt LOC = M5

NET YBlt2gt LOC = M3

NET YBlt3gt LOC = M4

NET YBlt4gt LOC = M6

NET YBlt5gt LOC = N2

NET YBlt6gt LOC = U13

NET YBlt7gt LOC = V13

NET YClt0gt LOC = AA17

NET YClt1gt LOC = AB17

NET YClt2gt LOC = V12

NET YClt3gt LOC = U12

在光碟片中 RFFPGAVHDLDEMOBIT2V250 裡有VHDL與數位邏輯設計書本範例原始檔與合成檔

89

Page 32: RFFPGA 直流馬達實驗手冊juniortek.com.tw/program/manual/RF-DC-mal.pdf · em_demo模組 em_dcm 直流伺服馬達 dc電源 rffpga 系統的直流馬達實驗規劃 其中包括:

其中

1當超過計算的上限時將固定設為上限值處理而當超過計算的下限時也將固定

設為下限值處理 2這時的整數運算只有在上下限之間是線性的對映關係而超過這個範圍將還是非線

性的對映關係 3雖然如此但是因為沒有正負顛倒的現象所以不再會有負回授變為正回授的問題

而避免了非線性的震盪現象 4換句話說飽和處理是針對過溢現象的妥協處理方案雖然不完全理想但是是可

接受的最佳選擇

下面是對映的組合語言範例

RD x x為輸入端 MIN lmtH 取得 x和 lmtH中的較小值即是作上限保護的工作 MAX lmtL 取得 x和 lmtL中的較大值即是作下限保護的工作 WR y Y為輸出端 其中

1組合語言中提供MAX和MIN的計算其中 MIN lmtH 比較 AX暫存器和 lmtH而將較低值存入 AX暫存器中 MAX lmtL 比較 AX暫存器和 lmtH而將較高值存入 AX暫存器中 2所以直接可用MIN指令作上限保護而以MAX指令作下限保護兩者合併後即是

完整的飽和處理結果

飽和處理通常應用在高位數轉成低位數的場合例如32-bit轉換成16-bit或是16-bit

轉換成 12-bit 等等例如在本實驗中所有的運算都是以 16-bit 整數作處理但是到

PWM 驅動級輸出時卻要轉換成 12-bit精度的 PWM 命令所以必須先用飽和處理以避免

過溢現象造成的不穩定問題

32

61 實驗 1-開迴路的電壓控制 實驗說明以電壓直接控制轉速的開迴路特性可簡化為一階系統處理方塊圖如

sτ+1

v km ωm

其中V 送給驅動器的 PWM電壓命令

ωm馬達的轉動速度可由處理 photo encoder信號所得的位置微分而得 km一階系統的穩態增益 τ一階系統的時間常數即步階響應中的上升時間

為了觀測直流馬達的開環路特性建立下面的測試方塊圖

其中

1所使用的模組包括 FG1方波產生器產生所需的步階測試波形 FT1馬達模擬以一階系統的低通濾波器來執行 IO1光電盤的回授處理可同時取得轉角和速度的量測值 IO2PWM電壓驅動直接驅動直流馬達作控制 Led四位數字七段顯示模組顯示波形信號資料 2測試目標有兩項(P 參數設定欄)包括 A調整方波命令控制直流馬達作開環路的 PWM電壓控制 B調整馬達模擬參數使模擬結果和實驗結果相符以確認開環路特性

33

實驗畫面顯示如下

測試一 開環路的電壓控制 記錄頻道 CH1電壓命令Y1=-300DY=500 CH2模擬速度Y2=-100DY=500 CH3馬達速度Y3=100DY=50 CH4馬達轉角Y4=300DY=50000 實驗參數 FG1kAMP=256電壓命令的測試振幅 FG1kFRQ=150電壓命令的測試頻率 FT1DT =10 馬達模擬參數 FT1KA =500馬達模擬參數

其中

1用示波器功能記錄四個頻道其中 CH2和 CH3重疊顯示以比較模擬速度和量測

速度之間的差異 2由於 Km 不等於 1所以必須調整 CH3的 Y軸單位才能使得 CH2和 CH3的穩態響應部分重疊

3實驗時可以改變 FG1的參數以調整測試方波的振幅和頻率 4可以調整 FT1的參數使得 CH2和 CH3的暫態響應部分重疊

根據實際的測試結果分析如下

2馬達模擬的參數調整到 DT=10而 KA=500根據公式 τ = 40961000dtka 所以上升時間(τ)為 0082秒或是 82ms 3CH2CH3的 Y軸單位並不一致顯然 Km 不等於 1經計算確認 Km=0098

對應之 plc檔程式說明(exp_pwmplc) echo off 畫面顯示開始

run dsp 0 選擇 DSP1

run stop run reset 既有程式停止

run testDCMmem 下載指定程式

das 1 ampfg1out 0 1024 PWM 波形 Volt 設定 DAS 頻道1

das 2 ampft1lp 0 1024 馬達模擬 Volt 設定 DAS 頻道2

das 3 ampio1spd 0 1024 馬達速度 Volt 設定 DAS 頻道3

das 4 ampio1ang 0 1024 馬達角度 Volt 設定 DAS 頻道4

plot select 0 設定示波器頁數

plot xunit 100000 0 設定示波器 X軸

plot yunit 1 500 -300 設定示波器 Y1 軸

34

plot yunit 2 500 -100 設定示波器 Y2 軸

plot yunit 3 50 100 設定示波器 Y3 軸

plot yunit 4 50000 300 設定示波器 Y4 軸

plot trigger 1 0 1 10 設定示波器觸發

plot scope 9 1 2 3 4 設定示波器顯示

module io2 設定 io2 模組

s cmd ampfg1out

module fg1 設定 fg1 模組

s kAmp 256 s kFrq 150

module ft1 設定 ft1 模組

s u ampfg1out s dt 10 s ka 500

module io3 設定 io3 模組

s led ampfg1out

module 回復預設模組

run 1khz 設定抽樣頻率為 4KHz

run start DSP 開始執行

das stop pause 1 DAS 啟動 das start DAS 啟動

echo on 回復正常訊息顯示

使用者可視情況調整一階濾波器的 ka和 dt值使得 ch2和 ch3 兩組波形完全相符

以求得開迴路系統近似的一階轉移函數 CAI操控設計畫面規劃如下(EXP_PWMCAI) page 1 畫面設計

35

page 2 畫面設計 page 3 畫面設計

36

實測響應圖

訊 號 說 明 訊 號 說 明 ch1 方波產生器訊號 ch3 一階濾波器輸出信號 ch2 馬達角速度訊號 ch4 馬達角位置訊號

直流馬達之開迴路電壓控制響應圖

37

以邏輯分析功能觀測直流馬達之光電盤輸入與 PWM輸出信號

38

62 實驗 2-閉迴路的速度控制 實驗說明為了觀測閉迴路的速度控制響應建立下面的測試方塊圖

加入 PD控制後系統閉迴路的轉移函數經適度的簡化仍能約略以一階系統

處理方塊圖如下

sτ+1

u km ωm

其中

u 送給控制器的速度命令

ωm馬達的轉動速度可由處理 photo encoder 信號所得的位置微分而得

km一階系統的穩態增益 τ一階系統的時間常數即步階響應中的上升時間

方塊圖中的模組功能說明如下

1用 fg1 產生測試用的方波速度命令

2將方波速度命令和速度回授訊號送到 PD 控制器方塊中產生電壓控制訊號再透

過 io2 模組將訊號送出給伺服介面

3用 ft1 建立對照用的一階系統可用 IIR1濾波器方塊產生

4將方波命令產生速度命令再觀測 PHT(io1)上的速度值 spd

5調整 IIR1濾波器的參數使得兩組波形完全相符這時 IIR1濾波器就是閉迴路

速度控制的特性其中 km 為增益而τ為上升時間(單位為 sec)

6增益 km 可從示波器中作簡單計算而上升時間(τ=40964000dtka)

7 Led四位數字七段顯示模組顯示波形信號資料

39

對應之 plc檔程式說明(exp_speedplc) echo off 畫面顯示開始

run dsp 0 選擇 DSP1

run stop run reset 既有程式停止

run testDCMmem 下載指定程式

das 1 ampfg1out 0 1024 PWM 波形 Volt 設定 DAS 頻道1

das 2 ampft1lp 0 1024 馬達模擬 Volt 設定 DAS 頻道2

das 3 ampio1spd 0 1024 馬達速度 Volt 設定 DAS 頻道3

das 4 ampio1ang 0 1024 馬達角度 Volt 設定 DAS 頻道4

plot select 0 設定示波器頁數

plot xunit 100000 0 設定示波器 X軸

plot yunit 1 50 -300 設定示波器 Y1 軸

plot yunit 2 50 -100 設定示波器 Y2 軸

plot yunit 3 50 100 設定示波器 Y3 軸

plot yunit 4 50000 300 設定示波器 Y4 軸

plot trigger 1 0 1 10 設定示波器觸發

plot scope 9 1 2 3 4 設定示波器顯示

module io2 設定 io2 模組

s cmd ampcn2out

module fg1 設定 fg1 模組

s kAmp 50 s kFrq 150

module cn2 設定 cn1 模組

s cmd ampfg1out s fdk ampio1spd s kp 0x4000

module ft1 設定 ft1 模組

s u ampfg1out s dt 2 s ka 320

module io3 設定 io3 模組

s led ampfg1out

module 回復預設模組

run 1khz 設定抽樣頻率為 4KHz

run start DSP 開始執行

das stop pause 1 DAS 啟動 das start DAS 啟動

echo on 回復正常訊息顯示

CAI操控設計畫面規劃如下(EXP_speedCAI)

40

page 1 畫面設計 page 2 與 page 3 畫面設計與實驗一 page 2 與 page 3相同畫面 page 4 畫面設計

41

方塊的參數設定 使用者可視情況調整一階濾波器的 ka和 dt值使得 ch2和 ch3 兩組波形完全相符

以求得此一閉迴路系統近似的一階轉移函數或調整 PD控制器中的 kp和 kp值以調整系統之響應 實測響應圖

訊 號 說 明 訊 號 說 明 ch1 方波產生器產生之速度命令 ch3 一階濾波器輸出信號 ch2 馬達角速度訊號 ch4 馬達角位置訊號

42

直流馬達之閉迴路速度控制響應圖

43

63 實驗 3-閉迴路的位置控制 實驗說明為了觀測閉迴路的位置控制響應將直流馬達的回授改為位置訊號

建立下面的測試方塊圖 方塊圖中的模組功能說明如下

1用 fg1產生測試用的方波位置命令 2將方波位置命令和位置回授訊號送到 PD控制器方塊中產生電壓控制訊號再透過 io2模組將訊號送出到伺服介面驅動馬達轉動

對應之 plc檔程式說明(exp_angleplc) echo off 畫面顯示開始

run dsp 0 選擇 DSP1

run stop run reset 既有程式停止

run testDCMmem 下載指定程式

das 1 ampfg1out 0 1024 PWM 波形 Volt 設定 DAS 頻道1

das 2 ampft1lp 0 1024 馬達模擬 Volt 設定 DAS 頻道2

das 3 ampio1spd 0 1024 馬達速度 Volt 設定 DAS 頻道3

das 4 ampio1ang 0 1024 馬達角度 Volt 設定 DAS 頻道4

plot select 0 設定示波器頁數

plot xunit 100000 0 設定示波器 X軸

plot yunit 1 1000 -300 設定示波器 Y1 軸

plot yunit 2 1000 -100 設定示波器 Y2 軸

plot yunit 3 20 100 設定示波器 Y3 軸

plot yunit 4 1000 300 設定示波器 Y4 軸

plot trigger 1 0 1 10 設定示波器觸發

44

plot scope 9 1 2 3 4 設定示波器顯示

module io2 設定 io2 模組

s cmd ampcn2out

module fg1 設定 fg1 模組

s kAmp 1000 s kFrq 75

module cn2 設定 cn1 模組

s cmd ampfg1out s fdk ampio1ang s kp 0x300 s kd 0x4000

module ft1 設定 ft1 模組

s u ampfg1out s dt 2 s ka 320

module io3 設定 io3 模組

s led ampfg1out

module 回復預設模組

run 1khz 設定抽樣頻率為 4KHz

run start DSP 開始執行

das stop pause 1 DAS 啟動 das start DAS 啟動

echo on 回復正常訊息顯示

CAI操控設計畫面規劃如下(EXP_angleCAI) page 1 畫面設計

45

page 2 與 page 3 畫面設計與實驗一 page 2 與 page 3相同畫面 page 4 畫面設計與實驗二 page 4 畫面 方塊的參數設定 延續上一實驗的說明使用者可以調整 PD控制器中的 kp和 kd值以調整系統之

響應 實測響應圖

訊 號 說 明 訊 號 說 明 ch1 方波產生器產生之位置命令 ch3 馬達角速度訊號 ch2 馬達角位置 ch4 Pd控制器輸出之電壓訊號

46

直流馬達之閉迴路位置控制響應圖

47

64 實驗 4-加減速的位置控制 實驗說明為避免方波命令的過於嚴苛在方波命令的輸出加入一加減速控制功

能方塊以減緩命令變化的幅度增加馬達運動的平順建立的測試方塊圖如下

方塊圖中的模組功能說明如下

1用 fg1產生測試用的方波位置命令 2將方波位置命令送到加減速控制方塊處理後產生新的位置命令再將新的位置命

令與位置回授訊號送到 PD控制器方塊中產生電壓控制訊號最後透過 io2模組將訊號送出到伺服介面驅動馬達轉動

對應之 plc檔程式說明(exp_accplc) echo off 畫面顯示開始

run dsp 0 選擇 DSP1

run stop run reset 既有程式停止

run testDCMmem 下載指定程式

das 1 ampfg1out 0 1024 PWM 波形 Volt 設定 DAS 頻道1

das 2 ampcn1out 0 1024 加速控制 Volt 設定 DAS 頻道2

das 3 ampio1spd 0 1024 馬達速度 Volt 設定 DAS 頻道3

das 4 ampio1ang 0 1024 馬達角度 Volt 設定 DAS 頻道4

plot select 0 設定示波器頁數

plot xunit 100000 0 設定示波器 X軸

plot yunit 1 2000 -300 設定示波器 Y1 軸

plot yunit 2 2000 -100 設定示波器 Y2 軸

plot yunit 3 50 100 設定示波器 Y3 軸

plot yunit 4 2000 300 設定示波器 Y4 軸

48

plot trigger 1 0 1 10 設定示波器觸發

plot scope 9 1 2 3 4 設定示波器顯示

module io2 設定 io2 模組

s cmd ampcn2out

module fg1 設定 fg1 模組

s kAmp 2000 s kFrq 150

module cn1 設定 cn1 模組

s cmd ampfg1out

module cn2 設定 cn2 模組

s cmd ampcn1out s fdk ampio1ang s kp 0x300 s kd 0x4000

module ft1 設定 ft1 模組

s u ampfg1out s dt 2 s ka 320

module io3 設定 io3 模組

s led ampfg1out

module 回復預設模組

run 1khz 設定抽樣頻率為 4KHz

run start DSP 開始執行

das stop pause 1 DAS 啟動 das start DAS 啟動

echo on 回復正常訊息顯示

CAI操控設計畫面規劃如下(EXP_accCAI) page 1 畫面設計

49

page 2 畫面設計與實驗一 page 2相同畫面 page 3 畫面設計與實驗二 page 4相同畫面

參數設定參考之前各實驗的說明可線上機動性的調整 PD控制器中的 kp和 kd值以調整系統之響應 實測響應圖

訊 號 說 明 訊 號 說 明 ch1 方波產生器產生之位置命令 ch3 馬達角位置 ch2 加減速模組輸出之位置命令 ch4 馬達角速度訊號

50

圖一 直流馬達經加減速控制後之閉迴路控制響應圖

51

65 實驗 5-正弦波的位置控制 實驗說明在本實驗中改變命令的波形由方波改變為正弦波並建立如下的測

試方塊圖與上一實驗相比較僅更改命令的波形產生方塊 方塊圖中的模組功能說明如下 1用 fg2產生測試用的弦波位置命令 2將弦波位置命令送到加減速控制方塊處理後產生新的位置命令再與 io1 讀入的位

置回授訊號送到 PD 控制器方塊中產生電壓控制訊號再透過 io2 模組將訊號送出到伺服介面驅動馬達轉動

對應之 plc檔程式說明(exp_sinplc) echo off 畫面顯示開始

run dsp 0 選擇 DSP1

run stop run reset 既有程式停止

run testDCMmem 下載指定程式

das 1 ampfg2out 0 1024 SIN 波形 Volt 設定 DAS 頻道1

das 2 ampcn1out 0 1024 加速控制 Volt 設定 DAS 頻道2

das 3 ampio1spd 0 1024 馬達速度 Volt 設定 DAS 頻道3

das 4 ampio1ang 0 1024 馬達角度 Volt 設定 DAS 頻道4

plot select 0 設定示波器頁數

plot xunit 100000 0 設定示波器 X軸

plot yunit 1 2000 -300 設定示波器 Y1 軸

plot yunit 2 2000 -100 設定示波器 Y2 軸

plot yunit 3 50 100 設定示波器 Y3 軸

plot yunit 4 2000 300 設定示波器 Y4 軸

plot trigger 1 0 1 10 設定示波器觸發

52

plot scope 9 1 2 3 4 設定示波器顯示

module io2 設定 io2 模組

s cmd ampcn2out

module fg2 設定 fg1 模組

s kAmp 2000 s kFrq 100

module cn1 設定 cn1 模組

s cmd ampfg2out

module cn2 設定 cn2 模組

s cmd ampcn1out s fdk ampio1ang s kp 0x300 s kd 0x4000

module ft1 設定 ft1 模組

s u ampfg2out s dt 2 s ka 320

module io3 設定 io3 模組

s led ampfg2out

module 回復預設模組

run 1khz 設定抽樣頻率為 4KHz

run start DSP 開始執行

das stop pause 1 DAS 啟動 das start DAS 啟動

echo on 回復正常訊息顯示

CAI操控設計畫面規劃如下(EXP_sinCAI) page 1 畫面設計

53

page 2 畫面設計 page 3 畫面設計與實驗二 page 4相同畫面

方塊的參數設定可調整 PD控制器中的 kp和 kd值以調整系統之響應 實測響應圖

訊 號 說 明 訊 號 說 明 ch1 弦波產生器產生之位置命令 ch3 馬達角位置訊號 ch2 加減速模組輸出之位置命令 ch4 馬達角速度訊號

54

直流馬達之閉迴路弦波加減速位置控制響應圖

55

7組合語言說明

本節將針對 DC馬達伺服控制實驗專用的程式模組進行功能與程式碼的說明其

有關於波形產生器與資料擷取模組等說明如下

SIN_waveasm 正弦波產生器 PWM_waveasm 方波產生器 IIR1_filterasm 一階濾波器 DAS4asm 資料蒐集模組

弦波產生器

此模組會產生週期性的正弦波方塊圖如下

outfrq

kBiasbias

ampkAmp

kFrqth

kThf=1TB

θ

A

其中

1正弦波有四個參數振幅(A)頻率(F)相位(θ)和偏移(B)其公式為 out = A sin(2πF t +θ) + B 2對於單純的正弦波產生器所對映的參數包括 kAmp 振幅值 kFrq 頻率值kFrq=655368000Hz其中 Hz的範圍為 0~4000例如 1000Hz =gt frq=8192 100Hz =gt frq=819 10Hz =gt frq=82 1Hz =gt frq=8 kTh 相角值0~255代表 0~360的相位當 th=0 時為正弦波 th=64 時為餘弦波 th=128時為反相波依此類推 kBias偏移值 3對於可調變的正弦波產生器其對映的輸入點為 amp 控制振幅的輸入點可產生調幅(AM)波形 frq 控制頻率的輸入點可產生調頻(FM)波形 th 控制相位的輸入點可產生調相(PM)波形 bias控制偏移的輸入點可產生雙頻混波(相加)波形 4若不使用調變功能時各個輸入點時的預設值為 amp 指向 kAmp 的位址 frq 指向 kFrq 的位址

56

th 指向 kTh 的位址 bias指向 kBias的位址

模組程式範例SIN_WAVEasm

local amp R0 IP kAmp 輸入點sin波的振幅 local frq R1 IP kFrq 輸入點sin波的頻率 local th R2 IP kTh 輸入點sin波的相角 local bias R3 IP kBias 輸入點sin波的中心偏移 local out R4 OP 輸出點sin波輸出 local tab R5 TP 表格指標指向 sin[256]的表格 local ang R6 內部變數相位角65536=360deg local kAmp R7 1000 參數振幅值 local kFrq R8 1000 參數頻率值=655368000Hz local kTh R9 0 參數相角值360deg=256 local kBias R10 0 參數偏移值 data 11 模組變數區長度及初值 initial 啟動程序 WR ang0 WR out0 ang=out=0 RET timer 即時控制程序(8KHz) RD ang ADD (frq) WR ang ang+=frq SFR 8 ADD (th) AND 255 ACC=sin(ang256+th) ADD tab WRH RDM table-look-up MUL (amp) SFR 12 ADD (bias) WR out out=ACCamp4096+bias RET table tab 256 sin[256]表格區10=4096 0 101 201 301 401 501 601 700 00~070deg 799 897 995 1092 1189 1285 1380 1474 08~0F 1567 1660 1751 1842 1931 2019 2106 2191 10~17 2276 2359 2440 2520 2598 2675 2751 2824 18~1F 2896 2967 3035 3102 3166 3229 3290 3349 20~27 3406 3461 3513 3564 3612 3659 3703 3745 28~2F 3784 3822 3857 3889 3920 3948 3973 3996 30~37 4017 4036 4052 4065 4076 4085 4091 4095 38~3F 4096 4095 4091 4085 4076 4065 4052 4036 40~4790deg 4017 3996 3973 3948 3920 3889 3857 3822 48~4F 3784 3745 3703 3659 3612 3564 3513 3461 50~57 3406 3349 3290 3229 3166 3102 3035 2967 58~5F

57

2896 2824 2751 2675 2598 2520 2440 2359 60~67 2276 2191 2106 2019 1931 1842 1751 1660 68~6F 1567 1474 1380 1285 1189 1092 995 897 70~77 799 700 601 501 401 301 201 101 78~7F 0 65435 65335 65235 65135 65035 64935 64836 80~87180deg 64737 64639 64541 64444 64347 64251 64156 64062 88~8F 63969 63876 63785 63694 63605 63517 63430 63345 90~97 63260 63177 63096 63016 62938 62861 62785 62712 98~9F 62640 62569 62501 62434 62370 62307 62246 62187 A0~A7 62130 62075 62023 61972 61924 61877 61833 61791 A8~A8 61752 61714 61679 61647 61616 61588 61563 61540 B0~B7 61519 61500 61484 61471 61460 61451 61445 61441 B8~BF 61440 61441 61445 61451 61460 61471 61484 61500 C0~C7270deg 61519 61540 61563 61588 61616 61647 61679 61714 C8~CF 61752 61791 61833 61877 61924 61972 62023 62075 D0~D7 62130 62187 62246 62307 62370 62434 62501 62569 D8~DF 62640 62712 62785 62861 62938 63016 63096 63177 E0~E7 63260 63345 63430 63517 63605 63694 63785 63876 E8~EF 63969 64062 64156 64251 64347 64444 64541 64639 F0~F7 64737 64836 64935 65035 65135 65235 65335 65435 F8~FF

就程式結構而言說明如下

timer 即時控制程序(8KHz) RD ang ADD (frq) WR ang ang+=frq SFR 8 ADD (th) AND 255 ACC=sin(ang256+th) ADD tab WRH RDM table-look-up MUL (amp) SFR 12 ADD (bias) WR out out=ACCamp4096+bias RET

1基本上我們以查表法計算 sin()其輸入θ的範圍為 0~255對映到 0~360deg其輸出 sin(θ)的範圍為+-4096對映到+-10的範圍

2建立一個內部變數 ang其範圍為 0~65535對映到 0~360的相位角 3每個timer程序都執行 ang+=frq的動作更新目前的相位角接著依照 ang的相位角查表得到 sin(ang256+th)值

4由於表格長度為 256-word所以必須將 ang256才能得到正確的對映關係而 th範圍為 0~255所以不需要像 ang一般的做額外處理

5sin()的範圍為(+1-1)而在表格中以(+4096~-4096)的型式記錄相當於 10=4096所以執行 Asin()時還要用 SFR12指令做4096的動作才能正確的取得輸出值

58

6就頻率輸入 frq而言其計算原則是將θ=ωt轉化成θ=Σ(ωdt)因為抽樣頻率

為 8KHz所以 dt=18000而得到 frq=655368000Hz公式其中 Hz為真正的頻率在 8KHz的抽樣頻率下其範圍為 0~4000

鋸齒波產生器

此模組會產生週期性的鋸齒波方塊圖如下

outfrq

kBiasbias

ampkAmp

kFrqth

kThf=1TB

θ

A

其中

1鋸齒波也有四個參數振幅(A)頻率(F)相位(θ)和偏移(B)和正弦波的定義完全一致唯一的差異是其輸出為鋸齒波而非正弦波

2基本波形是從週期開始時為 0一直遞增到週期結束時到達最高點然後立刻回歸

到 0重新開始 3以程式結構而論鋸齒波程式幾乎就是正弦波的相位計算部分只差沒有正弦波的

查表處理而已

模組程式範例SAW_WAVEasm

local amp R0 IP kAmp 輸入點sin波的振幅 local frq R1 IP kFrq 輸入點sin波的頻率 local th R2 IP kTh 輸入點sin波的相角 local bias R3 IP kBias 輸入點sin波的中心偏移 local out R4 OP 輸出點sin波輸出 local ang R5 內部變數相位角65536=360deg local kAmp R6 1000 參數振幅值 local kFrq R7 1000 參數頻率值=655368000Hz local kTh R8 0 參數相角值360deg=256 local kBias R9 0 參數偏移值 data 11 模組變數區長度及初值 initial 啟動程序 WR ang0 WR out0 ang=out=0 RET timer 即時控制程序(8KHz) RD ang ADD (frq) WR ang ang+=frq SFR 8 ADD (th) AND 255 ACC=(ang256+th)amp0x00ff MUL (amp) SFR 8 ADD (bias) WR out out=ACCamp256+bias

59

RET

脈衝波產生器

outfrq

kBiasbias

ampkAmp

kFrqth

kThf=1TB

θ

A

pwm

kDutyduty

此模組會產生週期性的脈衝波方塊圖如下

其中

1脈衝波有五個參數其中振幅(A)頻率(F)相位(θ)和偏移(B)四個參數和正弦波

定義完全一樣另外再增加一個負載率(D) 2基本波形是從週期開始時為 1隔段時間後換為 0然後持續到週期結束再重新開始其中 1所佔有的比例就是負載率當 D=0時為 0而 D=255時為 100

3和其他參數類似負載率(D)以 duty為其輸入點而以 kDuty為其參數值

模組程式範例PLS_WAVEasm

local amp R0 IP kAmp 輸入點脈衝波的振幅 local frq R1 IP kFrq 輸入點脈衝波的頻率 local th R2 IP kTh 輸入點脈衝波的相角 local bias R3 IP kBias 輸入點脈衝波的中心偏移 local duty R4 IP kDuty 輸入點脈衝波的負載率 local out R5 OP 輸出點脈衝波輸出 local ang R6 內部變數相位角65536=360deg local kAmp R7 1000 參數振幅值 local kFrq R8 1000 參數頻率值=655368000Hz local kTh R9 0 參數相角值360deg=256 local kBias R10 0 參數偏移值 local kDuty R11 128 參數負載率100 =256 data 12 模組變數區長度及初值 initial 啟動程序 WR ang0 WR out0 ang=out=0 RET timer 即時控制程序(8KHz)

60

RD ang ADD (frq) WR ang ang+=frq SFR 8 ADD (th) AND 255 ACC=(ang256+th)amp0x00ff SUB (duty) RD (amp) JLT t1 RD 0 ACC=(amp0) t1 ADD (bias) WR out out=ACC+bias RET

IIR 一階濾波器

此模組執行一階的 IIR濾波器方塊圖如下

kau x

Z-1

+

+

-

+低通濾波器

高通濾波器dx lp

hp

濾波器參數的計算公式如下

1假設濾波器的頻寬為 hz則 ωn=hz628 2若系統頻率為 8KHz則抽樣週期 dT為 dT=dt8000 其中 dt為模組參數 3則濾波器參數為 ka=ωndT4096或是 =hzdt62880004096即 =hzdt32 4當 dt決定後所允許的訊號頻寬為(4000dt)換句話說訊號頻寬會因為 dt增加而下降

為了方便實驗的運用下面列出常用的參數對照表

濾波頻寬

(Hz)

10 20 50 100 200 500 1000 2000

訊號頻寬

(Hz)

400 800 2000 4000 4000 4000 4000 4000

模組參數 dt 10 5 2 1 1 1 1 1

模組參數 ka 320 320 320 320 640 1600 3200 6400

表格的運用方式如下

1首先決定濾波頻寬 2接著查表找出對映的參數 dt和 ka 3再查表得到對映的訊號頻寬以決定是否需要串接前級濾波器

61

模組程式範例IIR1_FILTERasm

local u R0 IP 輸入點濾波器輸入 local lp R1 OP 輸出點低通濾波器輸出 local hp R2 OP 輸出點高通濾波器輸出 local dt R3 1 參數抽樣週期 local ka R4 4096 參數增益 ka10=4096 local prd R5 內部變數抽樣週期用 data 6 模組變數區長度 initial 開機啟動程序 WR lp0 WR hp0 WR prd1 RET lp=hp=0prd=1 timer 即時控制程序 SUB prd1 JNZ b9 if (--prdgt0) return RD dt WR prd prd=dt RD (u) SUB lp WR hp hp=u-lp MUL ka SFR 12 ADD lp WR lp lp+=(hpka4096) b9 RET

資料蒐集模組

資料蒐集模組是一個非常特殊的模組專門配合 eTTY 程式中的示波器使用

模組程式範例DAS4asm

local cmd R0 0 紀錄命令0=停止1=前置記錄2=正觸發4=負觸發6=觸發記錄 local dt R1 1 抽樣週期每 dT抽樣一次 local tab R2 TP DAS表格啟始位址 local cnt R3 0 目前記錄點(0~255) local ch1 R4 0 定義頻道1的變數位址 local ch2 R5 0 定義頻道2的變數位址 local ch3 R6 0 定義頻道3的變數位址 local ch4 R7 0 定義頻道4的變數位址 local trg R8 0 定義觸發頻道的變數位址 local th R9 0 觸發準位 local tail R10 0 觸發後的抽樣個數 local buf R11 1 抽樣計數(1~dt) local pnt R12 表格位址計算pnt=tab+cnt4 local len R13 表格長度計算(0~256) data 14 定義模組變數區的長度 table tab 1024 定義表格的長度 initial 啟動程序 WR cmd0 RET cmd=0 timer 控制程序

62

ADD cmd0 JZ t9 if (cmd==0) return SUB buf1 JNZ t9 if (--buf)gt0) return RD dt WR buf dt=buf RD cnt ADD 1 AND 0xff WR cnt cnt=(cnt+1)amp0xff SFL 2 ADD tab WR pnt pnt=tab+cnt4 RD (ch1) WR (pnt) ADD pnt1 pnt++=ch1 RD (ch2) WR (pnt) ADD pnt1 pnt++=ch2 RD (ch3) WR (pnt) ADD pnt1 pnt++=ch3 RD (ch4) WR (pnt) pnt =ch4 RD cmd SUB 1 JZ t9 SUB 1 JZ t2 SUB 1 JZ t3 SUB 1 JZ t4 SUB 1 JZ t5 SUB 1 JZ t6 JR t7 t2 RD (trg) SUB th JGE t9 ADD cmd1 JR t9 wait trgltth t3 RD (trg) SUB th JLE t9 JR t6 wait trggtth t4 RD (trg) SUB th JLE t9 ADD cmd1 JR t9 wait trggtth t5 RD (trg) SUB th JGE t9 JR t6 wait trgltth t6 WR len0 WR cmd7 len=0cmd=7 t7 ADD len1 SUB tail JLT t9 WR cmd0 if ((++len)gt=0x80) cmd=0 t9 RET

與 DC 馬達控制相關的程式模組有以下 4個程式模組說明如下

(1)加減速控制模組 ACC_controlasm (2)光電盤輸入模組 POS_inputasm (3)PWM輸出模組 PWM_outputasm (4)PD控制模組 PD_controlasm

71加減速控制模組 此程式模組主要功能在於執行位置控制的加減速命令修正其數學模式採用 Lynn

濾波器的架構參見下圖

cmd

2

+

old Z -1

-

Z -1

Z -1

Z-1

Z-1x0 x1 x8 x9 x16

+ -

++

2

Z-1

Z-1 y1 y2

+

-

y0

+ +

sumZ-1

+164

12

out

dif

+

63

加減速控制模組方塊圖

其中

1Lynn 濾波器的階數固定成八階也就是 m=8其公式為 H(z) = (1-2Z-m+Z-2m)(1-2Z-1+Z-2)m2

2因為m=8所以m2=64因此最後計算低通濾波的部份時要先做除 64的運算 3因為低通濾波(lp)和 y0之間有 64倍的差異代表 y0y1y2的變化範圍比濾波器輸

入值要擴大許多例如輸入值在+-1000變化時y0y1y2很可能會在+-64000之間變化這範圍已經超出整數處理的範圍很可能會造成錯誤的計算結果

4所以在實驗時輸入值的變化範圍必須控制在+-500之間以保證計算的正確性 5對於 Lynn 濾波器當 m=8時其濾波器的頻寬固定為 1 kHzmdt也就是 dt=1時頻寬為 125 Hz dt=2時頻寬為 625Hz依此類推 6對於 Lynn 濾波器其濾波器的延遲固定為 m個抽樣週期因此設計 hp = x8 - lp 即可得到高通濾波器的對應結果 7其中乘 2和除 64的運算以移位運算取代所以整個程式中並無任何乘法運算 8Lynn 濾波器本身並不是穩定濾波器所以在程式啟動時必須確實的將所有狀態

(x0~x16)歸零否則會產生不穩定的狀態輸出

因為 Lynn濾波器中所有參數固定所以除了抽樣週期 dt 之外並無任何可調參數

抽樣週期 dt 可以控制頻寬dt 越大則濾波器頻寬越低

將步階命令值的輸出送入 Lynn 濾波器中經由低通濾波器的效應可以減緩命

令的變化程度達到加減速控制的目的以下為使用 Lynn 濾波器型式實現加減速控

制的組合語言程式列印 如欲更進一步瞭解 Lynn 濾波器與 FIR 數位濾波器之間的關係可以參考通訊實驗

四數位濾波器設計(FIR)中之說明

ACC_controlasm程式列印 local cmd R0 IP 輸入點位置命令

local out R1 OP 輸出點加減速處理後的位置命令

local dif R2 OP 輸出點位置微分命令

local axis R3 0 馬達編號0=X1=Y2=Z3=C

local old R4 內部變數微分計算用

local sumL R5 內部變數積分計算用

local sumH R6 內部變數積分計算用

local y0 R7 內部變數y(0~2)

local y1 R8 local y2 R9

local x0 R10 內部變數x(0~16)

local x1 R11 local x2 R12 local x3 R13 local x4 R14

local x5 R15 local x6 R16 local x7 R17 local x8 R18

local x9 R19 local x10 R20 local x11 R21 local x12 R22

local x13 R23 local x14 R24 local x15 R25 local x16 R26

64

data 27 模組變數區長度

initial 開機啟動程序

WR dif0 RD (cmd) WR out WR old dif=0 out=old=cmd

sumHL=cmd64

SFL 6 WR sumL RD out SFR 10 SGN 5 WR sumH

RPT 17 WR x00 RPT 3 WR y00 RET x[0~16]=0y[0~2]=0

timer 即時控制程序

RD (cmd) SUBX old WR x0 x0=cmd-old old=cmd

SUB x81 ADD x16 ADD y11 SUB y2 WR y0 y0=x0-2x8+x16+2y1-y2

SGN ADD sumL WR sumL RDH ADC sumH WR sumH sumHL+=y0

WRH RD sumL SFR 6 WR out out=sumHL64

RD y0 SGN SFR WR dif dif=y032mm

RD x0 RPT 16 RDX x1 x[i]=x[i-1] i=1~16

RD y0 RDX y1 WR y2 y[i]=y[i-1] i=1~2

b9 RET

72光電盤輸入模組

DC馬達的位置由光電盤量測之預設儲存於 0xac與 0xbe二個輸入埠位址中其中位址 0xac記錄 X軸馬達的位置位址 0xbe記錄 Y軸馬達的位置由於本實驗的DC馬達接在 Y軸的位置上因此程式中直接選用 Y軸的輸入 光電盤位置輸入的程式列印如下其中速度由位置的差分而得至於馬達的位置

則使用內部 2個 word加以記錄精度為 32位元 POS_inputasm程式列印 local spd R0 OP 輸出點速度量測值

local ang R1 OP 輸出點角度量測值

local angH R2 內部變數角度的 32 位元部分

local mode R3 0x308 模式選擇15MHzAB 相正反向輸入

local pht R4 0xac 輸入阜地址光電盤輸入(0xac)

local phtc R5 0xbe 輸入阜地址光電盤模式(0xbe)

local old R6 內部變數速度更新用

data 7 模組變數區長度

initial 開機啟動程序

RD mode WR (phtc) phtc=mode

RD (pht) WR old WR spd0 RET old=phtspd=0

timer 即時控制程序

RD (pht) SUBX old SGN 11 WR spd spd=(pht-old)old=pht

65

ADD ang WR ang angHL+=spd

RDH ADC angH WR angH

RET

73 PWM輸出控制模組 模組方塊

cmd PWM輸出

程式說明 1在開機時將切換保護時間寫到輸出阜 0xbc上其中切換保護值為 0~6360=5us 2在每次 timer interrupt時將 cmd訊號處理後寫到輸出阜 0xb8上

PWM_outputasm程式列印 local cmd R0 IP gnd 輸入點v相命令

local gain R1 4096 參數輸出增益1=4096

local bias R2 2048 參數輸出偏壓0=2048

local limit R3 4095 參數輸出極限1=4095

local zone R4 0x88f0 參數頻率=12KHz切換保護=5us

local pwm R5 0xb8 輸出阜地址PWM0 輸出(0xb8)

local mode R6 0xbc 輸出阜地址PWM 模式(0xbc)

local p0md R7 0xf8 輸出阜地址port0 模式(0xf8)

local gnd R8 0 輸入接地點

data 9 模組變數區長度

initial 開機啟動程序

RD bias WR (pwm) pwm=bias

RD 0xffff WR (p0md) set port0 mode

RD zone WR (mode) RET mode=zone

stop 關機保護程序

RD bias WR (pwm) RET pwm=bias

timer 即時控制程序

RD (mode) xor 1 and 1 WR (mode) trigger watch-dog

RD (cmd) MUL gain SFR 12 ADD bias ACC=(cmdgain4096)+bias

MAX 0 MIN limit WR (pwm) pwm=limit(ACC)

RET

66

74 PD 控制模組

PD控制的模組方塊參見圖二十一所示其中比例控制的部份直接由增益 kp加以調整微分控制的部份則由誤差的差分經增益 kd的調整而得

Σ+

-

cmd

fdk

err out

Σ

pk

dk

Σ

+

+

+

-

old1minusZ

PD控制器的方塊圖

PD_controlasm程式列印 local cmd R0 IP gnd 輸入點位置命令(可忽略)

local fdk R1 IP gnd 輸入點位置回授(可忽略)

local out R2 OP 輸出點用以控制速度迴路

local kp R3 256 參數增益 kp10=256

local kd R4 0 參數增益 kd10=256

local err R5 0 內部變數

local old R6 0 內部變數

local gnd R7 0 無輸入時的短路點

data 8 模組變數區長度

initial 開機啟動程序

WR out0 WR old0 RET out=old=0

timer 即時控制程序

RD (cmd) SUB (fdk) PRTF WR err

MUL kp SFR 8 P=(cmd-fdk)kp256

RDS err SUBX old MUL kd SFR 8 D=(err-old)kd256

ADDS

WR out out=P+D

RET

程式中預設增益值的 10以整數值 256為基底因此使用 SFR 8的指令加以調

整另外在在計算微分項的程式部份用到 SUBX old的指令其詳細的暫存器動作如

下 參考 piDSP的指令說明SUBX指令將總共用到 3個時序參考錯誤 找不到參照

67

來源在時序 1時將原先 AX的資料拷貝一份到 HX中時序 2時正式執行減

法的動作所以 AX暫存器中的內容會變成 err-old時序 3時DSP會將存放在 HX暫存器中的內容拷貝一份到 old的記憶體中也就是經由 SUBX此一精簡指令將

同時完成計算差分所需要的相減與資料疊代的動作有效的利用 piDSP控制器 DSP核心的精簡指令將可以大幅提昇系統的計算速度

HX AXoldSUBXerr err

old

err

errerr olderr minus

1_err

errerr olderr minus err

1_err

1

2

3

SUBX的指令時序與暫存器變化

68

8附錄快速安裝說明

光纖網路通訊 FPGA 發展系統 (適用於 WIN-XP200098 系統)

快速安裝說明

26Pin 負載輸出入埠

雙電源︵5

12

伏︶輸入埠

單電源︵5

伏︶輸入埠

USB

光纖線輸

號 光纖線輸出埠

入 傳 埠

首先將光碟片 RFFPGA 目錄檔案拷貝在您工作硬碟裡面

第一次安裝時先將 USB 傳輸線接上電腦主機將電源供應器接上 FPGA 模組此時電

腦會出現安裝 USB-Serial 驅動程式選擇從清單安裝此驅動程式放置在光碟片

RFFPGA-USBdrive 選擇您目前安裝系統

可選擇 WIN-98WIN-MEWIN-2000WIN-XP 系統配合您現在工作電腦作業系統

69

注意一般電腦 USB 埠很多插口當您安裝驅動程式時是配合您當時插入之埠

下次如您插入不同接口埠時電腦會再次要求安裝驅動程式這是正常現象請再次安

裝驅動程式否則無法使用

FPLC 操作

首先進入 RFFPGA裡子目錄 testASM直接點選 fPLCexe 出現下面操作畫面(也可直接將

此檔案放置桌面直接點選)

(或者選擇 File 再執行 Setuphellip 選擇您要執行 CAI 檔)

70

進入下面操作畫面 首先使用滑鼠在 FPGA下載按鈕單擊動作使 FPGA變成 DSP晶片 實驗一至實驗五皆為使用 DSP組合語言設計程式其原始程式分別為 testASM1至testASM5可使用 texPad 開啟與編輯程式內容 實驗三與實驗五多有 IO控制動作 當選擇實驗三時出現下面畫面

71

eM_USB 模組

數字型 LED

0 1 2 34 5 6 78 9 A BC D E F

燈號型 LED

44 鍵盤

ADC0 ADC1 DAC0 DAC1

LED 選擇KEY 選擇

模 式 1

0123

注意操作畫面 3與 4 說明開關與按鍵選擇位置後選擇程式下載再按程式啟動如您

按下 0-3按鍵時燈號型 LED會有不同方向閃爍顯示程式停止時結束所有 IO控制動作再按回首頁選擇其他實驗 實驗四與實驗五

模式3

0 1 2 34 5 6 78 9 A BC D E F

按照上面開關選擇直接操作如果以上實驗皆能按照正常操作表示您光纖網路通訊

FPGA發展模組以能正常使用 注意 開機與關機動作順序如下

開機電腦啟動 --- eM_USB 模組電源接上 --- USB 接上電腦 ---

啟動 FPLC 軟體 --- 下載 FPGA 程式

關機關閉 FPLC 軟體 --- eM_USB 模組電源拔掉 --- 拔掉電腦 USB 接頭 ---關掉

電腦

如果以上順序有亂可能造成 USB 找不到驅動造成無法下載經過幾次測試還是

無法下載建議重新啟動電腦主機按照正確步驟操作

72

FPGA 下載操作

進入 FPLC 操作系統按照下列步驟選擇節點模組與下載 bit FPGA 檔案

在 VHDLDEMO 子目錄下您可以選擇您目前 FPGA 種類型號在此型號下我們已將 VHDL

與數位邏輯設計課本範例全部放於此處

73

光纖網路連線 FPGA 下載操作

首先利用光纖線將 eM_USB0 模組光纖輸出埠接至 eM_USB1 模組光纖輸入埠以此

類推最後再將最後 eM_USBN 模組光纖輸出埠接至 eM_USB0 模組光纖輸入埠配置

如附圖方式

個人電腦(Windows) eM_USB模組

0USB

eM_USB模組1

光纖網路

eM_USB模組2

eM_USB模組N

配置完成後進入 FPLC 系統首先必須先將 Node00 下載在 testASM 子目錄裡

piDSPv0bit 檔讓 eM_USB0 模組 FPGA 具備 DSP 功能才能執行光纖網路通訊

操作如下

此時您就可以選擇分別下載至各模組 FPGA 檔 bit

74

安裝 FPLC 注意事項

當您進入 FPLC 時

按 FILE 選擇 programhellip 選擇檔案為 exp_dcmplc 出現下面畫面

正常顯示畫面為

75

DOS 環境操作

在 PC 端的操作是在 Windows 環境中的 DOS 視窗中執行指令範例如下

eFPGA progNETbit 下載 FPGA電路至網路節點0(即 USB節點)中 eFPGA testLEDbit 1 下載 FPGA電路至網路節點1中

對於單一節點的控制程序如下

1將 eM_USB模組連結個人電腦的 USB端 2eM_USB模組開機 3執行下載指令即可 eFPGA xxxxbit 4若要更改 FPGA電路只要重新執行下載指令即可

對於多個網路節點的控制程序如下

1第一組 eM_USB模組連結個人電腦的 USB端再以光纖網路依序其他各節點 2連接 USB界面者為模組0從光纖發射端連接出去的模組為1依此類推 3將所有 eM_USB模組開機 4執行下載指令如下 eFPGA progNETbit 模組0必須先下載指定的 FPGA電路 eFPGA xxxxbit 1 再依序下載其他網路模組的 FPGA電路 eFPGA yyyybit 2 eFPGA zzzzbit 最後再重新下載模組0的 FPGA電路 5換句話說模組0必須先執行 progNETbit讓光纖網路接受 FPGA控制後才能透過光纖網路下載至其他節點等全部網路節點下載完畢後再將模組0的 FPGA重新下載讓模組0也可自由執行任意的 FPGA電路

6若要更改某一個網路節點中的 FPGA電路只要重新執行下述指令 eFPGA progNETbit 模組0必須先下載指定的 FPGA電路 eFPGA yyyybit 2 下載指定網路模組的 FPGA電路 eFPGA zzzz bit 最後再重新下載模組0的 FPGA電路 換句話說除非模組0中的 FPGA已經包括光纖網路管理電路否則一定要先在

模組0中下載網路管理電路後才能下載指定網路節點的 FPGA電路

76

光纖網路通訊 FPGA 發展系統

系統配置

光纖網路通訊 FPGA 發展系統的系統配置圖如下

個人電腦(Windows) eM_USB模組

0USB

eM_USB模組1

光纖網路

eM_USB模組2

eM_USB模組N

其中

1基本模組為 eM_USB模組可用 USB界面和個人電腦連線並提供 USB對光纖網路的轉換功能使得個人電腦可以獨立控制光纖網路中的每個網路節點

2eM_USB模組也可以作為光纖網路中的網路節點透過光纖網路而接受個人電腦的

監控 3就個人電腦而言不論是 USB界面直接連結或是以光纖網路間接連結的 eM_USB模組都是可以直接監控的網路節點最多可以同時控制一個 USB節點和 30個網路節點

4對於每一個網路節點個人電腦都可執行 eM_USB模組中 FPGA的電路下載工作並在適當的 FPGA電路配合下可執行 eM_USB模組中 FPGA內部電路的讀寫控制 5透過適當的 FPGA電路設計各網路節點都可透過光纖網路和其他任何網路節點

作同步通訊執行 FPGA內部記憶體的資料交換資料交換頻率可達 1KHz以上

77

網路模組配置

每個網路模組的標準配置圖如下

eM_USB模組光纖網路

USB eM_FPGA卡

eM_DEMO模組

eM_EXP實驗模組

DC電源

其中

1網路模組以 eM_USB模組為主提供基本的 USB界面和光纖網路連線 2eM_USB模組中的 FPGACPLD採用插卡型式可選擇不同的 eM_FPGA卡包括

eM_2V1K卡可選用 Virtex系列的 XC2V250和 XC2V1000 eM_3S1K卡可選用 Spartan3系列的 XC3S400XC3S1000和 XC3S1500 eM_3S50卡可選用 Spartan3系列的 XC3S50XC3S200和 XC3S400 eM_95XL卡可選用 9500XL系列的 XC95144XL和 XC95288XL 3eM_USB模組中的對外連線有兩種一種是 26P接頭用以連接既有的各種實驗模

組另一種是兩組 50P接頭將 FPGA中各接腳引出用以連接專題實驗 4eM_DEMO模組就是插上 50P接頭的教學模組其中包括 LED 數字顯示和 44鍵盤也具備兩組的 ADC和兩組的 DAC接頭提供類比訊號的測試工具

常用的實驗組合包括

1精簡組合包括(eM_USB+eM_FPGA)提供基本的網路節點適用於專題實驗 2標準組合包括(eM_USB+eM_FPGA+eM_DEMO)提供基礎 FPGA設計的教學實驗

3實驗組合包括(eM_USB+eM_FPGA+eM_DEMO+eM_EXP)提供進階的 FPGA實驗可依需求選用不同的實驗模組

78

eM_USB 模組

eM_USB 模組的電路配置圖如下

TxRx

DCPower

USB

JP2

JP3

光纖界面

外加電源

PC連線

JP1

eM_FPGA模組

FT232 CPLD FlashROM

SRAM

10cm

6cm

JP4

其中

1對外的連線接頭包括 DC電源 可選擇單電源(5V)或是多電源(5V+12V-12V)兩種 USB界面 直接連接個人電腦 光纖界面連接光纖網路 2實驗界面包括 JP1負責內部 CPLD的電路下載 JP2JP3兩組 50P的擴張用接頭 JP4 標準 26P接頭用以連接各種實驗模組 3內部的電路配置包括 A以 SO-DIMM接頭連接各種 eM_FPGA卡 B內附 EEPROMFlashROM和 SRAM提供 FPGA作應用測試 C以一顆 FT232BM作為 USB界面解碼而以一顆 CPLD作為光纖網路解碼 D提供各種 eM_FPGA卡的電路下載功能 4內附五顆 LED由上而下依序為 usbLED指示 USB界面的讀寫狀態 tstLED可由 FPGA電路自行定義 stsLED可由 FPGA電路自行定義 RxLED 可由 FPGA電路自行定義 TxLED 可由 FPGA電路自行定義

79

外部接腳定義

外部接頭的接點順序圖示如下

上視圖

JP11 9 JP4

126225

JP31

50249

JP21

50249

而各接頭的接點定義如下

JP1 JP4 JP2 JP3 1+33V 1+12V 2+12V 1 GND 2 GND 1 GND 2 GND 2GND 3 ADC 4 DAC 3POWER 4ALARM 3 +5V 4 +5V 3nc 5 yPB2 6 yPB3 5RxNET 6TxNET 5+12V 6+12V 4TCK 7 yPB1 6 yPB4 7RxUSB 6TxUSB 7-12V 6-12V 5nc 9 yPB0 10yPB5 9RxCAN 10TxCAN 9 ADC 10 DAC 6TDO 11yPB6 12yPB7 11P0D0 12P0D1 11P1D0 12P1D1 7TDI 13yGND 14yPC3 13P0D2 14P0D3 13P1D2 14P1D3 8nc 15yPC2 16yPC1 15P0D4 16P0D5 15P1D4 16P1D5 9TMS 17yPC0 18yPA0 17P0D6 18P0D7 17P1D6 18P1D7 19yPA1 20yPA2 19P0D8 20P0D9 19P1D8 20P1D9 21yPA3 22GND 21P0D10 22P0D11 21P1D10 22P1D11 23GND 24+5V 23P0D12 24P0D13 23P1D12 24P1D13 25+5V 26nc 25P0D14 26P0D15 25P1D14 26P1D15 27P2D0 28P2D1 27PxA0 28PxA1 29P2D2 30P2D3 29PxA2 30PxA3 31P2D4 32P2D5 31PxA4 32PxA5 33P2D6 34P2D7 33PxA6 34PxA7 35P2D8 36P2D9 35PxB0 36PxB1 37P2D10 38P2D11 37PxB2 38PxB3 39P2D12 40P2D13 39PxB4 40PxB5 41P2D14 42P2D15 41PxB6 42PxB7 43ADC0 44ADC1 43PxC0 44PxC1 45ADC2 46ADC3 45PxC2 46PxC3 47ADC4 48ADC5 47PxC4 48PxC5 49DAC0 50DAC1 49PxC6 50PxC7

80

eM_FPGA 模組

在各種 eM_FPGA 模組中FPGA 對外電路的標準配置圖如下

24576MHz

FlashROM

26PSRAM

EEPROM

mD[8]

yPA[4]

FPGACPLD

mA[19]mRDmWRmCSeeCKeeCSeeDIeeDO

光纖界面 RxNETTxNET

USB 界面 RxUSBTxUSBCLK24MPOWERALARM

LED

tstLEDstsLEDRxLEDTxLED

yPB[8]yPC[4]

ADCDAC

ADC[8]

實驗模組

ADC[2]

DAC[2]

xPA[4]

xPB[8]

xPC[4]

基礎實驗

其中

1FPGACPLD可以選擇下述幾種 XC2V250XC2V1000 採用 eM_2V1K模組其中 FPGA為 FG456包裝 XC3S400XC3S1000XC3S1500採用 eM_3S1K模組其中 FPGA為 FG456包裝 XC3S400XC3S1000XC3S1500採用 eM_3S1K模組其中 FPGA為 FG456包裝 XC3S50XC3S200XC3S400 採用 eM_3S50模組其中 FPGA為 TQ144包裝 XC95144XLXC95288XL 採用 eM_95XL模組其中 CPLD為 TQ144包裝 2採用 FG456包裝者可以控制所有的 IO界面 3採用 TQ144包裝者只是不能控制 RAM和 FlashROM而可以控制其他所有的界面 4所有 FPGA模組都可自由選擇由 USB界面或是由光纖界面下載電路但是 CPLD模組只能固定由 USB界面下載電路

5所有 FPGACPLD模組都可透過 26P接頭連接既有的各種實驗模組

81

FPGA 接腳對照表

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

mD0 XD6 mD0 A17 C13 -- -- mD1 XD7 mD1 B17 D12 -- -- mD2 XD8 mD2 C17 D11 -- -- mD3 XD9 mD3 D17 C11 -- -- mD4 XD10 mD4 E17 D10 -- -- mD5 XD11 mD5 E16 C10 -- -- mD6 XD12 mD6 E14 D9 -- -- mD7 XD13 mD7 E13 D7 -- -- mA0 XD14 mA0 D13 C7 -- -- mA1 XD15 mA1 C13 D6 -- -- mA2 XA0 mA2 V5 C3 -- -- mA3 XA1 mA3 U5 C4 -- -- mA4 XA2 mA4 Y2 D3 -- -- mA5 XA3 mA5 Y1 D4 -- -- mA6 XA4 mA6 V4 E3 -- -- mA7 XA5 mA7 V3 E4 -- -- mA8 XA6 mA8 W2 F3 -- -- mA9 XA7 mA9 W1 F4 -- -- mA10 XA8 mA10 T2 G6 -- -- mA11 XA9 mA11 T1 K3 -- -- mA12 XA10 mA12 R4 K10 -- -- mA13 XA11 mA13 R3 L3 -- -- mA14 XA12 mA14 R2 L4 -- -- mRD XRD mRD R1 D5 -- -- mWR XWR mWR P6 C6 -- --

POWER P0A0 POWER B4 B20 P1 P5 ALARM P0A1 ALARM A4 A19 P2 P6 RxNET P0A2 RxNET C4 B19 P4 P7 TxNET P0A3 TxNET C5 A18 P5 P9 RxUSB P0B0 RxUSB B5 A15 P6 P10 TxUSB P0B1 TxUSB A5 B15 P7 P11 RxCAN P0B2 RxCAN D6 A14 P8 P12 RxCAN P0B3 TxCAN C6 B14 P10 P13

CLK24M CLK24M CLK24M E12 B12 P124 P38

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

PWM0H P3A0 P0D0 E6 A8 P21 P23 PWM0L P3A1 P0D1 E5 B8 P23 P24 PWM1H P3A2 P0D2 C2 B6 P24 P25 PWM1L P3A3 P0D3 C1 A5 P25 P26 PWM2H P3A4 P0D4 D2 B5 P26 P27

82

PWM2L P3A5 P0D5 D1 A4 P27 P28 PWMenb P3A6 P0D6 E4 B4 P28 P30 PHT1Z P3A7 P0D7 E3 A3 P30 P31 PHT1A P3B0 P0D8 G2 C1 P31 P32 PHT1B P3B1 P0D9 G1 C2 P32 P33 PHT0A P3B2 P0D10 H5 D1 P33 P34 PHT0B P3B3 P0D11 J6 D2 P35 P35 AMP0 P3B4 P0D12 H4 E1 P36 P39 AMP1 P3B5 P0D13 H3 E2 P40 P40 AMP2 P3B6 P0D14 H2 F2 P41 P41 AMP3 P3B7 P0D15 H1 G1 P44 P43 eeSK P0C3 P1D0 C10 B9 P20 P22 eeCS P0C2 P1D1 D10 A9 P18 P21 eeDI P0C1 P1D2 F10 B10 P17 P20 eeDO P0C0 P1D3 E10 B11 P15 P19 ssCK P0B7 P1D4 E8 A11 P14 P17 ssCS P0B6 P1D5 E7 A12 P13 P16 ssDI P0B5 P1D6 A6 B13 P12 P15 ssDO P0B4 P1D7 B6 A13 P11 P14

ppCLK P3C0 P1D8 K4 G2 P46 P44 ppDIN P3C1 P1D9 K3 K1 P47 P45 TxD P3C2 P1D10 K2 K2 P50 P46 RxD P3C3 P1D11 K1 L1 P51 P48

tstLED P3C4 P1D12 L5 L2 P52 P49 stsLED P3C5 P1D13 L4 M1 P53 P50 RxLED P3C6 P1D14 L3 M2 P55 P51 TxLED P3C7 P1D15 L2 N1 P56 P52

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

xPA0 P2A0 P2D0 AA3 N2 P59 P53 xPA1 P2A1 P2D1 Y4 T1 P60 P54 xPA2 P2A2 P2D2 AA4 T2 P63 P56 xPA3 P2A3 P2D3 AB4 U2 P68 P57 xPC0 P2A4 P2D4 W5 V1 P69 P58 xPC1 P2A5 P2D5 Y5 V2 P70 P59 xPC2 P2A6 P2D6 AA5 W1 P73 P60 xPC3 P2A7 P2D7 AB5 W2 P74 P61

-- P2B0 P2D8 V6 Y1 P76 P64 -- P2B1 P2D9 V7 Y2 P77 P66 -- P2B2 P2D10 W6 AA3 P78 P68

mCS P2B3 P2D11 Y6 AB4 P79 P69 mA15 P2B4 P2D12 V9 AA4 P80 P70 mA16 P2B5 P2D13 V10 AB5 P82 P71 mA17 P2B6 P2D14 W10 AA5 P83 P74 mA18 P2B7 P2D15 Y10 AA6 P84 P75 CS0 P2C0 ADC0 AA10 AB8 P85 P76

83

SDIN0 P2C1 ADC1 AB10 AA8 P86 P77 CS1 P2C2 ADC2 U10 AB9 P87 P78

SDIN1 P2C3 ADC3 U11 AA9 P89 P79 SCLK P2C4 ADC4 V11 AB10 P90 P80 CS2 P2C5 ADC5 W11 AA10 P92 P81

SDOUT P2C6 ADC6 Y11 AB11 P93 P82 LDAC P2C7 ADC7 AA11 AA11 P95 P83

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

xPB0 P1A0 PxA0 M1 M3 P135 P85 xPB1 P1A1 PxA1 M2 M4 P132 P86 yPB2 P1A2 PxA2 M3 N3 P131 P87 yPB3 P1A3 PxA3 M4 N4 P130 P88 yPB1 P1A4 PxA4 M5 T4 P129 P91 yPB4 P1A5 PxA5 M6 T5 P128 P92 yPB0 P1A6 PxA6 N1 U3 P127 P93 yPB5 P1A7 PxA7 N2 U4 P125 P94 yPB6 P1B0 PxB0 U13 V3 P119 P95 yPB7 P1B1 PxB1 V13 V4 P118 P96 xPB2 P1B2 PxB2 W13 W3 P116 P97 xPB3 P1B3 PxB3 Y13 W4 P113 P98 xPB4 P1B4 PxB4 AA13 Y3 P112 P100 xPB5 P1B5 PxB5 AB13 Y4 P96 P101 yPC3 P1B6 PxB6 U12 Y5 P97 P102 yPC2 P1B7 PxB7 V12 W5 P98 P103 yPC1 P1C7 PxC0 AB17 W11 P108 P113 yPC0 P1C6 PxC1 AA17 Y11 P107 P112 yPA0 P1C5 PxC2 Y17 W10 P105 P111 yPA1 P1C4 PxC3 W17 Y10 P104 P110 yPA2 P1C3 PxC4 AB18 W9 P103 P107 yPA3 P1C2 PxC5 AA18 W8 P102 P106 xPB6 P1C1 PxC6 Y18 W6 P100 P105 xPB7 P1C0 PxC7 W18 Y6 P99 P104

84

eM_DEMO 模組

eM_DEMO 模組的電路配置圖如下

eM_USB 模組

數字型 LED

0 1 2 34 5 6 78 9 A BC D E F

燈號型 LED

44 鍵盤

ADC0 ADC1 DAC0 DAC1

LED 選擇KEY 選擇

其中

1eM_DEMO模組的基本功能包括 A將 xPAxPBxPC等 16個 IO訊號引出控制 LED和鍵盤電路 B將 ADDA訊號引出並放大成+-10V的工作範圍 2LED和鍵盤可以選擇三種模式由 LED和 KEY 兩組開關作選擇圖示如下

模式1

0123

模式2 模式3

0 1 2 34 5 6 78 9 A BC D E F

0123

3模式14鍵輸入並搭配 16點的 LED燈號顯示其中 16點 LED分別對映到 xPA[0~3]xPB[0~7]和 xPC[0~3] 4組按鍵分別對映到 xPC[0~3] 4模式24鍵輸入並搭配四個 7段式數字顯示其中 數字顯示由 xPA[0~3]作數字掃瞄而由 xPB[0~7]作 7段式 LED控制 4組按鍵 分別對映到 xPC[0~3] 5模式316鍵輸入並搭配四個 7段式數字顯示其中 數字顯示由 xPA[0~3]作數字掃瞄而由 xPB[0~7]作 7段式 LED控制 16組按鍵由 xPA[0~3]作鍵盤掃瞄而由 xPC[0~3]作鍵盤讀取 6根據VHDL與數位邏輯設計的章節其中 第 1章至 10章的實驗採用模式1而 第 11章實驗採用模式2而 第 12章之後的實驗都採用模式3

85

FPGA UCF 定義

eM_3S1K 模組

NET CLK LOC = B12

NET XAlt0gt LOC = N2

NET XAlt1gt LOC = T1

NET XAlt2gt LOC = T2

NET XAlt3gt LOC = U2

NET XBlt0gt LOC = M3

NET XBlt1gt LOC = M4

NET XBlt2gt LOC = W3

NET XBlt3gt LOC = W4

NET XBlt4gt LOC = Y3

NET XBlt5gt LOC = Y4

NET XBlt6gt LOC = W6

NET XBlt7gt LOC = Y6

NET XClt0gt LOC = V1

NET XClt1gt LOC = V2

NET XClt2gt LOC = W1

NET XClt3gt LOC = W2

NET YAlt0gt LOC = W10

JP4 接頭

NET YAlt1gt LOC = Y10

NET YAlt2gt LOC = W9

NET YAlt3gt LOC = W8

NET YBlt0gt LOC = U3

NET YBlt1gt LOC = T4

NET YBlt2gt LOC = N3

NET YBlt3gt LOC = N4

NET YBlt4gt LOC = T5

NET YBlt5gt LOC = U4

NET YBlt6gt LOC = V3

NET YBlt7gt LOC = V4

NET YClt0gt LOC = Y11

NET YClt1gt LOC = W11

NET YClt2gt LOC = W5

NET YClt3gt LOC = Y5

在光碟片中 RFFPGAVHDLDEMOBIT3S1K 裡有 VHDL 與數位邏輯設計書本範例原始檔與合成檔

86

eM_3S50 模組

NET CLK LOC = P124

NET XAlt0gt LOC = P59

NET XAlt1gt LOC = P60

NET XAlt2gt LOC = P63

NET XAlt3gt LOC = P68

NET XBlt0gt LOC = P135

NET XBlt1gt LOC = P132

NET XBlt2gt LOC = P116

NET XBlt3gt LOC = P113

NET XBlt4gt LOC = P112

NET XBlt5gt LOC = P96

NET XBlt6gt LOC = P100

NET XBlt7gt LOC = P99

NET XClt0gt LOC = P69

NET XClt1gt LOC = P70

NET XClt2gt LOC = P73

NET XClt3gt LOC = P74

NET YAlt0gt LOC = P105

JP4 接頭

NET YAlt1gt LOC = P104

NET YAlt2gt LOC = P103

NET YAlt3gt LOC = P102

NET YBlt0gt LOC = P127

NET YBlt1gt LOC = P129

NET YBlt2gt LOC = P131

NET YBlt3gt LOC = P130

NET YBlt4gt LOC = P128

NET YBlt5gt LOC = P125

NET YBlt6gt LOC = P119

NET YBlt7gt LOC = P118

NET YClt0gt LOC = P107

NET YClt1gt LOC = P108

NET YClt2gt LOC = P98

NET YClt3gt LOC = P97

在光碟片中 RFFPGAVHDLDEMOBIT3S200 裡有VHDL與數位邏輯設計書本範例原始檔與合成檔

87

eM_95XL 模組

NET CLK LOC = SPIN38

NET XAlt0gt LOC = SPIN53

NET XAlt1gt LOC = SPIN54

NET XAlt2gt LOC = SPIN56

NET XAlt3gt LOC = SPIN57

NET XBlt0gt LOC = SPIN85

NET XBlt1gt LOC = SPIN86

NET XBlt2gt LOC = SPIN97

NET XBlt3gt LOC = SPIN98

NET XBlt4gt LOC = SPIN100

NET XBlt5gt LOC = SPIN101

NET XBlt6gt LOC = SPIN105

NET XBlt7gt LOC = SPIN104

NET XClt0gt LOC = SPIN58

NET XClt1gt LOC = SPIN59

NET XClt2gt LOC = SPIN60

NET XClt3gt LOC = SPIN61

NET YAlt0gt LOC = SPIN111

JP4 接頭

NET YAlt1gt LOC = SPIN110

NET YAlt2gt LOC = SPIN107

NET YAlt3gt LOC = SPIN106

NET YBlt0gt LOC = SPIN93

NET YBlt1gt LOC = SPIN91

NET YBlt2gt LOC = SPIN87

NET YBlt3gt LOC = SPIN88

NET YBlt4gt LOC = SPIN92

NET YBlt5gt LOC = SPIN94

NET YBlt6gt LOC = SPIN95

NET YBlt7gt LOC = SPIN96

NET YClt0gt LOC = SPIN112

NET YClt1gt LOC = SPIN113

NET YClt2gt LOC = SPIN103

NET YClt3gt LOC = SPIN102

在光碟片中 RFFPGAVHDLDEMOSVF95288XL 裡有VHDL與數位邏輯設計書本範例原始檔與合成

檔案

88

eM_FPGA 模組

NET CLK LOC = E12

NET XAlt0gt LOC = AA3

NET XAlt1gt LOC = Y4

NET XAlt2gt LOC = AA4

NET XAlt3gt LOC = AB4

NET XBlt0gt LOC = M1

NET XBlt1gt LOC = M2

NET XBlt2gt LOC = W13

NET XBlt3gt LOC = Y13

NET XBlt4gt LOC = AA13

NET XBlt5gt LOC = AB13

NET XBlt6gt LOC = Y18

NET XBlt7gt LOC = W18

NET XClt0gt LOC = W5

NET XClt1gt LOC = Y5

NET XClt2gt LOC = AA5

NET XClt3gt LOC = AB5

NET YAlt0gt LOC = Y17

JP4 接頭

NET YAlt1gt LOC = W17

NET YAlt2gt LOC = AB18

NET YAlt3gt LOC = AA18

NET YBlt0gt LOC = N1

NET YBlt1gt LOC = M5

NET YBlt2gt LOC = M3

NET YBlt3gt LOC = M4

NET YBlt4gt LOC = M6

NET YBlt5gt LOC = N2

NET YBlt6gt LOC = U13

NET YBlt7gt LOC = V13

NET YClt0gt LOC = AA17

NET YClt1gt LOC = AB17

NET YClt2gt LOC = V12

NET YClt3gt LOC = U12

在光碟片中 RFFPGAVHDLDEMOBIT2V250 裡有VHDL與數位邏輯設計書本範例原始檔與合成檔

89

Page 33: RFFPGA 直流馬達實驗手冊juniortek.com.tw/program/manual/RF-DC-mal.pdf · em_demo模組 em_dcm 直流伺服馬達 dc電源 rffpga 系統的直流馬達實驗規劃 其中包括:

61 實驗 1-開迴路的電壓控制 實驗說明以電壓直接控制轉速的開迴路特性可簡化為一階系統處理方塊圖如

sτ+1

v km ωm

其中V 送給驅動器的 PWM電壓命令

ωm馬達的轉動速度可由處理 photo encoder信號所得的位置微分而得 km一階系統的穩態增益 τ一階系統的時間常數即步階響應中的上升時間

為了觀測直流馬達的開環路特性建立下面的測試方塊圖

其中

1所使用的模組包括 FG1方波產生器產生所需的步階測試波形 FT1馬達模擬以一階系統的低通濾波器來執行 IO1光電盤的回授處理可同時取得轉角和速度的量測值 IO2PWM電壓驅動直接驅動直流馬達作控制 Led四位數字七段顯示模組顯示波形信號資料 2測試目標有兩項(P 參數設定欄)包括 A調整方波命令控制直流馬達作開環路的 PWM電壓控制 B調整馬達模擬參數使模擬結果和實驗結果相符以確認開環路特性

33

實驗畫面顯示如下

測試一 開環路的電壓控制 記錄頻道 CH1電壓命令Y1=-300DY=500 CH2模擬速度Y2=-100DY=500 CH3馬達速度Y3=100DY=50 CH4馬達轉角Y4=300DY=50000 實驗參數 FG1kAMP=256電壓命令的測試振幅 FG1kFRQ=150電壓命令的測試頻率 FT1DT =10 馬達模擬參數 FT1KA =500馬達模擬參數

其中

1用示波器功能記錄四個頻道其中 CH2和 CH3重疊顯示以比較模擬速度和量測

速度之間的差異 2由於 Km 不等於 1所以必須調整 CH3的 Y軸單位才能使得 CH2和 CH3的穩態響應部分重疊

3實驗時可以改變 FG1的參數以調整測試方波的振幅和頻率 4可以調整 FT1的參數使得 CH2和 CH3的暫態響應部分重疊

根據實際的測試結果分析如下

2馬達模擬的參數調整到 DT=10而 KA=500根據公式 τ = 40961000dtka 所以上升時間(τ)為 0082秒或是 82ms 3CH2CH3的 Y軸單位並不一致顯然 Km 不等於 1經計算確認 Km=0098

對應之 plc檔程式說明(exp_pwmplc) echo off 畫面顯示開始

run dsp 0 選擇 DSP1

run stop run reset 既有程式停止

run testDCMmem 下載指定程式

das 1 ampfg1out 0 1024 PWM 波形 Volt 設定 DAS 頻道1

das 2 ampft1lp 0 1024 馬達模擬 Volt 設定 DAS 頻道2

das 3 ampio1spd 0 1024 馬達速度 Volt 設定 DAS 頻道3

das 4 ampio1ang 0 1024 馬達角度 Volt 設定 DAS 頻道4

plot select 0 設定示波器頁數

plot xunit 100000 0 設定示波器 X軸

plot yunit 1 500 -300 設定示波器 Y1 軸

34

plot yunit 2 500 -100 設定示波器 Y2 軸

plot yunit 3 50 100 設定示波器 Y3 軸

plot yunit 4 50000 300 設定示波器 Y4 軸

plot trigger 1 0 1 10 設定示波器觸發

plot scope 9 1 2 3 4 設定示波器顯示

module io2 設定 io2 模組

s cmd ampfg1out

module fg1 設定 fg1 模組

s kAmp 256 s kFrq 150

module ft1 設定 ft1 模組

s u ampfg1out s dt 10 s ka 500

module io3 設定 io3 模組

s led ampfg1out

module 回復預設模組

run 1khz 設定抽樣頻率為 4KHz

run start DSP 開始執行

das stop pause 1 DAS 啟動 das start DAS 啟動

echo on 回復正常訊息顯示

使用者可視情況調整一階濾波器的 ka和 dt值使得 ch2和 ch3 兩組波形完全相符

以求得開迴路系統近似的一階轉移函數 CAI操控設計畫面規劃如下(EXP_PWMCAI) page 1 畫面設計

35

page 2 畫面設計 page 3 畫面設計

36

實測響應圖

訊 號 說 明 訊 號 說 明 ch1 方波產生器訊號 ch3 一階濾波器輸出信號 ch2 馬達角速度訊號 ch4 馬達角位置訊號

直流馬達之開迴路電壓控制響應圖

37

以邏輯分析功能觀測直流馬達之光電盤輸入與 PWM輸出信號

38

62 實驗 2-閉迴路的速度控制 實驗說明為了觀測閉迴路的速度控制響應建立下面的測試方塊圖

加入 PD控制後系統閉迴路的轉移函數經適度的簡化仍能約略以一階系統

處理方塊圖如下

sτ+1

u km ωm

其中

u 送給控制器的速度命令

ωm馬達的轉動速度可由處理 photo encoder 信號所得的位置微分而得

km一階系統的穩態增益 τ一階系統的時間常數即步階響應中的上升時間

方塊圖中的模組功能說明如下

1用 fg1 產生測試用的方波速度命令

2將方波速度命令和速度回授訊號送到 PD 控制器方塊中產生電壓控制訊號再透

過 io2 模組將訊號送出給伺服介面

3用 ft1 建立對照用的一階系統可用 IIR1濾波器方塊產生

4將方波命令產生速度命令再觀測 PHT(io1)上的速度值 spd

5調整 IIR1濾波器的參數使得兩組波形完全相符這時 IIR1濾波器就是閉迴路

速度控制的特性其中 km 為增益而τ為上升時間(單位為 sec)

6增益 km 可從示波器中作簡單計算而上升時間(τ=40964000dtka)

7 Led四位數字七段顯示模組顯示波形信號資料

39

對應之 plc檔程式說明(exp_speedplc) echo off 畫面顯示開始

run dsp 0 選擇 DSP1

run stop run reset 既有程式停止

run testDCMmem 下載指定程式

das 1 ampfg1out 0 1024 PWM 波形 Volt 設定 DAS 頻道1

das 2 ampft1lp 0 1024 馬達模擬 Volt 設定 DAS 頻道2

das 3 ampio1spd 0 1024 馬達速度 Volt 設定 DAS 頻道3

das 4 ampio1ang 0 1024 馬達角度 Volt 設定 DAS 頻道4

plot select 0 設定示波器頁數

plot xunit 100000 0 設定示波器 X軸

plot yunit 1 50 -300 設定示波器 Y1 軸

plot yunit 2 50 -100 設定示波器 Y2 軸

plot yunit 3 50 100 設定示波器 Y3 軸

plot yunit 4 50000 300 設定示波器 Y4 軸

plot trigger 1 0 1 10 設定示波器觸發

plot scope 9 1 2 3 4 設定示波器顯示

module io2 設定 io2 模組

s cmd ampcn2out

module fg1 設定 fg1 模組

s kAmp 50 s kFrq 150

module cn2 設定 cn1 模組

s cmd ampfg1out s fdk ampio1spd s kp 0x4000

module ft1 設定 ft1 模組

s u ampfg1out s dt 2 s ka 320

module io3 設定 io3 模組

s led ampfg1out

module 回復預設模組

run 1khz 設定抽樣頻率為 4KHz

run start DSP 開始執行

das stop pause 1 DAS 啟動 das start DAS 啟動

echo on 回復正常訊息顯示

CAI操控設計畫面規劃如下(EXP_speedCAI)

40

page 1 畫面設計 page 2 與 page 3 畫面設計與實驗一 page 2 與 page 3相同畫面 page 4 畫面設計

41

方塊的參數設定 使用者可視情況調整一階濾波器的 ka和 dt值使得 ch2和 ch3 兩組波形完全相符

以求得此一閉迴路系統近似的一階轉移函數或調整 PD控制器中的 kp和 kp值以調整系統之響應 實測響應圖

訊 號 說 明 訊 號 說 明 ch1 方波產生器產生之速度命令 ch3 一階濾波器輸出信號 ch2 馬達角速度訊號 ch4 馬達角位置訊號

42

直流馬達之閉迴路速度控制響應圖

43

63 實驗 3-閉迴路的位置控制 實驗說明為了觀測閉迴路的位置控制響應將直流馬達的回授改為位置訊號

建立下面的測試方塊圖 方塊圖中的模組功能說明如下

1用 fg1產生測試用的方波位置命令 2將方波位置命令和位置回授訊號送到 PD控制器方塊中產生電壓控制訊號再透過 io2模組將訊號送出到伺服介面驅動馬達轉動

對應之 plc檔程式說明(exp_angleplc) echo off 畫面顯示開始

run dsp 0 選擇 DSP1

run stop run reset 既有程式停止

run testDCMmem 下載指定程式

das 1 ampfg1out 0 1024 PWM 波形 Volt 設定 DAS 頻道1

das 2 ampft1lp 0 1024 馬達模擬 Volt 設定 DAS 頻道2

das 3 ampio1spd 0 1024 馬達速度 Volt 設定 DAS 頻道3

das 4 ampio1ang 0 1024 馬達角度 Volt 設定 DAS 頻道4

plot select 0 設定示波器頁數

plot xunit 100000 0 設定示波器 X軸

plot yunit 1 1000 -300 設定示波器 Y1 軸

plot yunit 2 1000 -100 設定示波器 Y2 軸

plot yunit 3 20 100 設定示波器 Y3 軸

plot yunit 4 1000 300 設定示波器 Y4 軸

plot trigger 1 0 1 10 設定示波器觸發

44

plot scope 9 1 2 3 4 設定示波器顯示

module io2 設定 io2 模組

s cmd ampcn2out

module fg1 設定 fg1 模組

s kAmp 1000 s kFrq 75

module cn2 設定 cn1 模組

s cmd ampfg1out s fdk ampio1ang s kp 0x300 s kd 0x4000

module ft1 設定 ft1 模組

s u ampfg1out s dt 2 s ka 320

module io3 設定 io3 模組

s led ampfg1out

module 回復預設模組

run 1khz 設定抽樣頻率為 4KHz

run start DSP 開始執行

das stop pause 1 DAS 啟動 das start DAS 啟動

echo on 回復正常訊息顯示

CAI操控設計畫面規劃如下(EXP_angleCAI) page 1 畫面設計

45

page 2 與 page 3 畫面設計與實驗一 page 2 與 page 3相同畫面 page 4 畫面設計與實驗二 page 4 畫面 方塊的參數設定 延續上一實驗的說明使用者可以調整 PD控制器中的 kp和 kd值以調整系統之

響應 實測響應圖

訊 號 說 明 訊 號 說 明 ch1 方波產生器產生之位置命令 ch3 馬達角速度訊號 ch2 馬達角位置 ch4 Pd控制器輸出之電壓訊號

46

直流馬達之閉迴路位置控制響應圖

47

64 實驗 4-加減速的位置控制 實驗說明為避免方波命令的過於嚴苛在方波命令的輸出加入一加減速控制功

能方塊以減緩命令變化的幅度增加馬達運動的平順建立的測試方塊圖如下

方塊圖中的模組功能說明如下

1用 fg1產生測試用的方波位置命令 2將方波位置命令送到加減速控制方塊處理後產生新的位置命令再將新的位置命

令與位置回授訊號送到 PD控制器方塊中產生電壓控制訊號最後透過 io2模組將訊號送出到伺服介面驅動馬達轉動

對應之 plc檔程式說明(exp_accplc) echo off 畫面顯示開始

run dsp 0 選擇 DSP1

run stop run reset 既有程式停止

run testDCMmem 下載指定程式

das 1 ampfg1out 0 1024 PWM 波形 Volt 設定 DAS 頻道1

das 2 ampcn1out 0 1024 加速控制 Volt 設定 DAS 頻道2

das 3 ampio1spd 0 1024 馬達速度 Volt 設定 DAS 頻道3

das 4 ampio1ang 0 1024 馬達角度 Volt 設定 DAS 頻道4

plot select 0 設定示波器頁數

plot xunit 100000 0 設定示波器 X軸

plot yunit 1 2000 -300 設定示波器 Y1 軸

plot yunit 2 2000 -100 設定示波器 Y2 軸

plot yunit 3 50 100 設定示波器 Y3 軸

plot yunit 4 2000 300 設定示波器 Y4 軸

48

plot trigger 1 0 1 10 設定示波器觸發

plot scope 9 1 2 3 4 設定示波器顯示

module io2 設定 io2 模組

s cmd ampcn2out

module fg1 設定 fg1 模組

s kAmp 2000 s kFrq 150

module cn1 設定 cn1 模組

s cmd ampfg1out

module cn2 設定 cn2 模組

s cmd ampcn1out s fdk ampio1ang s kp 0x300 s kd 0x4000

module ft1 設定 ft1 模組

s u ampfg1out s dt 2 s ka 320

module io3 設定 io3 模組

s led ampfg1out

module 回復預設模組

run 1khz 設定抽樣頻率為 4KHz

run start DSP 開始執行

das stop pause 1 DAS 啟動 das start DAS 啟動

echo on 回復正常訊息顯示

CAI操控設計畫面規劃如下(EXP_accCAI) page 1 畫面設計

49

page 2 畫面設計與實驗一 page 2相同畫面 page 3 畫面設計與實驗二 page 4相同畫面

參數設定參考之前各實驗的說明可線上機動性的調整 PD控制器中的 kp和 kd值以調整系統之響應 實測響應圖

訊 號 說 明 訊 號 說 明 ch1 方波產生器產生之位置命令 ch3 馬達角位置 ch2 加減速模組輸出之位置命令 ch4 馬達角速度訊號

50

圖一 直流馬達經加減速控制後之閉迴路控制響應圖

51

65 實驗 5-正弦波的位置控制 實驗說明在本實驗中改變命令的波形由方波改變為正弦波並建立如下的測

試方塊圖與上一實驗相比較僅更改命令的波形產生方塊 方塊圖中的模組功能說明如下 1用 fg2產生測試用的弦波位置命令 2將弦波位置命令送到加減速控制方塊處理後產生新的位置命令再與 io1 讀入的位

置回授訊號送到 PD 控制器方塊中產生電壓控制訊號再透過 io2 模組將訊號送出到伺服介面驅動馬達轉動

對應之 plc檔程式說明(exp_sinplc) echo off 畫面顯示開始

run dsp 0 選擇 DSP1

run stop run reset 既有程式停止

run testDCMmem 下載指定程式

das 1 ampfg2out 0 1024 SIN 波形 Volt 設定 DAS 頻道1

das 2 ampcn1out 0 1024 加速控制 Volt 設定 DAS 頻道2

das 3 ampio1spd 0 1024 馬達速度 Volt 設定 DAS 頻道3

das 4 ampio1ang 0 1024 馬達角度 Volt 設定 DAS 頻道4

plot select 0 設定示波器頁數

plot xunit 100000 0 設定示波器 X軸

plot yunit 1 2000 -300 設定示波器 Y1 軸

plot yunit 2 2000 -100 設定示波器 Y2 軸

plot yunit 3 50 100 設定示波器 Y3 軸

plot yunit 4 2000 300 設定示波器 Y4 軸

plot trigger 1 0 1 10 設定示波器觸發

52

plot scope 9 1 2 3 4 設定示波器顯示

module io2 設定 io2 模組

s cmd ampcn2out

module fg2 設定 fg1 模組

s kAmp 2000 s kFrq 100

module cn1 設定 cn1 模組

s cmd ampfg2out

module cn2 設定 cn2 模組

s cmd ampcn1out s fdk ampio1ang s kp 0x300 s kd 0x4000

module ft1 設定 ft1 模組

s u ampfg2out s dt 2 s ka 320

module io3 設定 io3 模組

s led ampfg2out

module 回復預設模組

run 1khz 設定抽樣頻率為 4KHz

run start DSP 開始執行

das stop pause 1 DAS 啟動 das start DAS 啟動

echo on 回復正常訊息顯示

CAI操控設計畫面規劃如下(EXP_sinCAI) page 1 畫面設計

53

page 2 畫面設計 page 3 畫面設計與實驗二 page 4相同畫面

方塊的參數設定可調整 PD控制器中的 kp和 kd值以調整系統之響應 實測響應圖

訊 號 說 明 訊 號 說 明 ch1 弦波產生器產生之位置命令 ch3 馬達角位置訊號 ch2 加減速模組輸出之位置命令 ch4 馬達角速度訊號

54

直流馬達之閉迴路弦波加減速位置控制響應圖

55

7組合語言說明

本節將針對 DC馬達伺服控制實驗專用的程式模組進行功能與程式碼的說明其

有關於波形產生器與資料擷取模組等說明如下

SIN_waveasm 正弦波產生器 PWM_waveasm 方波產生器 IIR1_filterasm 一階濾波器 DAS4asm 資料蒐集模組

弦波產生器

此模組會產生週期性的正弦波方塊圖如下

outfrq

kBiasbias

ampkAmp

kFrqth

kThf=1TB

θ

A

其中

1正弦波有四個參數振幅(A)頻率(F)相位(θ)和偏移(B)其公式為 out = A sin(2πF t +θ) + B 2對於單純的正弦波產生器所對映的參數包括 kAmp 振幅值 kFrq 頻率值kFrq=655368000Hz其中 Hz的範圍為 0~4000例如 1000Hz =gt frq=8192 100Hz =gt frq=819 10Hz =gt frq=82 1Hz =gt frq=8 kTh 相角值0~255代表 0~360的相位當 th=0 時為正弦波 th=64 時為餘弦波 th=128時為反相波依此類推 kBias偏移值 3對於可調變的正弦波產生器其對映的輸入點為 amp 控制振幅的輸入點可產生調幅(AM)波形 frq 控制頻率的輸入點可產生調頻(FM)波形 th 控制相位的輸入點可產生調相(PM)波形 bias控制偏移的輸入點可產生雙頻混波(相加)波形 4若不使用調變功能時各個輸入點時的預設值為 amp 指向 kAmp 的位址 frq 指向 kFrq 的位址

56

th 指向 kTh 的位址 bias指向 kBias的位址

模組程式範例SIN_WAVEasm

local amp R0 IP kAmp 輸入點sin波的振幅 local frq R1 IP kFrq 輸入點sin波的頻率 local th R2 IP kTh 輸入點sin波的相角 local bias R3 IP kBias 輸入點sin波的中心偏移 local out R4 OP 輸出點sin波輸出 local tab R5 TP 表格指標指向 sin[256]的表格 local ang R6 內部變數相位角65536=360deg local kAmp R7 1000 參數振幅值 local kFrq R8 1000 參數頻率值=655368000Hz local kTh R9 0 參數相角值360deg=256 local kBias R10 0 參數偏移值 data 11 模組變數區長度及初值 initial 啟動程序 WR ang0 WR out0 ang=out=0 RET timer 即時控制程序(8KHz) RD ang ADD (frq) WR ang ang+=frq SFR 8 ADD (th) AND 255 ACC=sin(ang256+th) ADD tab WRH RDM table-look-up MUL (amp) SFR 12 ADD (bias) WR out out=ACCamp4096+bias RET table tab 256 sin[256]表格區10=4096 0 101 201 301 401 501 601 700 00~070deg 799 897 995 1092 1189 1285 1380 1474 08~0F 1567 1660 1751 1842 1931 2019 2106 2191 10~17 2276 2359 2440 2520 2598 2675 2751 2824 18~1F 2896 2967 3035 3102 3166 3229 3290 3349 20~27 3406 3461 3513 3564 3612 3659 3703 3745 28~2F 3784 3822 3857 3889 3920 3948 3973 3996 30~37 4017 4036 4052 4065 4076 4085 4091 4095 38~3F 4096 4095 4091 4085 4076 4065 4052 4036 40~4790deg 4017 3996 3973 3948 3920 3889 3857 3822 48~4F 3784 3745 3703 3659 3612 3564 3513 3461 50~57 3406 3349 3290 3229 3166 3102 3035 2967 58~5F

57

2896 2824 2751 2675 2598 2520 2440 2359 60~67 2276 2191 2106 2019 1931 1842 1751 1660 68~6F 1567 1474 1380 1285 1189 1092 995 897 70~77 799 700 601 501 401 301 201 101 78~7F 0 65435 65335 65235 65135 65035 64935 64836 80~87180deg 64737 64639 64541 64444 64347 64251 64156 64062 88~8F 63969 63876 63785 63694 63605 63517 63430 63345 90~97 63260 63177 63096 63016 62938 62861 62785 62712 98~9F 62640 62569 62501 62434 62370 62307 62246 62187 A0~A7 62130 62075 62023 61972 61924 61877 61833 61791 A8~A8 61752 61714 61679 61647 61616 61588 61563 61540 B0~B7 61519 61500 61484 61471 61460 61451 61445 61441 B8~BF 61440 61441 61445 61451 61460 61471 61484 61500 C0~C7270deg 61519 61540 61563 61588 61616 61647 61679 61714 C8~CF 61752 61791 61833 61877 61924 61972 62023 62075 D0~D7 62130 62187 62246 62307 62370 62434 62501 62569 D8~DF 62640 62712 62785 62861 62938 63016 63096 63177 E0~E7 63260 63345 63430 63517 63605 63694 63785 63876 E8~EF 63969 64062 64156 64251 64347 64444 64541 64639 F0~F7 64737 64836 64935 65035 65135 65235 65335 65435 F8~FF

就程式結構而言說明如下

timer 即時控制程序(8KHz) RD ang ADD (frq) WR ang ang+=frq SFR 8 ADD (th) AND 255 ACC=sin(ang256+th) ADD tab WRH RDM table-look-up MUL (amp) SFR 12 ADD (bias) WR out out=ACCamp4096+bias RET

1基本上我們以查表法計算 sin()其輸入θ的範圍為 0~255對映到 0~360deg其輸出 sin(θ)的範圍為+-4096對映到+-10的範圍

2建立一個內部變數 ang其範圍為 0~65535對映到 0~360的相位角 3每個timer程序都執行 ang+=frq的動作更新目前的相位角接著依照 ang的相位角查表得到 sin(ang256+th)值

4由於表格長度為 256-word所以必須將 ang256才能得到正確的對映關係而 th範圍為 0~255所以不需要像 ang一般的做額外處理

5sin()的範圍為(+1-1)而在表格中以(+4096~-4096)的型式記錄相當於 10=4096所以執行 Asin()時還要用 SFR12指令做4096的動作才能正確的取得輸出值

58

6就頻率輸入 frq而言其計算原則是將θ=ωt轉化成θ=Σ(ωdt)因為抽樣頻率

為 8KHz所以 dt=18000而得到 frq=655368000Hz公式其中 Hz為真正的頻率在 8KHz的抽樣頻率下其範圍為 0~4000

鋸齒波產生器

此模組會產生週期性的鋸齒波方塊圖如下

outfrq

kBiasbias

ampkAmp

kFrqth

kThf=1TB

θ

A

其中

1鋸齒波也有四個參數振幅(A)頻率(F)相位(θ)和偏移(B)和正弦波的定義完全一致唯一的差異是其輸出為鋸齒波而非正弦波

2基本波形是從週期開始時為 0一直遞增到週期結束時到達最高點然後立刻回歸

到 0重新開始 3以程式結構而論鋸齒波程式幾乎就是正弦波的相位計算部分只差沒有正弦波的

查表處理而已

模組程式範例SAW_WAVEasm

local amp R0 IP kAmp 輸入點sin波的振幅 local frq R1 IP kFrq 輸入點sin波的頻率 local th R2 IP kTh 輸入點sin波的相角 local bias R3 IP kBias 輸入點sin波的中心偏移 local out R4 OP 輸出點sin波輸出 local ang R5 內部變數相位角65536=360deg local kAmp R6 1000 參數振幅值 local kFrq R7 1000 參數頻率值=655368000Hz local kTh R8 0 參數相角值360deg=256 local kBias R9 0 參數偏移值 data 11 模組變數區長度及初值 initial 啟動程序 WR ang0 WR out0 ang=out=0 RET timer 即時控制程序(8KHz) RD ang ADD (frq) WR ang ang+=frq SFR 8 ADD (th) AND 255 ACC=(ang256+th)amp0x00ff MUL (amp) SFR 8 ADD (bias) WR out out=ACCamp256+bias

59

RET

脈衝波產生器

outfrq

kBiasbias

ampkAmp

kFrqth

kThf=1TB

θ

A

pwm

kDutyduty

此模組會產生週期性的脈衝波方塊圖如下

其中

1脈衝波有五個參數其中振幅(A)頻率(F)相位(θ)和偏移(B)四個參數和正弦波

定義完全一樣另外再增加一個負載率(D) 2基本波形是從週期開始時為 1隔段時間後換為 0然後持續到週期結束再重新開始其中 1所佔有的比例就是負載率當 D=0時為 0而 D=255時為 100

3和其他參數類似負載率(D)以 duty為其輸入點而以 kDuty為其參數值

模組程式範例PLS_WAVEasm

local amp R0 IP kAmp 輸入點脈衝波的振幅 local frq R1 IP kFrq 輸入點脈衝波的頻率 local th R2 IP kTh 輸入點脈衝波的相角 local bias R3 IP kBias 輸入點脈衝波的中心偏移 local duty R4 IP kDuty 輸入點脈衝波的負載率 local out R5 OP 輸出點脈衝波輸出 local ang R6 內部變數相位角65536=360deg local kAmp R7 1000 參數振幅值 local kFrq R8 1000 參數頻率值=655368000Hz local kTh R9 0 參數相角值360deg=256 local kBias R10 0 參數偏移值 local kDuty R11 128 參數負載率100 =256 data 12 模組變數區長度及初值 initial 啟動程序 WR ang0 WR out0 ang=out=0 RET timer 即時控制程序(8KHz)

60

RD ang ADD (frq) WR ang ang+=frq SFR 8 ADD (th) AND 255 ACC=(ang256+th)amp0x00ff SUB (duty) RD (amp) JLT t1 RD 0 ACC=(amp0) t1 ADD (bias) WR out out=ACC+bias RET

IIR 一階濾波器

此模組執行一階的 IIR濾波器方塊圖如下

kau x

Z-1

+

+

-

+低通濾波器

高通濾波器dx lp

hp

濾波器參數的計算公式如下

1假設濾波器的頻寬為 hz則 ωn=hz628 2若系統頻率為 8KHz則抽樣週期 dT為 dT=dt8000 其中 dt為模組參數 3則濾波器參數為 ka=ωndT4096或是 =hzdt62880004096即 =hzdt32 4當 dt決定後所允許的訊號頻寬為(4000dt)換句話說訊號頻寬會因為 dt增加而下降

為了方便實驗的運用下面列出常用的參數對照表

濾波頻寬

(Hz)

10 20 50 100 200 500 1000 2000

訊號頻寬

(Hz)

400 800 2000 4000 4000 4000 4000 4000

模組參數 dt 10 5 2 1 1 1 1 1

模組參數 ka 320 320 320 320 640 1600 3200 6400

表格的運用方式如下

1首先決定濾波頻寬 2接著查表找出對映的參數 dt和 ka 3再查表得到對映的訊號頻寬以決定是否需要串接前級濾波器

61

模組程式範例IIR1_FILTERasm

local u R0 IP 輸入點濾波器輸入 local lp R1 OP 輸出點低通濾波器輸出 local hp R2 OP 輸出點高通濾波器輸出 local dt R3 1 參數抽樣週期 local ka R4 4096 參數增益 ka10=4096 local prd R5 內部變數抽樣週期用 data 6 模組變數區長度 initial 開機啟動程序 WR lp0 WR hp0 WR prd1 RET lp=hp=0prd=1 timer 即時控制程序 SUB prd1 JNZ b9 if (--prdgt0) return RD dt WR prd prd=dt RD (u) SUB lp WR hp hp=u-lp MUL ka SFR 12 ADD lp WR lp lp+=(hpka4096) b9 RET

資料蒐集模組

資料蒐集模組是一個非常特殊的模組專門配合 eTTY 程式中的示波器使用

模組程式範例DAS4asm

local cmd R0 0 紀錄命令0=停止1=前置記錄2=正觸發4=負觸發6=觸發記錄 local dt R1 1 抽樣週期每 dT抽樣一次 local tab R2 TP DAS表格啟始位址 local cnt R3 0 目前記錄點(0~255) local ch1 R4 0 定義頻道1的變數位址 local ch2 R5 0 定義頻道2的變數位址 local ch3 R6 0 定義頻道3的變數位址 local ch4 R7 0 定義頻道4的變數位址 local trg R8 0 定義觸發頻道的變數位址 local th R9 0 觸發準位 local tail R10 0 觸發後的抽樣個數 local buf R11 1 抽樣計數(1~dt) local pnt R12 表格位址計算pnt=tab+cnt4 local len R13 表格長度計算(0~256) data 14 定義模組變數區的長度 table tab 1024 定義表格的長度 initial 啟動程序 WR cmd0 RET cmd=0 timer 控制程序

62

ADD cmd0 JZ t9 if (cmd==0) return SUB buf1 JNZ t9 if (--buf)gt0) return RD dt WR buf dt=buf RD cnt ADD 1 AND 0xff WR cnt cnt=(cnt+1)amp0xff SFL 2 ADD tab WR pnt pnt=tab+cnt4 RD (ch1) WR (pnt) ADD pnt1 pnt++=ch1 RD (ch2) WR (pnt) ADD pnt1 pnt++=ch2 RD (ch3) WR (pnt) ADD pnt1 pnt++=ch3 RD (ch4) WR (pnt) pnt =ch4 RD cmd SUB 1 JZ t9 SUB 1 JZ t2 SUB 1 JZ t3 SUB 1 JZ t4 SUB 1 JZ t5 SUB 1 JZ t6 JR t7 t2 RD (trg) SUB th JGE t9 ADD cmd1 JR t9 wait trgltth t3 RD (trg) SUB th JLE t9 JR t6 wait trggtth t4 RD (trg) SUB th JLE t9 ADD cmd1 JR t9 wait trggtth t5 RD (trg) SUB th JGE t9 JR t6 wait trgltth t6 WR len0 WR cmd7 len=0cmd=7 t7 ADD len1 SUB tail JLT t9 WR cmd0 if ((++len)gt=0x80) cmd=0 t9 RET

與 DC 馬達控制相關的程式模組有以下 4個程式模組說明如下

(1)加減速控制模組 ACC_controlasm (2)光電盤輸入模組 POS_inputasm (3)PWM輸出模組 PWM_outputasm (4)PD控制模組 PD_controlasm

71加減速控制模組 此程式模組主要功能在於執行位置控制的加減速命令修正其數學模式採用 Lynn

濾波器的架構參見下圖

cmd

2

+

old Z -1

-

Z -1

Z -1

Z-1

Z-1x0 x1 x8 x9 x16

+ -

++

2

Z-1

Z-1 y1 y2

+

-

y0

+ +

sumZ-1

+164

12

out

dif

+

63

加減速控制模組方塊圖

其中

1Lynn 濾波器的階數固定成八階也就是 m=8其公式為 H(z) = (1-2Z-m+Z-2m)(1-2Z-1+Z-2)m2

2因為m=8所以m2=64因此最後計算低通濾波的部份時要先做除 64的運算 3因為低通濾波(lp)和 y0之間有 64倍的差異代表 y0y1y2的變化範圍比濾波器輸

入值要擴大許多例如輸入值在+-1000變化時y0y1y2很可能會在+-64000之間變化這範圍已經超出整數處理的範圍很可能會造成錯誤的計算結果

4所以在實驗時輸入值的變化範圍必須控制在+-500之間以保證計算的正確性 5對於 Lynn 濾波器當 m=8時其濾波器的頻寬固定為 1 kHzmdt也就是 dt=1時頻寬為 125 Hz dt=2時頻寬為 625Hz依此類推 6對於 Lynn 濾波器其濾波器的延遲固定為 m個抽樣週期因此設計 hp = x8 - lp 即可得到高通濾波器的對應結果 7其中乘 2和除 64的運算以移位運算取代所以整個程式中並無任何乘法運算 8Lynn 濾波器本身並不是穩定濾波器所以在程式啟動時必須確實的將所有狀態

(x0~x16)歸零否則會產生不穩定的狀態輸出

因為 Lynn濾波器中所有參數固定所以除了抽樣週期 dt 之外並無任何可調參數

抽樣週期 dt 可以控制頻寬dt 越大則濾波器頻寬越低

將步階命令值的輸出送入 Lynn 濾波器中經由低通濾波器的效應可以減緩命

令的變化程度達到加減速控制的目的以下為使用 Lynn 濾波器型式實現加減速控

制的組合語言程式列印 如欲更進一步瞭解 Lynn 濾波器與 FIR 數位濾波器之間的關係可以參考通訊實驗

四數位濾波器設計(FIR)中之說明

ACC_controlasm程式列印 local cmd R0 IP 輸入點位置命令

local out R1 OP 輸出點加減速處理後的位置命令

local dif R2 OP 輸出點位置微分命令

local axis R3 0 馬達編號0=X1=Y2=Z3=C

local old R4 內部變數微分計算用

local sumL R5 內部變數積分計算用

local sumH R6 內部變數積分計算用

local y0 R7 內部變數y(0~2)

local y1 R8 local y2 R9

local x0 R10 內部變數x(0~16)

local x1 R11 local x2 R12 local x3 R13 local x4 R14

local x5 R15 local x6 R16 local x7 R17 local x8 R18

local x9 R19 local x10 R20 local x11 R21 local x12 R22

local x13 R23 local x14 R24 local x15 R25 local x16 R26

64

data 27 模組變數區長度

initial 開機啟動程序

WR dif0 RD (cmd) WR out WR old dif=0 out=old=cmd

sumHL=cmd64

SFL 6 WR sumL RD out SFR 10 SGN 5 WR sumH

RPT 17 WR x00 RPT 3 WR y00 RET x[0~16]=0y[0~2]=0

timer 即時控制程序

RD (cmd) SUBX old WR x0 x0=cmd-old old=cmd

SUB x81 ADD x16 ADD y11 SUB y2 WR y0 y0=x0-2x8+x16+2y1-y2

SGN ADD sumL WR sumL RDH ADC sumH WR sumH sumHL+=y0

WRH RD sumL SFR 6 WR out out=sumHL64

RD y0 SGN SFR WR dif dif=y032mm

RD x0 RPT 16 RDX x1 x[i]=x[i-1] i=1~16

RD y0 RDX y1 WR y2 y[i]=y[i-1] i=1~2

b9 RET

72光電盤輸入模組

DC馬達的位置由光電盤量測之預設儲存於 0xac與 0xbe二個輸入埠位址中其中位址 0xac記錄 X軸馬達的位置位址 0xbe記錄 Y軸馬達的位置由於本實驗的DC馬達接在 Y軸的位置上因此程式中直接選用 Y軸的輸入 光電盤位置輸入的程式列印如下其中速度由位置的差分而得至於馬達的位置

則使用內部 2個 word加以記錄精度為 32位元 POS_inputasm程式列印 local spd R0 OP 輸出點速度量測值

local ang R1 OP 輸出點角度量測值

local angH R2 內部變數角度的 32 位元部分

local mode R3 0x308 模式選擇15MHzAB 相正反向輸入

local pht R4 0xac 輸入阜地址光電盤輸入(0xac)

local phtc R5 0xbe 輸入阜地址光電盤模式(0xbe)

local old R6 內部變數速度更新用

data 7 模組變數區長度

initial 開機啟動程序

RD mode WR (phtc) phtc=mode

RD (pht) WR old WR spd0 RET old=phtspd=0

timer 即時控制程序

RD (pht) SUBX old SGN 11 WR spd spd=(pht-old)old=pht

65

ADD ang WR ang angHL+=spd

RDH ADC angH WR angH

RET

73 PWM輸出控制模組 模組方塊

cmd PWM輸出

程式說明 1在開機時將切換保護時間寫到輸出阜 0xbc上其中切換保護值為 0~6360=5us 2在每次 timer interrupt時將 cmd訊號處理後寫到輸出阜 0xb8上

PWM_outputasm程式列印 local cmd R0 IP gnd 輸入點v相命令

local gain R1 4096 參數輸出增益1=4096

local bias R2 2048 參數輸出偏壓0=2048

local limit R3 4095 參數輸出極限1=4095

local zone R4 0x88f0 參數頻率=12KHz切換保護=5us

local pwm R5 0xb8 輸出阜地址PWM0 輸出(0xb8)

local mode R6 0xbc 輸出阜地址PWM 模式(0xbc)

local p0md R7 0xf8 輸出阜地址port0 模式(0xf8)

local gnd R8 0 輸入接地點

data 9 模組變數區長度

initial 開機啟動程序

RD bias WR (pwm) pwm=bias

RD 0xffff WR (p0md) set port0 mode

RD zone WR (mode) RET mode=zone

stop 關機保護程序

RD bias WR (pwm) RET pwm=bias

timer 即時控制程序

RD (mode) xor 1 and 1 WR (mode) trigger watch-dog

RD (cmd) MUL gain SFR 12 ADD bias ACC=(cmdgain4096)+bias

MAX 0 MIN limit WR (pwm) pwm=limit(ACC)

RET

66

74 PD 控制模組

PD控制的模組方塊參見圖二十一所示其中比例控制的部份直接由增益 kp加以調整微分控制的部份則由誤差的差分經增益 kd的調整而得

Σ+

-

cmd

fdk

err out

Σ

pk

dk

Σ

+

+

+

-

old1minusZ

PD控制器的方塊圖

PD_controlasm程式列印 local cmd R0 IP gnd 輸入點位置命令(可忽略)

local fdk R1 IP gnd 輸入點位置回授(可忽略)

local out R2 OP 輸出點用以控制速度迴路

local kp R3 256 參數增益 kp10=256

local kd R4 0 參數增益 kd10=256

local err R5 0 內部變數

local old R6 0 內部變數

local gnd R7 0 無輸入時的短路點

data 8 模組變數區長度

initial 開機啟動程序

WR out0 WR old0 RET out=old=0

timer 即時控制程序

RD (cmd) SUB (fdk) PRTF WR err

MUL kp SFR 8 P=(cmd-fdk)kp256

RDS err SUBX old MUL kd SFR 8 D=(err-old)kd256

ADDS

WR out out=P+D

RET

程式中預設增益值的 10以整數值 256為基底因此使用 SFR 8的指令加以調

整另外在在計算微分項的程式部份用到 SUBX old的指令其詳細的暫存器動作如

下 參考 piDSP的指令說明SUBX指令將總共用到 3個時序參考錯誤 找不到參照

67

來源在時序 1時將原先 AX的資料拷貝一份到 HX中時序 2時正式執行減

法的動作所以 AX暫存器中的內容會變成 err-old時序 3時DSP會將存放在 HX暫存器中的內容拷貝一份到 old的記憶體中也就是經由 SUBX此一精簡指令將

同時完成計算差分所需要的相減與資料疊代的動作有效的利用 piDSP控制器 DSP核心的精簡指令將可以大幅提昇系統的計算速度

HX AXoldSUBXerr err

old

err

errerr olderr minus

1_err

errerr olderr minus err

1_err

1

2

3

SUBX的指令時序與暫存器變化

68

8附錄快速安裝說明

光纖網路通訊 FPGA 發展系統 (適用於 WIN-XP200098 系統)

快速安裝說明

26Pin 負載輸出入埠

雙電源︵5

12

伏︶輸入埠

單電源︵5

伏︶輸入埠

USB

光纖線輸

號 光纖線輸出埠

入 傳 埠

首先將光碟片 RFFPGA 目錄檔案拷貝在您工作硬碟裡面

第一次安裝時先將 USB 傳輸線接上電腦主機將電源供應器接上 FPGA 模組此時電

腦會出現安裝 USB-Serial 驅動程式選擇從清單安裝此驅動程式放置在光碟片

RFFPGA-USBdrive 選擇您目前安裝系統

可選擇 WIN-98WIN-MEWIN-2000WIN-XP 系統配合您現在工作電腦作業系統

69

注意一般電腦 USB 埠很多插口當您安裝驅動程式時是配合您當時插入之埠

下次如您插入不同接口埠時電腦會再次要求安裝驅動程式這是正常現象請再次安

裝驅動程式否則無法使用

FPLC 操作

首先進入 RFFPGA裡子目錄 testASM直接點選 fPLCexe 出現下面操作畫面(也可直接將

此檔案放置桌面直接點選)

(或者選擇 File 再執行 Setuphellip 選擇您要執行 CAI 檔)

70

進入下面操作畫面 首先使用滑鼠在 FPGA下載按鈕單擊動作使 FPGA變成 DSP晶片 實驗一至實驗五皆為使用 DSP組合語言設計程式其原始程式分別為 testASM1至testASM5可使用 texPad 開啟與編輯程式內容 實驗三與實驗五多有 IO控制動作 當選擇實驗三時出現下面畫面

71

eM_USB 模組

數字型 LED

0 1 2 34 5 6 78 9 A BC D E F

燈號型 LED

44 鍵盤

ADC0 ADC1 DAC0 DAC1

LED 選擇KEY 選擇

模 式 1

0123

注意操作畫面 3與 4 說明開關與按鍵選擇位置後選擇程式下載再按程式啟動如您

按下 0-3按鍵時燈號型 LED會有不同方向閃爍顯示程式停止時結束所有 IO控制動作再按回首頁選擇其他實驗 實驗四與實驗五

模式3

0 1 2 34 5 6 78 9 A BC D E F

按照上面開關選擇直接操作如果以上實驗皆能按照正常操作表示您光纖網路通訊

FPGA發展模組以能正常使用 注意 開機與關機動作順序如下

開機電腦啟動 --- eM_USB 模組電源接上 --- USB 接上電腦 ---

啟動 FPLC 軟體 --- 下載 FPGA 程式

關機關閉 FPLC 軟體 --- eM_USB 模組電源拔掉 --- 拔掉電腦 USB 接頭 ---關掉

電腦

如果以上順序有亂可能造成 USB 找不到驅動造成無法下載經過幾次測試還是

無法下載建議重新啟動電腦主機按照正確步驟操作

72

FPGA 下載操作

進入 FPLC 操作系統按照下列步驟選擇節點模組與下載 bit FPGA 檔案

在 VHDLDEMO 子目錄下您可以選擇您目前 FPGA 種類型號在此型號下我們已將 VHDL

與數位邏輯設計課本範例全部放於此處

73

光纖網路連線 FPGA 下載操作

首先利用光纖線將 eM_USB0 模組光纖輸出埠接至 eM_USB1 模組光纖輸入埠以此

類推最後再將最後 eM_USBN 模組光纖輸出埠接至 eM_USB0 模組光纖輸入埠配置

如附圖方式

個人電腦(Windows) eM_USB模組

0USB

eM_USB模組1

光纖網路

eM_USB模組2

eM_USB模組N

配置完成後進入 FPLC 系統首先必須先將 Node00 下載在 testASM 子目錄裡

piDSPv0bit 檔讓 eM_USB0 模組 FPGA 具備 DSP 功能才能執行光纖網路通訊

操作如下

此時您就可以選擇分別下載至各模組 FPGA 檔 bit

74

安裝 FPLC 注意事項

當您進入 FPLC 時

按 FILE 選擇 programhellip 選擇檔案為 exp_dcmplc 出現下面畫面

正常顯示畫面為

75

DOS 環境操作

在 PC 端的操作是在 Windows 環境中的 DOS 視窗中執行指令範例如下

eFPGA progNETbit 下載 FPGA電路至網路節點0(即 USB節點)中 eFPGA testLEDbit 1 下載 FPGA電路至網路節點1中

對於單一節點的控制程序如下

1將 eM_USB模組連結個人電腦的 USB端 2eM_USB模組開機 3執行下載指令即可 eFPGA xxxxbit 4若要更改 FPGA電路只要重新執行下載指令即可

對於多個網路節點的控制程序如下

1第一組 eM_USB模組連結個人電腦的 USB端再以光纖網路依序其他各節點 2連接 USB界面者為模組0從光纖發射端連接出去的模組為1依此類推 3將所有 eM_USB模組開機 4執行下載指令如下 eFPGA progNETbit 模組0必須先下載指定的 FPGA電路 eFPGA xxxxbit 1 再依序下載其他網路模組的 FPGA電路 eFPGA yyyybit 2 eFPGA zzzzbit 最後再重新下載模組0的 FPGA電路 5換句話說模組0必須先執行 progNETbit讓光纖網路接受 FPGA控制後才能透過光纖網路下載至其他節點等全部網路節點下載完畢後再將模組0的 FPGA重新下載讓模組0也可自由執行任意的 FPGA電路

6若要更改某一個網路節點中的 FPGA電路只要重新執行下述指令 eFPGA progNETbit 模組0必須先下載指定的 FPGA電路 eFPGA yyyybit 2 下載指定網路模組的 FPGA電路 eFPGA zzzz bit 最後再重新下載模組0的 FPGA電路 換句話說除非模組0中的 FPGA已經包括光纖網路管理電路否則一定要先在

模組0中下載網路管理電路後才能下載指定網路節點的 FPGA電路

76

光纖網路通訊 FPGA 發展系統

系統配置

光纖網路通訊 FPGA 發展系統的系統配置圖如下

個人電腦(Windows) eM_USB模組

0USB

eM_USB模組1

光纖網路

eM_USB模組2

eM_USB模組N

其中

1基本模組為 eM_USB模組可用 USB界面和個人電腦連線並提供 USB對光纖網路的轉換功能使得個人電腦可以獨立控制光纖網路中的每個網路節點

2eM_USB模組也可以作為光纖網路中的網路節點透過光纖網路而接受個人電腦的

監控 3就個人電腦而言不論是 USB界面直接連結或是以光纖網路間接連結的 eM_USB模組都是可以直接監控的網路節點最多可以同時控制一個 USB節點和 30個網路節點

4對於每一個網路節點個人電腦都可執行 eM_USB模組中 FPGA的電路下載工作並在適當的 FPGA電路配合下可執行 eM_USB模組中 FPGA內部電路的讀寫控制 5透過適當的 FPGA電路設計各網路節點都可透過光纖網路和其他任何網路節點

作同步通訊執行 FPGA內部記憶體的資料交換資料交換頻率可達 1KHz以上

77

網路模組配置

每個網路模組的標準配置圖如下

eM_USB模組光纖網路

USB eM_FPGA卡

eM_DEMO模組

eM_EXP實驗模組

DC電源

其中

1網路模組以 eM_USB模組為主提供基本的 USB界面和光纖網路連線 2eM_USB模組中的 FPGACPLD採用插卡型式可選擇不同的 eM_FPGA卡包括

eM_2V1K卡可選用 Virtex系列的 XC2V250和 XC2V1000 eM_3S1K卡可選用 Spartan3系列的 XC3S400XC3S1000和 XC3S1500 eM_3S50卡可選用 Spartan3系列的 XC3S50XC3S200和 XC3S400 eM_95XL卡可選用 9500XL系列的 XC95144XL和 XC95288XL 3eM_USB模組中的對外連線有兩種一種是 26P接頭用以連接既有的各種實驗模

組另一種是兩組 50P接頭將 FPGA中各接腳引出用以連接專題實驗 4eM_DEMO模組就是插上 50P接頭的教學模組其中包括 LED 數字顯示和 44鍵盤也具備兩組的 ADC和兩組的 DAC接頭提供類比訊號的測試工具

常用的實驗組合包括

1精簡組合包括(eM_USB+eM_FPGA)提供基本的網路節點適用於專題實驗 2標準組合包括(eM_USB+eM_FPGA+eM_DEMO)提供基礎 FPGA設計的教學實驗

3實驗組合包括(eM_USB+eM_FPGA+eM_DEMO+eM_EXP)提供進階的 FPGA實驗可依需求選用不同的實驗模組

78

eM_USB 模組

eM_USB 模組的電路配置圖如下

TxRx

DCPower

USB

JP2

JP3

光纖界面

外加電源

PC連線

JP1

eM_FPGA模組

FT232 CPLD FlashROM

SRAM

10cm

6cm

JP4

其中

1對外的連線接頭包括 DC電源 可選擇單電源(5V)或是多電源(5V+12V-12V)兩種 USB界面 直接連接個人電腦 光纖界面連接光纖網路 2實驗界面包括 JP1負責內部 CPLD的電路下載 JP2JP3兩組 50P的擴張用接頭 JP4 標準 26P接頭用以連接各種實驗模組 3內部的電路配置包括 A以 SO-DIMM接頭連接各種 eM_FPGA卡 B內附 EEPROMFlashROM和 SRAM提供 FPGA作應用測試 C以一顆 FT232BM作為 USB界面解碼而以一顆 CPLD作為光纖網路解碼 D提供各種 eM_FPGA卡的電路下載功能 4內附五顆 LED由上而下依序為 usbLED指示 USB界面的讀寫狀態 tstLED可由 FPGA電路自行定義 stsLED可由 FPGA電路自行定義 RxLED 可由 FPGA電路自行定義 TxLED 可由 FPGA電路自行定義

79

外部接腳定義

外部接頭的接點順序圖示如下

上視圖

JP11 9 JP4

126225

JP31

50249

JP21

50249

而各接頭的接點定義如下

JP1 JP4 JP2 JP3 1+33V 1+12V 2+12V 1 GND 2 GND 1 GND 2 GND 2GND 3 ADC 4 DAC 3POWER 4ALARM 3 +5V 4 +5V 3nc 5 yPB2 6 yPB3 5RxNET 6TxNET 5+12V 6+12V 4TCK 7 yPB1 6 yPB4 7RxUSB 6TxUSB 7-12V 6-12V 5nc 9 yPB0 10yPB5 9RxCAN 10TxCAN 9 ADC 10 DAC 6TDO 11yPB6 12yPB7 11P0D0 12P0D1 11P1D0 12P1D1 7TDI 13yGND 14yPC3 13P0D2 14P0D3 13P1D2 14P1D3 8nc 15yPC2 16yPC1 15P0D4 16P0D5 15P1D4 16P1D5 9TMS 17yPC0 18yPA0 17P0D6 18P0D7 17P1D6 18P1D7 19yPA1 20yPA2 19P0D8 20P0D9 19P1D8 20P1D9 21yPA3 22GND 21P0D10 22P0D11 21P1D10 22P1D11 23GND 24+5V 23P0D12 24P0D13 23P1D12 24P1D13 25+5V 26nc 25P0D14 26P0D15 25P1D14 26P1D15 27P2D0 28P2D1 27PxA0 28PxA1 29P2D2 30P2D3 29PxA2 30PxA3 31P2D4 32P2D5 31PxA4 32PxA5 33P2D6 34P2D7 33PxA6 34PxA7 35P2D8 36P2D9 35PxB0 36PxB1 37P2D10 38P2D11 37PxB2 38PxB3 39P2D12 40P2D13 39PxB4 40PxB5 41P2D14 42P2D15 41PxB6 42PxB7 43ADC0 44ADC1 43PxC0 44PxC1 45ADC2 46ADC3 45PxC2 46PxC3 47ADC4 48ADC5 47PxC4 48PxC5 49DAC0 50DAC1 49PxC6 50PxC7

80

eM_FPGA 模組

在各種 eM_FPGA 模組中FPGA 對外電路的標準配置圖如下

24576MHz

FlashROM

26PSRAM

EEPROM

mD[8]

yPA[4]

FPGACPLD

mA[19]mRDmWRmCSeeCKeeCSeeDIeeDO

光纖界面 RxNETTxNET

USB 界面 RxUSBTxUSBCLK24MPOWERALARM

LED

tstLEDstsLEDRxLEDTxLED

yPB[8]yPC[4]

ADCDAC

ADC[8]

實驗模組

ADC[2]

DAC[2]

xPA[4]

xPB[8]

xPC[4]

基礎實驗

其中

1FPGACPLD可以選擇下述幾種 XC2V250XC2V1000 採用 eM_2V1K模組其中 FPGA為 FG456包裝 XC3S400XC3S1000XC3S1500採用 eM_3S1K模組其中 FPGA為 FG456包裝 XC3S400XC3S1000XC3S1500採用 eM_3S1K模組其中 FPGA為 FG456包裝 XC3S50XC3S200XC3S400 採用 eM_3S50模組其中 FPGA為 TQ144包裝 XC95144XLXC95288XL 採用 eM_95XL模組其中 CPLD為 TQ144包裝 2採用 FG456包裝者可以控制所有的 IO界面 3採用 TQ144包裝者只是不能控制 RAM和 FlashROM而可以控制其他所有的界面 4所有 FPGA模組都可自由選擇由 USB界面或是由光纖界面下載電路但是 CPLD模組只能固定由 USB界面下載電路

5所有 FPGACPLD模組都可透過 26P接頭連接既有的各種實驗模組

81

FPGA 接腳對照表

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

mD0 XD6 mD0 A17 C13 -- -- mD1 XD7 mD1 B17 D12 -- -- mD2 XD8 mD2 C17 D11 -- -- mD3 XD9 mD3 D17 C11 -- -- mD4 XD10 mD4 E17 D10 -- -- mD5 XD11 mD5 E16 C10 -- -- mD6 XD12 mD6 E14 D9 -- -- mD7 XD13 mD7 E13 D7 -- -- mA0 XD14 mA0 D13 C7 -- -- mA1 XD15 mA1 C13 D6 -- -- mA2 XA0 mA2 V5 C3 -- -- mA3 XA1 mA3 U5 C4 -- -- mA4 XA2 mA4 Y2 D3 -- -- mA5 XA3 mA5 Y1 D4 -- -- mA6 XA4 mA6 V4 E3 -- -- mA7 XA5 mA7 V3 E4 -- -- mA8 XA6 mA8 W2 F3 -- -- mA9 XA7 mA9 W1 F4 -- -- mA10 XA8 mA10 T2 G6 -- -- mA11 XA9 mA11 T1 K3 -- -- mA12 XA10 mA12 R4 K10 -- -- mA13 XA11 mA13 R3 L3 -- -- mA14 XA12 mA14 R2 L4 -- -- mRD XRD mRD R1 D5 -- -- mWR XWR mWR P6 C6 -- --

POWER P0A0 POWER B4 B20 P1 P5 ALARM P0A1 ALARM A4 A19 P2 P6 RxNET P0A2 RxNET C4 B19 P4 P7 TxNET P0A3 TxNET C5 A18 P5 P9 RxUSB P0B0 RxUSB B5 A15 P6 P10 TxUSB P0B1 TxUSB A5 B15 P7 P11 RxCAN P0B2 RxCAN D6 A14 P8 P12 RxCAN P0B3 TxCAN C6 B14 P10 P13

CLK24M CLK24M CLK24M E12 B12 P124 P38

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

PWM0H P3A0 P0D0 E6 A8 P21 P23 PWM0L P3A1 P0D1 E5 B8 P23 P24 PWM1H P3A2 P0D2 C2 B6 P24 P25 PWM1L P3A3 P0D3 C1 A5 P25 P26 PWM2H P3A4 P0D4 D2 B5 P26 P27

82

PWM2L P3A5 P0D5 D1 A4 P27 P28 PWMenb P3A6 P0D6 E4 B4 P28 P30 PHT1Z P3A7 P0D7 E3 A3 P30 P31 PHT1A P3B0 P0D8 G2 C1 P31 P32 PHT1B P3B1 P0D9 G1 C2 P32 P33 PHT0A P3B2 P0D10 H5 D1 P33 P34 PHT0B P3B3 P0D11 J6 D2 P35 P35 AMP0 P3B4 P0D12 H4 E1 P36 P39 AMP1 P3B5 P0D13 H3 E2 P40 P40 AMP2 P3B6 P0D14 H2 F2 P41 P41 AMP3 P3B7 P0D15 H1 G1 P44 P43 eeSK P0C3 P1D0 C10 B9 P20 P22 eeCS P0C2 P1D1 D10 A9 P18 P21 eeDI P0C1 P1D2 F10 B10 P17 P20 eeDO P0C0 P1D3 E10 B11 P15 P19 ssCK P0B7 P1D4 E8 A11 P14 P17 ssCS P0B6 P1D5 E7 A12 P13 P16 ssDI P0B5 P1D6 A6 B13 P12 P15 ssDO P0B4 P1D7 B6 A13 P11 P14

ppCLK P3C0 P1D8 K4 G2 P46 P44 ppDIN P3C1 P1D9 K3 K1 P47 P45 TxD P3C2 P1D10 K2 K2 P50 P46 RxD P3C3 P1D11 K1 L1 P51 P48

tstLED P3C4 P1D12 L5 L2 P52 P49 stsLED P3C5 P1D13 L4 M1 P53 P50 RxLED P3C6 P1D14 L3 M2 P55 P51 TxLED P3C7 P1D15 L2 N1 P56 P52

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

xPA0 P2A0 P2D0 AA3 N2 P59 P53 xPA1 P2A1 P2D1 Y4 T1 P60 P54 xPA2 P2A2 P2D2 AA4 T2 P63 P56 xPA3 P2A3 P2D3 AB4 U2 P68 P57 xPC0 P2A4 P2D4 W5 V1 P69 P58 xPC1 P2A5 P2D5 Y5 V2 P70 P59 xPC2 P2A6 P2D6 AA5 W1 P73 P60 xPC3 P2A7 P2D7 AB5 W2 P74 P61

-- P2B0 P2D8 V6 Y1 P76 P64 -- P2B1 P2D9 V7 Y2 P77 P66 -- P2B2 P2D10 W6 AA3 P78 P68

mCS P2B3 P2D11 Y6 AB4 P79 P69 mA15 P2B4 P2D12 V9 AA4 P80 P70 mA16 P2B5 P2D13 V10 AB5 P82 P71 mA17 P2B6 P2D14 W10 AA5 P83 P74 mA18 P2B7 P2D15 Y10 AA6 P84 P75 CS0 P2C0 ADC0 AA10 AB8 P85 P76

83

SDIN0 P2C1 ADC1 AB10 AA8 P86 P77 CS1 P2C2 ADC2 U10 AB9 P87 P78

SDIN1 P2C3 ADC3 U11 AA9 P89 P79 SCLK P2C4 ADC4 V11 AB10 P90 P80 CS2 P2C5 ADC5 W11 AA10 P92 P81

SDOUT P2C6 ADC6 Y11 AB11 P93 P82 LDAC P2C7 ADC7 AA11 AA11 P95 P83

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

xPB0 P1A0 PxA0 M1 M3 P135 P85 xPB1 P1A1 PxA1 M2 M4 P132 P86 yPB2 P1A2 PxA2 M3 N3 P131 P87 yPB3 P1A3 PxA3 M4 N4 P130 P88 yPB1 P1A4 PxA4 M5 T4 P129 P91 yPB4 P1A5 PxA5 M6 T5 P128 P92 yPB0 P1A6 PxA6 N1 U3 P127 P93 yPB5 P1A7 PxA7 N2 U4 P125 P94 yPB6 P1B0 PxB0 U13 V3 P119 P95 yPB7 P1B1 PxB1 V13 V4 P118 P96 xPB2 P1B2 PxB2 W13 W3 P116 P97 xPB3 P1B3 PxB3 Y13 W4 P113 P98 xPB4 P1B4 PxB4 AA13 Y3 P112 P100 xPB5 P1B5 PxB5 AB13 Y4 P96 P101 yPC3 P1B6 PxB6 U12 Y5 P97 P102 yPC2 P1B7 PxB7 V12 W5 P98 P103 yPC1 P1C7 PxC0 AB17 W11 P108 P113 yPC0 P1C6 PxC1 AA17 Y11 P107 P112 yPA0 P1C5 PxC2 Y17 W10 P105 P111 yPA1 P1C4 PxC3 W17 Y10 P104 P110 yPA2 P1C3 PxC4 AB18 W9 P103 P107 yPA3 P1C2 PxC5 AA18 W8 P102 P106 xPB6 P1C1 PxC6 Y18 W6 P100 P105 xPB7 P1C0 PxC7 W18 Y6 P99 P104

84

eM_DEMO 模組

eM_DEMO 模組的電路配置圖如下

eM_USB 模組

數字型 LED

0 1 2 34 5 6 78 9 A BC D E F

燈號型 LED

44 鍵盤

ADC0 ADC1 DAC0 DAC1

LED 選擇KEY 選擇

其中

1eM_DEMO模組的基本功能包括 A將 xPAxPBxPC等 16個 IO訊號引出控制 LED和鍵盤電路 B將 ADDA訊號引出並放大成+-10V的工作範圍 2LED和鍵盤可以選擇三種模式由 LED和 KEY 兩組開關作選擇圖示如下

模式1

0123

模式2 模式3

0 1 2 34 5 6 78 9 A BC D E F

0123

3模式14鍵輸入並搭配 16點的 LED燈號顯示其中 16點 LED分別對映到 xPA[0~3]xPB[0~7]和 xPC[0~3] 4組按鍵分別對映到 xPC[0~3] 4模式24鍵輸入並搭配四個 7段式數字顯示其中 數字顯示由 xPA[0~3]作數字掃瞄而由 xPB[0~7]作 7段式 LED控制 4組按鍵 分別對映到 xPC[0~3] 5模式316鍵輸入並搭配四個 7段式數字顯示其中 數字顯示由 xPA[0~3]作數字掃瞄而由 xPB[0~7]作 7段式 LED控制 16組按鍵由 xPA[0~3]作鍵盤掃瞄而由 xPC[0~3]作鍵盤讀取 6根據VHDL與數位邏輯設計的章節其中 第 1章至 10章的實驗採用模式1而 第 11章實驗採用模式2而 第 12章之後的實驗都採用模式3

85

FPGA UCF 定義

eM_3S1K 模組

NET CLK LOC = B12

NET XAlt0gt LOC = N2

NET XAlt1gt LOC = T1

NET XAlt2gt LOC = T2

NET XAlt3gt LOC = U2

NET XBlt0gt LOC = M3

NET XBlt1gt LOC = M4

NET XBlt2gt LOC = W3

NET XBlt3gt LOC = W4

NET XBlt4gt LOC = Y3

NET XBlt5gt LOC = Y4

NET XBlt6gt LOC = W6

NET XBlt7gt LOC = Y6

NET XClt0gt LOC = V1

NET XClt1gt LOC = V2

NET XClt2gt LOC = W1

NET XClt3gt LOC = W2

NET YAlt0gt LOC = W10

JP4 接頭

NET YAlt1gt LOC = Y10

NET YAlt2gt LOC = W9

NET YAlt3gt LOC = W8

NET YBlt0gt LOC = U3

NET YBlt1gt LOC = T4

NET YBlt2gt LOC = N3

NET YBlt3gt LOC = N4

NET YBlt4gt LOC = T5

NET YBlt5gt LOC = U4

NET YBlt6gt LOC = V3

NET YBlt7gt LOC = V4

NET YClt0gt LOC = Y11

NET YClt1gt LOC = W11

NET YClt2gt LOC = W5

NET YClt3gt LOC = Y5

在光碟片中 RFFPGAVHDLDEMOBIT3S1K 裡有 VHDL 與數位邏輯設計書本範例原始檔與合成檔

86

eM_3S50 模組

NET CLK LOC = P124

NET XAlt0gt LOC = P59

NET XAlt1gt LOC = P60

NET XAlt2gt LOC = P63

NET XAlt3gt LOC = P68

NET XBlt0gt LOC = P135

NET XBlt1gt LOC = P132

NET XBlt2gt LOC = P116

NET XBlt3gt LOC = P113

NET XBlt4gt LOC = P112

NET XBlt5gt LOC = P96

NET XBlt6gt LOC = P100

NET XBlt7gt LOC = P99

NET XClt0gt LOC = P69

NET XClt1gt LOC = P70

NET XClt2gt LOC = P73

NET XClt3gt LOC = P74

NET YAlt0gt LOC = P105

JP4 接頭

NET YAlt1gt LOC = P104

NET YAlt2gt LOC = P103

NET YAlt3gt LOC = P102

NET YBlt0gt LOC = P127

NET YBlt1gt LOC = P129

NET YBlt2gt LOC = P131

NET YBlt3gt LOC = P130

NET YBlt4gt LOC = P128

NET YBlt5gt LOC = P125

NET YBlt6gt LOC = P119

NET YBlt7gt LOC = P118

NET YClt0gt LOC = P107

NET YClt1gt LOC = P108

NET YClt2gt LOC = P98

NET YClt3gt LOC = P97

在光碟片中 RFFPGAVHDLDEMOBIT3S200 裡有VHDL與數位邏輯設計書本範例原始檔與合成檔

87

eM_95XL 模組

NET CLK LOC = SPIN38

NET XAlt0gt LOC = SPIN53

NET XAlt1gt LOC = SPIN54

NET XAlt2gt LOC = SPIN56

NET XAlt3gt LOC = SPIN57

NET XBlt0gt LOC = SPIN85

NET XBlt1gt LOC = SPIN86

NET XBlt2gt LOC = SPIN97

NET XBlt3gt LOC = SPIN98

NET XBlt4gt LOC = SPIN100

NET XBlt5gt LOC = SPIN101

NET XBlt6gt LOC = SPIN105

NET XBlt7gt LOC = SPIN104

NET XClt0gt LOC = SPIN58

NET XClt1gt LOC = SPIN59

NET XClt2gt LOC = SPIN60

NET XClt3gt LOC = SPIN61

NET YAlt0gt LOC = SPIN111

JP4 接頭

NET YAlt1gt LOC = SPIN110

NET YAlt2gt LOC = SPIN107

NET YAlt3gt LOC = SPIN106

NET YBlt0gt LOC = SPIN93

NET YBlt1gt LOC = SPIN91

NET YBlt2gt LOC = SPIN87

NET YBlt3gt LOC = SPIN88

NET YBlt4gt LOC = SPIN92

NET YBlt5gt LOC = SPIN94

NET YBlt6gt LOC = SPIN95

NET YBlt7gt LOC = SPIN96

NET YClt0gt LOC = SPIN112

NET YClt1gt LOC = SPIN113

NET YClt2gt LOC = SPIN103

NET YClt3gt LOC = SPIN102

在光碟片中 RFFPGAVHDLDEMOSVF95288XL 裡有VHDL與數位邏輯設計書本範例原始檔與合成

檔案

88

eM_FPGA 模組

NET CLK LOC = E12

NET XAlt0gt LOC = AA3

NET XAlt1gt LOC = Y4

NET XAlt2gt LOC = AA4

NET XAlt3gt LOC = AB4

NET XBlt0gt LOC = M1

NET XBlt1gt LOC = M2

NET XBlt2gt LOC = W13

NET XBlt3gt LOC = Y13

NET XBlt4gt LOC = AA13

NET XBlt5gt LOC = AB13

NET XBlt6gt LOC = Y18

NET XBlt7gt LOC = W18

NET XClt0gt LOC = W5

NET XClt1gt LOC = Y5

NET XClt2gt LOC = AA5

NET XClt3gt LOC = AB5

NET YAlt0gt LOC = Y17

JP4 接頭

NET YAlt1gt LOC = W17

NET YAlt2gt LOC = AB18

NET YAlt3gt LOC = AA18

NET YBlt0gt LOC = N1

NET YBlt1gt LOC = M5

NET YBlt2gt LOC = M3

NET YBlt3gt LOC = M4

NET YBlt4gt LOC = M6

NET YBlt5gt LOC = N2

NET YBlt6gt LOC = U13

NET YBlt7gt LOC = V13

NET YClt0gt LOC = AA17

NET YClt1gt LOC = AB17

NET YClt2gt LOC = V12

NET YClt3gt LOC = U12

在光碟片中 RFFPGAVHDLDEMOBIT2V250 裡有VHDL與數位邏輯設計書本範例原始檔與合成檔

89

Page 34: RFFPGA 直流馬達實驗手冊juniortek.com.tw/program/manual/RF-DC-mal.pdf · em_demo模組 em_dcm 直流伺服馬達 dc電源 rffpga 系統的直流馬達實驗規劃 其中包括:

實驗畫面顯示如下

測試一 開環路的電壓控制 記錄頻道 CH1電壓命令Y1=-300DY=500 CH2模擬速度Y2=-100DY=500 CH3馬達速度Y3=100DY=50 CH4馬達轉角Y4=300DY=50000 實驗參數 FG1kAMP=256電壓命令的測試振幅 FG1kFRQ=150電壓命令的測試頻率 FT1DT =10 馬達模擬參數 FT1KA =500馬達模擬參數

其中

1用示波器功能記錄四個頻道其中 CH2和 CH3重疊顯示以比較模擬速度和量測

速度之間的差異 2由於 Km 不等於 1所以必須調整 CH3的 Y軸單位才能使得 CH2和 CH3的穩態響應部分重疊

3實驗時可以改變 FG1的參數以調整測試方波的振幅和頻率 4可以調整 FT1的參數使得 CH2和 CH3的暫態響應部分重疊

根據實際的測試結果分析如下

2馬達模擬的參數調整到 DT=10而 KA=500根據公式 τ = 40961000dtka 所以上升時間(τ)為 0082秒或是 82ms 3CH2CH3的 Y軸單位並不一致顯然 Km 不等於 1經計算確認 Km=0098

對應之 plc檔程式說明(exp_pwmplc) echo off 畫面顯示開始

run dsp 0 選擇 DSP1

run stop run reset 既有程式停止

run testDCMmem 下載指定程式

das 1 ampfg1out 0 1024 PWM 波形 Volt 設定 DAS 頻道1

das 2 ampft1lp 0 1024 馬達模擬 Volt 設定 DAS 頻道2

das 3 ampio1spd 0 1024 馬達速度 Volt 設定 DAS 頻道3

das 4 ampio1ang 0 1024 馬達角度 Volt 設定 DAS 頻道4

plot select 0 設定示波器頁數

plot xunit 100000 0 設定示波器 X軸

plot yunit 1 500 -300 設定示波器 Y1 軸

34

plot yunit 2 500 -100 設定示波器 Y2 軸

plot yunit 3 50 100 設定示波器 Y3 軸

plot yunit 4 50000 300 設定示波器 Y4 軸

plot trigger 1 0 1 10 設定示波器觸發

plot scope 9 1 2 3 4 設定示波器顯示

module io2 設定 io2 模組

s cmd ampfg1out

module fg1 設定 fg1 模組

s kAmp 256 s kFrq 150

module ft1 設定 ft1 模組

s u ampfg1out s dt 10 s ka 500

module io3 設定 io3 模組

s led ampfg1out

module 回復預設模組

run 1khz 設定抽樣頻率為 4KHz

run start DSP 開始執行

das stop pause 1 DAS 啟動 das start DAS 啟動

echo on 回復正常訊息顯示

使用者可視情況調整一階濾波器的 ka和 dt值使得 ch2和 ch3 兩組波形完全相符

以求得開迴路系統近似的一階轉移函數 CAI操控設計畫面規劃如下(EXP_PWMCAI) page 1 畫面設計

35

page 2 畫面設計 page 3 畫面設計

36

實測響應圖

訊 號 說 明 訊 號 說 明 ch1 方波產生器訊號 ch3 一階濾波器輸出信號 ch2 馬達角速度訊號 ch4 馬達角位置訊號

直流馬達之開迴路電壓控制響應圖

37

以邏輯分析功能觀測直流馬達之光電盤輸入與 PWM輸出信號

38

62 實驗 2-閉迴路的速度控制 實驗說明為了觀測閉迴路的速度控制響應建立下面的測試方塊圖

加入 PD控制後系統閉迴路的轉移函數經適度的簡化仍能約略以一階系統

處理方塊圖如下

sτ+1

u km ωm

其中

u 送給控制器的速度命令

ωm馬達的轉動速度可由處理 photo encoder 信號所得的位置微分而得

km一階系統的穩態增益 τ一階系統的時間常數即步階響應中的上升時間

方塊圖中的模組功能說明如下

1用 fg1 產生測試用的方波速度命令

2將方波速度命令和速度回授訊號送到 PD 控制器方塊中產生電壓控制訊號再透

過 io2 模組將訊號送出給伺服介面

3用 ft1 建立對照用的一階系統可用 IIR1濾波器方塊產生

4將方波命令產生速度命令再觀測 PHT(io1)上的速度值 spd

5調整 IIR1濾波器的參數使得兩組波形完全相符這時 IIR1濾波器就是閉迴路

速度控制的特性其中 km 為增益而τ為上升時間(單位為 sec)

6增益 km 可從示波器中作簡單計算而上升時間(τ=40964000dtka)

7 Led四位數字七段顯示模組顯示波形信號資料

39

對應之 plc檔程式說明(exp_speedplc) echo off 畫面顯示開始

run dsp 0 選擇 DSP1

run stop run reset 既有程式停止

run testDCMmem 下載指定程式

das 1 ampfg1out 0 1024 PWM 波形 Volt 設定 DAS 頻道1

das 2 ampft1lp 0 1024 馬達模擬 Volt 設定 DAS 頻道2

das 3 ampio1spd 0 1024 馬達速度 Volt 設定 DAS 頻道3

das 4 ampio1ang 0 1024 馬達角度 Volt 設定 DAS 頻道4

plot select 0 設定示波器頁數

plot xunit 100000 0 設定示波器 X軸

plot yunit 1 50 -300 設定示波器 Y1 軸

plot yunit 2 50 -100 設定示波器 Y2 軸

plot yunit 3 50 100 設定示波器 Y3 軸

plot yunit 4 50000 300 設定示波器 Y4 軸

plot trigger 1 0 1 10 設定示波器觸發

plot scope 9 1 2 3 4 設定示波器顯示

module io2 設定 io2 模組

s cmd ampcn2out

module fg1 設定 fg1 模組

s kAmp 50 s kFrq 150

module cn2 設定 cn1 模組

s cmd ampfg1out s fdk ampio1spd s kp 0x4000

module ft1 設定 ft1 模組

s u ampfg1out s dt 2 s ka 320

module io3 設定 io3 模組

s led ampfg1out

module 回復預設模組

run 1khz 設定抽樣頻率為 4KHz

run start DSP 開始執行

das stop pause 1 DAS 啟動 das start DAS 啟動

echo on 回復正常訊息顯示

CAI操控設計畫面規劃如下(EXP_speedCAI)

40

page 1 畫面設計 page 2 與 page 3 畫面設計與實驗一 page 2 與 page 3相同畫面 page 4 畫面設計

41

方塊的參數設定 使用者可視情況調整一階濾波器的 ka和 dt值使得 ch2和 ch3 兩組波形完全相符

以求得此一閉迴路系統近似的一階轉移函數或調整 PD控制器中的 kp和 kp值以調整系統之響應 實測響應圖

訊 號 說 明 訊 號 說 明 ch1 方波產生器產生之速度命令 ch3 一階濾波器輸出信號 ch2 馬達角速度訊號 ch4 馬達角位置訊號

42

直流馬達之閉迴路速度控制響應圖

43

63 實驗 3-閉迴路的位置控制 實驗說明為了觀測閉迴路的位置控制響應將直流馬達的回授改為位置訊號

建立下面的測試方塊圖 方塊圖中的模組功能說明如下

1用 fg1產生測試用的方波位置命令 2將方波位置命令和位置回授訊號送到 PD控制器方塊中產生電壓控制訊號再透過 io2模組將訊號送出到伺服介面驅動馬達轉動

對應之 plc檔程式說明(exp_angleplc) echo off 畫面顯示開始

run dsp 0 選擇 DSP1

run stop run reset 既有程式停止

run testDCMmem 下載指定程式

das 1 ampfg1out 0 1024 PWM 波形 Volt 設定 DAS 頻道1

das 2 ampft1lp 0 1024 馬達模擬 Volt 設定 DAS 頻道2

das 3 ampio1spd 0 1024 馬達速度 Volt 設定 DAS 頻道3

das 4 ampio1ang 0 1024 馬達角度 Volt 設定 DAS 頻道4

plot select 0 設定示波器頁數

plot xunit 100000 0 設定示波器 X軸

plot yunit 1 1000 -300 設定示波器 Y1 軸

plot yunit 2 1000 -100 設定示波器 Y2 軸

plot yunit 3 20 100 設定示波器 Y3 軸

plot yunit 4 1000 300 設定示波器 Y4 軸

plot trigger 1 0 1 10 設定示波器觸發

44

plot scope 9 1 2 3 4 設定示波器顯示

module io2 設定 io2 模組

s cmd ampcn2out

module fg1 設定 fg1 模組

s kAmp 1000 s kFrq 75

module cn2 設定 cn1 模組

s cmd ampfg1out s fdk ampio1ang s kp 0x300 s kd 0x4000

module ft1 設定 ft1 模組

s u ampfg1out s dt 2 s ka 320

module io3 設定 io3 模組

s led ampfg1out

module 回復預設模組

run 1khz 設定抽樣頻率為 4KHz

run start DSP 開始執行

das stop pause 1 DAS 啟動 das start DAS 啟動

echo on 回復正常訊息顯示

CAI操控設計畫面規劃如下(EXP_angleCAI) page 1 畫面設計

45

page 2 與 page 3 畫面設計與實驗一 page 2 與 page 3相同畫面 page 4 畫面設計與實驗二 page 4 畫面 方塊的參數設定 延續上一實驗的說明使用者可以調整 PD控制器中的 kp和 kd值以調整系統之

響應 實測響應圖

訊 號 說 明 訊 號 說 明 ch1 方波產生器產生之位置命令 ch3 馬達角速度訊號 ch2 馬達角位置 ch4 Pd控制器輸出之電壓訊號

46

直流馬達之閉迴路位置控制響應圖

47

64 實驗 4-加減速的位置控制 實驗說明為避免方波命令的過於嚴苛在方波命令的輸出加入一加減速控制功

能方塊以減緩命令變化的幅度增加馬達運動的平順建立的測試方塊圖如下

方塊圖中的模組功能說明如下

1用 fg1產生測試用的方波位置命令 2將方波位置命令送到加減速控制方塊處理後產生新的位置命令再將新的位置命

令與位置回授訊號送到 PD控制器方塊中產生電壓控制訊號最後透過 io2模組將訊號送出到伺服介面驅動馬達轉動

對應之 plc檔程式說明(exp_accplc) echo off 畫面顯示開始

run dsp 0 選擇 DSP1

run stop run reset 既有程式停止

run testDCMmem 下載指定程式

das 1 ampfg1out 0 1024 PWM 波形 Volt 設定 DAS 頻道1

das 2 ampcn1out 0 1024 加速控制 Volt 設定 DAS 頻道2

das 3 ampio1spd 0 1024 馬達速度 Volt 設定 DAS 頻道3

das 4 ampio1ang 0 1024 馬達角度 Volt 設定 DAS 頻道4

plot select 0 設定示波器頁數

plot xunit 100000 0 設定示波器 X軸

plot yunit 1 2000 -300 設定示波器 Y1 軸

plot yunit 2 2000 -100 設定示波器 Y2 軸

plot yunit 3 50 100 設定示波器 Y3 軸

plot yunit 4 2000 300 設定示波器 Y4 軸

48

plot trigger 1 0 1 10 設定示波器觸發

plot scope 9 1 2 3 4 設定示波器顯示

module io2 設定 io2 模組

s cmd ampcn2out

module fg1 設定 fg1 模組

s kAmp 2000 s kFrq 150

module cn1 設定 cn1 模組

s cmd ampfg1out

module cn2 設定 cn2 模組

s cmd ampcn1out s fdk ampio1ang s kp 0x300 s kd 0x4000

module ft1 設定 ft1 模組

s u ampfg1out s dt 2 s ka 320

module io3 設定 io3 模組

s led ampfg1out

module 回復預設模組

run 1khz 設定抽樣頻率為 4KHz

run start DSP 開始執行

das stop pause 1 DAS 啟動 das start DAS 啟動

echo on 回復正常訊息顯示

CAI操控設計畫面規劃如下(EXP_accCAI) page 1 畫面設計

49

page 2 畫面設計與實驗一 page 2相同畫面 page 3 畫面設計與實驗二 page 4相同畫面

參數設定參考之前各實驗的說明可線上機動性的調整 PD控制器中的 kp和 kd值以調整系統之響應 實測響應圖

訊 號 說 明 訊 號 說 明 ch1 方波產生器產生之位置命令 ch3 馬達角位置 ch2 加減速模組輸出之位置命令 ch4 馬達角速度訊號

50

圖一 直流馬達經加減速控制後之閉迴路控制響應圖

51

65 實驗 5-正弦波的位置控制 實驗說明在本實驗中改變命令的波形由方波改變為正弦波並建立如下的測

試方塊圖與上一實驗相比較僅更改命令的波形產生方塊 方塊圖中的模組功能說明如下 1用 fg2產生測試用的弦波位置命令 2將弦波位置命令送到加減速控制方塊處理後產生新的位置命令再與 io1 讀入的位

置回授訊號送到 PD 控制器方塊中產生電壓控制訊號再透過 io2 模組將訊號送出到伺服介面驅動馬達轉動

對應之 plc檔程式說明(exp_sinplc) echo off 畫面顯示開始

run dsp 0 選擇 DSP1

run stop run reset 既有程式停止

run testDCMmem 下載指定程式

das 1 ampfg2out 0 1024 SIN 波形 Volt 設定 DAS 頻道1

das 2 ampcn1out 0 1024 加速控制 Volt 設定 DAS 頻道2

das 3 ampio1spd 0 1024 馬達速度 Volt 設定 DAS 頻道3

das 4 ampio1ang 0 1024 馬達角度 Volt 設定 DAS 頻道4

plot select 0 設定示波器頁數

plot xunit 100000 0 設定示波器 X軸

plot yunit 1 2000 -300 設定示波器 Y1 軸

plot yunit 2 2000 -100 設定示波器 Y2 軸

plot yunit 3 50 100 設定示波器 Y3 軸

plot yunit 4 2000 300 設定示波器 Y4 軸

plot trigger 1 0 1 10 設定示波器觸發

52

plot scope 9 1 2 3 4 設定示波器顯示

module io2 設定 io2 模組

s cmd ampcn2out

module fg2 設定 fg1 模組

s kAmp 2000 s kFrq 100

module cn1 設定 cn1 模組

s cmd ampfg2out

module cn2 設定 cn2 模組

s cmd ampcn1out s fdk ampio1ang s kp 0x300 s kd 0x4000

module ft1 設定 ft1 模組

s u ampfg2out s dt 2 s ka 320

module io3 設定 io3 模組

s led ampfg2out

module 回復預設模組

run 1khz 設定抽樣頻率為 4KHz

run start DSP 開始執行

das stop pause 1 DAS 啟動 das start DAS 啟動

echo on 回復正常訊息顯示

CAI操控設計畫面規劃如下(EXP_sinCAI) page 1 畫面設計

53

page 2 畫面設計 page 3 畫面設計與實驗二 page 4相同畫面

方塊的參數設定可調整 PD控制器中的 kp和 kd值以調整系統之響應 實測響應圖

訊 號 說 明 訊 號 說 明 ch1 弦波產生器產生之位置命令 ch3 馬達角位置訊號 ch2 加減速模組輸出之位置命令 ch4 馬達角速度訊號

54

直流馬達之閉迴路弦波加減速位置控制響應圖

55

7組合語言說明

本節將針對 DC馬達伺服控制實驗專用的程式模組進行功能與程式碼的說明其

有關於波形產生器與資料擷取模組等說明如下

SIN_waveasm 正弦波產生器 PWM_waveasm 方波產生器 IIR1_filterasm 一階濾波器 DAS4asm 資料蒐集模組

弦波產生器

此模組會產生週期性的正弦波方塊圖如下

outfrq

kBiasbias

ampkAmp

kFrqth

kThf=1TB

θ

A

其中

1正弦波有四個參數振幅(A)頻率(F)相位(θ)和偏移(B)其公式為 out = A sin(2πF t +θ) + B 2對於單純的正弦波產生器所對映的參數包括 kAmp 振幅值 kFrq 頻率值kFrq=655368000Hz其中 Hz的範圍為 0~4000例如 1000Hz =gt frq=8192 100Hz =gt frq=819 10Hz =gt frq=82 1Hz =gt frq=8 kTh 相角值0~255代表 0~360的相位當 th=0 時為正弦波 th=64 時為餘弦波 th=128時為反相波依此類推 kBias偏移值 3對於可調變的正弦波產生器其對映的輸入點為 amp 控制振幅的輸入點可產生調幅(AM)波形 frq 控制頻率的輸入點可產生調頻(FM)波形 th 控制相位的輸入點可產生調相(PM)波形 bias控制偏移的輸入點可產生雙頻混波(相加)波形 4若不使用調變功能時各個輸入點時的預設值為 amp 指向 kAmp 的位址 frq 指向 kFrq 的位址

56

th 指向 kTh 的位址 bias指向 kBias的位址

模組程式範例SIN_WAVEasm

local amp R0 IP kAmp 輸入點sin波的振幅 local frq R1 IP kFrq 輸入點sin波的頻率 local th R2 IP kTh 輸入點sin波的相角 local bias R3 IP kBias 輸入點sin波的中心偏移 local out R4 OP 輸出點sin波輸出 local tab R5 TP 表格指標指向 sin[256]的表格 local ang R6 內部變數相位角65536=360deg local kAmp R7 1000 參數振幅值 local kFrq R8 1000 參數頻率值=655368000Hz local kTh R9 0 參數相角值360deg=256 local kBias R10 0 參數偏移值 data 11 模組變數區長度及初值 initial 啟動程序 WR ang0 WR out0 ang=out=0 RET timer 即時控制程序(8KHz) RD ang ADD (frq) WR ang ang+=frq SFR 8 ADD (th) AND 255 ACC=sin(ang256+th) ADD tab WRH RDM table-look-up MUL (amp) SFR 12 ADD (bias) WR out out=ACCamp4096+bias RET table tab 256 sin[256]表格區10=4096 0 101 201 301 401 501 601 700 00~070deg 799 897 995 1092 1189 1285 1380 1474 08~0F 1567 1660 1751 1842 1931 2019 2106 2191 10~17 2276 2359 2440 2520 2598 2675 2751 2824 18~1F 2896 2967 3035 3102 3166 3229 3290 3349 20~27 3406 3461 3513 3564 3612 3659 3703 3745 28~2F 3784 3822 3857 3889 3920 3948 3973 3996 30~37 4017 4036 4052 4065 4076 4085 4091 4095 38~3F 4096 4095 4091 4085 4076 4065 4052 4036 40~4790deg 4017 3996 3973 3948 3920 3889 3857 3822 48~4F 3784 3745 3703 3659 3612 3564 3513 3461 50~57 3406 3349 3290 3229 3166 3102 3035 2967 58~5F

57

2896 2824 2751 2675 2598 2520 2440 2359 60~67 2276 2191 2106 2019 1931 1842 1751 1660 68~6F 1567 1474 1380 1285 1189 1092 995 897 70~77 799 700 601 501 401 301 201 101 78~7F 0 65435 65335 65235 65135 65035 64935 64836 80~87180deg 64737 64639 64541 64444 64347 64251 64156 64062 88~8F 63969 63876 63785 63694 63605 63517 63430 63345 90~97 63260 63177 63096 63016 62938 62861 62785 62712 98~9F 62640 62569 62501 62434 62370 62307 62246 62187 A0~A7 62130 62075 62023 61972 61924 61877 61833 61791 A8~A8 61752 61714 61679 61647 61616 61588 61563 61540 B0~B7 61519 61500 61484 61471 61460 61451 61445 61441 B8~BF 61440 61441 61445 61451 61460 61471 61484 61500 C0~C7270deg 61519 61540 61563 61588 61616 61647 61679 61714 C8~CF 61752 61791 61833 61877 61924 61972 62023 62075 D0~D7 62130 62187 62246 62307 62370 62434 62501 62569 D8~DF 62640 62712 62785 62861 62938 63016 63096 63177 E0~E7 63260 63345 63430 63517 63605 63694 63785 63876 E8~EF 63969 64062 64156 64251 64347 64444 64541 64639 F0~F7 64737 64836 64935 65035 65135 65235 65335 65435 F8~FF

就程式結構而言說明如下

timer 即時控制程序(8KHz) RD ang ADD (frq) WR ang ang+=frq SFR 8 ADD (th) AND 255 ACC=sin(ang256+th) ADD tab WRH RDM table-look-up MUL (amp) SFR 12 ADD (bias) WR out out=ACCamp4096+bias RET

1基本上我們以查表法計算 sin()其輸入θ的範圍為 0~255對映到 0~360deg其輸出 sin(θ)的範圍為+-4096對映到+-10的範圍

2建立一個內部變數 ang其範圍為 0~65535對映到 0~360的相位角 3每個timer程序都執行 ang+=frq的動作更新目前的相位角接著依照 ang的相位角查表得到 sin(ang256+th)值

4由於表格長度為 256-word所以必須將 ang256才能得到正確的對映關係而 th範圍為 0~255所以不需要像 ang一般的做額外處理

5sin()的範圍為(+1-1)而在表格中以(+4096~-4096)的型式記錄相當於 10=4096所以執行 Asin()時還要用 SFR12指令做4096的動作才能正確的取得輸出值

58

6就頻率輸入 frq而言其計算原則是將θ=ωt轉化成θ=Σ(ωdt)因為抽樣頻率

為 8KHz所以 dt=18000而得到 frq=655368000Hz公式其中 Hz為真正的頻率在 8KHz的抽樣頻率下其範圍為 0~4000

鋸齒波產生器

此模組會產生週期性的鋸齒波方塊圖如下

outfrq

kBiasbias

ampkAmp

kFrqth

kThf=1TB

θ

A

其中

1鋸齒波也有四個參數振幅(A)頻率(F)相位(θ)和偏移(B)和正弦波的定義完全一致唯一的差異是其輸出為鋸齒波而非正弦波

2基本波形是從週期開始時為 0一直遞增到週期結束時到達最高點然後立刻回歸

到 0重新開始 3以程式結構而論鋸齒波程式幾乎就是正弦波的相位計算部分只差沒有正弦波的

查表處理而已

模組程式範例SAW_WAVEasm

local amp R0 IP kAmp 輸入點sin波的振幅 local frq R1 IP kFrq 輸入點sin波的頻率 local th R2 IP kTh 輸入點sin波的相角 local bias R3 IP kBias 輸入點sin波的中心偏移 local out R4 OP 輸出點sin波輸出 local ang R5 內部變數相位角65536=360deg local kAmp R6 1000 參數振幅值 local kFrq R7 1000 參數頻率值=655368000Hz local kTh R8 0 參數相角值360deg=256 local kBias R9 0 參數偏移值 data 11 模組變數區長度及初值 initial 啟動程序 WR ang0 WR out0 ang=out=0 RET timer 即時控制程序(8KHz) RD ang ADD (frq) WR ang ang+=frq SFR 8 ADD (th) AND 255 ACC=(ang256+th)amp0x00ff MUL (amp) SFR 8 ADD (bias) WR out out=ACCamp256+bias

59

RET

脈衝波產生器

outfrq

kBiasbias

ampkAmp

kFrqth

kThf=1TB

θ

A

pwm

kDutyduty

此模組會產生週期性的脈衝波方塊圖如下

其中

1脈衝波有五個參數其中振幅(A)頻率(F)相位(θ)和偏移(B)四個參數和正弦波

定義完全一樣另外再增加一個負載率(D) 2基本波形是從週期開始時為 1隔段時間後換為 0然後持續到週期結束再重新開始其中 1所佔有的比例就是負載率當 D=0時為 0而 D=255時為 100

3和其他參數類似負載率(D)以 duty為其輸入點而以 kDuty為其參數值

模組程式範例PLS_WAVEasm

local amp R0 IP kAmp 輸入點脈衝波的振幅 local frq R1 IP kFrq 輸入點脈衝波的頻率 local th R2 IP kTh 輸入點脈衝波的相角 local bias R3 IP kBias 輸入點脈衝波的中心偏移 local duty R4 IP kDuty 輸入點脈衝波的負載率 local out R5 OP 輸出點脈衝波輸出 local ang R6 內部變數相位角65536=360deg local kAmp R7 1000 參數振幅值 local kFrq R8 1000 參數頻率值=655368000Hz local kTh R9 0 參數相角值360deg=256 local kBias R10 0 參數偏移值 local kDuty R11 128 參數負載率100 =256 data 12 模組變數區長度及初值 initial 啟動程序 WR ang0 WR out0 ang=out=0 RET timer 即時控制程序(8KHz)

60

RD ang ADD (frq) WR ang ang+=frq SFR 8 ADD (th) AND 255 ACC=(ang256+th)amp0x00ff SUB (duty) RD (amp) JLT t1 RD 0 ACC=(amp0) t1 ADD (bias) WR out out=ACC+bias RET

IIR 一階濾波器

此模組執行一階的 IIR濾波器方塊圖如下

kau x

Z-1

+

+

-

+低通濾波器

高通濾波器dx lp

hp

濾波器參數的計算公式如下

1假設濾波器的頻寬為 hz則 ωn=hz628 2若系統頻率為 8KHz則抽樣週期 dT為 dT=dt8000 其中 dt為模組參數 3則濾波器參數為 ka=ωndT4096或是 =hzdt62880004096即 =hzdt32 4當 dt決定後所允許的訊號頻寬為(4000dt)換句話說訊號頻寬會因為 dt增加而下降

為了方便實驗的運用下面列出常用的參數對照表

濾波頻寬

(Hz)

10 20 50 100 200 500 1000 2000

訊號頻寬

(Hz)

400 800 2000 4000 4000 4000 4000 4000

模組參數 dt 10 5 2 1 1 1 1 1

模組參數 ka 320 320 320 320 640 1600 3200 6400

表格的運用方式如下

1首先決定濾波頻寬 2接著查表找出對映的參數 dt和 ka 3再查表得到對映的訊號頻寬以決定是否需要串接前級濾波器

61

模組程式範例IIR1_FILTERasm

local u R0 IP 輸入點濾波器輸入 local lp R1 OP 輸出點低通濾波器輸出 local hp R2 OP 輸出點高通濾波器輸出 local dt R3 1 參數抽樣週期 local ka R4 4096 參數增益 ka10=4096 local prd R5 內部變數抽樣週期用 data 6 模組變數區長度 initial 開機啟動程序 WR lp0 WR hp0 WR prd1 RET lp=hp=0prd=1 timer 即時控制程序 SUB prd1 JNZ b9 if (--prdgt0) return RD dt WR prd prd=dt RD (u) SUB lp WR hp hp=u-lp MUL ka SFR 12 ADD lp WR lp lp+=(hpka4096) b9 RET

資料蒐集模組

資料蒐集模組是一個非常特殊的模組專門配合 eTTY 程式中的示波器使用

模組程式範例DAS4asm

local cmd R0 0 紀錄命令0=停止1=前置記錄2=正觸發4=負觸發6=觸發記錄 local dt R1 1 抽樣週期每 dT抽樣一次 local tab R2 TP DAS表格啟始位址 local cnt R3 0 目前記錄點(0~255) local ch1 R4 0 定義頻道1的變數位址 local ch2 R5 0 定義頻道2的變數位址 local ch3 R6 0 定義頻道3的變數位址 local ch4 R7 0 定義頻道4的變數位址 local trg R8 0 定義觸發頻道的變數位址 local th R9 0 觸發準位 local tail R10 0 觸發後的抽樣個數 local buf R11 1 抽樣計數(1~dt) local pnt R12 表格位址計算pnt=tab+cnt4 local len R13 表格長度計算(0~256) data 14 定義模組變數區的長度 table tab 1024 定義表格的長度 initial 啟動程序 WR cmd0 RET cmd=0 timer 控制程序

62

ADD cmd0 JZ t9 if (cmd==0) return SUB buf1 JNZ t9 if (--buf)gt0) return RD dt WR buf dt=buf RD cnt ADD 1 AND 0xff WR cnt cnt=(cnt+1)amp0xff SFL 2 ADD tab WR pnt pnt=tab+cnt4 RD (ch1) WR (pnt) ADD pnt1 pnt++=ch1 RD (ch2) WR (pnt) ADD pnt1 pnt++=ch2 RD (ch3) WR (pnt) ADD pnt1 pnt++=ch3 RD (ch4) WR (pnt) pnt =ch4 RD cmd SUB 1 JZ t9 SUB 1 JZ t2 SUB 1 JZ t3 SUB 1 JZ t4 SUB 1 JZ t5 SUB 1 JZ t6 JR t7 t2 RD (trg) SUB th JGE t9 ADD cmd1 JR t9 wait trgltth t3 RD (trg) SUB th JLE t9 JR t6 wait trggtth t4 RD (trg) SUB th JLE t9 ADD cmd1 JR t9 wait trggtth t5 RD (trg) SUB th JGE t9 JR t6 wait trgltth t6 WR len0 WR cmd7 len=0cmd=7 t7 ADD len1 SUB tail JLT t9 WR cmd0 if ((++len)gt=0x80) cmd=0 t9 RET

與 DC 馬達控制相關的程式模組有以下 4個程式模組說明如下

(1)加減速控制模組 ACC_controlasm (2)光電盤輸入模組 POS_inputasm (3)PWM輸出模組 PWM_outputasm (4)PD控制模組 PD_controlasm

71加減速控制模組 此程式模組主要功能在於執行位置控制的加減速命令修正其數學模式採用 Lynn

濾波器的架構參見下圖

cmd

2

+

old Z -1

-

Z -1

Z -1

Z-1

Z-1x0 x1 x8 x9 x16

+ -

++

2

Z-1

Z-1 y1 y2

+

-

y0

+ +

sumZ-1

+164

12

out

dif

+

63

加減速控制模組方塊圖

其中

1Lynn 濾波器的階數固定成八階也就是 m=8其公式為 H(z) = (1-2Z-m+Z-2m)(1-2Z-1+Z-2)m2

2因為m=8所以m2=64因此最後計算低通濾波的部份時要先做除 64的運算 3因為低通濾波(lp)和 y0之間有 64倍的差異代表 y0y1y2的變化範圍比濾波器輸

入值要擴大許多例如輸入值在+-1000變化時y0y1y2很可能會在+-64000之間變化這範圍已經超出整數處理的範圍很可能會造成錯誤的計算結果

4所以在實驗時輸入值的變化範圍必須控制在+-500之間以保證計算的正確性 5對於 Lynn 濾波器當 m=8時其濾波器的頻寬固定為 1 kHzmdt也就是 dt=1時頻寬為 125 Hz dt=2時頻寬為 625Hz依此類推 6對於 Lynn 濾波器其濾波器的延遲固定為 m個抽樣週期因此設計 hp = x8 - lp 即可得到高通濾波器的對應結果 7其中乘 2和除 64的運算以移位運算取代所以整個程式中並無任何乘法運算 8Lynn 濾波器本身並不是穩定濾波器所以在程式啟動時必須確實的將所有狀態

(x0~x16)歸零否則會產生不穩定的狀態輸出

因為 Lynn濾波器中所有參數固定所以除了抽樣週期 dt 之外並無任何可調參數

抽樣週期 dt 可以控制頻寬dt 越大則濾波器頻寬越低

將步階命令值的輸出送入 Lynn 濾波器中經由低通濾波器的效應可以減緩命

令的變化程度達到加減速控制的目的以下為使用 Lynn 濾波器型式實現加減速控

制的組合語言程式列印 如欲更進一步瞭解 Lynn 濾波器與 FIR 數位濾波器之間的關係可以參考通訊實驗

四數位濾波器設計(FIR)中之說明

ACC_controlasm程式列印 local cmd R0 IP 輸入點位置命令

local out R1 OP 輸出點加減速處理後的位置命令

local dif R2 OP 輸出點位置微分命令

local axis R3 0 馬達編號0=X1=Y2=Z3=C

local old R4 內部變數微分計算用

local sumL R5 內部變數積分計算用

local sumH R6 內部變數積分計算用

local y0 R7 內部變數y(0~2)

local y1 R8 local y2 R9

local x0 R10 內部變數x(0~16)

local x1 R11 local x2 R12 local x3 R13 local x4 R14

local x5 R15 local x6 R16 local x7 R17 local x8 R18

local x9 R19 local x10 R20 local x11 R21 local x12 R22

local x13 R23 local x14 R24 local x15 R25 local x16 R26

64

data 27 模組變數區長度

initial 開機啟動程序

WR dif0 RD (cmd) WR out WR old dif=0 out=old=cmd

sumHL=cmd64

SFL 6 WR sumL RD out SFR 10 SGN 5 WR sumH

RPT 17 WR x00 RPT 3 WR y00 RET x[0~16]=0y[0~2]=0

timer 即時控制程序

RD (cmd) SUBX old WR x0 x0=cmd-old old=cmd

SUB x81 ADD x16 ADD y11 SUB y2 WR y0 y0=x0-2x8+x16+2y1-y2

SGN ADD sumL WR sumL RDH ADC sumH WR sumH sumHL+=y0

WRH RD sumL SFR 6 WR out out=sumHL64

RD y0 SGN SFR WR dif dif=y032mm

RD x0 RPT 16 RDX x1 x[i]=x[i-1] i=1~16

RD y0 RDX y1 WR y2 y[i]=y[i-1] i=1~2

b9 RET

72光電盤輸入模組

DC馬達的位置由光電盤量測之預設儲存於 0xac與 0xbe二個輸入埠位址中其中位址 0xac記錄 X軸馬達的位置位址 0xbe記錄 Y軸馬達的位置由於本實驗的DC馬達接在 Y軸的位置上因此程式中直接選用 Y軸的輸入 光電盤位置輸入的程式列印如下其中速度由位置的差分而得至於馬達的位置

則使用內部 2個 word加以記錄精度為 32位元 POS_inputasm程式列印 local spd R0 OP 輸出點速度量測值

local ang R1 OP 輸出點角度量測值

local angH R2 內部變數角度的 32 位元部分

local mode R3 0x308 模式選擇15MHzAB 相正反向輸入

local pht R4 0xac 輸入阜地址光電盤輸入(0xac)

local phtc R5 0xbe 輸入阜地址光電盤模式(0xbe)

local old R6 內部變數速度更新用

data 7 模組變數區長度

initial 開機啟動程序

RD mode WR (phtc) phtc=mode

RD (pht) WR old WR spd0 RET old=phtspd=0

timer 即時控制程序

RD (pht) SUBX old SGN 11 WR spd spd=(pht-old)old=pht

65

ADD ang WR ang angHL+=spd

RDH ADC angH WR angH

RET

73 PWM輸出控制模組 模組方塊

cmd PWM輸出

程式說明 1在開機時將切換保護時間寫到輸出阜 0xbc上其中切換保護值為 0~6360=5us 2在每次 timer interrupt時將 cmd訊號處理後寫到輸出阜 0xb8上

PWM_outputasm程式列印 local cmd R0 IP gnd 輸入點v相命令

local gain R1 4096 參數輸出增益1=4096

local bias R2 2048 參數輸出偏壓0=2048

local limit R3 4095 參數輸出極限1=4095

local zone R4 0x88f0 參數頻率=12KHz切換保護=5us

local pwm R5 0xb8 輸出阜地址PWM0 輸出(0xb8)

local mode R6 0xbc 輸出阜地址PWM 模式(0xbc)

local p0md R7 0xf8 輸出阜地址port0 模式(0xf8)

local gnd R8 0 輸入接地點

data 9 模組變數區長度

initial 開機啟動程序

RD bias WR (pwm) pwm=bias

RD 0xffff WR (p0md) set port0 mode

RD zone WR (mode) RET mode=zone

stop 關機保護程序

RD bias WR (pwm) RET pwm=bias

timer 即時控制程序

RD (mode) xor 1 and 1 WR (mode) trigger watch-dog

RD (cmd) MUL gain SFR 12 ADD bias ACC=(cmdgain4096)+bias

MAX 0 MIN limit WR (pwm) pwm=limit(ACC)

RET

66

74 PD 控制模組

PD控制的模組方塊參見圖二十一所示其中比例控制的部份直接由增益 kp加以調整微分控制的部份則由誤差的差分經增益 kd的調整而得

Σ+

-

cmd

fdk

err out

Σ

pk

dk

Σ

+

+

+

-

old1minusZ

PD控制器的方塊圖

PD_controlasm程式列印 local cmd R0 IP gnd 輸入點位置命令(可忽略)

local fdk R1 IP gnd 輸入點位置回授(可忽略)

local out R2 OP 輸出點用以控制速度迴路

local kp R3 256 參數增益 kp10=256

local kd R4 0 參數增益 kd10=256

local err R5 0 內部變數

local old R6 0 內部變數

local gnd R7 0 無輸入時的短路點

data 8 模組變數區長度

initial 開機啟動程序

WR out0 WR old0 RET out=old=0

timer 即時控制程序

RD (cmd) SUB (fdk) PRTF WR err

MUL kp SFR 8 P=(cmd-fdk)kp256

RDS err SUBX old MUL kd SFR 8 D=(err-old)kd256

ADDS

WR out out=P+D

RET

程式中預設增益值的 10以整數值 256為基底因此使用 SFR 8的指令加以調

整另外在在計算微分項的程式部份用到 SUBX old的指令其詳細的暫存器動作如

下 參考 piDSP的指令說明SUBX指令將總共用到 3個時序參考錯誤 找不到參照

67

來源在時序 1時將原先 AX的資料拷貝一份到 HX中時序 2時正式執行減

法的動作所以 AX暫存器中的內容會變成 err-old時序 3時DSP會將存放在 HX暫存器中的內容拷貝一份到 old的記憶體中也就是經由 SUBX此一精簡指令將

同時完成計算差分所需要的相減與資料疊代的動作有效的利用 piDSP控制器 DSP核心的精簡指令將可以大幅提昇系統的計算速度

HX AXoldSUBXerr err

old

err

errerr olderr minus

1_err

errerr olderr minus err

1_err

1

2

3

SUBX的指令時序與暫存器變化

68

8附錄快速安裝說明

光纖網路通訊 FPGA 發展系統 (適用於 WIN-XP200098 系統)

快速安裝說明

26Pin 負載輸出入埠

雙電源︵5

12

伏︶輸入埠

單電源︵5

伏︶輸入埠

USB

光纖線輸

號 光纖線輸出埠

入 傳 埠

首先將光碟片 RFFPGA 目錄檔案拷貝在您工作硬碟裡面

第一次安裝時先將 USB 傳輸線接上電腦主機將電源供應器接上 FPGA 模組此時電

腦會出現安裝 USB-Serial 驅動程式選擇從清單安裝此驅動程式放置在光碟片

RFFPGA-USBdrive 選擇您目前安裝系統

可選擇 WIN-98WIN-MEWIN-2000WIN-XP 系統配合您現在工作電腦作業系統

69

注意一般電腦 USB 埠很多插口當您安裝驅動程式時是配合您當時插入之埠

下次如您插入不同接口埠時電腦會再次要求安裝驅動程式這是正常現象請再次安

裝驅動程式否則無法使用

FPLC 操作

首先進入 RFFPGA裡子目錄 testASM直接點選 fPLCexe 出現下面操作畫面(也可直接將

此檔案放置桌面直接點選)

(或者選擇 File 再執行 Setuphellip 選擇您要執行 CAI 檔)

70

進入下面操作畫面 首先使用滑鼠在 FPGA下載按鈕單擊動作使 FPGA變成 DSP晶片 實驗一至實驗五皆為使用 DSP組合語言設計程式其原始程式分別為 testASM1至testASM5可使用 texPad 開啟與編輯程式內容 實驗三與實驗五多有 IO控制動作 當選擇實驗三時出現下面畫面

71

eM_USB 模組

數字型 LED

0 1 2 34 5 6 78 9 A BC D E F

燈號型 LED

44 鍵盤

ADC0 ADC1 DAC0 DAC1

LED 選擇KEY 選擇

模 式 1

0123

注意操作畫面 3與 4 說明開關與按鍵選擇位置後選擇程式下載再按程式啟動如您

按下 0-3按鍵時燈號型 LED會有不同方向閃爍顯示程式停止時結束所有 IO控制動作再按回首頁選擇其他實驗 實驗四與實驗五

模式3

0 1 2 34 5 6 78 9 A BC D E F

按照上面開關選擇直接操作如果以上實驗皆能按照正常操作表示您光纖網路通訊

FPGA發展模組以能正常使用 注意 開機與關機動作順序如下

開機電腦啟動 --- eM_USB 模組電源接上 --- USB 接上電腦 ---

啟動 FPLC 軟體 --- 下載 FPGA 程式

關機關閉 FPLC 軟體 --- eM_USB 模組電源拔掉 --- 拔掉電腦 USB 接頭 ---關掉

電腦

如果以上順序有亂可能造成 USB 找不到驅動造成無法下載經過幾次測試還是

無法下載建議重新啟動電腦主機按照正確步驟操作

72

FPGA 下載操作

進入 FPLC 操作系統按照下列步驟選擇節點模組與下載 bit FPGA 檔案

在 VHDLDEMO 子目錄下您可以選擇您目前 FPGA 種類型號在此型號下我們已將 VHDL

與數位邏輯設計課本範例全部放於此處

73

光纖網路連線 FPGA 下載操作

首先利用光纖線將 eM_USB0 模組光纖輸出埠接至 eM_USB1 模組光纖輸入埠以此

類推最後再將最後 eM_USBN 模組光纖輸出埠接至 eM_USB0 模組光纖輸入埠配置

如附圖方式

個人電腦(Windows) eM_USB模組

0USB

eM_USB模組1

光纖網路

eM_USB模組2

eM_USB模組N

配置完成後進入 FPLC 系統首先必須先將 Node00 下載在 testASM 子目錄裡

piDSPv0bit 檔讓 eM_USB0 模組 FPGA 具備 DSP 功能才能執行光纖網路通訊

操作如下

此時您就可以選擇分別下載至各模組 FPGA 檔 bit

74

安裝 FPLC 注意事項

當您進入 FPLC 時

按 FILE 選擇 programhellip 選擇檔案為 exp_dcmplc 出現下面畫面

正常顯示畫面為

75

DOS 環境操作

在 PC 端的操作是在 Windows 環境中的 DOS 視窗中執行指令範例如下

eFPGA progNETbit 下載 FPGA電路至網路節點0(即 USB節點)中 eFPGA testLEDbit 1 下載 FPGA電路至網路節點1中

對於單一節點的控制程序如下

1將 eM_USB模組連結個人電腦的 USB端 2eM_USB模組開機 3執行下載指令即可 eFPGA xxxxbit 4若要更改 FPGA電路只要重新執行下載指令即可

對於多個網路節點的控制程序如下

1第一組 eM_USB模組連結個人電腦的 USB端再以光纖網路依序其他各節點 2連接 USB界面者為模組0從光纖發射端連接出去的模組為1依此類推 3將所有 eM_USB模組開機 4執行下載指令如下 eFPGA progNETbit 模組0必須先下載指定的 FPGA電路 eFPGA xxxxbit 1 再依序下載其他網路模組的 FPGA電路 eFPGA yyyybit 2 eFPGA zzzzbit 最後再重新下載模組0的 FPGA電路 5換句話說模組0必須先執行 progNETbit讓光纖網路接受 FPGA控制後才能透過光纖網路下載至其他節點等全部網路節點下載完畢後再將模組0的 FPGA重新下載讓模組0也可自由執行任意的 FPGA電路

6若要更改某一個網路節點中的 FPGA電路只要重新執行下述指令 eFPGA progNETbit 模組0必須先下載指定的 FPGA電路 eFPGA yyyybit 2 下載指定網路模組的 FPGA電路 eFPGA zzzz bit 最後再重新下載模組0的 FPGA電路 換句話說除非模組0中的 FPGA已經包括光纖網路管理電路否則一定要先在

模組0中下載網路管理電路後才能下載指定網路節點的 FPGA電路

76

光纖網路通訊 FPGA 發展系統

系統配置

光纖網路通訊 FPGA 發展系統的系統配置圖如下

個人電腦(Windows) eM_USB模組

0USB

eM_USB模組1

光纖網路

eM_USB模組2

eM_USB模組N

其中

1基本模組為 eM_USB模組可用 USB界面和個人電腦連線並提供 USB對光纖網路的轉換功能使得個人電腦可以獨立控制光纖網路中的每個網路節點

2eM_USB模組也可以作為光纖網路中的網路節點透過光纖網路而接受個人電腦的

監控 3就個人電腦而言不論是 USB界面直接連結或是以光纖網路間接連結的 eM_USB模組都是可以直接監控的網路節點最多可以同時控制一個 USB節點和 30個網路節點

4對於每一個網路節點個人電腦都可執行 eM_USB模組中 FPGA的電路下載工作並在適當的 FPGA電路配合下可執行 eM_USB模組中 FPGA內部電路的讀寫控制 5透過適當的 FPGA電路設計各網路節點都可透過光纖網路和其他任何網路節點

作同步通訊執行 FPGA內部記憶體的資料交換資料交換頻率可達 1KHz以上

77

網路模組配置

每個網路模組的標準配置圖如下

eM_USB模組光纖網路

USB eM_FPGA卡

eM_DEMO模組

eM_EXP實驗模組

DC電源

其中

1網路模組以 eM_USB模組為主提供基本的 USB界面和光纖網路連線 2eM_USB模組中的 FPGACPLD採用插卡型式可選擇不同的 eM_FPGA卡包括

eM_2V1K卡可選用 Virtex系列的 XC2V250和 XC2V1000 eM_3S1K卡可選用 Spartan3系列的 XC3S400XC3S1000和 XC3S1500 eM_3S50卡可選用 Spartan3系列的 XC3S50XC3S200和 XC3S400 eM_95XL卡可選用 9500XL系列的 XC95144XL和 XC95288XL 3eM_USB模組中的對外連線有兩種一種是 26P接頭用以連接既有的各種實驗模

組另一種是兩組 50P接頭將 FPGA中各接腳引出用以連接專題實驗 4eM_DEMO模組就是插上 50P接頭的教學模組其中包括 LED 數字顯示和 44鍵盤也具備兩組的 ADC和兩組的 DAC接頭提供類比訊號的測試工具

常用的實驗組合包括

1精簡組合包括(eM_USB+eM_FPGA)提供基本的網路節點適用於專題實驗 2標準組合包括(eM_USB+eM_FPGA+eM_DEMO)提供基礎 FPGA設計的教學實驗

3實驗組合包括(eM_USB+eM_FPGA+eM_DEMO+eM_EXP)提供進階的 FPGA實驗可依需求選用不同的實驗模組

78

eM_USB 模組

eM_USB 模組的電路配置圖如下

TxRx

DCPower

USB

JP2

JP3

光纖界面

外加電源

PC連線

JP1

eM_FPGA模組

FT232 CPLD FlashROM

SRAM

10cm

6cm

JP4

其中

1對外的連線接頭包括 DC電源 可選擇單電源(5V)或是多電源(5V+12V-12V)兩種 USB界面 直接連接個人電腦 光纖界面連接光纖網路 2實驗界面包括 JP1負責內部 CPLD的電路下載 JP2JP3兩組 50P的擴張用接頭 JP4 標準 26P接頭用以連接各種實驗模組 3內部的電路配置包括 A以 SO-DIMM接頭連接各種 eM_FPGA卡 B內附 EEPROMFlashROM和 SRAM提供 FPGA作應用測試 C以一顆 FT232BM作為 USB界面解碼而以一顆 CPLD作為光纖網路解碼 D提供各種 eM_FPGA卡的電路下載功能 4內附五顆 LED由上而下依序為 usbLED指示 USB界面的讀寫狀態 tstLED可由 FPGA電路自行定義 stsLED可由 FPGA電路自行定義 RxLED 可由 FPGA電路自行定義 TxLED 可由 FPGA電路自行定義

79

外部接腳定義

外部接頭的接點順序圖示如下

上視圖

JP11 9 JP4

126225

JP31

50249

JP21

50249

而各接頭的接點定義如下

JP1 JP4 JP2 JP3 1+33V 1+12V 2+12V 1 GND 2 GND 1 GND 2 GND 2GND 3 ADC 4 DAC 3POWER 4ALARM 3 +5V 4 +5V 3nc 5 yPB2 6 yPB3 5RxNET 6TxNET 5+12V 6+12V 4TCK 7 yPB1 6 yPB4 7RxUSB 6TxUSB 7-12V 6-12V 5nc 9 yPB0 10yPB5 9RxCAN 10TxCAN 9 ADC 10 DAC 6TDO 11yPB6 12yPB7 11P0D0 12P0D1 11P1D0 12P1D1 7TDI 13yGND 14yPC3 13P0D2 14P0D3 13P1D2 14P1D3 8nc 15yPC2 16yPC1 15P0D4 16P0D5 15P1D4 16P1D5 9TMS 17yPC0 18yPA0 17P0D6 18P0D7 17P1D6 18P1D7 19yPA1 20yPA2 19P0D8 20P0D9 19P1D8 20P1D9 21yPA3 22GND 21P0D10 22P0D11 21P1D10 22P1D11 23GND 24+5V 23P0D12 24P0D13 23P1D12 24P1D13 25+5V 26nc 25P0D14 26P0D15 25P1D14 26P1D15 27P2D0 28P2D1 27PxA0 28PxA1 29P2D2 30P2D3 29PxA2 30PxA3 31P2D4 32P2D5 31PxA4 32PxA5 33P2D6 34P2D7 33PxA6 34PxA7 35P2D8 36P2D9 35PxB0 36PxB1 37P2D10 38P2D11 37PxB2 38PxB3 39P2D12 40P2D13 39PxB4 40PxB5 41P2D14 42P2D15 41PxB6 42PxB7 43ADC0 44ADC1 43PxC0 44PxC1 45ADC2 46ADC3 45PxC2 46PxC3 47ADC4 48ADC5 47PxC4 48PxC5 49DAC0 50DAC1 49PxC6 50PxC7

80

eM_FPGA 模組

在各種 eM_FPGA 模組中FPGA 對外電路的標準配置圖如下

24576MHz

FlashROM

26PSRAM

EEPROM

mD[8]

yPA[4]

FPGACPLD

mA[19]mRDmWRmCSeeCKeeCSeeDIeeDO

光纖界面 RxNETTxNET

USB 界面 RxUSBTxUSBCLK24MPOWERALARM

LED

tstLEDstsLEDRxLEDTxLED

yPB[8]yPC[4]

ADCDAC

ADC[8]

實驗模組

ADC[2]

DAC[2]

xPA[4]

xPB[8]

xPC[4]

基礎實驗

其中

1FPGACPLD可以選擇下述幾種 XC2V250XC2V1000 採用 eM_2V1K模組其中 FPGA為 FG456包裝 XC3S400XC3S1000XC3S1500採用 eM_3S1K模組其中 FPGA為 FG456包裝 XC3S400XC3S1000XC3S1500採用 eM_3S1K模組其中 FPGA為 FG456包裝 XC3S50XC3S200XC3S400 採用 eM_3S50模組其中 FPGA為 TQ144包裝 XC95144XLXC95288XL 採用 eM_95XL模組其中 CPLD為 TQ144包裝 2採用 FG456包裝者可以控制所有的 IO界面 3採用 TQ144包裝者只是不能控制 RAM和 FlashROM而可以控制其他所有的界面 4所有 FPGA模組都可自由選擇由 USB界面或是由光纖界面下載電路但是 CPLD模組只能固定由 USB界面下載電路

5所有 FPGACPLD模組都可透過 26P接頭連接既有的各種實驗模組

81

FPGA 接腳對照表

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

mD0 XD6 mD0 A17 C13 -- -- mD1 XD7 mD1 B17 D12 -- -- mD2 XD8 mD2 C17 D11 -- -- mD3 XD9 mD3 D17 C11 -- -- mD4 XD10 mD4 E17 D10 -- -- mD5 XD11 mD5 E16 C10 -- -- mD6 XD12 mD6 E14 D9 -- -- mD7 XD13 mD7 E13 D7 -- -- mA0 XD14 mA0 D13 C7 -- -- mA1 XD15 mA1 C13 D6 -- -- mA2 XA0 mA2 V5 C3 -- -- mA3 XA1 mA3 U5 C4 -- -- mA4 XA2 mA4 Y2 D3 -- -- mA5 XA3 mA5 Y1 D4 -- -- mA6 XA4 mA6 V4 E3 -- -- mA7 XA5 mA7 V3 E4 -- -- mA8 XA6 mA8 W2 F3 -- -- mA9 XA7 mA9 W1 F4 -- -- mA10 XA8 mA10 T2 G6 -- -- mA11 XA9 mA11 T1 K3 -- -- mA12 XA10 mA12 R4 K10 -- -- mA13 XA11 mA13 R3 L3 -- -- mA14 XA12 mA14 R2 L4 -- -- mRD XRD mRD R1 D5 -- -- mWR XWR mWR P6 C6 -- --

POWER P0A0 POWER B4 B20 P1 P5 ALARM P0A1 ALARM A4 A19 P2 P6 RxNET P0A2 RxNET C4 B19 P4 P7 TxNET P0A3 TxNET C5 A18 P5 P9 RxUSB P0B0 RxUSB B5 A15 P6 P10 TxUSB P0B1 TxUSB A5 B15 P7 P11 RxCAN P0B2 RxCAN D6 A14 P8 P12 RxCAN P0B3 TxCAN C6 B14 P10 P13

CLK24M CLK24M CLK24M E12 B12 P124 P38

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

PWM0H P3A0 P0D0 E6 A8 P21 P23 PWM0L P3A1 P0D1 E5 B8 P23 P24 PWM1H P3A2 P0D2 C2 B6 P24 P25 PWM1L P3A3 P0D3 C1 A5 P25 P26 PWM2H P3A4 P0D4 D2 B5 P26 P27

82

PWM2L P3A5 P0D5 D1 A4 P27 P28 PWMenb P3A6 P0D6 E4 B4 P28 P30 PHT1Z P3A7 P0D7 E3 A3 P30 P31 PHT1A P3B0 P0D8 G2 C1 P31 P32 PHT1B P3B1 P0D9 G1 C2 P32 P33 PHT0A P3B2 P0D10 H5 D1 P33 P34 PHT0B P3B3 P0D11 J6 D2 P35 P35 AMP0 P3B4 P0D12 H4 E1 P36 P39 AMP1 P3B5 P0D13 H3 E2 P40 P40 AMP2 P3B6 P0D14 H2 F2 P41 P41 AMP3 P3B7 P0D15 H1 G1 P44 P43 eeSK P0C3 P1D0 C10 B9 P20 P22 eeCS P0C2 P1D1 D10 A9 P18 P21 eeDI P0C1 P1D2 F10 B10 P17 P20 eeDO P0C0 P1D3 E10 B11 P15 P19 ssCK P0B7 P1D4 E8 A11 P14 P17 ssCS P0B6 P1D5 E7 A12 P13 P16 ssDI P0B5 P1D6 A6 B13 P12 P15 ssDO P0B4 P1D7 B6 A13 P11 P14

ppCLK P3C0 P1D8 K4 G2 P46 P44 ppDIN P3C1 P1D9 K3 K1 P47 P45 TxD P3C2 P1D10 K2 K2 P50 P46 RxD P3C3 P1D11 K1 L1 P51 P48

tstLED P3C4 P1D12 L5 L2 P52 P49 stsLED P3C5 P1D13 L4 M1 P53 P50 RxLED P3C6 P1D14 L3 M2 P55 P51 TxLED P3C7 P1D15 L2 N1 P56 P52

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

xPA0 P2A0 P2D0 AA3 N2 P59 P53 xPA1 P2A1 P2D1 Y4 T1 P60 P54 xPA2 P2A2 P2D2 AA4 T2 P63 P56 xPA3 P2A3 P2D3 AB4 U2 P68 P57 xPC0 P2A4 P2D4 W5 V1 P69 P58 xPC1 P2A5 P2D5 Y5 V2 P70 P59 xPC2 P2A6 P2D6 AA5 W1 P73 P60 xPC3 P2A7 P2D7 AB5 W2 P74 P61

-- P2B0 P2D8 V6 Y1 P76 P64 -- P2B1 P2D9 V7 Y2 P77 P66 -- P2B2 P2D10 W6 AA3 P78 P68

mCS P2B3 P2D11 Y6 AB4 P79 P69 mA15 P2B4 P2D12 V9 AA4 P80 P70 mA16 P2B5 P2D13 V10 AB5 P82 P71 mA17 P2B6 P2D14 W10 AA5 P83 P74 mA18 P2B7 P2D15 Y10 AA6 P84 P75 CS0 P2C0 ADC0 AA10 AB8 P85 P76

83

SDIN0 P2C1 ADC1 AB10 AA8 P86 P77 CS1 P2C2 ADC2 U10 AB9 P87 P78

SDIN1 P2C3 ADC3 U11 AA9 P89 P79 SCLK P2C4 ADC4 V11 AB10 P90 P80 CS2 P2C5 ADC5 W11 AA10 P92 P81

SDOUT P2C6 ADC6 Y11 AB11 P93 P82 LDAC P2C7 ADC7 AA11 AA11 P95 P83

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

xPB0 P1A0 PxA0 M1 M3 P135 P85 xPB1 P1A1 PxA1 M2 M4 P132 P86 yPB2 P1A2 PxA2 M3 N3 P131 P87 yPB3 P1A3 PxA3 M4 N4 P130 P88 yPB1 P1A4 PxA4 M5 T4 P129 P91 yPB4 P1A5 PxA5 M6 T5 P128 P92 yPB0 P1A6 PxA6 N1 U3 P127 P93 yPB5 P1A7 PxA7 N2 U4 P125 P94 yPB6 P1B0 PxB0 U13 V3 P119 P95 yPB7 P1B1 PxB1 V13 V4 P118 P96 xPB2 P1B2 PxB2 W13 W3 P116 P97 xPB3 P1B3 PxB3 Y13 W4 P113 P98 xPB4 P1B4 PxB4 AA13 Y3 P112 P100 xPB5 P1B5 PxB5 AB13 Y4 P96 P101 yPC3 P1B6 PxB6 U12 Y5 P97 P102 yPC2 P1B7 PxB7 V12 W5 P98 P103 yPC1 P1C7 PxC0 AB17 W11 P108 P113 yPC0 P1C6 PxC1 AA17 Y11 P107 P112 yPA0 P1C5 PxC2 Y17 W10 P105 P111 yPA1 P1C4 PxC3 W17 Y10 P104 P110 yPA2 P1C3 PxC4 AB18 W9 P103 P107 yPA3 P1C2 PxC5 AA18 W8 P102 P106 xPB6 P1C1 PxC6 Y18 W6 P100 P105 xPB7 P1C0 PxC7 W18 Y6 P99 P104

84

eM_DEMO 模組

eM_DEMO 模組的電路配置圖如下

eM_USB 模組

數字型 LED

0 1 2 34 5 6 78 9 A BC D E F

燈號型 LED

44 鍵盤

ADC0 ADC1 DAC0 DAC1

LED 選擇KEY 選擇

其中

1eM_DEMO模組的基本功能包括 A將 xPAxPBxPC等 16個 IO訊號引出控制 LED和鍵盤電路 B將 ADDA訊號引出並放大成+-10V的工作範圍 2LED和鍵盤可以選擇三種模式由 LED和 KEY 兩組開關作選擇圖示如下

模式1

0123

模式2 模式3

0 1 2 34 5 6 78 9 A BC D E F

0123

3模式14鍵輸入並搭配 16點的 LED燈號顯示其中 16點 LED分別對映到 xPA[0~3]xPB[0~7]和 xPC[0~3] 4組按鍵分別對映到 xPC[0~3] 4模式24鍵輸入並搭配四個 7段式數字顯示其中 數字顯示由 xPA[0~3]作數字掃瞄而由 xPB[0~7]作 7段式 LED控制 4組按鍵 分別對映到 xPC[0~3] 5模式316鍵輸入並搭配四個 7段式數字顯示其中 數字顯示由 xPA[0~3]作數字掃瞄而由 xPB[0~7]作 7段式 LED控制 16組按鍵由 xPA[0~3]作鍵盤掃瞄而由 xPC[0~3]作鍵盤讀取 6根據VHDL與數位邏輯設計的章節其中 第 1章至 10章的實驗採用模式1而 第 11章實驗採用模式2而 第 12章之後的實驗都採用模式3

85

FPGA UCF 定義

eM_3S1K 模組

NET CLK LOC = B12

NET XAlt0gt LOC = N2

NET XAlt1gt LOC = T1

NET XAlt2gt LOC = T2

NET XAlt3gt LOC = U2

NET XBlt0gt LOC = M3

NET XBlt1gt LOC = M4

NET XBlt2gt LOC = W3

NET XBlt3gt LOC = W4

NET XBlt4gt LOC = Y3

NET XBlt5gt LOC = Y4

NET XBlt6gt LOC = W6

NET XBlt7gt LOC = Y6

NET XClt0gt LOC = V1

NET XClt1gt LOC = V2

NET XClt2gt LOC = W1

NET XClt3gt LOC = W2

NET YAlt0gt LOC = W10

JP4 接頭

NET YAlt1gt LOC = Y10

NET YAlt2gt LOC = W9

NET YAlt3gt LOC = W8

NET YBlt0gt LOC = U3

NET YBlt1gt LOC = T4

NET YBlt2gt LOC = N3

NET YBlt3gt LOC = N4

NET YBlt4gt LOC = T5

NET YBlt5gt LOC = U4

NET YBlt6gt LOC = V3

NET YBlt7gt LOC = V4

NET YClt0gt LOC = Y11

NET YClt1gt LOC = W11

NET YClt2gt LOC = W5

NET YClt3gt LOC = Y5

在光碟片中 RFFPGAVHDLDEMOBIT3S1K 裡有 VHDL 與數位邏輯設計書本範例原始檔與合成檔

86

eM_3S50 模組

NET CLK LOC = P124

NET XAlt0gt LOC = P59

NET XAlt1gt LOC = P60

NET XAlt2gt LOC = P63

NET XAlt3gt LOC = P68

NET XBlt0gt LOC = P135

NET XBlt1gt LOC = P132

NET XBlt2gt LOC = P116

NET XBlt3gt LOC = P113

NET XBlt4gt LOC = P112

NET XBlt5gt LOC = P96

NET XBlt6gt LOC = P100

NET XBlt7gt LOC = P99

NET XClt0gt LOC = P69

NET XClt1gt LOC = P70

NET XClt2gt LOC = P73

NET XClt3gt LOC = P74

NET YAlt0gt LOC = P105

JP4 接頭

NET YAlt1gt LOC = P104

NET YAlt2gt LOC = P103

NET YAlt3gt LOC = P102

NET YBlt0gt LOC = P127

NET YBlt1gt LOC = P129

NET YBlt2gt LOC = P131

NET YBlt3gt LOC = P130

NET YBlt4gt LOC = P128

NET YBlt5gt LOC = P125

NET YBlt6gt LOC = P119

NET YBlt7gt LOC = P118

NET YClt0gt LOC = P107

NET YClt1gt LOC = P108

NET YClt2gt LOC = P98

NET YClt3gt LOC = P97

在光碟片中 RFFPGAVHDLDEMOBIT3S200 裡有VHDL與數位邏輯設計書本範例原始檔與合成檔

87

eM_95XL 模組

NET CLK LOC = SPIN38

NET XAlt0gt LOC = SPIN53

NET XAlt1gt LOC = SPIN54

NET XAlt2gt LOC = SPIN56

NET XAlt3gt LOC = SPIN57

NET XBlt0gt LOC = SPIN85

NET XBlt1gt LOC = SPIN86

NET XBlt2gt LOC = SPIN97

NET XBlt3gt LOC = SPIN98

NET XBlt4gt LOC = SPIN100

NET XBlt5gt LOC = SPIN101

NET XBlt6gt LOC = SPIN105

NET XBlt7gt LOC = SPIN104

NET XClt0gt LOC = SPIN58

NET XClt1gt LOC = SPIN59

NET XClt2gt LOC = SPIN60

NET XClt3gt LOC = SPIN61

NET YAlt0gt LOC = SPIN111

JP4 接頭

NET YAlt1gt LOC = SPIN110

NET YAlt2gt LOC = SPIN107

NET YAlt3gt LOC = SPIN106

NET YBlt0gt LOC = SPIN93

NET YBlt1gt LOC = SPIN91

NET YBlt2gt LOC = SPIN87

NET YBlt3gt LOC = SPIN88

NET YBlt4gt LOC = SPIN92

NET YBlt5gt LOC = SPIN94

NET YBlt6gt LOC = SPIN95

NET YBlt7gt LOC = SPIN96

NET YClt0gt LOC = SPIN112

NET YClt1gt LOC = SPIN113

NET YClt2gt LOC = SPIN103

NET YClt3gt LOC = SPIN102

在光碟片中 RFFPGAVHDLDEMOSVF95288XL 裡有VHDL與數位邏輯設計書本範例原始檔與合成

檔案

88

eM_FPGA 模組

NET CLK LOC = E12

NET XAlt0gt LOC = AA3

NET XAlt1gt LOC = Y4

NET XAlt2gt LOC = AA4

NET XAlt3gt LOC = AB4

NET XBlt0gt LOC = M1

NET XBlt1gt LOC = M2

NET XBlt2gt LOC = W13

NET XBlt3gt LOC = Y13

NET XBlt4gt LOC = AA13

NET XBlt5gt LOC = AB13

NET XBlt6gt LOC = Y18

NET XBlt7gt LOC = W18

NET XClt0gt LOC = W5

NET XClt1gt LOC = Y5

NET XClt2gt LOC = AA5

NET XClt3gt LOC = AB5

NET YAlt0gt LOC = Y17

JP4 接頭

NET YAlt1gt LOC = W17

NET YAlt2gt LOC = AB18

NET YAlt3gt LOC = AA18

NET YBlt0gt LOC = N1

NET YBlt1gt LOC = M5

NET YBlt2gt LOC = M3

NET YBlt3gt LOC = M4

NET YBlt4gt LOC = M6

NET YBlt5gt LOC = N2

NET YBlt6gt LOC = U13

NET YBlt7gt LOC = V13

NET YClt0gt LOC = AA17

NET YClt1gt LOC = AB17

NET YClt2gt LOC = V12

NET YClt3gt LOC = U12

在光碟片中 RFFPGAVHDLDEMOBIT2V250 裡有VHDL與數位邏輯設計書本範例原始檔與合成檔

89

Page 35: RFFPGA 直流馬達實驗手冊juniortek.com.tw/program/manual/RF-DC-mal.pdf · em_demo模組 em_dcm 直流伺服馬達 dc電源 rffpga 系統的直流馬達實驗規劃 其中包括:

plot yunit 2 500 -100 設定示波器 Y2 軸

plot yunit 3 50 100 設定示波器 Y3 軸

plot yunit 4 50000 300 設定示波器 Y4 軸

plot trigger 1 0 1 10 設定示波器觸發

plot scope 9 1 2 3 4 設定示波器顯示

module io2 設定 io2 模組

s cmd ampfg1out

module fg1 設定 fg1 模組

s kAmp 256 s kFrq 150

module ft1 設定 ft1 模組

s u ampfg1out s dt 10 s ka 500

module io3 設定 io3 模組

s led ampfg1out

module 回復預設模組

run 1khz 設定抽樣頻率為 4KHz

run start DSP 開始執行

das stop pause 1 DAS 啟動 das start DAS 啟動

echo on 回復正常訊息顯示

使用者可視情況調整一階濾波器的 ka和 dt值使得 ch2和 ch3 兩組波形完全相符

以求得開迴路系統近似的一階轉移函數 CAI操控設計畫面規劃如下(EXP_PWMCAI) page 1 畫面設計

35

page 2 畫面設計 page 3 畫面設計

36

實測響應圖

訊 號 說 明 訊 號 說 明 ch1 方波產生器訊號 ch3 一階濾波器輸出信號 ch2 馬達角速度訊號 ch4 馬達角位置訊號

直流馬達之開迴路電壓控制響應圖

37

以邏輯分析功能觀測直流馬達之光電盤輸入與 PWM輸出信號

38

62 實驗 2-閉迴路的速度控制 實驗說明為了觀測閉迴路的速度控制響應建立下面的測試方塊圖

加入 PD控制後系統閉迴路的轉移函數經適度的簡化仍能約略以一階系統

處理方塊圖如下

sτ+1

u km ωm

其中

u 送給控制器的速度命令

ωm馬達的轉動速度可由處理 photo encoder 信號所得的位置微分而得

km一階系統的穩態增益 τ一階系統的時間常數即步階響應中的上升時間

方塊圖中的模組功能說明如下

1用 fg1 產生測試用的方波速度命令

2將方波速度命令和速度回授訊號送到 PD 控制器方塊中產生電壓控制訊號再透

過 io2 模組將訊號送出給伺服介面

3用 ft1 建立對照用的一階系統可用 IIR1濾波器方塊產生

4將方波命令產生速度命令再觀測 PHT(io1)上的速度值 spd

5調整 IIR1濾波器的參數使得兩組波形完全相符這時 IIR1濾波器就是閉迴路

速度控制的特性其中 km 為增益而τ為上升時間(單位為 sec)

6增益 km 可從示波器中作簡單計算而上升時間(τ=40964000dtka)

7 Led四位數字七段顯示模組顯示波形信號資料

39

對應之 plc檔程式說明(exp_speedplc) echo off 畫面顯示開始

run dsp 0 選擇 DSP1

run stop run reset 既有程式停止

run testDCMmem 下載指定程式

das 1 ampfg1out 0 1024 PWM 波形 Volt 設定 DAS 頻道1

das 2 ampft1lp 0 1024 馬達模擬 Volt 設定 DAS 頻道2

das 3 ampio1spd 0 1024 馬達速度 Volt 設定 DAS 頻道3

das 4 ampio1ang 0 1024 馬達角度 Volt 設定 DAS 頻道4

plot select 0 設定示波器頁數

plot xunit 100000 0 設定示波器 X軸

plot yunit 1 50 -300 設定示波器 Y1 軸

plot yunit 2 50 -100 設定示波器 Y2 軸

plot yunit 3 50 100 設定示波器 Y3 軸

plot yunit 4 50000 300 設定示波器 Y4 軸

plot trigger 1 0 1 10 設定示波器觸發

plot scope 9 1 2 3 4 設定示波器顯示

module io2 設定 io2 模組

s cmd ampcn2out

module fg1 設定 fg1 模組

s kAmp 50 s kFrq 150

module cn2 設定 cn1 模組

s cmd ampfg1out s fdk ampio1spd s kp 0x4000

module ft1 設定 ft1 模組

s u ampfg1out s dt 2 s ka 320

module io3 設定 io3 模組

s led ampfg1out

module 回復預設模組

run 1khz 設定抽樣頻率為 4KHz

run start DSP 開始執行

das stop pause 1 DAS 啟動 das start DAS 啟動

echo on 回復正常訊息顯示

CAI操控設計畫面規劃如下(EXP_speedCAI)

40

page 1 畫面設計 page 2 與 page 3 畫面設計與實驗一 page 2 與 page 3相同畫面 page 4 畫面設計

41

方塊的參數設定 使用者可視情況調整一階濾波器的 ka和 dt值使得 ch2和 ch3 兩組波形完全相符

以求得此一閉迴路系統近似的一階轉移函數或調整 PD控制器中的 kp和 kp值以調整系統之響應 實測響應圖

訊 號 說 明 訊 號 說 明 ch1 方波產生器產生之速度命令 ch3 一階濾波器輸出信號 ch2 馬達角速度訊號 ch4 馬達角位置訊號

42

直流馬達之閉迴路速度控制響應圖

43

63 實驗 3-閉迴路的位置控制 實驗說明為了觀測閉迴路的位置控制響應將直流馬達的回授改為位置訊號

建立下面的測試方塊圖 方塊圖中的模組功能說明如下

1用 fg1產生測試用的方波位置命令 2將方波位置命令和位置回授訊號送到 PD控制器方塊中產生電壓控制訊號再透過 io2模組將訊號送出到伺服介面驅動馬達轉動

對應之 plc檔程式說明(exp_angleplc) echo off 畫面顯示開始

run dsp 0 選擇 DSP1

run stop run reset 既有程式停止

run testDCMmem 下載指定程式

das 1 ampfg1out 0 1024 PWM 波形 Volt 設定 DAS 頻道1

das 2 ampft1lp 0 1024 馬達模擬 Volt 設定 DAS 頻道2

das 3 ampio1spd 0 1024 馬達速度 Volt 設定 DAS 頻道3

das 4 ampio1ang 0 1024 馬達角度 Volt 設定 DAS 頻道4

plot select 0 設定示波器頁數

plot xunit 100000 0 設定示波器 X軸

plot yunit 1 1000 -300 設定示波器 Y1 軸

plot yunit 2 1000 -100 設定示波器 Y2 軸

plot yunit 3 20 100 設定示波器 Y3 軸

plot yunit 4 1000 300 設定示波器 Y4 軸

plot trigger 1 0 1 10 設定示波器觸發

44

plot scope 9 1 2 3 4 設定示波器顯示

module io2 設定 io2 模組

s cmd ampcn2out

module fg1 設定 fg1 模組

s kAmp 1000 s kFrq 75

module cn2 設定 cn1 模組

s cmd ampfg1out s fdk ampio1ang s kp 0x300 s kd 0x4000

module ft1 設定 ft1 模組

s u ampfg1out s dt 2 s ka 320

module io3 設定 io3 模組

s led ampfg1out

module 回復預設模組

run 1khz 設定抽樣頻率為 4KHz

run start DSP 開始執行

das stop pause 1 DAS 啟動 das start DAS 啟動

echo on 回復正常訊息顯示

CAI操控設計畫面規劃如下(EXP_angleCAI) page 1 畫面設計

45

page 2 與 page 3 畫面設計與實驗一 page 2 與 page 3相同畫面 page 4 畫面設計與實驗二 page 4 畫面 方塊的參數設定 延續上一實驗的說明使用者可以調整 PD控制器中的 kp和 kd值以調整系統之

響應 實測響應圖

訊 號 說 明 訊 號 說 明 ch1 方波產生器產生之位置命令 ch3 馬達角速度訊號 ch2 馬達角位置 ch4 Pd控制器輸出之電壓訊號

46

直流馬達之閉迴路位置控制響應圖

47

64 實驗 4-加減速的位置控制 實驗說明為避免方波命令的過於嚴苛在方波命令的輸出加入一加減速控制功

能方塊以減緩命令變化的幅度增加馬達運動的平順建立的測試方塊圖如下

方塊圖中的模組功能說明如下

1用 fg1產生測試用的方波位置命令 2將方波位置命令送到加減速控制方塊處理後產生新的位置命令再將新的位置命

令與位置回授訊號送到 PD控制器方塊中產生電壓控制訊號最後透過 io2模組將訊號送出到伺服介面驅動馬達轉動

對應之 plc檔程式說明(exp_accplc) echo off 畫面顯示開始

run dsp 0 選擇 DSP1

run stop run reset 既有程式停止

run testDCMmem 下載指定程式

das 1 ampfg1out 0 1024 PWM 波形 Volt 設定 DAS 頻道1

das 2 ampcn1out 0 1024 加速控制 Volt 設定 DAS 頻道2

das 3 ampio1spd 0 1024 馬達速度 Volt 設定 DAS 頻道3

das 4 ampio1ang 0 1024 馬達角度 Volt 設定 DAS 頻道4

plot select 0 設定示波器頁數

plot xunit 100000 0 設定示波器 X軸

plot yunit 1 2000 -300 設定示波器 Y1 軸

plot yunit 2 2000 -100 設定示波器 Y2 軸

plot yunit 3 50 100 設定示波器 Y3 軸

plot yunit 4 2000 300 設定示波器 Y4 軸

48

plot trigger 1 0 1 10 設定示波器觸發

plot scope 9 1 2 3 4 設定示波器顯示

module io2 設定 io2 模組

s cmd ampcn2out

module fg1 設定 fg1 模組

s kAmp 2000 s kFrq 150

module cn1 設定 cn1 模組

s cmd ampfg1out

module cn2 設定 cn2 模組

s cmd ampcn1out s fdk ampio1ang s kp 0x300 s kd 0x4000

module ft1 設定 ft1 模組

s u ampfg1out s dt 2 s ka 320

module io3 設定 io3 模組

s led ampfg1out

module 回復預設模組

run 1khz 設定抽樣頻率為 4KHz

run start DSP 開始執行

das stop pause 1 DAS 啟動 das start DAS 啟動

echo on 回復正常訊息顯示

CAI操控設計畫面規劃如下(EXP_accCAI) page 1 畫面設計

49

page 2 畫面設計與實驗一 page 2相同畫面 page 3 畫面設計與實驗二 page 4相同畫面

參數設定參考之前各實驗的說明可線上機動性的調整 PD控制器中的 kp和 kd值以調整系統之響應 實測響應圖

訊 號 說 明 訊 號 說 明 ch1 方波產生器產生之位置命令 ch3 馬達角位置 ch2 加減速模組輸出之位置命令 ch4 馬達角速度訊號

50

圖一 直流馬達經加減速控制後之閉迴路控制響應圖

51

65 實驗 5-正弦波的位置控制 實驗說明在本實驗中改變命令的波形由方波改變為正弦波並建立如下的測

試方塊圖與上一實驗相比較僅更改命令的波形產生方塊 方塊圖中的模組功能說明如下 1用 fg2產生測試用的弦波位置命令 2將弦波位置命令送到加減速控制方塊處理後產生新的位置命令再與 io1 讀入的位

置回授訊號送到 PD 控制器方塊中產生電壓控制訊號再透過 io2 模組將訊號送出到伺服介面驅動馬達轉動

對應之 plc檔程式說明(exp_sinplc) echo off 畫面顯示開始

run dsp 0 選擇 DSP1

run stop run reset 既有程式停止

run testDCMmem 下載指定程式

das 1 ampfg2out 0 1024 SIN 波形 Volt 設定 DAS 頻道1

das 2 ampcn1out 0 1024 加速控制 Volt 設定 DAS 頻道2

das 3 ampio1spd 0 1024 馬達速度 Volt 設定 DAS 頻道3

das 4 ampio1ang 0 1024 馬達角度 Volt 設定 DAS 頻道4

plot select 0 設定示波器頁數

plot xunit 100000 0 設定示波器 X軸

plot yunit 1 2000 -300 設定示波器 Y1 軸

plot yunit 2 2000 -100 設定示波器 Y2 軸

plot yunit 3 50 100 設定示波器 Y3 軸

plot yunit 4 2000 300 設定示波器 Y4 軸

plot trigger 1 0 1 10 設定示波器觸發

52

plot scope 9 1 2 3 4 設定示波器顯示

module io2 設定 io2 模組

s cmd ampcn2out

module fg2 設定 fg1 模組

s kAmp 2000 s kFrq 100

module cn1 設定 cn1 模組

s cmd ampfg2out

module cn2 設定 cn2 模組

s cmd ampcn1out s fdk ampio1ang s kp 0x300 s kd 0x4000

module ft1 設定 ft1 模組

s u ampfg2out s dt 2 s ka 320

module io3 設定 io3 模組

s led ampfg2out

module 回復預設模組

run 1khz 設定抽樣頻率為 4KHz

run start DSP 開始執行

das stop pause 1 DAS 啟動 das start DAS 啟動

echo on 回復正常訊息顯示

CAI操控設計畫面規劃如下(EXP_sinCAI) page 1 畫面設計

53

page 2 畫面設計 page 3 畫面設計與實驗二 page 4相同畫面

方塊的參數設定可調整 PD控制器中的 kp和 kd值以調整系統之響應 實測響應圖

訊 號 說 明 訊 號 說 明 ch1 弦波產生器產生之位置命令 ch3 馬達角位置訊號 ch2 加減速模組輸出之位置命令 ch4 馬達角速度訊號

54

直流馬達之閉迴路弦波加減速位置控制響應圖

55

7組合語言說明

本節將針對 DC馬達伺服控制實驗專用的程式模組進行功能與程式碼的說明其

有關於波形產生器與資料擷取模組等說明如下

SIN_waveasm 正弦波產生器 PWM_waveasm 方波產生器 IIR1_filterasm 一階濾波器 DAS4asm 資料蒐集模組

弦波產生器

此模組會產生週期性的正弦波方塊圖如下

outfrq

kBiasbias

ampkAmp

kFrqth

kThf=1TB

θ

A

其中

1正弦波有四個參數振幅(A)頻率(F)相位(θ)和偏移(B)其公式為 out = A sin(2πF t +θ) + B 2對於單純的正弦波產生器所對映的參數包括 kAmp 振幅值 kFrq 頻率值kFrq=655368000Hz其中 Hz的範圍為 0~4000例如 1000Hz =gt frq=8192 100Hz =gt frq=819 10Hz =gt frq=82 1Hz =gt frq=8 kTh 相角值0~255代表 0~360的相位當 th=0 時為正弦波 th=64 時為餘弦波 th=128時為反相波依此類推 kBias偏移值 3對於可調變的正弦波產生器其對映的輸入點為 amp 控制振幅的輸入點可產生調幅(AM)波形 frq 控制頻率的輸入點可產生調頻(FM)波形 th 控制相位的輸入點可產生調相(PM)波形 bias控制偏移的輸入點可產生雙頻混波(相加)波形 4若不使用調變功能時各個輸入點時的預設值為 amp 指向 kAmp 的位址 frq 指向 kFrq 的位址

56

th 指向 kTh 的位址 bias指向 kBias的位址

模組程式範例SIN_WAVEasm

local amp R0 IP kAmp 輸入點sin波的振幅 local frq R1 IP kFrq 輸入點sin波的頻率 local th R2 IP kTh 輸入點sin波的相角 local bias R3 IP kBias 輸入點sin波的中心偏移 local out R4 OP 輸出點sin波輸出 local tab R5 TP 表格指標指向 sin[256]的表格 local ang R6 內部變數相位角65536=360deg local kAmp R7 1000 參數振幅值 local kFrq R8 1000 參數頻率值=655368000Hz local kTh R9 0 參數相角值360deg=256 local kBias R10 0 參數偏移值 data 11 模組變數區長度及初值 initial 啟動程序 WR ang0 WR out0 ang=out=0 RET timer 即時控制程序(8KHz) RD ang ADD (frq) WR ang ang+=frq SFR 8 ADD (th) AND 255 ACC=sin(ang256+th) ADD tab WRH RDM table-look-up MUL (amp) SFR 12 ADD (bias) WR out out=ACCamp4096+bias RET table tab 256 sin[256]表格區10=4096 0 101 201 301 401 501 601 700 00~070deg 799 897 995 1092 1189 1285 1380 1474 08~0F 1567 1660 1751 1842 1931 2019 2106 2191 10~17 2276 2359 2440 2520 2598 2675 2751 2824 18~1F 2896 2967 3035 3102 3166 3229 3290 3349 20~27 3406 3461 3513 3564 3612 3659 3703 3745 28~2F 3784 3822 3857 3889 3920 3948 3973 3996 30~37 4017 4036 4052 4065 4076 4085 4091 4095 38~3F 4096 4095 4091 4085 4076 4065 4052 4036 40~4790deg 4017 3996 3973 3948 3920 3889 3857 3822 48~4F 3784 3745 3703 3659 3612 3564 3513 3461 50~57 3406 3349 3290 3229 3166 3102 3035 2967 58~5F

57

2896 2824 2751 2675 2598 2520 2440 2359 60~67 2276 2191 2106 2019 1931 1842 1751 1660 68~6F 1567 1474 1380 1285 1189 1092 995 897 70~77 799 700 601 501 401 301 201 101 78~7F 0 65435 65335 65235 65135 65035 64935 64836 80~87180deg 64737 64639 64541 64444 64347 64251 64156 64062 88~8F 63969 63876 63785 63694 63605 63517 63430 63345 90~97 63260 63177 63096 63016 62938 62861 62785 62712 98~9F 62640 62569 62501 62434 62370 62307 62246 62187 A0~A7 62130 62075 62023 61972 61924 61877 61833 61791 A8~A8 61752 61714 61679 61647 61616 61588 61563 61540 B0~B7 61519 61500 61484 61471 61460 61451 61445 61441 B8~BF 61440 61441 61445 61451 61460 61471 61484 61500 C0~C7270deg 61519 61540 61563 61588 61616 61647 61679 61714 C8~CF 61752 61791 61833 61877 61924 61972 62023 62075 D0~D7 62130 62187 62246 62307 62370 62434 62501 62569 D8~DF 62640 62712 62785 62861 62938 63016 63096 63177 E0~E7 63260 63345 63430 63517 63605 63694 63785 63876 E8~EF 63969 64062 64156 64251 64347 64444 64541 64639 F0~F7 64737 64836 64935 65035 65135 65235 65335 65435 F8~FF

就程式結構而言說明如下

timer 即時控制程序(8KHz) RD ang ADD (frq) WR ang ang+=frq SFR 8 ADD (th) AND 255 ACC=sin(ang256+th) ADD tab WRH RDM table-look-up MUL (amp) SFR 12 ADD (bias) WR out out=ACCamp4096+bias RET

1基本上我們以查表法計算 sin()其輸入θ的範圍為 0~255對映到 0~360deg其輸出 sin(θ)的範圍為+-4096對映到+-10的範圍

2建立一個內部變數 ang其範圍為 0~65535對映到 0~360的相位角 3每個timer程序都執行 ang+=frq的動作更新目前的相位角接著依照 ang的相位角查表得到 sin(ang256+th)值

4由於表格長度為 256-word所以必須將 ang256才能得到正確的對映關係而 th範圍為 0~255所以不需要像 ang一般的做額外處理

5sin()的範圍為(+1-1)而在表格中以(+4096~-4096)的型式記錄相當於 10=4096所以執行 Asin()時還要用 SFR12指令做4096的動作才能正確的取得輸出值

58

6就頻率輸入 frq而言其計算原則是將θ=ωt轉化成θ=Σ(ωdt)因為抽樣頻率

為 8KHz所以 dt=18000而得到 frq=655368000Hz公式其中 Hz為真正的頻率在 8KHz的抽樣頻率下其範圍為 0~4000

鋸齒波產生器

此模組會產生週期性的鋸齒波方塊圖如下

outfrq

kBiasbias

ampkAmp

kFrqth

kThf=1TB

θ

A

其中

1鋸齒波也有四個參數振幅(A)頻率(F)相位(θ)和偏移(B)和正弦波的定義完全一致唯一的差異是其輸出為鋸齒波而非正弦波

2基本波形是從週期開始時為 0一直遞增到週期結束時到達最高點然後立刻回歸

到 0重新開始 3以程式結構而論鋸齒波程式幾乎就是正弦波的相位計算部分只差沒有正弦波的

查表處理而已

模組程式範例SAW_WAVEasm

local amp R0 IP kAmp 輸入點sin波的振幅 local frq R1 IP kFrq 輸入點sin波的頻率 local th R2 IP kTh 輸入點sin波的相角 local bias R3 IP kBias 輸入點sin波的中心偏移 local out R4 OP 輸出點sin波輸出 local ang R5 內部變數相位角65536=360deg local kAmp R6 1000 參數振幅值 local kFrq R7 1000 參數頻率值=655368000Hz local kTh R8 0 參數相角值360deg=256 local kBias R9 0 參數偏移值 data 11 模組變數區長度及初值 initial 啟動程序 WR ang0 WR out0 ang=out=0 RET timer 即時控制程序(8KHz) RD ang ADD (frq) WR ang ang+=frq SFR 8 ADD (th) AND 255 ACC=(ang256+th)amp0x00ff MUL (amp) SFR 8 ADD (bias) WR out out=ACCamp256+bias

59

RET

脈衝波產生器

outfrq

kBiasbias

ampkAmp

kFrqth

kThf=1TB

θ

A

pwm

kDutyduty

此模組會產生週期性的脈衝波方塊圖如下

其中

1脈衝波有五個參數其中振幅(A)頻率(F)相位(θ)和偏移(B)四個參數和正弦波

定義完全一樣另外再增加一個負載率(D) 2基本波形是從週期開始時為 1隔段時間後換為 0然後持續到週期結束再重新開始其中 1所佔有的比例就是負載率當 D=0時為 0而 D=255時為 100

3和其他參數類似負載率(D)以 duty為其輸入點而以 kDuty為其參數值

模組程式範例PLS_WAVEasm

local amp R0 IP kAmp 輸入點脈衝波的振幅 local frq R1 IP kFrq 輸入點脈衝波的頻率 local th R2 IP kTh 輸入點脈衝波的相角 local bias R3 IP kBias 輸入點脈衝波的中心偏移 local duty R4 IP kDuty 輸入點脈衝波的負載率 local out R5 OP 輸出點脈衝波輸出 local ang R6 內部變數相位角65536=360deg local kAmp R7 1000 參數振幅值 local kFrq R8 1000 參數頻率值=655368000Hz local kTh R9 0 參數相角值360deg=256 local kBias R10 0 參數偏移值 local kDuty R11 128 參數負載率100 =256 data 12 模組變數區長度及初值 initial 啟動程序 WR ang0 WR out0 ang=out=0 RET timer 即時控制程序(8KHz)

60

RD ang ADD (frq) WR ang ang+=frq SFR 8 ADD (th) AND 255 ACC=(ang256+th)amp0x00ff SUB (duty) RD (amp) JLT t1 RD 0 ACC=(amp0) t1 ADD (bias) WR out out=ACC+bias RET

IIR 一階濾波器

此模組執行一階的 IIR濾波器方塊圖如下

kau x

Z-1

+

+

-

+低通濾波器

高通濾波器dx lp

hp

濾波器參數的計算公式如下

1假設濾波器的頻寬為 hz則 ωn=hz628 2若系統頻率為 8KHz則抽樣週期 dT為 dT=dt8000 其中 dt為模組參數 3則濾波器參數為 ka=ωndT4096或是 =hzdt62880004096即 =hzdt32 4當 dt決定後所允許的訊號頻寬為(4000dt)換句話說訊號頻寬會因為 dt增加而下降

為了方便實驗的運用下面列出常用的參數對照表

濾波頻寬

(Hz)

10 20 50 100 200 500 1000 2000

訊號頻寬

(Hz)

400 800 2000 4000 4000 4000 4000 4000

模組參數 dt 10 5 2 1 1 1 1 1

模組參數 ka 320 320 320 320 640 1600 3200 6400

表格的運用方式如下

1首先決定濾波頻寬 2接著查表找出對映的參數 dt和 ka 3再查表得到對映的訊號頻寬以決定是否需要串接前級濾波器

61

模組程式範例IIR1_FILTERasm

local u R0 IP 輸入點濾波器輸入 local lp R1 OP 輸出點低通濾波器輸出 local hp R2 OP 輸出點高通濾波器輸出 local dt R3 1 參數抽樣週期 local ka R4 4096 參數增益 ka10=4096 local prd R5 內部變數抽樣週期用 data 6 模組變數區長度 initial 開機啟動程序 WR lp0 WR hp0 WR prd1 RET lp=hp=0prd=1 timer 即時控制程序 SUB prd1 JNZ b9 if (--prdgt0) return RD dt WR prd prd=dt RD (u) SUB lp WR hp hp=u-lp MUL ka SFR 12 ADD lp WR lp lp+=(hpka4096) b9 RET

資料蒐集模組

資料蒐集模組是一個非常特殊的模組專門配合 eTTY 程式中的示波器使用

模組程式範例DAS4asm

local cmd R0 0 紀錄命令0=停止1=前置記錄2=正觸發4=負觸發6=觸發記錄 local dt R1 1 抽樣週期每 dT抽樣一次 local tab R2 TP DAS表格啟始位址 local cnt R3 0 目前記錄點(0~255) local ch1 R4 0 定義頻道1的變數位址 local ch2 R5 0 定義頻道2的變數位址 local ch3 R6 0 定義頻道3的變數位址 local ch4 R7 0 定義頻道4的變數位址 local trg R8 0 定義觸發頻道的變數位址 local th R9 0 觸發準位 local tail R10 0 觸發後的抽樣個數 local buf R11 1 抽樣計數(1~dt) local pnt R12 表格位址計算pnt=tab+cnt4 local len R13 表格長度計算(0~256) data 14 定義模組變數區的長度 table tab 1024 定義表格的長度 initial 啟動程序 WR cmd0 RET cmd=0 timer 控制程序

62

ADD cmd0 JZ t9 if (cmd==0) return SUB buf1 JNZ t9 if (--buf)gt0) return RD dt WR buf dt=buf RD cnt ADD 1 AND 0xff WR cnt cnt=(cnt+1)amp0xff SFL 2 ADD tab WR pnt pnt=tab+cnt4 RD (ch1) WR (pnt) ADD pnt1 pnt++=ch1 RD (ch2) WR (pnt) ADD pnt1 pnt++=ch2 RD (ch3) WR (pnt) ADD pnt1 pnt++=ch3 RD (ch4) WR (pnt) pnt =ch4 RD cmd SUB 1 JZ t9 SUB 1 JZ t2 SUB 1 JZ t3 SUB 1 JZ t4 SUB 1 JZ t5 SUB 1 JZ t6 JR t7 t2 RD (trg) SUB th JGE t9 ADD cmd1 JR t9 wait trgltth t3 RD (trg) SUB th JLE t9 JR t6 wait trggtth t4 RD (trg) SUB th JLE t9 ADD cmd1 JR t9 wait trggtth t5 RD (trg) SUB th JGE t9 JR t6 wait trgltth t6 WR len0 WR cmd7 len=0cmd=7 t7 ADD len1 SUB tail JLT t9 WR cmd0 if ((++len)gt=0x80) cmd=0 t9 RET

與 DC 馬達控制相關的程式模組有以下 4個程式模組說明如下

(1)加減速控制模組 ACC_controlasm (2)光電盤輸入模組 POS_inputasm (3)PWM輸出模組 PWM_outputasm (4)PD控制模組 PD_controlasm

71加減速控制模組 此程式模組主要功能在於執行位置控制的加減速命令修正其數學模式採用 Lynn

濾波器的架構參見下圖

cmd

2

+

old Z -1

-

Z -1

Z -1

Z-1

Z-1x0 x1 x8 x9 x16

+ -

++

2

Z-1

Z-1 y1 y2

+

-

y0

+ +

sumZ-1

+164

12

out

dif

+

63

加減速控制模組方塊圖

其中

1Lynn 濾波器的階數固定成八階也就是 m=8其公式為 H(z) = (1-2Z-m+Z-2m)(1-2Z-1+Z-2)m2

2因為m=8所以m2=64因此最後計算低通濾波的部份時要先做除 64的運算 3因為低通濾波(lp)和 y0之間有 64倍的差異代表 y0y1y2的變化範圍比濾波器輸

入值要擴大許多例如輸入值在+-1000變化時y0y1y2很可能會在+-64000之間變化這範圍已經超出整數處理的範圍很可能會造成錯誤的計算結果

4所以在實驗時輸入值的變化範圍必須控制在+-500之間以保證計算的正確性 5對於 Lynn 濾波器當 m=8時其濾波器的頻寬固定為 1 kHzmdt也就是 dt=1時頻寬為 125 Hz dt=2時頻寬為 625Hz依此類推 6對於 Lynn 濾波器其濾波器的延遲固定為 m個抽樣週期因此設計 hp = x8 - lp 即可得到高通濾波器的對應結果 7其中乘 2和除 64的運算以移位運算取代所以整個程式中並無任何乘法運算 8Lynn 濾波器本身並不是穩定濾波器所以在程式啟動時必須確實的將所有狀態

(x0~x16)歸零否則會產生不穩定的狀態輸出

因為 Lynn濾波器中所有參數固定所以除了抽樣週期 dt 之外並無任何可調參數

抽樣週期 dt 可以控制頻寬dt 越大則濾波器頻寬越低

將步階命令值的輸出送入 Lynn 濾波器中經由低通濾波器的效應可以減緩命

令的變化程度達到加減速控制的目的以下為使用 Lynn 濾波器型式實現加減速控

制的組合語言程式列印 如欲更進一步瞭解 Lynn 濾波器與 FIR 數位濾波器之間的關係可以參考通訊實驗

四數位濾波器設計(FIR)中之說明

ACC_controlasm程式列印 local cmd R0 IP 輸入點位置命令

local out R1 OP 輸出點加減速處理後的位置命令

local dif R2 OP 輸出點位置微分命令

local axis R3 0 馬達編號0=X1=Y2=Z3=C

local old R4 內部變數微分計算用

local sumL R5 內部變數積分計算用

local sumH R6 內部變數積分計算用

local y0 R7 內部變數y(0~2)

local y1 R8 local y2 R9

local x0 R10 內部變數x(0~16)

local x1 R11 local x2 R12 local x3 R13 local x4 R14

local x5 R15 local x6 R16 local x7 R17 local x8 R18

local x9 R19 local x10 R20 local x11 R21 local x12 R22

local x13 R23 local x14 R24 local x15 R25 local x16 R26

64

data 27 模組變數區長度

initial 開機啟動程序

WR dif0 RD (cmd) WR out WR old dif=0 out=old=cmd

sumHL=cmd64

SFL 6 WR sumL RD out SFR 10 SGN 5 WR sumH

RPT 17 WR x00 RPT 3 WR y00 RET x[0~16]=0y[0~2]=0

timer 即時控制程序

RD (cmd) SUBX old WR x0 x0=cmd-old old=cmd

SUB x81 ADD x16 ADD y11 SUB y2 WR y0 y0=x0-2x8+x16+2y1-y2

SGN ADD sumL WR sumL RDH ADC sumH WR sumH sumHL+=y0

WRH RD sumL SFR 6 WR out out=sumHL64

RD y0 SGN SFR WR dif dif=y032mm

RD x0 RPT 16 RDX x1 x[i]=x[i-1] i=1~16

RD y0 RDX y1 WR y2 y[i]=y[i-1] i=1~2

b9 RET

72光電盤輸入模組

DC馬達的位置由光電盤量測之預設儲存於 0xac與 0xbe二個輸入埠位址中其中位址 0xac記錄 X軸馬達的位置位址 0xbe記錄 Y軸馬達的位置由於本實驗的DC馬達接在 Y軸的位置上因此程式中直接選用 Y軸的輸入 光電盤位置輸入的程式列印如下其中速度由位置的差分而得至於馬達的位置

則使用內部 2個 word加以記錄精度為 32位元 POS_inputasm程式列印 local spd R0 OP 輸出點速度量測值

local ang R1 OP 輸出點角度量測值

local angH R2 內部變數角度的 32 位元部分

local mode R3 0x308 模式選擇15MHzAB 相正反向輸入

local pht R4 0xac 輸入阜地址光電盤輸入(0xac)

local phtc R5 0xbe 輸入阜地址光電盤模式(0xbe)

local old R6 內部變數速度更新用

data 7 模組變數區長度

initial 開機啟動程序

RD mode WR (phtc) phtc=mode

RD (pht) WR old WR spd0 RET old=phtspd=0

timer 即時控制程序

RD (pht) SUBX old SGN 11 WR spd spd=(pht-old)old=pht

65

ADD ang WR ang angHL+=spd

RDH ADC angH WR angH

RET

73 PWM輸出控制模組 模組方塊

cmd PWM輸出

程式說明 1在開機時將切換保護時間寫到輸出阜 0xbc上其中切換保護值為 0~6360=5us 2在每次 timer interrupt時將 cmd訊號處理後寫到輸出阜 0xb8上

PWM_outputasm程式列印 local cmd R0 IP gnd 輸入點v相命令

local gain R1 4096 參數輸出增益1=4096

local bias R2 2048 參數輸出偏壓0=2048

local limit R3 4095 參數輸出極限1=4095

local zone R4 0x88f0 參數頻率=12KHz切換保護=5us

local pwm R5 0xb8 輸出阜地址PWM0 輸出(0xb8)

local mode R6 0xbc 輸出阜地址PWM 模式(0xbc)

local p0md R7 0xf8 輸出阜地址port0 模式(0xf8)

local gnd R8 0 輸入接地點

data 9 模組變數區長度

initial 開機啟動程序

RD bias WR (pwm) pwm=bias

RD 0xffff WR (p0md) set port0 mode

RD zone WR (mode) RET mode=zone

stop 關機保護程序

RD bias WR (pwm) RET pwm=bias

timer 即時控制程序

RD (mode) xor 1 and 1 WR (mode) trigger watch-dog

RD (cmd) MUL gain SFR 12 ADD bias ACC=(cmdgain4096)+bias

MAX 0 MIN limit WR (pwm) pwm=limit(ACC)

RET

66

74 PD 控制模組

PD控制的模組方塊參見圖二十一所示其中比例控制的部份直接由增益 kp加以調整微分控制的部份則由誤差的差分經增益 kd的調整而得

Σ+

-

cmd

fdk

err out

Σ

pk

dk

Σ

+

+

+

-

old1minusZ

PD控制器的方塊圖

PD_controlasm程式列印 local cmd R0 IP gnd 輸入點位置命令(可忽略)

local fdk R1 IP gnd 輸入點位置回授(可忽略)

local out R2 OP 輸出點用以控制速度迴路

local kp R3 256 參數增益 kp10=256

local kd R4 0 參數增益 kd10=256

local err R5 0 內部變數

local old R6 0 內部變數

local gnd R7 0 無輸入時的短路點

data 8 模組變數區長度

initial 開機啟動程序

WR out0 WR old0 RET out=old=0

timer 即時控制程序

RD (cmd) SUB (fdk) PRTF WR err

MUL kp SFR 8 P=(cmd-fdk)kp256

RDS err SUBX old MUL kd SFR 8 D=(err-old)kd256

ADDS

WR out out=P+D

RET

程式中預設增益值的 10以整數值 256為基底因此使用 SFR 8的指令加以調

整另外在在計算微分項的程式部份用到 SUBX old的指令其詳細的暫存器動作如

下 參考 piDSP的指令說明SUBX指令將總共用到 3個時序參考錯誤 找不到參照

67

來源在時序 1時將原先 AX的資料拷貝一份到 HX中時序 2時正式執行減

法的動作所以 AX暫存器中的內容會變成 err-old時序 3時DSP會將存放在 HX暫存器中的內容拷貝一份到 old的記憶體中也就是經由 SUBX此一精簡指令將

同時完成計算差分所需要的相減與資料疊代的動作有效的利用 piDSP控制器 DSP核心的精簡指令將可以大幅提昇系統的計算速度

HX AXoldSUBXerr err

old

err

errerr olderr minus

1_err

errerr olderr minus err

1_err

1

2

3

SUBX的指令時序與暫存器變化

68

8附錄快速安裝說明

光纖網路通訊 FPGA 發展系統 (適用於 WIN-XP200098 系統)

快速安裝說明

26Pin 負載輸出入埠

雙電源︵5

12

伏︶輸入埠

單電源︵5

伏︶輸入埠

USB

光纖線輸

號 光纖線輸出埠

入 傳 埠

首先將光碟片 RFFPGA 目錄檔案拷貝在您工作硬碟裡面

第一次安裝時先將 USB 傳輸線接上電腦主機將電源供應器接上 FPGA 模組此時電

腦會出現安裝 USB-Serial 驅動程式選擇從清單安裝此驅動程式放置在光碟片

RFFPGA-USBdrive 選擇您目前安裝系統

可選擇 WIN-98WIN-MEWIN-2000WIN-XP 系統配合您現在工作電腦作業系統

69

注意一般電腦 USB 埠很多插口當您安裝驅動程式時是配合您當時插入之埠

下次如您插入不同接口埠時電腦會再次要求安裝驅動程式這是正常現象請再次安

裝驅動程式否則無法使用

FPLC 操作

首先進入 RFFPGA裡子目錄 testASM直接點選 fPLCexe 出現下面操作畫面(也可直接將

此檔案放置桌面直接點選)

(或者選擇 File 再執行 Setuphellip 選擇您要執行 CAI 檔)

70

進入下面操作畫面 首先使用滑鼠在 FPGA下載按鈕單擊動作使 FPGA變成 DSP晶片 實驗一至實驗五皆為使用 DSP組合語言設計程式其原始程式分別為 testASM1至testASM5可使用 texPad 開啟與編輯程式內容 實驗三與實驗五多有 IO控制動作 當選擇實驗三時出現下面畫面

71

eM_USB 模組

數字型 LED

0 1 2 34 5 6 78 9 A BC D E F

燈號型 LED

44 鍵盤

ADC0 ADC1 DAC0 DAC1

LED 選擇KEY 選擇

模 式 1

0123

注意操作畫面 3與 4 說明開關與按鍵選擇位置後選擇程式下載再按程式啟動如您

按下 0-3按鍵時燈號型 LED會有不同方向閃爍顯示程式停止時結束所有 IO控制動作再按回首頁選擇其他實驗 實驗四與實驗五

模式3

0 1 2 34 5 6 78 9 A BC D E F

按照上面開關選擇直接操作如果以上實驗皆能按照正常操作表示您光纖網路通訊

FPGA發展模組以能正常使用 注意 開機與關機動作順序如下

開機電腦啟動 --- eM_USB 模組電源接上 --- USB 接上電腦 ---

啟動 FPLC 軟體 --- 下載 FPGA 程式

關機關閉 FPLC 軟體 --- eM_USB 模組電源拔掉 --- 拔掉電腦 USB 接頭 ---關掉

電腦

如果以上順序有亂可能造成 USB 找不到驅動造成無法下載經過幾次測試還是

無法下載建議重新啟動電腦主機按照正確步驟操作

72

FPGA 下載操作

進入 FPLC 操作系統按照下列步驟選擇節點模組與下載 bit FPGA 檔案

在 VHDLDEMO 子目錄下您可以選擇您目前 FPGA 種類型號在此型號下我們已將 VHDL

與數位邏輯設計課本範例全部放於此處

73

光纖網路連線 FPGA 下載操作

首先利用光纖線將 eM_USB0 模組光纖輸出埠接至 eM_USB1 模組光纖輸入埠以此

類推最後再將最後 eM_USBN 模組光纖輸出埠接至 eM_USB0 模組光纖輸入埠配置

如附圖方式

個人電腦(Windows) eM_USB模組

0USB

eM_USB模組1

光纖網路

eM_USB模組2

eM_USB模組N

配置完成後進入 FPLC 系統首先必須先將 Node00 下載在 testASM 子目錄裡

piDSPv0bit 檔讓 eM_USB0 模組 FPGA 具備 DSP 功能才能執行光纖網路通訊

操作如下

此時您就可以選擇分別下載至各模組 FPGA 檔 bit

74

安裝 FPLC 注意事項

當您進入 FPLC 時

按 FILE 選擇 programhellip 選擇檔案為 exp_dcmplc 出現下面畫面

正常顯示畫面為

75

DOS 環境操作

在 PC 端的操作是在 Windows 環境中的 DOS 視窗中執行指令範例如下

eFPGA progNETbit 下載 FPGA電路至網路節點0(即 USB節點)中 eFPGA testLEDbit 1 下載 FPGA電路至網路節點1中

對於單一節點的控制程序如下

1將 eM_USB模組連結個人電腦的 USB端 2eM_USB模組開機 3執行下載指令即可 eFPGA xxxxbit 4若要更改 FPGA電路只要重新執行下載指令即可

對於多個網路節點的控制程序如下

1第一組 eM_USB模組連結個人電腦的 USB端再以光纖網路依序其他各節點 2連接 USB界面者為模組0從光纖發射端連接出去的模組為1依此類推 3將所有 eM_USB模組開機 4執行下載指令如下 eFPGA progNETbit 模組0必須先下載指定的 FPGA電路 eFPGA xxxxbit 1 再依序下載其他網路模組的 FPGA電路 eFPGA yyyybit 2 eFPGA zzzzbit 最後再重新下載模組0的 FPGA電路 5換句話說模組0必須先執行 progNETbit讓光纖網路接受 FPGA控制後才能透過光纖網路下載至其他節點等全部網路節點下載完畢後再將模組0的 FPGA重新下載讓模組0也可自由執行任意的 FPGA電路

6若要更改某一個網路節點中的 FPGA電路只要重新執行下述指令 eFPGA progNETbit 模組0必須先下載指定的 FPGA電路 eFPGA yyyybit 2 下載指定網路模組的 FPGA電路 eFPGA zzzz bit 最後再重新下載模組0的 FPGA電路 換句話說除非模組0中的 FPGA已經包括光纖網路管理電路否則一定要先在

模組0中下載網路管理電路後才能下載指定網路節點的 FPGA電路

76

光纖網路通訊 FPGA 發展系統

系統配置

光纖網路通訊 FPGA 發展系統的系統配置圖如下

個人電腦(Windows) eM_USB模組

0USB

eM_USB模組1

光纖網路

eM_USB模組2

eM_USB模組N

其中

1基本模組為 eM_USB模組可用 USB界面和個人電腦連線並提供 USB對光纖網路的轉換功能使得個人電腦可以獨立控制光纖網路中的每個網路節點

2eM_USB模組也可以作為光纖網路中的網路節點透過光纖網路而接受個人電腦的

監控 3就個人電腦而言不論是 USB界面直接連結或是以光纖網路間接連結的 eM_USB模組都是可以直接監控的網路節點最多可以同時控制一個 USB節點和 30個網路節點

4對於每一個網路節點個人電腦都可執行 eM_USB模組中 FPGA的電路下載工作並在適當的 FPGA電路配合下可執行 eM_USB模組中 FPGA內部電路的讀寫控制 5透過適當的 FPGA電路設計各網路節點都可透過光纖網路和其他任何網路節點

作同步通訊執行 FPGA內部記憶體的資料交換資料交換頻率可達 1KHz以上

77

網路模組配置

每個網路模組的標準配置圖如下

eM_USB模組光纖網路

USB eM_FPGA卡

eM_DEMO模組

eM_EXP實驗模組

DC電源

其中

1網路模組以 eM_USB模組為主提供基本的 USB界面和光纖網路連線 2eM_USB模組中的 FPGACPLD採用插卡型式可選擇不同的 eM_FPGA卡包括

eM_2V1K卡可選用 Virtex系列的 XC2V250和 XC2V1000 eM_3S1K卡可選用 Spartan3系列的 XC3S400XC3S1000和 XC3S1500 eM_3S50卡可選用 Spartan3系列的 XC3S50XC3S200和 XC3S400 eM_95XL卡可選用 9500XL系列的 XC95144XL和 XC95288XL 3eM_USB模組中的對外連線有兩種一種是 26P接頭用以連接既有的各種實驗模

組另一種是兩組 50P接頭將 FPGA中各接腳引出用以連接專題實驗 4eM_DEMO模組就是插上 50P接頭的教學模組其中包括 LED 數字顯示和 44鍵盤也具備兩組的 ADC和兩組的 DAC接頭提供類比訊號的測試工具

常用的實驗組合包括

1精簡組合包括(eM_USB+eM_FPGA)提供基本的網路節點適用於專題實驗 2標準組合包括(eM_USB+eM_FPGA+eM_DEMO)提供基礎 FPGA設計的教學實驗

3實驗組合包括(eM_USB+eM_FPGA+eM_DEMO+eM_EXP)提供進階的 FPGA實驗可依需求選用不同的實驗模組

78

eM_USB 模組

eM_USB 模組的電路配置圖如下

TxRx

DCPower

USB

JP2

JP3

光纖界面

外加電源

PC連線

JP1

eM_FPGA模組

FT232 CPLD FlashROM

SRAM

10cm

6cm

JP4

其中

1對外的連線接頭包括 DC電源 可選擇單電源(5V)或是多電源(5V+12V-12V)兩種 USB界面 直接連接個人電腦 光纖界面連接光纖網路 2實驗界面包括 JP1負責內部 CPLD的電路下載 JP2JP3兩組 50P的擴張用接頭 JP4 標準 26P接頭用以連接各種實驗模組 3內部的電路配置包括 A以 SO-DIMM接頭連接各種 eM_FPGA卡 B內附 EEPROMFlashROM和 SRAM提供 FPGA作應用測試 C以一顆 FT232BM作為 USB界面解碼而以一顆 CPLD作為光纖網路解碼 D提供各種 eM_FPGA卡的電路下載功能 4內附五顆 LED由上而下依序為 usbLED指示 USB界面的讀寫狀態 tstLED可由 FPGA電路自行定義 stsLED可由 FPGA電路自行定義 RxLED 可由 FPGA電路自行定義 TxLED 可由 FPGA電路自行定義

79

外部接腳定義

外部接頭的接點順序圖示如下

上視圖

JP11 9 JP4

126225

JP31

50249

JP21

50249

而各接頭的接點定義如下

JP1 JP4 JP2 JP3 1+33V 1+12V 2+12V 1 GND 2 GND 1 GND 2 GND 2GND 3 ADC 4 DAC 3POWER 4ALARM 3 +5V 4 +5V 3nc 5 yPB2 6 yPB3 5RxNET 6TxNET 5+12V 6+12V 4TCK 7 yPB1 6 yPB4 7RxUSB 6TxUSB 7-12V 6-12V 5nc 9 yPB0 10yPB5 9RxCAN 10TxCAN 9 ADC 10 DAC 6TDO 11yPB6 12yPB7 11P0D0 12P0D1 11P1D0 12P1D1 7TDI 13yGND 14yPC3 13P0D2 14P0D3 13P1D2 14P1D3 8nc 15yPC2 16yPC1 15P0D4 16P0D5 15P1D4 16P1D5 9TMS 17yPC0 18yPA0 17P0D6 18P0D7 17P1D6 18P1D7 19yPA1 20yPA2 19P0D8 20P0D9 19P1D8 20P1D9 21yPA3 22GND 21P0D10 22P0D11 21P1D10 22P1D11 23GND 24+5V 23P0D12 24P0D13 23P1D12 24P1D13 25+5V 26nc 25P0D14 26P0D15 25P1D14 26P1D15 27P2D0 28P2D1 27PxA0 28PxA1 29P2D2 30P2D3 29PxA2 30PxA3 31P2D4 32P2D5 31PxA4 32PxA5 33P2D6 34P2D7 33PxA6 34PxA7 35P2D8 36P2D9 35PxB0 36PxB1 37P2D10 38P2D11 37PxB2 38PxB3 39P2D12 40P2D13 39PxB4 40PxB5 41P2D14 42P2D15 41PxB6 42PxB7 43ADC0 44ADC1 43PxC0 44PxC1 45ADC2 46ADC3 45PxC2 46PxC3 47ADC4 48ADC5 47PxC4 48PxC5 49DAC0 50DAC1 49PxC6 50PxC7

80

eM_FPGA 模組

在各種 eM_FPGA 模組中FPGA 對外電路的標準配置圖如下

24576MHz

FlashROM

26PSRAM

EEPROM

mD[8]

yPA[4]

FPGACPLD

mA[19]mRDmWRmCSeeCKeeCSeeDIeeDO

光纖界面 RxNETTxNET

USB 界面 RxUSBTxUSBCLK24MPOWERALARM

LED

tstLEDstsLEDRxLEDTxLED

yPB[8]yPC[4]

ADCDAC

ADC[8]

實驗模組

ADC[2]

DAC[2]

xPA[4]

xPB[8]

xPC[4]

基礎實驗

其中

1FPGACPLD可以選擇下述幾種 XC2V250XC2V1000 採用 eM_2V1K模組其中 FPGA為 FG456包裝 XC3S400XC3S1000XC3S1500採用 eM_3S1K模組其中 FPGA為 FG456包裝 XC3S400XC3S1000XC3S1500採用 eM_3S1K模組其中 FPGA為 FG456包裝 XC3S50XC3S200XC3S400 採用 eM_3S50模組其中 FPGA為 TQ144包裝 XC95144XLXC95288XL 採用 eM_95XL模組其中 CPLD為 TQ144包裝 2採用 FG456包裝者可以控制所有的 IO界面 3採用 TQ144包裝者只是不能控制 RAM和 FlashROM而可以控制其他所有的界面 4所有 FPGA模組都可自由選擇由 USB界面或是由光纖界面下載電路但是 CPLD模組只能固定由 USB界面下載電路

5所有 FPGACPLD模組都可透過 26P接頭連接既有的各種實驗模組

81

FPGA 接腳對照表

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

mD0 XD6 mD0 A17 C13 -- -- mD1 XD7 mD1 B17 D12 -- -- mD2 XD8 mD2 C17 D11 -- -- mD3 XD9 mD3 D17 C11 -- -- mD4 XD10 mD4 E17 D10 -- -- mD5 XD11 mD5 E16 C10 -- -- mD6 XD12 mD6 E14 D9 -- -- mD7 XD13 mD7 E13 D7 -- -- mA0 XD14 mA0 D13 C7 -- -- mA1 XD15 mA1 C13 D6 -- -- mA2 XA0 mA2 V5 C3 -- -- mA3 XA1 mA3 U5 C4 -- -- mA4 XA2 mA4 Y2 D3 -- -- mA5 XA3 mA5 Y1 D4 -- -- mA6 XA4 mA6 V4 E3 -- -- mA7 XA5 mA7 V3 E4 -- -- mA8 XA6 mA8 W2 F3 -- -- mA9 XA7 mA9 W1 F4 -- -- mA10 XA8 mA10 T2 G6 -- -- mA11 XA9 mA11 T1 K3 -- -- mA12 XA10 mA12 R4 K10 -- -- mA13 XA11 mA13 R3 L3 -- -- mA14 XA12 mA14 R2 L4 -- -- mRD XRD mRD R1 D5 -- -- mWR XWR mWR P6 C6 -- --

POWER P0A0 POWER B4 B20 P1 P5 ALARM P0A1 ALARM A4 A19 P2 P6 RxNET P0A2 RxNET C4 B19 P4 P7 TxNET P0A3 TxNET C5 A18 P5 P9 RxUSB P0B0 RxUSB B5 A15 P6 P10 TxUSB P0B1 TxUSB A5 B15 P7 P11 RxCAN P0B2 RxCAN D6 A14 P8 P12 RxCAN P0B3 TxCAN C6 B14 P10 P13

CLK24M CLK24M CLK24M E12 B12 P124 P38

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

PWM0H P3A0 P0D0 E6 A8 P21 P23 PWM0L P3A1 P0D1 E5 B8 P23 P24 PWM1H P3A2 P0D2 C2 B6 P24 P25 PWM1L P3A3 P0D3 C1 A5 P25 P26 PWM2H P3A4 P0D4 D2 B5 P26 P27

82

PWM2L P3A5 P0D5 D1 A4 P27 P28 PWMenb P3A6 P0D6 E4 B4 P28 P30 PHT1Z P3A7 P0D7 E3 A3 P30 P31 PHT1A P3B0 P0D8 G2 C1 P31 P32 PHT1B P3B1 P0D9 G1 C2 P32 P33 PHT0A P3B2 P0D10 H5 D1 P33 P34 PHT0B P3B3 P0D11 J6 D2 P35 P35 AMP0 P3B4 P0D12 H4 E1 P36 P39 AMP1 P3B5 P0D13 H3 E2 P40 P40 AMP2 P3B6 P0D14 H2 F2 P41 P41 AMP3 P3B7 P0D15 H1 G1 P44 P43 eeSK P0C3 P1D0 C10 B9 P20 P22 eeCS P0C2 P1D1 D10 A9 P18 P21 eeDI P0C1 P1D2 F10 B10 P17 P20 eeDO P0C0 P1D3 E10 B11 P15 P19 ssCK P0B7 P1D4 E8 A11 P14 P17 ssCS P0B6 P1D5 E7 A12 P13 P16 ssDI P0B5 P1D6 A6 B13 P12 P15 ssDO P0B4 P1D7 B6 A13 P11 P14

ppCLK P3C0 P1D8 K4 G2 P46 P44 ppDIN P3C1 P1D9 K3 K1 P47 P45 TxD P3C2 P1D10 K2 K2 P50 P46 RxD P3C3 P1D11 K1 L1 P51 P48

tstLED P3C4 P1D12 L5 L2 P52 P49 stsLED P3C5 P1D13 L4 M1 P53 P50 RxLED P3C6 P1D14 L3 M2 P55 P51 TxLED P3C7 P1D15 L2 N1 P56 P52

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

xPA0 P2A0 P2D0 AA3 N2 P59 P53 xPA1 P2A1 P2D1 Y4 T1 P60 P54 xPA2 P2A2 P2D2 AA4 T2 P63 P56 xPA3 P2A3 P2D3 AB4 U2 P68 P57 xPC0 P2A4 P2D4 W5 V1 P69 P58 xPC1 P2A5 P2D5 Y5 V2 P70 P59 xPC2 P2A6 P2D6 AA5 W1 P73 P60 xPC3 P2A7 P2D7 AB5 W2 P74 P61

-- P2B0 P2D8 V6 Y1 P76 P64 -- P2B1 P2D9 V7 Y2 P77 P66 -- P2B2 P2D10 W6 AA3 P78 P68

mCS P2B3 P2D11 Y6 AB4 P79 P69 mA15 P2B4 P2D12 V9 AA4 P80 P70 mA16 P2B5 P2D13 V10 AB5 P82 P71 mA17 P2B6 P2D14 W10 AA5 P83 P74 mA18 P2B7 P2D15 Y10 AA6 P84 P75 CS0 P2C0 ADC0 AA10 AB8 P85 P76

83

SDIN0 P2C1 ADC1 AB10 AA8 P86 P77 CS1 P2C2 ADC2 U10 AB9 P87 P78

SDIN1 P2C3 ADC3 U11 AA9 P89 P79 SCLK P2C4 ADC4 V11 AB10 P90 P80 CS2 P2C5 ADC5 W11 AA10 P92 P81

SDOUT P2C6 ADC6 Y11 AB11 P93 P82 LDAC P2C7 ADC7 AA11 AA11 P95 P83

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

xPB0 P1A0 PxA0 M1 M3 P135 P85 xPB1 P1A1 PxA1 M2 M4 P132 P86 yPB2 P1A2 PxA2 M3 N3 P131 P87 yPB3 P1A3 PxA3 M4 N4 P130 P88 yPB1 P1A4 PxA4 M5 T4 P129 P91 yPB4 P1A5 PxA5 M6 T5 P128 P92 yPB0 P1A6 PxA6 N1 U3 P127 P93 yPB5 P1A7 PxA7 N2 U4 P125 P94 yPB6 P1B0 PxB0 U13 V3 P119 P95 yPB7 P1B1 PxB1 V13 V4 P118 P96 xPB2 P1B2 PxB2 W13 W3 P116 P97 xPB3 P1B3 PxB3 Y13 W4 P113 P98 xPB4 P1B4 PxB4 AA13 Y3 P112 P100 xPB5 P1B5 PxB5 AB13 Y4 P96 P101 yPC3 P1B6 PxB6 U12 Y5 P97 P102 yPC2 P1B7 PxB7 V12 W5 P98 P103 yPC1 P1C7 PxC0 AB17 W11 P108 P113 yPC0 P1C6 PxC1 AA17 Y11 P107 P112 yPA0 P1C5 PxC2 Y17 W10 P105 P111 yPA1 P1C4 PxC3 W17 Y10 P104 P110 yPA2 P1C3 PxC4 AB18 W9 P103 P107 yPA3 P1C2 PxC5 AA18 W8 P102 P106 xPB6 P1C1 PxC6 Y18 W6 P100 P105 xPB7 P1C0 PxC7 W18 Y6 P99 P104

84

eM_DEMO 模組

eM_DEMO 模組的電路配置圖如下

eM_USB 模組

數字型 LED

0 1 2 34 5 6 78 9 A BC D E F

燈號型 LED

44 鍵盤

ADC0 ADC1 DAC0 DAC1

LED 選擇KEY 選擇

其中

1eM_DEMO模組的基本功能包括 A將 xPAxPBxPC等 16個 IO訊號引出控制 LED和鍵盤電路 B將 ADDA訊號引出並放大成+-10V的工作範圍 2LED和鍵盤可以選擇三種模式由 LED和 KEY 兩組開關作選擇圖示如下

模式1

0123

模式2 模式3

0 1 2 34 5 6 78 9 A BC D E F

0123

3模式14鍵輸入並搭配 16點的 LED燈號顯示其中 16點 LED分別對映到 xPA[0~3]xPB[0~7]和 xPC[0~3] 4組按鍵分別對映到 xPC[0~3] 4模式24鍵輸入並搭配四個 7段式數字顯示其中 數字顯示由 xPA[0~3]作數字掃瞄而由 xPB[0~7]作 7段式 LED控制 4組按鍵 分別對映到 xPC[0~3] 5模式316鍵輸入並搭配四個 7段式數字顯示其中 數字顯示由 xPA[0~3]作數字掃瞄而由 xPB[0~7]作 7段式 LED控制 16組按鍵由 xPA[0~3]作鍵盤掃瞄而由 xPC[0~3]作鍵盤讀取 6根據VHDL與數位邏輯設計的章節其中 第 1章至 10章的實驗採用模式1而 第 11章實驗採用模式2而 第 12章之後的實驗都採用模式3

85

FPGA UCF 定義

eM_3S1K 模組

NET CLK LOC = B12

NET XAlt0gt LOC = N2

NET XAlt1gt LOC = T1

NET XAlt2gt LOC = T2

NET XAlt3gt LOC = U2

NET XBlt0gt LOC = M3

NET XBlt1gt LOC = M4

NET XBlt2gt LOC = W3

NET XBlt3gt LOC = W4

NET XBlt4gt LOC = Y3

NET XBlt5gt LOC = Y4

NET XBlt6gt LOC = W6

NET XBlt7gt LOC = Y6

NET XClt0gt LOC = V1

NET XClt1gt LOC = V2

NET XClt2gt LOC = W1

NET XClt3gt LOC = W2

NET YAlt0gt LOC = W10

JP4 接頭

NET YAlt1gt LOC = Y10

NET YAlt2gt LOC = W9

NET YAlt3gt LOC = W8

NET YBlt0gt LOC = U3

NET YBlt1gt LOC = T4

NET YBlt2gt LOC = N3

NET YBlt3gt LOC = N4

NET YBlt4gt LOC = T5

NET YBlt5gt LOC = U4

NET YBlt6gt LOC = V3

NET YBlt7gt LOC = V4

NET YClt0gt LOC = Y11

NET YClt1gt LOC = W11

NET YClt2gt LOC = W5

NET YClt3gt LOC = Y5

在光碟片中 RFFPGAVHDLDEMOBIT3S1K 裡有 VHDL 與數位邏輯設計書本範例原始檔與合成檔

86

eM_3S50 模組

NET CLK LOC = P124

NET XAlt0gt LOC = P59

NET XAlt1gt LOC = P60

NET XAlt2gt LOC = P63

NET XAlt3gt LOC = P68

NET XBlt0gt LOC = P135

NET XBlt1gt LOC = P132

NET XBlt2gt LOC = P116

NET XBlt3gt LOC = P113

NET XBlt4gt LOC = P112

NET XBlt5gt LOC = P96

NET XBlt6gt LOC = P100

NET XBlt7gt LOC = P99

NET XClt0gt LOC = P69

NET XClt1gt LOC = P70

NET XClt2gt LOC = P73

NET XClt3gt LOC = P74

NET YAlt0gt LOC = P105

JP4 接頭

NET YAlt1gt LOC = P104

NET YAlt2gt LOC = P103

NET YAlt3gt LOC = P102

NET YBlt0gt LOC = P127

NET YBlt1gt LOC = P129

NET YBlt2gt LOC = P131

NET YBlt3gt LOC = P130

NET YBlt4gt LOC = P128

NET YBlt5gt LOC = P125

NET YBlt6gt LOC = P119

NET YBlt7gt LOC = P118

NET YClt0gt LOC = P107

NET YClt1gt LOC = P108

NET YClt2gt LOC = P98

NET YClt3gt LOC = P97

在光碟片中 RFFPGAVHDLDEMOBIT3S200 裡有VHDL與數位邏輯設計書本範例原始檔與合成檔

87

eM_95XL 模組

NET CLK LOC = SPIN38

NET XAlt0gt LOC = SPIN53

NET XAlt1gt LOC = SPIN54

NET XAlt2gt LOC = SPIN56

NET XAlt3gt LOC = SPIN57

NET XBlt0gt LOC = SPIN85

NET XBlt1gt LOC = SPIN86

NET XBlt2gt LOC = SPIN97

NET XBlt3gt LOC = SPIN98

NET XBlt4gt LOC = SPIN100

NET XBlt5gt LOC = SPIN101

NET XBlt6gt LOC = SPIN105

NET XBlt7gt LOC = SPIN104

NET XClt0gt LOC = SPIN58

NET XClt1gt LOC = SPIN59

NET XClt2gt LOC = SPIN60

NET XClt3gt LOC = SPIN61

NET YAlt0gt LOC = SPIN111

JP4 接頭

NET YAlt1gt LOC = SPIN110

NET YAlt2gt LOC = SPIN107

NET YAlt3gt LOC = SPIN106

NET YBlt0gt LOC = SPIN93

NET YBlt1gt LOC = SPIN91

NET YBlt2gt LOC = SPIN87

NET YBlt3gt LOC = SPIN88

NET YBlt4gt LOC = SPIN92

NET YBlt5gt LOC = SPIN94

NET YBlt6gt LOC = SPIN95

NET YBlt7gt LOC = SPIN96

NET YClt0gt LOC = SPIN112

NET YClt1gt LOC = SPIN113

NET YClt2gt LOC = SPIN103

NET YClt3gt LOC = SPIN102

在光碟片中 RFFPGAVHDLDEMOSVF95288XL 裡有VHDL與數位邏輯設計書本範例原始檔與合成

檔案

88

eM_FPGA 模組

NET CLK LOC = E12

NET XAlt0gt LOC = AA3

NET XAlt1gt LOC = Y4

NET XAlt2gt LOC = AA4

NET XAlt3gt LOC = AB4

NET XBlt0gt LOC = M1

NET XBlt1gt LOC = M2

NET XBlt2gt LOC = W13

NET XBlt3gt LOC = Y13

NET XBlt4gt LOC = AA13

NET XBlt5gt LOC = AB13

NET XBlt6gt LOC = Y18

NET XBlt7gt LOC = W18

NET XClt0gt LOC = W5

NET XClt1gt LOC = Y5

NET XClt2gt LOC = AA5

NET XClt3gt LOC = AB5

NET YAlt0gt LOC = Y17

JP4 接頭

NET YAlt1gt LOC = W17

NET YAlt2gt LOC = AB18

NET YAlt3gt LOC = AA18

NET YBlt0gt LOC = N1

NET YBlt1gt LOC = M5

NET YBlt2gt LOC = M3

NET YBlt3gt LOC = M4

NET YBlt4gt LOC = M6

NET YBlt5gt LOC = N2

NET YBlt6gt LOC = U13

NET YBlt7gt LOC = V13

NET YClt0gt LOC = AA17

NET YClt1gt LOC = AB17

NET YClt2gt LOC = V12

NET YClt3gt LOC = U12

在光碟片中 RFFPGAVHDLDEMOBIT2V250 裡有VHDL與數位邏輯設計書本範例原始檔與合成檔

89

Page 36: RFFPGA 直流馬達實驗手冊juniortek.com.tw/program/manual/RF-DC-mal.pdf · em_demo模組 em_dcm 直流伺服馬達 dc電源 rffpga 系統的直流馬達實驗規劃 其中包括:

page 2 畫面設計 page 3 畫面設計

36

實測響應圖

訊 號 說 明 訊 號 說 明 ch1 方波產生器訊號 ch3 一階濾波器輸出信號 ch2 馬達角速度訊號 ch4 馬達角位置訊號

直流馬達之開迴路電壓控制響應圖

37

以邏輯分析功能觀測直流馬達之光電盤輸入與 PWM輸出信號

38

62 實驗 2-閉迴路的速度控制 實驗說明為了觀測閉迴路的速度控制響應建立下面的測試方塊圖

加入 PD控制後系統閉迴路的轉移函數經適度的簡化仍能約略以一階系統

處理方塊圖如下

sτ+1

u km ωm

其中

u 送給控制器的速度命令

ωm馬達的轉動速度可由處理 photo encoder 信號所得的位置微分而得

km一階系統的穩態增益 τ一階系統的時間常數即步階響應中的上升時間

方塊圖中的模組功能說明如下

1用 fg1 產生測試用的方波速度命令

2將方波速度命令和速度回授訊號送到 PD 控制器方塊中產生電壓控制訊號再透

過 io2 模組將訊號送出給伺服介面

3用 ft1 建立對照用的一階系統可用 IIR1濾波器方塊產生

4將方波命令產生速度命令再觀測 PHT(io1)上的速度值 spd

5調整 IIR1濾波器的參數使得兩組波形完全相符這時 IIR1濾波器就是閉迴路

速度控制的特性其中 km 為增益而τ為上升時間(單位為 sec)

6增益 km 可從示波器中作簡單計算而上升時間(τ=40964000dtka)

7 Led四位數字七段顯示模組顯示波形信號資料

39

對應之 plc檔程式說明(exp_speedplc) echo off 畫面顯示開始

run dsp 0 選擇 DSP1

run stop run reset 既有程式停止

run testDCMmem 下載指定程式

das 1 ampfg1out 0 1024 PWM 波形 Volt 設定 DAS 頻道1

das 2 ampft1lp 0 1024 馬達模擬 Volt 設定 DAS 頻道2

das 3 ampio1spd 0 1024 馬達速度 Volt 設定 DAS 頻道3

das 4 ampio1ang 0 1024 馬達角度 Volt 設定 DAS 頻道4

plot select 0 設定示波器頁數

plot xunit 100000 0 設定示波器 X軸

plot yunit 1 50 -300 設定示波器 Y1 軸

plot yunit 2 50 -100 設定示波器 Y2 軸

plot yunit 3 50 100 設定示波器 Y3 軸

plot yunit 4 50000 300 設定示波器 Y4 軸

plot trigger 1 0 1 10 設定示波器觸發

plot scope 9 1 2 3 4 設定示波器顯示

module io2 設定 io2 模組

s cmd ampcn2out

module fg1 設定 fg1 模組

s kAmp 50 s kFrq 150

module cn2 設定 cn1 模組

s cmd ampfg1out s fdk ampio1spd s kp 0x4000

module ft1 設定 ft1 模組

s u ampfg1out s dt 2 s ka 320

module io3 設定 io3 模組

s led ampfg1out

module 回復預設模組

run 1khz 設定抽樣頻率為 4KHz

run start DSP 開始執行

das stop pause 1 DAS 啟動 das start DAS 啟動

echo on 回復正常訊息顯示

CAI操控設計畫面規劃如下(EXP_speedCAI)

40

page 1 畫面設計 page 2 與 page 3 畫面設計與實驗一 page 2 與 page 3相同畫面 page 4 畫面設計

41

方塊的參數設定 使用者可視情況調整一階濾波器的 ka和 dt值使得 ch2和 ch3 兩組波形完全相符

以求得此一閉迴路系統近似的一階轉移函數或調整 PD控制器中的 kp和 kp值以調整系統之響應 實測響應圖

訊 號 說 明 訊 號 說 明 ch1 方波產生器產生之速度命令 ch3 一階濾波器輸出信號 ch2 馬達角速度訊號 ch4 馬達角位置訊號

42

直流馬達之閉迴路速度控制響應圖

43

63 實驗 3-閉迴路的位置控制 實驗說明為了觀測閉迴路的位置控制響應將直流馬達的回授改為位置訊號

建立下面的測試方塊圖 方塊圖中的模組功能說明如下

1用 fg1產生測試用的方波位置命令 2將方波位置命令和位置回授訊號送到 PD控制器方塊中產生電壓控制訊號再透過 io2模組將訊號送出到伺服介面驅動馬達轉動

對應之 plc檔程式說明(exp_angleplc) echo off 畫面顯示開始

run dsp 0 選擇 DSP1

run stop run reset 既有程式停止

run testDCMmem 下載指定程式

das 1 ampfg1out 0 1024 PWM 波形 Volt 設定 DAS 頻道1

das 2 ampft1lp 0 1024 馬達模擬 Volt 設定 DAS 頻道2

das 3 ampio1spd 0 1024 馬達速度 Volt 設定 DAS 頻道3

das 4 ampio1ang 0 1024 馬達角度 Volt 設定 DAS 頻道4

plot select 0 設定示波器頁數

plot xunit 100000 0 設定示波器 X軸

plot yunit 1 1000 -300 設定示波器 Y1 軸

plot yunit 2 1000 -100 設定示波器 Y2 軸

plot yunit 3 20 100 設定示波器 Y3 軸

plot yunit 4 1000 300 設定示波器 Y4 軸

plot trigger 1 0 1 10 設定示波器觸發

44

plot scope 9 1 2 3 4 設定示波器顯示

module io2 設定 io2 模組

s cmd ampcn2out

module fg1 設定 fg1 模組

s kAmp 1000 s kFrq 75

module cn2 設定 cn1 模組

s cmd ampfg1out s fdk ampio1ang s kp 0x300 s kd 0x4000

module ft1 設定 ft1 模組

s u ampfg1out s dt 2 s ka 320

module io3 設定 io3 模組

s led ampfg1out

module 回復預設模組

run 1khz 設定抽樣頻率為 4KHz

run start DSP 開始執行

das stop pause 1 DAS 啟動 das start DAS 啟動

echo on 回復正常訊息顯示

CAI操控設計畫面規劃如下(EXP_angleCAI) page 1 畫面設計

45

page 2 與 page 3 畫面設計與實驗一 page 2 與 page 3相同畫面 page 4 畫面設計與實驗二 page 4 畫面 方塊的參數設定 延續上一實驗的說明使用者可以調整 PD控制器中的 kp和 kd值以調整系統之

響應 實測響應圖

訊 號 說 明 訊 號 說 明 ch1 方波產生器產生之位置命令 ch3 馬達角速度訊號 ch2 馬達角位置 ch4 Pd控制器輸出之電壓訊號

46

直流馬達之閉迴路位置控制響應圖

47

64 實驗 4-加減速的位置控制 實驗說明為避免方波命令的過於嚴苛在方波命令的輸出加入一加減速控制功

能方塊以減緩命令變化的幅度增加馬達運動的平順建立的測試方塊圖如下

方塊圖中的模組功能說明如下

1用 fg1產生測試用的方波位置命令 2將方波位置命令送到加減速控制方塊處理後產生新的位置命令再將新的位置命

令與位置回授訊號送到 PD控制器方塊中產生電壓控制訊號最後透過 io2模組將訊號送出到伺服介面驅動馬達轉動

對應之 plc檔程式說明(exp_accplc) echo off 畫面顯示開始

run dsp 0 選擇 DSP1

run stop run reset 既有程式停止

run testDCMmem 下載指定程式

das 1 ampfg1out 0 1024 PWM 波形 Volt 設定 DAS 頻道1

das 2 ampcn1out 0 1024 加速控制 Volt 設定 DAS 頻道2

das 3 ampio1spd 0 1024 馬達速度 Volt 設定 DAS 頻道3

das 4 ampio1ang 0 1024 馬達角度 Volt 設定 DAS 頻道4

plot select 0 設定示波器頁數

plot xunit 100000 0 設定示波器 X軸

plot yunit 1 2000 -300 設定示波器 Y1 軸

plot yunit 2 2000 -100 設定示波器 Y2 軸

plot yunit 3 50 100 設定示波器 Y3 軸

plot yunit 4 2000 300 設定示波器 Y4 軸

48

plot trigger 1 0 1 10 設定示波器觸發

plot scope 9 1 2 3 4 設定示波器顯示

module io2 設定 io2 模組

s cmd ampcn2out

module fg1 設定 fg1 模組

s kAmp 2000 s kFrq 150

module cn1 設定 cn1 模組

s cmd ampfg1out

module cn2 設定 cn2 模組

s cmd ampcn1out s fdk ampio1ang s kp 0x300 s kd 0x4000

module ft1 設定 ft1 模組

s u ampfg1out s dt 2 s ka 320

module io3 設定 io3 模組

s led ampfg1out

module 回復預設模組

run 1khz 設定抽樣頻率為 4KHz

run start DSP 開始執行

das stop pause 1 DAS 啟動 das start DAS 啟動

echo on 回復正常訊息顯示

CAI操控設計畫面規劃如下(EXP_accCAI) page 1 畫面設計

49

page 2 畫面設計與實驗一 page 2相同畫面 page 3 畫面設計與實驗二 page 4相同畫面

參數設定參考之前各實驗的說明可線上機動性的調整 PD控制器中的 kp和 kd值以調整系統之響應 實測響應圖

訊 號 說 明 訊 號 說 明 ch1 方波產生器產生之位置命令 ch3 馬達角位置 ch2 加減速模組輸出之位置命令 ch4 馬達角速度訊號

50

圖一 直流馬達經加減速控制後之閉迴路控制響應圖

51

65 實驗 5-正弦波的位置控制 實驗說明在本實驗中改變命令的波形由方波改變為正弦波並建立如下的測

試方塊圖與上一實驗相比較僅更改命令的波形產生方塊 方塊圖中的模組功能說明如下 1用 fg2產生測試用的弦波位置命令 2將弦波位置命令送到加減速控制方塊處理後產生新的位置命令再與 io1 讀入的位

置回授訊號送到 PD 控制器方塊中產生電壓控制訊號再透過 io2 模組將訊號送出到伺服介面驅動馬達轉動

對應之 plc檔程式說明(exp_sinplc) echo off 畫面顯示開始

run dsp 0 選擇 DSP1

run stop run reset 既有程式停止

run testDCMmem 下載指定程式

das 1 ampfg2out 0 1024 SIN 波形 Volt 設定 DAS 頻道1

das 2 ampcn1out 0 1024 加速控制 Volt 設定 DAS 頻道2

das 3 ampio1spd 0 1024 馬達速度 Volt 設定 DAS 頻道3

das 4 ampio1ang 0 1024 馬達角度 Volt 設定 DAS 頻道4

plot select 0 設定示波器頁數

plot xunit 100000 0 設定示波器 X軸

plot yunit 1 2000 -300 設定示波器 Y1 軸

plot yunit 2 2000 -100 設定示波器 Y2 軸

plot yunit 3 50 100 設定示波器 Y3 軸

plot yunit 4 2000 300 設定示波器 Y4 軸

plot trigger 1 0 1 10 設定示波器觸發

52

plot scope 9 1 2 3 4 設定示波器顯示

module io2 設定 io2 模組

s cmd ampcn2out

module fg2 設定 fg1 模組

s kAmp 2000 s kFrq 100

module cn1 設定 cn1 模組

s cmd ampfg2out

module cn2 設定 cn2 模組

s cmd ampcn1out s fdk ampio1ang s kp 0x300 s kd 0x4000

module ft1 設定 ft1 模組

s u ampfg2out s dt 2 s ka 320

module io3 設定 io3 模組

s led ampfg2out

module 回復預設模組

run 1khz 設定抽樣頻率為 4KHz

run start DSP 開始執行

das stop pause 1 DAS 啟動 das start DAS 啟動

echo on 回復正常訊息顯示

CAI操控設計畫面規劃如下(EXP_sinCAI) page 1 畫面設計

53

page 2 畫面設計 page 3 畫面設計與實驗二 page 4相同畫面

方塊的參數設定可調整 PD控制器中的 kp和 kd值以調整系統之響應 實測響應圖

訊 號 說 明 訊 號 說 明 ch1 弦波產生器產生之位置命令 ch3 馬達角位置訊號 ch2 加減速模組輸出之位置命令 ch4 馬達角速度訊號

54

直流馬達之閉迴路弦波加減速位置控制響應圖

55

7組合語言說明

本節將針對 DC馬達伺服控制實驗專用的程式模組進行功能與程式碼的說明其

有關於波形產生器與資料擷取模組等說明如下

SIN_waveasm 正弦波產生器 PWM_waveasm 方波產生器 IIR1_filterasm 一階濾波器 DAS4asm 資料蒐集模組

弦波產生器

此模組會產生週期性的正弦波方塊圖如下

outfrq

kBiasbias

ampkAmp

kFrqth

kThf=1TB

θ

A

其中

1正弦波有四個參數振幅(A)頻率(F)相位(θ)和偏移(B)其公式為 out = A sin(2πF t +θ) + B 2對於單純的正弦波產生器所對映的參數包括 kAmp 振幅值 kFrq 頻率值kFrq=655368000Hz其中 Hz的範圍為 0~4000例如 1000Hz =gt frq=8192 100Hz =gt frq=819 10Hz =gt frq=82 1Hz =gt frq=8 kTh 相角值0~255代表 0~360的相位當 th=0 時為正弦波 th=64 時為餘弦波 th=128時為反相波依此類推 kBias偏移值 3對於可調變的正弦波產生器其對映的輸入點為 amp 控制振幅的輸入點可產生調幅(AM)波形 frq 控制頻率的輸入點可產生調頻(FM)波形 th 控制相位的輸入點可產生調相(PM)波形 bias控制偏移的輸入點可產生雙頻混波(相加)波形 4若不使用調變功能時各個輸入點時的預設值為 amp 指向 kAmp 的位址 frq 指向 kFrq 的位址

56

th 指向 kTh 的位址 bias指向 kBias的位址

模組程式範例SIN_WAVEasm

local amp R0 IP kAmp 輸入點sin波的振幅 local frq R1 IP kFrq 輸入點sin波的頻率 local th R2 IP kTh 輸入點sin波的相角 local bias R3 IP kBias 輸入點sin波的中心偏移 local out R4 OP 輸出點sin波輸出 local tab R5 TP 表格指標指向 sin[256]的表格 local ang R6 內部變數相位角65536=360deg local kAmp R7 1000 參數振幅值 local kFrq R8 1000 參數頻率值=655368000Hz local kTh R9 0 參數相角值360deg=256 local kBias R10 0 參數偏移值 data 11 模組變數區長度及初值 initial 啟動程序 WR ang0 WR out0 ang=out=0 RET timer 即時控制程序(8KHz) RD ang ADD (frq) WR ang ang+=frq SFR 8 ADD (th) AND 255 ACC=sin(ang256+th) ADD tab WRH RDM table-look-up MUL (amp) SFR 12 ADD (bias) WR out out=ACCamp4096+bias RET table tab 256 sin[256]表格區10=4096 0 101 201 301 401 501 601 700 00~070deg 799 897 995 1092 1189 1285 1380 1474 08~0F 1567 1660 1751 1842 1931 2019 2106 2191 10~17 2276 2359 2440 2520 2598 2675 2751 2824 18~1F 2896 2967 3035 3102 3166 3229 3290 3349 20~27 3406 3461 3513 3564 3612 3659 3703 3745 28~2F 3784 3822 3857 3889 3920 3948 3973 3996 30~37 4017 4036 4052 4065 4076 4085 4091 4095 38~3F 4096 4095 4091 4085 4076 4065 4052 4036 40~4790deg 4017 3996 3973 3948 3920 3889 3857 3822 48~4F 3784 3745 3703 3659 3612 3564 3513 3461 50~57 3406 3349 3290 3229 3166 3102 3035 2967 58~5F

57

2896 2824 2751 2675 2598 2520 2440 2359 60~67 2276 2191 2106 2019 1931 1842 1751 1660 68~6F 1567 1474 1380 1285 1189 1092 995 897 70~77 799 700 601 501 401 301 201 101 78~7F 0 65435 65335 65235 65135 65035 64935 64836 80~87180deg 64737 64639 64541 64444 64347 64251 64156 64062 88~8F 63969 63876 63785 63694 63605 63517 63430 63345 90~97 63260 63177 63096 63016 62938 62861 62785 62712 98~9F 62640 62569 62501 62434 62370 62307 62246 62187 A0~A7 62130 62075 62023 61972 61924 61877 61833 61791 A8~A8 61752 61714 61679 61647 61616 61588 61563 61540 B0~B7 61519 61500 61484 61471 61460 61451 61445 61441 B8~BF 61440 61441 61445 61451 61460 61471 61484 61500 C0~C7270deg 61519 61540 61563 61588 61616 61647 61679 61714 C8~CF 61752 61791 61833 61877 61924 61972 62023 62075 D0~D7 62130 62187 62246 62307 62370 62434 62501 62569 D8~DF 62640 62712 62785 62861 62938 63016 63096 63177 E0~E7 63260 63345 63430 63517 63605 63694 63785 63876 E8~EF 63969 64062 64156 64251 64347 64444 64541 64639 F0~F7 64737 64836 64935 65035 65135 65235 65335 65435 F8~FF

就程式結構而言說明如下

timer 即時控制程序(8KHz) RD ang ADD (frq) WR ang ang+=frq SFR 8 ADD (th) AND 255 ACC=sin(ang256+th) ADD tab WRH RDM table-look-up MUL (amp) SFR 12 ADD (bias) WR out out=ACCamp4096+bias RET

1基本上我們以查表法計算 sin()其輸入θ的範圍為 0~255對映到 0~360deg其輸出 sin(θ)的範圍為+-4096對映到+-10的範圍

2建立一個內部變數 ang其範圍為 0~65535對映到 0~360的相位角 3每個timer程序都執行 ang+=frq的動作更新目前的相位角接著依照 ang的相位角查表得到 sin(ang256+th)值

4由於表格長度為 256-word所以必須將 ang256才能得到正確的對映關係而 th範圍為 0~255所以不需要像 ang一般的做額外處理

5sin()的範圍為(+1-1)而在表格中以(+4096~-4096)的型式記錄相當於 10=4096所以執行 Asin()時還要用 SFR12指令做4096的動作才能正確的取得輸出值

58

6就頻率輸入 frq而言其計算原則是將θ=ωt轉化成θ=Σ(ωdt)因為抽樣頻率

為 8KHz所以 dt=18000而得到 frq=655368000Hz公式其中 Hz為真正的頻率在 8KHz的抽樣頻率下其範圍為 0~4000

鋸齒波產生器

此模組會產生週期性的鋸齒波方塊圖如下

outfrq

kBiasbias

ampkAmp

kFrqth

kThf=1TB

θ

A

其中

1鋸齒波也有四個參數振幅(A)頻率(F)相位(θ)和偏移(B)和正弦波的定義完全一致唯一的差異是其輸出為鋸齒波而非正弦波

2基本波形是從週期開始時為 0一直遞增到週期結束時到達最高點然後立刻回歸

到 0重新開始 3以程式結構而論鋸齒波程式幾乎就是正弦波的相位計算部分只差沒有正弦波的

查表處理而已

模組程式範例SAW_WAVEasm

local amp R0 IP kAmp 輸入點sin波的振幅 local frq R1 IP kFrq 輸入點sin波的頻率 local th R2 IP kTh 輸入點sin波的相角 local bias R3 IP kBias 輸入點sin波的中心偏移 local out R4 OP 輸出點sin波輸出 local ang R5 內部變數相位角65536=360deg local kAmp R6 1000 參數振幅值 local kFrq R7 1000 參數頻率值=655368000Hz local kTh R8 0 參數相角值360deg=256 local kBias R9 0 參數偏移值 data 11 模組變數區長度及初值 initial 啟動程序 WR ang0 WR out0 ang=out=0 RET timer 即時控制程序(8KHz) RD ang ADD (frq) WR ang ang+=frq SFR 8 ADD (th) AND 255 ACC=(ang256+th)amp0x00ff MUL (amp) SFR 8 ADD (bias) WR out out=ACCamp256+bias

59

RET

脈衝波產生器

outfrq

kBiasbias

ampkAmp

kFrqth

kThf=1TB

θ

A

pwm

kDutyduty

此模組會產生週期性的脈衝波方塊圖如下

其中

1脈衝波有五個參數其中振幅(A)頻率(F)相位(θ)和偏移(B)四個參數和正弦波

定義完全一樣另外再增加一個負載率(D) 2基本波形是從週期開始時為 1隔段時間後換為 0然後持續到週期結束再重新開始其中 1所佔有的比例就是負載率當 D=0時為 0而 D=255時為 100

3和其他參數類似負載率(D)以 duty為其輸入點而以 kDuty為其參數值

模組程式範例PLS_WAVEasm

local amp R0 IP kAmp 輸入點脈衝波的振幅 local frq R1 IP kFrq 輸入點脈衝波的頻率 local th R2 IP kTh 輸入點脈衝波的相角 local bias R3 IP kBias 輸入點脈衝波的中心偏移 local duty R4 IP kDuty 輸入點脈衝波的負載率 local out R5 OP 輸出點脈衝波輸出 local ang R6 內部變數相位角65536=360deg local kAmp R7 1000 參數振幅值 local kFrq R8 1000 參數頻率值=655368000Hz local kTh R9 0 參數相角值360deg=256 local kBias R10 0 參數偏移值 local kDuty R11 128 參數負載率100 =256 data 12 模組變數區長度及初值 initial 啟動程序 WR ang0 WR out0 ang=out=0 RET timer 即時控制程序(8KHz)

60

RD ang ADD (frq) WR ang ang+=frq SFR 8 ADD (th) AND 255 ACC=(ang256+th)amp0x00ff SUB (duty) RD (amp) JLT t1 RD 0 ACC=(amp0) t1 ADD (bias) WR out out=ACC+bias RET

IIR 一階濾波器

此模組執行一階的 IIR濾波器方塊圖如下

kau x

Z-1

+

+

-

+低通濾波器

高通濾波器dx lp

hp

濾波器參數的計算公式如下

1假設濾波器的頻寬為 hz則 ωn=hz628 2若系統頻率為 8KHz則抽樣週期 dT為 dT=dt8000 其中 dt為模組參數 3則濾波器參數為 ka=ωndT4096或是 =hzdt62880004096即 =hzdt32 4當 dt決定後所允許的訊號頻寬為(4000dt)換句話說訊號頻寬會因為 dt增加而下降

為了方便實驗的運用下面列出常用的參數對照表

濾波頻寬

(Hz)

10 20 50 100 200 500 1000 2000

訊號頻寬

(Hz)

400 800 2000 4000 4000 4000 4000 4000

模組參數 dt 10 5 2 1 1 1 1 1

模組參數 ka 320 320 320 320 640 1600 3200 6400

表格的運用方式如下

1首先決定濾波頻寬 2接著查表找出對映的參數 dt和 ka 3再查表得到對映的訊號頻寬以決定是否需要串接前級濾波器

61

模組程式範例IIR1_FILTERasm

local u R0 IP 輸入點濾波器輸入 local lp R1 OP 輸出點低通濾波器輸出 local hp R2 OP 輸出點高通濾波器輸出 local dt R3 1 參數抽樣週期 local ka R4 4096 參數增益 ka10=4096 local prd R5 內部變數抽樣週期用 data 6 模組變數區長度 initial 開機啟動程序 WR lp0 WR hp0 WR prd1 RET lp=hp=0prd=1 timer 即時控制程序 SUB prd1 JNZ b9 if (--prdgt0) return RD dt WR prd prd=dt RD (u) SUB lp WR hp hp=u-lp MUL ka SFR 12 ADD lp WR lp lp+=(hpka4096) b9 RET

資料蒐集模組

資料蒐集模組是一個非常特殊的模組專門配合 eTTY 程式中的示波器使用

模組程式範例DAS4asm

local cmd R0 0 紀錄命令0=停止1=前置記錄2=正觸發4=負觸發6=觸發記錄 local dt R1 1 抽樣週期每 dT抽樣一次 local tab R2 TP DAS表格啟始位址 local cnt R3 0 目前記錄點(0~255) local ch1 R4 0 定義頻道1的變數位址 local ch2 R5 0 定義頻道2的變數位址 local ch3 R6 0 定義頻道3的變數位址 local ch4 R7 0 定義頻道4的變數位址 local trg R8 0 定義觸發頻道的變數位址 local th R9 0 觸發準位 local tail R10 0 觸發後的抽樣個數 local buf R11 1 抽樣計數(1~dt) local pnt R12 表格位址計算pnt=tab+cnt4 local len R13 表格長度計算(0~256) data 14 定義模組變數區的長度 table tab 1024 定義表格的長度 initial 啟動程序 WR cmd0 RET cmd=0 timer 控制程序

62

ADD cmd0 JZ t9 if (cmd==0) return SUB buf1 JNZ t9 if (--buf)gt0) return RD dt WR buf dt=buf RD cnt ADD 1 AND 0xff WR cnt cnt=(cnt+1)amp0xff SFL 2 ADD tab WR pnt pnt=tab+cnt4 RD (ch1) WR (pnt) ADD pnt1 pnt++=ch1 RD (ch2) WR (pnt) ADD pnt1 pnt++=ch2 RD (ch3) WR (pnt) ADD pnt1 pnt++=ch3 RD (ch4) WR (pnt) pnt =ch4 RD cmd SUB 1 JZ t9 SUB 1 JZ t2 SUB 1 JZ t3 SUB 1 JZ t4 SUB 1 JZ t5 SUB 1 JZ t6 JR t7 t2 RD (trg) SUB th JGE t9 ADD cmd1 JR t9 wait trgltth t3 RD (trg) SUB th JLE t9 JR t6 wait trggtth t4 RD (trg) SUB th JLE t9 ADD cmd1 JR t9 wait trggtth t5 RD (trg) SUB th JGE t9 JR t6 wait trgltth t6 WR len0 WR cmd7 len=0cmd=7 t7 ADD len1 SUB tail JLT t9 WR cmd0 if ((++len)gt=0x80) cmd=0 t9 RET

與 DC 馬達控制相關的程式模組有以下 4個程式模組說明如下

(1)加減速控制模組 ACC_controlasm (2)光電盤輸入模組 POS_inputasm (3)PWM輸出模組 PWM_outputasm (4)PD控制模組 PD_controlasm

71加減速控制模組 此程式模組主要功能在於執行位置控制的加減速命令修正其數學模式採用 Lynn

濾波器的架構參見下圖

cmd

2

+

old Z -1

-

Z -1

Z -1

Z-1

Z-1x0 x1 x8 x9 x16

+ -

++

2

Z-1

Z-1 y1 y2

+

-

y0

+ +

sumZ-1

+164

12

out

dif

+

63

加減速控制模組方塊圖

其中

1Lynn 濾波器的階數固定成八階也就是 m=8其公式為 H(z) = (1-2Z-m+Z-2m)(1-2Z-1+Z-2)m2

2因為m=8所以m2=64因此最後計算低通濾波的部份時要先做除 64的運算 3因為低通濾波(lp)和 y0之間有 64倍的差異代表 y0y1y2的變化範圍比濾波器輸

入值要擴大許多例如輸入值在+-1000變化時y0y1y2很可能會在+-64000之間變化這範圍已經超出整數處理的範圍很可能會造成錯誤的計算結果

4所以在實驗時輸入值的變化範圍必須控制在+-500之間以保證計算的正確性 5對於 Lynn 濾波器當 m=8時其濾波器的頻寬固定為 1 kHzmdt也就是 dt=1時頻寬為 125 Hz dt=2時頻寬為 625Hz依此類推 6對於 Lynn 濾波器其濾波器的延遲固定為 m個抽樣週期因此設計 hp = x8 - lp 即可得到高通濾波器的對應結果 7其中乘 2和除 64的運算以移位運算取代所以整個程式中並無任何乘法運算 8Lynn 濾波器本身並不是穩定濾波器所以在程式啟動時必須確實的將所有狀態

(x0~x16)歸零否則會產生不穩定的狀態輸出

因為 Lynn濾波器中所有參數固定所以除了抽樣週期 dt 之外並無任何可調參數

抽樣週期 dt 可以控制頻寬dt 越大則濾波器頻寬越低

將步階命令值的輸出送入 Lynn 濾波器中經由低通濾波器的效應可以減緩命

令的變化程度達到加減速控制的目的以下為使用 Lynn 濾波器型式實現加減速控

制的組合語言程式列印 如欲更進一步瞭解 Lynn 濾波器與 FIR 數位濾波器之間的關係可以參考通訊實驗

四數位濾波器設計(FIR)中之說明

ACC_controlasm程式列印 local cmd R0 IP 輸入點位置命令

local out R1 OP 輸出點加減速處理後的位置命令

local dif R2 OP 輸出點位置微分命令

local axis R3 0 馬達編號0=X1=Y2=Z3=C

local old R4 內部變數微分計算用

local sumL R5 內部變數積分計算用

local sumH R6 內部變數積分計算用

local y0 R7 內部變數y(0~2)

local y1 R8 local y2 R9

local x0 R10 內部變數x(0~16)

local x1 R11 local x2 R12 local x3 R13 local x4 R14

local x5 R15 local x6 R16 local x7 R17 local x8 R18

local x9 R19 local x10 R20 local x11 R21 local x12 R22

local x13 R23 local x14 R24 local x15 R25 local x16 R26

64

data 27 模組變數區長度

initial 開機啟動程序

WR dif0 RD (cmd) WR out WR old dif=0 out=old=cmd

sumHL=cmd64

SFL 6 WR sumL RD out SFR 10 SGN 5 WR sumH

RPT 17 WR x00 RPT 3 WR y00 RET x[0~16]=0y[0~2]=0

timer 即時控制程序

RD (cmd) SUBX old WR x0 x0=cmd-old old=cmd

SUB x81 ADD x16 ADD y11 SUB y2 WR y0 y0=x0-2x8+x16+2y1-y2

SGN ADD sumL WR sumL RDH ADC sumH WR sumH sumHL+=y0

WRH RD sumL SFR 6 WR out out=sumHL64

RD y0 SGN SFR WR dif dif=y032mm

RD x0 RPT 16 RDX x1 x[i]=x[i-1] i=1~16

RD y0 RDX y1 WR y2 y[i]=y[i-1] i=1~2

b9 RET

72光電盤輸入模組

DC馬達的位置由光電盤量測之預設儲存於 0xac與 0xbe二個輸入埠位址中其中位址 0xac記錄 X軸馬達的位置位址 0xbe記錄 Y軸馬達的位置由於本實驗的DC馬達接在 Y軸的位置上因此程式中直接選用 Y軸的輸入 光電盤位置輸入的程式列印如下其中速度由位置的差分而得至於馬達的位置

則使用內部 2個 word加以記錄精度為 32位元 POS_inputasm程式列印 local spd R0 OP 輸出點速度量測值

local ang R1 OP 輸出點角度量測值

local angH R2 內部變數角度的 32 位元部分

local mode R3 0x308 模式選擇15MHzAB 相正反向輸入

local pht R4 0xac 輸入阜地址光電盤輸入(0xac)

local phtc R5 0xbe 輸入阜地址光電盤模式(0xbe)

local old R6 內部變數速度更新用

data 7 模組變數區長度

initial 開機啟動程序

RD mode WR (phtc) phtc=mode

RD (pht) WR old WR spd0 RET old=phtspd=0

timer 即時控制程序

RD (pht) SUBX old SGN 11 WR spd spd=(pht-old)old=pht

65

ADD ang WR ang angHL+=spd

RDH ADC angH WR angH

RET

73 PWM輸出控制模組 模組方塊

cmd PWM輸出

程式說明 1在開機時將切換保護時間寫到輸出阜 0xbc上其中切換保護值為 0~6360=5us 2在每次 timer interrupt時將 cmd訊號處理後寫到輸出阜 0xb8上

PWM_outputasm程式列印 local cmd R0 IP gnd 輸入點v相命令

local gain R1 4096 參數輸出增益1=4096

local bias R2 2048 參數輸出偏壓0=2048

local limit R3 4095 參數輸出極限1=4095

local zone R4 0x88f0 參數頻率=12KHz切換保護=5us

local pwm R5 0xb8 輸出阜地址PWM0 輸出(0xb8)

local mode R6 0xbc 輸出阜地址PWM 模式(0xbc)

local p0md R7 0xf8 輸出阜地址port0 模式(0xf8)

local gnd R8 0 輸入接地點

data 9 模組變數區長度

initial 開機啟動程序

RD bias WR (pwm) pwm=bias

RD 0xffff WR (p0md) set port0 mode

RD zone WR (mode) RET mode=zone

stop 關機保護程序

RD bias WR (pwm) RET pwm=bias

timer 即時控制程序

RD (mode) xor 1 and 1 WR (mode) trigger watch-dog

RD (cmd) MUL gain SFR 12 ADD bias ACC=(cmdgain4096)+bias

MAX 0 MIN limit WR (pwm) pwm=limit(ACC)

RET

66

74 PD 控制模組

PD控制的模組方塊參見圖二十一所示其中比例控制的部份直接由增益 kp加以調整微分控制的部份則由誤差的差分經增益 kd的調整而得

Σ+

-

cmd

fdk

err out

Σ

pk

dk

Σ

+

+

+

-

old1minusZ

PD控制器的方塊圖

PD_controlasm程式列印 local cmd R0 IP gnd 輸入點位置命令(可忽略)

local fdk R1 IP gnd 輸入點位置回授(可忽略)

local out R2 OP 輸出點用以控制速度迴路

local kp R3 256 參數增益 kp10=256

local kd R4 0 參數增益 kd10=256

local err R5 0 內部變數

local old R6 0 內部變數

local gnd R7 0 無輸入時的短路點

data 8 模組變數區長度

initial 開機啟動程序

WR out0 WR old0 RET out=old=0

timer 即時控制程序

RD (cmd) SUB (fdk) PRTF WR err

MUL kp SFR 8 P=(cmd-fdk)kp256

RDS err SUBX old MUL kd SFR 8 D=(err-old)kd256

ADDS

WR out out=P+D

RET

程式中預設增益值的 10以整數值 256為基底因此使用 SFR 8的指令加以調

整另外在在計算微分項的程式部份用到 SUBX old的指令其詳細的暫存器動作如

下 參考 piDSP的指令說明SUBX指令將總共用到 3個時序參考錯誤 找不到參照

67

來源在時序 1時將原先 AX的資料拷貝一份到 HX中時序 2時正式執行減

法的動作所以 AX暫存器中的內容會變成 err-old時序 3時DSP會將存放在 HX暫存器中的內容拷貝一份到 old的記憶體中也就是經由 SUBX此一精簡指令將

同時完成計算差分所需要的相減與資料疊代的動作有效的利用 piDSP控制器 DSP核心的精簡指令將可以大幅提昇系統的計算速度

HX AXoldSUBXerr err

old

err

errerr olderr minus

1_err

errerr olderr minus err

1_err

1

2

3

SUBX的指令時序與暫存器變化

68

8附錄快速安裝說明

光纖網路通訊 FPGA 發展系統 (適用於 WIN-XP200098 系統)

快速安裝說明

26Pin 負載輸出入埠

雙電源︵5

12

伏︶輸入埠

單電源︵5

伏︶輸入埠

USB

光纖線輸

號 光纖線輸出埠

入 傳 埠

首先將光碟片 RFFPGA 目錄檔案拷貝在您工作硬碟裡面

第一次安裝時先將 USB 傳輸線接上電腦主機將電源供應器接上 FPGA 模組此時電

腦會出現安裝 USB-Serial 驅動程式選擇從清單安裝此驅動程式放置在光碟片

RFFPGA-USBdrive 選擇您目前安裝系統

可選擇 WIN-98WIN-MEWIN-2000WIN-XP 系統配合您現在工作電腦作業系統

69

注意一般電腦 USB 埠很多插口當您安裝驅動程式時是配合您當時插入之埠

下次如您插入不同接口埠時電腦會再次要求安裝驅動程式這是正常現象請再次安

裝驅動程式否則無法使用

FPLC 操作

首先進入 RFFPGA裡子目錄 testASM直接點選 fPLCexe 出現下面操作畫面(也可直接將

此檔案放置桌面直接點選)

(或者選擇 File 再執行 Setuphellip 選擇您要執行 CAI 檔)

70

進入下面操作畫面 首先使用滑鼠在 FPGA下載按鈕單擊動作使 FPGA變成 DSP晶片 實驗一至實驗五皆為使用 DSP組合語言設計程式其原始程式分別為 testASM1至testASM5可使用 texPad 開啟與編輯程式內容 實驗三與實驗五多有 IO控制動作 當選擇實驗三時出現下面畫面

71

eM_USB 模組

數字型 LED

0 1 2 34 5 6 78 9 A BC D E F

燈號型 LED

44 鍵盤

ADC0 ADC1 DAC0 DAC1

LED 選擇KEY 選擇

模 式 1

0123

注意操作畫面 3與 4 說明開關與按鍵選擇位置後選擇程式下載再按程式啟動如您

按下 0-3按鍵時燈號型 LED會有不同方向閃爍顯示程式停止時結束所有 IO控制動作再按回首頁選擇其他實驗 實驗四與實驗五

模式3

0 1 2 34 5 6 78 9 A BC D E F

按照上面開關選擇直接操作如果以上實驗皆能按照正常操作表示您光纖網路通訊

FPGA發展模組以能正常使用 注意 開機與關機動作順序如下

開機電腦啟動 --- eM_USB 模組電源接上 --- USB 接上電腦 ---

啟動 FPLC 軟體 --- 下載 FPGA 程式

關機關閉 FPLC 軟體 --- eM_USB 模組電源拔掉 --- 拔掉電腦 USB 接頭 ---關掉

電腦

如果以上順序有亂可能造成 USB 找不到驅動造成無法下載經過幾次測試還是

無法下載建議重新啟動電腦主機按照正確步驟操作

72

FPGA 下載操作

進入 FPLC 操作系統按照下列步驟選擇節點模組與下載 bit FPGA 檔案

在 VHDLDEMO 子目錄下您可以選擇您目前 FPGA 種類型號在此型號下我們已將 VHDL

與數位邏輯設計課本範例全部放於此處

73

光纖網路連線 FPGA 下載操作

首先利用光纖線將 eM_USB0 模組光纖輸出埠接至 eM_USB1 模組光纖輸入埠以此

類推最後再將最後 eM_USBN 模組光纖輸出埠接至 eM_USB0 模組光纖輸入埠配置

如附圖方式

個人電腦(Windows) eM_USB模組

0USB

eM_USB模組1

光纖網路

eM_USB模組2

eM_USB模組N

配置完成後進入 FPLC 系統首先必須先將 Node00 下載在 testASM 子目錄裡

piDSPv0bit 檔讓 eM_USB0 模組 FPGA 具備 DSP 功能才能執行光纖網路通訊

操作如下

此時您就可以選擇分別下載至各模組 FPGA 檔 bit

74

安裝 FPLC 注意事項

當您進入 FPLC 時

按 FILE 選擇 programhellip 選擇檔案為 exp_dcmplc 出現下面畫面

正常顯示畫面為

75

DOS 環境操作

在 PC 端的操作是在 Windows 環境中的 DOS 視窗中執行指令範例如下

eFPGA progNETbit 下載 FPGA電路至網路節點0(即 USB節點)中 eFPGA testLEDbit 1 下載 FPGA電路至網路節點1中

對於單一節點的控制程序如下

1將 eM_USB模組連結個人電腦的 USB端 2eM_USB模組開機 3執行下載指令即可 eFPGA xxxxbit 4若要更改 FPGA電路只要重新執行下載指令即可

對於多個網路節點的控制程序如下

1第一組 eM_USB模組連結個人電腦的 USB端再以光纖網路依序其他各節點 2連接 USB界面者為模組0從光纖發射端連接出去的模組為1依此類推 3將所有 eM_USB模組開機 4執行下載指令如下 eFPGA progNETbit 模組0必須先下載指定的 FPGA電路 eFPGA xxxxbit 1 再依序下載其他網路模組的 FPGA電路 eFPGA yyyybit 2 eFPGA zzzzbit 最後再重新下載模組0的 FPGA電路 5換句話說模組0必須先執行 progNETbit讓光纖網路接受 FPGA控制後才能透過光纖網路下載至其他節點等全部網路節點下載完畢後再將模組0的 FPGA重新下載讓模組0也可自由執行任意的 FPGA電路

6若要更改某一個網路節點中的 FPGA電路只要重新執行下述指令 eFPGA progNETbit 模組0必須先下載指定的 FPGA電路 eFPGA yyyybit 2 下載指定網路模組的 FPGA電路 eFPGA zzzz bit 最後再重新下載模組0的 FPGA電路 換句話說除非模組0中的 FPGA已經包括光纖網路管理電路否則一定要先在

模組0中下載網路管理電路後才能下載指定網路節點的 FPGA電路

76

光纖網路通訊 FPGA 發展系統

系統配置

光纖網路通訊 FPGA 發展系統的系統配置圖如下

個人電腦(Windows) eM_USB模組

0USB

eM_USB模組1

光纖網路

eM_USB模組2

eM_USB模組N

其中

1基本模組為 eM_USB模組可用 USB界面和個人電腦連線並提供 USB對光纖網路的轉換功能使得個人電腦可以獨立控制光纖網路中的每個網路節點

2eM_USB模組也可以作為光纖網路中的網路節點透過光纖網路而接受個人電腦的

監控 3就個人電腦而言不論是 USB界面直接連結或是以光纖網路間接連結的 eM_USB模組都是可以直接監控的網路節點最多可以同時控制一個 USB節點和 30個網路節點

4對於每一個網路節點個人電腦都可執行 eM_USB模組中 FPGA的電路下載工作並在適當的 FPGA電路配合下可執行 eM_USB模組中 FPGA內部電路的讀寫控制 5透過適當的 FPGA電路設計各網路節點都可透過光纖網路和其他任何網路節點

作同步通訊執行 FPGA內部記憶體的資料交換資料交換頻率可達 1KHz以上

77

網路模組配置

每個網路模組的標準配置圖如下

eM_USB模組光纖網路

USB eM_FPGA卡

eM_DEMO模組

eM_EXP實驗模組

DC電源

其中

1網路模組以 eM_USB模組為主提供基本的 USB界面和光纖網路連線 2eM_USB模組中的 FPGACPLD採用插卡型式可選擇不同的 eM_FPGA卡包括

eM_2V1K卡可選用 Virtex系列的 XC2V250和 XC2V1000 eM_3S1K卡可選用 Spartan3系列的 XC3S400XC3S1000和 XC3S1500 eM_3S50卡可選用 Spartan3系列的 XC3S50XC3S200和 XC3S400 eM_95XL卡可選用 9500XL系列的 XC95144XL和 XC95288XL 3eM_USB模組中的對外連線有兩種一種是 26P接頭用以連接既有的各種實驗模

組另一種是兩組 50P接頭將 FPGA中各接腳引出用以連接專題實驗 4eM_DEMO模組就是插上 50P接頭的教學模組其中包括 LED 數字顯示和 44鍵盤也具備兩組的 ADC和兩組的 DAC接頭提供類比訊號的測試工具

常用的實驗組合包括

1精簡組合包括(eM_USB+eM_FPGA)提供基本的網路節點適用於專題實驗 2標準組合包括(eM_USB+eM_FPGA+eM_DEMO)提供基礎 FPGA設計的教學實驗

3實驗組合包括(eM_USB+eM_FPGA+eM_DEMO+eM_EXP)提供進階的 FPGA實驗可依需求選用不同的實驗模組

78

eM_USB 模組

eM_USB 模組的電路配置圖如下

TxRx

DCPower

USB

JP2

JP3

光纖界面

外加電源

PC連線

JP1

eM_FPGA模組

FT232 CPLD FlashROM

SRAM

10cm

6cm

JP4

其中

1對外的連線接頭包括 DC電源 可選擇單電源(5V)或是多電源(5V+12V-12V)兩種 USB界面 直接連接個人電腦 光纖界面連接光纖網路 2實驗界面包括 JP1負責內部 CPLD的電路下載 JP2JP3兩組 50P的擴張用接頭 JP4 標準 26P接頭用以連接各種實驗模組 3內部的電路配置包括 A以 SO-DIMM接頭連接各種 eM_FPGA卡 B內附 EEPROMFlashROM和 SRAM提供 FPGA作應用測試 C以一顆 FT232BM作為 USB界面解碼而以一顆 CPLD作為光纖網路解碼 D提供各種 eM_FPGA卡的電路下載功能 4內附五顆 LED由上而下依序為 usbLED指示 USB界面的讀寫狀態 tstLED可由 FPGA電路自行定義 stsLED可由 FPGA電路自行定義 RxLED 可由 FPGA電路自行定義 TxLED 可由 FPGA電路自行定義

79

外部接腳定義

外部接頭的接點順序圖示如下

上視圖

JP11 9 JP4

126225

JP31

50249

JP21

50249

而各接頭的接點定義如下

JP1 JP4 JP2 JP3 1+33V 1+12V 2+12V 1 GND 2 GND 1 GND 2 GND 2GND 3 ADC 4 DAC 3POWER 4ALARM 3 +5V 4 +5V 3nc 5 yPB2 6 yPB3 5RxNET 6TxNET 5+12V 6+12V 4TCK 7 yPB1 6 yPB4 7RxUSB 6TxUSB 7-12V 6-12V 5nc 9 yPB0 10yPB5 9RxCAN 10TxCAN 9 ADC 10 DAC 6TDO 11yPB6 12yPB7 11P0D0 12P0D1 11P1D0 12P1D1 7TDI 13yGND 14yPC3 13P0D2 14P0D3 13P1D2 14P1D3 8nc 15yPC2 16yPC1 15P0D4 16P0D5 15P1D4 16P1D5 9TMS 17yPC0 18yPA0 17P0D6 18P0D7 17P1D6 18P1D7 19yPA1 20yPA2 19P0D8 20P0D9 19P1D8 20P1D9 21yPA3 22GND 21P0D10 22P0D11 21P1D10 22P1D11 23GND 24+5V 23P0D12 24P0D13 23P1D12 24P1D13 25+5V 26nc 25P0D14 26P0D15 25P1D14 26P1D15 27P2D0 28P2D1 27PxA0 28PxA1 29P2D2 30P2D3 29PxA2 30PxA3 31P2D4 32P2D5 31PxA4 32PxA5 33P2D6 34P2D7 33PxA6 34PxA7 35P2D8 36P2D9 35PxB0 36PxB1 37P2D10 38P2D11 37PxB2 38PxB3 39P2D12 40P2D13 39PxB4 40PxB5 41P2D14 42P2D15 41PxB6 42PxB7 43ADC0 44ADC1 43PxC0 44PxC1 45ADC2 46ADC3 45PxC2 46PxC3 47ADC4 48ADC5 47PxC4 48PxC5 49DAC0 50DAC1 49PxC6 50PxC7

80

eM_FPGA 模組

在各種 eM_FPGA 模組中FPGA 對外電路的標準配置圖如下

24576MHz

FlashROM

26PSRAM

EEPROM

mD[8]

yPA[4]

FPGACPLD

mA[19]mRDmWRmCSeeCKeeCSeeDIeeDO

光纖界面 RxNETTxNET

USB 界面 RxUSBTxUSBCLK24MPOWERALARM

LED

tstLEDstsLEDRxLEDTxLED

yPB[8]yPC[4]

ADCDAC

ADC[8]

實驗模組

ADC[2]

DAC[2]

xPA[4]

xPB[8]

xPC[4]

基礎實驗

其中

1FPGACPLD可以選擇下述幾種 XC2V250XC2V1000 採用 eM_2V1K模組其中 FPGA為 FG456包裝 XC3S400XC3S1000XC3S1500採用 eM_3S1K模組其中 FPGA為 FG456包裝 XC3S400XC3S1000XC3S1500採用 eM_3S1K模組其中 FPGA為 FG456包裝 XC3S50XC3S200XC3S400 採用 eM_3S50模組其中 FPGA為 TQ144包裝 XC95144XLXC95288XL 採用 eM_95XL模組其中 CPLD為 TQ144包裝 2採用 FG456包裝者可以控制所有的 IO界面 3採用 TQ144包裝者只是不能控制 RAM和 FlashROM而可以控制其他所有的界面 4所有 FPGA模組都可自由選擇由 USB界面或是由光纖界面下載電路但是 CPLD模組只能固定由 USB界面下載電路

5所有 FPGACPLD模組都可透過 26P接頭連接既有的各種實驗模組

81

FPGA 接腳對照表

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

mD0 XD6 mD0 A17 C13 -- -- mD1 XD7 mD1 B17 D12 -- -- mD2 XD8 mD2 C17 D11 -- -- mD3 XD9 mD3 D17 C11 -- -- mD4 XD10 mD4 E17 D10 -- -- mD5 XD11 mD5 E16 C10 -- -- mD6 XD12 mD6 E14 D9 -- -- mD7 XD13 mD7 E13 D7 -- -- mA0 XD14 mA0 D13 C7 -- -- mA1 XD15 mA1 C13 D6 -- -- mA2 XA0 mA2 V5 C3 -- -- mA3 XA1 mA3 U5 C4 -- -- mA4 XA2 mA4 Y2 D3 -- -- mA5 XA3 mA5 Y1 D4 -- -- mA6 XA4 mA6 V4 E3 -- -- mA7 XA5 mA7 V3 E4 -- -- mA8 XA6 mA8 W2 F3 -- -- mA9 XA7 mA9 W1 F4 -- -- mA10 XA8 mA10 T2 G6 -- -- mA11 XA9 mA11 T1 K3 -- -- mA12 XA10 mA12 R4 K10 -- -- mA13 XA11 mA13 R3 L3 -- -- mA14 XA12 mA14 R2 L4 -- -- mRD XRD mRD R1 D5 -- -- mWR XWR mWR P6 C6 -- --

POWER P0A0 POWER B4 B20 P1 P5 ALARM P0A1 ALARM A4 A19 P2 P6 RxNET P0A2 RxNET C4 B19 P4 P7 TxNET P0A3 TxNET C5 A18 P5 P9 RxUSB P0B0 RxUSB B5 A15 P6 P10 TxUSB P0B1 TxUSB A5 B15 P7 P11 RxCAN P0B2 RxCAN D6 A14 P8 P12 RxCAN P0B3 TxCAN C6 B14 P10 P13

CLK24M CLK24M CLK24M E12 B12 P124 P38

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

PWM0H P3A0 P0D0 E6 A8 P21 P23 PWM0L P3A1 P0D1 E5 B8 P23 P24 PWM1H P3A2 P0D2 C2 B6 P24 P25 PWM1L P3A3 P0D3 C1 A5 P25 P26 PWM2H P3A4 P0D4 D2 B5 P26 P27

82

PWM2L P3A5 P0D5 D1 A4 P27 P28 PWMenb P3A6 P0D6 E4 B4 P28 P30 PHT1Z P3A7 P0D7 E3 A3 P30 P31 PHT1A P3B0 P0D8 G2 C1 P31 P32 PHT1B P3B1 P0D9 G1 C2 P32 P33 PHT0A P3B2 P0D10 H5 D1 P33 P34 PHT0B P3B3 P0D11 J6 D2 P35 P35 AMP0 P3B4 P0D12 H4 E1 P36 P39 AMP1 P3B5 P0D13 H3 E2 P40 P40 AMP2 P3B6 P0D14 H2 F2 P41 P41 AMP3 P3B7 P0D15 H1 G1 P44 P43 eeSK P0C3 P1D0 C10 B9 P20 P22 eeCS P0C2 P1D1 D10 A9 P18 P21 eeDI P0C1 P1D2 F10 B10 P17 P20 eeDO P0C0 P1D3 E10 B11 P15 P19 ssCK P0B7 P1D4 E8 A11 P14 P17 ssCS P0B6 P1D5 E7 A12 P13 P16 ssDI P0B5 P1D6 A6 B13 P12 P15 ssDO P0B4 P1D7 B6 A13 P11 P14

ppCLK P3C0 P1D8 K4 G2 P46 P44 ppDIN P3C1 P1D9 K3 K1 P47 P45 TxD P3C2 P1D10 K2 K2 P50 P46 RxD P3C3 P1D11 K1 L1 P51 P48

tstLED P3C4 P1D12 L5 L2 P52 P49 stsLED P3C5 P1D13 L4 M1 P53 P50 RxLED P3C6 P1D14 L3 M2 P55 P51 TxLED P3C7 P1D15 L2 N1 P56 P52

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

xPA0 P2A0 P2D0 AA3 N2 P59 P53 xPA1 P2A1 P2D1 Y4 T1 P60 P54 xPA2 P2A2 P2D2 AA4 T2 P63 P56 xPA3 P2A3 P2D3 AB4 U2 P68 P57 xPC0 P2A4 P2D4 W5 V1 P69 P58 xPC1 P2A5 P2D5 Y5 V2 P70 P59 xPC2 P2A6 P2D6 AA5 W1 P73 P60 xPC3 P2A7 P2D7 AB5 W2 P74 P61

-- P2B0 P2D8 V6 Y1 P76 P64 -- P2B1 P2D9 V7 Y2 P77 P66 -- P2B2 P2D10 W6 AA3 P78 P68

mCS P2B3 P2D11 Y6 AB4 P79 P69 mA15 P2B4 P2D12 V9 AA4 P80 P70 mA16 P2B5 P2D13 V10 AB5 P82 P71 mA17 P2B6 P2D14 W10 AA5 P83 P74 mA18 P2B7 P2D15 Y10 AA6 P84 P75 CS0 P2C0 ADC0 AA10 AB8 P85 P76

83

SDIN0 P2C1 ADC1 AB10 AA8 P86 P77 CS1 P2C2 ADC2 U10 AB9 P87 P78

SDIN1 P2C3 ADC3 U11 AA9 P89 P79 SCLK P2C4 ADC4 V11 AB10 P90 P80 CS2 P2C5 ADC5 W11 AA10 P92 P81

SDOUT P2C6 ADC6 Y11 AB11 P93 P82 LDAC P2C7 ADC7 AA11 AA11 P95 P83

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

xPB0 P1A0 PxA0 M1 M3 P135 P85 xPB1 P1A1 PxA1 M2 M4 P132 P86 yPB2 P1A2 PxA2 M3 N3 P131 P87 yPB3 P1A3 PxA3 M4 N4 P130 P88 yPB1 P1A4 PxA4 M5 T4 P129 P91 yPB4 P1A5 PxA5 M6 T5 P128 P92 yPB0 P1A6 PxA6 N1 U3 P127 P93 yPB5 P1A7 PxA7 N2 U4 P125 P94 yPB6 P1B0 PxB0 U13 V3 P119 P95 yPB7 P1B1 PxB1 V13 V4 P118 P96 xPB2 P1B2 PxB2 W13 W3 P116 P97 xPB3 P1B3 PxB3 Y13 W4 P113 P98 xPB4 P1B4 PxB4 AA13 Y3 P112 P100 xPB5 P1B5 PxB5 AB13 Y4 P96 P101 yPC3 P1B6 PxB6 U12 Y5 P97 P102 yPC2 P1B7 PxB7 V12 W5 P98 P103 yPC1 P1C7 PxC0 AB17 W11 P108 P113 yPC0 P1C6 PxC1 AA17 Y11 P107 P112 yPA0 P1C5 PxC2 Y17 W10 P105 P111 yPA1 P1C4 PxC3 W17 Y10 P104 P110 yPA2 P1C3 PxC4 AB18 W9 P103 P107 yPA3 P1C2 PxC5 AA18 W8 P102 P106 xPB6 P1C1 PxC6 Y18 W6 P100 P105 xPB7 P1C0 PxC7 W18 Y6 P99 P104

84

eM_DEMO 模組

eM_DEMO 模組的電路配置圖如下

eM_USB 模組

數字型 LED

0 1 2 34 5 6 78 9 A BC D E F

燈號型 LED

44 鍵盤

ADC0 ADC1 DAC0 DAC1

LED 選擇KEY 選擇

其中

1eM_DEMO模組的基本功能包括 A將 xPAxPBxPC等 16個 IO訊號引出控制 LED和鍵盤電路 B將 ADDA訊號引出並放大成+-10V的工作範圍 2LED和鍵盤可以選擇三種模式由 LED和 KEY 兩組開關作選擇圖示如下

模式1

0123

模式2 模式3

0 1 2 34 5 6 78 9 A BC D E F

0123

3模式14鍵輸入並搭配 16點的 LED燈號顯示其中 16點 LED分別對映到 xPA[0~3]xPB[0~7]和 xPC[0~3] 4組按鍵分別對映到 xPC[0~3] 4模式24鍵輸入並搭配四個 7段式數字顯示其中 數字顯示由 xPA[0~3]作數字掃瞄而由 xPB[0~7]作 7段式 LED控制 4組按鍵 分別對映到 xPC[0~3] 5模式316鍵輸入並搭配四個 7段式數字顯示其中 數字顯示由 xPA[0~3]作數字掃瞄而由 xPB[0~7]作 7段式 LED控制 16組按鍵由 xPA[0~3]作鍵盤掃瞄而由 xPC[0~3]作鍵盤讀取 6根據VHDL與數位邏輯設計的章節其中 第 1章至 10章的實驗採用模式1而 第 11章實驗採用模式2而 第 12章之後的實驗都採用模式3

85

FPGA UCF 定義

eM_3S1K 模組

NET CLK LOC = B12

NET XAlt0gt LOC = N2

NET XAlt1gt LOC = T1

NET XAlt2gt LOC = T2

NET XAlt3gt LOC = U2

NET XBlt0gt LOC = M3

NET XBlt1gt LOC = M4

NET XBlt2gt LOC = W3

NET XBlt3gt LOC = W4

NET XBlt4gt LOC = Y3

NET XBlt5gt LOC = Y4

NET XBlt6gt LOC = W6

NET XBlt7gt LOC = Y6

NET XClt0gt LOC = V1

NET XClt1gt LOC = V2

NET XClt2gt LOC = W1

NET XClt3gt LOC = W2

NET YAlt0gt LOC = W10

JP4 接頭

NET YAlt1gt LOC = Y10

NET YAlt2gt LOC = W9

NET YAlt3gt LOC = W8

NET YBlt0gt LOC = U3

NET YBlt1gt LOC = T4

NET YBlt2gt LOC = N3

NET YBlt3gt LOC = N4

NET YBlt4gt LOC = T5

NET YBlt5gt LOC = U4

NET YBlt6gt LOC = V3

NET YBlt7gt LOC = V4

NET YClt0gt LOC = Y11

NET YClt1gt LOC = W11

NET YClt2gt LOC = W5

NET YClt3gt LOC = Y5

在光碟片中 RFFPGAVHDLDEMOBIT3S1K 裡有 VHDL 與數位邏輯設計書本範例原始檔與合成檔

86

eM_3S50 模組

NET CLK LOC = P124

NET XAlt0gt LOC = P59

NET XAlt1gt LOC = P60

NET XAlt2gt LOC = P63

NET XAlt3gt LOC = P68

NET XBlt0gt LOC = P135

NET XBlt1gt LOC = P132

NET XBlt2gt LOC = P116

NET XBlt3gt LOC = P113

NET XBlt4gt LOC = P112

NET XBlt5gt LOC = P96

NET XBlt6gt LOC = P100

NET XBlt7gt LOC = P99

NET XClt0gt LOC = P69

NET XClt1gt LOC = P70

NET XClt2gt LOC = P73

NET XClt3gt LOC = P74

NET YAlt0gt LOC = P105

JP4 接頭

NET YAlt1gt LOC = P104

NET YAlt2gt LOC = P103

NET YAlt3gt LOC = P102

NET YBlt0gt LOC = P127

NET YBlt1gt LOC = P129

NET YBlt2gt LOC = P131

NET YBlt3gt LOC = P130

NET YBlt4gt LOC = P128

NET YBlt5gt LOC = P125

NET YBlt6gt LOC = P119

NET YBlt7gt LOC = P118

NET YClt0gt LOC = P107

NET YClt1gt LOC = P108

NET YClt2gt LOC = P98

NET YClt3gt LOC = P97

在光碟片中 RFFPGAVHDLDEMOBIT3S200 裡有VHDL與數位邏輯設計書本範例原始檔與合成檔

87

eM_95XL 模組

NET CLK LOC = SPIN38

NET XAlt0gt LOC = SPIN53

NET XAlt1gt LOC = SPIN54

NET XAlt2gt LOC = SPIN56

NET XAlt3gt LOC = SPIN57

NET XBlt0gt LOC = SPIN85

NET XBlt1gt LOC = SPIN86

NET XBlt2gt LOC = SPIN97

NET XBlt3gt LOC = SPIN98

NET XBlt4gt LOC = SPIN100

NET XBlt5gt LOC = SPIN101

NET XBlt6gt LOC = SPIN105

NET XBlt7gt LOC = SPIN104

NET XClt0gt LOC = SPIN58

NET XClt1gt LOC = SPIN59

NET XClt2gt LOC = SPIN60

NET XClt3gt LOC = SPIN61

NET YAlt0gt LOC = SPIN111

JP4 接頭

NET YAlt1gt LOC = SPIN110

NET YAlt2gt LOC = SPIN107

NET YAlt3gt LOC = SPIN106

NET YBlt0gt LOC = SPIN93

NET YBlt1gt LOC = SPIN91

NET YBlt2gt LOC = SPIN87

NET YBlt3gt LOC = SPIN88

NET YBlt4gt LOC = SPIN92

NET YBlt5gt LOC = SPIN94

NET YBlt6gt LOC = SPIN95

NET YBlt7gt LOC = SPIN96

NET YClt0gt LOC = SPIN112

NET YClt1gt LOC = SPIN113

NET YClt2gt LOC = SPIN103

NET YClt3gt LOC = SPIN102

在光碟片中 RFFPGAVHDLDEMOSVF95288XL 裡有VHDL與數位邏輯設計書本範例原始檔與合成

檔案

88

eM_FPGA 模組

NET CLK LOC = E12

NET XAlt0gt LOC = AA3

NET XAlt1gt LOC = Y4

NET XAlt2gt LOC = AA4

NET XAlt3gt LOC = AB4

NET XBlt0gt LOC = M1

NET XBlt1gt LOC = M2

NET XBlt2gt LOC = W13

NET XBlt3gt LOC = Y13

NET XBlt4gt LOC = AA13

NET XBlt5gt LOC = AB13

NET XBlt6gt LOC = Y18

NET XBlt7gt LOC = W18

NET XClt0gt LOC = W5

NET XClt1gt LOC = Y5

NET XClt2gt LOC = AA5

NET XClt3gt LOC = AB5

NET YAlt0gt LOC = Y17

JP4 接頭

NET YAlt1gt LOC = W17

NET YAlt2gt LOC = AB18

NET YAlt3gt LOC = AA18

NET YBlt0gt LOC = N1

NET YBlt1gt LOC = M5

NET YBlt2gt LOC = M3

NET YBlt3gt LOC = M4

NET YBlt4gt LOC = M6

NET YBlt5gt LOC = N2

NET YBlt6gt LOC = U13

NET YBlt7gt LOC = V13

NET YClt0gt LOC = AA17

NET YClt1gt LOC = AB17

NET YClt2gt LOC = V12

NET YClt3gt LOC = U12

在光碟片中 RFFPGAVHDLDEMOBIT2V250 裡有VHDL與數位邏輯設計書本範例原始檔與合成檔

89

Page 37: RFFPGA 直流馬達實驗手冊juniortek.com.tw/program/manual/RF-DC-mal.pdf · em_demo模組 em_dcm 直流伺服馬達 dc電源 rffpga 系統的直流馬達實驗規劃 其中包括:

實測響應圖

訊 號 說 明 訊 號 說 明 ch1 方波產生器訊號 ch3 一階濾波器輸出信號 ch2 馬達角速度訊號 ch4 馬達角位置訊號

直流馬達之開迴路電壓控制響應圖

37

以邏輯分析功能觀測直流馬達之光電盤輸入與 PWM輸出信號

38

62 實驗 2-閉迴路的速度控制 實驗說明為了觀測閉迴路的速度控制響應建立下面的測試方塊圖

加入 PD控制後系統閉迴路的轉移函數經適度的簡化仍能約略以一階系統

處理方塊圖如下

sτ+1

u km ωm

其中

u 送給控制器的速度命令

ωm馬達的轉動速度可由處理 photo encoder 信號所得的位置微分而得

km一階系統的穩態增益 τ一階系統的時間常數即步階響應中的上升時間

方塊圖中的模組功能說明如下

1用 fg1 產生測試用的方波速度命令

2將方波速度命令和速度回授訊號送到 PD 控制器方塊中產生電壓控制訊號再透

過 io2 模組將訊號送出給伺服介面

3用 ft1 建立對照用的一階系統可用 IIR1濾波器方塊產生

4將方波命令產生速度命令再觀測 PHT(io1)上的速度值 spd

5調整 IIR1濾波器的參數使得兩組波形完全相符這時 IIR1濾波器就是閉迴路

速度控制的特性其中 km 為增益而τ為上升時間(單位為 sec)

6增益 km 可從示波器中作簡單計算而上升時間(τ=40964000dtka)

7 Led四位數字七段顯示模組顯示波形信號資料

39

對應之 plc檔程式說明(exp_speedplc) echo off 畫面顯示開始

run dsp 0 選擇 DSP1

run stop run reset 既有程式停止

run testDCMmem 下載指定程式

das 1 ampfg1out 0 1024 PWM 波形 Volt 設定 DAS 頻道1

das 2 ampft1lp 0 1024 馬達模擬 Volt 設定 DAS 頻道2

das 3 ampio1spd 0 1024 馬達速度 Volt 設定 DAS 頻道3

das 4 ampio1ang 0 1024 馬達角度 Volt 設定 DAS 頻道4

plot select 0 設定示波器頁數

plot xunit 100000 0 設定示波器 X軸

plot yunit 1 50 -300 設定示波器 Y1 軸

plot yunit 2 50 -100 設定示波器 Y2 軸

plot yunit 3 50 100 設定示波器 Y3 軸

plot yunit 4 50000 300 設定示波器 Y4 軸

plot trigger 1 0 1 10 設定示波器觸發

plot scope 9 1 2 3 4 設定示波器顯示

module io2 設定 io2 模組

s cmd ampcn2out

module fg1 設定 fg1 模組

s kAmp 50 s kFrq 150

module cn2 設定 cn1 模組

s cmd ampfg1out s fdk ampio1spd s kp 0x4000

module ft1 設定 ft1 模組

s u ampfg1out s dt 2 s ka 320

module io3 設定 io3 模組

s led ampfg1out

module 回復預設模組

run 1khz 設定抽樣頻率為 4KHz

run start DSP 開始執行

das stop pause 1 DAS 啟動 das start DAS 啟動

echo on 回復正常訊息顯示

CAI操控設計畫面規劃如下(EXP_speedCAI)

40

page 1 畫面設計 page 2 與 page 3 畫面設計與實驗一 page 2 與 page 3相同畫面 page 4 畫面設計

41

方塊的參數設定 使用者可視情況調整一階濾波器的 ka和 dt值使得 ch2和 ch3 兩組波形完全相符

以求得此一閉迴路系統近似的一階轉移函數或調整 PD控制器中的 kp和 kp值以調整系統之響應 實測響應圖

訊 號 說 明 訊 號 說 明 ch1 方波產生器產生之速度命令 ch3 一階濾波器輸出信號 ch2 馬達角速度訊號 ch4 馬達角位置訊號

42

直流馬達之閉迴路速度控制響應圖

43

63 實驗 3-閉迴路的位置控制 實驗說明為了觀測閉迴路的位置控制響應將直流馬達的回授改為位置訊號

建立下面的測試方塊圖 方塊圖中的模組功能說明如下

1用 fg1產生測試用的方波位置命令 2將方波位置命令和位置回授訊號送到 PD控制器方塊中產生電壓控制訊號再透過 io2模組將訊號送出到伺服介面驅動馬達轉動

對應之 plc檔程式說明(exp_angleplc) echo off 畫面顯示開始

run dsp 0 選擇 DSP1

run stop run reset 既有程式停止

run testDCMmem 下載指定程式

das 1 ampfg1out 0 1024 PWM 波形 Volt 設定 DAS 頻道1

das 2 ampft1lp 0 1024 馬達模擬 Volt 設定 DAS 頻道2

das 3 ampio1spd 0 1024 馬達速度 Volt 設定 DAS 頻道3

das 4 ampio1ang 0 1024 馬達角度 Volt 設定 DAS 頻道4

plot select 0 設定示波器頁數

plot xunit 100000 0 設定示波器 X軸

plot yunit 1 1000 -300 設定示波器 Y1 軸

plot yunit 2 1000 -100 設定示波器 Y2 軸

plot yunit 3 20 100 設定示波器 Y3 軸

plot yunit 4 1000 300 設定示波器 Y4 軸

plot trigger 1 0 1 10 設定示波器觸發

44

plot scope 9 1 2 3 4 設定示波器顯示

module io2 設定 io2 模組

s cmd ampcn2out

module fg1 設定 fg1 模組

s kAmp 1000 s kFrq 75

module cn2 設定 cn1 模組

s cmd ampfg1out s fdk ampio1ang s kp 0x300 s kd 0x4000

module ft1 設定 ft1 模組

s u ampfg1out s dt 2 s ka 320

module io3 設定 io3 模組

s led ampfg1out

module 回復預設模組

run 1khz 設定抽樣頻率為 4KHz

run start DSP 開始執行

das stop pause 1 DAS 啟動 das start DAS 啟動

echo on 回復正常訊息顯示

CAI操控設計畫面規劃如下(EXP_angleCAI) page 1 畫面設計

45

page 2 與 page 3 畫面設計與實驗一 page 2 與 page 3相同畫面 page 4 畫面設計與實驗二 page 4 畫面 方塊的參數設定 延續上一實驗的說明使用者可以調整 PD控制器中的 kp和 kd值以調整系統之

響應 實測響應圖

訊 號 說 明 訊 號 說 明 ch1 方波產生器產生之位置命令 ch3 馬達角速度訊號 ch2 馬達角位置 ch4 Pd控制器輸出之電壓訊號

46

直流馬達之閉迴路位置控制響應圖

47

64 實驗 4-加減速的位置控制 實驗說明為避免方波命令的過於嚴苛在方波命令的輸出加入一加減速控制功

能方塊以減緩命令變化的幅度增加馬達運動的平順建立的測試方塊圖如下

方塊圖中的模組功能說明如下

1用 fg1產生測試用的方波位置命令 2將方波位置命令送到加減速控制方塊處理後產生新的位置命令再將新的位置命

令與位置回授訊號送到 PD控制器方塊中產生電壓控制訊號最後透過 io2模組將訊號送出到伺服介面驅動馬達轉動

對應之 plc檔程式說明(exp_accplc) echo off 畫面顯示開始

run dsp 0 選擇 DSP1

run stop run reset 既有程式停止

run testDCMmem 下載指定程式

das 1 ampfg1out 0 1024 PWM 波形 Volt 設定 DAS 頻道1

das 2 ampcn1out 0 1024 加速控制 Volt 設定 DAS 頻道2

das 3 ampio1spd 0 1024 馬達速度 Volt 設定 DAS 頻道3

das 4 ampio1ang 0 1024 馬達角度 Volt 設定 DAS 頻道4

plot select 0 設定示波器頁數

plot xunit 100000 0 設定示波器 X軸

plot yunit 1 2000 -300 設定示波器 Y1 軸

plot yunit 2 2000 -100 設定示波器 Y2 軸

plot yunit 3 50 100 設定示波器 Y3 軸

plot yunit 4 2000 300 設定示波器 Y4 軸

48

plot trigger 1 0 1 10 設定示波器觸發

plot scope 9 1 2 3 4 設定示波器顯示

module io2 設定 io2 模組

s cmd ampcn2out

module fg1 設定 fg1 模組

s kAmp 2000 s kFrq 150

module cn1 設定 cn1 模組

s cmd ampfg1out

module cn2 設定 cn2 模組

s cmd ampcn1out s fdk ampio1ang s kp 0x300 s kd 0x4000

module ft1 設定 ft1 模組

s u ampfg1out s dt 2 s ka 320

module io3 設定 io3 模組

s led ampfg1out

module 回復預設模組

run 1khz 設定抽樣頻率為 4KHz

run start DSP 開始執行

das stop pause 1 DAS 啟動 das start DAS 啟動

echo on 回復正常訊息顯示

CAI操控設計畫面規劃如下(EXP_accCAI) page 1 畫面設計

49

page 2 畫面設計與實驗一 page 2相同畫面 page 3 畫面設計與實驗二 page 4相同畫面

參數設定參考之前各實驗的說明可線上機動性的調整 PD控制器中的 kp和 kd值以調整系統之響應 實測響應圖

訊 號 說 明 訊 號 說 明 ch1 方波產生器產生之位置命令 ch3 馬達角位置 ch2 加減速模組輸出之位置命令 ch4 馬達角速度訊號

50

圖一 直流馬達經加減速控制後之閉迴路控制響應圖

51

65 實驗 5-正弦波的位置控制 實驗說明在本實驗中改變命令的波形由方波改變為正弦波並建立如下的測

試方塊圖與上一實驗相比較僅更改命令的波形產生方塊 方塊圖中的模組功能說明如下 1用 fg2產生測試用的弦波位置命令 2將弦波位置命令送到加減速控制方塊處理後產生新的位置命令再與 io1 讀入的位

置回授訊號送到 PD 控制器方塊中產生電壓控制訊號再透過 io2 模組將訊號送出到伺服介面驅動馬達轉動

對應之 plc檔程式說明(exp_sinplc) echo off 畫面顯示開始

run dsp 0 選擇 DSP1

run stop run reset 既有程式停止

run testDCMmem 下載指定程式

das 1 ampfg2out 0 1024 SIN 波形 Volt 設定 DAS 頻道1

das 2 ampcn1out 0 1024 加速控制 Volt 設定 DAS 頻道2

das 3 ampio1spd 0 1024 馬達速度 Volt 設定 DAS 頻道3

das 4 ampio1ang 0 1024 馬達角度 Volt 設定 DAS 頻道4

plot select 0 設定示波器頁數

plot xunit 100000 0 設定示波器 X軸

plot yunit 1 2000 -300 設定示波器 Y1 軸

plot yunit 2 2000 -100 設定示波器 Y2 軸

plot yunit 3 50 100 設定示波器 Y3 軸

plot yunit 4 2000 300 設定示波器 Y4 軸

plot trigger 1 0 1 10 設定示波器觸發

52

plot scope 9 1 2 3 4 設定示波器顯示

module io2 設定 io2 模組

s cmd ampcn2out

module fg2 設定 fg1 模組

s kAmp 2000 s kFrq 100

module cn1 設定 cn1 模組

s cmd ampfg2out

module cn2 設定 cn2 模組

s cmd ampcn1out s fdk ampio1ang s kp 0x300 s kd 0x4000

module ft1 設定 ft1 模組

s u ampfg2out s dt 2 s ka 320

module io3 設定 io3 模組

s led ampfg2out

module 回復預設模組

run 1khz 設定抽樣頻率為 4KHz

run start DSP 開始執行

das stop pause 1 DAS 啟動 das start DAS 啟動

echo on 回復正常訊息顯示

CAI操控設計畫面規劃如下(EXP_sinCAI) page 1 畫面設計

53

page 2 畫面設計 page 3 畫面設計與實驗二 page 4相同畫面

方塊的參數設定可調整 PD控制器中的 kp和 kd值以調整系統之響應 實測響應圖

訊 號 說 明 訊 號 說 明 ch1 弦波產生器產生之位置命令 ch3 馬達角位置訊號 ch2 加減速模組輸出之位置命令 ch4 馬達角速度訊號

54

直流馬達之閉迴路弦波加減速位置控制響應圖

55

7組合語言說明

本節將針對 DC馬達伺服控制實驗專用的程式模組進行功能與程式碼的說明其

有關於波形產生器與資料擷取模組等說明如下

SIN_waveasm 正弦波產生器 PWM_waveasm 方波產生器 IIR1_filterasm 一階濾波器 DAS4asm 資料蒐集模組

弦波產生器

此模組會產生週期性的正弦波方塊圖如下

outfrq

kBiasbias

ampkAmp

kFrqth

kThf=1TB

θ

A

其中

1正弦波有四個參數振幅(A)頻率(F)相位(θ)和偏移(B)其公式為 out = A sin(2πF t +θ) + B 2對於單純的正弦波產生器所對映的參數包括 kAmp 振幅值 kFrq 頻率值kFrq=655368000Hz其中 Hz的範圍為 0~4000例如 1000Hz =gt frq=8192 100Hz =gt frq=819 10Hz =gt frq=82 1Hz =gt frq=8 kTh 相角值0~255代表 0~360的相位當 th=0 時為正弦波 th=64 時為餘弦波 th=128時為反相波依此類推 kBias偏移值 3對於可調變的正弦波產生器其對映的輸入點為 amp 控制振幅的輸入點可產生調幅(AM)波形 frq 控制頻率的輸入點可產生調頻(FM)波形 th 控制相位的輸入點可產生調相(PM)波形 bias控制偏移的輸入點可產生雙頻混波(相加)波形 4若不使用調變功能時各個輸入點時的預設值為 amp 指向 kAmp 的位址 frq 指向 kFrq 的位址

56

th 指向 kTh 的位址 bias指向 kBias的位址

模組程式範例SIN_WAVEasm

local amp R0 IP kAmp 輸入點sin波的振幅 local frq R1 IP kFrq 輸入點sin波的頻率 local th R2 IP kTh 輸入點sin波的相角 local bias R3 IP kBias 輸入點sin波的中心偏移 local out R4 OP 輸出點sin波輸出 local tab R5 TP 表格指標指向 sin[256]的表格 local ang R6 內部變數相位角65536=360deg local kAmp R7 1000 參數振幅值 local kFrq R8 1000 參數頻率值=655368000Hz local kTh R9 0 參數相角值360deg=256 local kBias R10 0 參數偏移值 data 11 模組變數區長度及初值 initial 啟動程序 WR ang0 WR out0 ang=out=0 RET timer 即時控制程序(8KHz) RD ang ADD (frq) WR ang ang+=frq SFR 8 ADD (th) AND 255 ACC=sin(ang256+th) ADD tab WRH RDM table-look-up MUL (amp) SFR 12 ADD (bias) WR out out=ACCamp4096+bias RET table tab 256 sin[256]表格區10=4096 0 101 201 301 401 501 601 700 00~070deg 799 897 995 1092 1189 1285 1380 1474 08~0F 1567 1660 1751 1842 1931 2019 2106 2191 10~17 2276 2359 2440 2520 2598 2675 2751 2824 18~1F 2896 2967 3035 3102 3166 3229 3290 3349 20~27 3406 3461 3513 3564 3612 3659 3703 3745 28~2F 3784 3822 3857 3889 3920 3948 3973 3996 30~37 4017 4036 4052 4065 4076 4085 4091 4095 38~3F 4096 4095 4091 4085 4076 4065 4052 4036 40~4790deg 4017 3996 3973 3948 3920 3889 3857 3822 48~4F 3784 3745 3703 3659 3612 3564 3513 3461 50~57 3406 3349 3290 3229 3166 3102 3035 2967 58~5F

57

2896 2824 2751 2675 2598 2520 2440 2359 60~67 2276 2191 2106 2019 1931 1842 1751 1660 68~6F 1567 1474 1380 1285 1189 1092 995 897 70~77 799 700 601 501 401 301 201 101 78~7F 0 65435 65335 65235 65135 65035 64935 64836 80~87180deg 64737 64639 64541 64444 64347 64251 64156 64062 88~8F 63969 63876 63785 63694 63605 63517 63430 63345 90~97 63260 63177 63096 63016 62938 62861 62785 62712 98~9F 62640 62569 62501 62434 62370 62307 62246 62187 A0~A7 62130 62075 62023 61972 61924 61877 61833 61791 A8~A8 61752 61714 61679 61647 61616 61588 61563 61540 B0~B7 61519 61500 61484 61471 61460 61451 61445 61441 B8~BF 61440 61441 61445 61451 61460 61471 61484 61500 C0~C7270deg 61519 61540 61563 61588 61616 61647 61679 61714 C8~CF 61752 61791 61833 61877 61924 61972 62023 62075 D0~D7 62130 62187 62246 62307 62370 62434 62501 62569 D8~DF 62640 62712 62785 62861 62938 63016 63096 63177 E0~E7 63260 63345 63430 63517 63605 63694 63785 63876 E8~EF 63969 64062 64156 64251 64347 64444 64541 64639 F0~F7 64737 64836 64935 65035 65135 65235 65335 65435 F8~FF

就程式結構而言說明如下

timer 即時控制程序(8KHz) RD ang ADD (frq) WR ang ang+=frq SFR 8 ADD (th) AND 255 ACC=sin(ang256+th) ADD tab WRH RDM table-look-up MUL (amp) SFR 12 ADD (bias) WR out out=ACCamp4096+bias RET

1基本上我們以查表法計算 sin()其輸入θ的範圍為 0~255對映到 0~360deg其輸出 sin(θ)的範圍為+-4096對映到+-10的範圍

2建立一個內部變數 ang其範圍為 0~65535對映到 0~360的相位角 3每個timer程序都執行 ang+=frq的動作更新目前的相位角接著依照 ang的相位角查表得到 sin(ang256+th)值

4由於表格長度為 256-word所以必須將 ang256才能得到正確的對映關係而 th範圍為 0~255所以不需要像 ang一般的做額外處理

5sin()的範圍為(+1-1)而在表格中以(+4096~-4096)的型式記錄相當於 10=4096所以執行 Asin()時還要用 SFR12指令做4096的動作才能正確的取得輸出值

58

6就頻率輸入 frq而言其計算原則是將θ=ωt轉化成θ=Σ(ωdt)因為抽樣頻率

為 8KHz所以 dt=18000而得到 frq=655368000Hz公式其中 Hz為真正的頻率在 8KHz的抽樣頻率下其範圍為 0~4000

鋸齒波產生器

此模組會產生週期性的鋸齒波方塊圖如下

outfrq

kBiasbias

ampkAmp

kFrqth

kThf=1TB

θ

A

其中

1鋸齒波也有四個參數振幅(A)頻率(F)相位(θ)和偏移(B)和正弦波的定義完全一致唯一的差異是其輸出為鋸齒波而非正弦波

2基本波形是從週期開始時為 0一直遞增到週期結束時到達最高點然後立刻回歸

到 0重新開始 3以程式結構而論鋸齒波程式幾乎就是正弦波的相位計算部分只差沒有正弦波的

查表處理而已

模組程式範例SAW_WAVEasm

local amp R0 IP kAmp 輸入點sin波的振幅 local frq R1 IP kFrq 輸入點sin波的頻率 local th R2 IP kTh 輸入點sin波的相角 local bias R3 IP kBias 輸入點sin波的中心偏移 local out R4 OP 輸出點sin波輸出 local ang R5 內部變數相位角65536=360deg local kAmp R6 1000 參數振幅值 local kFrq R7 1000 參數頻率值=655368000Hz local kTh R8 0 參數相角值360deg=256 local kBias R9 0 參數偏移值 data 11 模組變數區長度及初值 initial 啟動程序 WR ang0 WR out0 ang=out=0 RET timer 即時控制程序(8KHz) RD ang ADD (frq) WR ang ang+=frq SFR 8 ADD (th) AND 255 ACC=(ang256+th)amp0x00ff MUL (amp) SFR 8 ADD (bias) WR out out=ACCamp256+bias

59

RET

脈衝波產生器

outfrq

kBiasbias

ampkAmp

kFrqth

kThf=1TB

θ

A

pwm

kDutyduty

此模組會產生週期性的脈衝波方塊圖如下

其中

1脈衝波有五個參數其中振幅(A)頻率(F)相位(θ)和偏移(B)四個參數和正弦波

定義完全一樣另外再增加一個負載率(D) 2基本波形是從週期開始時為 1隔段時間後換為 0然後持續到週期結束再重新開始其中 1所佔有的比例就是負載率當 D=0時為 0而 D=255時為 100

3和其他參數類似負載率(D)以 duty為其輸入點而以 kDuty為其參數值

模組程式範例PLS_WAVEasm

local amp R0 IP kAmp 輸入點脈衝波的振幅 local frq R1 IP kFrq 輸入點脈衝波的頻率 local th R2 IP kTh 輸入點脈衝波的相角 local bias R3 IP kBias 輸入點脈衝波的中心偏移 local duty R4 IP kDuty 輸入點脈衝波的負載率 local out R5 OP 輸出點脈衝波輸出 local ang R6 內部變數相位角65536=360deg local kAmp R7 1000 參數振幅值 local kFrq R8 1000 參數頻率值=655368000Hz local kTh R9 0 參數相角值360deg=256 local kBias R10 0 參數偏移值 local kDuty R11 128 參數負載率100 =256 data 12 模組變數區長度及初值 initial 啟動程序 WR ang0 WR out0 ang=out=0 RET timer 即時控制程序(8KHz)

60

RD ang ADD (frq) WR ang ang+=frq SFR 8 ADD (th) AND 255 ACC=(ang256+th)amp0x00ff SUB (duty) RD (amp) JLT t1 RD 0 ACC=(amp0) t1 ADD (bias) WR out out=ACC+bias RET

IIR 一階濾波器

此模組執行一階的 IIR濾波器方塊圖如下

kau x

Z-1

+

+

-

+低通濾波器

高通濾波器dx lp

hp

濾波器參數的計算公式如下

1假設濾波器的頻寬為 hz則 ωn=hz628 2若系統頻率為 8KHz則抽樣週期 dT為 dT=dt8000 其中 dt為模組參數 3則濾波器參數為 ka=ωndT4096或是 =hzdt62880004096即 =hzdt32 4當 dt決定後所允許的訊號頻寬為(4000dt)換句話說訊號頻寬會因為 dt增加而下降

為了方便實驗的運用下面列出常用的參數對照表

濾波頻寬

(Hz)

10 20 50 100 200 500 1000 2000

訊號頻寬

(Hz)

400 800 2000 4000 4000 4000 4000 4000

模組參數 dt 10 5 2 1 1 1 1 1

模組參數 ka 320 320 320 320 640 1600 3200 6400

表格的運用方式如下

1首先決定濾波頻寬 2接著查表找出對映的參數 dt和 ka 3再查表得到對映的訊號頻寬以決定是否需要串接前級濾波器

61

模組程式範例IIR1_FILTERasm

local u R0 IP 輸入點濾波器輸入 local lp R1 OP 輸出點低通濾波器輸出 local hp R2 OP 輸出點高通濾波器輸出 local dt R3 1 參數抽樣週期 local ka R4 4096 參數增益 ka10=4096 local prd R5 內部變數抽樣週期用 data 6 模組變數區長度 initial 開機啟動程序 WR lp0 WR hp0 WR prd1 RET lp=hp=0prd=1 timer 即時控制程序 SUB prd1 JNZ b9 if (--prdgt0) return RD dt WR prd prd=dt RD (u) SUB lp WR hp hp=u-lp MUL ka SFR 12 ADD lp WR lp lp+=(hpka4096) b9 RET

資料蒐集模組

資料蒐集模組是一個非常特殊的模組專門配合 eTTY 程式中的示波器使用

模組程式範例DAS4asm

local cmd R0 0 紀錄命令0=停止1=前置記錄2=正觸發4=負觸發6=觸發記錄 local dt R1 1 抽樣週期每 dT抽樣一次 local tab R2 TP DAS表格啟始位址 local cnt R3 0 目前記錄點(0~255) local ch1 R4 0 定義頻道1的變數位址 local ch2 R5 0 定義頻道2的變數位址 local ch3 R6 0 定義頻道3的變數位址 local ch4 R7 0 定義頻道4的變數位址 local trg R8 0 定義觸發頻道的變數位址 local th R9 0 觸發準位 local tail R10 0 觸發後的抽樣個數 local buf R11 1 抽樣計數(1~dt) local pnt R12 表格位址計算pnt=tab+cnt4 local len R13 表格長度計算(0~256) data 14 定義模組變數區的長度 table tab 1024 定義表格的長度 initial 啟動程序 WR cmd0 RET cmd=0 timer 控制程序

62

ADD cmd0 JZ t9 if (cmd==0) return SUB buf1 JNZ t9 if (--buf)gt0) return RD dt WR buf dt=buf RD cnt ADD 1 AND 0xff WR cnt cnt=(cnt+1)amp0xff SFL 2 ADD tab WR pnt pnt=tab+cnt4 RD (ch1) WR (pnt) ADD pnt1 pnt++=ch1 RD (ch2) WR (pnt) ADD pnt1 pnt++=ch2 RD (ch3) WR (pnt) ADD pnt1 pnt++=ch3 RD (ch4) WR (pnt) pnt =ch4 RD cmd SUB 1 JZ t9 SUB 1 JZ t2 SUB 1 JZ t3 SUB 1 JZ t4 SUB 1 JZ t5 SUB 1 JZ t6 JR t7 t2 RD (trg) SUB th JGE t9 ADD cmd1 JR t9 wait trgltth t3 RD (trg) SUB th JLE t9 JR t6 wait trggtth t4 RD (trg) SUB th JLE t9 ADD cmd1 JR t9 wait trggtth t5 RD (trg) SUB th JGE t9 JR t6 wait trgltth t6 WR len0 WR cmd7 len=0cmd=7 t7 ADD len1 SUB tail JLT t9 WR cmd0 if ((++len)gt=0x80) cmd=0 t9 RET

與 DC 馬達控制相關的程式模組有以下 4個程式模組說明如下

(1)加減速控制模組 ACC_controlasm (2)光電盤輸入模組 POS_inputasm (3)PWM輸出模組 PWM_outputasm (4)PD控制模組 PD_controlasm

71加減速控制模組 此程式模組主要功能在於執行位置控制的加減速命令修正其數學模式採用 Lynn

濾波器的架構參見下圖

cmd

2

+

old Z -1

-

Z -1

Z -1

Z-1

Z-1x0 x1 x8 x9 x16

+ -

++

2

Z-1

Z-1 y1 y2

+

-

y0

+ +

sumZ-1

+164

12

out

dif

+

63

加減速控制模組方塊圖

其中

1Lynn 濾波器的階數固定成八階也就是 m=8其公式為 H(z) = (1-2Z-m+Z-2m)(1-2Z-1+Z-2)m2

2因為m=8所以m2=64因此最後計算低通濾波的部份時要先做除 64的運算 3因為低通濾波(lp)和 y0之間有 64倍的差異代表 y0y1y2的變化範圍比濾波器輸

入值要擴大許多例如輸入值在+-1000變化時y0y1y2很可能會在+-64000之間變化這範圍已經超出整數處理的範圍很可能會造成錯誤的計算結果

4所以在實驗時輸入值的變化範圍必須控制在+-500之間以保證計算的正確性 5對於 Lynn 濾波器當 m=8時其濾波器的頻寬固定為 1 kHzmdt也就是 dt=1時頻寬為 125 Hz dt=2時頻寬為 625Hz依此類推 6對於 Lynn 濾波器其濾波器的延遲固定為 m個抽樣週期因此設計 hp = x8 - lp 即可得到高通濾波器的對應結果 7其中乘 2和除 64的運算以移位運算取代所以整個程式中並無任何乘法運算 8Lynn 濾波器本身並不是穩定濾波器所以在程式啟動時必須確實的將所有狀態

(x0~x16)歸零否則會產生不穩定的狀態輸出

因為 Lynn濾波器中所有參數固定所以除了抽樣週期 dt 之外並無任何可調參數

抽樣週期 dt 可以控制頻寬dt 越大則濾波器頻寬越低

將步階命令值的輸出送入 Lynn 濾波器中經由低通濾波器的效應可以減緩命

令的變化程度達到加減速控制的目的以下為使用 Lynn 濾波器型式實現加減速控

制的組合語言程式列印 如欲更進一步瞭解 Lynn 濾波器與 FIR 數位濾波器之間的關係可以參考通訊實驗

四數位濾波器設計(FIR)中之說明

ACC_controlasm程式列印 local cmd R0 IP 輸入點位置命令

local out R1 OP 輸出點加減速處理後的位置命令

local dif R2 OP 輸出點位置微分命令

local axis R3 0 馬達編號0=X1=Y2=Z3=C

local old R4 內部變數微分計算用

local sumL R5 內部變數積分計算用

local sumH R6 內部變數積分計算用

local y0 R7 內部變數y(0~2)

local y1 R8 local y2 R9

local x0 R10 內部變數x(0~16)

local x1 R11 local x2 R12 local x3 R13 local x4 R14

local x5 R15 local x6 R16 local x7 R17 local x8 R18

local x9 R19 local x10 R20 local x11 R21 local x12 R22

local x13 R23 local x14 R24 local x15 R25 local x16 R26

64

data 27 模組變數區長度

initial 開機啟動程序

WR dif0 RD (cmd) WR out WR old dif=0 out=old=cmd

sumHL=cmd64

SFL 6 WR sumL RD out SFR 10 SGN 5 WR sumH

RPT 17 WR x00 RPT 3 WR y00 RET x[0~16]=0y[0~2]=0

timer 即時控制程序

RD (cmd) SUBX old WR x0 x0=cmd-old old=cmd

SUB x81 ADD x16 ADD y11 SUB y2 WR y0 y0=x0-2x8+x16+2y1-y2

SGN ADD sumL WR sumL RDH ADC sumH WR sumH sumHL+=y0

WRH RD sumL SFR 6 WR out out=sumHL64

RD y0 SGN SFR WR dif dif=y032mm

RD x0 RPT 16 RDX x1 x[i]=x[i-1] i=1~16

RD y0 RDX y1 WR y2 y[i]=y[i-1] i=1~2

b9 RET

72光電盤輸入模組

DC馬達的位置由光電盤量測之預設儲存於 0xac與 0xbe二個輸入埠位址中其中位址 0xac記錄 X軸馬達的位置位址 0xbe記錄 Y軸馬達的位置由於本實驗的DC馬達接在 Y軸的位置上因此程式中直接選用 Y軸的輸入 光電盤位置輸入的程式列印如下其中速度由位置的差分而得至於馬達的位置

則使用內部 2個 word加以記錄精度為 32位元 POS_inputasm程式列印 local spd R0 OP 輸出點速度量測值

local ang R1 OP 輸出點角度量測值

local angH R2 內部變數角度的 32 位元部分

local mode R3 0x308 模式選擇15MHzAB 相正反向輸入

local pht R4 0xac 輸入阜地址光電盤輸入(0xac)

local phtc R5 0xbe 輸入阜地址光電盤模式(0xbe)

local old R6 內部變數速度更新用

data 7 模組變數區長度

initial 開機啟動程序

RD mode WR (phtc) phtc=mode

RD (pht) WR old WR spd0 RET old=phtspd=0

timer 即時控制程序

RD (pht) SUBX old SGN 11 WR spd spd=(pht-old)old=pht

65

ADD ang WR ang angHL+=spd

RDH ADC angH WR angH

RET

73 PWM輸出控制模組 模組方塊

cmd PWM輸出

程式說明 1在開機時將切換保護時間寫到輸出阜 0xbc上其中切換保護值為 0~6360=5us 2在每次 timer interrupt時將 cmd訊號處理後寫到輸出阜 0xb8上

PWM_outputasm程式列印 local cmd R0 IP gnd 輸入點v相命令

local gain R1 4096 參數輸出增益1=4096

local bias R2 2048 參數輸出偏壓0=2048

local limit R3 4095 參數輸出極限1=4095

local zone R4 0x88f0 參數頻率=12KHz切換保護=5us

local pwm R5 0xb8 輸出阜地址PWM0 輸出(0xb8)

local mode R6 0xbc 輸出阜地址PWM 模式(0xbc)

local p0md R7 0xf8 輸出阜地址port0 模式(0xf8)

local gnd R8 0 輸入接地點

data 9 模組變數區長度

initial 開機啟動程序

RD bias WR (pwm) pwm=bias

RD 0xffff WR (p0md) set port0 mode

RD zone WR (mode) RET mode=zone

stop 關機保護程序

RD bias WR (pwm) RET pwm=bias

timer 即時控制程序

RD (mode) xor 1 and 1 WR (mode) trigger watch-dog

RD (cmd) MUL gain SFR 12 ADD bias ACC=(cmdgain4096)+bias

MAX 0 MIN limit WR (pwm) pwm=limit(ACC)

RET

66

74 PD 控制模組

PD控制的模組方塊參見圖二十一所示其中比例控制的部份直接由增益 kp加以調整微分控制的部份則由誤差的差分經增益 kd的調整而得

Σ+

-

cmd

fdk

err out

Σ

pk

dk

Σ

+

+

+

-

old1minusZ

PD控制器的方塊圖

PD_controlasm程式列印 local cmd R0 IP gnd 輸入點位置命令(可忽略)

local fdk R1 IP gnd 輸入點位置回授(可忽略)

local out R2 OP 輸出點用以控制速度迴路

local kp R3 256 參數增益 kp10=256

local kd R4 0 參數增益 kd10=256

local err R5 0 內部變數

local old R6 0 內部變數

local gnd R7 0 無輸入時的短路點

data 8 模組變數區長度

initial 開機啟動程序

WR out0 WR old0 RET out=old=0

timer 即時控制程序

RD (cmd) SUB (fdk) PRTF WR err

MUL kp SFR 8 P=(cmd-fdk)kp256

RDS err SUBX old MUL kd SFR 8 D=(err-old)kd256

ADDS

WR out out=P+D

RET

程式中預設增益值的 10以整數值 256為基底因此使用 SFR 8的指令加以調

整另外在在計算微分項的程式部份用到 SUBX old的指令其詳細的暫存器動作如

下 參考 piDSP的指令說明SUBX指令將總共用到 3個時序參考錯誤 找不到參照

67

來源在時序 1時將原先 AX的資料拷貝一份到 HX中時序 2時正式執行減

法的動作所以 AX暫存器中的內容會變成 err-old時序 3時DSP會將存放在 HX暫存器中的內容拷貝一份到 old的記憶體中也就是經由 SUBX此一精簡指令將

同時完成計算差分所需要的相減與資料疊代的動作有效的利用 piDSP控制器 DSP核心的精簡指令將可以大幅提昇系統的計算速度

HX AXoldSUBXerr err

old

err

errerr olderr minus

1_err

errerr olderr minus err

1_err

1

2

3

SUBX的指令時序與暫存器變化

68

8附錄快速安裝說明

光纖網路通訊 FPGA 發展系統 (適用於 WIN-XP200098 系統)

快速安裝說明

26Pin 負載輸出入埠

雙電源︵5

12

伏︶輸入埠

單電源︵5

伏︶輸入埠

USB

光纖線輸

號 光纖線輸出埠

入 傳 埠

首先將光碟片 RFFPGA 目錄檔案拷貝在您工作硬碟裡面

第一次安裝時先將 USB 傳輸線接上電腦主機將電源供應器接上 FPGA 模組此時電

腦會出現安裝 USB-Serial 驅動程式選擇從清單安裝此驅動程式放置在光碟片

RFFPGA-USBdrive 選擇您目前安裝系統

可選擇 WIN-98WIN-MEWIN-2000WIN-XP 系統配合您現在工作電腦作業系統

69

注意一般電腦 USB 埠很多插口當您安裝驅動程式時是配合您當時插入之埠

下次如您插入不同接口埠時電腦會再次要求安裝驅動程式這是正常現象請再次安

裝驅動程式否則無法使用

FPLC 操作

首先進入 RFFPGA裡子目錄 testASM直接點選 fPLCexe 出現下面操作畫面(也可直接將

此檔案放置桌面直接點選)

(或者選擇 File 再執行 Setuphellip 選擇您要執行 CAI 檔)

70

進入下面操作畫面 首先使用滑鼠在 FPGA下載按鈕單擊動作使 FPGA變成 DSP晶片 實驗一至實驗五皆為使用 DSP組合語言設計程式其原始程式分別為 testASM1至testASM5可使用 texPad 開啟與編輯程式內容 實驗三與實驗五多有 IO控制動作 當選擇實驗三時出現下面畫面

71

eM_USB 模組

數字型 LED

0 1 2 34 5 6 78 9 A BC D E F

燈號型 LED

44 鍵盤

ADC0 ADC1 DAC0 DAC1

LED 選擇KEY 選擇

模 式 1

0123

注意操作畫面 3與 4 說明開關與按鍵選擇位置後選擇程式下載再按程式啟動如您

按下 0-3按鍵時燈號型 LED會有不同方向閃爍顯示程式停止時結束所有 IO控制動作再按回首頁選擇其他實驗 實驗四與實驗五

模式3

0 1 2 34 5 6 78 9 A BC D E F

按照上面開關選擇直接操作如果以上實驗皆能按照正常操作表示您光纖網路通訊

FPGA發展模組以能正常使用 注意 開機與關機動作順序如下

開機電腦啟動 --- eM_USB 模組電源接上 --- USB 接上電腦 ---

啟動 FPLC 軟體 --- 下載 FPGA 程式

關機關閉 FPLC 軟體 --- eM_USB 模組電源拔掉 --- 拔掉電腦 USB 接頭 ---關掉

電腦

如果以上順序有亂可能造成 USB 找不到驅動造成無法下載經過幾次測試還是

無法下載建議重新啟動電腦主機按照正確步驟操作

72

FPGA 下載操作

進入 FPLC 操作系統按照下列步驟選擇節點模組與下載 bit FPGA 檔案

在 VHDLDEMO 子目錄下您可以選擇您目前 FPGA 種類型號在此型號下我們已將 VHDL

與數位邏輯設計課本範例全部放於此處

73

光纖網路連線 FPGA 下載操作

首先利用光纖線將 eM_USB0 模組光纖輸出埠接至 eM_USB1 模組光纖輸入埠以此

類推最後再將最後 eM_USBN 模組光纖輸出埠接至 eM_USB0 模組光纖輸入埠配置

如附圖方式

個人電腦(Windows) eM_USB模組

0USB

eM_USB模組1

光纖網路

eM_USB模組2

eM_USB模組N

配置完成後進入 FPLC 系統首先必須先將 Node00 下載在 testASM 子目錄裡

piDSPv0bit 檔讓 eM_USB0 模組 FPGA 具備 DSP 功能才能執行光纖網路通訊

操作如下

此時您就可以選擇分別下載至各模組 FPGA 檔 bit

74

安裝 FPLC 注意事項

當您進入 FPLC 時

按 FILE 選擇 programhellip 選擇檔案為 exp_dcmplc 出現下面畫面

正常顯示畫面為

75

DOS 環境操作

在 PC 端的操作是在 Windows 環境中的 DOS 視窗中執行指令範例如下

eFPGA progNETbit 下載 FPGA電路至網路節點0(即 USB節點)中 eFPGA testLEDbit 1 下載 FPGA電路至網路節點1中

對於單一節點的控制程序如下

1將 eM_USB模組連結個人電腦的 USB端 2eM_USB模組開機 3執行下載指令即可 eFPGA xxxxbit 4若要更改 FPGA電路只要重新執行下載指令即可

對於多個網路節點的控制程序如下

1第一組 eM_USB模組連結個人電腦的 USB端再以光纖網路依序其他各節點 2連接 USB界面者為模組0從光纖發射端連接出去的模組為1依此類推 3將所有 eM_USB模組開機 4執行下載指令如下 eFPGA progNETbit 模組0必須先下載指定的 FPGA電路 eFPGA xxxxbit 1 再依序下載其他網路模組的 FPGA電路 eFPGA yyyybit 2 eFPGA zzzzbit 最後再重新下載模組0的 FPGA電路 5換句話說模組0必須先執行 progNETbit讓光纖網路接受 FPGA控制後才能透過光纖網路下載至其他節點等全部網路節點下載完畢後再將模組0的 FPGA重新下載讓模組0也可自由執行任意的 FPGA電路

6若要更改某一個網路節點中的 FPGA電路只要重新執行下述指令 eFPGA progNETbit 模組0必須先下載指定的 FPGA電路 eFPGA yyyybit 2 下載指定網路模組的 FPGA電路 eFPGA zzzz bit 最後再重新下載模組0的 FPGA電路 換句話說除非模組0中的 FPGA已經包括光纖網路管理電路否則一定要先在

模組0中下載網路管理電路後才能下載指定網路節點的 FPGA電路

76

光纖網路通訊 FPGA 發展系統

系統配置

光纖網路通訊 FPGA 發展系統的系統配置圖如下

個人電腦(Windows) eM_USB模組

0USB

eM_USB模組1

光纖網路

eM_USB模組2

eM_USB模組N

其中

1基本模組為 eM_USB模組可用 USB界面和個人電腦連線並提供 USB對光纖網路的轉換功能使得個人電腦可以獨立控制光纖網路中的每個網路節點

2eM_USB模組也可以作為光纖網路中的網路節點透過光纖網路而接受個人電腦的

監控 3就個人電腦而言不論是 USB界面直接連結或是以光纖網路間接連結的 eM_USB模組都是可以直接監控的網路節點最多可以同時控制一個 USB節點和 30個網路節點

4對於每一個網路節點個人電腦都可執行 eM_USB模組中 FPGA的電路下載工作並在適當的 FPGA電路配合下可執行 eM_USB模組中 FPGA內部電路的讀寫控制 5透過適當的 FPGA電路設計各網路節點都可透過光纖網路和其他任何網路節點

作同步通訊執行 FPGA內部記憶體的資料交換資料交換頻率可達 1KHz以上

77

網路模組配置

每個網路模組的標準配置圖如下

eM_USB模組光纖網路

USB eM_FPGA卡

eM_DEMO模組

eM_EXP實驗模組

DC電源

其中

1網路模組以 eM_USB模組為主提供基本的 USB界面和光纖網路連線 2eM_USB模組中的 FPGACPLD採用插卡型式可選擇不同的 eM_FPGA卡包括

eM_2V1K卡可選用 Virtex系列的 XC2V250和 XC2V1000 eM_3S1K卡可選用 Spartan3系列的 XC3S400XC3S1000和 XC3S1500 eM_3S50卡可選用 Spartan3系列的 XC3S50XC3S200和 XC3S400 eM_95XL卡可選用 9500XL系列的 XC95144XL和 XC95288XL 3eM_USB模組中的對外連線有兩種一種是 26P接頭用以連接既有的各種實驗模

組另一種是兩組 50P接頭將 FPGA中各接腳引出用以連接專題實驗 4eM_DEMO模組就是插上 50P接頭的教學模組其中包括 LED 數字顯示和 44鍵盤也具備兩組的 ADC和兩組的 DAC接頭提供類比訊號的測試工具

常用的實驗組合包括

1精簡組合包括(eM_USB+eM_FPGA)提供基本的網路節點適用於專題實驗 2標準組合包括(eM_USB+eM_FPGA+eM_DEMO)提供基礎 FPGA設計的教學實驗

3實驗組合包括(eM_USB+eM_FPGA+eM_DEMO+eM_EXP)提供進階的 FPGA實驗可依需求選用不同的實驗模組

78

eM_USB 模組

eM_USB 模組的電路配置圖如下

TxRx

DCPower

USB

JP2

JP3

光纖界面

外加電源

PC連線

JP1

eM_FPGA模組

FT232 CPLD FlashROM

SRAM

10cm

6cm

JP4

其中

1對外的連線接頭包括 DC電源 可選擇單電源(5V)或是多電源(5V+12V-12V)兩種 USB界面 直接連接個人電腦 光纖界面連接光纖網路 2實驗界面包括 JP1負責內部 CPLD的電路下載 JP2JP3兩組 50P的擴張用接頭 JP4 標準 26P接頭用以連接各種實驗模組 3內部的電路配置包括 A以 SO-DIMM接頭連接各種 eM_FPGA卡 B內附 EEPROMFlashROM和 SRAM提供 FPGA作應用測試 C以一顆 FT232BM作為 USB界面解碼而以一顆 CPLD作為光纖網路解碼 D提供各種 eM_FPGA卡的電路下載功能 4內附五顆 LED由上而下依序為 usbLED指示 USB界面的讀寫狀態 tstLED可由 FPGA電路自行定義 stsLED可由 FPGA電路自行定義 RxLED 可由 FPGA電路自行定義 TxLED 可由 FPGA電路自行定義

79

外部接腳定義

外部接頭的接點順序圖示如下

上視圖

JP11 9 JP4

126225

JP31

50249

JP21

50249

而各接頭的接點定義如下

JP1 JP4 JP2 JP3 1+33V 1+12V 2+12V 1 GND 2 GND 1 GND 2 GND 2GND 3 ADC 4 DAC 3POWER 4ALARM 3 +5V 4 +5V 3nc 5 yPB2 6 yPB3 5RxNET 6TxNET 5+12V 6+12V 4TCK 7 yPB1 6 yPB4 7RxUSB 6TxUSB 7-12V 6-12V 5nc 9 yPB0 10yPB5 9RxCAN 10TxCAN 9 ADC 10 DAC 6TDO 11yPB6 12yPB7 11P0D0 12P0D1 11P1D0 12P1D1 7TDI 13yGND 14yPC3 13P0D2 14P0D3 13P1D2 14P1D3 8nc 15yPC2 16yPC1 15P0D4 16P0D5 15P1D4 16P1D5 9TMS 17yPC0 18yPA0 17P0D6 18P0D7 17P1D6 18P1D7 19yPA1 20yPA2 19P0D8 20P0D9 19P1D8 20P1D9 21yPA3 22GND 21P0D10 22P0D11 21P1D10 22P1D11 23GND 24+5V 23P0D12 24P0D13 23P1D12 24P1D13 25+5V 26nc 25P0D14 26P0D15 25P1D14 26P1D15 27P2D0 28P2D1 27PxA0 28PxA1 29P2D2 30P2D3 29PxA2 30PxA3 31P2D4 32P2D5 31PxA4 32PxA5 33P2D6 34P2D7 33PxA6 34PxA7 35P2D8 36P2D9 35PxB0 36PxB1 37P2D10 38P2D11 37PxB2 38PxB3 39P2D12 40P2D13 39PxB4 40PxB5 41P2D14 42P2D15 41PxB6 42PxB7 43ADC0 44ADC1 43PxC0 44PxC1 45ADC2 46ADC3 45PxC2 46PxC3 47ADC4 48ADC5 47PxC4 48PxC5 49DAC0 50DAC1 49PxC6 50PxC7

80

eM_FPGA 模組

在各種 eM_FPGA 模組中FPGA 對外電路的標準配置圖如下

24576MHz

FlashROM

26PSRAM

EEPROM

mD[8]

yPA[4]

FPGACPLD

mA[19]mRDmWRmCSeeCKeeCSeeDIeeDO

光纖界面 RxNETTxNET

USB 界面 RxUSBTxUSBCLK24MPOWERALARM

LED

tstLEDstsLEDRxLEDTxLED

yPB[8]yPC[4]

ADCDAC

ADC[8]

實驗模組

ADC[2]

DAC[2]

xPA[4]

xPB[8]

xPC[4]

基礎實驗

其中

1FPGACPLD可以選擇下述幾種 XC2V250XC2V1000 採用 eM_2V1K模組其中 FPGA為 FG456包裝 XC3S400XC3S1000XC3S1500採用 eM_3S1K模組其中 FPGA為 FG456包裝 XC3S400XC3S1000XC3S1500採用 eM_3S1K模組其中 FPGA為 FG456包裝 XC3S50XC3S200XC3S400 採用 eM_3S50模組其中 FPGA為 TQ144包裝 XC95144XLXC95288XL 採用 eM_95XL模組其中 CPLD為 TQ144包裝 2採用 FG456包裝者可以控制所有的 IO界面 3採用 TQ144包裝者只是不能控制 RAM和 FlashROM而可以控制其他所有的界面 4所有 FPGA模組都可自由選擇由 USB界面或是由光纖界面下載電路但是 CPLD模組只能固定由 USB界面下載電路

5所有 FPGACPLD模組都可透過 26P接頭連接既有的各種實驗模組

81

FPGA 接腳對照表

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

mD0 XD6 mD0 A17 C13 -- -- mD1 XD7 mD1 B17 D12 -- -- mD2 XD8 mD2 C17 D11 -- -- mD3 XD9 mD3 D17 C11 -- -- mD4 XD10 mD4 E17 D10 -- -- mD5 XD11 mD5 E16 C10 -- -- mD6 XD12 mD6 E14 D9 -- -- mD7 XD13 mD7 E13 D7 -- -- mA0 XD14 mA0 D13 C7 -- -- mA1 XD15 mA1 C13 D6 -- -- mA2 XA0 mA2 V5 C3 -- -- mA3 XA1 mA3 U5 C4 -- -- mA4 XA2 mA4 Y2 D3 -- -- mA5 XA3 mA5 Y1 D4 -- -- mA6 XA4 mA6 V4 E3 -- -- mA7 XA5 mA7 V3 E4 -- -- mA8 XA6 mA8 W2 F3 -- -- mA9 XA7 mA9 W1 F4 -- -- mA10 XA8 mA10 T2 G6 -- -- mA11 XA9 mA11 T1 K3 -- -- mA12 XA10 mA12 R4 K10 -- -- mA13 XA11 mA13 R3 L3 -- -- mA14 XA12 mA14 R2 L4 -- -- mRD XRD mRD R1 D5 -- -- mWR XWR mWR P6 C6 -- --

POWER P0A0 POWER B4 B20 P1 P5 ALARM P0A1 ALARM A4 A19 P2 P6 RxNET P0A2 RxNET C4 B19 P4 P7 TxNET P0A3 TxNET C5 A18 P5 P9 RxUSB P0B0 RxUSB B5 A15 P6 P10 TxUSB P0B1 TxUSB A5 B15 P7 P11 RxCAN P0B2 RxCAN D6 A14 P8 P12 RxCAN P0B3 TxCAN C6 B14 P10 P13

CLK24M CLK24M CLK24M E12 B12 P124 P38

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

PWM0H P3A0 P0D0 E6 A8 P21 P23 PWM0L P3A1 P0D1 E5 B8 P23 P24 PWM1H P3A2 P0D2 C2 B6 P24 P25 PWM1L P3A3 P0D3 C1 A5 P25 P26 PWM2H P3A4 P0D4 D2 B5 P26 P27

82

PWM2L P3A5 P0D5 D1 A4 P27 P28 PWMenb P3A6 P0D6 E4 B4 P28 P30 PHT1Z P3A7 P0D7 E3 A3 P30 P31 PHT1A P3B0 P0D8 G2 C1 P31 P32 PHT1B P3B1 P0D9 G1 C2 P32 P33 PHT0A P3B2 P0D10 H5 D1 P33 P34 PHT0B P3B3 P0D11 J6 D2 P35 P35 AMP0 P3B4 P0D12 H4 E1 P36 P39 AMP1 P3B5 P0D13 H3 E2 P40 P40 AMP2 P3B6 P0D14 H2 F2 P41 P41 AMP3 P3B7 P0D15 H1 G1 P44 P43 eeSK P0C3 P1D0 C10 B9 P20 P22 eeCS P0C2 P1D1 D10 A9 P18 P21 eeDI P0C1 P1D2 F10 B10 P17 P20 eeDO P0C0 P1D3 E10 B11 P15 P19 ssCK P0B7 P1D4 E8 A11 P14 P17 ssCS P0B6 P1D5 E7 A12 P13 P16 ssDI P0B5 P1D6 A6 B13 P12 P15 ssDO P0B4 P1D7 B6 A13 P11 P14

ppCLK P3C0 P1D8 K4 G2 P46 P44 ppDIN P3C1 P1D9 K3 K1 P47 P45 TxD P3C2 P1D10 K2 K2 P50 P46 RxD P3C3 P1D11 K1 L1 P51 P48

tstLED P3C4 P1D12 L5 L2 P52 P49 stsLED P3C5 P1D13 L4 M1 P53 P50 RxLED P3C6 P1D14 L3 M2 P55 P51 TxLED P3C7 P1D15 L2 N1 P56 P52

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

xPA0 P2A0 P2D0 AA3 N2 P59 P53 xPA1 P2A1 P2D1 Y4 T1 P60 P54 xPA2 P2A2 P2D2 AA4 T2 P63 P56 xPA3 P2A3 P2D3 AB4 U2 P68 P57 xPC0 P2A4 P2D4 W5 V1 P69 P58 xPC1 P2A5 P2D5 Y5 V2 P70 P59 xPC2 P2A6 P2D6 AA5 W1 P73 P60 xPC3 P2A7 P2D7 AB5 W2 P74 P61

-- P2B0 P2D8 V6 Y1 P76 P64 -- P2B1 P2D9 V7 Y2 P77 P66 -- P2B2 P2D10 W6 AA3 P78 P68

mCS P2B3 P2D11 Y6 AB4 P79 P69 mA15 P2B4 P2D12 V9 AA4 P80 P70 mA16 P2B5 P2D13 V10 AB5 P82 P71 mA17 P2B6 P2D14 W10 AA5 P83 P74 mA18 P2B7 P2D15 Y10 AA6 P84 P75 CS0 P2C0 ADC0 AA10 AB8 P85 P76

83

SDIN0 P2C1 ADC1 AB10 AA8 P86 P77 CS1 P2C2 ADC2 U10 AB9 P87 P78

SDIN1 P2C3 ADC3 U11 AA9 P89 P79 SCLK P2C4 ADC4 V11 AB10 P90 P80 CS2 P2C5 ADC5 W11 AA10 P92 P81

SDOUT P2C6 ADC6 Y11 AB11 P93 P82 LDAC P2C7 ADC7 AA11 AA11 P95 P83

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

xPB0 P1A0 PxA0 M1 M3 P135 P85 xPB1 P1A1 PxA1 M2 M4 P132 P86 yPB2 P1A2 PxA2 M3 N3 P131 P87 yPB3 P1A3 PxA3 M4 N4 P130 P88 yPB1 P1A4 PxA4 M5 T4 P129 P91 yPB4 P1A5 PxA5 M6 T5 P128 P92 yPB0 P1A6 PxA6 N1 U3 P127 P93 yPB5 P1A7 PxA7 N2 U4 P125 P94 yPB6 P1B0 PxB0 U13 V3 P119 P95 yPB7 P1B1 PxB1 V13 V4 P118 P96 xPB2 P1B2 PxB2 W13 W3 P116 P97 xPB3 P1B3 PxB3 Y13 W4 P113 P98 xPB4 P1B4 PxB4 AA13 Y3 P112 P100 xPB5 P1B5 PxB5 AB13 Y4 P96 P101 yPC3 P1B6 PxB6 U12 Y5 P97 P102 yPC2 P1B7 PxB7 V12 W5 P98 P103 yPC1 P1C7 PxC0 AB17 W11 P108 P113 yPC0 P1C6 PxC1 AA17 Y11 P107 P112 yPA0 P1C5 PxC2 Y17 W10 P105 P111 yPA1 P1C4 PxC3 W17 Y10 P104 P110 yPA2 P1C3 PxC4 AB18 W9 P103 P107 yPA3 P1C2 PxC5 AA18 W8 P102 P106 xPB6 P1C1 PxC6 Y18 W6 P100 P105 xPB7 P1C0 PxC7 W18 Y6 P99 P104

84

eM_DEMO 模組

eM_DEMO 模組的電路配置圖如下

eM_USB 模組

數字型 LED

0 1 2 34 5 6 78 9 A BC D E F

燈號型 LED

44 鍵盤

ADC0 ADC1 DAC0 DAC1

LED 選擇KEY 選擇

其中

1eM_DEMO模組的基本功能包括 A將 xPAxPBxPC等 16個 IO訊號引出控制 LED和鍵盤電路 B將 ADDA訊號引出並放大成+-10V的工作範圍 2LED和鍵盤可以選擇三種模式由 LED和 KEY 兩組開關作選擇圖示如下

模式1

0123

模式2 模式3

0 1 2 34 5 6 78 9 A BC D E F

0123

3模式14鍵輸入並搭配 16點的 LED燈號顯示其中 16點 LED分別對映到 xPA[0~3]xPB[0~7]和 xPC[0~3] 4組按鍵分別對映到 xPC[0~3] 4模式24鍵輸入並搭配四個 7段式數字顯示其中 數字顯示由 xPA[0~3]作數字掃瞄而由 xPB[0~7]作 7段式 LED控制 4組按鍵 分別對映到 xPC[0~3] 5模式316鍵輸入並搭配四個 7段式數字顯示其中 數字顯示由 xPA[0~3]作數字掃瞄而由 xPB[0~7]作 7段式 LED控制 16組按鍵由 xPA[0~3]作鍵盤掃瞄而由 xPC[0~3]作鍵盤讀取 6根據VHDL與數位邏輯設計的章節其中 第 1章至 10章的實驗採用模式1而 第 11章實驗採用模式2而 第 12章之後的實驗都採用模式3

85

FPGA UCF 定義

eM_3S1K 模組

NET CLK LOC = B12

NET XAlt0gt LOC = N2

NET XAlt1gt LOC = T1

NET XAlt2gt LOC = T2

NET XAlt3gt LOC = U2

NET XBlt0gt LOC = M3

NET XBlt1gt LOC = M4

NET XBlt2gt LOC = W3

NET XBlt3gt LOC = W4

NET XBlt4gt LOC = Y3

NET XBlt5gt LOC = Y4

NET XBlt6gt LOC = W6

NET XBlt7gt LOC = Y6

NET XClt0gt LOC = V1

NET XClt1gt LOC = V2

NET XClt2gt LOC = W1

NET XClt3gt LOC = W2

NET YAlt0gt LOC = W10

JP4 接頭

NET YAlt1gt LOC = Y10

NET YAlt2gt LOC = W9

NET YAlt3gt LOC = W8

NET YBlt0gt LOC = U3

NET YBlt1gt LOC = T4

NET YBlt2gt LOC = N3

NET YBlt3gt LOC = N4

NET YBlt4gt LOC = T5

NET YBlt5gt LOC = U4

NET YBlt6gt LOC = V3

NET YBlt7gt LOC = V4

NET YClt0gt LOC = Y11

NET YClt1gt LOC = W11

NET YClt2gt LOC = W5

NET YClt3gt LOC = Y5

在光碟片中 RFFPGAVHDLDEMOBIT3S1K 裡有 VHDL 與數位邏輯設計書本範例原始檔與合成檔

86

eM_3S50 模組

NET CLK LOC = P124

NET XAlt0gt LOC = P59

NET XAlt1gt LOC = P60

NET XAlt2gt LOC = P63

NET XAlt3gt LOC = P68

NET XBlt0gt LOC = P135

NET XBlt1gt LOC = P132

NET XBlt2gt LOC = P116

NET XBlt3gt LOC = P113

NET XBlt4gt LOC = P112

NET XBlt5gt LOC = P96

NET XBlt6gt LOC = P100

NET XBlt7gt LOC = P99

NET XClt0gt LOC = P69

NET XClt1gt LOC = P70

NET XClt2gt LOC = P73

NET XClt3gt LOC = P74

NET YAlt0gt LOC = P105

JP4 接頭

NET YAlt1gt LOC = P104

NET YAlt2gt LOC = P103

NET YAlt3gt LOC = P102

NET YBlt0gt LOC = P127

NET YBlt1gt LOC = P129

NET YBlt2gt LOC = P131

NET YBlt3gt LOC = P130

NET YBlt4gt LOC = P128

NET YBlt5gt LOC = P125

NET YBlt6gt LOC = P119

NET YBlt7gt LOC = P118

NET YClt0gt LOC = P107

NET YClt1gt LOC = P108

NET YClt2gt LOC = P98

NET YClt3gt LOC = P97

在光碟片中 RFFPGAVHDLDEMOBIT3S200 裡有VHDL與數位邏輯設計書本範例原始檔與合成檔

87

eM_95XL 模組

NET CLK LOC = SPIN38

NET XAlt0gt LOC = SPIN53

NET XAlt1gt LOC = SPIN54

NET XAlt2gt LOC = SPIN56

NET XAlt3gt LOC = SPIN57

NET XBlt0gt LOC = SPIN85

NET XBlt1gt LOC = SPIN86

NET XBlt2gt LOC = SPIN97

NET XBlt3gt LOC = SPIN98

NET XBlt4gt LOC = SPIN100

NET XBlt5gt LOC = SPIN101

NET XBlt6gt LOC = SPIN105

NET XBlt7gt LOC = SPIN104

NET XClt0gt LOC = SPIN58

NET XClt1gt LOC = SPIN59

NET XClt2gt LOC = SPIN60

NET XClt3gt LOC = SPIN61

NET YAlt0gt LOC = SPIN111

JP4 接頭

NET YAlt1gt LOC = SPIN110

NET YAlt2gt LOC = SPIN107

NET YAlt3gt LOC = SPIN106

NET YBlt0gt LOC = SPIN93

NET YBlt1gt LOC = SPIN91

NET YBlt2gt LOC = SPIN87

NET YBlt3gt LOC = SPIN88

NET YBlt4gt LOC = SPIN92

NET YBlt5gt LOC = SPIN94

NET YBlt6gt LOC = SPIN95

NET YBlt7gt LOC = SPIN96

NET YClt0gt LOC = SPIN112

NET YClt1gt LOC = SPIN113

NET YClt2gt LOC = SPIN103

NET YClt3gt LOC = SPIN102

在光碟片中 RFFPGAVHDLDEMOSVF95288XL 裡有VHDL與數位邏輯設計書本範例原始檔與合成

檔案

88

eM_FPGA 模組

NET CLK LOC = E12

NET XAlt0gt LOC = AA3

NET XAlt1gt LOC = Y4

NET XAlt2gt LOC = AA4

NET XAlt3gt LOC = AB4

NET XBlt0gt LOC = M1

NET XBlt1gt LOC = M2

NET XBlt2gt LOC = W13

NET XBlt3gt LOC = Y13

NET XBlt4gt LOC = AA13

NET XBlt5gt LOC = AB13

NET XBlt6gt LOC = Y18

NET XBlt7gt LOC = W18

NET XClt0gt LOC = W5

NET XClt1gt LOC = Y5

NET XClt2gt LOC = AA5

NET XClt3gt LOC = AB5

NET YAlt0gt LOC = Y17

JP4 接頭

NET YAlt1gt LOC = W17

NET YAlt2gt LOC = AB18

NET YAlt3gt LOC = AA18

NET YBlt0gt LOC = N1

NET YBlt1gt LOC = M5

NET YBlt2gt LOC = M3

NET YBlt3gt LOC = M4

NET YBlt4gt LOC = M6

NET YBlt5gt LOC = N2

NET YBlt6gt LOC = U13

NET YBlt7gt LOC = V13

NET YClt0gt LOC = AA17

NET YClt1gt LOC = AB17

NET YClt2gt LOC = V12

NET YClt3gt LOC = U12

在光碟片中 RFFPGAVHDLDEMOBIT2V250 裡有VHDL與數位邏輯設計書本範例原始檔與合成檔

89

Page 38: RFFPGA 直流馬達實驗手冊juniortek.com.tw/program/manual/RF-DC-mal.pdf · em_demo模組 em_dcm 直流伺服馬達 dc電源 rffpga 系統的直流馬達實驗規劃 其中包括:

以邏輯分析功能觀測直流馬達之光電盤輸入與 PWM輸出信號

38

62 實驗 2-閉迴路的速度控制 實驗說明為了觀測閉迴路的速度控制響應建立下面的測試方塊圖

加入 PD控制後系統閉迴路的轉移函數經適度的簡化仍能約略以一階系統

處理方塊圖如下

sτ+1

u km ωm

其中

u 送給控制器的速度命令

ωm馬達的轉動速度可由處理 photo encoder 信號所得的位置微分而得

km一階系統的穩態增益 τ一階系統的時間常數即步階響應中的上升時間

方塊圖中的模組功能說明如下

1用 fg1 產生測試用的方波速度命令

2將方波速度命令和速度回授訊號送到 PD 控制器方塊中產生電壓控制訊號再透

過 io2 模組將訊號送出給伺服介面

3用 ft1 建立對照用的一階系統可用 IIR1濾波器方塊產生

4將方波命令產生速度命令再觀測 PHT(io1)上的速度值 spd

5調整 IIR1濾波器的參數使得兩組波形完全相符這時 IIR1濾波器就是閉迴路

速度控制的特性其中 km 為增益而τ為上升時間(單位為 sec)

6增益 km 可從示波器中作簡單計算而上升時間(τ=40964000dtka)

7 Led四位數字七段顯示模組顯示波形信號資料

39

對應之 plc檔程式說明(exp_speedplc) echo off 畫面顯示開始

run dsp 0 選擇 DSP1

run stop run reset 既有程式停止

run testDCMmem 下載指定程式

das 1 ampfg1out 0 1024 PWM 波形 Volt 設定 DAS 頻道1

das 2 ampft1lp 0 1024 馬達模擬 Volt 設定 DAS 頻道2

das 3 ampio1spd 0 1024 馬達速度 Volt 設定 DAS 頻道3

das 4 ampio1ang 0 1024 馬達角度 Volt 設定 DAS 頻道4

plot select 0 設定示波器頁數

plot xunit 100000 0 設定示波器 X軸

plot yunit 1 50 -300 設定示波器 Y1 軸

plot yunit 2 50 -100 設定示波器 Y2 軸

plot yunit 3 50 100 設定示波器 Y3 軸

plot yunit 4 50000 300 設定示波器 Y4 軸

plot trigger 1 0 1 10 設定示波器觸發

plot scope 9 1 2 3 4 設定示波器顯示

module io2 設定 io2 模組

s cmd ampcn2out

module fg1 設定 fg1 模組

s kAmp 50 s kFrq 150

module cn2 設定 cn1 模組

s cmd ampfg1out s fdk ampio1spd s kp 0x4000

module ft1 設定 ft1 模組

s u ampfg1out s dt 2 s ka 320

module io3 設定 io3 模組

s led ampfg1out

module 回復預設模組

run 1khz 設定抽樣頻率為 4KHz

run start DSP 開始執行

das stop pause 1 DAS 啟動 das start DAS 啟動

echo on 回復正常訊息顯示

CAI操控設計畫面規劃如下(EXP_speedCAI)

40

page 1 畫面設計 page 2 與 page 3 畫面設計與實驗一 page 2 與 page 3相同畫面 page 4 畫面設計

41

方塊的參數設定 使用者可視情況調整一階濾波器的 ka和 dt值使得 ch2和 ch3 兩組波形完全相符

以求得此一閉迴路系統近似的一階轉移函數或調整 PD控制器中的 kp和 kp值以調整系統之響應 實測響應圖

訊 號 說 明 訊 號 說 明 ch1 方波產生器產生之速度命令 ch3 一階濾波器輸出信號 ch2 馬達角速度訊號 ch4 馬達角位置訊號

42

直流馬達之閉迴路速度控制響應圖

43

63 實驗 3-閉迴路的位置控制 實驗說明為了觀測閉迴路的位置控制響應將直流馬達的回授改為位置訊號

建立下面的測試方塊圖 方塊圖中的模組功能說明如下

1用 fg1產生測試用的方波位置命令 2將方波位置命令和位置回授訊號送到 PD控制器方塊中產生電壓控制訊號再透過 io2模組將訊號送出到伺服介面驅動馬達轉動

對應之 plc檔程式說明(exp_angleplc) echo off 畫面顯示開始

run dsp 0 選擇 DSP1

run stop run reset 既有程式停止

run testDCMmem 下載指定程式

das 1 ampfg1out 0 1024 PWM 波形 Volt 設定 DAS 頻道1

das 2 ampft1lp 0 1024 馬達模擬 Volt 設定 DAS 頻道2

das 3 ampio1spd 0 1024 馬達速度 Volt 設定 DAS 頻道3

das 4 ampio1ang 0 1024 馬達角度 Volt 設定 DAS 頻道4

plot select 0 設定示波器頁數

plot xunit 100000 0 設定示波器 X軸

plot yunit 1 1000 -300 設定示波器 Y1 軸

plot yunit 2 1000 -100 設定示波器 Y2 軸

plot yunit 3 20 100 設定示波器 Y3 軸

plot yunit 4 1000 300 設定示波器 Y4 軸

plot trigger 1 0 1 10 設定示波器觸發

44

plot scope 9 1 2 3 4 設定示波器顯示

module io2 設定 io2 模組

s cmd ampcn2out

module fg1 設定 fg1 模組

s kAmp 1000 s kFrq 75

module cn2 設定 cn1 模組

s cmd ampfg1out s fdk ampio1ang s kp 0x300 s kd 0x4000

module ft1 設定 ft1 模組

s u ampfg1out s dt 2 s ka 320

module io3 設定 io3 模組

s led ampfg1out

module 回復預設模組

run 1khz 設定抽樣頻率為 4KHz

run start DSP 開始執行

das stop pause 1 DAS 啟動 das start DAS 啟動

echo on 回復正常訊息顯示

CAI操控設計畫面規劃如下(EXP_angleCAI) page 1 畫面設計

45

page 2 與 page 3 畫面設計與實驗一 page 2 與 page 3相同畫面 page 4 畫面設計與實驗二 page 4 畫面 方塊的參數設定 延續上一實驗的說明使用者可以調整 PD控制器中的 kp和 kd值以調整系統之

響應 實測響應圖

訊 號 說 明 訊 號 說 明 ch1 方波產生器產生之位置命令 ch3 馬達角速度訊號 ch2 馬達角位置 ch4 Pd控制器輸出之電壓訊號

46

直流馬達之閉迴路位置控制響應圖

47

64 實驗 4-加減速的位置控制 實驗說明為避免方波命令的過於嚴苛在方波命令的輸出加入一加減速控制功

能方塊以減緩命令變化的幅度增加馬達運動的平順建立的測試方塊圖如下

方塊圖中的模組功能說明如下

1用 fg1產生測試用的方波位置命令 2將方波位置命令送到加減速控制方塊處理後產生新的位置命令再將新的位置命

令與位置回授訊號送到 PD控制器方塊中產生電壓控制訊號最後透過 io2模組將訊號送出到伺服介面驅動馬達轉動

對應之 plc檔程式說明(exp_accplc) echo off 畫面顯示開始

run dsp 0 選擇 DSP1

run stop run reset 既有程式停止

run testDCMmem 下載指定程式

das 1 ampfg1out 0 1024 PWM 波形 Volt 設定 DAS 頻道1

das 2 ampcn1out 0 1024 加速控制 Volt 設定 DAS 頻道2

das 3 ampio1spd 0 1024 馬達速度 Volt 設定 DAS 頻道3

das 4 ampio1ang 0 1024 馬達角度 Volt 設定 DAS 頻道4

plot select 0 設定示波器頁數

plot xunit 100000 0 設定示波器 X軸

plot yunit 1 2000 -300 設定示波器 Y1 軸

plot yunit 2 2000 -100 設定示波器 Y2 軸

plot yunit 3 50 100 設定示波器 Y3 軸

plot yunit 4 2000 300 設定示波器 Y4 軸

48

plot trigger 1 0 1 10 設定示波器觸發

plot scope 9 1 2 3 4 設定示波器顯示

module io2 設定 io2 模組

s cmd ampcn2out

module fg1 設定 fg1 模組

s kAmp 2000 s kFrq 150

module cn1 設定 cn1 模組

s cmd ampfg1out

module cn2 設定 cn2 模組

s cmd ampcn1out s fdk ampio1ang s kp 0x300 s kd 0x4000

module ft1 設定 ft1 模組

s u ampfg1out s dt 2 s ka 320

module io3 設定 io3 模組

s led ampfg1out

module 回復預設模組

run 1khz 設定抽樣頻率為 4KHz

run start DSP 開始執行

das stop pause 1 DAS 啟動 das start DAS 啟動

echo on 回復正常訊息顯示

CAI操控設計畫面規劃如下(EXP_accCAI) page 1 畫面設計

49

page 2 畫面設計與實驗一 page 2相同畫面 page 3 畫面設計與實驗二 page 4相同畫面

參數設定參考之前各實驗的說明可線上機動性的調整 PD控制器中的 kp和 kd值以調整系統之響應 實測響應圖

訊 號 說 明 訊 號 說 明 ch1 方波產生器產生之位置命令 ch3 馬達角位置 ch2 加減速模組輸出之位置命令 ch4 馬達角速度訊號

50

圖一 直流馬達經加減速控制後之閉迴路控制響應圖

51

65 實驗 5-正弦波的位置控制 實驗說明在本實驗中改變命令的波形由方波改變為正弦波並建立如下的測

試方塊圖與上一實驗相比較僅更改命令的波形產生方塊 方塊圖中的模組功能說明如下 1用 fg2產生測試用的弦波位置命令 2將弦波位置命令送到加減速控制方塊處理後產生新的位置命令再與 io1 讀入的位

置回授訊號送到 PD 控制器方塊中產生電壓控制訊號再透過 io2 模組將訊號送出到伺服介面驅動馬達轉動

對應之 plc檔程式說明(exp_sinplc) echo off 畫面顯示開始

run dsp 0 選擇 DSP1

run stop run reset 既有程式停止

run testDCMmem 下載指定程式

das 1 ampfg2out 0 1024 SIN 波形 Volt 設定 DAS 頻道1

das 2 ampcn1out 0 1024 加速控制 Volt 設定 DAS 頻道2

das 3 ampio1spd 0 1024 馬達速度 Volt 設定 DAS 頻道3

das 4 ampio1ang 0 1024 馬達角度 Volt 設定 DAS 頻道4

plot select 0 設定示波器頁數

plot xunit 100000 0 設定示波器 X軸

plot yunit 1 2000 -300 設定示波器 Y1 軸

plot yunit 2 2000 -100 設定示波器 Y2 軸

plot yunit 3 50 100 設定示波器 Y3 軸

plot yunit 4 2000 300 設定示波器 Y4 軸

plot trigger 1 0 1 10 設定示波器觸發

52

plot scope 9 1 2 3 4 設定示波器顯示

module io2 設定 io2 模組

s cmd ampcn2out

module fg2 設定 fg1 模組

s kAmp 2000 s kFrq 100

module cn1 設定 cn1 模組

s cmd ampfg2out

module cn2 設定 cn2 模組

s cmd ampcn1out s fdk ampio1ang s kp 0x300 s kd 0x4000

module ft1 設定 ft1 模組

s u ampfg2out s dt 2 s ka 320

module io3 設定 io3 模組

s led ampfg2out

module 回復預設模組

run 1khz 設定抽樣頻率為 4KHz

run start DSP 開始執行

das stop pause 1 DAS 啟動 das start DAS 啟動

echo on 回復正常訊息顯示

CAI操控設計畫面規劃如下(EXP_sinCAI) page 1 畫面設計

53

page 2 畫面設計 page 3 畫面設計與實驗二 page 4相同畫面

方塊的參數設定可調整 PD控制器中的 kp和 kd值以調整系統之響應 實測響應圖

訊 號 說 明 訊 號 說 明 ch1 弦波產生器產生之位置命令 ch3 馬達角位置訊號 ch2 加減速模組輸出之位置命令 ch4 馬達角速度訊號

54

直流馬達之閉迴路弦波加減速位置控制響應圖

55

7組合語言說明

本節將針對 DC馬達伺服控制實驗專用的程式模組進行功能與程式碼的說明其

有關於波形產生器與資料擷取模組等說明如下

SIN_waveasm 正弦波產生器 PWM_waveasm 方波產生器 IIR1_filterasm 一階濾波器 DAS4asm 資料蒐集模組

弦波產生器

此模組會產生週期性的正弦波方塊圖如下

outfrq

kBiasbias

ampkAmp

kFrqth

kThf=1TB

θ

A

其中

1正弦波有四個參數振幅(A)頻率(F)相位(θ)和偏移(B)其公式為 out = A sin(2πF t +θ) + B 2對於單純的正弦波產生器所對映的參數包括 kAmp 振幅值 kFrq 頻率值kFrq=655368000Hz其中 Hz的範圍為 0~4000例如 1000Hz =gt frq=8192 100Hz =gt frq=819 10Hz =gt frq=82 1Hz =gt frq=8 kTh 相角值0~255代表 0~360的相位當 th=0 時為正弦波 th=64 時為餘弦波 th=128時為反相波依此類推 kBias偏移值 3對於可調變的正弦波產生器其對映的輸入點為 amp 控制振幅的輸入點可產生調幅(AM)波形 frq 控制頻率的輸入點可產生調頻(FM)波形 th 控制相位的輸入點可產生調相(PM)波形 bias控制偏移的輸入點可產生雙頻混波(相加)波形 4若不使用調變功能時各個輸入點時的預設值為 amp 指向 kAmp 的位址 frq 指向 kFrq 的位址

56

th 指向 kTh 的位址 bias指向 kBias的位址

模組程式範例SIN_WAVEasm

local amp R0 IP kAmp 輸入點sin波的振幅 local frq R1 IP kFrq 輸入點sin波的頻率 local th R2 IP kTh 輸入點sin波的相角 local bias R3 IP kBias 輸入點sin波的中心偏移 local out R4 OP 輸出點sin波輸出 local tab R5 TP 表格指標指向 sin[256]的表格 local ang R6 內部變數相位角65536=360deg local kAmp R7 1000 參數振幅值 local kFrq R8 1000 參數頻率值=655368000Hz local kTh R9 0 參數相角值360deg=256 local kBias R10 0 參數偏移值 data 11 模組變數區長度及初值 initial 啟動程序 WR ang0 WR out0 ang=out=0 RET timer 即時控制程序(8KHz) RD ang ADD (frq) WR ang ang+=frq SFR 8 ADD (th) AND 255 ACC=sin(ang256+th) ADD tab WRH RDM table-look-up MUL (amp) SFR 12 ADD (bias) WR out out=ACCamp4096+bias RET table tab 256 sin[256]表格區10=4096 0 101 201 301 401 501 601 700 00~070deg 799 897 995 1092 1189 1285 1380 1474 08~0F 1567 1660 1751 1842 1931 2019 2106 2191 10~17 2276 2359 2440 2520 2598 2675 2751 2824 18~1F 2896 2967 3035 3102 3166 3229 3290 3349 20~27 3406 3461 3513 3564 3612 3659 3703 3745 28~2F 3784 3822 3857 3889 3920 3948 3973 3996 30~37 4017 4036 4052 4065 4076 4085 4091 4095 38~3F 4096 4095 4091 4085 4076 4065 4052 4036 40~4790deg 4017 3996 3973 3948 3920 3889 3857 3822 48~4F 3784 3745 3703 3659 3612 3564 3513 3461 50~57 3406 3349 3290 3229 3166 3102 3035 2967 58~5F

57

2896 2824 2751 2675 2598 2520 2440 2359 60~67 2276 2191 2106 2019 1931 1842 1751 1660 68~6F 1567 1474 1380 1285 1189 1092 995 897 70~77 799 700 601 501 401 301 201 101 78~7F 0 65435 65335 65235 65135 65035 64935 64836 80~87180deg 64737 64639 64541 64444 64347 64251 64156 64062 88~8F 63969 63876 63785 63694 63605 63517 63430 63345 90~97 63260 63177 63096 63016 62938 62861 62785 62712 98~9F 62640 62569 62501 62434 62370 62307 62246 62187 A0~A7 62130 62075 62023 61972 61924 61877 61833 61791 A8~A8 61752 61714 61679 61647 61616 61588 61563 61540 B0~B7 61519 61500 61484 61471 61460 61451 61445 61441 B8~BF 61440 61441 61445 61451 61460 61471 61484 61500 C0~C7270deg 61519 61540 61563 61588 61616 61647 61679 61714 C8~CF 61752 61791 61833 61877 61924 61972 62023 62075 D0~D7 62130 62187 62246 62307 62370 62434 62501 62569 D8~DF 62640 62712 62785 62861 62938 63016 63096 63177 E0~E7 63260 63345 63430 63517 63605 63694 63785 63876 E8~EF 63969 64062 64156 64251 64347 64444 64541 64639 F0~F7 64737 64836 64935 65035 65135 65235 65335 65435 F8~FF

就程式結構而言說明如下

timer 即時控制程序(8KHz) RD ang ADD (frq) WR ang ang+=frq SFR 8 ADD (th) AND 255 ACC=sin(ang256+th) ADD tab WRH RDM table-look-up MUL (amp) SFR 12 ADD (bias) WR out out=ACCamp4096+bias RET

1基本上我們以查表法計算 sin()其輸入θ的範圍為 0~255對映到 0~360deg其輸出 sin(θ)的範圍為+-4096對映到+-10的範圍

2建立一個內部變數 ang其範圍為 0~65535對映到 0~360的相位角 3每個timer程序都執行 ang+=frq的動作更新目前的相位角接著依照 ang的相位角查表得到 sin(ang256+th)值

4由於表格長度為 256-word所以必須將 ang256才能得到正確的對映關係而 th範圍為 0~255所以不需要像 ang一般的做額外處理

5sin()的範圍為(+1-1)而在表格中以(+4096~-4096)的型式記錄相當於 10=4096所以執行 Asin()時還要用 SFR12指令做4096的動作才能正確的取得輸出值

58

6就頻率輸入 frq而言其計算原則是將θ=ωt轉化成θ=Σ(ωdt)因為抽樣頻率

為 8KHz所以 dt=18000而得到 frq=655368000Hz公式其中 Hz為真正的頻率在 8KHz的抽樣頻率下其範圍為 0~4000

鋸齒波產生器

此模組會產生週期性的鋸齒波方塊圖如下

outfrq

kBiasbias

ampkAmp

kFrqth

kThf=1TB

θ

A

其中

1鋸齒波也有四個參數振幅(A)頻率(F)相位(θ)和偏移(B)和正弦波的定義完全一致唯一的差異是其輸出為鋸齒波而非正弦波

2基本波形是從週期開始時為 0一直遞增到週期結束時到達最高點然後立刻回歸

到 0重新開始 3以程式結構而論鋸齒波程式幾乎就是正弦波的相位計算部分只差沒有正弦波的

查表處理而已

模組程式範例SAW_WAVEasm

local amp R0 IP kAmp 輸入點sin波的振幅 local frq R1 IP kFrq 輸入點sin波的頻率 local th R2 IP kTh 輸入點sin波的相角 local bias R3 IP kBias 輸入點sin波的中心偏移 local out R4 OP 輸出點sin波輸出 local ang R5 內部變數相位角65536=360deg local kAmp R6 1000 參數振幅值 local kFrq R7 1000 參數頻率值=655368000Hz local kTh R8 0 參數相角值360deg=256 local kBias R9 0 參數偏移值 data 11 模組變數區長度及初值 initial 啟動程序 WR ang0 WR out0 ang=out=0 RET timer 即時控制程序(8KHz) RD ang ADD (frq) WR ang ang+=frq SFR 8 ADD (th) AND 255 ACC=(ang256+th)amp0x00ff MUL (amp) SFR 8 ADD (bias) WR out out=ACCamp256+bias

59

RET

脈衝波產生器

outfrq

kBiasbias

ampkAmp

kFrqth

kThf=1TB

θ

A

pwm

kDutyduty

此模組會產生週期性的脈衝波方塊圖如下

其中

1脈衝波有五個參數其中振幅(A)頻率(F)相位(θ)和偏移(B)四個參數和正弦波

定義完全一樣另外再增加一個負載率(D) 2基本波形是從週期開始時為 1隔段時間後換為 0然後持續到週期結束再重新開始其中 1所佔有的比例就是負載率當 D=0時為 0而 D=255時為 100

3和其他參數類似負載率(D)以 duty為其輸入點而以 kDuty為其參數值

模組程式範例PLS_WAVEasm

local amp R0 IP kAmp 輸入點脈衝波的振幅 local frq R1 IP kFrq 輸入點脈衝波的頻率 local th R2 IP kTh 輸入點脈衝波的相角 local bias R3 IP kBias 輸入點脈衝波的中心偏移 local duty R4 IP kDuty 輸入點脈衝波的負載率 local out R5 OP 輸出點脈衝波輸出 local ang R6 內部變數相位角65536=360deg local kAmp R7 1000 參數振幅值 local kFrq R8 1000 參數頻率值=655368000Hz local kTh R9 0 參數相角值360deg=256 local kBias R10 0 參數偏移值 local kDuty R11 128 參數負載率100 =256 data 12 模組變數區長度及初值 initial 啟動程序 WR ang0 WR out0 ang=out=0 RET timer 即時控制程序(8KHz)

60

RD ang ADD (frq) WR ang ang+=frq SFR 8 ADD (th) AND 255 ACC=(ang256+th)amp0x00ff SUB (duty) RD (amp) JLT t1 RD 0 ACC=(amp0) t1 ADD (bias) WR out out=ACC+bias RET

IIR 一階濾波器

此模組執行一階的 IIR濾波器方塊圖如下

kau x

Z-1

+

+

-

+低通濾波器

高通濾波器dx lp

hp

濾波器參數的計算公式如下

1假設濾波器的頻寬為 hz則 ωn=hz628 2若系統頻率為 8KHz則抽樣週期 dT為 dT=dt8000 其中 dt為模組參數 3則濾波器參數為 ka=ωndT4096或是 =hzdt62880004096即 =hzdt32 4當 dt決定後所允許的訊號頻寬為(4000dt)換句話說訊號頻寬會因為 dt增加而下降

為了方便實驗的運用下面列出常用的參數對照表

濾波頻寬

(Hz)

10 20 50 100 200 500 1000 2000

訊號頻寬

(Hz)

400 800 2000 4000 4000 4000 4000 4000

模組參數 dt 10 5 2 1 1 1 1 1

模組參數 ka 320 320 320 320 640 1600 3200 6400

表格的運用方式如下

1首先決定濾波頻寬 2接著查表找出對映的參數 dt和 ka 3再查表得到對映的訊號頻寬以決定是否需要串接前級濾波器

61

模組程式範例IIR1_FILTERasm

local u R0 IP 輸入點濾波器輸入 local lp R1 OP 輸出點低通濾波器輸出 local hp R2 OP 輸出點高通濾波器輸出 local dt R3 1 參數抽樣週期 local ka R4 4096 參數增益 ka10=4096 local prd R5 內部變數抽樣週期用 data 6 模組變數區長度 initial 開機啟動程序 WR lp0 WR hp0 WR prd1 RET lp=hp=0prd=1 timer 即時控制程序 SUB prd1 JNZ b9 if (--prdgt0) return RD dt WR prd prd=dt RD (u) SUB lp WR hp hp=u-lp MUL ka SFR 12 ADD lp WR lp lp+=(hpka4096) b9 RET

資料蒐集模組

資料蒐集模組是一個非常特殊的模組專門配合 eTTY 程式中的示波器使用

模組程式範例DAS4asm

local cmd R0 0 紀錄命令0=停止1=前置記錄2=正觸發4=負觸發6=觸發記錄 local dt R1 1 抽樣週期每 dT抽樣一次 local tab R2 TP DAS表格啟始位址 local cnt R3 0 目前記錄點(0~255) local ch1 R4 0 定義頻道1的變數位址 local ch2 R5 0 定義頻道2的變數位址 local ch3 R6 0 定義頻道3的變數位址 local ch4 R7 0 定義頻道4的變數位址 local trg R8 0 定義觸發頻道的變數位址 local th R9 0 觸發準位 local tail R10 0 觸發後的抽樣個數 local buf R11 1 抽樣計數(1~dt) local pnt R12 表格位址計算pnt=tab+cnt4 local len R13 表格長度計算(0~256) data 14 定義模組變數區的長度 table tab 1024 定義表格的長度 initial 啟動程序 WR cmd0 RET cmd=0 timer 控制程序

62

ADD cmd0 JZ t9 if (cmd==0) return SUB buf1 JNZ t9 if (--buf)gt0) return RD dt WR buf dt=buf RD cnt ADD 1 AND 0xff WR cnt cnt=(cnt+1)amp0xff SFL 2 ADD tab WR pnt pnt=tab+cnt4 RD (ch1) WR (pnt) ADD pnt1 pnt++=ch1 RD (ch2) WR (pnt) ADD pnt1 pnt++=ch2 RD (ch3) WR (pnt) ADD pnt1 pnt++=ch3 RD (ch4) WR (pnt) pnt =ch4 RD cmd SUB 1 JZ t9 SUB 1 JZ t2 SUB 1 JZ t3 SUB 1 JZ t4 SUB 1 JZ t5 SUB 1 JZ t6 JR t7 t2 RD (trg) SUB th JGE t9 ADD cmd1 JR t9 wait trgltth t3 RD (trg) SUB th JLE t9 JR t6 wait trggtth t4 RD (trg) SUB th JLE t9 ADD cmd1 JR t9 wait trggtth t5 RD (trg) SUB th JGE t9 JR t6 wait trgltth t6 WR len0 WR cmd7 len=0cmd=7 t7 ADD len1 SUB tail JLT t9 WR cmd0 if ((++len)gt=0x80) cmd=0 t9 RET

與 DC 馬達控制相關的程式模組有以下 4個程式模組說明如下

(1)加減速控制模組 ACC_controlasm (2)光電盤輸入模組 POS_inputasm (3)PWM輸出模組 PWM_outputasm (4)PD控制模組 PD_controlasm

71加減速控制模組 此程式模組主要功能在於執行位置控制的加減速命令修正其數學模式採用 Lynn

濾波器的架構參見下圖

cmd

2

+

old Z -1

-

Z -1

Z -1

Z-1

Z-1x0 x1 x8 x9 x16

+ -

++

2

Z-1

Z-1 y1 y2

+

-

y0

+ +

sumZ-1

+164

12

out

dif

+

63

加減速控制模組方塊圖

其中

1Lynn 濾波器的階數固定成八階也就是 m=8其公式為 H(z) = (1-2Z-m+Z-2m)(1-2Z-1+Z-2)m2

2因為m=8所以m2=64因此最後計算低通濾波的部份時要先做除 64的運算 3因為低通濾波(lp)和 y0之間有 64倍的差異代表 y0y1y2的變化範圍比濾波器輸

入值要擴大許多例如輸入值在+-1000變化時y0y1y2很可能會在+-64000之間變化這範圍已經超出整數處理的範圍很可能會造成錯誤的計算結果

4所以在實驗時輸入值的變化範圍必須控制在+-500之間以保證計算的正確性 5對於 Lynn 濾波器當 m=8時其濾波器的頻寬固定為 1 kHzmdt也就是 dt=1時頻寬為 125 Hz dt=2時頻寬為 625Hz依此類推 6對於 Lynn 濾波器其濾波器的延遲固定為 m個抽樣週期因此設計 hp = x8 - lp 即可得到高通濾波器的對應結果 7其中乘 2和除 64的運算以移位運算取代所以整個程式中並無任何乘法運算 8Lynn 濾波器本身並不是穩定濾波器所以在程式啟動時必須確實的將所有狀態

(x0~x16)歸零否則會產生不穩定的狀態輸出

因為 Lynn濾波器中所有參數固定所以除了抽樣週期 dt 之外並無任何可調參數

抽樣週期 dt 可以控制頻寬dt 越大則濾波器頻寬越低

將步階命令值的輸出送入 Lynn 濾波器中經由低通濾波器的效應可以減緩命

令的變化程度達到加減速控制的目的以下為使用 Lynn 濾波器型式實現加減速控

制的組合語言程式列印 如欲更進一步瞭解 Lynn 濾波器與 FIR 數位濾波器之間的關係可以參考通訊實驗

四數位濾波器設計(FIR)中之說明

ACC_controlasm程式列印 local cmd R0 IP 輸入點位置命令

local out R1 OP 輸出點加減速處理後的位置命令

local dif R2 OP 輸出點位置微分命令

local axis R3 0 馬達編號0=X1=Y2=Z3=C

local old R4 內部變數微分計算用

local sumL R5 內部變數積分計算用

local sumH R6 內部變數積分計算用

local y0 R7 內部變數y(0~2)

local y1 R8 local y2 R9

local x0 R10 內部變數x(0~16)

local x1 R11 local x2 R12 local x3 R13 local x4 R14

local x5 R15 local x6 R16 local x7 R17 local x8 R18

local x9 R19 local x10 R20 local x11 R21 local x12 R22

local x13 R23 local x14 R24 local x15 R25 local x16 R26

64

data 27 模組變數區長度

initial 開機啟動程序

WR dif0 RD (cmd) WR out WR old dif=0 out=old=cmd

sumHL=cmd64

SFL 6 WR sumL RD out SFR 10 SGN 5 WR sumH

RPT 17 WR x00 RPT 3 WR y00 RET x[0~16]=0y[0~2]=0

timer 即時控制程序

RD (cmd) SUBX old WR x0 x0=cmd-old old=cmd

SUB x81 ADD x16 ADD y11 SUB y2 WR y0 y0=x0-2x8+x16+2y1-y2

SGN ADD sumL WR sumL RDH ADC sumH WR sumH sumHL+=y0

WRH RD sumL SFR 6 WR out out=sumHL64

RD y0 SGN SFR WR dif dif=y032mm

RD x0 RPT 16 RDX x1 x[i]=x[i-1] i=1~16

RD y0 RDX y1 WR y2 y[i]=y[i-1] i=1~2

b9 RET

72光電盤輸入模組

DC馬達的位置由光電盤量測之預設儲存於 0xac與 0xbe二個輸入埠位址中其中位址 0xac記錄 X軸馬達的位置位址 0xbe記錄 Y軸馬達的位置由於本實驗的DC馬達接在 Y軸的位置上因此程式中直接選用 Y軸的輸入 光電盤位置輸入的程式列印如下其中速度由位置的差分而得至於馬達的位置

則使用內部 2個 word加以記錄精度為 32位元 POS_inputasm程式列印 local spd R0 OP 輸出點速度量測值

local ang R1 OP 輸出點角度量測值

local angH R2 內部變數角度的 32 位元部分

local mode R3 0x308 模式選擇15MHzAB 相正反向輸入

local pht R4 0xac 輸入阜地址光電盤輸入(0xac)

local phtc R5 0xbe 輸入阜地址光電盤模式(0xbe)

local old R6 內部變數速度更新用

data 7 模組變數區長度

initial 開機啟動程序

RD mode WR (phtc) phtc=mode

RD (pht) WR old WR spd0 RET old=phtspd=0

timer 即時控制程序

RD (pht) SUBX old SGN 11 WR spd spd=(pht-old)old=pht

65

ADD ang WR ang angHL+=spd

RDH ADC angH WR angH

RET

73 PWM輸出控制模組 模組方塊

cmd PWM輸出

程式說明 1在開機時將切換保護時間寫到輸出阜 0xbc上其中切換保護值為 0~6360=5us 2在每次 timer interrupt時將 cmd訊號處理後寫到輸出阜 0xb8上

PWM_outputasm程式列印 local cmd R0 IP gnd 輸入點v相命令

local gain R1 4096 參數輸出增益1=4096

local bias R2 2048 參數輸出偏壓0=2048

local limit R3 4095 參數輸出極限1=4095

local zone R4 0x88f0 參數頻率=12KHz切換保護=5us

local pwm R5 0xb8 輸出阜地址PWM0 輸出(0xb8)

local mode R6 0xbc 輸出阜地址PWM 模式(0xbc)

local p0md R7 0xf8 輸出阜地址port0 模式(0xf8)

local gnd R8 0 輸入接地點

data 9 模組變數區長度

initial 開機啟動程序

RD bias WR (pwm) pwm=bias

RD 0xffff WR (p0md) set port0 mode

RD zone WR (mode) RET mode=zone

stop 關機保護程序

RD bias WR (pwm) RET pwm=bias

timer 即時控制程序

RD (mode) xor 1 and 1 WR (mode) trigger watch-dog

RD (cmd) MUL gain SFR 12 ADD bias ACC=(cmdgain4096)+bias

MAX 0 MIN limit WR (pwm) pwm=limit(ACC)

RET

66

74 PD 控制模組

PD控制的模組方塊參見圖二十一所示其中比例控制的部份直接由增益 kp加以調整微分控制的部份則由誤差的差分經增益 kd的調整而得

Σ+

-

cmd

fdk

err out

Σ

pk

dk

Σ

+

+

+

-

old1minusZ

PD控制器的方塊圖

PD_controlasm程式列印 local cmd R0 IP gnd 輸入點位置命令(可忽略)

local fdk R1 IP gnd 輸入點位置回授(可忽略)

local out R2 OP 輸出點用以控制速度迴路

local kp R3 256 參數增益 kp10=256

local kd R4 0 參數增益 kd10=256

local err R5 0 內部變數

local old R6 0 內部變數

local gnd R7 0 無輸入時的短路點

data 8 模組變數區長度

initial 開機啟動程序

WR out0 WR old0 RET out=old=0

timer 即時控制程序

RD (cmd) SUB (fdk) PRTF WR err

MUL kp SFR 8 P=(cmd-fdk)kp256

RDS err SUBX old MUL kd SFR 8 D=(err-old)kd256

ADDS

WR out out=P+D

RET

程式中預設增益值的 10以整數值 256為基底因此使用 SFR 8的指令加以調

整另外在在計算微分項的程式部份用到 SUBX old的指令其詳細的暫存器動作如

下 參考 piDSP的指令說明SUBX指令將總共用到 3個時序參考錯誤 找不到參照

67

來源在時序 1時將原先 AX的資料拷貝一份到 HX中時序 2時正式執行減

法的動作所以 AX暫存器中的內容會變成 err-old時序 3時DSP會將存放在 HX暫存器中的內容拷貝一份到 old的記憶體中也就是經由 SUBX此一精簡指令將

同時完成計算差分所需要的相減與資料疊代的動作有效的利用 piDSP控制器 DSP核心的精簡指令將可以大幅提昇系統的計算速度

HX AXoldSUBXerr err

old

err

errerr olderr minus

1_err

errerr olderr minus err

1_err

1

2

3

SUBX的指令時序與暫存器變化

68

8附錄快速安裝說明

光纖網路通訊 FPGA 發展系統 (適用於 WIN-XP200098 系統)

快速安裝說明

26Pin 負載輸出入埠

雙電源︵5

12

伏︶輸入埠

單電源︵5

伏︶輸入埠

USB

光纖線輸

號 光纖線輸出埠

入 傳 埠

首先將光碟片 RFFPGA 目錄檔案拷貝在您工作硬碟裡面

第一次安裝時先將 USB 傳輸線接上電腦主機將電源供應器接上 FPGA 模組此時電

腦會出現安裝 USB-Serial 驅動程式選擇從清單安裝此驅動程式放置在光碟片

RFFPGA-USBdrive 選擇您目前安裝系統

可選擇 WIN-98WIN-MEWIN-2000WIN-XP 系統配合您現在工作電腦作業系統

69

注意一般電腦 USB 埠很多插口當您安裝驅動程式時是配合您當時插入之埠

下次如您插入不同接口埠時電腦會再次要求安裝驅動程式這是正常現象請再次安

裝驅動程式否則無法使用

FPLC 操作

首先進入 RFFPGA裡子目錄 testASM直接點選 fPLCexe 出現下面操作畫面(也可直接將

此檔案放置桌面直接點選)

(或者選擇 File 再執行 Setuphellip 選擇您要執行 CAI 檔)

70

進入下面操作畫面 首先使用滑鼠在 FPGA下載按鈕單擊動作使 FPGA變成 DSP晶片 實驗一至實驗五皆為使用 DSP組合語言設計程式其原始程式分別為 testASM1至testASM5可使用 texPad 開啟與編輯程式內容 實驗三與實驗五多有 IO控制動作 當選擇實驗三時出現下面畫面

71

eM_USB 模組

數字型 LED

0 1 2 34 5 6 78 9 A BC D E F

燈號型 LED

44 鍵盤

ADC0 ADC1 DAC0 DAC1

LED 選擇KEY 選擇

模 式 1

0123

注意操作畫面 3與 4 說明開關與按鍵選擇位置後選擇程式下載再按程式啟動如您

按下 0-3按鍵時燈號型 LED會有不同方向閃爍顯示程式停止時結束所有 IO控制動作再按回首頁選擇其他實驗 實驗四與實驗五

模式3

0 1 2 34 5 6 78 9 A BC D E F

按照上面開關選擇直接操作如果以上實驗皆能按照正常操作表示您光纖網路通訊

FPGA發展模組以能正常使用 注意 開機與關機動作順序如下

開機電腦啟動 --- eM_USB 模組電源接上 --- USB 接上電腦 ---

啟動 FPLC 軟體 --- 下載 FPGA 程式

關機關閉 FPLC 軟體 --- eM_USB 模組電源拔掉 --- 拔掉電腦 USB 接頭 ---關掉

電腦

如果以上順序有亂可能造成 USB 找不到驅動造成無法下載經過幾次測試還是

無法下載建議重新啟動電腦主機按照正確步驟操作

72

FPGA 下載操作

進入 FPLC 操作系統按照下列步驟選擇節點模組與下載 bit FPGA 檔案

在 VHDLDEMO 子目錄下您可以選擇您目前 FPGA 種類型號在此型號下我們已將 VHDL

與數位邏輯設計課本範例全部放於此處

73

光纖網路連線 FPGA 下載操作

首先利用光纖線將 eM_USB0 模組光纖輸出埠接至 eM_USB1 模組光纖輸入埠以此

類推最後再將最後 eM_USBN 模組光纖輸出埠接至 eM_USB0 模組光纖輸入埠配置

如附圖方式

個人電腦(Windows) eM_USB模組

0USB

eM_USB模組1

光纖網路

eM_USB模組2

eM_USB模組N

配置完成後進入 FPLC 系統首先必須先將 Node00 下載在 testASM 子目錄裡

piDSPv0bit 檔讓 eM_USB0 模組 FPGA 具備 DSP 功能才能執行光纖網路通訊

操作如下

此時您就可以選擇分別下載至各模組 FPGA 檔 bit

74

安裝 FPLC 注意事項

當您進入 FPLC 時

按 FILE 選擇 programhellip 選擇檔案為 exp_dcmplc 出現下面畫面

正常顯示畫面為

75

DOS 環境操作

在 PC 端的操作是在 Windows 環境中的 DOS 視窗中執行指令範例如下

eFPGA progNETbit 下載 FPGA電路至網路節點0(即 USB節點)中 eFPGA testLEDbit 1 下載 FPGA電路至網路節點1中

對於單一節點的控制程序如下

1將 eM_USB模組連結個人電腦的 USB端 2eM_USB模組開機 3執行下載指令即可 eFPGA xxxxbit 4若要更改 FPGA電路只要重新執行下載指令即可

對於多個網路節點的控制程序如下

1第一組 eM_USB模組連結個人電腦的 USB端再以光纖網路依序其他各節點 2連接 USB界面者為模組0從光纖發射端連接出去的模組為1依此類推 3將所有 eM_USB模組開機 4執行下載指令如下 eFPGA progNETbit 模組0必須先下載指定的 FPGA電路 eFPGA xxxxbit 1 再依序下載其他網路模組的 FPGA電路 eFPGA yyyybit 2 eFPGA zzzzbit 最後再重新下載模組0的 FPGA電路 5換句話說模組0必須先執行 progNETbit讓光纖網路接受 FPGA控制後才能透過光纖網路下載至其他節點等全部網路節點下載完畢後再將模組0的 FPGA重新下載讓模組0也可自由執行任意的 FPGA電路

6若要更改某一個網路節點中的 FPGA電路只要重新執行下述指令 eFPGA progNETbit 模組0必須先下載指定的 FPGA電路 eFPGA yyyybit 2 下載指定網路模組的 FPGA電路 eFPGA zzzz bit 最後再重新下載模組0的 FPGA電路 換句話說除非模組0中的 FPGA已經包括光纖網路管理電路否則一定要先在

模組0中下載網路管理電路後才能下載指定網路節點的 FPGA電路

76

光纖網路通訊 FPGA 發展系統

系統配置

光纖網路通訊 FPGA 發展系統的系統配置圖如下

個人電腦(Windows) eM_USB模組

0USB

eM_USB模組1

光纖網路

eM_USB模組2

eM_USB模組N

其中

1基本模組為 eM_USB模組可用 USB界面和個人電腦連線並提供 USB對光纖網路的轉換功能使得個人電腦可以獨立控制光纖網路中的每個網路節點

2eM_USB模組也可以作為光纖網路中的網路節點透過光纖網路而接受個人電腦的

監控 3就個人電腦而言不論是 USB界面直接連結或是以光纖網路間接連結的 eM_USB模組都是可以直接監控的網路節點最多可以同時控制一個 USB節點和 30個網路節點

4對於每一個網路節點個人電腦都可執行 eM_USB模組中 FPGA的電路下載工作並在適當的 FPGA電路配合下可執行 eM_USB模組中 FPGA內部電路的讀寫控制 5透過適當的 FPGA電路設計各網路節點都可透過光纖網路和其他任何網路節點

作同步通訊執行 FPGA內部記憶體的資料交換資料交換頻率可達 1KHz以上

77

網路模組配置

每個網路模組的標準配置圖如下

eM_USB模組光纖網路

USB eM_FPGA卡

eM_DEMO模組

eM_EXP實驗模組

DC電源

其中

1網路模組以 eM_USB模組為主提供基本的 USB界面和光纖網路連線 2eM_USB模組中的 FPGACPLD採用插卡型式可選擇不同的 eM_FPGA卡包括

eM_2V1K卡可選用 Virtex系列的 XC2V250和 XC2V1000 eM_3S1K卡可選用 Spartan3系列的 XC3S400XC3S1000和 XC3S1500 eM_3S50卡可選用 Spartan3系列的 XC3S50XC3S200和 XC3S400 eM_95XL卡可選用 9500XL系列的 XC95144XL和 XC95288XL 3eM_USB模組中的對外連線有兩種一種是 26P接頭用以連接既有的各種實驗模

組另一種是兩組 50P接頭將 FPGA中各接腳引出用以連接專題實驗 4eM_DEMO模組就是插上 50P接頭的教學模組其中包括 LED 數字顯示和 44鍵盤也具備兩組的 ADC和兩組的 DAC接頭提供類比訊號的測試工具

常用的實驗組合包括

1精簡組合包括(eM_USB+eM_FPGA)提供基本的網路節點適用於專題實驗 2標準組合包括(eM_USB+eM_FPGA+eM_DEMO)提供基礎 FPGA設計的教學實驗

3實驗組合包括(eM_USB+eM_FPGA+eM_DEMO+eM_EXP)提供進階的 FPGA實驗可依需求選用不同的實驗模組

78

eM_USB 模組

eM_USB 模組的電路配置圖如下

TxRx

DCPower

USB

JP2

JP3

光纖界面

外加電源

PC連線

JP1

eM_FPGA模組

FT232 CPLD FlashROM

SRAM

10cm

6cm

JP4

其中

1對外的連線接頭包括 DC電源 可選擇單電源(5V)或是多電源(5V+12V-12V)兩種 USB界面 直接連接個人電腦 光纖界面連接光纖網路 2實驗界面包括 JP1負責內部 CPLD的電路下載 JP2JP3兩組 50P的擴張用接頭 JP4 標準 26P接頭用以連接各種實驗模組 3內部的電路配置包括 A以 SO-DIMM接頭連接各種 eM_FPGA卡 B內附 EEPROMFlashROM和 SRAM提供 FPGA作應用測試 C以一顆 FT232BM作為 USB界面解碼而以一顆 CPLD作為光纖網路解碼 D提供各種 eM_FPGA卡的電路下載功能 4內附五顆 LED由上而下依序為 usbLED指示 USB界面的讀寫狀態 tstLED可由 FPGA電路自行定義 stsLED可由 FPGA電路自行定義 RxLED 可由 FPGA電路自行定義 TxLED 可由 FPGA電路自行定義

79

外部接腳定義

外部接頭的接點順序圖示如下

上視圖

JP11 9 JP4

126225

JP31

50249

JP21

50249

而各接頭的接點定義如下

JP1 JP4 JP2 JP3 1+33V 1+12V 2+12V 1 GND 2 GND 1 GND 2 GND 2GND 3 ADC 4 DAC 3POWER 4ALARM 3 +5V 4 +5V 3nc 5 yPB2 6 yPB3 5RxNET 6TxNET 5+12V 6+12V 4TCK 7 yPB1 6 yPB4 7RxUSB 6TxUSB 7-12V 6-12V 5nc 9 yPB0 10yPB5 9RxCAN 10TxCAN 9 ADC 10 DAC 6TDO 11yPB6 12yPB7 11P0D0 12P0D1 11P1D0 12P1D1 7TDI 13yGND 14yPC3 13P0D2 14P0D3 13P1D2 14P1D3 8nc 15yPC2 16yPC1 15P0D4 16P0D5 15P1D4 16P1D5 9TMS 17yPC0 18yPA0 17P0D6 18P0D7 17P1D6 18P1D7 19yPA1 20yPA2 19P0D8 20P0D9 19P1D8 20P1D9 21yPA3 22GND 21P0D10 22P0D11 21P1D10 22P1D11 23GND 24+5V 23P0D12 24P0D13 23P1D12 24P1D13 25+5V 26nc 25P0D14 26P0D15 25P1D14 26P1D15 27P2D0 28P2D1 27PxA0 28PxA1 29P2D2 30P2D3 29PxA2 30PxA3 31P2D4 32P2D5 31PxA4 32PxA5 33P2D6 34P2D7 33PxA6 34PxA7 35P2D8 36P2D9 35PxB0 36PxB1 37P2D10 38P2D11 37PxB2 38PxB3 39P2D12 40P2D13 39PxB4 40PxB5 41P2D14 42P2D15 41PxB6 42PxB7 43ADC0 44ADC1 43PxC0 44PxC1 45ADC2 46ADC3 45PxC2 46PxC3 47ADC4 48ADC5 47PxC4 48PxC5 49DAC0 50DAC1 49PxC6 50PxC7

80

eM_FPGA 模組

在各種 eM_FPGA 模組中FPGA 對外電路的標準配置圖如下

24576MHz

FlashROM

26PSRAM

EEPROM

mD[8]

yPA[4]

FPGACPLD

mA[19]mRDmWRmCSeeCKeeCSeeDIeeDO

光纖界面 RxNETTxNET

USB 界面 RxUSBTxUSBCLK24MPOWERALARM

LED

tstLEDstsLEDRxLEDTxLED

yPB[8]yPC[4]

ADCDAC

ADC[8]

實驗模組

ADC[2]

DAC[2]

xPA[4]

xPB[8]

xPC[4]

基礎實驗

其中

1FPGACPLD可以選擇下述幾種 XC2V250XC2V1000 採用 eM_2V1K模組其中 FPGA為 FG456包裝 XC3S400XC3S1000XC3S1500採用 eM_3S1K模組其中 FPGA為 FG456包裝 XC3S400XC3S1000XC3S1500採用 eM_3S1K模組其中 FPGA為 FG456包裝 XC3S50XC3S200XC3S400 採用 eM_3S50模組其中 FPGA為 TQ144包裝 XC95144XLXC95288XL 採用 eM_95XL模組其中 CPLD為 TQ144包裝 2採用 FG456包裝者可以控制所有的 IO界面 3採用 TQ144包裝者只是不能控制 RAM和 FlashROM而可以控制其他所有的界面 4所有 FPGA模組都可自由選擇由 USB界面或是由光纖界面下載電路但是 CPLD模組只能固定由 USB界面下載電路

5所有 FPGACPLD模組都可透過 26P接頭連接既有的各種實驗模組

81

FPGA 接腳對照表

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

mD0 XD6 mD0 A17 C13 -- -- mD1 XD7 mD1 B17 D12 -- -- mD2 XD8 mD2 C17 D11 -- -- mD3 XD9 mD3 D17 C11 -- -- mD4 XD10 mD4 E17 D10 -- -- mD5 XD11 mD5 E16 C10 -- -- mD6 XD12 mD6 E14 D9 -- -- mD7 XD13 mD7 E13 D7 -- -- mA0 XD14 mA0 D13 C7 -- -- mA1 XD15 mA1 C13 D6 -- -- mA2 XA0 mA2 V5 C3 -- -- mA3 XA1 mA3 U5 C4 -- -- mA4 XA2 mA4 Y2 D3 -- -- mA5 XA3 mA5 Y1 D4 -- -- mA6 XA4 mA6 V4 E3 -- -- mA7 XA5 mA7 V3 E4 -- -- mA8 XA6 mA8 W2 F3 -- -- mA9 XA7 mA9 W1 F4 -- -- mA10 XA8 mA10 T2 G6 -- -- mA11 XA9 mA11 T1 K3 -- -- mA12 XA10 mA12 R4 K10 -- -- mA13 XA11 mA13 R3 L3 -- -- mA14 XA12 mA14 R2 L4 -- -- mRD XRD mRD R1 D5 -- -- mWR XWR mWR P6 C6 -- --

POWER P0A0 POWER B4 B20 P1 P5 ALARM P0A1 ALARM A4 A19 P2 P6 RxNET P0A2 RxNET C4 B19 P4 P7 TxNET P0A3 TxNET C5 A18 P5 P9 RxUSB P0B0 RxUSB B5 A15 P6 P10 TxUSB P0B1 TxUSB A5 B15 P7 P11 RxCAN P0B2 RxCAN D6 A14 P8 P12 RxCAN P0B3 TxCAN C6 B14 P10 P13

CLK24M CLK24M CLK24M E12 B12 P124 P38

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

PWM0H P3A0 P0D0 E6 A8 P21 P23 PWM0L P3A1 P0D1 E5 B8 P23 P24 PWM1H P3A2 P0D2 C2 B6 P24 P25 PWM1L P3A3 P0D3 C1 A5 P25 P26 PWM2H P3A4 P0D4 D2 B5 P26 P27

82

PWM2L P3A5 P0D5 D1 A4 P27 P28 PWMenb P3A6 P0D6 E4 B4 P28 P30 PHT1Z P3A7 P0D7 E3 A3 P30 P31 PHT1A P3B0 P0D8 G2 C1 P31 P32 PHT1B P3B1 P0D9 G1 C2 P32 P33 PHT0A P3B2 P0D10 H5 D1 P33 P34 PHT0B P3B3 P0D11 J6 D2 P35 P35 AMP0 P3B4 P0D12 H4 E1 P36 P39 AMP1 P3B5 P0D13 H3 E2 P40 P40 AMP2 P3B6 P0D14 H2 F2 P41 P41 AMP3 P3B7 P0D15 H1 G1 P44 P43 eeSK P0C3 P1D0 C10 B9 P20 P22 eeCS P0C2 P1D1 D10 A9 P18 P21 eeDI P0C1 P1D2 F10 B10 P17 P20 eeDO P0C0 P1D3 E10 B11 P15 P19 ssCK P0B7 P1D4 E8 A11 P14 P17 ssCS P0B6 P1D5 E7 A12 P13 P16 ssDI P0B5 P1D6 A6 B13 P12 P15 ssDO P0B4 P1D7 B6 A13 P11 P14

ppCLK P3C0 P1D8 K4 G2 P46 P44 ppDIN P3C1 P1D9 K3 K1 P47 P45 TxD P3C2 P1D10 K2 K2 P50 P46 RxD P3C3 P1D11 K1 L1 P51 P48

tstLED P3C4 P1D12 L5 L2 P52 P49 stsLED P3C5 P1D13 L4 M1 P53 P50 RxLED P3C6 P1D14 L3 M2 P55 P51 TxLED P3C7 P1D15 L2 N1 P56 P52

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

xPA0 P2A0 P2D0 AA3 N2 P59 P53 xPA1 P2A1 P2D1 Y4 T1 P60 P54 xPA2 P2A2 P2D2 AA4 T2 P63 P56 xPA3 P2A3 P2D3 AB4 U2 P68 P57 xPC0 P2A4 P2D4 W5 V1 P69 P58 xPC1 P2A5 P2D5 Y5 V2 P70 P59 xPC2 P2A6 P2D6 AA5 W1 P73 P60 xPC3 P2A7 P2D7 AB5 W2 P74 P61

-- P2B0 P2D8 V6 Y1 P76 P64 -- P2B1 P2D9 V7 Y2 P77 P66 -- P2B2 P2D10 W6 AA3 P78 P68

mCS P2B3 P2D11 Y6 AB4 P79 P69 mA15 P2B4 P2D12 V9 AA4 P80 P70 mA16 P2B5 P2D13 V10 AB5 P82 P71 mA17 P2B6 P2D14 W10 AA5 P83 P74 mA18 P2B7 P2D15 Y10 AA6 P84 P75 CS0 P2C0 ADC0 AA10 AB8 P85 P76

83

SDIN0 P2C1 ADC1 AB10 AA8 P86 P77 CS1 P2C2 ADC2 U10 AB9 P87 P78

SDIN1 P2C3 ADC3 U11 AA9 P89 P79 SCLK P2C4 ADC4 V11 AB10 P90 P80 CS2 P2C5 ADC5 W11 AA10 P92 P81

SDOUT P2C6 ADC6 Y11 AB11 P93 P82 LDAC P2C7 ADC7 AA11 AA11 P95 P83

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

xPB0 P1A0 PxA0 M1 M3 P135 P85 xPB1 P1A1 PxA1 M2 M4 P132 P86 yPB2 P1A2 PxA2 M3 N3 P131 P87 yPB3 P1A3 PxA3 M4 N4 P130 P88 yPB1 P1A4 PxA4 M5 T4 P129 P91 yPB4 P1A5 PxA5 M6 T5 P128 P92 yPB0 P1A6 PxA6 N1 U3 P127 P93 yPB5 P1A7 PxA7 N2 U4 P125 P94 yPB6 P1B0 PxB0 U13 V3 P119 P95 yPB7 P1B1 PxB1 V13 V4 P118 P96 xPB2 P1B2 PxB2 W13 W3 P116 P97 xPB3 P1B3 PxB3 Y13 W4 P113 P98 xPB4 P1B4 PxB4 AA13 Y3 P112 P100 xPB5 P1B5 PxB5 AB13 Y4 P96 P101 yPC3 P1B6 PxB6 U12 Y5 P97 P102 yPC2 P1B7 PxB7 V12 W5 P98 P103 yPC1 P1C7 PxC0 AB17 W11 P108 P113 yPC0 P1C6 PxC1 AA17 Y11 P107 P112 yPA0 P1C5 PxC2 Y17 W10 P105 P111 yPA1 P1C4 PxC3 W17 Y10 P104 P110 yPA2 P1C3 PxC4 AB18 W9 P103 P107 yPA3 P1C2 PxC5 AA18 W8 P102 P106 xPB6 P1C1 PxC6 Y18 W6 P100 P105 xPB7 P1C0 PxC7 W18 Y6 P99 P104

84

eM_DEMO 模組

eM_DEMO 模組的電路配置圖如下

eM_USB 模組

數字型 LED

0 1 2 34 5 6 78 9 A BC D E F

燈號型 LED

44 鍵盤

ADC0 ADC1 DAC0 DAC1

LED 選擇KEY 選擇

其中

1eM_DEMO模組的基本功能包括 A將 xPAxPBxPC等 16個 IO訊號引出控制 LED和鍵盤電路 B將 ADDA訊號引出並放大成+-10V的工作範圍 2LED和鍵盤可以選擇三種模式由 LED和 KEY 兩組開關作選擇圖示如下

模式1

0123

模式2 模式3

0 1 2 34 5 6 78 9 A BC D E F

0123

3模式14鍵輸入並搭配 16點的 LED燈號顯示其中 16點 LED分別對映到 xPA[0~3]xPB[0~7]和 xPC[0~3] 4組按鍵分別對映到 xPC[0~3] 4模式24鍵輸入並搭配四個 7段式數字顯示其中 數字顯示由 xPA[0~3]作數字掃瞄而由 xPB[0~7]作 7段式 LED控制 4組按鍵 分別對映到 xPC[0~3] 5模式316鍵輸入並搭配四個 7段式數字顯示其中 數字顯示由 xPA[0~3]作數字掃瞄而由 xPB[0~7]作 7段式 LED控制 16組按鍵由 xPA[0~3]作鍵盤掃瞄而由 xPC[0~3]作鍵盤讀取 6根據VHDL與數位邏輯設計的章節其中 第 1章至 10章的實驗採用模式1而 第 11章實驗採用模式2而 第 12章之後的實驗都採用模式3

85

FPGA UCF 定義

eM_3S1K 模組

NET CLK LOC = B12

NET XAlt0gt LOC = N2

NET XAlt1gt LOC = T1

NET XAlt2gt LOC = T2

NET XAlt3gt LOC = U2

NET XBlt0gt LOC = M3

NET XBlt1gt LOC = M4

NET XBlt2gt LOC = W3

NET XBlt3gt LOC = W4

NET XBlt4gt LOC = Y3

NET XBlt5gt LOC = Y4

NET XBlt6gt LOC = W6

NET XBlt7gt LOC = Y6

NET XClt0gt LOC = V1

NET XClt1gt LOC = V2

NET XClt2gt LOC = W1

NET XClt3gt LOC = W2

NET YAlt0gt LOC = W10

JP4 接頭

NET YAlt1gt LOC = Y10

NET YAlt2gt LOC = W9

NET YAlt3gt LOC = W8

NET YBlt0gt LOC = U3

NET YBlt1gt LOC = T4

NET YBlt2gt LOC = N3

NET YBlt3gt LOC = N4

NET YBlt4gt LOC = T5

NET YBlt5gt LOC = U4

NET YBlt6gt LOC = V3

NET YBlt7gt LOC = V4

NET YClt0gt LOC = Y11

NET YClt1gt LOC = W11

NET YClt2gt LOC = W5

NET YClt3gt LOC = Y5

在光碟片中 RFFPGAVHDLDEMOBIT3S1K 裡有 VHDL 與數位邏輯設計書本範例原始檔與合成檔

86

eM_3S50 模組

NET CLK LOC = P124

NET XAlt0gt LOC = P59

NET XAlt1gt LOC = P60

NET XAlt2gt LOC = P63

NET XAlt3gt LOC = P68

NET XBlt0gt LOC = P135

NET XBlt1gt LOC = P132

NET XBlt2gt LOC = P116

NET XBlt3gt LOC = P113

NET XBlt4gt LOC = P112

NET XBlt5gt LOC = P96

NET XBlt6gt LOC = P100

NET XBlt7gt LOC = P99

NET XClt0gt LOC = P69

NET XClt1gt LOC = P70

NET XClt2gt LOC = P73

NET XClt3gt LOC = P74

NET YAlt0gt LOC = P105

JP4 接頭

NET YAlt1gt LOC = P104

NET YAlt2gt LOC = P103

NET YAlt3gt LOC = P102

NET YBlt0gt LOC = P127

NET YBlt1gt LOC = P129

NET YBlt2gt LOC = P131

NET YBlt3gt LOC = P130

NET YBlt4gt LOC = P128

NET YBlt5gt LOC = P125

NET YBlt6gt LOC = P119

NET YBlt7gt LOC = P118

NET YClt0gt LOC = P107

NET YClt1gt LOC = P108

NET YClt2gt LOC = P98

NET YClt3gt LOC = P97

在光碟片中 RFFPGAVHDLDEMOBIT3S200 裡有VHDL與數位邏輯設計書本範例原始檔與合成檔

87

eM_95XL 模組

NET CLK LOC = SPIN38

NET XAlt0gt LOC = SPIN53

NET XAlt1gt LOC = SPIN54

NET XAlt2gt LOC = SPIN56

NET XAlt3gt LOC = SPIN57

NET XBlt0gt LOC = SPIN85

NET XBlt1gt LOC = SPIN86

NET XBlt2gt LOC = SPIN97

NET XBlt3gt LOC = SPIN98

NET XBlt4gt LOC = SPIN100

NET XBlt5gt LOC = SPIN101

NET XBlt6gt LOC = SPIN105

NET XBlt7gt LOC = SPIN104

NET XClt0gt LOC = SPIN58

NET XClt1gt LOC = SPIN59

NET XClt2gt LOC = SPIN60

NET XClt3gt LOC = SPIN61

NET YAlt0gt LOC = SPIN111

JP4 接頭

NET YAlt1gt LOC = SPIN110

NET YAlt2gt LOC = SPIN107

NET YAlt3gt LOC = SPIN106

NET YBlt0gt LOC = SPIN93

NET YBlt1gt LOC = SPIN91

NET YBlt2gt LOC = SPIN87

NET YBlt3gt LOC = SPIN88

NET YBlt4gt LOC = SPIN92

NET YBlt5gt LOC = SPIN94

NET YBlt6gt LOC = SPIN95

NET YBlt7gt LOC = SPIN96

NET YClt0gt LOC = SPIN112

NET YClt1gt LOC = SPIN113

NET YClt2gt LOC = SPIN103

NET YClt3gt LOC = SPIN102

在光碟片中 RFFPGAVHDLDEMOSVF95288XL 裡有VHDL與數位邏輯設計書本範例原始檔與合成

檔案

88

eM_FPGA 模組

NET CLK LOC = E12

NET XAlt0gt LOC = AA3

NET XAlt1gt LOC = Y4

NET XAlt2gt LOC = AA4

NET XAlt3gt LOC = AB4

NET XBlt0gt LOC = M1

NET XBlt1gt LOC = M2

NET XBlt2gt LOC = W13

NET XBlt3gt LOC = Y13

NET XBlt4gt LOC = AA13

NET XBlt5gt LOC = AB13

NET XBlt6gt LOC = Y18

NET XBlt7gt LOC = W18

NET XClt0gt LOC = W5

NET XClt1gt LOC = Y5

NET XClt2gt LOC = AA5

NET XClt3gt LOC = AB5

NET YAlt0gt LOC = Y17

JP4 接頭

NET YAlt1gt LOC = W17

NET YAlt2gt LOC = AB18

NET YAlt3gt LOC = AA18

NET YBlt0gt LOC = N1

NET YBlt1gt LOC = M5

NET YBlt2gt LOC = M3

NET YBlt3gt LOC = M4

NET YBlt4gt LOC = M6

NET YBlt5gt LOC = N2

NET YBlt6gt LOC = U13

NET YBlt7gt LOC = V13

NET YClt0gt LOC = AA17

NET YClt1gt LOC = AB17

NET YClt2gt LOC = V12

NET YClt3gt LOC = U12

在光碟片中 RFFPGAVHDLDEMOBIT2V250 裡有VHDL與數位邏輯設計書本範例原始檔與合成檔

89

Page 39: RFFPGA 直流馬達實驗手冊juniortek.com.tw/program/manual/RF-DC-mal.pdf · em_demo模組 em_dcm 直流伺服馬達 dc電源 rffpga 系統的直流馬達實驗規劃 其中包括:

62 實驗 2-閉迴路的速度控制 實驗說明為了觀測閉迴路的速度控制響應建立下面的測試方塊圖

加入 PD控制後系統閉迴路的轉移函數經適度的簡化仍能約略以一階系統

處理方塊圖如下

sτ+1

u km ωm

其中

u 送給控制器的速度命令

ωm馬達的轉動速度可由處理 photo encoder 信號所得的位置微分而得

km一階系統的穩態增益 τ一階系統的時間常數即步階響應中的上升時間

方塊圖中的模組功能說明如下

1用 fg1 產生測試用的方波速度命令

2將方波速度命令和速度回授訊號送到 PD 控制器方塊中產生電壓控制訊號再透

過 io2 模組將訊號送出給伺服介面

3用 ft1 建立對照用的一階系統可用 IIR1濾波器方塊產生

4將方波命令產生速度命令再觀測 PHT(io1)上的速度值 spd

5調整 IIR1濾波器的參數使得兩組波形完全相符這時 IIR1濾波器就是閉迴路

速度控制的特性其中 km 為增益而τ為上升時間(單位為 sec)

6增益 km 可從示波器中作簡單計算而上升時間(τ=40964000dtka)

7 Led四位數字七段顯示模組顯示波形信號資料

39

對應之 plc檔程式說明(exp_speedplc) echo off 畫面顯示開始

run dsp 0 選擇 DSP1

run stop run reset 既有程式停止

run testDCMmem 下載指定程式

das 1 ampfg1out 0 1024 PWM 波形 Volt 設定 DAS 頻道1

das 2 ampft1lp 0 1024 馬達模擬 Volt 設定 DAS 頻道2

das 3 ampio1spd 0 1024 馬達速度 Volt 設定 DAS 頻道3

das 4 ampio1ang 0 1024 馬達角度 Volt 設定 DAS 頻道4

plot select 0 設定示波器頁數

plot xunit 100000 0 設定示波器 X軸

plot yunit 1 50 -300 設定示波器 Y1 軸

plot yunit 2 50 -100 設定示波器 Y2 軸

plot yunit 3 50 100 設定示波器 Y3 軸

plot yunit 4 50000 300 設定示波器 Y4 軸

plot trigger 1 0 1 10 設定示波器觸發

plot scope 9 1 2 3 4 設定示波器顯示

module io2 設定 io2 模組

s cmd ampcn2out

module fg1 設定 fg1 模組

s kAmp 50 s kFrq 150

module cn2 設定 cn1 模組

s cmd ampfg1out s fdk ampio1spd s kp 0x4000

module ft1 設定 ft1 模組

s u ampfg1out s dt 2 s ka 320

module io3 設定 io3 模組

s led ampfg1out

module 回復預設模組

run 1khz 設定抽樣頻率為 4KHz

run start DSP 開始執行

das stop pause 1 DAS 啟動 das start DAS 啟動

echo on 回復正常訊息顯示

CAI操控設計畫面規劃如下(EXP_speedCAI)

40

page 1 畫面設計 page 2 與 page 3 畫面設計與實驗一 page 2 與 page 3相同畫面 page 4 畫面設計

41

方塊的參數設定 使用者可視情況調整一階濾波器的 ka和 dt值使得 ch2和 ch3 兩組波形完全相符

以求得此一閉迴路系統近似的一階轉移函數或調整 PD控制器中的 kp和 kp值以調整系統之響應 實測響應圖

訊 號 說 明 訊 號 說 明 ch1 方波產生器產生之速度命令 ch3 一階濾波器輸出信號 ch2 馬達角速度訊號 ch4 馬達角位置訊號

42

直流馬達之閉迴路速度控制響應圖

43

63 實驗 3-閉迴路的位置控制 實驗說明為了觀測閉迴路的位置控制響應將直流馬達的回授改為位置訊號

建立下面的測試方塊圖 方塊圖中的模組功能說明如下

1用 fg1產生測試用的方波位置命令 2將方波位置命令和位置回授訊號送到 PD控制器方塊中產生電壓控制訊號再透過 io2模組將訊號送出到伺服介面驅動馬達轉動

對應之 plc檔程式說明(exp_angleplc) echo off 畫面顯示開始

run dsp 0 選擇 DSP1

run stop run reset 既有程式停止

run testDCMmem 下載指定程式

das 1 ampfg1out 0 1024 PWM 波形 Volt 設定 DAS 頻道1

das 2 ampft1lp 0 1024 馬達模擬 Volt 設定 DAS 頻道2

das 3 ampio1spd 0 1024 馬達速度 Volt 設定 DAS 頻道3

das 4 ampio1ang 0 1024 馬達角度 Volt 設定 DAS 頻道4

plot select 0 設定示波器頁數

plot xunit 100000 0 設定示波器 X軸

plot yunit 1 1000 -300 設定示波器 Y1 軸

plot yunit 2 1000 -100 設定示波器 Y2 軸

plot yunit 3 20 100 設定示波器 Y3 軸

plot yunit 4 1000 300 設定示波器 Y4 軸

plot trigger 1 0 1 10 設定示波器觸發

44

plot scope 9 1 2 3 4 設定示波器顯示

module io2 設定 io2 模組

s cmd ampcn2out

module fg1 設定 fg1 模組

s kAmp 1000 s kFrq 75

module cn2 設定 cn1 模組

s cmd ampfg1out s fdk ampio1ang s kp 0x300 s kd 0x4000

module ft1 設定 ft1 模組

s u ampfg1out s dt 2 s ka 320

module io3 設定 io3 模組

s led ampfg1out

module 回復預設模組

run 1khz 設定抽樣頻率為 4KHz

run start DSP 開始執行

das stop pause 1 DAS 啟動 das start DAS 啟動

echo on 回復正常訊息顯示

CAI操控設計畫面規劃如下(EXP_angleCAI) page 1 畫面設計

45

page 2 與 page 3 畫面設計與實驗一 page 2 與 page 3相同畫面 page 4 畫面設計與實驗二 page 4 畫面 方塊的參數設定 延續上一實驗的說明使用者可以調整 PD控制器中的 kp和 kd值以調整系統之

響應 實測響應圖

訊 號 說 明 訊 號 說 明 ch1 方波產生器產生之位置命令 ch3 馬達角速度訊號 ch2 馬達角位置 ch4 Pd控制器輸出之電壓訊號

46

直流馬達之閉迴路位置控制響應圖

47

64 實驗 4-加減速的位置控制 實驗說明為避免方波命令的過於嚴苛在方波命令的輸出加入一加減速控制功

能方塊以減緩命令變化的幅度增加馬達運動的平順建立的測試方塊圖如下

方塊圖中的模組功能說明如下

1用 fg1產生測試用的方波位置命令 2將方波位置命令送到加減速控制方塊處理後產生新的位置命令再將新的位置命

令與位置回授訊號送到 PD控制器方塊中產生電壓控制訊號最後透過 io2模組將訊號送出到伺服介面驅動馬達轉動

對應之 plc檔程式說明(exp_accplc) echo off 畫面顯示開始

run dsp 0 選擇 DSP1

run stop run reset 既有程式停止

run testDCMmem 下載指定程式

das 1 ampfg1out 0 1024 PWM 波形 Volt 設定 DAS 頻道1

das 2 ampcn1out 0 1024 加速控制 Volt 設定 DAS 頻道2

das 3 ampio1spd 0 1024 馬達速度 Volt 設定 DAS 頻道3

das 4 ampio1ang 0 1024 馬達角度 Volt 設定 DAS 頻道4

plot select 0 設定示波器頁數

plot xunit 100000 0 設定示波器 X軸

plot yunit 1 2000 -300 設定示波器 Y1 軸

plot yunit 2 2000 -100 設定示波器 Y2 軸

plot yunit 3 50 100 設定示波器 Y3 軸

plot yunit 4 2000 300 設定示波器 Y4 軸

48

plot trigger 1 0 1 10 設定示波器觸發

plot scope 9 1 2 3 4 設定示波器顯示

module io2 設定 io2 模組

s cmd ampcn2out

module fg1 設定 fg1 模組

s kAmp 2000 s kFrq 150

module cn1 設定 cn1 模組

s cmd ampfg1out

module cn2 設定 cn2 模組

s cmd ampcn1out s fdk ampio1ang s kp 0x300 s kd 0x4000

module ft1 設定 ft1 模組

s u ampfg1out s dt 2 s ka 320

module io3 設定 io3 模組

s led ampfg1out

module 回復預設模組

run 1khz 設定抽樣頻率為 4KHz

run start DSP 開始執行

das stop pause 1 DAS 啟動 das start DAS 啟動

echo on 回復正常訊息顯示

CAI操控設計畫面規劃如下(EXP_accCAI) page 1 畫面設計

49

page 2 畫面設計與實驗一 page 2相同畫面 page 3 畫面設計與實驗二 page 4相同畫面

參數設定參考之前各實驗的說明可線上機動性的調整 PD控制器中的 kp和 kd值以調整系統之響應 實測響應圖

訊 號 說 明 訊 號 說 明 ch1 方波產生器產生之位置命令 ch3 馬達角位置 ch2 加減速模組輸出之位置命令 ch4 馬達角速度訊號

50

圖一 直流馬達經加減速控制後之閉迴路控制響應圖

51

65 實驗 5-正弦波的位置控制 實驗說明在本實驗中改變命令的波形由方波改變為正弦波並建立如下的測

試方塊圖與上一實驗相比較僅更改命令的波形產生方塊 方塊圖中的模組功能說明如下 1用 fg2產生測試用的弦波位置命令 2將弦波位置命令送到加減速控制方塊處理後產生新的位置命令再與 io1 讀入的位

置回授訊號送到 PD 控制器方塊中產生電壓控制訊號再透過 io2 模組將訊號送出到伺服介面驅動馬達轉動

對應之 plc檔程式說明(exp_sinplc) echo off 畫面顯示開始

run dsp 0 選擇 DSP1

run stop run reset 既有程式停止

run testDCMmem 下載指定程式

das 1 ampfg2out 0 1024 SIN 波形 Volt 設定 DAS 頻道1

das 2 ampcn1out 0 1024 加速控制 Volt 設定 DAS 頻道2

das 3 ampio1spd 0 1024 馬達速度 Volt 設定 DAS 頻道3

das 4 ampio1ang 0 1024 馬達角度 Volt 設定 DAS 頻道4

plot select 0 設定示波器頁數

plot xunit 100000 0 設定示波器 X軸

plot yunit 1 2000 -300 設定示波器 Y1 軸

plot yunit 2 2000 -100 設定示波器 Y2 軸

plot yunit 3 50 100 設定示波器 Y3 軸

plot yunit 4 2000 300 設定示波器 Y4 軸

plot trigger 1 0 1 10 設定示波器觸發

52

plot scope 9 1 2 3 4 設定示波器顯示

module io2 設定 io2 模組

s cmd ampcn2out

module fg2 設定 fg1 模組

s kAmp 2000 s kFrq 100

module cn1 設定 cn1 模組

s cmd ampfg2out

module cn2 設定 cn2 模組

s cmd ampcn1out s fdk ampio1ang s kp 0x300 s kd 0x4000

module ft1 設定 ft1 模組

s u ampfg2out s dt 2 s ka 320

module io3 設定 io3 模組

s led ampfg2out

module 回復預設模組

run 1khz 設定抽樣頻率為 4KHz

run start DSP 開始執行

das stop pause 1 DAS 啟動 das start DAS 啟動

echo on 回復正常訊息顯示

CAI操控設計畫面規劃如下(EXP_sinCAI) page 1 畫面設計

53

page 2 畫面設計 page 3 畫面設計與實驗二 page 4相同畫面

方塊的參數設定可調整 PD控制器中的 kp和 kd值以調整系統之響應 實測響應圖

訊 號 說 明 訊 號 說 明 ch1 弦波產生器產生之位置命令 ch3 馬達角位置訊號 ch2 加減速模組輸出之位置命令 ch4 馬達角速度訊號

54

直流馬達之閉迴路弦波加減速位置控制響應圖

55

7組合語言說明

本節將針對 DC馬達伺服控制實驗專用的程式模組進行功能與程式碼的說明其

有關於波形產生器與資料擷取模組等說明如下

SIN_waveasm 正弦波產生器 PWM_waveasm 方波產生器 IIR1_filterasm 一階濾波器 DAS4asm 資料蒐集模組

弦波產生器

此模組會產生週期性的正弦波方塊圖如下

outfrq

kBiasbias

ampkAmp

kFrqth

kThf=1TB

θ

A

其中

1正弦波有四個參數振幅(A)頻率(F)相位(θ)和偏移(B)其公式為 out = A sin(2πF t +θ) + B 2對於單純的正弦波產生器所對映的參數包括 kAmp 振幅值 kFrq 頻率值kFrq=655368000Hz其中 Hz的範圍為 0~4000例如 1000Hz =gt frq=8192 100Hz =gt frq=819 10Hz =gt frq=82 1Hz =gt frq=8 kTh 相角值0~255代表 0~360的相位當 th=0 時為正弦波 th=64 時為餘弦波 th=128時為反相波依此類推 kBias偏移值 3對於可調變的正弦波產生器其對映的輸入點為 amp 控制振幅的輸入點可產生調幅(AM)波形 frq 控制頻率的輸入點可產生調頻(FM)波形 th 控制相位的輸入點可產生調相(PM)波形 bias控制偏移的輸入點可產生雙頻混波(相加)波形 4若不使用調變功能時各個輸入點時的預設值為 amp 指向 kAmp 的位址 frq 指向 kFrq 的位址

56

th 指向 kTh 的位址 bias指向 kBias的位址

模組程式範例SIN_WAVEasm

local amp R0 IP kAmp 輸入點sin波的振幅 local frq R1 IP kFrq 輸入點sin波的頻率 local th R2 IP kTh 輸入點sin波的相角 local bias R3 IP kBias 輸入點sin波的中心偏移 local out R4 OP 輸出點sin波輸出 local tab R5 TP 表格指標指向 sin[256]的表格 local ang R6 內部變數相位角65536=360deg local kAmp R7 1000 參數振幅值 local kFrq R8 1000 參數頻率值=655368000Hz local kTh R9 0 參數相角值360deg=256 local kBias R10 0 參數偏移值 data 11 模組變數區長度及初值 initial 啟動程序 WR ang0 WR out0 ang=out=0 RET timer 即時控制程序(8KHz) RD ang ADD (frq) WR ang ang+=frq SFR 8 ADD (th) AND 255 ACC=sin(ang256+th) ADD tab WRH RDM table-look-up MUL (amp) SFR 12 ADD (bias) WR out out=ACCamp4096+bias RET table tab 256 sin[256]表格區10=4096 0 101 201 301 401 501 601 700 00~070deg 799 897 995 1092 1189 1285 1380 1474 08~0F 1567 1660 1751 1842 1931 2019 2106 2191 10~17 2276 2359 2440 2520 2598 2675 2751 2824 18~1F 2896 2967 3035 3102 3166 3229 3290 3349 20~27 3406 3461 3513 3564 3612 3659 3703 3745 28~2F 3784 3822 3857 3889 3920 3948 3973 3996 30~37 4017 4036 4052 4065 4076 4085 4091 4095 38~3F 4096 4095 4091 4085 4076 4065 4052 4036 40~4790deg 4017 3996 3973 3948 3920 3889 3857 3822 48~4F 3784 3745 3703 3659 3612 3564 3513 3461 50~57 3406 3349 3290 3229 3166 3102 3035 2967 58~5F

57

2896 2824 2751 2675 2598 2520 2440 2359 60~67 2276 2191 2106 2019 1931 1842 1751 1660 68~6F 1567 1474 1380 1285 1189 1092 995 897 70~77 799 700 601 501 401 301 201 101 78~7F 0 65435 65335 65235 65135 65035 64935 64836 80~87180deg 64737 64639 64541 64444 64347 64251 64156 64062 88~8F 63969 63876 63785 63694 63605 63517 63430 63345 90~97 63260 63177 63096 63016 62938 62861 62785 62712 98~9F 62640 62569 62501 62434 62370 62307 62246 62187 A0~A7 62130 62075 62023 61972 61924 61877 61833 61791 A8~A8 61752 61714 61679 61647 61616 61588 61563 61540 B0~B7 61519 61500 61484 61471 61460 61451 61445 61441 B8~BF 61440 61441 61445 61451 61460 61471 61484 61500 C0~C7270deg 61519 61540 61563 61588 61616 61647 61679 61714 C8~CF 61752 61791 61833 61877 61924 61972 62023 62075 D0~D7 62130 62187 62246 62307 62370 62434 62501 62569 D8~DF 62640 62712 62785 62861 62938 63016 63096 63177 E0~E7 63260 63345 63430 63517 63605 63694 63785 63876 E8~EF 63969 64062 64156 64251 64347 64444 64541 64639 F0~F7 64737 64836 64935 65035 65135 65235 65335 65435 F8~FF

就程式結構而言說明如下

timer 即時控制程序(8KHz) RD ang ADD (frq) WR ang ang+=frq SFR 8 ADD (th) AND 255 ACC=sin(ang256+th) ADD tab WRH RDM table-look-up MUL (amp) SFR 12 ADD (bias) WR out out=ACCamp4096+bias RET

1基本上我們以查表法計算 sin()其輸入θ的範圍為 0~255對映到 0~360deg其輸出 sin(θ)的範圍為+-4096對映到+-10的範圍

2建立一個內部變數 ang其範圍為 0~65535對映到 0~360的相位角 3每個timer程序都執行 ang+=frq的動作更新目前的相位角接著依照 ang的相位角查表得到 sin(ang256+th)值

4由於表格長度為 256-word所以必須將 ang256才能得到正確的對映關係而 th範圍為 0~255所以不需要像 ang一般的做額外處理

5sin()的範圍為(+1-1)而在表格中以(+4096~-4096)的型式記錄相當於 10=4096所以執行 Asin()時還要用 SFR12指令做4096的動作才能正確的取得輸出值

58

6就頻率輸入 frq而言其計算原則是將θ=ωt轉化成θ=Σ(ωdt)因為抽樣頻率

為 8KHz所以 dt=18000而得到 frq=655368000Hz公式其中 Hz為真正的頻率在 8KHz的抽樣頻率下其範圍為 0~4000

鋸齒波產生器

此模組會產生週期性的鋸齒波方塊圖如下

outfrq

kBiasbias

ampkAmp

kFrqth

kThf=1TB

θ

A

其中

1鋸齒波也有四個參數振幅(A)頻率(F)相位(θ)和偏移(B)和正弦波的定義完全一致唯一的差異是其輸出為鋸齒波而非正弦波

2基本波形是從週期開始時為 0一直遞增到週期結束時到達最高點然後立刻回歸

到 0重新開始 3以程式結構而論鋸齒波程式幾乎就是正弦波的相位計算部分只差沒有正弦波的

查表處理而已

模組程式範例SAW_WAVEasm

local amp R0 IP kAmp 輸入點sin波的振幅 local frq R1 IP kFrq 輸入點sin波的頻率 local th R2 IP kTh 輸入點sin波的相角 local bias R3 IP kBias 輸入點sin波的中心偏移 local out R4 OP 輸出點sin波輸出 local ang R5 內部變數相位角65536=360deg local kAmp R6 1000 參數振幅值 local kFrq R7 1000 參數頻率值=655368000Hz local kTh R8 0 參數相角值360deg=256 local kBias R9 0 參數偏移值 data 11 模組變數區長度及初值 initial 啟動程序 WR ang0 WR out0 ang=out=0 RET timer 即時控制程序(8KHz) RD ang ADD (frq) WR ang ang+=frq SFR 8 ADD (th) AND 255 ACC=(ang256+th)amp0x00ff MUL (amp) SFR 8 ADD (bias) WR out out=ACCamp256+bias

59

RET

脈衝波產生器

outfrq

kBiasbias

ampkAmp

kFrqth

kThf=1TB

θ

A

pwm

kDutyduty

此模組會產生週期性的脈衝波方塊圖如下

其中

1脈衝波有五個參數其中振幅(A)頻率(F)相位(θ)和偏移(B)四個參數和正弦波

定義完全一樣另外再增加一個負載率(D) 2基本波形是從週期開始時為 1隔段時間後換為 0然後持續到週期結束再重新開始其中 1所佔有的比例就是負載率當 D=0時為 0而 D=255時為 100

3和其他參數類似負載率(D)以 duty為其輸入點而以 kDuty為其參數值

模組程式範例PLS_WAVEasm

local amp R0 IP kAmp 輸入點脈衝波的振幅 local frq R1 IP kFrq 輸入點脈衝波的頻率 local th R2 IP kTh 輸入點脈衝波的相角 local bias R3 IP kBias 輸入點脈衝波的中心偏移 local duty R4 IP kDuty 輸入點脈衝波的負載率 local out R5 OP 輸出點脈衝波輸出 local ang R6 內部變數相位角65536=360deg local kAmp R7 1000 參數振幅值 local kFrq R8 1000 參數頻率值=655368000Hz local kTh R9 0 參數相角值360deg=256 local kBias R10 0 參數偏移值 local kDuty R11 128 參數負載率100 =256 data 12 模組變數區長度及初值 initial 啟動程序 WR ang0 WR out0 ang=out=0 RET timer 即時控制程序(8KHz)

60

RD ang ADD (frq) WR ang ang+=frq SFR 8 ADD (th) AND 255 ACC=(ang256+th)amp0x00ff SUB (duty) RD (amp) JLT t1 RD 0 ACC=(amp0) t1 ADD (bias) WR out out=ACC+bias RET

IIR 一階濾波器

此模組執行一階的 IIR濾波器方塊圖如下

kau x

Z-1

+

+

-

+低通濾波器

高通濾波器dx lp

hp

濾波器參數的計算公式如下

1假設濾波器的頻寬為 hz則 ωn=hz628 2若系統頻率為 8KHz則抽樣週期 dT為 dT=dt8000 其中 dt為模組參數 3則濾波器參數為 ka=ωndT4096或是 =hzdt62880004096即 =hzdt32 4當 dt決定後所允許的訊號頻寬為(4000dt)換句話說訊號頻寬會因為 dt增加而下降

為了方便實驗的運用下面列出常用的參數對照表

濾波頻寬

(Hz)

10 20 50 100 200 500 1000 2000

訊號頻寬

(Hz)

400 800 2000 4000 4000 4000 4000 4000

模組參數 dt 10 5 2 1 1 1 1 1

模組參數 ka 320 320 320 320 640 1600 3200 6400

表格的運用方式如下

1首先決定濾波頻寬 2接著查表找出對映的參數 dt和 ka 3再查表得到對映的訊號頻寬以決定是否需要串接前級濾波器

61

模組程式範例IIR1_FILTERasm

local u R0 IP 輸入點濾波器輸入 local lp R1 OP 輸出點低通濾波器輸出 local hp R2 OP 輸出點高通濾波器輸出 local dt R3 1 參數抽樣週期 local ka R4 4096 參數增益 ka10=4096 local prd R5 內部變數抽樣週期用 data 6 模組變數區長度 initial 開機啟動程序 WR lp0 WR hp0 WR prd1 RET lp=hp=0prd=1 timer 即時控制程序 SUB prd1 JNZ b9 if (--prdgt0) return RD dt WR prd prd=dt RD (u) SUB lp WR hp hp=u-lp MUL ka SFR 12 ADD lp WR lp lp+=(hpka4096) b9 RET

資料蒐集模組

資料蒐集模組是一個非常特殊的模組專門配合 eTTY 程式中的示波器使用

模組程式範例DAS4asm

local cmd R0 0 紀錄命令0=停止1=前置記錄2=正觸發4=負觸發6=觸發記錄 local dt R1 1 抽樣週期每 dT抽樣一次 local tab R2 TP DAS表格啟始位址 local cnt R3 0 目前記錄點(0~255) local ch1 R4 0 定義頻道1的變數位址 local ch2 R5 0 定義頻道2的變數位址 local ch3 R6 0 定義頻道3的變數位址 local ch4 R7 0 定義頻道4的變數位址 local trg R8 0 定義觸發頻道的變數位址 local th R9 0 觸發準位 local tail R10 0 觸發後的抽樣個數 local buf R11 1 抽樣計數(1~dt) local pnt R12 表格位址計算pnt=tab+cnt4 local len R13 表格長度計算(0~256) data 14 定義模組變數區的長度 table tab 1024 定義表格的長度 initial 啟動程序 WR cmd0 RET cmd=0 timer 控制程序

62

ADD cmd0 JZ t9 if (cmd==0) return SUB buf1 JNZ t9 if (--buf)gt0) return RD dt WR buf dt=buf RD cnt ADD 1 AND 0xff WR cnt cnt=(cnt+1)amp0xff SFL 2 ADD tab WR pnt pnt=tab+cnt4 RD (ch1) WR (pnt) ADD pnt1 pnt++=ch1 RD (ch2) WR (pnt) ADD pnt1 pnt++=ch2 RD (ch3) WR (pnt) ADD pnt1 pnt++=ch3 RD (ch4) WR (pnt) pnt =ch4 RD cmd SUB 1 JZ t9 SUB 1 JZ t2 SUB 1 JZ t3 SUB 1 JZ t4 SUB 1 JZ t5 SUB 1 JZ t6 JR t7 t2 RD (trg) SUB th JGE t9 ADD cmd1 JR t9 wait trgltth t3 RD (trg) SUB th JLE t9 JR t6 wait trggtth t4 RD (trg) SUB th JLE t9 ADD cmd1 JR t9 wait trggtth t5 RD (trg) SUB th JGE t9 JR t6 wait trgltth t6 WR len0 WR cmd7 len=0cmd=7 t7 ADD len1 SUB tail JLT t9 WR cmd0 if ((++len)gt=0x80) cmd=0 t9 RET

與 DC 馬達控制相關的程式模組有以下 4個程式模組說明如下

(1)加減速控制模組 ACC_controlasm (2)光電盤輸入模組 POS_inputasm (3)PWM輸出模組 PWM_outputasm (4)PD控制模組 PD_controlasm

71加減速控制模組 此程式模組主要功能在於執行位置控制的加減速命令修正其數學模式採用 Lynn

濾波器的架構參見下圖

cmd

2

+

old Z -1

-

Z -1

Z -1

Z-1

Z-1x0 x1 x8 x9 x16

+ -

++

2

Z-1

Z-1 y1 y2

+

-

y0

+ +

sumZ-1

+164

12

out

dif

+

63

加減速控制模組方塊圖

其中

1Lynn 濾波器的階數固定成八階也就是 m=8其公式為 H(z) = (1-2Z-m+Z-2m)(1-2Z-1+Z-2)m2

2因為m=8所以m2=64因此最後計算低通濾波的部份時要先做除 64的運算 3因為低通濾波(lp)和 y0之間有 64倍的差異代表 y0y1y2的變化範圍比濾波器輸

入值要擴大許多例如輸入值在+-1000變化時y0y1y2很可能會在+-64000之間變化這範圍已經超出整數處理的範圍很可能會造成錯誤的計算結果

4所以在實驗時輸入值的變化範圍必須控制在+-500之間以保證計算的正確性 5對於 Lynn 濾波器當 m=8時其濾波器的頻寬固定為 1 kHzmdt也就是 dt=1時頻寬為 125 Hz dt=2時頻寬為 625Hz依此類推 6對於 Lynn 濾波器其濾波器的延遲固定為 m個抽樣週期因此設計 hp = x8 - lp 即可得到高通濾波器的對應結果 7其中乘 2和除 64的運算以移位運算取代所以整個程式中並無任何乘法運算 8Lynn 濾波器本身並不是穩定濾波器所以在程式啟動時必須確實的將所有狀態

(x0~x16)歸零否則會產生不穩定的狀態輸出

因為 Lynn濾波器中所有參數固定所以除了抽樣週期 dt 之外並無任何可調參數

抽樣週期 dt 可以控制頻寬dt 越大則濾波器頻寬越低

將步階命令值的輸出送入 Lynn 濾波器中經由低通濾波器的效應可以減緩命

令的變化程度達到加減速控制的目的以下為使用 Lynn 濾波器型式實現加減速控

制的組合語言程式列印 如欲更進一步瞭解 Lynn 濾波器與 FIR 數位濾波器之間的關係可以參考通訊實驗

四數位濾波器設計(FIR)中之說明

ACC_controlasm程式列印 local cmd R0 IP 輸入點位置命令

local out R1 OP 輸出點加減速處理後的位置命令

local dif R2 OP 輸出點位置微分命令

local axis R3 0 馬達編號0=X1=Y2=Z3=C

local old R4 內部變數微分計算用

local sumL R5 內部變數積分計算用

local sumH R6 內部變數積分計算用

local y0 R7 內部變數y(0~2)

local y1 R8 local y2 R9

local x0 R10 內部變數x(0~16)

local x1 R11 local x2 R12 local x3 R13 local x4 R14

local x5 R15 local x6 R16 local x7 R17 local x8 R18

local x9 R19 local x10 R20 local x11 R21 local x12 R22

local x13 R23 local x14 R24 local x15 R25 local x16 R26

64

data 27 模組變數區長度

initial 開機啟動程序

WR dif0 RD (cmd) WR out WR old dif=0 out=old=cmd

sumHL=cmd64

SFL 6 WR sumL RD out SFR 10 SGN 5 WR sumH

RPT 17 WR x00 RPT 3 WR y00 RET x[0~16]=0y[0~2]=0

timer 即時控制程序

RD (cmd) SUBX old WR x0 x0=cmd-old old=cmd

SUB x81 ADD x16 ADD y11 SUB y2 WR y0 y0=x0-2x8+x16+2y1-y2

SGN ADD sumL WR sumL RDH ADC sumH WR sumH sumHL+=y0

WRH RD sumL SFR 6 WR out out=sumHL64

RD y0 SGN SFR WR dif dif=y032mm

RD x0 RPT 16 RDX x1 x[i]=x[i-1] i=1~16

RD y0 RDX y1 WR y2 y[i]=y[i-1] i=1~2

b9 RET

72光電盤輸入模組

DC馬達的位置由光電盤量測之預設儲存於 0xac與 0xbe二個輸入埠位址中其中位址 0xac記錄 X軸馬達的位置位址 0xbe記錄 Y軸馬達的位置由於本實驗的DC馬達接在 Y軸的位置上因此程式中直接選用 Y軸的輸入 光電盤位置輸入的程式列印如下其中速度由位置的差分而得至於馬達的位置

則使用內部 2個 word加以記錄精度為 32位元 POS_inputasm程式列印 local spd R0 OP 輸出點速度量測值

local ang R1 OP 輸出點角度量測值

local angH R2 內部變數角度的 32 位元部分

local mode R3 0x308 模式選擇15MHzAB 相正反向輸入

local pht R4 0xac 輸入阜地址光電盤輸入(0xac)

local phtc R5 0xbe 輸入阜地址光電盤模式(0xbe)

local old R6 內部變數速度更新用

data 7 模組變數區長度

initial 開機啟動程序

RD mode WR (phtc) phtc=mode

RD (pht) WR old WR spd0 RET old=phtspd=0

timer 即時控制程序

RD (pht) SUBX old SGN 11 WR spd spd=(pht-old)old=pht

65

ADD ang WR ang angHL+=spd

RDH ADC angH WR angH

RET

73 PWM輸出控制模組 模組方塊

cmd PWM輸出

程式說明 1在開機時將切換保護時間寫到輸出阜 0xbc上其中切換保護值為 0~6360=5us 2在每次 timer interrupt時將 cmd訊號處理後寫到輸出阜 0xb8上

PWM_outputasm程式列印 local cmd R0 IP gnd 輸入點v相命令

local gain R1 4096 參數輸出增益1=4096

local bias R2 2048 參數輸出偏壓0=2048

local limit R3 4095 參數輸出極限1=4095

local zone R4 0x88f0 參數頻率=12KHz切換保護=5us

local pwm R5 0xb8 輸出阜地址PWM0 輸出(0xb8)

local mode R6 0xbc 輸出阜地址PWM 模式(0xbc)

local p0md R7 0xf8 輸出阜地址port0 模式(0xf8)

local gnd R8 0 輸入接地點

data 9 模組變數區長度

initial 開機啟動程序

RD bias WR (pwm) pwm=bias

RD 0xffff WR (p0md) set port0 mode

RD zone WR (mode) RET mode=zone

stop 關機保護程序

RD bias WR (pwm) RET pwm=bias

timer 即時控制程序

RD (mode) xor 1 and 1 WR (mode) trigger watch-dog

RD (cmd) MUL gain SFR 12 ADD bias ACC=(cmdgain4096)+bias

MAX 0 MIN limit WR (pwm) pwm=limit(ACC)

RET

66

74 PD 控制模組

PD控制的模組方塊參見圖二十一所示其中比例控制的部份直接由增益 kp加以調整微分控制的部份則由誤差的差分經增益 kd的調整而得

Σ+

-

cmd

fdk

err out

Σ

pk

dk

Σ

+

+

+

-

old1minusZ

PD控制器的方塊圖

PD_controlasm程式列印 local cmd R0 IP gnd 輸入點位置命令(可忽略)

local fdk R1 IP gnd 輸入點位置回授(可忽略)

local out R2 OP 輸出點用以控制速度迴路

local kp R3 256 參數增益 kp10=256

local kd R4 0 參數增益 kd10=256

local err R5 0 內部變數

local old R6 0 內部變數

local gnd R7 0 無輸入時的短路點

data 8 模組變數區長度

initial 開機啟動程序

WR out0 WR old0 RET out=old=0

timer 即時控制程序

RD (cmd) SUB (fdk) PRTF WR err

MUL kp SFR 8 P=(cmd-fdk)kp256

RDS err SUBX old MUL kd SFR 8 D=(err-old)kd256

ADDS

WR out out=P+D

RET

程式中預設增益值的 10以整數值 256為基底因此使用 SFR 8的指令加以調

整另外在在計算微分項的程式部份用到 SUBX old的指令其詳細的暫存器動作如

下 參考 piDSP的指令說明SUBX指令將總共用到 3個時序參考錯誤 找不到參照

67

來源在時序 1時將原先 AX的資料拷貝一份到 HX中時序 2時正式執行減

法的動作所以 AX暫存器中的內容會變成 err-old時序 3時DSP會將存放在 HX暫存器中的內容拷貝一份到 old的記憶體中也就是經由 SUBX此一精簡指令將

同時完成計算差分所需要的相減與資料疊代的動作有效的利用 piDSP控制器 DSP核心的精簡指令將可以大幅提昇系統的計算速度

HX AXoldSUBXerr err

old

err

errerr olderr minus

1_err

errerr olderr minus err

1_err

1

2

3

SUBX的指令時序與暫存器變化

68

8附錄快速安裝說明

光纖網路通訊 FPGA 發展系統 (適用於 WIN-XP200098 系統)

快速安裝說明

26Pin 負載輸出入埠

雙電源︵5

12

伏︶輸入埠

單電源︵5

伏︶輸入埠

USB

光纖線輸

號 光纖線輸出埠

入 傳 埠

首先將光碟片 RFFPGA 目錄檔案拷貝在您工作硬碟裡面

第一次安裝時先將 USB 傳輸線接上電腦主機將電源供應器接上 FPGA 模組此時電

腦會出現安裝 USB-Serial 驅動程式選擇從清單安裝此驅動程式放置在光碟片

RFFPGA-USBdrive 選擇您目前安裝系統

可選擇 WIN-98WIN-MEWIN-2000WIN-XP 系統配合您現在工作電腦作業系統

69

注意一般電腦 USB 埠很多插口當您安裝驅動程式時是配合您當時插入之埠

下次如您插入不同接口埠時電腦會再次要求安裝驅動程式這是正常現象請再次安

裝驅動程式否則無法使用

FPLC 操作

首先進入 RFFPGA裡子目錄 testASM直接點選 fPLCexe 出現下面操作畫面(也可直接將

此檔案放置桌面直接點選)

(或者選擇 File 再執行 Setuphellip 選擇您要執行 CAI 檔)

70

進入下面操作畫面 首先使用滑鼠在 FPGA下載按鈕單擊動作使 FPGA變成 DSP晶片 實驗一至實驗五皆為使用 DSP組合語言設計程式其原始程式分別為 testASM1至testASM5可使用 texPad 開啟與編輯程式內容 實驗三與實驗五多有 IO控制動作 當選擇實驗三時出現下面畫面

71

eM_USB 模組

數字型 LED

0 1 2 34 5 6 78 9 A BC D E F

燈號型 LED

44 鍵盤

ADC0 ADC1 DAC0 DAC1

LED 選擇KEY 選擇

模 式 1

0123

注意操作畫面 3與 4 說明開關與按鍵選擇位置後選擇程式下載再按程式啟動如您

按下 0-3按鍵時燈號型 LED會有不同方向閃爍顯示程式停止時結束所有 IO控制動作再按回首頁選擇其他實驗 實驗四與實驗五

模式3

0 1 2 34 5 6 78 9 A BC D E F

按照上面開關選擇直接操作如果以上實驗皆能按照正常操作表示您光纖網路通訊

FPGA發展模組以能正常使用 注意 開機與關機動作順序如下

開機電腦啟動 --- eM_USB 模組電源接上 --- USB 接上電腦 ---

啟動 FPLC 軟體 --- 下載 FPGA 程式

關機關閉 FPLC 軟體 --- eM_USB 模組電源拔掉 --- 拔掉電腦 USB 接頭 ---關掉

電腦

如果以上順序有亂可能造成 USB 找不到驅動造成無法下載經過幾次測試還是

無法下載建議重新啟動電腦主機按照正確步驟操作

72

FPGA 下載操作

進入 FPLC 操作系統按照下列步驟選擇節點模組與下載 bit FPGA 檔案

在 VHDLDEMO 子目錄下您可以選擇您目前 FPGA 種類型號在此型號下我們已將 VHDL

與數位邏輯設計課本範例全部放於此處

73

光纖網路連線 FPGA 下載操作

首先利用光纖線將 eM_USB0 模組光纖輸出埠接至 eM_USB1 模組光纖輸入埠以此

類推最後再將最後 eM_USBN 模組光纖輸出埠接至 eM_USB0 模組光纖輸入埠配置

如附圖方式

個人電腦(Windows) eM_USB模組

0USB

eM_USB模組1

光纖網路

eM_USB模組2

eM_USB模組N

配置完成後進入 FPLC 系統首先必須先將 Node00 下載在 testASM 子目錄裡

piDSPv0bit 檔讓 eM_USB0 模組 FPGA 具備 DSP 功能才能執行光纖網路通訊

操作如下

此時您就可以選擇分別下載至各模組 FPGA 檔 bit

74

安裝 FPLC 注意事項

當您進入 FPLC 時

按 FILE 選擇 programhellip 選擇檔案為 exp_dcmplc 出現下面畫面

正常顯示畫面為

75

DOS 環境操作

在 PC 端的操作是在 Windows 環境中的 DOS 視窗中執行指令範例如下

eFPGA progNETbit 下載 FPGA電路至網路節點0(即 USB節點)中 eFPGA testLEDbit 1 下載 FPGA電路至網路節點1中

對於單一節點的控制程序如下

1將 eM_USB模組連結個人電腦的 USB端 2eM_USB模組開機 3執行下載指令即可 eFPGA xxxxbit 4若要更改 FPGA電路只要重新執行下載指令即可

對於多個網路節點的控制程序如下

1第一組 eM_USB模組連結個人電腦的 USB端再以光纖網路依序其他各節點 2連接 USB界面者為模組0從光纖發射端連接出去的模組為1依此類推 3將所有 eM_USB模組開機 4執行下載指令如下 eFPGA progNETbit 模組0必須先下載指定的 FPGA電路 eFPGA xxxxbit 1 再依序下載其他網路模組的 FPGA電路 eFPGA yyyybit 2 eFPGA zzzzbit 最後再重新下載模組0的 FPGA電路 5換句話說模組0必須先執行 progNETbit讓光纖網路接受 FPGA控制後才能透過光纖網路下載至其他節點等全部網路節點下載完畢後再將模組0的 FPGA重新下載讓模組0也可自由執行任意的 FPGA電路

6若要更改某一個網路節點中的 FPGA電路只要重新執行下述指令 eFPGA progNETbit 模組0必須先下載指定的 FPGA電路 eFPGA yyyybit 2 下載指定網路模組的 FPGA電路 eFPGA zzzz bit 最後再重新下載模組0的 FPGA電路 換句話說除非模組0中的 FPGA已經包括光纖網路管理電路否則一定要先在

模組0中下載網路管理電路後才能下載指定網路節點的 FPGA電路

76

光纖網路通訊 FPGA 發展系統

系統配置

光纖網路通訊 FPGA 發展系統的系統配置圖如下

個人電腦(Windows) eM_USB模組

0USB

eM_USB模組1

光纖網路

eM_USB模組2

eM_USB模組N

其中

1基本模組為 eM_USB模組可用 USB界面和個人電腦連線並提供 USB對光纖網路的轉換功能使得個人電腦可以獨立控制光纖網路中的每個網路節點

2eM_USB模組也可以作為光纖網路中的網路節點透過光纖網路而接受個人電腦的

監控 3就個人電腦而言不論是 USB界面直接連結或是以光纖網路間接連結的 eM_USB模組都是可以直接監控的網路節點最多可以同時控制一個 USB節點和 30個網路節點

4對於每一個網路節點個人電腦都可執行 eM_USB模組中 FPGA的電路下載工作並在適當的 FPGA電路配合下可執行 eM_USB模組中 FPGA內部電路的讀寫控制 5透過適當的 FPGA電路設計各網路節點都可透過光纖網路和其他任何網路節點

作同步通訊執行 FPGA內部記憶體的資料交換資料交換頻率可達 1KHz以上

77

網路模組配置

每個網路模組的標準配置圖如下

eM_USB模組光纖網路

USB eM_FPGA卡

eM_DEMO模組

eM_EXP實驗模組

DC電源

其中

1網路模組以 eM_USB模組為主提供基本的 USB界面和光纖網路連線 2eM_USB模組中的 FPGACPLD採用插卡型式可選擇不同的 eM_FPGA卡包括

eM_2V1K卡可選用 Virtex系列的 XC2V250和 XC2V1000 eM_3S1K卡可選用 Spartan3系列的 XC3S400XC3S1000和 XC3S1500 eM_3S50卡可選用 Spartan3系列的 XC3S50XC3S200和 XC3S400 eM_95XL卡可選用 9500XL系列的 XC95144XL和 XC95288XL 3eM_USB模組中的對外連線有兩種一種是 26P接頭用以連接既有的各種實驗模

組另一種是兩組 50P接頭將 FPGA中各接腳引出用以連接專題實驗 4eM_DEMO模組就是插上 50P接頭的教學模組其中包括 LED 數字顯示和 44鍵盤也具備兩組的 ADC和兩組的 DAC接頭提供類比訊號的測試工具

常用的實驗組合包括

1精簡組合包括(eM_USB+eM_FPGA)提供基本的網路節點適用於專題實驗 2標準組合包括(eM_USB+eM_FPGA+eM_DEMO)提供基礎 FPGA設計的教學實驗

3實驗組合包括(eM_USB+eM_FPGA+eM_DEMO+eM_EXP)提供進階的 FPGA實驗可依需求選用不同的實驗模組

78

eM_USB 模組

eM_USB 模組的電路配置圖如下

TxRx

DCPower

USB

JP2

JP3

光纖界面

外加電源

PC連線

JP1

eM_FPGA模組

FT232 CPLD FlashROM

SRAM

10cm

6cm

JP4

其中

1對外的連線接頭包括 DC電源 可選擇單電源(5V)或是多電源(5V+12V-12V)兩種 USB界面 直接連接個人電腦 光纖界面連接光纖網路 2實驗界面包括 JP1負責內部 CPLD的電路下載 JP2JP3兩組 50P的擴張用接頭 JP4 標準 26P接頭用以連接各種實驗模組 3內部的電路配置包括 A以 SO-DIMM接頭連接各種 eM_FPGA卡 B內附 EEPROMFlashROM和 SRAM提供 FPGA作應用測試 C以一顆 FT232BM作為 USB界面解碼而以一顆 CPLD作為光纖網路解碼 D提供各種 eM_FPGA卡的電路下載功能 4內附五顆 LED由上而下依序為 usbLED指示 USB界面的讀寫狀態 tstLED可由 FPGA電路自行定義 stsLED可由 FPGA電路自行定義 RxLED 可由 FPGA電路自行定義 TxLED 可由 FPGA電路自行定義

79

外部接腳定義

外部接頭的接點順序圖示如下

上視圖

JP11 9 JP4

126225

JP31

50249

JP21

50249

而各接頭的接點定義如下

JP1 JP4 JP2 JP3 1+33V 1+12V 2+12V 1 GND 2 GND 1 GND 2 GND 2GND 3 ADC 4 DAC 3POWER 4ALARM 3 +5V 4 +5V 3nc 5 yPB2 6 yPB3 5RxNET 6TxNET 5+12V 6+12V 4TCK 7 yPB1 6 yPB4 7RxUSB 6TxUSB 7-12V 6-12V 5nc 9 yPB0 10yPB5 9RxCAN 10TxCAN 9 ADC 10 DAC 6TDO 11yPB6 12yPB7 11P0D0 12P0D1 11P1D0 12P1D1 7TDI 13yGND 14yPC3 13P0D2 14P0D3 13P1D2 14P1D3 8nc 15yPC2 16yPC1 15P0D4 16P0D5 15P1D4 16P1D5 9TMS 17yPC0 18yPA0 17P0D6 18P0D7 17P1D6 18P1D7 19yPA1 20yPA2 19P0D8 20P0D9 19P1D8 20P1D9 21yPA3 22GND 21P0D10 22P0D11 21P1D10 22P1D11 23GND 24+5V 23P0D12 24P0D13 23P1D12 24P1D13 25+5V 26nc 25P0D14 26P0D15 25P1D14 26P1D15 27P2D0 28P2D1 27PxA0 28PxA1 29P2D2 30P2D3 29PxA2 30PxA3 31P2D4 32P2D5 31PxA4 32PxA5 33P2D6 34P2D7 33PxA6 34PxA7 35P2D8 36P2D9 35PxB0 36PxB1 37P2D10 38P2D11 37PxB2 38PxB3 39P2D12 40P2D13 39PxB4 40PxB5 41P2D14 42P2D15 41PxB6 42PxB7 43ADC0 44ADC1 43PxC0 44PxC1 45ADC2 46ADC3 45PxC2 46PxC3 47ADC4 48ADC5 47PxC4 48PxC5 49DAC0 50DAC1 49PxC6 50PxC7

80

eM_FPGA 模組

在各種 eM_FPGA 模組中FPGA 對外電路的標準配置圖如下

24576MHz

FlashROM

26PSRAM

EEPROM

mD[8]

yPA[4]

FPGACPLD

mA[19]mRDmWRmCSeeCKeeCSeeDIeeDO

光纖界面 RxNETTxNET

USB 界面 RxUSBTxUSBCLK24MPOWERALARM

LED

tstLEDstsLEDRxLEDTxLED

yPB[8]yPC[4]

ADCDAC

ADC[8]

實驗模組

ADC[2]

DAC[2]

xPA[4]

xPB[8]

xPC[4]

基礎實驗

其中

1FPGACPLD可以選擇下述幾種 XC2V250XC2V1000 採用 eM_2V1K模組其中 FPGA為 FG456包裝 XC3S400XC3S1000XC3S1500採用 eM_3S1K模組其中 FPGA為 FG456包裝 XC3S400XC3S1000XC3S1500採用 eM_3S1K模組其中 FPGA為 FG456包裝 XC3S50XC3S200XC3S400 採用 eM_3S50模組其中 FPGA為 TQ144包裝 XC95144XLXC95288XL 採用 eM_95XL模組其中 CPLD為 TQ144包裝 2採用 FG456包裝者可以控制所有的 IO界面 3採用 TQ144包裝者只是不能控制 RAM和 FlashROM而可以控制其他所有的界面 4所有 FPGA模組都可自由選擇由 USB界面或是由光纖界面下載電路但是 CPLD模組只能固定由 USB界面下載電路

5所有 FPGACPLD模組都可透過 26P接頭連接既有的各種實驗模組

81

FPGA 接腳對照表

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

mD0 XD6 mD0 A17 C13 -- -- mD1 XD7 mD1 B17 D12 -- -- mD2 XD8 mD2 C17 D11 -- -- mD3 XD9 mD3 D17 C11 -- -- mD4 XD10 mD4 E17 D10 -- -- mD5 XD11 mD5 E16 C10 -- -- mD6 XD12 mD6 E14 D9 -- -- mD7 XD13 mD7 E13 D7 -- -- mA0 XD14 mA0 D13 C7 -- -- mA1 XD15 mA1 C13 D6 -- -- mA2 XA0 mA2 V5 C3 -- -- mA3 XA1 mA3 U5 C4 -- -- mA4 XA2 mA4 Y2 D3 -- -- mA5 XA3 mA5 Y1 D4 -- -- mA6 XA4 mA6 V4 E3 -- -- mA7 XA5 mA7 V3 E4 -- -- mA8 XA6 mA8 W2 F3 -- -- mA9 XA7 mA9 W1 F4 -- -- mA10 XA8 mA10 T2 G6 -- -- mA11 XA9 mA11 T1 K3 -- -- mA12 XA10 mA12 R4 K10 -- -- mA13 XA11 mA13 R3 L3 -- -- mA14 XA12 mA14 R2 L4 -- -- mRD XRD mRD R1 D5 -- -- mWR XWR mWR P6 C6 -- --

POWER P0A0 POWER B4 B20 P1 P5 ALARM P0A1 ALARM A4 A19 P2 P6 RxNET P0A2 RxNET C4 B19 P4 P7 TxNET P0A3 TxNET C5 A18 P5 P9 RxUSB P0B0 RxUSB B5 A15 P6 P10 TxUSB P0B1 TxUSB A5 B15 P7 P11 RxCAN P0B2 RxCAN D6 A14 P8 P12 RxCAN P0B3 TxCAN C6 B14 P10 P13

CLK24M CLK24M CLK24M E12 B12 P124 P38

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

PWM0H P3A0 P0D0 E6 A8 P21 P23 PWM0L P3A1 P0D1 E5 B8 P23 P24 PWM1H P3A2 P0D2 C2 B6 P24 P25 PWM1L P3A3 P0D3 C1 A5 P25 P26 PWM2H P3A4 P0D4 D2 B5 P26 P27

82

PWM2L P3A5 P0D5 D1 A4 P27 P28 PWMenb P3A6 P0D6 E4 B4 P28 P30 PHT1Z P3A7 P0D7 E3 A3 P30 P31 PHT1A P3B0 P0D8 G2 C1 P31 P32 PHT1B P3B1 P0D9 G1 C2 P32 P33 PHT0A P3B2 P0D10 H5 D1 P33 P34 PHT0B P3B3 P0D11 J6 D2 P35 P35 AMP0 P3B4 P0D12 H4 E1 P36 P39 AMP1 P3B5 P0D13 H3 E2 P40 P40 AMP2 P3B6 P0D14 H2 F2 P41 P41 AMP3 P3B7 P0D15 H1 G1 P44 P43 eeSK P0C3 P1D0 C10 B9 P20 P22 eeCS P0C2 P1D1 D10 A9 P18 P21 eeDI P0C1 P1D2 F10 B10 P17 P20 eeDO P0C0 P1D3 E10 B11 P15 P19 ssCK P0B7 P1D4 E8 A11 P14 P17 ssCS P0B6 P1D5 E7 A12 P13 P16 ssDI P0B5 P1D6 A6 B13 P12 P15 ssDO P0B4 P1D7 B6 A13 P11 P14

ppCLK P3C0 P1D8 K4 G2 P46 P44 ppDIN P3C1 P1D9 K3 K1 P47 P45 TxD P3C2 P1D10 K2 K2 P50 P46 RxD P3C3 P1D11 K1 L1 P51 P48

tstLED P3C4 P1D12 L5 L2 P52 P49 stsLED P3C5 P1D13 L4 M1 P53 P50 RxLED P3C6 P1D14 L3 M2 P55 P51 TxLED P3C7 P1D15 L2 N1 P56 P52

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

xPA0 P2A0 P2D0 AA3 N2 P59 P53 xPA1 P2A1 P2D1 Y4 T1 P60 P54 xPA2 P2A2 P2D2 AA4 T2 P63 P56 xPA3 P2A3 P2D3 AB4 U2 P68 P57 xPC0 P2A4 P2D4 W5 V1 P69 P58 xPC1 P2A5 P2D5 Y5 V2 P70 P59 xPC2 P2A6 P2D6 AA5 W1 P73 P60 xPC3 P2A7 P2D7 AB5 W2 P74 P61

-- P2B0 P2D8 V6 Y1 P76 P64 -- P2B1 P2D9 V7 Y2 P77 P66 -- P2B2 P2D10 W6 AA3 P78 P68

mCS P2B3 P2D11 Y6 AB4 P79 P69 mA15 P2B4 P2D12 V9 AA4 P80 P70 mA16 P2B5 P2D13 V10 AB5 P82 P71 mA17 P2B6 P2D14 W10 AA5 P83 P74 mA18 P2B7 P2D15 Y10 AA6 P84 P75 CS0 P2C0 ADC0 AA10 AB8 P85 P76

83

SDIN0 P2C1 ADC1 AB10 AA8 P86 P77 CS1 P2C2 ADC2 U10 AB9 P87 P78

SDIN1 P2C3 ADC3 U11 AA9 P89 P79 SCLK P2C4 ADC4 V11 AB10 P90 P80 CS2 P2C5 ADC5 W11 AA10 P92 P81

SDOUT P2C6 ADC6 Y11 AB11 P93 P82 LDAC P2C7 ADC7 AA11 AA11 P95 P83

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

xPB0 P1A0 PxA0 M1 M3 P135 P85 xPB1 P1A1 PxA1 M2 M4 P132 P86 yPB2 P1A2 PxA2 M3 N3 P131 P87 yPB3 P1A3 PxA3 M4 N4 P130 P88 yPB1 P1A4 PxA4 M5 T4 P129 P91 yPB4 P1A5 PxA5 M6 T5 P128 P92 yPB0 P1A6 PxA6 N1 U3 P127 P93 yPB5 P1A7 PxA7 N2 U4 P125 P94 yPB6 P1B0 PxB0 U13 V3 P119 P95 yPB7 P1B1 PxB1 V13 V4 P118 P96 xPB2 P1B2 PxB2 W13 W3 P116 P97 xPB3 P1B3 PxB3 Y13 W4 P113 P98 xPB4 P1B4 PxB4 AA13 Y3 P112 P100 xPB5 P1B5 PxB5 AB13 Y4 P96 P101 yPC3 P1B6 PxB6 U12 Y5 P97 P102 yPC2 P1B7 PxB7 V12 W5 P98 P103 yPC1 P1C7 PxC0 AB17 W11 P108 P113 yPC0 P1C6 PxC1 AA17 Y11 P107 P112 yPA0 P1C5 PxC2 Y17 W10 P105 P111 yPA1 P1C4 PxC3 W17 Y10 P104 P110 yPA2 P1C3 PxC4 AB18 W9 P103 P107 yPA3 P1C2 PxC5 AA18 W8 P102 P106 xPB6 P1C1 PxC6 Y18 W6 P100 P105 xPB7 P1C0 PxC7 W18 Y6 P99 P104

84

eM_DEMO 模組

eM_DEMO 模組的電路配置圖如下

eM_USB 模組

數字型 LED

0 1 2 34 5 6 78 9 A BC D E F

燈號型 LED

44 鍵盤

ADC0 ADC1 DAC0 DAC1

LED 選擇KEY 選擇

其中

1eM_DEMO模組的基本功能包括 A將 xPAxPBxPC等 16個 IO訊號引出控制 LED和鍵盤電路 B將 ADDA訊號引出並放大成+-10V的工作範圍 2LED和鍵盤可以選擇三種模式由 LED和 KEY 兩組開關作選擇圖示如下

模式1

0123

模式2 模式3

0 1 2 34 5 6 78 9 A BC D E F

0123

3模式14鍵輸入並搭配 16點的 LED燈號顯示其中 16點 LED分別對映到 xPA[0~3]xPB[0~7]和 xPC[0~3] 4組按鍵分別對映到 xPC[0~3] 4模式24鍵輸入並搭配四個 7段式數字顯示其中 數字顯示由 xPA[0~3]作數字掃瞄而由 xPB[0~7]作 7段式 LED控制 4組按鍵 分別對映到 xPC[0~3] 5模式316鍵輸入並搭配四個 7段式數字顯示其中 數字顯示由 xPA[0~3]作數字掃瞄而由 xPB[0~7]作 7段式 LED控制 16組按鍵由 xPA[0~3]作鍵盤掃瞄而由 xPC[0~3]作鍵盤讀取 6根據VHDL與數位邏輯設計的章節其中 第 1章至 10章的實驗採用模式1而 第 11章實驗採用模式2而 第 12章之後的實驗都採用模式3

85

FPGA UCF 定義

eM_3S1K 模組

NET CLK LOC = B12

NET XAlt0gt LOC = N2

NET XAlt1gt LOC = T1

NET XAlt2gt LOC = T2

NET XAlt3gt LOC = U2

NET XBlt0gt LOC = M3

NET XBlt1gt LOC = M4

NET XBlt2gt LOC = W3

NET XBlt3gt LOC = W4

NET XBlt4gt LOC = Y3

NET XBlt5gt LOC = Y4

NET XBlt6gt LOC = W6

NET XBlt7gt LOC = Y6

NET XClt0gt LOC = V1

NET XClt1gt LOC = V2

NET XClt2gt LOC = W1

NET XClt3gt LOC = W2

NET YAlt0gt LOC = W10

JP4 接頭

NET YAlt1gt LOC = Y10

NET YAlt2gt LOC = W9

NET YAlt3gt LOC = W8

NET YBlt0gt LOC = U3

NET YBlt1gt LOC = T4

NET YBlt2gt LOC = N3

NET YBlt3gt LOC = N4

NET YBlt4gt LOC = T5

NET YBlt5gt LOC = U4

NET YBlt6gt LOC = V3

NET YBlt7gt LOC = V4

NET YClt0gt LOC = Y11

NET YClt1gt LOC = W11

NET YClt2gt LOC = W5

NET YClt3gt LOC = Y5

在光碟片中 RFFPGAVHDLDEMOBIT3S1K 裡有 VHDL 與數位邏輯設計書本範例原始檔與合成檔

86

eM_3S50 模組

NET CLK LOC = P124

NET XAlt0gt LOC = P59

NET XAlt1gt LOC = P60

NET XAlt2gt LOC = P63

NET XAlt3gt LOC = P68

NET XBlt0gt LOC = P135

NET XBlt1gt LOC = P132

NET XBlt2gt LOC = P116

NET XBlt3gt LOC = P113

NET XBlt4gt LOC = P112

NET XBlt5gt LOC = P96

NET XBlt6gt LOC = P100

NET XBlt7gt LOC = P99

NET XClt0gt LOC = P69

NET XClt1gt LOC = P70

NET XClt2gt LOC = P73

NET XClt3gt LOC = P74

NET YAlt0gt LOC = P105

JP4 接頭

NET YAlt1gt LOC = P104

NET YAlt2gt LOC = P103

NET YAlt3gt LOC = P102

NET YBlt0gt LOC = P127

NET YBlt1gt LOC = P129

NET YBlt2gt LOC = P131

NET YBlt3gt LOC = P130

NET YBlt4gt LOC = P128

NET YBlt5gt LOC = P125

NET YBlt6gt LOC = P119

NET YBlt7gt LOC = P118

NET YClt0gt LOC = P107

NET YClt1gt LOC = P108

NET YClt2gt LOC = P98

NET YClt3gt LOC = P97

在光碟片中 RFFPGAVHDLDEMOBIT3S200 裡有VHDL與數位邏輯設計書本範例原始檔與合成檔

87

eM_95XL 模組

NET CLK LOC = SPIN38

NET XAlt0gt LOC = SPIN53

NET XAlt1gt LOC = SPIN54

NET XAlt2gt LOC = SPIN56

NET XAlt3gt LOC = SPIN57

NET XBlt0gt LOC = SPIN85

NET XBlt1gt LOC = SPIN86

NET XBlt2gt LOC = SPIN97

NET XBlt3gt LOC = SPIN98

NET XBlt4gt LOC = SPIN100

NET XBlt5gt LOC = SPIN101

NET XBlt6gt LOC = SPIN105

NET XBlt7gt LOC = SPIN104

NET XClt0gt LOC = SPIN58

NET XClt1gt LOC = SPIN59

NET XClt2gt LOC = SPIN60

NET XClt3gt LOC = SPIN61

NET YAlt0gt LOC = SPIN111

JP4 接頭

NET YAlt1gt LOC = SPIN110

NET YAlt2gt LOC = SPIN107

NET YAlt3gt LOC = SPIN106

NET YBlt0gt LOC = SPIN93

NET YBlt1gt LOC = SPIN91

NET YBlt2gt LOC = SPIN87

NET YBlt3gt LOC = SPIN88

NET YBlt4gt LOC = SPIN92

NET YBlt5gt LOC = SPIN94

NET YBlt6gt LOC = SPIN95

NET YBlt7gt LOC = SPIN96

NET YClt0gt LOC = SPIN112

NET YClt1gt LOC = SPIN113

NET YClt2gt LOC = SPIN103

NET YClt3gt LOC = SPIN102

在光碟片中 RFFPGAVHDLDEMOSVF95288XL 裡有VHDL與數位邏輯設計書本範例原始檔與合成

檔案

88

eM_FPGA 模組

NET CLK LOC = E12

NET XAlt0gt LOC = AA3

NET XAlt1gt LOC = Y4

NET XAlt2gt LOC = AA4

NET XAlt3gt LOC = AB4

NET XBlt0gt LOC = M1

NET XBlt1gt LOC = M2

NET XBlt2gt LOC = W13

NET XBlt3gt LOC = Y13

NET XBlt4gt LOC = AA13

NET XBlt5gt LOC = AB13

NET XBlt6gt LOC = Y18

NET XBlt7gt LOC = W18

NET XClt0gt LOC = W5

NET XClt1gt LOC = Y5

NET XClt2gt LOC = AA5

NET XClt3gt LOC = AB5

NET YAlt0gt LOC = Y17

JP4 接頭

NET YAlt1gt LOC = W17

NET YAlt2gt LOC = AB18

NET YAlt3gt LOC = AA18

NET YBlt0gt LOC = N1

NET YBlt1gt LOC = M5

NET YBlt2gt LOC = M3

NET YBlt3gt LOC = M4

NET YBlt4gt LOC = M6

NET YBlt5gt LOC = N2

NET YBlt6gt LOC = U13

NET YBlt7gt LOC = V13

NET YClt0gt LOC = AA17

NET YClt1gt LOC = AB17

NET YClt2gt LOC = V12

NET YClt3gt LOC = U12

在光碟片中 RFFPGAVHDLDEMOBIT2V250 裡有VHDL與數位邏輯設計書本範例原始檔與合成檔

89

Page 40: RFFPGA 直流馬達實驗手冊juniortek.com.tw/program/manual/RF-DC-mal.pdf · em_demo模組 em_dcm 直流伺服馬達 dc電源 rffpga 系統的直流馬達實驗規劃 其中包括:

對應之 plc檔程式說明(exp_speedplc) echo off 畫面顯示開始

run dsp 0 選擇 DSP1

run stop run reset 既有程式停止

run testDCMmem 下載指定程式

das 1 ampfg1out 0 1024 PWM 波形 Volt 設定 DAS 頻道1

das 2 ampft1lp 0 1024 馬達模擬 Volt 設定 DAS 頻道2

das 3 ampio1spd 0 1024 馬達速度 Volt 設定 DAS 頻道3

das 4 ampio1ang 0 1024 馬達角度 Volt 設定 DAS 頻道4

plot select 0 設定示波器頁數

plot xunit 100000 0 設定示波器 X軸

plot yunit 1 50 -300 設定示波器 Y1 軸

plot yunit 2 50 -100 設定示波器 Y2 軸

plot yunit 3 50 100 設定示波器 Y3 軸

plot yunit 4 50000 300 設定示波器 Y4 軸

plot trigger 1 0 1 10 設定示波器觸發

plot scope 9 1 2 3 4 設定示波器顯示

module io2 設定 io2 模組

s cmd ampcn2out

module fg1 設定 fg1 模組

s kAmp 50 s kFrq 150

module cn2 設定 cn1 模組

s cmd ampfg1out s fdk ampio1spd s kp 0x4000

module ft1 設定 ft1 模組

s u ampfg1out s dt 2 s ka 320

module io3 設定 io3 模組

s led ampfg1out

module 回復預設模組

run 1khz 設定抽樣頻率為 4KHz

run start DSP 開始執行

das stop pause 1 DAS 啟動 das start DAS 啟動

echo on 回復正常訊息顯示

CAI操控設計畫面規劃如下(EXP_speedCAI)

40

page 1 畫面設計 page 2 與 page 3 畫面設計與實驗一 page 2 與 page 3相同畫面 page 4 畫面設計

41

方塊的參數設定 使用者可視情況調整一階濾波器的 ka和 dt值使得 ch2和 ch3 兩組波形完全相符

以求得此一閉迴路系統近似的一階轉移函數或調整 PD控制器中的 kp和 kp值以調整系統之響應 實測響應圖

訊 號 說 明 訊 號 說 明 ch1 方波產生器產生之速度命令 ch3 一階濾波器輸出信號 ch2 馬達角速度訊號 ch4 馬達角位置訊號

42

直流馬達之閉迴路速度控制響應圖

43

63 實驗 3-閉迴路的位置控制 實驗說明為了觀測閉迴路的位置控制響應將直流馬達的回授改為位置訊號

建立下面的測試方塊圖 方塊圖中的模組功能說明如下

1用 fg1產生測試用的方波位置命令 2將方波位置命令和位置回授訊號送到 PD控制器方塊中產生電壓控制訊號再透過 io2模組將訊號送出到伺服介面驅動馬達轉動

對應之 plc檔程式說明(exp_angleplc) echo off 畫面顯示開始

run dsp 0 選擇 DSP1

run stop run reset 既有程式停止

run testDCMmem 下載指定程式

das 1 ampfg1out 0 1024 PWM 波形 Volt 設定 DAS 頻道1

das 2 ampft1lp 0 1024 馬達模擬 Volt 設定 DAS 頻道2

das 3 ampio1spd 0 1024 馬達速度 Volt 設定 DAS 頻道3

das 4 ampio1ang 0 1024 馬達角度 Volt 設定 DAS 頻道4

plot select 0 設定示波器頁數

plot xunit 100000 0 設定示波器 X軸

plot yunit 1 1000 -300 設定示波器 Y1 軸

plot yunit 2 1000 -100 設定示波器 Y2 軸

plot yunit 3 20 100 設定示波器 Y3 軸

plot yunit 4 1000 300 設定示波器 Y4 軸

plot trigger 1 0 1 10 設定示波器觸發

44

plot scope 9 1 2 3 4 設定示波器顯示

module io2 設定 io2 模組

s cmd ampcn2out

module fg1 設定 fg1 模組

s kAmp 1000 s kFrq 75

module cn2 設定 cn1 模組

s cmd ampfg1out s fdk ampio1ang s kp 0x300 s kd 0x4000

module ft1 設定 ft1 模組

s u ampfg1out s dt 2 s ka 320

module io3 設定 io3 模組

s led ampfg1out

module 回復預設模組

run 1khz 設定抽樣頻率為 4KHz

run start DSP 開始執行

das stop pause 1 DAS 啟動 das start DAS 啟動

echo on 回復正常訊息顯示

CAI操控設計畫面規劃如下(EXP_angleCAI) page 1 畫面設計

45

page 2 與 page 3 畫面設計與實驗一 page 2 與 page 3相同畫面 page 4 畫面設計與實驗二 page 4 畫面 方塊的參數設定 延續上一實驗的說明使用者可以調整 PD控制器中的 kp和 kd值以調整系統之

響應 實測響應圖

訊 號 說 明 訊 號 說 明 ch1 方波產生器產生之位置命令 ch3 馬達角速度訊號 ch2 馬達角位置 ch4 Pd控制器輸出之電壓訊號

46

直流馬達之閉迴路位置控制響應圖

47

64 實驗 4-加減速的位置控制 實驗說明為避免方波命令的過於嚴苛在方波命令的輸出加入一加減速控制功

能方塊以減緩命令變化的幅度增加馬達運動的平順建立的測試方塊圖如下

方塊圖中的模組功能說明如下

1用 fg1產生測試用的方波位置命令 2將方波位置命令送到加減速控制方塊處理後產生新的位置命令再將新的位置命

令與位置回授訊號送到 PD控制器方塊中產生電壓控制訊號最後透過 io2模組將訊號送出到伺服介面驅動馬達轉動

對應之 plc檔程式說明(exp_accplc) echo off 畫面顯示開始

run dsp 0 選擇 DSP1

run stop run reset 既有程式停止

run testDCMmem 下載指定程式

das 1 ampfg1out 0 1024 PWM 波形 Volt 設定 DAS 頻道1

das 2 ampcn1out 0 1024 加速控制 Volt 設定 DAS 頻道2

das 3 ampio1spd 0 1024 馬達速度 Volt 設定 DAS 頻道3

das 4 ampio1ang 0 1024 馬達角度 Volt 設定 DAS 頻道4

plot select 0 設定示波器頁數

plot xunit 100000 0 設定示波器 X軸

plot yunit 1 2000 -300 設定示波器 Y1 軸

plot yunit 2 2000 -100 設定示波器 Y2 軸

plot yunit 3 50 100 設定示波器 Y3 軸

plot yunit 4 2000 300 設定示波器 Y4 軸

48

plot trigger 1 0 1 10 設定示波器觸發

plot scope 9 1 2 3 4 設定示波器顯示

module io2 設定 io2 模組

s cmd ampcn2out

module fg1 設定 fg1 模組

s kAmp 2000 s kFrq 150

module cn1 設定 cn1 模組

s cmd ampfg1out

module cn2 設定 cn2 模組

s cmd ampcn1out s fdk ampio1ang s kp 0x300 s kd 0x4000

module ft1 設定 ft1 模組

s u ampfg1out s dt 2 s ka 320

module io3 設定 io3 模組

s led ampfg1out

module 回復預設模組

run 1khz 設定抽樣頻率為 4KHz

run start DSP 開始執行

das stop pause 1 DAS 啟動 das start DAS 啟動

echo on 回復正常訊息顯示

CAI操控設計畫面規劃如下(EXP_accCAI) page 1 畫面設計

49

page 2 畫面設計與實驗一 page 2相同畫面 page 3 畫面設計與實驗二 page 4相同畫面

參數設定參考之前各實驗的說明可線上機動性的調整 PD控制器中的 kp和 kd值以調整系統之響應 實測響應圖

訊 號 說 明 訊 號 說 明 ch1 方波產生器產生之位置命令 ch3 馬達角位置 ch2 加減速模組輸出之位置命令 ch4 馬達角速度訊號

50

圖一 直流馬達經加減速控制後之閉迴路控制響應圖

51

65 實驗 5-正弦波的位置控制 實驗說明在本實驗中改變命令的波形由方波改變為正弦波並建立如下的測

試方塊圖與上一實驗相比較僅更改命令的波形產生方塊 方塊圖中的模組功能說明如下 1用 fg2產生測試用的弦波位置命令 2將弦波位置命令送到加減速控制方塊處理後產生新的位置命令再與 io1 讀入的位

置回授訊號送到 PD 控制器方塊中產生電壓控制訊號再透過 io2 模組將訊號送出到伺服介面驅動馬達轉動

對應之 plc檔程式說明(exp_sinplc) echo off 畫面顯示開始

run dsp 0 選擇 DSP1

run stop run reset 既有程式停止

run testDCMmem 下載指定程式

das 1 ampfg2out 0 1024 SIN 波形 Volt 設定 DAS 頻道1

das 2 ampcn1out 0 1024 加速控制 Volt 設定 DAS 頻道2

das 3 ampio1spd 0 1024 馬達速度 Volt 設定 DAS 頻道3

das 4 ampio1ang 0 1024 馬達角度 Volt 設定 DAS 頻道4

plot select 0 設定示波器頁數

plot xunit 100000 0 設定示波器 X軸

plot yunit 1 2000 -300 設定示波器 Y1 軸

plot yunit 2 2000 -100 設定示波器 Y2 軸

plot yunit 3 50 100 設定示波器 Y3 軸

plot yunit 4 2000 300 設定示波器 Y4 軸

plot trigger 1 0 1 10 設定示波器觸發

52

plot scope 9 1 2 3 4 設定示波器顯示

module io2 設定 io2 模組

s cmd ampcn2out

module fg2 設定 fg1 模組

s kAmp 2000 s kFrq 100

module cn1 設定 cn1 模組

s cmd ampfg2out

module cn2 設定 cn2 模組

s cmd ampcn1out s fdk ampio1ang s kp 0x300 s kd 0x4000

module ft1 設定 ft1 模組

s u ampfg2out s dt 2 s ka 320

module io3 設定 io3 模組

s led ampfg2out

module 回復預設模組

run 1khz 設定抽樣頻率為 4KHz

run start DSP 開始執行

das stop pause 1 DAS 啟動 das start DAS 啟動

echo on 回復正常訊息顯示

CAI操控設計畫面規劃如下(EXP_sinCAI) page 1 畫面設計

53

page 2 畫面設計 page 3 畫面設計與實驗二 page 4相同畫面

方塊的參數設定可調整 PD控制器中的 kp和 kd值以調整系統之響應 實測響應圖

訊 號 說 明 訊 號 說 明 ch1 弦波產生器產生之位置命令 ch3 馬達角位置訊號 ch2 加減速模組輸出之位置命令 ch4 馬達角速度訊號

54

直流馬達之閉迴路弦波加減速位置控制響應圖

55

7組合語言說明

本節將針對 DC馬達伺服控制實驗專用的程式模組進行功能與程式碼的說明其

有關於波形產生器與資料擷取模組等說明如下

SIN_waveasm 正弦波產生器 PWM_waveasm 方波產生器 IIR1_filterasm 一階濾波器 DAS4asm 資料蒐集模組

弦波產生器

此模組會產生週期性的正弦波方塊圖如下

outfrq

kBiasbias

ampkAmp

kFrqth

kThf=1TB

θ

A

其中

1正弦波有四個參數振幅(A)頻率(F)相位(θ)和偏移(B)其公式為 out = A sin(2πF t +θ) + B 2對於單純的正弦波產生器所對映的參數包括 kAmp 振幅值 kFrq 頻率值kFrq=655368000Hz其中 Hz的範圍為 0~4000例如 1000Hz =gt frq=8192 100Hz =gt frq=819 10Hz =gt frq=82 1Hz =gt frq=8 kTh 相角值0~255代表 0~360的相位當 th=0 時為正弦波 th=64 時為餘弦波 th=128時為反相波依此類推 kBias偏移值 3對於可調變的正弦波產生器其對映的輸入點為 amp 控制振幅的輸入點可產生調幅(AM)波形 frq 控制頻率的輸入點可產生調頻(FM)波形 th 控制相位的輸入點可產生調相(PM)波形 bias控制偏移的輸入點可產生雙頻混波(相加)波形 4若不使用調變功能時各個輸入點時的預設值為 amp 指向 kAmp 的位址 frq 指向 kFrq 的位址

56

th 指向 kTh 的位址 bias指向 kBias的位址

模組程式範例SIN_WAVEasm

local amp R0 IP kAmp 輸入點sin波的振幅 local frq R1 IP kFrq 輸入點sin波的頻率 local th R2 IP kTh 輸入點sin波的相角 local bias R3 IP kBias 輸入點sin波的中心偏移 local out R4 OP 輸出點sin波輸出 local tab R5 TP 表格指標指向 sin[256]的表格 local ang R6 內部變數相位角65536=360deg local kAmp R7 1000 參數振幅值 local kFrq R8 1000 參數頻率值=655368000Hz local kTh R9 0 參數相角值360deg=256 local kBias R10 0 參數偏移值 data 11 模組變數區長度及初值 initial 啟動程序 WR ang0 WR out0 ang=out=0 RET timer 即時控制程序(8KHz) RD ang ADD (frq) WR ang ang+=frq SFR 8 ADD (th) AND 255 ACC=sin(ang256+th) ADD tab WRH RDM table-look-up MUL (amp) SFR 12 ADD (bias) WR out out=ACCamp4096+bias RET table tab 256 sin[256]表格區10=4096 0 101 201 301 401 501 601 700 00~070deg 799 897 995 1092 1189 1285 1380 1474 08~0F 1567 1660 1751 1842 1931 2019 2106 2191 10~17 2276 2359 2440 2520 2598 2675 2751 2824 18~1F 2896 2967 3035 3102 3166 3229 3290 3349 20~27 3406 3461 3513 3564 3612 3659 3703 3745 28~2F 3784 3822 3857 3889 3920 3948 3973 3996 30~37 4017 4036 4052 4065 4076 4085 4091 4095 38~3F 4096 4095 4091 4085 4076 4065 4052 4036 40~4790deg 4017 3996 3973 3948 3920 3889 3857 3822 48~4F 3784 3745 3703 3659 3612 3564 3513 3461 50~57 3406 3349 3290 3229 3166 3102 3035 2967 58~5F

57

2896 2824 2751 2675 2598 2520 2440 2359 60~67 2276 2191 2106 2019 1931 1842 1751 1660 68~6F 1567 1474 1380 1285 1189 1092 995 897 70~77 799 700 601 501 401 301 201 101 78~7F 0 65435 65335 65235 65135 65035 64935 64836 80~87180deg 64737 64639 64541 64444 64347 64251 64156 64062 88~8F 63969 63876 63785 63694 63605 63517 63430 63345 90~97 63260 63177 63096 63016 62938 62861 62785 62712 98~9F 62640 62569 62501 62434 62370 62307 62246 62187 A0~A7 62130 62075 62023 61972 61924 61877 61833 61791 A8~A8 61752 61714 61679 61647 61616 61588 61563 61540 B0~B7 61519 61500 61484 61471 61460 61451 61445 61441 B8~BF 61440 61441 61445 61451 61460 61471 61484 61500 C0~C7270deg 61519 61540 61563 61588 61616 61647 61679 61714 C8~CF 61752 61791 61833 61877 61924 61972 62023 62075 D0~D7 62130 62187 62246 62307 62370 62434 62501 62569 D8~DF 62640 62712 62785 62861 62938 63016 63096 63177 E0~E7 63260 63345 63430 63517 63605 63694 63785 63876 E8~EF 63969 64062 64156 64251 64347 64444 64541 64639 F0~F7 64737 64836 64935 65035 65135 65235 65335 65435 F8~FF

就程式結構而言說明如下

timer 即時控制程序(8KHz) RD ang ADD (frq) WR ang ang+=frq SFR 8 ADD (th) AND 255 ACC=sin(ang256+th) ADD tab WRH RDM table-look-up MUL (amp) SFR 12 ADD (bias) WR out out=ACCamp4096+bias RET

1基本上我們以查表法計算 sin()其輸入θ的範圍為 0~255對映到 0~360deg其輸出 sin(θ)的範圍為+-4096對映到+-10的範圍

2建立一個內部變數 ang其範圍為 0~65535對映到 0~360的相位角 3每個timer程序都執行 ang+=frq的動作更新目前的相位角接著依照 ang的相位角查表得到 sin(ang256+th)值

4由於表格長度為 256-word所以必須將 ang256才能得到正確的對映關係而 th範圍為 0~255所以不需要像 ang一般的做額外處理

5sin()的範圍為(+1-1)而在表格中以(+4096~-4096)的型式記錄相當於 10=4096所以執行 Asin()時還要用 SFR12指令做4096的動作才能正確的取得輸出值

58

6就頻率輸入 frq而言其計算原則是將θ=ωt轉化成θ=Σ(ωdt)因為抽樣頻率

為 8KHz所以 dt=18000而得到 frq=655368000Hz公式其中 Hz為真正的頻率在 8KHz的抽樣頻率下其範圍為 0~4000

鋸齒波產生器

此模組會產生週期性的鋸齒波方塊圖如下

outfrq

kBiasbias

ampkAmp

kFrqth

kThf=1TB

θ

A

其中

1鋸齒波也有四個參數振幅(A)頻率(F)相位(θ)和偏移(B)和正弦波的定義完全一致唯一的差異是其輸出為鋸齒波而非正弦波

2基本波形是從週期開始時為 0一直遞增到週期結束時到達最高點然後立刻回歸

到 0重新開始 3以程式結構而論鋸齒波程式幾乎就是正弦波的相位計算部分只差沒有正弦波的

查表處理而已

模組程式範例SAW_WAVEasm

local amp R0 IP kAmp 輸入點sin波的振幅 local frq R1 IP kFrq 輸入點sin波的頻率 local th R2 IP kTh 輸入點sin波的相角 local bias R3 IP kBias 輸入點sin波的中心偏移 local out R4 OP 輸出點sin波輸出 local ang R5 內部變數相位角65536=360deg local kAmp R6 1000 參數振幅值 local kFrq R7 1000 參數頻率值=655368000Hz local kTh R8 0 參數相角值360deg=256 local kBias R9 0 參數偏移值 data 11 模組變數區長度及初值 initial 啟動程序 WR ang0 WR out0 ang=out=0 RET timer 即時控制程序(8KHz) RD ang ADD (frq) WR ang ang+=frq SFR 8 ADD (th) AND 255 ACC=(ang256+th)amp0x00ff MUL (amp) SFR 8 ADD (bias) WR out out=ACCamp256+bias

59

RET

脈衝波產生器

outfrq

kBiasbias

ampkAmp

kFrqth

kThf=1TB

θ

A

pwm

kDutyduty

此模組會產生週期性的脈衝波方塊圖如下

其中

1脈衝波有五個參數其中振幅(A)頻率(F)相位(θ)和偏移(B)四個參數和正弦波

定義完全一樣另外再增加一個負載率(D) 2基本波形是從週期開始時為 1隔段時間後換為 0然後持續到週期結束再重新開始其中 1所佔有的比例就是負載率當 D=0時為 0而 D=255時為 100

3和其他參數類似負載率(D)以 duty為其輸入點而以 kDuty為其參數值

模組程式範例PLS_WAVEasm

local amp R0 IP kAmp 輸入點脈衝波的振幅 local frq R1 IP kFrq 輸入點脈衝波的頻率 local th R2 IP kTh 輸入點脈衝波的相角 local bias R3 IP kBias 輸入點脈衝波的中心偏移 local duty R4 IP kDuty 輸入點脈衝波的負載率 local out R5 OP 輸出點脈衝波輸出 local ang R6 內部變數相位角65536=360deg local kAmp R7 1000 參數振幅值 local kFrq R8 1000 參數頻率值=655368000Hz local kTh R9 0 參數相角值360deg=256 local kBias R10 0 參數偏移值 local kDuty R11 128 參數負載率100 =256 data 12 模組變數區長度及初值 initial 啟動程序 WR ang0 WR out0 ang=out=0 RET timer 即時控制程序(8KHz)

60

RD ang ADD (frq) WR ang ang+=frq SFR 8 ADD (th) AND 255 ACC=(ang256+th)amp0x00ff SUB (duty) RD (amp) JLT t1 RD 0 ACC=(amp0) t1 ADD (bias) WR out out=ACC+bias RET

IIR 一階濾波器

此模組執行一階的 IIR濾波器方塊圖如下

kau x

Z-1

+

+

-

+低通濾波器

高通濾波器dx lp

hp

濾波器參數的計算公式如下

1假設濾波器的頻寬為 hz則 ωn=hz628 2若系統頻率為 8KHz則抽樣週期 dT為 dT=dt8000 其中 dt為模組參數 3則濾波器參數為 ka=ωndT4096或是 =hzdt62880004096即 =hzdt32 4當 dt決定後所允許的訊號頻寬為(4000dt)換句話說訊號頻寬會因為 dt增加而下降

為了方便實驗的運用下面列出常用的參數對照表

濾波頻寬

(Hz)

10 20 50 100 200 500 1000 2000

訊號頻寬

(Hz)

400 800 2000 4000 4000 4000 4000 4000

模組參數 dt 10 5 2 1 1 1 1 1

模組參數 ka 320 320 320 320 640 1600 3200 6400

表格的運用方式如下

1首先決定濾波頻寬 2接著查表找出對映的參數 dt和 ka 3再查表得到對映的訊號頻寬以決定是否需要串接前級濾波器

61

模組程式範例IIR1_FILTERasm

local u R0 IP 輸入點濾波器輸入 local lp R1 OP 輸出點低通濾波器輸出 local hp R2 OP 輸出點高通濾波器輸出 local dt R3 1 參數抽樣週期 local ka R4 4096 參數增益 ka10=4096 local prd R5 內部變數抽樣週期用 data 6 模組變數區長度 initial 開機啟動程序 WR lp0 WR hp0 WR prd1 RET lp=hp=0prd=1 timer 即時控制程序 SUB prd1 JNZ b9 if (--prdgt0) return RD dt WR prd prd=dt RD (u) SUB lp WR hp hp=u-lp MUL ka SFR 12 ADD lp WR lp lp+=(hpka4096) b9 RET

資料蒐集模組

資料蒐集模組是一個非常特殊的模組專門配合 eTTY 程式中的示波器使用

模組程式範例DAS4asm

local cmd R0 0 紀錄命令0=停止1=前置記錄2=正觸發4=負觸發6=觸發記錄 local dt R1 1 抽樣週期每 dT抽樣一次 local tab R2 TP DAS表格啟始位址 local cnt R3 0 目前記錄點(0~255) local ch1 R4 0 定義頻道1的變數位址 local ch2 R5 0 定義頻道2的變數位址 local ch3 R6 0 定義頻道3的變數位址 local ch4 R7 0 定義頻道4的變數位址 local trg R8 0 定義觸發頻道的變數位址 local th R9 0 觸發準位 local tail R10 0 觸發後的抽樣個數 local buf R11 1 抽樣計數(1~dt) local pnt R12 表格位址計算pnt=tab+cnt4 local len R13 表格長度計算(0~256) data 14 定義模組變數區的長度 table tab 1024 定義表格的長度 initial 啟動程序 WR cmd0 RET cmd=0 timer 控制程序

62

ADD cmd0 JZ t9 if (cmd==0) return SUB buf1 JNZ t9 if (--buf)gt0) return RD dt WR buf dt=buf RD cnt ADD 1 AND 0xff WR cnt cnt=(cnt+1)amp0xff SFL 2 ADD tab WR pnt pnt=tab+cnt4 RD (ch1) WR (pnt) ADD pnt1 pnt++=ch1 RD (ch2) WR (pnt) ADD pnt1 pnt++=ch2 RD (ch3) WR (pnt) ADD pnt1 pnt++=ch3 RD (ch4) WR (pnt) pnt =ch4 RD cmd SUB 1 JZ t9 SUB 1 JZ t2 SUB 1 JZ t3 SUB 1 JZ t4 SUB 1 JZ t5 SUB 1 JZ t6 JR t7 t2 RD (trg) SUB th JGE t9 ADD cmd1 JR t9 wait trgltth t3 RD (trg) SUB th JLE t9 JR t6 wait trggtth t4 RD (trg) SUB th JLE t9 ADD cmd1 JR t9 wait trggtth t5 RD (trg) SUB th JGE t9 JR t6 wait trgltth t6 WR len0 WR cmd7 len=0cmd=7 t7 ADD len1 SUB tail JLT t9 WR cmd0 if ((++len)gt=0x80) cmd=0 t9 RET

與 DC 馬達控制相關的程式模組有以下 4個程式模組說明如下

(1)加減速控制模組 ACC_controlasm (2)光電盤輸入模組 POS_inputasm (3)PWM輸出模組 PWM_outputasm (4)PD控制模組 PD_controlasm

71加減速控制模組 此程式模組主要功能在於執行位置控制的加減速命令修正其數學模式採用 Lynn

濾波器的架構參見下圖

cmd

2

+

old Z -1

-

Z -1

Z -1

Z-1

Z-1x0 x1 x8 x9 x16

+ -

++

2

Z-1

Z-1 y1 y2

+

-

y0

+ +

sumZ-1

+164

12

out

dif

+

63

加減速控制模組方塊圖

其中

1Lynn 濾波器的階數固定成八階也就是 m=8其公式為 H(z) = (1-2Z-m+Z-2m)(1-2Z-1+Z-2)m2

2因為m=8所以m2=64因此最後計算低通濾波的部份時要先做除 64的運算 3因為低通濾波(lp)和 y0之間有 64倍的差異代表 y0y1y2的變化範圍比濾波器輸

入值要擴大許多例如輸入值在+-1000變化時y0y1y2很可能會在+-64000之間變化這範圍已經超出整數處理的範圍很可能會造成錯誤的計算結果

4所以在實驗時輸入值的變化範圍必須控制在+-500之間以保證計算的正確性 5對於 Lynn 濾波器當 m=8時其濾波器的頻寬固定為 1 kHzmdt也就是 dt=1時頻寬為 125 Hz dt=2時頻寬為 625Hz依此類推 6對於 Lynn 濾波器其濾波器的延遲固定為 m個抽樣週期因此設計 hp = x8 - lp 即可得到高通濾波器的對應結果 7其中乘 2和除 64的運算以移位運算取代所以整個程式中並無任何乘法運算 8Lynn 濾波器本身並不是穩定濾波器所以在程式啟動時必須確實的將所有狀態

(x0~x16)歸零否則會產生不穩定的狀態輸出

因為 Lynn濾波器中所有參數固定所以除了抽樣週期 dt 之外並無任何可調參數

抽樣週期 dt 可以控制頻寬dt 越大則濾波器頻寬越低

將步階命令值的輸出送入 Lynn 濾波器中經由低通濾波器的效應可以減緩命

令的變化程度達到加減速控制的目的以下為使用 Lynn 濾波器型式實現加減速控

制的組合語言程式列印 如欲更進一步瞭解 Lynn 濾波器與 FIR 數位濾波器之間的關係可以參考通訊實驗

四數位濾波器設計(FIR)中之說明

ACC_controlasm程式列印 local cmd R0 IP 輸入點位置命令

local out R1 OP 輸出點加減速處理後的位置命令

local dif R2 OP 輸出點位置微分命令

local axis R3 0 馬達編號0=X1=Y2=Z3=C

local old R4 內部變數微分計算用

local sumL R5 內部變數積分計算用

local sumH R6 內部變數積分計算用

local y0 R7 內部變數y(0~2)

local y1 R8 local y2 R9

local x0 R10 內部變數x(0~16)

local x1 R11 local x2 R12 local x3 R13 local x4 R14

local x5 R15 local x6 R16 local x7 R17 local x8 R18

local x9 R19 local x10 R20 local x11 R21 local x12 R22

local x13 R23 local x14 R24 local x15 R25 local x16 R26

64

data 27 模組變數區長度

initial 開機啟動程序

WR dif0 RD (cmd) WR out WR old dif=0 out=old=cmd

sumHL=cmd64

SFL 6 WR sumL RD out SFR 10 SGN 5 WR sumH

RPT 17 WR x00 RPT 3 WR y00 RET x[0~16]=0y[0~2]=0

timer 即時控制程序

RD (cmd) SUBX old WR x0 x0=cmd-old old=cmd

SUB x81 ADD x16 ADD y11 SUB y2 WR y0 y0=x0-2x8+x16+2y1-y2

SGN ADD sumL WR sumL RDH ADC sumH WR sumH sumHL+=y0

WRH RD sumL SFR 6 WR out out=sumHL64

RD y0 SGN SFR WR dif dif=y032mm

RD x0 RPT 16 RDX x1 x[i]=x[i-1] i=1~16

RD y0 RDX y1 WR y2 y[i]=y[i-1] i=1~2

b9 RET

72光電盤輸入模組

DC馬達的位置由光電盤量測之預設儲存於 0xac與 0xbe二個輸入埠位址中其中位址 0xac記錄 X軸馬達的位置位址 0xbe記錄 Y軸馬達的位置由於本實驗的DC馬達接在 Y軸的位置上因此程式中直接選用 Y軸的輸入 光電盤位置輸入的程式列印如下其中速度由位置的差分而得至於馬達的位置

則使用內部 2個 word加以記錄精度為 32位元 POS_inputasm程式列印 local spd R0 OP 輸出點速度量測值

local ang R1 OP 輸出點角度量測值

local angH R2 內部變數角度的 32 位元部分

local mode R3 0x308 模式選擇15MHzAB 相正反向輸入

local pht R4 0xac 輸入阜地址光電盤輸入(0xac)

local phtc R5 0xbe 輸入阜地址光電盤模式(0xbe)

local old R6 內部變數速度更新用

data 7 模組變數區長度

initial 開機啟動程序

RD mode WR (phtc) phtc=mode

RD (pht) WR old WR spd0 RET old=phtspd=0

timer 即時控制程序

RD (pht) SUBX old SGN 11 WR spd spd=(pht-old)old=pht

65

ADD ang WR ang angHL+=spd

RDH ADC angH WR angH

RET

73 PWM輸出控制模組 模組方塊

cmd PWM輸出

程式說明 1在開機時將切換保護時間寫到輸出阜 0xbc上其中切換保護值為 0~6360=5us 2在每次 timer interrupt時將 cmd訊號處理後寫到輸出阜 0xb8上

PWM_outputasm程式列印 local cmd R0 IP gnd 輸入點v相命令

local gain R1 4096 參數輸出增益1=4096

local bias R2 2048 參數輸出偏壓0=2048

local limit R3 4095 參數輸出極限1=4095

local zone R4 0x88f0 參數頻率=12KHz切換保護=5us

local pwm R5 0xb8 輸出阜地址PWM0 輸出(0xb8)

local mode R6 0xbc 輸出阜地址PWM 模式(0xbc)

local p0md R7 0xf8 輸出阜地址port0 模式(0xf8)

local gnd R8 0 輸入接地點

data 9 模組變數區長度

initial 開機啟動程序

RD bias WR (pwm) pwm=bias

RD 0xffff WR (p0md) set port0 mode

RD zone WR (mode) RET mode=zone

stop 關機保護程序

RD bias WR (pwm) RET pwm=bias

timer 即時控制程序

RD (mode) xor 1 and 1 WR (mode) trigger watch-dog

RD (cmd) MUL gain SFR 12 ADD bias ACC=(cmdgain4096)+bias

MAX 0 MIN limit WR (pwm) pwm=limit(ACC)

RET

66

74 PD 控制模組

PD控制的模組方塊參見圖二十一所示其中比例控制的部份直接由增益 kp加以調整微分控制的部份則由誤差的差分經增益 kd的調整而得

Σ+

-

cmd

fdk

err out

Σ

pk

dk

Σ

+

+

+

-

old1minusZ

PD控制器的方塊圖

PD_controlasm程式列印 local cmd R0 IP gnd 輸入點位置命令(可忽略)

local fdk R1 IP gnd 輸入點位置回授(可忽略)

local out R2 OP 輸出點用以控制速度迴路

local kp R3 256 參數增益 kp10=256

local kd R4 0 參數增益 kd10=256

local err R5 0 內部變數

local old R6 0 內部變數

local gnd R7 0 無輸入時的短路點

data 8 模組變數區長度

initial 開機啟動程序

WR out0 WR old0 RET out=old=0

timer 即時控制程序

RD (cmd) SUB (fdk) PRTF WR err

MUL kp SFR 8 P=(cmd-fdk)kp256

RDS err SUBX old MUL kd SFR 8 D=(err-old)kd256

ADDS

WR out out=P+D

RET

程式中預設增益值的 10以整數值 256為基底因此使用 SFR 8的指令加以調

整另外在在計算微分項的程式部份用到 SUBX old的指令其詳細的暫存器動作如

下 參考 piDSP的指令說明SUBX指令將總共用到 3個時序參考錯誤 找不到參照

67

來源在時序 1時將原先 AX的資料拷貝一份到 HX中時序 2時正式執行減

法的動作所以 AX暫存器中的內容會變成 err-old時序 3時DSP會將存放在 HX暫存器中的內容拷貝一份到 old的記憶體中也就是經由 SUBX此一精簡指令將

同時完成計算差分所需要的相減與資料疊代的動作有效的利用 piDSP控制器 DSP核心的精簡指令將可以大幅提昇系統的計算速度

HX AXoldSUBXerr err

old

err

errerr olderr minus

1_err

errerr olderr minus err

1_err

1

2

3

SUBX的指令時序與暫存器變化

68

8附錄快速安裝說明

光纖網路通訊 FPGA 發展系統 (適用於 WIN-XP200098 系統)

快速安裝說明

26Pin 負載輸出入埠

雙電源︵5

12

伏︶輸入埠

單電源︵5

伏︶輸入埠

USB

光纖線輸

號 光纖線輸出埠

入 傳 埠

首先將光碟片 RFFPGA 目錄檔案拷貝在您工作硬碟裡面

第一次安裝時先將 USB 傳輸線接上電腦主機將電源供應器接上 FPGA 模組此時電

腦會出現安裝 USB-Serial 驅動程式選擇從清單安裝此驅動程式放置在光碟片

RFFPGA-USBdrive 選擇您目前安裝系統

可選擇 WIN-98WIN-MEWIN-2000WIN-XP 系統配合您現在工作電腦作業系統

69

注意一般電腦 USB 埠很多插口當您安裝驅動程式時是配合您當時插入之埠

下次如您插入不同接口埠時電腦會再次要求安裝驅動程式這是正常現象請再次安

裝驅動程式否則無法使用

FPLC 操作

首先進入 RFFPGA裡子目錄 testASM直接點選 fPLCexe 出現下面操作畫面(也可直接將

此檔案放置桌面直接點選)

(或者選擇 File 再執行 Setuphellip 選擇您要執行 CAI 檔)

70

進入下面操作畫面 首先使用滑鼠在 FPGA下載按鈕單擊動作使 FPGA變成 DSP晶片 實驗一至實驗五皆為使用 DSP組合語言設計程式其原始程式分別為 testASM1至testASM5可使用 texPad 開啟與編輯程式內容 實驗三與實驗五多有 IO控制動作 當選擇實驗三時出現下面畫面

71

eM_USB 模組

數字型 LED

0 1 2 34 5 6 78 9 A BC D E F

燈號型 LED

44 鍵盤

ADC0 ADC1 DAC0 DAC1

LED 選擇KEY 選擇

模 式 1

0123

注意操作畫面 3與 4 說明開關與按鍵選擇位置後選擇程式下載再按程式啟動如您

按下 0-3按鍵時燈號型 LED會有不同方向閃爍顯示程式停止時結束所有 IO控制動作再按回首頁選擇其他實驗 實驗四與實驗五

模式3

0 1 2 34 5 6 78 9 A BC D E F

按照上面開關選擇直接操作如果以上實驗皆能按照正常操作表示您光纖網路通訊

FPGA發展模組以能正常使用 注意 開機與關機動作順序如下

開機電腦啟動 --- eM_USB 模組電源接上 --- USB 接上電腦 ---

啟動 FPLC 軟體 --- 下載 FPGA 程式

關機關閉 FPLC 軟體 --- eM_USB 模組電源拔掉 --- 拔掉電腦 USB 接頭 ---關掉

電腦

如果以上順序有亂可能造成 USB 找不到驅動造成無法下載經過幾次測試還是

無法下載建議重新啟動電腦主機按照正確步驟操作

72

FPGA 下載操作

進入 FPLC 操作系統按照下列步驟選擇節點模組與下載 bit FPGA 檔案

在 VHDLDEMO 子目錄下您可以選擇您目前 FPGA 種類型號在此型號下我們已將 VHDL

與數位邏輯設計課本範例全部放於此處

73

光纖網路連線 FPGA 下載操作

首先利用光纖線將 eM_USB0 模組光纖輸出埠接至 eM_USB1 模組光纖輸入埠以此

類推最後再將最後 eM_USBN 模組光纖輸出埠接至 eM_USB0 模組光纖輸入埠配置

如附圖方式

個人電腦(Windows) eM_USB模組

0USB

eM_USB模組1

光纖網路

eM_USB模組2

eM_USB模組N

配置完成後進入 FPLC 系統首先必須先將 Node00 下載在 testASM 子目錄裡

piDSPv0bit 檔讓 eM_USB0 模組 FPGA 具備 DSP 功能才能執行光纖網路通訊

操作如下

此時您就可以選擇分別下載至各模組 FPGA 檔 bit

74

安裝 FPLC 注意事項

當您進入 FPLC 時

按 FILE 選擇 programhellip 選擇檔案為 exp_dcmplc 出現下面畫面

正常顯示畫面為

75

DOS 環境操作

在 PC 端的操作是在 Windows 環境中的 DOS 視窗中執行指令範例如下

eFPGA progNETbit 下載 FPGA電路至網路節點0(即 USB節點)中 eFPGA testLEDbit 1 下載 FPGA電路至網路節點1中

對於單一節點的控制程序如下

1將 eM_USB模組連結個人電腦的 USB端 2eM_USB模組開機 3執行下載指令即可 eFPGA xxxxbit 4若要更改 FPGA電路只要重新執行下載指令即可

對於多個網路節點的控制程序如下

1第一組 eM_USB模組連結個人電腦的 USB端再以光纖網路依序其他各節點 2連接 USB界面者為模組0從光纖發射端連接出去的模組為1依此類推 3將所有 eM_USB模組開機 4執行下載指令如下 eFPGA progNETbit 模組0必須先下載指定的 FPGA電路 eFPGA xxxxbit 1 再依序下載其他網路模組的 FPGA電路 eFPGA yyyybit 2 eFPGA zzzzbit 最後再重新下載模組0的 FPGA電路 5換句話說模組0必須先執行 progNETbit讓光纖網路接受 FPGA控制後才能透過光纖網路下載至其他節點等全部網路節點下載完畢後再將模組0的 FPGA重新下載讓模組0也可自由執行任意的 FPGA電路

6若要更改某一個網路節點中的 FPGA電路只要重新執行下述指令 eFPGA progNETbit 模組0必須先下載指定的 FPGA電路 eFPGA yyyybit 2 下載指定網路模組的 FPGA電路 eFPGA zzzz bit 最後再重新下載模組0的 FPGA電路 換句話說除非模組0中的 FPGA已經包括光纖網路管理電路否則一定要先在

模組0中下載網路管理電路後才能下載指定網路節點的 FPGA電路

76

光纖網路通訊 FPGA 發展系統

系統配置

光纖網路通訊 FPGA 發展系統的系統配置圖如下

個人電腦(Windows) eM_USB模組

0USB

eM_USB模組1

光纖網路

eM_USB模組2

eM_USB模組N

其中

1基本模組為 eM_USB模組可用 USB界面和個人電腦連線並提供 USB對光纖網路的轉換功能使得個人電腦可以獨立控制光纖網路中的每個網路節點

2eM_USB模組也可以作為光纖網路中的網路節點透過光纖網路而接受個人電腦的

監控 3就個人電腦而言不論是 USB界面直接連結或是以光纖網路間接連結的 eM_USB模組都是可以直接監控的網路節點最多可以同時控制一個 USB節點和 30個網路節點

4對於每一個網路節點個人電腦都可執行 eM_USB模組中 FPGA的電路下載工作並在適當的 FPGA電路配合下可執行 eM_USB模組中 FPGA內部電路的讀寫控制 5透過適當的 FPGA電路設計各網路節點都可透過光纖網路和其他任何網路節點

作同步通訊執行 FPGA內部記憶體的資料交換資料交換頻率可達 1KHz以上

77

網路模組配置

每個網路模組的標準配置圖如下

eM_USB模組光纖網路

USB eM_FPGA卡

eM_DEMO模組

eM_EXP實驗模組

DC電源

其中

1網路模組以 eM_USB模組為主提供基本的 USB界面和光纖網路連線 2eM_USB模組中的 FPGACPLD採用插卡型式可選擇不同的 eM_FPGA卡包括

eM_2V1K卡可選用 Virtex系列的 XC2V250和 XC2V1000 eM_3S1K卡可選用 Spartan3系列的 XC3S400XC3S1000和 XC3S1500 eM_3S50卡可選用 Spartan3系列的 XC3S50XC3S200和 XC3S400 eM_95XL卡可選用 9500XL系列的 XC95144XL和 XC95288XL 3eM_USB模組中的對外連線有兩種一種是 26P接頭用以連接既有的各種實驗模

組另一種是兩組 50P接頭將 FPGA中各接腳引出用以連接專題實驗 4eM_DEMO模組就是插上 50P接頭的教學模組其中包括 LED 數字顯示和 44鍵盤也具備兩組的 ADC和兩組的 DAC接頭提供類比訊號的測試工具

常用的實驗組合包括

1精簡組合包括(eM_USB+eM_FPGA)提供基本的網路節點適用於專題實驗 2標準組合包括(eM_USB+eM_FPGA+eM_DEMO)提供基礎 FPGA設計的教學實驗

3實驗組合包括(eM_USB+eM_FPGA+eM_DEMO+eM_EXP)提供進階的 FPGA實驗可依需求選用不同的實驗模組

78

eM_USB 模組

eM_USB 模組的電路配置圖如下

TxRx

DCPower

USB

JP2

JP3

光纖界面

外加電源

PC連線

JP1

eM_FPGA模組

FT232 CPLD FlashROM

SRAM

10cm

6cm

JP4

其中

1對外的連線接頭包括 DC電源 可選擇單電源(5V)或是多電源(5V+12V-12V)兩種 USB界面 直接連接個人電腦 光纖界面連接光纖網路 2實驗界面包括 JP1負責內部 CPLD的電路下載 JP2JP3兩組 50P的擴張用接頭 JP4 標準 26P接頭用以連接各種實驗模組 3內部的電路配置包括 A以 SO-DIMM接頭連接各種 eM_FPGA卡 B內附 EEPROMFlashROM和 SRAM提供 FPGA作應用測試 C以一顆 FT232BM作為 USB界面解碼而以一顆 CPLD作為光纖網路解碼 D提供各種 eM_FPGA卡的電路下載功能 4內附五顆 LED由上而下依序為 usbLED指示 USB界面的讀寫狀態 tstLED可由 FPGA電路自行定義 stsLED可由 FPGA電路自行定義 RxLED 可由 FPGA電路自行定義 TxLED 可由 FPGA電路自行定義

79

外部接腳定義

外部接頭的接點順序圖示如下

上視圖

JP11 9 JP4

126225

JP31

50249

JP21

50249

而各接頭的接點定義如下

JP1 JP4 JP2 JP3 1+33V 1+12V 2+12V 1 GND 2 GND 1 GND 2 GND 2GND 3 ADC 4 DAC 3POWER 4ALARM 3 +5V 4 +5V 3nc 5 yPB2 6 yPB3 5RxNET 6TxNET 5+12V 6+12V 4TCK 7 yPB1 6 yPB4 7RxUSB 6TxUSB 7-12V 6-12V 5nc 9 yPB0 10yPB5 9RxCAN 10TxCAN 9 ADC 10 DAC 6TDO 11yPB6 12yPB7 11P0D0 12P0D1 11P1D0 12P1D1 7TDI 13yGND 14yPC3 13P0D2 14P0D3 13P1D2 14P1D3 8nc 15yPC2 16yPC1 15P0D4 16P0D5 15P1D4 16P1D5 9TMS 17yPC0 18yPA0 17P0D6 18P0D7 17P1D6 18P1D7 19yPA1 20yPA2 19P0D8 20P0D9 19P1D8 20P1D9 21yPA3 22GND 21P0D10 22P0D11 21P1D10 22P1D11 23GND 24+5V 23P0D12 24P0D13 23P1D12 24P1D13 25+5V 26nc 25P0D14 26P0D15 25P1D14 26P1D15 27P2D0 28P2D1 27PxA0 28PxA1 29P2D2 30P2D3 29PxA2 30PxA3 31P2D4 32P2D5 31PxA4 32PxA5 33P2D6 34P2D7 33PxA6 34PxA7 35P2D8 36P2D9 35PxB0 36PxB1 37P2D10 38P2D11 37PxB2 38PxB3 39P2D12 40P2D13 39PxB4 40PxB5 41P2D14 42P2D15 41PxB6 42PxB7 43ADC0 44ADC1 43PxC0 44PxC1 45ADC2 46ADC3 45PxC2 46PxC3 47ADC4 48ADC5 47PxC4 48PxC5 49DAC0 50DAC1 49PxC6 50PxC7

80

eM_FPGA 模組

在各種 eM_FPGA 模組中FPGA 對外電路的標準配置圖如下

24576MHz

FlashROM

26PSRAM

EEPROM

mD[8]

yPA[4]

FPGACPLD

mA[19]mRDmWRmCSeeCKeeCSeeDIeeDO

光纖界面 RxNETTxNET

USB 界面 RxUSBTxUSBCLK24MPOWERALARM

LED

tstLEDstsLEDRxLEDTxLED

yPB[8]yPC[4]

ADCDAC

ADC[8]

實驗模組

ADC[2]

DAC[2]

xPA[4]

xPB[8]

xPC[4]

基礎實驗

其中

1FPGACPLD可以選擇下述幾種 XC2V250XC2V1000 採用 eM_2V1K模組其中 FPGA為 FG456包裝 XC3S400XC3S1000XC3S1500採用 eM_3S1K模組其中 FPGA為 FG456包裝 XC3S400XC3S1000XC3S1500採用 eM_3S1K模組其中 FPGA為 FG456包裝 XC3S50XC3S200XC3S400 採用 eM_3S50模組其中 FPGA為 TQ144包裝 XC95144XLXC95288XL 採用 eM_95XL模組其中 CPLD為 TQ144包裝 2採用 FG456包裝者可以控制所有的 IO界面 3採用 TQ144包裝者只是不能控制 RAM和 FlashROM而可以控制其他所有的界面 4所有 FPGA模組都可自由選擇由 USB界面或是由光纖界面下載電路但是 CPLD模組只能固定由 USB界面下載電路

5所有 FPGACPLD模組都可透過 26P接頭連接既有的各種實驗模組

81

FPGA 接腳對照表

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

mD0 XD6 mD0 A17 C13 -- -- mD1 XD7 mD1 B17 D12 -- -- mD2 XD8 mD2 C17 D11 -- -- mD3 XD9 mD3 D17 C11 -- -- mD4 XD10 mD4 E17 D10 -- -- mD5 XD11 mD5 E16 C10 -- -- mD6 XD12 mD6 E14 D9 -- -- mD7 XD13 mD7 E13 D7 -- -- mA0 XD14 mA0 D13 C7 -- -- mA1 XD15 mA1 C13 D6 -- -- mA2 XA0 mA2 V5 C3 -- -- mA3 XA1 mA3 U5 C4 -- -- mA4 XA2 mA4 Y2 D3 -- -- mA5 XA3 mA5 Y1 D4 -- -- mA6 XA4 mA6 V4 E3 -- -- mA7 XA5 mA7 V3 E4 -- -- mA8 XA6 mA8 W2 F3 -- -- mA9 XA7 mA9 W1 F4 -- -- mA10 XA8 mA10 T2 G6 -- -- mA11 XA9 mA11 T1 K3 -- -- mA12 XA10 mA12 R4 K10 -- -- mA13 XA11 mA13 R3 L3 -- -- mA14 XA12 mA14 R2 L4 -- -- mRD XRD mRD R1 D5 -- -- mWR XWR mWR P6 C6 -- --

POWER P0A0 POWER B4 B20 P1 P5 ALARM P0A1 ALARM A4 A19 P2 P6 RxNET P0A2 RxNET C4 B19 P4 P7 TxNET P0A3 TxNET C5 A18 P5 P9 RxUSB P0B0 RxUSB B5 A15 P6 P10 TxUSB P0B1 TxUSB A5 B15 P7 P11 RxCAN P0B2 RxCAN D6 A14 P8 P12 RxCAN P0B3 TxCAN C6 B14 P10 P13

CLK24M CLK24M CLK24M E12 B12 P124 P38

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

PWM0H P3A0 P0D0 E6 A8 P21 P23 PWM0L P3A1 P0D1 E5 B8 P23 P24 PWM1H P3A2 P0D2 C2 B6 P24 P25 PWM1L P3A3 P0D3 C1 A5 P25 P26 PWM2H P3A4 P0D4 D2 B5 P26 P27

82

PWM2L P3A5 P0D5 D1 A4 P27 P28 PWMenb P3A6 P0D6 E4 B4 P28 P30 PHT1Z P3A7 P0D7 E3 A3 P30 P31 PHT1A P3B0 P0D8 G2 C1 P31 P32 PHT1B P3B1 P0D9 G1 C2 P32 P33 PHT0A P3B2 P0D10 H5 D1 P33 P34 PHT0B P3B3 P0D11 J6 D2 P35 P35 AMP0 P3B4 P0D12 H4 E1 P36 P39 AMP1 P3B5 P0D13 H3 E2 P40 P40 AMP2 P3B6 P0D14 H2 F2 P41 P41 AMP3 P3B7 P0D15 H1 G1 P44 P43 eeSK P0C3 P1D0 C10 B9 P20 P22 eeCS P0C2 P1D1 D10 A9 P18 P21 eeDI P0C1 P1D2 F10 B10 P17 P20 eeDO P0C0 P1D3 E10 B11 P15 P19 ssCK P0B7 P1D4 E8 A11 P14 P17 ssCS P0B6 P1D5 E7 A12 P13 P16 ssDI P0B5 P1D6 A6 B13 P12 P15 ssDO P0B4 P1D7 B6 A13 P11 P14

ppCLK P3C0 P1D8 K4 G2 P46 P44 ppDIN P3C1 P1D9 K3 K1 P47 P45 TxD P3C2 P1D10 K2 K2 P50 P46 RxD P3C3 P1D11 K1 L1 P51 P48

tstLED P3C4 P1D12 L5 L2 P52 P49 stsLED P3C5 P1D13 L4 M1 P53 P50 RxLED P3C6 P1D14 L3 M2 P55 P51 TxLED P3C7 P1D15 L2 N1 P56 P52

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

xPA0 P2A0 P2D0 AA3 N2 P59 P53 xPA1 P2A1 P2D1 Y4 T1 P60 P54 xPA2 P2A2 P2D2 AA4 T2 P63 P56 xPA3 P2A3 P2D3 AB4 U2 P68 P57 xPC0 P2A4 P2D4 W5 V1 P69 P58 xPC1 P2A5 P2D5 Y5 V2 P70 P59 xPC2 P2A6 P2D6 AA5 W1 P73 P60 xPC3 P2A7 P2D7 AB5 W2 P74 P61

-- P2B0 P2D8 V6 Y1 P76 P64 -- P2B1 P2D9 V7 Y2 P77 P66 -- P2B2 P2D10 W6 AA3 P78 P68

mCS P2B3 P2D11 Y6 AB4 P79 P69 mA15 P2B4 P2D12 V9 AA4 P80 P70 mA16 P2B5 P2D13 V10 AB5 P82 P71 mA17 P2B6 P2D14 W10 AA5 P83 P74 mA18 P2B7 P2D15 Y10 AA6 P84 P75 CS0 P2C0 ADC0 AA10 AB8 P85 P76

83

SDIN0 P2C1 ADC1 AB10 AA8 P86 P77 CS1 P2C2 ADC2 U10 AB9 P87 P78

SDIN1 P2C3 ADC3 U11 AA9 P89 P79 SCLK P2C4 ADC4 V11 AB10 P90 P80 CS2 P2C5 ADC5 W11 AA10 P92 P81

SDOUT P2C6 ADC6 Y11 AB11 P93 P82 LDAC P2C7 ADC7 AA11 AA11 P95 P83

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

xPB0 P1A0 PxA0 M1 M3 P135 P85 xPB1 P1A1 PxA1 M2 M4 P132 P86 yPB2 P1A2 PxA2 M3 N3 P131 P87 yPB3 P1A3 PxA3 M4 N4 P130 P88 yPB1 P1A4 PxA4 M5 T4 P129 P91 yPB4 P1A5 PxA5 M6 T5 P128 P92 yPB0 P1A6 PxA6 N1 U3 P127 P93 yPB5 P1A7 PxA7 N2 U4 P125 P94 yPB6 P1B0 PxB0 U13 V3 P119 P95 yPB7 P1B1 PxB1 V13 V4 P118 P96 xPB2 P1B2 PxB2 W13 W3 P116 P97 xPB3 P1B3 PxB3 Y13 W4 P113 P98 xPB4 P1B4 PxB4 AA13 Y3 P112 P100 xPB5 P1B5 PxB5 AB13 Y4 P96 P101 yPC3 P1B6 PxB6 U12 Y5 P97 P102 yPC2 P1B7 PxB7 V12 W5 P98 P103 yPC1 P1C7 PxC0 AB17 W11 P108 P113 yPC0 P1C6 PxC1 AA17 Y11 P107 P112 yPA0 P1C5 PxC2 Y17 W10 P105 P111 yPA1 P1C4 PxC3 W17 Y10 P104 P110 yPA2 P1C3 PxC4 AB18 W9 P103 P107 yPA3 P1C2 PxC5 AA18 W8 P102 P106 xPB6 P1C1 PxC6 Y18 W6 P100 P105 xPB7 P1C0 PxC7 W18 Y6 P99 P104

84

eM_DEMO 模組

eM_DEMO 模組的電路配置圖如下

eM_USB 模組

數字型 LED

0 1 2 34 5 6 78 9 A BC D E F

燈號型 LED

44 鍵盤

ADC0 ADC1 DAC0 DAC1

LED 選擇KEY 選擇

其中

1eM_DEMO模組的基本功能包括 A將 xPAxPBxPC等 16個 IO訊號引出控制 LED和鍵盤電路 B將 ADDA訊號引出並放大成+-10V的工作範圍 2LED和鍵盤可以選擇三種模式由 LED和 KEY 兩組開關作選擇圖示如下

模式1

0123

模式2 模式3

0 1 2 34 5 6 78 9 A BC D E F

0123

3模式14鍵輸入並搭配 16點的 LED燈號顯示其中 16點 LED分別對映到 xPA[0~3]xPB[0~7]和 xPC[0~3] 4組按鍵分別對映到 xPC[0~3] 4模式24鍵輸入並搭配四個 7段式數字顯示其中 數字顯示由 xPA[0~3]作數字掃瞄而由 xPB[0~7]作 7段式 LED控制 4組按鍵 分別對映到 xPC[0~3] 5模式316鍵輸入並搭配四個 7段式數字顯示其中 數字顯示由 xPA[0~3]作數字掃瞄而由 xPB[0~7]作 7段式 LED控制 16組按鍵由 xPA[0~3]作鍵盤掃瞄而由 xPC[0~3]作鍵盤讀取 6根據VHDL與數位邏輯設計的章節其中 第 1章至 10章的實驗採用模式1而 第 11章實驗採用模式2而 第 12章之後的實驗都採用模式3

85

FPGA UCF 定義

eM_3S1K 模組

NET CLK LOC = B12

NET XAlt0gt LOC = N2

NET XAlt1gt LOC = T1

NET XAlt2gt LOC = T2

NET XAlt3gt LOC = U2

NET XBlt0gt LOC = M3

NET XBlt1gt LOC = M4

NET XBlt2gt LOC = W3

NET XBlt3gt LOC = W4

NET XBlt4gt LOC = Y3

NET XBlt5gt LOC = Y4

NET XBlt6gt LOC = W6

NET XBlt7gt LOC = Y6

NET XClt0gt LOC = V1

NET XClt1gt LOC = V2

NET XClt2gt LOC = W1

NET XClt3gt LOC = W2

NET YAlt0gt LOC = W10

JP4 接頭

NET YAlt1gt LOC = Y10

NET YAlt2gt LOC = W9

NET YAlt3gt LOC = W8

NET YBlt0gt LOC = U3

NET YBlt1gt LOC = T4

NET YBlt2gt LOC = N3

NET YBlt3gt LOC = N4

NET YBlt4gt LOC = T5

NET YBlt5gt LOC = U4

NET YBlt6gt LOC = V3

NET YBlt7gt LOC = V4

NET YClt0gt LOC = Y11

NET YClt1gt LOC = W11

NET YClt2gt LOC = W5

NET YClt3gt LOC = Y5

在光碟片中 RFFPGAVHDLDEMOBIT3S1K 裡有 VHDL 與數位邏輯設計書本範例原始檔與合成檔

86

eM_3S50 模組

NET CLK LOC = P124

NET XAlt0gt LOC = P59

NET XAlt1gt LOC = P60

NET XAlt2gt LOC = P63

NET XAlt3gt LOC = P68

NET XBlt0gt LOC = P135

NET XBlt1gt LOC = P132

NET XBlt2gt LOC = P116

NET XBlt3gt LOC = P113

NET XBlt4gt LOC = P112

NET XBlt5gt LOC = P96

NET XBlt6gt LOC = P100

NET XBlt7gt LOC = P99

NET XClt0gt LOC = P69

NET XClt1gt LOC = P70

NET XClt2gt LOC = P73

NET XClt3gt LOC = P74

NET YAlt0gt LOC = P105

JP4 接頭

NET YAlt1gt LOC = P104

NET YAlt2gt LOC = P103

NET YAlt3gt LOC = P102

NET YBlt0gt LOC = P127

NET YBlt1gt LOC = P129

NET YBlt2gt LOC = P131

NET YBlt3gt LOC = P130

NET YBlt4gt LOC = P128

NET YBlt5gt LOC = P125

NET YBlt6gt LOC = P119

NET YBlt7gt LOC = P118

NET YClt0gt LOC = P107

NET YClt1gt LOC = P108

NET YClt2gt LOC = P98

NET YClt3gt LOC = P97

在光碟片中 RFFPGAVHDLDEMOBIT3S200 裡有VHDL與數位邏輯設計書本範例原始檔與合成檔

87

eM_95XL 模組

NET CLK LOC = SPIN38

NET XAlt0gt LOC = SPIN53

NET XAlt1gt LOC = SPIN54

NET XAlt2gt LOC = SPIN56

NET XAlt3gt LOC = SPIN57

NET XBlt0gt LOC = SPIN85

NET XBlt1gt LOC = SPIN86

NET XBlt2gt LOC = SPIN97

NET XBlt3gt LOC = SPIN98

NET XBlt4gt LOC = SPIN100

NET XBlt5gt LOC = SPIN101

NET XBlt6gt LOC = SPIN105

NET XBlt7gt LOC = SPIN104

NET XClt0gt LOC = SPIN58

NET XClt1gt LOC = SPIN59

NET XClt2gt LOC = SPIN60

NET XClt3gt LOC = SPIN61

NET YAlt0gt LOC = SPIN111

JP4 接頭

NET YAlt1gt LOC = SPIN110

NET YAlt2gt LOC = SPIN107

NET YAlt3gt LOC = SPIN106

NET YBlt0gt LOC = SPIN93

NET YBlt1gt LOC = SPIN91

NET YBlt2gt LOC = SPIN87

NET YBlt3gt LOC = SPIN88

NET YBlt4gt LOC = SPIN92

NET YBlt5gt LOC = SPIN94

NET YBlt6gt LOC = SPIN95

NET YBlt7gt LOC = SPIN96

NET YClt0gt LOC = SPIN112

NET YClt1gt LOC = SPIN113

NET YClt2gt LOC = SPIN103

NET YClt3gt LOC = SPIN102

在光碟片中 RFFPGAVHDLDEMOSVF95288XL 裡有VHDL與數位邏輯設計書本範例原始檔與合成

檔案

88

eM_FPGA 模組

NET CLK LOC = E12

NET XAlt0gt LOC = AA3

NET XAlt1gt LOC = Y4

NET XAlt2gt LOC = AA4

NET XAlt3gt LOC = AB4

NET XBlt0gt LOC = M1

NET XBlt1gt LOC = M2

NET XBlt2gt LOC = W13

NET XBlt3gt LOC = Y13

NET XBlt4gt LOC = AA13

NET XBlt5gt LOC = AB13

NET XBlt6gt LOC = Y18

NET XBlt7gt LOC = W18

NET XClt0gt LOC = W5

NET XClt1gt LOC = Y5

NET XClt2gt LOC = AA5

NET XClt3gt LOC = AB5

NET YAlt0gt LOC = Y17

JP4 接頭

NET YAlt1gt LOC = W17

NET YAlt2gt LOC = AB18

NET YAlt3gt LOC = AA18

NET YBlt0gt LOC = N1

NET YBlt1gt LOC = M5

NET YBlt2gt LOC = M3

NET YBlt3gt LOC = M4

NET YBlt4gt LOC = M6

NET YBlt5gt LOC = N2

NET YBlt6gt LOC = U13

NET YBlt7gt LOC = V13

NET YClt0gt LOC = AA17

NET YClt1gt LOC = AB17

NET YClt2gt LOC = V12

NET YClt3gt LOC = U12

在光碟片中 RFFPGAVHDLDEMOBIT2V250 裡有VHDL與數位邏輯設計書本範例原始檔與合成檔

89

Page 41: RFFPGA 直流馬達實驗手冊juniortek.com.tw/program/manual/RF-DC-mal.pdf · em_demo模組 em_dcm 直流伺服馬達 dc電源 rffpga 系統的直流馬達實驗規劃 其中包括:

page 1 畫面設計 page 2 與 page 3 畫面設計與實驗一 page 2 與 page 3相同畫面 page 4 畫面設計

41

方塊的參數設定 使用者可視情況調整一階濾波器的 ka和 dt值使得 ch2和 ch3 兩組波形完全相符

以求得此一閉迴路系統近似的一階轉移函數或調整 PD控制器中的 kp和 kp值以調整系統之響應 實測響應圖

訊 號 說 明 訊 號 說 明 ch1 方波產生器產生之速度命令 ch3 一階濾波器輸出信號 ch2 馬達角速度訊號 ch4 馬達角位置訊號

42

直流馬達之閉迴路速度控制響應圖

43

63 實驗 3-閉迴路的位置控制 實驗說明為了觀測閉迴路的位置控制響應將直流馬達的回授改為位置訊號

建立下面的測試方塊圖 方塊圖中的模組功能說明如下

1用 fg1產生測試用的方波位置命令 2將方波位置命令和位置回授訊號送到 PD控制器方塊中產生電壓控制訊號再透過 io2模組將訊號送出到伺服介面驅動馬達轉動

對應之 plc檔程式說明(exp_angleplc) echo off 畫面顯示開始

run dsp 0 選擇 DSP1

run stop run reset 既有程式停止

run testDCMmem 下載指定程式

das 1 ampfg1out 0 1024 PWM 波形 Volt 設定 DAS 頻道1

das 2 ampft1lp 0 1024 馬達模擬 Volt 設定 DAS 頻道2

das 3 ampio1spd 0 1024 馬達速度 Volt 設定 DAS 頻道3

das 4 ampio1ang 0 1024 馬達角度 Volt 設定 DAS 頻道4

plot select 0 設定示波器頁數

plot xunit 100000 0 設定示波器 X軸

plot yunit 1 1000 -300 設定示波器 Y1 軸

plot yunit 2 1000 -100 設定示波器 Y2 軸

plot yunit 3 20 100 設定示波器 Y3 軸

plot yunit 4 1000 300 設定示波器 Y4 軸

plot trigger 1 0 1 10 設定示波器觸發

44

plot scope 9 1 2 3 4 設定示波器顯示

module io2 設定 io2 模組

s cmd ampcn2out

module fg1 設定 fg1 模組

s kAmp 1000 s kFrq 75

module cn2 設定 cn1 模組

s cmd ampfg1out s fdk ampio1ang s kp 0x300 s kd 0x4000

module ft1 設定 ft1 模組

s u ampfg1out s dt 2 s ka 320

module io3 設定 io3 模組

s led ampfg1out

module 回復預設模組

run 1khz 設定抽樣頻率為 4KHz

run start DSP 開始執行

das stop pause 1 DAS 啟動 das start DAS 啟動

echo on 回復正常訊息顯示

CAI操控設計畫面規劃如下(EXP_angleCAI) page 1 畫面設計

45

page 2 與 page 3 畫面設計與實驗一 page 2 與 page 3相同畫面 page 4 畫面設計與實驗二 page 4 畫面 方塊的參數設定 延續上一實驗的說明使用者可以調整 PD控制器中的 kp和 kd值以調整系統之

響應 實測響應圖

訊 號 說 明 訊 號 說 明 ch1 方波產生器產生之位置命令 ch3 馬達角速度訊號 ch2 馬達角位置 ch4 Pd控制器輸出之電壓訊號

46

直流馬達之閉迴路位置控制響應圖

47

64 實驗 4-加減速的位置控制 實驗說明為避免方波命令的過於嚴苛在方波命令的輸出加入一加減速控制功

能方塊以減緩命令變化的幅度增加馬達運動的平順建立的測試方塊圖如下

方塊圖中的模組功能說明如下

1用 fg1產生測試用的方波位置命令 2將方波位置命令送到加減速控制方塊處理後產生新的位置命令再將新的位置命

令與位置回授訊號送到 PD控制器方塊中產生電壓控制訊號最後透過 io2模組將訊號送出到伺服介面驅動馬達轉動

對應之 plc檔程式說明(exp_accplc) echo off 畫面顯示開始

run dsp 0 選擇 DSP1

run stop run reset 既有程式停止

run testDCMmem 下載指定程式

das 1 ampfg1out 0 1024 PWM 波形 Volt 設定 DAS 頻道1

das 2 ampcn1out 0 1024 加速控制 Volt 設定 DAS 頻道2

das 3 ampio1spd 0 1024 馬達速度 Volt 設定 DAS 頻道3

das 4 ampio1ang 0 1024 馬達角度 Volt 設定 DAS 頻道4

plot select 0 設定示波器頁數

plot xunit 100000 0 設定示波器 X軸

plot yunit 1 2000 -300 設定示波器 Y1 軸

plot yunit 2 2000 -100 設定示波器 Y2 軸

plot yunit 3 50 100 設定示波器 Y3 軸

plot yunit 4 2000 300 設定示波器 Y4 軸

48

plot trigger 1 0 1 10 設定示波器觸發

plot scope 9 1 2 3 4 設定示波器顯示

module io2 設定 io2 模組

s cmd ampcn2out

module fg1 設定 fg1 模組

s kAmp 2000 s kFrq 150

module cn1 設定 cn1 模組

s cmd ampfg1out

module cn2 設定 cn2 模組

s cmd ampcn1out s fdk ampio1ang s kp 0x300 s kd 0x4000

module ft1 設定 ft1 模組

s u ampfg1out s dt 2 s ka 320

module io3 設定 io3 模組

s led ampfg1out

module 回復預設模組

run 1khz 設定抽樣頻率為 4KHz

run start DSP 開始執行

das stop pause 1 DAS 啟動 das start DAS 啟動

echo on 回復正常訊息顯示

CAI操控設計畫面規劃如下(EXP_accCAI) page 1 畫面設計

49

page 2 畫面設計與實驗一 page 2相同畫面 page 3 畫面設計與實驗二 page 4相同畫面

參數設定參考之前各實驗的說明可線上機動性的調整 PD控制器中的 kp和 kd值以調整系統之響應 實測響應圖

訊 號 說 明 訊 號 說 明 ch1 方波產生器產生之位置命令 ch3 馬達角位置 ch2 加減速模組輸出之位置命令 ch4 馬達角速度訊號

50

圖一 直流馬達經加減速控制後之閉迴路控制響應圖

51

65 實驗 5-正弦波的位置控制 實驗說明在本實驗中改變命令的波形由方波改變為正弦波並建立如下的測

試方塊圖與上一實驗相比較僅更改命令的波形產生方塊 方塊圖中的模組功能說明如下 1用 fg2產生測試用的弦波位置命令 2將弦波位置命令送到加減速控制方塊處理後產生新的位置命令再與 io1 讀入的位

置回授訊號送到 PD 控制器方塊中產生電壓控制訊號再透過 io2 模組將訊號送出到伺服介面驅動馬達轉動

對應之 plc檔程式說明(exp_sinplc) echo off 畫面顯示開始

run dsp 0 選擇 DSP1

run stop run reset 既有程式停止

run testDCMmem 下載指定程式

das 1 ampfg2out 0 1024 SIN 波形 Volt 設定 DAS 頻道1

das 2 ampcn1out 0 1024 加速控制 Volt 設定 DAS 頻道2

das 3 ampio1spd 0 1024 馬達速度 Volt 設定 DAS 頻道3

das 4 ampio1ang 0 1024 馬達角度 Volt 設定 DAS 頻道4

plot select 0 設定示波器頁數

plot xunit 100000 0 設定示波器 X軸

plot yunit 1 2000 -300 設定示波器 Y1 軸

plot yunit 2 2000 -100 設定示波器 Y2 軸

plot yunit 3 50 100 設定示波器 Y3 軸

plot yunit 4 2000 300 設定示波器 Y4 軸

plot trigger 1 0 1 10 設定示波器觸發

52

plot scope 9 1 2 3 4 設定示波器顯示

module io2 設定 io2 模組

s cmd ampcn2out

module fg2 設定 fg1 模組

s kAmp 2000 s kFrq 100

module cn1 設定 cn1 模組

s cmd ampfg2out

module cn2 設定 cn2 模組

s cmd ampcn1out s fdk ampio1ang s kp 0x300 s kd 0x4000

module ft1 設定 ft1 模組

s u ampfg2out s dt 2 s ka 320

module io3 設定 io3 模組

s led ampfg2out

module 回復預設模組

run 1khz 設定抽樣頻率為 4KHz

run start DSP 開始執行

das stop pause 1 DAS 啟動 das start DAS 啟動

echo on 回復正常訊息顯示

CAI操控設計畫面規劃如下(EXP_sinCAI) page 1 畫面設計

53

page 2 畫面設計 page 3 畫面設計與實驗二 page 4相同畫面

方塊的參數設定可調整 PD控制器中的 kp和 kd值以調整系統之響應 實測響應圖

訊 號 說 明 訊 號 說 明 ch1 弦波產生器產生之位置命令 ch3 馬達角位置訊號 ch2 加減速模組輸出之位置命令 ch4 馬達角速度訊號

54

直流馬達之閉迴路弦波加減速位置控制響應圖

55

7組合語言說明

本節將針對 DC馬達伺服控制實驗專用的程式模組進行功能與程式碼的說明其

有關於波形產生器與資料擷取模組等說明如下

SIN_waveasm 正弦波產生器 PWM_waveasm 方波產生器 IIR1_filterasm 一階濾波器 DAS4asm 資料蒐集模組

弦波產生器

此模組會產生週期性的正弦波方塊圖如下

outfrq

kBiasbias

ampkAmp

kFrqth

kThf=1TB

θ

A

其中

1正弦波有四個參數振幅(A)頻率(F)相位(θ)和偏移(B)其公式為 out = A sin(2πF t +θ) + B 2對於單純的正弦波產生器所對映的參數包括 kAmp 振幅值 kFrq 頻率值kFrq=655368000Hz其中 Hz的範圍為 0~4000例如 1000Hz =gt frq=8192 100Hz =gt frq=819 10Hz =gt frq=82 1Hz =gt frq=8 kTh 相角值0~255代表 0~360的相位當 th=0 時為正弦波 th=64 時為餘弦波 th=128時為反相波依此類推 kBias偏移值 3對於可調變的正弦波產生器其對映的輸入點為 amp 控制振幅的輸入點可產生調幅(AM)波形 frq 控制頻率的輸入點可產生調頻(FM)波形 th 控制相位的輸入點可產生調相(PM)波形 bias控制偏移的輸入點可產生雙頻混波(相加)波形 4若不使用調變功能時各個輸入點時的預設值為 amp 指向 kAmp 的位址 frq 指向 kFrq 的位址

56

th 指向 kTh 的位址 bias指向 kBias的位址

模組程式範例SIN_WAVEasm

local amp R0 IP kAmp 輸入點sin波的振幅 local frq R1 IP kFrq 輸入點sin波的頻率 local th R2 IP kTh 輸入點sin波的相角 local bias R3 IP kBias 輸入點sin波的中心偏移 local out R4 OP 輸出點sin波輸出 local tab R5 TP 表格指標指向 sin[256]的表格 local ang R6 內部變數相位角65536=360deg local kAmp R7 1000 參數振幅值 local kFrq R8 1000 參數頻率值=655368000Hz local kTh R9 0 參數相角值360deg=256 local kBias R10 0 參數偏移值 data 11 模組變數區長度及初值 initial 啟動程序 WR ang0 WR out0 ang=out=0 RET timer 即時控制程序(8KHz) RD ang ADD (frq) WR ang ang+=frq SFR 8 ADD (th) AND 255 ACC=sin(ang256+th) ADD tab WRH RDM table-look-up MUL (amp) SFR 12 ADD (bias) WR out out=ACCamp4096+bias RET table tab 256 sin[256]表格區10=4096 0 101 201 301 401 501 601 700 00~070deg 799 897 995 1092 1189 1285 1380 1474 08~0F 1567 1660 1751 1842 1931 2019 2106 2191 10~17 2276 2359 2440 2520 2598 2675 2751 2824 18~1F 2896 2967 3035 3102 3166 3229 3290 3349 20~27 3406 3461 3513 3564 3612 3659 3703 3745 28~2F 3784 3822 3857 3889 3920 3948 3973 3996 30~37 4017 4036 4052 4065 4076 4085 4091 4095 38~3F 4096 4095 4091 4085 4076 4065 4052 4036 40~4790deg 4017 3996 3973 3948 3920 3889 3857 3822 48~4F 3784 3745 3703 3659 3612 3564 3513 3461 50~57 3406 3349 3290 3229 3166 3102 3035 2967 58~5F

57

2896 2824 2751 2675 2598 2520 2440 2359 60~67 2276 2191 2106 2019 1931 1842 1751 1660 68~6F 1567 1474 1380 1285 1189 1092 995 897 70~77 799 700 601 501 401 301 201 101 78~7F 0 65435 65335 65235 65135 65035 64935 64836 80~87180deg 64737 64639 64541 64444 64347 64251 64156 64062 88~8F 63969 63876 63785 63694 63605 63517 63430 63345 90~97 63260 63177 63096 63016 62938 62861 62785 62712 98~9F 62640 62569 62501 62434 62370 62307 62246 62187 A0~A7 62130 62075 62023 61972 61924 61877 61833 61791 A8~A8 61752 61714 61679 61647 61616 61588 61563 61540 B0~B7 61519 61500 61484 61471 61460 61451 61445 61441 B8~BF 61440 61441 61445 61451 61460 61471 61484 61500 C0~C7270deg 61519 61540 61563 61588 61616 61647 61679 61714 C8~CF 61752 61791 61833 61877 61924 61972 62023 62075 D0~D7 62130 62187 62246 62307 62370 62434 62501 62569 D8~DF 62640 62712 62785 62861 62938 63016 63096 63177 E0~E7 63260 63345 63430 63517 63605 63694 63785 63876 E8~EF 63969 64062 64156 64251 64347 64444 64541 64639 F0~F7 64737 64836 64935 65035 65135 65235 65335 65435 F8~FF

就程式結構而言說明如下

timer 即時控制程序(8KHz) RD ang ADD (frq) WR ang ang+=frq SFR 8 ADD (th) AND 255 ACC=sin(ang256+th) ADD tab WRH RDM table-look-up MUL (amp) SFR 12 ADD (bias) WR out out=ACCamp4096+bias RET

1基本上我們以查表法計算 sin()其輸入θ的範圍為 0~255對映到 0~360deg其輸出 sin(θ)的範圍為+-4096對映到+-10的範圍

2建立一個內部變數 ang其範圍為 0~65535對映到 0~360的相位角 3每個timer程序都執行 ang+=frq的動作更新目前的相位角接著依照 ang的相位角查表得到 sin(ang256+th)值

4由於表格長度為 256-word所以必須將 ang256才能得到正確的對映關係而 th範圍為 0~255所以不需要像 ang一般的做額外處理

5sin()的範圍為(+1-1)而在表格中以(+4096~-4096)的型式記錄相當於 10=4096所以執行 Asin()時還要用 SFR12指令做4096的動作才能正確的取得輸出值

58

6就頻率輸入 frq而言其計算原則是將θ=ωt轉化成θ=Σ(ωdt)因為抽樣頻率

為 8KHz所以 dt=18000而得到 frq=655368000Hz公式其中 Hz為真正的頻率在 8KHz的抽樣頻率下其範圍為 0~4000

鋸齒波產生器

此模組會產生週期性的鋸齒波方塊圖如下

outfrq

kBiasbias

ampkAmp

kFrqth

kThf=1TB

θ

A

其中

1鋸齒波也有四個參數振幅(A)頻率(F)相位(θ)和偏移(B)和正弦波的定義完全一致唯一的差異是其輸出為鋸齒波而非正弦波

2基本波形是從週期開始時為 0一直遞增到週期結束時到達最高點然後立刻回歸

到 0重新開始 3以程式結構而論鋸齒波程式幾乎就是正弦波的相位計算部分只差沒有正弦波的

查表處理而已

模組程式範例SAW_WAVEasm

local amp R0 IP kAmp 輸入點sin波的振幅 local frq R1 IP kFrq 輸入點sin波的頻率 local th R2 IP kTh 輸入點sin波的相角 local bias R3 IP kBias 輸入點sin波的中心偏移 local out R4 OP 輸出點sin波輸出 local ang R5 內部變數相位角65536=360deg local kAmp R6 1000 參數振幅值 local kFrq R7 1000 參數頻率值=655368000Hz local kTh R8 0 參數相角值360deg=256 local kBias R9 0 參數偏移值 data 11 模組變數區長度及初值 initial 啟動程序 WR ang0 WR out0 ang=out=0 RET timer 即時控制程序(8KHz) RD ang ADD (frq) WR ang ang+=frq SFR 8 ADD (th) AND 255 ACC=(ang256+th)amp0x00ff MUL (amp) SFR 8 ADD (bias) WR out out=ACCamp256+bias

59

RET

脈衝波產生器

outfrq

kBiasbias

ampkAmp

kFrqth

kThf=1TB

θ

A

pwm

kDutyduty

此模組會產生週期性的脈衝波方塊圖如下

其中

1脈衝波有五個參數其中振幅(A)頻率(F)相位(θ)和偏移(B)四個參數和正弦波

定義完全一樣另外再增加一個負載率(D) 2基本波形是從週期開始時為 1隔段時間後換為 0然後持續到週期結束再重新開始其中 1所佔有的比例就是負載率當 D=0時為 0而 D=255時為 100

3和其他參數類似負載率(D)以 duty為其輸入點而以 kDuty為其參數值

模組程式範例PLS_WAVEasm

local amp R0 IP kAmp 輸入點脈衝波的振幅 local frq R1 IP kFrq 輸入點脈衝波的頻率 local th R2 IP kTh 輸入點脈衝波的相角 local bias R3 IP kBias 輸入點脈衝波的中心偏移 local duty R4 IP kDuty 輸入點脈衝波的負載率 local out R5 OP 輸出點脈衝波輸出 local ang R6 內部變數相位角65536=360deg local kAmp R7 1000 參數振幅值 local kFrq R8 1000 參數頻率值=655368000Hz local kTh R9 0 參數相角值360deg=256 local kBias R10 0 參數偏移值 local kDuty R11 128 參數負載率100 =256 data 12 模組變數區長度及初值 initial 啟動程序 WR ang0 WR out0 ang=out=0 RET timer 即時控制程序(8KHz)

60

RD ang ADD (frq) WR ang ang+=frq SFR 8 ADD (th) AND 255 ACC=(ang256+th)amp0x00ff SUB (duty) RD (amp) JLT t1 RD 0 ACC=(amp0) t1 ADD (bias) WR out out=ACC+bias RET

IIR 一階濾波器

此模組執行一階的 IIR濾波器方塊圖如下

kau x

Z-1

+

+

-

+低通濾波器

高通濾波器dx lp

hp

濾波器參數的計算公式如下

1假設濾波器的頻寬為 hz則 ωn=hz628 2若系統頻率為 8KHz則抽樣週期 dT為 dT=dt8000 其中 dt為模組參數 3則濾波器參數為 ka=ωndT4096或是 =hzdt62880004096即 =hzdt32 4當 dt決定後所允許的訊號頻寬為(4000dt)換句話說訊號頻寬會因為 dt增加而下降

為了方便實驗的運用下面列出常用的參數對照表

濾波頻寬

(Hz)

10 20 50 100 200 500 1000 2000

訊號頻寬

(Hz)

400 800 2000 4000 4000 4000 4000 4000

模組參數 dt 10 5 2 1 1 1 1 1

模組參數 ka 320 320 320 320 640 1600 3200 6400

表格的運用方式如下

1首先決定濾波頻寬 2接著查表找出對映的參數 dt和 ka 3再查表得到對映的訊號頻寬以決定是否需要串接前級濾波器

61

模組程式範例IIR1_FILTERasm

local u R0 IP 輸入點濾波器輸入 local lp R1 OP 輸出點低通濾波器輸出 local hp R2 OP 輸出點高通濾波器輸出 local dt R3 1 參數抽樣週期 local ka R4 4096 參數增益 ka10=4096 local prd R5 內部變數抽樣週期用 data 6 模組變數區長度 initial 開機啟動程序 WR lp0 WR hp0 WR prd1 RET lp=hp=0prd=1 timer 即時控制程序 SUB prd1 JNZ b9 if (--prdgt0) return RD dt WR prd prd=dt RD (u) SUB lp WR hp hp=u-lp MUL ka SFR 12 ADD lp WR lp lp+=(hpka4096) b9 RET

資料蒐集模組

資料蒐集模組是一個非常特殊的模組專門配合 eTTY 程式中的示波器使用

模組程式範例DAS4asm

local cmd R0 0 紀錄命令0=停止1=前置記錄2=正觸發4=負觸發6=觸發記錄 local dt R1 1 抽樣週期每 dT抽樣一次 local tab R2 TP DAS表格啟始位址 local cnt R3 0 目前記錄點(0~255) local ch1 R4 0 定義頻道1的變數位址 local ch2 R5 0 定義頻道2的變數位址 local ch3 R6 0 定義頻道3的變數位址 local ch4 R7 0 定義頻道4的變數位址 local trg R8 0 定義觸發頻道的變數位址 local th R9 0 觸發準位 local tail R10 0 觸發後的抽樣個數 local buf R11 1 抽樣計數(1~dt) local pnt R12 表格位址計算pnt=tab+cnt4 local len R13 表格長度計算(0~256) data 14 定義模組變數區的長度 table tab 1024 定義表格的長度 initial 啟動程序 WR cmd0 RET cmd=0 timer 控制程序

62

ADD cmd0 JZ t9 if (cmd==0) return SUB buf1 JNZ t9 if (--buf)gt0) return RD dt WR buf dt=buf RD cnt ADD 1 AND 0xff WR cnt cnt=(cnt+1)amp0xff SFL 2 ADD tab WR pnt pnt=tab+cnt4 RD (ch1) WR (pnt) ADD pnt1 pnt++=ch1 RD (ch2) WR (pnt) ADD pnt1 pnt++=ch2 RD (ch3) WR (pnt) ADD pnt1 pnt++=ch3 RD (ch4) WR (pnt) pnt =ch4 RD cmd SUB 1 JZ t9 SUB 1 JZ t2 SUB 1 JZ t3 SUB 1 JZ t4 SUB 1 JZ t5 SUB 1 JZ t6 JR t7 t2 RD (trg) SUB th JGE t9 ADD cmd1 JR t9 wait trgltth t3 RD (trg) SUB th JLE t9 JR t6 wait trggtth t4 RD (trg) SUB th JLE t9 ADD cmd1 JR t9 wait trggtth t5 RD (trg) SUB th JGE t9 JR t6 wait trgltth t6 WR len0 WR cmd7 len=0cmd=7 t7 ADD len1 SUB tail JLT t9 WR cmd0 if ((++len)gt=0x80) cmd=0 t9 RET

與 DC 馬達控制相關的程式模組有以下 4個程式模組說明如下

(1)加減速控制模組 ACC_controlasm (2)光電盤輸入模組 POS_inputasm (3)PWM輸出模組 PWM_outputasm (4)PD控制模組 PD_controlasm

71加減速控制模組 此程式模組主要功能在於執行位置控制的加減速命令修正其數學模式採用 Lynn

濾波器的架構參見下圖

cmd

2

+

old Z -1

-

Z -1

Z -1

Z-1

Z-1x0 x1 x8 x9 x16

+ -

++

2

Z-1

Z-1 y1 y2

+

-

y0

+ +

sumZ-1

+164

12

out

dif

+

63

加減速控制模組方塊圖

其中

1Lynn 濾波器的階數固定成八階也就是 m=8其公式為 H(z) = (1-2Z-m+Z-2m)(1-2Z-1+Z-2)m2

2因為m=8所以m2=64因此最後計算低通濾波的部份時要先做除 64的運算 3因為低通濾波(lp)和 y0之間有 64倍的差異代表 y0y1y2的變化範圍比濾波器輸

入值要擴大許多例如輸入值在+-1000變化時y0y1y2很可能會在+-64000之間變化這範圍已經超出整數處理的範圍很可能會造成錯誤的計算結果

4所以在實驗時輸入值的變化範圍必須控制在+-500之間以保證計算的正確性 5對於 Lynn 濾波器當 m=8時其濾波器的頻寬固定為 1 kHzmdt也就是 dt=1時頻寬為 125 Hz dt=2時頻寬為 625Hz依此類推 6對於 Lynn 濾波器其濾波器的延遲固定為 m個抽樣週期因此設計 hp = x8 - lp 即可得到高通濾波器的對應結果 7其中乘 2和除 64的運算以移位運算取代所以整個程式中並無任何乘法運算 8Lynn 濾波器本身並不是穩定濾波器所以在程式啟動時必須確實的將所有狀態

(x0~x16)歸零否則會產生不穩定的狀態輸出

因為 Lynn濾波器中所有參數固定所以除了抽樣週期 dt 之外並無任何可調參數

抽樣週期 dt 可以控制頻寬dt 越大則濾波器頻寬越低

將步階命令值的輸出送入 Lynn 濾波器中經由低通濾波器的效應可以減緩命

令的變化程度達到加減速控制的目的以下為使用 Lynn 濾波器型式實現加減速控

制的組合語言程式列印 如欲更進一步瞭解 Lynn 濾波器與 FIR 數位濾波器之間的關係可以參考通訊實驗

四數位濾波器設計(FIR)中之說明

ACC_controlasm程式列印 local cmd R0 IP 輸入點位置命令

local out R1 OP 輸出點加減速處理後的位置命令

local dif R2 OP 輸出點位置微分命令

local axis R3 0 馬達編號0=X1=Y2=Z3=C

local old R4 內部變數微分計算用

local sumL R5 內部變數積分計算用

local sumH R6 內部變數積分計算用

local y0 R7 內部變數y(0~2)

local y1 R8 local y2 R9

local x0 R10 內部變數x(0~16)

local x1 R11 local x2 R12 local x3 R13 local x4 R14

local x5 R15 local x6 R16 local x7 R17 local x8 R18

local x9 R19 local x10 R20 local x11 R21 local x12 R22

local x13 R23 local x14 R24 local x15 R25 local x16 R26

64

data 27 模組變數區長度

initial 開機啟動程序

WR dif0 RD (cmd) WR out WR old dif=0 out=old=cmd

sumHL=cmd64

SFL 6 WR sumL RD out SFR 10 SGN 5 WR sumH

RPT 17 WR x00 RPT 3 WR y00 RET x[0~16]=0y[0~2]=0

timer 即時控制程序

RD (cmd) SUBX old WR x0 x0=cmd-old old=cmd

SUB x81 ADD x16 ADD y11 SUB y2 WR y0 y0=x0-2x8+x16+2y1-y2

SGN ADD sumL WR sumL RDH ADC sumH WR sumH sumHL+=y0

WRH RD sumL SFR 6 WR out out=sumHL64

RD y0 SGN SFR WR dif dif=y032mm

RD x0 RPT 16 RDX x1 x[i]=x[i-1] i=1~16

RD y0 RDX y1 WR y2 y[i]=y[i-1] i=1~2

b9 RET

72光電盤輸入模組

DC馬達的位置由光電盤量測之預設儲存於 0xac與 0xbe二個輸入埠位址中其中位址 0xac記錄 X軸馬達的位置位址 0xbe記錄 Y軸馬達的位置由於本實驗的DC馬達接在 Y軸的位置上因此程式中直接選用 Y軸的輸入 光電盤位置輸入的程式列印如下其中速度由位置的差分而得至於馬達的位置

則使用內部 2個 word加以記錄精度為 32位元 POS_inputasm程式列印 local spd R0 OP 輸出點速度量測值

local ang R1 OP 輸出點角度量測值

local angH R2 內部變數角度的 32 位元部分

local mode R3 0x308 模式選擇15MHzAB 相正反向輸入

local pht R4 0xac 輸入阜地址光電盤輸入(0xac)

local phtc R5 0xbe 輸入阜地址光電盤模式(0xbe)

local old R6 內部變數速度更新用

data 7 模組變數區長度

initial 開機啟動程序

RD mode WR (phtc) phtc=mode

RD (pht) WR old WR spd0 RET old=phtspd=0

timer 即時控制程序

RD (pht) SUBX old SGN 11 WR spd spd=(pht-old)old=pht

65

ADD ang WR ang angHL+=spd

RDH ADC angH WR angH

RET

73 PWM輸出控制模組 模組方塊

cmd PWM輸出

程式說明 1在開機時將切換保護時間寫到輸出阜 0xbc上其中切換保護值為 0~6360=5us 2在每次 timer interrupt時將 cmd訊號處理後寫到輸出阜 0xb8上

PWM_outputasm程式列印 local cmd R0 IP gnd 輸入點v相命令

local gain R1 4096 參數輸出增益1=4096

local bias R2 2048 參數輸出偏壓0=2048

local limit R3 4095 參數輸出極限1=4095

local zone R4 0x88f0 參數頻率=12KHz切換保護=5us

local pwm R5 0xb8 輸出阜地址PWM0 輸出(0xb8)

local mode R6 0xbc 輸出阜地址PWM 模式(0xbc)

local p0md R7 0xf8 輸出阜地址port0 模式(0xf8)

local gnd R8 0 輸入接地點

data 9 模組變數區長度

initial 開機啟動程序

RD bias WR (pwm) pwm=bias

RD 0xffff WR (p0md) set port0 mode

RD zone WR (mode) RET mode=zone

stop 關機保護程序

RD bias WR (pwm) RET pwm=bias

timer 即時控制程序

RD (mode) xor 1 and 1 WR (mode) trigger watch-dog

RD (cmd) MUL gain SFR 12 ADD bias ACC=(cmdgain4096)+bias

MAX 0 MIN limit WR (pwm) pwm=limit(ACC)

RET

66

74 PD 控制模組

PD控制的模組方塊參見圖二十一所示其中比例控制的部份直接由增益 kp加以調整微分控制的部份則由誤差的差分經增益 kd的調整而得

Σ+

-

cmd

fdk

err out

Σ

pk

dk

Σ

+

+

+

-

old1minusZ

PD控制器的方塊圖

PD_controlasm程式列印 local cmd R0 IP gnd 輸入點位置命令(可忽略)

local fdk R1 IP gnd 輸入點位置回授(可忽略)

local out R2 OP 輸出點用以控制速度迴路

local kp R3 256 參數增益 kp10=256

local kd R4 0 參數增益 kd10=256

local err R5 0 內部變數

local old R6 0 內部變數

local gnd R7 0 無輸入時的短路點

data 8 模組變數區長度

initial 開機啟動程序

WR out0 WR old0 RET out=old=0

timer 即時控制程序

RD (cmd) SUB (fdk) PRTF WR err

MUL kp SFR 8 P=(cmd-fdk)kp256

RDS err SUBX old MUL kd SFR 8 D=(err-old)kd256

ADDS

WR out out=P+D

RET

程式中預設增益值的 10以整數值 256為基底因此使用 SFR 8的指令加以調

整另外在在計算微分項的程式部份用到 SUBX old的指令其詳細的暫存器動作如

下 參考 piDSP的指令說明SUBX指令將總共用到 3個時序參考錯誤 找不到參照

67

來源在時序 1時將原先 AX的資料拷貝一份到 HX中時序 2時正式執行減

法的動作所以 AX暫存器中的內容會變成 err-old時序 3時DSP會將存放在 HX暫存器中的內容拷貝一份到 old的記憶體中也就是經由 SUBX此一精簡指令將

同時完成計算差分所需要的相減與資料疊代的動作有效的利用 piDSP控制器 DSP核心的精簡指令將可以大幅提昇系統的計算速度

HX AXoldSUBXerr err

old

err

errerr olderr minus

1_err

errerr olderr minus err

1_err

1

2

3

SUBX的指令時序與暫存器變化

68

8附錄快速安裝說明

光纖網路通訊 FPGA 發展系統 (適用於 WIN-XP200098 系統)

快速安裝說明

26Pin 負載輸出入埠

雙電源︵5

12

伏︶輸入埠

單電源︵5

伏︶輸入埠

USB

光纖線輸

號 光纖線輸出埠

入 傳 埠

首先將光碟片 RFFPGA 目錄檔案拷貝在您工作硬碟裡面

第一次安裝時先將 USB 傳輸線接上電腦主機將電源供應器接上 FPGA 模組此時電

腦會出現安裝 USB-Serial 驅動程式選擇從清單安裝此驅動程式放置在光碟片

RFFPGA-USBdrive 選擇您目前安裝系統

可選擇 WIN-98WIN-MEWIN-2000WIN-XP 系統配合您現在工作電腦作業系統

69

注意一般電腦 USB 埠很多插口當您安裝驅動程式時是配合您當時插入之埠

下次如您插入不同接口埠時電腦會再次要求安裝驅動程式這是正常現象請再次安

裝驅動程式否則無法使用

FPLC 操作

首先進入 RFFPGA裡子目錄 testASM直接點選 fPLCexe 出現下面操作畫面(也可直接將

此檔案放置桌面直接點選)

(或者選擇 File 再執行 Setuphellip 選擇您要執行 CAI 檔)

70

進入下面操作畫面 首先使用滑鼠在 FPGA下載按鈕單擊動作使 FPGA變成 DSP晶片 實驗一至實驗五皆為使用 DSP組合語言設計程式其原始程式分別為 testASM1至testASM5可使用 texPad 開啟與編輯程式內容 實驗三與實驗五多有 IO控制動作 當選擇實驗三時出現下面畫面

71

eM_USB 模組

數字型 LED

0 1 2 34 5 6 78 9 A BC D E F

燈號型 LED

44 鍵盤

ADC0 ADC1 DAC0 DAC1

LED 選擇KEY 選擇

模 式 1

0123

注意操作畫面 3與 4 說明開關與按鍵選擇位置後選擇程式下載再按程式啟動如您

按下 0-3按鍵時燈號型 LED會有不同方向閃爍顯示程式停止時結束所有 IO控制動作再按回首頁選擇其他實驗 實驗四與實驗五

模式3

0 1 2 34 5 6 78 9 A BC D E F

按照上面開關選擇直接操作如果以上實驗皆能按照正常操作表示您光纖網路通訊

FPGA發展模組以能正常使用 注意 開機與關機動作順序如下

開機電腦啟動 --- eM_USB 模組電源接上 --- USB 接上電腦 ---

啟動 FPLC 軟體 --- 下載 FPGA 程式

關機關閉 FPLC 軟體 --- eM_USB 模組電源拔掉 --- 拔掉電腦 USB 接頭 ---關掉

電腦

如果以上順序有亂可能造成 USB 找不到驅動造成無法下載經過幾次測試還是

無法下載建議重新啟動電腦主機按照正確步驟操作

72

FPGA 下載操作

進入 FPLC 操作系統按照下列步驟選擇節點模組與下載 bit FPGA 檔案

在 VHDLDEMO 子目錄下您可以選擇您目前 FPGA 種類型號在此型號下我們已將 VHDL

與數位邏輯設計課本範例全部放於此處

73

光纖網路連線 FPGA 下載操作

首先利用光纖線將 eM_USB0 模組光纖輸出埠接至 eM_USB1 模組光纖輸入埠以此

類推最後再將最後 eM_USBN 模組光纖輸出埠接至 eM_USB0 模組光纖輸入埠配置

如附圖方式

個人電腦(Windows) eM_USB模組

0USB

eM_USB模組1

光纖網路

eM_USB模組2

eM_USB模組N

配置完成後進入 FPLC 系統首先必須先將 Node00 下載在 testASM 子目錄裡

piDSPv0bit 檔讓 eM_USB0 模組 FPGA 具備 DSP 功能才能執行光纖網路通訊

操作如下

此時您就可以選擇分別下載至各模組 FPGA 檔 bit

74

安裝 FPLC 注意事項

當您進入 FPLC 時

按 FILE 選擇 programhellip 選擇檔案為 exp_dcmplc 出現下面畫面

正常顯示畫面為

75

DOS 環境操作

在 PC 端的操作是在 Windows 環境中的 DOS 視窗中執行指令範例如下

eFPGA progNETbit 下載 FPGA電路至網路節點0(即 USB節點)中 eFPGA testLEDbit 1 下載 FPGA電路至網路節點1中

對於單一節點的控制程序如下

1將 eM_USB模組連結個人電腦的 USB端 2eM_USB模組開機 3執行下載指令即可 eFPGA xxxxbit 4若要更改 FPGA電路只要重新執行下載指令即可

對於多個網路節點的控制程序如下

1第一組 eM_USB模組連結個人電腦的 USB端再以光纖網路依序其他各節點 2連接 USB界面者為模組0從光纖發射端連接出去的模組為1依此類推 3將所有 eM_USB模組開機 4執行下載指令如下 eFPGA progNETbit 模組0必須先下載指定的 FPGA電路 eFPGA xxxxbit 1 再依序下載其他網路模組的 FPGA電路 eFPGA yyyybit 2 eFPGA zzzzbit 最後再重新下載模組0的 FPGA電路 5換句話說模組0必須先執行 progNETbit讓光纖網路接受 FPGA控制後才能透過光纖網路下載至其他節點等全部網路節點下載完畢後再將模組0的 FPGA重新下載讓模組0也可自由執行任意的 FPGA電路

6若要更改某一個網路節點中的 FPGA電路只要重新執行下述指令 eFPGA progNETbit 模組0必須先下載指定的 FPGA電路 eFPGA yyyybit 2 下載指定網路模組的 FPGA電路 eFPGA zzzz bit 最後再重新下載模組0的 FPGA電路 換句話說除非模組0中的 FPGA已經包括光纖網路管理電路否則一定要先在

模組0中下載網路管理電路後才能下載指定網路節點的 FPGA電路

76

光纖網路通訊 FPGA 發展系統

系統配置

光纖網路通訊 FPGA 發展系統的系統配置圖如下

個人電腦(Windows) eM_USB模組

0USB

eM_USB模組1

光纖網路

eM_USB模組2

eM_USB模組N

其中

1基本模組為 eM_USB模組可用 USB界面和個人電腦連線並提供 USB對光纖網路的轉換功能使得個人電腦可以獨立控制光纖網路中的每個網路節點

2eM_USB模組也可以作為光纖網路中的網路節點透過光纖網路而接受個人電腦的

監控 3就個人電腦而言不論是 USB界面直接連結或是以光纖網路間接連結的 eM_USB模組都是可以直接監控的網路節點最多可以同時控制一個 USB節點和 30個網路節點

4對於每一個網路節點個人電腦都可執行 eM_USB模組中 FPGA的電路下載工作並在適當的 FPGA電路配合下可執行 eM_USB模組中 FPGA內部電路的讀寫控制 5透過適當的 FPGA電路設計各網路節點都可透過光纖網路和其他任何網路節點

作同步通訊執行 FPGA內部記憶體的資料交換資料交換頻率可達 1KHz以上

77

網路模組配置

每個網路模組的標準配置圖如下

eM_USB模組光纖網路

USB eM_FPGA卡

eM_DEMO模組

eM_EXP實驗模組

DC電源

其中

1網路模組以 eM_USB模組為主提供基本的 USB界面和光纖網路連線 2eM_USB模組中的 FPGACPLD採用插卡型式可選擇不同的 eM_FPGA卡包括

eM_2V1K卡可選用 Virtex系列的 XC2V250和 XC2V1000 eM_3S1K卡可選用 Spartan3系列的 XC3S400XC3S1000和 XC3S1500 eM_3S50卡可選用 Spartan3系列的 XC3S50XC3S200和 XC3S400 eM_95XL卡可選用 9500XL系列的 XC95144XL和 XC95288XL 3eM_USB模組中的對外連線有兩種一種是 26P接頭用以連接既有的各種實驗模

組另一種是兩組 50P接頭將 FPGA中各接腳引出用以連接專題實驗 4eM_DEMO模組就是插上 50P接頭的教學模組其中包括 LED 數字顯示和 44鍵盤也具備兩組的 ADC和兩組的 DAC接頭提供類比訊號的測試工具

常用的實驗組合包括

1精簡組合包括(eM_USB+eM_FPGA)提供基本的網路節點適用於專題實驗 2標準組合包括(eM_USB+eM_FPGA+eM_DEMO)提供基礎 FPGA設計的教學實驗

3實驗組合包括(eM_USB+eM_FPGA+eM_DEMO+eM_EXP)提供進階的 FPGA實驗可依需求選用不同的實驗模組

78

eM_USB 模組

eM_USB 模組的電路配置圖如下

TxRx

DCPower

USB

JP2

JP3

光纖界面

外加電源

PC連線

JP1

eM_FPGA模組

FT232 CPLD FlashROM

SRAM

10cm

6cm

JP4

其中

1對外的連線接頭包括 DC電源 可選擇單電源(5V)或是多電源(5V+12V-12V)兩種 USB界面 直接連接個人電腦 光纖界面連接光纖網路 2實驗界面包括 JP1負責內部 CPLD的電路下載 JP2JP3兩組 50P的擴張用接頭 JP4 標準 26P接頭用以連接各種實驗模組 3內部的電路配置包括 A以 SO-DIMM接頭連接各種 eM_FPGA卡 B內附 EEPROMFlashROM和 SRAM提供 FPGA作應用測試 C以一顆 FT232BM作為 USB界面解碼而以一顆 CPLD作為光纖網路解碼 D提供各種 eM_FPGA卡的電路下載功能 4內附五顆 LED由上而下依序為 usbLED指示 USB界面的讀寫狀態 tstLED可由 FPGA電路自行定義 stsLED可由 FPGA電路自行定義 RxLED 可由 FPGA電路自行定義 TxLED 可由 FPGA電路自行定義

79

外部接腳定義

外部接頭的接點順序圖示如下

上視圖

JP11 9 JP4

126225

JP31

50249

JP21

50249

而各接頭的接點定義如下

JP1 JP4 JP2 JP3 1+33V 1+12V 2+12V 1 GND 2 GND 1 GND 2 GND 2GND 3 ADC 4 DAC 3POWER 4ALARM 3 +5V 4 +5V 3nc 5 yPB2 6 yPB3 5RxNET 6TxNET 5+12V 6+12V 4TCK 7 yPB1 6 yPB4 7RxUSB 6TxUSB 7-12V 6-12V 5nc 9 yPB0 10yPB5 9RxCAN 10TxCAN 9 ADC 10 DAC 6TDO 11yPB6 12yPB7 11P0D0 12P0D1 11P1D0 12P1D1 7TDI 13yGND 14yPC3 13P0D2 14P0D3 13P1D2 14P1D3 8nc 15yPC2 16yPC1 15P0D4 16P0D5 15P1D4 16P1D5 9TMS 17yPC0 18yPA0 17P0D6 18P0D7 17P1D6 18P1D7 19yPA1 20yPA2 19P0D8 20P0D9 19P1D8 20P1D9 21yPA3 22GND 21P0D10 22P0D11 21P1D10 22P1D11 23GND 24+5V 23P0D12 24P0D13 23P1D12 24P1D13 25+5V 26nc 25P0D14 26P0D15 25P1D14 26P1D15 27P2D0 28P2D1 27PxA0 28PxA1 29P2D2 30P2D3 29PxA2 30PxA3 31P2D4 32P2D5 31PxA4 32PxA5 33P2D6 34P2D7 33PxA6 34PxA7 35P2D8 36P2D9 35PxB0 36PxB1 37P2D10 38P2D11 37PxB2 38PxB3 39P2D12 40P2D13 39PxB4 40PxB5 41P2D14 42P2D15 41PxB6 42PxB7 43ADC0 44ADC1 43PxC0 44PxC1 45ADC2 46ADC3 45PxC2 46PxC3 47ADC4 48ADC5 47PxC4 48PxC5 49DAC0 50DAC1 49PxC6 50PxC7

80

eM_FPGA 模組

在各種 eM_FPGA 模組中FPGA 對外電路的標準配置圖如下

24576MHz

FlashROM

26PSRAM

EEPROM

mD[8]

yPA[4]

FPGACPLD

mA[19]mRDmWRmCSeeCKeeCSeeDIeeDO

光纖界面 RxNETTxNET

USB 界面 RxUSBTxUSBCLK24MPOWERALARM

LED

tstLEDstsLEDRxLEDTxLED

yPB[8]yPC[4]

ADCDAC

ADC[8]

實驗模組

ADC[2]

DAC[2]

xPA[4]

xPB[8]

xPC[4]

基礎實驗

其中

1FPGACPLD可以選擇下述幾種 XC2V250XC2V1000 採用 eM_2V1K模組其中 FPGA為 FG456包裝 XC3S400XC3S1000XC3S1500採用 eM_3S1K模組其中 FPGA為 FG456包裝 XC3S400XC3S1000XC3S1500採用 eM_3S1K模組其中 FPGA為 FG456包裝 XC3S50XC3S200XC3S400 採用 eM_3S50模組其中 FPGA為 TQ144包裝 XC95144XLXC95288XL 採用 eM_95XL模組其中 CPLD為 TQ144包裝 2採用 FG456包裝者可以控制所有的 IO界面 3採用 TQ144包裝者只是不能控制 RAM和 FlashROM而可以控制其他所有的界面 4所有 FPGA模組都可自由選擇由 USB界面或是由光纖界面下載電路但是 CPLD模組只能固定由 USB界面下載電路

5所有 FPGACPLD模組都可透過 26P接頭連接既有的各種實驗模組

81

FPGA 接腳對照表

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

mD0 XD6 mD0 A17 C13 -- -- mD1 XD7 mD1 B17 D12 -- -- mD2 XD8 mD2 C17 D11 -- -- mD3 XD9 mD3 D17 C11 -- -- mD4 XD10 mD4 E17 D10 -- -- mD5 XD11 mD5 E16 C10 -- -- mD6 XD12 mD6 E14 D9 -- -- mD7 XD13 mD7 E13 D7 -- -- mA0 XD14 mA0 D13 C7 -- -- mA1 XD15 mA1 C13 D6 -- -- mA2 XA0 mA2 V5 C3 -- -- mA3 XA1 mA3 U5 C4 -- -- mA4 XA2 mA4 Y2 D3 -- -- mA5 XA3 mA5 Y1 D4 -- -- mA6 XA4 mA6 V4 E3 -- -- mA7 XA5 mA7 V3 E4 -- -- mA8 XA6 mA8 W2 F3 -- -- mA9 XA7 mA9 W1 F4 -- -- mA10 XA8 mA10 T2 G6 -- -- mA11 XA9 mA11 T1 K3 -- -- mA12 XA10 mA12 R4 K10 -- -- mA13 XA11 mA13 R3 L3 -- -- mA14 XA12 mA14 R2 L4 -- -- mRD XRD mRD R1 D5 -- -- mWR XWR mWR P6 C6 -- --

POWER P0A0 POWER B4 B20 P1 P5 ALARM P0A1 ALARM A4 A19 P2 P6 RxNET P0A2 RxNET C4 B19 P4 P7 TxNET P0A3 TxNET C5 A18 P5 P9 RxUSB P0B0 RxUSB B5 A15 P6 P10 TxUSB P0B1 TxUSB A5 B15 P7 P11 RxCAN P0B2 RxCAN D6 A14 P8 P12 RxCAN P0B3 TxCAN C6 B14 P10 P13

CLK24M CLK24M CLK24M E12 B12 P124 P38

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

PWM0H P3A0 P0D0 E6 A8 P21 P23 PWM0L P3A1 P0D1 E5 B8 P23 P24 PWM1H P3A2 P0D2 C2 B6 P24 P25 PWM1L P3A3 P0D3 C1 A5 P25 P26 PWM2H P3A4 P0D4 D2 B5 P26 P27

82

PWM2L P3A5 P0D5 D1 A4 P27 P28 PWMenb P3A6 P0D6 E4 B4 P28 P30 PHT1Z P3A7 P0D7 E3 A3 P30 P31 PHT1A P3B0 P0D8 G2 C1 P31 P32 PHT1B P3B1 P0D9 G1 C2 P32 P33 PHT0A P3B2 P0D10 H5 D1 P33 P34 PHT0B P3B3 P0D11 J6 D2 P35 P35 AMP0 P3B4 P0D12 H4 E1 P36 P39 AMP1 P3B5 P0D13 H3 E2 P40 P40 AMP2 P3B6 P0D14 H2 F2 P41 P41 AMP3 P3B7 P0D15 H1 G1 P44 P43 eeSK P0C3 P1D0 C10 B9 P20 P22 eeCS P0C2 P1D1 D10 A9 P18 P21 eeDI P0C1 P1D2 F10 B10 P17 P20 eeDO P0C0 P1D3 E10 B11 P15 P19 ssCK P0B7 P1D4 E8 A11 P14 P17 ssCS P0B6 P1D5 E7 A12 P13 P16 ssDI P0B5 P1D6 A6 B13 P12 P15 ssDO P0B4 P1D7 B6 A13 P11 P14

ppCLK P3C0 P1D8 K4 G2 P46 P44 ppDIN P3C1 P1D9 K3 K1 P47 P45 TxD P3C2 P1D10 K2 K2 P50 P46 RxD P3C3 P1D11 K1 L1 P51 P48

tstLED P3C4 P1D12 L5 L2 P52 P49 stsLED P3C5 P1D13 L4 M1 P53 P50 RxLED P3C6 P1D14 L3 M2 P55 P51 TxLED P3C7 P1D15 L2 N1 P56 P52

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

xPA0 P2A0 P2D0 AA3 N2 P59 P53 xPA1 P2A1 P2D1 Y4 T1 P60 P54 xPA2 P2A2 P2D2 AA4 T2 P63 P56 xPA3 P2A3 P2D3 AB4 U2 P68 P57 xPC0 P2A4 P2D4 W5 V1 P69 P58 xPC1 P2A5 P2D5 Y5 V2 P70 P59 xPC2 P2A6 P2D6 AA5 W1 P73 P60 xPC3 P2A7 P2D7 AB5 W2 P74 P61

-- P2B0 P2D8 V6 Y1 P76 P64 -- P2B1 P2D9 V7 Y2 P77 P66 -- P2B2 P2D10 W6 AA3 P78 P68

mCS P2B3 P2D11 Y6 AB4 P79 P69 mA15 P2B4 P2D12 V9 AA4 P80 P70 mA16 P2B5 P2D13 V10 AB5 P82 P71 mA17 P2B6 P2D14 W10 AA5 P83 P74 mA18 P2B7 P2D15 Y10 AA6 P84 P75 CS0 P2C0 ADC0 AA10 AB8 P85 P76

83

SDIN0 P2C1 ADC1 AB10 AA8 P86 P77 CS1 P2C2 ADC2 U10 AB9 P87 P78

SDIN1 P2C3 ADC3 U11 AA9 P89 P79 SCLK P2C4 ADC4 V11 AB10 P90 P80 CS2 P2C5 ADC5 W11 AA10 P92 P81

SDOUT P2C6 ADC6 Y11 AB11 P93 P82 LDAC P2C7 ADC7 AA11 AA11 P95 P83

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

xPB0 P1A0 PxA0 M1 M3 P135 P85 xPB1 P1A1 PxA1 M2 M4 P132 P86 yPB2 P1A2 PxA2 M3 N3 P131 P87 yPB3 P1A3 PxA3 M4 N4 P130 P88 yPB1 P1A4 PxA4 M5 T4 P129 P91 yPB4 P1A5 PxA5 M6 T5 P128 P92 yPB0 P1A6 PxA6 N1 U3 P127 P93 yPB5 P1A7 PxA7 N2 U4 P125 P94 yPB6 P1B0 PxB0 U13 V3 P119 P95 yPB7 P1B1 PxB1 V13 V4 P118 P96 xPB2 P1B2 PxB2 W13 W3 P116 P97 xPB3 P1B3 PxB3 Y13 W4 P113 P98 xPB4 P1B4 PxB4 AA13 Y3 P112 P100 xPB5 P1B5 PxB5 AB13 Y4 P96 P101 yPC3 P1B6 PxB6 U12 Y5 P97 P102 yPC2 P1B7 PxB7 V12 W5 P98 P103 yPC1 P1C7 PxC0 AB17 W11 P108 P113 yPC0 P1C6 PxC1 AA17 Y11 P107 P112 yPA0 P1C5 PxC2 Y17 W10 P105 P111 yPA1 P1C4 PxC3 W17 Y10 P104 P110 yPA2 P1C3 PxC4 AB18 W9 P103 P107 yPA3 P1C2 PxC5 AA18 W8 P102 P106 xPB6 P1C1 PxC6 Y18 W6 P100 P105 xPB7 P1C0 PxC7 W18 Y6 P99 P104

84

eM_DEMO 模組

eM_DEMO 模組的電路配置圖如下

eM_USB 模組

數字型 LED

0 1 2 34 5 6 78 9 A BC D E F

燈號型 LED

44 鍵盤

ADC0 ADC1 DAC0 DAC1

LED 選擇KEY 選擇

其中

1eM_DEMO模組的基本功能包括 A將 xPAxPBxPC等 16個 IO訊號引出控制 LED和鍵盤電路 B將 ADDA訊號引出並放大成+-10V的工作範圍 2LED和鍵盤可以選擇三種模式由 LED和 KEY 兩組開關作選擇圖示如下

模式1

0123

模式2 模式3

0 1 2 34 5 6 78 9 A BC D E F

0123

3模式14鍵輸入並搭配 16點的 LED燈號顯示其中 16點 LED分別對映到 xPA[0~3]xPB[0~7]和 xPC[0~3] 4組按鍵分別對映到 xPC[0~3] 4模式24鍵輸入並搭配四個 7段式數字顯示其中 數字顯示由 xPA[0~3]作數字掃瞄而由 xPB[0~7]作 7段式 LED控制 4組按鍵 分別對映到 xPC[0~3] 5模式316鍵輸入並搭配四個 7段式數字顯示其中 數字顯示由 xPA[0~3]作數字掃瞄而由 xPB[0~7]作 7段式 LED控制 16組按鍵由 xPA[0~3]作鍵盤掃瞄而由 xPC[0~3]作鍵盤讀取 6根據VHDL與數位邏輯設計的章節其中 第 1章至 10章的實驗採用模式1而 第 11章實驗採用模式2而 第 12章之後的實驗都採用模式3

85

FPGA UCF 定義

eM_3S1K 模組

NET CLK LOC = B12

NET XAlt0gt LOC = N2

NET XAlt1gt LOC = T1

NET XAlt2gt LOC = T2

NET XAlt3gt LOC = U2

NET XBlt0gt LOC = M3

NET XBlt1gt LOC = M4

NET XBlt2gt LOC = W3

NET XBlt3gt LOC = W4

NET XBlt4gt LOC = Y3

NET XBlt5gt LOC = Y4

NET XBlt6gt LOC = W6

NET XBlt7gt LOC = Y6

NET XClt0gt LOC = V1

NET XClt1gt LOC = V2

NET XClt2gt LOC = W1

NET XClt3gt LOC = W2

NET YAlt0gt LOC = W10

JP4 接頭

NET YAlt1gt LOC = Y10

NET YAlt2gt LOC = W9

NET YAlt3gt LOC = W8

NET YBlt0gt LOC = U3

NET YBlt1gt LOC = T4

NET YBlt2gt LOC = N3

NET YBlt3gt LOC = N4

NET YBlt4gt LOC = T5

NET YBlt5gt LOC = U4

NET YBlt6gt LOC = V3

NET YBlt7gt LOC = V4

NET YClt0gt LOC = Y11

NET YClt1gt LOC = W11

NET YClt2gt LOC = W5

NET YClt3gt LOC = Y5

在光碟片中 RFFPGAVHDLDEMOBIT3S1K 裡有 VHDL 與數位邏輯設計書本範例原始檔與合成檔

86

eM_3S50 模組

NET CLK LOC = P124

NET XAlt0gt LOC = P59

NET XAlt1gt LOC = P60

NET XAlt2gt LOC = P63

NET XAlt3gt LOC = P68

NET XBlt0gt LOC = P135

NET XBlt1gt LOC = P132

NET XBlt2gt LOC = P116

NET XBlt3gt LOC = P113

NET XBlt4gt LOC = P112

NET XBlt5gt LOC = P96

NET XBlt6gt LOC = P100

NET XBlt7gt LOC = P99

NET XClt0gt LOC = P69

NET XClt1gt LOC = P70

NET XClt2gt LOC = P73

NET XClt3gt LOC = P74

NET YAlt0gt LOC = P105

JP4 接頭

NET YAlt1gt LOC = P104

NET YAlt2gt LOC = P103

NET YAlt3gt LOC = P102

NET YBlt0gt LOC = P127

NET YBlt1gt LOC = P129

NET YBlt2gt LOC = P131

NET YBlt3gt LOC = P130

NET YBlt4gt LOC = P128

NET YBlt5gt LOC = P125

NET YBlt6gt LOC = P119

NET YBlt7gt LOC = P118

NET YClt0gt LOC = P107

NET YClt1gt LOC = P108

NET YClt2gt LOC = P98

NET YClt3gt LOC = P97

在光碟片中 RFFPGAVHDLDEMOBIT3S200 裡有VHDL與數位邏輯設計書本範例原始檔與合成檔

87

eM_95XL 模組

NET CLK LOC = SPIN38

NET XAlt0gt LOC = SPIN53

NET XAlt1gt LOC = SPIN54

NET XAlt2gt LOC = SPIN56

NET XAlt3gt LOC = SPIN57

NET XBlt0gt LOC = SPIN85

NET XBlt1gt LOC = SPIN86

NET XBlt2gt LOC = SPIN97

NET XBlt3gt LOC = SPIN98

NET XBlt4gt LOC = SPIN100

NET XBlt5gt LOC = SPIN101

NET XBlt6gt LOC = SPIN105

NET XBlt7gt LOC = SPIN104

NET XClt0gt LOC = SPIN58

NET XClt1gt LOC = SPIN59

NET XClt2gt LOC = SPIN60

NET XClt3gt LOC = SPIN61

NET YAlt0gt LOC = SPIN111

JP4 接頭

NET YAlt1gt LOC = SPIN110

NET YAlt2gt LOC = SPIN107

NET YAlt3gt LOC = SPIN106

NET YBlt0gt LOC = SPIN93

NET YBlt1gt LOC = SPIN91

NET YBlt2gt LOC = SPIN87

NET YBlt3gt LOC = SPIN88

NET YBlt4gt LOC = SPIN92

NET YBlt5gt LOC = SPIN94

NET YBlt6gt LOC = SPIN95

NET YBlt7gt LOC = SPIN96

NET YClt0gt LOC = SPIN112

NET YClt1gt LOC = SPIN113

NET YClt2gt LOC = SPIN103

NET YClt3gt LOC = SPIN102

在光碟片中 RFFPGAVHDLDEMOSVF95288XL 裡有VHDL與數位邏輯設計書本範例原始檔與合成

檔案

88

eM_FPGA 模組

NET CLK LOC = E12

NET XAlt0gt LOC = AA3

NET XAlt1gt LOC = Y4

NET XAlt2gt LOC = AA4

NET XAlt3gt LOC = AB4

NET XBlt0gt LOC = M1

NET XBlt1gt LOC = M2

NET XBlt2gt LOC = W13

NET XBlt3gt LOC = Y13

NET XBlt4gt LOC = AA13

NET XBlt5gt LOC = AB13

NET XBlt6gt LOC = Y18

NET XBlt7gt LOC = W18

NET XClt0gt LOC = W5

NET XClt1gt LOC = Y5

NET XClt2gt LOC = AA5

NET XClt3gt LOC = AB5

NET YAlt0gt LOC = Y17

JP4 接頭

NET YAlt1gt LOC = W17

NET YAlt2gt LOC = AB18

NET YAlt3gt LOC = AA18

NET YBlt0gt LOC = N1

NET YBlt1gt LOC = M5

NET YBlt2gt LOC = M3

NET YBlt3gt LOC = M4

NET YBlt4gt LOC = M6

NET YBlt5gt LOC = N2

NET YBlt6gt LOC = U13

NET YBlt7gt LOC = V13

NET YClt0gt LOC = AA17

NET YClt1gt LOC = AB17

NET YClt2gt LOC = V12

NET YClt3gt LOC = U12

在光碟片中 RFFPGAVHDLDEMOBIT2V250 裡有VHDL與數位邏輯設計書本範例原始檔與合成檔

89

Page 42: RFFPGA 直流馬達實驗手冊juniortek.com.tw/program/manual/RF-DC-mal.pdf · em_demo模組 em_dcm 直流伺服馬達 dc電源 rffpga 系統的直流馬達實驗規劃 其中包括:

方塊的參數設定 使用者可視情況調整一階濾波器的 ka和 dt值使得 ch2和 ch3 兩組波形完全相符

以求得此一閉迴路系統近似的一階轉移函數或調整 PD控制器中的 kp和 kp值以調整系統之響應 實測響應圖

訊 號 說 明 訊 號 說 明 ch1 方波產生器產生之速度命令 ch3 一階濾波器輸出信號 ch2 馬達角速度訊號 ch4 馬達角位置訊號

42

直流馬達之閉迴路速度控制響應圖

43

63 實驗 3-閉迴路的位置控制 實驗說明為了觀測閉迴路的位置控制響應將直流馬達的回授改為位置訊號

建立下面的測試方塊圖 方塊圖中的模組功能說明如下

1用 fg1產生測試用的方波位置命令 2將方波位置命令和位置回授訊號送到 PD控制器方塊中產生電壓控制訊號再透過 io2模組將訊號送出到伺服介面驅動馬達轉動

對應之 plc檔程式說明(exp_angleplc) echo off 畫面顯示開始

run dsp 0 選擇 DSP1

run stop run reset 既有程式停止

run testDCMmem 下載指定程式

das 1 ampfg1out 0 1024 PWM 波形 Volt 設定 DAS 頻道1

das 2 ampft1lp 0 1024 馬達模擬 Volt 設定 DAS 頻道2

das 3 ampio1spd 0 1024 馬達速度 Volt 設定 DAS 頻道3

das 4 ampio1ang 0 1024 馬達角度 Volt 設定 DAS 頻道4

plot select 0 設定示波器頁數

plot xunit 100000 0 設定示波器 X軸

plot yunit 1 1000 -300 設定示波器 Y1 軸

plot yunit 2 1000 -100 設定示波器 Y2 軸

plot yunit 3 20 100 設定示波器 Y3 軸

plot yunit 4 1000 300 設定示波器 Y4 軸

plot trigger 1 0 1 10 設定示波器觸發

44

plot scope 9 1 2 3 4 設定示波器顯示

module io2 設定 io2 模組

s cmd ampcn2out

module fg1 設定 fg1 模組

s kAmp 1000 s kFrq 75

module cn2 設定 cn1 模組

s cmd ampfg1out s fdk ampio1ang s kp 0x300 s kd 0x4000

module ft1 設定 ft1 模組

s u ampfg1out s dt 2 s ka 320

module io3 設定 io3 模組

s led ampfg1out

module 回復預設模組

run 1khz 設定抽樣頻率為 4KHz

run start DSP 開始執行

das stop pause 1 DAS 啟動 das start DAS 啟動

echo on 回復正常訊息顯示

CAI操控設計畫面規劃如下(EXP_angleCAI) page 1 畫面設計

45

page 2 與 page 3 畫面設計與實驗一 page 2 與 page 3相同畫面 page 4 畫面設計與實驗二 page 4 畫面 方塊的參數設定 延續上一實驗的說明使用者可以調整 PD控制器中的 kp和 kd值以調整系統之

響應 實測響應圖

訊 號 說 明 訊 號 說 明 ch1 方波產生器產生之位置命令 ch3 馬達角速度訊號 ch2 馬達角位置 ch4 Pd控制器輸出之電壓訊號

46

直流馬達之閉迴路位置控制響應圖

47

64 實驗 4-加減速的位置控制 實驗說明為避免方波命令的過於嚴苛在方波命令的輸出加入一加減速控制功

能方塊以減緩命令變化的幅度增加馬達運動的平順建立的測試方塊圖如下

方塊圖中的模組功能說明如下

1用 fg1產生測試用的方波位置命令 2將方波位置命令送到加減速控制方塊處理後產生新的位置命令再將新的位置命

令與位置回授訊號送到 PD控制器方塊中產生電壓控制訊號最後透過 io2模組將訊號送出到伺服介面驅動馬達轉動

對應之 plc檔程式說明(exp_accplc) echo off 畫面顯示開始

run dsp 0 選擇 DSP1

run stop run reset 既有程式停止

run testDCMmem 下載指定程式

das 1 ampfg1out 0 1024 PWM 波形 Volt 設定 DAS 頻道1

das 2 ampcn1out 0 1024 加速控制 Volt 設定 DAS 頻道2

das 3 ampio1spd 0 1024 馬達速度 Volt 設定 DAS 頻道3

das 4 ampio1ang 0 1024 馬達角度 Volt 設定 DAS 頻道4

plot select 0 設定示波器頁數

plot xunit 100000 0 設定示波器 X軸

plot yunit 1 2000 -300 設定示波器 Y1 軸

plot yunit 2 2000 -100 設定示波器 Y2 軸

plot yunit 3 50 100 設定示波器 Y3 軸

plot yunit 4 2000 300 設定示波器 Y4 軸

48

plot trigger 1 0 1 10 設定示波器觸發

plot scope 9 1 2 3 4 設定示波器顯示

module io2 設定 io2 模組

s cmd ampcn2out

module fg1 設定 fg1 模組

s kAmp 2000 s kFrq 150

module cn1 設定 cn1 模組

s cmd ampfg1out

module cn2 設定 cn2 模組

s cmd ampcn1out s fdk ampio1ang s kp 0x300 s kd 0x4000

module ft1 設定 ft1 模組

s u ampfg1out s dt 2 s ka 320

module io3 設定 io3 模組

s led ampfg1out

module 回復預設模組

run 1khz 設定抽樣頻率為 4KHz

run start DSP 開始執行

das stop pause 1 DAS 啟動 das start DAS 啟動

echo on 回復正常訊息顯示

CAI操控設計畫面規劃如下(EXP_accCAI) page 1 畫面設計

49

page 2 畫面設計與實驗一 page 2相同畫面 page 3 畫面設計與實驗二 page 4相同畫面

參數設定參考之前各實驗的說明可線上機動性的調整 PD控制器中的 kp和 kd值以調整系統之響應 實測響應圖

訊 號 說 明 訊 號 說 明 ch1 方波產生器產生之位置命令 ch3 馬達角位置 ch2 加減速模組輸出之位置命令 ch4 馬達角速度訊號

50

圖一 直流馬達經加減速控制後之閉迴路控制響應圖

51

65 實驗 5-正弦波的位置控制 實驗說明在本實驗中改變命令的波形由方波改變為正弦波並建立如下的測

試方塊圖與上一實驗相比較僅更改命令的波形產生方塊 方塊圖中的模組功能說明如下 1用 fg2產生測試用的弦波位置命令 2將弦波位置命令送到加減速控制方塊處理後產生新的位置命令再與 io1 讀入的位

置回授訊號送到 PD 控制器方塊中產生電壓控制訊號再透過 io2 模組將訊號送出到伺服介面驅動馬達轉動

對應之 plc檔程式說明(exp_sinplc) echo off 畫面顯示開始

run dsp 0 選擇 DSP1

run stop run reset 既有程式停止

run testDCMmem 下載指定程式

das 1 ampfg2out 0 1024 SIN 波形 Volt 設定 DAS 頻道1

das 2 ampcn1out 0 1024 加速控制 Volt 設定 DAS 頻道2

das 3 ampio1spd 0 1024 馬達速度 Volt 設定 DAS 頻道3

das 4 ampio1ang 0 1024 馬達角度 Volt 設定 DAS 頻道4

plot select 0 設定示波器頁數

plot xunit 100000 0 設定示波器 X軸

plot yunit 1 2000 -300 設定示波器 Y1 軸

plot yunit 2 2000 -100 設定示波器 Y2 軸

plot yunit 3 50 100 設定示波器 Y3 軸

plot yunit 4 2000 300 設定示波器 Y4 軸

plot trigger 1 0 1 10 設定示波器觸發

52

plot scope 9 1 2 3 4 設定示波器顯示

module io2 設定 io2 模組

s cmd ampcn2out

module fg2 設定 fg1 模組

s kAmp 2000 s kFrq 100

module cn1 設定 cn1 模組

s cmd ampfg2out

module cn2 設定 cn2 模組

s cmd ampcn1out s fdk ampio1ang s kp 0x300 s kd 0x4000

module ft1 設定 ft1 模組

s u ampfg2out s dt 2 s ka 320

module io3 設定 io3 模組

s led ampfg2out

module 回復預設模組

run 1khz 設定抽樣頻率為 4KHz

run start DSP 開始執行

das stop pause 1 DAS 啟動 das start DAS 啟動

echo on 回復正常訊息顯示

CAI操控設計畫面規劃如下(EXP_sinCAI) page 1 畫面設計

53

page 2 畫面設計 page 3 畫面設計與實驗二 page 4相同畫面

方塊的參數設定可調整 PD控制器中的 kp和 kd值以調整系統之響應 實測響應圖

訊 號 說 明 訊 號 說 明 ch1 弦波產生器產生之位置命令 ch3 馬達角位置訊號 ch2 加減速模組輸出之位置命令 ch4 馬達角速度訊號

54

直流馬達之閉迴路弦波加減速位置控制響應圖

55

7組合語言說明

本節將針對 DC馬達伺服控制實驗專用的程式模組進行功能與程式碼的說明其

有關於波形產生器與資料擷取模組等說明如下

SIN_waveasm 正弦波產生器 PWM_waveasm 方波產生器 IIR1_filterasm 一階濾波器 DAS4asm 資料蒐集模組

弦波產生器

此模組會產生週期性的正弦波方塊圖如下

outfrq

kBiasbias

ampkAmp

kFrqth

kThf=1TB

θ

A

其中

1正弦波有四個參數振幅(A)頻率(F)相位(θ)和偏移(B)其公式為 out = A sin(2πF t +θ) + B 2對於單純的正弦波產生器所對映的參數包括 kAmp 振幅值 kFrq 頻率值kFrq=655368000Hz其中 Hz的範圍為 0~4000例如 1000Hz =gt frq=8192 100Hz =gt frq=819 10Hz =gt frq=82 1Hz =gt frq=8 kTh 相角值0~255代表 0~360的相位當 th=0 時為正弦波 th=64 時為餘弦波 th=128時為反相波依此類推 kBias偏移值 3對於可調變的正弦波產生器其對映的輸入點為 amp 控制振幅的輸入點可產生調幅(AM)波形 frq 控制頻率的輸入點可產生調頻(FM)波形 th 控制相位的輸入點可產生調相(PM)波形 bias控制偏移的輸入點可產生雙頻混波(相加)波形 4若不使用調變功能時各個輸入點時的預設值為 amp 指向 kAmp 的位址 frq 指向 kFrq 的位址

56

th 指向 kTh 的位址 bias指向 kBias的位址

模組程式範例SIN_WAVEasm

local amp R0 IP kAmp 輸入點sin波的振幅 local frq R1 IP kFrq 輸入點sin波的頻率 local th R2 IP kTh 輸入點sin波的相角 local bias R3 IP kBias 輸入點sin波的中心偏移 local out R4 OP 輸出點sin波輸出 local tab R5 TP 表格指標指向 sin[256]的表格 local ang R6 內部變數相位角65536=360deg local kAmp R7 1000 參數振幅值 local kFrq R8 1000 參數頻率值=655368000Hz local kTh R9 0 參數相角值360deg=256 local kBias R10 0 參數偏移值 data 11 模組變數區長度及初值 initial 啟動程序 WR ang0 WR out0 ang=out=0 RET timer 即時控制程序(8KHz) RD ang ADD (frq) WR ang ang+=frq SFR 8 ADD (th) AND 255 ACC=sin(ang256+th) ADD tab WRH RDM table-look-up MUL (amp) SFR 12 ADD (bias) WR out out=ACCamp4096+bias RET table tab 256 sin[256]表格區10=4096 0 101 201 301 401 501 601 700 00~070deg 799 897 995 1092 1189 1285 1380 1474 08~0F 1567 1660 1751 1842 1931 2019 2106 2191 10~17 2276 2359 2440 2520 2598 2675 2751 2824 18~1F 2896 2967 3035 3102 3166 3229 3290 3349 20~27 3406 3461 3513 3564 3612 3659 3703 3745 28~2F 3784 3822 3857 3889 3920 3948 3973 3996 30~37 4017 4036 4052 4065 4076 4085 4091 4095 38~3F 4096 4095 4091 4085 4076 4065 4052 4036 40~4790deg 4017 3996 3973 3948 3920 3889 3857 3822 48~4F 3784 3745 3703 3659 3612 3564 3513 3461 50~57 3406 3349 3290 3229 3166 3102 3035 2967 58~5F

57

2896 2824 2751 2675 2598 2520 2440 2359 60~67 2276 2191 2106 2019 1931 1842 1751 1660 68~6F 1567 1474 1380 1285 1189 1092 995 897 70~77 799 700 601 501 401 301 201 101 78~7F 0 65435 65335 65235 65135 65035 64935 64836 80~87180deg 64737 64639 64541 64444 64347 64251 64156 64062 88~8F 63969 63876 63785 63694 63605 63517 63430 63345 90~97 63260 63177 63096 63016 62938 62861 62785 62712 98~9F 62640 62569 62501 62434 62370 62307 62246 62187 A0~A7 62130 62075 62023 61972 61924 61877 61833 61791 A8~A8 61752 61714 61679 61647 61616 61588 61563 61540 B0~B7 61519 61500 61484 61471 61460 61451 61445 61441 B8~BF 61440 61441 61445 61451 61460 61471 61484 61500 C0~C7270deg 61519 61540 61563 61588 61616 61647 61679 61714 C8~CF 61752 61791 61833 61877 61924 61972 62023 62075 D0~D7 62130 62187 62246 62307 62370 62434 62501 62569 D8~DF 62640 62712 62785 62861 62938 63016 63096 63177 E0~E7 63260 63345 63430 63517 63605 63694 63785 63876 E8~EF 63969 64062 64156 64251 64347 64444 64541 64639 F0~F7 64737 64836 64935 65035 65135 65235 65335 65435 F8~FF

就程式結構而言說明如下

timer 即時控制程序(8KHz) RD ang ADD (frq) WR ang ang+=frq SFR 8 ADD (th) AND 255 ACC=sin(ang256+th) ADD tab WRH RDM table-look-up MUL (amp) SFR 12 ADD (bias) WR out out=ACCamp4096+bias RET

1基本上我們以查表法計算 sin()其輸入θ的範圍為 0~255對映到 0~360deg其輸出 sin(θ)的範圍為+-4096對映到+-10的範圍

2建立一個內部變數 ang其範圍為 0~65535對映到 0~360的相位角 3每個timer程序都執行 ang+=frq的動作更新目前的相位角接著依照 ang的相位角查表得到 sin(ang256+th)值

4由於表格長度為 256-word所以必須將 ang256才能得到正確的對映關係而 th範圍為 0~255所以不需要像 ang一般的做額外處理

5sin()的範圍為(+1-1)而在表格中以(+4096~-4096)的型式記錄相當於 10=4096所以執行 Asin()時還要用 SFR12指令做4096的動作才能正確的取得輸出值

58

6就頻率輸入 frq而言其計算原則是將θ=ωt轉化成θ=Σ(ωdt)因為抽樣頻率

為 8KHz所以 dt=18000而得到 frq=655368000Hz公式其中 Hz為真正的頻率在 8KHz的抽樣頻率下其範圍為 0~4000

鋸齒波產生器

此模組會產生週期性的鋸齒波方塊圖如下

outfrq

kBiasbias

ampkAmp

kFrqth

kThf=1TB

θ

A

其中

1鋸齒波也有四個參數振幅(A)頻率(F)相位(θ)和偏移(B)和正弦波的定義完全一致唯一的差異是其輸出為鋸齒波而非正弦波

2基本波形是從週期開始時為 0一直遞增到週期結束時到達最高點然後立刻回歸

到 0重新開始 3以程式結構而論鋸齒波程式幾乎就是正弦波的相位計算部分只差沒有正弦波的

查表處理而已

模組程式範例SAW_WAVEasm

local amp R0 IP kAmp 輸入點sin波的振幅 local frq R1 IP kFrq 輸入點sin波的頻率 local th R2 IP kTh 輸入點sin波的相角 local bias R3 IP kBias 輸入點sin波的中心偏移 local out R4 OP 輸出點sin波輸出 local ang R5 內部變數相位角65536=360deg local kAmp R6 1000 參數振幅值 local kFrq R7 1000 參數頻率值=655368000Hz local kTh R8 0 參數相角值360deg=256 local kBias R9 0 參數偏移值 data 11 模組變數區長度及初值 initial 啟動程序 WR ang0 WR out0 ang=out=0 RET timer 即時控制程序(8KHz) RD ang ADD (frq) WR ang ang+=frq SFR 8 ADD (th) AND 255 ACC=(ang256+th)amp0x00ff MUL (amp) SFR 8 ADD (bias) WR out out=ACCamp256+bias

59

RET

脈衝波產生器

outfrq

kBiasbias

ampkAmp

kFrqth

kThf=1TB

θ

A

pwm

kDutyduty

此模組會產生週期性的脈衝波方塊圖如下

其中

1脈衝波有五個參數其中振幅(A)頻率(F)相位(θ)和偏移(B)四個參數和正弦波

定義完全一樣另外再增加一個負載率(D) 2基本波形是從週期開始時為 1隔段時間後換為 0然後持續到週期結束再重新開始其中 1所佔有的比例就是負載率當 D=0時為 0而 D=255時為 100

3和其他參數類似負載率(D)以 duty為其輸入點而以 kDuty為其參數值

模組程式範例PLS_WAVEasm

local amp R0 IP kAmp 輸入點脈衝波的振幅 local frq R1 IP kFrq 輸入點脈衝波的頻率 local th R2 IP kTh 輸入點脈衝波的相角 local bias R3 IP kBias 輸入點脈衝波的中心偏移 local duty R4 IP kDuty 輸入點脈衝波的負載率 local out R5 OP 輸出點脈衝波輸出 local ang R6 內部變數相位角65536=360deg local kAmp R7 1000 參數振幅值 local kFrq R8 1000 參數頻率值=655368000Hz local kTh R9 0 參數相角值360deg=256 local kBias R10 0 參數偏移值 local kDuty R11 128 參數負載率100 =256 data 12 模組變數區長度及初值 initial 啟動程序 WR ang0 WR out0 ang=out=0 RET timer 即時控制程序(8KHz)

60

RD ang ADD (frq) WR ang ang+=frq SFR 8 ADD (th) AND 255 ACC=(ang256+th)amp0x00ff SUB (duty) RD (amp) JLT t1 RD 0 ACC=(amp0) t1 ADD (bias) WR out out=ACC+bias RET

IIR 一階濾波器

此模組執行一階的 IIR濾波器方塊圖如下

kau x

Z-1

+

+

-

+低通濾波器

高通濾波器dx lp

hp

濾波器參數的計算公式如下

1假設濾波器的頻寬為 hz則 ωn=hz628 2若系統頻率為 8KHz則抽樣週期 dT為 dT=dt8000 其中 dt為模組參數 3則濾波器參數為 ka=ωndT4096或是 =hzdt62880004096即 =hzdt32 4當 dt決定後所允許的訊號頻寬為(4000dt)換句話說訊號頻寬會因為 dt增加而下降

為了方便實驗的運用下面列出常用的參數對照表

濾波頻寬

(Hz)

10 20 50 100 200 500 1000 2000

訊號頻寬

(Hz)

400 800 2000 4000 4000 4000 4000 4000

模組參數 dt 10 5 2 1 1 1 1 1

模組參數 ka 320 320 320 320 640 1600 3200 6400

表格的運用方式如下

1首先決定濾波頻寬 2接著查表找出對映的參數 dt和 ka 3再查表得到對映的訊號頻寬以決定是否需要串接前級濾波器

61

模組程式範例IIR1_FILTERasm

local u R0 IP 輸入點濾波器輸入 local lp R1 OP 輸出點低通濾波器輸出 local hp R2 OP 輸出點高通濾波器輸出 local dt R3 1 參數抽樣週期 local ka R4 4096 參數增益 ka10=4096 local prd R5 內部變數抽樣週期用 data 6 模組變數區長度 initial 開機啟動程序 WR lp0 WR hp0 WR prd1 RET lp=hp=0prd=1 timer 即時控制程序 SUB prd1 JNZ b9 if (--prdgt0) return RD dt WR prd prd=dt RD (u) SUB lp WR hp hp=u-lp MUL ka SFR 12 ADD lp WR lp lp+=(hpka4096) b9 RET

資料蒐集模組

資料蒐集模組是一個非常特殊的模組專門配合 eTTY 程式中的示波器使用

模組程式範例DAS4asm

local cmd R0 0 紀錄命令0=停止1=前置記錄2=正觸發4=負觸發6=觸發記錄 local dt R1 1 抽樣週期每 dT抽樣一次 local tab R2 TP DAS表格啟始位址 local cnt R3 0 目前記錄點(0~255) local ch1 R4 0 定義頻道1的變數位址 local ch2 R5 0 定義頻道2的變數位址 local ch3 R6 0 定義頻道3的變數位址 local ch4 R7 0 定義頻道4的變數位址 local trg R8 0 定義觸發頻道的變數位址 local th R9 0 觸發準位 local tail R10 0 觸發後的抽樣個數 local buf R11 1 抽樣計數(1~dt) local pnt R12 表格位址計算pnt=tab+cnt4 local len R13 表格長度計算(0~256) data 14 定義模組變數區的長度 table tab 1024 定義表格的長度 initial 啟動程序 WR cmd0 RET cmd=0 timer 控制程序

62

ADD cmd0 JZ t9 if (cmd==0) return SUB buf1 JNZ t9 if (--buf)gt0) return RD dt WR buf dt=buf RD cnt ADD 1 AND 0xff WR cnt cnt=(cnt+1)amp0xff SFL 2 ADD tab WR pnt pnt=tab+cnt4 RD (ch1) WR (pnt) ADD pnt1 pnt++=ch1 RD (ch2) WR (pnt) ADD pnt1 pnt++=ch2 RD (ch3) WR (pnt) ADD pnt1 pnt++=ch3 RD (ch4) WR (pnt) pnt =ch4 RD cmd SUB 1 JZ t9 SUB 1 JZ t2 SUB 1 JZ t3 SUB 1 JZ t4 SUB 1 JZ t5 SUB 1 JZ t6 JR t7 t2 RD (trg) SUB th JGE t9 ADD cmd1 JR t9 wait trgltth t3 RD (trg) SUB th JLE t9 JR t6 wait trggtth t4 RD (trg) SUB th JLE t9 ADD cmd1 JR t9 wait trggtth t5 RD (trg) SUB th JGE t9 JR t6 wait trgltth t6 WR len0 WR cmd7 len=0cmd=7 t7 ADD len1 SUB tail JLT t9 WR cmd0 if ((++len)gt=0x80) cmd=0 t9 RET

與 DC 馬達控制相關的程式模組有以下 4個程式模組說明如下

(1)加減速控制模組 ACC_controlasm (2)光電盤輸入模組 POS_inputasm (3)PWM輸出模組 PWM_outputasm (4)PD控制模組 PD_controlasm

71加減速控制模組 此程式模組主要功能在於執行位置控制的加減速命令修正其數學模式採用 Lynn

濾波器的架構參見下圖

cmd

2

+

old Z -1

-

Z -1

Z -1

Z-1

Z-1x0 x1 x8 x9 x16

+ -

++

2

Z-1

Z-1 y1 y2

+

-

y0

+ +

sumZ-1

+164

12

out

dif

+

63

加減速控制模組方塊圖

其中

1Lynn 濾波器的階數固定成八階也就是 m=8其公式為 H(z) = (1-2Z-m+Z-2m)(1-2Z-1+Z-2)m2

2因為m=8所以m2=64因此最後計算低通濾波的部份時要先做除 64的運算 3因為低通濾波(lp)和 y0之間有 64倍的差異代表 y0y1y2的變化範圍比濾波器輸

入值要擴大許多例如輸入值在+-1000變化時y0y1y2很可能會在+-64000之間變化這範圍已經超出整數處理的範圍很可能會造成錯誤的計算結果

4所以在實驗時輸入值的變化範圍必須控制在+-500之間以保證計算的正確性 5對於 Lynn 濾波器當 m=8時其濾波器的頻寬固定為 1 kHzmdt也就是 dt=1時頻寬為 125 Hz dt=2時頻寬為 625Hz依此類推 6對於 Lynn 濾波器其濾波器的延遲固定為 m個抽樣週期因此設計 hp = x8 - lp 即可得到高通濾波器的對應結果 7其中乘 2和除 64的運算以移位運算取代所以整個程式中並無任何乘法運算 8Lynn 濾波器本身並不是穩定濾波器所以在程式啟動時必須確實的將所有狀態

(x0~x16)歸零否則會產生不穩定的狀態輸出

因為 Lynn濾波器中所有參數固定所以除了抽樣週期 dt 之外並無任何可調參數

抽樣週期 dt 可以控制頻寬dt 越大則濾波器頻寬越低

將步階命令值的輸出送入 Lynn 濾波器中經由低通濾波器的效應可以減緩命

令的變化程度達到加減速控制的目的以下為使用 Lynn 濾波器型式實現加減速控

制的組合語言程式列印 如欲更進一步瞭解 Lynn 濾波器與 FIR 數位濾波器之間的關係可以參考通訊實驗

四數位濾波器設計(FIR)中之說明

ACC_controlasm程式列印 local cmd R0 IP 輸入點位置命令

local out R1 OP 輸出點加減速處理後的位置命令

local dif R2 OP 輸出點位置微分命令

local axis R3 0 馬達編號0=X1=Y2=Z3=C

local old R4 內部變數微分計算用

local sumL R5 內部變數積分計算用

local sumH R6 內部變數積分計算用

local y0 R7 內部變數y(0~2)

local y1 R8 local y2 R9

local x0 R10 內部變數x(0~16)

local x1 R11 local x2 R12 local x3 R13 local x4 R14

local x5 R15 local x6 R16 local x7 R17 local x8 R18

local x9 R19 local x10 R20 local x11 R21 local x12 R22

local x13 R23 local x14 R24 local x15 R25 local x16 R26

64

data 27 模組變數區長度

initial 開機啟動程序

WR dif0 RD (cmd) WR out WR old dif=0 out=old=cmd

sumHL=cmd64

SFL 6 WR sumL RD out SFR 10 SGN 5 WR sumH

RPT 17 WR x00 RPT 3 WR y00 RET x[0~16]=0y[0~2]=0

timer 即時控制程序

RD (cmd) SUBX old WR x0 x0=cmd-old old=cmd

SUB x81 ADD x16 ADD y11 SUB y2 WR y0 y0=x0-2x8+x16+2y1-y2

SGN ADD sumL WR sumL RDH ADC sumH WR sumH sumHL+=y0

WRH RD sumL SFR 6 WR out out=sumHL64

RD y0 SGN SFR WR dif dif=y032mm

RD x0 RPT 16 RDX x1 x[i]=x[i-1] i=1~16

RD y0 RDX y1 WR y2 y[i]=y[i-1] i=1~2

b9 RET

72光電盤輸入模組

DC馬達的位置由光電盤量測之預設儲存於 0xac與 0xbe二個輸入埠位址中其中位址 0xac記錄 X軸馬達的位置位址 0xbe記錄 Y軸馬達的位置由於本實驗的DC馬達接在 Y軸的位置上因此程式中直接選用 Y軸的輸入 光電盤位置輸入的程式列印如下其中速度由位置的差分而得至於馬達的位置

則使用內部 2個 word加以記錄精度為 32位元 POS_inputasm程式列印 local spd R0 OP 輸出點速度量測值

local ang R1 OP 輸出點角度量測值

local angH R2 內部變數角度的 32 位元部分

local mode R3 0x308 模式選擇15MHzAB 相正反向輸入

local pht R4 0xac 輸入阜地址光電盤輸入(0xac)

local phtc R5 0xbe 輸入阜地址光電盤模式(0xbe)

local old R6 內部變數速度更新用

data 7 模組變數區長度

initial 開機啟動程序

RD mode WR (phtc) phtc=mode

RD (pht) WR old WR spd0 RET old=phtspd=0

timer 即時控制程序

RD (pht) SUBX old SGN 11 WR spd spd=(pht-old)old=pht

65

ADD ang WR ang angHL+=spd

RDH ADC angH WR angH

RET

73 PWM輸出控制模組 模組方塊

cmd PWM輸出

程式說明 1在開機時將切換保護時間寫到輸出阜 0xbc上其中切換保護值為 0~6360=5us 2在每次 timer interrupt時將 cmd訊號處理後寫到輸出阜 0xb8上

PWM_outputasm程式列印 local cmd R0 IP gnd 輸入點v相命令

local gain R1 4096 參數輸出增益1=4096

local bias R2 2048 參數輸出偏壓0=2048

local limit R3 4095 參數輸出極限1=4095

local zone R4 0x88f0 參數頻率=12KHz切換保護=5us

local pwm R5 0xb8 輸出阜地址PWM0 輸出(0xb8)

local mode R6 0xbc 輸出阜地址PWM 模式(0xbc)

local p0md R7 0xf8 輸出阜地址port0 模式(0xf8)

local gnd R8 0 輸入接地點

data 9 模組變數區長度

initial 開機啟動程序

RD bias WR (pwm) pwm=bias

RD 0xffff WR (p0md) set port0 mode

RD zone WR (mode) RET mode=zone

stop 關機保護程序

RD bias WR (pwm) RET pwm=bias

timer 即時控制程序

RD (mode) xor 1 and 1 WR (mode) trigger watch-dog

RD (cmd) MUL gain SFR 12 ADD bias ACC=(cmdgain4096)+bias

MAX 0 MIN limit WR (pwm) pwm=limit(ACC)

RET

66

74 PD 控制模組

PD控制的模組方塊參見圖二十一所示其中比例控制的部份直接由增益 kp加以調整微分控制的部份則由誤差的差分經增益 kd的調整而得

Σ+

-

cmd

fdk

err out

Σ

pk

dk

Σ

+

+

+

-

old1minusZ

PD控制器的方塊圖

PD_controlasm程式列印 local cmd R0 IP gnd 輸入點位置命令(可忽略)

local fdk R1 IP gnd 輸入點位置回授(可忽略)

local out R2 OP 輸出點用以控制速度迴路

local kp R3 256 參數增益 kp10=256

local kd R4 0 參數增益 kd10=256

local err R5 0 內部變數

local old R6 0 內部變數

local gnd R7 0 無輸入時的短路點

data 8 模組變數區長度

initial 開機啟動程序

WR out0 WR old0 RET out=old=0

timer 即時控制程序

RD (cmd) SUB (fdk) PRTF WR err

MUL kp SFR 8 P=(cmd-fdk)kp256

RDS err SUBX old MUL kd SFR 8 D=(err-old)kd256

ADDS

WR out out=P+D

RET

程式中預設增益值的 10以整數值 256為基底因此使用 SFR 8的指令加以調

整另外在在計算微分項的程式部份用到 SUBX old的指令其詳細的暫存器動作如

下 參考 piDSP的指令說明SUBX指令將總共用到 3個時序參考錯誤 找不到參照

67

來源在時序 1時將原先 AX的資料拷貝一份到 HX中時序 2時正式執行減

法的動作所以 AX暫存器中的內容會變成 err-old時序 3時DSP會將存放在 HX暫存器中的內容拷貝一份到 old的記憶體中也就是經由 SUBX此一精簡指令將

同時完成計算差分所需要的相減與資料疊代的動作有效的利用 piDSP控制器 DSP核心的精簡指令將可以大幅提昇系統的計算速度

HX AXoldSUBXerr err

old

err

errerr olderr minus

1_err

errerr olderr minus err

1_err

1

2

3

SUBX的指令時序與暫存器變化

68

8附錄快速安裝說明

光纖網路通訊 FPGA 發展系統 (適用於 WIN-XP200098 系統)

快速安裝說明

26Pin 負載輸出入埠

雙電源︵5

12

伏︶輸入埠

單電源︵5

伏︶輸入埠

USB

光纖線輸

號 光纖線輸出埠

入 傳 埠

首先將光碟片 RFFPGA 目錄檔案拷貝在您工作硬碟裡面

第一次安裝時先將 USB 傳輸線接上電腦主機將電源供應器接上 FPGA 模組此時電

腦會出現安裝 USB-Serial 驅動程式選擇從清單安裝此驅動程式放置在光碟片

RFFPGA-USBdrive 選擇您目前安裝系統

可選擇 WIN-98WIN-MEWIN-2000WIN-XP 系統配合您現在工作電腦作業系統

69

注意一般電腦 USB 埠很多插口當您安裝驅動程式時是配合您當時插入之埠

下次如您插入不同接口埠時電腦會再次要求安裝驅動程式這是正常現象請再次安

裝驅動程式否則無法使用

FPLC 操作

首先進入 RFFPGA裡子目錄 testASM直接點選 fPLCexe 出現下面操作畫面(也可直接將

此檔案放置桌面直接點選)

(或者選擇 File 再執行 Setuphellip 選擇您要執行 CAI 檔)

70

進入下面操作畫面 首先使用滑鼠在 FPGA下載按鈕單擊動作使 FPGA變成 DSP晶片 實驗一至實驗五皆為使用 DSP組合語言設計程式其原始程式分別為 testASM1至testASM5可使用 texPad 開啟與編輯程式內容 實驗三與實驗五多有 IO控制動作 當選擇實驗三時出現下面畫面

71

eM_USB 模組

數字型 LED

0 1 2 34 5 6 78 9 A BC D E F

燈號型 LED

44 鍵盤

ADC0 ADC1 DAC0 DAC1

LED 選擇KEY 選擇

模 式 1

0123

注意操作畫面 3與 4 說明開關與按鍵選擇位置後選擇程式下載再按程式啟動如您

按下 0-3按鍵時燈號型 LED會有不同方向閃爍顯示程式停止時結束所有 IO控制動作再按回首頁選擇其他實驗 實驗四與實驗五

模式3

0 1 2 34 5 6 78 9 A BC D E F

按照上面開關選擇直接操作如果以上實驗皆能按照正常操作表示您光纖網路通訊

FPGA發展模組以能正常使用 注意 開機與關機動作順序如下

開機電腦啟動 --- eM_USB 模組電源接上 --- USB 接上電腦 ---

啟動 FPLC 軟體 --- 下載 FPGA 程式

關機關閉 FPLC 軟體 --- eM_USB 模組電源拔掉 --- 拔掉電腦 USB 接頭 ---關掉

電腦

如果以上順序有亂可能造成 USB 找不到驅動造成無法下載經過幾次測試還是

無法下載建議重新啟動電腦主機按照正確步驟操作

72

FPGA 下載操作

進入 FPLC 操作系統按照下列步驟選擇節點模組與下載 bit FPGA 檔案

在 VHDLDEMO 子目錄下您可以選擇您目前 FPGA 種類型號在此型號下我們已將 VHDL

與數位邏輯設計課本範例全部放於此處

73

光纖網路連線 FPGA 下載操作

首先利用光纖線將 eM_USB0 模組光纖輸出埠接至 eM_USB1 模組光纖輸入埠以此

類推最後再將最後 eM_USBN 模組光纖輸出埠接至 eM_USB0 模組光纖輸入埠配置

如附圖方式

個人電腦(Windows) eM_USB模組

0USB

eM_USB模組1

光纖網路

eM_USB模組2

eM_USB模組N

配置完成後進入 FPLC 系統首先必須先將 Node00 下載在 testASM 子目錄裡

piDSPv0bit 檔讓 eM_USB0 模組 FPGA 具備 DSP 功能才能執行光纖網路通訊

操作如下

此時您就可以選擇分別下載至各模組 FPGA 檔 bit

74

安裝 FPLC 注意事項

當您進入 FPLC 時

按 FILE 選擇 programhellip 選擇檔案為 exp_dcmplc 出現下面畫面

正常顯示畫面為

75

DOS 環境操作

在 PC 端的操作是在 Windows 環境中的 DOS 視窗中執行指令範例如下

eFPGA progNETbit 下載 FPGA電路至網路節點0(即 USB節點)中 eFPGA testLEDbit 1 下載 FPGA電路至網路節點1中

對於單一節點的控制程序如下

1將 eM_USB模組連結個人電腦的 USB端 2eM_USB模組開機 3執行下載指令即可 eFPGA xxxxbit 4若要更改 FPGA電路只要重新執行下載指令即可

對於多個網路節點的控制程序如下

1第一組 eM_USB模組連結個人電腦的 USB端再以光纖網路依序其他各節點 2連接 USB界面者為模組0從光纖發射端連接出去的模組為1依此類推 3將所有 eM_USB模組開機 4執行下載指令如下 eFPGA progNETbit 模組0必須先下載指定的 FPGA電路 eFPGA xxxxbit 1 再依序下載其他網路模組的 FPGA電路 eFPGA yyyybit 2 eFPGA zzzzbit 最後再重新下載模組0的 FPGA電路 5換句話說模組0必須先執行 progNETbit讓光纖網路接受 FPGA控制後才能透過光纖網路下載至其他節點等全部網路節點下載完畢後再將模組0的 FPGA重新下載讓模組0也可自由執行任意的 FPGA電路

6若要更改某一個網路節點中的 FPGA電路只要重新執行下述指令 eFPGA progNETbit 模組0必須先下載指定的 FPGA電路 eFPGA yyyybit 2 下載指定網路模組的 FPGA電路 eFPGA zzzz bit 最後再重新下載模組0的 FPGA電路 換句話說除非模組0中的 FPGA已經包括光纖網路管理電路否則一定要先在

模組0中下載網路管理電路後才能下載指定網路節點的 FPGA電路

76

光纖網路通訊 FPGA 發展系統

系統配置

光纖網路通訊 FPGA 發展系統的系統配置圖如下

個人電腦(Windows) eM_USB模組

0USB

eM_USB模組1

光纖網路

eM_USB模組2

eM_USB模組N

其中

1基本模組為 eM_USB模組可用 USB界面和個人電腦連線並提供 USB對光纖網路的轉換功能使得個人電腦可以獨立控制光纖網路中的每個網路節點

2eM_USB模組也可以作為光纖網路中的網路節點透過光纖網路而接受個人電腦的

監控 3就個人電腦而言不論是 USB界面直接連結或是以光纖網路間接連結的 eM_USB模組都是可以直接監控的網路節點最多可以同時控制一個 USB節點和 30個網路節點

4對於每一個網路節點個人電腦都可執行 eM_USB模組中 FPGA的電路下載工作並在適當的 FPGA電路配合下可執行 eM_USB模組中 FPGA內部電路的讀寫控制 5透過適當的 FPGA電路設計各網路節點都可透過光纖網路和其他任何網路節點

作同步通訊執行 FPGA內部記憶體的資料交換資料交換頻率可達 1KHz以上

77

網路模組配置

每個網路模組的標準配置圖如下

eM_USB模組光纖網路

USB eM_FPGA卡

eM_DEMO模組

eM_EXP實驗模組

DC電源

其中

1網路模組以 eM_USB模組為主提供基本的 USB界面和光纖網路連線 2eM_USB模組中的 FPGACPLD採用插卡型式可選擇不同的 eM_FPGA卡包括

eM_2V1K卡可選用 Virtex系列的 XC2V250和 XC2V1000 eM_3S1K卡可選用 Spartan3系列的 XC3S400XC3S1000和 XC3S1500 eM_3S50卡可選用 Spartan3系列的 XC3S50XC3S200和 XC3S400 eM_95XL卡可選用 9500XL系列的 XC95144XL和 XC95288XL 3eM_USB模組中的對外連線有兩種一種是 26P接頭用以連接既有的各種實驗模

組另一種是兩組 50P接頭將 FPGA中各接腳引出用以連接專題實驗 4eM_DEMO模組就是插上 50P接頭的教學模組其中包括 LED 數字顯示和 44鍵盤也具備兩組的 ADC和兩組的 DAC接頭提供類比訊號的測試工具

常用的實驗組合包括

1精簡組合包括(eM_USB+eM_FPGA)提供基本的網路節點適用於專題實驗 2標準組合包括(eM_USB+eM_FPGA+eM_DEMO)提供基礎 FPGA設計的教學實驗

3實驗組合包括(eM_USB+eM_FPGA+eM_DEMO+eM_EXP)提供進階的 FPGA實驗可依需求選用不同的實驗模組

78

eM_USB 模組

eM_USB 模組的電路配置圖如下

TxRx

DCPower

USB

JP2

JP3

光纖界面

外加電源

PC連線

JP1

eM_FPGA模組

FT232 CPLD FlashROM

SRAM

10cm

6cm

JP4

其中

1對外的連線接頭包括 DC電源 可選擇單電源(5V)或是多電源(5V+12V-12V)兩種 USB界面 直接連接個人電腦 光纖界面連接光纖網路 2實驗界面包括 JP1負責內部 CPLD的電路下載 JP2JP3兩組 50P的擴張用接頭 JP4 標準 26P接頭用以連接各種實驗模組 3內部的電路配置包括 A以 SO-DIMM接頭連接各種 eM_FPGA卡 B內附 EEPROMFlashROM和 SRAM提供 FPGA作應用測試 C以一顆 FT232BM作為 USB界面解碼而以一顆 CPLD作為光纖網路解碼 D提供各種 eM_FPGA卡的電路下載功能 4內附五顆 LED由上而下依序為 usbLED指示 USB界面的讀寫狀態 tstLED可由 FPGA電路自行定義 stsLED可由 FPGA電路自行定義 RxLED 可由 FPGA電路自行定義 TxLED 可由 FPGA電路自行定義

79

外部接腳定義

外部接頭的接點順序圖示如下

上視圖

JP11 9 JP4

126225

JP31

50249

JP21

50249

而各接頭的接點定義如下

JP1 JP4 JP2 JP3 1+33V 1+12V 2+12V 1 GND 2 GND 1 GND 2 GND 2GND 3 ADC 4 DAC 3POWER 4ALARM 3 +5V 4 +5V 3nc 5 yPB2 6 yPB3 5RxNET 6TxNET 5+12V 6+12V 4TCK 7 yPB1 6 yPB4 7RxUSB 6TxUSB 7-12V 6-12V 5nc 9 yPB0 10yPB5 9RxCAN 10TxCAN 9 ADC 10 DAC 6TDO 11yPB6 12yPB7 11P0D0 12P0D1 11P1D0 12P1D1 7TDI 13yGND 14yPC3 13P0D2 14P0D3 13P1D2 14P1D3 8nc 15yPC2 16yPC1 15P0D4 16P0D5 15P1D4 16P1D5 9TMS 17yPC0 18yPA0 17P0D6 18P0D7 17P1D6 18P1D7 19yPA1 20yPA2 19P0D8 20P0D9 19P1D8 20P1D9 21yPA3 22GND 21P0D10 22P0D11 21P1D10 22P1D11 23GND 24+5V 23P0D12 24P0D13 23P1D12 24P1D13 25+5V 26nc 25P0D14 26P0D15 25P1D14 26P1D15 27P2D0 28P2D1 27PxA0 28PxA1 29P2D2 30P2D3 29PxA2 30PxA3 31P2D4 32P2D5 31PxA4 32PxA5 33P2D6 34P2D7 33PxA6 34PxA7 35P2D8 36P2D9 35PxB0 36PxB1 37P2D10 38P2D11 37PxB2 38PxB3 39P2D12 40P2D13 39PxB4 40PxB5 41P2D14 42P2D15 41PxB6 42PxB7 43ADC0 44ADC1 43PxC0 44PxC1 45ADC2 46ADC3 45PxC2 46PxC3 47ADC4 48ADC5 47PxC4 48PxC5 49DAC0 50DAC1 49PxC6 50PxC7

80

eM_FPGA 模組

在各種 eM_FPGA 模組中FPGA 對外電路的標準配置圖如下

24576MHz

FlashROM

26PSRAM

EEPROM

mD[8]

yPA[4]

FPGACPLD

mA[19]mRDmWRmCSeeCKeeCSeeDIeeDO

光纖界面 RxNETTxNET

USB 界面 RxUSBTxUSBCLK24MPOWERALARM

LED

tstLEDstsLEDRxLEDTxLED

yPB[8]yPC[4]

ADCDAC

ADC[8]

實驗模組

ADC[2]

DAC[2]

xPA[4]

xPB[8]

xPC[4]

基礎實驗

其中

1FPGACPLD可以選擇下述幾種 XC2V250XC2V1000 採用 eM_2V1K模組其中 FPGA為 FG456包裝 XC3S400XC3S1000XC3S1500採用 eM_3S1K模組其中 FPGA為 FG456包裝 XC3S400XC3S1000XC3S1500採用 eM_3S1K模組其中 FPGA為 FG456包裝 XC3S50XC3S200XC3S400 採用 eM_3S50模組其中 FPGA為 TQ144包裝 XC95144XLXC95288XL 採用 eM_95XL模組其中 CPLD為 TQ144包裝 2採用 FG456包裝者可以控制所有的 IO界面 3採用 TQ144包裝者只是不能控制 RAM和 FlashROM而可以控制其他所有的界面 4所有 FPGA模組都可自由選擇由 USB界面或是由光纖界面下載電路但是 CPLD模組只能固定由 USB界面下載電路

5所有 FPGACPLD模組都可透過 26P接頭連接既有的各種實驗模組

81

FPGA 接腳對照表

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

mD0 XD6 mD0 A17 C13 -- -- mD1 XD7 mD1 B17 D12 -- -- mD2 XD8 mD2 C17 D11 -- -- mD3 XD9 mD3 D17 C11 -- -- mD4 XD10 mD4 E17 D10 -- -- mD5 XD11 mD5 E16 C10 -- -- mD6 XD12 mD6 E14 D9 -- -- mD7 XD13 mD7 E13 D7 -- -- mA0 XD14 mA0 D13 C7 -- -- mA1 XD15 mA1 C13 D6 -- -- mA2 XA0 mA2 V5 C3 -- -- mA3 XA1 mA3 U5 C4 -- -- mA4 XA2 mA4 Y2 D3 -- -- mA5 XA3 mA5 Y1 D4 -- -- mA6 XA4 mA6 V4 E3 -- -- mA7 XA5 mA7 V3 E4 -- -- mA8 XA6 mA8 W2 F3 -- -- mA9 XA7 mA9 W1 F4 -- -- mA10 XA8 mA10 T2 G6 -- -- mA11 XA9 mA11 T1 K3 -- -- mA12 XA10 mA12 R4 K10 -- -- mA13 XA11 mA13 R3 L3 -- -- mA14 XA12 mA14 R2 L4 -- -- mRD XRD mRD R1 D5 -- -- mWR XWR mWR P6 C6 -- --

POWER P0A0 POWER B4 B20 P1 P5 ALARM P0A1 ALARM A4 A19 P2 P6 RxNET P0A2 RxNET C4 B19 P4 P7 TxNET P0A3 TxNET C5 A18 P5 P9 RxUSB P0B0 RxUSB B5 A15 P6 P10 TxUSB P0B1 TxUSB A5 B15 P7 P11 RxCAN P0B2 RxCAN D6 A14 P8 P12 RxCAN P0B3 TxCAN C6 B14 P10 P13

CLK24M CLK24M CLK24M E12 B12 P124 P38

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

PWM0H P3A0 P0D0 E6 A8 P21 P23 PWM0L P3A1 P0D1 E5 B8 P23 P24 PWM1H P3A2 P0D2 C2 B6 P24 P25 PWM1L P3A3 P0D3 C1 A5 P25 P26 PWM2H P3A4 P0D4 D2 B5 P26 P27

82

PWM2L P3A5 P0D5 D1 A4 P27 P28 PWMenb P3A6 P0D6 E4 B4 P28 P30 PHT1Z P3A7 P0D7 E3 A3 P30 P31 PHT1A P3B0 P0D8 G2 C1 P31 P32 PHT1B P3B1 P0D9 G1 C2 P32 P33 PHT0A P3B2 P0D10 H5 D1 P33 P34 PHT0B P3B3 P0D11 J6 D2 P35 P35 AMP0 P3B4 P0D12 H4 E1 P36 P39 AMP1 P3B5 P0D13 H3 E2 P40 P40 AMP2 P3B6 P0D14 H2 F2 P41 P41 AMP3 P3B7 P0D15 H1 G1 P44 P43 eeSK P0C3 P1D0 C10 B9 P20 P22 eeCS P0C2 P1D1 D10 A9 P18 P21 eeDI P0C1 P1D2 F10 B10 P17 P20 eeDO P0C0 P1D3 E10 B11 P15 P19 ssCK P0B7 P1D4 E8 A11 P14 P17 ssCS P0B6 P1D5 E7 A12 P13 P16 ssDI P0B5 P1D6 A6 B13 P12 P15 ssDO P0B4 P1D7 B6 A13 P11 P14

ppCLK P3C0 P1D8 K4 G2 P46 P44 ppDIN P3C1 P1D9 K3 K1 P47 P45 TxD P3C2 P1D10 K2 K2 P50 P46 RxD P3C3 P1D11 K1 L1 P51 P48

tstLED P3C4 P1D12 L5 L2 P52 P49 stsLED P3C5 P1D13 L4 M1 P53 P50 RxLED P3C6 P1D14 L3 M2 P55 P51 TxLED P3C7 P1D15 L2 N1 P56 P52

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

xPA0 P2A0 P2D0 AA3 N2 P59 P53 xPA1 P2A1 P2D1 Y4 T1 P60 P54 xPA2 P2A2 P2D2 AA4 T2 P63 P56 xPA3 P2A3 P2D3 AB4 U2 P68 P57 xPC0 P2A4 P2D4 W5 V1 P69 P58 xPC1 P2A5 P2D5 Y5 V2 P70 P59 xPC2 P2A6 P2D6 AA5 W1 P73 P60 xPC3 P2A7 P2D7 AB5 W2 P74 P61

-- P2B0 P2D8 V6 Y1 P76 P64 -- P2B1 P2D9 V7 Y2 P77 P66 -- P2B2 P2D10 W6 AA3 P78 P68

mCS P2B3 P2D11 Y6 AB4 P79 P69 mA15 P2B4 P2D12 V9 AA4 P80 P70 mA16 P2B5 P2D13 V10 AB5 P82 P71 mA17 P2B6 P2D14 W10 AA5 P83 P74 mA18 P2B7 P2D15 Y10 AA6 P84 P75 CS0 P2C0 ADC0 AA10 AB8 P85 P76

83

SDIN0 P2C1 ADC1 AB10 AA8 P86 P77 CS1 P2C2 ADC2 U10 AB9 P87 P78

SDIN1 P2C3 ADC3 U11 AA9 P89 P79 SCLK P2C4 ADC4 V11 AB10 P90 P80 CS2 P2C5 ADC5 W11 AA10 P92 P81

SDOUT P2C6 ADC6 Y11 AB11 P93 P82 LDAC P2C7 ADC7 AA11 AA11 P95 P83

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

xPB0 P1A0 PxA0 M1 M3 P135 P85 xPB1 P1A1 PxA1 M2 M4 P132 P86 yPB2 P1A2 PxA2 M3 N3 P131 P87 yPB3 P1A3 PxA3 M4 N4 P130 P88 yPB1 P1A4 PxA4 M5 T4 P129 P91 yPB4 P1A5 PxA5 M6 T5 P128 P92 yPB0 P1A6 PxA6 N1 U3 P127 P93 yPB5 P1A7 PxA7 N2 U4 P125 P94 yPB6 P1B0 PxB0 U13 V3 P119 P95 yPB7 P1B1 PxB1 V13 V4 P118 P96 xPB2 P1B2 PxB2 W13 W3 P116 P97 xPB3 P1B3 PxB3 Y13 W4 P113 P98 xPB4 P1B4 PxB4 AA13 Y3 P112 P100 xPB5 P1B5 PxB5 AB13 Y4 P96 P101 yPC3 P1B6 PxB6 U12 Y5 P97 P102 yPC2 P1B7 PxB7 V12 W5 P98 P103 yPC1 P1C7 PxC0 AB17 W11 P108 P113 yPC0 P1C6 PxC1 AA17 Y11 P107 P112 yPA0 P1C5 PxC2 Y17 W10 P105 P111 yPA1 P1C4 PxC3 W17 Y10 P104 P110 yPA2 P1C3 PxC4 AB18 W9 P103 P107 yPA3 P1C2 PxC5 AA18 W8 P102 P106 xPB6 P1C1 PxC6 Y18 W6 P100 P105 xPB7 P1C0 PxC7 W18 Y6 P99 P104

84

eM_DEMO 模組

eM_DEMO 模組的電路配置圖如下

eM_USB 模組

數字型 LED

0 1 2 34 5 6 78 9 A BC D E F

燈號型 LED

44 鍵盤

ADC0 ADC1 DAC0 DAC1

LED 選擇KEY 選擇

其中

1eM_DEMO模組的基本功能包括 A將 xPAxPBxPC等 16個 IO訊號引出控制 LED和鍵盤電路 B將 ADDA訊號引出並放大成+-10V的工作範圍 2LED和鍵盤可以選擇三種模式由 LED和 KEY 兩組開關作選擇圖示如下

模式1

0123

模式2 模式3

0 1 2 34 5 6 78 9 A BC D E F

0123

3模式14鍵輸入並搭配 16點的 LED燈號顯示其中 16點 LED分別對映到 xPA[0~3]xPB[0~7]和 xPC[0~3] 4組按鍵分別對映到 xPC[0~3] 4模式24鍵輸入並搭配四個 7段式數字顯示其中 數字顯示由 xPA[0~3]作數字掃瞄而由 xPB[0~7]作 7段式 LED控制 4組按鍵 分別對映到 xPC[0~3] 5模式316鍵輸入並搭配四個 7段式數字顯示其中 數字顯示由 xPA[0~3]作數字掃瞄而由 xPB[0~7]作 7段式 LED控制 16組按鍵由 xPA[0~3]作鍵盤掃瞄而由 xPC[0~3]作鍵盤讀取 6根據VHDL與數位邏輯設計的章節其中 第 1章至 10章的實驗採用模式1而 第 11章實驗採用模式2而 第 12章之後的實驗都採用模式3

85

FPGA UCF 定義

eM_3S1K 模組

NET CLK LOC = B12

NET XAlt0gt LOC = N2

NET XAlt1gt LOC = T1

NET XAlt2gt LOC = T2

NET XAlt3gt LOC = U2

NET XBlt0gt LOC = M3

NET XBlt1gt LOC = M4

NET XBlt2gt LOC = W3

NET XBlt3gt LOC = W4

NET XBlt4gt LOC = Y3

NET XBlt5gt LOC = Y4

NET XBlt6gt LOC = W6

NET XBlt7gt LOC = Y6

NET XClt0gt LOC = V1

NET XClt1gt LOC = V2

NET XClt2gt LOC = W1

NET XClt3gt LOC = W2

NET YAlt0gt LOC = W10

JP4 接頭

NET YAlt1gt LOC = Y10

NET YAlt2gt LOC = W9

NET YAlt3gt LOC = W8

NET YBlt0gt LOC = U3

NET YBlt1gt LOC = T4

NET YBlt2gt LOC = N3

NET YBlt3gt LOC = N4

NET YBlt4gt LOC = T5

NET YBlt5gt LOC = U4

NET YBlt6gt LOC = V3

NET YBlt7gt LOC = V4

NET YClt0gt LOC = Y11

NET YClt1gt LOC = W11

NET YClt2gt LOC = W5

NET YClt3gt LOC = Y5

在光碟片中 RFFPGAVHDLDEMOBIT3S1K 裡有 VHDL 與數位邏輯設計書本範例原始檔與合成檔

86

eM_3S50 模組

NET CLK LOC = P124

NET XAlt0gt LOC = P59

NET XAlt1gt LOC = P60

NET XAlt2gt LOC = P63

NET XAlt3gt LOC = P68

NET XBlt0gt LOC = P135

NET XBlt1gt LOC = P132

NET XBlt2gt LOC = P116

NET XBlt3gt LOC = P113

NET XBlt4gt LOC = P112

NET XBlt5gt LOC = P96

NET XBlt6gt LOC = P100

NET XBlt7gt LOC = P99

NET XClt0gt LOC = P69

NET XClt1gt LOC = P70

NET XClt2gt LOC = P73

NET XClt3gt LOC = P74

NET YAlt0gt LOC = P105

JP4 接頭

NET YAlt1gt LOC = P104

NET YAlt2gt LOC = P103

NET YAlt3gt LOC = P102

NET YBlt0gt LOC = P127

NET YBlt1gt LOC = P129

NET YBlt2gt LOC = P131

NET YBlt3gt LOC = P130

NET YBlt4gt LOC = P128

NET YBlt5gt LOC = P125

NET YBlt6gt LOC = P119

NET YBlt7gt LOC = P118

NET YClt0gt LOC = P107

NET YClt1gt LOC = P108

NET YClt2gt LOC = P98

NET YClt3gt LOC = P97

在光碟片中 RFFPGAVHDLDEMOBIT3S200 裡有VHDL與數位邏輯設計書本範例原始檔與合成檔

87

eM_95XL 模組

NET CLK LOC = SPIN38

NET XAlt0gt LOC = SPIN53

NET XAlt1gt LOC = SPIN54

NET XAlt2gt LOC = SPIN56

NET XAlt3gt LOC = SPIN57

NET XBlt0gt LOC = SPIN85

NET XBlt1gt LOC = SPIN86

NET XBlt2gt LOC = SPIN97

NET XBlt3gt LOC = SPIN98

NET XBlt4gt LOC = SPIN100

NET XBlt5gt LOC = SPIN101

NET XBlt6gt LOC = SPIN105

NET XBlt7gt LOC = SPIN104

NET XClt0gt LOC = SPIN58

NET XClt1gt LOC = SPIN59

NET XClt2gt LOC = SPIN60

NET XClt3gt LOC = SPIN61

NET YAlt0gt LOC = SPIN111

JP4 接頭

NET YAlt1gt LOC = SPIN110

NET YAlt2gt LOC = SPIN107

NET YAlt3gt LOC = SPIN106

NET YBlt0gt LOC = SPIN93

NET YBlt1gt LOC = SPIN91

NET YBlt2gt LOC = SPIN87

NET YBlt3gt LOC = SPIN88

NET YBlt4gt LOC = SPIN92

NET YBlt5gt LOC = SPIN94

NET YBlt6gt LOC = SPIN95

NET YBlt7gt LOC = SPIN96

NET YClt0gt LOC = SPIN112

NET YClt1gt LOC = SPIN113

NET YClt2gt LOC = SPIN103

NET YClt3gt LOC = SPIN102

在光碟片中 RFFPGAVHDLDEMOSVF95288XL 裡有VHDL與數位邏輯設計書本範例原始檔與合成

檔案

88

eM_FPGA 模組

NET CLK LOC = E12

NET XAlt0gt LOC = AA3

NET XAlt1gt LOC = Y4

NET XAlt2gt LOC = AA4

NET XAlt3gt LOC = AB4

NET XBlt0gt LOC = M1

NET XBlt1gt LOC = M2

NET XBlt2gt LOC = W13

NET XBlt3gt LOC = Y13

NET XBlt4gt LOC = AA13

NET XBlt5gt LOC = AB13

NET XBlt6gt LOC = Y18

NET XBlt7gt LOC = W18

NET XClt0gt LOC = W5

NET XClt1gt LOC = Y5

NET XClt2gt LOC = AA5

NET XClt3gt LOC = AB5

NET YAlt0gt LOC = Y17

JP4 接頭

NET YAlt1gt LOC = W17

NET YAlt2gt LOC = AB18

NET YAlt3gt LOC = AA18

NET YBlt0gt LOC = N1

NET YBlt1gt LOC = M5

NET YBlt2gt LOC = M3

NET YBlt3gt LOC = M4

NET YBlt4gt LOC = M6

NET YBlt5gt LOC = N2

NET YBlt6gt LOC = U13

NET YBlt7gt LOC = V13

NET YClt0gt LOC = AA17

NET YClt1gt LOC = AB17

NET YClt2gt LOC = V12

NET YClt3gt LOC = U12

在光碟片中 RFFPGAVHDLDEMOBIT2V250 裡有VHDL與數位邏輯設計書本範例原始檔與合成檔

89

Page 43: RFFPGA 直流馬達實驗手冊juniortek.com.tw/program/manual/RF-DC-mal.pdf · em_demo模組 em_dcm 直流伺服馬達 dc電源 rffpga 系統的直流馬達實驗規劃 其中包括:

直流馬達之閉迴路速度控制響應圖

43

63 實驗 3-閉迴路的位置控制 實驗說明為了觀測閉迴路的位置控制響應將直流馬達的回授改為位置訊號

建立下面的測試方塊圖 方塊圖中的模組功能說明如下

1用 fg1產生測試用的方波位置命令 2將方波位置命令和位置回授訊號送到 PD控制器方塊中產生電壓控制訊號再透過 io2模組將訊號送出到伺服介面驅動馬達轉動

對應之 plc檔程式說明(exp_angleplc) echo off 畫面顯示開始

run dsp 0 選擇 DSP1

run stop run reset 既有程式停止

run testDCMmem 下載指定程式

das 1 ampfg1out 0 1024 PWM 波形 Volt 設定 DAS 頻道1

das 2 ampft1lp 0 1024 馬達模擬 Volt 設定 DAS 頻道2

das 3 ampio1spd 0 1024 馬達速度 Volt 設定 DAS 頻道3

das 4 ampio1ang 0 1024 馬達角度 Volt 設定 DAS 頻道4

plot select 0 設定示波器頁數

plot xunit 100000 0 設定示波器 X軸

plot yunit 1 1000 -300 設定示波器 Y1 軸

plot yunit 2 1000 -100 設定示波器 Y2 軸

plot yunit 3 20 100 設定示波器 Y3 軸

plot yunit 4 1000 300 設定示波器 Y4 軸

plot trigger 1 0 1 10 設定示波器觸發

44

plot scope 9 1 2 3 4 設定示波器顯示

module io2 設定 io2 模組

s cmd ampcn2out

module fg1 設定 fg1 模組

s kAmp 1000 s kFrq 75

module cn2 設定 cn1 模組

s cmd ampfg1out s fdk ampio1ang s kp 0x300 s kd 0x4000

module ft1 設定 ft1 模組

s u ampfg1out s dt 2 s ka 320

module io3 設定 io3 模組

s led ampfg1out

module 回復預設模組

run 1khz 設定抽樣頻率為 4KHz

run start DSP 開始執行

das stop pause 1 DAS 啟動 das start DAS 啟動

echo on 回復正常訊息顯示

CAI操控設計畫面規劃如下(EXP_angleCAI) page 1 畫面設計

45

page 2 與 page 3 畫面設計與實驗一 page 2 與 page 3相同畫面 page 4 畫面設計與實驗二 page 4 畫面 方塊的參數設定 延續上一實驗的說明使用者可以調整 PD控制器中的 kp和 kd值以調整系統之

響應 實測響應圖

訊 號 說 明 訊 號 說 明 ch1 方波產生器產生之位置命令 ch3 馬達角速度訊號 ch2 馬達角位置 ch4 Pd控制器輸出之電壓訊號

46

直流馬達之閉迴路位置控制響應圖

47

64 實驗 4-加減速的位置控制 實驗說明為避免方波命令的過於嚴苛在方波命令的輸出加入一加減速控制功

能方塊以減緩命令變化的幅度增加馬達運動的平順建立的測試方塊圖如下

方塊圖中的模組功能說明如下

1用 fg1產生測試用的方波位置命令 2將方波位置命令送到加減速控制方塊處理後產生新的位置命令再將新的位置命

令與位置回授訊號送到 PD控制器方塊中產生電壓控制訊號最後透過 io2模組將訊號送出到伺服介面驅動馬達轉動

對應之 plc檔程式說明(exp_accplc) echo off 畫面顯示開始

run dsp 0 選擇 DSP1

run stop run reset 既有程式停止

run testDCMmem 下載指定程式

das 1 ampfg1out 0 1024 PWM 波形 Volt 設定 DAS 頻道1

das 2 ampcn1out 0 1024 加速控制 Volt 設定 DAS 頻道2

das 3 ampio1spd 0 1024 馬達速度 Volt 設定 DAS 頻道3

das 4 ampio1ang 0 1024 馬達角度 Volt 設定 DAS 頻道4

plot select 0 設定示波器頁數

plot xunit 100000 0 設定示波器 X軸

plot yunit 1 2000 -300 設定示波器 Y1 軸

plot yunit 2 2000 -100 設定示波器 Y2 軸

plot yunit 3 50 100 設定示波器 Y3 軸

plot yunit 4 2000 300 設定示波器 Y4 軸

48

plot trigger 1 0 1 10 設定示波器觸發

plot scope 9 1 2 3 4 設定示波器顯示

module io2 設定 io2 模組

s cmd ampcn2out

module fg1 設定 fg1 模組

s kAmp 2000 s kFrq 150

module cn1 設定 cn1 模組

s cmd ampfg1out

module cn2 設定 cn2 模組

s cmd ampcn1out s fdk ampio1ang s kp 0x300 s kd 0x4000

module ft1 設定 ft1 模組

s u ampfg1out s dt 2 s ka 320

module io3 設定 io3 模組

s led ampfg1out

module 回復預設模組

run 1khz 設定抽樣頻率為 4KHz

run start DSP 開始執行

das stop pause 1 DAS 啟動 das start DAS 啟動

echo on 回復正常訊息顯示

CAI操控設計畫面規劃如下(EXP_accCAI) page 1 畫面設計

49

page 2 畫面設計與實驗一 page 2相同畫面 page 3 畫面設計與實驗二 page 4相同畫面

參數設定參考之前各實驗的說明可線上機動性的調整 PD控制器中的 kp和 kd值以調整系統之響應 實測響應圖

訊 號 說 明 訊 號 說 明 ch1 方波產生器產生之位置命令 ch3 馬達角位置 ch2 加減速模組輸出之位置命令 ch4 馬達角速度訊號

50

圖一 直流馬達經加減速控制後之閉迴路控制響應圖

51

65 實驗 5-正弦波的位置控制 實驗說明在本實驗中改變命令的波形由方波改變為正弦波並建立如下的測

試方塊圖與上一實驗相比較僅更改命令的波形產生方塊 方塊圖中的模組功能說明如下 1用 fg2產生測試用的弦波位置命令 2將弦波位置命令送到加減速控制方塊處理後產生新的位置命令再與 io1 讀入的位

置回授訊號送到 PD 控制器方塊中產生電壓控制訊號再透過 io2 模組將訊號送出到伺服介面驅動馬達轉動

對應之 plc檔程式說明(exp_sinplc) echo off 畫面顯示開始

run dsp 0 選擇 DSP1

run stop run reset 既有程式停止

run testDCMmem 下載指定程式

das 1 ampfg2out 0 1024 SIN 波形 Volt 設定 DAS 頻道1

das 2 ampcn1out 0 1024 加速控制 Volt 設定 DAS 頻道2

das 3 ampio1spd 0 1024 馬達速度 Volt 設定 DAS 頻道3

das 4 ampio1ang 0 1024 馬達角度 Volt 設定 DAS 頻道4

plot select 0 設定示波器頁數

plot xunit 100000 0 設定示波器 X軸

plot yunit 1 2000 -300 設定示波器 Y1 軸

plot yunit 2 2000 -100 設定示波器 Y2 軸

plot yunit 3 50 100 設定示波器 Y3 軸

plot yunit 4 2000 300 設定示波器 Y4 軸

plot trigger 1 0 1 10 設定示波器觸發

52

plot scope 9 1 2 3 4 設定示波器顯示

module io2 設定 io2 模組

s cmd ampcn2out

module fg2 設定 fg1 模組

s kAmp 2000 s kFrq 100

module cn1 設定 cn1 模組

s cmd ampfg2out

module cn2 設定 cn2 模組

s cmd ampcn1out s fdk ampio1ang s kp 0x300 s kd 0x4000

module ft1 設定 ft1 模組

s u ampfg2out s dt 2 s ka 320

module io3 設定 io3 模組

s led ampfg2out

module 回復預設模組

run 1khz 設定抽樣頻率為 4KHz

run start DSP 開始執行

das stop pause 1 DAS 啟動 das start DAS 啟動

echo on 回復正常訊息顯示

CAI操控設計畫面規劃如下(EXP_sinCAI) page 1 畫面設計

53

page 2 畫面設計 page 3 畫面設計與實驗二 page 4相同畫面

方塊的參數設定可調整 PD控制器中的 kp和 kd值以調整系統之響應 實測響應圖

訊 號 說 明 訊 號 說 明 ch1 弦波產生器產生之位置命令 ch3 馬達角位置訊號 ch2 加減速模組輸出之位置命令 ch4 馬達角速度訊號

54

直流馬達之閉迴路弦波加減速位置控制響應圖

55

7組合語言說明

本節將針對 DC馬達伺服控制實驗專用的程式模組進行功能與程式碼的說明其

有關於波形產生器與資料擷取模組等說明如下

SIN_waveasm 正弦波產生器 PWM_waveasm 方波產生器 IIR1_filterasm 一階濾波器 DAS4asm 資料蒐集模組

弦波產生器

此模組會產生週期性的正弦波方塊圖如下

outfrq

kBiasbias

ampkAmp

kFrqth

kThf=1TB

θ

A

其中

1正弦波有四個參數振幅(A)頻率(F)相位(θ)和偏移(B)其公式為 out = A sin(2πF t +θ) + B 2對於單純的正弦波產生器所對映的參數包括 kAmp 振幅值 kFrq 頻率值kFrq=655368000Hz其中 Hz的範圍為 0~4000例如 1000Hz =gt frq=8192 100Hz =gt frq=819 10Hz =gt frq=82 1Hz =gt frq=8 kTh 相角值0~255代表 0~360的相位當 th=0 時為正弦波 th=64 時為餘弦波 th=128時為反相波依此類推 kBias偏移值 3對於可調變的正弦波產生器其對映的輸入點為 amp 控制振幅的輸入點可產生調幅(AM)波形 frq 控制頻率的輸入點可產生調頻(FM)波形 th 控制相位的輸入點可產生調相(PM)波形 bias控制偏移的輸入點可產生雙頻混波(相加)波形 4若不使用調變功能時各個輸入點時的預設值為 amp 指向 kAmp 的位址 frq 指向 kFrq 的位址

56

th 指向 kTh 的位址 bias指向 kBias的位址

模組程式範例SIN_WAVEasm

local amp R0 IP kAmp 輸入點sin波的振幅 local frq R1 IP kFrq 輸入點sin波的頻率 local th R2 IP kTh 輸入點sin波的相角 local bias R3 IP kBias 輸入點sin波的中心偏移 local out R4 OP 輸出點sin波輸出 local tab R5 TP 表格指標指向 sin[256]的表格 local ang R6 內部變數相位角65536=360deg local kAmp R7 1000 參數振幅值 local kFrq R8 1000 參數頻率值=655368000Hz local kTh R9 0 參數相角值360deg=256 local kBias R10 0 參數偏移值 data 11 模組變數區長度及初值 initial 啟動程序 WR ang0 WR out0 ang=out=0 RET timer 即時控制程序(8KHz) RD ang ADD (frq) WR ang ang+=frq SFR 8 ADD (th) AND 255 ACC=sin(ang256+th) ADD tab WRH RDM table-look-up MUL (amp) SFR 12 ADD (bias) WR out out=ACCamp4096+bias RET table tab 256 sin[256]表格區10=4096 0 101 201 301 401 501 601 700 00~070deg 799 897 995 1092 1189 1285 1380 1474 08~0F 1567 1660 1751 1842 1931 2019 2106 2191 10~17 2276 2359 2440 2520 2598 2675 2751 2824 18~1F 2896 2967 3035 3102 3166 3229 3290 3349 20~27 3406 3461 3513 3564 3612 3659 3703 3745 28~2F 3784 3822 3857 3889 3920 3948 3973 3996 30~37 4017 4036 4052 4065 4076 4085 4091 4095 38~3F 4096 4095 4091 4085 4076 4065 4052 4036 40~4790deg 4017 3996 3973 3948 3920 3889 3857 3822 48~4F 3784 3745 3703 3659 3612 3564 3513 3461 50~57 3406 3349 3290 3229 3166 3102 3035 2967 58~5F

57

2896 2824 2751 2675 2598 2520 2440 2359 60~67 2276 2191 2106 2019 1931 1842 1751 1660 68~6F 1567 1474 1380 1285 1189 1092 995 897 70~77 799 700 601 501 401 301 201 101 78~7F 0 65435 65335 65235 65135 65035 64935 64836 80~87180deg 64737 64639 64541 64444 64347 64251 64156 64062 88~8F 63969 63876 63785 63694 63605 63517 63430 63345 90~97 63260 63177 63096 63016 62938 62861 62785 62712 98~9F 62640 62569 62501 62434 62370 62307 62246 62187 A0~A7 62130 62075 62023 61972 61924 61877 61833 61791 A8~A8 61752 61714 61679 61647 61616 61588 61563 61540 B0~B7 61519 61500 61484 61471 61460 61451 61445 61441 B8~BF 61440 61441 61445 61451 61460 61471 61484 61500 C0~C7270deg 61519 61540 61563 61588 61616 61647 61679 61714 C8~CF 61752 61791 61833 61877 61924 61972 62023 62075 D0~D7 62130 62187 62246 62307 62370 62434 62501 62569 D8~DF 62640 62712 62785 62861 62938 63016 63096 63177 E0~E7 63260 63345 63430 63517 63605 63694 63785 63876 E8~EF 63969 64062 64156 64251 64347 64444 64541 64639 F0~F7 64737 64836 64935 65035 65135 65235 65335 65435 F8~FF

就程式結構而言說明如下

timer 即時控制程序(8KHz) RD ang ADD (frq) WR ang ang+=frq SFR 8 ADD (th) AND 255 ACC=sin(ang256+th) ADD tab WRH RDM table-look-up MUL (amp) SFR 12 ADD (bias) WR out out=ACCamp4096+bias RET

1基本上我們以查表法計算 sin()其輸入θ的範圍為 0~255對映到 0~360deg其輸出 sin(θ)的範圍為+-4096對映到+-10的範圍

2建立一個內部變數 ang其範圍為 0~65535對映到 0~360的相位角 3每個timer程序都執行 ang+=frq的動作更新目前的相位角接著依照 ang的相位角查表得到 sin(ang256+th)值

4由於表格長度為 256-word所以必須將 ang256才能得到正確的對映關係而 th範圍為 0~255所以不需要像 ang一般的做額外處理

5sin()的範圍為(+1-1)而在表格中以(+4096~-4096)的型式記錄相當於 10=4096所以執行 Asin()時還要用 SFR12指令做4096的動作才能正確的取得輸出值

58

6就頻率輸入 frq而言其計算原則是將θ=ωt轉化成θ=Σ(ωdt)因為抽樣頻率

為 8KHz所以 dt=18000而得到 frq=655368000Hz公式其中 Hz為真正的頻率在 8KHz的抽樣頻率下其範圍為 0~4000

鋸齒波產生器

此模組會產生週期性的鋸齒波方塊圖如下

outfrq

kBiasbias

ampkAmp

kFrqth

kThf=1TB

θ

A

其中

1鋸齒波也有四個參數振幅(A)頻率(F)相位(θ)和偏移(B)和正弦波的定義完全一致唯一的差異是其輸出為鋸齒波而非正弦波

2基本波形是從週期開始時為 0一直遞增到週期結束時到達最高點然後立刻回歸

到 0重新開始 3以程式結構而論鋸齒波程式幾乎就是正弦波的相位計算部分只差沒有正弦波的

查表處理而已

模組程式範例SAW_WAVEasm

local amp R0 IP kAmp 輸入點sin波的振幅 local frq R1 IP kFrq 輸入點sin波的頻率 local th R2 IP kTh 輸入點sin波的相角 local bias R3 IP kBias 輸入點sin波的中心偏移 local out R4 OP 輸出點sin波輸出 local ang R5 內部變數相位角65536=360deg local kAmp R6 1000 參數振幅值 local kFrq R7 1000 參數頻率值=655368000Hz local kTh R8 0 參數相角值360deg=256 local kBias R9 0 參數偏移值 data 11 模組變數區長度及初值 initial 啟動程序 WR ang0 WR out0 ang=out=0 RET timer 即時控制程序(8KHz) RD ang ADD (frq) WR ang ang+=frq SFR 8 ADD (th) AND 255 ACC=(ang256+th)amp0x00ff MUL (amp) SFR 8 ADD (bias) WR out out=ACCamp256+bias

59

RET

脈衝波產生器

outfrq

kBiasbias

ampkAmp

kFrqth

kThf=1TB

θ

A

pwm

kDutyduty

此模組會產生週期性的脈衝波方塊圖如下

其中

1脈衝波有五個參數其中振幅(A)頻率(F)相位(θ)和偏移(B)四個參數和正弦波

定義完全一樣另外再增加一個負載率(D) 2基本波形是從週期開始時為 1隔段時間後換為 0然後持續到週期結束再重新開始其中 1所佔有的比例就是負載率當 D=0時為 0而 D=255時為 100

3和其他參數類似負載率(D)以 duty為其輸入點而以 kDuty為其參數值

模組程式範例PLS_WAVEasm

local amp R0 IP kAmp 輸入點脈衝波的振幅 local frq R1 IP kFrq 輸入點脈衝波的頻率 local th R2 IP kTh 輸入點脈衝波的相角 local bias R3 IP kBias 輸入點脈衝波的中心偏移 local duty R4 IP kDuty 輸入點脈衝波的負載率 local out R5 OP 輸出點脈衝波輸出 local ang R6 內部變數相位角65536=360deg local kAmp R7 1000 參數振幅值 local kFrq R8 1000 參數頻率值=655368000Hz local kTh R9 0 參數相角值360deg=256 local kBias R10 0 參數偏移值 local kDuty R11 128 參數負載率100 =256 data 12 模組變數區長度及初值 initial 啟動程序 WR ang0 WR out0 ang=out=0 RET timer 即時控制程序(8KHz)

60

RD ang ADD (frq) WR ang ang+=frq SFR 8 ADD (th) AND 255 ACC=(ang256+th)amp0x00ff SUB (duty) RD (amp) JLT t1 RD 0 ACC=(amp0) t1 ADD (bias) WR out out=ACC+bias RET

IIR 一階濾波器

此模組執行一階的 IIR濾波器方塊圖如下

kau x

Z-1

+

+

-

+低通濾波器

高通濾波器dx lp

hp

濾波器參數的計算公式如下

1假設濾波器的頻寬為 hz則 ωn=hz628 2若系統頻率為 8KHz則抽樣週期 dT為 dT=dt8000 其中 dt為模組參數 3則濾波器參數為 ka=ωndT4096或是 =hzdt62880004096即 =hzdt32 4當 dt決定後所允許的訊號頻寬為(4000dt)換句話說訊號頻寬會因為 dt增加而下降

為了方便實驗的運用下面列出常用的參數對照表

濾波頻寬

(Hz)

10 20 50 100 200 500 1000 2000

訊號頻寬

(Hz)

400 800 2000 4000 4000 4000 4000 4000

模組參數 dt 10 5 2 1 1 1 1 1

模組參數 ka 320 320 320 320 640 1600 3200 6400

表格的運用方式如下

1首先決定濾波頻寬 2接著查表找出對映的參數 dt和 ka 3再查表得到對映的訊號頻寬以決定是否需要串接前級濾波器

61

模組程式範例IIR1_FILTERasm

local u R0 IP 輸入點濾波器輸入 local lp R1 OP 輸出點低通濾波器輸出 local hp R2 OP 輸出點高通濾波器輸出 local dt R3 1 參數抽樣週期 local ka R4 4096 參數增益 ka10=4096 local prd R5 內部變數抽樣週期用 data 6 模組變數區長度 initial 開機啟動程序 WR lp0 WR hp0 WR prd1 RET lp=hp=0prd=1 timer 即時控制程序 SUB prd1 JNZ b9 if (--prdgt0) return RD dt WR prd prd=dt RD (u) SUB lp WR hp hp=u-lp MUL ka SFR 12 ADD lp WR lp lp+=(hpka4096) b9 RET

資料蒐集模組

資料蒐集模組是一個非常特殊的模組專門配合 eTTY 程式中的示波器使用

模組程式範例DAS4asm

local cmd R0 0 紀錄命令0=停止1=前置記錄2=正觸發4=負觸發6=觸發記錄 local dt R1 1 抽樣週期每 dT抽樣一次 local tab R2 TP DAS表格啟始位址 local cnt R3 0 目前記錄點(0~255) local ch1 R4 0 定義頻道1的變數位址 local ch2 R5 0 定義頻道2的變數位址 local ch3 R6 0 定義頻道3的變數位址 local ch4 R7 0 定義頻道4的變數位址 local trg R8 0 定義觸發頻道的變數位址 local th R9 0 觸發準位 local tail R10 0 觸發後的抽樣個數 local buf R11 1 抽樣計數(1~dt) local pnt R12 表格位址計算pnt=tab+cnt4 local len R13 表格長度計算(0~256) data 14 定義模組變數區的長度 table tab 1024 定義表格的長度 initial 啟動程序 WR cmd0 RET cmd=0 timer 控制程序

62

ADD cmd0 JZ t9 if (cmd==0) return SUB buf1 JNZ t9 if (--buf)gt0) return RD dt WR buf dt=buf RD cnt ADD 1 AND 0xff WR cnt cnt=(cnt+1)amp0xff SFL 2 ADD tab WR pnt pnt=tab+cnt4 RD (ch1) WR (pnt) ADD pnt1 pnt++=ch1 RD (ch2) WR (pnt) ADD pnt1 pnt++=ch2 RD (ch3) WR (pnt) ADD pnt1 pnt++=ch3 RD (ch4) WR (pnt) pnt =ch4 RD cmd SUB 1 JZ t9 SUB 1 JZ t2 SUB 1 JZ t3 SUB 1 JZ t4 SUB 1 JZ t5 SUB 1 JZ t6 JR t7 t2 RD (trg) SUB th JGE t9 ADD cmd1 JR t9 wait trgltth t3 RD (trg) SUB th JLE t9 JR t6 wait trggtth t4 RD (trg) SUB th JLE t9 ADD cmd1 JR t9 wait trggtth t5 RD (trg) SUB th JGE t9 JR t6 wait trgltth t6 WR len0 WR cmd7 len=0cmd=7 t7 ADD len1 SUB tail JLT t9 WR cmd0 if ((++len)gt=0x80) cmd=0 t9 RET

與 DC 馬達控制相關的程式模組有以下 4個程式模組說明如下

(1)加減速控制模組 ACC_controlasm (2)光電盤輸入模組 POS_inputasm (3)PWM輸出模組 PWM_outputasm (4)PD控制模組 PD_controlasm

71加減速控制模組 此程式模組主要功能在於執行位置控制的加減速命令修正其數學模式採用 Lynn

濾波器的架構參見下圖

cmd

2

+

old Z -1

-

Z -1

Z -1

Z-1

Z-1x0 x1 x8 x9 x16

+ -

++

2

Z-1

Z-1 y1 y2

+

-

y0

+ +

sumZ-1

+164

12

out

dif

+

63

加減速控制模組方塊圖

其中

1Lynn 濾波器的階數固定成八階也就是 m=8其公式為 H(z) = (1-2Z-m+Z-2m)(1-2Z-1+Z-2)m2

2因為m=8所以m2=64因此最後計算低通濾波的部份時要先做除 64的運算 3因為低通濾波(lp)和 y0之間有 64倍的差異代表 y0y1y2的變化範圍比濾波器輸

入值要擴大許多例如輸入值在+-1000變化時y0y1y2很可能會在+-64000之間變化這範圍已經超出整數處理的範圍很可能會造成錯誤的計算結果

4所以在實驗時輸入值的變化範圍必須控制在+-500之間以保證計算的正確性 5對於 Lynn 濾波器當 m=8時其濾波器的頻寬固定為 1 kHzmdt也就是 dt=1時頻寬為 125 Hz dt=2時頻寬為 625Hz依此類推 6對於 Lynn 濾波器其濾波器的延遲固定為 m個抽樣週期因此設計 hp = x8 - lp 即可得到高通濾波器的對應結果 7其中乘 2和除 64的運算以移位運算取代所以整個程式中並無任何乘法運算 8Lynn 濾波器本身並不是穩定濾波器所以在程式啟動時必須確實的將所有狀態

(x0~x16)歸零否則會產生不穩定的狀態輸出

因為 Lynn濾波器中所有參數固定所以除了抽樣週期 dt 之外並無任何可調參數

抽樣週期 dt 可以控制頻寬dt 越大則濾波器頻寬越低

將步階命令值的輸出送入 Lynn 濾波器中經由低通濾波器的效應可以減緩命

令的變化程度達到加減速控制的目的以下為使用 Lynn 濾波器型式實現加減速控

制的組合語言程式列印 如欲更進一步瞭解 Lynn 濾波器與 FIR 數位濾波器之間的關係可以參考通訊實驗

四數位濾波器設計(FIR)中之說明

ACC_controlasm程式列印 local cmd R0 IP 輸入點位置命令

local out R1 OP 輸出點加減速處理後的位置命令

local dif R2 OP 輸出點位置微分命令

local axis R3 0 馬達編號0=X1=Y2=Z3=C

local old R4 內部變數微分計算用

local sumL R5 內部變數積分計算用

local sumH R6 內部變數積分計算用

local y0 R7 內部變數y(0~2)

local y1 R8 local y2 R9

local x0 R10 內部變數x(0~16)

local x1 R11 local x2 R12 local x3 R13 local x4 R14

local x5 R15 local x6 R16 local x7 R17 local x8 R18

local x9 R19 local x10 R20 local x11 R21 local x12 R22

local x13 R23 local x14 R24 local x15 R25 local x16 R26

64

data 27 模組變數區長度

initial 開機啟動程序

WR dif0 RD (cmd) WR out WR old dif=0 out=old=cmd

sumHL=cmd64

SFL 6 WR sumL RD out SFR 10 SGN 5 WR sumH

RPT 17 WR x00 RPT 3 WR y00 RET x[0~16]=0y[0~2]=0

timer 即時控制程序

RD (cmd) SUBX old WR x0 x0=cmd-old old=cmd

SUB x81 ADD x16 ADD y11 SUB y2 WR y0 y0=x0-2x8+x16+2y1-y2

SGN ADD sumL WR sumL RDH ADC sumH WR sumH sumHL+=y0

WRH RD sumL SFR 6 WR out out=sumHL64

RD y0 SGN SFR WR dif dif=y032mm

RD x0 RPT 16 RDX x1 x[i]=x[i-1] i=1~16

RD y0 RDX y1 WR y2 y[i]=y[i-1] i=1~2

b9 RET

72光電盤輸入模組

DC馬達的位置由光電盤量測之預設儲存於 0xac與 0xbe二個輸入埠位址中其中位址 0xac記錄 X軸馬達的位置位址 0xbe記錄 Y軸馬達的位置由於本實驗的DC馬達接在 Y軸的位置上因此程式中直接選用 Y軸的輸入 光電盤位置輸入的程式列印如下其中速度由位置的差分而得至於馬達的位置

則使用內部 2個 word加以記錄精度為 32位元 POS_inputasm程式列印 local spd R0 OP 輸出點速度量測值

local ang R1 OP 輸出點角度量測值

local angH R2 內部變數角度的 32 位元部分

local mode R3 0x308 模式選擇15MHzAB 相正反向輸入

local pht R4 0xac 輸入阜地址光電盤輸入(0xac)

local phtc R5 0xbe 輸入阜地址光電盤模式(0xbe)

local old R6 內部變數速度更新用

data 7 模組變數區長度

initial 開機啟動程序

RD mode WR (phtc) phtc=mode

RD (pht) WR old WR spd0 RET old=phtspd=0

timer 即時控制程序

RD (pht) SUBX old SGN 11 WR spd spd=(pht-old)old=pht

65

ADD ang WR ang angHL+=spd

RDH ADC angH WR angH

RET

73 PWM輸出控制模組 模組方塊

cmd PWM輸出

程式說明 1在開機時將切換保護時間寫到輸出阜 0xbc上其中切換保護值為 0~6360=5us 2在每次 timer interrupt時將 cmd訊號處理後寫到輸出阜 0xb8上

PWM_outputasm程式列印 local cmd R0 IP gnd 輸入點v相命令

local gain R1 4096 參數輸出增益1=4096

local bias R2 2048 參數輸出偏壓0=2048

local limit R3 4095 參數輸出極限1=4095

local zone R4 0x88f0 參數頻率=12KHz切換保護=5us

local pwm R5 0xb8 輸出阜地址PWM0 輸出(0xb8)

local mode R6 0xbc 輸出阜地址PWM 模式(0xbc)

local p0md R7 0xf8 輸出阜地址port0 模式(0xf8)

local gnd R8 0 輸入接地點

data 9 模組變數區長度

initial 開機啟動程序

RD bias WR (pwm) pwm=bias

RD 0xffff WR (p0md) set port0 mode

RD zone WR (mode) RET mode=zone

stop 關機保護程序

RD bias WR (pwm) RET pwm=bias

timer 即時控制程序

RD (mode) xor 1 and 1 WR (mode) trigger watch-dog

RD (cmd) MUL gain SFR 12 ADD bias ACC=(cmdgain4096)+bias

MAX 0 MIN limit WR (pwm) pwm=limit(ACC)

RET

66

74 PD 控制模組

PD控制的模組方塊參見圖二十一所示其中比例控制的部份直接由增益 kp加以調整微分控制的部份則由誤差的差分經增益 kd的調整而得

Σ+

-

cmd

fdk

err out

Σ

pk

dk

Σ

+

+

+

-

old1minusZ

PD控制器的方塊圖

PD_controlasm程式列印 local cmd R0 IP gnd 輸入點位置命令(可忽略)

local fdk R1 IP gnd 輸入點位置回授(可忽略)

local out R2 OP 輸出點用以控制速度迴路

local kp R3 256 參數增益 kp10=256

local kd R4 0 參數增益 kd10=256

local err R5 0 內部變數

local old R6 0 內部變數

local gnd R7 0 無輸入時的短路點

data 8 模組變數區長度

initial 開機啟動程序

WR out0 WR old0 RET out=old=0

timer 即時控制程序

RD (cmd) SUB (fdk) PRTF WR err

MUL kp SFR 8 P=(cmd-fdk)kp256

RDS err SUBX old MUL kd SFR 8 D=(err-old)kd256

ADDS

WR out out=P+D

RET

程式中預設增益值的 10以整數值 256為基底因此使用 SFR 8的指令加以調

整另外在在計算微分項的程式部份用到 SUBX old的指令其詳細的暫存器動作如

下 參考 piDSP的指令說明SUBX指令將總共用到 3個時序參考錯誤 找不到參照

67

來源在時序 1時將原先 AX的資料拷貝一份到 HX中時序 2時正式執行減

法的動作所以 AX暫存器中的內容會變成 err-old時序 3時DSP會將存放在 HX暫存器中的內容拷貝一份到 old的記憶體中也就是經由 SUBX此一精簡指令將

同時完成計算差分所需要的相減與資料疊代的動作有效的利用 piDSP控制器 DSP核心的精簡指令將可以大幅提昇系統的計算速度

HX AXoldSUBXerr err

old

err

errerr olderr minus

1_err

errerr olderr minus err

1_err

1

2

3

SUBX的指令時序與暫存器變化

68

8附錄快速安裝說明

光纖網路通訊 FPGA 發展系統 (適用於 WIN-XP200098 系統)

快速安裝說明

26Pin 負載輸出入埠

雙電源︵5

12

伏︶輸入埠

單電源︵5

伏︶輸入埠

USB

光纖線輸

號 光纖線輸出埠

入 傳 埠

首先將光碟片 RFFPGA 目錄檔案拷貝在您工作硬碟裡面

第一次安裝時先將 USB 傳輸線接上電腦主機將電源供應器接上 FPGA 模組此時電

腦會出現安裝 USB-Serial 驅動程式選擇從清單安裝此驅動程式放置在光碟片

RFFPGA-USBdrive 選擇您目前安裝系統

可選擇 WIN-98WIN-MEWIN-2000WIN-XP 系統配合您現在工作電腦作業系統

69

注意一般電腦 USB 埠很多插口當您安裝驅動程式時是配合您當時插入之埠

下次如您插入不同接口埠時電腦會再次要求安裝驅動程式這是正常現象請再次安

裝驅動程式否則無法使用

FPLC 操作

首先進入 RFFPGA裡子目錄 testASM直接點選 fPLCexe 出現下面操作畫面(也可直接將

此檔案放置桌面直接點選)

(或者選擇 File 再執行 Setuphellip 選擇您要執行 CAI 檔)

70

進入下面操作畫面 首先使用滑鼠在 FPGA下載按鈕單擊動作使 FPGA變成 DSP晶片 實驗一至實驗五皆為使用 DSP組合語言設計程式其原始程式分別為 testASM1至testASM5可使用 texPad 開啟與編輯程式內容 實驗三與實驗五多有 IO控制動作 當選擇實驗三時出現下面畫面

71

eM_USB 模組

數字型 LED

0 1 2 34 5 6 78 9 A BC D E F

燈號型 LED

44 鍵盤

ADC0 ADC1 DAC0 DAC1

LED 選擇KEY 選擇

模 式 1

0123

注意操作畫面 3與 4 說明開關與按鍵選擇位置後選擇程式下載再按程式啟動如您

按下 0-3按鍵時燈號型 LED會有不同方向閃爍顯示程式停止時結束所有 IO控制動作再按回首頁選擇其他實驗 實驗四與實驗五

模式3

0 1 2 34 5 6 78 9 A BC D E F

按照上面開關選擇直接操作如果以上實驗皆能按照正常操作表示您光纖網路通訊

FPGA發展模組以能正常使用 注意 開機與關機動作順序如下

開機電腦啟動 --- eM_USB 模組電源接上 --- USB 接上電腦 ---

啟動 FPLC 軟體 --- 下載 FPGA 程式

關機關閉 FPLC 軟體 --- eM_USB 模組電源拔掉 --- 拔掉電腦 USB 接頭 ---關掉

電腦

如果以上順序有亂可能造成 USB 找不到驅動造成無法下載經過幾次測試還是

無法下載建議重新啟動電腦主機按照正確步驟操作

72

FPGA 下載操作

進入 FPLC 操作系統按照下列步驟選擇節點模組與下載 bit FPGA 檔案

在 VHDLDEMO 子目錄下您可以選擇您目前 FPGA 種類型號在此型號下我們已將 VHDL

與數位邏輯設計課本範例全部放於此處

73

光纖網路連線 FPGA 下載操作

首先利用光纖線將 eM_USB0 模組光纖輸出埠接至 eM_USB1 模組光纖輸入埠以此

類推最後再將最後 eM_USBN 模組光纖輸出埠接至 eM_USB0 模組光纖輸入埠配置

如附圖方式

個人電腦(Windows) eM_USB模組

0USB

eM_USB模組1

光纖網路

eM_USB模組2

eM_USB模組N

配置完成後進入 FPLC 系統首先必須先將 Node00 下載在 testASM 子目錄裡

piDSPv0bit 檔讓 eM_USB0 模組 FPGA 具備 DSP 功能才能執行光纖網路通訊

操作如下

此時您就可以選擇分別下載至各模組 FPGA 檔 bit

74

安裝 FPLC 注意事項

當您進入 FPLC 時

按 FILE 選擇 programhellip 選擇檔案為 exp_dcmplc 出現下面畫面

正常顯示畫面為

75

DOS 環境操作

在 PC 端的操作是在 Windows 環境中的 DOS 視窗中執行指令範例如下

eFPGA progNETbit 下載 FPGA電路至網路節點0(即 USB節點)中 eFPGA testLEDbit 1 下載 FPGA電路至網路節點1中

對於單一節點的控制程序如下

1將 eM_USB模組連結個人電腦的 USB端 2eM_USB模組開機 3執行下載指令即可 eFPGA xxxxbit 4若要更改 FPGA電路只要重新執行下載指令即可

對於多個網路節點的控制程序如下

1第一組 eM_USB模組連結個人電腦的 USB端再以光纖網路依序其他各節點 2連接 USB界面者為模組0從光纖發射端連接出去的模組為1依此類推 3將所有 eM_USB模組開機 4執行下載指令如下 eFPGA progNETbit 模組0必須先下載指定的 FPGA電路 eFPGA xxxxbit 1 再依序下載其他網路模組的 FPGA電路 eFPGA yyyybit 2 eFPGA zzzzbit 最後再重新下載模組0的 FPGA電路 5換句話說模組0必須先執行 progNETbit讓光纖網路接受 FPGA控制後才能透過光纖網路下載至其他節點等全部網路節點下載完畢後再將模組0的 FPGA重新下載讓模組0也可自由執行任意的 FPGA電路

6若要更改某一個網路節點中的 FPGA電路只要重新執行下述指令 eFPGA progNETbit 模組0必須先下載指定的 FPGA電路 eFPGA yyyybit 2 下載指定網路模組的 FPGA電路 eFPGA zzzz bit 最後再重新下載模組0的 FPGA電路 換句話說除非模組0中的 FPGA已經包括光纖網路管理電路否則一定要先在

模組0中下載網路管理電路後才能下載指定網路節點的 FPGA電路

76

光纖網路通訊 FPGA 發展系統

系統配置

光纖網路通訊 FPGA 發展系統的系統配置圖如下

個人電腦(Windows) eM_USB模組

0USB

eM_USB模組1

光纖網路

eM_USB模組2

eM_USB模組N

其中

1基本模組為 eM_USB模組可用 USB界面和個人電腦連線並提供 USB對光纖網路的轉換功能使得個人電腦可以獨立控制光纖網路中的每個網路節點

2eM_USB模組也可以作為光纖網路中的網路節點透過光纖網路而接受個人電腦的

監控 3就個人電腦而言不論是 USB界面直接連結或是以光纖網路間接連結的 eM_USB模組都是可以直接監控的網路節點最多可以同時控制一個 USB節點和 30個網路節點

4對於每一個網路節點個人電腦都可執行 eM_USB模組中 FPGA的電路下載工作並在適當的 FPGA電路配合下可執行 eM_USB模組中 FPGA內部電路的讀寫控制 5透過適當的 FPGA電路設計各網路節點都可透過光纖網路和其他任何網路節點

作同步通訊執行 FPGA內部記憶體的資料交換資料交換頻率可達 1KHz以上

77

網路模組配置

每個網路模組的標準配置圖如下

eM_USB模組光纖網路

USB eM_FPGA卡

eM_DEMO模組

eM_EXP實驗模組

DC電源

其中

1網路模組以 eM_USB模組為主提供基本的 USB界面和光纖網路連線 2eM_USB模組中的 FPGACPLD採用插卡型式可選擇不同的 eM_FPGA卡包括

eM_2V1K卡可選用 Virtex系列的 XC2V250和 XC2V1000 eM_3S1K卡可選用 Spartan3系列的 XC3S400XC3S1000和 XC3S1500 eM_3S50卡可選用 Spartan3系列的 XC3S50XC3S200和 XC3S400 eM_95XL卡可選用 9500XL系列的 XC95144XL和 XC95288XL 3eM_USB模組中的對外連線有兩種一種是 26P接頭用以連接既有的各種實驗模

組另一種是兩組 50P接頭將 FPGA中各接腳引出用以連接專題實驗 4eM_DEMO模組就是插上 50P接頭的教學模組其中包括 LED 數字顯示和 44鍵盤也具備兩組的 ADC和兩組的 DAC接頭提供類比訊號的測試工具

常用的實驗組合包括

1精簡組合包括(eM_USB+eM_FPGA)提供基本的網路節點適用於專題實驗 2標準組合包括(eM_USB+eM_FPGA+eM_DEMO)提供基礎 FPGA設計的教學實驗

3實驗組合包括(eM_USB+eM_FPGA+eM_DEMO+eM_EXP)提供進階的 FPGA實驗可依需求選用不同的實驗模組

78

eM_USB 模組

eM_USB 模組的電路配置圖如下

TxRx

DCPower

USB

JP2

JP3

光纖界面

外加電源

PC連線

JP1

eM_FPGA模組

FT232 CPLD FlashROM

SRAM

10cm

6cm

JP4

其中

1對外的連線接頭包括 DC電源 可選擇單電源(5V)或是多電源(5V+12V-12V)兩種 USB界面 直接連接個人電腦 光纖界面連接光纖網路 2實驗界面包括 JP1負責內部 CPLD的電路下載 JP2JP3兩組 50P的擴張用接頭 JP4 標準 26P接頭用以連接各種實驗模組 3內部的電路配置包括 A以 SO-DIMM接頭連接各種 eM_FPGA卡 B內附 EEPROMFlashROM和 SRAM提供 FPGA作應用測試 C以一顆 FT232BM作為 USB界面解碼而以一顆 CPLD作為光纖網路解碼 D提供各種 eM_FPGA卡的電路下載功能 4內附五顆 LED由上而下依序為 usbLED指示 USB界面的讀寫狀態 tstLED可由 FPGA電路自行定義 stsLED可由 FPGA電路自行定義 RxLED 可由 FPGA電路自行定義 TxLED 可由 FPGA電路自行定義

79

外部接腳定義

外部接頭的接點順序圖示如下

上視圖

JP11 9 JP4

126225

JP31

50249

JP21

50249

而各接頭的接點定義如下

JP1 JP4 JP2 JP3 1+33V 1+12V 2+12V 1 GND 2 GND 1 GND 2 GND 2GND 3 ADC 4 DAC 3POWER 4ALARM 3 +5V 4 +5V 3nc 5 yPB2 6 yPB3 5RxNET 6TxNET 5+12V 6+12V 4TCK 7 yPB1 6 yPB4 7RxUSB 6TxUSB 7-12V 6-12V 5nc 9 yPB0 10yPB5 9RxCAN 10TxCAN 9 ADC 10 DAC 6TDO 11yPB6 12yPB7 11P0D0 12P0D1 11P1D0 12P1D1 7TDI 13yGND 14yPC3 13P0D2 14P0D3 13P1D2 14P1D3 8nc 15yPC2 16yPC1 15P0D4 16P0D5 15P1D4 16P1D5 9TMS 17yPC0 18yPA0 17P0D6 18P0D7 17P1D6 18P1D7 19yPA1 20yPA2 19P0D8 20P0D9 19P1D8 20P1D9 21yPA3 22GND 21P0D10 22P0D11 21P1D10 22P1D11 23GND 24+5V 23P0D12 24P0D13 23P1D12 24P1D13 25+5V 26nc 25P0D14 26P0D15 25P1D14 26P1D15 27P2D0 28P2D1 27PxA0 28PxA1 29P2D2 30P2D3 29PxA2 30PxA3 31P2D4 32P2D5 31PxA4 32PxA5 33P2D6 34P2D7 33PxA6 34PxA7 35P2D8 36P2D9 35PxB0 36PxB1 37P2D10 38P2D11 37PxB2 38PxB3 39P2D12 40P2D13 39PxB4 40PxB5 41P2D14 42P2D15 41PxB6 42PxB7 43ADC0 44ADC1 43PxC0 44PxC1 45ADC2 46ADC3 45PxC2 46PxC3 47ADC4 48ADC5 47PxC4 48PxC5 49DAC0 50DAC1 49PxC6 50PxC7

80

eM_FPGA 模組

在各種 eM_FPGA 模組中FPGA 對外電路的標準配置圖如下

24576MHz

FlashROM

26PSRAM

EEPROM

mD[8]

yPA[4]

FPGACPLD

mA[19]mRDmWRmCSeeCKeeCSeeDIeeDO

光纖界面 RxNETTxNET

USB 界面 RxUSBTxUSBCLK24MPOWERALARM

LED

tstLEDstsLEDRxLEDTxLED

yPB[8]yPC[4]

ADCDAC

ADC[8]

實驗模組

ADC[2]

DAC[2]

xPA[4]

xPB[8]

xPC[4]

基礎實驗

其中

1FPGACPLD可以選擇下述幾種 XC2V250XC2V1000 採用 eM_2V1K模組其中 FPGA為 FG456包裝 XC3S400XC3S1000XC3S1500採用 eM_3S1K模組其中 FPGA為 FG456包裝 XC3S400XC3S1000XC3S1500採用 eM_3S1K模組其中 FPGA為 FG456包裝 XC3S50XC3S200XC3S400 採用 eM_3S50模組其中 FPGA為 TQ144包裝 XC95144XLXC95288XL 採用 eM_95XL模組其中 CPLD為 TQ144包裝 2採用 FG456包裝者可以控制所有的 IO界面 3採用 TQ144包裝者只是不能控制 RAM和 FlashROM而可以控制其他所有的界面 4所有 FPGA模組都可自由選擇由 USB界面或是由光纖界面下載電路但是 CPLD模組只能固定由 USB界面下載電路

5所有 FPGACPLD模組都可透過 26P接頭連接既有的各種實驗模組

81

FPGA 接腳對照表

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

mD0 XD6 mD0 A17 C13 -- -- mD1 XD7 mD1 B17 D12 -- -- mD2 XD8 mD2 C17 D11 -- -- mD3 XD9 mD3 D17 C11 -- -- mD4 XD10 mD4 E17 D10 -- -- mD5 XD11 mD5 E16 C10 -- -- mD6 XD12 mD6 E14 D9 -- -- mD7 XD13 mD7 E13 D7 -- -- mA0 XD14 mA0 D13 C7 -- -- mA1 XD15 mA1 C13 D6 -- -- mA2 XA0 mA2 V5 C3 -- -- mA3 XA1 mA3 U5 C4 -- -- mA4 XA2 mA4 Y2 D3 -- -- mA5 XA3 mA5 Y1 D4 -- -- mA6 XA4 mA6 V4 E3 -- -- mA7 XA5 mA7 V3 E4 -- -- mA8 XA6 mA8 W2 F3 -- -- mA9 XA7 mA9 W1 F4 -- -- mA10 XA8 mA10 T2 G6 -- -- mA11 XA9 mA11 T1 K3 -- -- mA12 XA10 mA12 R4 K10 -- -- mA13 XA11 mA13 R3 L3 -- -- mA14 XA12 mA14 R2 L4 -- -- mRD XRD mRD R1 D5 -- -- mWR XWR mWR P6 C6 -- --

POWER P0A0 POWER B4 B20 P1 P5 ALARM P0A1 ALARM A4 A19 P2 P6 RxNET P0A2 RxNET C4 B19 P4 P7 TxNET P0A3 TxNET C5 A18 P5 P9 RxUSB P0B0 RxUSB B5 A15 P6 P10 TxUSB P0B1 TxUSB A5 B15 P7 P11 RxCAN P0B2 RxCAN D6 A14 P8 P12 RxCAN P0B3 TxCAN C6 B14 P10 P13

CLK24M CLK24M CLK24M E12 B12 P124 P38

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

PWM0H P3A0 P0D0 E6 A8 P21 P23 PWM0L P3A1 P0D1 E5 B8 P23 P24 PWM1H P3A2 P0D2 C2 B6 P24 P25 PWM1L P3A3 P0D3 C1 A5 P25 P26 PWM2H P3A4 P0D4 D2 B5 P26 P27

82

PWM2L P3A5 P0D5 D1 A4 P27 P28 PWMenb P3A6 P0D6 E4 B4 P28 P30 PHT1Z P3A7 P0D7 E3 A3 P30 P31 PHT1A P3B0 P0D8 G2 C1 P31 P32 PHT1B P3B1 P0D9 G1 C2 P32 P33 PHT0A P3B2 P0D10 H5 D1 P33 P34 PHT0B P3B3 P0D11 J6 D2 P35 P35 AMP0 P3B4 P0D12 H4 E1 P36 P39 AMP1 P3B5 P0D13 H3 E2 P40 P40 AMP2 P3B6 P0D14 H2 F2 P41 P41 AMP3 P3B7 P0D15 H1 G1 P44 P43 eeSK P0C3 P1D0 C10 B9 P20 P22 eeCS P0C2 P1D1 D10 A9 P18 P21 eeDI P0C1 P1D2 F10 B10 P17 P20 eeDO P0C0 P1D3 E10 B11 P15 P19 ssCK P0B7 P1D4 E8 A11 P14 P17 ssCS P0B6 P1D5 E7 A12 P13 P16 ssDI P0B5 P1D6 A6 B13 P12 P15 ssDO P0B4 P1D7 B6 A13 P11 P14

ppCLK P3C0 P1D8 K4 G2 P46 P44 ppDIN P3C1 P1D9 K3 K1 P47 P45 TxD P3C2 P1D10 K2 K2 P50 P46 RxD P3C3 P1D11 K1 L1 P51 P48

tstLED P3C4 P1D12 L5 L2 P52 P49 stsLED P3C5 P1D13 L4 M1 P53 P50 RxLED P3C6 P1D14 L3 M2 P55 P51 TxLED P3C7 P1D15 L2 N1 P56 P52

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

xPA0 P2A0 P2D0 AA3 N2 P59 P53 xPA1 P2A1 P2D1 Y4 T1 P60 P54 xPA2 P2A2 P2D2 AA4 T2 P63 P56 xPA3 P2A3 P2D3 AB4 U2 P68 P57 xPC0 P2A4 P2D4 W5 V1 P69 P58 xPC1 P2A5 P2D5 Y5 V2 P70 P59 xPC2 P2A6 P2D6 AA5 W1 P73 P60 xPC3 P2A7 P2D7 AB5 W2 P74 P61

-- P2B0 P2D8 V6 Y1 P76 P64 -- P2B1 P2D9 V7 Y2 P77 P66 -- P2B2 P2D10 W6 AA3 P78 P68

mCS P2B3 P2D11 Y6 AB4 P79 P69 mA15 P2B4 P2D12 V9 AA4 P80 P70 mA16 P2B5 P2D13 V10 AB5 P82 P71 mA17 P2B6 P2D14 W10 AA5 P83 P74 mA18 P2B7 P2D15 Y10 AA6 P84 P75 CS0 P2C0 ADC0 AA10 AB8 P85 P76

83

SDIN0 P2C1 ADC1 AB10 AA8 P86 P77 CS1 P2C2 ADC2 U10 AB9 P87 P78

SDIN1 P2C3 ADC3 U11 AA9 P89 P79 SCLK P2C4 ADC4 V11 AB10 P90 P80 CS2 P2C5 ADC5 W11 AA10 P92 P81

SDOUT P2C6 ADC6 Y11 AB11 P93 P82 LDAC P2C7 ADC7 AA11 AA11 P95 P83

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

xPB0 P1A0 PxA0 M1 M3 P135 P85 xPB1 P1A1 PxA1 M2 M4 P132 P86 yPB2 P1A2 PxA2 M3 N3 P131 P87 yPB3 P1A3 PxA3 M4 N4 P130 P88 yPB1 P1A4 PxA4 M5 T4 P129 P91 yPB4 P1A5 PxA5 M6 T5 P128 P92 yPB0 P1A6 PxA6 N1 U3 P127 P93 yPB5 P1A7 PxA7 N2 U4 P125 P94 yPB6 P1B0 PxB0 U13 V3 P119 P95 yPB7 P1B1 PxB1 V13 V4 P118 P96 xPB2 P1B2 PxB2 W13 W3 P116 P97 xPB3 P1B3 PxB3 Y13 W4 P113 P98 xPB4 P1B4 PxB4 AA13 Y3 P112 P100 xPB5 P1B5 PxB5 AB13 Y4 P96 P101 yPC3 P1B6 PxB6 U12 Y5 P97 P102 yPC2 P1B7 PxB7 V12 W5 P98 P103 yPC1 P1C7 PxC0 AB17 W11 P108 P113 yPC0 P1C6 PxC1 AA17 Y11 P107 P112 yPA0 P1C5 PxC2 Y17 W10 P105 P111 yPA1 P1C4 PxC3 W17 Y10 P104 P110 yPA2 P1C3 PxC4 AB18 W9 P103 P107 yPA3 P1C2 PxC5 AA18 W8 P102 P106 xPB6 P1C1 PxC6 Y18 W6 P100 P105 xPB7 P1C0 PxC7 W18 Y6 P99 P104

84

eM_DEMO 模組

eM_DEMO 模組的電路配置圖如下

eM_USB 模組

數字型 LED

0 1 2 34 5 6 78 9 A BC D E F

燈號型 LED

44 鍵盤

ADC0 ADC1 DAC0 DAC1

LED 選擇KEY 選擇

其中

1eM_DEMO模組的基本功能包括 A將 xPAxPBxPC等 16個 IO訊號引出控制 LED和鍵盤電路 B將 ADDA訊號引出並放大成+-10V的工作範圍 2LED和鍵盤可以選擇三種模式由 LED和 KEY 兩組開關作選擇圖示如下

模式1

0123

模式2 模式3

0 1 2 34 5 6 78 9 A BC D E F

0123

3模式14鍵輸入並搭配 16點的 LED燈號顯示其中 16點 LED分別對映到 xPA[0~3]xPB[0~7]和 xPC[0~3] 4組按鍵分別對映到 xPC[0~3] 4模式24鍵輸入並搭配四個 7段式數字顯示其中 數字顯示由 xPA[0~3]作數字掃瞄而由 xPB[0~7]作 7段式 LED控制 4組按鍵 分別對映到 xPC[0~3] 5模式316鍵輸入並搭配四個 7段式數字顯示其中 數字顯示由 xPA[0~3]作數字掃瞄而由 xPB[0~7]作 7段式 LED控制 16組按鍵由 xPA[0~3]作鍵盤掃瞄而由 xPC[0~3]作鍵盤讀取 6根據VHDL與數位邏輯設計的章節其中 第 1章至 10章的實驗採用模式1而 第 11章實驗採用模式2而 第 12章之後的實驗都採用模式3

85

FPGA UCF 定義

eM_3S1K 模組

NET CLK LOC = B12

NET XAlt0gt LOC = N2

NET XAlt1gt LOC = T1

NET XAlt2gt LOC = T2

NET XAlt3gt LOC = U2

NET XBlt0gt LOC = M3

NET XBlt1gt LOC = M4

NET XBlt2gt LOC = W3

NET XBlt3gt LOC = W4

NET XBlt4gt LOC = Y3

NET XBlt5gt LOC = Y4

NET XBlt6gt LOC = W6

NET XBlt7gt LOC = Y6

NET XClt0gt LOC = V1

NET XClt1gt LOC = V2

NET XClt2gt LOC = W1

NET XClt3gt LOC = W2

NET YAlt0gt LOC = W10

JP4 接頭

NET YAlt1gt LOC = Y10

NET YAlt2gt LOC = W9

NET YAlt3gt LOC = W8

NET YBlt0gt LOC = U3

NET YBlt1gt LOC = T4

NET YBlt2gt LOC = N3

NET YBlt3gt LOC = N4

NET YBlt4gt LOC = T5

NET YBlt5gt LOC = U4

NET YBlt6gt LOC = V3

NET YBlt7gt LOC = V4

NET YClt0gt LOC = Y11

NET YClt1gt LOC = W11

NET YClt2gt LOC = W5

NET YClt3gt LOC = Y5

在光碟片中 RFFPGAVHDLDEMOBIT3S1K 裡有 VHDL 與數位邏輯設計書本範例原始檔與合成檔

86

eM_3S50 模組

NET CLK LOC = P124

NET XAlt0gt LOC = P59

NET XAlt1gt LOC = P60

NET XAlt2gt LOC = P63

NET XAlt3gt LOC = P68

NET XBlt0gt LOC = P135

NET XBlt1gt LOC = P132

NET XBlt2gt LOC = P116

NET XBlt3gt LOC = P113

NET XBlt4gt LOC = P112

NET XBlt5gt LOC = P96

NET XBlt6gt LOC = P100

NET XBlt7gt LOC = P99

NET XClt0gt LOC = P69

NET XClt1gt LOC = P70

NET XClt2gt LOC = P73

NET XClt3gt LOC = P74

NET YAlt0gt LOC = P105

JP4 接頭

NET YAlt1gt LOC = P104

NET YAlt2gt LOC = P103

NET YAlt3gt LOC = P102

NET YBlt0gt LOC = P127

NET YBlt1gt LOC = P129

NET YBlt2gt LOC = P131

NET YBlt3gt LOC = P130

NET YBlt4gt LOC = P128

NET YBlt5gt LOC = P125

NET YBlt6gt LOC = P119

NET YBlt7gt LOC = P118

NET YClt0gt LOC = P107

NET YClt1gt LOC = P108

NET YClt2gt LOC = P98

NET YClt3gt LOC = P97

在光碟片中 RFFPGAVHDLDEMOBIT3S200 裡有VHDL與數位邏輯設計書本範例原始檔與合成檔

87

eM_95XL 模組

NET CLK LOC = SPIN38

NET XAlt0gt LOC = SPIN53

NET XAlt1gt LOC = SPIN54

NET XAlt2gt LOC = SPIN56

NET XAlt3gt LOC = SPIN57

NET XBlt0gt LOC = SPIN85

NET XBlt1gt LOC = SPIN86

NET XBlt2gt LOC = SPIN97

NET XBlt3gt LOC = SPIN98

NET XBlt4gt LOC = SPIN100

NET XBlt5gt LOC = SPIN101

NET XBlt6gt LOC = SPIN105

NET XBlt7gt LOC = SPIN104

NET XClt0gt LOC = SPIN58

NET XClt1gt LOC = SPIN59

NET XClt2gt LOC = SPIN60

NET XClt3gt LOC = SPIN61

NET YAlt0gt LOC = SPIN111

JP4 接頭

NET YAlt1gt LOC = SPIN110

NET YAlt2gt LOC = SPIN107

NET YAlt3gt LOC = SPIN106

NET YBlt0gt LOC = SPIN93

NET YBlt1gt LOC = SPIN91

NET YBlt2gt LOC = SPIN87

NET YBlt3gt LOC = SPIN88

NET YBlt4gt LOC = SPIN92

NET YBlt5gt LOC = SPIN94

NET YBlt6gt LOC = SPIN95

NET YBlt7gt LOC = SPIN96

NET YClt0gt LOC = SPIN112

NET YClt1gt LOC = SPIN113

NET YClt2gt LOC = SPIN103

NET YClt3gt LOC = SPIN102

在光碟片中 RFFPGAVHDLDEMOSVF95288XL 裡有VHDL與數位邏輯設計書本範例原始檔與合成

檔案

88

eM_FPGA 模組

NET CLK LOC = E12

NET XAlt0gt LOC = AA3

NET XAlt1gt LOC = Y4

NET XAlt2gt LOC = AA4

NET XAlt3gt LOC = AB4

NET XBlt0gt LOC = M1

NET XBlt1gt LOC = M2

NET XBlt2gt LOC = W13

NET XBlt3gt LOC = Y13

NET XBlt4gt LOC = AA13

NET XBlt5gt LOC = AB13

NET XBlt6gt LOC = Y18

NET XBlt7gt LOC = W18

NET XClt0gt LOC = W5

NET XClt1gt LOC = Y5

NET XClt2gt LOC = AA5

NET XClt3gt LOC = AB5

NET YAlt0gt LOC = Y17

JP4 接頭

NET YAlt1gt LOC = W17

NET YAlt2gt LOC = AB18

NET YAlt3gt LOC = AA18

NET YBlt0gt LOC = N1

NET YBlt1gt LOC = M5

NET YBlt2gt LOC = M3

NET YBlt3gt LOC = M4

NET YBlt4gt LOC = M6

NET YBlt5gt LOC = N2

NET YBlt6gt LOC = U13

NET YBlt7gt LOC = V13

NET YClt0gt LOC = AA17

NET YClt1gt LOC = AB17

NET YClt2gt LOC = V12

NET YClt3gt LOC = U12

在光碟片中 RFFPGAVHDLDEMOBIT2V250 裡有VHDL與數位邏輯設計書本範例原始檔與合成檔

89

Page 44: RFFPGA 直流馬達實驗手冊juniortek.com.tw/program/manual/RF-DC-mal.pdf · em_demo模組 em_dcm 直流伺服馬達 dc電源 rffpga 系統的直流馬達實驗規劃 其中包括:

63 實驗 3-閉迴路的位置控制 實驗說明為了觀測閉迴路的位置控制響應將直流馬達的回授改為位置訊號

建立下面的測試方塊圖 方塊圖中的模組功能說明如下

1用 fg1產生測試用的方波位置命令 2將方波位置命令和位置回授訊號送到 PD控制器方塊中產生電壓控制訊號再透過 io2模組將訊號送出到伺服介面驅動馬達轉動

對應之 plc檔程式說明(exp_angleplc) echo off 畫面顯示開始

run dsp 0 選擇 DSP1

run stop run reset 既有程式停止

run testDCMmem 下載指定程式

das 1 ampfg1out 0 1024 PWM 波形 Volt 設定 DAS 頻道1

das 2 ampft1lp 0 1024 馬達模擬 Volt 設定 DAS 頻道2

das 3 ampio1spd 0 1024 馬達速度 Volt 設定 DAS 頻道3

das 4 ampio1ang 0 1024 馬達角度 Volt 設定 DAS 頻道4

plot select 0 設定示波器頁數

plot xunit 100000 0 設定示波器 X軸

plot yunit 1 1000 -300 設定示波器 Y1 軸

plot yunit 2 1000 -100 設定示波器 Y2 軸

plot yunit 3 20 100 設定示波器 Y3 軸

plot yunit 4 1000 300 設定示波器 Y4 軸

plot trigger 1 0 1 10 設定示波器觸發

44

plot scope 9 1 2 3 4 設定示波器顯示

module io2 設定 io2 模組

s cmd ampcn2out

module fg1 設定 fg1 模組

s kAmp 1000 s kFrq 75

module cn2 設定 cn1 模組

s cmd ampfg1out s fdk ampio1ang s kp 0x300 s kd 0x4000

module ft1 設定 ft1 模組

s u ampfg1out s dt 2 s ka 320

module io3 設定 io3 模組

s led ampfg1out

module 回復預設模組

run 1khz 設定抽樣頻率為 4KHz

run start DSP 開始執行

das stop pause 1 DAS 啟動 das start DAS 啟動

echo on 回復正常訊息顯示

CAI操控設計畫面規劃如下(EXP_angleCAI) page 1 畫面設計

45

page 2 與 page 3 畫面設計與實驗一 page 2 與 page 3相同畫面 page 4 畫面設計與實驗二 page 4 畫面 方塊的參數設定 延續上一實驗的說明使用者可以調整 PD控制器中的 kp和 kd值以調整系統之

響應 實測響應圖

訊 號 說 明 訊 號 說 明 ch1 方波產生器產生之位置命令 ch3 馬達角速度訊號 ch2 馬達角位置 ch4 Pd控制器輸出之電壓訊號

46

直流馬達之閉迴路位置控制響應圖

47

64 實驗 4-加減速的位置控制 實驗說明為避免方波命令的過於嚴苛在方波命令的輸出加入一加減速控制功

能方塊以減緩命令變化的幅度增加馬達運動的平順建立的測試方塊圖如下

方塊圖中的模組功能說明如下

1用 fg1產生測試用的方波位置命令 2將方波位置命令送到加減速控制方塊處理後產生新的位置命令再將新的位置命

令與位置回授訊號送到 PD控制器方塊中產生電壓控制訊號最後透過 io2模組將訊號送出到伺服介面驅動馬達轉動

對應之 plc檔程式說明(exp_accplc) echo off 畫面顯示開始

run dsp 0 選擇 DSP1

run stop run reset 既有程式停止

run testDCMmem 下載指定程式

das 1 ampfg1out 0 1024 PWM 波形 Volt 設定 DAS 頻道1

das 2 ampcn1out 0 1024 加速控制 Volt 設定 DAS 頻道2

das 3 ampio1spd 0 1024 馬達速度 Volt 設定 DAS 頻道3

das 4 ampio1ang 0 1024 馬達角度 Volt 設定 DAS 頻道4

plot select 0 設定示波器頁數

plot xunit 100000 0 設定示波器 X軸

plot yunit 1 2000 -300 設定示波器 Y1 軸

plot yunit 2 2000 -100 設定示波器 Y2 軸

plot yunit 3 50 100 設定示波器 Y3 軸

plot yunit 4 2000 300 設定示波器 Y4 軸

48

plot trigger 1 0 1 10 設定示波器觸發

plot scope 9 1 2 3 4 設定示波器顯示

module io2 設定 io2 模組

s cmd ampcn2out

module fg1 設定 fg1 模組

s kAmp 2000 s kFrq 150

module cn1 設定 cn1 模組

s cmd ampfg1out

module cn2 設定 cn2 模組

s cmd ampcn1out s fdk ampio1ang s kp 0x300 s kd 0x4000

module ft1 設定 ft1 模組

s u ampfg1out s dt 2 s ka 320

module io3 設定 io3 模組

s led ampfg1out

module 回復預設模組

run 1khz 設定抽樣頻率為 4KHz

run start DSP 開始執行

das stop pause 1 DAS 啟動 das start DAS 啟動

echo on 回復正常訊息顯示

CAI操控設計畫面規劃如下(EXP_accCAI) page 1 畫面設計

49

page 2 畫面設計與實驗一 page 2相同畫面 page 3 畫面設計與實驗二 page 4相同畫面

參數設定參考之前各實驗的說明可線上機動性的調整 PD控制器中的 kp和 kd值以調整系統之響應 實測響應圖

訊 號 說 明 訊 號 說 明 ch1 方波產生器產生之位置命令 ch3 馬達角位置 ch2 加減速模組輸出之位置命令 ch4 馬達角速度訊號

50

圖一 直流馬達經加減速控制後之閉迴路控制響應圖

51

65 實驗 5-正弦波的位置控制 實驗說明在本實驗中改變命令的波形由方波改變為正弦波並建立如下的測

試方塊圖與上一實驗相比較僅更改命令的波形產生方塊 方塊圖中的模組功能說明如下 1用 fg2產生測試用的弦波位置命令 2將弦波位置命令送到加減速控制方塊處理後產生新的位置命令再與 io1 讀入的位

置回授訊號送到 PD 控制器方塊中產生電壓控制訊號再透過 io2 模組將訊號送出到伺服介面驅動馬達轉動

對應之 plc檔程式說明(exp_sinplc) echo off 畫面顯示開始

run dsp 0 選擇 DSP1

run stop run reset 既有程式停止

run testDCMmem 下載指定程式

das 1 ampfg2out 0 1024 SIN 波形 Volt 設定 DAS 頻道1

das 2 ampcn1out 0 1024 加速控制 Volt 設定 DAS 頻道2

das 3 ampio1spd 0 1024 馬達速度 Volt 設定 DAS 頻道3

das 4 ampio1ang 0 1024 馬達角度 Volt 設定 DAS 頻道4

plot select 0 設定示波器頁數

plot xunit 100000 0 設定示波器 X軸

plot yunit 1 2000 -300 設定示波器 Y1 軸

plot yunit 2 2000 -100 設定示波器 Y2 軸

plot yunit 3 50 100 設定示波器 Y3 軸

plot yunit 4 2000 300 設定示波器 Y4 軸

plot trigger 1 0 1 10 設定示波器觸發

52

plot scope 9 1 2 3 4 設定示波器顯示

module io2 設定 io2 模組

s cmd ampcn2out

module fg2 設定 fg1 模組

s kAmp 2000 s kFrq 100

module cn1 設定 cn1 模組

s cmd ampfg2out

module cn2 設定 cn2 模組

s cmd ampcn1out s fdk ampio1ang s kp 0x300 s kd 0x4000

module ft1 設定 ft1 模組

s u ampfg2out s dt 2 s ka 320

module io3 設定 io3 模組

s led ampfg2out

module 回復預設模組

run 1khz 設定抽樣頻率為 4KHz

run start DSP 開始執行

das stop pause 1 DAS 啟動 das start DAS 啟動

echo on 回復正常訊息顯示

CAI操控設計畫面規劃如下(EXP_sinCAI) page 1 畫面設計

53

page 2 畫面設計 page 3 畫面設計與實驗二 page 4相同畫面

方塊的參數設定可調整 PD控制器中的 kp和 kd值以調整系統之響應 實測響應圖

訊 號 說 明 訊 號 說 明 ch1 弦波產生器產生之位置命令 ch3 馬達角位置訊號 ch2 加減速模組輸出之位置命令 ch4 馬達角速度訊號

54

直流馬達之閉迴路弦波加減速位置控制響應圖

55

7組合語言說明

本節將針對 DC馬達伺服控制實驗專用的程式模組進行功能與程式碼的說明其

有關於波形產生器與資料擷取模組等說明如下

SIN_waveasm 正弦波產生器 PWM_waveasm 方波產生器 IIR1_filterasm 一階濾波器 DAS4asm 資料蒐集模組

弦波產生器

此模組會產生週期性的正弦波方塊圖如下

outfrq

kBiasbias

ampkAmp

kFrqth

kThf=1TB

θ

A

其中

1正弦波有四個參數振幅(A)頻率(F)相位(θ)和偏移(B)其公式為 out = A sin(2πF t +θ) + B 2對於單純的正弦波產生器所對映的參數包括 kAmp 振幅值 kFrq 頻率值kFrq=655368000Hz其中 Hz的範圍為 0~4000例如 1000Hz =gt frq=8192 100Hz =gt frq=819 10Hz =gt frq=82 1Hz =gt frq=8 kTh 相角值0~255代表 0~360的相位當 th=0 時為正弦波 th=64 時為餘弦波 th=128時為反相波依此類推 kBias偏移值 3對於可調變的正弦波產生器其對映的輸入點為 amp 控制振幅的輸入點可產生調幅(AM)波形 frq 控制頻率的輸入點可產生調頻(FM)波形 th 控制相位的輸入點可產生調相(PM)波形 bias控制偏移的輸入點可產生雙頻混波(相加)波形 4若不使用調變功能時各個輸入點時的預設值為 amp 指向 kAmp 的位址 frq 指向 kFrq 的位址

56

th 指向 kTh 的位址 bias指向 kBias的位址

模組程式範例SIN_WAVEasm

local amp R0 IP kAmp 輸入點sin波的振幅 local frq R1 IP kFrq 輸入點sin波的頻率 local th R2 IP kTh 輸入點sin波的相角 local bias R3 IP kBias 輸入點sin波的中心偏移 local out R4 OP 輸出點sin波輸出 local tab R5 TP 表格指標指向 sin[256]的表格 local ang R6 內部變數相位角65536=360deg local kAmp R7 1000 參數振幅值 local kFrq R8 1000 參數頻率值=655368000Hz local kTh R9 0 參數相角值360deg=256 local kBias R10 0 參數偏移值 data 11 模組變數區長度及初值 initial 啟動程序 WR ang0 WR out0 ang=out=0 RET timer 即時控制程序(8KHz) RD ang ADD (frq) WR ang ang+=frq SFR 8 ADD (th) AND 255 ACC=sin(ang256+th) ADD tab WRH RDM table-look-up MUL (amp) SFR 12 ADD (bias) WR out out=ACCamp4096+bias RET table tab 256 sin[256]表格區10=4096 0 101 201 301 401 501 601 700 00~070deg 799 897 995 1092 1189 1285 1380 1474 08~0F 1567 1660 1751 1842 1931 2019 2106 2191 10~17 2276 2359 2440 2520 2598 2675 2751 2824 18~1F 2896 2967 3035 3102 3166 3229 3290 3349 20~27 3406 3461 3513 3564 3612 3659 3703 3745 28~2F 3784 3822 3857 3889 3920 3948 3973 3996 30~37 4017 4036 4052 4065 4076 4085 4091 4095 38~3F 4096 4095 4091 4085 4076 4065 4052 4036 40~4790deg 4017 3996 3973 3948 3920 3889 3857 3822 48~4F 3784 3745 3703 3659 3612 3564 3513 3461 50~57 3406 3349 3290 3229 3166 3102 3035 2967 58~5F

57

2896 2824 2751 2675 2598 2520 2440 2359 60~67 2276 2191 2106 2019 1931 1842 1751 1660 68~6F 1567 1474 1380 1285 1189 1092 995 897 70~77 799 700 601 501 401 301 201 101 78~7F 0 65435 65335 65235 65135 65035 64935 64836 80~87180deg 64737 64639 64541 64444 64347 64251 64156 64062 88~8F 63969 63876 63785 63694 63605 63517 63430 63345 90~97 63260 63177 63096 63016 62938 62861 62785 62712 98~9F 62640 62569 62501 62434 62370 62307 62246 62187 A0~A7 62130 62075 62023 61972 61924 61877 61833 61791 A8~A8 61752 61714 61679 61647 61616 61588 61563 61540 B0~B7 61519 61500 61484 61471 61460 61451 61445 61441 B8~BF 61440 61441 61445 61451 61460 61471 61484 61500 C0~C7270deg 61519 61540 61563 61588 61616 61647 61679 61714 C8~CF 61752 61791 61833 61877 61924 61972 62023 62075 D0~D7 62130 62187 62246 62307 62370 62434 62501 62569 D8~DF 62640 62712 62785 62861 62938 63016 63096 63177 E0~E7 63260 63345 63430 63517 63605 63694 63785 63876 E8~EF 63969 64062 64156 64251 64347 64444 64541 64639 F0~F7 64737 64836 64935 65035 65135 65235 65335 65435 F8~FF

就程式結構而言說明如下

timer 即時控制程序(8KHz) RD ang ADD (frq) WR ang ang+=frq SFR 8 ADD (th) AND 255 ACC=sin(ang256+th) ADD tab WRH RDM table-look-up MUL (amp) SFR 12 ADD (bias) WR out out=ACCamp4096+bias RET

1基本上我們以查表法計算 sin()其輸入θ的範圍為 0~255對映到 0~360deg其輸出 sin(θ)的範圍為+-4096對映到+-10的範圍

2建立一個內部變數 ang其範圍為 0~65535對映到 0~360的相位角 3每個timer程序都執行 ang+=frq的動作更新目前的相位角接著依照 ang的相位角查表得到 sin(ang256+th)值

4由於表格長度為 256-word所以必須將 ang256才能得到正確的對映關係而 th範圍為 0~255所以不需要像 ang一般的做額外處理

5sin()的範圍為(+1-1)而在表格中以(+4096~-4096)的型式記錄相當於 10=4096所以執行 Asin()時還要用 SFR12指令做4096的動作才能正確的取得輸出值

58

6就頻率輸入 frq而言其計算原則是將θ=ωt轉化成θ=Σ(ωdt)因為抽樣頻率

為 8KHz所以 dt=18000而得到 frq=655368000Hz公式其中 Hz為真正的頻率在 8KHz的抽樣頻率下其範圍為 0~4000

鋸齒波產生器

此模組會產生週期性的鋸齒波方塊圖如下

outfrq

kBiasbias

ampkAmp

kFrqth

kThf=1TB

θ

A

其中

1鋸齒波也有四個參數振幅(A)頻率(F)相位(θ)和偏移(B)和正弦波的定義完全一致唯一的差異是其輸出為鋸齒波而非正弦波

2基本波形是從週期開始時為 0一直遞增到週期結束時到達最高點然後立刻回歸

到 0重新開始 3以程式結構而論鋸齒波程式幾乎就是正弦波的相位計算部分只差沒有正弦波的

查表處理而已

模組程式範例SAW_WAVEasm

local amp R0 IP kAmp 輸入點sin波的振幅 local frq R1 IP kFrq 輸入點sin波的頻率 local th R2 IP kTh 輸入點sin波的相角 local bias R3 IP kBias 輸入點sin波的中心偏移 local out R4 OP 輸出點sin波輸出 local ang R5 內部變數相位角65536=360deg local kAmp R6 1000 參數振幅值 local kFrq R7 1000 參數頻率值=655368000Hz local kTh R8 0 參數相角值360deg=256 local kBias R9 0 參數偏移值 data 11 模組變數區長度及初值 initial 啟動程序 WR ang0 WR out0 ang=out=0 RET timer 即時控制程序(8KHz) RD ang ADD (frq) WR ang ang+=frq SFR 8 ADD (th) AND 255 ACC=(ang256+th)amp0x00ff MUL (amp) SFR 8 ADD (bias) WR out out=ACCamp256+bias

59

RET

脈衝波產生器

outfrq

kBiasbias

ampkAmp

kFrqth

kThf=1TB

θ

A

pwm

kDutyduty

此模組會產生週期性的脈衝波方塊圖如下

其中

1脈衝波有五個參數其中振幅(A)頻率(F)相位(θ)和偏移(B)四個參數和正弦波

定義完全一樣另外再增加一個負載率(D) 2基本波形是從週期開始時為 1隔段時間後換為 0然後持續到週期結束再重新開始其中 1所佔有的比例就是負載率當 D=0時為 0而 D=255時為 100

3和其他參數類似負載率(D)以 duty為其輸入點而以 kDuty為其參數值

模組程式範例PLS_WAVEasm

local amp R0 IP kAmp 輸入點脈衝波的振幅 local frq R1 IP kFrq 輸入點脈衝波的頻率 local th R2 IP kTh 輸入點脈衝波的相角 local bias R3 IP kBias 輸入點脈衝波的中心偏移 local duty R4 IP kDuty 輸入點脈衝波的負載率 local out R5 OP 輸出點脈衝波輸出 local ang R6 內部變數相位角65536=360deg local kAmp R7 1000 參數振幅值 local kFrq R8 1000 參數頻率值=655368000Hz local kTh R9 0 參數相角值360deg=256 local kBias R10 0 參數偏移值 local kDuty R11 128 參數負載率100 =256 data 12 模組變數區長度及初值 initial 啟動程序 WR ang0 WR out0 ang=out=0 RET timer 即時控制程序(8KHz)

60

RD ang ADD (frq) WR ang ang+=frq SFR 8 ADD (th) AND 255 ACC=(ang256+th)amp0x00ff SUB (duty) RD (amp) JLT t1 RD 0 ACC=(amp0) t1 ADD (bias) WR out out=ACC+bias RET

IIR 一階濾波器

此模組執行一階的 IIR濾波器方塊圖如下

kau x

Z-1

+

+

-

+低通濾波器

高通濾波器dx lp

hp

濾波器參數的計算公式如下

1假設濾波器的頻寬為 hz則 ωn=hz628 2若系統頻率為 8KHz則抽樣週期 dT為 dT=dt8000 其中 dt為模組參數 3則濾波器參數為 ka=ωndT4096或是 =hzdt62880004096即 =hzdt32 4當 dt決定後所允許的訊號頻寬為(4000dt)換句話說訊號頻寬會因為 dt增加而下降

為了方便實驗的運用下面列出常用的參數對照表

濾波頻寬

(Hz)

10 20 50 100 200 500 1000 2000

訊號頻寬

(Hz)

400 800 2000 4000 4000 4000 4000 4000

模組參數 dt 10 5 2 1 1 1 1 1

模組參數 ka 320 320 320 320 640 1600 3200 6400

表格的運用方式如下

1首先決定濾波頻寬 2接著查表找出對映的參數 dt和 ka 3再查表得到對映的訊號頻寬以決定是否需要串接前級濾波器

61

模組程式範例IIR1_FILTERasm

local u R0 IP 輸入點濾波器輸入 local lp R1 OP 輸出點低通濾波器輸出 local hp R2 OP 輸出點高通濾波器輸出 local dt R3 1 參數抽樣週期 local ka R4 4096 參數增益 ka10=4096 local prd R5 內部變數抽樣週期用 data 6 模組變數區長度 initial 開機啟動程序 WR lp0 WR hp0 WR prd1 RET lp=hp=0prd=1 timer 即時控制程序 SUB prd1 JNZ b9 if (--prdgt0) return RD dt WR prd prd=dt RD (u) SUB lp WR hp hp=u-lp MUL ka SFR 12 ADD lp WR lp lp+=(hpka4096) b9 RET

資料蒐集模組

資料蒐集模組是一個非常特殊的模組專門配合 eTTY 程式中的示波器使用

模組程式範例DAS4asm

local cmd R0 0 紀錄命令0=停止1=前置記錄2=正觸發4=負觸發6=觸發記錄 local dt R1 1 抽樣週期每 dT抽樣一次 local tab R2 TP DAS表格啟始位址 local cnt R3 0 目前記錄點(0~255) local ch1 R4 0 定義頻道1的變數位址 local ch2 R5 0 定義頻道2的變數位址 local ch3 R6 0 定義頻道3的變數位址 local ch4 R7 0 定義頻道4的變數位址 local trg R8 0 定義觸發頻道的變數位址 local th R9 0 觸發準位 local tail R10 0 觸發後的抽樣個數 local buf R11 1 抽樣計數(1~dt) local pnt R12 表格位址計算pnt=tab+cnt4 local len R13 表格長度計算(0~256) data 14 定義模組變數區的長度 table tab 1024 定義表格的長度 initial 啟動程序 WR cmd0 RET cmd=0 timer 控制程序

62

ADD cmd0 JZ t9 if (cmd==0) return SUB buf1 JNZ t9 if (--buf)gt0) return RD dt WR buf dt=buf RD cnt ADD 1 AND 0xff WR cnt cnt=(cnt+1)amp0xff SFL 2 ADD tab WR pnt pnt=tab+cnt4 RD (ch1) WR (pnt) ADD pnt1 pnt++=ch1 RD (ch2) WR (pnt) ADD pnt1 pnt++=ch2 RD (ch3) WR (pnt) ADD pnt1 pnt++=ch3 RD (ch4) WR (pnt) pnt =ch4 RD cmd SUB 1 JZ t9 SUB 1 JZ t2 SUB 1 JZ t3 SUB 1 JZ t4 SUB 1 JZ t5 SUB 1 JZ t6 JR t7 t2 RD (trg) SUB th JGE t9 ADD cmd1 JR t9 wait trgltth t3 RD (trg) SUB th JLE t9 JR t6 wait trggtth t4 RD (trg) SUB th JLE t9 ADD cmd1 JR t9 wait trggtth t5 RD (trg) SUB th JGE t9 JR t6 wait trgltth t6 WR len0 WR cmd7 len=0cmd=7 t7 ADD len1 SUB tail JLT t9 WR cmd0 if ((++len)gt=0x80) cmd=0 t9 RET

與 DC 馬達控制相關的程式模組有以下 4個程式模組說明如下

(1)加減速控制模組 ACC_controlasm (2)光電盤輸入模組 POS_inputasm (3)PWM輸出模組 PWM_outputasm (4)PD控制模組 PD_controlasm

71加減速控制模組 此程式模組主要功能在於執行位置控制的加減速命令修正其數學模式採用 Lynn

濾波器的架構參見下圖

cmd

2

+

old Z -1

-

Z -1

Z -1

Z-1

Z-1x0 x1 x8 x9 x16

+ -

++

2

Z-1

Z-1 y1 y2

+

-

y0

+ +

sumZ-1

+164

12

out

dif

+

63

加減速控制模組方塊圖

其中

1Lynn 濾波器的階數固定成八階也就是 m=8其公式為 H(z) = (1-2Z-m+Z-2m)(1-2Z-1+Z-2)m2

2因為m=8所以m2=64因此最後計算低通濾波的部份時要先做除 64的運算 3因為低通濾波(lp)和 y0之間有 64倍的差異代表 y0y1y2的變化範圍比濾波器輸

入值要擴大許多例如輸入值在+-1000變化時y0y1y2很可能會在+-64000之間變化這範圍已經超出整數處理的範圍很可能會造成錯誤的計算結果

4所以在實驗時輸入值的變化範圍必須控制在+-500之間以保證計算的正確性 5對於 Lynn 濾波器當 m=8時其濾波器的頻寬固定為 1 kHzmdt也就是 dt=1時頻寬為 125 Hz dt=2時頻寬為 625Hz依此類推 6對於 Lynn 濾波器其濾波器的延遲固定為 m個抽樣週期因此設計 hp = x8 - lp 即可得到高通濾波器的對應結果 7其中乘 2和除 64的運算以移位運算取代所以整個程式中並無任何乘法運算 8Lynn 濾波器本身並不是穩定濾波器所以在程式啟動時必須確實的將所有狀態

(x0~x16)歸零否則會產生不穩定的狀態輸出

因為 Lynn濾波器中所有參數固定所以除了抽樣週期 dt 之外並無任何可調參數

抽樣週期 dt 可以控制頻寬dt 越大則濾波器頻寬越低

將步階命令值的輸出送入 Lynn 濾波器中經由低通濾波器的效應可以減緩命

令的變化程度達到加減速控制的目的以下為使用 Lynn 濾波器型式實現加減速控

制的組合語言程式列印 如欲更進一步瞭解 Lynn 濾波器與 FIR 數位濾波器之間的關係可以參考通訊實驗

四數位濾波器設計(FIR)中之說明

ACC_controlasm程式列印 local cmd R0 IP 輸入點位置命令

local out R1 OP 輸出點加減速處理後的位置命令

local dif R2 OP 輸出點位置微分命令

local axis R3 0 馬達編號0=X1=Y2=Z3=C

local old R4 內部變數微分計算用

local sumL R5 內部變數積分計算用

local sumH R6 內部變數積分計算用

local y0 R7 內部變數y(0~2)

local y1 R8 local y2 R9

local x0 R10 內部變數x(0~16)

local x1 R11 local x2 R12 local x3 R13 local x4 R14

local x5 R15 local x6 R16 local x7 R17 local x8 R18

local x9 R19 local x10 R20 local x11 R21 local x12 R22

local x13 R23 local x14 R24 local x15 R25 local x16 R26

64

data 27 模組變數區長度

initial 開機啟動程序

WR dif0 RD (cmd) WR out WR old dif=0 out=old=cmd

sumHL=cmd64

SFL 6 WR sumL RD out SFR 10 SGN 5 WR sumH

RPT 17 WR x00 RPT 3 WR y00 RET x[0~16]=0y[0~2]=0

timer 即時控制程序

RD (cmd) SUBX old WR x0 x0=cmd-old old=cmd

SUB x81 ADD x16 ADD y11 SUB y2 WR y0 y0=x0-2x8+x16+2y1-y2

SGN ADD sumL WR sumL RDH ADC sumH WR sumH sumHL+=y0

WRH RD sumL SFR 6 WR out out=sumHL64

RD y0 SGN SFR WR dif dif=y032mm

RD x0 RPT 16 RDX x1 x[i]=x[i-1] i=1~16

RD y0 RDX y1 WR y2 y[i]=y[i-1] i=1~2

b9 RET

72光電盤輸入模組

DC馬達的位置由光電盤量測之預設儲存於 0xac與 0xbe二個輸入埠位址中其中位址 0xac記錄 X軸馬達的位置位址 0xbe記錄 Y軸馬達的位置由於本實驗的DC馬達接在 Y軸的位置上因此程式中直接選用 Y軸的輸入 光電盤位置輸入的程式列印如下其中速度由位置的差分而得至於馬達的位置

則使用內部 2個 word加以記錄精度為 32位元 POS_inputasm程式列印 local spd R0 OP 輸出點速度量測值

local ang R1 OP 輸出點角度量測值

local angH R2 內部變數角度的 32 位元部分

local mode R3 0x308 模式選擇15MHzAB 相正反向輸入

local pht R4 0xac 輸入阜地址光電盤輸入(0xac)

local phtc R5 0xbe 輸入阜地址光電盤模式(0xbe)

local old R6 內部變數速度更新用

data 7 模組變數區長度

initial 開機啟動程序

RD mode WR (phtc) phtc=mode

RD (pht) WR old WR spd0 RET old=phtspd=0

timer 即時控制程序

RD (pht) SUBX old SGN 11 WR spd spd=(pht-old)old=pht

65

ADD ang WR ang angHL+=spd

RDH ADC angH WR angH

RET

73 PWM輸出控制模組 模組方塊

cmd PWM輸出

程式說明 1在開機時將切換保護時間寫到輸出阜 0xbc上其中切換保護值為 0~6360=5us 2在每次 timer interrupt時將 cmd訊號處理後寫到輸出阜 0xb8上

PWM_outputasm程式列印 local cmd R0 IP gnd 輸入點v相命令

local gain R1 4096 參數輸出增益1=4096

local bias R2 2048 參數輸出偏壓0=2048

local limit R3 4095 參數輸出極限1=4095

local zone R4 0x88f0 參數頻率=12KHz切換保護=5us

local pwm R5 0xb8 輸出阜地址PWM0 輸出(0xb8)

local mode R6 0xbc 輸出阜地址PWM 模式(0xbc)

local p0md R7 0xf8 輸出阜地址port0 模式(0xf8)

local gnd R8 0 輸入接地點

data 9 模組變數區長度

initial 開機啟動程序

RD bias WR (pwm) pwm=bias

RD 0xffff WR (p0md) set port0 mode

RD zone WR (mode) RET mode=zone

stop 關機保護程序

RD bias WR (pwm) RET pwm=bias

timer 即時控制程序

RD (mode) xor 1 and 1 WR (mode) trigger watch-dog

RD (cmd) MUL gain SFR 12 ADD bias ACC=(cmdgain4096)+bias

MAX 0 MIN limit WR (pwm) pwm=limit(ACC)

RET

66

74 PD 控制模組

PD控制的模組方塊參見圖二十一所示其中比例控制的部份直接由增益 kp加以調整微分控制的部份則由誤差的差分經增益 kd的調整而得

Σ+

-

cmd

fdk

err out

Σ

pk

dk

Σ

+

+

+

-

old1minusZ

PD控制器的方塊圖

PD_controlasm程式列印 local cmd R0 IP gnd 輸入點位置命令(可忽略)

local fdk R1 IP gnd 輸入點位置回授(可忽略)

local out R2 OP 輸出點用以控制速度迴路

local kp R3 256 參數增益 kp10=256

local kd R4 0 參數增益 kd10=256

local err R5 0 內部變數

local old R6 0 內部變數

local gnd R7 0 無輸入時的短路點

data 8 模組變數區長度

initial 開機啟動程序

WR out0 WR old0 RET out=old=0

timer 即時控制程序

RD (cmd) SUB (fdk) PRTF WR err

MUL kp SFR 8 P=(cmd-fdk)kp256

RDS err SUBX old MUL kd SFR 8 D=(err-old)kd256

ADDS

WR out out=P+D

RET

程式中預設增益值的 10以整數值 256為基底因此使用 SFR 8的指令加以調

整另外在在計算微分項的程式部份用到 SUBX old的指令其詳細的暫存器動作如

下 參考 piDSP的指令說明SUBX指令將總共用到 3個時序參考錯誤 找不到參照

67

來源在時序 1時將原先 AX的資料拷貝一份到 HX中時序 2時正式執行減

法的動作所以 AX暫存器中的內容會變成 err-old時序 3時DSP會將存放在 HX暫存器中的內容拷貝一份到 old的記憶體中也就是經由 SUBX此一精簡指令將

同時完成計算差分所需要的相減與資料疊代的動作有效的利用 piDSP控制器 DSP核心的精簡指令將可以大幅提昇系統的計算速度

HX AXoldSUBXerr err

old

err

errerr olderr minus

1_err

errerr olderr minus err

1_err

1

2

3

SUBX的指令時序與暫存器變化

68

8附錄快速安裝說明

光纖網路通訊 FPGA 發展系統 (適用於 WIN-XP200098 系統)

快速安裝說明

26Pin 負載輸出入埠

雙電源︵5

12

伏︶輸入埠

單電源︵5

伏︶輸入埠

USB

光纖線輸

號 光纖線輸出埠

入 傳 埠

首先將光碟片 RFFPGA 目錄檔案拷貝在您工作硬碟裡面

第一次安裝時先將 USB 傳輸線接上電腦主機將電源供應器接上 FPGA 模組此時電

腦會出現安裝 USB-Serial 驅動程式選擇從清單安裝此驅動程式放置在光碟片

RFFPGA-USBdrive 選擇您目前安裝系統

可選擇 WIN-98WIN-MEWIN-2000WIN-XP 系統配合您現在工作電腦作業系統

69

注意一般電腦 USB 埠很多插口當您安裝驅動程式時是配合您當時插入之埠

下次如您插入不同接口埠時電腦會再次要求安裝驅動程式這是正常現象請再次安

裝驅動程式否則無法使用

FPLC 操作

首先進入 RFFPGA裡子目錄 testASM直接點選 fPLCexe 出現下面操作畫面(也可直接將

此檔案放置桌面直接點選)

(或者選擇 File 再執行 Setuphellip 選擇您要執行 CAI 檔)

70

進入下面操作畫面 首先使用滑鼠在 FPGA下載按鈕單擊動作使 FPGA變成 DSP晶片 實驗一至實驗五皆為使用 DSP組合語言設計程式其原始程式分別為 testASM1至testASM5可使用 texPad 開啟與編輯程式內容 實驗三與實驗五多有 IO控制動作 當選擇實驗三時出現下面畫面

71

eM_USB 模組

數字型 LED

0 1 2 34 5 6 78 9 A BC D E F

燈號型 LED

44 鍵盤

ADC0 ADC1 DAC0 DAC1

LED 選擇KEY 選擇

模 式 1

0123

注意操作畫面 3與 4 說明開關與按鍵選擇位置後選擇程式下載再按程式啟動如您

按下 0-3按鍵時燈號型 LED會有不同方向閃爍顯示程式停止時結束所有 IO控制動作再按回首頁選擇其他實驗 實驗四與實驗五

模式3

0 1 2 34 5 6 78 9 A BC D E F

按照上面開關選擇直接操作如果以上實驗皆能按照正常操作表示您光纖網路通訊

FPGA發展模組以能正常使用 注意 開機與關機動作順序如下

開機電腦啟動 --- eM_USB 模組電源接上 --- USB 接上電腦 ---

啟動 FPLC 軟體 --- 下載 FPGA 程式

關機關閉 FPLC 軟體 --- eM_USB 模組電源拔掉 --- 拔掉電腦 USB 接頭 ---關掉

電腦

如果以上順序有亂可能造成 USB 找不到驅動造成無法下載經過幾次測試還是

無法下載建議重新啟動電腦主機按照正確步驟操作

72

FPGA 下載操作

進入 FPLC 操作系統按照下列步驟選擇節點模組與下載 bit FPGA 檔案

在 VHDLDEMO 子目錄下您可以選擇您目前 FPGA 種類型號在此型號下我們已將 VHDL

與數位邏輯設計課本範例全部放於此處

73

光纖網路連線 FPGA 下載操作

首先利用光纖線將 eM_USB0 模組光纖輸出埠接至 eM_USB1 模組光纖輸入埠以此

類推最後再將最後 eM_USBN 模組光纖輸出埠接至 eM_USB0 模組光纖輸入埠配置

如附圖方式

個人電腦(Windows) eM_USB模組

0USB

eM_USB模組1

光纖網路

eM_USB模組2

eM_USB模組N

配置完成後進入 FPLC 系統首先必須先將 Node00 下載在 testASM 子目錄裡

piDSPv0bit 檔讓 eM_USB0 模組 FPGA 具備 DSP 功能才能執行光纖網路通訊

操作如下

此時您就可以選擇分別下載至各模組 FPGA 檔 bit

74

安裝 FPLC 注意事項

當您進入 FPLC 時

按 FILE 選擇 programhellip 選擇檔案為 exp_dcmplc 出現下面畫面

正常顯示畫面為

75

DOS 環境操作

在 PC 端的操作是在 Windows 環境中的 DOS 視窗中執行指令範例如下

eFPGA progNETbit 下載 FPGA電路至網路節點0(即 USB節點)中 eFPGA testLEDbit 1 下載 FPGA電路至網路節點1中

對於單一節點的控制程序如下

1將 eM_USB模組連結個人電腦的 USB端 2eM_USB模組開機 3執行下載指令即可 eFPGA xxxxbit 4若要更改 FPGA電路只要重新執行下載指令即可

對於多個網路節點的控制程序如下

1第一組 eM_USB模組連結個人電腦的 USB端再以光纖網路依序其他各節點 2連接 USB界面者為模組0從光纖發射端連接出去的模組為1依此類推 3將所有 eM_USB模組開機 4執行下載指令如下 eFPGA progNETbit 模組0必須先下載指定的 FPGA電路 eFPGA xxxxbit 1 再依序下載其他網路模組的 FPGA電路 eFPGA yyyybit 2 eFPGA zzzzbit 最後再重新下載模組0的 FPGA電路 5換句話說模組0必須先執行 progNETbit讓光纖網路接受 FPGA控制後才能透過光纖網路下載至其他節點等全部網路節點下載完畢後再將模組0的 FPGA重新下載讓模組0也可自由執行任意的 FPGA電路

6若要更改某一個網路節點中的 FPGA電路只要重新執行下述指令 eFPGA progNETbit 模組0必須先下載指定的 FPGA電路 eFPGA yyyybit 2 下載指定網路模組的 FPGA電路 eFPGA zzzz bit 最後再重新下載模組0的 FPGA電路 換句話說除非模組0中的 FPGA已經包括光纖網路管理電路否則一定要先在

模組0中下載網路管理電路後才能下載指定網路節點的 FPGA電路

76

光纖網路通訊 FPGA 發展系統

系統配置

光纖網路通訊 FPGA 發展系統的系統配置圖如下

個人電腦(Windows) eM_USB模組

0USB

eM_USB模組1

光纖網路

eM_USB模組2

eM_USB模組N

其中

1基本模組為 eM_USB模組可用 USB界面和個人電腦連線並提供 USB對光纖網路的轉換功能使得個人電腦可以獨立控制光纖網路中的每個網路節點

2eM_USB模組也可以作為光纖網路中的網路節點透過光纖網路而接受個人電腦的

監控 3就個人電腦而言不論是 USB界面直接連結或是以光纖網路間接連結的 eM_USB模組都是可以直接監控的網路節點最多可以同時控制一個 USB節點和 30個網路節點

4對於每一個網路節點個人電腦都可執行 eM_USB模組中 FPGA的電路下載工作並在適當的 FPGA電路配合下可執行 eM_USB模組中 FPGA內部電路的讀寫控制 5透過適當的 FPGA電路設計各網路節點都可透過光纖網路和其他任何網路節點

作同步通訊執行 FPGA內部記憶體的資料交換資料交換頻率可達 1KHz以上

77

網路模組配置

每個網路模組的標準配置圖如下

eM_USB模組光纖網路

USB eM_FPGA卡

eM_DEMO模組

eM_EXP實驗模組

DC電源

其中

1網路模組以 eM_USB模組為主提供基本的 USB界面和光纖網路連線 2eM_USB模組中的 FPGACPLD採用插卡型式可選擇不同的 eM_FPGA卡包括

eM_2V1K卡可選用 Virtex系列的 XC2V250和 XC2V1000 eM_3S1K卡可選用 Spartan3系列的 XC3S400XC3S1000和 XC3S1500 eM_3S50卡可選用 Spartan3系列的 XC3S50XC3S200和 XC3S400 eM_95XL卡可選用 9500XL系列的 XC95144XL和 XC95288XL 3eM_USB模組中的對外連線有兩種一種是 26P接頭用以連接既有的各種實驗模

組另一種是兩組 50P接頭將 FPGA中各接腳引出用以連接專題實驗 4eM_DEMO模組就是插上 50P接頭的教學模組其中包括 LED 數字顯示和 44鍵盤也具備兩組的 ADC和兩組的 DAC接頭提供類比訊號的測試工具

常用的實驗組合包括

1精簡組合包括(eM_USB+eM_FPGA)提供基本的網路節點適用於專題實驗 2標準組合包括(eM_USB+eM_FPGA+eM_DEMO)提供基礎 FPGA設計的教學實驗

3實驗組合包括(eM_USB+eM_FPGA+eM_DEMO+eM_EXP)提供進階的 FPGA實驗可依需求選用不同的實驗模組

78

eM_USB 模組

eM_USB 模組的電路配置圖如下

TxRx

DCPower

USB

JP2

JP3

光纖界面

外加電源

PC連線

JP1

eM_FPGA模組

FT232 CPLD FlashROM

SRAM

10cm

6cm

JP4

其中

1對外的連線接頭包括 DC電源 可選擇單電源(5V)或是多電源(5V+12V-12V)兩種 USB界面 直接連接個人電腦 光纖界面連接光纖網路 2實驗界面包括 JP1負責內部 CPLD的電路下載 JP2JP3兩組 50P的擴張用接頭 JP4 標準 26P接頭用以連接各種實驗模組 3內部的電路配置包括 A以 SO-DIMM接頭連接各種 eM_FPGA卡 B內附 EEPROMFlashROM和 SRAM提供 FPGA作應用測試 C以一顆 FT232BM作為 USB界面解碼而以一顆 CPLD作為光纖網路解碼 D提供各種 eM_FPGA卡的電路下載功能 4內附五顆 LED由上而下依序為 usbLED指示 USB界面的讀寫狀態 tstLED可由 FPGA電路自行定義 stsLED可由 FPGA電路自行定義 RxLED 可由 FPGA電路自行定義 TxLED 可由 FPGA電路自行定義

79

外部接腳定義

外部接頭的接點順序圖示如下

上視圖

JP11 9 JP4

126225

JP31

50249

JP21

50249

而各接頭的接點定義如下

JP1 JP4 JP2 JP3 1+33V 1+12V 2+12V 1 GND 2 GND 1 GND 2 GND 2GND 3 ADC 4 DAC 3POWER 4ALARM 3 +5V 4 +5V 3nc 5 yPB2 6 yPB3 5RxNET 6TxNET 5+12V 6+12V 4TCK 7 yPB1 6 yPB4 7RxUSB 6TxUSB 7-12V 6-12V 5nc 9 yPB0 10yPB5 9RxCAN 10TxCAN 9 ADC 10 DAC 6TDO 11yPB6 12yPB7 11P0D0 12P0D1 11P1D0 12P1D1 7TDI 13yGND 14yPC3 13P0D2 14P0D3 13P1D2 14P1D3 8nc 15yPC2 16yPC1 15P0D4 16P0D5 15P1D4 16P1D5 9TMS 17yPC0 18yPA0 17P0D6 18P0D7 17P1D6 18P1D7 19yPA1 20yPA2 19P0D8 20P0D9 19P1D8 20P1D9 21yPA3 22GND 21P0D10 22P0D11 21P1D10 22P1D11 23GND 24+5V 23P0D12 24P0D13 23P1D12 24P1D13 25+5V 26nc 25P0D14 26P0D15 25P1D14 26P1D15 27P2D0 28P2D1 27PxA0 28PxA1 29P2D2 30P2D3 29PxA2 30PxA3 31P2D4 32P2D5 31PxA4 32PxA5 33P2D6 34P2D7 33PxA6 34PxA7 35P2D8 36P2D9 35PxB0 36PxB1 37P2D10 38P2D11 37PxB2 38PxB3 39P2D12 40P2D13 39PxB4 40PxB5 41P2D14 42P2D15 41PxB6 42PxB7 43ADC0 44ADC1 43PxC0 44PxC1 45ADC2 46ADC3 45PxC2 46PxC3 47ADC4 48ADC5 47PxC4 48PxC5 49DAC0 50DAC1 49PxC6 50PxC7

80

eM_FPGA 模組

在各種 eM_FPGA 模組中FPGA 對外電路的標準配置圖如下

24576MHz

FlashROM

26PSRAM

EEPROM

mD[8]

yPA[4]

FPGACPLD

mA[19]mRDmWRmCSeeCKeeCSeeDIeeDO

光纖界面 RxNETTxNET

USB 界面 RxUSBTxUSBCLK24MPOWERALARM

LED

tstLEDstsLEDRxLEDTxLED

yPB[8]yPC[4]

ADCDAC

ADC[8]

實驗模組

ADC[2]

DAC[2]

xPA[4]

xPB[8]

xPC[4]

基礎實驗

其中

1FPGACPLD可以選擇下述幾種 XC2V250XC2V1000 採用 eM_2V1K模組其中 FPGA為 FG456包裝 XC3S400XC3S1000XC3S1500採用 eM_3S1K模組其中 FPGA為 FG456包裝 XC3S400XC3S1000XC3S1500採用 eM_3S1K模組其中 FPGA為 FG456包裝 XC3S50XC3S200XC3S400 採用 eM_3S50模組其中 FPGA為 TQ144包裝 XC95144XLXC95288XL 採用 eM_95XL模組其中 CPLD為 TQ144包裝 2採用 FG456包裝者可以控制所有的 IO界面 3採用 TQ144包裝者只是不能控制 RAM和 FlashROM而可以控制其他所有的界面 4所有 FPGA模組都可自由選擇由 USB界面或是由光纖界面下載電路但是 CPLD模組只能固定由 USB界面下載電路

5所有 FPGACPLD模組都可透過 26P接頭連接既有的各種實驗模組

81

FPGA 接腳對照表

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

mD0 XD6 mD0 A17 C13 -- -- mD1 XD7 mD1 B17 D12 -- -- mD2 XD8 mD2 C17 D11 -- -- mD3 XD9 mD3 D17 C11 -- -- mD4 XD10 mD4 E17 D10 -- -- mD5 XD11 mD5 E16 C10 -- -- mD6 XD12 mD6 E14 D9 -- -- mD7 XD13 mD7 E13 D7 -- -- mA0 XD14 mA0 D13 C7 -- -- mA1 XD15 mA1 C13 D6 -- -- mA2 XA0 mA2 V5 C3 -- -- mA3 XA1 mA3 U5 C4 -- -- mA4 XA2 mA4 Y2 D3 -- -- mA5 XA3 mA5 Y1 D4 -- -- mA6 XA4 mA6 V4 E3 -- -- mA7 XA5 mA7 V3 E4 -- -- mA8 XA6 mA8 W2 F3 -- -- mA9 XA7 mA9 W1 F4 -- -- mA10 XA8 mA10 T2 G6 -- -- mA11 XA9 mA11 T1 K3 -- -- mA12 XA10 mA12 R4 K10 -- -- mA13 XA11 mA13 R3 L3 -- -- mA14 XA12 mA14 R2 L4 -- -- mRD XRD mRD R1 D5 -- -- mWR XWR mWR P6 C6 -- --

POWER P0A0 POWER B4 B20 P1 P5 ALARM P0A1 ALARM A4 A19 P2 P6 RxNET P0A2 RxNET C4 B19 P4 P7 TxNET P0A3 TxNET C5 A18 P5 P9 RxUSB P0B0 RxUSB B5 A15 P6 P10 TxUSB P0B1 TxUSB A5 B15 P7 P11 RxCAN P0B2 RxCAN D6 A14 P8 P12 RxCAN P0B3 TxCAN C6 B14 P10 P13

CLK24M CLK24M CLK24M E12 B12 P124 P38

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

PWM0H P3A0 P0D0 E6 A8 P21 P23 PWM0L P3A1 P0D1 E5 B8 P23 P24 PWM1H P3A2 P0D2 C2 B6 P24 P25 PWM1L P3A3 P0D3 C1 A5 P25 P26 PWM2H P3A4 P0D4 D2 B5 P26 P27

82

PWM2L P3A5 P0D5 D1 A4 P27 P28 PWMenb P3A6 P0D6 E4 B4 P28 P30 PHT1Z P3A7 P0D7 E3 A3 P30 P31 PHT1A P3B0 P0D8 G2 C1 P31 P32 PHT1B P3B1 P0D9 G1 C2 P32 P33 PHT0A P3B2 P0D10 H5 D1 P33 P34 PHT0B P3B3 P0D11 J6 D2 P35 P35 AMP0 P3B4 P0D12 H4 E1 P36 P39 AMP1 P3B5 P0D13 H3 E2 P40 P40 AMP2 P3B6 P0D14 H2 F2 P41 P41 AMP3 P3B7 P0D15 H1 G1 P44 P43 eeSK P0C3 P1D0 C10 B9 P20 P22 eeCS P0C2 P1D1 D10 A9 P18 P21 eeDI P0C1 P1D2 F10 B10 P17 P20 eeDO P0C0 P1D3 E10 B11 P15 P19 ssCK P0B7 P1D4 E8 A11 P14 P17 ssCS P0B6 P1D5 E7 A12 P13 P16 ssDI P0B5 P1D6 A6 B13 P12 P15 ssDO P0B4 P1D7 B6 A13 P11 P14

ppCLK P3C0 P1D8 K4 G2 P46 P44 ppDIN P3C1 P1D9 K3 K1 P47 P45 TxD P3C2 P1D10 K2 K2 P50 P46 RxD P3C3 P1D11 K1 L1 P51 P48

tstLED P3C4 P1D12 L5 L2 P52 P49 stsLED P3C5 P1D13 L4 M1 P53 P50 RxLED P3C6 P1D14 L3 M2 P55 P51 TxLED P3C7 P1D15 L2 N1 P56 P52

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

xPA0 P2A0 P2D0 AA3 N2 P59 P53 xPA1 P2A1 P2D1 Y4 T1 P60 P54 xPA2 P2A2 P2D2 AA4 T2 P63 P56 xPA3 P2A3 P2D3 AB4 U2 P68 P57 xPC0 P2A4 P2D4 W5 V1 P69 P58 xPC1 P2A5 P2D5 Y5 V2 P70 P59 xPC2 P2A6 P2D6 AA5 W1 P73 P60 xPC3 P2A7 P2D7 AB5 W2 P74 P61

-- P2B0 P2D8 V6 Y1 P76 P64 -- P2B1 P2D9 V7 Y2 P77 P66 -- P2B2 P2D10 W6 AA3 P78 P68

mCS P2B3 P2D11 Y6 AB4 P79 P69 mA15 P2B4 P2D12 V9 AA4 P80 P70 mA16 P2B5 P2D13 V10 AB5 P82 P71 mA17 P2B6 P2D14 W10 AA5 P83 P74 mA18 P2B7 P2D15 Y10 AA6 P84 P75 CS0 P2C0 ADC0 AA10 AB8 P85 P76

83

SDIN0 P2C1 ADC1 AB10 AA8 P86 P77 CS1 P2C2 ADC2 U10 AB9 P87 P78

SDIN1 P2C3 ADC3 U11 AA9 P89 P79 SCLK P2C4 ADC4 V11 AB10 P90 P80 CS2 P2C5 ADC5 W11 AA10 P92 P81

SDOUT P2C6 ADC6 Y11 AB11 P93 P82 LDAC P2C7 ADC7 AA11 AA11 P95 P83

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

xPB0 P1A0 PxA0 M1 M3 P135 P85 xPB1 P1A1 PxA1 M2 M4 P132 P86 yPB2 P1A2 PxA2 M3 N3 P131 P87 yPB3 P1A3 PxA3 M4 N4 P130 P88 yPB1 P1A4 PxA4 M5 T4 P129 P91 yPB4 P1A5 PxA5 M6 T5 P128 P92 yPB0 P1A6 PxA6 N1 U3 P127 P93 yPB5 P1A7 PxA7 N2 U4 P125 P94 yPB6 P1B0 PxB0 U13 V3 P119 P95 yPB7 P1B1 PxB1 V13 V4 P118 P96 xPB2 P1B2 PxB2 W13 W3 P116 P97 xPB3 P1B3 PxB3 Y13 W4 P113 P98 xPB4 P1B4 PxB4 AA13 Y3 P112 P100 xPB5 P1B5 PxB5 AB13 Y4 P96 P101 yPC3 P1B6 PxB6 U12 Y5 P97 P102 yPC2 P1B7 PxB7 V12 W5 P98 P103 yPC1 P1C7 PxC0 AB17 W11 P108 P113 yPC0 P1C6 PxC1 AA17 Y11 P107 P112 yPA0 P1C5 PxC2 Y17 W10 P105 P111 yPA1 P1C4 PxC3 W17 Y10 P104 P110 yPA2 P1C3 PxC4 AB18 W9 P103 P107 yPA3 P1C2 PxC5 AA18 W8 P102 P106 xPB6 P1C1 PxC6 Y18 W6 P100 P105 xPB7 P1C0 PxC7 W18 Y6 P99 P104

84

eM_DEMO 模組

eM_DEMO 模組的電路配置圖如下

eM_USB 模組

數字型 LED

0 1 2 34 5 6 78 9 A BC D E F

燈號型 LED

44 鍵盤

ADC0 ADC1 DAC0 DAC1

LED 選擇KEY 選擇

其中

1eM_DEMO模組的基本功能包括 A將 xPAxPBxPC等 16個 IO訊號引出控制 LED和鍵盤電路 B將 ADDA訊號引出並放大成+-10V的工作範圍 2LED和鍵盤可以選擇三種模式由 LED和 KEY 兩組開關作選擇圖示如下

模式1

0123

模式2 模式3

0 1 2 34 5 6 78 9 A BC D E F

0123

3模式14鍵輸入並搭配 16點的 LED燈號顯示其中 16點 LED分別對映到 xPA[0~3]xPB[0~7]和 xPC[0~3] 4組按鍵分別對映到 xPC[0~3] 4模式24鍵輸入並搭配四個 7段式數字顯示其中 數字顯示由 xPA[0~3]作數字掃瞄而由 xPB[0~7]作 7段式 LED控制 4組按鍵 分別對映到 xPC[0~3] 5模式316鍵輸入並搭配四個 7段式數字顯示其中 數字顯示由 xPA[0~3]作數字掃瞄而由 xPB[0~7]作 7段式 LED控制 16組按鍵由 xPA[0~3]作鍵盤掃瞄而由 xPC[0~3]作鍵盤讀取 6根據VHDL與數位邏輯設計的章節其中 第 1章至 10章的實驗採用模式1而 第 11章實驗採用模式2而 第 12章之後的實驗都採用模式3

85

FPGA UCF 定義

eM_3S1K 模組

NET CLK LOC = B12

NET XAlt0gt LOC = N2

NET XAlt1gt LOC = T1

NET XAlt2gt LOC = T2

NET XAlt3gt LOC = U2

NET XBlt0gt LOC = M3

NET XBlt1gt LOC = M4

NET XBlt2gt LOC = W3

NET XBlt3gt LOC = W4

NET XBlt4gt LOC = Y3

NET XBlt5gt LOC = Y4

NET XBlt6gt LOC = W6

NET XBlt7gt LOC = Y6

NET XClt0gt LOC = V1

NET XClt1gt LOC = V2

NET XClt2gt LOC = W1

NET XClt3gt LOC = W2

NET YAlt0gt LOC = W10

JP4 接頭

NET YAlt1gt LOC = Y10

NET YAlt2gt LOC = W9

NET YAlt3gt LOC = W8

NET YBlt0gt LOC = U3

NET YBlt1gt LOC = T4

NET YBlt2gt LOC = N3

NET YBlt3gt LOC = N4

NET YBlt4gt LOC = T5

NET YBlt5gt LOC = U4

NET YBlt6gt LOC = V3

NET YBlt7gt LOC = V4

NET YClt0gt LOC = Y11

NET YClt1gt LOC = W11

NET YClt2gt LOC = W5

NET YClt3gt LOC = Y5

在光碟片中 RFFPGAVHDLDEMOBIT3S1K 裡有 VHDL 與數位邏輯設計書本範例原始檔與合成檔

86

eM_3S50 模組

NET CLK LOC = P124

NET XAlt0gt LOC = P59

NET XAlt1gt LOC = P60

NET XAlt2gt LOC = P63

NET XAlt3gt LOC = P68

NET XBlt0gt LOC = P135

NET XBlt1gt LOC = P132

NET XBlt2gt LOC = P116

NET XBlt3gt LOC = P113

NET XBlt4gt LOC = P112

NET XBlt5gt LOC = P96

NET XBlt6gt LOC = P100

NET XBlt7gt LOC = P99

NET XClt0gt LOC = P69

NET XClt1gt LOC = P70

NET XClt2gt LOC = P73

NET XClt3gt LOC = P74

NET YAlt0gt LOC = P105

JP4 接頭

NET YAlt1gt LOC = P104

NET YAlt2gt LOC = P103

NET YAlt3gt LOC = P102

NET YBlt0gt LOC = P127

NET YBlt1gt LOC = P129

NET YBlt2gt LOC = P131

NET YBlt3gt LOC = P130

NET YBlt4gt LOC = P128

NET YBlt5gt LOC = P125

NET YBlt6gt LOC = P119

NET YBlt7gt LOC = P118

NET YClt0gt LOC = P107

NET YClt1gt LOC = P108

NET YClt2gt LOC = P98

NET YClt3gt LOC = P97

在光碟片中 RFFPGAVHDLDEMOBIT3S200 裡有VHDL與數位邏輯設計書本範例原始檔與合成檔

87

eM_95XL 模組

NET CLK LOC = SPIN38

NET XAlt0gt LOC = SPIN53

NET XAlt1gt LOC = SPIN54

NET XAlt2gt LOC = SPIN56

NET XAlt3gt LOC = SPIN57

NET XBlt0gt LOC = SPIN85

NET XBlt1gt LOC = SPIN86

NET XBlt2gt LOC = SPIN97

NET XBlt3gt LOC = SPIN98

NET XBlt4gt LOC = SPIN100

NET XBlt5gt LOC = SPIN101

NET XBlt6gt LOC = SPIN105

NET XBlt7gt LOC = SPIN104

NET XClt0gt LOC = SPIN58

NET XClt1gt LOC = SPIN59

NET XClt2gt LOC = SPIN60

NET XClt3gt LOC = SPIN61

NET YAlt0gt LOC = SPIN111

JP4 接頭

NET YAlt1gt LOC = SPIN110

NET YAlt2gt LOC = SPIN107

NET YAlt3gt LOC = SPIN106

NET YBlt0gt LOC = SPIN93

NET YBlt1gt LOC = SPIN91

NET YBlt2gt LOC = SPIN87

NET YBlt3gt LOC = SPIN88

NET YBlt4gt LOC = SPIN92

NET YBlt5gt LOC = SPIN94

NET YBlt6gt LOC = SPIN95

NET YBlt7gt LOC = SPIN96

NET YClt0gt LOC = SPIN112

NET YClt1gt LOC = SPIN113

NET YClt2gt LOC = SPIN103

NET YClt3gt LOC = SPIN102

在光碟片中 RFFPGAVHDLDEMOSVF95288XL 裡有VHDL與數位邏輯設計書本範例原始檔與合成

檔案

88

eM_FPGA 模組

NET CLK LOC = E12

NET XAlt0gt LOC = AA3

NET XAlt1gt LOC = Y4

NET XAlt2gt LOC = AA4

NET XAlt3gt LOC = AB4

NET XBlt0gt LOC = M1

NET XBlt1gt LOC = M2

NET XBlt2gt LOC = W13

NET XBlt3gt LOC = Y13

NET XBlt4gt LOC = AA13

NET XBlt5gt LOC = AB13

NET XBlt6gt LOC = Y18

NET XBlt7gt LOC = W18

NET XClt0gt LOC = W5

NET XClt1gt LOC = Y5

NET XClt2gt LOC = AA5

NET XClt3gt LOC = AB5

NET YAlt0gt LOC = Y17

JP4 接頭

NET YAlt1gt LOC = W17

NET YAlt2gt LOC = AB18

NET YAlt3gt LOC = AA18

NET YBlt0gt LOC = N1

NET YBlt1gt LOC = M5

NET YBlt2gt LOC = M3

NET YBlt3gt LOC = M4

NET YBlt4gt LOC = M6

NET YBlt5gt LOC = N2

NET YBlt6gt LOC = U13

NET YBlt7gt LOC = V13

NET YClt0gt LOC = AA17

NET YClt1gt LOC = AB17

NET YClt2gt LOC = V12

NET YClt3gt LOC = U12

在光碟片中 RFFPGAVHDLDEMOBIT2V250 裡有VHDL與數位邏輯設計書本範例原始檔與合成檔

89

Page 45: RFFPGA 直流馬達實驗手冊juniortek.com.tw/program/manual/RF-DC-mal.pdf · em_demo模組 em_dcm 直流伺服馬達 dc電源 rffpga 系統的直流馬達實驗規劃 其中包括:

plot scope 9 1 2 3 4 設定示波器顯示

module io2 設定 io2 模組

s cmd ampcn2out

module fg1 設定 fg1 模組

s kAmp 1000 s kFrq 75

module cn2 設定 cn1 模組

s cmd ampfg1out s fdk ampio1ang s kp 0x300 s kd 0x4000

module ft1 設定 ft1 模組

s u ampfg1out s dt 2 s ka 320

module io3 設定 io3 模組

s led ampfg1out

module 回復預設模組

run 1khz 設定抽樣頻率為 4KHz

run start DSP 開始執行

das stop pause 1 DAS 啟動 das start DAS 啟動

echo on 回復正常訊息顯示

CAI操控設計畫面規劃如下(EXP_angleCAI) page 1 畫面設計

45

page 2 與 page 3 畫面設計與實驗一 page 2 與 page 3相同畫面 page 4 畫面設計與實驗二 page 4 畫面 方塊的參數設定 延續上一實驗的說明使用者可以調整 PD控制器中的 kp和 kd值以調整系統之

響應 實測響應圖

訊 號 說 明 訊 號 說 明 ch1 方波產生器產生之位置命令 ch3 馬達角速度訊號 ch2 馬達角位置 ch4 Pd控制器輸出之電壓訊號

46

直流馬達之閉迴路位置控制響應圖

47

64 實驗 4-加減速的位置控制 實驗說明為避免方波命令的過於嚴苛在方波命令的輸出加入一加減速控制功

能方塊以減緩命令變化的幅度增加馬達運動的平順建立的測試方塊圖如下

方塊圖中的模組功能說明如下

1用 fg1產生測試用的方波位置命令 2將方波位置命令送到加減速控制方塊處理後產生新的位置命令再將新的位置命

令與位置回授訊號送到 PD控制器方塊中產生電壓控制訊號最後透過 io2模組將訊號送出到伺服介面驅動馬達轉動

對應之 plc檔程式說明(exp_accplc) echo off 畫面顯示開始

run dsp 0 選擇 DSP1

run stop run reset 既有程式停止

run testDCMmem 下載指定程式

das 1 ampfg1out 0 1024 PWM 波形 Volt 設定 DAS 頻道1

das 2 ampcn1out 0 1024 加速控制 Volt 設定 DAS 頻道2

das 3 ampio1spd 0 1024 馬達速度 Volt 設定 DAS 頻道3

das 4 ampio1ang 0 1024 馬達角度 Volt 設定 DAS 頻道4

plot select 0 設定示波器頁數

plot xunit 100000 0 設定示波器 X軸

plot yunit 1 2000 -300 設定示波器 Y1 軸

plot yunit 2 2000 -100 設定示波器 Y2 軸

plot yunit 3 50 100 設定示波器 Y3 軸

plot yunit 4 2000 300 設定示波器 Y4 軸

48

plot trigger 1 0 1 10 設定示波器觸發

plot scope 9 1 2 3 4 設定示波器顯示

module io2 設定 io2 模組

s cmd ampcn2out

module fg1 設定 fg1 模組

s kAmp 2000 s kFrq 150

module cn1 設定 cn1 模組

s cmd ampfg1out

module cn2 設定 cn2 模組

s cmd ampcn1out s fdk ampio1ang s kp 0x300 s kd 0x4000

module ft1 設定 ft1 模組

s u ampfg1out s dt 2 s ka 320

module io3 設定 io3 模組

s led ampfg1out

module 回復預設模組

run 1khz 設定抽樣頻率為 4KHz

run start DSP 開始執行

das stop pause 1 DAS 啟動 das start DAS 啟動

echo on 回復正常訊息顯示

CAI操控設計畫面規劃如下(EXP_accCAI) page 1 畫面設計

49

page 2 畫面設計與實驗一 page 2相同畫面 page 3 畫面設計與實驗二 page 4相同畫面

參數設定參考之前各實驗的說明可線上機動性的調整 PD控制器中的 kp和 kd值以調整系統之響應 實測響應圖

訊 號 說 明 訊 號 說 明 ch1 方波產生器產生之位置命令 ch3 馬達角位置 ch2 加減速模組輸出之位置命令 ch4 馬達角速度訊號

50

圖一 直流馬達經加減速控制後之閉迴路控制響應圖

51

65 實驗 5-正弦波的位置控制 實驗說明在本實驗中改變命令的波形由方波改變為正弦波並建立如下的測

試方塊圖與上一實驗相比較僅更改命令的波形產生方塊 方塊圖中的模組功能說明如下 1用 fg2產生測試用的弦波位置命令 2將弦波位置命令送到加減速控制方塊處理後產生新的位置命令再與 io1 讀入的位

置回授訊號送到 PD 控制器方塊中產生電壓控制訊號再透過 io2 模組將訊號送出到伺服介面驅動馬達轉動

對應之 plc檔程式說明(exp_sinplc) echo off 畫面顯示開始

run dsp 0 選擇 DSP1

run stop run reset 既有程式停止

run testDCMmem 下載指定程式

das 1 ampfg2out 0 1024 SIN 波形 Volt 設定 DAS 頻道1

das 2 ampcn1out 0 1024 加速控制 Volt 設定 DAS 頻道2

das 3 ampio1spd 0 1024 馬達速度 Volt 設定 DAS 頻道3

das 4 ampio1ang 0 1024 馬達角度 Volt 設定 DAS 頻道4

plot select 0 設定示波器頁數

plot xunit 100000 0 設定示波器 X軸

plot yunit 1 2000 -300 設定示波器 Y1 軸

plot yunit 2 2000 -100 設定示波器 Y2 軸

plot yunit 3 50 100 設定示波器 Y3 軸

plot yunit 4 2000 300 設定示波器 Y4 軸

plot trigger 1 0 1 10 設定示波器觸發

52

plot scope 9 1 2 3 4 設定示波器顯示

module io2 設定 io2 模組

s cmd ampcn2out

module fg2 設定 fg1 模組

s kAmp 2000 s kFrq 100

module cn1 設定 cn1 模組

s cmd ampfg2out

module cn2 設定 cn2 模組

s cmd ampcn1out s fdk ampio1ang s kp 0x300 s kd 0x4000

module ft1 設定 ft1 模組

s u ampfg2out s dt 2 s ka 320

module io3 設定 io3 模組

s led ampfg2out

module 回復預設模組

run 1khz 設定抽樣頻率為 4KHz

run start DSP 開始執行

das stop pause 1 DAS 啟動 das start DAS 啟動

echo on 回復正常訊息顯示

CAI操控設計畫面規劃如下(EXP_sinCAI) page 1 畫面設計

53

page 2 畫面設計 page 3 畫面設計與實驗二 page 4相同畫面

方塊的參數設定可調整 PD控制器中的 kp和 kd值以調整系統之響應 實測響應圖

訊 號 說 明 訊 號 說 明 ch1 弦波產生器產生之位置命令 ch3 馬達角位置訊號 ch2 加減速模組輸出之位置命令 ch4 馬達角速度訊號

54

直流馬達之閉迴路弦波加減速位置控制響應圖

55

7組合語言說明

本節將針對 DC馬達伺服控制實驗專用的程式模組進行功能與程式碼的說明其

有關於波形產生器與資料擷取模組等說明如下

SIN_waveasm 正弦波產生器 PWM_waveasm 方波產生器 IIR1_filterasm 一階濾波器 DAS4asm 資料蒐集模組

弦波產生器

此模組會產生週期性的正弦波方塊圖如下

outfrq

kBiasbias

ampkAmp

kFrqth

kThf=1TB

θ

A

其中

1正弦波有四個參數振幅(A)頻率(F)相位(θ)和偏移(B)其公式為 out = A sin(2πF t +θ) + B 2對於單純的正弦波產生器所對映的參數包括 kAmp 振幅值 kFrq 頻率值kFrq=655368000Hz其中 Hz的範圍為 0~4000例如 1000Hz =gt frq=8192 100Hz =gt frq=819 10Hz =gt frq=82 1Hz =gt frq=8 kTh 相角值0~255代表 0~360的相位當 th=0 時為正弦波 th=64 時為餘弦波 th=128時為反相波依此類推 kBias偏移值 3對於可調變的正弦波產生器其對映的輸入點為 amp 控制振幅的輸入點可產生調幅(AM)波形 frq 控制頻率的輸入點可產生調頻(FM)波形 th 控制相位的輸入點可產生調相(PM)波形 bias控制偏移的輸入點可產生雙頻混波(相加)波形 4若不使用調變功能時各個輸入點時的預設值為 amp 指向 kAmp 的位址 frq 指向 kFrq 的位址

56

th 指向 kTh 的位址 bias指向 kBias的位址

模組程式範例SIN_WAVEasm

local amp R0 IP kAmp 輸入點sin波的振幅 local frq R1 IP kFrq 輸入點sin波的頻率 local th R2 IP kTh 輸入點sin波的相角 local bias R3 IP kBias 輸入點sin波的中心偏移 local out R4 OP 輸出點sin波輸出 local tab R5 TP 表格指標指向 sin[256]的表格 local ang R6 內部變數相位角65536=360deg local kAmp R7 1000 參數振幅值 local kFrq R8 1000 參數頻率值=655368000Hz local kTh R9 0 參數相角值360deg=256 local kBias R10 0 參數偏移值 data 11 模組變數區長度及初值 initial 啟動程序 WR ang0 WR out0 ang=out=0 RET timer 即時控制程序(8KHz) RD ang ADD (frq) WR ang ang+=frq SFR 8 ADD (th) AND 255 ACC=sin(ang256+th) ADD tab WRH RDM table-look-up MUL (amp) SFR 12 ADD (bias) WR out out=ACCamp4096+bias RET table tab 256 sin[256]表格區10=4096 0 101 201 301 401 501 601 700 00~070deg 799 897 995 1092 1189 1285 1380 1474 08~0F 1567 1660 1751 1842 1931 2019 2106 2191 10~17 2276 2359 2440 2520 2598 2675 2751 2824 18~1F 2896 2967 3035 3102 3166 3229 3290 3349 20~27 3406 3461 3513 3564 3612 3659 3703 3745 28~2F 3784 3822 3857 3889 3920 3948 3973 3996 30~37 4017 4036 4052 4065 4076 4085 4091 4095 38~3F 4096 4095 4091 4085 4076 4065 4052 4036 40~4790deg 4017 3996 3973 3948 3920 3889 3857 3822 48~4F 3784 3745 3703 3659 3612 3564 3513 3461 50~57 3406 3349 3290 3229 3166 3102 3035 2967 58~5F

57

2896 2824 2751 2675 2598 2520 2440 2359 60~67 2276 2191 2106 2019 1931 1842 1751 1660 68~6F 1567 1474 1380 1285 1189 1092 995 897 70~77 799 700 601 501 401 301 201 101 78~7F 0 65435 65335 65235 65135 65035 64935 64836 80~87180deg 64737 64639 64541 64444 64347 64251 64156 64062 88~8F 63969 63876 63785 63694 63605 63517 63430 63345 90~97 63260 63177 63096 63016 62938 62861 62785 62712 98~9F 62640 62569 62501 62434 62370 62307 62246 62187 A0~A7 62130 62075 62023 61972 61924 61877 61833 61791 A8~A8 61752 61714 61679 61647 61616 61588 61563 61540 B0~B7 61519 61500 61484 61471 61460 61451 61445 61441 B8~BF 61440 61441 61445 61451 61460 61471 61484 61500 C0~C7270deg 61519 61540 61563 61588 61616 61647 61679 61714 C8~CF 61752 61791 61833 61877 61924 61972 62023 62075 D0~D7 62130 62187 62246 62307 62370 62434 62501 62569 D8~DF 62640 62712 62785 62861 62938 63016 63096 63177 E0~E7 63260 63345 63430 63517 63605 63694 63785 63876 E8~EF 63969 64062 64156 64251 64347 64444 64541 64639 F0~F7 64737 64836 64935 65035 65135 65235 65335 65435 F8~FF

就程式結構而言說明如下

timer 即時控制程序(8KHz) RD ang ADD (frq) WR ang ang+=frq SFR 8 ADD (th) AND 255 ACC=sin(ang256+th) ADD tab WRH RDM table-look-up MUL (amp) SFR 12 ADD (bias) WR out out=ACCamp4096+bias RET

1基本上我們以查表法計算 sin()其輸入θ的範圍為 0~255對映到 0~360deg其輸出 sin(θ)的範圍為+-4096對映到+-10的範圍

2建立一個內部變數 ang其範圍為 0~65535對映到 0~360的相位角 3每個timer程序都執行 ang+=frq的動作更新目前的相位角接著依照 ang的相位角查表得到 sin(ang256+th)值

4由於表格長度為 256-word所以必須將 ang256才能得到正確的對映關係而 th範圍為 0~255所以不需要像 ang一般的做額外處理

5sin()的範圍為(+1-1)而在表格中以(+4096~-4096)的型式記錄相當於 10=4096所以執行 Asin()時還要用 SFR12指令做4096的動作才能正確的取得輸出值

58

6就頻率輸入 frq而言其計算原則是將θ=ωt轉化成θ=Σ(ωdt)因為抽樣頻率

為 8KHz所以 dt=18000而得到 frq=655368000Hz公式其中 Hz為真正的頻率在 8KHz的抽樣頻率下其範圍為 0~4000

鋸齒波產生器

此模組會產生週期性的鋸齒波方塊圖如下

outfrq

kBiasbias

ampkAmp

kFrqth

kThf=1TB

θ

A

其中

1鋸齒波也有四個參數振幅(A)頻率(F)相位(θ)和偏移(B)和正弦波的定義完全一致唯一的差異是其輸出為鋸齒波而非正弦波

2基本波形是從週期開始時為 0一直遞增到週期結束時到達最高點然後立刻回歸

到 0重新開始 3以程式結構而論鋸齒波程式幾乎就是正弦波的相位計算部分只差沒有正弦波的

查表處理而已

模組程式範例SAW_WAVEasm

local amp R0 IP kAmp 輸入點sin波的振幅 local frq R1 IP kFrq 輸入點sin波的頻率 local th R2 IP kTh 輸入點sin波的相角 local bias R3 IP kBias 輸入點sin波的中心偏移 local out R4 OP 輸出點sin波輸出 local ang R5 內部變數相位角65536=360deg local kAmp R6 1000 參數振幅值 local kFrq R7 1000 參數頻率值=655368000Hz local kTh R8 0 參數相角值360deg=256 local kBias R9 0 參數偏移值 data 11 模組變數區長度及初值 initial 啟動程序 WR ang0 WR out0 ang=out=0 RET timer 即時控制程序(8KHz) RD ang ADD (frq) WR ang ang+=frq SFR 8 ADD (th) AND 255 ACC=(ang256+th)amp0x00ff MUL (amp) SFR 8 ADD (bias) WR out out=ACCamp256+bias

59

RET

脈衝波產生器

outfrq

kBiasbias

ampkAmp

kFrqth

kThf=1TB

θ

A

pwm

kDutyduty

此模組會產生週期性的脈衝波方塊圖如下

其中

1脈衝波有五個參數其中振幅(A)頻率(F)相位(θ)和偏移(B)四個參數和正弦波

定義完全一樣另外再增加一個負載率(D) 2基本波形是從週期開始時為 1隔段時間後換為 0然後持續到週期結束再重新開始其中 1所佔有的比例就是負載率當 D=0時為 0而 D=255時為 100

3和其他參數類似負載率(D)以 duty為其輸入點而以 kDuty為其參數值

模組程式範例PLS_WAVEasm

local amp R0 IP kAmp 輸入點脈衝波的振幅 local frq R1 IP kFrq 輸入點脈衝波的頻率 local th R2 IP kTh 輸入點脈衝波的相角 local bias R3 IP kBias 輸入點脈衝波的中心偏移 local duty R4 IP kDuty 輸入點脈衝波的負載率 local out R5 OP 輸出點脈衝波輸出 local ang R6 內部變數相位角65536=360deg local kAmp R7 1000 參數振幅值 local kFrq R8 1000 參數頻率值=655368000Hz local kTh R9 0 參數相角值360deg=256 local kBias R10 0 參數偏移值 local kDuty R11 128 參數負載率100 =256 data 12 模組變數區長度及初值 initial 啟動程序 WR ang0 WR out0 ang=out=0 RET timer 即時控制程序(8KHz)

60

RD ang ADD (frq) WR ang ang+=frq SFR 8 ADD (th) AND 255 ACC=(ang256+th)amp0x00ff SUB (duty) RD (amp) JLT t1 RD 0 ACC=(amp0) t1 ADD (bias) WR out out=ACC+bias RET

IIR 一階濾波器

此模組執行一階的 IIR濾波器方塊圖如下

kau x

Z-1

+

+

-

+低通濾波器

高通濾波器dx lp

hp

濾波器參數的計算公式如下

1假設濾波器的頻寬為 hz則 ωn=hz628 2若系統頻率為 8KHz則抽樣週期 dT為 dT=dt8000 其中 dt為模組參數 3則濾波器參數為 ka=ωndT4096或是 =hzdt62880004096即 =hzdt32 4當 dt決定後所允許的訊號頻寬為(4000dt)換句話說訊號頻寬會因為 dt增加而下降

為了方便實驗的運用下面列出常用的參數對照表

濾波頻寬

(Hz)

10 20 50 100 200 500 1000 2000

訊號頻寬

(Hz)

400 800 2000 4000 4000 4000 4000 4000

模組參數 dt 10 5 2 1 1 1 1 1

模組參數 ka 320 320 320 320 640 1600 3200 6400

表格的運用方式如下

1首先決定濾波頻寬 2接著查表找出對映的參數 dt和 ka 3再查表得到對映的訊號頻寬以決定是否需要串接前級濾波器

61

模組程式範例IIR1_FILTERasm

local u R0 IP 輸入點濾波器輸入 local lp R1 OP 輸出點低通濾波器輸出 local hp R2 OP 輸出點高通濾波器輸出 local dt R3 1 參數抽樣週期 local ka R4 4096 參數增益 ka10=4096 local prd R5 內部變數抽樣週期用 data 6 模組變數區長度 initial 開機啟動程序 WR lp0 WR hp0 WR prd1 RET lp=hp=0prd=1 timer 即時控制程序 SUB prd1 JNZ b9 if (--prdgt0) return RD dt WR prd prd=dt RD (u) SUB lp WR hp hp=u-lp MUL ka SFR 12 ADD lp WR lp lp+=(hpka4096) b9 RET

資料蒐集模組

資料蒐集模組是一個非常特殊的模組專門配合 eTTY 程式中的示波器使用

模組程式範例DAS4asm

local cmd R0 0 紀錄命令0=停止1=前置記錄2=正觸發4=負觸發6=觸發記錄 local dt R1 1 抽樣週期每 dT抽樣一次 local tab R2 TP DAS表格啟始位址 local cnt R3 0 目前記錄點(0~255) local ch1 R4 0 定義頻道1的變數位址 local ch2 R5 0 定義頻道2的變數位址 local ch3 R6 0 定義頻道3的變數位址 local ch4 R7 0 定義頻道4的變數位址 local trg R8 0 定義觸發頻道的變數位址 local th R9 0 觸發準位 local tail R10 0 觸發後的抽樣個數 local buf R11 1 抽樣計數(1~dt) local pnt R12 表格位址計算pnt=tab+cnt4 local len R13 表格長度計算(0~256) data 14 定義模組變數區的長度 table tab 1024 定義表格的長度 initial 啟動程序 WR cmd0 RET cmd=0 timer 控制程序

62

ADD cmd0 JZ t9 if (cmd==0) return SUB buf1 JNZ t9 if (--buf)gt0) return RD dt WR buf dt=buf RD cnt ADD 1 AND 0xff WR cnt cnt=(cnt+1)amp0xff SFL 2 ADD tab WR pnt pnt=tab+cnt4 RD (ch1) WR (pnt) ADD pnt1 pnt++=ch1 RD (ch2) WR (pnt) ADD pnt1 pnt++=ch2 RD (ch3) WR (pnt) ADD pnt1 pnt++=ch3 RD (ch4) WR (pnt) pnt =ch4 RD cmd SUB 1 JZ t9 SUB 1 JZ t2 SUB 1 JZ t3 SUB 1 JZ t4 SUB 1 JZ t5 SUB 1 JZ t6 JR t7 t2 RD (trg) SUB th JGE t9 ADD cmd1 JR t9 wait trgltth t3 RD (trg) SUB th JLE t9 JR t6 wait trggtth t4 RD (trg) SUB th JLE t9 ADD cmd1 JR t9 wait trggtth t5 RD (trg) SUB th JGE t9 JR t6 wait trgltth t6 WR len0 WR cmd7 len=0cmd=7 t7 ADD len1 SUB tail JLT t9 WR cmd0 if ((++len)gt=0x80) cmd=0 t9 RET

與 DC 馬達控制相關的程式模組有以下 4個程式模組說明如下

(1)加減速控制模組 ACC_controlasm (2)光電盤輸入模組 POS_inputasm (3)PWM輸出模組 PWM_outputasm (4)PD控制模組 PD_controlasm

71加減速控制模組 此程式模組主要功能在於執行位置控制的加減速命令修正其數學模式採用 Lynn

濾波器的架構參見下圖

cmd

2

+

old Z -1

-

Z -1

Z -1

Z-1

Z-1x0 x1 x8 x9 x16

+ -

++

2

Z-1

Z-1 y1 y2

+

-

y0

+ +

sumZ-1

+164

12

out

dif

+

63

加減速控制模組方塊圖

其中

1Lynn 濾波器的階數固定成八階也就是 m=8其公式為 H(z) = (1-2Z-m+Z-2m)(1-2Z-1+Z-2)m2

2因為m=8所以m2=64因此最後計算低通濾波的部份時要先做除 64的運算 3因為低通濾波(lp)和 y0之間有 64倍的差異代表 y0y1y2的變化範圍比濾波器輸

入值要擴大許多例如輸入值在+-1000變化時y0y1y2很可能會在+-64000之間變化這範圍已經超出整數處理的範圍很可能會造成錯誤的計算結果

4所以在實驗時輸入值的變化範圍必須控制在+-500之間以保證計算的正確性 5對於 Lynn 濾波器當 m=8時其濾波器的頻寬固定為 1 kHzmdt也就是 dt=1時頻寬為 125 Hz dt=2時頻寬為 625Hz依此類推 6對於 Lynn 濾波器其濾波器的延遲固定為 m個抽樣週期因此設計 hp = x8 - lp 即可得到高通濾波器的對應結果 7其中乘 2和除 64的運算以移位運算取代所以整個程式中並無任何乘法運算 8Lynn 濾波器本身並不是穩定濾波器所以在程式啟動時必須確實的將所有狀態

(x0~x16)歸零否則會產生不穩定的狀態輸出

因為 Lynn濾波器中所有參數固定所以除了抽樣週期 dt 之外並無任何可調參數

抽樣週期 dt 可以控制頻寬dt 越大則濾波器頻寬越低

將步階命令值的輸出送入 Lynn 濾波器中經由低通濾波器的效應可以減緩命

令的變化程度達到加減速控制的目的以下為使用 Lynn 濾波器型式實現加減速控

制的組合語言程式列印 如欲更進一步瞭解 Lynn 濾波器與 FIR 數位濾波器之間的關係可以參考通訊實驗

四數位濾波器設計(FIR)中之說明

ACC_controlasm程式列印 local cmd R0 IP 輸入點位置命令

local out R1 OP 輸出點加減速處理後的位置命令

local dif R2 OP 輸出點位置微分命令

local axis R3 0 馬達編號0=X1=Y2=Z3=C

local old R4 內部變數微分計算用

local sumL R5 內部變數積分計算用

local sumH R6 內部變數積分計算用

local y0 R7 內部變數y(0~2)

local y1 R8 local y2 R9

local x0 R10 內部變數x(0~16)

local x1 R11 local x2 R12 local x3 R13 local x4 R14

local x5 R15 local x6 R16 local x7 R17 local x8 R18

local x9 R19 local x10 R20 local x11 R21 local x12 R22

local x13 R23 local x14 R24 local x15 R25 local x16 R26

64

data 27 模組變數區長度

initial 開機啟動程序

WR dif0 RD (cmd) WR out WR old dif=0 out=old=cmd

sumHL=cmd64

SFL 6 WR sumL RD out SFR 10 SGN 5 WR sumH

RPT 17 WR x00 RPT 3 WR y00 RET x[0~16]=0y[0~2]=0

timer 即時控制程序

RD (cmd) SUBX old WR x0 x0=cmd-old old=cmd

SUB x81 ADD x16 ADD y11 SUB y2 WR y0 y0=x0-2x8+x16+2y1-y2

SGN ADD sumL WR sumL RDH ADC sumH WR sumH sumHL+=y0

WRH RD sumL SFR 6 WR out out=sumHL64

RD y0 SGN SFR WR dif dif=y032mm

RD x0 RPT 16 RDX x1 x[i]=x[i-1] i=1~16

RD y0 RDX y1 WR y2 y[i]=y[i-1] i=1~2

b9 RET

72光電盤輸入模組

DC馬達的位置由光電盤量測之預設儲存於 0xac與 0xbe二個輸入埠位址中其中位址 0xac記錄 X軸馬達的位置位址 0xbe記錄 Y軸馬達的位置由於本實驗的DC馬達接在 Y軸的位置上因此程式中直接選用 Y軸的輸入 光電盤位置輸入的程式列印如下其中速度由位置的差分而得至於馬達的位置

則使用內部 2個 word加以記錄精度為 32位元 POS_inputasm程式列印 local spd R0 OP 輸出點速度量測值

local ang R1 OP 輸出點角度量測值

local angH R2 內部變數角度的 32 位元部分

local mode R3 0x308 模式選擇15MHzAB 相正反向輸入

local pht R4 0xac 輸入阜地址光電盤輸入(0xac)

local phtc R5 0xbe 輸入阜地址光電盤模式(0xbe)

local old R6 內部變數速度更新用

data 7 模組變數區長度

initial 開機啟動程序

RD mode WR (phtc) phtc=mode

RD (pht) WR old WR spd0 RET old=phtspd=0

timer 即時控制程序

RD (pht) SUBX old SGN 11 WR spd spd=(pht-old)old=pht

65

ADD ang WR ang angHL+=spd

RDH ADC angH WR angH

RET

73 PWM輸出控制模組 模組方塊

cmd PWM輸出

程式說明 1在開機時將切換保護時間寫到輸出阜 0xbc上其中切換保護值為 0~6360=5us 2在每次 timer interrupt時將 cmd訊號處理後寫到輸出阜 0xb8上

PWM_outputasm程式列印 local cmd R0 IP gnd 輸入點v相命令

local gain R1 4096 參數輸出增益1=4096

local bias R2 2048 參數輸出偏壓0=2048

local limit R3 4095 參數輸出極限1=4095

local zone R4 0x88f0 參數頻率=12KHz切換保護=5us

local pwm R5 0xb8 輸出阜地址PWM0 輸出(0xb8)

local mode R6 0xbc 輸出阜地址PWM 模式(0xbc)

local p0md R7 0xf8 輸出阜地址port0 模式(0xf8)

local gnd R8 0 輸入接地點

data 9 模組變數區長度

initial 開機啟動程序

RD bias WR (pwm) pwm=bias

RD 0xffff WR (p0md) set port0 mode

RD zone WR (mode) RET mode=zone

stop 關機保護程序

RD bias WR (pwm) RET pwm=bias

timer 即時控制程序

RD (mode) xor 1 and 1 WR (mode) trigger watch-dog

RD (cmd) MUL gain SFR 12 ADD bias ACC=(cmdgain4096)+bias

MAX 0 MIN limit WR (pwm) pwm=limit(ACC)

RET

66

74 PD 控制模組

PD控制的模組方塊參見圖二十一所示其中比例控制的部份直接由增益 kp加以調整微分控制的部份則由誤差的差分經增益 kd的調整而得

Σ+

-

cmd

fdk

err out

Σ

pk

dk

Σ

+

+

+

-

old1minusZ

PD控制器的方塊圖

PD_controlasm程式列印 local cmd R0 IP gnd 輸入點位置命令(可忽略)

local fdk R1 IP gnd 輸入點位置回授(可忽略)

local out R2 OP 輸出點用以控制速度迴路

local kp R3 256 參數增益 kp10=256

local kd R4 0 參數增益 kd10=256

local err R5 0 內部變數

local old R6 0 內部變數

local gnd R7 0 無輸入時的短路點

data 8 模組變數區長度

initial 開機啟動程序

WR out0 WR old0 RET out=old=0

timer 即時控制程序

RD (cmd) SUB (fdk) PRTF WR err

MUL kp SFR 8 P=(cmd-fdk)kp256

RDS err SUBX old MUL kd SFR 8 D=(err-old)kd256

ADDS

WR out out=P+D

RET

程式中預設增益值的 10以整數值 256為基底因此使用 SFR 8的指令加以調

整另外在在計算微分項的程式部份用到 SUBX old的指令其詳細的暫存器動作如

下 參考 piDSP的指令說明SUBX指令將總共用到 3個時序參考錯誤 找不到參照

67

來源在時序 1時將原先 AX的資料拷貝一份到 HX中時序 2時正式執行減

法的動作所以 AX暫存器中的內容會變成 err-old時序 3時DSP會將存放在 HX暫存器中的內容拷貝一份到 old的記憶體中也就是經由 SUBX此一精簡指令將

同時完成計算差分所需要的相減與資料疊代的動作有效的利用 piDSP控制器 DSP核心的精簡指令將可以大幅提昇系統的計算速度

HX AXoldSUBXerr err

old

err

errerr olderr minus

1_err

errerr olderr minus err

1_err

1

2

3

SUBX的指令時序與暫存器變化

68

8附錄快速安裝說明

光纖網路通訊 FPGA 發展系統 (適用於 WIN-XP200098 系統)

快速安裝說明

26Pin 負載輸出入埠

雙電源︵5

12

伏︶輸入埠

單電源︵5

伏︶輸入埠

USB

光纖線輸

號 光纖線輸出埠

入 傳 埠

首先將光碟片 RFFPGA 目錄檔案拷貝在您工作硬碟裡面

第一次安裝時先將 USB 傳輸線接上電腦主機將電源供應器接上 FPGA 模組此時電

腦會出現安裝 USB-Serial 驅動程式選擇從清單安裝此驅動程式放置在光碟片

RFFPGA-USBdrive 選擇您目前安裝系統

可選擇 WIN-98WIN-MEWIN-2000WIN-XP 系統配合您現在工作電腦作業系統

69

注意一般電腦 USB 埠很多插口當您安裝驅動程式時是配合您當時插入之埠

下次如您插入不同接口埠時電腦會再次要求安裝驅動程式這是正常現象請再次安

裝驅動程式否則無法使用

FPLC 操作

首先進入 RFFPGA裡子目錄 testASM直接點選 fPLCexe 出現下面操作畫面(也可直接將

此檔案放置桌面直接點選)

(或者選擇 File 再執行 Setuphellip 選擇您要執行 CAI 檔)

70

進入下面操作畫面 首先使用滑鼠在 FPGA下載按鈕單擊動作使 FPGA變成 DSP晶片 實驗一至實驗五皆為使用 DSP組合語言設計程式其原始程式分別為 testASM1至testASM5可使用 texPad 開啟與編輯程式內容 實驗三與實驗五多有 IO控制動作 當選擇實驗三時出現下面畫面

71

eM_USB 模組

數字型 LED

0 1 2 34 5 6 78 9 A BC D E F

燈號型 LED

44 鍵盤

ADC0 ADC1 DAC0 DAC1

LED 選擇KEY 選擇

模 式 1

0123

注意操作畫面 3與 4 說明開關與按鍵選擇位置後選擇程式下載再按程式啟動如您

按下 0-3按鍵時燈號型 LED會有不同方向閃爍顯示程式停止時結束所有 IO控制動作再按回首頁選擇其他實驗 實驗四與實驗五

模式3

0 1 2 34 5 6 78 9 A BC D E F

按照上面開關選擇直接操作如果以上實驗皆能按照正常操作表示您光纖網路通訊

FPGA發展模組以能正常使用 注意 開機與關機動作順序如下

開機電腦啟動 --- eM_USB 模組電源接上 --- USB 接上電腦 ---

啟動 FPLC 軟體 --- 下載 FPGA 程式

關機關閉 FPLC 軟體 --- eM_USB 模組電源拔掉 --- 拔掉電腦 USB 接頭 ---關掉

電腦

如果以上順序有亂可能造成 USB 找不到驅動造成無法下載經過幾次測試還是

無法下載建議重新啟動電腦主機按照正確步驟操作

72

FPGA 下載操作

進入 FPLC 操作系統按照下列步驟選擇節點模組與下載 bit FPGA 檔案

在 VHDLDEMO 子目錄下您可以選擇您目前 FPGA 種類型號在此型號下我們已將 VHDL

與數位邏輯設計課本範例全部放於此處

73

光纖網路連線 FPGA 下載操作

首先利用光纖線將 eM_USB0 模組光纖輸出埠接至 eM_USB1 模組光纖輸入埠以此

類推最後再將最後 eM_USBN 模組光纖輸出埠接至 eM_USB0 模組光纖輸入埠配置

如附圖方式

個人電腦(Windows) eM_USB模組

0USB

eM_USB模組1

光纖網路

eM_USB模組2

eM_USB模組N

配置完成後進入 FPLC 系統首先必須先將 Node00 下載在 testASM 子目錄裡

piDSPv0bit 檔讓 eM_USB0 模組 FPGA 具備 DSP 功能才能執行光纖網路通訊

操作如下

此時您就可以選擇分別下載至各模組 FPGA 檔 bit

74

安裝 FPLC 注意事項

當您進入 FPLC 時

按 FILE 選擇 programhellip 選擇檔案為 exp_dcmplc 出現下面畫面

正常顯示畫面為

75

DOS 環境操作

在 PC 端的操作是在 Windows 環境中的 DOS 視窗中執行指令範例如下

eFPGA progNETbit 下載 FPGA電路至網路節點0(即 USB節點)中 eFPGA testLEDbit 1 下載 FPGA電路至網路節點1中

對於單一節點的控制程序如下

1將 eM_USB模組連結個人電腦的 USB端 2eM_USB模組開機 3執行下載指令即可 eFPGA xxxxbit 4若要更改 FPGA電路只要重新執行下載指令即可

對於多個網路節點的控制程序如下

1第一組 eM_USB模組連結個人電腦的 USB端再以光纖網路依序其他各節點 2連接 USB界面者為模組0從光纖發射端連接出去的模組為1依此類推 3將所有 eM_USB模組開機 4執行下載指令如下 eFPGA progNETbit 模組0必須先下載指定的 FPGA電路 eFPGA xxxxbit 1 再依序下載其他網路模組的 FPGA電路 eFPGA yyyybit 2 eFPGA zzzzbit 最後再重新下載模組0的 FPGA電路 5換句話說模組0必須先執行 progNETbit讓光纖網路接受 FPGA控制後才能透過光纖網路下載至其他節點等全部網路節點下載完畢後再將模組0的 FPGA重新下載讓模組0也可自由執行任意的 FPGA電路

6若要更改某一個網路節點中的 FPGA電路只要重新執行下述指令 eFPGA progNETbit 模組0必須先下載指定的 FPGA電路 eFPGA yyyybit 2 下載指定網路模組的 FPGA電路 eFPGA zzzz bit 最後再重新下載模組0的 FPGA電路 換句話說除非模組0中的 FPGA已經包括光纖網路管理電路否則一定要先在

模組0中下載網路管理電路後才能下載指定網路節點的 FPGA電路

76

光纖網路通訊 FPGA 發展系統

系統配置

光纖網路通訊 FPGA 發展系統的系統配置圖如下

個人電腦(Windows) eM_USB模組

0USB

eM_USB模組1

光纖網路

eM_USB模組2

eM_USB模組N

其中

1基本模組為 eM_USB模組可用 USB界面和個人電腦連線並提供 USB對光纖網路的轉換功能使得個人電腦可以獨立控制光纖網路中的每個網路節點

2eM_USB模組也可以作為光纖網路中的網路節點透過光纖網路而接受個人電腦的

監控 3就個人電腦而言不論是 USB界面直接連結或是以光纖網路間接連結的 eM_USB模組都是可以直接監控的網路節點最多可以同時控制一個 USB節點和 30個網路節點

4對於每一個網路節點個人電腦都可執行 eM_USB模組中 FPGA的電路下載工作並在適當的 FPGA電路配合下可執行 eM_USB模組中 FPGA內部電路的讀寫控制 5透過適當的 FPGA電路設計各網路節點都可透過光纖網路和其他任何網路節點

作同步通訊執行 FPGA內部記憶體的資料交換資料交換頻率可達 1KHz以上

77

網路模組配置

每個網路模組的標準配置圖如下

eM_USB模組光纖網路

USB eM_FPGA卡

eM_DEMO模組

eM_EXP實驗模組

DC電源

其中

1網路模組以 eM_USB模組為主提供基本的 USB界面和光纖網路連線 2eM_USB模組中的 FPGACPLD採用插卡型式可選擇不同的 eM_FPGA卡包括

eM_2V1K卡可選用 Virtex系列的 XC2V250和 XC2V1000 eM_3S1K卡可選用 Spartan3系列的 XC3S400XC3S1000和 XC3S1500 eM_3S50卡可選用 Spartan3系列的 XC3S50XC3S200和 XC3S400 eM_95XL卡可選用 9500XL系列的 XC95144XL和 XC95288XL 3eM_USB模組中的對外連線有兩種一種是 26P接頭用以連接既有的各種實驗模

組另一種是兩組 50P接頭將 FPGA中各接腳引出用以連接專題實驗 4eM_DEMO模組就是插上 50P接頭的教學模組其中包括 LED 數字顯示和 44鍵盤也具備兩組的 ADC和兩組的 DAC接頭提供類比訊號的測試工具

常用的實驗組合包括

1精簡組合包括(eM_USB+eM_FPGA)提供基本的網路節點適用於專題實驗 2標準組合包括(eM_USB+eM_FPGA+eM_DEMO)提供基礎 FPGA設計的教學實驗

3實驗組合包括(eM_USB+eM_FPGA+eM_DEMO+eM_EXP)提供進階的 FPGA實驗可依需求選用不同的實驗模組

78

eM_USB 模組

eM_USB 模組的電路配置圖如下

TxRx

DCPower

USB

JP2

JP3

光纖界面

外加電源

PC連線

JP1

eM_FPGA模組

FT232 CPLD FlashROM

SRAM

10cm

6cm

JP4

其中

1對外的連線接頭包括 DC電源 可選擇單電源(5V)或是多電源(5V+12V-12V)兩種 USB界面 直接連接個人電腦 光纖界面連接光纖網路 2實驗界面包括 JP1負責內部 CPLD的電路下載 JP2JP3兩組 50P的擴張用接頭 JP4 標準 26P接頭用以連接各種實驗模組 3內部的電路配置包括 A以 SO-DIMM接頭連接各種 eM_FPGA卡 B內附 EEPROMFlashROM和 SRAM提供 FPGA作應用測試 C以一顆 FT232BM作為 USB界面解碼而以一顆 CPLD作為光纖網路解碼 D提供各種 eM_FPGA卡的電路下載功能 4內附五顆 LED由上而下依序為 usbLED指示 USB界面的讀寫狀態 tstLED可由 FPGA電路自行定義 stsLED可由 FPGA電路自行定義 RxLED 可由 FPGA電路自行定義 TxLED 可由 FPGA電路自行定義

79

外部接腳定義

外部接頭的接點順序圖示如下

上視圖

JP11 9 JP4

126225

JP31

50249

JP21

50249

而各接頭的接點定義如下

JP1 JP4 JP2 JP3 1+33V 1+12V 2+12V 1 GND 2 GND 1 GND 2 GND 2GND 3 ADC 4 DAC 3POWER 4ALARM 3 +5V 4 +5V 3nc 5 yPB2 6 yPB3 5RxNET 6TxNET 5+12V 6+12V 4TCK 7 yPB1 6 yPB4 7RxUSB 6TxUSB 7-12V 6-12V 5nc 9 yPB0 10yPB5 9RxCAN 10TxCAN 9 ADC 10 DAC 6TDO 11yPB6 12yPB7 11P0D0 12P0D1 11P1D0 12P1D1 7TDI 13yGND 14yPC3 13P0D2 14P0D3 13P1D2 14P1D3 8nc 15yPC2 16yPC1 15P0D4 16P0D5 15P1D4 16P1D5 9TMS 17yPC0 18yPA0 17P0D6 18P0D7 17P1D6 18P1D7 19yPA1 20yPA2 19P0D8 20P0D9 19P1D8 20P1D9 21yPA3 22GND 21P0D10 22P0D11 21P1D10 22P1D11 23GND 24+5V 23P0D12 24P0D13 23P1D12 24P1D13 25+5V 26nc 25P0D14 26P0D15 25P1D14 26P1D15 27P2D0 28P2D1 27PxA0 28PxA1 29P2D2 30P2D3 29PxA2 30PxA3 31P2D4 32P2D5 31PxA4 32PxA5 33P2D6 34P2D7 33PxA6 34PxA7 35P2D8 36P2D9 35PxB0 36PxB1 37P2D10 38P2D11 37PxB2 38PxB3 39P2D12 40P2D13 39PxB4 40PxB5 41P2D14 42P2D15 41PxB6 42PxB7 43ADC0 44ADC1 43PxC0 44PxC1 45ADC2 46ADC3 45PxC2 46PxC3 47ADC4 48ADC5 47PxC4 48PxC5 49DAC0 50DAC1 49PxC6 50PxC7

80

eM_FPGA 模組

在各種 eM_FPGA 模組中FPGA 對外電路的標準配置圖如下

24576MHz

FlashROM

26PSRAM

EEPROM

mD[8]

yPA[4]

FPGACPLD

mA[19]mRDmWRmCSeeCKeeCSeeDIeeDO

光纖界面 RxNETTxNET

USB 界面 RxUSBTxUSBCLK24MPOWERALARM

LED

tstLEDstsLEDRxLEDTxLED

yPB[8]yPC[4]

ADCDAC

ADC[8]

實驗模組

ADC[2]

DAC[2]

xPA[4]

xPB[8]

xPC[4]

基礎實驗

其中

1FPGACPLD可以選擇下述幾種 XC2V250XC2V1000 採用 eM_2V1K模組其中 FPGA為 FG456包裝 XC3S400XC3S1000XC3S1500採用 eM_3S1K模組其中 FPGA為 FG456包裝 XC3S400XC3S1000XC3S1500採用 eM_3S1K模組其中 FPGA為 FG456包裝 XC3S50XC3S200XC3S400 採用 eM_3S50模組其中 FPGA為 TQ144包裝 XC95144XLXC95288XL 採用 eM_95XL模組其中 CPLD為 TQ144包裝 2採用 FG456包裝者可以控制所有的 IO界面 3採用 TQ144包裝者只是不能控制 RAM和 FlashROM而可以控制其他所有的界面 4所有 FPGA模組都可自由選擇由 USB界面或是由光纖界面下載電路但是 CPLD模組只能固定由 USB界面下載電路

5所有 FPGACPLD模組都可透過 26P接頭連接既有的各種實驗模組

81

FPGA 接腳對照表

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

mD0 XD6 mD0 A17 C13 -- -- mD1 XD7 mD1 B17 D12 -- -- mD2 XD8 mD2 C17 D11 -- -- mD3 XD9 mD3 D17 C11 -- -- mD4 XD10 mD4 E17 D10 -- -- mD5 XD11 mD5 E16 C10 -- -- mD6 XD12 mD6 E14 D9 -- -- mD7 XD13 mD7 E13 D7 -- -- mA0 XD14 mA0 D13 C7 -- -- mA1 XD15 mA1 C13 D6 -- -- mA2 XA0 mA2 V5 C3 -- -- mA3 XA1 mA3 U5 C4 -- -- mA4 XA2 mA4 Y2 D3 -- -- mA5 XA3 mA5 Y1 D4 -- -- mA6 XA4 mA6 V4 E3 -- -- mA7 XA5 mA7 V3 E4 -- -- mA8 XA6 mA8 W2 F3 -- -- mA9 XA7 mA9 W1 F4 -- -- mA10 XA8 mA10 T2 G6 -- -- mA11 XA9 mA11 T1 K3 -- -- mA12 XA10 mA12 R4 K10 -- -- mA13 XA11 mA13 R3 L3 -- -- mA14 XA12 mA14 R2 L4 -- -- mRD XRD mRD R1 D5 -- -- mWR XWR mWR P6 C6 -- --

POWER P0A0 POWER B4 B20 P1 P5 ALARM P0A1 ALARM A4 A19 P2 P6 RxNET P0A2 RxNET C4 B19 P4 P7 TxNET P0A3 TxNET C5 A18 P5 P9 RxUSB P0B0 RxUSB B5 A15 P6 P10 TxUSB P0B1 TxUSB A5 B15 P7 P11 RxCAN P0B2 RxCAN D6 A14 P8 P12 RxCAN P0B3 TxCAN C6 B14 P10 P13

CLK24M CLK24M CLK24M E12 B12 P124 P38

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

PWM0H P3A0 P0D0 E6 A8 P21 P23 PWM0L P3A1 P0D1 E5 B8 P23 P24 PWM1H P3A2 P0D2 C2 B6 P24 P25 PWM1L P3A3 P0D3 C1 A5 P25 P26 PWM2H P3A4 P0D4 D2 B5 P26 P27

82

PWM2L P3A5 P0D5 D1 A4 P27 P28 PWMenb P3A6 P0D6 E4 B4 P28 P30 PHT1Z P3A7 P0D7 E3 A3 P30 P31 PHT1A P3B0 P0D8 G2 C1 P31 P32 PHT1B P3B1 P0D9 G1 C2 P32 P33 PHT0A P3B2 P0D10 H5 D1 P33 P34 PHT0B P3B3 P0D11 J6 D2 P35 P35 AMP0 P3B4 P0D12 H4 E1 P36 P39 AMP1 P3B5 P0D13 H3 E2 P40 P40 AMP2 P3B6 P0D14 H2 F2 P41 P41 AMP3 P3B7 P0D15 H1 G1 P44 P43 eeSK P0C3 P1D0 C10 B9 P20 P22 eeCS P0C2 P1D1 D10 A9 P18 P21 eeDI P0C1 P1D2 F10 B10 P17 P20 eeDO P0C0 P1D3 E10 B11 P15 P19 ssCK P0B7 P1D4 E8 A11 P14 P17 ssCS P0B6 P1D5 E7 A12 P13 P16 ssDI P0B5 P1D6 A6 B13 P12 P15 ssDO P0B4 P1D7 B6 A13 P11 P14

ppCLK P3C0 P1D8 K4 G2 P46 P44 ppDIN P3C1 P1D9 K3 K1 P47 P45 TxD P3C2 P1D10 K2 K2 P50 P46 RxD P3C3 P1D11 K1 L1 P51 P48

tstLED P3C4 P1D12 L5 L2 P52 P49 stsLED P3C5 P1D13 L4 M1 P53 P50 RxLED P3C6 P1D14 L3 M2 P55 P51 TxLED P3C7 P1D15 L2 N1 P56 P52

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

xPA0 P2A0 P2D0 AA3 N2 P59 P53 xPA1 P2A1 P2D1 Y4 T1 P60 P54 xPA2 P2A2 P2D2 AA4 T2 P63 P56 xPA3 P2A3 P2D3 AB4 U2 P68 P57 xPC0 P2A4 P2D4 W5 V1 P69 P58 xPC1 P2A5 P2D5 Y5 V2 P70 P59 xPC2 P2A6 P2D6 AA5 W1 P73 P60 xPC3 P2A7 P2D7 AB5 W2 P74 P61

-- P2B0 P2D8 V6 Y1 P76 P64 -- P2B1 P2D9 V7 Y2 P77 P66 -- P2B2 P2D10 W6 AA3 P78 P68

mCS P2B3 P2D11 Y6 AB4 P79 P69 mA15 P2B4 P2D12 V9 AA4 P80 P70 mA16 P2B5 P2D13 V10 AB5 P82 P71 mA17 P2B6 P2D14 W10 AA5 P83 P74 mA18 P2B7 P2D15 Y10 AA6 P84 P75 CS0 P2C0 ADC0 AA10 AB8 P85 P76

83

SDIN0 P2C1 ADC1 AB10 AA8 P86 P77 CS1 P2C2 ADC2 U10 AB9 P87 P78

SDIN1 P2C3 ADC3 U11 AA9 P89 P79 SCLK P2C4 ADC4 V11 AB10 P90 P80 CS2 P2C5 ADC5 W11 AA10 P92 P81

SDOUT P2C6 ADC6 Y11 AB11 P93 P82 LDAC P2C7 ADC7 AA11 AA11 P95 P83

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

xPB0 P1A0 PxA0 M1 M3 P135 P85 xPB1 P1A1 PxA1 M2 M4 P132 P86 yPB2 P1A2 PxA2 M3 N3 P131 P87 yPB3 P1A3 PxA3 M4 N4 P130 P88 yPB1 P1A4 PxA4 M5 T4 P129 P91 yPB4 P1A5 PxA5 M6 T5 P128 P92 yPB0 P1A6 PxA6 N1 U3 P127 P93 yPB5 P1A7 PxA7 N2 U4 P125 P94 yPB6 P1B0 PxB0 U13 V3 P119 P95 yPB7 P1B1 PxB1 V13 V4 P118 P96 xPB2 P1B2 PxB2 W13 W3 P116 P97 xPB3 P1B3 PxB3 Y13 W4 P113 P98 xPB4 P1B4 PxB4 AA13 Y3 P112 P100 xPB5 P1B5 PxB5 AB13 Y4 P96 P101 yPC3 P1B6 PxB6 U12 Y5 P97 P102 yPC2 P1B7 PxB7 V12 W5 P98 P103 yPC1 P1C7 PxC0 AB17 W11 P108 P113 yPC0 P1C6 PxC1 AA17 Y11 P107 P112 yPA0 P1C5 PxC2 Y17 W10 P105 P111 yPA1 P1C4 PxC3 W17 Y10 P104 P110 yPA2 P1C3 PxC4 AB18 W9 P103 P107 yPA3 P1C2 PxC5 AA18 W8 P102 P106 xPB6 P1C1 PxC6 Y18 W6 P100 P105 xPB7 P1C0 PxC7 W18 Y6 P99 P104

84

eM_DEMO 模組

eM_DEMO 模組的電路配置圖如下

eM_USB 模組

數字型 LED

0 1 2 34 5 6 78 9 A BC D E F

燈號型 LED

44 鍵盤

ADC0 ADC1 DAC0 DAC1

LED 選擇KEY 選擇

其中

1eM_DEMO模組的基本功能包括 A將 xPAxPBxPC等 16個 IO訊號引出控制 LED和鍵盤電路 B將 ADDA訊號引出並放大成+-10V的工作範圍 2LED和鍵盤可以選擇三種模式由 LED和 KEY 兩組開關作選擇圖示如下

模式1

0123

模式2 模式3

0 1 2 34 5 6 78 9 A BC D E F

0123

3模式14鍵輸入並搭配 16點的 LED燈號顯示其中 16點 LED分別對映到 xPA[0~3]xPB[0~7]和 xPC[0~3] 4組按鍵分別對映到 xPC[0~3] 4模式24鍵輸入並搭配四個 7段式數字顯示其中 數字顯示由 xPA[0~3]作數字掃瞄而由 xPB[0~7]作 7段式 LED控制 4組按鍵 分別對映到 xPC[0~3] 5模式316鍵輸入並搭配四個 7段式數字顯示其中 數字顯示由 xPA[0~3]作數字掃瞄而由 xPB[0~7]作 7段式 LED控制 16組按鍵由 xPA[0~3]作鍵盤掃瞄而由 xPC[0~3]作鍵盤讀取 6根據VHDL與數位邏輯設計的章節其中 第 1章至 10章的實驗採用模式1而 第 11章實驗採用模式2而 第 12章之後的實驗都採用模式3

85

FPGA UCF 定義

eM_3S1K 模組

NET CLK LOC = B12

NET XAlt0gt LOC = N2

NET XAlt1gt LOC = T1

NET XAlt2gt LOC = T2

NET XAlt3gt LOC = U2

NET XBlt0gt LOC = M3

NET XBlt1gt LOC = M4

NET XBlt2gt LOC = W3

NET XBlt3gt LOC = W4

NET XBlt4gt LOC = Y3

NET XBlt5gt LOC = Y4

NET XBlt6gt LOC = W6

NET XBlt7gt LOC = Y6

NET XClt0gt LOC = V1

NET XClt1gt LOC = V2

NET XClt2gt LOC = W1

NET XClt3gt LOC = W2

NET YAlt0gt LOC = W10

JP4 接頭

NET YAlt1gt LOC = Y10

NET YAlt2gt LOC = W9

NET YAlt3gt LOC = W8

NET YBlt0gt LOC = U3

NET YBlt1gt LOC = T4

NET YBlt2gt LOC = N3

NET YBlt3gt LOC = N4

NET YBlt4gt LOC = T5

NET YBlt5gt LOC = U4

NET YBlt6gt LOC = V3

NET YBlt7gt LOC = V4

NET YClt0gt LOC = Y11

NET YClt1gt LOC = W11

NET YClt2gt LOC = W5

NET YClt3gt LOC = Y5

在光碟片中 RFFPGAVHDLDEMOBIT3S1K 裡有 VHDL 與數位邏輯設計書本範例原始檔與合成檔

86

eM_3S50 模組

NET CLK LOC = P124

NET XAlt0gt LOC = P59

NET XAlt1gt LOC = P60

NET XAlt2gt LOC = P63

NET XAlt3gt LOC = P68

NET XBlt0gt LOC = P135

NET XBlt1gt LOC = P132

NET XBlt2gt LOC = P116

NET XBlt3gt LOC = P113

NET XBlt4gt LOC = P112

NET XBlt5gt LOC = P96

NET XBlt6gt LOC = P100

NET XBlt7gt LOC = P99

NET XClt0gt LOC = P69

NET XClt1gt LOC = P70

NET XClt2gt LOC = P73

NET XClt3gt LOC = P74

NET YAlt0gt LOC = P105

JP4 接頭

NET YAlt1gt LOC = P104

NET YAlt2gt LOC = P103

NET YAlt3gt LOC = P102

NET YBlt0gt LOC = P127

NET YBlt1gt LOC = P129

NET YBlt2gt LOC = P131

NET YBlt3gt LOC = P130

NET YBlt4gt LOC = P128

NET YBlt5gt LOC = P125

NET YBlt6gt LOC = P119

NET YBlt7gt LOC = P118

NET YClt0gt LOC = P107

NET YClt1gt LOC = P108

NET YClt2gt LOC = P98

NET YClt3gt LOC = P97

在光碟片中 RFFPGAVHDLDEMOBIT3S200 裡有VHDL與數位邏輯設計書本範例原始檔與合成檔

87

eM_95XL 模組

NET CLK LOC = SPIN38

NET XAlt0gt LOC = SPIN53

NET XAlt1gt LOC = SPIN54

NET XAlt2gt LOC = SPIN56

NET XAlt3gt LOC = SPIN57

NET XBlt0gt LOC = SPIN85

NET XBlt1gt LOC = SPIN86

NET XBlt2gt LOC = SPIN97

NET XBlt3gt LOC = SPIN98

NET XBlt4gt LOC = SPIN100

NET XBlt5gt LOC = SPIN101

NET XBlt6gt LOC = SPIN105

NET XBlt7gt LOC = SPIN104

NET XClt0gt LOC = SPIN58

NET XClt1gt LOC = SPIN59

NET XClt2gt LOC = SPIN60

NET XClt3gt LOC = SPIN61

NET YAlt0gt LOC = SPIN111

JP4 接頭

NET YAlt1gt LOC = SPIN110

NET YAlt2gt LOC = SPIN107

NET YAlt3gt LOC = SPIN106

NET YBlt0gt LOC = SPIN93

NET YBlt1gt LOC = SPIN91

NET YBlt2gt LOC = SPIN87

NET YBlt3gt LOC = SPIN88

NET YBlt4gt LOC = SPIN92

NET YBlt5gt LOC = SPIN94

NET YBlt6gt LOC = SPIN95

NET YBlt7gt LOC = SPIN96

NET YClt0gt LOC = SPIN112

NET YClt1gt LOC = SPIN113

NET YClt2gt LOC = SPIN103

NET YClt3gt LOC = SPIN102

在光碟片中 RFFPGAVHDLDEMOSVF95288XL 裡有VHDL與數位邏輯設計書本範例原始檔與合成

檔案

88

eM_FPGA 模組

NET CLK LOC = E12

NET XAlt0gt LOC = AA3

NET XAlt1gt LOC = Y4

NET XAlt2gt LOC = AA4

NET XAlt3gt LOC = AB4

NET XBlt0gt LOC = M1

NET XBlt1gt LOC = M2

NET XBlt2gt LOC = W13

NET XBlt3gt LOC = Y13

NET XBlt4gt LOC = AA13

NET XBlt5gt LOC = AB13

NET XBlt6gt LOC = Y18

NET XBlt7gt LOC = W18

NET XClt0gt LOC = W5

NET XClt1gt LOC = Y5

NET XClt2gt LOC = AA5

NET XClt3gt LOC = AB5

NET YAlt0gt LOC = Y17

JP4 接頭

NET YAlt1gt LOC = W17

NET YAlt2gt LOC = AB18

NET YAlt3gt LOC = AA18

NET YBlt0gt LOC = N1

NET YBlt1gt LOC = M5

NET YBlt2gt LOC = M3

NET YBlt3gt LOC = M4

NET YBlt4gt LOC = M6

NET YBlt5gt LOC = N2

NET YBlt6gt LOC = U13

NET YBlt7gt LOC = V13

NET YClt0gt LOC = AA17

NET YClt1gt LOC = AB17

NET YClt2gt LOC = V12

NET YClt3gt LOC = U12

在光碟片中 RFFPGAVHDLDEMOBIT2V250 裡有VHDL與數位邏輯設計書本範例原始檔與合成檔

89

Page 46: RFFPGA 直流馬達實驗手冊juniortek.com.tw/program/manual/RF-DC-mal.pdf · em_demo模組 em_dcm 直流伺服馬達 dc電源 rffpga 系統的直流馬達實驗規劃 其中包括:

page 2 與 page 3 畫面設計與實驗一 page 2 與 page 3相同畫面 page 4 畫面設計與實驗二 page 4 畫面 方塊的參數設定 延續上一實驗的說明使用者可以調整 PD控制器中的 kp和 kd值以調整系統之

響應 實測響應圖

訊 號 說 明 訊 號 說 明 ch1 方波產生器產生之位置命令 ch3 馬達角速度訊號 ch2 馬達角位置 ch4 Pd控制器輸出之電壓訊號

46

直流馬達之閉迴路位置控制響應圖

47

64 實驗 4-加減速的位置控制 實驗說明為避免方波命令的過於嚴苛在方波命令的輸出加入一加減速控制功

能方塊以減緩命令變化的幅度增加馬達運動的平順建立的測試方塊圖如下

方塊圖中的模組功能說明如下

1用 fg1產生測試用的方波位置命令 2將方波位置命令送到加減速控制方塊處理後產生新的位置命令再將新的位置命

令與位置回授訊號送到 PD控制器方塊中產生電壓控制訊號最後透過 io2模組將訊號送出到伺服介面驅動馬達轉動

對應之 plc檔程式說明(exp_accplc) echo off 畫面顯示開始

run dsp 0 選擇 DSP1

run stop run reset 既有程式停止

run testDCMmem 下載指定程式

das 1 ampfg1out 0 1024 PWM 波形 Volt 設定 DAS 頻道1

das 2 ampcn1out 0 1024 加速控制 Volt 設定 DAS 頻道2

das 3 ampio1spd 0 1024 馬達速度 Volt 設定 DAS 頻道3

das 4 ampio1ang 0 1024 馬達角度 Volt 設定 DAS 頻道4

plot select 0 設定示波器頁數

plot xunit 100000 0 設定示波器 X軸

plot yunit 1 2000 -300 設定示波器 Y1 軸

plot yunit 2 2000 -100 設定示波器 Y2 軸

plot yunit 3 50 100 設定示波器 Y3 軸

plot yunit 4 2000 300 設定示波器 Y4 軸

48

plot trigger 1 0 1 10 設定示波器觸發

plot scope 9 1 2 3 4 設定示波器顯示

module io2 設定 io2 模組

s cmd ampcn2out

module fg1 設定 fg1 模組

s kAmp 2000 s kFrq 150

module cn1 設定 cn1 模組

s cmd ampfg1out

module cn2 設定 cn2 模組

s cmd ampcn1out s fdk ampio1ang s kp 0x300 s kd 0x4000

module ft1 設定 ft1 模組

s u ampfg1out s dt 2 s ka 320

module io3 設定 io3 模組

s led ampfg1out

module 回復預設模組

run 1khz 設定抽樣頻率為 4KHz

run start DSP 開始執行

das stop pause 1 DAS 啟動 das start DAS 啟動

echo on 回復正常訊息顯示

CAI操控設計畫面規劃如下(EXP_accCAI) page 1 畫面設計

49

page 2 畫面設計與實驗一 page 2相同畫面 page 3 畫面設計與實驗二 page 4相同畫面

參數設定參考之前各實驗的說明可線上機動性的調整 PD控制器中的 kp和 kd值以調整系統之響應 實測響應圖

訊 號 說 明 訊 號 說 明 ch1 方波產生器產生之位置命令 ch3 馬達角位置 ch2 加減速模組輸出之位置命令 ch4 馬達角速度訊號

50

圖一 直流馬達經加減速控制後之閉迴路控制響應圖

51

65 實驗 5-正弦波的位置控制 實驗說明在本實驗中改變命令的波形由方波改變為正弦波並建立如下的測

試方塊圖與上一實驗相比較僅更改命令的波形產生方塊 方塊圖中的模組功能說明如下 1用 fg2產生測試用的弦波位置命令 2將弦波位置命令送到加減速控制方塊處理後產生新的位置命令再與 io1 讀入的位

置回授訊號送到 PD 控制器方塊中產生電壓控制訊號再透過 io2 模組將訊號送出到伺服介面驅動馬達轉動

對應之 plc檔程式說明(exp_sinplc) echo off 畫面顯示開始

run dsp 0 選擇 DSP1

run stop run reset 既有程式停止

run testDCMmem 下載指定程式

das 1 ampfg2out 0 1024 SIN 波形 Volt 設定 DAS 頻道1

das 2 ampcn1out 0 1024 加速控制 Volt 設定 DAS 頻道2

das 3 ampio1spd 0 1024 馬達速度 Volt 設定 DAS 頻道3

das 4 ampio1ang 0 1024 馬達角度 Volt 設定 DAS 頻道4

plot select 0 設定示波器頁數

plot xunit 100000 0 設定示波器 X軸

plot yunit 1 2000 -300 設定示波器 Y1 軸

plot yunit 2 2000 -100 設定示波器 Y2 軸

plot yunit 3 50 100 設定示波器 Y3 軸

plot yunit 4 2000 300 設定示波器 Y4 軸

plot trigger 1 0 1 10 設定示波器觸發

52

plot scope 9 1 2 3 4 設定示波器顯示

module io2 設定 io2 模組

s cmd ampcn2out

module fg2 設定 fg1 模組

s kAmp 2000 s kFrq 100

module cn1 設定 cn1 模組

s cmd ampfg2out

module cn2 設定 cn2 模組

s cmd ampcn1out s fdk ampio1ang s kp 0x300 s kd 0x4000

module ft1 設定 ft1 模組

s u ampfg2out s dt 2 s ka 320

module io3 設定 io3 模組

s led ampfg2out

module 回復預設模組

run 1khz 設定抽樣頻率為 4KHz

run start DSP 開始執行

das stop pause 1 DAS 啟動 das start DAS 啟動

echo on 回復正常訊息顯示

CAI操控設計畫面規劃如下(EXP_sinCAI) page 1 畫面設計

53

page 2 畫面設計 page 3 畫面設計與實驗二 page 4相同畫面

方塊的參數設定可調整 PD控制器中的 kp和 kd值以調整系統之響應 實測響應圖

訊 號 說 明 訊 號 說 明 ch1 弦波產生器產生之位置命令 ch3 馬達角位置訊號 ch2 加減速模組輸出之位置命令 ch4 馬達角速度訊號

54

直流馬達之閉迴路弦波加減速位置控制響應圖

55

7組合語言說明

本節將針對 DC馬達伺服控制實驗專用的程式模組進行功能與程式碼的說明其

有關於波形產生器與資料擷取模組等說明如下

SIN_waveasm 正弦波產生器 PWM_waveasm 方波產生器 IIR1_filterasm 一階濾波器 DAS4asm 資料蒐集模組

弦波產生器

此模組會產生週期性的正弦波方塊圖如下

outfrq

kBiasbias

ampkAmp

kFrqth

kThf=1TB

θ

A

其中

1正弦波有四個參數振幅(A)頻率(F)相位(θ)和偏移(B)其公式為 out = A sin(2πF t +θ) + B 2對於單純的正弦波產生器所對映的參數包括 kAmp 振幅值 kFrq 頻率值kFrq=655368000Hz其中 Hz的範圍為 0~4000例如 1000Hz =gt frq=8192 100Hz =gt frq=819 10Hz =gt frq=82 1Hz =gt frq=8 kTh 相角值0~255代表 0~360的相位當 th=0 時為正弦波 th=64 時為餘弦波 th=128時為反相波依此類推 kBias偏移值 3對於可調變的正弦波產生器其對映的輸入點為 amp 控制振幅的輸入點可產生調幅(AM)波形 frq 控制頻率的輸入點可產生調頻(FM)波形 th 控制相位的輸入點可產生調相(PM)波形 bias控制偏移的輸入點可產生雙頻混波(相加)波形 4若不使用調變功能時各個輸入點時的預設值為 amp 指向 kAmp 的位址 frq 指向 kFrq 的位址

56

th 指向 kTh 的位址 bias指向 kBias的位址

模組程式範例SIN_WAVEasm

local amp R0 IP kAmp 輸入點sin波的振幅 local frq R1 IP kFrq 輸入點sin波的頻率 local th R2 IP kTh 輸入點sin波的相角 local bias R3 IP kBias 輸入點sin波的中心偏移 local out R4 OP 輸出點sin波輸出 local tab R5 TP 表格指標指向 sin[256]的表格 local ang R6 內部變數相位角65536=360deg local kAmp R7 1000 參數振幅值 local kFrq R8 1000 參數頻率值=655368000Hz local kTh R9 0 參數相角值360deg=256 local kBias R10 0 參數偏移值 data 11 模組變數區長度及初值 initial 啟動程序 WR ang0 WR out0 ang=out=0 RET timer 即時控制程序(8KHz) RD ang ADD (frq) WR ang ang+=frq SFR 8 ADD (th) AND 255 ACC=sin(ang256+th) ADD tab WRH RDM table-look-up MUL (amp) SFR 12 ADD (bias) WR out out=ACCamp4096+bias RET table tab 256 sin[256]表格區10=4096 0 101 201 301 401 501 601 700 00~070deg 799 897 995 1092 1189 1285 1380 1474 08~0F 1567 1660 1751 1842 1931 2019 2106 2191 10~17 2276 2359 2440 2520 2598 2675 2751 2824 18~1F 2896 2967 3035 3102 3166 3229 3290 3349 20~27 3406 3461 3513 3564 3612 3659 3703 3745 28~2F 3784 3822 3857 3889 3920 3948 3973 3996 30~37 4017 4036 4052 4065 4076 4085 4091 4095 38~3F 4096 4095 4091 4085 4076 4065 4052 4036 40~4790deg 4017 3996 3973 3948 3920 3889 3857 3822 48~4F 3784 3745 3703 3659 3612 3564 3513 3461 50~57 3406 3349 3290 3229 3166 3102 3035 2967 58~5F

57

2896 2824 2751 2675 2598 2520 2440 2359 60~67 2276 2191 2106 2019 1931 1842 1751 1660 68~6F 1567 1474 1380 1285 1189 1092 995 897 70~77 799 700 601 501 401 301 201 101 78~7F 0 65435 65335 65235 65135 65035 64935 64836 80~87180deg 64737 64639 64541 64444 64347 64251 64156 64062 88~8F 63969 63876 63785 63694 63605 63517 63430 63345 90~97 63260 63177 63096 63016 62938 62861 62785 62712 98~9F 62640 62569 62501 62434 62370 62307 62246 62187 A0~A7 62130 62075 62023 61972 61924 61877 61833 61791 A8~A8 61752 61714 61679 61647 61616 61588 61563 61540 B0~B7 61519 61500 61484 61471 61460 61451 61445 61441 B8~BF 61440 61441 61445 61451 61460 61471 61484 61500 C0~C7270deg 61519 61540 61563 61588 61616 61647 61679 61714 C8~CF 61752 61791 61833 61877 61924 61972 62023 62075 D0~D7 62130 62187 62246 62307 62370 62434 62501 62569 D8~DF 62640 62712 62785 62861 62938 63016 63096 63177 E0~E7 63260 63345 63430 63517 63605 63694 63785 63876 E8~EF 63969 64062 64156 64251 64347 64444 64541 64639 F0~F7 64737 64836 64935 65035 65135 65235 65335 65435 F8~FF

就程式結構而言說明如下

timer 即時控制程序(8KHz) RD ang ADD (frq) WR ang ang+=frq SFR 8 ADD (th) AND 255 ACC=sin(ang256+th) ADD tab WRH RDM table-look-up MUL (amp) SFR 12 ADD (bias) WR out out=ACCamp4096+bias RET

1基本上我們以查表法計算 sin()其輸入θ的範圍為 0~255對映到 0~360deg其輸出 sin(θ)的範圍為+-4096對映到+-10的範圍

2建立一個內部變數 ang其範圍為 0~65535對映到 0~360的相位角 3每個timer程序都執行 ang+=frq的動作更新目前的相位角接著依照 ang的相位角查表得到 sin(ang256+th)值

4由於表格長度為 256-word所以必須將 ang256才能得到正確的對映關係而 th範圍為 0~255所以不需要像 ang一般的做額外處理

5sin()的範圍為(+1-1)而在表格中以(+4096~-4096)的型式記錄相當於 10=4096所以執行 Asin()時還要用 SFR12指令做4096的動作才能正確的取得輸出值

58

6就頻率輸入 frq而言其計算原則是將θ=ωt轉化成θ=Σ(ωdt)因為抽樣頻率

為 8KHz所以 dt=18000而得到 frq=655368000Hz公式其中 Hz為真正的頻率在 8KHz的抽樣頻率下其範圍為 0~4000

鋸齒波產生器

此模組會產生週期性的鋸齒波方塊圖如下

outfrq

kBiasbias

ampkAmp

kFrqth

kThf=1TB

θ

A

其中

1鋸齒波也有四個參數振幅(A)頻率(F)相位(θ)和偏移(B)和正弦波的定義完全一致唯一的差異是其輸出為鋸齒波而非正弦波

2基本波形是從週期開始時為 0一直遞增到週期結束時到達最高點然後立刻回歸

到 0重新開始 3以程式結構而論鋸齒波程式幾乎就是正弦波的相位計算部分只差沒有正弦波的

查表處理而已

模組程式範例SAW_WAVEasm

local amp R0 IP kAmp 輸入點sin波的振幅 local frq R1 IP kFrq 輸入點sin波的頻率 local th R2 IP kTh 輸入點sin波的相角 local bias R3 IP kBias 輸入點sin波的中心偏移 local out R4 OP 輸出點sin波輸出 local ang R5 內部變數相位角65536=360deg local kAmp R6 1000 參數振幅值 local kFrq R7 1000 參數頻率值=655368000Hz local kTh R8 0 參數相角值360deg=256 local kBias R9 0 參數偏移值 data 11 模組變數區長度及初值 initial 啟動程序 WR ang0 WR out0 ang=out=0 RET timer 即時控制程序(8KHz) RD ang ADD (frq) WR ang ang+=frq SFR 8 ADD (th) AND 255 ACC=(ang256+th)amp0x00ff MUL (amp) SFR 8 ADD (bias) WR out out=ACCamp256+bias

59

RET

脈衝波產生器

outfrq

kBiasbias

ampkAmp

kFrqth

kThf=1TB

θ

A

pwm

kDutyduty

此模組會產生週期性的脈衝波方塊圖如下

其中

1脈衝波有五個參數其中振幅(A)頻率(F)相位(θ)和偏移(B)四個參數和正弦波

定義完全一樣另外再增加一個負載率(D) 2基本波形是從週期開始時為 1隔段時間後換為 0然後持續到週期結束再重新開始其中 1所佔有的比例就是負載率當 D=0時為 0而 D=255時為 100

3和其他參數類似負載率(D)以 duty為其輸入點而以 kDuty為其參數值

模組程式範例PLS_WAVEasm

local amp R0 IP kAmp 輸入點脈衝波的振幅 local frq R1 IP kFrq 輸入點脈衝波的頻率 local th R2 IP kTh 輸入點脈衝波的相角 local bias R3 IP kBias 輸入點脈衝波的中心偏移 local duty R4 IP kDuty 輸入點脈衝波的負載率 local out R5 OP 輸出點脈衝波輸出 local ang R6 內部變數相位角65536=360deg local kAmp R7 1000 參數振幅值 local kFrq R8 1000 參數頻率值=655368000Hz local kTh R9 0 參數相角值360deg=256 local kBias R10 0 參數偏移值 local kDuty R11 128 參數負載率100 =256 data 12 模組變數區長度及初值 initial 啟動程序 WR ang0 WR out0 ang=out=0 RET timer 即時控制程序(8KHz)

60

RD ang ADD (frq) WR ang ang+=frq SFR 8 ADD (th) AND 255 ACC=(ang256+th)amp0x00ff SUB (duty) RD (amp) JLT t1 RD 0 ACC=(amp0) t1 ADD (bias) WR out out=ACC+bias RET

IIR 一階濾波器

此模組執行一階的 IIR濾波器方塊圖如下

kau x

Z-1

+

+

-

+低通濾波器

高通濾波器dx lp

hp

濾波器參數的計算公式如下

1假設濾波器的頻寬為 hz則 ωn=hz628 2若系統頻率為 8KHz則抽樣週期 dT為 dT=dt8000 其中 dt為模組參數 3則濾波器參數為 ka=ωndT4096或是 =hzdt62880004096即 =hzdt32 4當 dt決定後所允許的訊號頻寬為(4000dt)換句話說訊號頻寬會因為 dt增加而下降

為了方便實驗的運用下面列出常用的參數對照表

濾波頻寬

(Hz)

10 20 50 100 200 500 1000 2000

訊號頻寬

(Hz)

400 800 2000 4000 4000 4000 4000 4000

模組參數 dt 10 5 2 1 1 1 1 1

模組參數 ka 320 320 320 320 640 1600 3200 6400

表格的運用方式如下

1首先決定濾波頻寬 2接著查表找出對映的參數 dt和 ka 3再查表得到對映的訊號頻寬以決定是否需要串接前級濾波器

61

模組程式範例IIR1_FILTERasm

local u R0 IP 輸入點濾波器輸入 local lp R1 OP 輸出點低通濾波器輸出 local hp R2 OP 輸出點高通濾波器輸出 local dt R3 1 參數抽樣週期 local ka R4 4096 參數增益 ka10=4096 local prd R5 內部變數抽樣週期用 data 6 模組變數區長度 initial 開機啟動程序 WR lp0 WR hp0 WR prd1 RET lp=hp=0prd=1 timer 即時控制程序 SUB prd1 JNZ b9 if (--prdgt0) return RD dt WR prd prd=dt RD (u) SUB lp WR hp hp=u-lp MUL ka SFR 12 ADD lp WR lp lp+=(hpka4096) b9 RET

資料蒐集模組

資料蒐集模組是一個非常特殊的模組專門配合 eTTY 程式中的示波器使用

模組程式範例DAS4asm

local cmd R0 0 紀錄命令0=停止1=前置記錄2=正觸發4=負觸發6=觸發記錄 local dt R1 1 抽樣週期每 dT抽樣一次 local tab R2 TP DAS表格啟始位址 local cnt R3 0 目前記錄點(0~255) local ch1 R4 0 定義頻道1的變數位址 local ch2 R5 0 定義頻道2的變數位址 local ch3 R6 0 定義頻道3的變數位址 local ch4 R7 0 定義頻道4的變數位址 local trg R8 0 定義觸發頻道的變數位址 local th R9 0 觸發準位 local tail R10 0 觸發後的抽樣個數 local buf R11 1 抽樣計數(1~dt) local pnt R12 表格位址計算pnt=tab+cnt4 local len R13 表格長度計算(0~256) data 14 定義模組變數區的長度 table tab 1024 定義表格的長度 initial 啟動程序 WR cmd0 RET cmd=0 timer 控制程序

62

ADD cmd0 JZ t9 if (cmd==0) return SUB buf1 JNZ t9 if (--buf)gt0) return RD dt WR buf dt=buf RD cnt ADD 1 AND 0xff WR cnt cnt=(cnt+1)amp0xff SFL 2 ADD tab WR pnt pnt=tab+cnt4 RD (ch1) WR (pnt) ADD pnt1 pnt++=ch1 RD (ch2) WR (pnt) ADD pnt1 pnt++=ch2 RD (ch3) WR (pnt) ADD pnt1 pnt++=ch3 RD (ch4) WR (pnt) pnt =ch4 RD cmd SUB 1 JZ t9 SUB 1 JZ t2 SUB 1 JZ t3 SUB 1 JZ t4 SUB 1 JZ t5 SUB 1 JZ t6 JR t7 t2 RD (trg) SUB th JGE t9 ADD cmd1 JR t9 wait trgltth t3 RD (trg) SUB th JLE t9 JR t6 wait trggtth t4 RD (trg) SUB th JLE t9 ADD cmd1 JR t9 wait trggtth t5 RD (trg) SUB th JGE t9 JR t6 wait trgltth t6 WR len0 WR cmd7 len=0cmd=7 t7 ADD len1 SUB tail JLT t9 WR cmd0 if ((++len)gt=0x80) cmd=0 t9 RET

與 DC 馬達控制相關的程式模組有以下 4個程式模組說明如下

(1)加減速控制模組 ACC_controlasm (2)光電盤輸入模組 POS_inputasm (3)PWM輸出模組 PWM_outputasm (4)PD控制模組 PD_controlasm

71加減速控制模組 此程式模組主要功能在於執行位置控制的加減速命令修正其數學模式採用 Lynn

濾波器的架構參見下圖

cmd

2

+

old Z -1

-

Z -1

Z -1

Z-1

Z-1x0 x1 x8 x9 x16

+ -

++

2

Z-1

Z-1 y1 y2

+

-

y0

+ +

sumZ-1

+164

12

out

dif

+

63

加減速控制模組方塊圖

其中

1Lynn 濾波器的階數固定成八階也就是 m=8其公式為 H(z) = (1-2Z-m+Z-2m)(1-2Z-1+Z-2)m2

2因為m=8所以m2=64因此最後計算低通濾波的部份時要先做除 64的運算 3因為低通濾波(lp)和 y0之間有 64倍的差異代表 y0y1y2的變化範圍比濾波器輸

入值要擴大許多例如輸入值在+-1000變化時y0y1y2很可能會在+-64000之間變化這範圍已經超出整數處理的範圍很可能會造成錯誤的計算結果

4所以在實驗時輸入值的變化範圍必須控制在+-500之間以保證計算的正確性 5對於 Lynn 濾波器當 m=8時其濾波器的頻寬固定為 1 kHzmdt也就是 dt=1時頻寬為 125 Hz dt=2時頻寬為 625Hz依此類推 6對於 Lynn 濾波器其濾波器的延遲固定為 m個抽樣週期因此設計 hp = x8 - lp 即可得到高通濾波器的對應結果 7其中乘 2和除 64的運算以移位運算取代所以整個程式中並無任何乘法運算 8Lynn 濾波器本身並不是穩定濾波器所以在程式啟動時必須確實的將所有狀態

(x0~x16)歸零否則會產生不穩定的狀態輸出

因為 Lynn濾波器中所有參數固定所以除了抽樣週期 dt 之外並無任何可調參數

抽樣週期 dt 可以控制頻寬dt 越大則濾波器頻寬越低

將步階命令值的輸出送入 Lynn 濾波器中經由低通濾波器的效應可以減緩命

令的變化程度達到加減速控制的目的以下為使用 Lynn 濾波器型式實現加減速控

制的組合語言程式列印 如欲更進一步瞭解 Lynn 濾波器與 FIR 數位濾波器之間的關係可以參考通訊實驗

四數位濾波器設計(FIR)中之說明

ACC_controlasm程式列印 local cmd R0 IP 輸入點位置命令

local out R1 OP 輸出點加減速處理後的位置命令

local dif R2 OP 輸出點位置微分命令

local axis R3 0 馬達編號0=X1=Y2=Z3=C

local old R4 內部變數微分計算用

local sumL R5 內部變數積分計算用

local sumH R6 內部變數積分計算用

local y0 R7 內部變數y(0~2)

local y1 R8 local y2 R9

local x0 R10 內部變數x(0~16)

local x1 R11 local x2 R12 local x3 R13 local x4 R14

local x5 R15 local x6 R16 local x7 R17 local x8 R18

local x9 R19 local x10 R20 local x11 R21 local x12 R22

local x13 R23 local x14 R24 local x15 R25 local x16 R26

64

data 27 模組變數區長度

initial 開機啟動程序

WR dif0 RD (cmd) WR out WR old dif=0 out=old=cmd

sumHL=cmd64

SFL 6 WR sumL RD out SFR 10 SGN 5 WR sumH

RPT 17 WR x00 RPT 3 WR y00 RET x[0~16]=0y[0~2]=0

timer 即時控制程序

RD (cmd) SUBX old WR x0 x0=cmd-old old=cmd

SUB x81 ADD x16 ADD y11 SUB y2 WR y0 y0=x0-2x8+x16+2y1-y2

SGN ADD sumL WR sumL RDH ADC sumH WR sumH sumHL+=y0

WRH RD sumL SFR 6 WR out out=sumHL64

RD y0 SGN SFR WR dif dif=y032mm

RD x0 RPT 16 RDX x1 x[i]=x[i-1] i=1~16

RD y0 RDX y1 WR y2 y[i]=y[i-1] i=1~2

b9 RET

72光電盤輸入模組

DC馬達的位置由光電盤量測之預設儲存於 0xac與 0xbe二個輸入埠位址中其中位址 0xac記錄 X軸馬達的位置位址 0xbe記錄 Y軸馬達的位置由於本實驗的DC馬達接在 Y軸的位置上因此程式中直接選用 Y軸的輸入 光電盤位置輸入的程式列印如下其中速度由位置的差分而得至於馬達的位置

則使用內部 2個 word加以記錄精度為 32位元 POS_inputasm程式列印 local spd R0 OP 輸出點速度量測值

local ang R1 OP 輸出點角度量測值

local angH R2 內部變數角度的 32 位元部分

local mode R3 0x308 模式選擇15MHzAB 相正反向輸入

local pht R4 0xac 輸入阜地址光電盤輸入(0xac)

local phtc R5 0xbe 輸入阜地址光電盤模式(0xbe)

local old R6 內部變數速度更新用

data 7 模組變數區長度

initial 開機啟動程序

RD mode WR (phtc) phtc=mode

RD (pht) WR old WR spd0 RET old=phtspd=0

timer 即時控制程序

RD (pht) SUBX old SGN 11 WR spd spd=(pht-old)old=pht

65

ADD ang WR ang angHL+=spd

RDH ADC angH WR angH

RET

73 PWM輸出控制模組 模組方塊

cmd PWM輸出

程式說明 1在開機時將切換保護時間寫到輸出阜 0xbc上其中切換保護值為 0~6360=5us 2在每次 timer interrupt時將 cmd訊號處理後寫到輸出阜 0xb8上

PWM_outputasm程式列印 local cmd R0 IP gnd 輸入點v相命令

local gain R1 4096 參數輸出增益1=4096

local bias R2 2048 參數輸出偏壓0=2048

local limit R3 4095 參數輸出極限1=4095

local zone R4 0x88f0 參數頻率=12KHz切換保護=5us

local pwm R5 0xb8 輸出阜地址PWM0 輸出(0xb8)

local mode R6 0xbc 輸出阜地址PWM 模式(0xbc)

local p0md R7 0xf8 輸出阜地址port0 模式(0xf8)

local gnd R8 0 輸入接地點

data 9 模組變數區長度

initial 開機啟動程序

RD bias WR (pwm) pwm=bias

RD 0xffff WR (p0md) set port0 mode

RD zone WR (mode) RET mode=zone

stop 關機保護程序

RD bias WR (pwm) RET pwm=bias

timer 即時控制程序

RD (mode) xor 1 and 1 WR (mode) trigger watch-dog

RD (cmd) MUL gain SFR 12 ADD bias ACC=(cmdgain4096)+bias

MAX 0 MIN limit WR (pwm) pwm=limit(ACC)

RET

66

74 PD 控制模組

PD控制的模組方塊參見圖二十一所示其中比例控制的部份直接由增益 kp加以調整微分控制的部份則由誤差的差分經增益 kd的調整而得

Σ+

-

cmd

fdk

err out

Σ

pk

dk

Σ

+

+

+

-

old1minusZ

PD控制器的方塊圖

PD_controlasm程式列印 local cmd R0 IP gnd 輸入點位置命令(可忽略)

local fdk R1 IP gnd 輸入點位置回授(可忽略)

local out R2 OP 輸出點用以控制速度迴路

local kp R3 256 參數增益 kp10=256

local kd R4 0 參數增益 kd10=256

local err R5 0 內部變數

local old R6 0 內部變數

local gnd R7 0 無輸入時的短路點

data 8 模組變數區長度

initial 開機啟動程序

WR out0 WR old0 RET out=old=0

timer 即時控制程序

RD (cmd) SUB (fdk) PRTF WR err

MUL kp SFR 8 P=(cmd-fdk)kp256

RDS err SUBX old MUL kd SFR 8 D=(err-old)kd256

ADDS

WR out out=P+D

RET

程式中預設增益值的 10以整數值 256為基底因此使用 SFR 8的指令加以調

整另外在在計算微分項的程式部份用到 SUBX old的指令其詳細的暫存器動作如

下 參考 piDSP的指令說明SUBX指令將總共用到 3個時序參考錯誤 找不到參照

67

來源在時序 1時將原先 AX的資料拷貝一份到 HX中時序 2時正式執行減

法的動作所以 AX暫存器中的內容會變成 err-old時序 3時DSP會將存放在 HX暫存器中的內容拷貝一份到 old的記憶體中也就是經由 SUBX此一精簡指令將

同時完成計算差分所需要的相減與資料疊代的動作有效的利用 piDSP控制器 DSP核心的精簡指令將可以大幅提昇系統的計算速度

HX AXoldSUBXerr err

old

err

errerr olderr minus

1_err

errerr olderr minus err

1_err

1

2

3

SUBX的指令時序與暫存器變化

68

8附錄快速安裝說明

光纖網路通訊 FPGA 發展系統 (適用於 WIN-XP200098 系統)

快速安裝說明

26Pin 負載輸出入埠

雙電源︵5

12

伏︶輸入埠

單電源︵5

伏︶輸入埠

USB

光纖線輸

號 光纖線輸出埠

入 傳 埠

首先將光碟片 RFFPGA 目錄檔案拷貝在您工作硬碟裡面

第一次安裝時先將 USB 傳輸線接上電腦主機將電源供應器接上 FPGA 模組此時電

腦會出現安裝 USB-Serial 驅動程式選擇從清單安裝此驅動程式放置在光碟片

RFFPGA-USBdrive 選擇您目前安裝系統

可選擇 WIN-98WIN-MEWIN-2000WIN-XP 系統配合您現在工作電腦作業系統

69

注意一般電腦 USB 埠很多插口當您安裝驅動程式時是配合您當時插入之埠

下次如您插入不同接口埠時電腦會再次要求安裝驅動程式這是正常現象請再次安

裝驅動程式否則無法使用

FPLC 操作

首先進入 RFFPGA裡子目錄 testASM直接點選 fPLCexe 出現下面操作畫面(也可直接將

此檔案放置桌面直接點選)

(或者選擇 File 再執行 Setuphellip 選擇您要執行 CAI 檔)

70

進入下面操作畫面 首先使用滑鼠在 FPGA下載按鈕單擊動作使 FPGA變成 DSP晶片 實驗一至實驗五皆為使用 DSP組合語言設計程式其原始程式分別為 testASM1至testASM5可使用 texPad 開啟與編輯程式內容 實驗三與實驗五多有 IO控制動作 當選擇實驗三時出現下面畫面

71

eM_USB 模組

數字型 LED

0 1 2 34 5 6 78 9 A BC D E F

燈號型 LED

44 鍵盤

ADC0 ADC1 DAC0 DAC1

LED 選擇KEY 選擇

模 式 1

0123

注意操作畫面 3與 4 說明開關與按鍵選擇位置後選擇程式下載再按程式啟動如您

按下 0-3按鍵時燈號型 LED會有不同方向閃爍顯示程式停止時結束所有 IO控制動作再按回首頁選擇其他實驗 實驗四與實驗五

模式3

0 1 2 34 5 6 78 9 A BC D E F

按照上面開關選擇直接操作如果以上實驗皆能按照正常操作表示您光纖網路通訊

FPGA發展模組以能正常使用 注意 開機與關機動作順序如下

開機電腦啟動 --- eM_USB 模組電源接上 --- USB 接上電腦 ---

啟動 FPLC 軟體 --- 下載 FPGA 程式

關機關閉 FPLC 軟體 --- eM_USB 模組電源拔掉 --- 拔掉電腦 USB 接頭 ---關掉

電腦

如果以上順序有亂可能造成 USB 找不到驅動造成無法下載經過幾次測試還是

無法下載建議重新啟動電腦主機按照正確步驟操作

72

FPGA 下載操作

進入 FPLC 操作系統按照下列步驟選擇節點模組與下載 bit FPGA 檔案

在 VHDLDEMO 子目錄下您可以選擇您目前 FPGA 種類型號在此型號下我們已將 VHDL

與數位邏輯設計課本範例全部放於此處

73

光纖網路連線 FPGA 下載操作

首先利用光纖線將 eM_USB0 模組光纖輸出埠接至 eM_USB1 模組光纖輸入埠以此

類推最後再將最後 eM_USBN 模組光纖輸出埠接至 eM_USB0 模組光纖輸入埠配置

如附圖方式

個人電腦(Windows) eM_USB模組

0USB

eM_USB模組1

光纖網路

eM_USB模組2

eM_USB模組N

配置完成後進入 FPLC 系統首先必須先將 Node00 下載在 testASM 子目錄裡

piDSPv0bit 檔讓 eM_USB0 模組 FPGA 具備 DSP 功能才能執行光纖網路通訊

操作如下

此時您就可以選擇分別下載至各模組 FPGA 檔 bit

74

安裝 FPLC 注意事項

當您進入 FPLC 時

按 FILE 選擇 programhellip 選擇檔案為 exp_dcmplc 出現下面畫面

正常顯示畫面為

75

DOS 環境操作

在 PC 端的操作是在 Windows 環境中的 DOS 視窗中執行指令範例如下

eFPGA progNETbit 下載 FPGA電路至網路節點0(即 USB節點)中 eFPGA testLEDbit 1 下載 FPGA電路至網路節點1中

對於單一節點的控制程序如下

1將 eM_USB模組連結個人電腦的 USB端 2eM_USB模組開機 3執行下載指令即可 eFPGA xxxxbit 4若要更改 FPGA電路只要重新執行下載指令即可

對於多個網路節點的控制程序如下

1第一組 eM_USB模組連結個人電腦的 USB端再以光纖網路依序其他各節點 2連接 USB界面者為模組0從光纖發射端連接出去的模組為1依此類推 3將所有 eM_USB模組開機 4執行下載指令如下 eFPGA progNETbit 模組0必須先下載指定的 FPGA電路 eFPGA xxxxbit 1 再依序下載其他網路模組的 FPGA電路 eFPGA yyyybit 2 eFPGA zzzzbit 最後再重新下載模組0的 FPGA電路 5換句話說模組0必須先執行 progNETbit讓光纖網路接受 FPGA控制後才能透過光纖網路下載至其他節點等全部網路節點下載完畢後再將模組0的 FPGA重新下載讓模組0也可自由執行任意的 FPGA電路

6若要更改某一個網路節點中的 FPGA電路只要重新執行下述指令 eFPGA progNETbit 模組0必須先下載指定的 FPGA電路 eFPGA yyyybit 2 下載指定網路模組的 FPGA電路 eFPGA zzzz bit 最後再重新下載模組0的 FPGA電路 換句話說除非模組0中的 FPGA已經包括光纖網路管理電路否則一定要先在

模組0中下載網路管理電路後才能下載指定網路節點的 FPGA電路

76

光纖網路通訊 FPGA 發展系統

系統配置

光纖網路通訊 FPGA 發展系統的系統配置圖如下

個人電腦(Windows) eM_USB模組

0USB

eM_USB模組1

光纖網路

eM_USB模組2

eM_USB模組N

其中

1基本模組為 eM_USB模組可用 USB界面和個人電腦連線並提供 USB對光纖網路的轉換功能使得個人電腦可以獨立控制光纖網路中的每個網路節點

2eM_USB模組也可以作為光纖網路中的網路節點透過光纖網路而接受個人電腦的

監控 3就個人電腦而言不論是 USB界面直接連結或是以光纖網路間接連結的 eM_USB模組都是可以直接監控的網路節點最多可以同時控制一個 USB節點和 30個網路節點

4對於每一個網路節點個人電腦都可執行 eM_USB模組中 FPGA的電路下載工作並在適當的 FPGA電路配合下可執行 eM_USB模組中 FPGA內部電路的讀寫控制 5透過適當的 FPGA電路設計各網路節點都可透過光纖網路和其他任何網路節點

作同步通訊執行 FPGA內部記憶體的資料交換資料交換頻率可達 1KHz以上

77

網路模組配置

每個網路模組的標準配置圖如下

eM_USB模組光纖網路

USB eM_FPGA卡

eM_DEMO模組

eM_EXP實驗模組

DC電源

其中

1網路模組以 eM_USB模組為主提供基本的 USB界面和光纖網路連線 2eM_USB模組中的 FPGACPLD採用插卡型式可選擇不同的 eM_FPGA卡包括

eM_2V1K卡可選用 Virtex系列的 XC2V250和 XC2V1000 eM_3S1K卡可選用 Spartan3系列的 XC3S400XC3S1000和 XC3S1500 eM_3S50卡可選用 Spartan3系列的 XC3S50XC3S200和 XC3S400 eM_95XL卡可選用 9500XL系列的 XC95144XL和 XC95288XL 3eM_USB模組中的對外連線有兩種一種是 26P接頭用以連接既有的各種實驗模

組另一種是兩組 50P接頭將 FPGA中各接腳引出用以連接專題實驗 4eM_DEMO模組就是插上 50P接頭的教學模組其中包括 LED 數字顯示和 44鍵盤也具備兩組的 ADC和兩組的 DAC接頭提供類比訊號的測試工具

常用的實驗組合包括

1精簡組合包括(eM_USB+eM_FPGA)提供基本的網路節點適用於專題實驗 2標準組合包括(eM_USB+eM_FPGA+eM_DEMO)提供基礎 FPGA設計的教學實驗

3實驗組合包括(eM_USB+eM_FPGA+eM_DEMO+eM_EXP)提供進階的 FPGA實驗可依需求選用不同的實驗模組

78

eM_USB 模組

eM_USB 模組的電路配置圖如下

TxRx

DCPower

USB

JP2

JP3

光纖界面

外加電源

PC連線

JP1

eM_FPGA模組

FT232 CPLD FlashROM

SRAM

10cm

6cm

JP4

其中

1對外的連線接頭包括 DC電源 可選擇單電源(5V)或是多電源(5V+12V-12V)兩種 USB界面 直接連接個人電腦 光纖界面連接光纖網路 2實驗界面包括 JP1負責內部 CPLD的電路下載 JP2JP3兩組 50P的擴張用接頭 JP4 標準 26P接頭用以連接各種實驗模組 3內部的電路配置包括 A以 SO-DIMM接頭連接各種 eM_FPGA卡 B內附 EEPROMFlashROM和 SRAM提供 FPGA作應用測試 C以一顆 FT232BM作為 USB界面解碼而以一顆 CPLD作為光纖網路解碼 D提供各種 eM_FPGA卡的電路下載功能 4內附五顆 LED由上而下依序為 usbLED指示 USB界面的讀寫狀態 tstLED可由 FPGA電路自行定義 stsLED可由 FPGA電路自行定義 RxLED 可由 FPGA電路自行定義 TxLED 可由 FPGA電路自行定義

79

外部接腳定義

外部接頭的接點順序圖示如下

上視圖

JP11 9 JP4

126225

JP31

50249

JP21

50249

而各接頭的接點定義如下

JP1 JP4 JP2 JP3 1+33V 1+12V 2+12V 1 GND 2 GND 1 GND 2 GND 2GND 3 ADC 4 DAC 3POWER 4ALARM 3 +5V 4 +5V 3nc 5 yPB2 6 yPB3 5RxNET 6TxNET 5+12V 6+12V 4TCK 7 yPB1 6 yPB4 7RxUSB 6TxUSB 7-12V 6-12V 5nc 9 yPB0 10yPB5 9RxCAN 10TxCAN 9 ADC 10 DAC 6TDO 11yPB6 12yPB7 11P0D0 12P0D1 11P1D0 12P1D1 7TDI 13yGND 14yPC3 13P0D2 14P0D3 13P1D2 14P1D3 8nc 15yPC2 16yPC1 15P0D4 16P0D5 15P1D4 16P1D5 9TMS 17yPC0 18yPA0 17P0D6 18P0D7 17P1D6 18P1D7 19yPA1 20yPA2 19P0D8 20P0D9 19P1D8 20P1D9 21yPA3 22GND 21P0D10 22P0D11 21P1D10 22P1D11 23GND 24+5V 23P0D12 24P0D13 23P1D12 24P1D13 25+5V 26nc 25P0D14 26P0D15 25P1D14 26P1D15 27P2D0 28P2D1 27PxA0 28PxA1 29P2D2 30P2D3 29PxA2 30PxA3 31P2D4 32P2D5 31PxA4 32PxA5 33P2D6 34P2D7 33PxA6 34PxA7 35P2D8 36P2D9 35PxB0 36PxB1 37P2D10 38P2D11 37PxB2 38PxB3 39P2D12 40P2D13 39PxB4 40PxB5 41P2D14 42P2D15 41PxB6 42PxB7 43ADC0 44ADC1 43PxC0 44PxC1 45ADC2 46ADC3 45PxC2 46PxC3 47ADC4 48ADC5 47PxC4 48PxC5 49DAC0 50DAC1 49PxC6 50PxC7

80

eM_FPGA 模組

在各種 eM_FPGA 模組中FPGA 對外電路的標準配置圖如下

24576MHz

FlashROM

26PSRAM

EEPROM

mD[8]

yPA[4]

FPGACPLD

mA[19]mRDmWRmCSeeCKeeCSeeDIeeDO

光纖界面 RxNETTxNET

USB 界面 RxUSBTxUSBCLK24MPOWERALARM

LED

tstLEDstsLEDRxLEDTxLED

yPB[8]yPC[4]

ADCDAC

ADC[8]

實驗模組

ADC[2]

DAC[2]

xPA[4]

xPB[8]

xPC[4]

基礎實驗

其中

1FPGACPLD可以選擇下述幾種 XC2V250XC2V1000 採用 eM_2V1K模組其中 FPGA為 FG456包裝 XC3S400XC3S1000XC3S1500採用 eM_3S1K模組其中 FPGA為 FG456包裝 XC3S400XC3S1000XC3S1500採用 eM_3S1K模組其中 FPGA為 FG456包裝 XC3S50XC3S200XC3S400 採用 eM_3S50模組其中 FPGA為 TQ144包裝 XC95144XLXC95288XL 採用 eM_95XL模組其中 CPLD為 TQ144包裝 2採用 FG456包裝者可以控制所有的 IO界面 3採用 TQ144包裝者只是不能控制 RAM和 FlashROM而可以控制其他所有的界面 4所有 FPGA模組都可自由選擇由 USB界面或是由光纖界面下載電路但是 CPLD模組只能固定由 USB界面下載電路

5所有 FPGACPLD模組都可透過 26P接頭連接既有的各種實驗模組

81

FPGA 接腳對照表

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

mD0 XD6 mD0 A17 C13 -- -- mD1 XD7 mD1 B17 D12 -- -- mD2 XD8 mD2 C17 D11 -- -- mD3 XD9 mD3 D17 C11 -- -- mD4 XD10 mD4 E17 D10 -- -- mD5 XD11 mD5 E16 C10 -- -- mD6 XD12 mD6 E14 D9 -- -- mD7 XD13 mD7 E13 D7 -- -- mA0 XD14 mA0 D13 C7 -- -- mA1 XD15 mA1 C13 D6 -- -- mA2 XA0 mA2 V5 C3 -- -- mA3 XA1 mA3 U5 C4 -- -- mA4 XA2 mA4 Y2 D3 -- -- mA5 XA3 mA5 Y1 D4 -- -- mA6 XA4 mA6 V4 E3 -- -- mA7 XA5 mA7 V3 E4 -- -- mA8 XA6 mA8 W2 F3 -- -- mA9 XA7 mA9 W1 F4 -- -- mA10 XA8 mA10 T2 G6 -- -- mA11 XA9 mA11 T1 K3 -- -- mA12 XA10 mA12 R4 K10 -- -- mA13 XA11 mA13 R3 L3 -- -- mA14 XA12 mA14 R2 L4 -- -- mRD XRD mRD R1 D5 -- -- mWR XWR mWR P6 C6 -- --

POWER P0A0 POWER B4 B20 P1 P5 ALARM P0A1 ALARM A4 A19 P2 P6 RxNET P0A2 RxNET C4 B19 P4 P7 TxNET P0A3 TxNET C5 A18 P5 P9 RxUSB P0B0 RxUSB B5 A15 P6 P10 TxUSB P0B1 TxUSB A5 B15 P7 P11 RxCAN P0B2 RxCAN D6 A14 P8 P12 RxCAN P0B3 TxCAN C6 B14 P10 P13

CLK24M CLK24M CLK24M E12 B12 P124 P38

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

PWM0H P3A0 P0D0 E6 A8 P21 P23 PWM0L P3A1 P0D1 E5 B8 P23 P24 PWM1H P3A2 P0D2 C2 B6 P24 P25 PWM1L P3A3 P0D3 C1 A5 P25 P26 PWM2H P3A4 P0D4 D2 B5 P26 P27

82

PWM2L P3A5 P0D5 D1 A4 P27 P28 PWMenb P3A6 P0D6 E4 B4 P28 P30 PHT1Z P3A7 P0D7 E3 A3 P30 P31 PHT1A P3B0 P0D8 G2 C1 P31 P32 PHT1B P3B1 P0D9 G1 C2 P32 P33 PHT0A P3B2 P0D10 H5 D1 P33 P34 PHT0B P3B3 P0D11 J6 D2 P35 P35 AMP0 P3B4 P0D12 H4 E1 P36 P39 AMP1 P3B5 P0D13 H3 E2 P40 P40 AMP2 P3B6 P0D14 H2 F2 P41 P41 AMP3 P3B7 P0D15 H1 G1 P44 P43 eeSK P0C3 P1D0 C10 B9 P20 P22 eeCS P0C2 P1D1 D10 A9 P18 P21 eeDI P0C1 P1D2 F10 B10 P17 P20 eeDO P0C0 P1D3 E10 B11 P15 P19 ssCK P0B7 P1D4 E8 A11 P14 P17 ssCS P0B6 P1D5 E7 A12 P13 P16 ssDI P0B5 P1D6 A6 B13 P12 P15 ssDO P0B4 P1D7 B6 A13 P11 P14

ppCLK P3C0 P1D8 K4 G2 P46 P44 ppDIN P3C1 P1D9 K3 K1 P47 P45 TxD P3C2 P1D10 K2 K2 P50 P46 RxD P3C3 P1D11 K1 L1 P51 P48

tstLED P3C4 P1D12 L5 L2 P52 P49 stsLED P3C5 P1D13 L4 M1 P53 P50 RxLED P3C6 P1D14 L3 M2 P55 P51 TxLED P3C7 P1D15 L2 N1 P56 P52

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

xPA0 P2A0 P2D0 AA3 N2 P59 P53 xPA1 P2A1 P2D1 Y4 T1 P60 P54 xPA2 P2A2 P2D2 AA4 T2 P63 P56 xPA3 P2A3 P2D3 AB4 U2 P68 P57 xPC0 P2A4 P2D4 W5 V1 P69 P58 xPC1 P2A5 P2D5 Y5 V2 P70 P59 xPC2 P2A6 P2D6 AA5 W1 P73 P60 xPC3 P2A7 P2D7 AB5 W2 P74 P61

-- P2B0 P2D8 V6 Y1 P76 P64 -- P2B1 P2D9 V7 Y2 P77 P66 -- P2B2 P2D10 W6 AA3 P78 P68

mCS P2B3 P2D11 Y6 AB4 P79 P69 mA15 P2B4 P2D12 V9 AA4 P80 P70 mA16 P2B5 P2D13 V10 AB5 P82 P71 mA17 P2B6 P2D14 W10 AA5 P83 P74 mA18 P2B7 P2D15 Y10 AA6 P84 P75 CS0 P2C0 ADC0 AA10 AB8 P85 P76

83

SDIN0 P2C1 ADC1 AB10 AA8 P86 P77 CS1 P2C2 ADC2 U10 AB9 P87 P78

SDIN1 P2C3 ADC3 U11 AA9 P89 P79 SCLK P2C4 ADC4 V11 AB10 P90 P80 CS2 P2C5 ADC5 W11 AA10 P92 P81

SDOUT P2C6 ADC6 Y11 AB11 P93 P82 LDAC P2C7 ADC7 AA11 AA11 P95 P83

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

xPB0 P1A0 PxA0 M1 M3 P135 P85 xPB1 P1A1 PxA1 M2 M4 P132 P86 yPB2 P1A2 PxA2 M3 N3 P131 P87 yPB3 P1A3 PxA3 M4 N4 P130 P88 yPB1 P1A4 PxA4 M5 T4 P129 P91 yPB4 P1A5 PxA5 M6 T5 P128 P92 yPB0 P1A6 PxA6 N1 U3 P127 P93 yPB5 P1A7 PxA7 N2 U4 P125 P94 yPB6 P1B0 PxB0 U13 V3 P119 P95 yPB7 P1B1 PxB1 V13 V4 P118 P96 xPB2 P1B2 PxB2 W13 W3 P116 P97 xPB3 P1B3 PxB3 Y13 W4 P113 P98 xPB4 P1B4 PxB4 AA13 Y3 P112 P100 xPB5 P1B5 PxB5 AB13 Y4 P96 P101 yPC3 P1B6 PxB6 U12 Y5 P97 P102 yPC2 P1B7 PxB7 V12 W5 P98 P103 yPC1 P1C7 PxC0 AB17 W11 P108 P113 yPC0 P1C6 PxC1 AA17 Y11 P107 P112 yPA0 P1C5 PxC2 Y17 W10 P105 P111 yPA1 P1C4 PxC3 W17 Y10 P104 P110 yPA2 P1C3 PxC4 AB18 W9 P103 P107 yPA3 P1C2 PxC5 AA18 W8 P102 P106 xPB6 P1C1 PxC6 Y18 W6 P100 P105 xPB7 P1C0 PxC7 W18 Y6 P99 P104

84

eM_DEMO 模組

eM_DEMO 模組的電路配置圖如下

eM_USB 模組

數字型 LED

0 1 2 34 5 6 78 9 A BC D E F

燈號型 LED

44 鍵盤

ADC0 ADC1 DAC0 DAC1

LED 選擇KEY 選擇

其中

1eM_DEMO模組的基本功能包括 A將 xPAxPBxPC等 16個 IO訊號引出控制 LED和鍵盤電路 B將 ADDA訊號引出並放大成+-10V的工作範圍 2LED和鍵盤可以選擇三種模式由 LED和 KEY 兩組開關作選擇圖示如下

模式1

0123

模式2 模式3

0 1 2 34 5 6 78 9 A BC D E F

0123

3模式14鍵輸入並搭配 16點的 LED燈號顯示其中 16點 LED分別對映到 xPA[0~3]xPB[0~7]和 xPC[0~3] 4組按鍵分別對映到 xPC[0~3] 4模式24鍵輸入並搭配四個 7段式數字顯示其中 數字顯示由 xPA[0~3]作數字掃瞄而由 xPB[0~7]作 7段式 LED控制 4組按鍵 分別對映到 xPC[0~3] 5模式316鍵輸入並搭配四個 7段式數字顯示其中 數字顯示由 xPA[0~3]作數字掃瞄而由 xPB[0~7]作 7段式 LED控制 16組按鍵由 xPA[0~3]作鍵盤掃瞄而由 xPC[0~3]作鍵盤讀取 6根據VHDL與數位邏輯設計的章節其中 第 1章至 10章的實驗採用模式1而 第 11章實驗採用模式2而 第 12章之後的實驗都採用模式3

85

FPGA UCF 定義

eM_3S1K 模組

NET CLK LOC = B12

NET XAlt0gt LOC = N2

NET XAlt1gt LOC = T1

NET XAlt2gt LOC = T2

NET XAlt3gt LOC = U2

NET XBlt0gt LOC = M3

NET XBlt1gt LOC = M4

NET XBlt2gt LOC = W3

NET XBlt3gt LOC = W4

NET XBlt4gt LOC = Y3

NET XBlt5gt LOC = Y4

NET XBlt6gt LOC = W6

NET XBlt7gt LOC = Y6

NET XClt0gt LOC = V1

NET XClt1gt LOC = V2

NET XClt2gt LOC = W1

NET XClt3gt LOC = W2

NET YAlt0gt LOC = W10

JP4 接頭

NET YAlt1gt LOC = Y10

NET YAlt2gt LOC = W9

NET YAlt3gt LOC = W8

NET YBlt0gt LOC = U3

NET YBlt1gt LOC = T4

NET YBlt2gt LOC = N3

NET YBlt3gt LOC = N4

NET YBlt4gt LOC = T5

NET YBlt5gt LOC = U4

NET YBlt6gt LOC = V3

NET YBlt7gt LOC = V4

NET YClt0gt LOC = Y11

NET YClt1gt LOC = W11

NET YClt2gt LOC = W5

NET YClt3gt LOC = Y5

在光碟片中 RFFPGAVHDLDEMOBIT3S1K 裡有 VHDL 與數位邏輯設計書本範例原始檔與合成檔

86

eM_3S50 模組

NET CLK LOC = P124

NET XAlt0gt LOC = P59

NET XAlt1gt LOC = P60

NET XAlt2gt LOC = P63

NET XAlt3gt LOC = P68

NET XBlt0gt LOC = P135

NET XBlt1gt LOC = P132

NET XBlt2gt LOC = P116

NET XBlt3gt LOC = P113

NET XBlt4gt LOC = P112

NET XBlt5gt LOC = P96

NET XBlt6gt LOC = P100

NET XBlt7gt LOC = P99

NET XClt0gt LOC = P69

NET XClt1gt LOC = P70

NET XClt2gt LOC = P73

NET XClt3gt LOC = P74

NET YAlt0gt LOC = P105

JP4 接頭

NET YAlt1gt LOC = P104

NET YAlt2gt LOC = P103

NET YAlt3gt LOC = P102

NET YBlt0gt LOC = P127

NET YBlt1gt LOC = P129

NET YBlt2gt LOC = P131

NET YBlt3gt LOC = P130

NET YBlt4gt LOC = P128

NET YBlt5gt LOC = P125

NET YBlt6gt LOC = P119

NET YBlt7gt LOC = P118

NET YClt0gt LOC = P107

NET YClt1gt LOC = P108

NET YClt2gt LOC = P98

NET YClt3gt LOC = P97

在光碟片中 RFFPGAVHDLDEMOBIT3S200 裡有VHDL與數位邏輯設計書本範例原始檔與合成檔

87

eM_95XL 模組

NET CLK LOC = SPIN38

NET XAlt0gt LOC = SPIN53

NET XAlt1gt LOC = SPIN54

NET XAlt2gt LOC = SPIN56

NET XAlt3gt LOC = SPIN57

NET XBlt0gt LOC = SPIN85

NET XBlt1gt LOC = SPIN86

NET XBlt2gt LOC = SPIN97

NET XBlt3gt LOC = SPIN98

NET XBlt4gt LOC = SPIN100

NET XBlt5gt LOC = SPIN101

NET XBlt6gt LOC = SPIN105

NET XBlt7gt LOC = SPIN104

NET XClt0gt LOC = SPIN58

NET XClt1gt LOC = SPIN59

NET XClt2gt LOC = SPIN60

NET XClt3gt LOC = SPIN61

NET YAlt0gt LOC = SPIN111

JP4 接頭

NET YAlt1gt LOC = SPIN110

NET YAlt2gt LOC = SPIN107

NET YAlt3gt LOC = SPIN106

NET YBlt0gt LOC = SPIN93

NET YBlt1gt LOC = SPIN91

NET YBlt2gt LOC = SPIN87

NET YBlt3gt LOC = SPIN88

NET YBlt4gt LOC = SPIN92

NET YBlt5gt LOC = SPIN94

NET YBlt6gt LOC = SPIN95

NET YBlt7gt LOC = SPIN96

NET YClt0gt LOC = SPIN112

NET YClt1gt LOC = SPIN113

NET YClt2gt LOC = SPIN103

NET YClt3gt LOC = SPIN102

在光碟片中 RFFPGAVHDLDEMOSVF95288XL 裡有VHDL與數位邏輯設計書本範例原始檔與合成

檔案

88

eM_FPGA 模組

NET CLK LOC = E12

NET XAlt0gt LOC = AA3

NET XAlt1gt LOC = Y4

NET XAlt2gt LOC = AA4

NET XAlt3gt LOC = AB4

NET XBlt0gt LOC = M1

NET XBlt1gt LOC = M2

NET XBlt2gt LOC = W13

NET XBlt3gt LOC = Y13

NET XBlt4gt LOC = AA13

NET XBlt5gt LOC = AB13

NET XBlt6gt LOC = Y18

NET XBlt7gt LOC = W18

NET XClt0gt LOC = W5

NET XClt1gt LOC = Y5

NET XClt2gt LOC = AA5

NET XClt3gt LOC = AB5

NET YAlt0gt LOC = Y17

JP4 接頭

NET YAlt1gt LOC = W17

NET YAlt2gt LOC = AB18

NET YAlt3gt LOC = AA18

NET YBlt0gt LOC = N1

NET YBlt1gt LOC = M5

NET YBlt2gt LOC = M3

NET YBlt3gt LOC = M4

NET YBlt4gt LOC = M6

NET YBlt5gt LOC = N2

NET YBlt6gt LOC = U13

NET YBlt7gt LOC = V13

NET YClt0gt LOC = AA17

NET YClt1gt LOC = AB17

NET YClt2gt LOC = V12

NET YClt3gt LOC = U12

在光碟片中 RFFPGAVHDLDEMOBIT2V250 裡有VHDL與數位邏輯設計書本範例原始檔與合成檔

89

Page 47: RFFPGA 直流馬達實驗手冊juniortek.com.tw/program/manual/RF-DC-mal.pdf · em_demo模組 em_dcm 直流伺服馬達 dc電源 rffpga 系統的直流馬達實驗規劃 其中包括:

直流馬達之閉迴路位置控制響應圖

47

64 實驗 4-加減速的位置控制 實驗說明為避免方波命令的過於嚴苛在方波命令的輸出加入一加減速控制功

能方塊以減緩命令變化的幅度增加馬達運動的平順建立的測試方塊圖如下

方塊圖中的模組功能說明如下

1用 fg1產生測試用的方波位置命令 2將方波位置命令送到加減速控制方塊處理後產生新的位置命令再將新的位置命

令與位置回授訊號送到 PD控制器方塊中產生電壓控制訊號最後透過 io2模組將訊號送出到伺服介面驅動馬達轉動

對應之 plc檔程式說明(exp_accplc) echo off 畫面顯示開始

run dsp 0 選擇 DSP1

run stop run reset 既有程式停止

run testDCMmem 下載指定程式

das 1 ampfg1out 0 1024 PWM 波形 Volt 設定 DAS 頻道1

das 2 ampcn1out 0 1024 加速控制 Volt 設定 DAS 頻道2

das 3 ampio1spd 0 1024 馬達速度 Volt 設定 DAS 頻道3

das 4 ampio1ang 0 1024 馬達角度 Volt 設定 DAS 頻道4

plot select 0 設定示波器頁數

plot xunit 100000 0 設定示波器 X軸

plot yunit 1 2000 -300 設定示波器 Y1 軸

plot yunit 2 2000 -100 設定示波器 Y2 軸

plot yunit 3 50 100 設定示波器 Y3 軸

plot yunit 4 2000 300 設定示波器 Y4 軸

48

plot trigger 1 0 1 10 設定示波器觸發

plot scope 9 1 2 3 4 設定示波器顯示

module io2 設定 io2 模組

s cmd ampcn2out

module fg1 設定 fg1 模組

s kAmp 2000 s kFrq 150

module cn1 設定 cn1 模組

s cmd ampfg1out

module cn2 設定 cn2 模組

s cmd ampcn1out s fdk ampio1ang s kp 0x300 s kd 0x4000

module ft1 設定 ft1 模組

s u ampfg1out s dt 2 s ka 320

module io3 設定 io3 模組

s led ampfg1out

module 回復預設模組

run 1khz 設定抽樣頻率為 4KHz

run start DSP 開始執行

das stop pause 1 DAS 啟動 das start DAS 啟動

echo on 回復正常訊息顯示

CAI操控設計畫面規劃如下(EXP_accCAI) page 1 畫面設計

49

page 2 畫面設計與實驗一 page 2相同畫面 page 3 畫面設計與實驗二 page 4相同畫面

參數設定參考之前各實驗的說明可線上機動性的調整 PD控制器中的 kp和 kd值以調整系統之響應 實測響應圖

訊 號 說 明 訊 號 說 明 ch1 方波產生器產生之位置命令 ch3 馬達角位置 ch2 加減速模組輸出之位置命令 ch4 馬達角速度訊號

50

圖一 直流馬達經加減速控制後之閉迴路控制響應圖

51

65 實驗 5-正弦波的位置控制 實驗說明在本實驗中改變命令的波形由方波改變為正弦波並建立如下的測

試方塊圖與上一實驗相比較僅更改命令的波形產生方塊 方塊圖中的模組功能說明如下 1用 fg2產生測試用的弦波位置命令 2將弦波位置命令送到加減速控制方塊處理後產生新的位置命令再與 io1 讀入的位

置回授訊號送到 PD 控制器方塊中產生電壓控制訊號再透過 io2 模組將訊號送出到伺服介面驅動馬達轉動

對應之 plc檔程式說明(exp_sinplc) echo off 畫面顯示開始

run dsp 0 選擇 DSP1

run stop run reset 既有程式停止

run testDCMmem 下載指定程式

das 1 ampfg2out 0 1024 SIN 波形 Volt 設定 DAS 頻道1

das 2 ampcn1out 0 1024 加速控制 Volt 設定 DAS 頻道2

das 3 ampio1spd 0 1024 馬達速度 Volt 設定 DAS 頻道3

das 4 ampio1ang 0 1024 馬達角度 Volt 設定 DAS 頻道4

plot select 0 設定示波器頁數

plot xunit 100000 0 設定示波器 X軸

plot yunit 1 2000 -300 設定示波器 Y1 軸

plot yunit 2 2000 -100 設定示波器 Y2 軸

plot yunit 3 50 100 設定示波器 Y3 軸

plot yunit 4 2000 300 設定示波器 Y4 軸

plot trigger 1 0 1 10 設定示波器觸發

52

plot scope 9 1 2 3 4 設定示波器顯示

module io2 設定 io2 模組

s cmd ampcn2out

module fg2 設定 fg1 模組

s kAmp 2000 s kFrq 100

module cn1 設定 cn1 模組

s cmd ampfg2out

module cn2 設定 cn2 模組

s cmd ampcn1out s fdk ampio1ang s kp 0x300 s kd 0x4000

module ft1 設定 ft1 模組

s u ampfg2out s dt 2 s ka 320

module io3 設定 io3 模組

s led ampfg2out

module 回復預設模組

run 1khz 設定抽樣頻率為 4KHz

run start DSP 開始執行

das stop pause 1 DAS 啟動 das start DAS 啟動

echo on 回復正常訊息顯示

CAI操控設計畫面規劃如下(EXP_sinCAI) page 1 畫面設計

53

page 2 畫面設計 page 3 畫面設計與實驗二 page 4相同畫面

方塊的參數設定可調整 PD控制器中的 kp和 kd值以調整系統之響應 實測響應圖

訊 號 說 明 訊 號 說 明 ch1 弦波產生器產生之位置命令 ch3 馬達角位置訊號 ch2 加減速模組輸出之位置命令 ch4 馬達角速度訊號

54

直流馬達之閉迴路弦波加減速位置控制響應圖

55

7組合語言說明

本節將針對 DC馬達伺服控制實驗專用的程式模組進行功能與程式碼的說明其

有關於波形產生器與資料擷取模組等說明如下

SIN_waveasm 正弦波產生器 PWM_waveasm 方波產生器 IIR1_filterasm 一階濾波器 DAS4asm 資料蒐集模組

弦波產生器

此模組會產生週期性的正弦波方塊圖如下

outfrq

kBiasbias

ampkAmp

kFrqth

kThf=1TB

θ

A

其中

1正弦波有四個參數振幅(A)頻率(F)相位(θ)和偏移(B)其公式為 out = A sin(2πF t +θ) + B 2對於單純的正弦波產生器所對映的參數包括 kAmp 振幅值 kFrq 頻率值kFrq=655368000Hz其中 Hz的範圍為 0~4000例如 1000Hz =gt frq=8192 100Hz =gt frq=819 10Hz =gt frq=82 1Hz =gt frq=8 kTh 相角值0~255代表 0~360的相位當 th=0 時為正弦波 th=64 時為餘弦波 th=128時為反相波依此類推 kBias偏移值 3對於可調變的正弦波產生器其對映的輸入點為 amp 控制振幅的輸入點可產生調幅(AM)波形 frq 控制頻率的輸入點可產生調頻(FM)波形 th 控制相位的輸入點可產生調相(PM)波形 bias控制偏移的輸入點可產生雙頻混波(相加)波形 4若不使用調變功能時各個輸入點時的預設值為 amp 指向 kAmp 的位址 frq 指向 kFrq 的位址

56

th 指向 kTh 的位址 bias指向 kBias的位址

模組程式範例SIN_WAVEasm

local amp R0 IP kAmp 輸入點sin波的振幅 local frq R1 IP kFrq 輸入點sin波的頻率 local th R2 IP kTh 輸入點sin波的相角 local bias R3 IP kBias 輸入點sin波的中心偏移 local out R4 OP 輸出點sin波輸出 local tab R5 TP 表格指標指向 sin[256]的表格 local ang R6 內部變數相位角65536=360deg local kAmp R7 1000 參數振幅值 local kFrq R8 1000 參數頻率值=655368000Hz local kTh R9 0 參數相角值360deg=256 local kBias R10 0 參數偏移值 data 11 模組變數區長度及初值 initial 啟動程序 WR ang0 WR out0 ang=out=0 RET timer 即時控制程序(8KHz) RD ang ADD (frq) WR ang ang+=frq SFR 8 ADD (th) AND 255 ACC=sin(ang256+th) ADD tab WRH RDM table-look-up MUL (amp) SFR 12 ADD (bias) WR out out=ACCamp4096+bias RET table tab 256 sin[256]表格區10=4096 0 101 201 301 401 501 601 700 00~070deg 799 897 995 1092 1189 1285 1380 1474 08~0F 1567 1660 1751 1842 1931 2019 2106 2191 10~17 2276 2359 2440 2520 2598 2675 2751 2824 18~1F 2896 2967 3035 3102 3166 3229 3290 3349 20~27 3406 3461 3513 3564 3612 3659 3703 3745 28~2F 3784 3822 3857 3889 3920 3948 3973 3996 30~37 4017 4036 4052 4065 4076 4085 4091 4095 38~3F 4096 4095 4091 4085 4076 4065 4052 4036 40~4790deg 4017 3996 3973 3948 3920 3889 3857 3822 48~4F 3784 3745 3703 3659 3612 3564 3513 3461 50~57 3406 3349 3290 3229 3166 3102 3035 2967 58~5F

57

2896 2824 2751 2675 2598 2520 2440 2359 60~67 2276 2191 2106 2019 1931 1842 1751 1660 68~6F 1567 1474 1380 1285 1189 1092 995 897 70~77 799 700 601 501 401 301 201 101 78~7F 0 65435 65335 65235 65135 65035 64935 64836 80~87180deg 64737 64639 64541 64444 64347 64251 64156 64062 88~8F 63969 63876 63785 63694 63605 63517 63430 63345 90~97 63260 63177 63096 63016 62938 62861 62785 62712 98~9F 62640 62569 62501 62434 62370 62307 62246 62187 A0~A7 62130 62075 62023 61972 61924 61877 61833 61791 A8~A8 61752 61714 61679 61647 61616 61588 61563 61540 B0~B7 61519 61500 61484 61471 61460 61451 61445 61441 B8~BF 61440 61441 61445 61451 61460 61471 61484 61500 C0~C7270deg 61519 61540 61563 61588 61616 61647 61679 61714 C8~CF 61752 61791 61833 61877 61924 61972 62023 62075 D0~D7 62130 62187 62246 62307 62370 62434 62501 62569 D8~DF 62640 62712 62785 62861 62938 63016 63096 63177 E0~E7 63260 63345 63430 63517 63605 63694 63785 63876 E8~EF 63969 64062 64156 64251 64347 64444 64541 64639 F0~F7 64737 64836 64935 65035 65135 65235 65335 65435 F8~FF

就程式結構而言說明如下

timer 即時控制程序(8KHz) RD ang ADD (frq) WR ang ang+=frq SFR 8 ADD (th) AND 255 ACC=sin(ang256+th) ADD tab WRH RDM table-look-up MUL (amp) SFR 12 ADD (bias) WR out out=ACCamp4096+bias RET

1基本上我們以查表法計算 sin()其輸入θ的範圍為 0~255對映到 0~360deg其輸出 sin(θ)的範圍為+-4096對映到+-10的範圍

2建立一個內部變數 ang其範圍為 0~65535對映到 0~360的相位角 3每個timer程序都執行 ang+=frq的動作更新目前的相位角接著依照 ang的相位角查表得到 sin(ang256+th)值

4由於表格長度為 256-word所以必須將 ang256才能得到正確的對映關係而 th範圍為 0~255所以不需要像 ang一般的做額外處理

5sin()的範圍為(+1-1)而在表格中以(+4096~-4096)的型式記錄相當於 10=4096所以執行 Asin()時還要用 SFR12指令做4096的動作才能正確的取得輸出值

58

6就頻率輸入 frq而言其計算原則是將θ=ωt轉化成θ=Σ(ωdt)因為抽樣頻率

為 8KHz所以 dt=18000而得到 frq=655368000Hz公式其中 Hz為真正的頻率在 8KHz的抽樣頻率下其範圍為 0~4000

鋸齒波產生器

此模組會產生週期性的鋸齒波方塊圖如下

outfrq

kBiasbias

ampkAmp

kFrqth

kThf=1TB

θ

A

其中

1鋸齒波也有四個參數振幅(A)頻率(F)相位(θ)和偏移(B)和正弦波的定義完全一致唯一的差異是其輸出為鋸齒波而非正弦波

2基本波形是從週期開始時為 0一直遞增到週期結束時到達最高點然後立刻回歸

到 0重新開始 3以程式結構而論鋸齒波程式幾乎就是正弦波的相位計算部分只差沒有正弦波的

查表處理而已

模組程式範例SAW_WAVEasm

local amp R0 IP kAmp 輸入點sin波的振幅 local frq R1 IP kFrq 輸入點sin波的頻率 local th R2 IP kTh 輸入點sin波的相角 local bias R3 IP kBias 輸入點sin波的中心偏移 local out R4 OP 輸出點sin波輸出 local ang R5 內部變數相位角65536=360deg local kAmp R6 1000 參數振幅值 local kFrq R7 1000 參數頻率值=655368000Hz local kTh R8 0 參數相角值360deg=256 local kBias R9 0 參數偏移值 data 11 模組變數區長度及初值 initial 啟動程序 WR ang0 WR out0 ang=out=0 RET timer 即時控制程序(8KHz) RD ang ADD (frq) WR ang ang+=frq SFR 8 ADD (th) AND 255 ACC=(ang256+th)amp0x00ff MUL (amp) SFR 8 ADD (bias) WR out out=ACCamp256+bias

59

RET

脈衝波產生器

outfrq

kBiasbias

ampkAmp

kFrqth

kThf=1TB

θ

A

pwm

kDutyduty

此模組會產生週期性的脈衝波方塊圖如下

其中

1脈衝波有五個參數其中振幅(A)頻率(F)相位(θ)和偏移(B)四個參數和正弦波

定義完全一樣另外再增加一個負載率(D) 2基本波形是從週期開始時為 1隔段時間後換為 0然後持續到週期結束再重新開始其中 1所佔有的比例就是負載率當 D=0時為 0而 D=255時為 100

3和其他參數類似負載率(D)以 duty為其輸入點而以 kDuty為其參數值

模組程式範例PLS_WAVEasm

local amp R0 IP kAmp 輸入點脈衝波的振幅 local frq R1 IP kFrq 輸入點脈衝波的頻率 local th R2 IP kTh 輸入點脈衝波的相角 local bias R3 IP kBias 輸入點脈衝波的中心偏移 local duty R4 IP kDuty 輸入點脈衝波的負載率 local out R5 OP 輸出點脈衝波輸出 local ang R6 內部變數相位角65536=360deg local kAmp R7 1000 參數振幅值 local kFrq R8 1000 參數頻率值=655368000Hz local kTh R9 0 參數相角值360deg=256 local kBias R10 0 參數偏移值 local kDuty R11 128 參數負載率100 =256 data 12 模組變數區長度及初值 initial 啟動程序 WR ang0 WR out0 ang=out=0 RET timer 即時控制程序(8KHz)

60

RD ang ADD (frq) WR ang ang+=frq SFR 8 ADD (th) AND 255 ACC=(ang256+th)amp0x00ff SUB (duty) RD (amp) JLT t1 RD 0 ACC=(amp0) t1 ADD (bias) WR out out=ACC+bias RET

IIR 一階濾波器

此模組執行一階的 IIR濾波器方塊圖如下

kau x

Z-1

+

+

-

+低通濾波器

高通濾波器dx lp

hp

濾波器參數的計算公式如下

1假設濾波器的頻寬為 hz則 ωn=hz628 2若系統頻率為 8KHz則抽樣週期 dT為 dT=dt8000 其中 dt為模組參數 3則濾波器參數為 ka=ωndT4096或是 =hzdt62880004096即 =hzdt32 4當 dt決定後所允許的訊號頻寬為(4000dt)換句話說訊號頻寬會因為 dt增加而下降

為了方便實驗的運用下面列出常用的參數對照表

濾波頻寬

(Hz)

10 20 50 100 200 500 1000 2000

訊號頻寬

(Hz)

400 800 2000 4000 4000 4000 4000 4000

模組參數 dt 10 5 2 1 1 1 1 1

模組參數 ka 320 320 320 320 640 1600 3200 6400

表格的運用方式如下

1首先決定濾波頻寬 2接著查表找出對映的參數 dt和 ka 3再查表得到對映的訊號頻寬以決定是否需要串接前級濾波器

61

模組程式範例IIR1_FILTERasm

local u R0 IP 輸入點濾波器輸入 local lp R1 OP 輸出點低通濾波器輸出 local hp R2 OP 輸出點高通濾波器輸出 local dt R3 1 參數抽樣週期 local ka R4 4096 參數增益 ka10=4096 local prd R5 內部變數抽樣週期用 data 6 模組變數區長度 initial 開機啟動程序 WR lp0 WR hp0 WR prd1 RET lp=hp=0prd=1 timer 即時控制程序 SUB prd1 JNZ b9 if (--prdgt0) return RD dt WR prd prd=dt RD (u) SUB lp WR hp hp=u-lp MUL ka SFR 12 ADD lp WR lp lp+=(hpka4096) b9 RET

資料蒐集模組

資料蒐集模組是一個非常特殊的模組專門配合 eTTY 程式中的示波器使用

模組程式範例DAS4asm

local cmd R0 0 紀錄命令0=停止1=前置記錄2=正觸發4=負觸發6=觸發記錄 local dt R1 1 抽樣週期每 dT抽樣一次 local tab R2 TP DAS表格啟始位址 local cnt R3 0 目前記錄點(0~255) local ch1 R4 0 定義頻道1的變數位址 local ch2 R5 0 定義頻道2的變數位址 local ch3 R6 0 定義頻道3的變數位址 local ch4 R7 0 定義頻道4的變數位址 local trg R8 0 定義觸發頻道的變數位址 local th R9 0 觸發準位 local tail R10 0 觸發後的抽樣個數 local buf R11 1 抽樣計數(1~dt) local pnt R12 表格位址計算pnt=tab+cnt4 local len R13 表格長度計算(0~256) data 14 定義模組變數區的長度 table tab 1024 定義表格的長度 initial 啟動程序 WR cmd0 RET cmd=0 timer 控制程序

62

ADD cmd0 JZ t9 if (cmd==0) return SUB buf1 JNZ t9 if (--buf)gt0) return RD dt WR buf dt=buf RD cnt ADD 1 AND 0xff WR cnt cnt=(cnt+1)amp0xff SFL 2 ADD tab WR pnt pnt=tab+cnt4 RD (ch1) WR (pnt) ADD pnt1 pnt++=ch1 RD (ch2) WR (pnt) ADD pnt1 pnt++=ch2 RD (ch3) WR (pnt) ADD pnt1 pnt++=ch3 RD (ch4) WR (pnt) pnt =ch4 RD cmd SUB 1 JZ t9 SUB 1 JZ t2 SUB 1 JZ t3 SUB 1 JZ t4 SUB 1 JZ t5 SUB 1 JZ t6 JR t7 t2 RD (trg) SUB th JGE t9 ADD cmd1 JR t9 wait trgltth t3 RD (trg) SUB th JLE t9 JR t6 wait trggtth t4 RD (trg) SUB th JLE t9 ADD cmd1 JR t9 wait trggtth t5 RD (trg) SUB th JGE t9 JR t6 wait trgltth t6 WR len0 WR cmd7 len=0cmd=7 t7 ADD len1 SUB tail JLT t9 WR cmd0 if ((++len)gt=0x80) cmd=0 t9 RET

與 DC 馬達控制相關的程式模組有以下 4個程式模組說明如下

(1)加減速控制模組 ACC_controlasm (2)光電盤輸入模組 POS_inputasm (3)PWM輸出模組 PWM_outputasm (4)PD控制模組 PD_controlasm

71加減速控制模組 此程式模組主要功能在於執行位置控制的加減速命令修正其數學模式採用 Lynn

濾波器的架構參見下圖

cmd

2

+

old Z -1

-

Z -1

Z -1

Z-1

Z-1x0 x1 x8 x9 x16

+ -

++

2

Z-1

Z-1 y1 y2

+

-

y0

+ +

sumZ-1

+164

12

out

dif

+

63

加減速控制模組方塊圖

其中

1Lynn 濾波器的階數固定成八階也就是 m=8其公式為 H(z) = (1-2Z-m+Z-2m)(1-2Z-1+Z-2)m2

2因為m=8所以m2=64因此最後計算低通濾波的部份時要先做除 64的運算 3因為低通濾波(lp)和 y0之間有 64倍的差異代表 y0y1y2的變化範圍比濾波器輸

入值要擴大許多例如輸入值在+-1000變化時y0y1y2很可能會在+-64000之間變化這範圍已經超出整數處理的範圍很可能會造成錯誤的計算結果

4所以在實驗時輸入值的變化範圍必須控制在+-500之間以保證計算的正確性 5對於 Lynn 濾波器當 m=8時其濾波器的頻寬固定為 1 kHzmdt也就是 dt=1時頻寬為 125 Hz dt=2時頻寬為 625Hz依此類推 6對於 Lynn 濾波器其濾波器的延遲固定為 m個抽樣週期因此設計 hp = x8 - lp 即可得到高通濾波器的對應結果 7其中乘 2和除 64的運算以移位運算取代所以整個程式中並無任何乘法運算 8Lynn 濾波器本身並不是穩定濾波器所以在程式啟動時必須確實的將所有狀態

(x0~x16)歸零否則會產生不穩定的狀態輸出

因為 Lynn濾波器中所有參數固定所以除了抽樣週期 dt 之外並無任何可調參數

抽樣週期 dt 可以控制頻寬dt 越大則濾波器頻寬越低

將步階命令值的輸出送入 Lynn 濾波器中經由低通濾波器的效應可以減緩命

令的變化程度達到加減速控制的目的以下為使用 Lynn 濾波器型式實現加減速控

制的組合語言程式列印 如欲更進一步瞭解 Lynn 濾波器與 FIR 數位濾波器之間的關係可以參考通訊實驗

四數位濾波器設計(FIR)中之說明

ACC_controlasm程式列印 local cmd R0 IP 輸入點位置命令

local out R1 OP 輸出點加減速處理後的位置命令

local dif R2 OP 輸出點位置微分命令

local axis R3 0 馬達編號0=X1=Y2=Z3=C

local old R4 內部變數微分計算用

local sumL R5 內部變數積分計算用

local sumH R6 內部變數積分計算用

local y0 R7 內部變數y(0~2)

local y1 R8 local y2 R9

local x0 R10 內部變數x(0~16)

local x1 R11 local x2 R12 local x3 R13 local x4 R14

local x5 R15 local x6 R16 local x7 R17 local x8 R18

local x9 R19 local x10 R20 local x11 R21 local x12 R22

local x13 R23 local x14 R24 local x15 R25 local x16 R26

64

data 27 模組變數區長度

initial 開機啟動程序

WR dif0 RD (cmd) WR out WR old dif=0 out=old=cmd

sumHL=cmd64

SFL 6 WR sumL RD out SFR 10 SGN 5 WR sumH

RPT 17 WR x00 RPT 3 WR y00 RET x[0~16]=0y[0~2]=0

timer 即時控制程序

RD (cmd) SUBX old WR x0 x0=cmd-old old=cmd

SUB x81 ADD x16 ADD y11 SUB y2 WR y0 y0=x0-2x8+x16+2y1-y2

SGN ADD sumL WR sumL RDH ADC sumH WR sumH sumHL+=y0

WRH RD sumL SFR 6 WR out out=sumHL64

RD y0 SGN SFR WR dif dif=y032mm

RD x0 RPT 16 RDX x1 x[i]=x[i-1] i=1~16

RD y0 RDX y1 WR y2 y[i]=y[i-1] i=1~2

b9 RET

72光電盤輸入模組

DC馬達的位置由光電盤量測之預設儲存於 0xac與 0xbe二個輸入埠位址中其中位址 0xac記錄 X軸馬達的位置位址 0xbe記錄 Y軸馬達的位置由於本實驗的DC馬達接在 Y軸的位置上因此程式中直接選用 Y軸的輸入 光電盤位置輸入的程式列印如下其中速度由位置的差分而得至於馬達的位置

則使用內部 2個 word加以記錄精度為 32位元 POS_inputasm程式列印 local spd R0 OP 輸出點速度量測值

local ang R1 OP 輸出點角度量測值

local angH R2 內部變數角度的 32 位元部分

local mode R3 0x308 模式選擇15MHzAB 相正反向輸入

local pht R4 0xac 輸入阜地址光電盤輸入(0xac)

local phtc R5 0xbe 輸入阜地址光電盤模式(0xbe)

local old R6 內部變數速度更新用

data 7 模組變數區長度

initial 開機啟動程序

RD mode WR (phtc) phtc=mode

RD (pht) WR old WR spd0 RET old=phtspd=0

timer 即時控制程序

RD (pht) SUBX old SGN 11 WR spd spd=(pht-old)old=pht

65

ADD ang WR ang angHL+=spd

RDH ADC angH WR angH

RET

73 PWM輸出控制模組 模組方塊

cmd PWM輸出

程式說明 1在開機時將切換保護時間寫到輸出阜 0xbc上其中切換保護值為 0~6360=5us 2在每次 timer interrupt時將 cmd訊號處理後寫到輸出阜 0xb8上

PWM_outputasm程式列印 local cmd R0 IP gnd 輸入點v相命令

local gain R1 4096 參數輸出增益1=4096

local bias R2 2048 參數輸出偏壓0=2048

local limit R3 4095 參數輸出極限1=4095

local zone R4 0x88f0 參數頻率=12KHz切換保護=5us

local pwm R5 0xb8 輸出阜地址PWM0 輸出(0xb8)

local mode R6 0xbc 輸出阜地址PWM 模式(0xbc)

local p0md R7 0xf8 輸出阜地址port0 模式(0xf8)

local gnd R8 0 輸入接地點

data 9 模組變數區長度

initial 開機啟動程序

RD bias WR (pwm) pwm=bias

RD 0xffff WR (p0md) set port0 mode

RD zone WR (mode) RET mode=zone

stop 關機保護程序

RD bias WR (pwm) RET pwm=bias

timer 即時控制程序

RD (mode) xor 1 and 1 WR (mode) trigger watch-dog

RD (cmd) MUL gain SFR 12 ADD bias ACC=(cmdgain4096)+bias

MAX 0 MIN limit WR (pwm) pwm=limit(ACC)

RET

66

74 PD 控制模組

PD控制的模組方塊參見圖二十一所示其中比例控制的部份直接由增益 kp加以調整微分控制的部份則由誤差的差分經增益 kd的調整而得

Σ+

-

cmd

fdk

err out

Σ

pk

dk

Σ

+

+

+

-

old1minusZ

PD控制器的方塊圖

PD_controlasm程式列印 local cmd R0 IP gnd 輸入點位置命令(可忽略)

local fdk R1 IP gnd 輸入點位置回授(可忽略)

local out R2 OP 輸出點用以控制速度迴路

local kp R3 256 參數增益 kp10=256

local kd R4 0 參數增益 kd10=256

local err R5 0 內部變數

local old R6 0 內部變數

local gnd R7 0 無輸入時的短路點

data 8 模組變數區長度

initial 開機啟動程序

WR out0 WR old0 RET out=old=0

timer 即時控制程序

RD (cmd) SUB (fdk) PRTF WR err

MUL kp SFR 8 P=(cmd-fdk)kp256

RDS err SUBX old MUL kd SFR 8 D=(err-old)kd256

ADDS

WR out out=P+D

RET

程式中預設增益值的 10以整數值 256為基底因此使用 SFR 8的指令加以調

整另外在在計算微分項的程式部份用到 SUBX old的指令其詳細的暫存器動作如

下 參考 piDSP的指令說明SUBX指令將總共用到 3個時序參考錯誤 找不到參照

67

來源在時序 1時將原先 AX的資料拷貝一份到 HX中時序 2時正式執行減

法的動作所以 AX暫存器中的內容會變成 err-old時序 3時DSP會將存放在 HX暫存器中的內容拷貝一份到 old的記憶體中也就是經由 SUBX此一精簡指令將

同時完成計算差分所需要的相減與資料疊代的動作有效的利用 piDSP控制器 DSP核心的精簡指令將可以大幅提昇系統的計算速度

HX AXoldSUBXerr err

old

err

errerr olderr minus

1_err

errerr olderr minus err

1_err

1

2

3

SUBX的指令時序與暫存器變化

68

8附錄快速安裝說明

光纖網路通訊 FPGA 發展系統 (適用於 WIN-XP200098 系統)

快速安裝說明

26Pin 負載輸出入埠

雙電源︵5

12

伏︶輸入埠

單電源︵5

伏︶輸入埠

USB

光纖線輸

號 光纖線輸出埠

入 傳 埠

首先將光碟片 RFFPGA 目錄檔案拷貝在您工作硬碟裡面

第一次安裝時先將 USB 傳輸線接上電腦主機將電源供應器接上 FPGA 模組此時電

腦會出現安裝 USB-Serial 驅動程式選擇從清單安裝此驅動程式放置在光碟片

RFFPGA-USBdrive 選擇您目前安裝系統

可選擇 WIN-98WIN-MEWIN-2000WIN-XP 系統配合您現在工作電腦作業系統

69

注意一般電腦 USB 埠很多插口當您安裝驅動程式時是配合您當時插入之埠

下次如您插入不同接口埠時電腦會再次要求安裝驅動程式這是正常現象請再次安

裝驅動程式否則無法使用

FPLC 操作

首先進入 RFFPGA裡子目錄 testASM直接點選 fPLCexe 出現下面操作畫面(也可直接將

此檔案放置桌面直接點選)

(或者選擇 File 再執行 Setuphellip 選擇您要執行 CAI 檔)

70

進入下面操作畫面 首先使用滑鼠在 FPGA下載按鈕單擊動作使 FPGA變成 DSP晶片 實驗一至實驗五皆為使用 DSP組合語言設計程式其原始程式分別為 testASM1至testASM5可使用 texPad 開啟與編輯程式內容 實驗三與實驗五多有 IO控制動作 當選擇實驗三時出現下面畫面

71

eM_USB 模組

數字型 LED

0 1 2 34 5 6 78 9 A BC D E F

燈號型 LED

44 鍵盤

ADC0 ADC1 DAC0 DAC1

LED 選擇KEY 選擇

模 式 1

0123

注意操作畫面 3與 4 說明開關與按鍵選擇位置後選擇程式下載再按程式啟動如您

按下 0-3按鍵時燈號型 LED會有不同方向閃爍顯示程式停止時結束所有 IO控制動作再按回首頁選擇其他實驗 實驗四與實驗五

模式3

0 1 2 34 5 6 78 9 A BC D E F

按照上面開關選擇直接操作如果以上實驗皆能按照正常操作表示您光纖網路通訊

FPGA發展模組以能正常使用 注意 開機與關機動作順序如下

開機電腦啟動 --- eM_USB 模組電源接上 --- USB 接上電腦 ---

啟動 FPLC 軟體 --- 下載 FPGA 程式

關機關閉 FPLC 軟體 --- eM_USB 模組電源拔掉 --- 拔掉電腦 USB 接頭 ---關掉

電腦

如果以上順序有亂可能造成 USB 找不到驅動造成無法下載經過幾次測試還是

無法下載建議重新啟動電腦主機按照正確步驟操作

72

FPGA 下載操作

進入 FPLC 操作系統按照下列步驟選擇節點模組與下載 bit FPGA 檔案

在 VHDLDEMO 子目錄下您可以選擇您目前 FPGA 種類型號在此型號下我們已將 VHDL

與數位邏輯設計課本範例全部放於此處

73

光纖網路連線 FPGA 下載操作

首先利用光纖線將 eM_USB0 模組光纖輸出埠接至 eM_USB1 模組光纖輸入埠以此

類推最後再將最後 eM_USBN 模組光纖輸出埠接至 eM_USB0 模組光纖輸入埠配置

如附圖方式

個人電腦(Windows) eM_USB模組

0USB

eM_USB模組1

光纖網路

eM_USB模組2

eM_USB模組N

配置完成後進入 FPLC 系統首先必須先將 Node00 下載在 testASM 子目錄裡

piDSPv0bit 檔讓 eM_USB0 模組 FPGA 具備 DSP 功能才能執行光纖網路通訊

操作如下

此時您就可以選擇分別下載至各模組 FPGA 檔 bit

74

安裝 FPLC 注意事項

當您進入 FPLC 時

按 FILE 選擇 programhellip 選擇檔案為 exp_dcmplc 出現下面畫面

正常顯示畫面為

75

DOS 環境操作

在 PC 端的操作是在 Windows 環境中的 DOS 視窗中執行指令範例如下

eFPGA progNETbit 下載 FPGA電路至網路節點0(即 USB節點)中 eFPGA testLEDbit 1 下載 FPGA電路至網路節點1中

對於單一節點的控制程序如下

1將 eM_USB模組連結個人電腦的 USB端 2eM_USB模組開機 3執行下載指令即可 eFPGA xxxxbit 4若要更改 FPGA電路只要重新執行下載指令即可

對於多個網路節點的控制程序如下

1第一組 eM_USB模組連結個人電腦的 USB端再以光纖網路依序其他各節點 2連接 USB界面者為模組0從光纖發射端連接出去的模組為1依此類推 3將所有 eM_USB模組開機 4執行下載指令如下 eFPGA progNETbit 模組0必須先下載指定的 FPGA電路 eFPGA xxxxbit 1 再依序下載其他網路模組的 FPGA電路 eFPGA yyyybit 2 eFPGA zzzzbit 最後再重新下載模組0的 FPGA電路 5換句話說模組0必須先執行 progNETbit讓光纖網路接受 FPGA控制後才能透過光纖網路下載至其他節點等全部網路節點下載完畢後再將模組0的 FPGA重新下載讓模組0也可自由執行任意的 FPGA電路

6若要更改某一個網路節點中的 FPGA電路只要重新執行下述指令 eFPGA progNETbit 模組0必須先下載指定的 FPGA電路 eFPGA yyyybit 2 下載指定網路模組的 FPGA電路 eFPGA zzzz bit 最後再重新下載模組0的 FPGA電路 換句話說除非模組0中的 FPGA已經包括光纖網路管理電路否則一定要先在

模組0中下載網路管理電路後才能下載指定網路節點的 FPGA電路

76

光纖網路通訊 FPGA 發展系統

系統配置

光纖網路通訊 FPGA 發展系統的系統配置圖如下

個人電腦(Windows) eM_USB模組

0USB

eM_USB模組1

光纖網路

eM_USB模組2

eM_USB模組N

其中

1基本模組為 eM_USB模組可用 USB界面和個人電腦連線並提供 USB對光纖網路的轉換功能使得個人電腦可以獨立控制光纖網路中的每個網路節點

2eM_USB模組也可以作為光纖網路中的網路節點透過光纖網路而接受個人電腦的

監控 3就個人電腦而言不論是 USB界面直接連結或是以光纖網路間接連結的 eM_USB模組都是可以直接監控的網路節點最多可以同時控制一個 USB節點和 30個網路節點

4對於每一個網路節點個人電腦都可執行 eM_USB模組中 FPGA的電路下載工作並在適當的 FPGA電路配合下可執行 eM_USB模組中 FPGA內部電路的讀寫控制 5透過適當的 FPGA電路設計各網路節點都可透過光纖網路和其他任何網路節點

作同步通訊執行 FPGA內部記憶體的資料交換資料交換頻率可達 1KHz以上

77

網路模組配置

每個網路模組的標準配置圖如下

eM_USB模組光纖網路

USB eM_FPGA卡

eM_DEMO模組

eM_EXP實驗模組

DC電源

其中

1網路模組以 eM_USB模組為主提供基本的 USB界面和光纖網路連線 2eM_USB模組中的 FPGACPLD採用插卡型式可選擇不同的 eM_FPGA卡包括

eM_2V1K卡可選用 Virtex系列的 XC2V250和 XC2V1000 eM_3S1K卡可選用 Spartan3系列的 XC3S400XC3S1000和 XC3S1500 eM_3S50卡可選用 Spartan3系列的 XC3S50XC3S200和 XC3S400 eM_95XL卡可選用 9500XL系列的 XC95144XL和 XC95288XL 3eM_USB模組中的對外連線有兩種一種是 26P接頭用以連接既有的各種實驗模

組另一種是兩組 50P接頭將 FPGA中各接腳引出用以連接專題實驗 4eM_DEMO模組就是插上 50P接頭的教學模組其中包括 LED 數字顯示和 44鍵盤也具備兩組的 ADC和兩組的 DAC接頭提供類比訊號的測試工具

常用的實驗組合包括

1精簡組合包括(eM_USB+eM_FPGA)提供基本的網路節點適用於專題實驗 2標準組合包括(eM_USB+eM_FPGA+eM_DEMO)提供基礎 FPGA設計的教學實驗

3實驗組合包括(eM_USB+eM_FPGA+eM_DEMO+eM_EXP)提供進階的 FPGA實驗可依需求選用不同的實驗模組

78

eM_USB 模組

eM_USB 模組的電路配置圖如下

TxRx

DCPower

USB

JP2

JP3

光纖界面

外加電源

PC連線

JP1

eM_FPGA模組

FT232 CPLD FlashROM

SRAM

10cm

6cm

JP4

其中

1對外的連線接頭包括 DC電源 可選擇單電源(5V)或是多電源(5V+12V-12V)兩種 USB界面 直接連接個人電腦 光纖界面連接光纖網路 2實驗界面包括 JP1負責內部 CPLD的電路下載 JP2JP3兩組 50P的擴張用接頭 JP4 標準 26P接頭用以連接各種實驗模組 3內部的電路配置包括 A以 SO-DIMM接頭連接各種 eM_FPGA卡 B內附 EEPROMFlashROM和 SRAM提供 FPGA作應用測試 C以一顆 FT232BM作為 USB界面解碼而以一顆 CPLD作為光纖網路解碼 D提供各種 eM_FPGA卡的電路下載功能 4內附五顆 LED由上而下依序為 usbLED指示 USB界面的讀寫狀態 tstLED可由 FPGA電路自行定義 stsLED可由 FPGA電路自行定義 RxLED 可由 FPGA電路自行定義 TxLED 可由 FPGA電路自行定義

79

外部接腳定義

外部接頭的接點順序圖示如下

上視圖

JP11 9 JP4

126225

JP31

50249

JP21

50249

而各接頭的接點定義如下

JP1 JP4 JP2 JP3 1+33V 1+12V 2+12V 1 GND 2 GND 1 GND 2 GND 2GND 3 ADC 4 DAC 3POWER 4ALARM 3 +5V 4 +5V 3nc 5 yPB2 6 yPB3 5RxNET 6TxNET 5+12V 6+12V 4TCK 7 yPB1 6 yPB4 7RxUSB 6TxUSB 7-12V 6-12V 5nc 9 yPB0 10yPB5 9RxCAN 10TxCAN 9 ADC 10 DAC 6TDO 11yPB6 12yPB7 11P0D0 12P0D1 11P1D0 12P1D1 7TDI 13yGND 14yPC3 13P0D2 14P0D3 13P1D2 14P1D3 8nc 15yPC2 16yPC1 15P0D4 16P0D5 15P1D4 16P1D5 9TMS 17yPC0 18yPA0 17P0D6 18P0D7 17P1D6 18P1D7 19yPA1 20yPA2 19P0D8 20P0D9 19P1D8 20P1D9 21yPA3 22GND 21P0D10 22P0D11 21P1D10 22P1D11 23GND 24+5V 23P0D12 24P0D13 23P1D12 24P1D13 25+5V 26nc 25P0D14 26P0D15 25P1D14 26P1D15 27P2D0 28P2D1 27PxA0 28PxA1 29P2D2 30P2D3 29PxA2 30PxA3 31P2D4 32P2D5 31PxA4 32PxA5 33P2D6 34P2D7 33PxA6 34PxA7 35P2D8 36P2D9 35PxB0 36PxB1 37P2D10 38P2D11 37PxB2 38PxB3 39P2D12 40P2D13 39PxB4 40PxB5 41P2D14 42P2D15 41PxB6 42PxB7 43ADC0 44ADC1 43PxC0 44PxC1 45ADC2 46ADC3 45PxC2 46PxC3 47ADC4 48ADC5 47PxC4 48PxC5 49DAC0 50DAC1 49PxC6 50PxC7

80

eM_FPGA 模組

在各種 eM_FPGA 模組中FPGA 對外電路的標準配置圖如下

24576MHz

FlashROM

26PSRAM

EEPROM

mD[8]

yPA[4]

FPGACPLD

mA[19]mRDmWRmCSeeCKeeCSeeDIeeDO

光纖界面 RxNETTxNET

USB 界面 RxUSBTxUSBCLK24MPOWERALARM

LED

tstLEDstsLEDRxLEDTxLED

yPB[8]yPC[4]

ADCDAC

ADC[8]

實驗模組

ADC[2]

DAC[2]

xPA[4]

xPB[8]

xPC[4]

基礎實驗

其中

1FPGACPLD可以選擇下述幾種 XC2V250XC2V1000 採用 eM_2V1K模組其中 FPGA為 FG456包裝 XC3S400XC3S1000XC3S1500採用 eM_3S1K模組其中 FPGA為 FG456包裝 XC3S400XC3S1000XC3S1500採用 eM_3S1K模組其中 FPGA為 FG456包裝 XC3S50XC3S200XC3S400 採用 eM_3S50模組其中 FPGA為 TQ144包裝 XC95144XLXC95288XL 採用 eM_95XL模組其中 CPLD為 TQ144包裝 2採用 FG456包裝者可以控制所有的 IO界面 3採用 TQ144包裝者只是不能控制 RAM和 FlashROM而可以控制其他所有的界面 4所有 FPGA模組都可自由選擇由 USB界面或是由光纖界面下載電路但是 CPLD模組只能固定由 USB界面下載電路

5所有 FPGACPLD模組都可透過 26P接頭連接既有的各種實驗模組

81

FPGA 接腳對照表

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

mD0 XD6 mD0 A17 C13 -- -- mD1 XD7 mD1 B17 D12 -- -- mD2 XD8 mD2 C17 D11 -- -- mD3 XD9 mD3 D17 C11 -- -- mD4 XD10 mD4 E17 D10 -- -- mD5 XD11 mD5 E16 C10 -- -- mD6 XD12 mD6 E14 D9 -- -- mD7 XD13 mD7 E13 D7 -- -- mA0 XD14 mA0 D13 C7 -- -- mA1 XD15 mA1 C13 D6 -- -- mA2 XA0 mA2 V5 C3 -- -- mA3 XA1 mA3 U5 C4 -- -- mA4 XA2 mA4 Y2 D3 -- -- mA5 XA3 mA5 Y1 D4 -- -- mA6 XA4 mA6 V4 E3 -- -- mA7 XA5 mA7 V3 E4 -- -- mA8 XA6 mA8 W2 F3 -- -- mA9 XA7 mA9 W1 F4 -- -- mA10 XA8 mA10 T2 G6 -- -- mA11 XA9 mA11 T1 K3 -- -- mA12 XA10 mA12 R4 K10 -- -- mA13 XA11 mA13 R3 L3 -- -- mA14 XA12 mA14 R2 L4 -- -- mRD XRD mRD R1 D5 -- -- mWR XWR mWR P6 C6 -- --

POWER P0A0 POWER B4 B20 P1 P5 ALARM P0A1 ALARM A4 A19 P2 P6 RxNET P0A2 RxNET C4 B19 P4 P7 TxNET P0A3 TxNET C5 A18 P5 P9 RxUSB P0B0 RxUSB B5 A15 P6 P10 TxUSB P0B1 TxUSB A5 B15 P7 P11 RxCAN P0B2 RxCAN D6 A14 P8 P12 RxCAN P0B3 TxCAN C6 B14 P10 P13

CLK24M CLK24M CLK24M E12 B12 P124 P38

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

PWM0H P3A0 P0D0 E6 A8 P21 P23 PWM0L P3A1 P0D1 E5 B8 P23 P24 PWM1H P3A2 P0D2 C2 B6 P24 P25 PWM1L P3A3 P0D3 C1 A5 P25 P26 PWM2H P3A4 P0D4 D2 B5 P26 P27

82

PWM2L P3A5 P0D5 D1 A4 P27 P28 PWMenb P3A6 P0D6 E4 B4 P28 P30 PHT1Z P3A7 P0D7 E3 A3 P30 P31 PHT1A P3B0 P0D8 G2 C1 P31 P32 PHT1B P3B1 P0D9 G1 C2 P32 P33 PHT0A P3B2 P0D10 H5 D1 P33 P34 PHT0B P3B3 P0D11 J6 D2 P35 P35 AMP0 P3B4 P0D12 H4 E1 P36 P39 AMP1 P3B5 P0D13 H3 E2 P40 P40 AMP2 P3B6 P0D14 H2 F2 P41 P41 AMP3 P3B7 P0D15 H1 G1 P44 P43 eeSK P0C3 P1D0 C10 B9 P20 P22 eeCS P0C2 P1D1 D10 A9 P18 P21 eeDI P0C1 P1D2 F10 B10 P17 P20 eeDO P0C0 P1D3 E10 B11 P15 P19 ssCK P0B7 P1D4 E8 A11 P14 P17 ssCS P0B6 P1D5 E7 A12 P13 P16 ssDI P0B5 P1D6 A6 B13 P12 P15 ssDO P0B4 P1D7 B6 A13 P11 P14

ppCLK P3C0 P1D8 K4 G2 P46 P44 ppDIN P3C1 P1D9 K3 K1 P47 P45 TxD P3C2 P1D10 K2 K2 P50 P46 RxD P3C3 P1D11 K1 L1 P51 P48

tstLED P3C4 P1D12 L5 L2 P52 P49 stsLED P3C5 P1D13 L4 M1 P53 P50 RxLED P3C6 P1D14 L3 M2 P55 P51 TxLED P3C7 P1D15 L2 N1 P56 P52

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

xPA0 P2A0 P2D0 AA3 N2 P59 P53 xPA1 P2A1 P2D1 Y4 T1 P60 P54 xPA2 P2A2 P2D2 AA4 T2 P63 P56 xPA3 P2A3 P2D3 AB4 U2 P68 P57 xPC0 P2A4 P2D4 W5 V1 P69 P58 xPC1 P2A5 P2D5 Y5 V2 P70 P59 xPC2 P2A6 P2D6 AA5 W1 P73 P60 xPC3 P2A7 P2D7 AB5 W2 P74 P61

-- P2B0 P2D8 V6 Y1 P76 P64 -- P2B1 P2D9 V7 Y2 P77 P66 -- P2B2 P2D10 W6 AA3 P78 P68

mCS P2B3 P2D11 Y6 AB4 P79 P69 mA15 P2B4 P2D12 V9 AA4 P80 P70 mA16 P2B5 P2D13 V10 AB5 P82 P71 mA17 P2B6 P2D14 W10 AA5 P83 P74 mA18 P2B7 P2D15 Y10 AA6 P84 P75 CS0 P2C0 ADC0 AA10 AB8 P85 P76

83

SDIN0 P2C1 ADC1 AB10 AA8 P86 P77 CS1 P2C2 ADC2 U10 AB9 P87 P78

SDIN1 P2C3 ADC3 U11 AA9 P89 P79 SCLK P2C4 ADC4 V11 AB10 P90 P80 CS2 P2C5 ADC5 W11 AA10 P92 P81

SDOUT P2C6 ADC6 Y11 AB11 P93 P82 LDAC P2C7 ADC7 AA11 AA11 P95 P83

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

xPB0 P1A0 PxA0 M1 M3 P135 P85 xPB1 P1A1 PxA1 M2 M4 P132 P86 yPB2 P1A2 PxA2 M3 N3 P131 P87 yPB3 P1A3 PxA3 M4 N4 P130 P88 yPB1 P1A4 PxA4 M5 T4 P129 P91 yPB4 P1A5 PxA5 M6 T5 P128 P92 yPB0 P1A6 PxA6 N1 U3 P127 P93 yPB5 P1A7 PxA7 N2 U4 P125 P94 yPB6 P1B0 PxB0 U13 V3 P119 P95 yPB7 P1B1 PxB1 V13 V4 P118 P96 xPB2 P1B2 PxB2 W13 W3 P116 P97 xPB3 P1B3 PxB3 Y13 W4 P113 P98 xPB4 P1B4 PxB4 AA13 Y3 P112 P100 xPB5 P1B5 PxB5 AB13 Y4 P96 P101 yPC3 P1B6 PxB6 U12 Y5 P97 P102 yPC2 P1B7 PxB7 V12 W5 P98 P103 yPC1 P1C7 PxC0 AB17 W11 P108 P113 yPC0 P1C6 PxC1 AA17 Y11 P107 P112 yPA0 P1C5 PxC2 Y17 W10 P105 P111 yPA1 P1C4 PxC3 W17 Y10 P104 P110 yPA2 P1C3 PxC4 AB18 W9 P103 P107 yPA3 P1C2 PxC5 AA18 W8 P102 P106 xPB6 P1C1 PxC6 Y18 W6 P100 P105 xPB7 P1C0 PxC7 W18 Y6 P99 P104

84

eM_DEMO 模組

eM_DEMO 模組的電路配置圖如下

eM_USB 模組

數字型 LED

0 1 2 34 5 6 78 9 A BC D E F

燈號型 LED

44 鍵盤

ADC0 ADC1 DAC0 DAC1

LED 選擇KEY 選擇

其中

1eM_DEMO模組的基本功能包括 A將 xPAxPBxPC等 16個 IO訊號引出控制 LED和鍵盤電路 B將 ADDA訊號引出並放大成+-10V的工作範圍 2LED和鍵盤可以選擇三種模式由 LED和 KEY 兩組開關作選擇圖示如下

模式1

0123

模式2 模式3

0 1 2 34 5 6 78 9 A BC D E F

0123

3模式14鍵輸入並搭配 16點的 LED燈號顯示其中 16點 LED分別對映到 xPA[0~3]xPB[0~7]和 xPC[0~3] 4組按鍵分別對映到 xPC[0~3] 4模式24鍵輸入並搭配四個 7段式數字顯示其中 數字顯示由 xPA[0~3]作數字掃瞄而由 xPB[0~7]作 7段式 LED控制 4組按鍵 分別對映到 xPC[0~3] 5模式316鍵輸入並搭配四個 7段式數字顯示其中 數字顯示由 xPA[0~3]作數字掃瞄而由 xPB[0~7]作 7段式 LED控制 16組按鍵由 xPA[0~3]作鍵盤掃瞄而由 xPC[0~3]作鍵盤讀取 6根據VHDL與數位邏輯設計的章節其中 第 1章至 10章的實驗採用模式1而 第 11章實驗採用模式2而 第 12章之後的實驗都採用模式3

85

FPGA UCF 定義

eM_3S1K 模組

NET CLK LOC = B12

NET XAlt0gt LOC = N2

NET XAlt1gt LOC = T1

NET XAlt2gt LOC = T2

NET XAlt3gt LOC = U2

NET XBlt0gt LOC = M3

NET XBlt1gt LOC = M4

NET XBlt2gt LOC = W3

NET XBlt3gt LOC = W4

NET XBlt4gt LOC = Y3

NET XBlt5gt LOC = Y4

NET XBlt6gt LOC = W6

NET XBlt7gt LOC = Y6

NET XClt0gt LOC = V1

NET XClt1gt LOC = V2

NET XClt2gt LOC = W1

NET XClt3gt LOC = W2

NET YAlt0gt LOC = W10

JP4 接頭

NET YAlt1gt LOC = Y10

NET YAlt2gt LOC = W9

NET YAlt3gt LOC = W8

NET YBlt0gt LOC = U3

NET YBlt1gt LOC = T4

NET YBlt2gt LOC = N3

NET YBlt3gt LOC = N4

NET YBlt4gt LOC = T5

NET YBlt5gt LOC = U4

NET YBlt6gt LOC = V3

NET YBlt7gt LOC = V4

NET YClt0gt LOC = Y11

NET YClt1gt LOC = W11

NET YClt2gt LOC = W5

NET YClt3gt LOC = Y5

在光碟片中 RFFPGAVHDLDEMOBIT3S1K 裡有 VHDL 與數位邏輯設計書本範例原始檔與合成檔

86

eM_3S50 模組

NET CLK LOC = P124

NET XAlt0gt LOC = P59

NET XAlt1gt LOC = P60

NET XAlt2gt LOC = P63

NET XAlt3gt LOC = P68

NET XBlt0gt LOC = P135

NET XBlt1gt LOC = P132

NET XBlt2gt LOC = P116

NET XBlt3gt LOC = P113

NET XBlt4gt LOC = P112

NET XBlt5gt LOC = P96

NET XBlt6gt LOC = P100

NET XBlt7gt LOC = P99

NET XClt0gt LOC = P69

NET XClt1gt LOC = P70

NET XClt2gt LOC = P73

NET XClt3gt LOC = P74

NET YAlt0gt LOC = P105

JP4 接頭

NET YAlt1gt LOC = P104

NET YAlt2gt LOC = P103

NET YAlt3gt LOC = P102

NET YBlt0gt LOC = P127

NET YBlt1gt LOC = P129

NET YBlt2gt LOC = P131

NET YBlt3gt LOC = P130

NET YBlt4gt LOC = P128

NET YBlt5gt LOC = P125

NET YBlt6gt LOC = P119

NET YBlt7gt LOC = P118

NET YClt0gt LOC = P107

NET YClt1gt LOC = P108

NET YClt2gt LOC = P98

NET YClt3gt LOC = P97

在光碟片中 RFFPGAVHDLDEMOBIT3S200 裡有VHDL與數位邏輯設計書本範例原始檔與合成檔

87

eM_95XL 模組

NET CLK LOC = SPIN38

NET XAlt0gt LOC = SPIN53

NET XAlt1gt LOC = SPIN54

NET XAlt2gt LOC = SPIN56

NET XAlt3gt LOC = SPIN57

NET XBlt0gt LOC = SPIN85

NET XBlt1gt LOC = SPIN86

NET XBlt2gt LOC = SPIN97

NET XBlt3gt LOC = SPIN98

NET XBlt4gt LOC = SPIN100

NET XBlt5gt LOC = SPIN101

NET XBlt6gt LOC = SPIN105

NET XBlt7gt LOC = SPIN104

NET XClt0gt LOC = SPIN58

NET XClt1gt LOC = SPIN59

NET XClt2gt LOC = SPIN60

NET XClt3gt LOC = SPIN61

NET YAlt0gt LOC = SPIN111

JP4 接頭

NET YAlt1gt LOC = SPIN110

NET YAlt2gt LOC = SPIN107

NET YAlt3gt LOC = SPIN106

NET YBlt0gt LOC = SPIN93

NET YBlt1gt LOC = SPIN91

NET YBlt2gt LOC = SPIN87

NET YBlt3gt LOC = SPIN88

NET YBlt4gt LOC = SPIN92

NET YBlt5gt LOC = SPIN94

NET YBlt6gt LOC = SPIN95

NET YBlt7gt LOC = SPIN96

NET YClt0gt LOC = SPIN112

NET YClt1gt LOC = SPIN113

NET YClt2gt LOC = SPIN103

NET YClt3gt LOC = SPIN102

在光碟片中 RFFPGAVHDLDEMOSVF95288XL 裡有VHDL與數位邏輯設計書本範例原始檔與合成

檔案

88

eM_FPGA 模組

NET CLK LOC = E12

NET XAlt0gt LOC = AA3

NET XAlt1gt LOC = Y4

NET XAlt2gt LOC = AA4

NET XAlt3gt LOC = AB4

NET XBlt0gt LOC = M1

NET XBlt1gt LOC = M2

NET XBlt2gt LOC = W13

NET XBlt3gt LOC = Y13

NET XBlt4gt LOC = AA13

NET XBlt5gt LOC = AB13

NET XBlt6gt LOC = Y18

NET XBlt7gt LOC = W18

NET XClt0gt LOC = W5

NET XClt1gt LOC = Y5

NET XClt2gt LOC = AA5

NET XClt3gt LOC = AB5

NET YAlt0gt LOC = Y17

JP4 接頭

NET YAlt1gt LOC = W17

NET YAlt2gt LOC = AB18

NET YAlt3gt LOC = AA18

NET YBlt0gt LOC = N1

NET YBlt1gt LOC = M5

NET YBlt2gt LOC = M3

NET YBlt3gt LOC = M4

NET YBlt4gt LOC = M6

NET YBlt5gt LOC = N2

NET YBlt6gt LOC = U13

NET YBlt7gt LOC = V13

NET YClt0gt LOC = AA17

NET YClt1gt LOC = AB17

NET YClt2gt LOC = V12

NET YClt3gt LOC = U12

在光碟片中 RFFPGAVHDLDEMOBIT2V250 裡有VHDL與數位邏輯設計書本範例原始檔與合成檔

89

Page 48: RFFPGA 直流馬達實驗手冊juniortek.com.tw/program/manual/RF-DC-mal.pdf · em_demo模組 em_dcm 直流伺服馬達 dc電源 rffpga 系統的直流馬達實驗規劃 其中包括:

64 實驗 4-加減速的位置控制 實驗說明為避免方波命令的過於嚴苛在方波命令的輸出加入一加減速控制功

能方塊以減緩命令變化的幅度增加馬達運動的平順建立的測試方塊圖如下

方塊圖中的模組功能說明如下

1用 fg1產生測試用的方波位置命令 2將方波位置命令送到加減速控制方塊處理後產生新的位置命令再將新的位置命

令與位置回授訊號送到 PD控制器方塊中產生電壓控制訊號最後透過 io2模組將訊號送出到伺服介面驅動馬達轉動

對應之 plc檔程式說明(exp_accplc) echo off 畫面顯示開始

run dsp 0 選擇 DSP1

run stop run reset 既有程式停止

run testDCMmem 下載指定程式

das 1 ampfg1out 0 1024 PWM 波形 Volt 設定 DAS 頻道1

das 2 ampcn1out 0 1024 加速控制 Volt 設定 DAS 頻道2

das 3 ampio1spd 0 1024 馬達速度 Volt 設定 DAS 頻道3

das 4 ampio1ang 0 1024 馬達角度 Volt 設定 DAS 頻道4

plot select 0 設定示波器頁數

plot xunit 100000 0 設定示波器 X軸

plot yunit 1 2000 -300 設定示波器 Y1 軸

plot yunit 2 2000 -100 設定示波器 Y2 軸

plot yunit 3 50 100 設定示波器 Y3 軸

plot yunit 4 2000 300 設定示波器 Y4 軸

48

plot trigger 1 0 1 10 設定示波器觸發

plot scope 9 1 2 3 4 設定示波器顯示

module io2 設定 io2 模組

s cmd ampcn2out

module fg1 設定 fg1 模組

s kAmp 2000 s kFrq 150

module cn1 設定 cn1 模組

s cmd ampfg1out

module cn2 設定 cn2 模組

s cmd ampcn1out s fdk ampio1ang s kp 0x300 s kd 0x4000

module ft1 設定 ft1 模組

s u ampfg1out s dt 2 s ka 320

module io3 設定 io3 模組

s led ampfg1out

module 回復預設模組

run 1khz 設定抽樣頻率為 4KHz

run start DSP 開始執行

das stop pause 1 DAS 啟動 das start DAS 啟動

echo on 回復正常訊息顯示

CAI操控設計畫面規劃如下(EXP_accCAI) page 1 畫面設計

49

page 2 畫面設計與實驗一 page 2相同畫面 page 3 畫面設計與實驗二 page 4相同畫面

參數設定參考之前各實驗的說明可線上機動性的調整 PD控制器中的 kp和 kd值以調整系統之響應 實測響應圖

訊 號 說 明 訊 號 說 明 ch1 方波產生器產生之位置命令 ch3 馬達角位置 ch2 加減速模組輸出之位置命令 ch4 馬達角速度訊號

50

圖一 直流馬達經加減速控制後之閉迴路控制響應圖

51

65 實驗 5-正弦波的位置控制 實驗說明在本實驗中改變命令的波形由方波改變為正弦波並建立如下的測

試方塊圖與上一實驗相比較僅更改命令的波形產生方塊 方塊圖中的模組功能說明如下 1用 fg2產生測試用的弦波位置命令 2將弦波位置命令送到加減速控制方塊處理後產生新的位置命令再與 io1 讀入的位

置回授訊號送到 PD 控制器方塊中產生電壓控制訊號再透過 io2 模組將訊號送出到伺服介面驅動馬達轉動

對應之 plc檔程式說明(exp_sinplc) echo off 畫面顯示開始

run dsp 0 選擇 DSP1

run stop run reset 既有程式停止

run testDCMmem 下載指定程式

das 1 ampfg2out 0 1024 SIN 波形 Volt 設定 DAS 頻道1

das 2 ampcn1out 0 1024 加速控制 Volt 設定 DAS 頻道2

das 3 ampio1spd 0 1024 馬達速度 Volt 設定 DAS 頻道3

das 4 ampio1ang 0 1024 馬達角度 Volt 設定 DAS 頻道4

plot select 0 設定示波器頁數

plot xunit 100000 0 設定示波器 X軸

plot yunit 1 2000 -300 設定示波器 Y1 軸

plot yunit 2 2000 -100 設定示波器 Y2 軸

plot yunit 3 50 100 設定示波器 Y3 軸

plot yunit 4 2000 300 設定示波器 Y4 軸

plot trigger 1 0 1 10 設定示波器觸發

52

plot scope 9 1 2 3 4 設定示波器顯示

module io2 設定 io2 模組

s cmd ampcn2out

module fg2 設定 fg1 模組

s kAmp 2000 s kFrq 100

module cn1 設定 cn1 模組

s cmd ampfg2out

module cn2 設定 cn2 模組

s cmd ampcn1out s fdk ampio1ang s kp 0x300 s kd 0x4000

module ft1 設定 ft1 模組

s u ampfg2out s dt 2 s ka 320

module io3 設定 io3 模組

s led ampfg2out

module 回復預設模組

run 1khz 設定抽樣頻率為 4KHz

run start DSP 開始執行

das stop pause 1 DAS 啟動 das start DAS 啟動

echo on 回復正常訊息顯示

CAI操控設計畫面規劃如下(EXP_sinCAI) page 1 畫面設計

53

page 2 畫面設計 page 3 畫面設計與實驗二 page 4相同畫面

方塊的參數設定可調整 PD控制器中的 kp和 kd值以調整系統之響應 實測響應圖

訊 號 說 明 訊 號 說 明 ch1 弦波產生器產生之位置命令 ch3 馬達角位置訊號 ch2 加減速模組輸出之位置命令 ch4 馬達角速度訊號

54

直流馬達之閉迴路弦波加減速位置控制響應圖

55

7組合語言說明

本節將針對 DC馬達伺服控制實驗專用的程式模組進行功能與程式碼的說明其

有關於波形產生器與資料擷取模組等說明如下

SIN_waveasm 正弦波產生器 PWM_waveasm 方波產生器 IIR1_filterasm 一階濾波器 DAS4asm 資料蒐集模組

弦波產生器

此模組會產生週期性的正弦波方塊圖如下

outfrq

kBiasbias

ampkAmp

kFrqth

kThf=1TB

θ

A

其中

1正弦波有四個參數振幅(A)頻率(F)相位(θ)和偏移(B)其公式為 out = A sin(2πF t +θ) + B 2對於單純的正弦波產生器所對映的參數包括 kAmp 振幅值 kFrq 頻率值kFrq=655368000Hz其中 Hz的範圍為 0~4000例如 1000Hz =gt frq=8192 100Hz =gt frq=819 10Hz =gt frq=82 1Hz =gt frq=8 kTh 相角值0~255代表 0~360的相位當 th=0 時為正弦波 th=64 時為餘弦波 th=128時為反相波依此類推 kBias偏移值 3對於可調變的正弦波產生器其對映的輸入點為 amp 控制振幅的輸入點可產生調幅(AM)波形 frq 控制頻率的輸入點可產生調頻(FM)波形 th 控制相位的輸入點可產生調相(PM)波形 bias控制偏移的輸入點可產生雙頻混波(相加)波形 4若不使用調變功能時各個輸入點時的預設值為 amp 指向 kAmp 的位址 frq 指向 kFrq 的位址

56

th 指向 kTh 的位址 bias指向 kBias的位址

模組程式範例SIN_WAVEasm

local amp R0 IP kAmp 輸入點sin波的振幅 local frq R1 IP kFrq 輸入點sin波的頻率 local th R2 IP kTh 輸入點sin波的相角 local bias R3 IP kBias 輸入點sin波的中心偏移 local out R4 OP 輸出點sin波輸出 local tab R5 TP 表格指標指向 sin[256]的表格 local ang R6 內部變數相位角65536=360deg local kAmp R7 1000 參數振幅值 local kFrq R8 1000 參數頻率值=655368000Hz local kTh R9 0 參數相角值360deg=256 local kBias R10 0 參數偏移值 data 11 模組變數區長度及初值 initial 啟動程序 WR ang0 WR out0 ang=out=0 RET timer 即時控制程序(8KHz) RD ang ADD (frq) WR ang ang+=frq SFR 8 ADD (th) AND 255 ACC=sin(ang256+th) ADD tab WRH RDM table-look-up MUL (amp) SFR 12 ADD (bias) WR out out=ACCamp4096+bias RET table tab 256 sin[256]表格區10=4096 0 101 201 301 401 501 601 700 00~070deg 799 897 995 1092 1189 1285 1380 1474 08~0F 1567 1660 1751 1842 1931 2019 2106 2191 10~17 2276 2359 2440 2520 2598 2675 2751 2824 18~1F 2896 2967 3035 3102 3166 3229 3290 3349 20~27 3406 3461 3513 3564 3612 3659 3703 3745 28~2F 3784 3822 3857 3889 3920 3948 3973 3996 30~37 4017 4036 4052 4065 4076 4085 4091 4095 38~3F 4096 4095 4091 4085 4076 4065 4052 4036 40~4790deg 4017 3996 3973 3948 3920 3889 3857 3822 48~4F 3784 3745 3703 3659 3612 3564 3513 3461 50~57 3406 3349 3290 3229 3166 3102 3035 2967 58~5F

57

2896 2824 2751 2675 2598 2520 2440 2359 60~67 2276 2191 2106 2019 1931 1842 1751 1660 68~6F 1567 1474 1380 1285 1189 1092 995 897 70~77 799 700 601 501 401 301 201 101 78~7F 0 65435 65335 65235 65135 65035 64935 64836 80~87180deg 64737 64639 64541 64444 64347 64251 64156 64062 88~8F 63969 63876 63785 63694 63605 63517 63430 63345 90~97 63260 63177 63096 63016 62938 62861 62785 62712 98~9F 62640 62569 62501 62434 62370 62307 62246 62187 A0~A7 62130 62075 62023 61972 61924 61877 61833 61791 A8~A8 61752 61714 61679 61647 61616 61588 61563 61540 B0~B7 61519 61500 61484 61471 61460 61451 61445 61441 B8~BF 61440 61441 61445 61451 61460 61471 61484 61500 C0~C7270deg 61519 61540 61563 61588 61616 61647 61679 61714 C8~CF 61752 61791 61833 61877 61924 61972 62023 62075 D0~D7 62130 62187 62246 62307 62370 62434 62501 62569 D8~DF 62640 62712 62785 62861 62938 63016 63096 63177 E0~E7 63260 63345 63430 63517 63605 63694 63785 63876 E8~EF 63969 64062 64156 64251 64347 64444 64541 64639 F0~F7 64737 64836 64935 65035 65135 65235 65335 65435 F8~FF

就程式結構而言說明如下

timer 即時控制程序(8KHz) RD ang ADD (frq) WR ang ang+=frq SFR 8 ADD (th) AND 255 ACC=sin(ang256+th) ADD tab WRH RDM table-look-up MUL (amp) SFR 12 ADD (bias) WR out out=ACCamp4096+bias RET

1基本上我們以查表法計算 sin()其輸入θ的範圍為 0~255對映到 0~360deg其輸出 sin(θ)的範圍為+-4096對映到+-10的範圍

2建立一個內部變數 ang其範圍為 0~65535對映到 0~360的相位角 3每個timer程序都執行 ang+=frq的動作更新目前的相位角接著依照 ang的相位角查表得到 sin(ang256+th)值

4由於表格長度為 256-word所以必須將 ang256才能得到正確的對映關係而 th範圍為 0~255所以不需要像 ang一般的做額外處理

5sin()的範圍為(+1-1)而在表格中以(+4096~-4096)的型式記錄相當於 10=4096所以執行 Asin()時還要用 SFR12指令做4096的動作才能正確的取得輸出值

58

6就頻率輸入 frq而言其計算原則是將θ=ωt轉化成θ=Σ(ωdt)因為抽樣頻率

為 8KHz所以 dt=18000而得到 frq=655368000Hz公式其中 Hz為真正的頻率在 8KHz的抽樣頻率下其範圍為 0~4000

鋸齒波產生器

此模組會產生週期性的鋸齒波方塊圖如下

outfrq

kBiasbias

ampkAmp

kFrqth

kThf=1TB

θ

A

其中

1鋸齒波也有四個參數振幅(A)頻率(F)相位(θ)和偏移(B)和正弦波的定義完全一致唯一的差異是其輸出為鋸齒波而非正弦波

2基本波形是從週期開始時為 0一直遞增到週期結束時到達最高點然後立刻回歸

到 0重新開始 3以程式結構而論鋸齒波程式幾乎就是正弦波的相位計算部分只差沒有正弦波的

查表處理而已

模組程式範例SAW_WAVEasm

local amp R0 IP kAmp 輸入點sin波的振幅 local frq R1 IP kFrq 輸入點sin波的頻率 local th R2 IP kTh 輸入點sin波的相角 local bias R3 IP kBias 輸入點sin波的中心偏移 local out R4 OP 輸出點sin波輸出 local ang R5 內部變數相位角65536=360deg local kAmp R6 1000 參數振幅值 local kFrq R7 1000 參數頻率值=655368000Hz local kTh R8 0 參數相角值360deg=256 local kBias R9 0 參數偏移值 data 11 模組變數區長度及初值 initial 啟動程序 WR ang0 WR out0 ang=out=0 RET timer 即時控制程序(8KHz) RD ang ADD (frq) WR ang ang+=frq SFR 8 ADD (th) AND 255 ACC=(ang256+th)amp0x00ff MUL (amp) SFR 8 ADD (bias) WR out out=ACCamp256+bias

59

RET

脈衝波產生器

outfrq

kBiasbias

ampkAmp

kFrqth

kThf=1TB

θ

A

pwm

kDutyduty

此模組會產生週期性的脈衝波方塊圖如下

其中

1脈衝波有五個參數其中振幅(A)頻率(F)相位(θ)和偏移(B)四個參數和正弦波

定義完全一樣另外再增加一個負載率(D) 2基本波形是從週期開始時為 1隔段時間後換為 0然後持續到週期結束再重新開始其中 1所佔有的比例就是負載率當 D=0時為 0而 D=255時為 100

3和其他參數類似負載率(D)以 duty為其輸入點而以 kDuty為其參數值

模組程式範例PLS_WAVEasm

local amp R0 IP kAmp 輸入點脈衝波的振幅 local frq R1 IP kFrq 輸入點脈衝波的頻率 local th R2 IP kTh 輸入點脈衝波的相角 local bias R3 IP kBias 輸入點脈衝波的中心偏移 local duty R4 IP kDuty 輸入點脈衝波的負載率 local out R5 OP 輸出點脈衝波輸出 local ang R6 內部變數相位角65536=360deg local kAmp R7 1000 參數振幅值 local kFrq R8 1000 參數頻率值=655368000Hz local kTh R9 0 參數相角值360deg=256 local kBias R10 0 參數偏移值 local kDuty R11 128 參數負載率100 =256 data 12 模組變數區長度及初值 initial 啟動程序 WR ang0 WR out0 ang=out=0 RET timer 即時控制程序(8KHz)

60

RD ang ADD (frq) WR ang ang+=frq SFR 8 ADD (th) AND 255 ACC=(ang256+th)amp0x00ff SUB (duty) RD (amp) JLT t1 RD 0 ACC=(amp0) t1 ADD (bias) WR out out=ACC+bias RET

IIR 一階濾波器

此模組執行一階的 IIR濾波器方塊圖如下

kau x

Z-1

+

+

-

+低通濾波器

高通濾波器dx lp

hp

濾波器參數的計算公式如下

1假設濾波器的頻寬為 hz則 ωn=hz628 2若系統頻率為 8KHz則抽樣週期 dT為 dT=dt8000 其中 dt為模組參數 3則濾波器參數為 ka=ωndT4096或是 =hzdt62880004096即 =hzdt32 4當 dt決定後所允許的訊號頻寬為(4000dt)換句話說訊號頻寬會因為 dt增加而下降

為了方便實驗的運用下面列出常用的參數對照表

濾波頻寬

(Hz)

10 20 50 100 200 500 1000 2000

訊號頻寬

(Hz)

400 800 2000 4000 4000 4000 4000 4000

模組參數 dt 10 5 2 1 1 1 1 1

模組參數 ka 320 320 320 320 640 1600 3200 6400

表格的運用方式如下

1首先決定濾波頻寬 2接著查表找出對映的參數 dt和 ka 3再查表得到對映的訊號頻寬以決定是否需要串接前級濾波器

61

模組程式範例IIR1_FILTERasm

local u R0 IP 輸入點濾波器輸入 local lp R1 OP 輸出點低通濾波器輸出 local hp R2 OP 輸出點高通濾波器輸出 local dt R3 1 參數抽樣週期 local ka R4 4096 參數增益 ka10=4096 local prd R5 內部變數抽樣週期用 data 6 模組變數區長度 initial 開機啟動程序 WR lp0 WR hp0 WR prd1 RET lp=hp=0prd=1 timer 即時控制程序 SUB prd1 JNZ b9 if (--prdgt0) return RD dt WR prd prd=dt RD (u) SUB lp WR hp hp=u-lp MUL ka SFR 12 ADD lp WR lp lp+=(hpka4096) b9 RET

資料蒐集模組

資料蒐集模組是一個非常特殊的模組專門配合 eTTY 程式中的示波器使用

模組程式範例DAS4asm

local cmd R0 0 紀錄命令0=停止1=前置記錄2=正觸發4=負觸發6=觸發記錄 local dt R1 1 抽樣週期每 dT抽樣一次 local tab R2 TP DAS表格啟始位址 local cnt R3 0 目前記錄點(0~255) local ch1 R4 0 定義頻道1的變數位址 local ch2 R5 0 定義頻道2的變數位址 local ch3 R6 0 定義頻道3的變數位址 local ch4 R7 0 定義頻道4的變數位址 local trg R8 0 定義觸發頻道的變數位址 local th R9 0 觸發準位 local tail R10 0 觸發後的抽樣個數 local buf R11 1 抽樣計數(1~dt) local pnt R12 表格位址計算pnt=tab+cnt4 local len R13 表格長度計算(0~256) data 14 定義模組變數區的長度 table tab 1024 定義表格的長度 initial 啟動程序 WR cmd0 RET cmd=0 timer 控制程序

62

ADD cmd0 JZ t9 if (cmd==0) return SUB buf1 JNZ t9 if (--buf)gt0) return RD dt WR buf dt=buf RD cnt ADD 1 AND 0xff WR cnt cnt=(cnt+1)amp0xff SFL 2 ADD tab WR pnt pnt=tab+cnt4 RD (ch1) WR (pnt) ADD pnt1 pnt++=ch1 RD (ch2) WR (pnt) ADD pnt1 pnt++=ch2 RD (ch3) WR (pnt) ADD pnt1 pnt++=ch3 RD (ch4) WR (pnt) pnt =ch4 RD cmd SUB 1 JZ t9 SUB 1 JZ t2 SUB 1 JZ t3 SUB 1 JZ t4 SUB 1 JZ t5 SUB 1 JZ t6 JR t7 t2 RD (trg) SUB th JGE t9 ADD cmd1 JR t9 wait trgltth t3 RD (trg) SUB th JLE t9 JR t6 wait trggtth t4 RD (trg) SUB th JLE t9 ADD cmd1 JR t9 wait trggtth t5 RD (trg) SUB th JGE t9 JR t6 wait trgltth t6 WR len0 WR cmd7 len=0cmd=7 t7 ADD len1 SUB tail JLT t9 WR cmd0 if ((++len)gt=0x80) cmd=0 t9 RET

與 DC 馬達控制相關的程式模組有以下 4個程式模組說明如下

(1)加減速控制模組 ACC_controlasm (2)光電盤輸入模組 POS_inputasm (3)PWM輸出模組 PWM_outputasm (4)PD控制模組 PD_controlasm

71加減速控制模組 此程式模組主要功能在於執行位置控制的加減速命令修正其數學模式採用 Lynn

濾波器的架構參見下圖

cmd

2

+

old Z -1

-

Z -1

Z -1

Z-1

Z-1x0 x1 x8 x9 x16

+ -

++

2

Z-1

Z-1 y1 y2

+

-

y0

+ +

sumZ-1

+164

12

out

dif

+

63

加減速控制模組方塊圖

其中

1Lynn 濾波器的階數固定成八階也就是 m=8其公式為 H(z) = (1-2Z-m+Z-2m)(1-2Z-1+Z-2)m2

2因為m=8所以m2=64因此最後計算低通濾波的部份時要先做除 64的運算 3因為低通濾波(lp)和 y0之間有 64倍的差異代表 y0y1y2的變化範圍比濾波器輸

入值要擴大許多例如輸入值在+-1000變化時y0y1y2很可能會在+-64000之間變化這範圍已經超出整數處理的範圍很可能會造成錯誤的計算結果

4所以在實驗時輸入值的變化範圍必須控制在+-500之間以保證計算的正確性 5對於 Lynn 濾波器當 m=8時其濾波器的頻寬固定為 1 kHzmdt也就是 dt=1時頻寬為 125 Hz dt=2時頻寬為 625Hz依此類推 6對於 Lynn 濾波器其濾波器的延遲固定為 m個抽樣週期因此設計 hp = x8 - lp 即可得到高通濾波器的對應結果 7其中乘 2和除 64的運算以移位運算取代所以整個程式中並無任何乘法運算 8Lynn 濾波器本身並不是穩定濾波器所以在程式啟動時必須確實的將所有狀態

(x0~x16)歸零否則會產生不穩定的狀態輸出

因為 Lynn濾波器中所有參數固定所以除了抽樣週期 dt 之外並無任何可調參數

抽樣週期 dt 可以控制頻寬dt 越大則濾波器頻寬越低

將步階命令值的輸出送入 Lynn 濾波器中經由低通濾波器的效應可以減緩命

令的變化程度達到加減速控制的目的以下為使用 Lynn 濾波器型式實現加減速控

制的組合語言程式列印 如欲更進一步瞭解 Lynn 濾波器與 FIR 數位濾波器之間的關係可以參考通訊實驗

四數位濾波器設計(FIR)中之說明

ACC_controlasm程式列印 local cmd R0 IP 輸入點位置命令

local out R1 OP 輸出點加減速處理後的位置命令

local dif R2 OP 輸出點位置微分命令

local axis R3 0 馬達編號0=X1=Y2=Z3=C

local old R4 內部變數微分計算用

local sumL R5 內部變數積分計算用

local sumH R6 內部變數積分計算用

local y0 R7 內部變數y(0~2)

local y1 R8 local y2 R9

local x0 R10 內部變數x(0~16)

local x1 R11 local x2 R12 local x3 R13 local x4 R14

local x5 R15 local x6 R16 local x7 R17 local x8 R18

local x9 R19 local x10 R20 local x11 R21 local x12 R22

local x13 R23 local x14 R24 local x15 R25 local x16 R26

64

data 27 模組變數區長度

initial 開機啟動程序

WR dif0 RD (cmd) WR out WR old dif=0 out=old=cmd

sumHL=cmd64

SFL 6 WR sumL RD out SFR 10 SGN 5 WR sumH

RPT 17 WR x00 RPT 3 WR y00 RET x[0~16]=0y[0~2]=0

timer 即時控制程序

RD (cmd) SUBX old WR x0 x0=cmd-old old=cmd

SUB x81 ADD x16 ADD y11 SUB y2 WR y0 y0=x0-2x8+x16+2y1-y2

SGN ADD sumL WR sumL RDH ADC sumH WR sumH sumHL+=y0

WRH RD sumL SFR 6 WR out out=sumHL64

RD y0 SGN SFR WR dif dif=y032mm

RD x0 RPT 16 RDX x1 x[i]=x[i-1] i=1~16

RD y0 RDX y1 WR y2 y[i]=y[i-1] i=1~2

b9 RET

72光電盤輸入模組

DC馬達的位置由光電盤量測之預設儲存於 0xac與 0xbe二個輸入埠位址中其中位址 0xac記錄 X軸馬達的位置位址 0xbe記錄 Y軸馬達的位置由於本實驗的DC馬達接在 Y軸的位置上因此程式中直接選用 Y軸的輸入 光電盤位置輸入的程式列印如下其中速度由位置的差分而得至於馬達的位置

則使用內部 2個 word加以記錄精度為 32位元 POS_inputasm程式列印 local spd R0 OP 輸出點速度量測值

local ang R1 OP 輸出點角度量測值

local angH R2 內部變數角度的 32 位元部分

local mode R3 0x308 模式選擇15MHzAB 相正反向輸入

local pht R4 0xac 輸入阜地址光電盤輸入(0xac)

local phtc R5 0xbe 輸入阜地址光電盤模式(0xbe)

local old R6 內部變數速度更新用

data 7 模組變數區長度

initial 開機啟動程序

RD mode WR (phtc) phtc=mode

RD (pht) WR old WR spd0 RET old=phtspd=0

timer 即時控制程序

RD (pht) SUBX old SGN 11 WR spd spd=(pht-old)old=pht

65

ADD ang WR ang angHL+=spd

RDH ADC angH WR angH

RET

73 PWM輸出控制模組 模組方塊

cmd PWM輸出

程式說明 1在開機時將切換保護時間寫到輸出阜 0xbc上其中切換保護值為 0~6360=5us 2在每次 timer interrupt時將 cmd訊號處理後寫到輸出阜 0xb8上

PWM_outputasm程式列印 local cmd R0 IP gnd 輸入點v相命令

local gain R1 4096 參數輸出增益1=4096

local bias R2 2048 參數輸出偏壓0=2048

local limit R3 4095 參數輸出極限1=4095

local zone R4 0x88f0 參數頻率=12KHz切換保護=5us

local pwm R5 0xb8 輸出阜地址PWM0 輸出(0xb8)

local mode R6 0xbc 輸出阜地址PWM 模式(0xbc)

local p0md R7 0xf8 輸出阜地址port0 模式(0xf8)

local gnd R8 0 輸入接地點

data 9 模組變數區長度

initial 開機啟動程序

RD bias WR (pwm) pwm=bias

RD 0xffff WR (p0md) set port0 mode

RD zone WR (mode) RET mode=zone

stop 關機保護程序

RD bias WR (pwm) RET pwm=bias

timer 即時控制程序

RD (mode) xor 1 and 1 WR (mode) trigger watch-dog

RD (cmd) MUL gain SFR 12 ADD bias ACC=(cmdgain4096)+bias

MAX 0 MIN limit WR (pwm) pwm=limit(ACC)

RET

66

74 PD 控制模組

PD控制的模組方塊參見圖二十一所示其中比例控制的部份直接由增益 kp加以調整微分控制的部份則由誤差的差分經增益 kd的調整而得

Σ+

-

cmd

fdk

err out

Σ

pk

dk

Σ

+

+

+

-

old1minusZ

PD控制器的方塊圖

PD_controlasm程式列印 local cmd R0 IP gnd 輸入點位置命令(可忽略)

local fdk R1 IP gnd 輸入點位置回授(可忽略)

local out R2 OP 輸出點用以控制速度迴路

local kp R3 256 參數增益 kp10=256

local kd R4 0 參數增益 kd10=256

local err R5 0 內部變數

local old R6 0 內部變數

local gnd R7 0 無輸入時的短路點

data 8 模組變數區長度

initial 開機啟動程序

WR out0 WR old0 RET out=old=0

timer 即時控制程序

RD (cmd) SUB (fdk) PRTF WR err

MUL kp SFR 8 P=(cmd-fdk)kp256

RDS err SUBX old MUL kd SFR 8 D=(err-old)kd256

ADDS

WR out out=P+D

RET

程式中預設增益值的 10以整數值 256為基底因此使用 SFR 8的指令加以調

整另外在在計算微分項的程式部份用到 SUBX old的指令其詳細的暫存器動作如

下 參考 piDSP的指令說明SUBX指令將總共用到 3個時序參考錯誤 找不到參照

67

來源在時序 1時將原先 AX的資料拷貝一份到 HX中時序 2時正式執行減

法的動作所以 AX暫存器中的內容會變成 err-old時序 3時DSP會將存放在 HX暫存器中的內容拷貝一份到 old的記憶體中也就是經由 SUBX此一精簡指令將

同時完成計算差分所需要的相減與資料疊代的動作有效的利用 piDSP控制器 DSP核心的精簡指令將可以大幅提昇系統的計算速度

HX AXoldSUBXerr err

old

err

errerr olderr minus

1_err

errerr olderr minus err

1_err

1

2

3

SUBX的指令時序與暫存器變化

68

8附錄快速安裝說明

光纖網路通訊 FPGA 發展系統 (適用於 WIN-XP200098 系統)

快速安裝說明

26Pin 負載輸出入埠

雙電源︵5

12

伏︶輸入埠

單電源︵5

伏︶輸入埠

USB

光纖線輸

號 光纖線輸出埠

入 傳 埠

首先將光碟片 RFFPGA 目錄檔案拷貝在您工作硬碟裡面

第一次安裝時先將 USB 傳輸線接上電腦主機將電源供應器接上 FPGA 模組此時電

腦會出現安裝 USB-Serial 驅動程式選擇從清單安裝此驅動程式放置在光碟片

RFFPGA-USBdrive 選擇您目前安裝系統

可選擇 WIN-98WIN-MEWIN-2000WIN-XP 系統配合您現在工作電腦作業系統

69

注意一般電腦 USB 埠很多插口當您安裝驅動程式時是配合您當時插入之埠

下次如您插入不同接口埠時電腦會再次要求安裝驅動程式這是正常現象請再次安

裝驅動程式否則無法使用

FPLC 操作

首先進入 RFFPGA裡子目錄 testASM直接點選 fPLCexe 出現下面操作畫面(也可直接將

此檔案放置桌面直接點選)

(或者選擇 File 再執行 Setuphellip 選擇您要執行 CAI 檔)

70

進入下面操作畫面 首先使用滑鼠在 FPGA下載按鈕單擊動作使 FPGA變成 DSP晶片 實驗一至實驗五皆為使用 DSP組合語言設計程式其原始程式分別為 testASM1至testASM5可使用 texPad 開啟與編輯程式內容 實驗三與實驗五多有 IO控制動作 當選擇實驗三時出現下面畫面

71

eM_USB 模組

數字型 LED

0 1 2 34 5 6 78 9 A BC D E F

燈號型 LED

44 鍵盤

ADC0 ADC1 DAC0 DAC1

LED 選擇KEY 選擇

模 式 1

0123

注意操作畫面 3與 4 說明開關與按鍵選擇位置後選擇程式下載再按程式啟動如您

按下 0-3按鍵時燈號型 LED會有不同方向閃爍顯示程式停止時結束所有 IO控制動作再按回首頁選擇其他實驗 實驗四與實驗五

模式3

0 1 2 34 5 6 78 9 A BC D E F

按照上面開關選擇直接操作如果以上實驗皆能按照正常操作表示您光纖網路通訊

FPGA發展模組以能正常使用 注意 開機與關機動作順序如下

開機電腦啟動 --- eM_USB 模組電源接上 --- USB 接上電腦 ---

啟動 FPLC 軟體 --- 下載 FPGA 程式

關機關閉 FPLC 軟體 --- eM_USB 模組電源拔掉 --- 拔掉電腦 USB 接頭 ---關掉

電腦

如果以上順序有亂可能造成 USB 找不到驅動造成無法下載經過幾次測試還是

無法下載建議重新啟動電腦主機按照正確步驟操作

72

FPGA 下載操作

進入 FPLC 操作系統按照下列步驟選擇節點模組與下載 bit FPGA 檔案

在 VHDLDEMO 子目錄下您可以選擇您目前 FPGA 種類型號在此型號下我們已將 VHDL

與數位邏輯設計課本範例全部放於此處

73

光纖網路連線 FPGA 下載操作

首先利用光纖線將 eM_USB0 模組光纖輸出埠接至 eM_USB1 模組光纖輸入埠以此

類推最後再將最後 eM_USBN 模組光纖輸出埠接至 eM_USB0 模組光纖輸入埠配置

如附圖方式

個人電腦(Windows) eM_USB模組

0USB

eM_USB模組1

光纖網路

eM_USB模組2

eM_USB模組N

配置完成後進入 FPLC 系統首先必須先將 Node00 下載在 testASM 子目錄裡

piDSPv0bit 檔讓 eM_USB0 模組 FPGA 具備 DSP 功能才能執行光纖網路通訊

操作如下

此時您就可以選擇分別下載至各模組 FPGA 檔 bit

74

安裝 FPLC 注意事項

當您進入 FPLC 時

按 FILE 選擇 programhellip 選擇檔案為 exp_dcmplc 出現下面畫面

正常顯示畫面為

75

DOS 環境操作

在 PC 端的操作是在 Windows 環境中的 DOS 視窗中執行指令範例如下

eFPGA progNETbit 下載 FPGA電路至網路節點0(即 USB節點)中 eFPGA testLEDbit 1 下載 FPGA電路至網路節點1中

對於單一節點的控制程序如下

1將 eM_USB模組連結個人電腦的 USB端 2eM_USB模組開機 3執行下載指令即可 eFPGA xxxxbit 4若要更改 FPGA電路只要重新執行下載指令即可

對於多個網路節點的控制程序如下

1第一組 eM_USB模組連結個人電腦的 USB端再以光纖網路依序其他各節點 2連接 USB界面者為模組0從光纖發射端連接出去的模組為1依此類推 3將所有 eM_USB模組開機 4執行下載指令如下 eFPGA progNETbit 模組0必須先下載指定的 FPGA電路 eFPGA xxxxbit 1 再依序下載其他網路模組的 FPGA電路 eFPGA yyyybit 2 eFPGA zzzzbit 最後再重新下載模組0的 FPGA電路 5換句話說模組0必須先執行 progNETbit讓光纖網路接受 FPGA控制後才能透過光纖網路下載至其他節點等全部網路節點下載完畢後再將模組0的 FPGA重新下載讓模組0也可自由執行任意的 FPGA電路

6若要更改某一個網路節點中的 FPGA電路只要重新執行下述指令 eFPGA progNETbit 模組0必須先下載指定的 FPGA電路 eFPGA yyyybit 2 下載指定網路模組的 FPGA電路 eFPGA zzzz bit 最後再重新下載模組0的 FPGA電路 換句話說除非模組0中的 FPGA已經包括光纖網路管理電路否則一定要先在

模組0中下載網路管理電路後才能下載指定網路節點的 FPGA電路

76

光纖網路通訊 FPGA 發展系統

系統配置

光纖網路通訊 FPGA 發展系統的系統配置圖如下

個人電腦(Windows) eM_USB模組

0USB

eM_USB模組1

光纖網路

eM_USB模組2

eM_USB模組N

其中

1基本模組為 eM_USB模組可用 USB界面和個人電腦連線並提供 USB對光纖網路的轉換功能使得個人電腦可以獨立控制光纖網路中的每個網路節點

2eM_USB模組也可以作為光纖網路中的網路節點透過光纖網路而接受個人電腦的

監控 3就個人電腦而言不論是 USB界面直接連結或是以光纖網路間接連結的 eM_USB模組都是可以直接監控的網路節點最多可以同時控制一個 USB節點和 30個網路節點

4對於每一個網路節點個人電腦都可執行 eM_USB模組中 FPGA的電路下載工作並在適當的 FPGA電路配合下可執行 eM_USB模組中 FPGA內部電路的讀寫控制 5透過適當的 FPGA電路設計各網路節點都可透過光纖網路和其他任何網路節點

作同步通訊執行 FPGA內部記憶體的資料交換資料交換頻率可達 1KHz以上

77

網路模組配置

每個網路模組的標準配置圖如下

eM_USB模組光纖網路

USB eM_FPGA卡

eM_DEMO模組

eM_EXP實驗模組

DC電源

其中

1網路模組以 eM_USB模組為主提供基本的 USB界面和光纖網路連線 2eM_USB模組中的 FPGACPLD採用插卡型式可選擇不同的 eM_FPGA卡包括

eM_2V1K卡可選用 Virtex系列的 XC2V250和 XC2V1000 eM_3S1K卡可選用 Spartan3系列的 XC3S400XC3S1000和 XC3S1500 eM_3S50卡可選用 Spartan3系列的 XC3S50XC3S200和 XC3S400 eM_95XL卡可選用 9500XL系列的 XC95144XL和 XC95288XL 3eM_USB模組中的對外連線有兩種一種是 26P接頭用以連接既有的各種實驗模

組另一種是兩組 50P接頭將 FPGA中各接腳引出用以連接專題實驗 4eM_DEMO模組就是插上 50P接頭的教學模組其中包括 LED 數字顯示和 44鍵盤也具備兩組的 ADC和兩組的 DAC接頭提供類比訊號的測試工具

常用的實驗組合包括

1精簡組合包括(eM_USB+eM_FPGA)提供基本的網路節點適用於專題實驗 2標準組合包括(eM_USB+eM_FPGA+eM_DEMO)提供基礎 FPGA設計的教學實驗

3實驗組合包括(eM_USB+eM_FPGA+eM_DEMO+eM_EXP)提供進階的 FPGA實驗可依需求選用不同的實驗模組

78

eM_USB 模組

eM_USB 模組的電路配置圖如下

TxRx

DCPower

USB

JP2

JP3

光纖界面

外加電源

PC連線

JP1

eM_FPGA模組

FT232 CPLD FlashROM

SRAM

10cm

6cm

JP4

其中

1對外的連線接頭包括 DC電源 可選擇單電源(5V)或是多電源(5V+12V-12V)兩種 USB界面 直接連接個人電腦 光纖界面連接光纖網路 2實驗界面包括 JP1負責內部 CPLD的電路下載 JP2JP3兩組 50P的擴張用接頭 JP4 標準 26P接頭用以連接各種實驗模組 3內部的電路配置包括 A以 SO-DIMM接頭連接各種 eM_FPGA卡 B內附 EEPROMFlashROM和 SRAM提供 FPGA作應用測試 C以一顆 FT232BM作為 USB界面解碼而以一顆 CPLD作為光纖網路解碼 D提供各種 eM_FPGA卡的電路下載功能 4內附五顆 LED由上而下依序為 usbLED指示 USB界面的讀寫狀態 tstLED可由 FPGA電路自行定義 stsLED可由 FPGA電路自行定義 RxLED 可由 FPGA電路自行定義 TxLED 可由 FPGA電路自行定義

79

外部接腳定義

外部接頭的接點順序圖示如下

上視圖

JP11 9 JP4

126225

JP31

50249

JP21

50249

而各接頭的接點定義如下

JP1 JP4 JP2 JP3 1+33V 1+12V 2+12V 1 GND 2 GND 1 GND 2 GND 2GND 3 ADC 4 DAC 3POWER 4ALARM 3 +5V 4 +5V 3nc 5 yPB2 6 yPB3 5RxNET 6TxNET 5+12V 6+12V 4TCK 7 yPB1 6 yPB4 7RxUSB 6TxUSB 7-12V 6-12V 5nc 9 yPB0 10yPB5 9RxCAN 10TxCAN 9 ADC 10 DAC 6TDO 11yPB6 12yPB7 11P0D0 12P0D1 11P1D0 12P1D1 7TDI 13yGND 14yPC3 13P0D2 14P0D3 13P1D2 14P1D3 8nc 15yPC2 16yPC1 15P0D4 16P0D5 15P1D4 16P1D5 9TMS 17yPC0 18yPA0 17P0D6 18P0D7 17P1D6 18P1D7 19yPA1 20yPA2 19P0D8 20P0D9 19P1D8 20P1D9 21yPA3 22GND 21P0D10 22P0D11 21P1D10 22P1D11 23GND 24+5V 23P0D12 24P0D13 23P1D12 24P1D13 25+5V 26nc 25P0D14 26P0D15 25P1D14 26P1D15 27P2D0 28P2D1 27PxA0 28PxA1 29P2D2 30P2D3 29PxA2 30PxA3 31P2D4 32P2D5 31PxA4 32PxA5 33P2D6 34P2D7 33PxA6 34PxA7 35P2D8 36P2D9 35PxB0 36PxB1 37P2D10 38P2D11 37PxB2 38PxB3 39P2D12 40P2D13 39PxB4 40PxB5 41P2D14 42P2D15 41PxB6 42PxB7 43ADC0 44ADC1 43PxC0 44PxC1 45ADC2 46ADC3 45PxC2 46PxC3 47ADC4 48ADC5 47PxC4 48PxC5 49DAC0 50DAC1 49PxC6 50PxC7

80

eM_FPGA 模組

在各種 eM_FPGA 模組中FPGA 對外電路的標準配置圖如下

24576MHz

FlashROM

26PSRAM

EEPROM

mD[8]

yPA[4]

FPGACPLD

mA[19]mRDmWRmCSeeCKeeCSeeDIeeDO

光纖界面 RxNETTxNET

USB 界面 RxUSBTxUSBCLK24MPOWERALARM

LED

tstLEDstsLEDRxLEDTxLED

yPB[8]yPC[4]

ADCDAC

ADC[8]

實驗模組

ADC[2]

DAC[2]

xPA[4]

xPB[8]

xPC[4]

基礎實驗

其中

1FPGACPLD可以選擇下述幾種 XC2V250XC2V1000 採用 eM_2V1K模組其中 FPGA為 FG456包裝 XC3S400XC3S1000XC3S1500採用 eM_3S1K模組其中 FPGA為 FG456包裝 XC3S400XC3S1000XC3S1500採用 eM_3S1K模組其中 FPGA為 FG456包裝 XC3S50XC3S200XC3S400 採用 eM_3S50模組其中 FPGA為 TQ144包裝 XC95144XLXC95288XL 採用 eM_95XL模組其中 CPLD為 TQ144包裝 2採用 FG456包裝者可以控制所有的 IO界面 3採用 TQ144包裝者只是不能控制 RAM和 FlashROM而可以控制其他所有的界面 4所有 FPGA模組都可自由選擇由 USB界面或是由光纖界面下載電路但是 CPLD模組只能固定由 USB界面下載電路

5所有 FPGACPLD模組都可透過 26P接頭連接既有的各種實驗模組

81

FPGA 接腳對照表

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

mD0 XD6 mD0 A17 C13 -- -- mD1 XD7 mD1 B17 D12 -- -- mD2 XD8 mD2 C17 D11 -- -- mD3 XD9 mD3 D17 C11 -- -- mD4 XD10 mD4 E17 D10 -- -- mD5 XD11 mD5 E16 C10 -- -- mD6 XD12 mD6 E14 D9 -- -- mD7 XD13 mD7 E13 D7 -- -- mA0 XD14 mA0 D13 C7 -- -- mA1 XD15 mA1 C13 D6 -- -- mA2 XA0 mA2 V5 C3 -- -- mA3 XA1 mA3 U5 C4 -- -- mA4 XA2 mA4 Y2 D3 -- -- mA5 XA3 mA5 Y1 D4 -- -- mA6 XA4 mA6 V4 E3 -- -- mA7 XA5 mA7 V3 E4 -- -- mA8 XA6 mA8 W2 F3 -- -- mA9 XA7 mA9 W1 F4 -- -- mA10 XA8 mA10 T2 G6 -- -- mA11 XA9 mA11 T1 K3 -- -- mA12 XA10 mA12 R4 K10 -- -- mA13 XA11 mA13 R3 L3 -- -- mA14 XA12 mA14 R2 L4 -- -- mRD XRD mRD R1 D5 -- -- mWR XWR mWR P6 C6 -- --

POWER P0A0 POWER B4 B20 P1 P5 ALARM P0A1 ALARM A4 A19 P2 P6 RxNET P0A2 RxNET C4 B19 P4 P7 TxNET P0A3 TxNET C5 A18 P5 P9 RxUSB P0B0 RxUSB B5 A15 P6 P10 TxUSB P0B1 TxUSB A5 B15 P7 P11 RxCAN P0B2 RxCAN D6 A14 P8 P12 RxCAN P0B3 TxCAN C6 B14 P10 P13

CLK24M CLK24M CLK24M E12 B12 P124 P38

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

PWM0H P3A0 P0D0 E6 A8 P21 P23 PWM0L P3A1 P0D1 E5 B8 P23 P24 PWM1H P3A2 P0D2 C2 B6 P24 P25 PWM1L P3A3 P0D3 C1 A5 P25 P26 PWM2H P3A4 P0D4 D2 B5 P26 P27

82

PWM2L P3A5 P0D5 D1 A4 P27 P28 PWMenb P3A6 P0D6 E4 B4 P28 P30 PHT1Z P3A7 P0D7 E3 A3 P30 P31 PHT1A P3B0 P0D8 G2 C1 P31 P32 PHT1B P3B1 P0D9 G1 C2 P32 P33 PHT0A P3B2 P0D10 H5 D1 P33 P34 PHT0B P3B3 P0D11 J6 D2 P35 P35 AMP0 P3B4 P0D12 H4 E1 P36 P39 AMP1 P3B5 P0D13 H3 E2 P40 P40 AMP2 P3B6 P0D14 H2 F2 P41 P41 AMP3 P3B7 P0D15 H1 G1 P44 P43 eeSK P0C3 P1D0 C10 B9 P20 P22 eeCS P0C2 P1D1 D10 A9 P18 P21 eeDI P0C1 P1D2 F10 B10 P17 P20 eeDO P0C0 P1D3 E10 B11 P15 P19 ssCK P0B7 P1D4 E8 A11 P14 P17 ssCS P0B6 P1D5 E7 A12 P13 P16 ssDI P0B5 P1D6 A6 B13 P12 P15 ssDO P0B4 P1D7 B6 A13 P11 P14

ppCLK P3C0 P1D8 K4 G2 P46 P44 ppDIN P3C1 P1D9 K3 K1 P47 P45 TxD P3C2 P1D10 K2 K2 P50 P46 RxD P3C3 P1D11 K1 L1 P51 P48

tstLED P3C4 P1D12 L5 L2 P52 P49 stsLED P3C5 P1D13 L4 M1 P53 P50 RxLED P3C6 P1D14 L3 M2 P55 P51 TxLED P3C7 P1D15 L2 N1 P56 P52

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

xPA0 P2A0 P2D0 AA3 N2 P59 P53 xPA1 P2A1 P2D1 Y4 T1 P60 P54 xPA2 P2A2 P2D2 AA4 T2 P63 P56 xPA3 P2A3 P2D3 AB4 U2 P68 P57 xPC0 P2A4 P2D4 W5 V1 P69 P58 xPC1 P2A5 P2D5 Y5 V2 P70 P59 xPC2 P2A6 P2D6 AA5 W1 P73 P60 xPC3 P2A7 P2D7 AB5 W2 P74 P61

-- P2B0 P2D8 V6 Y1 P76 P64 -- P2B1 P2D9 V7 Y2 P77 P66 -- P2B2 P2D10 W6 AA3 P78 P68

mCS P2B3 P2D11 Y6 AB4 P79 P69 mA15 P2B4 P2D12 V9 AA4 P80 P70 mA16 P2B5 P2D13 V10 AB5 P82 P71 mA17 P2B6 P2D14 W10 AA5 P83 P74 mA18 P2B7 P2D15 Y10 AA6 P84 P75 CS0 P2C0 ADC0 AA10 AB8 P85 P76

83

SDIN0 P2C1 ADC1 AB10 AA8 P86 P77 CS1 P2C2 ADC2 U10 AB9 P87 P78

SDIN1 P2C3 ADC3 U11 AA9 P89 P79 SCLK P2C4 ADC4 V11 AB10 P90 P80 CS2 P2C5 ADC5 W11 AA10 P92 P81

SDOUT P2C6 ADC6 Y11 AB11 P93 P82 LDAC P2C7 ADC7 AA11 AA11 P95 P83

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

xPB0 P1A0 PxA0 M1 M3 P135 P85 xPB1 P1A1 PxA1 M2 M4 P132 P86 yPB2 P1A2 PxA2 M3 N3 P131 P87 yPB3 P1A3 PxA3 M4 N4 P130 P88 yPB1 P1A4 PxA4 M5 T4 P129 P91 yPB4 P1A5 PxA5 M6 T5 P128 P92 yPB0 P1A6 PxA6 N1 U3 P127 P93 yPB5 P1A7 PxA7 N2 U4 P125 P94 yPB6 P1B0 PxB0 U13 V3 P119 P95 yPB7 P1B1 PxB1 V13 V4 P118 P96 xPB2 P1B2 PxB2 W13 W3 P116 P97 xPB3 P1B3 PxB3 Y13 W4 P113 P98 xPB4 P1B4 PxB4 AA13 Y3 P112 P100 xPB5 P1B5 PxB5 AB13 Y4 P96 P101 yPC3 P1B6 PxB6 U12 Y5 P97 P102 yPC2 P1B7 PxB7 V12 W5 P98 P103 yPC1 P1C7 PxC0 AB17 W11 P108 P113 yPC0 P1C6 PxC1 AA17 Y11 P107 P112 yPA0 P1C5 PxC2 Y17 W10 P105 P111 yPA1 P1C4 PxC3 W17 Y10 P104 P110 yPA2 P1C3 PxC4 AB18 W9 P103 P107 yPA3 P1C2 PxC5 AA18 W8 P102 P106 xPB6 P1C1 PxC6 Y18 W6 P100 P105 xPB7 P1C0 PxC7 W18 Y6 P99 P104

84

eM_DEMO 模組

eM_DEMO 模組的電路配置圖如下

eM_USB 模組

數字型 LED

0 1 2 34 5 6 78 9 A BC D E F

燈號型 LED

44 鍵盤

ADC0 ADC1 DAC0 DAC1

LED 選擇KEY 選擇

其中

1eM_DEMO模組的基本功能包括 A將 xPAxPBxPC等 16個 IO訊號引出控制 LED和鍵盤電路 B將 ADDA訊號引出並放大成+-10V的工作範圍 2LED和鍵盤可以選擇三種模式由 LED和 KEY 兩組開關作選擇圖示如下

模式1

0123

模式2 模式3

0 1 2 34 5 6 78 9 A BC D E F

0123

3模式14鍵輸入並搭配 16點的 LED燈號顯示其中 16點 LED分別對映到 xPA[0~3]xPB[0~7]和 xPC[0~3] 4組按鍵分別對映到 xPC[0~3] 4模式24鍵輸入並搭配四個 7段式數字顯示其中 數字顯示由 xPA[0~3]作數字掃瞄而由 xPB[0~7]作 7段式 LED控制 4組按鍵 分別對映到 xPC[0~3] 5模式316鍵輸入並搭配四個 7段式數字顯示其中 數字顯示由 xPA[0~3]作數字掃瞄而由 xPB[0~7]作 7段式 LED控制 16組按鍵由 xPA[0~3]作鍵盤掃瞄而由 xPC[0~3]作鍵盤讀取 6根據VHDL與數位邏輯設計的章節其中 第 1章至 10章的實驗採用模式1而 第 11章實驗採用模式2而 第 12章之後的實驗都採用模式3

85

FPGA UCF 定義

eM_3S1K 模組

NET CLK LOC = B12

NET XAlt0gt LOC = N2

NET XAlt1gt LOC = T1

NET XAlt2gt LOC = T2

NET XAlt3gt LOC = U2

NET XBlt0gt LOC = M3

NET XBlt1gt LOC = M4

NET XBlt2gt LOC = W3

NET XBlt3gt LOC = W4

NET XBlt4gt LOC = Y3

NET XBlt5gt LOC = Y4

NET XBlt6gt LOC = W6

NET XBlt7gt LOC = Y6

NET XClt0gt LOC = V1

NET XClt1gt LOC = V2

NET XClt2gt LOC = W1

NET XClt3gt LOC = W2

NET YAlt0gt LOC = W10

JP4 接頭

NET YAlt1gt LOC = Y10

NET YAlt2gt LOC = W9

NET YAlt3gt LOC = W8

NET YBlt0gt LOC = U3

NET YBlt1gt LOC = T4

NET YBlt2gt LOC = N3

NET YBlt3gt LOC = N4

NET YBlt4gt LOC = T5

NET YBlt5gt LOC = U4

NET YBlt6gt LOC = V3

NET YBlt7gt LOC = V4

NET YClt0gt LOC = Y11

NET YClt1gt LOC = W11

NET YClt2gt LOC = W5

NET YClt3gt LOC = Y5

在光碟片中 RFFPGAVHDLDEMOBIT3S1K 裡有 VHDL 與數位邏輯設計書本範例原始檔與合成檔

86

eM_3S50 模組

NET CLK LOC = P124

NET XAlt0gt LOC = P59

NET XAlt1gt LOC = P60

NET XAlt2gt LOC = P63

NET XAlt3gt LOC = P68

NET XBlt0gt LOC = P135

NET XBlt1gt LOC = P132

NET XBlt2gt LOC = P116

NET XBlt3gt LOC = P113

NET XBlt4gt LOC = P112

NET XBlt5gt LOC = P96

NET XBlt6gt LOC = P100

NET XBlt7gt LOC = P99

NET XClt0gt LOC = P69

NET XClt1gt LOC = P70

NET XClt2gt LOC = P73

NET XClt3gt LOC = P74

NET YAlt0gt LOC = P105

JP4 接頭

NET YAlt1gt LOC = P104

NET YAlt2gt LOC = P103

NET YAlt3gt LOC = P102

NET YBlt0gt LOC = P127

NET YBlt1gt LOC = P129

NET YBlt2gt LOC = P131

NET YBlt3gt LOC = P130

NET YBlt4gt LOC = P128

NET YBlt5gt LOC = P125

NET YBlt6gt LOC = P119

NET YBlt7gt LOC = P118

NET YClt0gt LOC = P107

NET YClt1gt LOC = P108

NET YClt2gt LOC = P98

NET YClt3gt LOC = P97

在光碟片中 RFFPGAVHDLDEMOBIT3S200 裡有VHDL與數位邏輯設計書本範例原始檔與合成檔

87

eM_95XL 模組

NET CLK LOC = SPIN38

NET XAlt0gt LOC = SPIN53

NET XAlt1gt LOC = SPIN54

NET XAlt2gt LOC = SPIN56

NET XAlt3gt LOC = SPIN57

NET XBlt0gt LOC = SPIN85

NET XBlt1gt LOC = SPIN86

NET XBlt2gt LOC = SPIN97

NET XBlt3gt LOC = SPIN98

NET XBlt4gt LOC = SPIN100

NET XBlt5gt LOC = SPIN101

NET XBlt6gt LOC = SPIN105

NET XBlt7gt LOC = SPIN104

NET XClt0gt LOC = SPIN58

NET XClt1gt LOC = SPIN59

NET XClt2gt LOC = SPIN60

NET XClt3gt LOC = SPIN61

NET YAlt0gt LOC = SPIN111

JP4 接頭

NET YAlt1gt LOC = SPIN110

NET YAlt2gt LOC = SPIN107

NET YAlt3gt LOC = SPIN106

NET YBlt0gt LOC = SPIN93

NET YBlt1gt LOC = SPIN91

NET YBlt2gt LOC = SPIN87

NET YBlt3gt LOC = SPIN88

NET YBlt4gt LOC = SPIN92

NET YBlt5gt LOC = SPIN94

NET YBlt6gt LOC = SPIN95

NET YBlt7gt LOC = SPIN96

NET YClt0gt LOC = SPIN112

NET YClt1gt LOC = SPIN113

NET YClt2gt LOC = SPIN103

NET YClt3gt LOC = SPIN102

在光碟片中 RFFPGAVHDLDEMOSVF95288XL 裡有VHDL與數位邏輯設計書本範例原始檔與合成

檔案

88

eM_FPGA 模組

NET CLK LOC = E12

NET XAlt0gt LOC = AA3

NET XAlt1gt LOC = Y4

NET XAlt2gt LOC = AA4

NET XAlt3gt LOC = AB4

NET XBlt0gt LOC = M1

NET XBlt1gt LOC = M2

NET XBlt2gt LOC = W13

NET XBlt3gt LOC = Y13

NET XBlt4gt LOC = AA13

NET XBlt5gt LOC = AB13

NET XBlt6gt LOC = Y18

NET XBlt7gt LOC = W18

NET XClt0gt LOC = W5

NET XClt1gt LOC = Y5

NET XClt2gt LOC = AA5

NET XClt3gt LOC = AB5

NET YAlt0gt LOC = Y17

JP4 接頭

NET YAlt1gt LOC = W17

NET YAlt2gt LOC = AB18

NET YAlt3gt LOC = AA18

NET YBlt0gt LOC = N1

NET YBlt1gt LOC = M5

NET YBlt2gt LOC = M3

NET YBlt3gt LOC = M4

NET YBlt4gt LOC = M6

NET YBlt5gt LOC = N2

NET YBlt6gt LOC = U13

NET YBlt7gt LOC = V13

NET YClt0gt LOC = AA17

NET YClt1gt LOC = AB17

NET YClt2gt LOC = V12

NET YClt3gt LOC = U12

在光碟片中 RFFPGAVHDLDEMOBIT2V250 裡有VHDL與數位邏輯設計書本範例原始檔與合成檔

89

Page 49: RFFPGA 直流馬達實驗手冊juniortek.com.tw/program/manual/RF-DC-mal.pdf · em_demo模組 em_dcm 直流伺服馬達 dc電源 rffpga 系統的直流馬達實驗規劃 其中包括:

plot trigger 1 0 1 10 設定示波器觸發

plot scope 9 1 2 3 4 設定示波器顯示

module io2 設定 io2 模組

s cmd ampcn2out

module fg1 設定 fg1 模組

s kAmp 2000 s kFrq 150

module cn1 設定 cn1 模組

s cmd ampfg1out

module cn2 設定 cn2 模組

s cmd ampcn1out s fdk ampio1ang s kp 0x300 s kd 0x4000

module ft1 設定 ft1 模組

s u ampfg1out s dt 2 s ka 320

module io3 設定 io3 模組

s led ampfg1out

module 回復預設模組

run 1khz 設定抽樣頻率為 4KHz

run start DSP 開始執行

das stop pause 1 DAS 啟動 das start DAS 啟動

echo on 回復正常訊息顯示

CAI操控設計畫面規劃如下(EXP_accCAI) page 1 畫面設計

49

page 2 畫面設計與實驗一 page 2相同畫面 page 3 畫面設計與實驗二 page 4相同畫面

參數設定參考之前各實驗的說明可線上機動性的調整 PD控制器中的 kp和 kd值以調整系統之響應 實測響應圖

訊 號 說 明 訊 號 說 明 ch1 方波產生器產生之位置命令 ch3 馬達角位置 ch2 加減速模組輸出之位置命令 ch4 馬達角速度訊號

50

圖一 直流馬達經加減速控制後之閉迴路控制響應圖

51

65 實驗 5-正弦波的位置控制 實驗說明在本實驗中改變命令的波形由方波改變為正弦波並建立如下的測

試方塊圖與上一實驗相比較僅更改命令的波形產生方塊 方塊圖中的模組功能說明如下 1用 fg2產生測試用的弦波位置命令 2將弦波位置命令送到加減速控制方塊處理後產生新的位置命令再與 io1 讀入的位

置回授訊號送到 PD 控制器方塊中產生電壓控制訊號再透過 io2 模組將訊號送出到伺服介面驅動馬達轉動

對應之 plc檔程式說明(exp_sinplc) echo off 畫面顯示開始

run dsp 0 選擇 DSP1

run stop run reset 既有程式停止

run testDCMmem 下載指定程式

das 1 ampfg2out 0 1024 SIN 波形 Volt 設定 DAS 頻道1

das 2 ampcn1out 0 1024 加速控制 Volt 設定 DAS 頻道2

das 3 ampio1spd 0 1024 馬達速度 Volt 設定 DAS 頻道3

das 4 ampio1ang 0 1024 馬達角度 Volt 設定 DAS 頻道4

plot select 0 設定示波器頁數

plot xunit 100000 0 設定示波器 X軸

plot yunit 1 2000 -300 設定示波器 Y1 軸

plot yunit 2 2000 -100 設定示波器 Y2 軸

plot yunit 3 50 100 設定示波器 Y3 軸

plot yunit 4 2000 300 設定示波器 Y4 軸

plot trigger 1 0 1 10 設定示波器觸發

52

plot scope 9 1 2 3 4 設定示波器顯示

module io2 設定 io2 模組

s cmd ampcn2out

module fg2 設定 fg1 模組

s kAmp 2000 s kFrq 100

module cn1 設定 cn1 模組

s cmd ampfg2out

module cn2 設定 cn2 模組

s cmd ampcn1out s fdk ampio1ang s kp 0x300 s kd 0x4000

module ft1 設定 ft1 模組

s u ampfg2out s dt 2 s ka 320

module io3 設定 io3 模組

s led ampfg2out

module 回復預設模組

run 1khz 設定抽樣頻率為 4KHz

run start DSP 開始執行

das stop pause 1 DAS 啟動 das start DAS 啟動

echo on 回復正常訊息顯示

CAI操控設計畫面規劃如下(EXP_sinCAI) page 1 畫面設計

53

page 2 畫面設計 page 3 畫面設計與實驗二 page 4相同畫面

方塊的參數設定可調整 PD控制器中的 kp和 kd值以調整系統之響應 實測響應圖

訊 號 說 明 訊 號 說 明 ch1 弦波產生器產生之位置命令 ch3 馬達角位置訊號 ch2 加減速模組輸出之位置命令 ch4 馬達角速度訊號

54

直流馬達之閉迴路弦波加減速位置控制響應圖

55

7組合語言說明

本節將針對 DC馬達伺服控制實驗專用的程式模組進行功能與程式碼的說明其

有關於波形產生器與資料擷取模組等說明如下

SIN_waveasm 正弦波產生器 PWM_waveasm 方波產生器 IIR1_filterasm 一階濾波器 DAS4asm 資料蒐集模組

弦波產生器

此模組會產生週期性的正弦波方塊圖如下

outfrq

kBiasbias

ampkAmp

kFrqth

kThf=1TB

θ

A

其中

1正弦波有四個參數振幅(A)頻率(F)相位(θ)和偏移(B)其公式為 out = A sin(2πF t +θ) + B 2對於單純的正弦波產生器所對映的參數包括 kAmp 振幅值 kFrq 頻率值kFrq=655368000Hz其中 Hz的範圍為 0~4000例如 1000Hz =gt frq=8192 100Hz =gt frq=819 10Hz =gt frq=82 1Hz =gt frq=8 kTh 相角值0~255代表 0~360的相位當 th=0 時為正弦波 th=64 時為餘弦波 th=128時為反相波依此類推 kBias偏移值 3對於可調變的正弦波產生器其對映的輸入點為 amp 控制振幅的輸入點可產生調幅(AM)波形 frq 控制頻率的輸入點可產生調頻(FM)波形 th 控制相位的輸入點可產生調相(PM)波形 bias控制偏移的輸入點可產生雙頻混波(相加)波形 4若不使用調變功能時各個輸入點時的預設值為 amp 指向 kAmp 的位址 frq 指向 kFrq 的位址

56

th 指向 kTh 的位址 bias指向 kBias的位址

模組程式範例SIN_WAVEasm

local amp R0 IP kAmp 輸入點sin波的振幅 local frq R1 IP kFrq 輸入點sin波的頻率 local th R2 IP kTh 輸入點sin波的相角 local bias R3 IP kBias 輸入點sin波的中心偏移 local out R4 OP 輸出點sin波輸出 local tab R5 TP 表格指標指向 sin[256]的表格 local ang R6 內部變數相位角65536=360deg local kAmp R7 1000 參數振幅值 local kFrq R8 1000 參數頻率值=655368000Hz local kTh R9 0 參數相角值360deg=256 local kBias R10 0 參數偏移值 data 11 模組變數區長度及初值 initial 啟動程序 WR ang0 WR out0 ang=out=0 RET timer 即時控制程序(8KHz) RD ang ADD (frq) WR ang ang+=frq SFR 8 ADD (th) AND 255 ACC=sin(ang256+th) ADD tab WRH RDM table-look-up MUL (amp) SFR 12 ADD (bias) WR out out=ACCamp4096+bias RET table tab 256 sin[256]表格區10=4096 0 101 201 301 401 501 601 700 00~070deg 799 897 995 1092 1189 1285 1380 1474 08~0F 1567 1660 1751 1842 1931 2019 2106 2191 10~17 2276 2359 2440 2520 2598 2675 2751 2824 18~1F 2896 2967 3035 3102 3166 3229 3290 3349 20~27 3406 3461 3513 3564 3612 3659 3703 3745 28~2F 3784 3822 3857 3889 3920 3948 3973 3996 30~37 4017 4036 4052 4065 4076 4085 4091 4095 38~3F 4096 4095 4091 4085 4076 4065 4052 4036 40~4790deg 4017 3996 3973 3948 3920 3889 3857 3822 48~4F 3784 3745 3703 3659 3612 3564 3513 3461 50~57 3406 3349 3290 3229 3166 3102 3035 2967 58~5F

57

2896 2824 2751 2675 2598 2520 2440 2359 60~67 2276 2191 2106 2019 1931 1842 1751 1660 68~6F 1567 1474 1380 1285 1189 1092 995 897 70~77 799 700 601 501 401 301 201 101 78~7F 0 65435 65335 65235 65135 65035 64935 64836 80~87180deg 64737 64639 64541 64444 64347 64251 64156 64062 88~8F 63969 63876 63785 63694 63605 63517 63430 63345 90~97 63260 63177 63096 63016 62938 62861 62785 62712 98~9F 62640 62569 62501 62434 62370 62307 62246 62187 A0~A7 62130 62075 62023 61972 61924 61877 61833 61791 A8~A8 61752 61714 61679 61647 61616 61588 61563 61540 B0~B7 61519 61500 61484 61471 61460 61451 61445 61441 B8~BF 61440 61441 61445 61451 61460 61471 61484 61500 C0~C7270deg 61519 61540 61563 61588 61616 61647 61679 61714 C8~CF 61752 61791 61833 61877 61924 61972 62023 62075 D0~D7 62130 62187 62246 62307 62370 62434 62501 62569 D8~DF 62640 62712 62785 62861 62938 63016 63096 63177 E0~E7 63260 63345 63430 63517 63605 63694 63785 63876 E8~EF 63969 64062 64156 64251 64347 64444 64541 64639 F0~F7 64737 64836 64935 65035 65135 65235 65335 65435 F8~FF

就程式結構而言說明如下

timer 即時控制程序(8KHz) RD ang ADD (frq) WR ang ang+=frq SFR 8 ADD (th) AND 255 ACC=sin(ang256+th) ADD tab WRH RDM table-look-up MUL (amp) SFR 12 ADD (bias) WR out out=ACCamp4096+bias RET

1基本上我們以查表法計算 sin()其輸入θ的範圍為 0~255對映到 0~360deg其輸出 sin(θ)的範圍為+-4096對映到+-10的範圍

2建立一個內部變數 ang其範圍為 0~65535對映到 0~360的相位角 3每個timer程序都執行 ang+=frq的動作更新目前的相位角接著依照 ang的相位角查表得到 sin(ang256+th)值

4由於表格長度為 256-word所以必須將 ang256才能得到正確的對映關係而 th範圍為 0~255所以不需要像 ang一般的做額外處理

5sin()的範圍為(+1-1)而在表格中以(+4096~-4096)的型式記錄相當於 10=4096所以執行 Asin()時還要用 SFR12指令做4096的動作才能正確的取得輸出值

58

6就頻率輸入 frq而言其計算原則是將θ=ωt轉化成θ=Σ(ωdt)因為抽樣頻率

為 8KHz所以 dt=18000而得到 frq=655368000Hz公式其中 Hz為真正的頻率在 8KHz的抽樣頻率下其範圍為 0~4000

鋸齒波產生器

此模組會產生週期性的鋸齒波方塊圖如下

outfrq

kBiasbias

ampkAmp

kFrqth

kThf=1TB

θ

A

其中

1鋸齒波也有四個參數振幅(A)頻率(F)相位(θ)和偏移(B)和正弦波的定義完全一致唯一的差異是其輸出為鋸齒波而非正弦波

2基本波形是從週期開始時為 0一直遞增到週期結束時到達最高點然後立刻回歸

到 0重新開始 3以程式結構而論鋸齒波程式幾乎就是正弦波的相位計算部分只差沒有正弦波的

查表處理而已

模組程式範例SAW_WAVEasm

local amp R0 IP kAmp 輸入點sin波的振幅 local frq R1 IP kFrq 輸入點sin波的頻率 local th R2 IP kTh 輸入點sin波的相角 local bias R3 IP kBias 輸入點sin波的中心偏移 local out R4 OP 輸出點sin波輸出 local ang R5 內部變數相位角65536=360deg local kAmp R6 1000 參數振幅值 local kFrq R7 1000 參數頻率值=655368000Hz local kTh R8 0 參數相角值360deg=256 local kBias R9 0 參數偏移值 data 11 模組變數區長度及初值 initial 啟動程序 WR ang0 WR out0 ang=out=0 RET timer 即時控制程序(8KHz) RD ang ADD (frq) WR ang ang+=frq SFR 8 ADD (th) AND 255 ACC=(ang256+th)amp0x00ff MUL (amp) SFR 8 ADD (bias) WR out out=ACCamp256+bias

59

RET

脈衝波產生器

outfrq

kBiasbias

ampkAmp

kFrqth

kThf=1TB

θ

A

pwm

kDutyduty

此模組會產生週期性的脈衝波方塊圖如下

其中

1脈衝波有五個參數其中振幅(A)頻率(F)相位(θ)和偏移(B)四個參數和正弦波

定義完全一樣另外再增加一個負載率(D) 2基本波形是從週期開始時為 1隔段時間後換為 0然後持續到週期結束再重新開始其中 1所佔有的比例就是負載率當 D=0時為 0而 D=255時為 100

3和其他參數類似負載率(D)以 duty為其輸入點而以 kDuty為其參數值

模組程式範例PLS_WAVEasm

local amp R0 IP kAmp 輸入點脈衝波的振幅 local frq R1 IP kFrq 輸入點脈衝波的頻率 local th R2 IP kTh 輸入點脈衝波的相角 local bias R3 IP kBias 輸入點脈衝波的中心偏移 local duty R4 IP kDuty 輸入點脈衝波的負載率 local out R5 OP 輸出點脈衝波輸出 local ang R6 內部變數相位角65536=360deg local kAmp R7 1000 參數振幅值 local kFrq R8 1000 參數頻率值=655368000Hz local kTh R9 0 參數相角值360deg=256 local kBias R10 0 參數偏移值 local kDuty R11 128 參數負載率100 =256 data 12 模組變數區長度及初值 initial 啟動程序 WR ang0 WR out0 ang=out=0 RET timer 即時控制程序(8KHz)

60

RD ang ADD (frq) WR ang ang+=frq SFR 8 ADD (th) AND 255 ACC=(ang256+th)amp0x00ff SUB (duty) RD (amp) JLT t1 RD 0 ACC=(amp0) t1 ADD (bias) WR out out=ACC+bias RET

IIR 一階濾波器

此模組執行一階的 IIR濾波器方塊圖如下

kau x

Z-1

+

+

-

+低通濾波器

高通濾波器dx lp

hp

濾波器參數的計算公式如下

1假設濾波器的頻寬為 hz則 ωn=hz628 2若系統頻率為 8KHz則抽樣週期 dT為 dT=dt8000 其中 dt為模組參數 3則濾波器參數為 ka=ωndT4096或是 =hzdt62880004096即 =hzdt32 4當 dt決定後所允許的訊號頻寬為(4000dt)換句話說訊號頻寬會因為 dt增加而下降

為了方便實驗的運用下面列出常用的參數對照表

濾波頻寬

(Hz)

10 20 50 100 200 500 1000 2000

訊號頻寬

(Hz)

400 800 2000 4000 4000 4000 4000 4000

模組參數 dt 10 5 2 1 1 1 1 1

模組參數 ka 320 320 320 320 640 1600 3200 6400

表格的運用方式如下

1首先決定濾波頻寬 2接著查表找出對映的參數 dt和 ka 3再查表得到對映的訊號頻寬以決定是否需要串接前級濾波器

61

模組程式範例IIR1_FILTERasm

local u R0 IP 輸入點濾波器輸入 local lp R1 OP 輸出點低通濾波器輸出 local hp R2 OP 輸出點高通濾波器輸出 local dt R3 1 參數抽樣週期 local ka R4 4096 參數增益 ka10=4096 local prd R5 內部變數抽樣週期用 data 6 模組變數區長度 initial 開機啟動程序 WR lp0 WR hp0 WR prd1 RET lp=hp=0prd=1 timer 即時控制程序 SUB prd1 JNZ b9 if (--prdgt0) return RD dt WR prd prd=dt RD (u) SUB lp WR hp hp=u-lp MUL ka SFR 12 ADD lp WR lp lp+=(hpka4096) b9 RET

資料蒐集模組

資料蒐集模組是一個非常特殊的模組專門配合 eTTY 程式中的示波器使用

模組程式範例DAS4asm

local cmd R0 0 紀錄命令0=停止1=前置記錄2=正觸發4=負觸發6=觸發記錄 local dt R1 1 抽樣週期每 dT抽樣一次 local tab R2 TP DAS表格啟始位址 local cnt R3 0 目前記錄點(0~255) local ch1 R4 0 定義頻道1的變數位址 local ch2 R5 0 定義頻道2的變數位址 local ch3 R6 0 定義頻道3的變數位址 local ch4 R7 0 定義頻道4的變數位址 local trg R8 0 定義觸發頻道的變數位址 local th R9 0 觸發準位 local tail R10 0 觸發後的抽樣個數 local buf R11 1 抽樣計數(1~dt) local pnt R12 表格位址計算pnt=tab+cnt4 local len R13 表格長度計算(0~256) data 14 定義模組變數區的長度 table tab 1024 定義表格的長度 initial 啟動程序 WR cmd0 RET cmd=0 timer 控制程序

62

ADD cmd0 JZ t9 if (cmd==0) return SUB buf1 JNZ t9 if (--buf)gt0) return RD dt WR buf dt=buf RD cnt ADD 1 AND 0xff WR cnt cnt=(cnt+1)amp0xff SFL 2 ADD tab WR pnt pnt=tab+cnt4 RD (ch1) WR (pnt) ADD pnt1 pnt++=ch1 RD (ch2) WR (pnt) ADD pnt1 pnt++=ch2 RD (ch3) WR (pnt) ADD pnt1 pnt++=ch3 RD (ch4) WR (pnt) pnt =ch4 RD cmd SUB 1 JZ t9 SUB 1 JZ t2 SUB 1 JZ t3 SUB 1 JZ t4 SUB 1 JZ t5 SUB 1 JZ t6 JR t7 t2 RD (trg) SUB th JGE t9 ADD cmd1 JR t9 wait trgltth t3 RD (trg) SUB th JLE t9 JR t6 wait trggtth t4 RD (trg) SUB th JLE t9 ADD cmd1 JR t9 wait trggtth t5 RD (trg) SUB th JGE t9 JR t6 wait trgltth t6 WR len0 WR cmd7 len=0cmd=7 t7 ADD len1 SUB tail JLT t9 WR cmd0 if ((++len)gt=0x80) cmd=0 t9 RET

與 DC 馬達控制相關的程式模組有以下 4個程式模組說明如下

(1)加減速控制模組 ACC_controlasm (2)光電盤輸入模組 POS_inputasm (3)PWM輸出模組 PWM_outputasm (4)PD控制模組 PD_controlasm

71加減速控制模組 此程式模組主要功能在於執行位置控制的加減速命令修正其數學模式採用 Lynn

濾波器的架構參見下圖

cmd

2

+

old Z -1

-

Z -1

Z -1

Z-1

Z-1x0 x1 x8 x9 x16

+ -

++

2

Z-1

Z-1 y1 y2

+

-

y0

+ +

sumZ-1

+164

12

out

dif

+

63

加減速控制模組方塊圖

其中

1Lynn 濾波器的階數固定成八階也就是 m=8其公式為 H(z) = (1-2Z-m+Z-2m)(1-2Z-1+Z-2)m2

2因為m=8所以m2=64因此最後計算低通濾波的部份時要先做除 64的運算 3因為低通濾波(lp)和 y0之間有 64倍的差異代表 y0y1y2的變化範圍比濾波器輸

入值要擴大許多例如輸入值在+-1000變化時y0y1y2很可能會在+-64000之間變化這範圍已經超出整數處理的範圍很可能會造成錯誤的計算結果

4所以在實驗時輸入值的變化範圍必須控制在+-500之間以保證計算的正確性 5對於 Lynn 濾波器當 m=8時其濾波器的頻寬固定為 1 kHzmdt也就是 dt=1時頻寬為 125 Hz dt=2時頻寬為 625Hz依此類推 6對於 Lynn 濾波器其濾波器的延遲固定為 m個抽樣週期因此設計 hp = x8 - lp 即可得到高通濾波器的對應結果 7其中乘 2和除 64的運算以移位運算取代所以整個程式中並無任何乘法運算 8Lynn 濾波器本身並不是穩定濾波器所以在程式啟動時必須確實的將所有狀態

(x0~x16)歸零否則會產生不穩定的狀態輸出

因為 Lynn濾波器中所有參數固定所以除了抽樣週期 dt 之外並無任何可調參數

抽樣週期 dt 可以控制頻寬dt 越大則濾波器頻寬越低

將步階命令值的輸出送入 Lynn 濾波器中經由低通濾波器的效應可以減緩命

令的變化程度達到加減速控制的目的以下為使用 Lynn 濾波器型式實現加減速控

制的組合語言程式列印 如欲更進一步瞭解 Lynn 濾波器與 FIR 數位濾波器之間的關係可以參考通訊實驗

四數位濾波器設計(FIR)中之說明

ACC_controlasm程式列印 local cmd R0 IP 輸入點位置命令

local out R1 OP 輸出點加減速處理後的位置命令

local dif R2 OP 輸出點位置微分命令

local axis R3 0 馬達編號0=X1=Y2=Z3=C

local old R4 內部變數微分計算用

local sumL R5 內部變數積分計算用

local sumH R6 內部變數積分計算用

local y0 R7 內部變數y(0~2)

local y1 R8 local y2 R9

local x0 R10 內部變數x(0~16)

local x1 R11 local x2 R12 local x3 R13 local x4 R14

local x5 R15 local x6 R16 local x7 R17 local x8 R18

local x9 R19 local x10 R20 local x11 R21 local x12 R22

local x13 R23 local x14 R24 local x15 R25 local x16 R26

64

data 27 模組變數區長度

initial 開機啟動程序

WR dif0 RD (cmd) WR out WR old dif=0 out=old=cmd

sumHL=cmd64

SFL 6 WR sumL RD out SFR 10 SGN 5 WR sumH

RPT 17 WR x00 RPT 3 WR y00 RET x[0~16]=0y[0~2]=0

timer 即時控制程序

RD (cmd) SUBX old WR x0 x0=cmd-old old=cmd

SUB x81 ADD x16 ADD y11 SUB y2 WR y0 y0=x0-2x8+x16+2y1-y2

SGN ADD sumL WR sumL RDH ADC sumH WR sumH sumHL+=y0

WRH RD sumL SFR 6 WR out out=sumHL64

RD y0 SGN SFR WR dif dif=y032mm

RD x0 RPT 16 RDX x1 x[i]=x[i-1] i=1~16

RD y0 RDX y1 WR y2 y[i]=y[i-1] i=1~2

b9 RET

72光電盤輸入模組

DC馬達的位置由光電盤量測之預設儲存於 0xac與 0xbe二個輸入埠位址中其中位址 0xac記錄 X軸馬達的位置位址 0xbe記錄 Y軸馬達的位置由於本實驗的DC馬達接在 Y軸的位置上因此程式中直接選用 Y軸的輸入 光電盤位置輸入的程式列印如下其中速度由位置的差分而得至於馬達的位置

則使用內部 2個 word加以記錄精度為 32位元 POS_inputasm程式列印 local spd R0 OP 輸出點速度量測值

local ang R1 OP 輸出點角度量測值

local angH R2 內部變數角度的 32 位元部分

local mode R3 0x308 模式選擇15MHzAB 相正反向輸入

local pht R4 0xac 輸入阜地址光電盤輸入(0xac)

local phtc R5 0xbe 輸入阜地址光電盤模式(0xbe)

local old R6 內部變數速度更新用

data 7 模組變數區長度

initial 開機啟動程序

RD mode WR (phtc) phtc=mode

RD (pht) WR old WR spd0 RET old=phtspd=0

timer 即時控制程序

RD (pht) SUBX old SGN 11 WR spd spd=(pht-old)old=pht

65

ADD ang WR ang angHL+=spd

RDH ADC angH WR angH

RET

73 PWM輸出控制模組 模組方塊

cmd PWM輸出

程式說明 1在開機時將切換保護時間寫到輸出阜 0xbc上其中切換保護值為 0~6360=5us 2在每次 timer interrupt時將 cmd訊號處理後寫到輸出阜 0xb8上

PWM_outputasm程式列印 local cmd R0 IP gnd 輸入點v相命令

local gain R1 4096 參數輸出增益1=4096

local bias R2 2048 參數輸出偏壓0=2048

local limit R3 4095 參數輸出極限1=4095

local zone R4 0x88f0 參數頻率=12KHz切換保護=5us

local pwm R5 0xb8 輸出阜地址PWM0 輸出(0xb8)

local mode R6 0xbc 輸出阜地址PWM 模式(0xbc)

local p0md R7 0xf8 輸出阜地址port0 模式(0xf8)

local gnd R8 0 輸入接地點

data 9 模組變數區長度

initial 開機啟動程序

RD bias WR (pwm) pwm=bias

RD 0xffff WR (p0md) set port0 mode

RD zone WR (mode) RET mode=zone

stop 關機保護程序

RD bias WR (pwm) RET pwm=bias

timer 即時控制程序

RD (mode) xor 1 and 1 WR (mode) trigger watch-dog

RD (cmd) MUL gain SFR 12 ADD bias ACC=(cmdgain4096)+bias

MAX 0 MIN limit WR (pwm) pwm=limit(ACC)

RET

66

74 PD 控制模組

PD控制的模組方塊參見圖二十一所示其中比例控制的部份直接由增益 kp加以調整微分控制的部份則由誤差的差分經增益 kd的調整而得

Σ+

-

cmd

fdk

err out

Σ

pk

dk

Σ

+

+

+

-

old1minusZ

PD控制器的方塊圖

PD_controlasm程式列印 local cmd R0 IP gnd 輸入點位置命令(可忽略)

local fdk R1 IP gnd 輸入點位置回授(可忽略)

local out R2 OP 輸出點用以控制速度迴路

local kp R3 256 參數增益 kp10=256

local kd R4 0 參數增益 kd10=256

local err R5 0 內部變數

local old R6 0 內部變數

local gnd R7 0 無輸入時的短路點

data 8 模組變數區長度

initial 開機啟動程序

WR out0 WR old0 RET out=old=0

timer 即時控制程序

RD (cmd) SUB (fdk) PRTF WR err

MUL kp SFR 8 P=(cmd-fdk)kp256

RDS err SUBX old MUL kd SFR 8 D=(err-old)kd256

ADDS

WR out out=P+D

RET

程式中預設增益值的 10以整數值 256為基底因此使用 SFR 8的指令加以調

整另外在在計算微分項的程式部份用到 SUBX old的指令其詳細的暫存器動作如

下 參考 piDSP的指令說明SUBX指令將總共用到 3個時序參考錯誤 找不到參照

67

來源在時序 1時將原先 AX的資料拷貝一份到 HX中時序 2時正式執行減

法的動作所以 AX暫存器中的內容會變成 err-old時序 3時DSP會將存放在 HX暫存器中的內容拷貝一份到 old的記憶體中也就是經由 SUBX此一精簡指令將

同時完成計算差分所需要的相減與資料疊代的動作有效的利用 piDSP控制器 DSP核心的精簡指令將可以大幅提昇系統的計算速度

HX AXoldSUBXerr err

old

err

errerr olderr minus

1_err

errerr olderr minus err

1_err

1

2

3

SUBX的指令時序與暫存器變化

68

8附錄快速安裝說明

光纖網路通訊 FPGA 發展系統 (適用於 WIN-XP200098 系統)

快速安裝說明

26Pin 負載輸出入埠

雙電源︵5

12

伏︶輸入埠

單電源︵5

伏︶輸入埠

USB

光纖線輸

號 光纖線輸出埠

入 傳 埠

首先將光碟片 RFFPGA 目錄檔案拷貝在您工作硬碟裡面

第一次安裝時先將 USB 傳輸線接上電腦主機將電源供應器接上 FPGA 模組此時電

腦會出現安裝 USB-Serial 驅動程式選擇從清單安裝此驅動程式放置在光碟片

RFFPGA-USBdrive 選擇您目前安裝系統

可選擇 WIN-98WIN-MEWIN-2000WIN-XP 系統配合您現在工作電腦作業系統

69

注意一般電腦 USB 埠很多插口當您安裝驅動程式時是配合您當時插入之埠

下次如您插入不同接口埠時電腦會再次要求安裝驅動程式這是正常現象請再次安

裝驅動程式否則無法使用

FPLC 操作

首先進入 RFFPGA裡子目錄 testASM直接點選 fPLCexe 出現下面操作畫面(也可直接將

此檔案放置桌面直接點選)

(或者選擇 File 再執行 Setuphellip 選擇您要執行 CAI 檔)

70

進入下面操作畫面 首先使用滑鼠在 FPGA下載按鈕單擊動作使 FPGA變成 DSP晶片 實驗一至實驗五皆為使用 DSP組合語言設計程式其原始程式分別為 testASM1至testASM5可使用 texPad 開啟與編輯程式內容 實驗三與實驗五多有 IO控制動作 當選擇實驗三時出現下面畫面

71

eM_USB 模組

數字型 LED

0 1 2 34 5 6 78 9 A BC D E F

燈號型 LED

44 鍵盤

ADC0 ADC1 DAC0 DAC1

LED 選擇KEY 選擇

模 式 1

0123

注意操作畫面 3與 4 說明開關與按鍵選擇位置後選擇程式下載再按程式啟動如您

按下 0-3按鍵時燈號型 LED會有不同方向閃爍顯示程式停止時結束所有 IO控制動作再按回首頁選擇其他實驗 實驗四與實驗五

模式3

0 1 2 34 5 6 78 9 A BC D E F

按照上面開關選擇直接操作如果以上實驗皆能按照正常操作表示您光纖網路通訊

FPGA發展模組以能正常使用 注意 開機與關機動作順序如下

開機電腦啟動 --- eM_USB 模組電源接上 --- USB 接上電腦 ---

啟動 FPLC 軟體 --- 下載 FPGA 程式

關機關閉 FPLC 軟體 --- eM_USB 模組電源拔掉 --- 拔掉電腦 USB 接頭 ---關掉

電腦

如果以上順序有亂可能造成 USB 找不到驅動造成無法下載經過幾次測試還是

無法下載建議重新啟動電腦主機按照正確步驟操作

72

FPGA 下載操作

進入 FPLC 操作系統按照下列步驟選擇節點模組與下載 bit FPGA 檔案

在 VHDLDEMO 子目錄下您可以選擇您目前 FPGA 種類型號在此型號下我們已將 VHDL

與數位邏輯設計課本範例全部放於此處

73

光纖網路連線 FPGA 下載操作

首先利用光纖線將 eM_USB0 模組光纖輸出埠接至 eM_USB1 模組光纖輸入埠以此

類推最後再將最後 eM_USBN 模組光纖輸出埠接至 eM_USB0 模組光纖輸入埠配置

如附圖方式

個人電腦(Windows) eM_USB模組

0USB

eM_USB模組1

光纖網路

eM_USB模組2

eM_USB模組N

配置完成後進入 FPLC 系統首先必須先將 Node00 下載在 testASM 子目錄裡

piDSPv0bit 檔讓 eM_USB0 模組 FPGA 具備 DSP 功能才能執行光纖網路通訊

操作如下

此時您就可以選擇分別下載至各模組 FPGA 檔 bit

74

安裝 FPLC 注意事項

當您進入 FPLC 時

按 FILE 選擇 programhellip 選擇檔案為 exp_dcmplc 出現下面畫面

正常顯示畫面為

75

DOS 環境操作

在 PC 端的操作是在 Windows 環境中的 DOS 視窗中執行指令範例如下

eFPGA progNETbit 下載 FPGA電路至網路節點0(即 USB節點)中 eFPGA testLEDbit 1 下載 FPGA電路至網路節點1中

對於單一節點的控制程序如下

1將 eM_USB模組連結個人電腦的 USB端 2eM_USB模組開機 3執行下載指令即可 eFPGA xxxxbit 4若要更改 FPGA電路只要重新執行下載指令即可

對於多個網路節點的控制程序如下

1第一組 eM_USB模組連結個人電腦的 USB端再以光纖網路依序其他各節點 2連接 USB界面者為模組0從光纖發射端連接出去的模組為1依此類推 3將所有 eM_USB模組開機 4執行下載指令如下 eFPGA progNETbit 模組0必須先下載指定的 FPGA電路 eFPGA xxxxbit 1 再依序下載其他網路模組的 FPGA電路 eFPGA yyyybit 2 eFPGA zzzzbit 最後再重新下載模組0的 FPGA電路 5換句話說模組0必須先執行 progNETbit讓光纖網路接受 FPGA控制後才能透過光纖網路下載至其他節點等全部網路節點下載完畢後再將模組0的 FPGA重新下載讓模組0也可自由執行任意的 FPGA電路

6若要更改某一個網路節點中的 FPGA電路只要重新執行下述指令 eFPGA progNETbit 模組0必須先下載指定的 FPGA電路 eFPGA yyyybit 2 下載指定網路模組的 FPGA電路 eFPGA zzzz bit 最後再重新下載模組0的 FPGA電路 換句話說除非模組0中的 FPGA已經包括光纖網路管理電路否則一定要先在

模組0中下載網路管理電路後才能下載指定網路節點的 FPGA電路

76

光纖網路通訊 FPGA 發展系統

系統配置

光纖網路通訊 FPGA 發展系統的系統配置圖如下

個人電腦(Windows) eM_USB模組

0USB

eM_USB模組1

光纖網路

eM_USB模組2

eM_USB模組N

其中

1基本模組為 eM_USB模組可用 USB界面和個人電腦連線並提供 USB對光纖網路的轉換功能使得個人電腦可以獨立控制光纖網路中的每個網路節點

2eM_USB模組也可以作為光纖網路中的網路節點透過光纖網路而接受個人電腦的

監控 3就個人電腦而言不論是 USB界面直接連結或是以光纖網路間接連結的 eM_USB模組都是可以直接監控的網路節點最多可以同時控制一個 USB節點和 30個網路節點

4對於每一個網路節點個人電腦都可執行 eM_USB模組中 FPGA的電路下載工作並在適當的 FPGA電路配合下可執行 eM_USB模組中 FPGA內部電路的讀寫控制 5透過適當的 FPGA電路設計各網路節點都可透過光纖網路和其他任何網路節點

作同步通訊執行 FPGA內部記憶體的資料交換資料交換頻率可達 1KHz以上

77

網路模組配置

每個網路模組的標準配置圖如下

eM_USB模組光纖網路

USB eM_FPGA卡

eM_DEMO模組

eM_EXP實驗模組

DC電源

其中

1網路模組以 eM_USB模組為主提供基本的 USB界面和光纖網路連線 2eM_USB模組中的 FPGACPLD採用插卡型式可選擇不同的 eM_FPGA卡包括

eM_2V1K卡可選用 Virtex系列的 XC2V250和 XC2V1000 eM_3S1K卡可選用 Spartan3系列的 XC3S400XC3S1000和 XC3S1500 eM_3S50卡可選用 Spartan3系列的 XC3S50XC3S200和 XC3S400 eM_95XL卡可選用 9500XL系列的 XC95144XL和 XC95288XL 3eM_USB模組中的對外連線有兩種一種是 26P接頭用以連接既有的各種實驗模

組另一種是兩組 50P接頭將 FPGA中各接腳引出用以連接專題實驗 4eM_DEMO模組就是插上 50P接頭的教學模組其中包括 LED 數字顯示和 44鍵盤也具備兩組的 ADC和兩組的 DAC接頭提供類比訊號的測試工具

常用的實驗組合包括

1精簡組合包括(eM_USB+eM_FPGA)提供基本的網路節點適用於專題實驗 2標準組合包括(eM_USB+eM_FPGA+eM_DEMO)提供基礎 FPGA設計的教學實驗

3實驗組合包括(eM_USB+eM_FPGA+eM_DEMO+eM_EXP)提供進階的 FPGA實驗可依需求選用不同的實驗模組

78

eM_USB 模組

eM_USB 模組的電路配置圖如下

TxRx

DCPower

USB

JP2

JP3

光纖界面

外加電源

PC連線

JP1

eM_FPGA模組

FT232 CPLD FlashROM

SRAM

10cm

6cm

JP4

其中

1對外的連線接頭包括 DC電源 可選擇單電源(5V)或是多電源(5V+12V-12V)兩種 USB界面 直接連接個人電腦 光纖界面連接光纖網路 2實驗界面包括 JP1負責內部 CPLD的電路下載 JP2JP3兩組 50P的擴張用接頭 JP4 標準 26P接頭用以連接各種實驗模組 3內部的電路配置包括 A以 SO-DIMM接頭連接各種 eM_FPGA卡 B內附 EEPROMFlashROM和 SRAM提供 FPGA作應用測試 C以一顆 FT232BM作為 USB界面解碼而以一顆 CPLD作為光纖網路解碼 D提供各種 eM_FPGA卡的電路下載功能 4內附五顆 LED由上而下依序為 usbLED指示 USB界面的讀寫狀態 tstLED可由 FPGA電路自行定義 stsLED可由 FPGA電路自行定義 RxLED 可由 FPGA電路自行定義 TxLED 可由 FPGA電路自行定義

79

外部接腳定義

外部接頭的接點順序圖示如下

上視圖

JP11 9 JP4

126225

JP31

50249

JP21

50249

而各接頭的接點定義如下

JP1 JP4 JP2 JP3 1+33V 1+12V 2+12V 1 GND 2 GND 1 GND 2 GND 2GND 3 ADC 4 DAC 3POWER 4ALARM 3 +5V 4 +5V 3nc 5 yPB2 6 yPB3 5RxNET 6TxNET 5+12V 6+12V 4TCK 7 yPB1 6 yPB4 7RxUSB 6TxUSB 7-12V 6-12V 5nc 9 yPB0 10yPB5 9RxCAN 10TxCAN 9 ADC 10 DAC 6TDO 11yPB6 12yPB7 11P0D0 12P0D1 11P1D0 12P1D1 7TDI 13yGND 14yPC3 13P0D2 14P0D3 13P1D2 14P1D3 8nc 15yPC2 16yPC1 15P0D4 16P0D5 15P1D4 16P1D5 9TMS 17yPC0 18yPA0 17P0D6 18P0D7 17P1D6 18P1D7 19yPA1 20yPA2 19P0D8 20P0D9 19P1D8 20P1D9 21yPA3 22GND 21P0D10 22P0D11 21P1D10 22P1D11 23GND 24+5V 23P0D12 24P0D13 23P1D12 24P1D13 25+5V 26nc 25P0D14 26P0D15 25P1D14 26P1D15 27P2D0 28P2D1 27PxA0 28PxA1 29P2D2 30P2D3 29PxA2 30PxA3 31P2D4 32P2D5 31PxA4 32PxA5 33P2D6 34P2D7 33PxA6 34PxA7 35P2D8 36P2D9 35PxB0 36PxB1 37P2D10 38P2D11 37PxB2 38PxB3 39P2D12 40P2D13 39PxB4 40PxB5 41P2D14 42P2D15 41PxB6 42PxB7 43ADC0 44ADC1 43PxC0 44PxC1 45ADC2 46ADC3 45PxC2 46PxC3 47ADC4 48ADC5 47PxC4 48PxC5 49DAC0 50DAC1 49PxC6 50PxC7

80

eM_FPGA 模組

在各種 eM_FPGA 模組中FPGA 對外電路的標準配置圖如下

24576MHz

FlashROM

26PSRAM

EEPROM

mD[8]

yPA[4]

FPGACPLD

mA[19]mRDmWRmCSeeCKeeCSeeDIeeDO

光纖界面 RxNETTxNET

USB 界面 RxUSBTxUSBCLK24MPOWERALARM

LED

tstLEDstsLEDRxLEDTxLED

yPB[8]yPC[4]

ADCDAC

ADC[8]

實驗模組

ADC[2]

DAC[2]

xPA[4]

xPB[8]

xPC[4]

基礎實驗

其中

1FPGACPLD可以選擇下述幾種 XC2V250XC2V1000 採用 eM_2V1K模組其中 FPGA為 FG456包裝 XC3S400XC3S1000XC3S1500採用 eM_3S1K模組其中 FPGA為 FG456包裝 XC3S400XC3S1000XC3S1500採用 eM_3S1K模組其中 FPGA為 FG456包裝 XC3S50XC3S200XC3S400 採用 eM_3S50模組其中 FPGA為 TQ144包裝 XC95144XLXC95288XL 採用 eM_95XL模組其中 CPLD為 TQ144包裝 2採用 FG456包裝者可以控制所有的 IO界面 3採用 TQ144包裝者只是不能控制 RAM和 FlashROM而可以控制其他所有的界面 4所有 FPGA模組都可自由選擇由 USB界面或是由光纖界面下載電路但是 CPLD模組只能固定由 USB界面下載電路

5所有 FPGACPLD模組都可透過 26P接頭連接既有的各種實驗模組

81

FPGA 接腳對照表

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

mD0 XD6 mD0 A17 C13 -- -- mD1 XD7 mD1 B17 D12 -- -- mD2 XD8 mD2 C17 D11 -- -- mD3 XD9 mD3 D17 C11 -- -- mD4 XD10 mD4 E17 D10 -- -- mD5 XD11 mD5 E16 C10 -- -- mD6 XD12 mD6 E14 D9 -- -- mD7 XD13 mD7 E13 D7 -- -- mA0 XD14 mA0 D13 C7 -- -- mA1 XD15 mA1 C13 D6 -- -- mA2 XA0 mA2 V5 C3 -- -- mA3 XA1 mA3 U5 C4 -- -- mA4 XA2 mA4 Y2 D3 -- -- mA5 XA3 mA5 Y1 D4 -- -- mA6 XA4 mA6 V4 E3 -- -- mA7 XA5 mA7 V3 E4 -- -- mA8 XA6 mA8 W2 F3 -- -- mA9 XA7 mA9 W1 F4 -- -- mA10 XA8 mA10 T2 G6 -- -- mA11 XA9 mA11 T1 K3 -- -- mA12 XA10 mA12 R4 K10 -- -- mA13 XA11 mA13 R3 L3 -- -- mA14 XA12 mA14 R2 L4 -- -- mRD XRD mRD R1 D5 -- -- mWR XWR mWR P6 C6 -- --

POWER P0A0 POWER B4 B20 P1 P5 ALARM P0A1 ALARM A4 A19 P2 P6 RxNET P0A2 RxNET C4 B19 P4 P7 TxNET P0A3 TxNET C5 A18 P5 P9 RxUSB P0B0 RxUSB B5 A15 P6 P10 TxUSB P0B1 TxUSB A5 B15 P7 P11 RxCAN P0B2 RxCAN D6 A14 P8 P12 RxCAN P0B3 TxCAN C6 B14 P10 P13

CLK24M CLK24M CLK24M E12 B12 P124 P38

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

PWM0H P3A0 P0D0 E6 A8 P21 P23 PWM0L P3A1 P0D1 E5 B8 P23 P24 PWM1H P3A2 P0D2 C2 B6 P24 P25 PWM1L P3A3 P0D3 C1 A5 P25 P26 PWM2H P3A4 P0D4 D2 B5 P26 P27

82

PWM2L P3A5 P0D5 D1 A4 P27 P28 PWMenb P3A6 P0D6 E4 B4 P28 P30 PHT1Z P3A7 P0D7 E3 A3 P30 P31 PHT1A P3B0 P0D8 G2 C1 P31 P32 PHT1B P3B1 P0D9 G1 C2 P32 P33 PHT0A P3B2 P0D10 H5 D1 P33 P34 PHT0B P3B3 P0D11 J6 D2 P35 P35 AMP0 P3B4 P0D12 H4 E1 P36 P39 AMP1 P3B5 P0D13 H3 E2 P40 P40 AMP2 P3B6 P0D14 H2 F2 P41 P41 AMP3 P3B7 P0D15 H1 G1 P44 P43 eeSK P0C3 P1D0 C10 B9 P20 P22 eeCS P0C2 P1D1 D10 A9 P18 P21 eeDI P0C1 P1D2 F10 B10 P17 P20 eeDO P0C0 P1D3 E10 B11 P15 P19 ssCK P0B7 P1D4 E8 A11 P14 P17 ssCS P0B6 P1D5 E7 A12 P13 P16 ssDI P0B5 P1D6 A6 B13 P12 P15 ssDO P0B4 P1D7 B6 A13 P11 P14

ppCLK P3C0 P1D8 K4 G2 P46 P44 ppDIN P3C1 P1D9 K3 K1 P47 P45 TxD P3C2 P1D10 K2 K2 P50 P46 RxD P3C3 P1D11 K1 L1 P51 P48

tstLED P3C4 P1D12 L5 L2 P52 P49 stsLED P3C5 P1D13 L4 M1 P53 P50 RxLED P3C6 P1D14 L3 M2 P55 P51 TxLED P3C7 P1D15 L2 N1 P56 P52

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

xPA0 P2A0 P2D0 AA3 N2 P59 P53 xPA1 P2A1 P2D1 Y4 T1 P60 P54 xPA2 P2A2 P2D2 AA4 T2 P63 P56 xPA3 P2A3 P2D3 AB4 U2 P68 P57 xPC0 P2A4 P2D4 W5 V1 P69 P58 xPC1 P2A5 P2D5 Y5 V2 P70 P59 xPC2 P2A6 P2D6 AA5 W1 P73 P60 xPC3 P2A7 P2D7 AB5 W2 P74 P61

-- P2B0 P2D8 V6 Y1 P76 P64 -- P2B1 P2D9 V7 Y2 P77 P66 -- P2B2 P2D10 W6 AA3 P78 P68

mCS P2B3 P2D11 Y6 AB4 P79 P69 mA15 P2B4 P2D12 V9 AA4 P80 P70 mA16 P2B5 P2D13 V10 AB5 P82 P71 mA17 P2B6 P2D14 W10 AA5 P83 P74 mA18 P2B7 P2D15 Y10 AA6 P84 P75 CS0 P2C0 ADC0 AA10 AB8 P85 P76

83

SDIN0 P2C1 ADC1 AB10 AA8 P86 P77 CS1 P2C2 ADC2 U10 AB9 P87 P78

SDIN1 P2C3 ADC3 U11 AA9 P89 P79 SCLK P2C4 ADC4 V11 AB10 P90 P80 CS2 P2C5 ADC5 W11 AA10 P92 P81

SDOUT P2C6 ADC6 Y11 AB11 P93 P82 LDAC P2C7 ADC7 AA11 AA11 P95 P83

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

xPB0 P1A0 PxA0 M1 M3 P135 P85 xPB1 P1A1 PxA1 M2 M4 P132 P86 yPB2 P1A2 PxA2 M3 N3 P131 P87 yPB3 P1A3 PxA3 M4 N4 P130 P88 yPB1 P1A4 PxA4 M5 T4 P129 P91 yPB4 P1A5 PxA5 M6 T5 P128 P92 yPB0 P1A6 PxA6 N1 U3 P127 P93 yPB5 P1A7 PxA7 N2 U4 P125 P94 yPB6 P1B0 PxB0 U13 V3 P119 P95 yPB7 P1B1 PxB1 V13 V4 P118 P96 xPB2 P1B2 PxB2 W13 W3 P116 P97 xPB3 P1B3 PxB3 Y13 W4 P113 P98 xPB4 P1B4 PxB4 AA13 Y3 P112 P100 xPB5 P1B5 PxB5 AB13 Y4 P96 P101 yPC3 P1B6 PxB6 U12 Y5 P97 P102 yPC2 P1B7 PxB7 V12 W5 P98 P103 yPC1 P1C7 PxC0 AB17 W11 P108 P113 yPC0 P1C6 PxC1 AA17 Y11 P107 P112 yPA0 P1C5 PxC2 Y17 W10 P105 P111 yPA1 P1C4 PxC3 W17 Y10 P104 P110 yPA2 P1C3 PxC4 AB18 W9 P103 P107 yPA3 P1C2 PxC5 AA18 W8 P102 P106 xPB6 P1C1 PxC6 Y18 W6 P100 P105 xPB7 P1C0 PxC7 W18 Y6 P99 P104

84

eM_DEMO 模組

eM_DEMO 模組的電路配置圖如下

eM_USB 模組

數字型 LED

0 1 2 34 5 6 78 9 A BC D E F

燈號型 LED

44 鍵盤

ADC0 ADC1 DAC0 DAC1

LED 選擇KEY 選擇

其中

1eM_DEMO模組的基本功能包括 A將 xPAxPBxPC等 16個 IO訊號引出控制 LED和鍵盤電路 B將 ADDA訊號引出並放大成+-10V的工作範圍 2LED和鍵盤可以選擇三種模式由 LED和 KEY 兩組開關作選擇圖示如下

模式1

0123

模式2 模式3

0 1 2 34 5 6 78 9 A BC D E F

0123

3模式14鍵輸入並搭配 16點的 LED燈號顯示其中 16點 LED分別對映到 xPA[0~3]xPB[0~7]和 xPC[0~3] 4組按鍵分別對映到 xPC[0~3] 4模式24鍵輸入並搭配四個 7段式數字顯示其中 數字顯示由 xPA[0~3]作數字掃瞄而由 xPB[0~7]作 7段式 LED控制 4組按鍵 分別對映到 xPC[0~3] 5模式316鍵輸入並搭配四個 7段式數字顯示其中 數字顯示由 xPA[0~3]作數字掃瞄而由 xPB[0~7]作 7段式 LED控制 16組按鍵由 xPA[0~3]作鍵盤掃瞄而由 xPC[0~3]作鍵盤讀取 6根據VHDL與數位邏輯設計的章節其中 第 1章至 10章的實驗採用模式1而 第 11章實驗採用模式2而 第 12章之後的實驗都採用模式3

85

FPGA UCF 定義

eM_3S1K 模組

NET CLK LOC = B12

NET XAlt0gt LOC = N2

NET XAlt1gt LOC = T1

NET XAlt2gt LOC = T2

NET XAlt3gt LOC = U2

NET XBlt0gt LOC = M3

NET XBlt1gt LOC = M4

NET XBlt2gt LOC = W3

NET XBlt3gt LOC = W4

NET XBlt4gt LOC = Y3

NET XBlt5gt LOC = Y4

NET XBlt6gt LOC = W6

NET XBlt7gt LOC = Y6

NET XClt0gt LOC = V1

NET XClt1gt LOC = V2

NET XClt2gt LOC = W1

NET XClt3gt LOC = W2

NET YAlt0gt LOC = W10

JP4 接頭

NET YAlt1gt LOC = Y10

NET YAlt2gt LOC = W9

NET YAlt3gt LOC = W8

NET YBlt0gt LOC = U3

NET YBlt1gt LOC = T4

NET YBlt2gt LOC = N3

NET YBlt3gt LOC = N4

NET YBlt4gt LOC = T5

NET YBlt5gt LOC = U4

NET YBlt6gt LOC = V3

NET YBlt7gt LOC = V4

NET YClt0gt LOC = Y11

NET YClt1gt LOC = W11

NET YClt2gt LOC = W5

NET YClt3gt LOC = Y5

在光碟片中 RFFPGAVHDLDEMOBIT3S1K 裡有 VHDL 與數位邏輯設計書本範例原始檔與合成檔

86

eM_3S50 模組

NET CLK LOC = P124

NET XAlt0gt LOC = P59

NET XAlt1gt LOC = P60

NET XAlt2gt LOC = P63

NET XAlt3gt LOC = P68

NET XBlt0gt LOC = P135

NET XBlt1gt LOC = P132

NET XBlt2gt LOC = P116

NET XBlt3gt LOC = P113

NET XBlt4gt LOC = P112

NET XBlt5gt LOC = P96

NET XBlt6gt LOC = P100

NET XBlt7gt LOC = P99

NET XClt0gt LOC = P69

NET XClt1gt LOC = P70

NET XClt2gt LOC = P73

NET XClt3gt LOC = P74

NET YAlt0gt LOC = P105

JP4 接頭

NET YAlt1gt LOC = P104

NET YAlt2gt LOC = P103

NET YAlt3gt LOC = P102

NET YBlt0gt LOC = P127

NET YBlt1gt LOC = P129

NET YBlt2gt LOC = P131

NET YBlt3gt LOC = P130

NET YBlt4gt LOC = P128

NET YBlt5gt LOC = P125

NET YBlt6gt LOC = P119

NET YBlt7gt LOC = P118

NET YClt0gt LOC = P107

NET YClt1gt LOC = P108

NET YClt2gt LOC = P98

NET YClt3gt LOC = P97

在光碟片中 RFFPGAVHDLDEMOBIT3S200 裡有VHDL與數位邏輯設計書本範例原始檔與合成檔

87

eM_95XL 模組

NET CLK LOC = SPIN38

NET XAlt0gt LOC = SPIN53

NET XAlt1gt LOC = SPIN54

NET XAlt2gt LOC = SPIN56

NET XAlt3gt LOC = SPIN57

NET XBlt0gt LOC = SPIN85

NET XBlt1gt LOC = SPIN86

NET XBlt2gt LOC = SPIN97

NET XBlt3gt LOC = SPIN98

NET XBlt4gt LOC = SPIN100

NET XBlt5gt LOC = SPIN101

NET XBlt6gt LOC = SPIN105

NET XBlt7gt LOC = SPIN104

NET XClt0gt LOC = SPIN58

NET XClt1gt LOC = SPIN59

NET XClt2gt LOC = SPIN60

NET XClt3gt LOC = SPIN61

NET YAlt0gt LOC = SPIN111

JP4 接頭

NET YAlt1gt LOC = SPIN110

NET YAlt2gt LOC = SPIN107

NET YAlt3gt LOC = SPIN106

NET YBlt0gt LOC = SPIN93

NET YBlt1gt LOC = SPIN91

NET YBlt2gt LOC = SPIN87

NET YBlt3gt LOC = SPIN88

NET YBlt4gt LOC = SPIN92

NET YBlt5gt LOC = SPIN94

NET YBlt6gt LOC = SPIN95

NET YBlt7gt LOC = SPIN96

NET YClt0gt LOC = SPIN112

NET YClt1gt LOC = SPIN113

NET YClt2gt LOC = SPIN103

NET YClt3gt LOC = SPIN102

在光碟片中 RFFPGAVHDLDEMOSVF95288XL 裡有VHDL與數位邏輯設計書本範例原始檔與合成

檔案

88

eM_FPGA 模組

NET CLK LOC = E12

NET XAlt0gt LOC = AA3

NET XAlt1gt LOC = Y4

NET XAlt2gt LOC = AA4

NET XAlt3gt LOC = AB4

NET XBlt0gt LOC = M1

NET XBlt1gt LOC = M2

NET XBlt2gt LOC = W13

NET XBlt3gt LOC = Y13

NET XBlt4gt LOC = AA13

NET XBlt5gt LOC = AB13

NET XBlt6gt LOC = Y18

NET XBlt7gt LOC = W18

NET XClt0gt LOC = W5

NET XClt1gt LOC = Y5

NET XClt2gt LOC = AA5

NET XClt3gt LOC = AB5

NET YAlt0gt LOC = Y17

JP4 接頭

NET YAlt1gt LOC = W17

NET YAlt2gt LOC = AB18

NET YAlt3gt LOC = AA18

NET YBlt0gt LOC = N1

NET YBlt1gt LOC = M5

NET YBlt2gt LOC = M3

NET YBlt3gt LOC = M4

NET YBlt4gt LOC = M6

NET YBlt5gt LOC = N2

NET YBlt6gt LOC = U13

NET YBlt7gt LOC = V13

NET YClt0gt LOC = AA17

NET YClt1gt LOC = AB17

NET YClt2gt LOC = V12

NET YClt3gt LOC = U12

在光碟片中 RFFPGAVHDLDEMOBIT2V250 裡有VHDL與數位邏輯設計書本範例原始檔與合成檔

89

Page 50: RFFPGA 直流馬達實驗手冊juniortek.com.tw/program/manual/RF-DC-mal.pdf · em_demo模組 em_dcm 直流伺服馬達 dc電源 rffpga 系統的直流馬達實驗規劃 其中包括:

page 2 畫面設計與實驗一 page 2相同畫面 page 3 畫面設計與實驗二 page 4相同畫面

參數設定參考之前各實驗的說明可線上機動性的調整 PD控制器中的 kp和 kd值以調整系統之響應 實測響應圖

訊 號 說 明 訊 號 說 明 ch1 方波產生器產生之位置命令 ch3 馬達角位置 ch2 加減速模組輸出之位置命令 ch4 馬達角速度訊號

50

圖一 直流馬達經加減速控制後之閉迴路控制響應圖

51

65 實驗 5-正弦波的位置控制 實驗說明在本實驗中改變命令的波形由方波改變為正弦波並建立如下的測

試方塊圖與上一實驗相比較僅更改命令的波形產生方塊 方塊圖中的模組功能說明如下 1用 fg2產生測試用的弦波位置命令 2將弦波位置命令送到加減速控制方塊處理後產生新的位置命令再與 io1 讀入的位

置回授訊號送到 PD 控制器方塊中產生電壓控制訊號再透過 io2 模組將訊號送出到伺服介面驅動馬達轉動

對應之 plc檔程式說明(exp_sinplc) echo off 畫面顯示開始

run dsp 0 選擇 DSP1

run stop run reset 既有程式停止

run testDCMmem 下載指定程式

das 1 ampfg2out 0 1024 SIN 波形 Volt 設定 DAS 頻道1

das 2 ampcn1out 0 1024 加速控制 Volt 設定 DAS 頻道2

das 3 ampio1spd 0 1024 馬達速度 Volt 設定 DAS 頻道3

das 4 ampio1ang 0 1024 馬達角度 Volt 設定 DAS 頻道4

plot select 0 設定示波器頁數

plot xunit 100000 0 設定示波器 X軸

plot yunit 1 2000 -300 設定示波器 Y1 軸

plot yunit 2 2000 -100 設定示波器 Y2 軸

plot yunit 3 50 100 設定示波器 Y3 軸

plot yunit 4 2000 300 設定示波器 Y4 軸

plot trigger 1 0 1 10 設定示波器觸發

52

plot scope 9 1 2 3 4 設定示波器顯示

module io2 設定 io2 模組

s cmd ampcn2out

module fg2 設定 fg1 模組

s kAmp 2000 s kFrq 100

module cn1 設定 cn1 模組

s cmd ampfg2out

module cn2 設定 cn2 模組

s cmd ampcn1out s fdk ampio1ang s kp 0x300 s kd 0x4000

module ft1 設定 ft1 模組

s u ampfg2out s dt 2 s ka 320

module io3 設定 io3 模組

s led ampfg2out

module 回復預設模組

run 1khz 設定抽樣頻率為 4KHz

run start DSP 開始執行

das stop pause 1 DAS 啟動 das start DAS 啟動

echo on 回復正常訊息顯示

CAI操控設計畫面規劃如下(EXP_sinCAI) page 1 畫面設計

53

page 2 畫面設計 page 3 畫面設計與實驗二 page 4相同畫面

方塊的參數設定可調整 PD控制器中的 kp和 kd值以調整系統之響應 實測響應圖

訊 號 說 明 訊 號 說 明 ch1 弦波產生器產生之位置命令 ch3 馬達角位置訊號 ch2 加減速模組輸出之位置命令 ch4 馬達角速度訊號

54

直流馬達之閉迴路弦波加減速位置控制響應圖

55

7組合語言說明

本節將針對 DC馬達伺服控制實驗專用的程式模組進行功能與程式碼的說明其

有關於波形產生器與資料擷取模組等說明如下

SIN_waveasm 正弦波產生器 PWM_waveasm 方波產生器 IIR1_filterasm 一階濾波器 DAS4asm 資料蒐集模組

弦波產生器

此模組會產生週期性的正弦波方塊圖如下

outfrq

kBiasbias

ampkAmp

kFrqth

kThf=1TB

θ

A

其中

1正弦波有四個參數振幅(A)頻率(F)相位(θ)和偏移(B)其公式為 out = A sin(2πF t +θ) + B 2對於單純的正弦波產生器所對映的參數包括 kAmp 振幅值 kFrq 頻率值kFrq=655368000Hz其中 Hz的範圍為 0~4000例如 1000Hz =gt frq=8192 100Hz =gt frq=819 10Hz =gt frq=82 1Hz =gt frq=8 kTh 相角值0~255代表 0~360的相位當 th=0 時為正弦波 th=64 時為餘弦波 th=128時為反相波依此類推 kBias偏移值 3對於可調變的正弦波產生器其對映的輸入點為 amp 控制振幅的輸入點可產生調幅(AM)波形 frq 控制頻率的輸入點可產生調頻(FM)波形 th 控制相位的輸入點可產生調相(PM)波形 bias控制偏移的輸入點可產生雙頻混波(相加)波形 4若不使用調變功能時各個輸入點時的預設值為 amp 指向 kAmp 的位址 frq 指向 kFrq 的位址

56

th 指向 kTh 的位址 bias指向 kBias的位址

模組程式範例SIN_WAVEasm

local amp R0 IP kAmp 輸入點sin波的振幅 local frq R1 IP kFrq 輸入點sin波的頻率 local th R2 IP kTh 輸入點sin波的相角 local bias R3 IP kBias 輸入點sin波的中心偏移 local out R4 OP 輸出點sin波輸出 local tab R5 TP 表格指標指向 sin[256]的表格 local ang R6 內部變數相位角65536=360deg local kAmp R7 1000 參數振幅值 local kFrq R8 1000 參數頻率值=655368000Hz local kTh R9 0 參數相角值360deg=256 local kBias R10 0 參數偏移值 data 11 模組變數區長度及初值 initial 啟動程序 WR ang0 WR out0 ang=out=0 RET timer 即時控制程序(8KHz) RD ang ADD (frq) WR ang ang+=frq SFR 8 ADD (th) AND 255 ACC=sin(ang256+th) ADD tab WRH RDM table-look-up MUL (amp) SFR 12 ADD (bias) WR out out=ACCamp4096+bias RET table tab 256 sin[256]表格區10=4096 0 101 201 301 401 501 601 700 00~070deg 799 897 995 1092 1189 1285 1380 1474 08~0F 1567 1660 1751 1842 1931 2019 2106 2191 10~17 2276 2359 2440 2520 2598 2675 2751 2824 18~1F 2896 2967 3035 3102 3166 3229 3290 3349 20~27 3406 3461 3513 3564 3612 3659 3703 3745 28~2F 3784 3822 3857 3889 3920 3948 3973 3996 30~37 4017 4036 4052 4065 4076 4085 4091 4095 38~3F 4096 4095 4091 4085 4076 4065 4052 4036 40~4790deg 4017 3996 3973 3948 3920 3889 3857 3822 48~4F 3784 3745 3703 3659 3612 3564 3513 3461 50~57 3406 3349 3290 3229 3166 3102 3035 2967 58~5F

57

2896 2824 2751 2675 2598 2520 2440 2359 60~67 2276 2191 2106 2019 1931 1842 1751 1660 68~6F 1567 1474 1380 1285 1189 1092 995 897 70~77 799 700 601 501 401 301 201 101 78~7F 0 65435 65335 65235 65135 65035 64935 64836 80~87180deg 64737 64639 64541 64444 64347 64251 64156 64062 88~8F 63969 63876 63785 63694 63605 63517 63430 63345 90~97 63260 63177 63096 63016 62938 62861 62785 62712 98~9F 62640 62569 62501 62434 62370 62307 62246 62187 A0~A7 62130 62075 62023 61972 61924 61877 61833 61791 A8~A8 61752 61714 61679 61647 61616 61588 61563 61540 B0~B7 61519 61500 61484 61471 61460 61451 61445 61441 B8~BF 61440 61441 61445 61451 61460 61471 61484 61500 C0~C7270deg 61519 61540 61563 61588 61616 61647 61679 61714 C8~CF 61752 61791 61833 61877 61924 61972 62023 62075 D0~D7 62130 62187 62246 62307 62370 62434 62501 62569 D8~DF 62640 62712 62785 62861 62938 63016 63096 63177 E0~E7 63260 63345 63430 63517 63605 63694 63785 63876 E8~EF 63969 64062 64156 64251 64347 64444 64541 64639 F0~F7 64737 64836 64935 65035 65135 65235 65335 65435 F8~FF

就程式結構而言說明如下

timer 即時控制程序(8KHz) RD ang ADD (frq) WR ang ang+=frq SFR 8 ADD (th) AND 255 ACC=sin(ang256+th) ADD tab WRH RDM table-look-up MUL (amp) SFR 12 ADD (bias) WR out out=ACCamp4096+bias RET

1基本上我們以查表法計算 sin()其輸入θ的範圍為 0~255對映到 0~360deg其輸出 sin(θ)的範圍為+-4096對映到+-10的範圍

2建立一個內部變數 ang其範圍為 0~65535對映到 0~360的相位角 3每個timer程序都執行 ang+=frq的動作更新目前的相位角接著依照 ang的相位角查表得到 sin(ang256+th)值

4由於表格長度為 256-word所以必須將 ang256才能得到正確的對映關係而 th範圍為 0~255所以不需要像 ang一般的做額外處理

5sin()的範圍為(+1-1)而在表格中以(+4096~-4096)的型式記錄相當於 10=4096所以執行 Asin()時還要用 SFR12指令做4096的動作才能正確的取得輸出值

58

6就頻率輸入 frq而言其計算原則是將θ=ωt轉化成θ=Σ(ωdt)因為抽樣頻率

為 8KHz所以 dt=18000而得到 frq=655368000Hz公式其中 Hz為真正的頻率在 8KHz的抽樣頻率下其範圍為 0~4000

鋸齒波產生器

此模組會產生週期性的鋸齒波方塊圖如下

outfrq

kBiasbias

ampkAmp

kFrqth

kThf=1TB

θ

A

其中

1鋸齒波也有四個參數振幅(A)頻率(F)相位(θ)和偏移(B)和正弦波的定義完全一致唯一的差異是其輸出為鋸齒波而非正弦波

2基本波形是從週期開始時為 0一直遞增到週期結束時到達最高點然後立刻回歸

到 0重新開始 3以程式結構而論鋸齒波程式幾乎就是正弦波的相位計算部分只差沒有正弦波的

查表處理而已

模組程式範例SAW_WAVEasm

local amp R0 IP kAmp 輸入點sin波的振幅 local frq R1 IP kFrq 輸入點sin波的頻率 local th R2 IP kTh 輸入點sin波的相角 local bias R3 IP kBias 輸入點sin波的中心偏移 local out R4 OP 輸出點sin波輸出 local ang R5 內部變數相位角65536=360deg local kAmp R6 1000 參數振幅值 local kFrq R7 1000 參數頻率值=655368000Hz local kTh R8 0 參數相角值360deg=256 local kBias R9 0 參數偏移值 data 11 模組變數區長度及初值 initial 啟動程序 WR ang0 WR out0 ang=out=0 RET timer 即時控制程序(8KHz) RD ang ADD (frq) WR ang ang+=frq SFR 8 ADD (th) AND 255 ACC=(ang256+th)amp0x00ff MUL (amp) SFR 8 ADD (bias) WR out out=ACCamp256+bias

59

RET

脈衝波產生器

outfrq

kBiasbias

ampkAmp

kFrqth

kThf=1TB

θ

A

pwm

kDutyduty

此模組會產生週期性的脈衝波方塊圖如下

其中

1脈衝波有五個參數其中振幅(A)頻率(F)相位(θ)和偏移(B)四個參數和正弦波

定義完全一樣另外再增加一個負載率(D) 2基本波形是從週期開始時為 1隔段時間後換為 0然後持續到週期結束再重新開始其中 1所佔有的比例就是負載率當 D=0時為 0而 D=255時為 100

3和其他參數類似負載率(D)以 duty為其輸入點而以 kDuty為其參數值

模組程式範例PLS_WAVEasm

local amp R0 IP kAmp 輸入點脈衝波的振幅 local frq R1 IP kFrq 輸入點脈衝波的頻率 local th R2 IP kTh 輸入點脈衝波的相角 local bias R3 IP kBias 輸入點脈衝波的中心偏移 local duty R4 IP kDuty 輸入點脈衝波的負載率 local out R5 OP 輸出點脈衝波輸出 local ang R6 內部變數相位角65536=360deg local kAmp R7 1000 參數振幅值 local kFrq R8 1000 參數頻率值=655368000Hz local kTh R9 0 參數相角值360deg=256 local kBias R10 0 參數偏移值 local kDuty R11 128 參數負載率100 =256 data 12 模組變數區長度及初值 initial 啟動程序 WR ang0 WR out0 ang=out=0 RET timer 即時控制程序(8KHz)

60

RD ang ADD (frq) WR ang ang+=frq SFR 8 ADD (th) AND 255 ACC=(ang256+th)amp0x00ff SUB (duty) RD (amp) JLT t1 RD 0 ACC=(amp0) t1 ADD (bias) WR out out=ACC+bias RET

IIR 一階濾波器

此模組執行一階的 IIR濾波器方塊圖如下

kau x

Z-1

+

+

-

+低通濾波器

高通濾波器dx lp

hp

濾波器參數的計算公式如下

1假設濾波器的頻寬為 hz則 ωn=hz628 2若系統頻率為 8KHz則抽樣週期 dT為 dT=dt8000 其中 dt為模組參數 3則濾波器參數為 ka=ωndT4096或是 =hzdt62880004096即 =hzdt32 4當 dt決定後所允許的訊號頻寬為(4000dt)換句話說訊號頻寬會因為 dt增加而下降

為了方便實驗的運用下面列出常用的參數對照表

濾波頻寬

(Hz)

10 20 50 100 200 500 1000 2000

訊號頻寬

(Hz)

400 800 2000 4000 4000 4000 4000 4000

模組參數 dt 10 5 2 1 1 1 1 1

模組參數 ka 320 320 320 320 640 1600 3200 6400

表格的運用方式如下

1首先決定濾波頻寬 2接著查表找出對映的參數 dt和 ka 3再查表得到對映的訊號頻寬以決定是否需要串接前級濾波器

61

模組程式範例IIR1_FILTERasm

local u R0 IP 輸入點濾波器輸入 local lp R1 OP 輸出點低通濾波器輸出 local hp R2 OP 輸出點高通濾波器輸出 local dt R3 1 參數抽樣週期 local ka R4 4096 參數增益 ka10=4096 local prd R5 內部變數抽樣週期用 data 6 模組變數區長度 initial 開機啟動程序 WR lp0 WR hp0 WR prd1 RET lp=hp=0prd=1 timer 即時控制程序 SUB prd1 JNZ b9 if (--prdgt0) return RD dt WR prd prd=dt RD (u) SUB lp WR hp hp=u-lp MUL ka SFR 12 ADD lp WR lp lp+=(hpka4096) b9 RET

資料蒐集模組

資料蒐集模組是一個非常特殊的模組專門配合 eTTY 程式中的示波器使用

模組程式範例DAS4asm

local cmd R0 0 紀錄命令0=停止1=前置記錄2=正觸發4=負觸發6=觸發記錄 local dt R1 1 抽樣週期每 dT抽樣一次 local tab R2 TP DAS表格啟始位址 local cnt R3 0 目前記錄點(0~255) local ch1 R4 0 定義頻道1的變數位址 local ch2 R5 0 定義頻道2的變數位址 local ch3 R6 0 定義頻道3的變數位址 local ch4 R7 0 定義頻道4的變數位址 local trg R8 0 定義觸發頻道的變數位址 local th R9 0 觸發準位 local tail R10 0 觸發後的抽樣個數 local buf R11 1 抽樣計數(1~dt) local pnt R12 表格位址計算pnt=tab+cnt4 local len R13 表格長度計算(0~256) data 14 定義模組變數區的長度 table tab 1024 定義表格的長度 initial 啟動程序 WR cmd0 RET cmd=0 timer 控制程序

62

ADD cmd0 JZ t9 if (cmd==0) return SUB buf1 JNZ t9 if (--buf)gt0) return RD dt WR buf dt=buf RD cnt ADD 1 AND 0xff WR cnt cnt=(cnt+1)amp0xff SFL 2 ADD tab WR pnt pnt=tab+cnt4 RD (ch1) WR (pnt) ADD pnt1 pnt++=ch1 RD (ch2) WR (pnt) ADD pnt1 pnt++=ch2 RD (ch3) WR (pnt) ADD pnt1 pnt++=ch3 RD (ch4) WR (pnt) pnt =ch4 RD cmd SUB 1 JZ t9 SUB 1 JZ t2 SUB 1 JZ t3 SUB 1 JZ t4 SUB 1 JZ t5 SUB 1 JZ t6 JR t7 t2 RD (trg) SUB th JGE t9 ADD cmd1 JR t9 wait trgltth t3 RD (trg) SUB th JLE t9 JR t6 wait trggtth t4 RD (trg) SUB th JLE t9 ADD cmd1 JR t9 wait trggtth t5 RD (trg) SUB th JGE t9 JR t6 wait trgltth t6 WR len0 WR cmd7 len=0cmd=7 t7 ADD len1 SUB tail JLT t9 WR cmd0 if ((++len)gt=0x80) cmd=0 t9 RET

與 DC 馬達控制相關的程式模組有以下 4個程式模組說明如下

(1)加減速控制模組 ACC_controlasm (2)光電盤輸入模組 POS_inputasm (3)PWM輸出模組 PWM_outputasm (4)PD控制模組 PD_controlasm

71加減速控制模組 此程式模組主要功能在於執行位置控制的加減速命令修正其數學模式採用 Lynn

濾波器的架構參見下圖

cmd

2

+

old Z -1

-

Z -1

Z -1

Z-1

Z-1x0 x1 x8 x9 x16

+ -

++

2

Z-1

Z-1 y1 y2

+

-

y0

+ +

sumZ-1

+164

12

out

dif

+

63

加減速控制模組方塊圖

其中

1Lynn 濾波器的階數固定成八階也就是 m=8其公式為 H(z) = (1-2Z-m+Z-2m)(1-2Z-1+Z-2)m2

2因為m=8所以m2=64因此最後計算低通濾波的部份時要先做除 64的運算 3因為低通濾波(lp)和 y0之間有 64倍的差異代表 y0y1y2的變化範圍比濾波器輸

入值要擴大許多例如輸入值在+-1000變化時y0y1y2很可能會在+-64000之間變化這範圍已經超出整數處理的範圍很可能會造成錯誤的計算結果

4所以在實驗時輸入值的變化範圍必須控制在+-500之間以保證計算的正確性 5對於 Lynn 濾波器當 m=8時其濾波器的頻寬固定為 1 kHzmdt也就是 dt=1時頻寬為 125 Hz dt=2時頻寬為 625Hz依此類推 6對於 Lynn 濾波器其濾波器的延遲固定為 m個抽樣週期因此設計 hp = x8 - lp 即可得到高通濾波器的對應結果 7其中乘 2和除 64的運算以移位運算取代所以整個程式中並無任何乘法運算 8Lynn 濾波器本身並不是穩定濾波器所以在程式啟動時必須確實的將所有狀態

(x0~x16)歸零否則會產生不穩定的狀態輸出

因為 Lynn濾波器中所有參數固定所以除了抽樣週期 dt 之外並無任何可調參數

抽樣週期 dt 可以控制頻寬dt 越大則濾波器頻寬越低

將步階命令值的輸出送入 Lynn 濾波器中經由低通濾波器的效應可以減緩命

令的變化程度達到加減速控制的目的以下為使用 Lynn 濾波器型式實現加減速控

制的組合語言程式列印 如欲更進一步瞭解 Lynn 濾波器與 FIR 數位濾波器之間的關係可以參考通訊實驗

四數位濾波器設計(FIR)中之說明

ACC_controlasm程式列印 local cmd R0 IP 輸入點位置命令

local out R1 OP 輸出點加減速處理後的位置命令

local dif R2 OP 輸出點位置微分命令

local axis R3 0 馬達編號0=X1=Y2=Z3=C

local old R4 內部變數微分計算用

local sumL R5 內部變數積分計算用

local sumH R6 內部變數積分計算用

local y0 R7 內部變數y(0~2)

local y1 R8 local y2 R9

local x0 R10 內部變數x(0~16)

local x1 R11 local x2 R12 local x3 R13 local x4 R14

local x5 R15 local x6 R16 local x7 R17 local x8 R18

local x9 R19 local x10 R20 local x11 R21 local x12 R22

local x13 R23 local x14 R24 local x15 R25 local x16 R26

64

data 27 模組變數區長度

initial 開機啟動程序

WR dif0 RD (cmd) WR out WR old dif=0 out=old=cmd

sumHL=cmd64

SFL 6 WR sumL RD out SFR 10 SGN 5 WR sumH

RPT 17 WR x00 RPT 3 WR y00 RET x[0~16]=0y[0~2]=0

timer 即時控制程序

RD (cmd) SUBX old WR x0 x0=cmd-old old=cmd

SUB x81 ADD x16 ADD y11 SUB y2 WR y0 y0=x0-2x8+x16+2y1-y2

SGN ADD sumL WR sumL RDH ADC sumH WR sumH sumHL+=y0

WRH RD sumL SFR 6 WR out out=sumHL64

RD y0 SGN SFR WR dif dif=y032mm

RD x0 RPT 16 RDX x1 x[i]=x[i-1] i=1~16

RD y0 RDX y1 WR y2 y[i]=y[i-1] i=1~2

b9 RET

72光電盤輸入模組

DC馬達的位置由光電盤量測之預設儲存於 0xac與 0xbe二個輸入埠位址中其中位址 0xac記錄 X軸馬達的位置位址 0xbe記錄 Y軸馬達的位置由於本實驗的DC馬達接在 Y軸的位置上因此程式中直接選用 Y軸的輸入 光電盤位置輸入的程式列印如下其中速度由位置的差分而得至於馬達的位置

則使用內部 2個 word加以記錄精度為 32位元 POS_inputasm程式列印 local spd R0 OP 輸出點速度量測值

local ang R1 OP 輸出點角度量測值

local angH R2 內部變數角度的 32 位元部分

local mode R3 0x308 模式選擇15MHzAB 相正反向輸入

local pht R4 0xac 輸入阜地址光電盤輸入(0xac)

local phtc R5 0xbe 輸入阜地址光電盤模式(0xbe)

local old R6 內部變數速度更新用

data 7 模組變數區長度

initial 開機啟動程序

RD mode WR (phtc) phtc=mode

RD (pht) WR old WR spd0 RET old=phtspd=0

timer 即時控制程序

RD (pht) SUBX old SGN 11 WR spd spd=(pht-old)old=pht

65

ADD ang WR ang angHL+=spd

RDH ADC angH WR angH

RET

73 PWM輸出控制模組 模組方塊

cmd PWM輸出

程式說明 1在開機時將切換保護時間寫到輸出阜 0xbc上其中切換保護值為 0~6360=5us 2在每次 timer interrupt時將 cmd訊號處理後寫到輸出阜 0xb8上

PWM_outputasm程式列印 local cmd R0 IP gnd 輸入點v相命令

local gain R1 4096 參數輸出增益1=4096

local bias R2 2048 參數輸出偏壓0=2048

local limit R3 4095 參數輸出極限1=4095

local zone R4 0x88f0 參數頻率=12KHz切換保護=5us

local pwm R5 0xb8 輸出阜地址PWM0 輸出(0xb8)

local mode R6 0xbc 輸出阜地址PWM 模式(0xbc)

local p0md R7 0xf8 輸出阜地址port0 模式(0xf8)

local gnd R8 0 輸入接地點

data 9 模組變數區長度

initial 開機啟動程序

RD bias WR (pwm) pwm=bias

RD 0xffff WR (p0md) set port0 mode

RD zone WR (mode) RET mode=zone

stop 關機保護程序

RD bias WR (pwm) RET pwm=bias

timer 即時控制程序

RD (mode) xor 1 and 1 WR (mode) trigger watch-dog

RD (cmd) MUL gain SFR 12 ADD bias ACC=(cmdgain4096)+bias

MAX 0 MIN limit WR (pwm) pwm=limit(ACC)

RET

66

74 PD 控制模組

PD控制的模組方塊參見圖二十一所示其中比例控制的部份直接由增益 kp加以調整微分控制的部份則由誤差的差分經增益 kd的調整而得

Σ+

-

cmd

fdk

err out

Σ

pk

dk

Σ

+

+

+

-

old1minusZ

PD控制器的方塊圖

PD_controlasm程式列印 local cmd R0 IP gnd 輸入點位置命令(可忽略)

local fdk R1 IP gnd 輸入點位置回授(可忽略)

local out R2 OP 輸出點用以控制速度迴路

local kp R3 256 參數增益 kp10=256

local kd R4 0 參數增益 kd10=256

local err R5 0 內部變數

local old R6 0 內部變數

local gnd R7 0 無輸入時的短路點

data 8 模組變數區長度

initial 開機啟動程序

WR out0 WR old0 RET out=old=0

timer 即時控制程序

RD (cmd) SUB (fdk) PRTF WR err

MUL kp SFR 8 P=(cmd-fdk)kp256

RDS err SUBX old MUL kd SFR 8 D=(err-old)kd256

ADDS

WR out out=P+D

RET

程式中預設增益值的 10以整數值 256為基底因此使用 SFR 8的指令加以調

整另外在在計算微分項的程式部份用到 SUBX old的指令其詳細的暫存器動作如

下 參考 piDSP的指令說明SUBX指令將總共用到 3個時序參考錯誤 找不到參照

67

來源在時序 1時將原先 AX的資料拷貝一份到 HX中時序 2時正式執行減

法的動作所以 AX暫存器中的內容會變成 err-old時序 3時DSP會將存放在 HX暫存器中的內容拷貝一份到 old的記憶體中也就是經由 SUBX此一精簡指令將

同時完成計算差分所需要的相減與資料疊代的動作有效的利用 piDSP控制器 DSP核心的精簡指令將可以大幅提昇系統的計算速度

HX AXoldSUBXerr err

old

err

errerr olderr minus

1_err

errerr olderr minus err

1_err

1

2

3

SUBX的指令時序與暫存器變化

68

8附錄快速安裝說明

光纖網路通訊 FPGA 發展系統 (適用於 WIN-XP200098 系統)

快速安裝說明

26Pin 負載輸出入埠

雙電源︵5

12

伏︶輸入埠

單電源︵5

伏︶輸入埠

USB

光纖線輸

號 光纖線輸出埠

入 傳 埠

首先將光碟片 RFFPGA 目錄檔案拷貝在您工作硬碟裡面

第一次安裝時先將 USB 傳輸線接上電腦主機將電源供應器接上 FPGA 模組此時電

腦會出現安裝 USB-Serial 驅動程式選擇從清單安裝此驅動程式放置在光碟片

RFFPGA-USBdrive 選擇您目前安裝系統

可選擇 WIN-98WIN-MEWIN-2000WIN-XP 系統配合您現在工作電腦作業系統

69

注意一般電腦 USB 埠很多插口當您安裝驅動程式時是配合您當時插入之埠

下次如您插入不同接口埠時電腦會再次要求安裝驅動程式這是正常現象請再次安

裝驅動程式否則無法使用

FPLC 操作

首先進入 RFFPGA裡子目錄 testASM直接點選 fPLCexe 出現下面操作畫面(也可直接將

此檔案放置桌面直接點選)

(或者選擇 File 再執行 Setuphellip 選擇您要執行 CAI 檔)

70

進入下面操作畫面 首先使用滑鼠在 FPGA下載按鈕單擊動作使 FPGA變成 DSP晶片 實驗一至實驗五皆為使用 DSP組合語言設計程式其原始程式分別為 testASM1至testASM5可使用 texPad 開啟與編輯程式內容 實驗三與實驗五多有 IO控制動作 當選擇實驗三時出現下面畫面

71

eM_USB 模組

數字型 LED

0 1 2 34 5 6 78 9 A BC D E F

燈號型 LED

44 鍵盤

ADC0 ADC1 DAC0 DAC1

LED 選擇KEY 選擇

模 式 1

0123

注意操作畫面 3與 4 說明開關與按鍵選擇位置後選擇程式下載再按程式啟動如您

按下 0-3按鍵時燈號型 LED會有不同方向閃爍顯示程式停止時結束所有 IO控制動作再按回首頁選擇其他實驗 實驗四與實驗五

模式3

0 1 2 34 5 6 78 9 A BC D E F

按照上面開關選擇直接操作如果以上實驗皆能按照正常操作表示您光纖網路通訊

FPGA發展模組以能正常使用 注意 開機與關機動作順序如下

開機電腦啟動 --- eM_USB 模組電源接上 --- USB 接上電腦 ---

啟動 FPLC 軟體 --- 下載 FPGA 程式

關機關閉 FPLC 軟體 --- eM_USB 模組電源拔掉 --- 拔掉電腦 USB 接頭 ---關掉

電腦

如果以上順序有亂可能造成 USB 找不到驅動造成無法下載經過幾次測試還是

無法下載建議重新啟動電腦主機按照正確步驟操作

72

FPGA 下載操作

進入 FPLC 操作系統按照下列步驟選擇節點模組與下載 bit FPGA 檔案

在 VHDLDEMO 子目錄下您可以選擇您目前 FPGA 種類型號在此型號下我們已將 VHDL

與數位邏輯設計課本範例全部放於此處

73

光纖網路連線 FPGA 下載操作

首先利用光纖線將 eM_USB0 模組光纖輸出埠接至 eM_USB1 模組光纖輸入埠以此

類推最後再將最後 eM_USBN 模組光纖輸出埠接至 eM_USB0 模組光纖輸入埠配置

如附圖方式

個人電腦(Windows) eM_USB模組

0USB

eM_USB模組1

光纖網路

eM_USB模組2

eM_USB模組N

配置完成後進入 FPLC 系統首先必須先將 Node00 下載在 testASM 子目錄裡

piDSPv0bit 檔讓 eM_USB0 模組 FPGA 具備 DSP 功能才能執行光纖網路通訊

操作如下

此時您就可以選擇分別下載至各模組 FPGA 檔 bit

74

安裝 FPLC 注意事項

當您進入 FPLC 時

按 FILE 選擇 programhellip 選擇檔案為 exp_dcmplc 出現下面畫面

正常顯示畫面為

75

DOS 環境操作

在 PC 端的操作是在 Windows 環境中的 DOS 視窗中執行指令範例如下

eFPGA progNETbit 下載 FPGA電路至網路節點0(即 USB節點)中 eFPGA testLEDbit 1 下載 FPGA電路至網路節點1中

對於單一節點的控制程序如下

1將 eM_USB模組連結個人電腦的 USB端 2eM_USB模組開機 3執行下載指令即可 eFPGA xxxxbit 4若要更改 FPGA電路只要重新執行下載指令即可

對於多個網路節點的控制程序如下

1第一組 eM_USB模組連結個人電腦的 USB端再以光纖網路依序其他各節點 2連接 USB界面者為模組0從光纖發射端連接出去的模組為1依此類推 3將所有 eM_USB模組開機 4執行下載指令如下 eFPGA progNETbit 模組0必須先下載指定的 FPGA電路 eFPGA xxxxbit 1 再依序下載其他網路模組的 FPGA電路 eFPGA yyyybit 2 eFPGA zzzzbit 最後再重新下載模組0的 FPGA電路 5換句話說模組0必須先執行 progNETbit讓光纖網路接受 FPGA控制後才能透過光纖網路下載至其他節點等全部網路節點下載完畢後再將模組0的 FPGA重新下載讓模組0也可自由執行任意的 FPGA電路

6若要更改某一個網路節點中的 FPGA電路只要重新執行下述指令 eFPGA progNETbit 模組0必須先下載指定的 FPGA電路 eFPGA yyyybit 2 下載指定網路模組的 FPGA電路 eFPGA zzzz bit 最後再重新下載模組0的 FPGA電路 換句話說除非模組0中的 FPGA已經包括光纖網路管理電路否則一定要先在

模組0中下載網路管理電路後才能下載指定網路節點的 FPGA電路

76

光纖網路通訊 FPGA 發展系統

系統配置

光纖網路通訊 FPGA 發展系統的系統配置圖如下

個人電腦(Windows) eM_USB模組

0USB

eM_USB模組1

光纖網路

eM_USB模組2

eM_USB模組N

其中

1基本模組為 eM_USB模組可用 USB界面和個人電腦連線並提供 USB對光纖網路的轉換功能使得個人電腦可以獨立控制光纖網路中的每個網路節點

2eM_USB模組也可以作為光纖網路中的網路節點透過光纖網路而接受個人電腦的

監控 3就個人電腦而言不論是 USB界面直接連結或是以光纖網路間接連結的 eM_USB模組都是可以直接監控的網路節點最多可以同時控制一個 USB節點和 30個網路節點

4對於每一個網路節點個人電腦都可執行 eM_USB模組中 FPGA的電路下載工作並在適當的 FPGA電路配合下可執行 eM_USB模組中 FPGA內部電路的讀寫控制 5透過適當的 FPGA電路設計各網路節點都可透過光纖網路和其他任何網路節點

作同步通訊執行 FPGA內部記憶體的資料交換資料交換頻率可達 1KHz以上

77

網路模組配置

每個網路模組的標準配置圖如下

eM_USB模組光纖網路

USB eM_FPGA卡

eM_DEMO模組

eM_EXP實驗模組

DC電源

其中

1網路模組以 eM_USB模組為主提供基本的 USB界面和光纖網路連線 2eM_USB模組中的 FPGACPLD採用插卡型式可選擇不同的 eM_FPGA卡包括

eM_2V1K卡可選用 Virtex系列的 XC2V250和 XC2V1000 eM_3S1K卡可選用 Spartan3系列的 XC3S400XC3S1000和 XC3S1500 eM_3S50卡可選用 Spartan3系列的 XC3S50XC3S200和 XC3S400 eM_95XL卡可選用 9500XL系列的 XC95144XL和 XC95288XL 3eM_USB模組中的對外連線有兩種一種是 26P接頭用以連接既有的各種實驗模

組另一種是兩組 50P接頭將 FPGA中各接腳引出用以連接專題實驗 4eM_DEMO模組就是插上 50P接頭的教學模組其中包括 LED 數字顯示和 44鍵盤也具備兩組的 ADC和兩組的 DAC接頭提供類比訊號的測試工具

常用的實驗組合包括

1精簡組合包括(eM_USB+eM_FPGA)提供基本的網路節點適用於專題實驗 2標準組合包括(eM_USB+eM_FPGA+eM_DEMO)提供基礎 FPGA設計的教學實驗

3實驗組合包括(eM_USB+eM_FPGA+eM_DEMO+eM_EXP)提供進階的 FPGA實驗可依需求選用不同的實驗模組

78

eM_USB 模組

eM_USB 模組的電路配置圖如下

TxRx

DCPower

USB

JP2

JP3

光纖界面

外加電源

PC連線

JP1

eM_FPGA模組

FT232 CPLD FlashROM

SRAM

10cm

6cm

JP4

其中

1對外的連線接頭包括 DC電源 可選擇單電源(5V)或是多電源(5V+12V-12V)兩種 USB界面 直接連接個人電腦 光纖界面連接光纖網路 2實驗界面包括 JP1負責內部 CPLD的電路下載 JP2JP3兩組 50P的擴張用接頭 JP4 標準 26P接頭用以連接各種實驗模組 3內部的電路配置包括 A以 SO-DIMM接頭連接各種 eM_FPGA卡 B內附 EEPROMFlashROM和 SRAM提供 FPGA作應用測試 C以一顆 FT232BM作為 USB界面解碼而以一顆 CPLD作為光纖網路解碼 D提供各種 eM_FPGA卡的電路下載功能 4內附五顆 LED由上而下依序為 usbLED指示 USB界面的讀寫狀態 tstLED可由 FPGA電路自行定義 stsLED可由 FPGA電路自行定義 RxLED 可由 FPGA電路自行定義 TxLED 可由 FPGA電路自行定義

79

外部接腳定義

外部接頭的接點順序圖示如下

上視圖

JP11 9 JP4

126225

JP31

50249

JP21

50249

而各接頭的接點定義如下

JP1 JP4 JP2 JP3 1+33V 1+12V 2+12V 1 GND 2 GND 1 GND 2 GND 2GND 3 ADC 4 DAC 3POWER 4ALARM 3 +5V 4 +5V 3nc 5 yPB2 6 yPB3 5RxNET 6TxNET 5+12V 6+12V 4TCK 7 yPB1 6 yPB4 7RxUSB 6TxUSB 7-12V 6-12V 5nc 9 yPB0 10yPB5 9RxCAN 10TxCAN 9 ADC 10 DAC 6TDO 11yPB6 12yPB7 11P0D0 12P0D1 11P1D0 12P1D1 7TDI 13yGND 14yPC3 13P0D2 14P0D3 13P1D2 14P1D3 8nc 15yPC2 16yPC1 15P0D4 16P0D5 15P1D4 16P1D5 9TMS 17yPC0 18yPA0 17P0D6 18P0D7 17P1D6 18P1D7 19yPA1 20yPA2 19P0D8 20P0D9 19P1D8 20P1D9 21yPA3 22GND 21P0D10 22P0D11 21P1D10 22P1D11 23GND 24+5V 23P0D12 24P0D13 23P1D12 24P1D13 25+5V 26nc 25P0D14 26P0D15 25P1D14 26P1D15 27P2D0 28P2D1 27PxA0 28PxA1 29P2D2 30P2D3 29PxA2 30PxA3 31P2D4 32P2D5 31PxA4 32PxA5 33P2D6 34P2D7 33PxA6 34PxA7 35P2D8 36P2D9 35PxB0 36PxB1 37P2D10 38P2D11 37PxB2 38PxB3 39P2D12 40P2D13 39PxB4 40PxB5 41P2D14 42P2D15 41PxB6 42PxB7 43ADC0 44ADC1 43PxC0 44PxC1 45ADC2 46ADC3 45PxC2 46PxC3 47ADC4 48ADC5 47PxC4 48PxC5 49DAC0 50DAC1 49PxC6 50PxC7

80

eM_FPGA 模組

在各種 eM_FPGA 模組中FPGA 對外電路的標準配置圖如下

24576MHz

FlashROM

26PSRAM

EEPROM

mD[8]

yPA[4]

FPGACPLD

mA[19]mRDmWRmCSeeCKeeCSeeDIeeDO

光纖界面 RxNETTxNET

USB 界面 RxUSBTxUSBCLK24MPOWERALARM

LED

tstLEDstsLEDRxLEDTxLED

yPB[8]yPC[4]

ADCDAC

ADC[8]

實驗模組

ADC[2]

DAC[2]

xPA[4]

xPB[8]

xPC[4]

基礎實驗

其中

1FPGACPLD可以選擇下述幾種 XC2V250XC2V1000 採用 eM_2V1K模組其中 FPGA為 FG456包裝 XC3S400XC3S1000XC3S1500採用 eM_3S1K模組其中 FPGA為 FG456包裝 XC3S400XC3S1000XC3S1500採用 eM_3S1K模組其中 FPGA為 FG456包裝 XC3S50XC3S200XC3S400 採用 eM_3S50模組其中 FPGA為 TQ144包裝 XC95144XLXC95288XL 採用 eM_95XL模組其中 CPLD為 TQ144包裝 2採用 FG456包裝者可以控制所有的 IO界面 3採用 TQ144包裝者只是不能控制 RAM和 FlashROM而可以控制其他所有的界面 4所有 FPGA模組都可自由選擇由 USB界面或是由光纖界面下載電路但是 CPLD模組只能固定由 USB界面下載電路

5所有 FPGACPLD模組都可透過 26P接頭連接既有的各種實驗模組

81

FPGA 接腳對照表

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

mD0 XD6 mD0 A17 C13 -- -- mD1 XD7 mD1 B17 D12 -- -- mD2 XD8 mD2 C17 D11 -- -- mD3 XD9 mD3 D17 C11 -- -- mD4 XD10 mD4 E17 D10 -- -- mD5 XD11 mD5 E16 C10 -- -- mD6 XD12 mD6 E14 D9 -- -- mD7 XD13 mD7 E13 D7 -- -- mA0 XD14 mA0 D13 C7 -- -- mA1 XD15 mA1 C13 D6 -- -- mA2 XA0 mA2 V5 C3 -- -- mA3 XA1 mA3 U5 C4 -- -- mA4 XA2 mA4 Y2 D3 -- -- mA5 XA3 mA5 Y1 D4 -- -- mA6 XA4 mA6 V4 E3 -- -- mA7 XA5 mA7 V3 E4 -- -- mA8 XA6 mA8 W2 F3 -- -- mA9 XA7 mA9 W1 F4 -- -- mA10 XA8 mA10 T2 G6 -- -- mA11 XA9 mA11 T1 K3 -- -- mA12 XA10 mA12 R4 K10 -- -- mA13 XA11 mA13 R3 L3 -- -- mA14 XA12 mA14 R2 L4 -- -- mRD XRD mRD R1 D5 -- -- mWR XWR mWR P6 C6 -- --

POWER P0A0 POWER B4 B20 P1 P5 ALARM P0A1 ALARM A4 A19 P2 P6 RxNET P0A2 RxNET C4 B19 P4 P7 TxNET P0A3 TxNET C5 A18 P5 P9 RxUSB P0B0 RxUSB B5 A15 P6 P10 TxUSB P0B1 TxUSB A5 B15 P7 P11 RxCAN P0B2 RxCAN D6 A14 P8 P12 RxCAN P0B3 TxCAN C6 B14 P10 P13

CLK24M CLK24M CLK24M E12 B12 P124 P38

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

PWM0H P3A0 P0D0 E6 A8 P21 P23 PWM0L P3A1 P0D1 E5 B8 P23 P24 PWM1H P3A2 P0D2 C2 B6 P24 P25 PWM1L P3A3 P0D3 C1 A5 P25 P26 PWM2H P3A4 P0D4 D2 B5 P26 P27

82

PWM2L P3A5 P0D5 D1 A4 P27 P28 PWMenb P3A6 P0D6 E4 B4 P28 P30 PHT1Z P3A7 P0D7 E3 A3 P30 P31 PHT1A P3B0 P0D8 G2 C1 P31 P32 PHT1B P3B1 P0D9 G1 C2 P32 P33 PHT0A P3B2 P0D10 H5 D1 P33 P34 PHT0B P3B3 P0D11 J6 D2 P35 P35 AMP0 P3B4 P0D12 H4 E1 P36 P39 AMP1 P3B5 P0D13 H3 E2 P40 P40 AMP2 P3B6 P0D14 H2 F2 P41 P41 AMP3 P3B7 P0D15 H1 G1 P44 P43 eeSK P0C3 P1D0 C10 B9 P20 P22 eeCS P0C2 P1D1 D10 A9 P18 P21 eeDI P0C1 P1D2 F10 B10 P17 P20 eeDO P0C0 P1D3 E10 B11 P15 P19 ssCK P0B7 P1D4 E8 A11 P14 P17 ssCS P0B6 P1D5 E7 A12 P13 P16 ssDI P0B5 P1D6 A6 B13 P12 P15 ssDO P0B4 P1D7 B6 A13 P11 P14

ppCLK P3C0 P1D8 K4 G2 P46 P44 ppDIN P3C1 P1D9 K3 K1 P47 P45 TxD P3C2 P1D10 K2 K2 P50 P46 RxD P3C3 P1D11 K1 L1 P51 P48

tstLED P3C4 P1D12 L5 L2 P52 P49 stsLED P3C5 P1D13 L4 M1 P53 P50 RxLED P3C6 P1D14 L3 M2 P55 P51 TxLED P3C7 P1D15 L2 N1 P56 P52

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

xPA0 P2A0 P2D0 AA3 N2 P59 P53 xPA1 P2A1 P2D1 Y4 T1 P60 P54 xPA2 P2A2 P2D2 AA4 T2 P63 P56 xPA3 P2A3 P2D3 AB4 U2 P68 P57 xPC0 P2A4 P2D4 W5 V1 P69 P58 xPC1 P2A5 P2D5 Y5 V2 P70 P59 xPC2 P2A6 P2D6 AA5 W1 P73 P60 xPC3 P2A7 P2D7 AB5 W2 P74 P61

-- P2B0 P2D8 V6 Y1 P76 P64 -- P2B1 P2D9 V7 Y2 P77 P66 -- P2B2 P2D10 W6 AA3 P78 P68

mCS P2B3 P2D11 Y6 AB4 P79 P69 mA15 P2B4 P2D12 V9 AA4 P80 P70 mA16 P2B5 P2D13 V10 AB5 P82 P71 mA17 P2B6 P2D14 W10 AA5 P83 P74 mA18 P2B7 P2D15 Y10 AA6 P84 P75 CS0 P2C0 ADC0 AA10 AB8 P85 P76

83

SDIN0 P2C1 ADC1 AB10 AA8 P86 P77 CS1 P2C2 ADC2 U10 AB9 P87 P78

SDIN1 P2C3 ADC3 U11 AA9 P89 P79 SCLK P2C4 ADC4 V11 AB10 P90 P80 CS2 P2C5 ADC5 W11 AA10 P92 P81

SDOUT P2C6 ADC6 Y11 AB11 P93 P82 LDAC P2C7 ADC7 AA11 AA11 P95 P83

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

xPB0 P1A0 PxA0 M1 M3 P135 P85 xPB1 P1A1 PxA1 M2 M4 P132 P86 yPB2 P1A2 PxA2 M3 N3 P131 P87 yPB3 P1A3 PxA3 M4 N4 P130 P88 yPB1 P1A4 PxA4 M5 T4 P129 P91 yPB4 P1A5 PxA5 M6 T5 P128 P92 yPB0 P1A6 PxA6 N1 U3 P127 P93 yPB5 P1A7 PxA7 N2 U4 P125 P94 yPB6 P1B0 PxB0 U13 V3 P119 P95 yPB7 P1B1 PxB1 V13 V4 P118 P96 xPB2 P1B2 PxB2 W13 W3 P116 P97 xPB3 P1B3 PxB3 Y13 W4 P113 P98 xPB4 P1B4 PxB4 AA13 Y3 P112 P100 xPB5 P1B5 PxB5 AB13 Y4 P96 P101 yPC3 P1B6 PxB6 U12 Y5 P97 P102 yPC2 P1B7 PxB7 V12 W5 P98 P103 yPC1 P1C7 PxC0 AB17 W11 P108 P113 yPC0 P1C6 PxC1 AA17 Y11 P107 P112 yPA0 P1C5 PxC2 Y17 W10 P105 P111 yPA1 P1C4 PxC3 W17 Y10 P104 P110 yPA2 P1C3 PxC4 AB18 W9 P103 P107 yPA3 P1C2 PxC5 AA18 W8 P102 P106 xPB6 P1C1 PxC6 Y18 W6 P100 P105 xPB7 P1C0 PxC7 W18 Y6 P99 P104

84

eM_DEMO 模組

eM_DEMO 模組的電路配置圖如下

eM_USB 模組

數字型 LED

0 1 2 34 5 6 78 9 A BC D E F

燈號型 LED

44 鍵盤

ADC0 ADC1 DAC0 DAC1

LED 選擇KEY 選擇

其中

1eM_DEMO模組的基本功能包括 A將 xPAxPBxPC等 16個 IO訊號引出控制 LED和鍵盤電路 B將 ADDA訊號引出並放大成+-10V的工作範圍 2LED和鍵盤可以選擇三種模式由 LED和 KEY 兩組開關作選擇圖示如下

模式1

0123

模式2 模式3

0 1 2 34 5 6 78 9 A BC D E F

0123

3模式14鍵輸入並搭配 16點的 LED燈號顯示其中 16點 LED分別對映到 xPA[0~3]xPB[0~7]和 xPC[0~3] 4組按鍵分別對映到 xPC[0~3] 4模式24鍵輸入並搭配四個 7段式數字顯示其中 數字顯示由 xPA[0~3]作數字掃瞄而由 xPB[0~7]作 7段式 LED控制 4組按鍵 分別對映到 xPC[0~3] 5模式316鍵輸入並搭配四個 7段式數字顯示其中 數字顯示由 xPA[0~3]作數字掃瞄而由 xPB[0~7]作 7段式 LED控制 16組按鍵由 xPA[0~3]作鍵盤掃瞄而由 xPC[0~3]作鍵盤讀取 6根據VHDL與數位邏輯設計的章節其中 第 1章至 10章的實驗採用模式1而 第 11章實驗採用模式2而 第 12章之後的實驗都採用模式3

85

FPGA UCF 定義

eM_3S1K 模組

NET CLK LOC = B12

NET XAlt0gt LOC = N2

NET XAlt1gt LOC = T1

NET XAlt2gt LOC = T2

NET XAlt3gt LOC = U2

NET XBlt0gt LOC = M3

NET XBlt1gt LOC = M4

NET XBlt2gt LOC = W3

NET XBlt3gt LOC = W4

NET XBlt4gt LOC = Y3

NET XBlt5gt LOC = Y4

NET XBlt6gt LOC = W6

NET XBlt7gt LOC = Y6

NET XClt0gt LOC = V1

NET XClt1gt LOC = V2

NET XClt2gt LOC = W1

NET XClt3gt LOC = W2

NET YAlt0gt LOC = W10

JP4 接頭

NET YAlt1gt LOC = Y10

NET YAlt2gt LOC = W9

NET YAlt3gt LOC = W8

NET YBlt0gt LOC = U3

NET YBlt1gt LOC = T4

NET YBlt2gt LOC = N3

NET YBlt3gt LOC = N4

NET YBlt4gt LOC = T5

NET YBlt5gt LOC = U4

NET YBlt6gt LOC = V3

NET YBlt7gt LOC = V4

NET YClt0gt LOC = Y11

NET YClt1gt LOC = W11

NET YClt2gt LOC = W5

NET YClt3gt LOC = Y5

在光碟片中 RFFPGAVHDLDEMOBIT3S1K 裡有 VHDL 與數位邏輯設計書本範例原始檔與合成檔

86

eM_3S50 模組

NET CLK LOC = P124

NET XAlt0gt LOC = P59

NET XAlt1gt LOC = P60

NET XAlt2gt LOC = P63

NET XAlt3gt LOC = P68

NET XBlt0gt LOC = P135

NET XBlt1gt LOC = P132

NET XBlt2gt LOC = P116

NET XBlt3gt LOC = P113

NET XBlt4gt LOC = P112

NET XBlt5gt LOC = P96

NET XBlt6gt LOC = P100

NET XBlt7gt LOC = P99

NET XClt0gt LOC = P69

NET XClt1gt LOC = P70

NET XClt2gt LOC = P73

NET XClt3gt LOC = P74

NET YAlt0gt LOC = P105

JP4 接頭

NET YAlt1gt LOC = P104

NET YAlt2gt LOC = P103

NET YAlt3gt LOC = P102

NET YBlt0gt LOC = P127

NET YBlt1gt LOC = P129

NET YBlt2gt LOC = P131

NET YBlt3gt LOC = P130

NET YBlt4gt LOC = P128

NET YBlt5gt LOC = P125

NET YBlt6gt LOC = P119

NET YBlt7gt LOC = P118

NET YClt0gt LOC = P107

NET YClt1gt LOC = P108

NET YClt2gt LOC = P98

NET YClt3gt LOC = P97

在光碟片中 RFFPGAVHDLDEMOBIT3S200 裡有VHDL與數位邏輯設計書本範例原始檔與合成檔

87

eM_95XL 模組

NET CLK LOC = SPIN38

NET XAlt0gt LOC = SPIN53

NET XAlt1gt LOC = SPIN54

NET XAlt2gt LOC = SPIN56

NET XAlt3gt LOC = SPIN57

NET XBlt0gt LOC = SPIN85

NET XBlt1gt LOC = SPIN86

NET XBlt2gt LOC = SPIN97

NET XBlt3gt LOC = SPIN98

NET XBlt4gt LOC = SPIN100

NET XBlt5gt LOC = SPIN101

NET XBlt6gt LOC = SPIN105

NET XBlt7gt LOC = SPIN104

NET XClt0gt LOC = SPIN58

NET XClt1gt LOC = SPIN59

NET XClt2gt LOC = SPIN60

NET XClt3gt LOC = SPIN61

NET YAlt0gt LOC = SPIN111

JP4 接頭

NET YAlt1gt LOC = SPIN110

NET YAlt2gt LOC = SPIN107

NET YAlt3gt LOC = SPIN106

NET YBlt0gt LOC = SPIN93

NET YBlt1gt LOC = SPIN91

NET YBlt2gt LOC = SPIN87

NET YBlt3gt LOC = SPIN88

NET YBlt4gt LOC = SPIN92

NET YBlt5gt LOC = SPIN94

NET YBlt6gt LOC = SPIN95

NET YBlt7gt LOC = SPIN96

NET YClt0gt LOC = SPIN112

NET YClt1gt LOC = SPIN113

NET YClt2gt LOC = SPIN103

NET YClt3gt LOC = SPIN102

在光碟片中 RFFPGAVHDLDEMOSVF95288XL 裡有VHDL與數位邏輯設計書本範例原始檔與合成

檔案

88

eM_FPGA 模組

NET CLK LOC = E12

NET XAlt0gt LOC = AA3

NET XAlt1gt LOC = Y4

NET XAlt2gt LOC = AA4

NET XAlt3gt LOC = AB4

NET XBlt0gt LOC = M1

NET XBlt1gt LOC = M2

NET XBlt2gt LOC = W13

NET XBlt3gt LOC = Y13

NET XBlt4gt LOC = AA13

NET XBlt5gt LOC = AB13

NET XBlt6gt LOC = Y18

NET XBlt7gt LOC = W18

NET XClt0gt LOC = W5

NET XClt1gt LOC = Y5

NET XClt2gt LOC = AA5

NET XClt3gt LOC = AB5

NET YAlt0gt LOC = Y17

JP4 接頭

NET YAlt1gt LOC = W17

NET YAlt2gt LOC = AB18

NET YAlt3gt LOC = AA18

NET YBlt0gt LOC = N1

NET YBlt1gt LOC = M5

NET YBlt2gt LOC = M3

NET YBlt3gt LOC = M4

NET YBlt4gt LOC = M6

NET YBlt5gt LOC = N2

NET YBlt6gt LOC = U13

NET YBlt7gt LOC = V13

NET YClt0gt LOC = AA17

NET YClt1gt LOC = AB17

NET YClt2gt LOC = V12

NET YClt3gt LOC = U12

在光碟片中 RFFPGAVHDLDEMOBIT2V250 裡有VHDL與數位邏輯設計書本範例原始檔與合成檔

89

Page 51: RFFPGA 直流馬達實驗手冊juniortek.com.tw/program/manual/RF-DC-mal.pdf · em_demo模組 em_dcm 直流伺服馬達 dc電源 rffpga 系統的直流馬達實驗規劃 其中包括:

圖一 直流馬達經加減速控制後之閉迴路控制響應圖

51

65 實驗 5-正弦波的位置控制 實驗說明在本實驗中改變命令的波形由方波改變為正弦波並建立如下的測

試方塊圖與上一實驗相比較僅更改命令的波形產生方塊 方塊圖中的模組功能說明如下 1用 fg2產生測試用的弦波位置命令 2將弦波位置命令送到加減速控制方塊處理後產生新的位置命令再與 io1 讀入的位

置回授訊號送到 PD 控制器方塊中產生電壓控制訊號再透過 io2 模組將訊號送出到伺服介面驅動馬達轉動

對應之 plc檔程式說明(exp_sinplc) echo off 畫面顯示開始

run dsp 0 選擇 DSP1

run stop run reset 既有程式停止

run testDCMmem 下載指定程式

das 1 ampfg2out 0 1024 SIN 波形 Volt 設定 DAS 頻道1

das 2 ampcn1out 0 1024 加速控制 Volt 設定 DAS 頻道2

das 3 ampio1spd 0 1024 馬達速度 Volt 設定 DAS 頻道3

das 4 ampio1ang 0 1024 馬達角度 Volt 設定 DAS 頻道4

plot select 0 設定示波器頁數

plot xunit 100000 0 設定示波器 X軸

plot yunit 1 2000 -300 設定示波器 Y1 軸

plot yunit 2 2000 -100 設定示波器 Y2 軸

plot yunit 3 50 100 設定示波器 Y3 軸

plot yunit 4 2000 300 設定示波器 Y4 軸

plot trigger 1 0 1 10 設定示波器觸發

52

plot scope 9 1 2 3 4 設定示波器顯示

module io2 設定 io2 模組

s cmd ampcn2out

module fg2 設定 fg1 模組

s kAmp 2000 s kFrq 100

module cn1 設定 cn1 模組

s cmd ampfg2out

module cn2 設定 cn2 模組

s cmd ampcn1out s fdk ampio1ang s kp 0x300 s kd 0x4000

module ft1 設定 ft1 模組

s u ampfg2out s dt 2 s ka 320

module io3 設定 io3 模組

s led ampfg2out

module 回復預設模組

run 1khz 設定抽樣頻率為 4KHz

run start DSP 開始執行

das stop pause 1 DAS 啟動 das start DAS 啟動

echo on 回復正常訊息顯示

CAI操控設計畫面規劃如下(EXP_sinCAI) page 1 畫面設計

53

page 2 畫面設計 page 3 畫面設計與實驗二 page 4相同畫面

方塊的參數設定可調整 PD控制器中的 kp和 kd值以調整系統之響應 實測響應圖

訊 號 說 明 訊 號 說 明 ch1 弦波產生器產生之位置命令 ch3 馬達角位置訊號 ch2 加減速模組輸出之位置命令 ch4 馬達角速度訊號

54

直流馬達之閉迴路弦波加減速位置控制響應圖

55

7組合語言說明

本節將針對 DC馬達伺服控制實驗專用的程式模組進行功能與程式碼的說明其

有關於波形產生器與資料擷取模組等說明如下

SIN_waveasm 正弦波產生器 PWM_waveasm 方波產生器 IIR1_filterasm 一階濾波器 DAS4asm 資料蒐集模組

弦波產生器

此模組會產生週期性的正弦波方塊圖如下

outfrq

kBiasbias

ampkAmp

kFrqth

kThf=1TB

θ

A

其中

1正弦波有四個參數振幅(A)頻率(F)相位(θ)和偏移(B)其公式為 out = A sin(2πF t +θ) + B 2對於單純的正弦波產生器所對映的參數包括 kAmp 振幅值 kFrq 頻率值kFrq=655368000Hz其中 Hz的範圍為 0~4000例如 1000Hz =gt frq=8192 100Hz =gt frq=819 10Hz =gt frq=82 1Hz =gt frq=8 kTh 相角值0~255代表 0~360的相位當 th=0 時為正弦波 th=64 時為餘弦波 th=128時為反相波依此類推 kBias偏移值 3對於可調變的正弦波產生器其對映的輸入點為 amp 控制振幅的輸入點可產生調幅(AM)波形 frq 控制頻率的輸入點可產生調頻(FM)波形 th 控制相位的輸入點可產生調相(PM)波形 bias控制偏移的輸入點可產生雙頻混波(相加)波形 4若不使用調變功能時各個輸入點時的預設值為 amp 指向 kAmp 的位址 frq 指向 kFrq 的位址

56

th 指向 kTh 的位址 bias指向 kBias的位址

模組程式範例SIN_WAVEasm

local amp R0 IP kAmp 輸入點sin波的振幅 local frq R1 IP kFrq 輸入點sin波的頻率 local th R2 IP kTh 輸入點sin波的相角 local bias R3 IP kBias 輸入點sin波的中心偏移 local out R4 OP 輸出點sin波輸出 local tab R5 TP 表格指標指向 sin[256]的表格 local ang R6 內部變數相位角65536=360deg local kAmp R7 1000 參數振幅值 local kFrq R8 1000 參數頻率值=655368000Hz local kTh R9 0 參數相角值360deg=256 local kBias R10 0 參數偏移值 data 11 模組變數區長度及初值 initial 啟動程序 WR ang0 WR out0 ang=out=0 RET timer 即時控制程序(8KHz) RD ang ADD (frq) WR ang ang+=frq SFR 8 ADD (th) AND 255 ACC=sin(ang256+th) ADD tab WRH RDM table-look-up MUL (amp) SFR 12 ADD (bias) WR out out=ACCamp4096+bias RET table tab 256 sin[256]表格區10=4096 0 101 201 301 401 501 601 700 00~070deg 799 897 995 1092 1189 1285 1380 1474 08~0F 1567 1660 1751 1842 1931 2019 2106 2191 10~17 2276 2359 2440 2520 2598 2675 2751 2824 18~1F 2896 2967 3035 3102 3166 3229 3290 3349 20~27 3406 3461 3513 3564 3612 3659 3703 3745 28~2F 3784 3822 3857 3889 3920 3948 3973 3996 30~37 4017 4036 4052 4065 4076 4085 4091 4095 38~3F 4096 4095 4091 4085 4076 4065 4052 4036 40~4790deg 4017 3996 3973 3948 3920 3889 3857 3822 48~4F 3784 3745 3703 3659 3612 3564 3513 3461 50~57 3406 3349 3290 3229 3166 3102 3035 2967 58~5F

57

2896 2824 2751 2675 2598 2520 2440 2359 60~67 2276 2191 2106 2019 1931 1842 1751 1660 68~6F 1567 1474 1380 1285 1189 1092 995 897 70~77 799 700 601 501 401 301 201 101 78~7F 0 65435 65335 65235 65135 65035 64935 64836 80~87180deg 64737 64639 64541 64444 64347 64251 64156 64062 88~8F 63969 63876 63785 63694 63605 63517 63430 63345 90~97 63260 63177 63096 63016 62938 62861 62785 62712 98~9F 62640 62569 62501 62434 62370 62307 62246 62187 A0~A7 62130 62075 62023 61972 61924 61877 61833 61791 A8~A8 61752 61714 61679 61647 61616 61588 61563 61540 B0~B7 61519 61500 61484 61471 61460 61451 61445 61441 B8~BF 61440 61441 61445 61451 61460 61471 61484 61500 C0~C7270deg 61519 61540 61563 61588 61616 61647 61679 61714 C8~CF 61752 61791 61833 61877 61924 61972 62023 62075 D0~D7 62130 62187 62246 62307 62370 62434 62501 62569 D8~DF 62640 62712 62785 62861 62938 63016 63096 63177 E0~E7 63260 63345 63430 63517 63605 63694 63785 63876 E8~EF 63969 64062 64156 64251 64347 64444 64541 64639 F0~F7 64737 64836 64935 65035 65135 65235 65335 65435 F8~FF

就程式結構而言說明如下

timer 即時控制程序(8KHz) RD ang ADD (frq) WR ang ang+=frq SFR 8 ADD (th) AND 255 ACC=sin(ang256+th) ADD tab WRH RDM table-look-up MUL (amp) SFR 12 ADD (bias) WR out out=ACCamp4096+bias RET

1基本上我們以查表法計算 sin()其輸入θ的範圍為 0~255對映到 0~360deg其輸出 sin(θ)的範圍為+-4096對映到+-10的範圍

2建立一個內部變數 ang其範圍為 0~65535對映到 0~360的相位角 3每個timer程序都執行 ang+=frq的動作更新目前的相位角接著依照 ang的相位角查表得到 sin(ang256+th)值

4由於表格長度為 256-word所以必須將 ang256才能得到正確的對映關係而 th範圍為 0~255所以不需要像 ang一般的做額外處理

5sin()的範圍為(+1-1)而在表格中以(+4096~-4096)的型式記錄相當於 10=4096所以執行 Asin()時還要用 SFR12指令做4096的動作才能正確的取得輸出值

58

6就頻率輸入 frq而言其計算原則是將θ=ωt轉化成θ=Σ(ωdt)因為抽樣頻率

為 8KHz所以 dt=18000而得到 frq=655368000Hz公式其中 Hz為真正的頻率在 8KHz的抽樣頻率下其範圍為 0~4000

鋸齒波產生器

此模組會產生週期性的鋸齒波方塊圖如下

outfrq

kBiasbias

ampkAmp

kFrqth

kThf=1TB

θ

A

其中

1鋸齒波也有四個參數振幅(A)頻率(F)相位(θ)和偏移(B)和正弦波的定義完全一致唯一的差異是其輸出為鋸齒波而非正弦波

2基本波形是從週期開始時為 0一直遞增到週期結束時到達最高點然後立刻回歸

到 0重新開始 3以程式結構而論鋸齒波程式幾乎就是正弦波的相位計算部分只差沒有正弦波的

查表處理而已

模組程式範例SAW_WAVEasm

local amp R0 IP kAmp 輸入點sin波的振幅 local frq R1 IP kFrq 輸入點sin波的頻率 local th R2 IP kTh 輸入點sin波的相角 local bias R3 IP kBias 輸入點sin波的中心偏移 local out R4 OP 輸出點sin波輸出 local ang R5 內部變數相位角65536=360deg local kAmp R6 1000 參數振幅值 local kFrq R7 1000 參數頻率值=655368000Hz local kTh R8 0 參數相角值360deg=256 local kBias R9 0 參數偏移值 data 11 模組變數區長度及初值 initial 啟動程序 WR ang0 WR out0 ang=out=0 RET timer 即時控制程序(8KHz) RD ang ADD (frq) WR ang ang+=frq SFR 8 ADD (th) AND 255 ACC=(ang256+th)amp0x00ff MUL (amp) SFR 8 ADD (bias) WR out out=ACCamp256+bias

59

RET

脈衝波產生器

outfrq

kBiasbias

ampkAmp

kFrqth

kThf=1TB

θ

A

pwm

kDutyduty

此模組會產生週期性的脈衝波方塊圖如下

其中

1脈衝波有五個參數其中振幅(A)頻率(F)相位(θ)和偏移(B)四個參數和正弦波

定義完全一樣另外再增加一個負載率(D) 2基本波形是從週期開始時為 1隔段時間後換為 0然後持續到週期結束再重新開始其中 1所佔有的比例就是負載率當 D=0時為 0而 D=255時為 100

3和其他參數類似負載率(D)以 duty為其輸入點而以 kDuty為其參數值

模組程式範例PLS_WAVEasm

local amp R0 IP kAmp 輸入點脈衝波的振幅 local frq R1 IP kFrq 輸入點脈衝波的頻率 local th R2 IP kTh 輸入點脈衝波的相角 local bias R3 IP kBias 輸入點脈衝波的中心偏移 local duty R4 IP kDuty 輸入點脈衝波的負載率 local out R5 OP 輸出點脈衝波輸出 local ang R6 內部變數相位角65536=360deg local kAmp R7 1000 參數振幅值 local kFrq R8 1000 參數頻率值=655368000Hz local kTh R9 0 參數相角值360deg=256 local kBias R10 0 參數偏移值 local kDuty R11 128 參數負載率100 =256 data 12 模組變數區長度及初值 initial 啟動程序 WR ang0 WR out0 ang=out=0 RET timer 即時控制程序(8KHz)

60

RD ang ADD (frq) WR ang ang+=frq SFR 8 ADD (th) AND 255 ACC=(ang256+th)amp0x00ff SUB (duty) RD (amp) JLT t1 RD 0 ACC=(amp0) t1 ADD (bias) WR out out=ACC+bias RET

IIR 一階濾波器

此模組執行一階的 IIR濾波器方塊圖如下

kau x

Z-1

+

+

-

+低通濾波器

高通濾波器dx lp

hp

濾波器參數的計算公式如下

1假設濾波器的頻寬為 hz則 ωn=hz628 2若系統頻率為 8KHz則抽樣週期 dT為 dT=dt8000 其中 dt為模組參數 3則濾波器參數為 ka=ωndT4096或是 =hzdt62880004096即 =hzdt32 4當 dt決定後所允許的訊號頻寬為(4000dt)換句話說訊號頻寬會因為 dt增加而下降

為了方便實驗的運用下面列出常用的參數對照表

濾波頻寬

(Hz)

10 20 50 100 200 500 1000 2000

訊號頻寬

(Hz)

400 800 2000 4000 4000 4000 4000 4000

模組參數 dt 10 5 2 1 1 1 1 1

模組參數 ka 320 320 320 320 640 1600 3200 6400

表格的運用方式如下

1首先決定濾波頻寬 2接著查表找出對映的參數 dt和 ka 3再查表得到對映的訊號頻寬以決定是否需要串接前級濾波器

61

模組程式範例IIR1_FILTERasm

local u R0 IP 輸入點濾波器輸入 local lp R1 OP 輸出點低通濾波器輸出 local hp R2 OP 輸出點高通濾波器輸出 local dt R3 1 參數抽樣週期 local ka R4 4096 參數增益 ka10=4096 local prd R5 內部變數抽樣週期用 data 6 模組變數區長度 initial 開機啟動程序 WR lp0 WR hp0 WR prd1 RET lp=hp=0prd=1 timer 即時控制程序 SUB prd1 JNZ b9 if (--prdgt0) return RD dt WR prd prd=dt RD (u) SUB lp WR hp hp=u-lp MUL ka SFR 12 ADD lp WR lp lp+=(hpka4096) b9 RET

資料蒐集模組

資料蒐集模組是一個非常特殊的模組專門配合 eTTY 程式中的示波器使用

模組程式範例DAS4asm

local cmd R0 0 紀錄命令0=停止1=前置記錄2=正觸發4=負觸發6=觸發記錄 local dt R1 1 抽樣週期每 dT抽樣一次 local tab R2 TP DAS表格啟始位址 local cnt R3 0 目前記錄點(0~255) local ch1 R4 0 定義頻道1的變數位址 local ch2 R5 0 定義頻道2的變數位址 local ch3 R6 0 定義頻道3的變數位址 local ch4 R7 0 定義頻道4的變數位址 local trg R8 0 定義觸發頻道的變數位址 local th R9 0 觸發準位 local tail R10 0 觸發後的抽樣個數 local buf R11 1 抽樣計數(1~dt) local pnt R12 表格位址計算pnt=tab+cnt4 local len R13 表格長度計算(0~256) data 14 定義模組變數區的長度 table tab 1024 定義表格的長度 initial 啟動程序 WR cmd0 RET cmd=0 timer 控制程序

62

ADD cmd0 JZ t9 if (cmd==0) return SUB buf1 JNZ t9 if (--buf)gt0) return RD dt WR buf dt=buf RD cnt ADD 1 AND 0xff WR cnt cnt=(cnt+1)amp0xff SFL 2 ADD tab WR pnt pnt=tab+cnt4 RD (ch1) WR (pnt) ADD pnt1 pnt++=ch1 RD (ch2) WR (pnt) ADD pnt1 pnt++=ch2 RD (ch3) WR (pnt) ADD pnt1 pnt++=ch3 RD (ch4) WR (pnt) pnt =ch4 RD cmd SUB 1 JZ t9 SUB 1 JZ t2 SUB 1 JZ t3 SUB 1 JZ t4 SUB 1 JZ t5 SUB 1 JZ t6 JR t7 t2 RD (trg) SUB th JGE t9 ADD cmd1 JR t9 wait trgltth t3 RD (trg) SUB th JLE t9 JR t6 wait trggtth t4 RD (trg) SUB th JLE t9 ADD cmd1 JR t9 wait trggtth t5 RD (trg) SUB th JGE t9 JR t6 wait trgltth t6 WR len0 WR cmd7 len=0cmd=7 t7 ADD len1 SUB tail JLT t9 WR cmd0 if ((++len)gt=0x80) cmd=0 t9 RET

與 DC 馬達控制相關的程式模組有以下 4個程式模組說明如下

(1)加減速控制模組 ACC_controlasm (2)光電盤輸入模組 POS_inputasm (3)PWM輸出模組 PWM_outputasm (4)PD控制模組 PD_controlasm

71加減速控制模組 此程式模組主要功能在於執行位置控制的加減速命令修正其數學模式採用 Lynn

濾波器的架構參見下圖

cmd

2

+

old Z -1

-

Z -1

Z -1

Z-1

Z-1x0 x1 x8 x9 x16

+ -

++

2

Z-1

Z-1 y1 y2

+

-

y0

+ +

sumZ-1

+164

12

out

dif

+

63

加減速控制模組方塊圖

其中

1Lynn 濾波器的階數固定成八階也就是 m=8其公式為 H(z) = (1-2Z-m+Z-2m)(1-2Z-1+Z-2)m2

2因為m=8所以m2=64因此最後計算低通濾波的部份時要先做除 64的運算 3因為低通濾波(lp)和 y0之間有 64倍的差異代表 y0y1y2的變化範圍比濾波器輸

入值要擴大許多例如輸入值在+-1000變化時y0y1y2很可能會在+-64000之間變化這範圍已經超出整數處理的範圍很可能會造成錯誤的計算結果

4所以在實驗時輸入值的變化範圍必須控制在+-500之間以保證計算的正確性 5對於 Lynn 濾波器當 m=8時其濾波器的頻寬固定為 1 kHzmdt也就是 dt=1時頻寬為 125 Hz dt=2時頻寬為 625Hz依此類推 6對於 Lynn 濾波器其濾波器的延遲固定為 m個抽樣週期因此設計 hp = x8 - lp 即可得到高通濾波器的對應結果 7其中乘 2和除 64的運算以移位運算取代所以整個程式中並無任何乘法運算 8Lynn 濾波器本身並不是穩定濾波器所以在程式啟動時必須確實的將所有狀態

(x0~x16)歸零否則會產生不穩定的狀態輸出

因為 Lynn濾波器中所有參數固定所以除了抽樣週期 dt 之外並無任何可調參數

抽樣週期 dt 可以控制頻寬dt 越大則濾波器頻寬越低

將步階命令值的輸出送入 Lynn 濾波器中經由低通濾波器的效應可以減緩命

令的變化程度達到加減速控制的目的以下為使用 Lynn 濾波器型式實現加減速控

制的組合語言程式列印 如欲更進一步瞭解 Lynn 濾波器與 FIR 數位濾波器之間的關係可以參考通訊實驗

四數位濾波器設計(FIR)中之說明

ACC_controlasm程式列印 local cmd R0 IP 輸入點位置命令

local out R1 OP 輸出點加減速處理後的位置命令

local dif R2 OP 輸出點位置微分命令

local axis R3 0 馬達編號0=X1=Y2=Z3=C

local old R4 內部變數微分計算用

local sumL R5 內部變數積分計算用

local sumH R6 內部變數積分計算用

local y0 R7 內部變數y(0~2)

local y1 R8 local y2 R9

local x0 R10 內部變數x(0~16)

local x1 R11 local x2 R12 local x3 R13 local x4 R14

local x5 R15 local x6 R16 local x7 R17 local x8 R18

local x9 R19 local x10 R20 local x11 R21 local x12 R22

local x13 R23 local x14 R24 local x15 R25 local x16 R26

64

data 27 模組變數區長度

initial 開機啟動程序

WR dif0 RD (cmd) WR out WR old dif=0 out=old=cmd

sumHL=cmd64

SFL 6 WR sumL RD out SFR 10 SGN 5 WR sumH

RPT 17 WR x00 RPT 3 WR y00 RET x[0~16]=0y[0~2]=0

timer 即時控制程序

RD (cmd) SUBX old WR x0 x0=cmd-old old=cmd

SUB x81 ADD x16 ADD y11 SUB y2 WR y0 y0=x0-2x8+x16+2y1-y2

SGN ADD sumL WR sumL RDH ADC sumH WR sumH sumHL+=y0

WRH RD sumL SFR 6 WR out out=sumHL64

RD y0 SGN SFR WR dif dif=y032mm

RD x0 RPT 16 RDX x1 x[i]=x[i-1] i=1~16

RD y0 RDX y1 WR y2 y[i]=y[i-1] i=1~2

b9 RET

72光電盤輸入模組

DC馬達的位置由光電盤量測之預設儲存於 0xac與 0xbe二個輸入埠位址中其中位址 0xac記錄 X軸馬達的位置位址 0xbe記錄 Y軸馬達的位置由於本實驗的DC馬達接在 Y軸的位置上因此程式中直接選用 Y軸的輸入 光電盤位置輸入的程式列印如下其中速度由位置的差分而得至於馬達的位置

則使用內部 2個 word加以記錄精度為 32位元 POS_inputasm程式列印 local spd R0 OP 輸出點速度量測值

local ang R1 OP 輸出點角度量測值

local angH R2 內部變數角度的 32 位元部分

local mode R3 0x308 模式選擇15MHzAB 相正反向輸入

local pht R4 0xac 輸入阜地址光電盤輸入(0xac)

local phtc R5 0xbe 輸入阜地址光電盤模式(0xbe)

local old R6 內部變數速度更新用

data 7 模組變數區長度

initial 開機啟動程序

RD mode WR (phtc) phtc=mode

RD (pht) WR old WR spd0 RET old=phtspd=0

timer 即時控制程序

RD (pht) SUBX old SGN 11 WR spd spd=(pht-old)old=pht

65

ADD ang WR ang angHL+=spd

RDH ADC angH WR angH

RET

73 PWM輸出控制模組 模組方塊

cmd PWM輸出

程式說明 1在開機時將切換保護時間寫到輸出阜 0xbc上其中切換保護值為 0~6360=5us 2在每次 timer interrupt時將 cmd訊號處理後寫到輸出阜 0xb8上

PWM_outputasm程式列印 local cmd R0 IP gnd 輸入點v相命令

local gain R1 4096 參數輸出增益1=4096

local bias R2 2048 參數輸出偏壓0=2048

local limit R3 4095 參數輸出極限1=4095

local zone R4 0x88f0 參數頻率=12KHz切換保護=5us

local pwm R5 0xb8 輸出阜地址PWM0 輸出(0xb8)

local mode R6 0xbc 輸出阜地址PWM 模式(0xbc)

local p0md R7 0xf8 輸出阜地址port0 模式(0xf8)

local gnd R8 0 輸入接地點

data 9 模組變數區長度

initial 開機啟動程序

RD bias WR (pwm) pwm=bias

RD 0xffff WR (p0md) set port0 mode

RD zone WR (mode) RET mode=zone

stop 關機保護程序

RD bias WR (pwm) RET pwm=bias

timer 即時控制程序

RD (mode) xor 1 and 1 WR (mode) trigger watch-dog

RD (cmd) MUL gain SFR 12 ADD bias ACC=(cmdgain4096)+bias

MAX 0 MIN limit WR (pwm) pwm=limit(ACC)

RET

66

74 PD 控制模組

PD控制的模組方塊參見圖二十一所示其中比例控制的部份直接由增益 kp加以調整微分控制的部份則由誤差的差分經增益 kd的調整而得

Σ+

-

cmd

fdk

err out

Σ

pk

dk

Σ

+

+

+

-

old1minusZ

PD控制器的方塊圖

PD_controlasm程式列印 local cmd R0 IP gnd 輸入點位置命令(可忽略)

local fdk R1 IP gnd 輸入點位置回授(可忽略)

local out R2 OP 輸出點用以控制速度迴路

local kp R3 256 參數增益 kp10=256

local kd R4 0 參數增益 kd10=256

local err R5 0 內部變數

local old R6 0 內部變數

local gnd R7 0 無輸入時的短路點

data 8 模組變數區長度

initial 開機啟動程序

WR out0 WR old0 RET out=old=0

timer 即時控制程序

RD (cmd) SUB (fdk) PRTF WR err

MUL kp SFR 8 P=(cmd-fdk)kp256

RDS err SUBX old MUL kd SFR 8 D=(err-old)kd256

ADDS

WR out out=P+D

RET

程式中預設增益值的 10以整數值 256為基底因此使用 SFR 8的指令加以調

整另外在在計算微分項的程式部份用到 SUBX old的指令其詳細的暫存器動作如

下 參考 piDSP的指令說明SUBX指令將總共用到 3個時序參考錯誤 找不到參照

67

來源在時序 1時將原先 AX的資料拷貝一份到 HX中時序 2時正式執行減

法的動作所以 AX暫存器中的內容會變成 err-old時序 3時DSP會將存放在 HX暫存器中的內容拷貝一份到 old的記憶體中也就是經由 SUBX此一精簡指令將

同時完成計算差分所需要的相減與資料疊代的動作有效的利用 piDSP控制器 DSP核心的精簡指令將可以大幅提昇系統的計算速度

HX AXoldSUBXerr err

old

err

errerr olderr minus

1_err

errerr olderr minus err

1_err

1

2

3

SUBX的指令時序與暫存器變化

68

8附錄快速安裝說明

光纖網路通訊 FPGA 發展系統 (適用於 WIN-XP200098 系統)

快速安裝說明

26Pin 負載輸出入埠

雙電源︵5

12

伏︶輸入埠

單電源︵5

伏︶輸入埠

USB

光纖線輸

號 光纖線輸出埠

入 傳 埠

首先將光碟片 RFFPGA 目錄檔案拷貝在您工作硬碟裡面

第一次安裝時先將 USB 傳輸線接上電腦主機將電源供應器接上 FPGA 模組此時電

腦會出現安裝 USB-Serial 驅動程式選擇從清單安裝此驅動程式放置在光碟片

RFFPGA-USBdrive 選擇您目前安裝系統

可選擇 WIN-98WIN-MEWIN-2000WIN-XP 系統配合您現在工作電腦作業系統

69

注意一般電腦 USB 埠很多插口當您安裝驅動程式時是配合您當時插入之埠

下次如您插入不同接口埠時電腦會再次要求安裝驅動程式這是正常現象請再次安

裝驅動程式否則無法使用

FPLC 操作

首先進入 RFFPGA裡子目錄 testASM直接點選 fPLCexe 出現下面操作畫面(也可直接將

此檔案放置桌面直接點選)

(或者選擇 File 再執行 Setuphellip 選擇您要執行 CAI 檔)

70

進入下面操作畫面 首先使用滑鼠在 FPGA下載按鈕單擊動作使 FPGA變成 DSP晶片 實驗一至實驗五皆為使用 DSP組合語言設計程式其原始程式分別為 testASM1至testASM5可使用 texPad 開啟與編輯程式內容 實驗三與實驗五多有 IO控制動作 當選擇實驗三時出現下面畫面

71

eM_USB 模組

數字型 LED

0 1 2 34 5 6 78 9 A BC D E F

燈號型 LED

44 鍵盤

ADC0 ADC1 DAC0 DAC1

LED 選擇KEY 選擇

模 式 1

0123

注意操作畫面 3與 4 說明開關與按鍵選擇位置後選擇程式下載再按程式啟動如您

按下 0-3按鍵時燈號型 LED會有不同方向閃爍顯示程式停止時結束所有 IO控制動作再按回首頁選擇其他實驗 實驗四與實驗五

模式3

0 1 2 34 5 6 78 9 A BC D E F

按照上面開關選擇直接操作如果以上實驗皆能按照正常操作表示您光纖網路通訊

FPGA發展模組以能正常使用 注意 開機與關機動作順序如下

開機電腦啟動 --- eM_USB 模組電源接上 --- USB 接上電腦 ---

啟動 FPLC 軟體 --- 下載 FPGA 程式

關機關閉 FPLC 軟體 --- eM_USB 模組電源拔掉 --- 拔掉電腦 USB 接頭 ---關掉

電腦

如果以上順序有亂可能造成 USB 找不到驅動造成無法下載經過幾次測試還是

無法下載建議重新啟動電腦主機按照正確步驟操作

72

FPGA 下載操作

進入 FPLC 操作系統按照下列步驟選擇節點模組與下載 bit FPGA 檔案

在 VHDLDEMO 子目錄下您可以選擇您目前 FPGA 種類型號在此型號下我們已將 VHDL

與數位邏輯設計課本範例全部放於此處

73

光纖網路連線 FPGA 下載操作

首先利用光纖線將 eM_USB0 模組光纖輸出埠接至 eM_USB1 模組光纖輸入埠以此

類推最後再將最後 eM_USBN 模組光纖輸出埠接至 eM_USB0 模組光纖輸入埠配置

如附圖方式

個人電腦(Windows) eM_USB模組

0USB

eM_USB模組1

光纖網路

eM_USB模組2

eM_USB模組N

配置完成後進入 FPLC 系統首先必須先將 Node00 下載在 testASM 子目錄裡

piDSPv0bit 檔讓 eM_USB0 模組 FPGA 具備 DSP 功能才能執行光纖網路通訊

操作如下

此時您就可以選擇分別下載至各模組 FPGA 檔 bit

74

安裝 FPLC 注意事項

當您進入 FPLC 時

按 FILE 選擇 programhellip 選擇檔案為 exp_dcmplc 出現下面畫面

正常顯示畫面為

75

DOS 環境操作

在 PC 端的操作是在 Windows 環境中的 DOS 視窗中執行指令範例如下

eFPGA progNETbit 下載 FPGA電路至網路節點0(即 USB節點)中 eFPGA testLEDbit 1 下載 FPGA電路至網路節點1中

對於單一節點的控制程序如下

1將 eM_USB模組連結個人電腦的 USB端 2eM_USB模組開機 3執行下載指令即可 eFPGA xxxxbit 4若要更改 FPGA電路只要重新執行下載指令即可

對於多個網路節點的控制程序如下

1第一組 eM_USB模組連結個人電腦的 USB端再以光纖網路依序其他各節點 2連接 USB界面者為模組0從光纖發射端連接出去的模組為1依此類推 3將所有 eM_USB模組開機 4執行下載指令如下 eFPGA progNETbit 模組0必須先下載指定的 FPGA電路 eFPGA xxxxbit 1 再依序下載其他網路模組的 FPGA電路 eFPGA yyyybit 2 eFPGA zzzzbit 最後再重新下載模組0的 FPGA電路 5換句話說模組0必須先執行 progNETbit讓光纖網路接受 FPGA控制後才能透過光纖網路下載至其他節點等全部網路節點下載完畢後再將模組0的 FPGA重新下載讓模組0也可自由執行任意的 FPGA電路

6若要更改某一個網路節點中的 FPGA電路只要重新執行下述指令 eFPGA progNETbit 模組0必須先下載指定的 FPGA電路 eFPGA yyyybit 2 下載指定網路模組的 FPGA電路 eFPGA zzzz bit 最後再重新下載模組0的 FPGA電路 換句話說除非模組0中的 FPGA已經包括光纖網路管理電路否則一定要先在

模組0中下載網路管理電路後才能下載指定網路節點的 FPGA電路

76

光纖網路通訊 FPGA 發展系統

系統配置

光纖網路通訊 FPGA 發展系統的系統配置圖如下

個人電腦(Windows) eM_USB模組

0USB

eM_USB模組1

光纖網路

eM_USB模組2

eM_USB模組N

其中

1基本模組為 eM_USB模組可用 USB界面和個人電腦連線並提供 USB對光纖網路的轉換功能使得個人電腦可以獨立控制光纖網路中的每個網路節點

2eM_USB模組也可以作為光纖網路中的網路節點透過光纖網路而接受個人電腦的

監控 3就個人電腦而言不論是 USB界面直接連結或是以光纖網路間接連結的 eM_USB模組都是可以直接監控的網路節點最多可以同時控制一個 USB節點和 30個網路節點

4對於每一個網路節點個人電腦都可執行 eM_USB模組中 FPGA的電路下載工作並在適當的 FPGA電路配合下可執行 eM_USB模組中 FPGA內部電路的讀寫控制 5透過適當的 FPGA電路設計各網路節點都可透過光纖網路和其他任何網路節點

作同步通訊執行 FPGA內部記憶體的資料交換資料交換頻率可達 1KHz以上

77

網路模組配置

每個網路模組的標準配置圖如下

eM_USB模組光纖網路

USB eM_FPGA卡

eM_DEMO模組

eM_EXP實驗模組

DC電源

其中

1網路模組以 eM_USB模組為主提供基本的 USB界面和光纖網路連線 2eM_USB模組中的 FPGACPLD採用插卡型式可選擇不同的 eM_FPGA卡包括

eM_2V1K卡可選用 Virtex系列的 XC2V250和 XC2V1000 eM_3S1K卡可選用 Spartan3系列的 XC3S400XC3S1000和 XC3S1500 eM_3S50卡可選用 Spartan3系列的 XC3S50XC3S200和 XC3S400 eM_95XL卡可選用 9500XL系列的 XC95144XL和 XC95288XL 3eM_USB模組中的對外連線有兩種一種是 26P接頭用以連接既有的各種實驗模

組另一種是兩組 50P接頭將 FPGA中各接腳引出用以連接專題實驗 4eM_DEMO模組就是插上 50P接頭的教學模組其中包括 LED 數字顯示和 44鍵盤也具備兩組的 ADC和兩組的 DAC接頭提供類比訊號的測試工具

常用的實驗組合包括

1精簡組合包括(eM_USB+eM_FPGA)提供基本的網路節點適用於專題實驗 2標準組合包括(eM_USB+eM_FPGA+eM_DEMO)提供基礎 FPGA設計的教學實驗

3實驗組合包括(eM_USB+eM_FPGA+eM_DEMO+eM_EXP)提供進階的 FPGA實驗可依需求選用不同的實驗模組

78

eM_USB 模組

eM_USB 模組的電路配置圖如下

TxRx

DCPower

USB

JP2

JP3

光纖界面

外加電源

PC連線

JP1

eM_FPGA模組

FT232 CPLD FlashROM

SRAM

10cm

6cm

JP4

其中

1對外的連線接頭包括 DC電源 可選擇單電源(5V)或是多電源(5V+12V-12V)兩種 USB界面 直接連接個人電腦 光纖界面連接光纖網路 2實驗界面包括 JP1負責內部 CPLD的電路下載 JP2JP3兩組 50P的擴張用接頭 JP4 標準 26P接頭用以連接各種實驗模組 3內部的電路配置包括 A以 SO-DIMM接頭連接各種 eM_FPGA卡 B內附 EEPROMFlashROM和 SRAM提供 FPGA作應用測試 C以一顆 FT232BM作為 USB界面解碼而以一顆 CPLD作為光纖網路解碼 D提供各種 eM_FPGA卡的電路下載功能 4內附五顆 LED由上而下依序為 usbLED指示 USB界面的讀寫狀態 tstLED可由 FPGA電路自行定義 stsLED可由 FPGA電路自行定義 RxLED 可由 FPGA電路自行定義 TxLED 可由 FPGA電路自行定義

79

外部接腳定義

外部接頭的接點順序圖示如下

上視圖

JP11 9 JP4

126225

JP31

50249

JP21

50249

而各接頭的接點定義如下

JP1 JP4 JP2 JP3 1+33V 1+12V 2+12V 1 GND 2 GND 1 GND 2 GND 2GND 3 ADC 4 DAC 3POWER 4ALARM 3 +5V 4 +5V 3nc 5 yPB2 6 yPB3 5RxNET 6TxNET 5+12V 6+12V 4TCK 7 yPB1 6 yPB4 7RxUSB 6TxUSB 7-12V 6-12V 5nc 9 yPB0 10yPB5 9RxCAN 10TxCAN 9 ADC 10 DAC 6TDO 11yPB6 12yPB7 11P0D0 12P0D1 11P1D0 12P1D1 7TDI 13yGND 14yPC3 13P0D2 14P0D3 13P1D2 14P1D3 8nc 15yPC2 16yPC1 15P0D4 16P0D5 15P1D4 16P1D5 9TMS 17yPC0 18yPA0 17P0D6 18P0D7 17P1D6 18P1D7 19yPA1 20yPA2 19P0D8 20P0D9 19P1D8 20P1D9 21yPA3 22GND 21P0D10 22P0D11 21P1D10 22P1D11 23GND 24+5V 23P0D12 24P0D13 23P1D12 24P1D13 25+5V 26nc 25P0D14 26P0D15 25P1D14 26P1D15 27P2D0 28P2D1 27PxA0 28PxA1 29P2D2 30P2D3 29PxA2 30PxA3 31P2D4 32P2D5 31PxA4 32PxA5 33P2D6 34P2D7 33PxA6 34PxA7 35P2D8 36P2D9 35PxB0 36PxB1 37P2D10 38P2D11 37PxB2 38PxB3 39P2D12 40P2D13 39PxB4 40PxB5 41P2D14 42P2D15 41PxB6 42PxB7 43ADC0 44ADC1 43PxC0 44PxC1 45ADC2 46ADC3 45PxC2 46PxC3 47ADC4 48ADC5 47PxC4 48PxC5 49DAC0 50DAC1 49PxC6 50PxC7

80

eM_FPGA 模組

在各種 eM_FPGA 模組中FPGA 對外電路的標準配置圖如下

24576MHz

FlashROM

26PSRAM

EEPROM

mD[8]

yPA[4]

FPGACPLD

mA[19]mRDmWRmCSeeCKeeCSeeDIeeDO

光纖界面 RxNETTxNET

USB 界面 RxUSBTxUSBCLK24MPOWERALARM

LED

tstLEDstsLEDRxLEDTxLED

yPB[8]yPC[4]

ADCDAC

ADC[8]

實驗模組

ADC[2]

DAC[2]

xPA[4]

xPB[8]

xPC[4]

基礎實驗

其中

1FPGACPLD可以選擇下述幾種 XC2V250XC2V1000 採用 eM_2V1K模組其中 FPGA為 FG456包裝 XC3S400XC3S1000XC3S1500採用 eM_3S1K模組其中 FPGA為 FG456包裝 XC3S400XC3S1000XC3S1500採用 eM_3S1K模組其中 FPGA為 FG456包裝 XC3S50XC3S200XC3S400 採用 eM_3S50模組其中 FPGA為 TQ144包裝 XC95144XLXC95288XL 採用 eM_95XL模組其中 CPLD為 TQ144包裝 2採用 FG456包裝者可以控制所有的 IO界面 3採用 TQ144包裝者只是不能控制 RAM和 FlashROM而可以控制其他所有的界面 4所有 FPGA模組都可自由選擇由 USB界面或是由光纖界面下載電路但是 CPLD模組只能固定由 USB界面下載電路

5所有 FPGACPLD模組都可透過 26P接頭連接既有的各種實驗模組

81

FPGA 接腳對照表

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

mD0 XD6 mD0 A17 C13 -- -- mD1 XD7 mD1 B17 D12 -- -- mD2 XD8 mD2 C17 D11 -- -- mD3 XD9 mD3 D17 C11 -- -- mD4 XD10 mD4 E17 D10 -- -- mD5 XD11 mD5 E16 C10 -- -- mD6 XD12 mD6 E14 D9 -- -- mD7 XD13 mD7 E13 D7 -- -- mA0 XD14 mA0 D13 C7 -- -- mA1 XD15 mA1 C13 D6 -- -- mA2 XA0 mA2 V5 C3 -- -- mA3 XA1 mA3 U5 C4 -- -- mA4 XA2 mA4 Y2 D3 -- -- mA5 XA3 mA5 Y1 D4 -- -- mA6 XA4 mA6 V4 E3 -- -- mA7 XA5 mA7 V3 E4 -- -- mA8 XA6 mA8 W2 F3 -- -- mA9 XA7 mA9 W1 F4 -- -- mA10 XA8 mA10 T2 G6 -- -- mA11 XA9 mA11 T1 K3 -- -- mA12 XA10 mA12 R4 K10 -- -- mA13 XA11 mA13 R3 L3 -- -- mA14 XA12 mA14 R2 L4 -- -- mRD XRD mRD R1 D5 -- -- mWR XWR mWR P6 C6 -- --

POWER P0A0 POWER B4 B20 P1 P5 ALARM P0A1 ALARM A4 A19 P2 P6 RxNET P0A2 RxNET C4 B19 P4 P7 TxNET P0A3 TxNET C5 A18 P5 P9 RxUSB P0B0 RxUSB B5 A15 P6 P10 TxUSB P0B1 TxUSB A5 B15 P7 P11 RxCAN P0B2 RxCAN D6 A14 P8 P12 RxCAN P0B3 TxCAN C6 B14 P10 P13

CLK24M CLK24M CLK24M E12 B12 P124 P38

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

PWM0H P3A0 P0D0 E6 A8 P21 P23 PWM0L P3A1 P0D1 E5 B8 P23 P24 PWM1H P3A2 P0D2 C2 B6 P24 P25 PWM1L P3A3 P0D3 C1 A5 P25 P26 PWM2H P3A4 P0D4 D2 B5 P26 P27

82

PWM2L P3A5 P0D5 D1 A4 P27 P28 PWMenb P3A6 P0D6 E4 B4 P28 P30 PHT1Z P3A7 P0D7 E3 A3 P30 P31 PHT1A P3B0 P0D8 G2 C1 P31 P32 PHT1B P3B1 P0D9 G1 C2 P32 P33 PHT0A P3B2 P0D10 H5 D1 P33 P34 PHT0B P3B3 P0D11 J6 D2 P35 P35 AMP0 P3B4 P0D12 H4 E1 P36 P39 AMP1 P3B5 P0D13 H3 E2 P40 P40 AMP2 P3B6 P0D14 H2 F2 P41 P41 AMP3 P3B7 P0D15 H1 G1 P44 P43 eeSK P0C3 P1D0 C10 B9 P20 P22 eeCS P0C2 P1D1 D10 A9 P18 P21 eeDI P0C1 P1D2 F10 B10 P17 P20 eeDO P0C0 P1D3 E10 B11 P15 P19 ssCK P0B7 P1D4 E8 A11 P14 P17 ssCS P0B6 P1D5 E7 A12 P13 P16 ssDI P0B5 P1D6 A6 B13 P12 P15 ssDO P0B4 P1D7 B6 A13 P11 P14

ppCLK P3C0 P1D8 K4 G2 P46 P44 ppDIN P3C1 P1D9 K3 K1 P47 P45 TxD P3C2 P1D10 K2 K2 P50 P46 RxD P3C3 P1D11 K1 L1 P51 P48

tstLED P3C4 P1D12 L5 L2 P52 P49 stsLED P3C5 P1D13 L4 M1 P53 P50 RxLED P3C6 P1D14 L3 M2 P55 P51 TxLED P3C7 P1D15 L2 N1 P56 P52

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

xPA0 P2A0 P2D0 AA3 N2 P59 P53 xPA1 P2A1 P2D1 Y4 T1 P60 P54 xPA2 P2A2 P2D2 AA4 T2 P63 P56 xPA3 P2A3 P2D3 AB4 U2 P68 P57 xPC0 P2A4 P2D4 W5 V1 P69 P58 xPC1 P2A5 P2D5 Y5 V2 P70 P59 xPC2 P2A6 P2D6 AA5 W1 P73 P60 xPC3 P2A7 P2D7 AB5 W2 P74 P61

-- P2B0 P2D8 V6 Y1 P76 P64 -- P2B1 P2D9 V7 Y2 P77 P66 -- P2B2 P2D10 W6 AA3 P78 P68

mCS P2B3 P2D11 Y6 AB4 P79 P69 mA15 P2B4 P2D12 V9 AA4 P80 P70 mA16 P2B5 P2D13 V10 AB5 P82 P71 mA17 P2B6 P2D14 W10 AA5 P83 P74 mA18 P2B7 P2D15 Y10 AA6 P84 P75 CS0 P2C0 ADC0 AA10 AB8 P85 P76

83

SDIN0 P2C1 ADC1 AB10 AA8 P86 P77 CS1 P2C2 ADC2 U10 AB9 P87 P78

SDIN1 P2C3 ADC3 U11 AA9 P89 P79 SCLK P2C4 ADC4 V11 AB10 P90 P80 CS2 P2C5 ADC5 W11 AA10 P92 P81

SDOUT P2C6 ADC6 Y11 AB11 P93 P82 LDAC P2C7 ADC7 AA11 AA11 P95 P83

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

xPB0 P1A0 PxA0 M1 M3 P135 P85 xPB1 P1A1 PxA1 M2 M4 P132 P86 yPB2 P1A2 PxA2 M3 N3 P131 P87 yPB3 P1A3 PxA3 M4 N4 P130 P88 yPB1 P1A4 PxA4 M5 T4 P129 P91 yPB4 P1A5 PxA5 M6 T5 P128 P92 yPB0 P1A6 PxA6 N1 U3 P127 P93 yPB5 P1A7 PxA7 N2 U4 P125 P94 yPB6 P1B0 PxB0 U13 V3 P119 P95 yPB7 P1B1 PxB1 V13 V4 P118 P96 xPB2 P1B2 PxB2 W13 W3 P116 P97 xPB3 P1B3 PxB3 Y13 W4 P113 P98 xPB4 P1B4 PxB4 AA13 Y3 P112 P100 xPB5 P1B5 PxB5 AB13 Y4 P96 P101 yPC3 P1B6 PxB6 U12 Y5 P97 P102 yPC2 P1B7 PxB7 V12 W5 P98 P103 yPC1 P1C7 PxC0 AB17 W11 P108 P113 yPC0 P1C6 PxC1 AA17 Y11 P107 P112 yPA0 P1C5 PxC2 Y17 W10 P105 P111 yPA1 P1C4 PxC3 W17 Y10 P104 P110 yPA2 P1C3 PxC4 AB18 W9 P103 P107 yPA3 P1C2 PxC5 AA18 W8 P102 P106 xPB6 P1C1 PxC6 Y18 W6 P100 P105 xPB7 P1C0 PxC7 W18 Y6 P99 P104

84

eM_DEMO 模組

eM_DEMO 模組的電路配置圖如下

eM_USB 模組

數字型 LED

0 1 2 34 5 6 78 9 A BC D E F

燈號型 LED

44 鍵盤

ADC0 ADC1 DAC0 DAC1

LED 選擇KEY 選擇

其中

1eM_DEMO模組的基本功能包括 A將 xPAxPBxPC等 16個 IO訊號引出控制 LED和鍵盤電路 B將 ADDA訊號引出並放大成+-10V的工作範圍 2LED和鍵盤可以選擇三種模式由 LED和 KEY 兩組開關作選擇圖示如下

模式1

0123

模式2 模式3

0 1 2 34 5 6 78 9 A BC D E F

0123

3模式14鍵輸入並搭配 16點的 LED燈號顯示其中 16點 LED分別對映到 xPA[0~3]xPB[0~7]和 xPC[0~3] 4組按鍵分別對映到 xPC[0~3] 4模式24鍵輸入並搭配四個 7段式數字顯示其中 數字顯示由 xPA[0~3]作數字掃瞄而由 xPB[0~7]作 7段式 LED控制 4組按鍵 分別對映到 xPC[0~3] 5模式316鍵輸入並搭配四個 7段式數字顯示其中 數字顯示由 xPA[0~3]作數字掃瞄而由 xPB[0~7]作 7段式 LED控制 16組按鍵由 xPA[0~3]作鍵盤掃瞄而由 xPC[0~3]作鍵盤讀取 6根據VHDL與數位邏輯設計的章節其中 第 1章至 10章的實驗採用模式1而 第 11章實驗採用模式2而 第 12章之後的實驗都採用模式3

85

FPGA UCF 定義

eM_3S1K 模組

NET CLK LOC = B12

NET XAlt0gt LOC = N2

NET XAlt1gt LOC = T1

NET XAlt2gt LOC = T2

NET XAlt3gt LOC = U2

NET XBlt0gt LOC = M3

NET XBlt1gt LOC = M4

NET XBlt2gt LOC = W3

NET XBlt3gt LOC = W4

NET XBlt4gt LOC = Y3

NET XBlt5gt LOC = Y4

NET XBlt6gt LOC = W6

NET XBlt7gt LOC = Y6

NET XClt0gt LOC = V1

NET XClt1gt LOC = V2

NET XClt2gt LOC = W1

NET XClt3gt LOC = W2

NET YAlt0gt LOC = W10

JP4 接頭

NET YAlt1gt LOC = Y10

NET YAlt2gt LOC = W9

NET YAlt3gt LOC = W8

NET YBlt0gt LOC = U3

NET YBlt1gt LOC = T4

NET YBlt2gt LOC = N3

NET YBlt3gt LOC = N4

NET YBlt4gt LOC = T5

NET YBlt5gt LOC = U4

NET YBlt6gt LOC = V3

NET YBlt7gt LOC = V4

NET YClt0gt LOC = Y11

NET YClt1gt LOC = W11

NET YClt2gt LOC = W5

NET YClt3gt LOC = Y5

在光碟片中 RFFPGAVHDLDEMOBIT3S1K 裡有 VHDL 與數位邏輯設計書本範例原始檔與合成檔

86

eM_3S50 模組

NET CLK LOC = P124

NET XAlt0gt LOC = P59

NET XAlt1gt LOC = P60

NET XAlt2gt LOC = P63

NET XAlt3gt LOC = P68

NET XBlt0gt LOC = P135

NET XBlt1gt LOC = P132

NET XBlt2gt LOC = P116

NET XBlt3gt LOC = P113

NET XBlt4gt LOC = P112

NET XBlt5gt LOC = P96

NET XBlt6gt LOC = P100

NET XBlt7gt LOC = P99

NET XClt0gt LOC = P69

NET XClt1gt LOC = P70

NET XClt2gt LOC = P73

NET XClt3gt LOC = P74

NET YAlt0gt LOC = P105

JP4 接頭

NET YAlt1gt LOC = P104

NET YAlt2gt LOC = P103

NET YAlt3gt LOC = P102

NET YBlt0gt LOC = P127

NET YBlt1gt LOC = P129

NET YBlt2gt LOC = P131

NET YBlt3gt LOC = P130

NET YBlt4gt LOC = P128

NET YBlt5gt LOC = P125

NET YBlt6gt LOC = P119

NET YBlt7gt LOC = P118

NET YClt0gt LOC = P107

NET YClt1gt LOC = P108

NET YClt2gt LOC = P98

NET YClt3gt LOC = P97

在光碟片中 RFFPGAVHDLDEMOBIT3S200 裡有VHDL與數位邏輯設計書本範例原始檔與合成檔

87

eM_95XL 模組

NET CLK LOC = SPIN38

NET XAlt0gt LOC = SPIN53

NET XAlt1gt LOC = SPIN54

NET XAlt2gt LOC = SPIN56

NET XAlt3gt LOC = SPIN57

NET XBlt0gt LOC = SPIN85

NET XBlt1gt LOC = SPIN86

NET XBlt2gt LOC = SPIN97

NET XBlt3gt LOC = SPIN98

NET XBlt4gt LOC = SPIN100

NET XBlt5gt LOC = SPIN101

NET XBlt6gt LOC = SPIN105

NET XBlt7gt LOC = SPIN104

NET XClt0gt LOC = SPIN58

NET XClt1gt LOC = SPIN59

NET XClt2gt LOC = SPIN60

NET XClt3gt LOC = SPIN61

NET YAlt0gt LOC = SPIN111

JP4 接頭

NET YAlt1gt LOC = SPIN110

NET YAlt2gt LOC = SPIN107

NET YAlt3gt LOC = SPIN106

NET YBlt0gt LOC = SPIN93

NET YBlt1gt LOC = SPIN91

NET YBlt2gt LOC = SPIN87

NET YBlt3gt LOC = SPIN88

NET YBlt4gt LOC = SPIN92

NET YBlt5gt LOC = SPIN94

NET YBlt6gt LOC = SPIN95

NET YBlt7gt LOC = SPIN96

NET YClt0gt LOC = SPIN112

NET YClt1gt LOC = SPIN113

NET YClt2gt LOC = SPIN103

NET YClt3gt LOC = SPIN102

在光碟片中 RFFPGAVHDLDEMOSVF95288XL 裡有VHDL與數位邏輯設計書本範例原始檔與合成

檔案

88

eM_FPGA 模組

NET CLK LOC = E12

NET XAlt0gt LOC = AA3

NET XAlt1gt LOC = Y4

NET XAlt2gt LOC = AA4

NET XAlt3gt LOC = AB4

NET XBlt0gt LOC = M1

NET XBlt1gt LOC = M2

NET XBlt2gt LOC = W13

NET XBlt3gt LOC = Y13

NET XBlt4gt LOC = AA13

NET XBlt5gt LOC = AB13

NET XBlt6gt LOC = Y18

NET XBlt7gt LOC = W18

NET XClt0gt LOC = W5

NET XClt1gt LOC = Y5

NET XClt2gt LOC = AA5

NET XClt3gt LOC = AB5

NET YAlt0gt LOC = Y17

JP4 接頭

NET YAlt1gt LOC = W17

NET YAlt2gt LOC = AB18

NET YAlt3gt LOC = AA18

NET YBlt0gt LOC = N1

NET YBlt1gt LOC = M5

NET YBlt2gt LOC = M3

NET YBlt3gt LOC = M4

NET YBlt4gt LOC = M6

NET YBlt5gt LOC = N2

NET YBlt6gt LOC = U13

NET YBlt7gt LOC = V13

NET YClt0gt LOC = AA17

NET YClt1gt LOC = AB17

NET YClt2gt LOC = V12

NET YClt3gt LOC = U12

在光碟片中 RFFPGAVHDLDEMOBIT2V250 裡有VHDL與數位邏輯設計書本範例原始檔與合成檔

89

Page 52: RFFPGA 直流馬達實驗手冊juniortek.com.tw/program/manual/RF-DC-mal.pdf · em_demo模組 em_dcm 直流伺服馬達 dc電源 rffpga 系統的直流馬達實驗規劃 其中包括:

65 實驗 5-正弦波的位置控制 實驗說明在本實驗中改變命令的波形由方波改變為正弦波並建立如下的測

試方塊圖與上一實驗相比較僅更改命令的波形產生方塊 方塊圖中的模組功能說明如下 1用 fg2產生測試用的弦波位置命令 2將弦波位置命令送到加減速控制方塊處理後產生新的位置命令再與 io1 讀入的位

置回授訊號送到 PD 控制器方塊中產生電壓控制訊號再透過 io2 模組將訊號送出到伺服介面驅動馬達轉動

對應之 plc檔程式說明(exp_sinplc) echo off 畫面顯示開始

run dsp 0 選擇 DSP1

run stop run reset 既有程式停止

run testDCMmem 下載指定程式

das 1 ampfg2out 0 1024 SIN 波形 Volt 設定 DAS 頻道1

das 2 ampcn1out 0 1024 加速控制 Volt 設定 DAS 頻道2

das 3 ampio1spd 0 1024 馬達速度 Volt 設定 DAS 頻道3

das 4 ampio1ang 0 1024 馬達角度 Volt 設定 DAS 頻道4

plot select 0 設定示波器頁數

plot xunit 100000 0 設定示波器 X軸

plot yunit 1 2000 -300 設定示波器 Y1 軸

plot yunit 2 2000 -100 設定示波器 Y2 軸

plot yunit 3 50 100 設定示波器 Y3 軸

plot yunit 4 2000 300 設定示波器 Y4 軸

plot trigger 1 0 1 10 設定示波器觸發

52

plot scope 9 1 2 3 4 設定示波器顯示

module io2 設定 io2 模組

s cmd ampcn2out

module fg2 設定 fg1 模組

s kAmp 2000 s kFrq 100

module cn1 設定 cn1 模組

s cmd ampfg2out

module cn2 設定 cn2 模組

s cmd ampcn1out s fdk ampio1ang s kp 0x300 s kd 0x4000

module ft1 設定 ft1 模組

s u ampfg2out s dt 2 s ka 320

module io3 設定 io3 模組

s led ampfg2out

module 回復預設模組

run 1khz 設定抽樣頻率為 4KHz

run start DSP 開始執行

das stop pause 1 DAS 啟動 das start DAS 啟動

echo on 回復正常訊息顯示

CAI操控設計畫面規劃如下(EXP_sinCAI) page 1 畫面設計

53

page 2 畫面設計 page 3 畫面設計與實驗二 page 4相同畫面

方塊的參數設定可調整 PD控制器中的 kp和 kd值以調整系統之響應 實測響應圖

訊 號 說 明 訊 號 說 明 ch1 弦波產生器產生之位置命令 ch3 馬達角位置訊號 ch2 加減速模組輸出之位置命令 ch4 馬達角速度訊號

54

直流馬達之閉迴路弦波加減速位置控制響應圖

55

7組合語言說明

本節將針對 DC馬達伺服控制實驗專用的程式模組進行功能與程式碼的說明其

有關於波形產生器與資料擷取模組等說明如下

SIN_waveasm 正弦波產生器 PWM_waveasm 方波產生器 IIR1_filterasm 一階濾波器 DAS4asm 資料蒐集模組

弦波產生器

此模組會產生週期性的正弦波方塊圖如下

outfrq

kBiasbias

ampkAmp

kFrqth

kThf=1TB

θ

A

其中

1正弦波有四個參數振幅(A)頻率(F)相位(θ)和偏移(B)其公式為 out = A sin(2πF t +θ) + B 2對於單純的正弦波產生器所對映的參數包括 kAmp 振幅值 kFrq 頻率值kFrq=655368000Hz其中 Hz的範圍為 0~4000例如 1000Hz =gt frq=8192 100Hz =gt frq=819 10Hz =gt frq=82 1Hz =gt frq=8 kTh 相角值0~255代表 0~360的相位當 th=0 時為正弦波 th=64 時為餘弦波 th=128時為反相波依此類推 kBias偏移值 3對於可調變的正弦波產生器其對映的輸入點為 amp 控制振幅的輸入點可產生調幅(AM)波形 frq 控制頻率的輸入點可產生調頻(FM)波形 th 控制相位的輸入點可產生調相(PM)波形 bias控制偏移的輸入點可產生雙頻混波(相加)波形 4若不使用調變功能時各個輸入點時的預設值為 amp 指向 kAmp 的位址 frq 指向 kFrq 的位址

56

th 指向 kTh 的位址 bias指向 kBias的位址

模組程式範例SIN_WAVEasm

local amp R0 IP kAmp 輸入點sin波的振幅 local frq R1 IP kFrq 輸入點sin波的頻率 local th R2 IP kTh 輸入點sin波的相角 local bias R3 IP kBias 輸入點sin波的中心偏移 local out R4 OP 輸出點sin波輸出 local tab R5 TP 表格指標指向 sin[256]的表格 local ang R6 內部變數相位角65536=360deg local kAmp R7 1000 參數振幅值 local kFrq R8 1000 參數頻率值=655368000Hz local kTh R9 0 參數相角值360deg=256 local kBias R10 0 參數偏移值 data 11 模組變數區長度及初值 initial 啟動程序 WR ang0 WR out0 ang=out=0 RET timer 即時控制程序(8KHz) RD ang ADD (frq) WR ang ang+=frq SFR 8 ADD (th) AND 255 ACC=sin(ang256+th) ADD tab WRH RDM table-look-up MUL (amp) SFR 12 ADD (bias) WR out out=ACCamp4096+bias RET table tab 256 sin[256]表格區10=4096 0 101 201 301 401 501 601 700 00~070deg 799 897 995 1092 1189 1285 1380 1474 08~0F 1567 1660 1751 1842 1931 2019 2106 2191 10~17 2276 2359 2440 2520 2598 2675 2751 2824 18~1F 2896 2967 3035 3102 3166 3229 3290 3349 20~27 3406 3461 3513 3564 3612 3659 3703 3745 28~2F 3784 3822 3857 3889 3920 3948 3973 3996 30~37 4017 4036 4052 4065 4076 4085 4091 4095 38~3F 4096 4095 4091 4085 4076 4065 4052 4036 40~4790deg 4017 3996 3973 3948 3920 3889 3857 3822 48~4F 3784 3745 3703 3659 3612 3564 3513 3461 50~57 3406 3349 3290 3229 3166 3102 3035 2967 58~5F

57

2896 2824 2751 2675 2598 2520 2440 2359 60~67 2276 2191 2106 2019 1931 1842 1751 1660 68~6F 1567 1474 1380 1285 1189 1092 995 897 70~77 799 700 601 501 401 301 201 101 78~7F 0 65435 65335 65235 65135 65035 64935 64836 80~87180deg 64737 64639 64541 64444 64347 64251 64156 64062 88~8F 63969 63876 63785 63694 63605 63517 63430 63345 90~97 63260 63177 63096 63016 62938 62861 62785 62712 98~9F 62640 62569 62501 62434 62370 62307 62246 62187 A0~A7 62130 62075 62023 61972 61924 61877 61833 61791 A8~A8 61752 61714 61679 61647 61616 61588 61563 61540 B0~B7 61519 61500 61484 61471 61460 61451 61445 61441 B8~BF 61440 61441 61445 61451 61460 61471 61484 61500 C0~C7270deg 61519 61540 61563 61588 61616 61647 61679 61714 C8~CF 61752 61791 61833 61877 61924 61972 62023 62075 D0~D7 62130 62187 62246 62307 62370 62434 62501 62569 D8~DF 62640 62712 62785 62861 62938 63016 63096 63177 E0~E7 63260 63345 63430 63517 63605 63694 63785 63876 E8~EF 63969 64062 64156 64251 64347 64444 64541 64639 F0~F7 64737 64836 64935 65035 65135 65235 65335 65435 F8~FF

就程式結構而言說明如下

timer 即時控制程序(8KHz) RD ang ADD (frq) WR ang ang+=frq SFR 8 ADD (th) AND 255 ACC=sin(ang256+th) ADD tab WRH RDM table-look-up MUL (amp) SFR 12 ADD (bias) WR out out=ACCamp4096+bias RET

1基本上我們以查表法計算 sin()其輸入θ的範圍為 0~255對映到 0~360deg其輸出 sin(θ)的範圍為+-4096對映到+-10的範圍

2建立一個內部變數 ang其範圍為 0~65535對映到 0~360的相位角 3每個timer程序都執行 ang+=frq的動作更新目前的相位角接著依照 ang的相位角查表得到 sin(ang256+th)值

4由於表格長度為 256-word所以必須將 ang256才能得到正確的對映關係而 th範圍為 0~255所以不需要像 ang一般的做額外處理

5sin()的範圍為(+1-1)而在表格中以(+4096~-4096)的型式記錄相當於 10=4096所以執行 Asin()時還要用 SFR12指令做4096的動作才能正確的取得輸出值

58

6就頻率輸入 frq而言其計算原則是將θ=ωt轉化成θ=Σ(ωdt)因為抽樣頻率

為 8KHz所以 dt=18000而得到 frq=655368000Hz公式其中 Hz為真正的頻率在 8KHz的抽樣頻率下其範圍為 0~4000

鋸齒波產生器

此模組會產生週期性的鋸齒波方塊圖如下

outfrq

kBiasbias

ampkAmp

kFrqth

kThf=1TB

θ

A

其中

1鋸齒波也有四個參數振幅(A)頻率(F)相位(θ)和偏移(B)和正弦波的定義完全一致唯一的差異是其輸出為鋸齒波而非正弦波

2基本波形是從週期開始時為 0一直遞增到週期結束時到達最高點然後立刻回歸

到 0重新開始 3以程式結構而論鋸齒波程式幾乎就是正弦波的相位計算部分只差沒有正弦波的

查表處理而已

模組程式範例SAW_WAVEasm

local amp R0 IP kAmp 輸入點sin波的振幅 local frq R1 IP kFrq 輸入點sin波的頻率 local th R2 IP kTh 輸入點sin波的相角 local bias R3 IP kBias 輸入點sin波的中心偏移 local out R4 OP 輸出點sin波輸出 local ang R5 內部變數相位角65536=360deg local kAmp R6 1000 參數振幅值 local kFrq R7 1000 參數頻率值=655368000Hz local kTh R8 0 參數相角值360deg=256 local kBias R9 0 參數偏移值 data 11 模組變數區長度及初值 initial 啟動程序 WR ang0 WR out0 ang=out=0 RET timer 即時控制程序(8KHz) RD ang ADD (frq) WR ang ang+=frq SFR 8 ADD (th) AND 255 ACC=(ang256+th)amp0x00ff MUL (amp) SFR 8 ADD (bias) WR out out=ACCamp256+bias

59

RET

脈衝波產生器

outfrq

kBiasbias

ampkAmp

kFrqth

kThf=1TB

θ

A

pwm

kDutyduty

此模組會產生週期性的脈衝波方塊圖如下

其中

1脈衝波有五個參數其中振幅(A)頻率(F)相位(θ)和偏移(B)四個參數和正弦波

定義完全一樣另外再增加一個負載率(D) 2基本波形是從週期開始時為 1隔段時間後換為 0然後持續到週期結束再重新開始其中 1所佔有的比例就是負載率當 D=0時為 0而 D=255時為 100

3和其他參數類似負載率(D)以 duty為其輸入點而以 kDuty為其參數值

模組程式範例PLS_WAVEasm

local amp R0 IP kAmp 輸入點脈衝波的振幅 local frq R1 IP kFrq 輸入點脈衝波的頻率 local th R2 IP kTh 輸入點脈衝波的相角 local bias R3 IP kBias 輸入點脈衝波的中心偏移 local duty R4 IP kDuty 輸入點脈衝波的負載率 local out R5 OP 輸出點脈衝波輸出 local ang R6 內部變數相位角65536=360deg local kAmp R7 1000 參數振幅值 local kFrq R8 1000 參數頻率值=655368000Hz local kTh R9 0 參數相角值360deg=256 local kBias R10 0 參數偏移值 local kDuty R11 128 參數負載率100 =256 data 12 模組變數區長度及初值 initial 啟動程序 WR ang0 WR out0 ang=out=0 RET timer 即時控制程序(8KHz)

60

RD ang ADD (frq) WR ang ang+=frq SFR 8 ADD (th) AND 255 ACC=(ang256+th)amp0x00ff SUB (duty) RD (amp) JLT t1 RD 0 ACC=(amp0) t1 ADD (bias) WR out out=ACC+bias RET

IIR 一階濾波器

此模組執行一階的 IIR濾波器方塊圖如下

kau x

Z-1

+

+

-

+低通濾波器

高通濾波器dx lp

hp

濾波器參數的計算公式如下

1假設濾波器的頻寬為 hz則 ωn=hz628 2若系統頻率為 8KHz則抽樣週期 dT為 dT=dt8000 其中 dt為模組參數 3則濾波器參數為 ka=ωndT4096或是 =hzdt62880004096即 =hzdt32 4當 dt決定後所允許的訊號頻寬為(4000dt)換句話說訊號頻寬會因為 dt增加而下降

為了方便實驗的運用下面列出常用的參數對照表

濾波頻寬

(Hz)

10 20 50 100 200 500 1000 2000

訊號頻寬

(Hz)

400 800 2000 4000 4000 4000 4000 4000

模組參數 dt 10 5 2 1 1 1 1 1

模組參數 ka 320 320 320 320 640 1600 3200 6400

表格的運用方式如下

1首先決定濾波頻寬 2接著查表找出對映的參數 dt和 ka 3再查表得到對映的訊號頻寬以決定是否需要串接前級濾波器

61

模組程式範例IIR1_FILTERasm

local u R0 IP 輸入點濾波器輸入 local lp R1 OP 輸出點低通濾波器輸出 local hp R2 OP 輸出點高通濾波器輸出 local dt R3 1 參數抽樣週期 local ka R4 4096 參數增益 ka10=4096 local prd R5 內部變數抽樣週期用 data 6 模組變數區長度 initial 開機啟動程序 WR lp0 WR hp0 WR prd1 RET lp=hp=0prd=1 timer 即時控制程序 SUB prd1 JNZ b9 if (--prdgt0) return RD dt WR prd prd=dt RD (u) SUB lp WR hp hp=u-lp MUL ka SFR 12 ADD lp WR lp lp+=(hpka4096) b9 RET

資料蒐集模組

資料蒐集模組是一個非常特殊的模組專門配合 eTTY 程式中的示波器使用

模組程式範例DAS4asm

local cmd R0 0 紀錄命令0=停止1=前置記錄2=正觸發4=負觸發6=觸發記錄 local dt R1 1 抽樣週期每 dT抽樣一次 local tab R2 TP DAS表格啟始位址 local cnt R3 0 目前記錄點(0~255) local ch1 R4 0 定義頻道1的變數位址 local ch2 R5 0 定義頻道2的變數位址 local ch3 R6 0 定義頻道3的變數位址 local ch4 R7 0 定義頻道4的變數位址 local trg R8 0 定義觸發頻道的變數位址 local th R9 0 觸發準位 local tail R10 0 觸發後的抽樣個數 local buf R11 1 抽樣計數(1~dt) local pnt R12 表格位址計算pnt=tab+cnt4 local len R13 表格長度計算(0~256) data 14 定義模組變數區的長度 table tab 1024 定義表格的長度 initial 啟動程序 WR cmd0 RET cmd=0 timer 控制程序

62

ADD cmd0 JZ t9 if (cmd==0) return SUB buf1 JNZ t9 if (--buf)gt0) return RD dt WR buf dt=buf RD cnt ADD 1 AND 0xff WR cnt cnt=(cnt+1)amp0xff SFL 2 ADD tab WR pnt pnt=tab+cnt4 RD (ch1) WR (pnt) ADD pnt1 pnt++=ch1 RD (ch2) WR (pnt) ADD pnt1 pnt++=ch2 RD (ch3) WR (pnt) ADD pnt1 pnt++=ch3 RD (ch4) WR (pnt) pnt =ch4 RD cmd SUB 1 JZ t9 SUB 1 JZ t2 SUB 1 JZ t3 SUB 1 JZ t4 SUB 1 JZ t5 SUB 1 JZ t6 JR t7 t2 RD (trg) SUB th JGE t9 ADD cmd1 JR t9 wait trgltth t3 RD (trg) SUB th JLE t9 JR t6 wait trggtth t4 RD (trg) SUB th JLE t9 ADD cmd1 JR t9 wait trggtth t5 RD (trg) SUB th JGE t9 JR t6 wait trgltth t6 WR len0 WR cmd7 len=0cmd=7 t7 ADD len1 SUB tail JLT t9 WR cmd0 if ((++len)gt=0x80) cmd=0 t9 RET

與 DC 馬達控制相關的程式模組有以下 4個程式模組說明如下

(1)加減速控制模組 ACC_controlasm (2)光電盤輸入模組 POS_inputasm (3)PWM輸出模組 PWM_outputasm (4)PD控制模組 PD_controlasm

71加減速控制模組 此程式模組主要功能在於執行位置控制的加減速命令修正其數學模式採用 Lynn

濾波器的架構參見下圖

cmd

2

+

old Z -1

-

Z -1

Z -1

Z-1

Z-1x0 x1 x8 x9 x16

+ -

++

2

Z-1

Z-1 y1 y2

+

-

y0

+ +

sumZ-1

+164

12

out

dif

+

63

加減速控制模組方塊圖

其中

1Lynn 濾波器的階數固定成八階也就是 m=8其公式為 H(z) = (1-2Z-m+Z-2m)(1-2Z-1+Z-2)m2

2因為m=8所以m2=64因此最後計算低通濾波的部份時要先做除 64的運算 3因為低通濾波(lp)和 y0之間有 64倍的差異代表 y0y1y2的變化範圍比濾波器輸

入值要擴大許多例如輸入值在+-1000變化時y0y1y2很可能會在+-64000之間變化這範圍已經超出整數處理的範圍很可能會造成錯誤的計算結果

4所以在實驗時輸入值的變化範圍必須控制在+-500之間以保證計算的正確性 5對於 Lynn 濾波器當 m=8時其濾波器的頻寬固定為 1 kHzmdt也就是 dt=1時頻寬為 125 Hz dt=2時頻寬為 625Hz依此類推 6對於 Lynn 濾波器其濾波器的延遲固定為 m個抽樣週期因此設計 hp = x8 - lp 即可得到高通濾波器的對應結果 7其中乘 2和除 64的運算以移位運算取代所以整個程式中並無任何乘法運算 8Lynn 濾波器本身並不是穩定濾波器所以在程式啟動時必須確實的將所有狀態

(x0~x16)歸零否則會產生不穩定的狀態輸出

因為 Lynn濾波器中所有參數固定所以除了抽樣週期 dt 之外並無任何可調參數

抽樣週期 dt 可以控制頻寬dt 越大則濾波器頻寬越低

將步階命令值的輸出送入 Lynn 濾波器中經由低通濾波器的效應可以減緩命

令的變化程度達到加減速控制的目的以下為使用 Lynn 濾波器型式實現加減速控

制的組合語言程式列印 如欲更進一步瞭解 Lynn 濾波器與 FIR 數位濾波器之間的關係可以參考通訊實驗

四數位濾波器設計(FIR)中之說明

ACC_controlasm程式列印 local cmd R0 IP 輸入點位置命令

local out R1 OP 輸出點加減速處理後的位置命令

local dif R2 OP 輸出點位置微分命令

local axis R3 0 馬達編號0=X1=Y2=Z3=C

local old R4 內部變數微分計算用

local sumL R5 內部變數積分計算用

local sumH R6 內部變數積分計算用

local y0 R7 內部變數y(0~2)

local y1 R8 local y2 R9

local x0 R10 內部變數x(0~16)

local x1 R11 local x2 R12 local x3 R13 local x4 R14

local x5 R15 local x6 R16 local x7 R17 local x8 R18

local x9 R19 local x10 R20 local x11 R21 local x12 R22

local x13 R23 local x14 R24 local x15 R25 local x16 R26

64

data 27 模組變數區長度

initial 開機啟動程序

WR dif0 RD (cmd) WR out WR old dif=0 out=old=cmd

sumHL=cmd64

SFL 6 WR sumL RD out SFR 10 SGN 5 WR sumH

RPT 17 WR x00 RPT 3 WR y00 RET x[0~16]=0y[0~2]=0

timer 即時控制程序

RD (cmd) SUBX old WR x0 x0=cmd-old old=cmd

SUB x81 ADD x16 ADD y11 SUB y2 WR y0 y0=x0-2x8+x16+2y1-y2

SGN ADD sumL WR sumL RDH ADC sumH WR sumH sumHL+=y0

WRH RD sumL SFR 6 WR out out=sumHL64

RD y0 SGN SFR WR dif dif=y032mm

RD x0 RPT 16 RDX x1 x[i]=x[i-1] i=1~16

RD y0 RDX y1 WR y2 y[i]=y[i-1] i=1~2

b9 RET

72光電盤輸入模組

DC馬達的位置由光電盤量測之預設儲存於 0xac與 0xbe二個輸入埠位址中其中位址 0xac記錄 X軸馬達的位置位址 0xbe記錄 Y軸馬達的位置由於本實驗的DC馬達接在 Y軸的位置上因此程式中直接選用 Y軸的輸入 光電盤位置輸入的程式列印如下其中速度由位置的差分而得至於馬達的位置

則使用內部 2個 word加以記錄精度為 32位元 POS_inputasm程式列印 local spd R0 OP 輸出點速度量測值

local ang R1 OP 輸出點角度量測值

local angH R2 內部變數角度的 32 位元部分

local mode R3 0x308 模式選擇15MHzAB 相正反向輸入

local pht R4 0xac 輸入阜地址光電盤輸入(0xac)

local phtc R5 0xbe 輸入阜地址光電盤模式(0xbe)

local old R6 內部變數速度更新用

data 7 模組變數區長度

initial 開機啟動程序

RD mode WR (phtc) phtc=mode

RD (pht) WR old WR spd0 RET old=phtspd=0

timer 即時控制程序

RD (pht) SUBX old SGN 11 WR spd spd=(pht-old)old=pht

65

ADD ang WR ang angHL+=spd

RDH ADC angH WR angH

RET

73 PWM輸出控制模組 模組方塊

cmd PWM輸出

程式說明 1在開機時將切換保護時間寫到輸出阜 0xbc上其中切換保護值為 0~6360=5us 2在每次 timer interrupt時將 cmd訊號處理後寫到輸出阜 0xb8上

PWM_outputasm程式列印 local cmd R0 IP gnd 輸入點v相命令

local gain R1 4096 參數輸出增益1=4096

local bias R2 2048 參數輸出偏壓0=2048

local limit R3 4095 參數輸出極限1=4095

local zone R4 0x88f0 參數頻率=12KHz切換保護=5us

local pwm R5 0xb8 輸出阜地址PWM0 輸出(0xb8)

local mode R6 0xbc 輸出阜地址PWM 模式(0xbc)

local p0md R7 0xf8 輸出阜地址port0 模式(0xf8)

local gnd R8 0 輸入接地點

data 9 模組變數區長度

initial 開機啟動程序

RD bias WR (pwm) pwm=bias

RD 0xffff WR (p0md) set port0 mode

RD zone WR (mode) RET mode=zone

stop 關機保護程序

RD bias WR (pwm) RET pwm=bias

timer 即時控制程序

RD (mode) xor 1 and 1 WR (mode) trigger watch-dog

RD (cmd) MUL gain SFR 12 ADD bias ACC=(cmdgain4096)+bias

MAX 0 MIN limit WR (pwm) pwm=limit(ACC)

RET

66

74 PD 控制模組

PD控制的模組方塊參見圖二十一所示其中比例控制的部份直接由增益 kp加以調整微分控制的部份則由誤差的差分經增益 kd的調整而得

Σ+

-

cmd

fdk

err out

Σ

pk

dk

Σ

+

+

+

-

old1minusZ

PD控制器的方塊圖

PD_controlasm程式列印 local cmd R0 IP gnd 輸入點位置命令(可忽略)

local fdk R1 IP gnd 輸入點位置回授(可忽略)

local out R2 OP 輸出點用以控制速度迴路

local kp R3 256 參數增益 kp10=256

local kd R4 0 參數增益 kd10=256

local err R5 0 內部變數

local old R6 0 內部變數

local gnd R7 0 無輸入時的短路點

data 8 模組變數區長度

initial 開機啟動程序

WR out0 WR old0 RET out=old=0

timer 即時控制程序

RD (cmd) SUB (fdk) PRTF WR err

MUL kp SFR 8 P=(cmd-fdk)kp256

RDS err SUBX old MUL kd SFR 8 D=(err-old)kd256

ADDS

WR out out=P+D

RET

程式中預設增益值的 10以整數值 256為基底因此使用 SFR 8的指令加以調

整另外在在計算微分項的程式部份用到 SUBX old的指令其詳細的暫存器動作如

下 參考 piDSP的指令說明SUBX指令將總共用到 3個時序參考錯誤 找不到參照

67

來源在時序 1時將原先 AX的資料拷貝一份到 HX中時序 2時正式執行減

法的動作所以 AX暫存器中的內容會變成 err-old時序 3時DSP會將存放在 HX暫存器中的內容拷貝一份到 old的記憶體中也就是經由 SUBX此一精簡指令將

同時完成計算差分所需要的相減與資料疊代的動作有效的利用 piDSP控制器 DSP核心的精簡指令將可以大幅提昇系統的計算速度

HX AXoldSUBXerr err

old

err

errerr olderr minus

1_err

errerr olderr minus err

1_err

1

2

3

SUBX的指令時序與暫存器變化

68

8附錄快速安裝說明

光纖網路通訊 FPGA 發展系統 (適用於 WIN-XP200098 系統)

快速安裝說明

26Pin 負載輸出入埠

雙電源︵5

12

伏︶輸入埠

單電源︵5

伏︶輸入埠

USB

光纖線輸

號 光纖線輸出埠

入 傳 埠

首先將光碟片 RFFPGA 目錄檔案拷貝在您工作硬碟裡面

第一次安裝時先將 USB 傳輸線接上電腦主機將電源供應器接上 FPGA 模組此時電

腦會出現安裝 USB-Serial 驅動程式選擇從清單安裝此驅動程式放置在光碟片

RFFPGA-USBdrive 選擇您目前安裝系統

可選擇 WIN-98WIN-MEWIN-2000WIN-XP 系統配合您現在工作電腦作業系統

69

注意一般電腦 USB 埠很多插口當您安裝驅動程式時是配合您當時插入之埠

下次如您插入不同接口埠時電腦會再次要求安裝驅動程式這是正常現象請再次安

裝驅動程式否則無法使用

FPLC 操作

首先進入 RFFPGA裡子目錄 testASM直接點選 fPLCexe 出現下面操作畫面(也可直接將

此檔案放置桌面直接點選)

(或者選擇 File 再執行 Setuphellip 選擇您要執行 CAI 檔)

70

進入下面操作畫面 首先使用滑鼠在 FPGA下載按鈕單擊動作使 FPGA變成 DSP晶片 實驗一至實驗五皆為使用 DSP組合語言設計程式其原始程式分別為 testASM1至testASM5可使用 texPad 開啟與編輯程式內容 實驗三與實驗五多有 IO控制動作 當選擇實驗三時出現下面畫面

71

eM_USB 模組

數字型 LED

0 1 2 34 5 6 78 9 A BC D E F

燈號型 LED

44 鍵盤

ADC0 ADC1 DAC0 DAC1

LED 選擇KEY 選擇

模 式 1

0123

注意操作畫面 3與 4 說明開關與按鍵選擇位置後選擇程式下載再按程式啟動如您

按下 0-3按鍵時燈號型 LED會有不同方向閃爍顯示程式停止時結束所有 IO控制動作再按回首頁選擇其他實驗 實驗四與實驗五

模式3

0 1 2 34 5 6 78 9 A BC D E F

按照上面開關選擇直接操作如果以上實驗皆能按照正常操作表示您光纖網路通訊

FPGA發展模組以能正常使用 注意 開機與關機動作順序如下

開機電腦啟動 --- eM_USB 模組電源接上 --- USB 接上電腦 ---

啟動 FPLC 軟體 --- 下載 FPGA 程式

關機關閉 FPLC 軟體 --- eM_USB 模組電源拔掉 --- 拔掉電腦 USB 接頭 ---關掉

電腦

如果以上順序有亂可能造成 USB 找不到驅動造成無法下載經過幾次測試還是

無法下載建議重新啟動電腦主機按照正確步驟操作

72

FPGA 下載操作

進入 FPLC 操作系統按照下列步驟選擇節點模組與下載 bit FPGA 檔案

在 VHDLDEMO 子目錄下您可以選擇您目前 FPGA 種類型號在此型號下我們已將 VHDL

與數位邏輯設計課本範例全部放於此處

73

光纖網路連線 FPGA 下載操作

首先利用光纖線將 eM_USB0 模組光纖輸出埠接至 eM_USB1 模組光纖輸入埠以此

類推最後再將最後 eM_USBN 模組光纖輸出埠接至 eM_USB0 模組光纖輸入埠配置

如附圖方式

個人電腦(Windows) eM_USB模組

0USB

eM_USB模組1

光纖網路

eM_USB模組2

eM_USB模組N

配置完成後進入 FPLC 系統首先必須先將 Node00 下載在 testASM 子目錄裡

piDSPv0bit 檔讓 eM_USB0 模組 FPGA 具備 DSP 功能才能執行光纖網路通訊

操作如下

此時您就可以選擇分別下載至各模組 FPGA 檔 bit

74

安裝 FPLC 注意事項

當您進入 FPLC 時

按 FILE 選擇 programhellip 選擇檔案為 exp_dcmplc 出現下面畫面

正常顯示畫面為

75

DOS 環境操作

在 PC 端的操作是在 Windows 環境中的 DOS 視窗中執行指令範例如下

eFPGA progNETbit 下載 FPGA電路至網路節點0(即 USB節點)中 eFPGA testLEDbit 1 下載 FPGA電路至網路節點1中

對於單一節點的控制程序如下

1將 eM_USB模組連結個人電腦的 USB端 2eM_USB模組開機 3執行下載指令即可 eFPGA xxxxbit 4若要更改 FPGA電路只要重新執行下載指令即可

對於多個網路節點的控制程序如下

1第一組 eM_USB模組連結個人電腦的 USB端再以光纖網路依序其他各節點 2連接 USB界面者為模組0從光纖發射端連接出去的模組為1依此類推 3將所有 eM_USB模組開機 4執行下載指令如下 eFPGA progNETbit 模組0必須先下載指定的 FPGA電路 eFPGA xxxxbit 1 再依序下載其他網路模組的 FPGA電路 eFPGA yyyybit 2 eFPGA zzzzbit 最後再重新下載模組0的 FPGA電路 5換句話說模組0必須先執行 progNETbit讓光纖網路接受 FPGA控制後才能透過光纖網路下載至其他節點等全部網路節點下載完畢後再將模組0的 FPGA重新下載讓模組0也可自由執行任意的 FPGA電路

6若要更改某一個網路節點中的 FPGA電路只要重新執行下述指令 eFPGA progNETbit 模組0必須先下載指定的 FPGA電路 eFPGA yyyybit 2 下載指定網路模組的 FPGA電路 eFPGA zzzz bit 最後再重新下載模組0的 FPGA電路 換句話說除非模組0中的 FPGA已經包括光纖網路管理電路否則一定要先在

模組0中下載網路管理電路後才能下載指定網路節點的 FPGA電路

76

光纖網路通訊 FPGA 發展系統

系統配置

光纖網路通訊 FPGA 發展系統的系統配置圖如下

個人電腦(Windows) eM_USB模組

0USB

eM_USB模組1

光纖網路

eM_USB模組2

eM_USB模組N

其中

1基本模組為 eM_USB模組可用 USB界面和個人電腦連線並提供 USB對光纖網路的轉換功能使得個人電腦可以獨立控制光纖網路中的每個網路節點

2eM_USB模組也可以作為光纖網路中的網路節點透過光纖網路而接受個人電腦的

監控 3就個人電腦而言不論是 USB界面直接連結或是以光纖網路間接連結的 eM_USB模組都是可以直接監控的網路節點最多可以同時控制一個 USB節點和 30個網路節點

4對於每一個網路節點個人電腦都可執行 eM_USB模組中 FPGA的電路下載工作並在適當的 FPGA電路配合下可執行 eM_USB模組中 FPGA內部電路的讀寫控制 5透過適當的 FPGA電路設計各網路節點都可透過光纖網路和其他任何網路節點

作同步通訊執行 FPGA內部記憶體的資料交換資料交換頻率可達 1KHz以上

77

網路模組配置

每個網路模組的標準配置圖如下

eM_USB模組光纖網路

USB eM_FPGA卡

eM_DEMO模組

eM_EXP實驗模組

DC電源

其中

1網路模組以 eM_USB模組為主提供基本的 USB界面和光纖網路連線 2eM_USB模組中的 FPGACPLD採用插卡型式可選擇不同的 eM_FPGA卡包括

eM_2V1K卡可選用 Virtex系列的 XC2V250和 XC2V1000 eM_3S1K卡可選用 Spartan3系列的 XC3S400XC3S1000和 XC3S1500 eM_3S50卡可選用 Spartan3系列的 XC3S50XC3S200和 XC3S400 eM_95XL卡可選用 9500XL系列的 XC95144XL和 XC95288XL 3eM_USB模組中的對外連線有兩種一種是 26P接頭用以連接既有的各種實驗模

組另一種是兩組 50P接頭將 FPGA中各接腳引出用以連接專題實驗 4eM_DEMO模組就是插上 50P接頭的教學模組其中包括 LED 數字顯示和 44鍵盤也具備兩組的 ADC和兩組的 DAC接頭提供類比訊號的測試工具

常用的實驗組合包括

1精簡組合包括(eM_USB+eM_FPGA)提供基本的網路節點適用於專題實驗 2標準組合包括(eM_USB+eM_FPGA+eM_DEMO)提供基礎 FPGA設計的教學實驗

3實驗組合包括(eM_USB+eM_FPGA+eM_DEMO+eM_EXP)提供進階的 FPGA實驗可依需求選用不同的實驗模組

78

eM_USB 模組

eM_USB 模組的電路配置圖如下

TxRx

DCPower

USB

JP2

JP3

光纖界面

外加電源

PC連線

JP1

eM_FPGA模組

FT232 CPLD FlashROM

SRAM

10cm

6cm

JP4

其中

1對外的連線接頭包括 DC電源 可選擇單電源(5V)或是多電源(5V+12V-12V)兩種 USB界面 直接連接個人電腦 光纖界面連接光纖網路 2實驗界面包括 JP1負責內部 CPLD的電路下載 JP2JP3兩組 50P的擴張用接頭 JP4 標準 26P接頭用以連接各種實驗模組 3內部的電路配置包括 A以 SO-DIMM接頭連接各種 eM_FPGA卡 B內附 EEPROMFlashROM和 SRAM提供 FPGA作應用測試 C以一顆 FT232BM作為 USB界面解碼而以一顆 CPLD作為光纖網路解碼 D提供各種 eM_FPGA卡的電路下載功能 4內附五顆 LED由上而下依序為 usbLED指示 USB界面的讀寫狀態 tstLED可由 FPGA電路自行定義 stsLED可由 FPGA電路自行定義 RxLED 可由 FPGA電路自行定義 TxLED 可由 FPGA電路自行定義

79

外部接腳定義

外部接頭的接點順序圖示如下

上視圖

JP11 9 JP4

126225

JP31

50249

JP21

50249

而各接頭的接點定義如下

JP1 JP4 JP2 JP3 1+33V 1+12V 2+12V 1 GND 2 GND 1 GND 2 GND 2GND 3 ADC 4 DAC 3POWER 4ALARM 3 +5V 4 +5V 3nc 5 yPB2 6 yPB3 5RxNET 6TxNET 5+12V 6+12V 4TCK 7 yPB1 6 yPB4 7RxUSB 6TxUSB 7-12V 6-12V 5nc 9 yPB0 10yPB5 9RxCAN 10TxCAN 9 ADC 10 DAC 6TDO 11yPB6 12yPB7 11P0D0 12P0D1 11P1D0 12P1D1 7TDI 13yGND 14yPC3 13P0D2 14P0D3 13P1D2 14P1D3 8nc 15yPC2 16yPC1 15P0D4 16P0D5 15P1D4 16P1D5 9TMS 17yPC0 18yPA0 17P0D6 18P0D7 17P1D6 18P1D7 19yPA1 20yPA2 19P0D8 20P0D9 19P1D8 20P1D9 21yPA3 22GND 21P0D10 22P0D11 21P1D10 22P1D11 23GND 24+5V 23P0D12 24P0D13 23P1D12 24P1D13 25+5V 26nc 25P0D14 26P0D15 25P1D14 26P1D15 27P2D0 28P2D1 27PxA0 28PxA1 29P2D2 30P2D3 29PxA2 30PxA3 31P2D4 32P2D5 31PxA4 32PxA5 33P2D6 34P2D7 33PxA6 34PxA7 35P2D8 36P2D9 35PxB0 36PxB1 37P2D10 38P2D11 37PxB2 38PxB3 39P2D12 40P2D13 39PxB4 40PxB5 41P2D14 42P2D15 41PxB6 42PxB7 43ADC0 44ADC1 43PxC0 44PxC1 45ADC2 46ADC3 45PxC2 46PxC3 47ADC4 48ADC5 47PxC4 48PxC5 49DAC0 50DAC1 49PxC6 50PxC7

80

eM_FPGA 模組

在各種 eM_FPGA 模組中FPGA 對外電路的標準配置圖如下

24576MHz

FlashROM

26PSRAM

EEPROM

mD[8]

yPA[4]

FPGACPLD

mA[19]mRDmWRmCSeeCKeeCSeeDIeeDO

光纖界面 RxNETTxNET

USB 界面 RxUSBTxUSBCLK24MPOWERALARM

LED

tstLEDstsLEDRxLEDTxLED

yPB[8]yPC[4]

ADCDAC

ADC[8]

實驗模組

ADC[2]

DAC[2]

xPA[4]

xPB[8]

xPC[4]

基礎實驗

其中

1FPGACPLD可以選擇下述幾種 XC2V250XC2V1000 採用 eM_2V1K模組其中 FPGA為 FG456包裝 XC3S400XC3S1000XC3S1500採用 eM_3S1K模組其中 FPGA為 FG456包裝 XC3S400XC3S1000XC3S1500採用 eM_3S1K模組其中 FPGA為 FG456包裝 XC3S50XC3S200XC3S400 採用 eM_3S50模組其中 FPGA為 TQ144包裝 XC95144XLXC95288XL 採用 eM_95XL模組其中 CPLD為 TQ144包裝 2採用 FG456包裝者可以控制所有的 IO界面 3採用 TQ144包裝者只是不能控制 RAM和 FlashROM而可以控制其他所有的界面 4所有 FPGA模組都可自由選擇由 USB界面或是由光纖界面下載電路但是 CPLD模組只能固定由 USB界面下載電路

5所有 FPGACPLD模組都可透過 26P接頭連接既有的各種實驗模組

81

FPGA 接腳對照表

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

mD0 XD6 mD0 A17 C13 -- -- mD1 XD7 mD1 B17 D12 -- -- mD2 XD8 mD2 C17 D11 -- -- mD3 XD9 mD3 D17 C11 -- -- mD4 XD10 mD4 E17 D10 -- -- mD5 XD11 mD5 E16 C10 -- -- mD6 XD12 mD6 E14 D9 -- -- mD7 XD13 mD7 E13 D7 -- -- mA0 XD14 mA0 D13 C7 -- -- mA1 XD15 mA1 C13 D6 -- -- mA2 XA0 mA2 V5 C3 -- -- mA3 XA1 mA3 U5 C4 -- -- mA4 XA2 mA4 Y2 D3 -- -- mA5 XA3 mA5 Y1 D4 -- -- mA6 XA4 mA6 V4 E3 -- -- mA7 XA5 mA7 V3 E4 -- -- mA8 XA6 mA8 W2 F3 -- -- mA9 XA7 mA9 W1 F4 -- -- mA10 XA8 mA10 T2 G6 -- -- mA11 XA9 mA11 T1 K3 -- -- mA12 XA10 mA12 R4 K10 -- -- mA13 XA11 mA13 R3 L3 -- -- mA14 XA12 mA14 R2 L4 -- -- mRD XRD mRD R1 D5 -- -- mWR XWR mWR P6 C6 -- --

POWER P0A0 POWER B4 B20 P1 P5 ALARM P0A1 ALARM A4 A19 P2 P6 RxNET P0A2 RxNET C4 B19 P4 P7 TxNET P0A3 TxNET C5 A18 P5 P9 RxUSB P0B0 RxUSB B5 A15 P6 P10 TxUSB P0B1 TxUSB A5 B15 P7 P11 RxCAN P0B2 RxCAN D6 A14 P8 P12 RxCAN P0B3 TxCAN C6 B14 P10 P13

CLK24M CLK24M CLK24M E12 B12 P124 P38

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

PWM0H P3A0 P0D0 E6 A8 P21 P23 PWM0L P3A1 P0D1 E5 B8 P23 P24 PWM1H P3A2 P0D2 C2 B6 P24 P25 PWM1L P3A3 P0D3 C1 A5 P25 P26 PWM2H P3A4 P0D4 D2 B5 P26 P27

82

PWM2L P3A5 P0D5 D1 A4 P27 P28 PWMenb P3A6 P0D6 E4 B4 P28 P30 PHT1Z P3A7 P0D7 E3 A3 P30 P31 PHT1A P3B0 P0D8 G2 C1 P31 P32 PHT1B P3B1 P0D9 G1 C2 P32 P33 PHT0A P3B2 P0D10 H5 D1 P33 P34 PHT0B P3B3 P0D11 J6 D2 P35 P35 AMP0 P3B4 P0D12 H4 E1 P36 P39 AMP1 P3B5 P0D13 H3 E2 P40 P40 AMP2 P3B6 P0D14 H2 F2 P41 P41 AMP3 P3B7 P0D15 H1 G1 P44 P43 eeSK P0C3 P1D0 C10 B9 P20 P22 eeCS P0C2 P1D1 D10 A9 P18 P21 eeDI P0C1 P1D2 F10 B10 P17 P20 eeDO P0C0 P1D3 E10 B11 P15 P19 ssCK P0B7 P1D4 E8 A11 P14 P17 ssCS P0B6 P1D5 E7 A12 P13 P16 ssDI P0B5 P1D6 A6 B13 P12 P15 ssDO P0B4 P1D7 B6 A13 P11 P14

ppCLK P3C0 P1D8 K4 G2 P46 P44 ppDIN P3C1 P1D9 K3 K1 P47 P45 TxD P3C2 P1D10 K2 K2 P50 P46 RxD P3C3 P1D11 K1 L1 P51 P48

tstLED P3C4 P1D12 L5 L2 P52 P49 stsLED P3C5 P1D13 L4 M1 P53 P50 RxLED P3C6 P1D14 L3 M2 P55 P51 TxLED P3C7 P1D15 L2 N1 P56 P52

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

xPA0 P2A0 P2D0 AA3 N2 P59 P53 xPA1 P2A1 P2D1 Y4 T1 P60 P54 xPA2 P2A2 P2D2 AA4 T2 P63 P56 xPA3 P2A3 P2D3 AB4 U2 P68 P57 xPC0 P2A4 P2D4 W5 V1 P69 P58 xPC1 P2A5 P2D5 Y5 V2 P70 P59 xPC2 P2A6 P2D6 AA5 W1 P73 P60 xPC3 P2A7 P2D7 AB5 W2 P74 P61

-- P2B0 P2D8 V6 Y1 P76 P64 -- P2B1 P2D9 V7 Y2 P77 P66 -- P2B2 P2D10 W6 AA3 P78 P68

mCS P2B3 P2D11 Y6 AB4 P79 P69 mA15 P2B4 P2D12 V9 AA4 P80 P70 mA16 P2B5 P2D13 V10 AB5 P82 P71 mA17 P2B6 P2D14 W10 AA5 P83 P74 mA18 P2B7 P2D15 Y10 AA6 P84 P75 CS0 P2C0 ADC0 AA10 AB8 P85 P76

83

SDIN0 P2C1 ADC1 AB10 AA8 P86 P77 CS1 P2C2 ADC2 U10 AB9 P87 P78

SDIN1 P2C3 ADC3 U11 AA9 P89 P79 SCLK P2C4 ADC4 V11 AB10 P90 P80 CS2 P2C5 ADC5 W11 AA10 P92 P81

SDOUT P2C6 ADC6 Y11 AB11 P93 P82 LDAC P2C7 ADC7 AA11 AA11 P95 P83

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

xPB0 P1A0 PxA0 M1 M3 P135 P85 xPB1 P1A1 PxA1 M2 M4 P132 P86 yPB2 P1A2 PxA2 M3 N3 P131 P87 yPB3 P1A3 PxA3 M4 N4 P130 P88 yPB1 P1A4 PxA4 M5 T4 P129 P91 yPB4 P1A5 PxA5 M6 T5 P128 P92 yPB0 P1A6 PxA6 N1 U3 P127 P93 yPB5 P1A7 PxA7 N2 U4 P125 P94 yPB6 P1B0 PxB0 U13 V3 P119 P95 yPB7 P1B1 PxB1 V13 V4 P118 P96 xPB2 P1B2 PxB2 W13 W3 P116 P97 xPB3 P1B3 PxB3 Y13 W4 P113 P98 xPB4 P1B4 PxB4 AA13 Y3 P112 P100 xPB5 P1B5 PxB5 AB13 Y4 P96 P101 yPC3 P1B6 PxB6 U12 Y5 P97 P102 yPC2 P1B7 PxB7 V12 W5 P98 P103 yPC1 P1C7 PxC0 AB17 W11 P108 P113 yPC0 P1C6 PxC1 AA17 Y11 P107 P112 yPA0 P1C5 PxC2 Y17 W10 P105 P111 yPA1 P1C4 PxC3 W17 Y10 P104 P110 yPA2 P1C3 PxC4 AB18 W9 P103 P107 yPA3 P1C2 PxC5 AA18 W8 P102 P106 xPB6 P1C1 PxC6 Y18 W6 P100 P105 xPB7 P1C0 PxC7 W18 Y6 P99 P104

84

eM_DEMO 模組

eM_DEMO 模組的電路配置圖如下

eM_USB 模組

數字型 LED

0 1 2 34 5 6 78 9 A BC D E F

燈號型 LED

44 鍵盤

ADC0 ADC1 DAC0 DAC1

LED 選擇KEY 選擇

其中

1eM_DEMO模組的基本功能包括 A將 xPAxPBxPC等 16個 IO訊號引出控制 LED和鍵盤電路 B將 ADDA訊號引出並放大成+-10V的工作範圍 2LED和鍵盤可以選擇三種模式由 LED和 KEY 兩組開關作選擇圖示如下

模式1

0123

模式2 模式3

0 1 2 34 5 6 78 9 A BC D E F

0123

3模式14鍵輸入並搭配 16點的 LED燈號顯示其中 16點 LED分別對映到 xPA[0~3]xPB[0~7]和 xPC[0~3] 4組按鍵分別對映到 xPC[0~3] 4模式24鍵輸入並搭配四個 7段式數字顯示其中 數字顯示由 xPA[0~3]作數字掃瞄而由 xPB[0~7]作 7段式 LED控制 4組按鍵 分別對映到 xPC[0~3] 5模式316鍵輸入並搭配四個 7段式數字顯示其中 數字顯示由 xPA[0~3]作數字掃瞄而由 xPB[0~7]作 7段式 LED控制 16組按鍵由 xPA[0~3]作鍵盤掃瞄而由 xPC[0~3]作鍵盤讀取 6根據VHDL與數位邏輯設計的章節其中 第 1章至 10章的實驗採用模式1而 第 11章實驗採用模式2而 第 12章之後的實驗都採用模式3

85

FPGA UCF 定義

eM_3S1K 模組

NET CLK LOC = B12

NET XAlt0gt LOC = N2

NET XAlt1gt LOC = T1

NET XAlt2gt LOC = T2

NET XAlt3gt LOC = U2

NET XBlt0gt LOC = M3

NET XBlt1gt LOC = M4

NET XBlt2gt LOC = W3

NET XBlt3gt LOC = W4

NET XBlt4gt LOC = Y3

NET XBlt5gt LOC = Y4

NET XBlt6gt LOC = W6

NET XBlt7gt LOC = Y6

NET XClt0gt LOC = V1

NET XClt1gt LOC = V2

NET XClt2gt LOC = W1

NET XClt3gt LOC = W2

NET YAlt0gt LOC = W10

JP4 接頭

NET YAlt1gt LOC = Y10

NET YAlt2gt LOC = W9

NET YAlt3gt LOC = W8

NET YBlt0gt LOC = U3

NET YBlt1gt LOC = T4

NET YBlt2gt LOC = N3

NET YBlt3gt LOC = N4

NET YBlt4gt LOC = T5

NET YBlt5gt LOC = U4

NET YBlt6gt LOC = V3

NET YBlt7gt LOC = V4

NET YClt0gt LOC = Y11

NET YClt1gt LOC = W11

NET YClt2gt LOC = W5

NET YClt3gt LOC = Y5

在光碟片中 RFFPGAVHDLDEMOBIT3S1K 裡有 VHDL 與數位邏輯設計書本範例原始檔與合成檔

86

eM_3S50 模組

NET CLK LOC = P124

NET XAlt0gt LOC = P59

NET XAlt1gt LOC = P60

NET XAlt2gt LOC = P63

NET XAlt3gt LOC = P68

NET XBlt0gt LOC = P135

NET XBlt1gt LOC = P132

NET XBlt2gt LOC = P116

NET XBlt3gt LOC = P113

NET XBlt4gt LOC = P112

NET XBlt5gt LOC = P96

NET XBlt6gt LOC = P100

NET XBlt7gt LOC = P99

NET XClt0gt LOC = P69

NET XClt1gt LOC = P70

NET XClt2gt LOC = P73

NET XClt3gt LOC = P74

NET YAlt0gt LOC = P105

JP4 接頭

NET YAlt1gt LOC = P104

NET YAlt2gt LOC = P103

NET YAlt3gt LOC = P102

NET YBlt0gt LOC = P127

NET YBlt1gt LOC = P129

NET YBlt2gt LOC = P131

NET YBlt3gt LOC = P130

NET YBlt4gt LOC = P128

NET YBlt5gt LOC = P125

NET YBlt6gt LOC = P119

NET YBlt7gt LOC = P118

NET YClt0gt LOC = P107

NET YClt1gt LOC = P108

NET YClt2gt LOC = P98

NET YClt3gt LOC = P97

在光碟片中 RFFPGAVHDLDEMOBIT3S200 裡有VHDL與數位邏輯設計書本範例原始檔與合成檔

87

eM_95XL 模組

NET CLK LOC = SPIN38

NET XAlt0gt LOC = SPIN53

NET XAlt1gt LOC = SPIN54

NET XAlt2gt LOC = SPIN56

NET XAlt3gt LOC = SPIN57

NET XBlt0gt LOC = SPIN85

NET XBlt1gt LOC = SPIN86

NET XBlt2gt LOC = SPIN97

NET XBlt3gt LOC = SPIN98

NET XBlt4gt LOC = SPIN100

NET XBlt5gt LOC = SPIN101

NET XBlt6gt LOC = SPIN105

NET XBlt7gt LOC = SPIN104

NET XClt0gt LOC = SPIN58

NET XClt1gt LOC = SPIN59

NET XClt2gt LOC = SPIN60

NET XClt3gt LOC = SPIN61

NET YAlt0gt LOC = SPIN111

JP4 接頭

NET YAlt1gt LOC = SPIN110

NET YAlt2gt LOC = SPIN107

NET YAlt3gt LOC = SPIN106

NET YBlt0gt LOC = SPIN93

NET YBlt1gt LOC = SPIN91

NET YBlt2gt LOC = SPIN87

NET YBlt3gt LOC = SPIN88

NET YBlt4gt LOC = SPIN92

NET YBlt5gt LOC = SPIN94

NET YBlt6gt LOC = SPIN95

NET YBlt7gt LOC = SPIN96

NET YClt0gt LOC = SPIN112

NET YClt1gt LOC = SPIN113

NET YClt2gt LOC = SPIN103

NET YClt3gt LOC = SPIN102

在光碟片中 RFFPGAVHDLDEMOSVF95288XL 裡有VHDL與數位邏輯設計書本範例原始檔與合成

檔案

88

eM_FPGA 模組

NET CLK LOC = E12

NET XAlt0gt LOC = AA3

NET XAlt1gt LOC = Y4

NET XAlt2gt LOC = AA4

NET XAlt3gt LOC = AB4

NET XBlt0gt LOC = M1

NET XBlt1gt LOC = M2

NET XBlt2gt LOC = W13

NET XBlt3gt LOC = Y13

NET XBlt4gt LOC = AA13

NET XBlt5gt LOC = AB13

NET XBlt6gt LOC = Y18

NET XBlt7gt LOC = W18

NET XClt0gt LOC = W5

NET XClt1gt LOC = Y5

NET XClt2gt LOC = AA5

NET XClt3gt LOC = AB5

NET YAlt0gt LOC = Y17

JP4 接頭

NET YAlt1gt LOC = W17

NET YAlt2gt LOC = AB18

NET YAlt3gt LOC = AA18

NET YBlt0gt LOC = N1

NET YBlt1gt LOC = M5

NET YBlt2gt LOC = M3

NET YBlt3gt LOC = M4

NET YBlt4gt LOC = M6

NET YBlt5gt LOC = N2

NET YBlt6gt LOC = U13

NET YBlt7gt LOC = V13

NET YClt0gt LOC = AA17

NET YClt1gt LOC = AB17

NET YClt2gt LOC = V12

NET YClt3gt LOC = U12

在光碟片中 RFFPGAVHDLDEMOBIT2V250 裡有VHDL與數位邏輯設計書本範例原始檔與合成檔

89

Page 53: RFFPGA 直流馬達實驗手冊juniortek.com.tw/program/manual/RF-DC-mal.pdf · em_demo模組 em_dcm 直流伺服馬達 dc電源 rffpga 系統的直流馬達實驗規劃 其中包括:

plot scope 9 1 2 3 4 設定示波器顯示

module io2 設定 io2 模組

s cmd ampcn2out

module fg2 設定 fg1 模組

s kAmp 2000 s kFrq 100

module cn1 設定 cn1 模組

s cmd ampfg2out

module cn2 設定 cn2 模組

s cmd ampcn1out s fdk ampio1ang s kp 0x300 s kd 0x4000

module ft1 設定 ft1 模組

s u ampfg2out s dt 2 s ka 320

module io3 設定 io3 模組

s led ampfg2out

module 回復預設模組

run 1khz 設定抽樣頻率為 4KHz

run start DSP 開始執行

das stop pause 1 DAS 啟動 das start DAS 啟動

echo on 回復正常訊息顯示

CAI操控設計畫面規劃如下(EXP_sinCAI) page 1 畫面設計

53

page 2 畫面設計 page 3 畫面設計與實驗二 page 4相同畫面

方塊的參數設定可調整 PD控制器中的 kp和 kd值以調整系統之響應 實測響應圖

訊 號 說 明 訊 號 說 明 ch1 弦波產生器產生之位置命令 ch3 馬達角位置訊號 ch2 加減速模組輸出之位置命令 ch4 馬達角速度訊號

54

直流馬達之閉迴路弦波加減速位置控制響應圖

55

7組合語言說明

本節將針對 DC馬達伺服控制實驗專用的程式模組進行功能與程式碼的說明其

有關於波形產生器與資料擷取模組等說明如下

SIN_waveasm 正弦波產生器 PWM_waveasm 方波產生器 IIR1_filterasm 一階濾波器 DAS4asm 資料蒐集模組

弦波產生器

此模組會產生週期性的正弦波方塊圖如下

outfrq

kBiasbias

ampkAmp

kFrqth

kThf=1TB

θ

A

其中

1正弦波有四個參數振幅(A)頻率(F)相位(θ)和偏移(B)其公式為 out = A sin(2πF t +θ) + B 2對於單純的正弦波產生器所對映的參數包括 kAmp 振幅值 kFrq 頻率值kFrq=655368000Hz其中 Hz的範圍為 0~4000例如 1000Hz =gt frq=8192 100Hz =gt frq=819 10Hz =gt frq=82 1Hz =gt frq=8 kTh 相角值0~255代表 0~360的相位當 th=0 時為正弦波 th=64 時為餘弦波 th=128時為反相波依此類推 kBias偏移值 3對於可調變的正弦波產生器其對映的輸入點為 amp 控制振幅的輸入點可產生調幅(AM)波形 frq 控制頻率的輸入點可產生調頻(FM)波形 th 控制相位的輸入點可產生調相(PM)波形 bias控制偏移的輸入點可產生雙頻混波(相加)波形 4若不使用調變功能時各個輸入點時的預設值為 amp 指向 kAmp 的位址 frq 指向 kFrq 的位址

56

th 指向 kTh 的位址 bias指向 kBias的位址

模組程式範例SIN_WAVEasm

local amp R0 IP kAmp 輸入點sin波的振幅 local frq R1 IP kFrq 輸入點sin波的頻率 local th R2 IP kTh 輸入點sin波的相角 local bias R3 IP kBias 輸入點sin波的中心偏移 local out R4 OP 輸出點sin波輸出 local tab R5 TP 表格指標指向 sin[256]的表格 local ang R6 內部變數相位角65536=360deg local kAmp R7 1000 參數振幅值 local kFrq R8 1000 參數頻率值=655368000Hz local kTh R9 0 參數相角值360deg=256 local kBias R10 0 參數偏移值 data 11 模組變數區長度及初值 initial 啟動程序 WR ang0 WR out0 ang=out=0 RET timer 即時控制程序(8KHz) RD ang ADD (frq) WR ang ang+=frq SFR 8 ADD (th) AND 255 ACC=sin(ang256+th) ADD tab WRH RDM table-look-up MUL (amp) SFR 12 ADD (bias) WR out out=ACCamp4096+bias RET table tab 256 sin[256]表格區10=4096 0 101 201 301 401 501 601 700 00~070deg 799 897 995 1092 1189 1285 1380 1474 08~0F 1567 1660 1751 1842 1931 2019 2106 2191 10~17 2276 2359 2440 2520 2598 2675 2751 2824 18~1F 2896 2967 3035 3102 3166 3229 3290 3349 20~27 3406 3461 3513 3564 3612 3659 3703 3745 28~2F 3784 3822 3857 3889 3920 3948 3973 3996 30~37 4017 4036 4052 4065 4076 4085 4091 4095 38~3F 4096 4095 4091 4085 4076 4065 4052 4036 40~4790deg 4017 3996 3973 3948 3920 3889 3857 3822 48~4F 3784 3745 3703 3659 3612 3564 3513 3461 50~57 3406 3349 3290 3229 3166 3102 3035 2967 58~5F

57

2896 2824 2751 2675 2598 2520 2440 2359 60~67 2276 2191 2106 2019 1931 1842 1751 1660 68~6F 1567 1474 1380 1285 1189 1092 995 897 70~77 799 700 601 501 401 301 201 101 78~7F 0 65435 65335 65235 65135 65035 64935 64836 80~87180deg 64737 64639 64541 64444 64347 64251 64156 64062 88~8F 63969 63876 63785 63694 63605 63517 63430 63345 90~97 63260 63177 63096 63016 62938 62861 62785 62712 98~9F 62640 62569 62501 62434 62370 62307 62246 62187 A0~A7 62130 62075 62023 61972 61924 61877 61833 61791 A8~A8 61752 61714 61679 61647 61616 61588 61563 61540 B0~B7 61519 61500 61484 61471 61460 61451 61445 61441 B8~BF 61440 61441 61445 61451 61460 61471 61484 61500 C0~C7270deg 61519 61540 61563 61588 61616 61647 61679 61714 C8~CF 61752 61791 61833 61877 61924 61972 62023 62075 D0~D7 62130 62187 62246 62307 62370 62434 62501 62569 D8~DF 62640 62712 62785 62861 62938 63016 63096 63177 E0~E7 63260 63345 63430 63517 63605 63694 63785 63876 E8~EF 63969 64062 64156 64251 64347 64444 64541 64639 F0~F7 64737 64836 64935 65035 65135 65235 65335 65435 F8~FF

就程式結構而言說明如下

timer 即時控制程序(8KHz) RD ang ADD (frq) WR ang ang+=frq SFR 8 ADD (th) AND 255 ACC=sin(ang256+th) ADD tab WRH RDM table-look-up MUL (amp) SFR 12 ADD (bias) WR out out=ACCamp4096+bias RET

1基本上我們以查表法計算 sin()其輸入θ的範圍為 0~255對映到 0~360deg其輸出 sin(θ)的範圍為+-4096對映到+-10的範圍

2建立一個內部變數 ang其範圍為 0~65535對映到 0~360的相位角 3每個timer程序都執行 ang+=frq的動作更新目前的相位角接著依照 ang的相位角查表得到 sin(ang256+th)值

4由於表格長度為 256-word所以必須將 ang256才能得到正確的對映關係而 th範圍為 0~255所以不需要像 ang一般的做額外處理

5sin()的範圍為(+1-1)而在表格中以(+4096~-4096)的型式記錄相當於 10=4096所以執行 Asin()時還要用 SFR12指令做4096的動作才能正確的取得輸出值

58

6就頻率輸入 frq而言其計算原則是將θ=ωt轉化成θ=Σ(ωdt)因為抽樣頻率

為 8KHz所以 dt=18000而得到 frq=655368000Hz公式其中 Hz為真正的頻率在 8KHz的抽樣頻率下其範圍為 0~4000

鋸齒波產生器

此模組會產生週期性的鋸齒波方塊圖如下

outfrq

kBiasbias

ampkAmp

kFrqth

kThf=1TB

θ

A

其中

1鋸齒波也有四個參數振幅(A)頻率(F)相位(θ)和偏移(B)和正弦波的定義完全一致唯一的差異是其輸出為鋸齒波而非正弦波

2基本波形是從週期開始時為 0一直遞增到週期結束時到達最高點然後立刻回歸

到 0重新開始 3以程式結構而論鋸齒波程式幾乎就是正弦波的相位計算部分只差沒有正弦波的

查表處理而已

模組程式範例SAW_WAVEasm

local amp R0 IP kAmp 輸入點sin波的振幅 local frq R1 IP kFrq 輸入點sin波的頻率 local th R2 IP kTh 輸入點sin波的相角 local bias R3 IP kBias 輸入點sin波的中心偏移 local out R4 OP 輸出點sin波輸出 local ang R5 內部變數相位角65536=360deg local kAmp R6 1000 參數振幅值 local kFrq R7 1000 參數頻率值=655368000Hz local kTh R8 0 參數相角值360deg=256 local kBias R9 0 參數偏移值 data 11 模組變數區長度及初值 initial 啟動程序 WR ang0 WR out0 ang=out=0 RET timer 即時控制程序(8KHz) RD ang ADD (frq) WR ang ang+=frq SFR 8 ADD (th) AND 255 ACC=(ang256+th)amp0x00ff MUL (amp) SFR 8 ADD (bias) WR out out=ACCamp256+bias

59

RET

脈衝波產生器

outfrq

kBiasbias

ampkAmp

kFrqth

kThf=1TB

θ

A

pwm

kDutyduty

此模組會產生週期性的脈衝波方塊圖如下

其中

1脈衝波有五個參數其中振幅(A)頻率(F)相位(θ)和偏移(B)四個參數和正弦波

定義完全一樣另外再增加一個負載率(D) 2基本波形是從週期開始時為 1隔段時間後換為 0然後持續到週期結束再重新開始其中 1所佔有的比例就是負載率當 D=0時為 0而 D=255時為 100

3和其他參數類似負載率(D)以 duty為其輸入點而以 kDuty為其參數值

模組程式範例PLS_WAVEasm

local amp R0 IP kAmp 輸入點脈衝波的振幅 local frq R1 IP kFrq 輸入點脈衝波的頻率 local th R2 IP kTh 輸入點脈衝波的相角 local bias R3 IP kBias 輸入點脈衝波的中心偏移 local duty R4 IP kDuty 輸入點脈衝波的負載率 local out R5 OP 輸出點脈衝波輸出 local ang R6 內部變數相位角65536=360deg local kAmp R7 1000 參數振幅值 local kFrq R8 1000 參數頻率值=655368000Hz local kTh R9 0 參數相角值360deg=256 local kBias R10 0 參數偏移值 local kDuty R11 128 參數負載率100 =256 data 12 模組變數區長度及初值 initial 啟動程序 WR ang0 WR out0 ang=out=0 RET timer 即時控制程序(8KHz)

60

RD ang ADD (frq) WR ang ang+=frq SFR 8 ADD (th) AND 255 ACC=(ang256+th)amp0x00ff SUB (duty) RD (amp) JLT t1 RD 0 ACC=(amp0) t1 ADD (bias) WR out out=ACC+bias RET

IIR 一階濾波器

此模組執行一階的 IIR濾波器方塊圖如下

kau x

Z-1

+

+

-

+低通濾波器

高通濾波器dx lp

hp

濾波器參數的計算公式如下

1假設濾波器的頻寬為 hz則 ωn=hz628 2若系統頻率為 8KHz則抽樣週期 dT為 dT=dt8000 其中 dt為模組參數 3則濾波器參數為 ka=ωndT4096或是 =hzdt62880004096即 =hzdt32 4當 dt決定後所允許的訊號頻寬為(4000dt)換句話說訊號頻寬會因為 dt增加而下降

為了方便實驗的運用下面列出常用的參數對照表

濾波頻寬

(Hz)

10 20 50 100 200 500 1000 2000

訊號頻寬

(Hz)

400 800 2000 4000 4000 4000 4000 4000

模組參數 dt 10 5 2 1 1 1 1 1

模組參數 ka 320 320 320 320 640 1600 3200 6400

表格的運用方式如下

1首先決定濾波頻寬 2接著查表找出對映的參數 dt和 ka 3再查表得到對映的訊號頻寬以決定是否需要串接前級濾波器

61

模組程式範例IIR1_FILTERasm

local u R0 IP 輸入點濾波器輸入 local lp R1 OP 輸出點低通濾波器輸出 local hp R2 OP 輸出點高通濾波器輸出 local dt R3 1 參數抽樣週期 local ka R4 4096 參數增益 ka10=4096 local prd R5 內部變數抽樣週期用 data 6 模組變數區長度 initial 開機啟動程序 WR lp0 WR hp0 WR prd1 RET lp=hp=0prd=1 timer 即時控制程序 SUB prd1 JNZ b9 if (--prdgt0) return RD dt WR prd prd=dt RD (u) SUB lp WR hp hp=u-lp MUL ka SFR 12 ADD lp WR lp lp+=(hpka4096) b9 RET

資料蒐集模組

資料蒐集模組是一個非常特殊的模組專門配合 eTTY 程式中的示波器使用

模組程式範例DAS4asm

local cmd R0 0 紀錄命令0=停止1=前置記錄2=正觸發4=負觸發6=觸發記錄 local dt R1 1 抽樣週期每 dT抽樣一次 local tab R2 TP DAS表格啟始位址 local cnt R3 0 目前記錄點(0~255) local ch1 R4 0 定義頻道1的變數位址 local ch2 R5 0 定義頻道2的變數位址 local ch3 R6 0 定義頻道3的變數位址 local ch4 R7 0 定義頻道4的變數位址 local trg R8 0 定義觸發頻道的變數位址 local th R9 0 觸發準位 local tail R10 0 觸發後的抽樣個數 local buf R11 1 抽樣計數(1~dt) local pnt R12 表格位址計算pnt=tab+cnt4 local len R13 表格長度計算(0~256) data 14 定義模組變數區的長度 table tab 1024 定義表格的長度 initial 啟動程序 WR cmd0 RET cmd=0 timer 控制程序

62

ADD cmd0 JZ t9 if (cmd==0) return SUB buf1 JNZ t9 if (--buf)gt0) return RD dt WR buf dt=buf RD cnt ADD 1 AND 0xff WR cnt cnt=(cnt+1)amp0xff SFL 2 ADD tab WR pnt pnt=tab+cnt4 RD (ch1) WR (pnt) ADD pnt1 pnt++=ch1 RD (ch2) WR (pnt) ADD pnt1 pnt++=ch2 RD (ch3) WR (pnt) ADD pnt1 pnt++=ch3 RD (ch4) WR (pnt) pnt =ch4 RD cmd SUB 1 JZ t9 SUB 1 JZ t2 SUB 1 JZ t3 SUB 1 JZ t4 SUB 1 JZ t5 SUB 1 JZ t6 JR t7 t2 RD (trg) SUB th JGE t9 ADD cmd1 JR t9 wait trgltth t3 RD (trg) SUB th JLE t9 JR t6 wait trggtth t4 RD (trg) SUB th JLE t9 ADD cmd1 JR t9 wait trggtth t5 RD (trg) SUB th JGE t9 JR t6 wait trgltth t6 WR len0 WR cmd7 len=0cmd=7 t7 ADD len1 SUB tail JLT t9 WR cmd0 if ((++len)gt=0x80) cmd=0 t9 RET

與 DC 馬達控制相關的程式模組有以下 4個程式模組說明如下

(1)加減速控制模組 ACC_controlasm (2)光電盤輸入模組 POS_inputasm (3)PWM輸出模組 PWM_outputasm (4)PD控制模組 PD_controlasm

71加減速控制模組 此程式模組主要功能在於執行位置控制的加減速命令修正其數學模式採用 Lynn

濾波器的架構參見下圖

cmd

2

+

old Z -1

-

Z -1

Z -1

Z-1

Z-1x0 x1 x8 x9 x16

+ -

++

2

Z-1

Z-1 y1 y2

+

-

y0

+ +

sumZ-1

+164

12

out

dif

+

63

加減速控制模組方塊圖

其中

1Lynn 濾波器的階數固定成八階也就是 m=8其公式為 H(z) = (1-2Z-m+Z-2m)(1-2Z-1+Z-2)m2

2因為m=8所以m2=64因此最後計算低通濾波的部份時要先做除 64的運算 3因為低通濾波(lp)和 y0之間有 64倍的差異代表 y0y1y2的變化範圍比濾波器輸

入值要擴大許多例如輸入值在+-1000變化時y0y1y2很可能會在+-64000之間變化這範圍已經超出整數處理的範圍很可能會造成錯誤的計算結果

4所以在實驗時輸入值的變化範圍必須控制在+-500之間以保證計算的正確性 5對於 Lynn 濾波器當 m=8時其濾波器的頻寬固定為 1 kHzmdt也就是 dt=1時頻寬為 125 Hz dt=2時頻寬為 625Hz依此類推 6對於 Lynn 濾波器其濾波器的延遲固定為 m個抽樣週期因此設計 hp = x8 - lp 即可得到高通濾波器的對應結果 7其中乘 2和除 64的運算以移位運算取代所以整個程式中並無任何乘法運算 8Lynn 濾波器本身並不是穩定濾波器所以在程式啟動時必須確實的將所有狀態

(x0~x16)歸零否則會產生不穩定的狀態輸出

因為 Lynn濾波器中所有參數固定所以除了抽樣週期 dt 之外並無任何可調參數

抽樣週期 dt 可以控制頻寬dt 越大則濾波器頻寬越低

將步階命令值的輸出送入 Lynn 濾波器中經由低通濾波器的效應可以減緩命

令的變化程度達到加減速控制的目的以下為使用 Lynn 濾波器型式實現加減速控

制的組合語言程式列印 如欲更進一步瞭解 Lynn 濾波器與 FIR 數位濾波器之間的關係可以參考通訊實驗

四數位濾波器設計(FIR)中之說明

ACC_controlasm程式列印 local cmd R0 IP 輸入點位置命令

local out R1 OP 輸出點加減速處理後的位置命令

local dif R2 OP 輸出點位置微分命令

local axis R3 0 馬達編號0=X1=Y2=Z3=C

local old R4 內部變數微分計算用

local sumL R5 內部變數積分計算用

local sumH R6 內部變數積分計算用

local y0 R7 內部變數y(0~2)

local y1 R8 local y2 R9

local x0 R10 內部變數x(0~16)

local x1 R11 local x2 R12 local x3 R13 local x4 R14

local x5 R15 local x6 R16 local x7 R17 local x8 R18

local x9 R19 local x10 R20 local x11 R21 local x12 R22

local x13 R23 local x14 R24 local x15 R25 local x16 R26

64

data 27 模組變數區長度

initial 開機啟動程序

WR dif0 RD (cmd) WR out WR old dif=0 out=old=cmd

sumHL=cmd64

SFL 6 WR sumL RD out SFR 10 SGN 5 WR sumH

RPT 17 WR x00 RPT 3 WR y00 RET x[0~16]=0y[0~2]=0

timer 即時控制程序

RD (cmd) SUBX old WR x0 x0=cmd-old old=cmd

SUB x81 ADD x16 ADD y11 SUB y2 WR y0 y0=x0-2x8+x16+2y1-y2

SGN ADD sumL WR sumL RDH ADC sumH WR sumH sumHL+=y0

WRH RD sumL SFR 6 WR out out=sumHL64

RD y0 SGN SFR WR dif dif=y032mm

RD x0 RPT 16 RDX x1 x[i]=x[i-1] i=1~16

RD y0 RDX y1 WR y2 y[i]=y[i-1] i=1~2

b9 RET

72光電盤輸入模組

DC馬達的位置由光電盤量測之預設儲存於 0xac與 0xbe二個輸入埠位址中其中位址 0xac記錄 X軸馬達的位置位址 0xbe記錄 Y軸馬達的位置由於本實驗的DC馬達接在 Y軸的位置上因此程式中直接選用 Y軸的輸入 光電盤位置輸入的程式列印如下其中速度由位置的差分而得至於馬達的位置

則使用內部 2個 word加以記錄精度為 32位元 POS_inputasm程式列印 local spd R0 OP 輸出點速度量測值

local ang R1 OP 輸出點角度量測值

local angH R2 內部變數角度的 32 位元部分

local mode R3 0x308 模式選擇15MHzAB 相正反向輸入

local pht R4 0xac 輸入阜地址光電盤輸入(0xac)

local phtc R5 0xbe 輸入阜地址光電盤模式(0xbe)

local old R6 內部變數速度更新用

data 7 模組變數區長度

initial 開機啟動程序

RD mode WR (phtc) phtc=mode

RD (pht) WR old WR spd0 RET old=phtspd=0

timer 即時控制程序

RD (pht) SUBX old SGN 11 WR spd spd=(pht-old)old=pht

65

ADD ang WR ang angHL+=spd

RDH ADC angH WR angH

RET

73 PWM輸出控制模組 模組方塊

cmd PWM輸出

程式說明 1在開機時將切換保護時間寫到輸出阜 0xbc上其中切換保護值為 0~6360=5us 2在每次 timer interrupt時將 cmd訊號處理後寫到輸出阜 0xb8上

PWM_outputasm程式列印 local cmd R0 IP gnd 輸入點v相命令

local gain R1 4096 參數輸出增益1=4096

local bias R2 2048 參數輸出偏壓0=2048

local limit R3 4095 參數輸出極限1=4095

local zone R4 0x88f0 參數頻率=12KHz切換保護=5us

local pwm R5 0xb8 輸出阜地址PWM0 輸出(0xb8)

local mode R6 0xbc 輸出阜地址PWM 模式(0xbc)

local p0md R7 0xf8 輸出阜地址port0 模式(0xf8)

local gnd R8 0 輸入接地點

data 9 模組變數區長度

initial 開機啟動程序

RD bias WR (pwm) pwm=bias

RD 0xffff WR (p0md) set port0 mode

RD zone WR (mode) RET mode=zone

stop 關機保護程序

RD bias WR (pwm) RET pwm=bias

timer 即時控制程序

RD (mode) xor 1 and 1 WR (mode) trigger watch-dog

RD (cmd) MUL gain SFR 12 ADD bias ACC=(cmdgain4096)+bias

MAX 0 MIN limit WR (pwm) pwm=limit(ACC)

RET

66

74 PD 控制模組

PD控制的模組方塊參見圖二十一所示其中比例控制的部份直接由增益 kp加以調整微分控制的部份則由誤差的差分經增益 kd的調整而得

Σ+

-

cmd

fdk

err out

Σ

pk

dk

Σ

+

+

+

-

old1minusZ

PD控制器的方塊圖

PD_controlasm程式列印 local cmd R0 IP gnd 輸入點位置命令(可忽略)

local fdk R1 IP gnd 輸入點位置回授(可忽略)

local out R2 OP 輸出點用以控制速度迴路

local kp R3 256 參數增益 kp10=256

local kd R4 0 參數增益 kd10=256

local err R5 0 內部變數

local old R6 0 內部變數

local gnd R7 0 無輸入時的短路點

data 8 模組變數區長度

initial 開機啟動程序

WR out0 WR old0 RET out=old=0

timer 即時控制程序

RD (cmd) SUB (fdk) PRTF WR err

MUL kp SFR 8 P=(cmd-fdk)kp256

RDS err SUBX old MUL kd SFR 8 D=(err-old)kd256

ADDS

WR out out=P+D

RET

程式中預設增益值的 10以整數值 256為基底因此使用 SFR 8的指令加以調

整另外在在計算微分項的程式部份用到 SUBX old的指令其詳細的暫存器動作如

下 參考 piDSP的指令說明SUBX指令將總共用到 3個時序參考錯誤 找不到參照

67

來源在時序 1時將原先 AX的資料拷貝一份到 HX中時序 2時正式執行減

法的動作所以 AX暫存器中的內容會變成 err-old時序 3時DSP會將存放在 HX暫存器中的內容拷貝一份到 old的記憶體中也就是經由 SUBX此一精簡指令將

同時完成計算差分所需要的相減與資料疊代的動作有效的利用 piDSP控制器 DSP核心的精簡指令將可以大幅提昇系統的計算速度

HX AXoldSUBXerr err

old

err

errerr olderr minus

1_err

errerr olderr minus err

1_err

1

2

3

SUBX的指令時序與暫存器變化

68

8附錄快速安裝說明

光纖網路通訊 FPGA 發展系統 (適用於 WIN-XP200098 系統)

快速安裝說明

26Pin 負載輸出入埠

雙電源︵5

12

伏︶輸入埠

單電源︵5

伏︶輸入埠

USB

光纖線輸

號 光纖線輸出埠

入 傳 埠

首先將光碟片 RFFPGA 目錄檔案拷貝在您工作硬碟裡面

第一次安裝時先將 USB 傳輸線接上電腦主機將電源供應器接上 FPGA 模組此時電

腦會出現安裝 USB-Serial 驅動程式選擇從清單安裝此驅動程式放置在光碟片

RFFPGA-USBdrive 選擇您目前安裝系統

可選擇 WIN-98WIN-MEWIN-2000WIN-XP 系統配合您現在工作電腦作業系統

69

注意一般電腦 USB 埠很多插口當您安裝驅動程式時是配合您當時插入之埠

下次如您插入不同接口埠時電腦會再次要求安裝驅動程式這是正常現象請再次安

裝驅動程式否則無法使用

FPLC 操作

首先進入 RFFPGA裡子目錄 testASM直接點選 fPLCexe 出現下面操作畫面(也可直接將

此檔案放置桌面直接點選)

(或者選擇 File 再執行 Setuphellip 選擇您要執行 CAI 檔)

70

進入下面操作畫面 首先使用滑鼠在 FPGA下載按鈕單擊動作使 FPGA變成 DSP晶片 實驗一至實驗五皆為使用 DSP組合語言設計程式其原始程式分別為 testASM1至testASM5可使用 texPad 開啟與編輯程式內容 實驗三與實驗五多有 IO控制動作 當選擇實驗三時出現下面畫面

71

eM_USB 模組

數字型 LED

0 1 2 34 5 6 78 9 A BC D E F

燈號型 LED

44 鍵盤

ADC0 ADC1 DAC0 DAC1

LED 選擇KEY 選擇

模 式 1

0123

注意操作畫面 3與 4 說明開關與按鍵選擇位置後選擇程式下載再按程式啟動如您

按下 0-3按鍵時燈號型 LED會有不同方向閃爍顯示程式停止時結束所有 IO控制動作再按回首頁選擇其他實驗 實驗四與實驗五

模式3

0 1 2 34 5 6 78 9 A BC D E F

按照上面開關選擇直接操作如果以上實驗皆能按照正常操作表示您光纖網路通訊

FPGA發展模組以能正常使用 注意 開機與關機動作順序如下

開機電腦啟動 --- eM_USB 模組電源接上 --- USB 接上電腦 ---

啟動 FPLC 軟體 --- 下載 FPGA 程式

關機關閉 FPLC 軟體 --- eM_USB 模組電源拔掉 --- 拔掉電腦 USB 接頭 ---關掉

電腦

如果以上順序有亂可能造成 USB 找不到驅動造成無法下載經過幾次測試還是

無法下載建議重新啟動電腦主機按照正確步驟操作

72

FPGA 下載操作

進入 FPLC 操作系統按照下列步驟選擇節點模組與下載 bit FPGA 檔案

在 VHDLDEMO 子目錄下您可以選擇您目前 FPGA 種類型號在此型號下我們已將 VHDL

與數位邏輯設計課本範例全部放於此處

73

光纖網路連線 FPGA 下載操作

首先利用光纖線將 eM_USB0 模組光纖輸出埠接至 eM_USB1 模組光纖輸入埠以此

類推最後再將最後 eM_USBN 模組光纖輸出埠接至 eM_USB0 模組光纖輸入埠配置

如附圖方式

個人電腦(Windows) eM_USB模組

0USB

eM_USB模組1

光纖網路

eM_USB模組2

eM_USB模組N

配置完成後進入 FPLC 系統首先必須先將 Node00 下載在 testASM 子目錄裡

piDSPv0bit 檔讓 eM_USB0 模組 FPGA 具備 DSP 功能才能執行光纖網路通訊

操作如下

此時您就可以選擇分別下載至各模組 FPGA 檔 bit

74

安裝 FPLC 注意事項

當您進入 FPLC 時

按 FILE 選擇 programhellip 選擇檔案為 exp_dcmplc 出現下面畫面

正常顯示畫面為

75

DOS 環境操作

在 PC 端的操作是在 Windows 環境中的 DOS 視窗中執行指令範例如下

eFPGA progNETbit 下載 FPGA電路至網路節點0(即 USB節點)中 eFPGA testLEDbit 1 下載 FPGA電路至網路節點1中

對於單一節點的控制程序如下

1將 eM_USB模組連結個人電腦的 USB端 2eM_USB模組開機 3執行下載指令即可 eFPGA xxxxbit 4若要更改 FPGA電路只要重新執行下載指令即可

對於多個網路節點的控制程序如下

1第一組 eM_USB模組連結個人電腦的 USB端再以光纖網路依序其他各節點 2連接 USB界面者為模組0從光纖發射端連接出去的模組為1依此類推 3將所有 eM_USB模組開機 4執行下載指令如下 eFPGA progNETbit 模組0必須先下載指定的 FPGA電路 eFPGA xxxxbit 1 再依序下載其他網路模組的 FPGA電路 eFPGA yyyybit 2 eFPGA zzzzbit 最後再重新下載模組0的 FPGA電路 5換句話說模組0必須先執行 progNETbit讓光纖網路接受 FPGA控制後才能透過光纖網路下載至其他節點等全部網路節點下載完畢後再將模組0的 FPGA重新下載讓模組0也可自由執行任意的 FPGA電路

6若要更改某一個網路節點中的 FPGA電路只要重新執行下述指令 eFPGA progNETbit 模組0必須先下載指定的 FPGA電路 eFPGA yyyybit 2 下載指定網路模組的 FPGA電路 eFPGA zzzz bit 最後再重新下載模組0的 FPGA電路 換句話說除非模組0中的 FPGA已經包括光纖網路管理電路否則一定要先在

模組0中下載網路管理電路後才能下載指定網路節點的 FPGA電路

76

光纖網路通訊 FPGA 發展系統

系統配置

光纖網路通訊 FPGA 發展系統的系統配置圖如下

個人電腦(Windows) eM_USB模組

0USB

eM_USB模組1

光纖網路

eM_USB模組2

eM_USB模組N

其中

1基本模組為 eM_USB模組可用 USB界面和個人電腦連線並提供 USB對光纖網路的轉換功能使得個人電腦可以獨立控制光纖網路中的每個網路節點

2eM_USB模組也可以作為光纖網路中的網路節點透過光纖網路而接受個人電腦的

監控 3就個人電腦而言不論是 USB界面直接連結或是以光纖網路間接連結的 eM_USB模組都是可以直接監控的網路節點最多可以同時控制一個 USB節點和 30個網路節點

4對於每一個網路節點個人電腦都可執行 eM_USB模組中 FPGA的電路下載工作並在適當的 FPGA電路配合下可執行 eM_USB模組中 FPGA內部電路的讀寫控制 5透過適當的 FPGA電路設計各網路節點都可透過光纖網路和其他任何網路節點

作同步通訊執行 FPGA內部記憶體的資料交換資料交換頻率可達 1KHz以上

77

網路模組配置

每個網路模組的標準配置圖如下

eM_USB模組光纖網路

USB eM_FPGA卡

eM_DEMO模組

eM_EXP實驗模組

DC電源

其中

1網路模組以 eM_USB模組為主提供基本的 USB界面和光纖網路連線 2eM_USB模組中的 FPGACPLD採用插卡型式可選擇不同的 eM_FPGA卡包括

eM_2V1K卡可選用 Virtex系列的 XC2V250和 XC2V1000 eM_3S1K卡可選用 Spartan3系列的 XC3S400XC3S1000和 XC3S1500 eM_3S50卡可選用 Spartan3系列的 XC3S50XC3S200和 XC3S400 eM_95XL卡可選用 9500XL系列的 XC95144XL和 XC95288XL 3eM_USB模組中的對外連線有兩種一種是 26P接頭用以連接既有的各種實驗模

組另一種是兩組 50P接頭將 FPGA中各接腳引出用以連接專題實驗 4eM_DEMO模組就是插上 50P接頭的教學模組其中包括 LED 數字顯示和 44鍵盤也具備兩組的 ADC和兩組的 DAC接頭提供類比訊號的測試工具

常用的實驗組合包括

1精簡組合包括(eM_USB+eM_FPGA)提供基本的網路節點適用於專題實驗 2標準組合包括(eM_USB+eM_FPGA+eM_DEMO)提供基礎 FPGA設計的教學實驗

3實驗組合包括(eM_USB+eM_FPGA+eM_DEMO+eM_EXP)提供進階的 FPGA實驗可依需求選用不同的實驗模組

78

eM_USB 模組

eM_USB 模組的電路配置圖如下

TxRx

DCPower

USB

JP2

JP3

光纖界面

外加電源

PC連線

JP1

eM_FPGA模組

FT232 CPLD FlashROM

SRAM

10cm

6cm

JP4

其中

1對外的連線接頭包括 DC電源 可選擇單電源(5V)或是多電源(5V+12V-12V)兩種 USB界面 直接連接個人電腦 光纖界面連接光纖網路 2實驗界面包括 JP1負責內部 CPLD的電路下載 JP2JP3兩組 50P的擴張用接頭 JP4 標準 26P接頭用以連接各種實驗模組 3內部的電路配置包括 A以 SO-DIMM接頭連接各種 eM_FPGA卡 B內附 EEPROMFlashROM和 SRAM提供 FPGA作應用測試 C以一顆 FT232BM作為 USB界面解碼而以一顆 CPLD作為光纖網路解碼 D提供各種 eM_FPGA卡的電路下載功能 4內附五顆 LED由上而下依序為 usbLED指示 USB界面的讀寫狀態 tstLED可由 FPGA電路自行定義 stsLED可由 FPGA電路自行定義 RxLED 可由 FPGA電路自行定義 TxLED 可由 FPGA電路自行定義

79

外部接腳定義

外部接頭的接點順序圖示如下

上視圖

JP11 9 JP4

126225

JP31

50249

JP21

50249

而各接頭的接點定義如下

JP1 JP4 JP2 JP3 1+33V 1+12V 2+12V 1 GND 2 GND 1 GND 2 GND 2GND 3 ADC 4 DAC 3POWER 4ALARM 3 +5V 4 +5V 3nc 5 yPB2 6 yPB3 5RxNET 6TxNET 5+12V 6+12V 4TCK 7 yPB1 6 yPB4 7RxUSB 6TxUSB 7-12V 6-12V 5nc 9 yPB0 10yPB5 9RxCAN 10TxCAN 9 ADC 10 DAC 6TDO 11yPB6 12yPB7 11P0D0 12P0D1 11P1D0 12P1D1 7TDI 13yGND 14yPC3 13P0D2 14P0D3 13P1D2 14P1D3 8nc 15yPC2 16yPC1 15P0D4 16P0D5 15P1D4 16P1D5 9TMS 17yPC0 18yPA0 17P0D6 18P0D7 17P1D6 18P1D7 19yPA1 20yPA2 19P0D8 20P0D9 19P1D8 20P1D9 21yPA3 22GND 21P0D10 22P0D11 21P1D10 22P1D11 23GND 24+5V 23P0D12 24P0D13 23P1D12 24P1D13 25+5V 26nc 25P0D14 26P0D15 25P1D14 26P1D15 27P2D0 28P2D1 27PxA0 28PxA1 29P2D2 30P2D3 29PxA2 30PxA3 31P2D4 32P2D5 31PxA4 32PxA5 33P2D6 34P2D7 33PxA6 34PxA7 35P2D8 36P2D9 35PxB0 36PxB1 37P2D10 38P2D11 37PxB2 38PxB3 39P2D12 40P2D13 39PxB4 40PxB5 41P2D14 42P2D15 41PxB6 42PxB7 43ADC0 44ADC1 43PxC0 44PxC1 45ADC2 46ADC3 45PxC2 46PxC3 47ADC4 48ADC5 47PxC4 48PxC5 49DAC0 50DAC1 49PxC6 50PxC7

80

eM_FPGA 模組

在各種 eM_FPGA 模組中FPGA 對外電路的標準配置圖如下

24576MHz

FlashROM

26PSRAM

EEPROM

mD[8]

yPA[4]

FPGACPLD

mA[19]mRDmWRmCSeeCKeeCSeeDIeeDO

光纖界面 RxNETTxNET

USB 界面 RxUSBTxUSBCLK24MPOWERALARM

LED

tstLEDstsLEDRxLEDTxLED

yPB[8]yPC[4]

ADCDAC

ADC[8]

實驗模組

ADC[2]

DAC[2]

xPA[4]

xPB[8]

xPC[4]

基礎實驗

其中

1FPGACPLD可以選擇下述幾種 XC2V250XC2V1000 採用 eM_2V1K模組其中 FPGA為 FG456包裝 XC3S400XC3S1000XC3S1500採用 eM_3S1K模組其中 FPGA為 FG456包裝 XC3S400XC3S1000XC3S1500採用 eM_3S1K模組其中 FPGA為 FG456包裝 XC3S50XC3S200XC3S400 採用 eM_3S50模組其中 FPGA為 TQ144包裝 XC95144XLXC95288XL 採用 eM_95XL模組其中 CPLD為 TQ144包裝 2採用 FG456包裝者可以控制所有的 IO界面 3採用 TQ144包裝者只是不能控制 RAM和 FlashROM而可以控制其他所有的界面 4所有 FPGA模組都可自由選擇由 USB界面或是由光纖界面下載電路但是 CPLD模組只能固定由 USB界面下載電路

5所有 FPGACPLD模組都可透過 26P接頭連接既有的各種實驗模組

81

FPGA 接腳對照表

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

mD0 XD6 mD0 A17 C13 -- -- mD1 XD7 mD1 B17 D12 -- -- mD2 XD8 mD2 C17 D11 -- -- mD3 XD9 mD3 D17 C11 -- -- mD4 XD10 mD4 E17 D10 -- -- mD5 XD11 mD5 E16 C10 -- -- mD6 XD12 mD6 E14 D9 -- -- mD7 XD13 mD7 E13 D7 -- -- mA0 XD14 mA0 D13 C7 -- -- mA1 XD15 mA1 C13 D6 -- -- mA2 XA0 mA2 V5 C3 -- -- mA3 XA1 mA3 U5 C4 -- -- mA4 XA2 mA4 Y2 D3 -- -- mA5 XA3 mA5 Y1 D4 -- -- mA6 XA4 mA6 V4 E3 -- -- mA7 XA5 mA7 V3 E4 -- -- mA8 XA6 mA8 W2 F3 -- -- mA9 XA7 mA9 W1 F4 -- -- mA10 XA8 mA10 T2 G6 -- -- mA11 XA9 mA11 T1 K3 -- -- mA12 XA10 mA12 R4 K10 -- -- mA13 XA11 mA13 R3 L3 -- -- mA14 XA12 mA14 R2 L4 -- -- mRD XRD mRD R1 D5 -- -- mWR XWR mWR P6 C6 -- --

POWER P0A0 POWER B4 B20 P1 P5 ALARM P0A1 ALARM A4 A19 P2 P6 RxNET P0A2 RxNET C4 B19 P4 P7 TxNET P0A3 TxNET C5 A18 P5 P9 RxUSB P0B0 RxUSB B5 A15 P6 P10 TxUSB P0B1 TxUSB A5 B15 P7 P11 RxCAN P0B2 RxCAN D6 A14 P8 P12 RxCAN P0B3 TxCAN C6 B14 P10 P13

CLK24M CLK24M CLK24M E12 B12 P124 P38

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

PWM0H P3A0 P0D0 E6 A8 P21 P23 PWM0L P3A1 P0D1 E5 B8 P23 P24 PWM1H P3A2 P0D2 C2 B6 P24 P25 PWM1L P3A3 P0D3 C1 A5 P25 P26 PWM2H P3A4 P0D4 D2 B5 P26 P27

82

PWM2L P3A5 P0D5 D1 A4 P27 P28 PWMenb P3A6 P0D6 E4 B4 P28 P30 PHT1Z P3A7 P0D7 E3 A3 P30 P31 PHT1A P3B0 P0D8 G2 C1 P31 P32 PHT1B P3B1 P0D9 G1 C2 P32 P33 PHT0A P3B2 P0D10 H5 D1 P33 P34 PHT0B P3B3 P0D11 J6 D2 P35 P35 AMP0 P3B4 P0D12 H4 E1 P36 P39 AMP1 P3B5 P0D13 H3 E2 P40 P40 AMP2 P3B6 P0D14 H2 F2 P41 P41 AMP3 P3B7 P0D15 H1 G1 P44 P43 eeSK P0C3 P1D0 C10 B9 P20 P22 eeCS P0C2 P1D1 D10 A9 P18 P21 eeDI P0C1 P1D2 F10 B10 P17 P20 eeDO P0C0 P1D3 E10 B11 P15 P19 ssCK P0B7 P1D4 E8 A11 P14 P17 ssCS P0B6 P1D5 E7 A12 P13 P16 ssDI P0B5 P1D6 A6 B13 P12 P15 ssDO P0B4 P1D7 B6 A13 P11 P14

ppCLK P3C0 P1D8 K4 G2 P46 P44 ppDIN P3C1 P1D9 K3 K1 P47 P45 TxD P3C2 P1D10 K2 K2 P50 P46 RxD P3C3 P1D11 K1 L1 P51 P48

tstLED P3C4 P1D12 L5 L2 P52 P49 stsLED P3C5 P1D13 L4 M1 P53 P50 RxLED P3C6 P1D14 L3 M2 P55 P51 TxLED P3C7 P1D15 L2 N1 P56 P52

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

xPA0 P2A0 P2D0 AA3 N2 P59 P53 xPA1 P2A1 P2D1 Y4 T1 P60 P54 xPA2 P2A2 P2D2 AA4 T2 P63 P56 xPA3 P2A3 P2D3 AB4 U2 P68 P57 xPC0 P2A4 P2D4 W5 V1 P69 P58 xPC1 P2A5 P2D5 Y5 V2 P70 P59 xPC2 P2A6 P2D6 AA5 W1 P73 P60 xPC3 P2A7 P2D7 AB5 W2 P74 P61

-- P2B0 P2D8 V6 Y1 P76 P64 -- P2B1 P2D9 V7 Y2 P77 P66 -- P2B2 P2D10 W6 AA3 P78 P68

mCS P2B3 P2D11 Y6 AB4 P79 P69 mA15 P2B4 P2D12 V9 AA4 P80 P70 mA16 P2B5 P2D13 V10 AB5 P82 P71 mA17 P2B6 P2D14 W10 AA5 P83 P74 mA18 P2B7 P2D15 Y10 AA6 P84 P75 CS0 P2C0 ADC0 AA10 AB8 P85 P76

83

SDIN0 P2C1 ADC1 AB10 AA8 P86 P77 CS1 P2C2 ADC2 U10 AB9 P87 P78

SDIN1 P2C3 ADC3 U11 AA9 P89 P79 SCLK P2C4 ADC4 V11 AB10 P90 P80 CS2 P2C5 ADC5 W11 AA10 P92 P81

SDOUT P2C6 ADC6 Y11 AB11 P93 P82 LDAC P2C7 ADC7 AA11 AA11 P95 P83

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

xPB0 P1A0 PxA0 M1 M3 P135 P85 xPB1 P1A1 PxA1 M2 M4 P132 P86 yPB2 P1A2 PxA2 M3 N3 P131 P87 yPB3 P1A3 PxA3 M4 N4 P130 P88 yPB1 P1A4 PxA4 M5 T4 P129 P91 yPB4 P1A5 PxA5 M6 T5 P128 P92 yPB0 P1A6 PxA6 N1 U3 P127 P93 yPB5 P1A7 PxA7 N2 U4 P125 P94 yPB6 P1B0 PxB0 U13 V3 P119 P95 yPB7 P1B1 PxB1 V13 V4 P118 P96 xPB2 P1B2 PxB2 W13 W3 P116 P97 xPB3 P1B3 PxB3 Y13 W4 P113 P98 xPB4 P1B4 PxB4 AA13 Y3 P112 P100 xPB5 P1B5 PxB5 AB13 Y4 P96 P101 yPC3 P1B6 PxB6 U12 Y5 P97 P102 yPC2 P1B7 PxB7 V12 W5 P98 P103 yPC1 P1C7 PxC0 AB17 W11 P108 P113 yPC0 P1C6 PxC1 AA17 Y11 P107 P112 yPA0 P1C5 PxC2 Y17 W10 P105 P111 yPA1 P1C4 PxC3 W17 Y10 P104 P110 yPA2 P1C3 PxC4 AB18 W9 P103 P107 yPA3 P1C2 PxC5 AA18 W8 P102 P106 xPB6 P1C1 PxC6 Y18 W6 P100 P105 xPB7 P1C0 PxC7 W18 Y6 P99 P104

84

eM_DEMO 模組

eM_DEMO 模組的電路配置圖如下

eM_USB 模組

數字型 LED

0 1 2 34 5 6 78 9 A BC D E F

燈號型 LED

44 鍵盤

ADC0 ADC1 DAC0 DAC1

LED 選擇KEY 選擇

其中

1eM_DEMO模組的基本功能包括 A將 xPAxPBxPC等 16個 IO訊號引出控制 LED和鍵盤電路 B將 ADDA訊號引出並放大成+-10V的工作範圍 2LED和鍵盤可以選擇三種模式由 LED和 KEY 兩組開關作選擇圖示如下

模式1

0123

模式2 模式3

0 1 2 34 5 6 78 9 A BC D E F

0123

3模式14鍵輸入並搭配 16點的 LED燈號顯示其中 16點 LED分別對映到 xPA[0~3]xPB[0~7]和 xPC[0~3] 4組按鍵分別對映到 xPC[0~3] 4模式24鍵輸入並搭配四個 7段式數字顯示其中 數字顯示由 xPA[0~3]作數字掃瞄而由 xPB[0~7]作 7段式 LED控制 4組按鍵 分別對映到 xPC[0~3] 5模式316鍵輸入並搭配四個 7段式數字顯示其中 數字顯示由 xPA[0~3]作數字掃瞄而由 xPB[0~7]作 7段式 LED控制 16組按鍵由 xPA[0~3]作鍵盤掃瞄而由 xPC[0~3]作鍵盤讀取 6根據VHDL與數位邏輯設計的章節其中 第 1章至 10章的實驗採用模式1而 第 11章實驗採用模式2而 第 12章之後的實驗都採用模式3

85

FPGA UCF 定義

eM_3S1K 模組

NET CLK LOC = B12

NET XAlt0gt LOC = N2

NET XAlt1gt LOC = T1

NET XAlt2gt LOC = T2

NET XAlt3gt LOC = U2

NET XBlt0gt LOC = M3

NET XBlt1gt LOC = M4

NET XBlt2gt LOC = W3

NET XBlt3gt LOC = W4

NET XBlt4gt LOC = Y3

NET XBlt5gt LOC = Y4

NET XBlt6gt LOC = W6

NET XBlt7gt LOC = Y6

NET XClt0gt LOC = V1

NET XClt1gt LOC = V2

NET XClt2gt LOC = W1

NET XClt3gt LOC = W2

NET YAlt0gt LOC = W10

JP4 接頭

NET YAlt1gt LOC = Y10

NET YAlt2gt LOC = W9

NET YAlt3gt LOC = W8

NET YBlt0gt LOC = U3

NET YBlt1gt LOC = T4

NET YBlt2gt LOC = N3

NET YBlt3gt LOC = N4

NET YBlt4gt LOC = T5

NET YBlt5gt LOC = U4

NET YBlt6gt LOC = V3

NET YBlt7gt LOC = V4

NET YClt0gt LOC = Y11

NET YClt1gt LOC = W11

NET YClt2gt LOC = W5

NET YClt3gt LOC = Y5

在光碟片中 RFFPGAVHDLDEMOBIT3S1K 裡有 VHDL 與數位邏輯設計書本範例原始檔與合成檔

86

eM_3S50 模組

NET CLK LOC = P124

NET XAlt0gt LOC = P59

NET XAlt1gt LOC = P60

NET XAlt2gt LOC = P63

NET XAlt3gt LOC = P68

NET XBlt0gt LOC = P135

NET XBlt1gt LOC = P132

NET XBlt2gt LOC = P116

NET XBlt3gt LOC = P113

NET XBlt4gt LOC = P112

NET XBlt5gt LOC = P96

NET XBlt6gt LOC = P100

NET XBlt7gt LOC = P99

NET XClt0gt LOC = P69

NET XClt1gt LOC = P70

NET XClt2gt LOC = P73

NET XClt3gt LOC = P74

NET YAlt0gt LOC = P105

JP4 接頭

NET YAlt1gt LOC = P104

NET YAlt2gt LOC = P103

NET YAlt3gt LOC = P102

NET YBlt0gt LOC = P127

NET YBlt1gt LOC = P129

NET YBlt2gt LOC = P131

NET YBlt3gt LOC = P130

NET YBlt4gt LOC = P128

NET YBlt5gt LOC = P125

NET YBlt6gt LOC = P119

NET YBlt7gt LOC = P118

NET YClt0gt LOC = P107

NET YClt1gt LOC = P108

NET YClt2gt LOC = P98

NET YClt3gt LOC = P97

在光碟片中 RFFPGAVHDLDEMOBIT3S200 裡有VHDL與數位邏輯設計書本範例原始檔與合成檔

87

eM_95XL 模組

NET CLK LOC = SPIN38

NET XAlt0gt LOC = SPIN53

NET XAlt1gt LOC = SPIN54

NET XAlt2gt LOC = SPIN56

NET XAlt3gt LOC = SPIN57

NET XBlt0gt LOC = SPIN85

NET XBlt1gt LOC = SPIN86

NET XBlt2gt LOC = SPIN97

NET XBlt3gt LOC = SPIN98

NET XBlt4gt LOC = SPIN100

NET XBlt5gt LOC = SPIN101

NET XBlt6gt LOC = SPIN105

NET XBlt7gt LOC = SPIN104

NET XClt0gt LOC = SPIN58

NET XClt1gt LOC = SPIN59

NET XClt2gt LOC = SPIN60

NET XClt3gt LOC = SPIN61

NET YAlt0gt LOC = SPIN111

JP4 接頭

NET YAlt1gt LOC = SPIN110

NET YAlt2gt LOC = SPIN107

NET YAlt3gt LOC = SPIN106

NET YBlt0gt LOC = SPIN93

NET YBlt1gt LOC = SPIN91

NET YBlt2gt LOC = SPIN87

NET YBlt3gt LOC = SPIN88

NET YBlt4gt LOC = SPIN92

NET YBlt5gt LOC = SPIN94

NET YBlt6gt LOC = SPIN95

NET YBlt7gt LOC = SPIN96

NET YClt0gt LOC = SPIN112

NET YClt1gt LOC = SPIN113

NET YClt2gt LOC = SPIN103

NET YClt3gt LOC = SPIN102

在光碟片中 RFFPGAVHDLDEMOSVF95288XL 裡有VHDL與數位邏輯設計書本範例原始檔與合成

檔案

88

eM_FPGA 模組

NET CLK LOC = E12

NET XAlt0gt LOC = AA3

NET XAlt1gt LOC = Y4

NET XAlt2gt LOC = AA4

NET XAlt3gt LOC = AB4

NET XBlt0gt LOC = M1

NET XBlt1gt LOC = M2

NET XBlt2gt LOC = W13

NET XBlt3gt LOC = Y13

NET XBlt4gt LOC = AA13

NET XBlt5gt LOC = AB13

NET XBlt6gt LOC = Y18

NET XBlt7gt LOC = W18

NET XClt0gt LOC = W5

NET XClt1gt LOC = Y5

NET XClt2gt LOC = AA5

NET XClt3gt LOC = AB5

NET YAlt0gt LOC = Y17

JP4 接頭

NET YAlt1gt LOC = W17

NET YAlt2gt LOC = AB18

NET YAlt3gt LOC = AA18

NET YBlt0gt LOC = N1

NET YBlt1gt LOC = M5

NET YBlt2gt LOC = M3

NET YBlt3gt LOC = M4

NET YBlt4gt LOC = M6

NET YBlt5gt LOC = N2

NET YBlt6gt LOC = U13

NET YBlt7gt LOC = V13

NET YClt0gt LOC = AA17

NET YClt1gt LOC = AB17

NET YClt2gt LOC = V12

NET YClt3gt LOC = U12

在光碟片中 RFFPGAVHDLDEMOBIT2V250 裡有VHDL與數位邏輯設計書本範例原始檔與合成檔

89

Page 54: RFFPGA 直流馬達實驗手冊juniortek.com.tw/program/manual/RF-DC-mal.pdf · em_demo模組 em_dcm 直流伺服馬達 dc電源 rffpga 系統的直流馬達實驗規劃 其中包括:

page 2 畫面設計 page 3 畫面設計與實驗二 page 4相同畫面

方塊的參數設定可調整 PD控制器中的 kp和 kd值以調整系統之響應 實測響應圖

訊 號 說 明 訊 號 說 明 ch1 弦波產生器產生之位置命令 ch3 馬達角位置訊號 ch2 加減速模組輸出之位置命令 ch4 馬達角速度訊號

54

直流馬達之閉迴路弦波加減速位置控制響應圖

55

7組合語言說明

本節將針對 DC馬達伺服控制實驗專用的程式模組進行功能與程式碼的說明其

有關於波形產生器與資料擷取模組等說明如下

SIN_waveasm 正弦波產生器 PWM_waveasm 方波產生器 IIR1_filterasm 一階濾波器 DAS4asm 資料蒐集模組

弦波產生器

此模組會產生週期性的正弦波方塊圖如下

outfrq

kBiasbias

ampkAmp

kFrqth

kThf=1TB

θ

A

其中

1正弦波有四個參數振幅(A)頻率(F)相位(θ)和偏移(B)其公式為 out = A sin(2πF t +θ) + B 2對於單純的正弦波產生器所對映的參數包括 kAmp 振幅值 kFrq 頻率值kFrq=655368000Hz其中 Hz的範圍為 0~4000例如 1000Hz =gt frq=8192 100Hz =gt frq=819 10Hz =gt frq=82 1Hz =gt frq=8 kTh 相角值0~255代表 0~360的相位當 th=0 時為正弦波 th=64 時為餘弦波 th=128時為反相波依此類推 kBias偏移值 3對於可調變的正弦波產生器其對映的輸入點為 amp 控制振幅的輸入點可產生調幅(AM)波形 frq 控制頻率的輸入點可產生調頻(FM)波形 th 控制相位的輸入點可產生調相(PM)波形 bias控制偏移的輸入點可產生雙頻混波(相加)波形 4若不使用調變功能時各個輸入點時的預設值為 amp 指向 kAmp 的位址 frq 指向 kFrq 的位址

56

th 指向 kTh 的位址 bias指向 kBias的位址

模組程式範例SIN_WAVEasm

local amp R0 IP kAmp 輸入點sin波的振幅 local frq R1 IP kFrq 輸入點sin波的頻率 local th R2 IP kTh 輸入點sin波的相角 local bias R3 IP kBias 輸入點sin波的中心偏移 local out R4 OP 輸出點sin波輸出 local tab R5 TP 表格指標指向 sin[256]的表格 local ang R6 內部變數相位角65536=360deg local kAmp R7 1000 參數振幅值 local kFrq R8 1000 參數頻率值=655368000Hz local kTh R9 0 參數相角值360deg=256 local kBias R10 0 參數偏移值 data 11 模組變數區長度及初值 initial 啟動程序 WR ang0 WR out0 ang=out=0 RET timer 即時控制程序(8KHz) RD ang ADD (frq) WR ang ang+=frq SFR 8 ADD (th) AND 255 ACC=sin(ang256+th) ADD tab WRH RDM table-look-up MUL (amp) SFR 12 ADD (bias) WR out out=ACCamp4096+bias RET table tab 256 sin[256]表格區10=4096 0 101 201 301 401 501 601 700 00~070deg 799 897 995 1092 1189 1285 1380 1474 08~0F 1567 1660 1751 1842 1931 2019 2106 2191 10~17 2276 2359 2440 2520 2598 2675 2751 2824 18~1F 2896 2967 3035 3102 3166 3229 3290 3349 20~27 3406 3461 3513 3564 3612 3659 3703 3745 28~2F 3784 3822 3857 3889 3920 3948 3973 3996 30~37 4017 4036 4052 4065 4076 4085 4091 4095 38~3F 4096 4095 4091 4085 4076 4065 4052 4036 40~4790deg 4017 3996 3973 3948 3920 3889 3857 3822 48~4F 3784 3745 3703 3659 3612 3564 3513 3461 50~57 3406 3349 3290 3229 3166 3102 3035 2967 58~5F

57

2896 2824 2751 2675 2598 2520 2440 2359 60~67 2276 2191 2106 2019 1931 1842 1751 1660 68~6F 1567 1474 1380 1285 1189 1092 995 897 70~77 799 700 601 501 401 301 201 101 78~7F 0 65435 65335 65235 65135 65035 64935 64836 80~87180deg 64737 64639 64541 64444 64347 64251 64156 64062 88~8F 63969 63876 63785 63694 63605 63517 63430 63345 90~97 63260 63177 63096 63016 62938 62861 62785 62712 98~9F 62640 62569 62501 62434 62370 62307 62246 62187 A0~A7 62130 62075 62023 61972 61924 61877 61833 61791 A8~A8 61752 61714 61679 61647 61616 61588 61563 61540 B0~B7 61519 61500 61484 61471 61460 61451 61445 61441 B8~BF 61440 61441 61445 61451 61460 61471 61484 61500 C0~C7270deg 61519 61540 61563 61588 61616 61647 61679 61714 C8~CF 61752 61791 61833 61877 61924 61972 62023 62075 D0~D7 62130 62187 62246 62307 62370 62434 62501 62569 D8~DF 62640 62712 62785 62861 62938 63016 63096 63177 E0~E7 63260 63345 63430 63517 63605 63694 63785 63876 E8~EF 63969 64062 64156 64251 64347 64444 64541 64639 F0~F7 64737 64836 64935 65035 65135 65235 65335 65435 F8~FF

就程式結構而言說明如下

timer 即時控制程序(8KHz) RD ang ADD (frq) WR ang ang+=frq SFR 8 ADD (th) AND 255 ACC=sin(ang256+th) ADD tab WRH RDM table-look-up MUL (amp) SFR 12 ADD (bias) WR out out=ACCamp4096+bias RET

1基本上我們以查表法計算 sin()其輸入θ的範圍為 0~255對映到 0~360deg其輸出 sin(θ)的範圍為+-4096對映到+-10的範圍

2建立一個內部變數 ang其範圍為 0~65535對映到 0~360的相位角 3每個timer程序都執行 ang+=frq的動作更新目前的相位角接著依照 ang的相位角查表得到 sin(ang256+th)值

4由於表格長度為 256-word所以必須將 ang256才能得到正確的對映關係而 th範圍為 0~255所以不需要像 ang一般的做額外處理

5sin()的範圍為(+1-1)而在表格中以(+4096~-4096)的型式記錄相當於 10=4096所以執行 Asin()時還要用 SFR12指令做4096的動作才能正確的取得輸出值

58

6就頻率輸入 frq而言其計算原則是將θ=ωt轉化成θ=Σ(ωdt)因為抽樣頻率

為 8KHz所以 dt=18000而得到 frq=655368000Hz公式其中 Hz為真正的頻率在 8KHz的抽樣頻率下其範圍為 0~4000

鋸齒波產生器

此模組會產生週期性的鋸齒波方塊圖如下

outfrq

kBiasbias

ampkAmp

kFrqth

kThf=1TB

θ

A

其中

1鋸齒波也有四個參數振幅(A)頻率(F)相位(θ)和偏移(B)和正弦波的定義完全一致唯一的差異是其輸出為鋸齒波而非正弦波

2基本波形是從週期開始時為 0一直遞增到週期結束時到達最高點然後立刻回歸

到 0重新開始 3以程式結構而論鋸齒波程式幾乎就是正弦波的相位計算部分只差沒有正弦波的

查表處理而已

模組程式範例SAW_WAVEasm

local amp R0 IP kAmp 輸入點sin波的振幅 local frq R1 IP kFrq 輸入點sin波的頻率 local th R2 IP kTh 輸入點sin波的相角 local bias R3 IP kBias 輸入點sin波的中心偏移 local out R4 OP 輸出點sin波輸出 local ang R5 內部變數相位角65536=360deg local kAmp R6 1000 參數振幅值 local kFrq R7 1000 參數頻率值=655368000Hz local kTh R8 0 參數相角值360deg=256 local kBias R9 0 參數偏移值 data 11 模組變數區長度及初值 initial 啟動程序 WR ang0 WR out0 ang=out=0 RET timer 即時控制程序(8KHz) RD ang ADD (frq) WR ang ang+=frq SFR 8 ADD (th) AND 255 ACC=(ang256+th)amp0x00ff MUL (amp) SFR 8 ADD (bias) WR out out=ACCamp256+bias

59

RET

脈衝波產生器

outfrq

kBiasbias

ampkAmp

kFrqth

kThf=1TB

θ

A

pwm

kDutyduty

此模組會產生週期性的脈衝波方塊圖如下

其中

1脈衝波有五個參數其中振幅(A)頻率(F)相位(θ)和偏移(B)四個參數和正弦波

定義完全一樣另外再增加一個負載率(D) 2基本波形是從週期開始時為 1隔段時間後換為 0然後持續到週期結束再重新開始其中 1所佔有的比例就是負載率當 D=0時為 0而 D=255時為 100

3和其他參數類似負載率(D)以 duty為其輸入點而以 kDuty為其參數值

模組程式範例PLS_WAVEasm

local amp R0 IP kAmp 輸入點脈衝波的振幅 local frq R1 IP kFrq 輸入點脈衝波的頻率 local th R2 IP kTh 輸入點脈衝波的相角 local bias R3 IP kBias 輸入點脈衝波的中心偏移 local duty R4 IP kDuty 輸入點脈衝波的負載率 local out R5 OP 輸出點脈衝波輸出 local ang R6 內部變數相位角65536=360deg local kAmp R7 1000 參數振幅值 local kFrq R8 1000 參數頻率值=655368000Hz local kTh R9 0 參數相角值360deg=256 local kBias R10 0 參數偏移值 local kDuty R11 128 參數負載率100 =256 data 12 模組變數區長度及初值 initial 啟動程序 WR ang0 WR out0 ang=out=0 RET timer 即時控制程序(8KHz)

60

RD ang ADD (frq) WR ang ang+=frq SFR 8 ADD (th) AND 255 ACC=(ang256+th)amp0x00ff SUB (duty) RD (amp) JLT t1 RD 0 ACC=(amp0) t1 ADD (bias) WR out out=ACC+bias RET

IIR 一階濾波器

此模組執行一階的 IIR濾波器方塊圖如下

kau x

Z-1

+

+

-

+低通濾波器

高通濾波器dx lp

hp

濾波器參數的計算公式如下

1假設濾波器的頻寬為 hz則 ωn=hz628 2若系統頻率為 8KHz則抽樣週期 dT為 dT=dt8000 其中 dt為模組參數 3則濾波器參數為 ka=ωndT4096或是 =hzdt62880004096即 =hzdt32 4當 dt決定後所允許的訊號頻寬為(4000dt)換句話說訊號頻寬會因為 dt增加而下降

為了方便實驗的運用下面列出常用的參數對照表

濾波頻寬

(Hz)

10 20 50 100 200 500 1000 2000

訊號頻寬

(Hz)

400 800 2000 4000 4000 4000 4000 4000

模組參數 dt 10 5 2 1 1 1 1 1

模組參數 ka 320 320 320 320 640 1600 3200 6400

表格的運用方式如下

1首先決定濾波頻寬 2接著查表找出對映的參數 dt和 ka 3再查表得到對映的訊號頻寬以決定是否需要串接前級濾波器

61

模組程式範例IIR1_FILTERasm

local u R0 IP 輸入點濾波器輸入 local lp R1 OP 輸出點低通濾波器輸出 local hp R2 OP 輸出點高通濾波器輸出 local dt R3 1 參數抽樣週期 local ka R4 4096 參數增益 ka10=4096 local prd R5 內部變數抽樣週期用 data 6 模組變數區長度 initial 開機啟動程序 WR lp0 WR hp0 WR prd1 RET lp=hp=0prd=1 timer 即時控制程序 SUB prd1 JNZ b9 if (--prdgt0) return RD dt WR prd prd=dt RD (u) SUB lp WR hp hp=u-lp MUL ka SFR 12 ADD lp WR lp lp+=(hpka4096) b9 RET

資料蒐集模組

資料蒐集模組是一個非常特殊的模組專門配合 eTTY 程式中的示波器使用

模組程式範例DAS4asm

local cmd R0 0 紀錄命令0=停止1=前置記錄2=正觸發4=負觸發6=觸發記錄 local dt R1 1 抽樣週期每 dT抽樣一次 local tab R2 TP DAS表格啟始位址 local cnt R3 0 目前記錄點(0~255) local ch1 R4 0 定義頻道1的變數位址 local ch2 R5 0 定義頻道2的變數位址 local ch3 R6 0 定義頻道3的變數位址 local ch4 R7 0 定義頻道4的變數位址 local trg R8 0 定義觸發頻道的變數位址 local th R9 0 觸發準位 local tail R10 0 觸發後的抽樣個數 local buf R11 1 抽樣計數(1~dt) local pnt R12 表格位址計算pnt=tab+cnt4 local len R13 表格長度計算(0~256) data 14 定義模組變數區的長度 table tab 1024 定義表格的長度 initial 啟動程序 WR cmd0 RET cmd=0 timer 控制程序

62

ADD cmd0 JZ t9 if (cmd==0) return SUB buf1 JNZ t9 if (--buf)gt0) return RD dt WR buf dt=buf RD cnt ADD 1 AND 0xff WR cnt cnt=(cnt+1)amp0xff SFL 2 ADD tab WR pnt pnt=tab+cnt4 RD (ch1) WR (pnt) ADD pnt1 pnt++=ch1 RD (ch2) WR (pnt) ADD pnt1 pnt++=ch2 RD (ch3) WR (pnt) ADD pnt1 pnt++=ch3 RD (ch4) WR (pnt) pnt =ch4 RD cmd SUB 1 JZ t9 SUB 1 JZ t2 SUB 1 JZ t3 SUB 1 JZ t4 SUB 1 JZ t5 SUB 1 JZ t6 JR t7 t2 RD (trg) SUB th JGE t9 ADD cmd1 JR t9 wait trgltth t3 RD (trg) SUB th JLE t9 JR t6 wait trggtth t4 RD (trg) SUB th JLE t9 ADD cmd1 JR t9 wait trggtth t5 RD (trg) SUB th JGE t9 JR t6 wait trgltth t6 WR len0 WR cmd7 len=0cmd=7 t7 ADD len1 SUB tail JLT t9 WR cmd0 if ((++len)gt=0x80) cmd=0 t9 RET

與 DC 馬達控制相關的程式模組有以下 4個程式模組說明如下

(1)加減速控制模組 ACC_controlasm (2)光電盤輸入模組 POS_inputasm (3)PWM輸出模組 PWM_outputasm (4)PD控制模組 PD_controlasm

71加減速控制模組 此程式模組主要功能在於執行位置控制的加減速命令修正其數學模式採用 Lynn

濾波器的架構參見下圖

cmd

2

+

old Z -1

-

Z -1

Z -1

Z-1

Z-1x0 x1 x8 x9 x16

+ -

++

2

Z-1

Z-1 y1 y2

+

-

y0

+ +

sumZ-1

+164

12

out

dif

+

63

加減速控制模組方塊圖

其中

1Lynn 濾波器的階數固定成八階也就是 m=8其公式為 H(z) = (1-2Z-m+Z-2m)(1-2Z-1+Z-2)m2

2因為m=8所以m2=64因此最後計算低通濾波的部份時要先做除 64的運算 3因為低通濾波(lp)和 y0之間有 64倍的差異代表 y0y1y2的變化範圍比濾波器輸

入值要擴大許多例如輸入值在+-1000變化時y0y1y2很可能會在+-64000之間變化這範圍已經超出整數處理的範圍很可能會造成錯誤的計算結果

4所以在實驗時輸入值的變化範圍必須控制在+-500之間以保證計算的正確性 5對於 Lynn 濾波器當 m=8時其濾波器的頻寬固定為 1 kHzmdt也就是 dt=1時頻寬為 125 Hz dt=2時頻寬為 625Hz依此類推 6對於 Lynn 濾波器其濾波器的延遲固定為 m個抽樣週期因此設計 hp = x8 - lp 即可得到高通濾波器的對應結果 7其中乘 2和除 64的運算以移位運算取代所以整個程式中並無任何乘法運算 8Lynn 濾波器本身並不是穩定濾波器所以在程式啟動時必須確實的將所有狀態

(x0~x16)歸零否則會產生不穩定的狀態輸出

因為 Lynn濾波器中所有參數固定所以除了抽樣週期 dt 之外並無任何可調參數

抽樣週期 dt 可以控制頻寬dt 越大則濾波器頻寬越低

將步階命令值的輸出送入 Lynn 濾波器中經由低通濾波器的效應可以減緩命

令的變化程度達到加減速控制的目的以下為使用 Lynn 濾波器型式實現加減速控

制的組合語言程式列印 如欲更進一步瞭解 Lynn 濾波器與 FIR 數位濾波器之間的關係可以參考通訊實驗

四數位濾波器設計(FIR)中之說明

ACC_controlasm程式列印 local cmd R0 IP 輸入點位置命令

local out R1 OP 輸出點加減速處理後的位置命令

local dif R2 OP 輸出點位置微分命令

local axis R3 0 馬達編號0=X1=Y2=Z3=C

local old R4 內部變數微分計算用

local sumL R5 內部變數積分計算用

local sumH R6 內部變數積分計算用

local y0 R7 內部變數y(0~2)

local y1 R8 local y2 R9

local x0 R10 內部變數x(0~16)

local x1 R11 local x2 R12 local x3 R13 local x4 R14

local x5 R15 local x6 R16 local x7 R17 local x8 R18

local x9 R19 local x10 R20 local x11 R21 local x12 R22

local x13 R23 local x14 R24 local x15 R25 local x16 R26

64

data 27 模組變數區長度

initial 開機啟動程序

WR dif0 RD (cmd) WR out WR old dif=0 out=old=cmd

sumHL=cmd64

SFL 6 WR sumL RD out SFR 10 SGN 5 WR sumH

RPT 17 WR x00 RPT 3 WR y00 RET x[0~16]=0y[0~2]=0

timer 即時控制程序

RD (cmd) SUBX old WR x0 x0=cmd-old old=cmd

SUB x81 ADD x16 ADD y11 SUB y2 WR y0 y0=x0-2x8+x16+2y1-y2

SGN ADD sumL WR sumL RDH ADC sumH WR sumH sumHL+=y0

WRH RD sumL SFR 6 WR out out=sumHL64

RD y0 SGN SFR WR dif dif=y032mm

RD x0 RPT 16 RDX x1 x[i]=x[i-1] i=1~16

RD y0 RDX y1 WR y2 y[i]=y[i-1] i=1~2

b9 RET

72光電盤輸入模組

DC馬達的位置由光電盤量測之預設儲存於 0xac與 0xbe二個輸入埠位址中其中位址 0xac記錄 X軸馬達的位置位址 0xbe記錄 Y軸馬達的位置由於本實驗的DC馬達接在 Y軸的位置上因此程式中直接選用 Y軸的輸入 光電盤位置輸入的程式列印如下其中速度由位置的差分而得至於馬達的位置

則使用內部 2個 word加以記錄精度為 32位元 POS_inputasm程式列印 local spd R0 OP 輸出點速度量測值

local ang R1 OP 輸出點角度量測值

local angH R2 內部變數角度的 32 位元部分

local mode R3 0x308 模式選擇15MHzAB 相正反向輸入

local pht R4 0xac 輸入阜地址光電盤輸入(0xac)

local phtc R5 0xbe 輸入阜地址光電盤模式(0xbe)

local old R6 內部變數速度更新用

data 7 模組變數區長度

initial 開機啟動程序

RD mode WR (phtc) phtc=mode

RD (pht) WR old WR spd0 RET old=phtspd=0

timer 即時控制程序

RD (pht) SUBX old SGN 11 WR spd spd=(pht-old)old=pht

65

ADD ang WR ang angHL+=spd

RDH ADC angH WR angH

RET

73 PWM輸出控制模組 模組方塊

cmd PWM輸出

程式說明 1在開機時將切換保護時間寫到輸出阜 0xbc上其中切換保護值為 0~6360=5us 2在每次 timer interrupt時將 cmd訊號處理後寫到輸出阜 0xb8上

PWM_outputasm程式列印 local cmd R0 IP gnd 輸入點v相命令

local gain R1 4096 參數輸出增益1=4096

local bias R2 2048 參數輸出偏壓0=2048

local limit R3 4095 參數輸出極限1=4095

local zone R4 0x88f0 參數頻率=12KHz切換保護=5us

local pwm R5 0xb8 輸出阜地址PWM0 輸出(0xb8)

local mode R6 0xbc 輸出阜地址PWM 模式(0xbc)

local p0md R7 0xf8 輸出阜地址port0 模式(0xf8)

local gnd R8 0 輸入接地點

data 9 模組變數區長度

initial 開機啟動程序

RD bias WR (pwm) pwm=bias

RD 0xffff WR (p0md) set port0 mode

RD zone WR (mode) RET mode=zone

stop 關機保護程序

RD bias WR (pwm) RET pwm=bias

timer 即時控制程序

RD (mode) xor 1 and 1 WR (mode) trigger watch-dog

RD (cmd) MUL gain SFR 12 ADD bias ACC=(cmdgain4096)+bias

MAX 0 MIN limit WR (pwm) pwm=limit(ACC)

RET

66

74 PD 控制模組

PD控制的模組方塊參見圖二十一所示其中比例控制的部份直接由增益 kp加以調整微分控制的部份則由誤差的差分經增益 kd的調整而得

Σ+

-

cmd

fdk

err out

Σ

pk

dk

Σ

+

+

+

-

old1minusZ

PD控制器的方塊圖

PD_controlasm程式列印 local cmd R0 IP gnd 輸入點位置命令(可忽略)

local fdk R1 IP gnd 輸入點位置回授(可忽略)

local out R2 OP 輸出點用以控制速度迴路

local kp R3 256 參數增益 kp10=256

local kd R4 0 參數增益 kd10=256

local err R5 0 內部變數

local old R6 0 內部變數

local gnd R7 0 無輸入時的短路點

data 8 模組變數區長度

initial 開機啟動程序

WR out0 WR old0 RET out=old=0

timer 即時控制程序

RD (cmd) SUB (fdk) PRTF WR err

MUL kp SFR 8 P=(cmd-fdk)kp256

RDS err SUBX old MUL kd SFR 8 D=(err-old)kd256

ADDS

WR out out=P+D

RET

程式中預設增益值的 10以整數值 256為基底因此使用 SFR 8的指令加以調

整另外在在計算微分項的程式部份用到 SUBX old的指令其詳細的暫存器動作如

下 參考 piDSP的指令說明SUBX指令將總共用到 3個時序參考錯誤 找不到參照

67

來源在時序 1時將原先 AX的資料拷貝一份到 HX中時序 2時正式執行減

法的動作所以 AX暫存器中的內容會變成 err-old時序 3時DSP會將存放在 HX暫存器中的內容拷貝一份到 old的記憶體中也就是經由 SUBX此一精簡指令將

同時完成計算差分所需要的相減與資料疊代的動作有效的利用 piDSP控制器 DSP核心的精簡指令將可以大幅提昇系統的計算速度

HX AXoldSUBXerr err

old

err

errerr olderr minus

1_err

errerr olderr minus err

1_err

1

2

3

SUBX的指令時序與暫存器變化

68

8附錄快速安裝說明

光纖網路通訊 FPGA 發展系統 (適用於 WIN-XP200098 系統)

快速安裝說明

26Pin 負載輸出入埠

雙電源︵5

12

伏︶輸入埠

單電源︵5

伏︶輸入埠

USB

光纖線輸

號 光纖線輸出埠

入 傳 埠

首先將光碟片 RFFPGA 目錄檔案拷貝在您工作硬碟裡面

第一次安裝時先將 USB 傳輸線接上電腦主機將電源供應器接上 FPGA 模組此時電

腦會出現安裝 USB-Serial 驅動程式選擇從清單安裝此驅動程式放置在光碟片

RFFPGA-USBdrive 選擇您目前安裝系統

可選擇 WIN-98WIN-MEWIN-2000WIN-XP 系統配合您現在工作電腦作業系統

69

注意一般電腦 USB 埠很多插口當您安裝驅動程式時是配合您當時插入之埠

下次如您插入不同接口埠時電腦會再次要求安裝驅動程式這是正常現象請再次安

裝驅動程式否則無法使用

FPLC 操作

首先進入 RFFPGA裡子目錄 testASM直接點選 fPLCexe 出現下面操作畫面(也可直接將

此檔案放置桌面直接點選)

(或者選擇 File 再執行 Setuphellip 選擇您要執行 CAI 檔)

70

進入下面操作畫面 首先使用滑鼠在 FPGA下載按鈕單擊動作使 FPGA變成 DSP晶片 實驗一至實驗五皆為使用 DSP組合語言設計程式其原始程式分別為 testASM1至testASM5可使用 texPad 開啟與編輯程式內容 實驗三與實驗五多有 IO控制動作 當選擇實驗三時出現下面畫面

71

eM_USB 模組

數字型 LED

0 1 2 34 5 6 78 9 A BC D E F

燈號型 LED

44 鍵盤

ADC0 ADC1 DAC0 DAC1

LED 選擇KEY 選擇

模 式 1

0123

注意操作畫面 3與 4 說明開關與按鍵選擇位置後選擇程式下載再按程式啟動如您

按下 0-3按鍵時燈號型 LED會有不同方向閃爍顯示程式停止時結束所有 IO控制動作再按回首頁選擇其他實驗 實驗四與實驗五

模式3

0 1 2 34 5 6 78 9 A BC D E F

按照上面開關選擇直接操作如果以上實驗皆能按照正常操作表示您光纖網路通訊

FPGA發展模組以能正常使用 注意 開機與關機動作順序如下

開機電腦啟動 --- eM_USB 模組電源接上 --- USB 接上電腦 ---

啟動 FPLC 軟體 --- 下載 FPGA 程式

關機關閉 FPLC 軟體 --- eM_USB 模組電源拔掉 --- 拔掉電腦 USB 接頭 ---關掉

電腦

如果以上順序有亂可能造成 USB 找不到驅動造成無法下載經過幾次測試還是

無法下載建議重新啟動電腦主機按照正確步驟操作

72

FPGA 下載操作

進入 FPLC 操作系統按照下列步驟選擇節點模組與下載 bit FPGA 檔案

在 VHDLDEMO 子目錄下您可以選擇您目前 FPGA 種類型號在此型號下我們已將 VHDL

與數位邏輯設計課本範例全部放於此處

73

光纖網路連線 FPGA 下載操作

首先利用光纖線將 eM_USB0 模組光纖輸出埠接至 eM_USB1 模組光纖輸入埠以此

類推最後再將最後 eM_USBN 模組光纖輸出埠接至 eM_USB0 模組光纖輸入埠配置

如附圖方式

個人電腦(Windows) eM_USB模組

0USB

eM_USB模組1

光纖網路

eM_USB模組2

eM_USB模組N

配置完成後進入 FPLC 系統首先必須先將 Node00 下載在 testASM 子目錄裡

piDSPv0bit 檔讓 eM_USB0 模組 FPGA 具備 DSP 功能才能執行光纖網路通訊

操作如下

此時您就可以選擇分別下載至各模組 FPGA 檔 bit

74

安裝 FPLC 注意事項

當您進入 FPLC 時

按 FILE 選擇 programhellip 選擇檔案為 exp_dcmplc 出現下面畫面

正常顯示畫面為

75

DOS 環境操作

在 PC 端的操作是在 Windows 環境中的 DOS 視窗中執行指令範例如下

eFPGA progNETbit 下載 FPGA電路至網路節點0(即 USB節點)中 eFPGA testLEDbit 1 下載 FPGA電路至網路節點1中

對於單一節點的控制程序如下

1將 eM_USB模組連結個人電腦的 USB端 2eM_USB模組開機 3執行下載指令即可 eFPGA xxxxbit 4若要更改 FPGA電路只要重新執行下載指令即可

對於多個網路節點的控制程序如下

1第一組 eM_USB模組連結個人電腦的 USB端再以光纖網路依序其他各節點 2連接 USB界面者為模組0從光纖發射端連接出去的模組為1依此類推 3將所有 eM_USB模組開機 4執行下載指令如下 eFPGA progNETbit 模組0必須先下載指定的 FPGA電路 eFPGA xxxxbit 1 再依序下載其他網路模組的 FPGA電路 eFPGA yyyybit 2 eFPGA zzzzbit 最後再重新下載模組0的 FPGA電路 5換句話說模組0必須先執行 progNETbit讓光纖網路接受 FPGA控制後才能透過光纖網路下載至其他節點等全部網路節點下載完畢後再將模組0的 FPGA重新下載讓模組0也可自由執行任意的 FPGA電路

6若要更改某一個網路節點中的 FPGA電路只要重新執行下述指令 eFPGA progNETbit 模組0必須先下載指定的 FPGA電路 eFPGA yyyybit 2 下載指定網路模組的 FPGA電路 eFPGA zzzz bit 最後再重新下載模組0的 FPGA電路 換句話說除非模組0中的 FPGA已經包括光纖網路管理電路否則一定要先在

模組0中下載網路管理電路後才能下載指定網路節點的 FPGA電路

76

光纖網路通訊 FPGA 發展系統

系統配置

光纖網路通訊 FPGA 發展系統的系統配置圖如下

個人電腦(Windows) eM_USB模組

0USB

eM_USB模組1

光纖網路

eM_USB模組2

eM_USB模組N

其中

1基本模組為 eM_USB模組可用 USB界面和個人電腦連線並提供 USB對光纖網路的轉換功能使得個人電腦可以獨立控制光纖網路中的每個網路節點

2eM_USB模組也可以作為光纖網路中的網路節點透過光纖網路而接受個人電腦的

監控 3就個人電腦而言不論是 USB界面直接連結或是以光纖網路間接連結的 eM_USB模組都是可以直接監控的網路節點最多可以同時控制一個 USB節點和 30個網路節點

4對於每一個網路節點個人電腦都可執行 eM_USB模組中 FPGA的電路下載工作並在適當的 FPGA電路配合下可執行 eM_USB模組中 FPGA內部電路的讀寫控制 5透過適當的 FPGA電路設計各網路節點都可透過光纖網路和其他任何網路節點

作同步通訊執行 FPGA內部記憶體的資料交換資料交換頻率可達 1KHz以上

77

網路模組配置

每個網路模組的標準配置圖如下

eM_USB模組光纖網路

USB eM_FPGA卡

eM_DEMO模組

eM_EXP實驗模組

DC電源

其中

1網路模組以 eM_USB模組為主提供基本的 USB界面和光纖網路連線 2eM_USB模組中的 FPGACPLD採用插卡型式可選擇不同的 eM_FPGA卡包括

eM_2V1K卡可選用 Virtex系列的 XC2V250和 XC2V1000 eM_3S1K卡可選用 Spartan3系列的 XC3S400XC3S1000和 XC3S1500 eM_3S50卡可選用 Spartan3系列的 XC3S50XC3S200和 XC3S400 eM_95XL卡可選用 9500XL系列的 XC95144XL和 XC95288XL 3eM_USB模組中的對外連線有兩種一種是 26P接頭用以連接既有的各種實驗模

組另一種是兩組 50P接頭將 FPGA中各接腳引出用以連接專題實驗 4eM_DEMO模組就是插上 50P接頭的教學模組其中包括 LED 數字顯示和 44鍵盤也具備兩組的 ADC和兩組的 DAC接頭提供類比訊號的測試工具

常用的實驗組合包括

1精簡組合包括(eM_USB+eM_FPGA)提供基本的網路節點適用於專題實驗 2標準組合包括(eM_USB+eM_FPGA+eM_DEMO)提供基礎 FPGA設計的教學實驗

3實驗組合包括(eM_USB+eM_FPGA+eM_DEMO+eM_EXP)提供進階的 FPGA實驗可依需求選用不同的實驗模組

78

eM_USB 模組

eM_USB 模組的電路配置圖如下

TxRx

DCPower

USB

JP2

JP3

光纖界面

外加電源

PC連線

JP1

eM_FPGA模組

FT232 CPLD FlashROM

SRAM

10cm

6cm

JP4

其中

1對外的連線接頭包括 DC電源 可選擇單電源(5V)或是多電源(5V+12V-12V)兩種 USB界面 直接連接個人電腦 光纖界面連接光纖網路 2實驗界面包括 JP1負責內部 CPLD的電路下載 JP2JP3兩組 50P的擴張用接頭 JP4 標準 26P接頭用以連接各種實驗模組 3內部的電路配置包括 A以 SO-DIMM接頭連接各種 eM_FPGA卡 B內附 EEPROMFlashROM和 SRAM提供 FPGA作應用測試 C以一顆 FT232BM作為 USB界面解碼而以一顆 CPLD作為光纖網路解碼 D提供各種 eM_FPGA卡的電路下載功能 4內附五顆 LED由上而下依序為 usbLED指示 USB界面的讀寫狀態 tstLED可由 FPGA電路自行定義 stsLED可由 FPGA電路自行定義 RxLED 可由 FPGA電路自行定義 TxLED 可由 FPGA電路自行定義

79

外部接腳定義

外部接頭的接點順序圖示如下

上視圖

JP11 9 JP4

126225

JP31

50249

JP21

50249

而各接頭的接點定義如下

JP1 JP4 JP2 JP3 1+33V 1+12V 2+12V 1 GND 2 GND 1 GND 2 GND 2GND 3 ADC 4 DAC 3POWER 4ALARM 3 +5V 4 +5V 3nc 5 yPB2 6 yPB3 5RxNET 6TxNET 5+12V 6+12V 4TCK 7 yPB1 6 yPB4 7RxUSB 6TxUSB 7-12V 6-12V 5nc 9 yPB0 10yPB5 9RxCAN 10TxCAN 9 ADC 10 DAC 6TDO 11yPB6 12yPB7 11P0D0 12P0D1 11P1D0 12P1D1 7TDI 13yGND 14yPC3 13P0D2 14P0D3 13P1D2 14P1D3 8nc 15yPC2 16yPC1 15P0D4 16P0D5 15P1D4 16P1D5 9TMS 17yPC0 18yPA0 17P0D6 18P0D7 17P1D6 18P1D7 19yPA1 20yPA2 19P0D8 20P0D9 19P1D8 20P1D9 21yPA3 22GND 21P0D10 22P0D11 21P1D10 22P1D11 23GND 24+5V 23P0D12 24P0D13 23P1D12 24P1D13 25+5V 26nc 25P0D14 26P0D15 25P1D14 26P1D15 27P2D0 28P2D1 27PxA0 28PxA1 29P2D2 30P2D3 29PxA2 30PxA3 31P2D4 32P2D5 31PxA4 32PxA5 33P2D6 34P2D7 33PxA6 34PxA7 35P2D8 36P2D9 35PxB0 36PxB1 37P2D10 38P2D11 37PxB2 38PxB3 39P2D12 40P2D13 39PxB4 40PxB5 41P2D14 42P2D15 41PxB6 42PxB7 43ADC0 44ADC1 43PxC0 44PxC1 45ADC2 46ADC3 45PxC2 46PxC3 47ADC4 48ADC5 47PxC4 48PxC5 49DAC0 50DAC1 49PxC6 50PxC7

80

eM_FPGA 模組

在各種 eM_FPGA 模組中FPGA 對外電路的標準配置圖如下

24576MHz

FlashROM

26PSRAM

EEPROM

mD[8]

yPA[4]

FPGACPLD

mA[19]mRDmWRmCSeeCKeeCSeeDIeeDO

光纖界面 RxNETTxNET

USB 界面 RxUSBTxUSBCLK24MPOWERALARM

LED

tstLEDstsLEDRxLEDTxLED

yPB[8]yPC[4]

ADCDAC

ADC[8]

實驗模組

ADC[2]

DAC[2]

xPA[4]

xPB[8]

xPC[4]

基礎實驗

其中

1FPGACPLD可以選擇下述幾種 XC2V250XC2V1000 採用 eM_2V1K模組其中 FPGA為 FG456包裝 XC3S400XC3S1000XC3S1500採用 eM_3S1K模組其中 FPGA為 FG456包裝 XC3S400XC3S1000XC3S1500採用 eM_3S1K模組其中 FPGA為 FG456包裝 XC3S50XC3S200XC3S400 採用 eM_3S50模組其中 FPGA為 TQ144包裝 XC95144XLXC95288XL 採用 eM_95XL模組其中 CPLD為 TQ144包裝 2採用 FG456包裝者可以控制所有的 IO界面 3採用 TQ144包裝者只是不能控制 RAM和 FlashROM而可以控制其他所有的界面 4所有 FPGA模組都可自由選擇由 USB界面或是由光纖界面下載電路但是 CPLD模組只能固定由 USB界面下載電路

5所有 FPGACPLD模組都可透過 26P接頭連接既有的各種實驗模組

81

FPGA 接腳對照表

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

mD0 XD6 mD0 A17 C13 -- -- mD1 XD7 mD1 B17 D12 -- -- mD2 XD8 mD2 C17 D11 -- -- mD3 XD9 mD3 D17 C11 -- -- mD4 XD10 mD4 E17 D10 -- -- mD5 XD11 mD5 E16 C10 -- -- mD6 XD12 mD6 E14 D9 -- -- mD7 XD13 mD7 E13 D7 -- -- mA0 XD14 mA0 D13 C7 -- -- mA1 XD15 mA1 C13 D6 -- -- mA2 XA0 mA2 V5 C3 -- -- mA3 XA1 mA3 U5 C4 -- -- mA4 XA2 mA4 Y2 D3 -- -- mA5 XA3 mA5 Y1 D4 -- -- mA6 XA4 mA6 V4 E3 -- -- mA7 XA5 mA7 V3 E4 -- -- mA8 XA6 mA8 W2 F3 -- -- mA9 XA7 mA9 W1 F4 -- -- mA10 XA8 mA10 T2 G6 -- -- mA11 XA9 mA11 T1 K3 -- -- mA12 XA10 mA12 R4 K10 -- -- mA13 XA11 mA13 R3 L3 -- -- mA14 XA12 mA14 R2 L4 -- -- mRD XRD mRD R1 D5 -- -- mWR XWR mWR P6 C6 -- --

POWER P0A0 POWER B4 B20 P1 P5 ALARM P0A1 ALARM A4 A19 P2 P6 RxNET P0A2 RxNET C4 B19 P4 P7 TxNET P0A3 TxNET C5 A18 P5 P9 RxUSB P0B0 RxUSB B5 A15 P6 P10 TxUSB P0B1 TxUSB A5 B15 P7 P11 RxCAN P0B2 RxCAN D6 A14 P8 P12 RxCAN P0B3 TxCAN C6 B14 P10 P13

CLK24M CLK24M CLK24M E12 B12 P124 P38

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

PWM0H P3A0 P0D0 E6 A8 P21 P23 PWM0L P3A1 P0D1 E5 B8 P23 P24 PWM1H P3A2 P0D2 C2 B6 P24 P25 PWM1L P3A3 P0D3 C1 A5 P25 P26 PWM2H P3A4 P0D4 D2 B5 P26 P27

82

PWM2L P3A5 P0D5 D1 A4 P27 P28 PWMenb P3A6 P0D6 E4 B4 P28 P30 PHT1Z P3A7 P0D7 E3 A3 P30 P31 PHT1A P3B0 P0D8 G2 C1 P31 P32 PHT1B P3B1 P0D9 G1 C2 P32 P33 PHT0A P3B2 P0D10 H5 D1 P33 P34 PHT0B P3B3 P0D11 J6 D2 P35 P35 AMP0 P3B4 P0D12 H4 E1 P36 P39 AMP1 P3B5 P0D13 H3 E2 P40 P40 AMP2 P3B6 P0D14 H2 F2 P41 P41 AMP3 P3B7 P0D15 H1 G1 P44 P43 eeSK P0C3 P1D0 C10 B9 P20 P22 eeCS P0C2 P1D1 D10 A9 P18 P21 eeDI P0C1 P1D2 F10 B10 P17 P20 eeDO P0C0 P1D3 E10 B11 P15 P19 ssCK P0B7 P1D4 E8 A11 P14 P17 ssCS P0B6 P1D5 E7 A12 P13 P16 ssDI P0B5 P1D6 A6 B13 P12 P15 ssDO P0B4 P1D7 B6 A13 P11 P14

ppCLK P3C0 P1D8 K4 G2 P46 P44 ppDIN P3C1 P1D9 K3 K1 P47 P45 TxD P3C2 P1D10 K2 K2 P50 P46 RxD P3C3 P1D11 K1 L1 P51 P48

tstLED P3C4 P1D12 L5 L2 P52 P49 stsLED P3C5 P1D13 L4 M1 P53 P50 RxLED P3C6 P1D14 L3 M2 P55 P51 TxLED P3C7 P1D15 L2 N1 P56 P52

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

xPA0 P2A0 P2D0 AA3 N2 P59 P53 xPA1 P2A1 P2D1 Y4 T1 P60 P54 xPA2 P2A2 P2D2 AA4 T2 P63 P56 xPA3 P2A3 P2D3 AB4 U2 P68 P57 xPC0 P2A4 P2D4 W5 V1 P69 P58 xPC1 P2A5 P2D5 Y5 V2 P70 P59 xPC2 P2A6 P2D6 AA5 W1 P73 P60 xPC3 P2A7 P2D7 AB5 W2 P74 P61

-- P2B0 P2D8 V6 Y1 P76 P64 -- P2B1 P2D9 V7 Y2 P77 P66 -- P2B2 P2D10 W6 AA3 P78 P68

mCS P2B3 P2D11 Y6 AB4 P79 P69 mA15 P2B4 P2D12 V9 AA4 P80 P70 mA16 P2B5 P2D13 V10 AB5 P82 P71 mA17 P2B6 P2D14 W10 AA5 P83 P74 mA18 P2B7 P2D15 Y10 AA6 P84 P75 CS0 P2C0 ADC0 AA10 AB8 P85 P76

83

SDIN0 P2C1 ADC1 AB10 AA8 P86 P77 CS1 P2C2 ADC2 U10 AB9 P87 P78

SDIN1 P2C3 ADC3 U11 AA9 P89 P79 SCLK P2C4 ADC4 V11 AB10 P90 P80 CS2 P2C5 ADC5 W11 AA10 P92 P81

SDOUT P2C6 ADC6 Y11 AB11 P93 P82 LDAC P2C7 ADC7 AA11 AA11 P95 P83

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

xPB0 P1A0 PxA0 M1 M3 P135 P85 xPB1 P1A1 PxA1 M2 M4 P132 P86 yPB2 P1A2 PxA2 M3 N3 P131 P87 yPB3 P1A3 PxA3 M4 N4 P130 P88 yPB1 P1A4 PxA4 M5 T4 P129 P91 yPB4 P1A5 PxA5 M6 T5 P128 P92 yPB0 P1A6 PxA6 N1 U3 P127 P93 yPB5 P1A7 PxA7 N2 U4 P125 P94 yPB6 P1B0 PxB0 U13 V3 P119 P95 yPB7 P1B1 PxB1 V13 V4 P118 P96 xPB2 P1B2 PxB2 W13 W3 P116 P97 xPB3 P1B3 PxB3 Y13 W4 P113 P98 xPB4 P1B4 PxB4 AA13 Y3 P112 P100 xPB5 P1B5 PxB5 AB13 Y4 P96 P101 yPC3 P1B6 PxB6 U12 Y5 P97 P102 yPC2 P1B7 PxB7 V12 W5 P98 P103 yPC1 P1C7 PxC0 AB17 W11 P108 P113 yPC0 P1C6 PxC1 AA17 Y11 P107 P112 yPA0 P1C5 PxC2 Y17 W10 P105 P111 yPA1 P1C4 PxC3 W17 Y10 P104 P110 yPA2 P1C3 PxC4 AB18 W9 P103 P107 yPA3 P1C2 PxC5 AA18 W8 P102 P106 xPB6 P1C1 PxC6 Y18 W6 P100 P105 xPB7 P1C0 PxC7 W18 Y6 P99 P104

84

eM_DEMO 模組

eM_DEMO 模組的電路配置圖如下

eM_USB 模組

數字型 LED

0 1 2 34 5 6 78 9 A BC D E F

燈號型 LED

44 鍵盤

ADC0 ADC1 DAC0 DAC1

LED 選擇KEY 選擇

其中

1eM_DEMO模組的基本功能包括 A將 xPAxPBxPC等 16個 IO訊號引出控制 LED和鍵盤電路 B將 ADDA訊號引出並放大成+-10V的工作範圍 2LED和鍵盤可以選擇三種模式由 LED和 KEY 兩組開關作選擇圖示如下

模式1

0123

模式2 模式3

0 1 2 34 5 6 78 9 A BC D E F

0123

3模式14鍵輸入並搭配 16點的 LED燈號顯示其中 16點 LED分別對映到 xPA[0~3]xPB[0~7]和 xPC[0~3] 4組按鍵分別對映到 xPC[0~3] 4模式24鍵輸入並搭配四個 7段式數字顯示其中 數字顯示由 xPA[0~3]作數字掃瞄而由 xPB[0~7]作 7段式 LED控制 4組按鍵 分別對映到 xPC[0~3] 5模式316鍵輸入並搭配四個 7段式數字顯示其中 數字顯示由 xPA[0~3]作數字掃瞄而由 xPB[0~7]作 7段式 LED控制 16組按鍵由 xPA[0~3]作鍵盤掃瞄而由 xPC[0~3]作鍵盤讀取 6根據VHDL與數位邏輯設計的章節其中 第 1章至 10章的實驗採用模式1而 第 11章實驗採用模式2而 第 12章之後的實驗都採用模式3

85

FPGA UCF 定義

eM_3S1K 模組

NET CLK LOC = B12

NET XAlt0gt LOC = N2

NET XAlt1gt LOC = T1

NET XAlt2gt LOC = T2

NET XAlt3gt LOC = U2

NET XBlt0gt LOC = M3

NET XBlt1gt LOC = M4

NET XBlt2gt LOC = W3

NET XBlt3gt LOC = W4

NET XBlt4gt LOC = Y3

NET XBlt5gt LOC = Y4

NET XBlt6gt LOC = W6

NET XBlt7gt LOC = Y6

NET XClt0gt LOC = V1

NET XClt1gt LOC = V2

NET XClt2gt LOC = W1

NET XClt3gt LOC = W2

NET YAlt0gt LOC = W10

JP4 接頭

NET YAlt1gt LOC = Y10

NET YAlt2gt LOC = W9

NET YAlt3gt LOC = W8

NET YBlt0gt LOC = U3

NET YBlt1gt LOC = T4

NET YBlt2gt LOC = N3

NET YBlt3gt LOC = N4

NET YBlt4gt LOC = T5

NET YBlt5gt LOC = U4

NET YBlt6gt LOC = V3

NET YBlt7gt LOC = V4

NET YClt0gt LOC = Y11

NET YClt1gt LOC = W11

NET YClt2gt LOC = W5

NET YClt3gt LOC = Y5

在光碟片中 RFFPGAVHDLDEMOBIT3S1K 裡有 VHDL 與數位邏輯設計書本範例原始檔與合成檔

86

eM_3S50 模組

NET CLK LOC = P124

NET XAlt0gt LOC = P59

NET XAlt1gt LOC = P60

NET XAlt2gt LOC = P63

NET XAlt3gt LOC = P68

NET XBlt0gt LOC = P135

NET XBlt1gt LOC = P132

NET XBlt2gt LOC = P116

NET XBlt3gt LOC = P113

NET XBlt4gt LOC = P112

NET XBlt5gt LOC = P96

NET XBlt6gt LOC = P100

NET XBlt7gt LOC = P99

NET XClt0gt LOC = P69

NET XClt1gt LOC = P70

NET XClt2gt LOC = P73

NET XClt3gt LOC = P74

NET YAlt0gt LOC = P105

JP4 接頭

NET YAlt1gt LOC = P104

NET YAlt2gt LOC = P103

NET YAlt3gt LOC = P102

NET YBlt0gt LOC = P127

NET YBlt1gt LOC = P129

NET YBlt2gt LOC = P131

NET YBlt3gt LOC = P130

NET YBlt4gt LOC = P128

NET YBlt5gt LOC = P125

NET YBlt6gt LOC = P119

NET YBlt7gt LOC = P118

NET YClt0gt LOC = P107

NET YClt1gt LOC = P108

NET YClt2gt LOC = P98

NET YClt3gt LOC = P97

在光碟片中 RFFPGAVHDLDEMOBIT3S200 裡有VHDL與數位邏輯設計書本範例原始檔與合成檔

87

eM_95XL 模組

NET CLK LOC = SPIN38

NET XAlt0gt LOC = SPIN53

NET XAlt1gt LOC = SPIN54

NET XAlt2gt LOC = SPIN56

NET XAlt3gt LOC = SPIN57

NET XBlt0gt LOC = SPIN85

NET XBlt1gt LOC = SPIN86

NET XBlt2gt LOC = SPIN97

NET XBlt3gt LOC = SPIN98

NET XBlt4gt LOC = SPIN100

NET XBlt5gt LOC = SPIN101

NET XBlt6gt LOC = SPIN105

NET XBlt7gt LOC = SPIN104

NET XClt0gt LOC = SPIN58

NET XClt1gt LOC = SPIN59

NET XClt2gt LOC = SPIN60

NET XClt3gt LOC = SPIN61

NET YAlt0gt LOC = SPIN111

JP4 接頭

NET YAlt1gt LOC = SPIN110

NET YAlt2gt LOC = SPIN107

NET YAlt3gt LOC = SPIN106

NET YBlt0gt LOC = SPIN93

NET YBlt1gt LOC = SPIN91

NET YBlt2gt LOC = SPIN87

NET YBlt3gt LOC = SPIN88

NET YBlt4gt LOC = SPIN92

NET YBlt5gt LOC = SPIN94

NET YBlt6gt LOC = SPIN95

NET YBlt7gt LOC = SPIN96

NET YClt0gt LOC = SPIN112

NET YClt1gt LOC = SPIN113

NET YClt2gt LOC = SPIN103

NET YClt3gt LOC = SPIN102

在光碟片中 RFFPGAVHDLDEMOSVF95288XL 裡有VHDL與數位邏輯設計書本範例原始檔與合成

檔案

88

eM_FPGA 模組

NET CLK LOC = E12

NET XAlt0gt LOC = AA3

NET XAlt1gt LOC = Y4

NET XAlt2gt LOC = AA4

NET XAlt3gt LOC = AB4

NET XBlt0gt LOC = M1

NET XBlt1gt LOC = M2

NET XBlt2gt LOC = W13

NET XBlt3gt LOC = Y13

NET XBlt4gt LOC = AA13

NET XBlt5gt LOC = AB13

NET XBlt6gt LOC = Y18

NET XBlt7gt LOC = W18

NET XClt0gt LOC = W5

NET XClt1gt LOC = Y5

NET XClt2gt LOC = AA5

NET XClt3gt LOC = AB5

NET YAlt0gt LOC = Y17

JP4 接頭

NET YAlt1gt LOC = W17

NET YAlt2gt LOC = AB18

NET YAlt3gt LOC = AA18

NET YBlt0gt LOC = N1

NET YBlt1gt LOC = M5

NET YBlt2gt LOC = M3

NET YBlt3gt LOC = M4

NET YBlt4gt LOC = M6

NET YBlt5gt LOC = N2

NET YBlt6gt LOC = U13

NET YBlt7gt LOC = V13

NET YClt0gt LOC = AA17

NET YClt1gt LOC = AB17

NET YClt2gt LOC = V12

NET YClt3gt LOC = U12

在光碟片中 RFFPGAVHDLDEMOBIT2V250 裡有VHDL與數位邏輯設計書本範例原始檔與合成檔

89

Page 55: RFFPGA 直流馬達實驗手冊juniortek.com.tw/program/manual/RF-DC-mal.pdf · em_demo模組 em_dcm 直流伺服馬達 dc電源 rffpga 系統的直流馬達實驗規劃 其中包括:

直流馬達之閉迴路弦波加減速位置控制響應圖

55

7組合語言說明

本節將針對 DC馬達伺服控制實驗專用的程式模組進行功能與程式碼的說明其

有關於波形產生器與資料擷取模組等說明如下

SIN_waveasm 正弦波產生器 PWM_waveasm 方波產生器 IIR1_filterasm 一階濾波器 DAS4asm 資料蒐集模組

弦波產生器

此模組會產生週期性的正弦波方塊圖如下

outfrq

kBiasbias

ampkAmp

kFrqth

kThf=1TB

θ

A

其中

1正弦波有四個參數振幅(A)頻率(F)相位(θ)和偏移(B)其公式為 out = A sin(2πF t +θ) + B 2對於單純的正弦波產生器所對映的參數包括 kAmp 振幅值 kFrq 頻率值kFrq=655368000Hz其中 Hz的範圍為 0~4000例如 1000Hz =gt frq=8192 100Hz =gt frq=819 10Hz =gt frq=82 1Hz =gt frq=8 kTh 相角值0~255代表 0~360的相位當 th=0 時為正弦波 th=64 時為餘弦波 th=128時為反相波依此類推 kBias偏移值 3對於可調變的正弦波產生器其對映的輸入點為 amp 控制振幅的輸入點可產生調幅(AM)波形 frq 控制頻率的輸入點可產生調頻(FM)波形 th 控制相位的輸入點可產生調相(PM)波形 bias控制偏移的輸入點可產生雙頻混波(相加)波形 4若不使用調變功能時各個輸入點時的預設值為 amp 指向 kAmp 的位址 frq 指向 kFrq 的位址

56

th 指向 kTh 的位址 bias指向 kBias的位址

模組程式範例SIN_WAVEasm

local amp R0 IP kAmp 輸入點sin波的振幅 local frq R1 IP kFrq 輸入點sin波的頻率 local th R2 IP kTh 輸入點sin波的相角 local bias R3 IP kBias 輸入點sin波的中心偏移 local out R4 OP 輸出點sin波輸出 local tab R5 TP 表格指標指向 sin[256]的表格 local ang R6 內部變數相位角65536=360deg local kAmp R7 1000 參數振幅值 local kFrq R8 1000 參數頻率值=655368000Hz local kTh R9 0 參數相角值360deg=256 local kBias R10 0 參數偏移值 data 11 模組變數區長度及初值 initial 啟動程序 WR ang0 WR out0 ang=out=0 RET timer 即時控制程序(8KHz) RD ang ADD (frq) WR ang ang+=frq SFR 8 ADD (th) AND 255 ACC=sin(ang256+th) ADD tab WRH RDM table-look-up MUL (amp) SFR 12 ADD (bias) WR out out=ACCamp4096+bias RET table tab 256 sin[256]表格區10=4096 0 101 201 301 401 501 601 700 00~070deg 799 897 995 1092 1189 1285 1380 1474 08~0F 1567 1660 1751 1842 1931 2019 2106 2191 10~17 2276 2359 2440 2520 2598 2675 2751 2824 18~1F 2896 2967 3035 3102 3166 3229 3290 3349 20~27 3406 3461 3513 3564 3612 3659 3703 3745 28~2F 3784 3822 3857 3889 3920 3948 3973 3996 30~37 4017 4036 4052 4065 4076 4085 4091 4095 38~3F 4096 4095 4091 4085 4076 4065 4052 4036 40~4790deg 4017 3996 3973 3948 3920 3889 3857 3822 48~4F 3784 3745 3703 3659 3612 3564 3513 3461 50~57 3406 3349 3290 3229 3166 3102 3035 2967 58~5F

57

2896 2824 2751 2675 2598 2520 2440 2359 60~67 2276 2191 2106 2019 1931 1842 1751 1660 68~6F 1567 1474 1380 1285 1189 1092 995 897 70~77 799 700 601 501 401 301 201 101 78~7F 0 65435 65335 65235 65135 65035 64935 64836 80~87180deg 64737 64639 64541 64444 64347 64251 64156 64062 88~8F 63969 63876 63785 63694 63605 63517 63430 63345 90~97 63260 63177 63096 63016 62938 62861 62785 62712 98~9F 62640 62569 62501 62434 62370 62307 62246 62187 A0~A7 62130 62075 62023 61972 61924 61877 61833 61791 A8~A8 61752 61714 61679 61647 61616 61588 61563 61540 B0~B7 61519 61500 61484 61471 61460 61451 61445 61441 B8~BF 61440 61441 61445 61451 61460 61471 61484 61500 C0~C7270deg 61519 61540 61563 61588 61616 61647 61679 61714 C8~CF 61752 61791 61833 61877 61924 61972 62023 62075 D0~D7 62130 62187 62246 62307 62370 62434 62501 62569 D8~DF 62640 62712 62785 62861 62938 63016 63096 63177 E0~E7 63260 63345 63430 63517 63605 63694 63785 63876 E8~EF 63969 64062 64156 64251 64347 64444 64541 64639 F0~F7 64737 64836 64935 65035 65135 65235 65335 65435 F8~FF

就程式結構而言說明如下

timer 即時控制程序(8KHz) RD ang ADD (frq) WR ang ang+=frq SFR 8 ADD (th) AND 255 ACC=sin(ang256+th) ADD tab WRH RDM table-look-up MUL (amp) SFR 12 ADD (bias) WR out out=ACCamp4096+bias RET

1基本上我們以查表法計算 sin()其輸入θ的範圍為 0~255對映到 0~360deg其輸出 sin(θ)的範圍為+-4096對映到+-10的範圍

2建立一個內部變數 ang其範圍為 0~65535對映到 0~360的相位角 3每個timer程序都執行 ang+=frq的動作更新目前的相位角接著依照 ang的相位角查表得到 sin(ang256+th)值

4由於表格長度為 256-word所以必須將 ang256才能得到正確的對映關係而 th範圍為 0~255所以不需要像 ang一般的做額外處理

5sin()的範圍為(+1-1)而在表格中以(+4096~-4096)的型式記錄相當於 10=4096所以執行 Asin()時還要用 SFR12指令做4096的動作才能正確的取得輸出值

58

6就頻率輸入 frq而言其計算原則是將θ=ωt轉化成θ=Σ(ωdt)因為抽樣頻率

為 8KHz所以 dt=18000而得到 frq=655368000Hz公式其中 Hz為真正的頻率在 8KHz的抽樣頻率下其範圍為 0~4000

鋸齒波產生器

此模組會產生週期性的鋸齒波方塊圖如下

outfrq

kBiasbias

ampkAmp

kFrqth

kThf=1TB

θ

A

其中

1鋸齒波也有四個參數振幅(A)頻率(F)相位(θ)和偏移(B)和正弦波的定義完全一致唯一的差異是其輸出為鋸齒波而非正弦波

2基本波形是從週期開始時為 0一直遞增到週期結束時到達最高點然後立刻回歸

到 0重新開始 3以程式結構而論鋸齒波程式幾乎就是正弦波的相位計算部分只差沒有正弦波的

查表處理而已

模組程式範例SAW_WAVEasm

local amp R0 IP kAmp 輸入點sin波的振幅 local frq R1 IP kFrq 輸入點sin波的頻率 local th R2 IP kTh 輸入點sin波的相角 local bias R3 IP kBias 輸入點sin波的中心偏移 local out R4 OP 輸出點sin波輸出 local ang R5 內部變數相位角65536=360deg local kAmp R6 1000 參數振幅值 local kFrq R7 1000 參數頻率值=655368000Hz local kTh R8 0 參數相角值360deg=256 local kBias R9 0 參數偏移值 data 11 模組變數區長度及初值 initial 啟動程序 WR ang0 WR out0 ang=out=0 RET timer 即時控制程序(8KHz) RD ang ADD (frq) WR ang ang+=frq SFR 8 ADD (th) AND 255 ACC=(ang256+th)amp0x00ff MUL (amp) SFR 8 ADD (bias) WR out out=ACCamp256+bias

59

RET

脈衝波產生器

outfrq

kBiasbias

ampkAmp

kFrqth

kThf=1TB

θ

A

pwm

kDutyduty

此模組會產生週期性的脈衝波方塊圖如下

其中

1脈衝波有五個參數其中振幅(A)頻率(F)相位(θ)和偏移(B)四個參數和正弦波

定義完全一樣另外再增加一個負載率(D) 2基本波形是從週期開始時為 1隔段時間後換為 0然後持續到週期結束再重新開始其中 1所佔有的比例就是負載率當 D=0時為 0而 D=255時為 100

3和其他參數類似負載率(D)以 duty為其輸入點而以 kDuty為其參數值

模組程式範例PLS_WAVEasm

local amp R0 IP kAmp 輸入點脈衝波的振幅 local frq R1 IP kFrq 輸入點脈衝波的頻率 local th R2 IP kTh 輸入點脈衝波的相角 local bias R3 IP kBias 輸入點脈衝波的中心偏移 local duty R4 IP kDuty 輸入點脈衝波的負載率 local out R5 OP 輸出點脈衝波輸出 local ang R6 內部變數相位角65536=360deg local kAmp R7 1000 參數振幅值 local kFrq R8 1000 參數頻率值=655368000Hz local kTh R9 0 參數相角值360deg=256 local kBias R10 0 參數偏移值 local kDuty R11 128 參數負載率100 =256 data 12 模組變數區長度及初值 initial 啟動程序 WR ang0 WR out0 ang=out=0 RET timer 即時控制程序(8KHz)

60

RD ang ADD (frq) WR ang ang+=frq SFR 8 ADD (th) AND 255 ACC=(ang256+th)amp0x00ff SUB (duty) RD (amp) JLT t1 RD 0 ACC=(amp0) t1 ADD (bias) WR out out=ACC+bias RET

IIR 一階濾波器

此模組執行一階的 IIR濾波器方塊圖如下

kau x

Z-1

+

+

-

+低通濾波器

高通濾波器dx lp

hp

濾波器參數的計算公式如下

1假設濾波器的頻寬為 hz則 ωn=hz628 2若系統頻率為 8KHz則抽樣週期 dT為 dT=dt8000 其中 dt為模組參數 3則濾波器參數為 ka=ωndT4096或是 =hzdt62880004096即 =hzdt32 4當 dt決定後所允許的訊號頻寬為(4000dt)換句話說訊號頻寬會因為 dt增加而下降

為了方便實驗的運用下面列出常用的參數對照表

濾波頻寬

(Hz)

10 20 50 100 200 500 1000 2000

訊號頻寬

(Hz)

400 800 2000 4000 4000 4000 4000 4000

模組參數 dt 10 5 2 1 1 1 1 1

模組參數 ka 320 320 320 320 640 1600 3200 6400

表格的運用方式如下

1首先決定濾波頻寬 2接著查表找出對映的參數 dt和 ka 3再查表得到對映的訊號頻寬以決定是否需要串接前級濾波器

61

模組程式範例IIR1_FILTERasm

local u R0 IP 輸入點濾波器輸入 local lp R1 OP 輸出點低通濾波器輸出 local hp R2 OP 輸出點高通濾波器輸出 local dt R3 1 參數抽樣週期 local ka R4 4096 參數增益 ka10=4096 local prd R5 內部變數抽樣週期用 data 6 模組變數區長度 initial 開機啟動程序 WR lp0 WR hp0 WR prd1 RET lp=hp=0prd=1 timer 即時控制程序 SUB prd1 JNZ b9 if (--prdgt0) return RD dt WR prd prd=dt RD (u) SUB lp WR hp hp=u-lp MUL ka SFR 12 ADD lp WR lp lp+=(hpka4096) b9 RET

資料蒐集模組

資料蒐集模組是一個非常特殊的模組專門配合 eTTY 程式中的示波器使用

模組程式範例DAS4asm

local cmd R0 0 紀錄命令0=停止1=前置記錄2=正觸發4=負觸發6=觸發記錄 local dt R1 1 抽樣週期每 dT抽樣一次 local tab R2 TP DAS表格啟始位址 local cnt R3 0 目前記錄點(0~255) local ch1 R4 0 定義頻道1的變數位址 local ch2 R5 0 定義頻道2的變數位址 local ch3 R6 0 定義頻道3的變數位址 local ch4 R7 0 定義頻道4的變數位址 local trg R8 0 定義觸發頻道的變數位址 local th R9 0 觸發準位 local tail R10 0 觸發後的抽樣個數 local buf R11 1 抽樣計數(1~dt) local pnt R12 表格位址計算pnt=tab+cnt4 local len R13 表格長度計算(0~256) data 14 定義模組變數區的長度 table tab 1024 定義表格的長度 initial 啟動程序 WR cmd0 RET cmd=0 timer 控制程序

62

ADD cmd0 JZ t9 if (cmd==0) return SUB buf1 JNZ t9 if (--buf)gt0) return RD dt WR buf dt=buf RD cnt ADD 1 AND 0xff WR cnt cnt=(cnt+1)amp0xff SFL 2 ADD tab WR pnt pnt=tab+cnt4 RD (ch1) WR (pnt) ADD pnt1 pnt++=ch1 RD (ch2) WR (pnt) ADD pnt1 pnt++=ch2 RD (ch3) WR (pnt) ADD pnt1 pnt++=ch3 RD (ch4) WR (pnt) pnt =ch4 RD cmd SUB 1 JZ t9 SUB 1 JZ t2 SUB 1 JZ t3 SUB 1 JZ t4 SUB 1 JZ t5 SUB 1 JZ t6 JR t7 t2 RD (trg) SUB th JGE t9 ADD cmd1 JR t9 wait trgltth t3 RD (trg) SUB th JLE t9 JR t6 wait trggtth t4 RD (trg) SUB th JLE t9 ADD cmd1 JR t9 wait trggtth t5 RD (trg) SUB th JGE t9 JR t6 wait trgltth t6 WR len0 WR cmd7 len=0cmd=7 t7 ADD len1 SUB tail JLT t9 WR cmd0 if ((++len)gt=0x80) cmd=0 t9 RET

與 DC 馬達控制相關的程式模組有以下 4個程式模組說明如下

(1)加減速控制模組 ACC_controlasm (2)光電盤輸入模組 POS_inputasm (3)PWM輸出模組 PWM_outputasm (4)PD控制模組 PD_controlasm

71加減速控制模組 此程式模組主要功能在於執行位置控制的加減速命令修正其數學模式採用 Lynn

濾波器的架構參見下圖

cmd

2

+

old Z -1

-

Z -1

Z -1

Z-1

Z-1x0 x1 x8 x9 x16

+ -

++

2

Z-1

Z-1 y1 y2

+

-

y0

+ +

sumZ-1

+164

12

out

dif

+

63

加減速控制模組方塊圖

其中

1Lynn 濾波器的階數固定成八階也就是 m=8其公式為 H(z) = (1-2Z-m+Z-2m)(1-2Z-1+Z-2)m2

2因為m=8所以m2=64因此最後計算低通濾波的部份時要先做除 64的運算 3因為低通濾波(lp)和 y0之間有 64倍的差異代表 y0y1y2的變化範圍比濾波器輸

入值要擴大許多例如輸入值在+-1000變化時y0y1y2很可能會在+-64000之間變化這範圍已經超出整數處理的範圍很可能會造成錯誤的計算結果

4所以在實驗時輸入值的變化範圍必須控制在+-500之間以保證計算的正確性 5對於 Lynn 濾波器當 m=8時其濾波器的頻寬固定為 1 kHzmdt也就是 dt=1時頻寬為 125 Hz dt=2時頻寬為 625Hz依此類推 6對於 Lynn 濾波器其濾波器的延遲固定為 m個抽樣週期因此設計 hp = x8 - lp 即可得到高通濾波器的對應結果 7其中乘 2和除 64的運算以移位運算取代所以整個程式中並無任何乘法運算 8Lynn 濾波器本身並不是穩定濾波器所以在程式啟動時必須確實的將所有狀態

(x0~x16)歸零否則會產生不穩定的狀態輸出

因為 Lynn濾波器中所有參數固定所以除了抽樣週期 dt 之外並無任何可調參數

抽樣週期 dt 可以控制頻寬dt 越大則濾波器頻寬越低

將步階命令值的輸出送入 Lynn 濾波器中經由低通濾波器的效應可以減緩命

令的變化程度達到加減速控制的目的以下為使用 Lynn 濾波器型式實現加減速控

制的組合語言程式列印 如欲更進一步瞭解 Lynn 濾波器與 FIR 數位濾波器之間的關係可以參考通訊實驗

四數位濾波器設計(FIR)中之說明

ACC_controlasm程式列印 local cmd R0 IP 輸入點位置命令

local out R1 OP 輸出點加減速處理後的位置命令

local dif R2 OP 輸出點位置微分命令

local axis R3 0 馬達編號0=X1=Y2=Z3=C

local old R4 內部變數微分計算用

local sumL R5 內部變數積分計算用

local sumH R6 內部變數積分計算用

local y0 R7 內部變數y(0~2)

local y1 R8 local y2 R9

local x0 R10 內部變數x(0~16)

local x1 R11 local x2 R12 local x3 R13 local x4 R14

local x5 R15 local x6 R16 local x7 R17 local x8 R18

local x9 R19 local x10 R20 local x11 R21 local x12 R22

local x13 R23 local x14 R24 local x15 R25 local x16 R26

64

data 27 模組變數區長度

initial 開機啟動程序

WR dif0 RD (cmd) WR out WR old dif=0 out=old=cmd

sumHL=cmd64

SFL 6 WR sumL RD out SFR 10 SGN 5 WR sumH

RPT 17 WR x00 RPT 3 WR y00 RET x[0~16]=0y[0~2]=0

timer 即時控制程序

RD (cmd) SUBX old WR x0 x0=cmd-old old=cmd

SUB x81 ADD x16 ADD y11 SUB y2 WR y0 y0=x0-2x8+x16+2y1-y2

SGN ADD sumL WR sumL RDH ADC sumH WR sumH sumHL+=y0

WRH RD sumL SFR 6 WR out out=sumHL64

RD y0 SGN SFR WR dif dif=y032mm

RD x0 RPT 16 RDX x1 x[i]=x[i-1] i=1~16

RD y0 RDX y1 WR y2 y[i]=y[i-1] i=1~2

b9 RET

72光電盤輸入模組

DC馬達的位置由光電盤量測之預設儲存於 0xac與 0xbe二個輸入埠位址中其中位址 0xac記錄 X軸馬達的位置位址 0xbe記錄 Y軸馬達的位置由於本實驗的DC馬達接在 Y軸的位置上因此程式中直接選用 Y軸的輸入 光電盤位置輸入的程式列印如下其中速度由位置的差分而得至於馬達的位置

則使用內部 2個 word加以記錄精度為 32位元 POS_inputasm程式列印 local spd R0 OP 輸出點速度量測值

local ang R1 OP 輸出點角度量測值

local angH R2 內部變數角度的 32 位元部分

local mode R3 0x308 模式選擇15MHzAB 相正反向輸入

local pht R4 0xac 輸入阜地址光電盤輸入(0xac)

local phtc R5 0xbe 輸入阜地址光電盤模式(0xbe)

local old R6 內部變數速度更新用

data 7 模組變數區長度

initial 開機啟動程序

RD mode WR (phtc) phtc=mode

RD (pht) WR old WR spd0 RET old=phtspd=0

timer 即時控制程序

RD (pht) SUBX old SGN 11 WR spd spd=(pht-old)old=pht

65

ADD ang WR ang angHL+=spd

RDH ADC angH WR angH

RET

73 PWM輸出控制模組 模組方塊

cmd PWM輸出

程式說明 1在開機時將切換保護時間寫到輸出阜 0xbc上其中切換保護值為 0~6360=5us 2在每次 timer interrupt時將 cmd訊號處理後寫到輸出阜 0xb8上

PWM_outputasm程式列印 local cmd R0 IP gnd 輸入點v相命令

local gain R1 4096 參數輸出增益1=4096

local bias R2 2048 參數輸出偏壓0=2048

local limit R3 4095 參數輸出極限1=4095

local zone R4 0x88f0 參數頻率=12KHz切換保護=5us

local pwm R5 0xb8 輸出阜地址PWM0 輸出(0xb8)

local mode R6 0xbc 輸出阜地址PWM 模式(0xbc)

local p0md R7 0xf8 輸出阜地址port0 模式(0xf8)

local gnd R8 0 輸入接地點

data 9 模組變數區長度

initial 開機啟動程序

RD bias WR (pwm) pwm=bias

RD 0xffff WR (p0md) set port0 mode

RD zone WR (mode) RET mode=zone

stop 關機保護程序

RD bias WR (pwm) RET pwm=bias

timer 即時控制程序

RD (mode) xor 1 and 1 WR (mode) trigger watch-dog

RD (cmd) MUL gain SFR 12 ADD bias ACC=(cmdgain4096)+bias

MAX 0 MIN limit WR (pwm) pwm=limit(ACC)

RET

66

74 PD 控制模組

PD控制的模組方塊參見圖二十一所示其中比例控制的部份直接由增益 kp加以調整微分控制的部份則由誤差的差分經增益 kd的調整而得

Σ+

-

cmd

fdk

err out

Σ

pk

dk

Σ

+

+

+

-

old1minusZ

PD控制器的方塊圖

PD_controlasm程式列印 local cmd R0 IP gnd 輸入點位置命令(可忽略)

local fdk R1 IP gnd 輸入點位置回授(可忽略)

local out R2 OP 輸出點用以控制速度迴路

local kp R3 256 參數增益 kp10=256

local kd R4 0 參數增益 kd10=256

local err R5 0 內部變數

local old R6 0 內部變數

local gnd R7 0 無輸入時的短路點

data 8 模組變數區長度

initial 開機啟動程序

WR out0 WR old0 RET out=old=0

timer 即時控制程序

RD (cmd) SUB (fdk) PRTF WR err

MUL kp SFR 8 P=(cmd-fdk)kp256

RDS err SUBX old MUL kd SFR 8 D=(err-old)kd256

ADDS

WR out out=P+D

RET

程式中預設增益值的 10以整數值 256為基底因此使用 SFR 8的指令加以調

整另外在在計算微分項的程式部份用到 SUBX old的指令其詳細的暫存器動作如

下 參考 piDSP的指令說明SUBX指令將總共用到 3個時序參考錯誤 找不到參照

67

來源在時序 1時將原先 AX的資料拷貝一份到 HX中時序 2時正式執行減

法的動作所以 AX暫存器中的內容會變成 err-old時序 3時DSP會將存放在 HX暫存器中的內容拷貝一份到 old的記憶體中也就是經由 SUBX此一精簡指令將

同時完成計算差分所需要的相減與資料疊代的動作有效的利用 piDSP控制器 DSP核心的精簡指令將可以大幅提昇系統的計算速度

HX AXoldSUBXerr err

old

err

errerr olderr minus

1_err

errerr olderr minus err

1_err

1

2

3

SUBX的指令時序與暫存器變化

68

8附錄快速安裝說明

光纖網路通訊 FPGA 發展系統 (適用於 WIN-XP200098 系統)

快速安裝說明

26Pin 負載輸出入埠

雙電源︵5

12

伏︶輸入埠

單電源︵5

伏︶輸入埠

USB

光纖線輸

號 光纖線輸出埠

入 傳 埠

首先將光碟片 RFFPGA 目錄檔案拷貝在您工作硬碟裡面

第一次安裝時先將 USB 傳輸線接上電腦主機將電源供應器接上 FPGA 模組此時電

腦會出現安裝 USB-Serial 驅動程式選擇從清單安裝此驅動程式放置在光碟片

RFFPGA-USBdrive 選擇您目前安裝系統

可選擇 WIN-98WIN-MEWIN-2000WIN-XP 系統配合您現在工作電腦作業系統

69

注意一般電腦 USB 埠很多插口當您安裝驅動程式時是配合您當時插入之埠

下次如您插入不同接口埠時電腦會再次要求安裝驅動程式這是正常現象請再次安

裝驅動程式否則無法使用

FPLC 操作

首先進入 RFFPGA裡子目錄 testASM直接點選 fPLCexe 出現下面操作畫面(也可直接將

此檔案放置桌面直接點選)

(或者選擇 File 再執行 Setuphellip 選擇您要執行 CAI 檔)

70

進入下面操作畫面 首先使用滑鼠在 FPGA下載按鈕單擊動作使 FPGA變成 DSP晶片 實驗一至實驗五皆為使用 DSP組合語言設計程式其原始程式分別為 testASM1至testASM5可使用 texPad 開啟與編輯程式內容 實驗三與實驗五多有 IO控制動作 當選擇實驗三時出現下面畫面

71

eM_USB 模組

數字型 LED

0 1 2 34 5 6 78 9 A BC D E F

燈號型 LED

44 鍵盤

ADC0 ADC1 DAC0 DAC1

LED 選擇KEY 選擇

模 式 1

0123

注意操作畫面 3與 4 說明開關與按鍵選擇位置後選擇程式下載再按程式啟動如您

按下 0-3按鍵時燈號型 LED會有不同方向閃爍顯示程式停止時結束所有 IO控制動作再按回首頁選擇其他實驗 實驗四與實驗五

模式3

0 1 2 34 5 6 78 9 A BC D E F

按照上面開關選擇直接操作如果以上實驗皆能按照正常操作表示您光纖網路通訊

FPGA發展模組以能正常使用 注意 開機與關機動作順序如下

開機電腦啟動 --- eM_USB 模組電源接上 --- USB 接上電腦 ---

啟動 FPLC 軟體 --- 下載 FPGA 程式

關機關閉 FPLC 軟體 --- eM_USB 模組電源拔掉 --- 拔掉電腦 USB 接頭 ---關掉

電腦

如果以上順序有亂可能造成 USB 找不到驅動造成無法下載經過幾次測試還是

無法下載建議重新啟動電腦主機按照正確步驟操作

72

FPGA 下載操作

進入 FPLC 操作系統按照下列步驟選擇節點模組與下載 bit FPGA 檔案

在 VHDLDEMO 子目錄下您可以選擇您目前 FPGA 種類型號在此型號下我們已將 VHDL

與數位邏輯設計課本範例全部放於此處

73

光纖網路連線 FPGA 下載操作

首先利用光纖線將 eM_USB0 模組光纖輸出埠接至 eM_USB1 模組光纖輸入埠以此

類推最後再將最後 eM_USBN 模組光纖輸出埠接至 eM_USB0 模組光纖輸入埠配置

如附圖方式

個人電腦(Windows) eM_USB模組

0USB

eM_USB模組1

光纖網路

eM_USB模組2

eM_USB模組N

配置完成後進入 FPLC 系統首先必須先將 Node00 下載在 testASM 子目錄裡

piDSPv0bit 檔讓 eM_USB0 模組 FPGA 具備 DSP 功能才能執行光纖網路通訊

操作如下

此時您就可以選擇分別下載至各模組 FPGA 檔 bit

74

安裝 FPLC 注意事項

當您進入 FPLC 時

按 FILE 選擇 programhellip 選擇檔案為 exp_dcmplc 出現下面畫面

正常顯示畫面為

75

DOS 環境操作

在 PC 端的操作是在 Windows 環境中的 DOS 視窗中執行指令範例如下

eFPGA progNETbit 下載 FPGA電路至網路節點0(即 USB節點)中 eFPGA testLEDbit 1 下載 FPGA電路至網路節點1中

對於單一節點的控制程序如下

1將 eM_USB模組連結個人電腦的 USB端 2eM_USB模組開機 3執行下載指令即可 eFPGA xxxxbit 4若要更改 FPGA電路只要重新執行下載指令即可

對於多個網路節點的控制程序如下

1第一組 eM_USB模組連結個人電腦的 USB端再以光纖網路依序其他各節點 2連接 USB界面者為模組0從光纖發射端連接出去的模組為1依此類推 3將所有 eM_USB模組開機 4執行下載指令如下 eFPGA progNETbit 模組0必須先下載指定的 FPGA電路 eFPGA xxxxbit 1 再依序下載其他網路模組的 FPGA電路 eFPGA yyyybit 2 eFPGA zzzzbit 最後再重新下載模組0的 FPGA電路 5換句話說模組0必須先執行 progNETbit讓光纖網路接受 FPGA控制後才能透過光纖網路下載至其他節點等全部網路節點下載完畢後再將模組0的 FPGA重新下載讓模組0也可自由執行任意的 FPGA電路

6若要更改某一個網路節點中的 FPGA電路只要重新執行下述指令 eFPGA progNETbit 模組0必須先下載指定的 FPGA電路 eFPGA yyyybit 2 下載指定網路模組的 FPGA電路 eFPGA zzzz bit 最後再重新下載模組0的 FPGA電路 換句話說除非模組0中的 FPGA已經包括光纖網路管理電路否則一定要先在

模組0中下載網路管理電路後才能下載指定網路節點的 FPGA電路

76

光纖網路通訊 FPGA 發展系統

系統配置

光纖網路通訊 FPGA 發展系統的系統配置圖如下

個人電腦(Windows) eM_USB模組

0USB

eM_USB模組1

光纖網路

eM_USB模組2

eM_USB模組N

其中

1基本模組為 eM_USB模組可用 USB界面和個人電腦連線並提供 USB對光纖網路的轉換功能使得個人電腦可以獨立控制光纖網路中的每個網路節點

2eM_USB模組也可以作為光纖網路中的網路節點透過光纖網路而接受個人電腦的

監控 3就個人電腦而言不論是 USB界面直接連結或是以光纖網路間接連結的 eM_USB模組都是可以直接監控的網路節點最多可以同時控制一個 USB節點和 30個網路節點

4對於每一個網路節點個人電腦都可執行 eM_USB模組中 FPGA的電路下載工作並在適當的 FPGA電路配合下可執行 eM_USB模組中 FPGA內部電路的讀寫控制 5透過適當的 FPGA電路設計各網路節點都可透過光纖網路和其他任何網路節點

作同步通訊執行 FPGA內部記憶體的資料交換資料交換頻率可達 1KHz以上

77

網路模組配置

每個網路模組的標準配置圖如下

eM_USB模組光纖網路

USB eM_FPGA卡

eM_DEMO模組

eM_EXP實驗模組

DC電源

其中

1網路模組以 eM_USB模組為主提供基本的 USB界面和光纖網路連線 2eM_USB模組中的 FPGACPLD採用插卡型式可選擇不同的 eM_FPGA卡包括

eM_2V1K卡可選用 Virtex系列的 XC2V250和 XC2V1000 eM_3S1K卡可選用 Spartan3系列的 XC3S400XC3S1000和 XC3S1500 eM_3S50卡可選用 Spartan3系列的 XC3S50XC3S200和 XC3S400 eM_95XL卡可選用 9500XL系列的 XC95144XL和 XC95288XL 3eM_USB模組中的對外連線有兩種一種是 26P接頭用以連接既有的各種實驗模

組另一種是兩組 50P接頭將 FPGA中各接腳引出用以連接專題實驗 4eM_DEMO模組就是插上 50P接頭的教學模組其中包括 LED 數字顯示和 44鍵盤也具備兩組的 ADC和兩組的 DAC接頭提供類比訊號的測試工具

常用的實驗組合包括

1精簡組合包括(eM_USB+eM_FPGA)提供基本的網路節點適用於專題實驗 2標準組合包括(eM_USB+eM_FPGA+eM_DEMO)提供基礎 FPGA設計的教學實驗

3實驗組合包括(eM_USB+eM_FPGA+eM_DEMO+eM_EXP)提供進階的 FPGA實驗可依需求選用不同的實驗模組

78

eM_USB 模組

eM_USB 模組的電路配置圖如下

TxRx

DCPower

USB

JP2

JP3

光纖界面

外加電源

PC連線

JP1

eM_FPGA模組

FT232 CPLD FlashROM

SRAM

10cm

6cm

JP4

其中

1對外的連線接頭包括 DC電源 可選擇單電源(5V)或是多電源(5V+12V-12V)兩種 USB界面 直接連接個人電腦 光纖界面連接光纖網路 2實驗界面包括 JP1負責內部 CPLD的電路下載 JP2JP3兩組 50P的擴張用接頭 JP4 標準 26P接頭用以連接各種實驗模組 3內部的電路配置包括 A以 SO-DIMM接頭連接各種 eM_FPGA卡 B內附 EEPROMFlashROM和 SRAM提供 FPGA作應用測試 C以一顆 FT232BM作為 USB界面解碼而以一顆 CPLD作為光纖網路解碼 D提供各種 eM_FPGA卡的電路下載功能 4內附五顆 LED由上而下依序為 usbLED指示 USB界面的讀寫狀態 tstLED可由 FPGA電路自行定義 stsLED可由 FPGA電路自行定義 RxLED 可由 FPGA電路自行定義 TxLED 可由 FPGA電路自行定義

79

外部接腳定義

外部接頭的接點順序圖示如下

上視圖

JP11 9 JP4

126225

JP31

50249

JP21

50249

而各接頭的接點定義如下

JP1 JP4 JP2 JP3 1+33V 1+12V 2+12V 1 GND 2 GND 1 GND 2 GND 2GND 3 ADC 4 DAC 3POWER 4ALARM 3 +5V 4 +5V 3nc 5 yPB2 6 yPB3 5RxNET 6TxNET 5+12V 6+12V 4TCK 7 yPB1 6 yPB4 7RxUSB 6TxUSB 7-12V 6-12V 5nc 9 yPB0 10yPB5 9RxCAN 10TxCAN 9 ADC 10 DAC 6TDO 11yPB6 12yPB7 11P0D0 12P0D1 11P1D0 12P1D1 7TDI 13yGND 14yPC3 13P0D2 14P0D3 13P1D2 14P1D3 8nc 15yPC2 16yPC1 15P0D4 16P0D5 15P1D4 16P1D5 9TMS 17yPC0 18yPA0 17P0D6 18P0D7 17P1D6 18P1D7 19yPA1 20yPA2 19P0D8 20P0D9 19P1D8 20P1D9 21yPA3 22GND 21P0D10 22P0D11 21P1D10 22P1D11 23GND 24+5V 23P0D12 24P0D13 23P1D12 24P1D13 25+5V 26nc 25P0D14 26P0D15 25P1D14 26P1D15 27P2D0 28P2D1 27PxA0 28PxA1 29P2D2 30P2D3 29PxA2 30PxA3 31P2D4 32P2D5 31PxA4 32PxA5 33P2D6 34P2D7 33PxA6 34PxA7 35P2D8 36P2D9 35PxB0 36PxB1 37P2D10 38P2D11 37PxB2 38PxB3 39P2D12 40P2D13 39PxB4 40PxB5 41P2D14 42P2D15 41PxB6 42PxB7 43ADC0 44ADC1 43PxC0 44PxC1 45ADC2 46ADC3 45PxC2 46PxC3 47ADC4 48ADC5 47PxC4 48PxC5 49DAC0 50DAC1 49PxC6 50PxC7

80

eM_FPGA 模組

在各種 eM_FPGA 模組中FPGA 對外電路的標準配置圖如下

24576MHz

FlashROM

26PSRAM

EEPROM

mD[8]

yPA[4]

FPGACPLD

mA[19]mRDmWRmCSeeCKeeCSeeDIeeDO

光纖界面 RxNETTxNET

USB 界面 RxUSBTxUSBCLK24MPOWERALARM

LED

tstLEDstsLEDRxLEDTxLED

yPB[8]yPC[4]

ADCDAC

ADC[8]

實驗模組

ADC[2]

DAC[2]

xPA[4]

xPB[8]

xPC[4]

基礎實驗

其中

1FPGACPLD可以選擇下述幾種 XC2V250XC2V1000 採用 eM_2V1K模組其中 FPGA為 FG456包裝 XC3S400XC3S1000XC3S1500採用 eM_3S1K模組其中 FPGA為 FG456包裝 XC3S400XC3S1000XC3S1500採用 eM_3S1K模組其中 FPGA為 FG456包裝 XC3S50XC3S200XC3S400 採用 eM_3S50模組其中 FPGA為 TQ144包裝 XC95144XLXC95288XL 採用 eM_95XL模組其中 CPLD為 TQ144包裝 2採用 FG456包裝者可以控制所有的 IO界面 3採用 TQ144包裝者只是不能控制 RAM和 FlashROM而可以控制其他所有的界面 4所有 FPGA模組都可自由選擇由 USB界面或是由光纖界面下載電路但是 CPLD模組只能固定由 USB界面下載電路

5所有 FPGACPLD模組都可透過 26P接頭連接既有的各種實驗模組

81

FPGA 接腳對照表

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

mD0 XD6 mD0 A17 C13 -- -- mD1 XD7 mD1 B17 D12 -- -- mD2 XD8 mD2 C17 D11 -- -- mD3 XD9 mD3 D17 C11 -- -- mD4 XD10 mD4 E17 D10 -- -- mD5 XD11 mD5 E16 C10 -- -- mD6 XD12 mD6 E14 D9 -- -- mD7 XD13 mD7 E13 D7 -- -- mA0 XD14 mA0 D13 C7 -- -- mA1 XD15 mA1 C13 D6 -- -- mA2 XA0 mA2 V5 C3 -- -- mA3 XA1 mA3 U5 C4 -- -- mA4 XA2 mA4 Y2 D3 -- -- mA5 XA3 mA5 Y1 D4 -- -- mA6 XA4 mA6 V4 E3 -- -- mA7 XA5 mA7 V3 E4 -- -- mA8 XA6 mA8 W2 F3 -- -- mA9 XA7 mA9 W1 F4 -- -- mA10 XA8 mA10 T2 G6 -- -- mA11 XA9 mA11 T1 K3 -- -- mA12 XA10 mA12 R4 K10 -- -- mA13 XA11 mA13 R3 L3 -- -- mA14 XA12 mA14 R2 L4 -- -- mRD XRD mRD R1 D5 -- -- mWR XWR mWR P6 C6 -- --

POWER P0A0 POWER B4 B20 P1 P5 ALARM P0A1 ALARM A4 A19 P2 P6 RxNET P0A2 RxNET C4 B19 P4 P7 TxNET P0A3 TxNET C5 A18 P5 P9 RxUSB P0B0 RxUSB B5 A15 P6 P10 TxUSB P0B1 TxUSB A5 B15 P7 P11 RxCAN P0B2 RxCAN D6 A14 P8 P12 RxCAN P0B3 TxCAN C6 B14 P10 P13

CLK24M CLK24M CLK24M E12 B12 P124 P38

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

PWM0H P3A0 P0D0 E6 A8 P21 P23 PWM0L P3A1 P0D1 E5 B8 P23 P24 PWM1H P3A2 P0D2 C2 B6 P24 P25 PWM1L P3A3 P0D3 C1 A5 P25 P26 PWM2H P3A4 P0D4 D2 B5 P26 P27

82

PWM2L P3A5 P0D5 D1 A4 P27 P28 PWMenb P3A6 P0D6 E4 B4 P28 P30 PHT1Z P3A7 P0D7 E3 A3 P30 P31 PHT1A P3B0 P0D8 G2 C1 P31 P32 PHT1B P3B1 P0D9 G1 C2 P32 P33 PHT0A P3B2 P0D10 H5 D1 P33 P34 PHT0B P3B3 P0D11 J6 D2 P35 P35 AMP0 P3B4 P0D12 H4 E1 P36 P39 AMP1 P3B5 P0D13 H3 E2 P40 P40 AMP2 P3B6 P0D14 H2 F2 P41 P41 AMP3 P3B7 P0D15 H1 G1 P44 P43 eeSK P0C3 P1D0 C10 B9 P20 P22 eeCS P0C2 P1D1 D10 A9 P18 P21 eeDI P0C1 P1D2 F10 B10 P17 P20 eeDO P0C0 P1D3 E10 B11 P15 P19 ssCK P0B7 P1D4 E8 A11 P14 P17 ssCS P0B6 P1D5 E7 A12 P13 P16 ssDI P0B5 P1D6 A6 B13 P12 P15 ssDO P0B4 P1D7 B6 A13 P11 P14

ppCLK P3C0 P1D8 K4 G2 P46 P44 ppDIN P3C1 P1D9 K3 K1 P47 P45 TxD P3C2 P1D10 K2 K2 P50 P46 RxD P3C3 P1D11 K1 L1 P51 P48

tstLED P3C4 P1D12 L5 L2 P52 P49 stsLED P3C5 P1D13 L4 M1 P53 P50 RxLED P3C6 P1D14 L3 M2 P55 P51 TxLED P3C7 P1D15 L2 N1 P56 P52

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

xPA0 P2A0 P2D0 AA3 N2 P59 P53 xPA1 P2A1 P2D1 Y4 T1 P60 P54 xPA2 P2A2 P2D2 AA4 T2 P63 P56 xPA3 P2A3 P2D3 AB4 U2 P68 P57 xPC0 P2A4 P2D4 W5 V1 P69 P58 xPC1 P2A5 P2D5 Y5 V2 P70 P59 xPC2 P2A6 P2D6 AA5 W1 P73 P60 xPC3 P2A7 P2D7 AB5 W2 P74 P61

-- P2B0 P2D8 V6 Y1 P76 P64 -- P2B1 P2D9 V7 Y2 P77 P66 -- P2B2 P2D10 W6 AA3 P78 P68

mCS P2B3 P2D11 Y6 AB4 P79 P69 mA15 P2B4 P2D12 V9 AA4 P80 P70 mA16 P2B5 P2D13 V10 AB5 P82 P71 mA17 P2B6 P2D14 W10 AA5 P83 P74 mA18 P2B7 P2D15 Y10 AA6 P84 P75 CS0 P2C0 ADC0 AA10 AB8 P85 P76

83

SDIN0 P2C1 ADC1 AB10 AA8 P86 P77 CS1 P2C2 ADC2 U10 AB9 P87 P78

SDIN1 P2C3 ADC3 U11 AA9 P89 P79 SCLK P2C4 ADC4 V11 AB10 P90 P80 CS2 P2C5 ADC5 W11 AA10 P92 P81

SDOUT P2C6 ADC6 Y11 AB11 P93 P82 LDAC P2C7 ADC7 AA11 AA11 P95 P83

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

xPB0 P1A0 PxA0 M1 M3 P135 P85 xPB1 P1A1 PxA1 M2 M4 P132 P86 yPB2 P1A2 PxA2 M3 N3 P131 P87 yPB3 P1A3 PxA3 M4 N4 P130 P88 yPB1 P1A4 PxA4 M5 T4 P129 P91 yPB4 P1A5 PxA5 M6 T5 P128 P92 yPB0 P1A6 PxA6 N1 U3 P127 P93 yPB5 P1A7 PxA7 N2 U4 P125 P94 yPB6 P1B0 PxB0 U13 V3 P119 P95 yPB7 P1B1 PxB1 V13 V4 P118 P96 xPB2 P1B2 PxB2 W13 W3 P116 P97 xPB3 P1B3 PxB3 Y13 W4 P113 P98 xPB4 P1B4 PxB4 AA13 Y3 P112 P100 xPB5 P1B5 PxB5 AB13 Y4 P96 P101 yPC3 P1B6 PxB6 U12 Y5 P97 P102 yPC2 P1B7 PxB7 V12 W5 P98 P103 yPC1 P1C7 PxC0 AB17 W11 P108 P113 yPC0 P1C6 PxC1 AA17 Y11 P107 P112 yPA0 P1C5 PxC2 Y17 W10 P105 P111 yPA1 P1C4 PxC3 W17 Y10 P104 P110 yPA2 P1C3 PxC4 AB18 W9 P103 P107 yPA3 P1C2 PxC5 AA18 W8 P102 P106 xPB6 P1C1 PxC6 Y18 W6 P100 P105 xPB7 P1C0 PxC7 W18 Y6 P99 P104

84

eM_DEMO 模組

eM_DEMO 模組的電路配置圖如下

eM_USB 模組

數字型 LED

0 1 2 34 5 6 78 9 A BC D E F

燈號型 LED

44 鍵盤

ADC0 ADC1 DAC0 DAC1

LED 選擇KEY 選擇

其中

1eM_DEMO模組的基本功能包括 A將 xPAxPBxPC等 16個 IO訊號引出控制 LED和鍵盤電路 B將 ADDA訊號引出並放大成+-10V的工作範圍 2LED和鍵盤可以選擇三種模式由 LED和 KEY 兩組開關作選擇圖示如下

模式1

0123

模式2 模式3

0 1 2 34 5 6 78 9 A BC D E F

0123

3模式14鍵輸入並搭配 16點的 LED燈號顯示其中 16點 LED分別對映到 xPA[0~3]xPB[0~7]和 xPC[0~3] 4組按鍵分別對映到 xPC[0~3] 4模式24鍵輸入並搭配四個 7段式數字顯示其中 數字顯示由 xPA[0~3]作數字掃瞄而由 xPB[0~7]作 7段式 LED控制 4組按鍵 分別對映到 xPC[0~3] 5模式316鍵輸入並搭配四個 7段式數字顯示其中 數字顯示由 xPA[0~3]作數字掃瞄而由 xPB[0~7]作 7段式 LED控制 16組按鍵由 xPA[0~3]作鍵盤掃瞄而由 xPC[0~3]作鍵盤讀取 6根據VHDL與數位邏輯設計的章節其中 第 1章至 10章的實驗採用模式1而 第 11章實驗採用模式2而 第 12章之後的實驗都採用模式3

85

FPGA UCF 定義

eM_3S1K 模組

NET CLK LOC = B12

NET XAlt0gt LOC = N2

NET XAlt1gt LOC = T1

NET XAlt2gt LOC = T2

NET XAlt3gt LOC = U2

NET XBlt0gt LOC = M3

NET XBlt1gt LOC = M4

NET XBlt2gt LOC = W3

NET XBlt3gt LOC = W4

NET XBlt4gt LOC = Y3

NET XBlt5gt LOC = Y4

NET XBlt6gt LOC = W6

NET XBlt7gt LOC = Y6

NET XClt0gt LOC = V1

NET XClt1gt LOC = V2

NET XClt2gt LOC = W1

NET XClt3gt LOC = W2

NET YAlt0gt LOC = W10

JP4 接頭

NET YAlt1gt LOC = Y10

NET YAlt2gt LOC = W9

NET YAlt3gt LOC = W8

NET YBlt0gt LOC = U3

NET YBlt1gt LOC = T4

NET YBlt2gt LOC = N3

NET YBlt3gt LOC = N4

NET YBlt4gt LOC = T5

NET YBlt5gt LOC = U4

NET YBlt6gt LOC = V3

NET YBlt7gt LOC = V4

NET YClt0gt LOC = Y11

NET YClt1gt LOC = W11

NET YClt2gt LOC = W5

NET YClt3gt LOC = Y5

在光碟片中 RFFPGAVHDLDEMOBIT3S1K 裡有 VHDL 與數位邏輯設計書本範例原始檔與合成檔

86

eM_3S50 模組

NET CLK LOC = P124

NET XAlt0gt LOC = P59

NET XAlt1gt LOC = P60

NET XAlt2gt LOC = P63

NET XAlt3gt LOC = P68

NET XBlt0gt LOC = P135

NET XBlt1gt LOC = P132

NET XBlt2gt LOC = P116

NET XBlt3gt LOC = P113

NET XBlt4gt LOC = P112

NET XBlt5gt LOC = P96

NET XBlt6gt LOC = P100

NET XBlt7gt LOC = P99

NET XClt0gt LOC = P69

NET XClt1gt LOC = P70

NET XClt2gt LOC = P73

NET XClt3gt LOC = P74

NET YAlt0gt LOC = P105

JP4 接頭

NET YAlt1gt LOC = P104

NET YAlt2gt LOC = P103

NET YAlt3gt LOC = P102

NET YBlt0gt LOC = P127

NET YBlt1gt LOC = P129

NET YBlt2gt LOC = P131

NET YBlt3gt LOC = P130

NET YBlt4gt LOC = P128

NET YBlt5gt LOC = P125

NET YBlt6gt LOC = P119

NET YBlt7gt LOC = P118

NET YClt0gt LOC = P107

NET YClt1gt LOC = P108

NET YClt2gt LOC = P98

NET YClt3gt LOC = P97

在光碟片中 RFFPGAVHDLDEMOBIT3S200 裡有VHDL與數位邏輯設計書本範例原始檔與合成檔

87

eM_95XL 模組

NET CLK LOC = SPIN38

NET XAlt0gt LOC = SPIN53

NET XAlt1gt LOC = SPIN54

NET XAlt2gt LOC = SPIN56

NET XAlt3gt LOC = SPIN57

NET XBlt0gt LOC = SPIN85

NET XBlt1gt LOC = SPIN86

NET XBlt2gt LOC = SPIN97

NET XBlt3gt LOC = SPIN98

NET XBlt4gt LOC = SPIN100

NET XBlt5gt LOC = SPIN101

NET XBlt6gt LOC = SPIN105

NET XBlt7gt LOC = SPIN104

NET XClt0gt LOC = SPIN58

NET XClt1gt LOC = SPIN59

NET XClt2gt LOC = SPIN60

NET XClt3gt LOC = SPIN61

NET YAlt0gt LOC = SPIN111

JP4 接頭

NET YAlt1gt LOC = SPIN110

NET YAlt2gt LOC = SPIN107

NET YAlt3gt LOC = SPIN106

NET YBlt0gt LOC = SPIN93

NET YBlt1gt LOC = SPIN91

NET YBlt2gt LOC = SPIN87

NET YBlt3gt LOC = SPIN88

NET YBlt4gt LOC = SPIN92

NET YBlt5gt LOC = SPIN94

NET YBlt6gt LOC = SPIN95

NET YBlt7gt LOC = SPIN96

NET YClt0gt LOC = SPIN112

NET YClt1gt LOC = SPIN113

NET YClt2gt LOC = SPIN103

NET YClt3gt LOC = SPIN102

在光碟片中 RFFPGAVHDLDEMOSVF95288XL 裡有VHDL與數位邏輯設計書本範例原始檔與合成

檔案

88

eM_FPGA 模組

NET CLK LOC = E12

NET XAlt0gt LOC = AA3

NET XAlt1gt LOC = Y4

NET XAlt2gt LOC = AA4

NET XAlt3gt LOC = AB4

NET XBlt0gt LOC = M1

NET XBlt1gt LOC = M2

NET XBlt2gt LOC = W13

NET XBlt3gt LOC = Y13

NET XBlt4gt LOC = AA13

NET XBlt5gt LOC = AB13

NET XBlt6gt LOC = Y18

NET XBlt7gt LOC = W18

NET XClt0gt LOC = W5

NET XClt1gt LOC = Y5

NET XClt2gt LOC = AA5

NET XClt3gt LOC = AB5

NET YAlt0gt LOC = Y17

JP4 接頭

NET YAlt1gt LOC = W17

NET YAlt2gt LOC = AB18

NET YAlt3gt LOC = AA18

NET YBlt0gt LOC = N1

NET YBlt1gt LOC = M5

NET YBlt2gt LOC = M3

NET YBlt3gt LOC = M4

NET YBlt4gt LOC = M6

NET YBlt5gt LOC = N2

NET YBlt6gt LOC = U13

NET YBlt7gt LOC = V13

NET YClt0gt LOC = AA17

NET YClt1gt LOC = AB17

NET YClt2gt LOC = V12

NET YClt3gt LOC = U12

在光碟片中 RFFPGAVHDLDEMOBIT2V250 裡有VHDL與數位邏輯設計書本範例原始檔與合成檔

89

Page 56: RFFPGA 直流馬達實驗手冊juniortek.com.tw/program/manual/RF-DC-mal.pdf · em_demo模組 em_dcm 直流伺服馬達 dc電源 rffpga 系統的直流馬達實驗規劃 其中包括:

7組合語言說明

本節將針對 DC馬達伺服控制實驗專用的程式模組進行功能與程式碼的說明其

有關於波形產生器與資料擷取模組等說明如下

SIN_waveasm 正弦波產生器 PWM_waveasm 方波產生器 IIR1_filterasm 一階濾波器 DAS4asm 資料蒐集模組

弦波產生器

此模組會產生週期性的正弦波方塊圖如下

outfrq

kBiasbias

ampkAmp

kFrqth

kThf=1TB

θ

A

其中

1正弦波有四個參數振幅(A)頻率(F)相位(θ)和偏移(B)其公式為 out = A sin(2πF t +θ) + B 2對於單純的正弦波產生器所對映的參數包括 kAmp 振幅值 kFrq 頻率值kFrq=655368000Hz其中 Hz的範圍為 0~4000例如 1000Hz =gt frq=8192 100Hz =gt frq=819 10Hz =gt frq=82 1Hz =gt frq=8 kTh 相角值0~255代表 0~360的相位當 th=0 時為正弦波 th=64 時為餘弦波 th=128時為反相波依此類推 kBias偏移值 3對於可調變的正弦波產生器其對映的輸入點為 amp 控制振幅的輸入點可產生調幅(AM)波形 frq 控制頻率的輸入點可產生調頻(FM)波形 th 控制相位的輸入點可產生調相(PM)波形 bias控制偏移的輸入點可產生雙頻混波(相加)波形 4若不使用調變功能時各個輸入點時的預設值為 amp 指向 kAmp 的位址 frq 指向 kFrq 的位址

56

th 指向 kTh 的位址 bias指向 kBias的位址

模組程式範例SIN_WAVEasm

local amp R0 IP kAmp 輸入點sin波的振幅 local frq R1 IP kFrq 輸入點sin波的頻率 local th R2 IP kTh 輸入點sin波的相角 local bias R3 IP kBias 輸入點sin波的中心偏移 local out R4 OP 輸出點sin波輸出 local tab R5 TP 表格指標指向 sin[256]的表格 local ang R6 內部變數相位角65536=360deg local kAmp R7 1000 參數振幅值 local kFrq R8 1000 參數頻率值=655368000Hz local kTh R9 0 參數相角值360deg=256 local kBias R10 0 參數偏移值 data 11 模組變數區長度及初值 initial 啟動程序 WR ang0 WR out0 ang=out=0 RET timer 即時控制程序(8KHz) RD ang ADD (frq) WR ang ang+=frq SFR 8 ADD (th) AND 255 ACC=sin(ang256+th) ADD tab WRH RDM table-look-up MUL (amp) SFR 12 ADD (bias) WR out out=ACCamp4096+bias RET table tab 256 sin[256]表格區10=4096 0 101 201 301 401 501 601 700 00~070deg 799 897 995 1092 1189 1285 1380 1474 08~0F 1567 1660 1751 1842 1931 2019 2106 2191 10~17 2276 2359 2440 2520 2598 2675 2751 2824 18~1F 2896 2967 3035 3102 3166 3229 3290 3349 20~27 3406 3461 3513 3564 3612 3659 3703 3745 28~2F 3784 3822 3857 3889 3920 3948 3973 3996 30~37 4017 4036 4052 4065 4076 4085 4091 4095 38~3F 4096 4095 4091 4085 4076 4065 4052 4036 40~4790deg 4017 3996 3973 3948 3920 3889 3857 3822 48~4F 3784 3745 3703 3659 3612 3564 3513 3461 50~57 3406 3349 3290 3229 3166 3102 3035 2967 58~5F

57

2896 2824 2751 2675 2598 2520 2440 2359 60~67 2276 2191 2106 2019 1931 1842 1751 1660 68~6F 1567 1474 1380 1285 1189 1092 995 897 70~77 799 700 601 501 401 301 201 101 78~7F 0 65435 65335 65235 65135 65035 64935 64836 80~87180deg 64737 64639 64541 64444 64347 64251 64156 64062 88~8F 63969 63876 63785 63694 63605 63517 63430 63345 90~97 63260 63177 63096 63016 62938 62861 62785 62712 98~9F 62640 62569 62501 62434 62370 62307 62246 62187 A0~A7 62130 62075 62023 61972 61924 61877 61833 61791 A8~A8 61752 61714 61679 61647 61616 61588 61563 61540 B0~B7 61519 61500 61484 61471 61460 61451 61445 61441 B8~BF 61440 61441 61445 61451 61460 61471 61484 61500 C0~C7270deg 61519 61540 61563 61588 61616 61647 61679 61714 C8~CF 61752 61791 61833 61877 61924 61972 62023 62075 D0~D7 62130 62187 62246 62307 62370 62434 62501 62569 D8~DF 62640 62712 62785 62861 62938 63016 63096 63177 E0~E7 63260 63345 63430 63517 63605 63694 63785 63876 E8~EF 63969 64062 64156 64251 64347 64444 64541 64639 F0~F7 64737 64836 64935 65035 65135 65235 65335 65435 F8~FF

就程式結構而言說明如下

timer 即時控制程序(8KHz) RD ang ADD (frq) WR ang ang+=frq SFR 8 ADD (th) AND 255 ACC=sin(ang256+th) ADD tab WRH RDM table-look-up MUL (amp) SFR 12 ADD (bias) WR out out=ACCamp4096+bias RET

1基本上我們以查表法計算 sin()其輸入θ的範圍為 0~255對映到 0~360deg其輸出 sin(θ)的範圍為+-4096對映到+-10的範圍

2建立一個內部變數 ang其範圍為 0~65535對映到 0~360的相位角 3每個timer程序都執行 ang+=frq的動作更新目前的相位角接著依照 ang的相位角查表得到 sin(ang256+th)值

4由於表格長度為 256-word所以必須將 ang256才能得到正確的對映關係而 th範圍為 0~255所以不需要像 ang一般的做額外處理

5sin()的範圍為(+1-1)而在表格中以(+4096~-4096)的型式記錄相當於 10=4096所以執行 Asin()時還要用 SFR12指令做4096的動作才能正確的取得輸出值

58

6就頻率輸入 frq而言其計算原則是將θ=ωt轉化成θ=Σ(ωdt)因為抽樣頻率

為 8KHz所以 dt=18000而得到 frq=655368000Hz公式其中 Hz為真正的頻率在 8KHz的抽樣頻率下其範圍為 0~4000

鋸齒波產生器

此模組會產生週期性的鋸齒波方塊圖如下

outfrq

kBiasbias

ampkAmp

kFrqth

kThf=1TB

θ

A

其中

1鋸齒波也有四個參數振幅(A)頻率(F)相位(θ)和偏移(B)和正弦波的定義完全一致唯一的差異是其輸出為鋸齒波而非正弦波

2基本波形是從週期開始時為 0一直遞增到週期結束時到達最高點然後立刻回歸

到 0重新開始 3以程式結構而論鋸齒波程式幾乎就是正弦波的相位計算部分只差沒有正弦波的

查表處理而已

模組程式範例SAW_WAVEasm

local amp R0 IP kAmp 輸入點sin波的振幅 local frq R1 IP kFrq 輸入點sin波的頻率 local th R2 IP kTh 輸入點sin波的相角 local bias R3 IP kBias 輸入點sin波的中心偏移 local out R4 OP 輸出點sin波輸出 local ang R5 內部變數相位角65536=360deg local kAmp R6 1000 參數振幅值 local kFrq R7 1000 參數頻率值=655368000Hz local kTh R8 0 參數相角值360deg=256 local kBias R9 0 參數偏移值 data 11 模組變數區長度及初值 initial 啟動程序 WR ang0 WR out0 ang=out=0 RET timer 即時控制程序(8KHz) RD ang ADD (frq) WR ang ang+=frq SFR 8 ADD (th) AND 255 ACC=(ang256+th)amp0x00ff MUL (amp) SFR 8 ADD (bias) WR out out=ACCamp256+bias

59

RET

脈衝波產生器

outfrq

kBiasbias

ampkAmp

kFrqth

kThf=1TB

θ

A

pwm

kDutyduty

此模組會產生週期性的脈衝波方塊圖如下

其中

1脈衝波有五個參數其中振幅(A)頻率(F)相位(θ)和偏移(B)四個參數和正弦波

定義完全一樣另外再增加一個負載率(D) 2基本波形是從週期開始時為 1隔段時間後換為 0然後持續到週期結束再重新開始其中 1所佔有的比例就是負載率當 D=0時為 0而 D=255時為 100

3和其他參數類似負載率(D)以 duty為其輸入點而以 kDuty為其參數值

模組程式範例PLS_WAVEasm

local amp R0 IP kAmp 輸入點脈衝波的振幅 local frq R1 IP kFrq 輸入點脈衝波的頻率 local th R2 IP kTh 輸入點脈衝波的相角 local bias R3 IP kBias 輸入點脈衝波的中心偏移 local duty R4 IP kDuty 輸入點脈衝波的負載率 local out R5 OP 輸出點脈衝波輸出 local ang R6 內部變數相位角65536=360deg local kAmp R7 1000 參數振幅值 local kFrq R8 1000 參數頻率值=655368000Hz local kTh R9 0 參數相角值360deg=256 local kBias R10 0 參數偏移值 local kDuty R11 128 參數負載率100 =256 data 12 模組變數區長度及初值 initial 啟動程序 WR ang0 WR out0 ang=out=0 RET timer 即時控制程序(8KHz)

60

RD ang ADD (frq) WR ang ang+=frq SFR 8 ADD (th) AND 255 ACC=(ang256+th)amp0x00ff SUB (duty) RD (amp) JLT t1 RD 0 ACC=(amp0) t1 ADD (bias) WR out out=ACC+bias RET

IIR 一階濾波器

此模組執行一階的 IIR濾波器方塊圖如下

kau x

Z-1

+

+

-

+低通濾波器

高通濾波器dx lp

hp

濾波器參數的計算公式如下

1假設濾波器的頻寬為 hz則 ωn=hz628 2若系統頻率為 8KHz則抽樣週期 dT為 dT=dt8000 其中 dt為模組參數 3則濾波器參數為 ka=ωndT4096或是 =hzdt62880004096即 =hzdt32 4當 dt決定後所允許的訊號頻寬為(4000dt)換句話說訊號頻寬會因為 dt增加而下降

為了方便實驗的運用下面列出常用的參數對照表

濾波頻寬

(Hz)

10 20 50 100 200 500 1000 2000

訊號頻寬

(Hz)

400 800 2000 4000 4000 4000 4000 4000

模組參數 dt 10 5 2 1 1 1 1 1

模組參數 ka 320 320 320 320 640 1600 3200 6400

表格的運用方式如下

1首先決定濾波頻寬 2接著查表找出對映的參數 dt和 ka 3再查表得到對映的訊號頻寬以決定是否需要串接前級濾波器

61

模組程式範例IIR1_FILTERasm

local u R0 IP 輸入點濾波器輸入 local lp R1 OP 輸出點低通濾波器輸出 local hp R2 OP 輸出點高通濾波器輸出 local dt R3 1 參數抽樣週期 local ka R4 4096 參數增益 ka10=4096 local prd R5 內部變數抽樣週期用 data 6 模組變數區長度 initial 開機啟動程序 WR lp0 WR hp0 WR prd1 RET lp=hp=0prd=1 timer 即時控制程序 SUB prd1 JNZ b9 if (--prdgt0) return RD dt WR prd prd=dt RD (u) SUB lp WR hp hp=u-lp MUL ka SFR 12 ADD lp WR lp lp+=(hpka4096) b9 RET

資料蒐集模組

資料蒐集模組是一個非常特殊的模組專門配合 eTTY 程式中的示波器使用

模組程式範例DAS4asm

local cmd R0 0 紀錄命令0=停止1=前置記錄2=正觸發4=負觸發6=觸發記錄 local dt R1 1 抽樣週期每 dT抽樣一次 local tab R2 TP DAS表格啟始位址 local cnt R3 0 目前記錄點(0~255) local ch1 R4 0 定義頻道1的變數位址 local ch2 R5 0 定義頻道2的變數位址 local ch3 R6 0 定義頻道3的變數位址 local ch4 R7 0 定義頻道4的變數位址 local trg R8 0 定義觸發頻道的變數位址 local th R9 0 觸發準位 local tail R10 0 觸發後的抽樣個數 local buf R11 1 抽樣計數(1~dt) local pnt R12 表格位址計算pnt=tab+cnt4 local len R13 表格長度計算(0~256) data 14 定義模組變數區的長度 table tab 1024 定義表格的長度 initial 啟動程序 WR cmd0 RET cmd=0 timer 控制程序

62

ADD cmd0 JZ t9 if (cmd==0) return SUB buf1 JNZ t9 if (--buf)gt0) return RD dt WR buf dt=buf RD cnt ADD 1 AND 0xff WR cnt cnt=(cnt+1)amp0xff SFL 2 ADD tab WR pnt pnt=tab+cnt4 RD (ch1) WR (pnt) ADD pnt1 pnt++=ch1 RD (ch2) WR (pnt) ADD pnt1 pnt++=ch2 RD (ch3) WR (pnt) ADD pnt1 pnt++=ch3 RD (ch4) WR (pnt) pnt =ch4 RD cmd SUB 1 JZ t9 SUB 1 JZ t2 SUB 1 JZ t3 SUB 1 JZ t4 SUB 1 JZ t5 SUB 1 JZ t6 JR t7 t2 RD (trg) SUB th JGE t9 ADD cmd1 JR t9 wait trgltth t3 RD (trg) SUB th JLE t9 JR t6 wait trggtth t4 RD (trg) SUB th JLE t9 ADD cmd1 JR t9 wait trggtth t5 RD (trg) SUB th JGE t9 JR t6 wait trgltth t6 WR len0 WR cmd7 len=0cmd=7 t7 ADD len1 SUB tail JLT t9 WR cmd0 if ((++len)gt=0x80) cmd=0 t9 RET

與 DC 馬達控制相關的程式模組有以下 4個程式模組說明如下

(1)加減速控制模組 ACC_controlasm (2)光電盤輸入模組 POS_inputasm (3)PWM輸出模組 PWM_outputasm (4)PD控制模組 PD_controlasm

71加減速控制模組 此程式模組主要功能在於執行位置控制的加減速命令修正其數學模式採用 Lynn

濾波器的架構參見下圖

cmd

2

+

old Z -1

-

Z -1

Z -1

Z-1

Z-1x0 x1 x8 x9 x16

+ -

++

2

Z-1

Z-1 y1 y2

+

-

y0

+ +

sumZ-1

+164

12

out

dif

+

63

加減速控制模組方塊圖

其中

1Lynn 濾波器的階數固定成八階也就是 m=8其公式為 H(z) = (1-2Z-m+Z-2m)(1-2Z-1+Z-2)m2

2因為m=8所以m2=64因此最後計算低通濾波的部份時要先做除 64的運算 3因為低通濾波(lp)和 y0之間有 64倍的差異代表 y0y1y2的變化範圍比濾波器輸

入值要擴大許多例如輸入值在+-1000變化時y0y1y2很可能會在+-64000之間變化這範圍已經超出整數處理的範圍很可能會造成錯誤的計算結果

4所以在實驗時輸入值的變化範圍必須控制在+-500之間以保證計算的正確性 5對於 Lynn 濾波器當 m=8時其濾波器的頻寬固定為 1 kHzmdt也就是 dt=1時頻寬為 125 Hz dt=2時頻寬為 625Hz依此類推 6對於 Lynn 濾波器其濾波器的延遲固定為 m個抽樣週期因此設計 hp = x8 - lp 即可得到高通濾波器的對應結果 7其中乘 2和除 64的運算以移位運算取代所以整個程式中並無任何乘法運算 8Lynn 濾波器本身並不是穩定濾波器所以在程式啟動時必須確實的將所有狀態

(x0~x16)歸零否則會產生不穩定的狀態輸出

因為 Lynn濾波器中所有參數固定所以除了抽樣週期 dt 之外並無任何可調參數

抽樣週期 dt 可以控制頻寬dt 越大則濾波器頻寬越低

將步階命令值的輸出送入 Lynn 濾波器中經由低通濾波器的效應可以減緩命

令的變化程度達到加減速控制的目的以下為使用 Lynn 濾波器型式實現加減速控

制的組合語言程式列印 如欲更進一步瞭解 Lynn 濾波器與 FIR 數位濾波器之間的關係可以參考通訊實驗

四數位濾波器設計(FIR)中之說明

ACC_controlasm程式列印 local cmd R0 IP 輸入點位置命令

local out R1 OP 輸出點加減速處理後的位置命令

local dif R2 OP 輸出點位置微分命令

local axis R3 0 馬達編號0=X1=Y2=Z3=C

local old R4 內部變數微分計算用

local sumL R5 內部變數積分計算用

local sumH R6 內部變數積分計算用

local y0 R7 內部變數y(0~2)

local y1 R8 local y2 R9

local x0 R10 內部變數x(0~16)

local x1 R11 local x2 R12 local x3 R13 local x4 R14

local x5 R15 local x6 R16 local x7 R17 local x8 R18

local x9 R19 local x10 R20 local x11 R21 local x12 R22

local x13 R23 local x14 R24 local x15 R25 local x16 R26

64

data 27 模組變數區長度

initial 開機啟動程序

WR dif0 RD (cmd) WR out WR old dif=0 out=old=cmd

sumHL=cmd64

SFL 6 WR sumL RD out SFR 10 SGN 5 WR sumH

RPT 17 WR x00 RPT 3 WR y00 RET x[0~16]=0y[0~2]=0

timer 即時控制程序

RD (cmd) SUBX old WR x0 x0=cmd-old old=cmd

SUB x81 ADD x16 ADD y11 SUB y2 WR y0 y0=x0-2x8+x16+2y1-y2

SGN ADD sumL WR sumL RDH ADC sumH WR sumH sumHL+=y0

WRH RD sumL SFR 6 WR out out=sumHL64

RD y0 SGN SFR WR dif dif=y032mm

RD x0 RPT 16 RDX x1 x[i]=x[i-1] i=1~16

RD y0 RDX y1 WR y2 y[i]=y[i-1] i=1~2

b9 RET

72光電盤輸入模組

DC馬達的位置由光電盤量測之預設儲存於 0xac與 0xbe二個輸入埠位址中其中位址 0xac記錄 X軸馬達的位置位址 0xbe記錄 Y軸馬達的位置由於本實驗的DC馬達接在 Y軸的位置上因此程式中直接選用 Y軸的輸入 光電盤位置輸入的程式列印如下其中速度由位置的差分而得至於馬達的位置

則使用內部 2個 word加以記錄精度為 32位元 POS_inputasm程式列印 local spd R0 OP 輸出點速度量測值

local ang R1 OP 輸出點角度量測值

local angH R2 內部變數角度的 32 位元部分

local mode R3 0x308 模式選擇15MHzAB 相正反向輸入

local pht R4 0xac 輸入阜地址光電盤輸入(0xac)

local phtc R5 0xbe 輸入阜地址光電盤模式(0xbe)

local old R6 內部變數速度更新用

data 7 模組變數區長度

initial 開機啟動程序

RD mode WR (phtc) phtc=mode

RD (pht) WR old WR spd0 RET old=phtspd=0

timer 即時控制程序

RD (pht) SUBX old SGN 11 WR spd spd=(pht-old)old=pht

65

ADD ang WR ang angHL+=spd

RDH ADC angH WR angH

RET

73 PWM輸出控制模組 模組方塊

cmd PWM輸出

程式說明 1在開機時將切換保護時間寫到輸出阜 0xbc上其中切換保護值為 0~6360=5us 2在每次 timer interrupt時將 cmd訊號處理後寫到輸出阜 0xb8上

PWM_outputasm程式列印 local cmd R0 IP gnd 輸入點v相命令

local gain R1 4096 參數輸出增益1=4096

local bias R2 2048 參數輸出偏壓0=2048

local limit R3 4095 參數輸出極限1=4095

local zone R4 0x88f0 參數頻率=12KHz切換保護=5us

local pwm R5 0xb8 輸出阜地址PWM0 輸出(0xb8)

local mode R6 0xbc 輸出阜地址PWM 模式(0xbc)

local p0md R7 0xf8 輸出阜地址port0 模式(0xf8)

local gnd R8 0 輸入接地點

data 9 模組變數區長度

initial 開機啟動程序

RD bias WR (pwm) pwm=bias

RD 0xffff WR (p0md) set port0 mode

RD zone WR (mode) RET mode=zone

stop 關機保護程序

RD bias WR (pwm) RET pwm=bias

timer 即時控制程序

RD (mode) xor 1 and 1 WR (mode) trigger watch-dog

RD (cmd) MUL gain SFR 12 ADD bias ACC=(cmdgain4096)+bias

MAX 0 MIN limit WR (pwm) pwm=limit(ACC)

RET

66

74 PD 控制模組

PD控制的模組方塊參見圖二十一所示其中比例控制的部份直接由增益 kp加以調整微分控制的部份則由誤差的差分經增益 kd的調整而得

Σ+

-

cmd

fdk

err out

Σ

pk

dk

Σ

+

+

+

-

old1minusZ

PD控制器的方塊圖

PD_controlasm程式列印 local cmd R0 IP gnd 輸入點位置命令(可忽略)

local fdk R1 IP gnd 輸入點位置回授(可忽略)

local out R2 OP 輸出點用以控制速度迴路

local kp R3 256 參數增益 kp10=256

local kd R4 0 參數增益 kd10=256

local err R5 0 內部變數

local old R6 0 內部變數

local gnd R7 0 無輸入時的短路點

data 8 模組變數區長度

initial 開機啟動程序

WR out0 WR old0 RET out=old=0

timer 即時控制程序

RD (cmd) SUB (fdk) PRTF WR err

MUL kp SFR 8 P=(cmd-fdk)kp256

RDS err SUBX old MUL kd SFR 8 D=(err-old)kd256

ADDS

WR out out=P+D

RET

程式中預設增益值的 10以整數值 256為基底因此使用 SFR 8的指令加以調

整另外在在計算微分項的程式部份用到 SUBX old的指令其詳細的暫存器動作如

下 參考 piDSP的指令說明SUBX指令將總共用到 3個時序參考錯誤 找不到參照

67

來源在時序 1時將原先 AX的資料拷貝一份到 HX中時序 2時正式執行減

法的動作所以 AX暫存器中的內容會變成 err-old時序 3時DSP會將存放在 HX暫存器中的內容拷貝一份到 old的記憶體中也就是經由 SUBX此一精簡指令將

同時完成計算差分所需要的相減與資料疊代的動作有效的利用 piDSP控制器 DSP核心的精簡指令將可以大幅提昇系統的計算速度

HX AXoldSUBXerr err

old

err

errerr olderr minus

1_err

errerr olderr minus err

1_err

1

2

3

SUBX的指令時序與暫存器變化

68

8附錄快速安裝說明

光纖網路通訊 FPGA 發展系統 (適用於 WIN-XP200098 系統)

快速安裝說明

26Pin 負載輸出入埠

雙電源︵5

12

伏︶輸入埠

單電源︵5

伏︶輸入埠

USB

光纖線輸

號 光纖線輸出埠

入 傳 埠

首先將光碟片 RFFPGA 目錄檔案拷貝在您工作硬碟裡面

第一次安裝時先將 USB 傳輸線接上電腦主機將電源供應器接上 FPGA 模組此時電

腦會出現安裝 USB-Serial 驅動程式選擇從清單安裝此驅動程式放置在光碟片

RFFPGA-USBdrive 選擇您目前安裝系統

可選擇 WIN-98WIN-MEWIN-2000WIN-XP 系統配合您現在工作電腦作業系統

69

注意一般電腦 USB 埠很多插口當您安裝驅動程式時是配合您當時插入之埠

下次如您插入不同接口埠時電腦會再次要求安裝驅動程式這是正常現象請再次安

裝驅動程式否則無法使用

FPLC 操作

首先進入 RFFPGA裡子目錄 testASM直接點選 fPLCexe 出現下面操作畫面(也可直接將

此檔案放置桌面直接點選)

(或者選擇 File 再執行 Setuphellip 選擇您要執行 CAI 檔)

70

進入下面操作畫面 首先使用滑鼠在 FPGA下載按鈕單擊動作使 FPGA變成 DSP晶片 實驗一至實驗五皆為使用 DSP組合語言設計程式其原始程式分別為 testASM1至testASM5可使用 texPad 開啟與編輯程式內容 實驗三與實驗五多有 IO控制動作 當選擇實驗三時出現下面畫面

71

eM_USB 模組

數字型 LED

0 1 2 34 5 6 78 9 A BC D E F

燈號型 LED

44 鍵盤

ADC0 ADC1 DAC0 DAC1

LED 選擇KEY 選擇

模 式 1

0123

注意操作畫面 3與 4 說明開關與按鍵選擇位置後選擇程式下載再按程式啟動如您

按下 0-3按鍵時燈號型 LED會有不同方向閃爍顯示程式停止時結束所有 IO控制動作再按回首頁選擇其他實驗 實驗四與實驗五

模式3

0 1 2 34 5 6 78 9 A BC D E F

按照上面開關選擇直接操作如果以上實驗皆能按照正常操作表示您光纖網路通訊

FPGA發展模組以能正常使用 注意 開機與關機動作順序如下

開機電腦啟動 --- eM_USB 模組電源接上 --- USB 接上電腦 ---

啟動 FPLC 軟體 --- 下載 FPGA 程式

關機關閉 FPLC 軟體 --- eM_USB 模組電源拔掉 --- 拔掉電腦 USB 接頭 ---關掉

電腦

如果以上順序有亂可能造成 USB 找不到驅動造成無法下載經過幾次測試還是

無法下載建議重新啟動電腦主機按照正確步驟操作

72

FPGA 下載操作

進入 FPLC 操作系統按照下列步驟選擇節點模組與下載 bit FPGA 檔案

在 VHDLDEMO 子目錄下您可以選擇您目前 FPGA 種類型號在此型號下我們已將 VHDL

與數位邏輯設計課本範例全部放於此處

73

光纖網路連線 FPGA 下載操作

首先利用光纖線將 eM_USB0 模組光纖輸出埠接至 eM_USB1 模組光纖輸入埠以此

類推最後再將最後 eM_USBN 模組光纖輸出埠接至 eM_USB0 模組光纖輸入埠配置

如附圖方式

個人電腦(Windows) eM_USB模組

0USB

eM_USB模組1

光纖網路

eM_USB模組2

eM_USB模組N

配置完成後進入 FPLC 系統首先必須先將 Node00 下載在 testASM 子目錄裡

piDSPv0bit 檔讓 eM_USB0 模組 FPGA 具備 DSP 功能才能執行光纖網路通訊

操作如下

此時您就可以選擇分別下載至各模組 FPGA 檔 bit

74

安裝 FPLC 注意事項

當您進入 FPLC 時

按 FILE 選擇 programhellip 選擇檔案為 exp_dcmplc 出現下面畫面

正常顯示畫面為

75

DOS 環境操作

在 PC 端的操作是在 Windows 環境中的 DOS 視窗中執行指令範例如下

eFPGA progNETbit 下載 FPGA電路至網路節點0(即 USB節點)中 eFPGA testLEDbit 1 下載 FPGA電路至網路節點1中

對於單一節點的控制程序如下

1將 eM_USB模組連結個人電腦的 USB端 2eM_USB模組開機 3執行下載指令即可 eFPGA xxxxbit 4若要更改 FPGA電路只要重新執行下載指令即可

對於多個網路節點的控制程序如下

1第一組 eM_USB模組連結個人電腦的 USB端再以光纖網路依序其他各節點 2連接 USB界面者為模組0從光纖發射端連接出去的模組為1依此類推 3將所有 eM_USB模組開機 4執行下載指令如下 eFPGA progNETbit 模組0必須先下載指定的 FPGA電路 eFPGA xxxxbit 1 再依序下載其他網路模組的 FPGA電路 eFPGA yyyybit 2 eFPGA zzzzbit 最後再重新下載模組0的 FPGA電路 5換句話說模組0必須先執行 progNETbit讓光纖網路接受 FPGA控制後才能透過光纖網路下載至其他節點等全部網路節點下載完畢後再將模組0的 FPGA重新下載讓模組0也可自由執行任意的 FPGA電路

6若要更改某一個網路節點中的 FPGA電路只要重新執行下述指令 eFPGA progNETbit 模組0必須先下載指定的 FPGA電路 eFPGA yyyybit 2 下載指定網路模組的 FPGA電路 eFPGA zzzz bit 最後再重新下載模組0的 FPGA電路 換句話說除非模組0中的 FPGA已經包括光纖網路管理電路否則一定要先在

模組0中下載網路管理電路後才能下載指定網路節點的 FPGA電路

76

光纖網路通訊 FPGA 發展系統

系統配置

光纖網路通訊 FPGA 發展系統的系統配置圖如下

個人電腦(Windows) eM_USB模組

0USB

eM_USB模組1

光纖網路

eM_USB模組2

eM_USB模組N

其中

1基本模組為 eM_USB模組可用 USB界面和個人電腦連線並提供 USB對光纖網路的轉換功能使得個人電腦可以獨立控制光纖網路中的每個網路節點

2eM_USB模組也可以作為光纖網路中的網路節點透過光纖網路而接受個人電腦的

監控 3就個人電腦而言不論是 USB界面直接連結或是以光纖網路間接連結的 eM_USB模組都是可以直接監控的網路節點最多可以同時控制一個 USB節點和 30個網路節點

4對於每一個網路節點個人電腦都可執行 eM_USB模組中 FPGA的電路下載工作並在適當的 FPGA電路配合下可執行 eM_USB模組中 FPGA內部電路的讀寫控制 5透過適當的 FPGA電路設計各網路節點都可透過光纖網路和其他任何網路節點

作同步通訊執行 FPGA內部記憶體的資料交換資料交換頻率可達 1KHz以上

77

網路模組配置

每個網路模組的標準配置圖如下

eM_USB模組光纖網路

USB eM_FPGA卡

eM_DEMO模組

eM_EXP實驗模組

DC電源

其中

1網路模組以 eM_USB模組為主提供基本的 USB界面和光纖網路連線 2eM_USB模組中的 FPGACPLD採用插卡型式可選擇不同的 eM_FPGA卡包括

eM_2V1K卡可選用 Virtex系列的 XC2V250和 XC2V1000 eM_3S1K卡可選用 Spartan3系列的 XC3S400XC3S1000和 XC3S1500 eM_3S50卡可選用 Spartan3系列的 XC3S50XC3S200和 XC3S400 eM_95XL卡可選用 9500XL系列的 XC95144XL和 XC95288XL 3eM_USB模組中的對外連線有兩種一種是 26P接頭用以連接既有的各種實驗模

組另一種是兩組 50P接頭將 FPGA中各接腳引出用以連接專題實驗 4eM_DEMO模組就是插上 50P接頭的教學模組其中包括 LED 數字顯示和 44鍵盤也具備兩組的 ADC和兩組的 DAC接頭提供類比訊號的測試工具

常用的實驗組合包括

1精簡組合包括(eM_USB+eM_FPGA)提供基本的網路節點適用於專題實驗 2標準組合包括(eM_USB+eM_FPGA+eM_DEMO)提供基礎 FPGA設計的教學實驗

3實驗組合包括(eM_USB+eM_FPGA+eM_DEMO+eM_EXP)提供進階的 FPGA實驗可依需求選用不同的實驗模組

78

eM_USB 模組

eM_USB 模組的電路配置圖如下

TxRx

DCPower

USB

JP2

JP3

光纖界面

外加電源

PC連線

JP1

eM_FPGA模組

FT232 CPLD FlashROM

SRAM

10cm

6cm

JP4

其中

1對外的連線接頭包括 DC電源 可選擇單電源(5V)或是多電源(5V+12V-12V)兩種 USB界面 直接連接個人電腦 光纖界面連接光纖網路 2實驗界面包括 JP1負責內部 CPLD的電路下載 JP2JP3兩組 50P的擴張用接頭 JP4 標準 26P接頭用以連接各種實驗模組 3內部的電路配置包括 A以 SO-DIMM接頭連接各種 eM_FPGA卡 B內附 EEPROMFlashROM和 SRAM提供 FPGA作應用測試 C以一顆 FT232BM作為 USB界面解碼而以一顆 CPLD作為光纖網路解碼 D提供各種 eM_FPGA卡的電路下載功能 4內附五顆 LED由上而下依序為 usbLED指示 USB界面的讀寫狀態 tstLED可由 FPGA電路自行定義 stsLED可由 FPGA電路自行定義 RxLED 可由 FPGA電路自行定義 TxLED 可由 FPGA電路自行定義

79

外部接腳定義

外部接頭的接點順序圖示如下

上視圖

JP11 9 JP4

126225

JP31

50249

JP21

50249

而各接頭的接點定義如下

JP1 JP4 JP2 JP3 1+33V 1+12V 2+12V 1 GND 2 GND 1 GND 2 GND 2GND 3 ADC 4 DAC 3POWER 4ALARM 3 +5V 4 +5V 3nc 5 yPB2 6 yPB3 5RxNET 6TxNET 5+12V 6+12V 4TCK 7 yPB1 6 yPB4 7RxUSB 6TxUSB 7-12V 6-12V 5nc 9 yPB0 10yPB5 9RxCAN 10TxCAN 9 ADC 10 DAC 6TDO 11yPB6 12yPB7 11P0D0 12P0D1 11P1D0 12P1D1 7TDI 13yGND 14yPC3 13P0D2 14P0D3 13P1D2 14P1D3 8nc 15yPC2 16yPC1 15P0D4 16P0D5 15P1D4 16P1D5 9TMS 17yPC0 18yPA0 17P0D6 18P0D7 17P1D6 18P1D7 19yPA1 20yPA2 19P0D8 20P0D9 19P1D8 20P1D9 21yPA3 22GND 21P0D10 22P0D11 21P1D10 22P1D11 23GND 24+5V 23P0D12 24P0D13 23P1D12 24P1D13 25+5V 26nc 25P0D14 26P0D15 25P1D14 26P1D15 27P2D0 28P2D1 27PxA0 28PxA1 29P2D2 30P2D3 29PxA2 30PxA3 31P2D4 32P2D5 31PxA4 32PxA5 33P2D6 34P2D7 33PxA6 34PxA7 35P2D8 36P2D9 35PxB0 36PxB1 37P2D10 38P2D11 37PxB2 38PxB3 39P2D12 40P2D13 39PxB4 40PxB5 41P2D14 42P2D15 41PxB6 42PxB7 43ADC0 44ADC1 43PxC0 44PxC1 45ADC2 46ADC3 45PxC2 46PxC3 47ADC4 48ADC5 47PxC4 48PxC5 49DAC0 50DAC1 49PxC6 50PxC7

80

eM_FPGA 模組

在各種 eM_FPGA 模組中FPGA 對外電路的標準配置圖如下

24576MHz

FlashROM

26PSRAM

EEPROM

mD[8]

yPA[4]

FPGACPLD

mA[19]mRDmWRmCSeeCKeeCSeeDIeeDO

光纖界面 RxNETTxNET

USB 界面 RxUSBTxUSBCLK24MPOWERALARM

LED

tstLEDstsLEDRxLEDTxLED

yPB[8]yPC[4]

ADCDAC

ADC[8]

實驗模組

ADC[2]

DAC[2]

xPA[4]

xPB[8]

xPC[4]

基礎實驗

其中

1FPGACPLD可以選擇下述幾種 XC2V250XC2V1000 採用 eM_2V1K模組其中 FPGA為 FG456包裝 XC3S400XC3S1000XC3S1500採用 eM_3S1K模組其中 FPGA為 FG456包裝 XC3S400XC3S1000XC3S1500採用 eM_3S1K模組其中 FPGA為 FG456包裝 XC3S50XC3S200XC3S400 採用 eM_3S50模組其中 FPGA為 TQ144包裝 XC95144XLXC95288XL 採用 eM_95XL模組其中 CPLD為 TQ144包裝 2採用 FG456包裝者可以控制所有的 IO界面 3採用 TQ144包裝者只是不能控制 RAM和 FlashROM而可以控制其他所有的界面 4所有 FPGA模組都可自由選擇由 USB界面或是由光纖界面下載電路但是 CPLD模組只能固定由 USB界面下載電路

5所有 FPGACPLD模組都可透過 26P接頭連接既有的各種實驗模組

81

FPGA 接腳對照表

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

mD0 XD6 mD0 A17 C13 -- -- mD1 XD7 mD1 B17 D12 -- -- mD2 XD8 mD2 C17 D11 -- -- mD3 XD9 mD3 D17 C11 -- -- mD4 XD10 mD4 E17 D10 -- -- mD5 XD11 mD5 E16 C10 -- -- mD6 XD12 mD6 E14 D9 -- -- mD7 XD13 mD7 E13 D7 -- -- mA0 XD14 mA0 D13 C7 -- -- mA1 XD15 mA1 C13 D6 -- -- mA2 XA0 mA2 V5 C3 -- -- mA3 XA1 mA3 U5 C4 -- -- mA4 XA2 mA4 Y2 D3 -- -- mA5 XA3 mA5 Y1 D4 -- -- mA6 XA4 mA6 V4 E3 -- -- mA7 XA5 mA7 V3 E4 -- -- mA8 XA6 mA8 W2 F3 -- -- mA9 XA7 mA9 W1 F4 -- -- mA10 XA8 mA10 T2 G6 -- -- mA11 XA9 mA11 T1 K3 -- -- mA12 XA10 mA12 R4 K10 -- -- mA13 XA11 mA13 R3 L3 -- -- mA14 XA12 mA14 R2 L4 -- -- mRD XRD mRD R1 D5 -- -- mWR XWR mWR P6 C6 -- --

POWER P0A0 POWER B4 B20 P1 P5 ALARM P0A1 ALARM A4 A19 P2 P6 RxNET P0A2 RxNET C4 B19 P4 P7 TxNET P0A3 TxNET C5 A18 P5 P9 RxUSB P0B0 RxUSB B5 A15 P6 P10 TxUSB P0B1 TxUSB A5 B15 P7 P11 RxCAN P0B2 RxCAN D6 A14 P8 P12 RxCAN P0B3 TxCAN C6 B14 P10 P13

CLK24M CLK24M CLK24M E12 B12 P124 P38

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

PWM0H P3A0 P0D0 E6 A8 P21 P23 PWM0L P3A1 P0D1 E5 B8 P23 P24 PWM1H P3A2 P0D2 C2 B6 P24 P25 PWM1L P3A3 P0D3 C1 A5 P25 P26 PWM2H P3A4 P0D4 D2 B5 P26 P27

82

PWM2L P3A5 P0D5 D1 A4 P27 P28 PWMenb P3A6 P0D6 E4 B4 P28 P30 PHT1Z P3A7 P0D7 E3 A3 P30 P31 PHT1A P3B0 P0D8 G2 C1 P31 P32 PHT1B P3B1 P0D9 G1 C2 P32 P33 PHT0A P3B2 P0D10 H5 D1 P33 P34 PHT0B P3B3 P0D11 J6 D2 P35 P35 AMP0 P3B4 P0D12 H4 E1 P36 P39 AMP1 P3B5 P0D13 H3 E2 P40 P40 AMP2 P3B6 P0D14 H2 F2 P41 P41 AMP3 P3B7 P0D15 H1 G1 P44 P43 eeSK P0C3 P1D0 C10 B9 P20 P22 eeCS P0C2 P1D1 D10 A9 P18 P21 eeDI P0C1 P1D2 F10 B10 P17 P20 eeDO P0C0 P1D3 E10 B11 P15 P19 ssCK P0B7 P1D4 E8 A11 P14 P17 ssCS P0B6 P1D5 E7 A12 P13 P16 ssDI P0B5 P1D6 A6 B13 P12 P15 ssDO P0B4 P1D7 B6 A13 P11 P14

ppCLK P3C0 P1D8 K4 G2 P46 P44 ppDIN P3C1 P1D9 K3 K1 P47 P45 TxD P3C2 P1D10 K2 K2 P50 P46 RxD P3C3 P1D11 K1 L1 P51 P48

tstLED P3C4 P1D12 L5 L2 P52 P49 stsLED P3C5 P1D13 L4 M1 P53 P50 RxLED P3C6 P1D14 L3 M2 P55 P51 TxLED P3C7 P1D15 L2 N1 P56 P52

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

xPA0 P2A0 P2D0 AA3 N2 P59 P53 xPA1 P2A1 P2D1 Y4 T1 P60 P54 xPA2 P2A2 P2D2 AA4 T2 P63 P56 xPA3 P2A3 P2D3 AB4 U2 P68 P57 xPC0 P2A4 P2D4 W5 V1 P69 P58 xPC1 P2A5 P2D5 Y5 V2 P70 P59 xPC2 P2A6 P2D6 AA5 W1 P73 P60 xPC3 P2A7 P2D7 AB5 W2 P74 P61

-- P2B0 P2D8 V6 Y1 P76 P64 -- P2B1 P2D9 V7 Y2 P77 P66 -- P2B2 P2D10 W6 AA3 P78 P68

mCS P2B3 P2D11 Y6 AB4 P79 P69 mA15 P2B4 P2D12 V9 AA4 P80 P70 mA16 P2B5 P2D13 V10 AB5 P82 P71 mA17 P2B6 P2D14 W10 AA5 P83 P74 mA18 P2B7 P2D15 Y10 AA6 P84 P75 CS0 P2C0 ADC0 AA10 AB8 P85 P76

83

SDIN0 P2C1 ADC1 AB10 AA8 P86 P77 CS1 P2C2 ADC2 U10 AB9 P87 P78

SDIN1 P2C3 ADC3 U11 AA9 P89 P79 SCLK P2C4 ADC4 V11 AB10 P90 P80 CS2 P2C5 ADC5 W11 AA10 P92 P81

SDOUT P2C6 ADC6 Y11 AB11 P93 P82 LDAC P2C7 ADC7 AA11 AA11 P95 P83

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

xPB0 P1A0 PxA0 M1 M3 P135 P85 xPB1 P1A1 PxA1 M2 M4 P132 P86 yPB2 P1A2 PxA2 M3 N3 P131 P87 yPB3 P1A3 PxA3 M4 N4 P130 P88 yPB1 P1A4 PxA4 M5 T4 P129 P91 yPB4 P1A5 PxA5 M6 T5 P128 P92 yPB0 P1A6 PxA6 N1 U3 P127 P93 yPB5 P1A7 PxA7 N2 U4 P125 P94 yPB6 P1B0 PxB0 U13 V3 P119 P95 yPB7 P1B1 PxB1 V13 V4 P118 P96 xPB2 P1B2 PxB2 W13 W3 P116 P97 xPB3 P1B3 PxB3 Y13 W4 P113 P98 xPB4 P1B4 PxB4 AA13 Y3 P112 P100 xPB5 P1B5 PxB5 AB13 Y4 P96 P101 yPC3 P1B6 PxB6 U12 Y5 P97 P102 yPC2 P1B7 PxB7 V12 W5 P98 P103 yPC1 P1C7 PxC0 AB17 W11 P108 P113 yPC0 P1C6 PxC1 AA17 Y11 P107 P112 yPA0 P1C5 PxC2 Y17 W10 P105 P111 yPA1 P1C4 PxC3 W17 Y10 P104 P110 yPA2 P1C3 PxC4 AB18 W9 P103 P107 yPA3 P1C2 PxC5 AA18 W8 P102 P106 xPB6 P1C1 PxC6 Y18 W6 P100 P105 xPB7 P1C0 PxC7 W18 Y6 P99 P104

84

eM_DEMO 模組

eM_DEMO 模組的電路配置圖如下

eM_USB 模組

數字型 LED

0 1 2 34 5 6 78 9 A BC D E F

燈號型 LED

44 鍵盤

ADC0 ADC1 DAC0 DAC1

LED 選擇KEY 選擇

其中

1eM_DEMO模組的基本功能包括 A將 xPAxPBxPC等 16個 IO訊號引出控制 LED和鍵盤電路 B將 ADDA訊號引出並放大成+-10V的工作範圍 2LED和鍵盤可以選擇三種模式由 LED和 KEY 兩組開關作選擇圖示如下

模式1

0123

模式2 模式3

0 1 2 34 5 6 78 9 A BC D E F

0123

3模式14鍵輸入並搭配 16點的 LED燈號顯示其中 16點 LED分別對映到 xPA[0~3]xPB[0~7]和 xPC[0~3] 4組按鍵分別對映到 xPC[0~3] 4模式24鍵輸入並搭配四個 7段式數字顯示其中 數字顯示由 xPA[0~3]作數字掃瞄而由 xPB[0~7]作 7段式 LED控制 4組按鍵 分別對映到 xPC[0~3] 5模式316鍵輸入並搭配四個 7段式數字顯示其中 數字顯示由 xPA[0~3]作數字掃瞄而由 xPB[0~7]作 7段式 LED控制 16組按鍵由 xPA[0~3]作鍵盤掃瞄而由 xPC[0~3]作鍵盤讀取 6根據VHDL與數位邏輯設計的章節其中 第 1章至 10章的實驗採用模式1而 第 11章實驗採用模式2而 第 12章之後的實驗都採用模式3

85

FPGA UCF 定義

eM_3S1K 模組

NET CLK LOC = B12

NET XAlt0gt LOC = N2

NET XAlt1gt LOC = T1

NET XAlt2gt LOC = T2

NET XAlt3gt LOC = U2

NET XBlt0gt LOC = M3

NET XBlt1gt LOC = M4

NET XBlt2gt LOC = W3

NET XBlt3gt LOC = W4

NET XBlt4gt LOC = Y3

NET XBlt5gt LOC = Y4

NET XBlt6gt LOC = W6

NET XBlt7gt LOC = Y6

NET XClt0gt LOC = V1

NET XClt1gt LOC = V2

NET XClt2gt LOC = W1

NET XClt3gt LOC = W2

NET YAlt0gt LOC = W10

JP4 接頭

NET YAlt1gt LOC = Y10

NET YAlt2gt LOC = W9

NET YAlt3gt LOC = W8

NET YBlt0gt LOC = U3

NET YBlt1gt LOC = T4

NET YBlt2gt LOC = N3

NET YBlt3gt LOC = N4

NET YBlt4gt LOC = T5

NET YBlt5gt LOC = U4

NET YBlt6gt LOC = V3

NET YBlt7gt LOC = V4

NET YClt0gt LOC = Y11

NET YClt1gt LOC = W11

NET YClt2gt LOC = W5

NET YClt3gt LOC = Y5

在光碟片中 RFFPGAVHDLDEMOBIT3S1K 裡有 VHDL 與數位邏輯設計書本範例原始檔與合成檔

86

eM_3S50 模組

NET CLK LOC = P124

NET XAlt0gt LOC = P59

NET XAlt1gt LOC = P60

NET XAlt2gt LOC = P63

NET XAlt3gt LOC = P68

NET XBlt0gt LOC = P135

NET XBlt1gt LOC = P132

NET XBlt2gt LOC = P116

NET XBlt3gt LOC = P113

NET XBlt4gt LOC = P112

NET XBlt5gt LOC = P96

NET XBlt6gt LOC = P100

NET XBlt7gt LOC = P99

NET XClt0gt LOC = P69

NET XClt1gt LOC = P70

NET XClt2gt LOC = P73

NET XClt3gt LOC = P74

NET YAlt0gt LOC = P105

JP4 接頭

NET YAlt1gt LOC = P104

NET YAlt2gt LOC = P103

NET YAlt3gt LOC = P102

NET YBlt0gt LOC = P127

NET YBlt1gt LOC = P129

NET YBlt2gt LOC = P131

NET YBlt3gt LOC = P130

NET YBlt4gt LOC = P128

NET YBlt5gt LOC = P125

NET YBlt6gt LOC = P119

NET YBlt7gt LOC = P118

NET YClt0gt LOC = P107

NET YClt1gt LOC = P108

NET YClt2gt LOC = P98

NET YClt3gt LOC = P97

在光碟片中 RFFPGAVHDLDEMOBIT3S200 裡有VHDL與數位邏輯設計書本範例原始檔與合成檔

87

eM_95XL 模組

NET CLK LOC = SPIN38

NET XAlt0gt LOC = SPIN53

NET XAlt1gt LOC = SPIN54

NET XAlt2gt LOC = SPIN56

NET XAlt3gt LOC = SPIN57

NET XBlt0gt LOC = SPIN85

NET XBlt1gt LOC = SPIN86

NET XBlt2gt LOC = SPIN97

NET XBlt3gt LOC = SPIN98

NET XBlt4gt LOC = SPIN100

NET XBlt5gt LOC = SPIN101

NET XBlt6gt LOC = SPIN105

NET XBlt7gt LOC = SPIN104

NET XClt0gt LOC = SPIN58

NET XClt1gt LOC = SPIN59

NET XClt2gt LOC = SPIN60

NET XClt3gt LOC = SPIN61

NET YAlt0gt LOC = SPIN111

JP4 接頭

NET YAlt1gt LOC = SPIN110

NET YAlt2gt LOC = SPIN107

NET YAlt3gt LOC = SPIN106

NET YBlt0gt LOC = SPIN93

NET YBlt1gt LOC = SPIN91

NET YBlt2gt LOC = SPIN87

NET YBlt3gt LOC = SPIN88

NET YBlt4gt LOC = SPIN92

NET YBlt5gt LOC = SPIN94

NET YBlt6gt LOC = SPIN95

NET YBlt7gt LOC = SPIN96

NET YClt0gt LOC = SPIN112

NET YClt1gt LOC = SPIN113

NET YClt2gt LOC = SPIN103

NET YClt3gt LOC = SPIN102

在光碟片中 RFFPGAVHDLDEMOSVF95288XL 裡有VHDL與數位邏輯設計書本範例原始檔與合成

檔案

88

eM_FPGA 模組

NET CLK LOC = E12

NET XAlt0gt LOC = AA3

NET XAlt1gt LOC = Y4

NET XAlt2gt LOC = AA4

NET XAlt3gt LOC = AB4

NET XBlt0gt LOC = M1

NET XBlt1gt LOC = M2

NET XBlt2gt LOC = W13

NET XBlt3gt LOC = Y13

NET XBlt4gt LOC = AA13

NET XBlt5gt LOC = AB13

NET XBlt6gt LOC = Y18

NET XBlt7gt LOC = W18

NET XClt0gt LOC = W5

NET XClt1gt LOC = Y5

NET XClt2gt LOC = AA5

NET XClt3gt LOC = AB5

NET YAlt0gt LOC = Y17

JP4 接頭

NET YAlt1gt LOC = W17

NET YAlt2gt LOC = AB18

NET YAlt3gt LOC = AA18

NET YBlt0gt LOC = N1

NET YBlt1gt LOC = M5

NET YBlt2gt LOC = M3

NET YBlt3gt LOC = M4

NET YBlt4gt LOC = M6

NET YBlt5gt LOC = N2

NET YBlt6gt LOC = U13

NET YBlt7gt LOC = V13

NET YClt0gt LOC = AA17

NET YClt1gt LOC = AB17

NET YClt2gt LOC = V12

NET YClt3gt LOC = U12

在光碟片中 RFFPGAVHDLDEMOBIT2V250 裡有VHDL與數位邏輯設計書本範例原始檔與合成檔

89

Page 57: RFFPGA 直流馬達實驗手冊juniortek.com.tw/program/manual/RF-DC-mal.pdf · em_demo模組 em_dcm 直流伺服馬達 dc電源 rffpga 系統的直流馬達實驗規劃 其中包括:

th 指向 kTh 的位址 bias指向 kBias的位址

模組程式範例SIN_WAVEasm

local amp R0 IP kAmp 輸入點sin波的振幅 local frq R1 IP kFrq 輸入點sin波的頻率 local th R2 IP kTh 輸入點sin波的相角 local bias R3 IP kBias 輸入點sin波的中心偏移 local out R4 OP 輸出點sin波輸出 local tab R5 TP 表格指標指向 sin[256]的表格 local ang R6 內部變數相位角65536=360deg local kAmp R7 1000 參數振幅值 local kFrq R8 1000 參數頻率值=655368000Hz local kTh R9 0 參數相角值360deg=256 local kBias R10 0 參數偏移值 data 11 模組變數區長度及初值 initial 啟動程序 WR ang0 WR out0 ang=out=0 RET timer 即時控制程序(8KHz) RD ang ADD (frq) WR ang ang+=frq SFR 8 ADD (th) AND 255 ACC=sin(ang256+th) ADD tab WRH RDM table-look-up MUL (amp) SFR 12 ADD (bias) WR out out=ACCamp4096+bias RET table tab 256 sin[256]表格區10=4096 0 101 201 301 401 501 601 700 00~070deg 799 897 995 1092 1189 1285 1380 1474 08~0F 1567 1660 1751 1842 1931 2019 2106 2191 10~17 2276 2359 2440 2520 2598 2675 2751 2824 18~1F 2896 2967 3035 3102 3166 3229 3290 3349 20~27 3406 3461 3513 3564 3612 3659 3703 3745 28~2F 3784 3822 3857 3889 3920 3948 3973 3996 30~37 4017 4036 4052 4065 4076 4085 4091 4095 38~3F 4096 4095 4091 4085 4076 4065 4052 4036 40~4790deg 4017 3996 3973 3948 3920 3889 3857 3822 48~4F 3784 3745 3703 3659 3612 3564 3513 3461 50~57 3406 3349 3290 3229 3166 3102 3035 2967 58~5F

57

2896 2824 2751 2675 2598 2520 2440 2359 60~67 2276 2191 2106 2019 1931 1842 1751 1660 68~6F 1567 1474 1380 1285 1189 1092 995 897 70~77 799 700 601 501 401 301 201 101 78~7F 0 65435 65335 65235 65135 65035 64935 64836 80~87180deg 64737 64639 64541 64444 64347 64251 64156 64062 88~8F 63969 63876 63785 63694 63605 63517 63430 63345 90~97 63260 63177 63096 63016 62938 62861 62785 62712 98~9F 62640 62569 62501 62434 62370 62307 62246 62187 A0~A7 62130 62075 62023 61972 61924 61877 61833 61791 A8~A8 61752 61714 61679 61647 61616 61588 61563 61540 B0~B7 61519 61500 61484 61471 61460 61451 61445 61441 B8~BF 61440 61441 61445 61451 61460 61471 61484 61500 C0~C7270deg 61519 61540 61563 61588 61616 61647 61679 61714 C8~CF 61752 61791 61833 61877 61924 61972 62023 62075 D0~D7 62130 62187 62246 62307 62370 62434 62501 62569 D8~DF 62640 62712 62785 62861 62938 63016 63096 63177 E0~E7 63260 63345 63430 63517 63605 63694 63785 63876 E8~EF 63969 64062 64156 64251 64347 64444 64541 64639 F0~F7 64737 64836 64935 65035 65135 65235 65335 65435 F8~FF

就程式結構而言說明如下

timer 即時控制程序(8KHz) RD ang ADD (frq) WR ang ang+=frq SFR 8 ADD (th) AND 255 ACC=sin(ang256+th) ADD tab WRH RDM table-look-up MUL (amp) SFR 12 ADD (bias) WR out out=ACCamp4096+bias RET

1基本上我們以查表法計算 sin()其輸入θ的範圍為 0~255對映到 0~360deg其輸出 sin(θ)的範圍為+-4096對映到+-10的範圍

2建立一個內部變數 ang其範圍為 0~65535對映到 0~360的相位角 3每個timer程序都執行 ang+=frq的動作更新目前的相位角接著依照 ang的相位角查表得到 sin(ang256+th)值

4由於表格長度為 256-word所以必須將 ang256才能得到正確的對映關係而 th範圍為 0~255所以不需要像 ang一般的做額外處理

5sin()的範圍為(+1-1)而在表格中以(+4096~-4096)的型式記錄相當於 10=4096所以執行 Asin()時還要用 SFR12指令做4096的動作才能正確的取得輸出值

58

6就頻率輸入 frq而言其計算原則是將θ=ωt轉化成θ=Σ(ωdt)因為抽樣頻率

為 8KHz所以 dt=18000而得到 frq=655368000Hz公式其中 Hz為真正的頻率在 8KHz的抽樣頻率下其範圍為 0~4000

鋸齒波產生器

此模組會產生週期性的鋸齒波方塊圖如下

outfrq

kBiasbias

ampkAmp

kFrqth

kThf=1TB

θ

A

其中

1鋸齒波也有四個參數振幅(A)頻率(F)相位(θ)和偏移(B)和正弦波的定義完全一致唯一的差異是其輸出為鋸齒波而非正弦波

2基本波形是從週期開始時為 0一直遞增到週期結束時到達最高點然後立刻回歸

到 0重新開始 3以程式結構而論鋸齒波程式幾乎就是正弦波的相位計算部分只差沒有正弦波的

查表處理而已

模組程式範例SAW_WAVEasm

local amp R0 IP kAmp 輸入點sin波的振幅 local frq R1 IP kFrq 輸入點sin波的頻率 local th R2 IP kTh 輸入點sin波的相角 local bias R3 IP kBias 輸入點sin波的中心偏移 local out R4 OP 輸出點sin波輸出 local ang R5 內部變數相位角65536=360deg local kAmp R6 1000 參數振幅值 local kFrq R7 1000 參數頻率值=655368000Hz local kTh R8 0 參數相角值360deg=256 local kBias R9 0 參數偏移值 data 11 模組變數區長度及初值 initial 啟動程序 WR ang0 WR out0 ang=out=0 RET timer 即時控制程序(8KHz) RD ang ADD (frq) WR ang ang+=frq SFR 8 ADD (th) AND 255 ACC=(ang256+th)amp0x00ff MUL (amp) SFR 8 ADD (bias) WR out out=ACCamp256+bias

59

RET

脈衝波產生器

outfrq

kBiasbias

ampkAmp

kFrqth

kThf=1TB

θ

A

pwm

kDutyduty

此模組會產生週期性的脈衝波方塊圖如下

其中

1脈衝波有五個參數其中振幅(A)頻率(F)相位(θ)和偏移(B)四個參數和正弦波

定義完全一樣另外再增加一個負載率(D) 2基本波形是從週期開始時為 1隔段時間後換為 0然後持續到週期結束再重新開始其中 1所佔有的比例就是負載率當 D=0時為 0而 D=255時為 100

3和其他參數類似負載率(D)以 duty為其輸入點而以 kDuty為其參數值

模組程式範例PLS_WAVEasm

local amp R0 IP kAmp 輸入點脈衝波的振幅 local frq R1 IP kFrq 輸入點脈衝波的頻率 local th R2 IP kTh 輸入點脈衝波的相角 local bias R3 IP kBias 輸入點脈衝波的中心偏移 local duty R4 IP kDuty 輸入點脈衝波的負載率 local out R5 OP 輸出點脈衝波輸出 local ang R6 內部變數相位角65536=360deg local kAmp R7 1000 參數振幅值 local kFrq R8 1000 參數頻率值=655368000Hz local kTh R9 0 參數相角值360deg=256 local kBias R10 0 參數偏移值 local kDuty R11 128 參數負載率100 =256 data 12 模組變數區長度及初值 initial 啟動程序 WR ang0 WR out0 ang=out=0 RET timer 即時控制程序(8KHz)

60

RD ang ADD (frq) WR ang ang+=frq SFR 8 ADD (th) AND 255 ACC=(ang256+th)amp0x00ff SUB (duty) RD (amp) JLT t1 RD 0 ACC=(amp0) t1 ADD (bias) WR out out=ACC+bias RET

IIR 一階濾波器

此模組執行一階的 IIR濾波器方塊圖如下

kau x

Z-1

+

+

-

+低通濾波器

高通濾波器dx lp

hp

濾波器參數的計算公式如下

1假設濾波器的頻寬為 hz則 ωn=hz628 2若系統頻率為 8KHz則抽樣週期 dT為 dT=dt8000 其中 dt為模組參數 3則濾波器參數為 ka=ωndT4096或是 =hzdt62880004096即 =hzdt32 4當 dt決定後所允許的訊號頻寬為(4000dt)換句話說訊號頻寬會因為 dt增加而下降

為了方便實驗的運用下面列出常用的參數對照表

濾波頻寬

(Hz)

10 20 50 100 200 500 1000 2000

訊號頻寬

(Hz)

400 800 2000 4000 4000 4000 4000 4000

模組參數 dt 10 5 2 1 1 1 1 1

模組參數 ka 320 320 320 320 640 1600 3200 6400

表格的運用方式如下

1首先決定濾波頻寬 2接著查表找出對映的參數 dt和 ka 3再查表得到對映的訊號頻寬以決定是否需要串接前級濾波器

61

模組程式範例IIR1_FILTERasm

local u R0 IP 輸入點濾波器輸入 local lp R1 OP 輸出點低通濾波器輸出 local hp R2 OP 輸出點高通濾波器輸出 local dt R3 1 參數抽樣週期 local ka R4 4096 參數增益 ka10=4096 local prd R5 內部變數抽樣週期用 data 6 模組變數區長度 initial 開機啟動程序 WR lp0 WR hp0 WR prd1 RET lp=hp=0prd=1 timer 即時控制程序 SUB prd1 JNZ b9 if (--prdgt0) return RD dt WR prd prd=dt RD (u) SUB lp WR hp hp=u-lp MUL ka SFR 12 ADD lp WR lp lp+=(hpka4096) b9 RET

資料蒐集模組

資料蒐集模組是一個非常特殊的模組專門配合 eTTY 程式中的示波器使用

模組程式範例DAS4asm

local cmd R0 0 紀錄命令0=停止1=前置記錄2=正觸發4=負觸發6=觸發記錄 local dt R1 1 抽樣週期每 dT抽樣一次 local tab R2 TP DAS表格啟始位址 local cnt R3 0 目前記錄點(0~255) local ch1 R4 0 定義頻道1的變數位址 local ch2 R5 0 定義頻道2的變數位址 local ch3 R6 0 定義頻道3的變數位址 local ch4 R7 0 定義頻道4的變數位址 local trg R8 0 定義觸發頻道的變數位址 local th R9 0 觸發準位 local tail R10 0 觸發後的抽樣個數 local buf R11 1 抽樣計數(1~dt) local pnt R12 表格位址計算pnt=tab+cnt4 local len R13 表格長度計算(0~256) data 14 定義模組變數區的長度 table tab 1024 定義表格的長度 initial 啟動程序 WR cmd0 RET cmd=0 timer 控制程序

62

ADD cmd0 JZ t9 if (cmd==0) return SUB buf1 JNZ t9 if (--buf)gt0) return RD dt WR buf dt=buf RD cnt ADD 1 AND 0xff WR cnt cnt=(cnt+1)amp0xff SFL 2 ADD tab WR pnt pnt=tab+cnt4 RD (ch1) WR (pnt) ADD pnt1 pnt++=ch1 RD (ch2) WR (pnt) ADD pnt1 pnt++=ch2 RD (ch3) WR (pnt) ADD pnt1 pnt++=ch3 RD (ch4) WR (pnt) pnt =ch4 RD cmd SUB 1 JZ t9 SUB 1 JZ t2 SUB 1 JZ t3 SUB 1 JZ t4 SUB 1 JZ t5 SUB 1 JZ t6 JR t7 t2 RD (trg) SUB th JGE t9 ADD cmd1 JR t9 wait trgltth t3 RD (trg) SUB th JLE t9 JR t6 wait trggtth t4 RD (trg) SUB th JLE t9 ADD cmd1 JR t9 wait trggtth t5 RD (trg) SUB th JGE t9 JR t6 wait trgltth t6 WR len0 WR cmd7 len=0cmd=7 t7 ADD len1 SUB tail JLT t9 WR cmd0 if ((++len)gt=0x80) cmd=0 t9 RET

與 DC 馬達控制相關的程式模組有以下 4個程式模組說明如下

(1)加減速控制模組 ACC_controlasm (2)光電盤輸入模組 POS_inputasm (3)PWM輸出模組 PWM_outputasm (4)PD控制模組 PD_controlasm

71加減速控制模組 此程式模組主要功能在於執行位置控制的加減速命令修正其數學模式採用 Lynn

濾波器的架構參見下圖

cmd

2

+

old Z -1

-

Z -1

Z -1

Z-1

Z-1x0 x1 x8 x9 x16

+ -

++

2

Z-1

Z-1 y1 y2

+

-

y0

+ +

sumZ-1

+164

12

out

dif

+

63

加減速控制模組方塊圖

其中

1Lynn 濾波器的階數固定成八階也就是 m=8其公式為 H(z) = (1-2Z-m+Z-2m)(1-2Z-1+Z-2)m2

2因為m=8所以m2=64因此最後計算低通濾波的部份時要先做除 64的運算 3因為低通濾波(lp)和 y0之間有 64倍的差異代表 y0y1y2的變化範圍比濾波器輸

入值要擴大許多例如輸入值在+-1000變化時y0y1y2很可能會在+-64000之間變化這範圍已經超出整數處理的範圍很可能會造成錯誤的計算結果

4所以在實驗時輸入值的變化範圍必須控制在+-500之間以保證計算的正確性 5對於 Lynn 濾波器當 m=8時其濾波器的頻寬固定為 1 kHzmdt也就是 dt=1時頻寬為 125 Hz dt=2時頻寬為 625Hz依此類推 6對於 Lynn 濾波器其濾波器的延遲固定為 m個抽樣週期因此設計 hp = x8 - lp 即可得到高通濾波器的對應結果 7其中乘 2和除 64的運算以移位運算取代所以整個程式中並無任何乘法運算 8Lynn 濾波器本身並不是穩定濾波器所以在程式啟動時必須確實的將所有狀態

(x0~x16)歸零否則會產生不穩定的狀態輸出

因為 Lynn濾波器中所有參數固定所以除了抽樣週期 dt 之外並無任何可調參數

抽樣週期 dt 可以控制頻寬dt 越大則濾波器頻寬越低

將步階命令值的輸出送入 Lynn 濾波器中經由低通濾波器的效應可以減緩命

令的變化程度達到加減速控制的目的以下為使用 Lynn 濾波器型式實現加減速控

制的組合語言程式列印 如欲更進一步瞭解 Lynn 濾波器與 FIR 數位濾波器之間的關係可以參考通訊實驗

四數位濾波器設計(FIR)中之說明

ACC_controlasm程式列印 local cmd R0 IP 輸入點位置命令

local out R1 OP 輸出點加減速處理後的位置命令

local dif R2 OP 輸出點位置微分命令

local axis R3 0 馬達編號0=X1=Y2=Z3=C

local old R4 內部變數微分計算用

local sumL R5 內部變數積分計算用

local sumH R6 內部變數積分計算用

local y0 R7 內部變數y(0~2)

local y1 R8 local y2 R9

local x0 R10 內部變數x(0~16)

local x1 R11 local x2 R12 local x3 R13 local x4 R14

local x5 R15 local x6 R16 local x7 R17 local x8 R18

local x9 R19 local x10 R20 local x11 R21 local x12 R22

local x13 R23 local x14 R24 local x15 R25 local x16 R26

64

data 27 模組變數區長度

initial 開機啟動程序

WR dif0 RD (cmd) WR out WR old dif=0 out=old=cmd

sumHL=cmd64

SFL 6 WR sumL RD out SFR 10 SGN 5 WR sumH

RPT 17 WR x00 RPT 3 WR y00 RET x[0~16]=0y[0~2]=0

timer 即時控制程序

RD (cmd) SUBX old WR x0 x0=cmd-old old=cmd

SUB x81 ADD x16 ADD y11 SUB y2 WR y0 y0=x0-2x8+x16+2y1-y2

SGN ADD sumL WR sumL RDH ADC sumH WR sumH sumHL+=y0

WRH RD sumL SFR 6 WR out out=sumHL64

RD y0 SGN SFR WR dif dif=y032mm

RD x0 RPT 16 RDX x1 x[i]=x[i-1] i=1~16

RD y0 RDX y1 WR y2 y[i]=y[i-1] i=1~2

b9 RET

72光電盤輸入模組

DC馬達的位置由光電盤量測之預設儲存於 0xac與 0xbe二個輸入埠位址中其中位址 0xac記錄 X軸馬達的位置位址 0xbe記錄 Y軸馬達的位置由於本實驗的DC馬達接在 Y軸的位置上因此程式中直接選用 Y軸的輸入 光電盤位置輸入的程式列印如下其中速度由位置的差分而得至於馬達的位置

則使用內部 2個 word加以記錄精度為 32位元 POS_inputasm程式列印 local spd R0 OP 輸出點速度量測值

local ang R1 OP 輸出點角度量測值

local angH R2 內部變數角度的 32 位元部分

local mode R3 0x308 模式選擇15MHzAB 相正反向輸入

local pht R4 0xac 輸入阜地址光電盤輸入(0xac)

local phtc R5 0xbe 輸入阜地址光電盤模式(0xbe)

local old R6 內部變數速度更新用

data 7 模組變數區長度

initial 開機啟動程序

RD mode WR (phtc) phtc=mode

RD (pht) WR old WR spd0 RET old=phtspd=0

timer 即時控制程序

RD (pht) SUBX old SGN 11 WR spd spd=(pht-old)old=pht

65

ADD ang WR ang angHL+=spd

RDH ADC angH WR angH

RET

73 PWM輸出控制模組 模組方塊

cmd PWM輸出

程式說明 1在開機時將切換保護時間寫到輸出阜 0xbc上其中切換保護值為 0~6360=5us 2在每次 timer interrupt時將 cmd訊號處理後寫到輸出阜 0xb8上

PWM_outputasm程式列印 local cmd R0 IP gnd 輸入點v相命令

local gain R1 4096 參數輸出增益1=4096

local bias R2 2048 參數輸出偏壓0=2048

local limit R3 4095 參數輸出極限1=4095

local zone R4 0x88f0 參數頻率=12KHz切換保護=5us

local pwm R5 0xb8 輸出阜地址PWM0 輸出(0xb8)

local mode R6 0xbc 輸出阜地址PWM 模式(0xbc)

local p0md R7 0xf8 輸出阜地址port0 模式(0xf8)

local gnd R8 0 輸入接地點

data 9 模組變數區長度

initial 開機啟動程序

RD bias WR (pwm) pwm=bias

RD 0xffff WR (p0md) set port0 mode

RD zone WR (mode) RET mode=zone

stop 關機保護程序

RD bias WR (pwm) RET pwm=bias

timer 即時控制程序

RD (mode) xor 1 and 1 WR (mode) trigger watch-dog

RD (cmd) MUL gain SFR 12 ADD bias ACC=(cmdgain4096)+bias

MAX 0 MIN limit WR (pwm) pwm=limit(ACC)

RET

66

74 PD 控制模組

PD控制的模組方塊參見圖二十一所示其中比例控制的部份直接由增益 kp加以調整微分控制的部份則由誤差的差分經增益 kd的調整而得

Σ+

-

cmd

fdk

err out

Σ

pk

dk

Σ

+

+

+

-

old1minusZ

PD控制器的方塊圖

PD_controlasm程式列印 local cmd R0 IP gnd 輸入點位置命令(可忽略)

local fdk R1 IP gnd 輸入點位置回授(可忽略)

local out R2 OP 輸出點用以控制速度迴路

local kp R3 256 參數增益 kp10=256

local kd R4 0 參數增益 kd10=256

local err R5 0 內部變數

local old R6 0 內部變數

local gnd R7 0 無輸入時的短路點

data 8 模組變數區長度

initial 開機啟動程序

WR out0 WR old0 RET out=old=0

timer 即時控制程序

RD (cmd) SUB (fdk) PRTF WR err

MUL kp SFR 8 P=(cmd-fdk)kp256

RDS err SUBX old MUL kd SFR 8 D=(err-old)kd256

ADDS

WR out out=P+D

RET

程式中預設增益值的 10以整數值 256為基底因此使用 SFR 8的指令加以調

整另外在在計算微分項的程式部份用到 SUBX old的指令其詳細的暫存器動作如

下 參考 piDSP的指令說明SUBX指令將總共用到 3個時序參考錯誤 找不到參照

67

來源在時序 1時將原先 AX的資料拷貝一份到 HX中時序 2時正式執行減

法的動作所以 AX暫存器中的內容會變成 err-old時序 3時DSP會將存放在 HX暫存器中的內容拷貝一份到 old的記憶體中也就是經由 SUBX此一精簡指令將

同時完成計算差分所需要的相減與資料疊代的動作有效的利用 piDSP控制器 DSP核心的精簡指令將可以大幅提昇系統的計算速度

HX AXoldSUBXerr err

old

err

errerr olderr minus

1_err

errerr olderr minus err

1_err

1

2

3

SUBX的指令時序與暫存器變化

68

8附錄快速安裝說明

光纖網路通訊 FPGA 發展系統 (適用於 WIN-XP200098 系統)

快速安裝說明

26Pin 負載輸出入埠

雙電源︵5

12

伏︶輸入埠

單電源︵5

伏︶輸入埠

USB

光纖線輸

號 光纖線輸出埠

入 傳 埠

首先將光碟片 RFFPGA 目錄檔案拷貝在您工作硬碟裡面

第一次安裝時先將 USB 傳輸線接上電腦主機將電源供應器接上 FPGA 模組此時電

腦會出現安裝 USB-Serial 驅動程式選擇從清單安裝此驅動程式放置在光碟片

RFFPGA-USBdrive 選擇您目前安裝系統

可選擇 WIN-98WIN-MEWIN-2000WIN-XP 系統配合您現在工作電腦作業系統

69

注意一般電腦 USB 埠很多插口當您安裝驅動程式時是配合您當時插入之埠

下次如您插入不同接口埠時電腦會再次要求安裝驅動程式這是正常現象請再次安

裝驅動程式否則無法使用

FPLC 操作

首先進入 RFFPGA裡子目錄 testASM直接點選 fPLCexe 出現下面操作畫面(也可直接將

此檔案放置桌面直接點選)

(或者選擇 File 再執行 Setuphellip 選擇您要執行 CAI 檔)

70

進入下面操作畫面 首先使用滑鼠在 FPGA下載按鈕單擊動作使 FPGA變成 DSP晶片 實驗一至實驗五皆為使用 DSP組合語言設計程式其原始程式分別為 testASM1至testASM5可使用 texPad 開啟與編輯程式內容 實驗三與實驗五多有 IO控制動作 當選擇實驗三時出現下面畫面

71

eM_USB 模組

數字型 LED

0 1 2 34 5 6 78 9 A BC D E F

燈號型 LED

44 鍵盤

ADC0 ADC1 DAC0 DAC1

LED 選擇KEY 選擇

模 式 1

0123

注意操作畫面 3與 4 說明開關與按鍵選擇位置後選擇程式下載再按程式啟動如您

按下 0-3按鍵時燈號型 LED會有不同方向閃爍顯示程式停止時結束所有 IO控制動作再按回首頁選擇其他實驗 實驗四與實驗五

模式3

0 1 2 34 5 6 78 9 A BC D E F

按照上面開關選擇直接操作如果以上實驗皆能按照正常操作表示您光纖網路通訊

FPGA發展模組以能正常使用 注意 開機與關機動作順序如下

開機電腦啟動 --- eM_USB 模組電源接上 --- USB 接上電腦 ---

啟動 FPLC 軟體 --- 下載 FPGA 程式

關機關閉 FPLC 軟體 --- eM_USB 模組電源拔掉 --- 拔掉電腦 USB 接頭 ---關掉

電腦

如果以上順序有亂可能造成 USB 找不到驅動造成無法下載經過幾次測試還是

無法下載建議重新啟動電腦主機按照正確步驟操作

72

FPGA 下載操作

進入 FPLC 操作系統按照下列步驟選擇節點模組與下載 bit FPGA 檔案

在 VHDLDEMO 子目錄下您可以選擇您目前 FPGA 種類型號在此型號下我們已將 VHDL

與數位邏輯設計課本範例全部放於此處

73

光纖網路連線 FPGA 下載操作

首先利用光纖線將 eM_USB0 模組光纖輸出埠接至 eM_USB1 模組光纖輸入埠以此

類推最後再將最後 eM_USBN 模組光纖輸出埠接至 eM_USB0 模組光纖輸入埠配置

如附圖方式

個人電腦(Windows) eM_USB模組

0USB

eM_USB模組1

光纖網路

eM_USB模組2

eM_USB模組N

配置完成後進入 FPLC 系統首先必須先將 Node00 下載在 testASM 子目錄裡

piDSPv0bit 檔讓 eM_USB0 模組 FPGA 具備 DSP 功能才能執行光纖網路通訊

操作如下

此時您就可以選擇分別下載至各模組 FPGA 檔 bit

74

安裝 FPLC 注意事項

當您進入 FPLC 時

按 FILE 選擇 programhellip 選擇檔案為 exp_dcmplc 出現下面畫面

正常顯示畫面為

75

DOS 環境操作

在 PC 端的操作是在 Windows 環境中的 DOS 視窗中執行指令範例如下

eFPGA progNETbit 下載 FPGA電路至網路節點0(即 USB節點)中 eFPGA testLEDbit 1 下載 FPGA電路至網路節點1中

對於單一節點的控制程序如下

1將 eM_USB模組連結個人電腦的 USB端 2eM_USB模組開機 3執行下載指令即可 eFPGA xxxxbit 4若要更改 FPGA電路只要重新執行下載指令即可

對於多個網路節點的控制程序如下

1第一組 eM_USB模組連結個人電腦的 USB端再以光纖網路依序其他各節點 2連接 USB界面者為模組0從光纖發射端連接出去的模組為1依此類推 3將所有 eM_USB模組開機 4執行下載指令如下 eFPGA progNETbit 模組0必須先下載指定的 FPGA電路 eFPGA xxxxbit 1 再依序下載其他網路模組的 FPGA電路 eFPGA yyyybit 2 eFPGA zzzzbit 最後再重新下載模組0的 FPGA電路 5換句話說模組0必須先執行 progNETbit讓光纖網路接受 FPGA控制後才能透過光纖網路下載至其他節點等全部網路節點下載完畢後再將模組0的 FPGA重新下載讓模組0也可自由執行任意的 FPGA電路

6若要更改某一個網路節點中的 FPGA電路只要重新執行下述指令 eFPGA progNETbit 模組0必須先下載指定的 FPGA電路 eFPGA yyyybit 2 下載指定網路模組的 FPGA電路 eFPGA zzzz bit 最後再重新下載模組0的 FPGA電路 換句話說除非模組0中的 FPGA已經包括光纖網路管理電路否則一定要先在

模組0中下載網路管理電路後才能下載指定網路節點的 FPGA電路

76

光纖網路通訊 FPGA 發展系統

系統配置

光纖網路通訊 FPGA 發展系統的系統配置圖如下

個人電腦(Windows) eM_USB模組

0USB

eM_USB模組1

光纖網路

eM_USB模組2

eM_USB模組N

其中

1基本模組為 eM_USB模組可用 USB界面和個人電腦連線並提供 USB對光纖網路的轉換功能使得個人電腦可以獨立控制光纖網路中的每個網路節點

2eM_USB模組也可以作為光纖網路中的網路節點透過光纖網路而接受個人電腦的

監控 3就個人電腦而言不論是 USB界面直接連結或是以光纖網路間接連結的 eM_USB模組都是可以直接監控的網路節點最多可以同時控制一個 USB節點和 30個網路節點

4對於每一個網路節點個人電腦都可執行 eM_USB模組中 FPGA的電路下載工作並在適當的 FPGA電路配合下可執行 eM_USB模組中 FPGA內部電路的讀寫控制 5透過適當的 FPGA電路設計各網路節點都可透過光纖網路和其他任何網路節點

作同步通訊執行 FPGA內部記憶體的資料交換資料交換頻率可達 1KHz以上

77

網路模組配置

每個網路模組的標準配置圖如下

eM_USB模組光纖網路

USB eM_FPGA卡

eM_DEMO模組

eM_EXP實驗模組

DC電源

其中

1網路模組以 eM_USB模組為主提供基本的 USB界面和光纖網路連線 2eM_USB模組中的 FPGACPLD採用插卡型式可選擇不同的 eM_FPGA卡包括

eM_2V1K卡可選用 Virtex系列的 XC2V250和 XC2V1000 eM_3S1K卡可選用 Spartan3系列的 XC3S400XC3S1000和 XC3S1500 eM_3S50卡可選用 Spartan3系列的 XC3S50XC3S200和 XC3S400 eM_95XL卡可選用 9500XL系列的 XC95144XL和 XC95288XL 3eM_USB模組中的對外連線有兩種一種是 26P接頭用以連接既有的各種實驗模

組另一種是兩組 50P接頭將 FPGA中各接腳引出用以連接專題實驗 4eM_DEMO模組就是插上 50P接頭的教學模組其中包括 LED 數字顯示和 44鍵盤也具備兩組的 ADC和兩組的 DAC接頭提供類比訊號的測試工具

常用的實驗組合包括

1精簡組合包括(eM_USB+eM_FPGA)提供基本的網路節點適用於專題實驗 2標準組合包括(eM_USB+eM_FPGA+eM_DEMO)提供基礎 FPGA設計的教學實驗

3實驗組合包括(eM_USB+eM_FPGA+eM_DEMO+eM_EXP)提供進階的 FPGA實驗可依需求選用不同的實驗模組

78

eM_USB 模組

eM_USB 模組的電路配置圖如下

TxRx

DCPower

USB

JP2

JP3

光纖界面

外加電源

PC連線

JP1

eM_FPGA模組

FT232 CPLD FlashROM

SRAM

10cm

6cm

JP4

其中

1對外的連線接頭包括 DC電源 可選擇單電源(5V)或是多電源(5V+12V-12V)兩種 USB界面 直接連接個人電腦 光纖界面連接光纖網路 2實驗界面包括 JP1負責內部 CPLD的電路下載 JP2JP3兩組 50P的擴張用接頭 JP4 標準 26P接頭用以連接各種實驗模組 3內部的電路配置包括 A以 SO-DIMM接頭連接各種 eM_FPGA卡 B內附 EEPROMFlashROM和 SRAM提供 FPGA作應用測試 C以一顆 FT232BM作為 USB界面解碼而以一顆 CPLD作為光纖網路解碼 D提供各種 eM_FPGA卡的電路下載功能 4內附五顆 LED由上而下依序為 usbLED指示 USB界面的讀寫狀態 tstLED可由 FPGA電路自行定義 stsLED可由 FPGA電路自行定義 RxLED 可由 FPGA電路自行定義 TxLED 可由 FPGA電路自行定義

79

外部接腳定義

外部接頭的接點順序圖示如下

上視圖

JP11 9 JP4

126225

JP31

50249

JP21

50249

而各接頭的接點定義如下

JP1 JP4 JP2 JP3 1+33V 1+12V 2+12V 1 GND 2 GND 1 GND 2 GND 2GND 3 ADC 4 DAC 3POWER 4ALARM 3 +5V 4 +5V 3nc 5 yPB2 6 yPB3 5RxNET 6TxNET 5+12V 6+12V 4TCK 7 yPB1 6 yPB4 7RxUSB 6TxUSB 7-12V 6-12V 5nc 9 yPB0 10yPB5 9RxCAN 10TxCAN 9 ADC 10 DAC 6TDO 11yPB6 12yPB7 11P0D0 12P0D1 11P1D0 12P1D1 7TDI 13yGND 14yPC3 13P0D2 14P0D3 13P1D2 14P1D3 8nc 15yPC2 16yPC1 15P0D4 16P0D5 15P1D4 16P1D5 9TMS 17yPC0 18yPA0 17P0D6 18P0D7 17P1D6 18P1D7 19yPA1 20yPA2 19P0D8 20P0D9 19P1D8 20P1D9 21yPA3 22GND 21P0D10 22P0D11 21P1D10 22P1D11 23GND 24+5V 23P0D12 24P0D13 23P1D12 24P1D13 25+5V 26nc 25P0D14 26P0D15 25P1D14 26P1D15 27P2D0 28P2D1 27PxA0 28PxA1 29P2D2 30P2D3 29PxA2 30PxA3 31P2D4 32P2D5 31PxA4 32PxA5 33P2D6 34P2D7 33PxA6 34PxA7 35P2D8 36P2D9 35PxB0 36PxB1 37P2D10 38P2D11 37PxB2 38PxB3 39P2D12 40P2D13 39PxB4 40PxB5 41P2D14 42P2D15 41PxB6 42PxB7 43ADC0 44ADC1 43PxC0 44PxC1 45ADC2 46ADC3 45PxC2 46PxC3 47ADC4 48ADC5 47PxC4 48PxC5 49DAC0 50DAC1 49PxC6 50PxC7

80

eM_FPGA 模組

在各種 eM_FPGA 模組中FPGA 對外電路的標準配置圖如下

24576MHz

FlashROM

26PSRAM

EEPROM

mD[8]

yPA[4]

FPGACPLD

mA[19]mRDmWRmCSeeCKeeCSeeDIeeDO

光纖界面 RxNETTxNET

USB 界面 RxUSBTxUSBCLK24MPOWERALARM

LED

tstLEDstsLEDRxLEDTxLED

yPB[8]yPC[4]

ADCDAC

ADC[8]

實驗模組

ADC[2]

DAC[2]

xPA[4]

xPB[8]

xPC[4]

基礎實驗

其中

1FPGACPLD可以選擇下述幾種 XC2V250XC2V1000 採用 eM_2V1K模組其中 FPGA為 FG456包裝 XC3S400XC3S1000XC3S1500採用 eM_3S1K模組其中 FPGA為 FG456包裝 XC3S400XC3S1000XC3S1500採用 eM_3S1K模組其中 FPGA為 FG456包裝 XC3S50XC3S200XC3S400 採用 eM_3S50模組其中 FPGA為 TQ144包裝 XC95144XLXC95288XL 採用 eM_95XL模組其中 CPLD為 TQ144包裝 2採用 FG456包裝者可以控制所有的 IO界面 3採用 TQ144包裝者只是不能控制 RAM和 FlashROM而可以控制其他所有的界面 4所有 FPGA模組都可自由選擇由 USB界面或是由光纖界面下載電路但是 CPLD模組只能固定由 USB界面下載電路

5所有 FPGACPLD模組都可透過 26P接頭連接既有的各種實驗模組

81

FPGA 接腳對照表

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

mD0 XD6 mD0 A17 C13 -- -- mD1 XD7 mD1 B17 D12 -- -- mD2 XD8 mD2 C17 D11 -- -- mD3 XD9 mD3 D17 C11 -- -- mD4 XD10 mD4 E17 D10 -- -- mD5 XD11 mD5 E16 C10 -- -- mD6 XD12 mD6 E14 D9 -- -- mD7 XD13 mD7 E13 D7 -- -- mA0 XD14 mA0 D13 C7 -- -- mA1 XD15 mA1 C13 D6 -- -- mA2 XA0 mA2 V5 C3 -- -- mA3 XA1 mA3 U5 C4 -- -- mA4 XA2 mA4 Y2 D3 -- -- mA5 XA3 mA5 Y1 D4 -- -- mA6 XA4 mA6 V4 E3 -- -- mA7 XA5 mA7 V3 E4 -- -- mA8 XA6 mA8 W2 F3 -- -- mA9 XA7 mA9 W1 F4 -- -- mA10 XA8 mA10 T2 G6 -- -- mA11 XA9 mA11 T1 K3 -- -- mA12 XA10 mA12 R4 K10 -- -- mA13 XA11 mA13 R3 L3 -- -- mA14 XA12 mA14 R2 L4 -- -- mRD XRD mRD R1 D5 -- -- mWR XWR mWR P6 C6 -- --

POWER P0A0 POWER B4 B20 P1 P5 ALARM P0A1 ALARM A4 A19 P2 P6 RxNET P0A2 RxNET C4 B19 P4 P7 TxNET P0A3 TxNET C5 A18 P5 P9 RxUSB P0B0 RxUSB B5 A15 P6 P10 TxUSB P0B1 TxUSB A5 B15 P7 P11 RxCAN P0B2 RxCAN D6 A14 P8 P12 RxCAN P0B3 TxCAN C6 B14 P10 P13

CLK24M CLK24M CLK24M E12 B12 P124 P38

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

PWM0H P3A0 P0D0 E6 A8 P21 P23 PWM0L P3A1 P0D1 E5 B8 P23 P24 PWM1H P3A2 P0D2 C2 B6 P24 P25 PWM1L P3A3 P0D3 C1 A5 P25 P26 PWM2H P3A4 P0D4 D2 B5 P26 P27

82

PWM2L P3A5 P0D5 D1 A4 P27 P28 PWMenb P3A6 P0D6 E4 B4 P28 P30 PHT1Z P3A7 P0D7 E3 A3 P30 P31 PHT1A P3B0 P0D8 G2 C1 P31 P32 PHT1B P3B1 P0D9 G1 C2 P32 P33 PHT0A P3B2 P0D10 H5 D1 P33 P34 PHT0B P3B3 P0D11 J6 D2 P35 P35 AMP0 P3B4 P0D12 H4 E1 P36 P39 AMP1 P3B5 P0D13 H3 E2 P40 P40 AMP2 P3B6 P0D14 H2 F2 P41 P41 AMP3 P3B7 P0D15 H1 G1 P44 P43 eeSK P0C3 P1D0 C10 B9 P20 P22 eeCS P0C2 P1D1 D10 A9 P18 P21 eeDI P0C1 P1D2 F10 B10 P17 P20 eeDO P0C0 P1D3 E10 B11 P15 P19 ssCK P0B7 P1D4 E8 A11 P14 P17 ssCS P0B6 P1D5 E7 A12 P13 P16 ssDI P0B5 P1D6 A6 B13 P12 P15 ssDO P0B4 P1D7 B6 A13 P11 P14

ppCLK P3C0 P1D8 K4 G2 P46 P44 ppDIN P3C1 P1D9 K3 K1 P47 P45 TxD P3C2 P1D10 K2 K2 P50 P46 RxD P3C3 P1D11 K1 L1 P51 P48

tstLED P3C4 P1D12 L5 L2 P52 P49 stsLED P3C5 P1D13 L4 M1 P53 P50 RxLED P3C6 P1D14 L3 M2 P55 P51 TxLED P3C7 P1D15 L2 N1 P56 P52

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

xPA0 P2A0 P2D0 AA3 N2 P59 P53 xPA1 P2A1 P2D1 Y4 T1 P60 P54 xPA2 P2A2 P2D2 AA4 T2 P63 P56 xPA3 P2A3 P2D3 AB4 U2 P68 P57 xPC0 P2A4 P2D4 W5 V1 P69 P58 xPC1 P2A5 P2D5 Y5 V2 P70 P59 xPC2 P2A6 P2D6 AA5 W1 P73 P60 xPC3 P2A7 P2D7 AB5 W2 P74 P61

-- P2B0 P2D8 V6 Y1 P76 P64 -- P2B1 P2D9 V7 Y2 P77 P66 -- P2B2 P2D10 W6 AA3 P78 P68

mCS P2B3 P2D11 Y6 AB4 P79 P69 mA15 P2B4 P2D12 V9 AA4 P80 P70 mA16 P2B5 P2D13 V10 AB5 P82 P71 mA17 P2B6 P2D14 W10 AA5 P83 P74 mA18 P2B7 P2D15 Y10 AA6 P84 P75 CS0 P2C0 ADC0 AA10 AB8 P85 P76

83

SDIN0 P2C1 ADC1 AB10 AA8 P86 P77 CS1 P2C2 ADC2 U10 AB9 P87 P78

SDIN1 P2C3 ADC3 U11 AA9 P89 P79 SCLK P2C4 ADC4 V11 AB10 P90 P80 CS2 P2C5 ADC5 W11 AA10 P92 P81

SDOUT P2C6 ADC6 Y11 AB11 P93 P82 LDAC P2C7 ADC7 AA11 AA11 P95 P83

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

xPB0 P1A0 PxA0 M1 M3 P135 P85 xPB1 P1A1 PxA1 M2 M4 P132 P86 yPB2 P1A2 PxA2 M3 N3 P131 P87 yPB3 P1A3 PxA3 M4 N4 P130 P88 yPB1 P1A4 PxA4 M5 T4 P129 P91 yPB4 P1A5 PxA5 M6 T5 P128 P92 yPB0 P1A6 PxA6 N1 U3 P127 P93 yPB5 P1A7 PxA7 N2 U4 P125 P94 yPB6 P1B0 PxB0 U13 V3 P119 P95 yPB7 P1B1 PxB1 V13 V4 P118 P96 xPB2 P1B2 PxB2 W13 W3 P116 P97 xPB3 P1B3 PxB3 Y13 W4 P113 P98 xPB4 P1B4 PxB4 AA13 Y3 P112 P100 xPB5 P1B5 PxB5 AB13 Y4 P96 P101 yPC3 P1B6 PxB6 U12 Y5 P97 P102 yPC2 P1B7 PxB7 V12 W5 P98 P103 yPC1 P1C7 PxC0 AB17 W11 P108 P113 yPC0 P1C6 PxC1 AA17 Y11 P107 P112 yPA0 P1C5 PxC2 Y17 W10 P105 P111 yPA1 P1C4 PxC3 W17 Y10 P104 P110 yPA2 P1C3 PxC4 AB18 W9 P103 P107 yPA3 P1C2 PxC5 AA18 W8 P102 P106 xPB6 P1C1 PxC6 Y18 W6 P100 P105 xPB7 P1C0 PxC7 W18 Y6 P99 P104

84

eM_DEMO 模組

eM_DEMO 模組的電路配置圖如下

eM_USB 模組

數字型 LED

0 1 2 34 5 6 78 9 A BC D E F

燈號型 LED

44 鍵盤

ADC0 ADC1 DAC0 DAC1

LED 選擇KEY 選擇

其中

1eM_DEMO模組的基本功能包括 A將 xPAxPBxPC等 16個 IO訊號引出控制 LED和鍵盤電路 B將 ADDA訊號引出並放大成+-10V的工作範圍 2LED和鍵盤可以選擇三種模式由 LED和 KEY 兩組開關作選擇圖示如下

模式1

0123

模式2 模式3

0 1 2 34 5 6 78 9 A BC D E F

0123

3模式14鍵輸入並搭配 16點的 LED燈號顯示其中 16點 LED分別對映到 xPA[0~3]xPB[0~7]和 xPC[0~3] 4組按鍵分別對映到 xPC[0~3] 4模式24鍵輸入並搭配四個 7段式數字顯示其中 數字顯示由 xPA[0~3]作數字掃瞄而由 xPB[0~7]作 7段式 LED控制 4組按鍵 分別對映到 xPC[0~3] 5模式316鍵輸入並搭配四個 7段式數字顯示其中 數字顯示由 xPA[0~3]作數字掃瞄而由 xPB[0~7]作 7段式 LED控制 16組按鍵由 xPA[0~3]作鍵盤掃瞄而由 xPC[0~3]作鍵盤讀取 6根據VHDL與數位邏輯設計的章節其中 第 1章至 10章的實驗採用模式1而 第 11章實驗採用模式2而 第 12章之後的實驗都採用模式3

85

FPGA UCF 定義

eM_3S1K 模組

NET CLK LOC = B12

NET XAlt0gt LOC = N2

NET XAlt1gt LOC = T1

NET XAlt2gt LOC = T2

NET XAlt3gt LOC = U2

NET XBlt0gt LOC = M3

NET XBlt1gt LOC = M4

NET XBlt2gt LOC = W3

NET XBlt3gt LOC = W4

NET XBlt4gt LOC = Y3

NET XBlt5gt LOC = Y4

NET XBlt6gt LOC = W6

NET XBlt7gt LOC = Y6

NET XClt0gt LOC = V1

NET XClt1gt LOC = V2

NET XClt2gt LOC = W1

NET XClt3gt LOC = W2

NET YAlt0gt LOC = W10

JP4 接頭

NET YAlt1gt LOC = Y10

NET YAlt2gt LOC = W9

NET YAlt3gt LOC = W8

NET YBlt0gt LOC = U3

NET YBlt1gt LOC = T4

NET YBlt2gt LOC = N3

NET YBlt3gt LOC = N4

NET YBlt4gt LOC = T5

NET YBlt5gt LOC = U4

NET YBlt6gt LOC = V3

NET YBlt7gt LOC = V4

NET YClt0gt LOC = Y11

NET YClt1gt LOC = W11

NET YClt2gt LOC = W5

NET YClt3gt LOC = Y5

在光碟片中 RFFPGAVHDLDEMOBIT3S1K 裡有 VHDL 與數位邏輯設計書本範例原始檔與合成檔

86

eM_3S50 模組

NET CLK LOC = P124

NET XAlt0gt LOC = P59

NET XAlt1gt LOC = P60

NET XAlt2gt LOC = P63

NET XAlt3gt LOC = P68

NET XBlt0gt LOC = P135

NET XBlt1gt LOC = P132

NET XBlt2gt LOC = P116

NET XBlt3gt LOC = P113

NET XBlt4gt LOC = P112

NET XBlt5gt LOC = P96

NET XBlt6gt LOC = P100

NET XBlt7gt LOC = P99

NET XClt0gt LOC = P69

NET XClt1gt LOC = P70

NET XClt2gt LOC = P73

NET XClt3gt LOC = P74

NET YAlt0gt LOC = P105

JP4 接頭

NET YAlt1gt LOC = P104

NET YAlt2gt LOC = P103

NET YAlt3gt LOC = P102

NET YBlt0gt LOC = P127

NET YBlt1gt LOC = P129

NET YBlt2gt LOC = P131

NET YBlt3gt LOC = P130

NET YBlt4gt LOC = P128

NET YBlt5gt LOC = P125

NET YBlt6gt LOC = P119

NET YBlt7gt LOC = P118

NET YClt0gt LOC = P107

NET YClt1gt LOC = P108

NET YClt2gt LOC = P98

NET YClt3gt LOC = P97

在光碟片中 RFFPGAVHDLDEMOBIT3S200 裡有VHDL與數位邏輯設計書本範例原始檔與合成檔

87

eM_95XL 模組

NET CLK LOC = SPIN38

NET XAlt0gt LOC = SPIN53

NET XAlt1gt LOC = SPIN54

NET XAlt2gt LOC = SPIN56

NET XAlt3gt LOC = SPIN57

NET XBlt0gt LOC = SPIN85

NET XBlt1gt LOC = SPIN86

NET XBlt2gt LOC = SPIN97

NET XBlt3gt LOC = SPIN98

NET XBlt4gt LOC = SPIN100

NET XBlt5gt LOC = SPIN101

NET XBlt6gt LOC = SPIN105

NET XBlt7gt LOC = SPIN104

NET XClt0gt LOC = SPIN58

NET XClt1gt LOC = SPIN59

NET XClt2gt LOC = SPIN60

NET XClt3gt LOC = SPIN61

NET YAlt0gt LOC = SPIN111

JP4 接頭

NET YAlt1gt LOC = SPIN110

NET YAlt2gt LOC = SPIN107

NET YAlt3gt LOC = SPIN106

NET YBlt0gt LOC = SPIN93

NET YBlt1gt LOC = SPIN91

NET YBlt2gt LOC = SPIN87

NET YBlt3gt LOC = SPIN88

NET YBlt4gt LOC = SPIN92

NET YBlt5gt LOC = SPIN94

NET YBlt6gt LOC = SPIN95

NET YBlt7gt LOC = SPIN96

NET YClt0gt LOC = SPIN112

NET YClt1gt LOC = SPIN113

NET YClt2gt LOC = SPIN103

NET YClt3gt LOC = SPIN102

在光碟片中 RFFPGAVHDLDEMOSVF95288XL 裡有VHDL與數位邏輯設計書本範例原始檔與合成

檔案

88

eM_FPGA 模組

NET CLK LOC = E12

NET XAlt0gt LOC = AA3

NET XAlt1gt LOC = Y4

NET XAlt2gt LOC = AA4

NET XAlt3gt LOC = AB4

NET XBlt0gt LOC = M1

NET XBlt1gt LOC = M2

NET XBlt2gt LOC = W13

NET XBlt3gt LOC = Y13

NET XBlt4gt LOC = AA13

NET XBlt5gt LOC = AB13

NET XBlt6gt LOC = Y18

NET XBlt7gt LOC = W18

NET XClt0gt LOC = W5

NET XClt1gt LOC = Y5

NET XClt2gt LOC = AA5

NET XClt3gt LOC = AB5

NET YAlt0gt LOC = Y17

JP4 接頭

NET YAlt1gt LOC = W17

NET YAlt2gt LOC = AB18

NET YAlt3gt LOC = AA18

NET YBlt0gt LOC = N1

NET YBlt1gt LOC = M5

NET YBlt2gt LOC = M3

NET YBlt3gt LOC = M4

NET YBlt4gt LOC = M6

NET YBlt5gt LOC = N2

NET YBlt6gt LOC = U13

NET YBlt7gt LOC = V13

NET YClt0gt LOC = AA17

NET YClt1gt LOC = AB17

NET YClt2gt LOC = V12

NET YClt3gt LOC = U12

在光碟片中 RFFPGAVHDLDEMOBIT2V250 裡有VHDL與數位邏輯設計書本範例原始檔與合成檔

89

Page 58: RFFPGA 直流馬達實驗手冊juniortek.com.tw/program/manual/RF-DC-mal.pdf · em_demo模組 em_dcm 直流伺服馬達 dc電源 rffpga 系統的直流馬達實驗規劃 其中包括:

2896 2824 2751 2675 2598 2520 2440 2359 60~67 2276 2191 2106 2019 1931 1842 1751 1660 68~6F 1567 1474 1380 1285 1189 1092 995 897 70~77 799 700 601 501 401 301 201 101 78~7F 0 65435 65335 65235 65135 65035 64935 64836 80~87180deg 64737 64639 64541 64444 64347 64251 64156 64062 88~8F 63969 63876 63785 63694 63605 63517 63430 63345 90~97 63260 63177 63096 63016 62938 62861 62785 62712 98~9F 62640 62569 62501 62434 62370 62307 62246 62187 A0~A7 62130 62075 62023 61972 61924 61877 61833 61791 A8~A8 61752 61714 61679 61647 61616 61588 61563 61540 B0~B7 61519 61500 61484 61471 61460 61451 61445 61441 B8~BF 61440 61441 61445 61451 61460 61471 61484 61500 C0~C7270deg 61519 61540 61563 61588 61616 61647 61679 61714 C8~CF 61752 61791 61833 61877 61924 61972 62023 62075 D0~D7 62130 62187 62246 62307 62370 62434 62501 62569 D8~DF 62640 62712 62785 62861 62938 63016 63096 63177 E0~E7 63260 63345 63430 63517 63605 63694 63785 63876 E8~EF 63969 64062 64156 64251 64347 64444 64541 64639 F0~F7 64737 64836 64935 65035 65135 65235 65335 65435 F8~FF

就程式結構而言說明如下

timer 即時控制程序(8KHz) RD ang ADD (frq) WR ang ang+=frq SFR 8 ADD (th) AND 255 ACC=sin(ang256+th) ADD tab WRH RDM table-look-up MUL (amp) SFR 12 ADD (bias) WR out out=ACCamp4096+bias RET

1基本上我們以查表法計算 sin()其輸入θ的範圍為 0~255對映到 0~360deg其輸出 sin(θ)的範圍為+-4096對映到+-10的範圍

2建立一個內部變數 ang其範圍為 0~65535對映到 0~360的相位角 3每個timer程序都執行 ang+=frq的動作更新目前的相位角接著依照 ang的相位角查表得到 sin(ang256+th)值

4由於表格長度為 256-word所以必須將 ang256才能得到正確的對映關係而 th範圍為 0~255所以不需要像 ang一般的做額外處理

5sin()的範圍為(+1-1)而在表格中以(+4096~-4096)的型式記錄相當於 10=4096所以執行 Asin()時還要用 SFR12指令做4096的動作才能正確的取得輸出值

58

6就頻率輸入 frq而言其計算原則是將θ=ωt轉化成θ=Σ(ωdt)因為抽樣頻率

為 8KHz所以 dt=18000而得到 frq=655368000Hz公式其中 Hz為真正的頻率在 8KHz的抽樣頻率下其範圍為 0~4000

鋸齒波產生器

此模組會產生週期性的鋸齒波方塊圖如下

outfrq

kBiasbias

ampkAmp

kFrqth

kThf=1TB

θ

A

其中

1鋸齒波也有四個參數振幅(A)頻率(F)相位(θ)和偏移(B)和正弦波的定義完全一致唯一的差異是其輸出為鋸齒波而非正弦波

2基本波形是從週期開始時為 0一直遞增到週期結束時到達最高點然後立刻回歸

到 0重新開始 3以程式結構而論鋸齒波程式幾乎就是正弦波的相位計算部分只差沒有正弦波的

查表處理而已

模組程式範例SAW_WAVEasm

local amp R0 IP kAmp 輸入點sin波的振幅 local frq R1 IP kFrq 輸入點sin波的頻率 local th R2 IP kTh 輸入點sin波的相角 local bias R3 IP kBias 輸入點sin波的中心偏移 local out R4 OP 輸出點sin波輸出 local ang R5 內部變數相位角65536=360deg local kAmp R6 1000 參數振幅值 local kFrq R7 1000 參數頻率值=655368000Hz local kTh R8 0 參數相角值360deg=256 local kBias R9 0 參數偏移值 data 11 模組變數區長度及初值 initial 啟動程序 WR ang0 WR out0 ang=out=0 RET timer 即時控制程序(8KHz) RD ang ADD (frq) WR ang ang+=frq SFR 8 ADD (th) AND 255 ACC=(ang256+th)amp0x00ff MUL (amp) SFR 8 ADD (bias) WR out out=ACCamp256+bias

59

RET

脈衝波產生器

outfrq

kBiasbias

ampkAmp

kFrqth

kThf=1TB

θ

A

pwm

kDutyduty

此模組會產生週期性的脈衝波方塊圖如下

其中

1脈衝波有五個參數其中振幅(A)頻率(F)相位(θ)和偏移(B)四個參數和正弦波

定義完全一樣另外再增加一個負載率(D) 2基本波形是從週期開始時為 1隔段時間後換為 0然後持續到週期結束再重新開始其中 1所佔有的比例就是負載率當 D=0時為 0而 D=255時為 100

3和其他參數類似負載率(D)以 duty為其輸入點而以 kDuty為其參數值

模組程式範例PLS_WAVEasm

local amp R0 IP kAmp 輸入點脈衝波的振幅 local frq R1 IP kFrq 輸入點脈衝波的頻率 local th R2 IP kTh 輸入點脈衝波的相角 local bias R3 IP kBias 輸入點脈衝波的中心偏移 local duty R4 IP kDuty 輸入點脈衝波的負載率 local out R5 OP 輸出點脈衝波輸出 local ang R6 內部變數相位角65536=360deg local kAmp R7 1000 參數振幅值 local kFrq R8 1000 參數頻率值=655368000Hz local kTh R9 0 參數相角值360deg=256 local kBias R10 0 參數偏移值 local kDuty R11 128 參數負載率100 =256 data 12 模組變數區長度及初值 initial 啟動程序 WR ang0 WR out0 ang=out=0 RET timer 即時控制程序(8KHz)

60

RD ang ADD (frq) WR ang ang+=frq SFR 8 ADD (th) AND 255 ACC=(ang256+th)amp0x00ff SUB (duty) RD (amp) JLT t1 RD 0 ACC=(amp0) t1 ADD (bias) WR out out=ACC+bias RET

IIR 一階濾波器

此模組執行一階的 IIR濾波器方塊圖如下

kau x

Z-1

+

+

-

+低通濾波器

高通濾波器dx lp

hp

濾波器參數的計算公式如下

1假設濾波器的頻寬為 hz則 ωn=hz628 2若系統頻率為 8KHz則抽樣週期 dT為 dT=dt8000 其中 dt為模組參數 3則濾波器參數為 ka=ωndT4096或是 =hzdt62880004096即 =hzdt32 4當 dt決定後所允許的訊號頻寬為(4000dt)換句話說訊號頻寬會因為 dt增加而下降

為了方便實驗的運用下面列出常用的參數對照表

濾波頻寬

(Hz)

10 20 50 100 200 500 1000 2000

訊號頻寬

(Hz)

400 800 2000 4000 4000 4000 4000 4000

模組參數 dt 10 5 2 1 1 1 1 1

模組參數 ka 320 320 320 320 640 1600 3200 6400

表格的運用方式如下

1首先決定濾波頻寬 2接著查表找出對映的參數 dt和 ka 3再查表得到對映的訊號頻寬以決定是否需要串接前級濾波器

61

模組程式範例IIR1_FILTERasm

local u R0 IP 輸入點濾波器輸入 local lp R1 OP 輸出點低通濾波器輸出 local hp R2 OP 輸出點高通濾波器輸出 local dt R3 1 參數抽樣週期 local ka R4 4096 參數增益 ka10=4096 local prd R5 內部變數抽樣週期用 data 6 模組變數區長度 initial 開機啟動程序 WR lp0 WR hp0 WR prd1 RET lp=hp=0prd=1 timer 即時控制程序 SUB prd1 JNZ b9 if (--prdgt0) return RD dt WR prd prd=dt RD (u) SUB lp WR hp hp=u-lp MUL ka SFR 12 ADD lp WR lp lp+=(hpka4096) b9 RET

資料蒐集模組

資料蒐集模組是一個非常特殊的模組專門配合 eTTY 程式中的示波器使用

模組程式範例DAS4asm

local cmd R0 0 紀錄命令0=停止1=前置記錄2=正觸發4=負觸發6=觸發記錄 local dt R1 1 抽樣週期每 dT抽樣一次 local tab R2 TP DAS表格啟始位址 local cnt R3 0 目前記錄點(0~255) local ch1 R4 0 定義頻道1的變數位址 local ch2 R5 0 定義頻道2的變數位址 local ch3 R6 0 定義頻道3的變數位址 local ch4 R7 0 定義頻道4的變數位址 local trg R8 0 定義觸發頻道的變數位址 local th R9 0 觸發準位 local tail R10 0 觸發後的抽樣個數 local buf R11 1 抽樣計數(1~dt) local pnt R12 表格位址計算pnt=tab+cnt4 local len R13 表格長度計算(0~256) data 14 定義模組變數區的長度 table tab 1024 定義表格的長度 initial 啟動程序 WR cmd0 RET cmd=0 timer 控制程序

62

ADD cmd0 JZ t9 if (cmd==0) return SUB buf1 JNZ t9 if (--buf)gt0) return RD dt WR buf dt=buf RD cnt ADD 1 AND 0xff WR cnt cnt=(cnt+1)amp0xff SFL 2 ADD tab WR pnt pnt=tab+cnt4 RD (ch1) WR (pnt) ADD pnt1 pnt++=ch1 RD (ch2) WR (pnt) ADD pnt1 pnt++=ch2 RD (ch3) WR (pnt) ADD pnt1 pnt++=ch3 RD (ch4) WR (pnt) pnt =ch4 RD cmd SUB 1 JZ t9 SUB 1 JZ t2 SUB 1 JZ t3 SUB 1 JZ t4 SUB 1 JZ t5 SUB 1 JZ t6 JR t7 t2 RD (trg) SUB th JGE t9 ADD cmd1 JR t9 wait trgltth t3 RD (trg) SUB th JLE t9 JR t6 wait trggtth t4 RD (trg) SUB th JLE t9 ADD cmd1 JR t9 wait trggtth t5 RD (trg) SUB th JGE t9 JR t6 wait trgltth t6 WR len0 WR cmd7 len=0cmd=7 t7 ADD len1 SUB tail JLT t9 WR cmd0 if ((++len)gt=0x80) cmd=0 t9 RET

與 DC 馬達控制相關的程式模組有以下 4個程式模組說明如下

(1)加減速控制模組 ACC_controlasm (2)光電盤輸入模組 POS_inputasm (3)PWM輸出模組 PWM_outputasm (4)PD控制模組 PD_controlasm

71加減速控制模組 此程式模組主要功能在於執行位置控制的加減速命令修正其數學模式採用 Lynn

濾波器的架構參見下圖

cmd

2

+

old Z -1

-

Z -1

Z -1

Z-1

Z-1x0 x1 x8 x9 x16

+ -

++

2

Z-1

Z-1 y1 y2

+

-

y0

+ +

sumZ-1

+164

12

out

dif

+

63

加減速控制模組方塊圖

其中

1Lynn 濾波器的階數固定成八階也就是 m=8其公式為 H(z) = (1-2Z-m+Z-2m)(1-2Z-1+Z-2)m2

2因為m=8所以m2=64因此最後計算低通濾波的部份時要先做除 64的運算 3因為低通濾波(lp)和 y0之間有 64倍的差異代表 y0y1y2的變化範圍比濾波器輸

入值要擴大許多例如輸入值在+-1000變化時y0y1y2很可能會在+-64000之間變化這範圍已經超出整數處理的範圍很可能會造成錯誤的計算結果

4所以在實驗時輸入值的變化範圍必須控制在+-500之間以保證計算的正確性 5對於 Lynn 濾波器當 m=8時其濾波器的頻寬固定為 1 kHzmdt也就是 dt=1時頻寬為 125 Hz dt=2時頻寬為 625Hz依此類推 6對於 Lynn 濾波器其濾波器的延遲固定為 m個抽樣週期因此設計 hp = x8 - lp 即可得到高通濾波器的對應結果 7其中乘 2和除 64的運算以移位運算取代所以整個程式中並無任何乘法運算 8Lynn 濾波器本身並不是穩定濾波器所以在程式啟動時必須確實的將所有狀態

(x0~x16)歸零否則會產生不穩定的狀態輸出

因為 Lynn濾波器中所有參數固定所以除了抽樣週期 dt 之外並無任何可調參數

抽樣週期 dt 可以控制頻寬dt 越大則濾波器頻寬越低

將步階命令值的輸出送入 Lynn 濾波器中經由低通濾波器的效應可以減緩命

令的變化程度達到加減速控制的目的以下為使用 Lynn 濾波器型式實現加減速控

制的組合語言程式列印 如欲更進一步瞭解 Lynn 濾波器與 FIR 數位濾波器之間的關係可以參考通訊實驗

四數位濾波器設計(FIR)中之說明

ACC_controlasm程式列印 local cmd R0 IP 輸入點位置命令

local out R1 OP 輸出點加減速處理後的位置命令

local dif R2 OP 輸出點位置微分命令

local axis R3 0 馬達編號0=X1=Y2=Z3=C

local old R4 內部變數微分計算用

local sumL R5 內部變數積分計算用

local sumH R6 內部變數積分計算用

local y0 R7 內部變數y(0~2)

local y1 R8 local y2 R9

local x0 R10 內部變數x(0~16)

local x1 R11 local x2 R12 local x3 R13 local x4 R14

local x5 R15 local x6 R16 local x7 R17 local x8 R18

local x9 R19 local x10 R20 local x11 R21 local x12 R22

local x13 R23 local x14 R24 local x15 R25 local x16 R26

64

data 27 模組變數區長度

initial 開機啟動程序

WR dif0 RD (cmd) WR out WR old dif=0 out=old=cmd

sumHL=cmd64

SFL 6 WR sumL RD out SFR 10 SGN 5 WR sumH

RPT 17 WR x00 RPT 3 WR y00 RET x[0~16]=0y[0~2]=0

timer 即時控制程序

RD (cmd) SUBX old WR x0 x0=cmd-old old=cmd

SUB x81 ADD x16 ADD y11 SUB y2 WR y0 y0=x0-2x8+x16+2y1-y2

SGN ADD sumL WR sumL RDH ADC sumH WR sumH sumHL+=y0

WRH RD sumL SFR 6 WR out out=sumHL64

RD y0 SGN SFR WR dif dif=y032mm

RD x0 RPT 16 RDX x1 x[i]=x[i-1] i=1~16

RD y0 RDX y1 WR y2 y[i]=y[i-1] i=1~2

b9 RET

72光電盤輸入模組

DC馬達的位置由光電盤量測之預設儲存於 0xac與 0xbe二個輸入埠位址中其中位址 0xac記錄 X軸馬達的位置位址 0xbe記錄 Y軸馬達的位置由於本實驗的DC馬達接在 Y軸的位置上因此程式中直接選用 Y軸的輸入 光電盤位置輸入的程式列印如下其中速度由位置的差分而得至於馬達的位置

則使用內部 2個 word加以記錄精度為 32位元 POS_inputasm程式列印 local spd R0 OP 輸出點速度量測值

local ang R1 OP 輸出點角度量測值

local angH R2 內部變數角度的 32 位元部分

local mode R3 0x308 模式選擇15MHzAB 相正反向輸入

local pht R4 0xac 輸入阜地址光電盤輸入(0xac)

local phtc R5 0xbe 輸入阜地址光電盤模式(0xbe)

local old R6 內部變數速度更新用

data 7 模組變數區長度

initial 開機啟動程序

RD mode WR (phtc) phtc=mode

RD (pht) WR old WR spd0 RET old=phtspd=0

timer 即時控制程序

RD (pht) SUBX old SGN 11 WR spd spd=(pht-old)old=pht

65

ADD ang WR ang angHL+=spd

RDH ADC angH WR angH

RET

73 PWM輸出控制模組 模組方塊

cmd PWM輸出

程式說明 1在開機時將切換保護時間寫到輸出阜 0xbc上其中切換保護值為 0~6360=5us 2在每次 timer interrupt時將 cmd訊號處理後寫到輸出阜 0xb8上

PWM_outputasm程式列印 local cmd R0 IP gnd 輸入點v相命令

local gain R1 4096 參數輸出增益1=4096

local bias R2 2048 參數輸出偏壓0=2048

local limit R3 4095 參數輸出極限1=4095

local zone R4 0x88f0 參數頻率=12KHz切換保護=5us

local pwm R5 0xb8 輸出阜地址PWM0 輸出(0xb8)

local mode R6 0xbc 輸出阜地址PWM 模式(0xbc)

local p0md R7 0xf8 輸出阜地址port0 模式(0xf8)

local gnd R8 0 輸入接地點

data 9 模組變數區長度

initial 開機啟動程序

RD bias WR (pwm) pwm=bias

RD 0xffff WR (p0md) set port0 mode

RD zone WR (mode) RET mode=zone

stop 關機保護程序

RD bias WR (pwm) RET pwm=bias

timer 即時控制程序

RD (mode) xor 1 and 1 WR (mode) trigger watch-dog

RD (cmd) MUL gain SFR 12 ADD bias ACC=(cmdgain4096)+bias

MAX 0 MIN limit WR (pwm) pwm=limit(ACC)

RET

66

74 PD 控制模組

PD控制的模組方塊參見圖二十一所示其中比例控制的部份直接由增益 kp加以調整微分控制的部份則由誤差的差分經增益 kd的調整而得

Σ+

-

cmd

fdk

err out

Σ

pk

dk

Σ

+

+

+

-

old1minusZ

PD控制器的方塊圖

PD_controlasm程式列印 local cmd R0 IP gnd 輸入點位置命令(可忽略)

local fdk R1 IP gnd 輸入點位置回授(可忽略)

local out R2 OP 輸出點用以控制速度迴路

local kp R3 256 參數增益 kp10=256

local kd R4 0 參數增益 kd10=256

local err R5 0 內部變數

local old R6 0 內部變數

local gnd R7 0 無輸入時的短路點

data 8 模組變數區長度

initial 開機啟動程序

WR out0 WR old0 RET out=old=0

timer 即時控制程序

RD (cmd) SUB (fdk) PRTF WR err

MUL kp SFR 8 P=(cmd-fdk)kp256

RDS err SUBX old MUL kd SFR 8 D=(err-old)kd256

ADDS

WR out out=P+D

RET

程式中預設增益值的 10以整數值 256為基底因此使用 SFR 8的指令加以調

整另外在在計算微分項的程式部份用到 SUBX old的指令其詳細的暫存器動作如

下 參考 piDSP的指令說明SUBX指令將總共用到 3個時序參考錯誤 找不到參照

67

來源在時序 1時將原先 AX的資料拷貝一份到 HX中時序 2時正式執行減

法的動作所以 AX暫存器中的內容會變成 err-old時序 3時DSP會將存放在 HX暫存器中的內容拷貝一份到 old的記憶體中也就是經由 SUBX此一精簡指令將

同時完成計算差分所需要的相減與資料疊代的動作有效的利用 piDSP控制器 DSP核心的精簡指令將可以大幅提昇系統的計算速度

HX AXoldSUBXerr err

old

err

errerr olderr minus

1_err

errerr olderr minus err

1_err

1

2

3

SUBX的指令時序與暫存器變化

68

8附錄快速安裝說明

光纖網路通訊 FPGA 發展系統 (適用於 WIN-XP200098 系統)

快速安裝說明

26Pin 負載輸出入埠

雙電源︵5

12

伏︶輸入埠

單電源︵5

伏︶輸入埠

USB

光纖線輸

號 光纖線輸出埠

入 傳 埠

首先將光碟片 RFFPGA 目錄檔案拷貝在您工作硬碟裡面

第一次安裝時先將 USB 傳輸線接上電腦主機將電源供應器接上 FPGA 模組此時電

腦會出現安裝 USB-Serial 驅動程式選擇從清單安裝此驅動程式放置在光碟片

RFFPGA-USBdrive 選擇您目前安裝系統

可選擇 WIN-98WIN-MEWIN-2000WIN-XP 系統配合您現在工作電腦作業系統

69

注意一般電腦 USB 埠很多插口當您安裝驅動程式時是配合您當時插入之埠

下次如您插入不同接口埠時電腦會再次要求安裝驅動程式這是正常現象請再次安

裝驅動程式否則無法使用

FPLC 操作

首先進入 RFFPGA裡子目錄 testASM直接點選 fPLCexe 出現下面操作畫面(也可直接將

此檔案放置桌面直接點選)

(或者選擇 File 再執行 Setuphellip 選擇您要執行 CAI 檔)

70

進入下面操作畫面 首先使用滑鼠在 FPGA下載按鈕單擊動作使 FPGA變成 DSP晶片 實驗一至實驗五皆為使用 DSP組合語言設計程式其原始程式分別為 testASM1至testASM5可使用 texPad 開啟與編輯程式內容 實驗三與實驗五多有 IO控制動作 當選擇實驗三時出現下面畫面

71

eM_USB 模組

數字型 LED

0 1 2 34 5 6 78 9 A BC D E F

燈號型 LED

44 鍵盤

ADC0 ADC1 DAC0 DAC1

LED 選擇KEY 選擇

模 式 1

0123

注意操作畫面 3與 4 說明開關與按鍵選擇位置後選擇程式下載再按程式啟動如您

按下 0-3按鍵時燈號型 LED會有不同方向閃爍顯示程式停止時結束所有 IO控制動作再按回首頁選擇其他實驗 實驗四與實驗五

模式3

0 1 2 34 5 6 78 9 A BC D E F

按照上面開關選擇直接操作如果以上實驗皆能按照正常操作表示您光纖網路通訊

FPGA發展模組以能正常使用 注意 開機與關機動作順序如下

開機電腦啟動 --- eM_USB 模組電源接上 --- USB 接上電腦 ---

啟動 FPLC 軟體 --- 下載 FPGA 程式

關機關閉 FPLC 軟體 --- eM_USB 模組電源拔掉 --- 拔掉電腦 USB 接頭 ---關掉

電腦

如果以上順序有亂可能造成 USB 找不到驅動造成無法下載經過幾次測試還是

無法下載建議重新啟動電腦主機按照正確步驟操作

72

FPGA 下載操作

進入 FPLC 操作系統按照下列步驟選擇節點模組與下載 bit FPGA 檔案

在 VHDLDEMO 子目錄下您可以選擇您目前 FPGA 種類型號在此型號下我們已將 VHDL

與數位邏輯設計課本範例全部放於此處

73

光纖網路連線 FPGA 下載操作

首先利用光纖線將 eM_USB0 模組光纖輸出埠接至 eM_USB1 模組光纖輸入埠以此

類推最後再將最後 eM_USBN 模組光纖輸出埠接至 eM_USB0 模組光纖輸入埠配置

如附圖方式

個人電腦(Windows) eM_USB模組

0USB

eM_USB模組1

光纖網路

eM_USB模組2

eM_USB模組N

配置完成後進入 FPLC 系統首先必須先將 Node00 下載在 testASM 子目錄裡

piDSPv0bit 檔讓 eM_USB0 模組 FPGA 具備 DSP 功能才能執行光纖網路通訊

操作如下

此時您就可以選擇分別下載至各模組 FPGA 檔 bit

74

安裝 FPLC 注意事項

當您進入 FPLC 時

按 FILE 選擇 programhellip 選擇檔案為 exp_dcmplc 出現下面畫面

正常顯示畫面為

75

DOS 環境操作

在 PC 端的操作是在 Windows 環境中的 DOS 視窗中執行指令範例如下

eFPGA progNETbit 下載 FPGA電路至網路節點0(即 USB節點)中 eFPGA testLEDbit 1 下載 FPGA電路至網路節點1中

對於單一節點的控制程序如下

1將 eM_USB模組連結個人電腦的 USB端 2eM_USB模組開機 3執行下載指令即可 eFPGA xxxxbit 4若要更改 FPGA電路只要重新執行下載指令即可

對於多個網路節點的控制程序如下

1第一組 eM_USB模組連結個人電腦的 USB端再以光纖網路依序其他各節點 2連接 USB界面者為模組0從光纖發射端連接出去的模組為1依此類推 3將所有 eM_USB模組開機 4執行下載指令如下 eFPGA progNETbit 模組0必須先下載指定的 FPGA電路 eFPGA xxxxbit 1 再依序下載其他網路模組的 FPGA電路 eFPGA yyyybit 2 eFPGA zzzzbit 最後再重新下載模組0的 FPGA電路 5換句話說模組0必須先執行 progNETbit讓光纖網路接受 FPGA控制後才能透過光纖網路下載至其他節點等全部網路節點下載完畢後再將模組0的 FPGA重新下載讓模組0也可自由執行任意的 FPGA電路

6若要更改某一個網路節點中的 FPGA電路只要重新執行下述指令 eFPGA progNETbit 模組0必須先下載指定的 FPGA電路 eFPGA yyyybit 2 下載指定網路模組的 FPGA電路 eFPGA zzzz bit 最後再重新下載模組0的 FPGA電路 換句話說除非模組0中的 FPGA已經包括光纖網路管理電路否則一定要先在

模組0中下載網路管理電路後才能下載指定網路節點的 FPGA電路

76

光纖網路通訊 FPGA 發展系統

系統配置

光纖網路通訊 FPGA 發展系統的系統配置圖如下

個人電腦(Windows) eM_USB模組

0USB

eM_USB模組1

光纖網路

eM_USB模組2

eM_USB模組N

其中

1基本模組為 eM_USB模組可用 USB界面和個人電腦連線並提供 USB對光纖網路的轉換功能使得個人電腦可以獨立控制光纖網路中的每個網路節點

2eM_USB模組也可以作為光纖網路中的網路節點透過光纖網路而接受個人電腦的

監控 3就個人電腦而言不論是 USB界面直接連結或是以光纖網路間接連結的 eM_USB模組都是可以直接監控的網路節點最多可以同時控制一個 USB節點和 30個網路節點

4對於每一個網路節點個人電腦都可執行 eM_USB模組中 FPGA的電路下載工作並在適當的 FPGA電路配合下可執行 eM_USB模組中 FPGA內部電路的讀寫控制 5透過適當的 FPGA電路設計各網路節點都可透過光纖網路和其他任何網路節點

作同步通訊執行 FPGA內部記憶體的資料交換資料交換頻率可達 1KHz以上

77

網路模組配置

每個網路模組的標準配置圖如下

eM_USB模組光纖網路

USB eM_FPGA卡

eM_DEMO模組

eM_EXP實驗模組

DC電源

其中

1網路模組以 eM_USB模組為主提供基本的 USB界面和光纖網路連線 2eM_USB模組中的 FPGACPLD採用插卡型式可選擇不同的 eM_FPGA卡包括

eM_2V1K卡可選用 Virtex系列的 XC2V250和 XC2V1000 eM_3S1K卡可選用 Spartan3系列的 XC3S400XC3S1000和 XC3S1500 eM_3S50卡可選用 Spartan3系列的 XC3S50XC3S200和 XC3S400 eM_95XL卡可選用 9500XL系列的 XC95144XL和 XC95288XL 3eM_USB模組中的對外連線有兩種一種是 26P接頭用以連接既有的各種實驗模

組另一種是兩組 50P接頭將 FPGA中各接腳引出用以連接專題實驗 4eM_DEMO模組就是插上 50P接頭的教學模組其中包括 LED 數字顯示和 44鍵盤也具備兩組的 ADC和兩組的 DAC接頭提供類比訊號的測試工具

常用的實驗組合包括

1精簡組合包括(eM_USB+eM_FPGA)提供基本的網路節點適用於專題實驗 2標準組合包括(eM_USB+eM_FPGA+eM_DEMO)提供基礎 FPGA設計的教學實驗

3實驗組合包括(eM_USB+eM_FPGA+eM_DEMO+eM_EXP)提供進階的 FPGA實驗可依需求選用不同的實驗模組

78

eM_USB 模組

eM_USB 模組的電路配置圖如下

TxRx

DCPower

USB

JP2

JP3

光纖界面

外加電源

PC連線

JP1

eM_FPGA模組

FT232 CPLD FlashROM

SRAM

10cm

6cm

JP4

其中

1對外的連線接頭包括 DC電源 可選擇單電源(5V)或是多電源(5V+12V-12V)兩種 USB界面 直接連接個人電腦 光纖界面連接光纖網路 2實驗界面包括 JP1負責內部 CPLD的電路下載 JP2JP3兩組 50P的擴張用接頭 JP4 標準 26P接頭用以連接各種實驗模組 3內部的電路配置包括 A以 SO-DIMM接頭連接各種 eM_FPGA卡 B內附 EEPROMFlashROM和 SRAM提供 FPGA作應用測試 C以一顆 FT232BM作為 USB界面解碼而以一顆 CPLD作為光纖網路解碼 D提供各種 eM_FPGA卡的電路下載功能 4內附五顆 LED由上而下依序為 usbLED指示 USB界面的讀寫狀態 tstLED可由 FPGA電路自行定義 stsLED可由 FPGA電路自行定義 RxLED 可由 FPGA電路自行定義 TxLED 可由 FPGA電路自行定義

79

外部接腳定義

外部接頭的接點順序圖示如下

上視圖

JP11 9 JP4

126225

JP31

50249

JP21

50249

而各接頭的接點定義如下

JP1 JP4 JP2 JP3 1+33V 1+12V 2+12V 1 GND 2 GND 1 GND 2 GND 2GND 3 ADC 4 DAC 3POWER 4ALARM 3 +5V 4 +5V 3nc 5 yPB2 6 yPB3 5RxNET 6TxNET 5+12V 6+12V 4TCK 7 yPB1 6 yPB4 7RxUSB 6TxUSB 7-12V 6-12V 5nc 9 yPB0 10yPB5 9RxCAN 10TxCAN 9 ADC 10 DAC 6TDO 11yPB6 12yPB7 11P0D0 12P0D1 11P1D0 12P1D1 7TDI 13yGND 14yPC3 13P0D2 14P0D3 13P1D2 14P1D3 8nc 15yPC2 16yPC1 15P0D4 16P0D5 15P1D4 16P1D5 9TMS 17yPC0 18yPA0 17P0D6 18P0D7 17P1D6 18P1D7 19yPA1 20yPA2 19P0D8 20P0D9 19P1D8 20P1D9 21yPA3 22GND 21P0D10 22P0D11 21P1D10 22P1D11 23GND 24+5V 23P0D12 24P0D13 23P1D12 24P1D13 25+5V 26nc 25P0D14 26P0D15 25P1D14 26P1D15 27P2D0 28P2D1 27PxA0 28PxA1 29P2D2 30P2D3 29PxA2 30PxA3 31P2D4 32P2D5 31PxA4 32PxA5 33P2D6 34P2D7 33PxA6 34PxA7 35P2D8 36P2D9 35PxB0 36PxB1 37P2D10 38P2D11 37PxB2 38PxB3 39P2D12 40P2D13 39PxB4 40PxB5 41P2D14 42P2D15 41PxB6 42PxB7 43ADC0 44ADC1 43PxC0 44PxC1 45ADC2 46ADC3 45PxC2 46PxC3 47ADC4 48ADC5 47PxC4 48PxC5 49DAC0 50DAC1 49PxC6 50PxC7

80

eM_FPGA 模組

在各種 eM_FPGA 模組中FPGA 對外電路的標準配置圖如下

24576MHz

FlashROM

26PSRAM

EEPROM

mD[8]

yPA[4]

FPGACPLD

mA[19]mRDmWRmCSeeCKeeCSeeDIeeDO

光纖界面 RxNETTxNET

USB 界面 RxUSBTxUSBCLK24MPOWERALARM

LED

tstLEDstsLEDRxLEDTxLED

yPB[8]yPC[4]

ADCDAC

ADC[8]

實驗模組

ADC[2]

DAC[2]

xPA[4]

xPB[8]

xPC[4]

基礎實驗

其中

1FPGACPLD可以選擇下述幾種 XC2V250XC2V1000 採用 eM_2V1K模組其中 FPGA為 FG456包裝 XC3S400XC3S1000XC3S1500採用 eM_3S1K模組其中 FPGA為 FG456包裝 XC3S400XC3S1000XC3S1500採用 eM_3S1K模組其中 FPGA為 FG456包裝 XC3S50XC3S200XC3S400 採用 eM_3S50模組其中 FPGA為 TQ144包裝 XC95144XLXC95288XL 採用 eM_95XL模組其中 CPLD為 TQ144包裝 2採用 FG456包裝者可以控制所有的 IO界面 3採用 TQ144包裝者只是不能控制 RAM和 FlashROM而可以控制其他所有的界面 4所有 FPGA模組都可自由選擇由 USB界面或是由光纖界面下載電路但是 CPLD模組只能固定由 USB界面下載電路

5所有 FPGACPLD模組都可透過 26P接頭連接既有的各種實驗模組

81

FPGA 接腳對照表

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

mD0 XD6 mD0 A17 C13 -- -- mD1 XD7 mD1 B17 D12 -- -- mD2 XD8 mD2 C17 D11 -- -- mD3 XD9 mD3 D17 C11 -- -- mD4 XD10 mD4 E17 D10 -- -- mD5 XD11 mD5 E16 C10 -- -- mD6 XD12 mD6 E14 D9 -- -- mD7 XD13 mD7 E13 D7 -- -- mA0 XD14 mA0 D13 C7 -- -- mA1 XD15 mA1 C13 D6 -- -- mA2 XA0 mA2 V5 C3 -- -- mA3 XA1 mA3 U5 C4 -- -- mA4 XA2 mA4 Y2 D3 -- -- mA5 XA3 mA5 Y1 D4 -- -- mA6 XA4 mA6 V4 E3 -- -- mA7 XA5 mA7 V3 E4 -- -- mA8 XA6 mA8 W2 F3 -- -- mA9 XA7 mA9 W1 F4 -- -- mA10 XA8 mA10 T2 G6 -- -- mA11 XA9 mA11 T1 K3 -- -- mA12 XA10 mA12 R4 K10 -- -- mA13 XA11 mA13 R3 L3 -- -- mA14 XA12 mA14 R2 L4 -- -- mRD XRD mRD R1 D5 -- -- mWR XWR mWR P6 C6 -- --

POWER P0A0 POWER B4 B20 P1 P5 ALARM P0A1 ALARM A4 A19 P2 P6 RxNET P0A2 RxNET C4 B19 P4 P7 TxNET P0A3 TxNET C5 A18 P5 P9 RxUSB P0B0 RxUSB B5 A15 P6 P10 TxUSB P0B1 TxUSB A5 B15 P7 P11 RxCAN P0B2 RxCAN D6 A14 P8 P12 RxCAN P0B3 TxCAN C6 B14 P10 P13

CLK24M CLK24M CLK24M E12 B12 P124 P38

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

PWM0H P3A0 P0D0 E6 A8 P21 P23 PWM0L P3A1 P0D1 E5 B8 P23 P24 PWM1H P3A2 P0D2 C2 B6 P24 P25 PWM1L P3A3 P0D3 C1 A5 P25 P26 PWM2H P3A4 P0D4 D2 B5 P26 P27

82

PWM2L P3A5 P0D5 D1 A4 P27 P28 PWMenb P3A6 P0D6 E4 B4 P28 P30 PHT1Z P3A7 P0D7 E3 A3 P30 P31 PHT1A P3B0 P0D8 G2 C1 P31 P32 PHT1B P3B1 P0D9 G1 C2 P32 P33 PHT0A P3B2 P0D10 H5 D1 P33 P34 PHT0B P3B3 P0D11 J6 D2 P35 P35 AMP0 P3B4 P0D12 H4 E1 P36 P39 AMP1 P3B5 P0D13 H3 E2 P40 P40 AMP2 P3B6 P0D14 H2 F2 P41 P41 AMP3 P3B7 P0D15 H1 G1 P44 P43 eeSK P0C3 P1D0 C10 B9 P20 P22 eeCS P0C2 P1D1 D10 A9 P18 P21 eeDI P0C1 P1D2 F10 B10 P17 P20 eeDO P0C0 P1D3 E10 B11 P15 P19 ssCK P0B7 P1D4 E8 A11 P14 P17 ssCS P0B6 P1D5 E7 A12 P13 P16 ssDI P0B5 P1D6 A6 B13 P12 P15 ssDO P0B4 P1D7 B6 A13 P11 P14

ppCLK P3C0 P1D8 K4 G2 P46 P44 ppDIN P3C1 P1D9 K3 K1 P47 P45 TxD P3C2 P1D10 K2 K2 P50 P46 RxD P3C3 P1D11 K1 L1 P51 P48

tstLED P3C4 P1D12 L5 L2 P52 P49 stsLED P3C5 P1D13 L4 M1 P53 P50 RxLED P3C6 P1D14 L3 M2 P55 P51 TxLED P3C7 P1D15 L2 N1 P56 P52

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

xPA0 P2A0 P2D0 AA3 N2 P59 P53 xPA1 P2A1 P2D1 Y4 T1 P60 P54 xPA2 P2A2 P2D2 AA4 T2 P63 P56 xPA3 P2A3 P2D3 AB4 U2 P68 P57 xPC0 P2A4 P2D4 W5 V1 P69 P58 xPC1 P2A5 P2D5 Y5 V2 P70 P59 xPC2 P2A6 P2D6 AA5 W1 P73 P60 xPC3 P2A7 P2D7 AB5 W2 P74 P61

-- P2B0 P2D8 V6 Y1 P76 P64 -- P2B1 P2D9 V7 Y2 P77 P66 -- P2B2 P2D10 W6 AA3 P78 P68

mCS P2B3 P2D11 Y6 AB4 P79 P69 mA15 P2B4 P2D12 V9 AA4 P80 P70 mA16 P2B5 P2D13 V10 AB5 P82 P71 mA17 P2B6 P2D14 W10 AA5 P83 P74 mA18 P2B7 P2D15 Y10 AA6 P84 P75 CS0 P2C0 ADC0 AA10 AB8 P85 P76

83

SDIN0 P2C1 ADC1 AB10 AA8 P86 P77 CS1 P2C2 ADC2 U10 AB9 P87 P78

SDIN1 P2C3 ADC3 U11 AA9 P89 P79 SCLK P2C4 ADC4 V11 AB10 P90 P80 CS2 P2C5 ADC5 W11 AA10 P92 P81

SDOUT P2C6 ADC6 Y11 AB11 P93 P82 LDAC P2C7 ADC7 AA11 AA11 P95 P83

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

xPB0 P1A0 PxA0 M1 M3 P135 P85 xPB1 P1A1 PxA1 M2 M4 P132 P86 yPB2 P1A2 PxA2 M3 N3 P131 P87 yPB3 P1A3 PxA3 M4 N4 P130 P88 yPB1 P1A4 PxA4 M5 T4 P129 P91 yPB4 P1A5 PxA5 M6 T5 P128 P92 yPB0 P1A6 PxA6 N1 U3 P127 P93 yPB5 P1A7 PxA7 N2 U4 P125 P94 yPB6 P1B0 PxB0 U13 V3 P119 P95 yPB7 P1B1 PxB1 V13 V4 P118 P96 xPB2 P1B2 PxB2 W13 W3 P116 P97 xPB3 P1B3 PxB3 Y13 W4 P113 P98 xPB4 P1B4 PxB4 AA13 Y3 P112 P100 xPB5 P1B5 PxB5 AB13 Y4 P96 P101 yPC3 P1B6 PxB6 U12 Y5 P97 P102 yPC2 P1B7 PxB7 V12 W5 P98 P103 yPC1 P1C7 PxC0 AB17 W11 P108 P113 yPC0 P1C6 PxC1 AA17 Y11 P107 P112 yPA0 P1C5 PxC2 Y17 W10 P105 P111 yPA1 P1C4 PxC3 W17 Y10 P104 P110 yPA2 P1C3 PxC4 AB18 W9 P103 P107 yPA3 P1C2 PxC5 AA18 W8 P102 P106 xPB6 P1C1 PxC6 Y18 W6 P100 P105 xPB7 P1C0 PxC7 W18 Y6 P99 P104

84

eM_DEMO 模組

eM_DEMO 模組的電路配置圖如下

eM_USB 模組

數字型 LED

0 1 2 34 5 6 78 9 A BC D E F

燈號型 LED

44 鍵盤

ADC0 ADC1 DAC0 DAC1

LED 選擇KEY 選擇

其中

1eM_DEMO模組的基本功能包括 A將 xPAxPBxPC等 16個 IO訊號引出控制 LED和鍵盤電路 B將 ADDA訊號引出並放大成+-10V的工作範圍 2LED和鍵盤可以選擇三種模式由 LED和 KEY 兩組開關作選擇圖示如下

模式1

0123

模式2 模式3

0 1 2 34 5 6 78 9 A BC D E F

0123

3模式14鍵輸入並搭配 16點的 LED燈號顯示其中 16點 LED分別對映到 xPA[0~3]xPB[0~7]和 xPC[0~3] 4組按鍵分別對映到 xPC[0~3] 4模式24鍵輸入並搭配四個 7段式數字顯示其中 數字顯示由 xPA[0~3]作數字掃瞄而由 xPB[0~7]作 7段式 LED控制 4組按鍵 分別對映到 xPC[0~3] 5模式316鍵輸入並搭配四個 7段式數字顯示其中 數字顯示由 xPA[0~3]作數字掃瞄而由 xPB[0~7]作 7段式 LED控制 16組按鍵由 xPA[0~3]作鍵盤掃瞄而由 xPC[0~3]作鍵盤讀取 6根據VHDL與數位邏輯設計的章節其中 第 1章至 10章的實驗採用模式1而 第 11章實驗採用模式2而 第 12章之後的實驗都採用模式3

85

FPGA UCF 定義

eM_3S1K 模組

NET CLK LOC = B12

NET XAlt0gt LOC = N2

NET XAlt1gt LOC = T1

NET XAlt2gt LOC = T2

NET XAlt3gt LOC = U2

NET XBlt0gt LOC = M3

NET XBlt1gt LOC = M4

NET XBlt2gt LOC = W3

NET XBlt3gt LOC = W4

NET XBlt4gt LOC = Y3

NET XBlt5gt LOC = Y4

NET XBlt6gt LOC = W6

NET XBlt7gt LOC = Y6

NET XClt0gt LOC = V1

NET XClt1gt LOC = V2

NET XClt2gt LOC = W1

NET XClt3gt LOC = W2

NET YAlt0gt LOC = W10

JP4 接頭

NET YAlt1gt LOC = Y10

NET YAlt2gt LOC = W9

NET YAlt3gt LOC = W8

NET YBlt0gt LOC = U3

NET YBlt1gt LOC = T4

NET YBlt2gt LOC = N3

NET YBlt3gt LOC = N4

NET YBlt4gt LOC = T5

NET YBlt5gt LOC = U4

NET YBlt6gt LOC = V3

NET YBlt7gt LOC = V4

NET YClt0gt LOC = Y11

NET YClt1gt LOC = W11

NET YClt2gt LOC = W5

NET YClt3gt LOC = Y5

在光碟片中 RFFPGAVHDLDEMOBIT3S1K 裡有 VHDL 與數位邏輯設計書本範例原始檔與合成檔

86

eM_3S50 模組

NET CLK LOC = P124

NET XAlt0gt LOC = P59

NET XAlt1gt LOC = P60

NET XAlt2gt LOC = P63

NET XAlt3gt LOC = P68

NET XBlt0gt LOC = P135

NET XBlt1gt LOC = P132

NET XBlt2gt LOC = P116

NET XBlt3gt LOC = P113

NET XBlt4gt LOC = P112

NET XBlt5gt LOC = P96

NET XBlt6gt LOC = P100

NET XBlt7gt LOC = P99

NET XClt0gt LOC = P69

NET XClt1gt LOC = P70

NET XClt2gt LOC = P73

NET XClt3gt LOC = P74

NET YAlt0gt LOC = P105

JP4 接頭

NET YAlt1gt LOC = P104

NET YAlt2gt LOC = P103

NET YAlt3gt LOC = P102

NET YBlt0gt LOC = P127

NET YBlt1gt LOC = P129

NET YBlt2gt LOC = P131

NET YBlt3gt LOC = P130

NET YBlt4gt LOC = P128

NET YBlt5gt LOC = P125

NET YBlt6gt LOC = P119

NET YBlt7gt LOC = P118

NET YClt0gt LOC = P107

NET YClt1gt LOC = P108

NET YClt2gt LOC = P98

NET YClt3gt LOC = P97

在光碟片中 RFFPGAVHDLDEMOBIT3S200 裡有VHDL與數位邏輯設計書本範例原始檔與合成檔

87

eM_95XL 模組

NET CLK LOC = SPIN38

NET XAlt0gt LOC = SPIN53

NET XAlt1gt LOC = SPIN54

NET XAlt2gt LOC = SPIN56

NET XAlt3gt LOC = SPIN57

NET XBlt0gt LOC = SPIN85

NET XBlt1gt LOC = SPIN86

NET XBlt2gt LOC = SPIN97

NET XBlt3gt LOC = SPIN98

NET XBlt4gt LOC = SPIN100

NET XBlt5gt LOC = SPIN101

NET XBlt6gt LOC = SPIN105

NET XBlt7gt LOC = SPIN104

NET XClt0gt LOC = SPIN58

NET XClt1gt LOC = SPIN59

NET XClt2gt LOC = SPIN60

NET XClt3gt LOC = SPIN61

NET YAlt0gt LOC = SPIN111

JP4 接頭

NET YAlt1gt LOC = SPIN110

NET YAlt2gt LOC = SPIN107

NET YAlt3gt LOC = SPIN106

NET YBlt0gt LOC = SPIN93

NET YBlt1gt LOC = SPIN91

NET YBlt2gt LOC = SPIN87

NET YBlt3gt LOC = SPIN88

NET YBlt4gt LOC = SPIN92

NET YBlt5gt LOC = SPIN94

NET YBlt6gt LOC = SPIN95

NET YBlt7gt LOC = SPIN96

NET YClt0gt LOC = SPIN112

NET YClt1gt LOC = SPIN113

NET YClt2gt LOC = SPIN103

NET YClt3gt LOC = SPIN102

在光碟片中 RFFPGAVHDLDEMOSVF95288XL 裡有VHDL與數位邏輯設計書本範例原始檔與合成

檔案

88

eM_FPGA 模組

NET CLK LOC = E12

NET XAlt0gt LOC = AA3

NET XAlt1gt LOC = Y4

NET XAlt2gt LOC = AA4

NET XAlt3gt LOC = AB4

NET XBlt0gt LOC = M1

NET XBlt1gt LOC = M2

NET XBlt2gt LOC = W13

NET XBlt3gt LOC = Y13

NET XBlt4gt LOC = AA13

NET XBlt5gt LOC = AB13

NET XBlt6gt LOC = Y18

NET XBlt7gt LOC = W18

NET XClt0gt LOC = W5

NET XClt1gt LOC = Y5

NET XClt2gt LOC = AA5

NET XClt3gt LOC = AB5

NET YAlt0gt LOC = Y17

JP4 接頭

NET YAlt1gt LOC = W17

NET YAlt2gt LOC = AB18

NET YAlt3gt LOC = AA18

NET YBlt0gt LOC = N1

NET YBlt1gt LOC = M5

NET YBlt2gt LOC = M3

NET YBlt3gt LOC = M4

NET YBlt4gt LOC = M6

NET YBlt5gt LOC = N2

NET YBlt6gt LOC = U13

NET YBlt7gt LOC = V13

NET YClt0gt LOC = AA17

NET YClt1gt LOC = AB17

NET YClt2gt LOC = V12

NET YClt3gt LOC = U12

在光碟片中 RFFPGAVHDLDEMOBIT2V250 裡有VHDL與數位邏輯設計書本範例原始檔與合成檔

89

Page 59: RFFPGA 直流馬達實驗手冊juniortek.com.tw/program/manual/RF-DC-mal.pdf · em_demo模組 em_dcm 直流伺服馬達 dc電源 rffpga 系統的直流馬達實驗規劃 其中包括:

6就頻率輸入 frq而言其計算原則是將θ=ωt轉化成θ=Σ(ωdt)因為抽樣頻率

為 8KHz所以 dt=18000而得到 frq=655368000Hz公式其中 Hz為真正的頻率在 8KHz的抽樣頻率下其範圍為 0~4000

鋸齒波產生器

此模組會產生週期性的鋸齒波方塊圖如下

outfrq

kBiasbias

ampkAmp

kFrqth

kThf=1TB

θ

A

其中

1鋸齒波也有四個參數振幅(A)頻率(F)相位(θ)和偏移(B)和正弦波的定義完全一致唯一的差異是其輸出為鋸齒波而非正弦波

2基本波形是從週期開始時為 0一直遞增到週期結束時到達最高點然後立刻回歸

到 0重新開始 3以程式結構而論鋸齒波程式幾乎就是正弦波的相位計算部分只差沒有正弦波的

查表處理而已

模組程式範例SAW_WAVEasm

local amp R0 IP kAmp 輸入點sin波的振幅 local frq R1 IP kFrq 輸入點sin波的頻率 local th R2 IP kTh 輸入點sin波的相角 local bias R3 IP kBias 輸入點sin波的中心偏移 local out R4 OP 輸出點sin波輸出 local ang R5 內部變數相位角65536=360deg local kAmp R6 1000 參數振幅值 local kFrq R7 1000 參數頻率值=655368000Hz local kTh R8 0 參數相角值360deg=256 local kBias R9 0 參數偏移值 data 11 模組變數區長度及初值 initial 啟動程序 WR ang0 WR out0 ang=out=0 RET timer 即時控制程序(8KHz) RD ang ADD (frq) WR ang ang+=frq SFR 8 ADD (th) AND 255 ACC=(ang256+th)amp0x00ff MUL (amp) SFR 8 ADD (bias) WR out out=ACCamp256+bias

59

RET

脈衝波產生器

outfrq

kBiasbias

ampkAmp

kFrqth

kThf=1TB

θ

A

pwm

kDutyduty

此模組會產生週期性的脈衝波方塊圖如下

其中

1脈衝波有五個參數其中振幅(A)頻率(F)相位(θ)和偏移(B)四個參數和正弦波

定義完全一樣另外再增加一個負載率(D) 2基本波形是從週期開始時為 1隔段時間後換為 0然後持續到週期結束再重新開始其中 1所佔有的比例就是負載率當 D=0時為 0而 D=255時為 100

3和其他參數類似負載率(D)以 duty為其輸入點而以 kDuty為其參數值

模組程式範例PLS_WAVEasm

local amp R0 IP kAmp 輸入點脈衝波的振幅 local frq R1 IP kFrq 輸入點脈衝波的頻率 local th R2 IP kTh 輸入點脈衝波的相角 local bias R3 IP kBias 輸入點脈衝波的中心偏移 local duty R4 IP kDuty 輸入點脈衝波的負載率 local out R5 OP 輸出點脈衝波輸出 local ang R6 內部變數相位角65536=360deg local kAmp R7 1000 參數振幅值 local kFrq R8 1000 參數頻率值=655368000Hz local kTh R9 0 參數相角值360deg=256 local kBias R10 0 參數偏移值 local kDuty R11 128 參數負載率100 =256 data 12 模組變數區長度及初值 initial 啟動程序 WR ang0 WR out0 ang=out=0 RET timer 即時控制程序(8KHz)

60

RD ang ADD (frq) WR ang ang+=frq SFR 8 ADD (th) AND 255 ACC=(ang256+th)amp0x00ff SUB (duty) RD (amp) JLT t1 RD 0 ACC=(amp0) t1 ADD (bias) WR out out=ACC+bias RET

IIR 一階濾波器

此模組執行一階的 IIR濾波器方塊圖如下

kau x

Z-1

+

+

-

+低通濾波器

高通濾波器dx lp

hp

濾波器參數的計算公式如下

1假設濾波器的頻寬為 hz則 ωn=hz628 2若系統頻率為 8KHz則抽樣週期 dT為 dT=dt8000 其中 dt為模組參數 3則濾波器參數為 ka=ωndT4096或是 =hzdt62880004096即 =hzdt32 4當 dt決定後所允許的訊號頻寬為(4000dt)換句話說訊號頻寬會因為 dt增加而下降

為了方便實驗的運用下面列出常用的參數對照表

濾波頻寬

(Hz)

10 20 50 100 200 500 1000 2000

訊號頻寬

(Hz)

400 800 2000 4000 4000 4000 4000 4000

模組參數 dt 10 5 2 1 1 1 1 1

模組參數 ka 320 320 320 320 640 1600 3200 6400

表格的運用方式如下

1首先決定濾波頻寬 2接著查表找出對映的參數 dt和 ka 3再查表得到對映的訊號頻寬以決定是否需要串接前級濾波器

61

模組程式範例IIR1_FILTERasm

local u R0 IP 輸入點濾波器輸入 local lp R1 OP 輸出點低通濾波器輸出 local hp R2 OP 輸出點高通濾波器輸出 local dt R3 1 參數抽樣週期 local ka R4 4096 參數增益 ka10=4096 local prd R5 內部變數抽樣週期用 data 6 模組變數區長度 initial 開機啟動程序 WR lp0 WR hp0 WR prd1 RET lp=hp=0prd=1 timer 即時控制程序 SUB prd1 JNZ b9 if (--prdgt0) return RD dt WR prd prd=dt RD (u) SUB lp WR hp hp=u-lp MUL ka SFR 12 ADD lp WR lp lp+=(hpka4096) b9 RET

資料蒐集模組

資料蒐集模組是一個非常特殊的模組專門配合 eTTY 程式中的示波器使用

模組程式範例DAS4asm

local cmd R0 0 紀錄命令0=停止1=前置記錄2=正觸發4=負觸發6=觸發記錄 local dt R1 1 抽樣週期每 dT抽樣一次 local tab R2 TP DAS表格啟始位址 local cnt R3 0 目前記錄點(0~255) local ch1 R4 0 定義頻道1的變數位址 local ch2 R5 0 定義頻道2的變數位址 local ch3 R6 0 定義頻道3的變數位址 local ch4 R7 0 定義頻道4的變數位址 local trg R8 0 定義觸發頻道的變數位址 local th R9 0 觸發準位 local tail R10 0 觸發後的抽樣個數 local buf R11 1 抽樣計數(1~dt) local pnt R12 表格位址計算pnt=tab+cnt4 local len R13 表格長度計算(0~256) data 14 定義模組變數區的長度 table tab 1024 定義表格的長度 initial 啟動程序 WR cmd0 RET cmd=0 timer 控制程序

62

ADD cmd0 JZ t9 if (cmd==0) return SUB buf1 JNZ t9 if (--buf)gt0) return RD dt WR buf dt=buf RD cnt ADD 1 AND 0xff WR cnt cnt=(cnt+1)amp0xff SFL 2 ADD tab WR pnt pnt=tab+cnt4 RD (ch1) WR (pnt) ADD pnt1 pnt++=ch1 RD (ch2) WR (pnt) ADD pnt1 pnt++=ch2 RD (ch3) WR (pnt) ADD pnt1 pnt++=ch3 RD (ch4) WR (pnt) pnt =ch4 RD cmd SUB 1 JZ t9 SUB 1 JZ t2 SUB 1 JZ t3 SUB 1 JZ t4 SUB 1 JZ t5 SUB 1 JZ t6 JR t7 t2 RD (trg) SUB th JGE t9 ADD cmd1 JR t9 wait trgltth t3 RD (trg) SUB th JLE t9 JR t6 wait trggtth t4 RD (trg) SUB th JLE t9 ADD cmd1 JR t9 wait trggtth t5 RD (trg) SUB th JGE t9 JR t6 wait trgltth t6 WR len0 WR cmd7 len=0cmd=7 t7 ADD len1 SUB tail JLT t9 WR cmd0 if ((++len)gt=0x80) cmd=0 t9 RET

與 DC 馬達控制相關的程式模組有以下 4個程式模組說明如下

(1)加減速控制模組 ACC_controlasm (2)光電盤輸入模組 POS_inputasm (3)PWM輸出模組 PWM_outputasm (4)PD控制模組 PD_controlasm

71加減速控制模組 此程式模組主要功能在於執行位置控制的加減速命令修正其數學模式採用 Lynn

濾波器的架構參見下圖

cmd

2

+

old Z -1

-

Z -1

Z -1

Z-1

Z-1x0 x1 x8 x9 x16

+ -

++

2

Z-1

Z-1 y1 y2

+

-

y0

+ +

sumZ-1

+164

12

out

dif

+

63

加減速控制模組方塊圖

其中

1Lynn 濾波器的階數固定成八階也就是 m=8其公式為 H(z) = (1-2Z-m+Z-2m)(1-2Z-1+Z-2)m2

2因為m=8所以m2=64因此最後計算低通濾波的部份時要先做除 64的運算 3因為低通濾波(lp)和 y0之間有 64倍的差異代表 y0y1y2的變化範圍比濾波器輸

入值要擴大許多例如輸入值在+-1000變化時y0y1y2很可能會在+-64000之間變化這範圍已經超出整數處理的範圍很可能會造成錯誤的計算結果

4所以在實驗時輸入值的變化範圍必須控制在+-500之間以保證計算的正確性 5對於 Lynn 濾波器當 m=8時其濾波器的頻寬固定為 1 kHzmdt也就是 dt=1時頻寬為 125 Hz dt=2時頻寬為 625Hz依此類推 6對於 Lynn 濾波器其濾波器的延遲固定為 m個抽樣週期因此設計 hp = x8 - lp 即可得到高通濾波器的對應結果 7其中乘 2和除 64的運算以移位運算取代所以整個程式中並無任何乘法運算 8Lynn 濾波器本身並不是穩定濾波器所以在程式啟動時必須確實的將所有狀態

(x0~x16)歸零否則會產生不穩定的狀態輸出

因為 Lynn濾波器中所有參數固定所以除了抽樣週期 dt 之外並無任何可調參數

抽樣週期 dt 可以控制頻寬dt 越大則濾波器頻寬越低

將步階命令值的輸出送入 Lynn 濾波器中經由低通濾波器的效應可以減緩命

令的變化程度達到加減速控制的目的以下為使用 Lynn 濾波器型式實現加減速控

制的組合語言程式列印 如欲更進一步瞭解 Lynn 濾波器與 FIR 數位濾波器之間的關係可以參考通訊實驗

四數位濾波器設計(FIR)中之說明

ACC_controlasm程式列印 local cmd R0 IP 輸入點位置命令

local out R1 OP 輸出點加減速處理後的位置命令

local dif R2 OP 輸出點位置微分命令

local axis R3 0 馬達編號0=X1=Y2=Z3=C

local old R4 內部變數微分計算用

local sumL R5 內部變數積分計算用

local sumH R6 內部變數積分計算用

local y0 R7 內部變數y(0~2)

local y1 R8 local y2 R9

local x0 R10 內部變數x(0~16)

local x1 R11 local x2 R12 local x3 R13 local x4 R14

local x5 R15 local x6 R16 local x7 R17 local x8 R18

local x9 R19 local x10 R20 local x11 R21 local x12 R22

local x13 R23 local x14 R24 local x15 R25 local x16 R26

64

data 27 模組變數區長度

initial 開機啟動程序

WR dif0 RD (cmd) WR out WR old dif=0 out=old=cmd

sumHL=cmd64

SFL 6 WR sumL RD out SFR 10 SGN 5 WR sumH

RPT 17 WR x00 RPT 3 WR y00 RET x[0~16]=0y[0~2]=0

timer 即時控制程序

RD (cmd) SUBX old WR x0 x0=cmd-old old=cmd

SUB x81 ADD x16 ADD y11 SUB y2 WR y0 y0=x0-2x8+x16+2y1-y2

SGN ADD sumL WR sumL RDH ADC sumH WR sumH sumHL+=y0

WRH RD sumL SFR 6 WR out out=sumHL64

RD y0 SGN SFR WR dif dif=y032mm

RD x0 RPT 16 RDX x1 x[i]=x[i-1] i=1~16

RD y0 RDX y1 WR y2 y[i]=y[i-1] i=1~2

b9 RET

72光電盤輸入模組

DC馬達的位置由光電盤量測之預設儲存於 0xac與 0xbe二個輸入埠位址中其中位址 0xac記錄 X軸馬達的位置位址 0xbe記錄 Y軸馬達的位置由於本實驗的DC馬達接在 Y軸的位置上因此程式中直接選用 Y軸的輸入 光電盤位置輸入的程式列印如下其中速度由位置的差分而得至於馬達的位置

則使用內部 2個 word加以記錄精度為 32位元 POS_inputasm程式列印 local spd R0 OP 輸出點速度量測值

local ang R1 OP 輸出點角度量測值

local angH R2 內部變數角度的 32 位元部分

local mode R3 0x308 模式選擇15MHzAB 相正反向輸入

local pht R4 0xac 輸入阜地址光電盤輸入(0xac)

local phtc R5 0xbe 輸入阜地址光電盤模式(0xbe)

local old R6 內部變數速度更新用

data 7 模組變數區長度

initial 開機啟動程序

RD mode WR (phtc) phtc=mode

RD (pht) WR old WR spd0 RET old=phtspd=0

timer 即時控制程序

RD (pht) SUBX old SGN 11 WR spd spd=(pht-old)old=pht

65

ADD ang WR ang angHL+=spd

RDH ADC angH WR angH

RET

73 PWM輸出控制模組 模組方塊

cmd PWM輸出

程式說明 1在開機時將切換保護時間寫到輸出阜 0xbc上其中切換保護值為 0~6360=5us 2在每次 timer interrupt時將 cmd訊號處理後寫到輸出阜 0xb8上

PWM_outputasm程式列印 local cmd R0 IP gnd 輸入點v相命令

local gain R1 4096 參數輸出增益1=4096

local bias R2 2048 參數輸出偏壓0=2048

local limit R3 4095 參數輸出極限1=4095

local zone R4 0x88f0 參數頻率=12KHz切換保護=5us

local pwm R5 0xb8 輸出阜地址PWM0 輸出(0xb8)

local mode R6 0xbc 輸出阜地址PWM 模式(0xbc)

local p0md R7 0xf8 輸出阜地址port0 模式(0xf8)

local gnd R8 0 輸入接地點

data 9 模組變數區長度

initial 開機啟動程序

RD bias WR (pwm) pwm=bias

RD 0xffff WR (p0md) set port0 mode

RD zone WR (mode) RET mode=zone

stop 關機保護程序

RD bias WR (pwm) RET pwm=bias

timer 即時控制程序

RD (mode) xor 1 and 1 WR (mode) trigger watch-dog

RD (cmd) MUL gain SFR 12 ADD bias ACC=(cmdgain4096)+bias

MAX 0 MIN limit WR (pwm) pwm=limit(ACC)

RET

66

74 PD 控制模組

PD控制的模組方塊參見圖二十一所示其中比例控制的部份直接由增益 kp加以調整微分控制的部份則由誤差的差分經增益 kd的調整而得

Σ+

-

cmd

fdk

err out

Σ

pk

dk

Σ

+

+

+

-

old1minusZ

PD控制器的方塊圖

PD_controlasm程式列印 local cmd R0 IP gnd 輸入點位置命令(可忽略)

local fdk R1 IP gnd 輸入點位置回授(可忽略)

local out R2 OP 輸出點用以控制速度迴路

local kp R3 256 參數增益 kp10=256

local kd R4 0 參數增益 kd10=256

local err R5 0 內部變數

local old R6 0 內部變數

local gnd R7 0 無輸入時的短路點

data 8 模組變數區長度

initial 開機啟動程序

WR out0 WR old0 RET out=old=0

timer 即時控制程序

RD (cmd) SUB (fdk) PRTF WR err

MUL kp SFR 8 P=(cmd-fdk)kp256

RDS err SUBX old MUL kd SFR 8 D=(err-old)kd256

ADDS

WR out out=P+D

RET

程式中預設增益值的 10以整數值 256為基底因此使用 SFR 8的指令加以調

整另外在在計算微分項的程式部份用到 SUBX old的指令其詳細的暫存器動作如

下 參考 piDSP的指令說明SUBX指令將總共用到 3個時序參考錯誤 找不到參照

67

來源在時序 1時將原先 AX的資料拷貝一份到 HX中時序 2時正式執行減

法的動作所以 AX暫存器中的內容會變成 err-old時序 3時DSP會將存放在 HX暫存器中的內容拷貝一份到 old的記憶體中也就是經由 SUBX此一精簡指令將

同時完成計算差分所需要的相減與資料疊代的動作有效的利用 piDSP控制器 DSP核心的精簡指令將可以大幅提昇系統的計算速度

HX AXoldSUBXerr err

old

err

errerr olderr minus

1_err

errerr olderr minus err

1_err

1

2

3

SUBX的指令時序與暫存器變化

68

8附錄快速安裝說明

光纖網路通訊 FPGA 發展系統 (適用於 WIN-XP200098 系統)

快速安裝說明

26Pin 負載輸出入埠

雙電源︵5

12

伏︶輸入埠

單電源︵5

伏︶輸入埠

USB

光纖線輸

號 光纖線輸出埠

入 傳 埠

首先將光碟片 RFFPGA 目錄檔案拷貝在您工作硬碟裡面

第一次安裝時先將 USB 傳輸線接上電腦主機將電源供應器接上 FPGA 模組此時電

腦會出現安裝 USB-Serial 驅動程式選擇從清單安裝此驅動程式放置在光碟片

RFFPGA-USBdrive 選擇您目前安裝系統

可選擇 WIN-98WIN-MEWIN-2000WIN-XP 系統配合您現在工作電腦作業系統

69

注意一般電腦 USB 埠很多插口當您安裝驅動程式時是配合您當時插入之埠

下次如您插入不同接口埠時電腦會再次要求安裝驅動程式這是正常現象請再次安

裝驅動程式否則無法使用

FPLC 操作

首先進入 RFFPGA裡子目錄 testASM直接點選 fPLCexe 出現下面操作畫面(也可直接將

此檔案放置桌面直接點選)

(或者選擇 File 再執行 Setuphellip 選擇您要執行 CAI 檔)

70

進入下面操作畫面 首先使用滑鼠在 FPGA下載按鈕單擊動作使 FPGA變成 DSP晶片 實驗一至實驗五皆為使用 DSP組合語言設計程式其原始程式分別為 testASM1至testASM5可使用 texPad 開啟與編輯程式內容 實驗三與實驗五多有 IO控制動作 當選擇實驗三時出現下面畫面

71

eM_USB 模組

數字型 LED

0 1 2 34 5 6 78 9 A BC D E F

燈號型 LED

44 鍵盤

ADC0 ADC1 DAC0 DAC1

LED 選擇KEY 選擇

模 式 1

0123

注意操作畫面 3與 4 說明開關與按鍵選擇位置後選擇程式下載再按程式啟動如您

按下 0-3按鍵時燈號型 LED會有不同方向閃爍顯示程式停止時結束所有 IO控制動作再按回首頁選擇其他實驗 實驗四與實驗五

模式3

0 1 2 34 5 6 78 9 A BC D E F

按照上面開關選擇直接操作如果以上實驗皆能按照正常操作表示您光纖網路通訊

FPGA發展模組以能正常使用 注意 開機與關機動作順序如下

開機電腦啟動 --- eM_USB 模組電源接上 --- USB 接上電腦 ---

啟動 FPLC 軟體 --- 下載 FPGA 程式

關機關閉 FPLC 軟體 --- eM_USB 模組電源拔掉 --- 拔掉電腦 USB 接頭 ---關掉

電腦

如果以上順序有亂可能造成 USB 找不到驅動造成無法下載經過幾次測試還是

無法下載建議重新啟動電腦主機按照正確步驟操作

72

FPGA 下載操作

進入 FPLC 操作系統按照下列步驟選擇節點模組與下載 bit FPGA 檔案

在 VHDLDEMO 子目錄下您可以選擇您目前 FPGA 種類型號在此型號下我們已將 VHDL

與數位邏輯設計課本範例全部放於此處

73

光纖網路連線 FPGA 下載操作

首先利用光纖線將 eM_USB0 模組光纖輸出埠接至 eM_USB1 模組光纖輸入埠以此

類推最後再將最後 eM_USBN 模組光纖輸出埠接至 eM_USB0 模組光纖輸入埠配置

如附圖方式

個人電腦(Windows) eM_USB模組

0USB

eM_USB模組1

光纖網路

eM_USB模組2

eM_USB模組N

配置完成後進入 FPLC 系統首先必須先將 Node00 下載在 testASM 子目錄裡

piDSPv0bit 檔讓 eM_USB0 模組 FPGA 具備 DSP 功能才能執行光纖網路通訊

操作如下

此時您就可以選擇分別下載至各模組 FPGA 檔 bit

74

安裝 FPLC 注意事項

當您進入 FPLC 時

按 FILE 選擇 programhellip 選擇檔案為 exp_dcmplc 出現下面畫面

正常顯示畫面為

75

DOS 環境操作

在 PC 端的操作是在 Windows 環境中的 DOS 視窗中執行指令範例如下

eFPGA progNETbit 下載 FPGA電路至網路節點0(即 USB節點)中 eFPGA testLEDbit 1 下載 FPGA電路至網路節點1中

對於單一節點的控制程序如下

1將 eM_USB模組連結個人電腦的 USB端 2eM_USB模組開機 3執行下載指令即可 eFPGA xxxxbit 4若要更改 FPGA電路只要重新執行下載指令即可

對於多個網路節點的控制程序如下

1第一組 eM_USB模組連結個人電腦的 USB端再以光纖網路依序其他各節點 2連接 USB界面者為模組0從光纖發射端連接出去的模組為1依此類推 3將所有 eM_USB模組開機 4執行下載指令如下 eFPGA progNETbit 模組0必須先下載指定的 FPGA電路 eFPGA xxxxbit 1 再依序下載其他網路模組的 FPGA電路 eFPGA yyyybit 2 eFPGA zzzzbit 最後再重新下載模組0的 FPGA電路 5換句話說模組0必須先執行 progNETbit讓光纖網路接受 FPGA控制後才能透過光纖網路下載至其他節點等全部網路節點下載完畢後再將模組0的 FPGA重新下載讓模組0也可自由執行任意的 FPGA電路

6若要更改某一個網路節點中的 FPGA電路只要重新執行下述指令 eFPGA progNETbit 模組0必須先下載指定的 FPGA電路 eFPGA yyyybit 2 下載指定網路模組的 FPGA電路 eFPGA zzzz bit 最後再重新下載模組0的 FPGA電路 換句話說除非模組0中的 FPGA已經包括光纖網路管理電路否則一定要先在

模組0中下載網路管理電路後才能下載指定網路節點的 FPGA電路

76

光纖網路通訊 FPGA 發展系統

系統配置

光纖網路通訊 FPGA 發展系統的系統配置圖如下

個人電腦(Windows) eM_USB模組

0USB

eM_USB模組1

光纖網路

eM_USB模組2

eM_USB模組N

其中

1基本模組為 eM_USB模組可用 USB界面和個人電腦連線並提供 USB對光纖網路的轉換功能使得個人電腦可以獨立控制光纖網路中的每個網路節點

2eM_USB模組也可以作為光纖網路中的網路節點透過光纖網路而接受個人電腦的

監控 3就個人電腦而言不論是 USB界面直接連結或是以光纖網路間接連結的 eM_USB模組都是可以直接監控的網路節點最多可以同時控制一個 USB節點和 30個網路節點

4對於每一個網路節點個人電腦都可執行 eM_USB模組中 FPGA的電路下載工作並在適當的 FPGA電路配合下可執行 eM_USB模組中 FPGA內部電路的讀寫控制 5透過適當的 FPGA電路設計各網路節點都可透過光纖網路和其他任何網路節點

作同步通訊執行 FPGA內部記憶體的資料交換資料交換頻率可達 1KHz以上

77

網路模組配置

每個網路模組的標準配置圖如下

eM_USB模組光纖網路

USB eM_FPGA卡

eM_DEMO模組

eM_EXP實驗模組

DC電源

其中

1網路模組以 eM_USB模組為主提供基本的 USB界面和光纖網路連線 2eM_USB模組中的 FPGACPLD採用插卡型式可選擇不同的 eM_FPGA卡包括

eM_2V1K卡可選用 Virtex系列的 XC2V250和 XC2V1000 eM_3S1K卡可選用 Spartan3系列的 XC3S400XC3S1000和 XC3S1500 eM_3S50卡可選用 Spartan3系列的 XC3S50XC3S200和 XC3S400 eM_95XL卡可選用 9500XL系列的 XC95144XL和 XC95288XL 3eM_USB模組中的對外連線有兩種一種是 26P接頭用以連接既有的各種實驗模

組另一種是兩組 50P接頭將 FPGA中各接腳引出用以連接專題實驗 4eM_DEMO模組就是插上 50P接頭的教學模組其中包括 LED 數字顯示和 44鍵盤也具備兩組的 ADC和兩組的 DAC接頭提供類比訊號的測試工具

常用的實驗組合包括

1精簡組合包括(eM_USB+eM_FPGA)提供基本的網路節點適用於專題實驗 2標準組合包括(eM_USB+eM_FPGA+eM_DEMO)提供基礎 FPGA設計的教學實驗

3實驗組合包括(eM_USB+eM_FPGA+eM_DEMO+eM_EXP)提供進階的 FPGA實驗可依需求選用不同的實驗模組

78

eM_USB 模組

eM_USB 模組的電路配置圖如下

TxRx

DCPower

USB

JP2

JP3

光纖界面

外加電源

PC連線

JP1

eM_FPGA模組

FT232 CPLD FlashROM

SRAM

10cm

6cm

JP4

其中

1對外的連線接頭包括 DC電源 可選擇單電源(5V)或是多電源(5V+12V-12V)兩種 USB界面 直接連接個人電腦 光纖界面連接光纖網路 2實驗界面包括 JP1負責內部 CPLD的電路下載 JP2JP3兩組 50P的擴張用接頭 JP4 標準 26P接頭用以連接各種實驗模組 3內部的電路配置包括 A以 SO-DIMM接頭連接各種 eM_FPGA卡 B內附 EEPROMFlashROM和 SRAM提供 FPGA作應用測試 C以一顆 FT232BM作為 USB界面解碼而以一顆 CPLD作為光纖網路解碼 D提供各種 eM_FPGA卡的電路下載功能 4內附五顆 LED由上而下依序為 usbLED指示 USB界面的讀寫狀態 tstLED可由 FPGA電路自行定義 stsLED可由 FPGA電路自行定義 RxLED 可由 FPGA電路自行定義 TxLED 可由 FPGA電路自行定義

79

外部接腳定義

外部接頭的接點順序圖示如下

上視圖

JP11 9 JP4

126225

JP31

50249

JP21

50249

而各接頭的接點定義如下

JP1 JP4 JP2 JP3 1+33V 1+12V 2+12V 1 GND 2 GND 1 GND 2 GND 2GND 3 ADC 4 DAC 3POWER 4ALARM 3 +5V 4 +5V 3nc 5 yPB2 6 yPB3 5RxNET 6TxNET 5+12V 6+12V 4TCK 7 yPB1 6 yPB4 7RxUSB 6TxUSB 7-12V 6-12V 5nc 9 yPB0 10yPB5 9RxCAN 10TxCAN 9 ADC 10 DAC 6TDO 11yPB6 12yPB7 11P0D0 12P0D1 11P1D0 12P1D1 7TDI 13yGND 14yPC3 13P0D2 14P0D3 13P1D2 14P1D3 8nc 15yPC2 16yPC1 15P0D4 16P0D5 15P1D4 16P1D5 9TMS 17yPC0 18yPA0 17P0D6 18P0D7 17P1D6 18P1D7 19yPA1 20yPA2 19P0D8 20P0D9 19P1D8 20P1D9 21yPA3 22GND 21P0D10 22P0D11 21P1D10 22P1D11 23GND 24+5V 23P0D12 24P0D13 23P1D12 24P1D13 25+5V 26nc 25P0D14 26P0D15 25P1D14 26P1D15 27P2D0 28P2D1 27PxA0 28PxA1 29P2D2 30P2D3 29PxA2 30PxA3 31P2D4 32P2D5 31PxA4 32PxA5 33P2D6 34P2D7 33PxA6 34PxA7 35P2D8 36P2D9 35PxB0 36PxB1 37P2D10 38P2D11 37PxB2 38PxB3 39P2D12 40P2D13 39PxB4 40PxB5 41P2D14 42P2D15 41PxB6 42PxB7 43ADC0 44ADC1 43PxC0 44PxC1 45ADC2 46ADC3 45PxC2 46PxC3 47ADC4 48ADC5 47PxC4 48PxC5 49DAC0 50DAC1 49PxC6 50PxC7

80

eM_FPGA 模組

在各種 eM_FPGA 模組中FPGA 對外電路的標準配置圖如下

24576MHz

FlashROM

26PSRAM

EEPROM

mD[8]

yPA[4]

FPGACPLD

mA[19]mRDmWRmCSeeCKeeCSeeDIeeDO

光纖界面 RxNETTxNET

USB 界面 RxUSBTxUSBCLK24MPOWERALARM

LED

tstLEDstsLEDRxLEDTxLED

yPB[8]yPC[4]

ADCDAC

ADC[8]

實驗模組

ADC[2]

DAC[2]

xPA[4]

xPB[8]

xPC[4]

基礎實驗

其中

1FPGACPLD可以選擇下述幾種 XC2V250XC2V1000 採用 eM_2V1K模組其中 FPGA為 FG456包裝 XC3S400XC3S1000XC3S1500採用 eM_3S1K模組其中 FPGA為 FG456包裝 XC3S400XC3S1000XC3S1500採用 eM_3S1K模組其中 FPGA為 FG456包裝 XC3S50XC3S200XC3S400 採用 eM_3S50模組其中 FPGA為 TQ144包裝 XC95144XLXC95288XL 採用 eM_95XL模組其中 CPLD為 TQ144包裝 2採用 FG456包裝者可以控制所有的 IO界面 3採用 TQ144包裝者只是不能控制 RAM和 FlashROM而可以控制其他所有的界面 4所有 FPGA模組都可自由選擇由 USB界面或是由光纖界面下載電路但是 CPLD模組只能固定由 USB界面下載電路

5所有 FPGACPLD模組都可透過 26P接頭連接既有的各種實驗模組

81

FPGA 接腳對照表

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

mD0 XD6 mD0 A17 C13 -- -- mD1 XD7 mD1 B17 D12 -- -- mD2 XD8 mD2 C17 D11 -- -- mD3 XD9 mD3 D17 C11 -- -- mD4 XD10 mD4 E17 D10 -- -- mD5 XD11 mD5 E16 C10 -- -- mD6 XD12 mD6 E14 D9 -- -- mD7 XD13 mD7 E13 D7 -- -- mA0 XD14 mA0 D13 C7 -- -- mA1 XD15 mA1 C13 D6 -- -- mA2 XA0 mA2 V5 C3 -- -- mA3 XA1 mA3 U5 C4 -- -- mA4 XA2 mA4 Y2 D3 -- -- mA5 XA3 mA5 Y1 D4 -- -- mA6 XA4 mA6 V4 E3 -- -- mA7 XA5 mA7 V3 E4 -- -- mA8 XA6 mA8 W2 F3 -- -- mA9 XA7 mA9 W1 F4 -- -- mA10 XA8 mA10 T2 G6 -- -- mA11 XA9 mA11 T1 K3 -- -- mA12 XA10 mA12 R4 K10 -- -- mA13 XA11 mA13 R3 L3 -- -- mA14 XA12 mA14 R2 L4 -- -- mRD XRD mRD R1 D5 -- -- mWR XWR mWR P6 C6 -- --

POWER P0A0 POWER B4 B20 P1 P5 ALARM P0A1 ALARM A4 A19 P2 P6 RxNET P0A2 RxNET C4 B19 P4 P7 TxNET P0A3 TxNET C5 A18 P5 P9 RxUSB P0B0 RxUSB B5 A15 P6 P10 TxUSB P0B1 TxUSB A5 B15 P7 P11 RxCAN P0B2 RxCAN D6 A14 P8 P12 RxCAN P0B3 TxCAN C6 B14 P10 P13

CLK24M CLK24M CLK24M E12 B12 P124 P38

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

PWM0H P3A0 P0D0 E6 A8 P21 P23 PWM0L P3A1 P0D1 E5 B8 P23 P24 PWM1H P3A2 P0D2 C2 B6 P24 P25 PWM1L P3A3 P0D3 C1 A5 P25 P26 PWM2H P3A4 P0D4 D2 B5 P26 P27

82

PWM2L P3A5 P0D5 D1 A4 P27 P28 PWMenb P3A6 P0D6 E4 B4 P28 P30 PHT1Z P3A7 P0D7 E3 A3 P30 P31 PHT1A P3B0 P0D8 G2 C1 P31 P32 PHT1B P3B1 P0D9 G1 C2 P32 P33 PHT0A P3B2 P0D10 H5 D1 P33 P34 PHT0B P3B3 P0D11 J6 D2 P35 P35 AMP0 P3B4 P0D12 H4 E1 P36 P39 AMP1 P3B5 P0D13 H3 E2 P40 P40 AMP2 P3B6 P0D14 H2 F2 P41 P41 AMP3 P3B7 P0D15 H1 G1 P44 P43 eeSK P0C3 P1D0 C10 B9 P20 P22 eeCS P0C2 P1D1 D10 A9 P18 P21 eeDI P0C1 P1D2 F10 B10 P17 P20 eeDO P0C0 P1D3 E10 B11 P15 P19 ssCK P0B7 P1D4 E8 A11 P14 P17 ssCS P0B6 P1D5 E7 A12 P13 P16 ssDI P0B5 P1D6 A6 B13 P12 P15 ssDO P0B4 P1D7 B6 A13 P11 P14

ppCLK P3C0 P1D8 K4 G2 P46 P44 ppDIN P3C1 P1D9 K3 K1 P47 P45 TxD P3C2 P1D10 K2 K2 P50 P46 RxD P3C3 P1D11 K1 L1 P51 P48

tstLED P3C4 P1D12 L5 L2 P52 P49 stsLED P3C5 P1D13 L4 M1 P53 P50 RxLED P3C6 P1D14 L3 M2 P55 P51 TxLED P3C7 P1D15 L2 N1 P56 P52

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

xPA0 P2A0 P2D0 AA3 N2 P59 P53 xPA1 P2A1 P2D1 Y4 T1 P60 P54 xPA2 P2A2 P2D2 AA4 T2 P63 P56 xPA3 P2A3 P2D3 AB4 U2 P68 P57 xPC0 P2A4 P2D4 W5 V1 P69 P58 xPC1 P2A5 P2D5 Y5 V2 P70 P59 xPC2 P2A6 P2D6 AA5 W1 P73 P60 xPC3 P2A7 P2D7 AB5 W2 P74 P61

-- P2B0 P2D8 V6 Y1 P76 P64 -- P2B1 P2D9 V7 Y2 P77 P66 -- P2B2 P2D10 W6 AA3 P78 P68

mCS P2B3 P2D11 Y6 AB4 P79 P69 mA15 P2B4 P2D12 V9 AA4 P80 P70 mA16 P2B5 P2D13 V10 AB5 P82 P71 mA17 P2B6 P2D14 W10 AA5 P83 P74 mA18 P2B7 P2D15 Y10 AA6 P84 P75 CS0 P2C0 ADC0 AA10 AB8 P85 P76

83

SDIN0 P2C1 ADC1 AB10 AA8 P86 P77 CS1 P2C2 ADC2 U10 AB9 P87 P78

SDIN1 P2C3 ADC3 U11 AA9 P89 P79 SCLK P2C4 ADC4 V11 AB10 P90 P80 CS2 P2C5 ADC5 W11 AA10 P92 P81

SDOUT P2C6 ADC6 Y11 AB11 P93 P82 LDAC P2C7 ADC7 AA11 AA11 P95 P83

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

xPB0 P1A0 PxA0 M1 M3 P135 P85 xPB1 P1A1 PxA1 M2 M4 P132 P86 yPB2 P1A2 PxA2 M3 N3 P131 P87 yPB3 P1A3 PxA3 M4 N4 P130 P88 yPB1 P1A4 PxA4 M5 T4 P129 P91 yPB4 P1A5 PxA5 M6 T5 P128 P92 yPB0 P1A6 PxA6 N1 U3 P127 P93 yPB5 P1A7 PxA7 N2 U4 P125 P94 yPB6 P1B0 PxB0 U13 V3 P119 P95 yPB7 P1B1 PxB1 V13 V4 P118 P96 xPB2 P1B2 PxB2 W13 W3 P116 P97 xPB3 P1B3 PxB3 Y13 W4 P113 P98 xPB4 P1B4 PxB4 AA13 Y3 P112 P100 xPB5 P1B5 PxB5 AB13 Y4 P96 P101 yPC3 P1B6 PxB6 U12 Y5 P97 P102 yPC2 P1B7 PxB7 V12 W5 P98 P103 yPC1 P1C7 PxC0 AB17 W11 P108 P113 yPC0 P1C6 PxC1 AA17 Y11 P107 P112 yPA0 P1C5 PxC2 Y17 W10 P105 P111 yPA1 P1C4 PxC3 W17 Y10 P104 P110 yPA2 P1C3 PxC4 AB18 W9 P103 P107 yPA3 P1C2 PxC5 AA18 W8 P102 P106 xPB6 P1C1 PxC6 Y18 W6 P100 P105 xPB7 P1C0 PxC7 W18 Y6 P99 P104

84

eM_DEMO 模組

eM_DEMO 模組的電路配置圖如下

eM_USB 模組

數字型 LED

0 1 2 34 5 6 78 9 A BC D E F

燈號型 LED

44 鍵盤

ADC0 ADC1 DAC0 DAC1

LED 選擇KEY 選擇

其中

1eM_DEMO模組的基本功能包括 A將 xPAxPBxPC等 16個 IO訊號引出控制 LED和鍵盤電路 B將 ADDA訊號引出並放大成+-10V的工作範圍 2LED和鍵盤可以選擇三種模式由 LED和 KEY 兩組開關作選擇圖示如下

模式1

0123

模式2 模式3

0 1 2 34 5 6 78 9 A BC D E F

0123

3模式14鍵輸入並搭配 16點的 LED燈號顯示其中 16點 LED分別對映到 xPA[0~3]xPB[0~7]和 xPC[0~3] 4組按鍵分別對映到 xPC[0~3] 4模式24鍵輸入並搭配四個 7段式數字顯示其中 數字顯示由 xPA[0~3]作數字掃瞄而由 xPB[0~7]作 7段式 LED控制 4組按鍵 分別對映到 xPC[0~3] 5模式316鍵輸入並搭配四個 7段式數字顯示其中 數字顯示由 xPA[0~3]作數字掃瞄而由 xPB[0~7]作 7段式 LED控制 16組按鍵由 xPA[0~3]作鍵盤掃瞄而由 xPC[0~3]作鍵盤讀取 6根據VHDL與數位邏輯設計的章節其中 第 1章至 10章的實驗採用模式1而 第 11章實驗採用模式2而 第 12章之後的實驗都採用模式3

85

FPGA UCF 定義

eM_3S1K 模組

NET CLK LOC = B12

NET XAlt0gt LOC = N2

NET XAlt1gt LOC = T1

NET XAlt2gt LOC = T2

NET XAlt3gt LOC = U2

NET XBlt0gt LOC = M3

NET XBlt1gt LOC = M4

NET XBlt2gt LOC = W3

NET XBlt3gt LOC = W4

NET XBlt4gt LOC = Y3

NET XBlt5gt LOC = Y4

NET XBlt6gt LOC = W6

NET XBlt7gt LOC = Y6

NET XClt0gt LOC = V1

NET XClt1gt LOC = V2

NET XClt2gt LOC = W1

NET XClt3gt LOC = W2

NET YAlt0gt LOC = W10

JP4 接頭

NET YAlt1gt LOC = Y10

NET YAlt2gt LOC = W9

NET YAlt3gt LOC = W8

NET YBlt0gt LOC = U3

NET YBlt1gt LOC = T4

NET YBlt2gt LOC = N3

NET YBlt3gt LOC = N4

NET YBlt4gt LOC = T5

NET YBlt5gt LOC = U4

NET YBlt6gt LOC = V3

NET YBlt7gt LOC = V4

NET YClt0gt LOC = Y11

NET YClt1gt LOC = W11

NET YClt2gt LOC = W5

NET YClt3gt LOC = Y5

在光碟片中 RFFPGAVHDLDEMOBIT3S1K 裡有 VHDL 與數位邏輯設計書本範例原始檔與合成檔

86

eM_3S50 模組

NET CLK LOC = P124

NET XAlt0gt LOC = P59

NET XAlt1gt LOC = P60

NET XAlt2gt LOC = P63

NET XAlt3gt LOC = P68

NET XBlt0gt LOC = P135

NET XBlt1gt LOC = P132

NET XBlt2gt LOC = P116

NET XBlt3gt LOC = P113

NET XBlt4gt LOC = P112

NET XBlt5gt LOC = P96

NET XBlt6gt LOC = P100

NET XBlt7gt LOC = P99

NET XClt0gt LOC = P69

NET XClt1gt LOC = P70

NET XClt2gt LOC = P73

NET XClt3gt LOC = P74

NET YAlt0gt LOC = P105

JP4 接頭

NET YAlt1gt LOC = P104

NET YAlt2gt LOC = P103

NET YAlt3gt LOC = P102

NET YBlt0gt LOC = P127

NET YBlt1gt LOC = P129

NET YBlt2gt LOC = P131

NET YBlt3gt LOC = P130

NET YBlt4gt LOC = P128

NET YBlt5gt LOC = P125

NET YBlt6gt LOC = P119

NET YBlt7gt LOC = P118

NET YClt0gt LOC = P107

NET YClt1gt LOC = P108

NET YClt2gt LOC = P98

NET YClt3gt LOC = P97

在光碟片中 RFFPGAVHDLDEMOBIT3S200 裡有VHDL與數位邏輯設計書本範例原始檔與合成檔

87

eM_95XL 模組

NET CLK LOC = SPIN38

NET XAlt0gt LOC = SPIN53

NET XAlt1gt LOC = SPIN54

NET XAlt2gt LOC = SPIN56

NET XAlt3gt LOC = SPIN57

NET XBlt0gt LOC = SPIN85

NET XBlt1gt LOC = SPIN86

NET XBlt2gt LOC = SPIN97

NET XBlt3gt LOC = SPIN98

NET XBlt4gt LOC = SPIN100

NET XBlt5gt LOC = SPIN101

NET XBlt6gt LOC = SPIN105

NET XBlt7gt LOC = SPIN104

NET XClt0gt LOC = SPIN58

NET XClt1gt LOC = SPIN59

NET XClt2gt LOC = SPIN60

NET XClt3gt LOC = SPIN61

NET YAlt0gt LOC = SPIN111

JP4 接頭

NET YAlt1gt LOC = SPIN110

NET YAlt2gt LOC = SPIN107

NET YAlt3gt LOC = SPIN106

NET YBlt0gt LOC = SPIN93

NET YBlt1gt LOC = SPIN91

NET YBlt2gt LOC = SPIN87

NET YBlt3gt LOC = SPIN88

NET YBlt4gt LOC = SPIN92

NET YBlt5gt LOC = SPIN94

NET YBlt6gt LOC = SPIN95

NET YBlt7gt LOC = SPIN96

NET YClt0gt LOC = SPIN112

NET YClt1gt LOC = SPIN113

NET YClt2gt LOC = SPIN103

NET YClt3gt LOC = SPIN102

在光碟片中 RFFPGAVHDLDEMOSVF95288XL 裡有VHDL與數位邏輯設計書本範例原始檔與合成

檔案

88

eM_FPGA 模組

NET CLK LOC = E12

NET XAlt0gt LOC = AA3

NET XAlt1gt LOC = Y4

NET XAlt2gt LOC = AA4

NET XAlt3gt LOC = AB4

NET XBlt0gt LOC = M1

NET XBlt1gt LOC = M2

NET XBlt2gt LOC = W13

NET XBlt3gt LOC = Y13

NET XBlt4gt LOC = AA13

NET XBlt5gt LOC = AB13

NET XBlt6gt LOC = Y18

NET XBlt7gt LOC = W18

NET XClt0gt LOC = W5

NET XClt1gt LOC = Y5

NET XClt2gt LOC = AA5

NET XClt3gt LOC = AB5

NET YAlt0gt LOC = Y17

JP4 接頭

NET YAlt1gt LOC = W17

NET YAlt2gt LOC = AB18

NET YAlt3gt LOC = AA18

NET YBlt0gt LOC = N1

NET YBlt1gt LOC = M5

NET YBlt2gt LOC = M3

NET YBlt3gt LOC = M4

NET YBlt4gt LOC = M6

NET YBlt5gt LOC = N2

NET YBlt6gt LOC = U13

NET YBlt7gt LOC = V13

NET YClt0gt LOC = AA17

NET YClt1gt LOC = AB17

NET YClt2gt LOC = V12

NET YClt3gt LOC = U12

在光碟片中 RFFPGAVHDLDEMOBIT2V250 裡有VHDL與數位邏輯設計書本範例原始檔與合成檔

89

Page 60: RFFPGA 直流馬達實驗手冊juniortek.com.tw/program/manual/RF-DC-mal.pdf · em_demo模組 em_dcm 直流伺服馬達 dc電源 rffpga 系統的直流馬達實驗規劃 其中包括:

RET

脈衝波產生器

outfrq

kBiasbias

ampkAmp

kFrqth

kThf=1TB

θ

A

pwm

kDutyduty

此模組會產生週期性的脈衝波方塊圖如下

其中

1脈衝波有五個參數其中振幅(A)頻率(F)相位(θ)和偏移(B)四個參數和正弦波

定義完全一樣另外再增加一個負載率(D) 2基本波形是從週期開始時為 1隔段時間後換為 0然後持續到週期結束再重新開始其中 1所佔有的比例就是負載率當 D=0時為 0而 D=255時為 100

3和其他參數類似負載率(D)以 duty為其輸入點而以 kDuty為其參數值

模組程式範例PLS_WAVEasm

local amp R0 IP kAmp 輸入點脈衝波的振幅 local frq R1 IP kFrq 輸入點脈衝波的頻率 local th R2 IP kTh 輸入點脈衝波的相角 local bias R3 IP kBias 輸入點脈衝波的中心偏移 local duty R4 IP kDuty 輸入點脈衝波的負載率 local out R5 OP 輸出點脈衝波輸出 local ang R6 內部變數相位角65536=360deg local kAmp R7 1000 參數振幅值 local kFrq R8 1000 參數頻率值=655368000Hz local kTh R9 0 參數相角值360deg=256 local kBias R10 0 參數偏移值 local kDuty R11 128 參數負載率100 =256 data 12 模組變數區長度及初值 initial 啟動程序 WR ang0 WR out0 ang=out=0 RET timer 即時控制程序(8KHz)

60

RD ang ADD (frq) WR ang ang+=frq SFR 8 ADD (th) AND 255 ACC=(ang256+th)amp0x00ff SUB (duty) RD (amp) JLT t1 RD 0 ACC=(amp0) t1 ADD (bias) WR out out=ACC+bias RET

IIR 一階濾波器

此模組執行一階的 IIR濾波器方塊圖如下

kau x

Z-1

+

+

-

+低通濾波器

高通濾波器dx lp

hp

濾波器參數的計算公式如下

1假設濾波器的頻寬為 hz則 ωn=hz628 2若系統頻率為 8KHz則抽樣週期 dT為 dT=dt8000 其中 dt為模組參數 3則濾波器參數為 ka=ωndT4096或是 =hzdt62880004096即 =hzdt32 4當 dt決定後所允許的訊號頻寬為(4000dt)換句話說訊號頻寬會因為 dt增加而下降

為了方便實驗的運用下面列出常用的參數對照表

濾波頻寬

(Hz)

10 20 50 100 200 500 1000 2000

訊號頻寬

(Hz)

400 800 2000 4000 4000 4000 4000 4000

模組參數 dt 10 5 2 1 1 1 1 1

模組參數 ka 320 320 320 320 640 1600 3200 6400

表格的運用方式如下

1首先決定濾波頻寬 2接著查表找出對映的參數 dt和 ka 3再查表得到對映的訊號頻寬以決定是否需要串接前級濾波器

61

模組程式範例IIR1_FILTERasm

local u R0 IP 輸入點濾波器輸入 local lp R1 OP 輸出點低通濾波器輸出 local hp R2 OP 輸出點高通濾波器輸出 local dt R3 1 參數抽樣週期 local ka R4 4096 參數增益 ka10=4096 local prd R5 內部變數抽樣週期用 data 6 模組變數區長度 initial 開機啟動程序 WR lp0 WR hp0 WR prd1 RET lp=hp=0prd=1 timer 即時控制程序 SUB prd1 JNZ b9 if (--prdgt0) return RD dt WR prd prd=dt RD (u) SUB lp WR hp hp=u-lp MUL ka SFR 12 ADD lp WR lp lp+=(hpka4096) b9 RET

資料蒐集模組

資料蒐集模組是一個非常特殊的模組專門配合 eTTY 程式中的示波器使用

模組程式範例DAS4asm

local cmd R0 0 紀錄命令0=停止1=前置記錄2=正觸發4=負觸發6=觸發記錄 local dt R1 1 抽樣週期每 dT抽樣一次 local tab R2 TP DAS表格啟始位址 local cnt R3 0 目前記錄點(0~255) local ch1 R4 0 定義頻道1的變數位址 local ch2 R5 0 定義頻道2的變數位址 local ch3 R6 0 定義頻道3的變數位址 local ch4 R7 0 定義頻道4的變數位址 local trg R8 0 定義觸發頻道的變數位址 local th R9 0 觸發準位 local tail R10 0 觸發後的抽樣個數 local buf R11 1 抽樣計數(1~dt) local pnt R12 表格位址計算pnt=tab+cnt4 local len R13 表格長度計算(0~256) data 14 定義模組變數區的長度 table tab 1024 定義表格的長度 initial 啟動程序 WR cmd0 RET cmd=0 timer 控制程序

62

ADD cmd0 JZ t9 if (cmd==0) return SUB buf1 JNZ t9 if (--buf)gt0) return RD dt WR buf dt=buf RD cnt ADD 1 AND 0xff WR cnt cnt=(cnt+1)amp0xff SFL 2 ADD tab WR pnt pnt=tab+cnt4 RD (ch1) WR (pnt) ADD pnt1 pnt++=ch1 RD (ch2) WR (pnt) ADD pnt1 pnt++=ch2 RD (ch3) WR (pnt) ADD pnt1 pnt++=ch3 RD (ch4) WR (pnt) pnt =ch4 RD cmd SUB 1 JZ t9 SUB 1 JZ t2 SUB 1 JZ t3 SUB 1 JZ t4 SUB 1 JZ t5 SUB 1 JZ t6 JR t7 t2 RD (trg) SUB th JGE t9 ADD cmd1 JR t9 wait trgltth t3 RD (trg) SUB th JLE t9 JR t6 wait trggtth t4 RD (trg) SUB th JLE t9 ADD cmd1 JR t9 wait trggtth t5 RD (trg) SUB th JGE t9 JR t6 wait trgltth t6 WR len0 WR cmd7 len=0cmd=7 t7 ADD len1 SUB tail JLT t9 WR cmd0 if ((++len)gt=0x80) cmd=0 t9 RET

與 DC 馬達控制相關的程式模組有以下 4個程式模組說明如下

(1)加減速控制模組 ACC_controlasm (2)光電盤輸入模組 POS_inputasm (3)PWM輸出模組 PWM_outputasm (4)PD控制模組 PD_controlasm

71加減速控制模組 此程式模組主要功能在於執行位置控制的加減速命令修正其數學模式採用 Lynn

濾波器的架構參見下圖

cmd

2

+

old Z -1

-

Z -1

Z -1

Z-1

Z-1x0 x1 x8 x9 x16

+ -

++

2

Z-1

Z-1 y1 y2

+

-

y0

+ +

sumZ-1

+164

12

out

dif

+

63

加減速控制模組方塊圖

其中

1Lynn 濾波器的階數固定成八階也就是 m=8其公式為 H(z) = (1-2Z-m+Z-2m)(1-2Z-1+Z-2)m2

2因為m=8所以m2=64因此最後計算低通濾波的部份時要先做除 64的運算 3因為低通濾波(lp)和 y0之間有 64倍的差異代表 y0y1y2的變化範圍比濾波器輸

入值要擴大許多例如輸入值在+-1000變化時y0y1y2很可能會在+-64000之間變化這範圍已經超出整數處理的範圍很可能會造成錯誤的計算結果

4所以在實驗時輸入值的變化範圍必須控制在+-500之間以保證計算的正確性 5對於 Lynn 濾波器當 m=8時其濾波器的頻寬固定為 1 kHzmdt也就是 dt=1時頻寬為 125 Hz dt=2時頻寬為 625Hz依此類推 6對於 Lynn 濾波器其濾波器的延遲固定為 m個抽樣週期因此設計 hp = x8 - lp 即可得到高通濾波器的對應結果 7其中乘 2和除 64的運算以移位運算取代所以整個程式中並無任何乘法運算 8Lynn 濾波器本身並不是穩定濾波器所以在程式啟動時必須確實的將所有狀態

(x0~x16)歸零否則會產生不穩定的狀態輸出

因為 Lynn濾波器中所有參數固定所以除了抽樣週期 dt 之外並無任何可調參數

抽樣週期 dt 可以控制頻寬dt 越大則濾波器頻寬越低

將步階命令值的輸出送入 Lynn 濾波器中經由低通濾波器的效應可以減緩命

令的變化程度達到加減速控制的目的以下為使用 Lynn 濾波器型式實現加減速控

制的組合語言程式列印 如欲更進一步瞭解 Lynn 濾波器與 FIR 數位濾波器之間的關係可以參考通訊實驗

四數位濾波器設計(FIR)中之說明

ACC_controlasm程式列印 local cmd R0 IP 輸入點位置命令

local out R1 OP 輸出點加減速處理後的位置命令

local dif R2 OP 輸出點位置微分命令

local axis R3 0 馬達編號0=X1=Y2=Z3=C

local old R4 內部變數微分計算用

local sumL R5 內部變數積分計算用

local sumH R6 內部變數積分計算用

local y0 R7 內部變數y(0~2)

local y1 R8 local y2 R9

local x0 R10 內部變數x(0~16)

local x1 R11 local x2 R12 local x3 R13 local x4 R14

local x5 R15 local x6 R16 local x7 R17 local x8 R18

local x9 R19 local x10 R20 local x11 R21 local x12 R22

local x13 R23 local x14 R24 local x15 R25 local x16 R26

64

data 27 模組變數區長度

initial 開機啟動程序

WR dif0 RD (cmd) WR out WR old dif=0 out=old=cmd

sumHL=cmd64

SFL 6 WR sumL RD out SFR 10 SGN 5 WR sumH

RPT 17 WR x00 RPT 3 WR y00 RET x[0~16]=0y[0~2]=0

timer 即時控制程序

RD (cmd) SUBX old WR x0 x0=cmd-old old=cmd

SUB x81 ADD x16 ADD y11 SUB y2 WR y0 y0=x0-2x8+x16+2y1-y2

SGN ADD sumL WR sumL RDH ADC sumH WR sumH sumHL+=y0

WRH RD sumL SFR 6 WR out out=sumHL64

RD y0 SGN SFR WR dif dif=y032mm

RD x0 RPT 16 RDX x1 x[i]=x[i-1] i=1~16

RD y0 RDX y1 WR y2 y[i]=y[i-1] i=1~2

b9 RET

72光電盤輸入模組

DC馬達的位置由光電盤量測之預設儲存於 0xac與 0xbe二個輸入埠位址中其中位址 0xac記錄 X軸馬達的位置位址 0xbe記錄 Y軸馬達的位置由於本實驗的DC馬達接在 Y軸的位置上因此程式中直接選用 Y軸的輸入 光電盤位置輸入的程式列印如下其中速度由位置的差分而得至於馬達的位置

則使用內部 2個 word加以記錄精度為 32位元 POS_inputasm程式列印 local spd R0 OP 輸出點速度量測值

local ang R1 OP 輸出點角度量測值

local angH R2 內部變數角度的 32 位元部分

local mode R3 0x308 模式選擇15MHzAB 相正反向輸入

local pht R4 0xac 輸入阜地址光電盤輸入(0xac)

local phtc R5 0xbe 輸入阜地址光電盤模式(0xbe)

local old R6 內部變數速度更新用

data 7 模組變數區長度

initial 開機啟動程序

RD mode WR (phtc) phtc=mode

RD (pht) WR old WR spd0 RET old=phtspd=0

timer 即時控制程序

RD (pht) SUBX old SGN 11 WR spd spd=(pht-old)old=pht

65

ADD ang WR ang angHL+=spd

RDH ADC angH WR angH

RET

73 PWM輸出控制模組 模組方塊

cmd PWM輸出

程式說明 1在開機時將切換保護時間寫到輸出阜 0xbc上其中切換保護值為 0~6360=5us 2在每次 timer interrupt時將 cmd訊號處理後寫到輸出阜 0xb8上

PWM_outputasm程式列印 local cmd R0 IP gnd 輸入點v相命令

local gain R1 4096 參數輸出增益1=4096

local bias R2 2048 參數輸出偏壓0=2048

local limit R3 4095 參數輸出極限1=4095

local zone R4 0x88f0 參數頻率=12KHz切換保護=5us

local pwm R5 0xb8 輸出阜地址PWM0 輸出(0xb8)

local mode R6 0xbc 輸出阜地址PWM 模式(0xbc)

local p0md R7 0xf8 輸出阜地址port0 模式(0xf8)

local gnd R8 0 輸入接地點

data 9 模組變數區長度

initial 開機啟動程序

RD bias WR (pwm) pwm=bias

RD 0xffff WR (p0md) set port0 mode

RD zone WR (mode) RET mode=zone

stop 關機保護程序

RD bias WR (pwm) RET pwm=bias

timer 即時控制程序

RD (mode) xor 1 and 1 WR (mode) trigger watch-dog

RD (cmd) MUL gain SFR 12 ADD bias ACC=(cmdgain4096)+bias

MAX 0 MIN limit WR (pwm) pwm=limit(ACC)

RET

66

74 PD 控制模組

PD控制的模組方塊參見圖二十一所示其中比例控制的部份直接由增益 kp加以調整微分控制的部份則由誤差的差分經增益 kd的調整而得

Σ+

-

cmd

fdk

err out

Σ

pk

dk

Σ

+

+

+

-

old1minusZ

PD控制器的方塊圖

PD_controlasm程式列印 local cmd R0 IP gnd 輸入點位置命令(可忽略)

local fdk R1 IP gnd 輸入點位置回授(可忽略)

local out R2 OP 輸出點用以控制速度迴路

local kp R3 256 參數增益 kp10=256

local kd R4 0 參數增益 kd10=256

local err R5 0 內部變數

local old R6 0 內部變數

local gnd R7 0 無輸入時的短路點

data 8 模組變數區長度

initial 開機啟動程序

WR out0 WR old0 RET out=old=0

timer 即時控制程序

RD (cmd) SUB (fdk) PRTF WR err

MUL kp SFR 8 P=(cmd-fdk)kp256

RDS err SUBX old MUL kd SFR 8 D=(err-old)kd256

ADDS

WR out out=P+D

RET

程式中預設增益值的 10以整數值 256為基底因此使用 SFR 8的指令加以調

整另外在在計算微分項的程式部份用到 SUBX old的指令其詳細的暫存器動作如

下 參考 piDSP的指令說明SUBX指令將總共用到 3個時序參考錯誤 找不到參照

67

來源在時序 1時將原先 AX的資料拷貝一份到 HX中時序 2時正式執行減

法的動作所以 AX暫存器中的內容會變成 err-old時序 3時DSP會將存放在 HX暫存器中的內容拷貝一份到 old的記憶體中也就是經由 SUBX此一精簡指令將

同時完成計算差分所需要的相減與資料疊代的動作有效的利用 piDSP控制器 DSP核心的精簡指令將可以大幅提昇系統的計算速度

HX AXoldSUBXerr err

old

err

errerr olderr minus

1_err

errerr olderr minus err

1_err

1

2

3

SUBX的指令時序與暫存器變化

68

8附錄快速安裝說明

光纖網路通訊 FPGA 發展系統 (適用於 WIN-XP200098 系統)

快速安裝說明

26Pin 負載輸出入埠

雙電源︵5

12

伏︶輸入埠

單電源︵5

伏︶輸入埠

USB

光纖線輸

號 光纖線輸出埠

入 傳 埠

首先將光碟片 RFFPGA 目錄檔案拷貝在您工作硬碟裡面

第一次安裝時先將 USB 傳輸線接上電腦主機將電源供應器接上 FPGA 模組此時電

腦會出現安裝 USB-Serial 驅動程式選擇從清單安裝此驅動程式放置在光碟片

RFFPGA-USBdrive 選擇您目前安裝系統

可選擇 WIN-98WIN-MEWIN-2000WIN-XP 系統配合您現在工作電腦作業系統

69

注意一般電腦 USB 埠很多插口當您安裝驅動程式時是配合您當時插入之埠

下次如您插入不同接口埠時電腦會再次要求安裝驅動程式這是正常現象請再次安

裝驅動程式否則無法使用

FPLC 操作

首先進入 RFFPGA裡子目錄 testASM直接點選 fPLCexe 出現下面操作畫面(也可直接將

此檔案放置桌面直接點選)

(或者選擇 File 再執行 Setuphellip 選擇您要執行 CAI 檔)

70

進入下面操作畫面 首先使用滑鼠在 FPGA下載按鈕單擊動作使 FPGA變成 DSP晶片 實驗一至實驗五皆為使用 DSP組合語言設計程式其原始程式分別為 testASM1至testASM5可使用 texPad 開啟與編輯程式內容 實驗三與實驗五多有 IO控制動作 當選擇實驗三時出現下面畫面

71

eM_USB 模組

數字型 LED

0 1 2 34 5 6 78 9 A BC D E F

燈號型 LED

44 鍵盤

ADC0 ADC1 DAC0 DAC1

LED 選擇KEY 選擇

模 式 1

0123

注意操作畫面 3與 4 說明開關與按鍵選擇位置後選擇程式下載再按程式啟動如您

按下 0-3按鍵時燈號型 LED會有不同方向閃爍顯示程式停止時結束所有 IO控制動作再按回首頁選擇其他實驗 實驗四與實驗五

模式3

0 1 2 34 5 6 78 9 A BC D E F

按照上面開關選擇直接操作如果以上實驗皆能按照正常操作表示您光纖網路通訊

FPGA發展模組以能正常使用 注意 開機與關機動作順序如下

開機電腦啟動 --- eM_USB 模組電源接上 --- USB 接上電腦 ---

啟動 FPLC 軟體 --- 下載 FPGA 程式

關機關閉 FPLC 軟體 --- eM_USB 模組電源拔掉 --- 拔掉電腦 USB 接頭 ---關掉

電腦

如果以上順序有亂可能造成 USB 找不到驅動造成無法下載經過幾次測試還是

無法下載建議重新啟動電腦主機按照正確步驟操作

72

FPGA 下載操作

進入 FPLC 操作系統按照下列步驟選擇節點模組與下載 bit FPGA 檔案

在 VHDLDEMO 子目錄下您可以選擇您目前 FPGA 種類型號在此型號下我們已將 VHDL

與數位邏輯設計課本範例全部放於此處

73

光纖網路連線 FPGA 下載操作

首先利用光纖線將 eM_USB0 模組光纖輸出埠接至 eM_USB1 模組光纖輸入埠以此

類推最後再將最後 eM_USBN 模組光纖輸出埠接至 eM_USB0 模組光纖輸入埠配置

如附圖方式

個人電腦(Windows) eM_USB模組

0USB

eM_USB模組1

光纖網路

eM_USB模組2

eM_USB模組N

配置完成後進入 FPLC 系統首先必須先將 Node00 下載在 testASM 子目錄裡

piDSPv0bit 檔讓 eM_USB0 模組 FPGA 具備 DSP 功能才能執行光纖網路通訊

操作如下

此時您就可以選擇分別下載至各模組 FPGA 檔 bit

74

安裝 FPLC 注意事項

當您進入 FPLC 時

按 FILE 選擇 programhellip 選擇檔案為 exp_dcmplc 出現下面畫面

正常顯示畫面為

75

DOS 環境操作

在 PC 端的操作是在 Windows 環境中的 DOS 視窗中執行指令範例如下

eFPGA progNETbit 下載 FPGA電路至網路節點0(即 USB節點)中 eFPGA testLEDbit 1 下載 FPGA電路至網路節點1中

對於單一節點的控制程序如下

1將 eM_USB模組連結個人電腦的 USB端 2eM_USB模組開機 3執行下載指令即可 eFPGA xxxxbit 4若要更改 FPGA電路只要重新執行下載指令即可

對於多個網路節點的控制程序如下

1第一組 eM_USB模組連結個人電腦的 USB端再以光纖網路依序其他各節點 2連接 USB界面者為模組0從光纖發射端連接出去的模組為1依此類推 3將所有 eM_USB模組開機 4執行下載指令如下 eFPGA progNETbit 模組0必須先下載指定的 FPGA電路 eFPGA xxxxbit 1 再依序下載其他網路模組的 FPGA電路 eFPGA yyyybit 2 eFPGA zzzzbit 最後再重新下載模組0的 FPGA電路 5換句話說模組0必須先執行 progNETbit讓光纖網路接受 FPGA控制後才能透過光纖網路下載至其他節點等全部網路節點下載完畢後再將模組0的 FPGA重新下載讓模組0也可自由執行任意的 FPGA電路

6若要更改某一個網路節點中的 FPGA電路只要重新執行下述指令 eFPGA progNETbit 模組0必須先下載指定的 FPGA電路 eFPGA yyyybit 2 下載指定網路模組的 FPGA電路 eFPGA zzzz bit 最後再重新下載模組0的 FPGA電路 換句話說除非模組0中的 FPGA已經包括光纖網路管理電路否則一定要先在

模組0中下載網路管理電路後才能下載指定網路節點的 FPGA電路

76

光纖網路通訊 FPGA 發展系統

系統配置

光纖網路通訊 FPGA 發展系統的系統配置圖如下

個人電腦(Windows) eM_USB模組

0USB

eM_USB模組1

光纖網路

eM_USB模組2

eM_USB模組N

其中

1基本模組為 eM_USB模組可用 USB界面和個人電腦連線並提供 USB對光纖網路的轉換功能使得個人電腦可以獨立控制光纖網路中的每個網路節點

2eM_USB模組也可以作為光纖網路中的網路節點透過光纖網路而接受個人電腦的

監控 3就個人電腦而言不論是 USB界面直接連結或是以光纖網路間接連結的 eM_USB模組都是可以直接監控的網路節點最多可以同時控制一個 USB節點和 30個網路節點

4對於每一個網路節點個人電腦都可執行 eM_USB模組中 FPGA的電路下載工作並在適當的 FPGA電路配合下可執行 eM_USB模組中 FPGA內部電路的讀寫控制 5透過適當的 FPGA電路設計各網路節點都可透過光纖網路和其他任何網路節點

作同步通訊執行 FPGA內部記憶體的資料交換資料交換頻率可達 1KHz以上

77

網路模組配置

每個網路模組的標準配置圖如下

eM_USB模組光纖網路

USB eM_FPGA卡

eM_DEMO模組

eM_EXP實驗模組

DC電源

其中

1網路模組以 eM_USB模組為主提供基本的 USB界面和光纖網路連線 2eM_USB模組中的 FPGACPLD採用插卡型式可選擇不同的 eM_FPGA卡包括

eM_2V1K卡可選用 Virtex系列的 XC2V250和 XC2V1000 eM_3S1K卡可選用 Spartan3系列的 XC3S400XC3S1000和 XC3S1500 eM_3S50卡可選用 Spartan3系列的 XC3S50XC3S200和 XC3S400 eM_95XL卡可選用 9500XL系列的 XC95144XL和 XC95288XL 3eM_USB模組中的對外連線有兩種一種是 26P接頭用以連接既有的各種實驗模

組另一種是兩組 50P接頭將 FPGA中各接腳引出用以連接專題實驗 4eM_DEMO模組就是插上 50P接頭的教學模組其中包括 LED 數字顯示和 44鍵盤也具備兩組的 ADC和兩組的 DAC接頭提供類比訊號的測試工具

常用的實驗組合包括

1精簡組合包括(eM_USB+eM_FPGA)提供基本的網路節點適用於專題實驗 2標準組合包括(eM_USB+eM_FPGA+eM_DEMO)提供基礎 FPGA設計的教學實驗

3實驗組合包括(eM_USB+eM_FPGA+eM_DEMO+eM_EXP)提供進階的 FPGA實驗可依需求選用不同的實驗模組

78

eM_USB 模組

eM_USB 模組的電路配置圖如下

TxRx

DCPower

USB

JP2

JP3

光纖界面

外加電源

PC連線

JP1

eM_FPGA模組

FT232 CPLD FlashROM

SRAM

10cm

6cm

JP4

其中

1對外的連線接頭包括 DC電源 可選擇單電源(5V)或是多電源(5V+12V-12V)兩種 USB界面 直接連接個人電腦 光纖界面連接光纖網路 2實驗界面包括 JP1負責內部 CPLD的電路下載 JP2JP3兩組 50P的擴張用接頭 JP4 標準 26P接頭用以連接各種實驗模組 3內部的電路配置包括 A以 SO-DIMM接頭連接各種 eM_FPGA卡 B內附 EEPROMFlashROM和 SRAM提供 FPGA作應用測試 C以一顆 FT232BM作為 USB界面解碼而以一顆 CPLD作為光纖網路解碼 D提供各種 eM_FPGA卡的電路下載功能 4內附五顆 LED由上而下依序為 usbLED指示 USB界面的讀寫狀態 tstLED可由 FPGA電路自行定義 stsLED可由 FPGA電路自行定義 RxLED 可由 FPGA電路自行定義 TxLED 可由 FPGA電路自行定義

79

外部接腳定義

外部接頭的接點順序圖示如下

上視圖

JP11 9 JP4

126225

JP31

50249

JP21

50249

而各接頭的接點定義如下

JP1 JP4 JP2 JP3 1+33V 1+12V 2+12V 1 GND 2 GND 1 GND 2 GND 2GND 3 ADC 4 DAC 3POWER 4ALARM 3 +5V 4 +5V 3nc 5 yPB2 6 yPB3 5RxNET 6TxNET 5+12V 6+12V 4TCK 7 yPB1 6 yPB4 7RxUSB 6TxUSB 7-12V 6-12V 5nc 9 yPB0 10yPB5 9RxCAN 10TxCAN 9 ADC 10 DAC 6TDO 11yPB6 12yPB7 11P0D0 12P0D1 11P1D0 12P1D1 7TDI 13yGND 14yPC3 13P0D2 14P0D3 13P1D2 14P1D3 8nc 15yPC2 16yPC1 15P0D4 16P0D5 15P1D4 16P1D5 9TMS 17yPC0 18yPA0 17P0D6 18P0D7 17P1D6 18P1D7 19yPA1 20yPA2 19P0D8 20P0D9 19P1D8 20P1D9 21yPA3 22GND 21P0D10 22P0D11 21P1D10 22P1D11 23GND 24+5V 23P0D12 24P0D13 23P1D12 24P1D13 25+5V 26nc 25P0D14 26P0D15 25P1D14 26P1D15 27P2D0 28P2D1 27PxA0 28PxA1 29P2D2 30P2D3 29PxA2 30PxA3 31P2D4 32P2D5 31PxA4 32PxA5 33P2D6 34P2D7 33PxA6 34PxA7 35P2D8 36P2D9 35PxB0 36PxB1 37P2D10 38P2D11 37PxB2 38PxB3 39P2D12 40P2D13 39PxB4 40PxB5 41P2D14 42P2D15 41PxB6 42PxB7 43ADC0 44ADC1 43PxC0 44PxC1 45ADC2 46ADC3 45PxC2 46PxC3 47ADC4 48ADC5 47PxC4 48PxC5 49DAC0 50DAC1 49PxC6 50PxC7

80

eM_FPGA 模組

在各種 eM_FPGA 模組中FPGA 對外電路的標準配置圖如下

24576MHz

FlashROM

26PSRAM

EEPROM

mD[8]

yPA[4]

FPGACPLD

mA[19]mRDmWRmCSeeCKeeCSeeDIeeDO

光纖界面 RxNETTxNET

USB 界面 RxUSBTxUSBCLK24MPOWERALARM

LED

tstLEDstsLEDRxLEDTxLED

yPB[8]yPC[4]

ADCDAC

ADC[8]

實驗模組

ADC[2]

DAC[2]

xPA[4]

xPB[8]

xPC[4]

基礎實驗

其中

1FPGACPLD可以選擇下述幾種 XC2V250XC2V1000 採用 eM_2V1K模組其中 FPGA為 FG456包裝 XC3S400XC3S1000XC3S1500採用 eM_3S1K模組其中 FPGA為 FG456包裝 XC3S400XC3S1000XC3S1500採用 eM_3S1K模組其中 FPGA為 FG456包裝 XC3S50XC3S200XC3S400 採用 eM_3S50模組其中 FPGA為 TQ144包裝 XC95144XLXC95288XL 採用 eM_95XL模組其中 CPLD為 TQ144包裝 2採用 FG456包裝者可以控制所有的 IO界面 3採用 TQ144包裝者只是不能控制 RAM和 FlashROM而可以控制其他所有的界面 4所有 FPGA模組都可自由選擇由 USB界面或是由光纖界面下載電路但是 CPLD模組只能固定由 USB界面下載電路

5所有 FPGACPLD模組都可透過 26P接頭連接既有的各種實驗模組

81

FPGA 接腳對照表

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

mD0 XD6 mD0 A17 C13 -- -- mD1 XD7 mD1 B17 D12 -- -- mD2 XD8 mD2 C17 D11 -- -- mD3 XD9 mD3 D17 C11 -- -- mD4 XD10 mD4 E17 D10 -- -- mD5 XD11 mD5 E16 C10 -- -- mD6 XD12 mD6 E14 D9 -- -- mD7 XD13 mD7 E13 D7 -- -- mA0 XD14 mA0 D13 C7 -- -- mA1 XD15 mA1 C13 D6 -- -- mA2 XA0 mA2 V5 C3 -- -- mA3 XA1 mA3 U5 C4 -- -- mA4 XA2 mA4 Y2 D3 -- -- mA5 XA3 mA5 Y1 D4 -- -- mA6 XA4 mA6 V4 E3 -- -- mA7 XA5 mA7 V3 E4 -- -- mA8 XA6 mA8 W2 F3 -- -- mA9 XA7 mA9 W1 F4 -- -- mA10 XA8 mA10 T2 G6 -- -- mA11 XA9 mA11 T1 K3 -- -- mA12 XA10 mA12 R4 K10 -- -- mA13 XA11 mA13 R3 L3 -- -- mA14 XA12 mA14 R2 L4 -- -- mRD XRD mRD R1 D5 -- -- mWR XWR mWR P6 C6 -- --

POWER P0A0 POWER B4 B20 P1 P5 ALARM P0A1 ALARM A4 A19 P2 P6 RxNET P0A2 RxNET C4 B19 P4 P7 TxNET P0A3 TxNET C5 A18 P5 P9 RxUSB P0B0 RxUSB B5 A15 P6 P10 TxUSB P0B1 TxUSB A5 B15 P7 P11 RxCAN P0B2 RxCAN D6 A14 P8 P12 RxCAN P0B3 TxCAN C6 B14 P10 P13

CLK24M CLK24M CLK24M E12 B12 P124 P38

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

PWM0H P3A0 P0D0 E6 A8 P21 P23 PWM0L P3A1 P0D1 E5 B8 P23 P24 PWM1H P3A2 P0D2 C2 B6 P24 P25 PWM1L P3A3 P0D3 C1 A5 P25 P26 PWM2H P3A4 P0D4 D2 B5 P26 P27

82

PWM2L P3A5 P0D5 D1 A4 P27 P28 PWMenb P3A6 P0D6 E4 B4 P28 P30 PHT1Z P3A7 P0D7 E3 A3 P30 P31 PHT1A P3B0 P0D8 G2 C1 P31 P32 PHT1B P3B1 P0D9 G1 C2 P32 P33 PHT0A P3B2 P0D10 H5 D1 P33 P34 PHT0B P3B3 P0D11 J6 D2 P35 P35 AMP0 P3B4 P0D12 H4 E1 P36 P39 AMP1 P3B5 P0D13 H3 E2 P40 P40 AMP2 P3B6 P0D14 H2 F2 P41 P41 AMP3 P3B7 P0D15 H1 G1 P44 P43 eeSK P0C3 P1D0 C10 B9 P20 P22 eeCS P0C2 P1D1 D10 A9 P18 P21 eeDI P0C1 P1D2 F10 B10 P17 P20 eeDO P0C0 P1D3 E10 B11 P15 P19 ssCK P0B7 P1D4 E8 A11 P14 P17 ssCS P0B6 P1D5 E7 A12 P13 P16 ssDI P0B5 P1D6 A6 B13 P12 P15 ssDO P0B4 P1D7 B6 A13 P11 P14

ppCLK P3C0 P1D8 K4 G2 P46 P44 ppDIN P3C1 P1D9 K3 K1 P47 P45 TxD P3C2 P1D10 K2 K2 P50 P46 RxD P3C3 P1D11 K1 L1 P51 P48

tstLED P3C4 P1D12 L5 L2 P52 P49 stsLED P3C5 P1D13 L4 M1 P53 P50 RxLED P3C6 P1D14 L3 M2 P55 P51 TxLED P3C7 P1D15 L2 N1 P56 P52

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

xPA0 P2A0 P2D0 AA3 N2 P59 P53 xPA1 P2A1 P2D1 Y4 T1 P60 P54 xPA2 P2A2 P2D2 AA4 T2 P63 P56 xPA3 P2A3 P2D3 AB4 U2 P68 P57 xPC0 P2A4 P2D4 W5 V1 P69 P58 xPC1 P2A5 P2D5 Y5 V2 P70 P59 xPC2 P2A6 P2D6 AA5 W1 P73 P60 xPC3 P2A7 P2D7 AB5 W2 P74 P61

-- P2B0 P2D8 V6 Y1 P76 P64 -- P2B1 P2D9 V7 Y2 P77 P66 -- P2B2 P2D10 W6 AA3 P78 P68

mCS P2B3 P2D11 Y6 AB4 P79 P69 mA15 P2B4 P2D12 V9 AA4 P80 P70 mA16 P2B5 P2D13 V10 AB5 P82 P71 mA17 P2B6 P2D14 W10 AA5 P83 P74 mA18 P2B7 P2D15 Y10 AA6 P84 P75 CS0 P2C0 ADC0 AA10 AB8 P85 P76

83

SDIN0 P2C1 ADC1 AB10 AA8 P86 P77 CS1 P2C2 ADC2 U10 AB9 P87 P78

SDIN1 P2C3 ADC3 U11 AA9 P89 P79 SCLK P2C4 ADC4 V11 AB10 P90 P80 CS2 P2C5 ADC5 W11 AA10 P92 P81

SDOUT P2C6 ADC6 Y11 AB11 P93 P82 LDAC P2C7 ADC7 AA11 AA11 P95 P83

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

xPB0 P1A0 PxA0 M1 M3 P135 P85 xPB1 P1A1 PxA1 M2 M4 P132 P86 yPB2 P1A2 PxA2 M3 N3 P131 P87 yPB3 P1A3 PxA3 M4 N4 P130 P88 yPB1 P1A4 PxA4 M5 T4 P129 P91 yPB4 P1A5 PxA5 M6 T5 P128 P92 yPB0 P1A6 PxA6 N1 U3 P127 P93 yPB5 P1A7 PxA7 N2 U4 P125 P94 yPB6 P1B0 PxB0 U13 V3 P119 P95 yPB7 P1B1 PxB1 V13 V4 P118 P96 xPB2 P1B2 PxB2 W13 W3 P116 P97 xPB3 P1B3 PxB3 Y13 W4 P113 P98 xPB4 P1B4 PxB4 AA13 Y3 P112 P100 xPB5 P1B5 PxB5 AB13 Y4 P96 P101 yPC3 P1B6 PxB6 U12 Y5 P97 P102 yPC2 P1B7 PxB7 V12 W5 P98 P103 yPC1 P1C7 PxC0 AB17 W11 P108 P113 yPC0 P1C6 PxC1 AA17 Y11 P107 P112 yPA0 P1C5 PxC2 Y17 W10 P105 P111 yPA1 P1C4 PxC3 W17 Y10 P104 P110 yPA2 P1C3 PxC4 AB18 W9 P103 P107 yPA3 P1C2 PxC5 AA18 W8 P102 P106 xPB6 P1C1 PxC6 Y18 W6 P100 P105 xPB7 P1C0 PxC7 W18 Y6 P99 P104

84

eM_DEMO 模組

eM_DEMO 模組的電路配置圖如下

eM_USB 模組

數字型 LED

0 1 2 34 5 6 78 9 A BC D E F

燈號型 LED

44 鍵盤

ADC0 ADC1 DAC0 DAC1

LED 選擇KEY 選擇

其中

1eM_DEMO模組的基本功能包括 A將 xPAxPBxPC等 16個 IO訊號引出控制 LED和鍵盤電路 B將 ADDA訊號引出並放大成+-10V的工作範圍 2LED和鍵盤可以選擇三種模式由 LED和 KEY 兩組開關作選擇圖示如下

模式1

0123

模式2 模式3

0 1 2 34 5 6 78 9 A BC D E F

0123

3模式14鍵輸入並搭配 16點的 LED燈號顯示其中 16點 LED分別對映到 xPA[0~3]xPB[0~7]和 xPC[0~3] 4組按鍵分別對映到 xPC[0~3] 4模式24鍵輸入並搭配四個 7段式數字顯示其中 數字顯示由 xPA[0~3]作數字掃瞄而由 xPB[0~7]作 7段式 LED控制 4組按鍵 分別對映到 xPC[0~3] 5模式316鍵輸入並搭配四個 7段式數字顯示其中 數字顯示由 xPA[0~3]作數字掃瞄而由 xPB[0~7]作 7段式 LED控制 16組按鍵由 xPA[0~3]作鍵盤掃瞄而由 xPC[0~3]作鍵盤讀取 6根據VHDL與數位邏輯設計的章節其中 第 1章至 10章的實驗採用模式1而 第 11章實驗採用模式2而 第 12章之後的實驗都採用模式3

85

FPGA UCF 定義

eM_3S1K 模組

NET CLK LOC = B12

NET XAlt0gt LOC = N2

NET XAlt1gt LOC = T1

NET XAlt2gt LOC = T2

NET XAlt3gt LOC = U2

NET XBlt0gt LOC = M3

NET XBlt1gt LOC = M4

NET XBlt2gt LOC = W3

NET XBlt3gt LOC = W4

NET XBlt4gt LOC = Y3

NET XBlt5gt LOC = Y4

NET XBlt6gt LOC = W6

NET XBlt7gt LOC = Y6

NET XClt0gt LOC = V1

NET XClt1gt LOC = V2

NET XClt2gt LOC = W1

NET XClt3gt LOC = W2

NET YAlt0gt LOC = W10

JP4 接頭

NET YAlt1gt LOC = Y10

NET YAlt2gt LOC = W9

NET YAlt3gt LOC = W8

NET YBlt0gt LOC = U3

NET YBlt1gt LOC = T4

NET YBlt2gt LOC = N3

NET YBlt3gt LOC = N4

NET YBlt4gt LOC = T5

NET YBlt5gt LOC = U4

NET YBlt6gt LOC = V3

NET YBlt7gt LOC = V4

NET YClt0gt LOC = Y11

NET YClt1gt LOC = W11

NET YClt2gt LOC = W5

NET YClt3gt LOC = Y5

在光碟片中 RFFPGAVHDLDEMOBIT3S1K 裡有 VHDL 與數位邏輯設計書本範例原始檔與合成檔

86

eM_3S50 模組

NET CLK LOC = P124

NET XAlt0gt LOC = P59

NET XAlt1gt LOC = P60

NET XAlt2gt LOC = P63

NET XAlt3gt LOC = P68

NET XBlt0gt LOC = P135

NET XBlt1gt LOC = P132

NET XBlt2gt LOC = P116

NET XBlt3gt LOC = P113

NET XBlt4gt LOC = P112

NET XBlt5gt LOC = P96

NET XBlt6gt LOC = P100

NET XBlt7gt LOC = P99

NET XClt0gt LOC = P69

NET XClt1gt LOC = P70

NET XClt2gt LOC = P73

NET XClt3gt LOC = P74

NET YAlt0gt LOC = P105

JP4 接頭

NET YAlt1gt LOC = P104

NET YAlt2gt LOC = P103

NET YAlt3gt LOC = P102

NET YBlt0gt LOC = P127

NET YBlt1gt LOC = P129

NET YBlt2gt LOC = P131

NET YBlt3gt LOC = P130

NET YBlt4gt LOC = P128

NET YBlt5gt LOC = P125

NET YBlt6gt LOC = P119

NET YBlt7gt LOC = P118

NET YClt0gt LOC = P107

NET YClt1gt LOC = P108

NET YClt2gt LOC = P98

NET YClt3gt LOC = P97

在光碟片中 RFFPGAVHDLDEMOBIT3S200 裡有VHDL與數位邏輯設計書本範例原始檔與合成檔

87

eM_95XL 模組

NET CLK LOC = SPIN38

NET XAlt0gt LOC = SPIN53

NET XAlt1gt LOC = SPIN54

NET XAlt2gt LOC = SPIN56

NET XAlt3gt LOC = SPIN57

NET XBlt0gt LOC = SPIN85

NET XBlt1gt LOC = SPIN86

NET XBlt2gt LOC = SPIN97

NET XBlt3gt LOC = SPIN98

NET XBlt4gt LOC = SPIN100

NET XBlt5gt LOC = SPIN101

NET XBlt6gt LOC = SPIN105

NET XBlt7gt LOC = SPIN104

NET XClt0gt LOC = SPIN58

NET XClt1gt LOC = SPIN59

NET XClt2gt LOC = SPIN60

NET XClt3gt LOC = SPIN61

NET YAlt0gt LOC = SPIN111

JP4 接頭

NET YAlt1gt LOC = SPIN110

NET YAlt2gt LOC = SPIN107

NET YAlt3gt LOC = SPIN106

NET YBlt0gt LOC = SPIN93

NET YBlt1gt LOC = SPIN91

NET YBlt2gt LOC = SPIN87

NET YBlt3gt LOC = SPIN88

NET YBlt4gt LOC = SPIN92

NET YBlt5gt LOC = SPIN94

NET YBlt6gt LOC = SPIN95

NET YBlt7gt LOC = SPIN96

NET YClt0gt LOC = SPIN112

NET YClt1gt LOC = SPIN113

NET YClt2gt LOC = SPIN103

NET YClt3gt LOC = SPIN102

在光碟片中 RFFPGAVHDLDEMOSVF95288XL 裡有VHDL與數位邏輯設計書本範例原始檔與合成

檔案

88

eM_FPGA 模組

NET CLK LOC = E12

NET XAlt0gt LOC = AA3

NET XAlt1gt LOC = Y4

NET XAlt2gt LOC = AA4

NET XAlt3gt LOC = AB4

NET XBlt0gt LOC = M1

NET XBlt1gt LOC = M2

NET XBlt2gt LOC = W13

NET XBlt3gt LOC = Y13

NET XBlt4gt LOC = AA13

NET XBlt5gt LOC = AB13

NET XBlt6gt LOC = Y18

NET XBlt7gt LOC = W18

NET XClt0gt LOC = W5

NET XClt1gt LOC = Y5

NET XClt2gt LOC = AA5

NET XClt3gt LOC = AB5

NET YAlt0gt LOC = Y17

JP4 接頭

NET YAlt1gt LOC = W17

NET YAlt2gt LOC = AB18

NET YAlt3gt LOC = AA18

NET YBlt0gt LOC = N1

NET YBlt1gt LOC = M5

NET YBlt2gt LOC = M3

NET YBlt3gt LOC = M4

NET YBlt4gt LOC = M6

NET YBlt5gt LOC = N2

NET YBlt6gt LOC = U13

NET YBlt7gt LOC = V13

NET YClt0gt LOC = AA17

NET YClt1gt LOC = AB17

NET YClt2gt LOC = V12

NET YClt3gt LOC = U12

在光碟片中 RFFPGAVHDLDEMOBIT2V250 裡有VHDL與數位邏輯設計書本範例原始檔與合成檔

89

Page 61: RFFPGA 直流馬達實驗手冊juniortek.com.tw/program/manual/RF-DC-mal.pdf · em_demo模組 em_dcm 直流伺服馬達 dc電源 rffpga 系統的直流馬達實驗規劃 其中包括:

RD ang ADD (frq) WR ang ang+=frq SFR 8 ADD (th) AND 255 ACC=(ang256+th)amp0x00ff SUB (duty) RD (amp) JLT t1 RD 0 ACC=(amp0) t1 ADD (bias) WR out out=ACC+bias RET

IIR 一階濾波器

此模組執行一階的 IIR濾波器方塊圖如下

kau x

Z-1

+

+

-

+低通濾波器

高通濾波器dx lp

hp

濾波器參數的計算公式如下

1假設濾波器的頻寬為 hz則 ωn=hz628 2若系統頻率為 8KHz則抽樣週期 dT為 dT=dt8000 其中 dt為模組參數 3則濾波器參數為 ka=ωndT4096或是 =hzdt62880004096即 =hzdt32 4當 dt決定後所允許的訊號頻寬為(4000dt)換句話說訊號頻寬會因為 dt增加而下降

為了方便實驗的運用下面列出常用的參數對照表

濾波頻寬

(Hz)

10 20 50 100 200 500 1000 2000

訊號頻寬

(Hz)

400 800 2000 4000 4000 4000 4000 4000

模組參數 dt 10 5 2 1 1 1 1 1

模組參數 ka 320 320 320 320 640 1600 3200 6400

表格的運用方式如下

1首先決定濾波頻寬 2接著查表找出對映的參數 dt和 ka 3再查表得到對映的訊號頻寬以決定是否需要串接前級濾波器

61

模組程式範例IIR1_FILTERasm

local u R0 IP 輸入點濾波器輸入 local lp R1 OP 輸出點低通濾波器輸出 local hp R2 OP 輸出點高通濾波器輸出 local dt R3 1 參數抽樣週期 local ka R4 4096 參數增益 ka10=4096 local prd R5 內部變數抽樣週期用 data 6 模組變數區長度 initial 開機啟動程序 WR lp0 WR hp0 WR prd1 RET lp=hp=0prd=1 timer 即時控制程序 SUB prd1 JNZ b9 if (--prdgt0) return RD dt WR prd prd=dt RD (u) SUB lp WR hp hp=u-lp MUL ka SFR 12 ADD lp WR lp lp+=(hpka4096) b9 RET

資料蒐集模組

資料蒐集模組是一個非常特殊的模組專門配合 eTTY 程式中的示波器使用

模組程式範例DAS4asm

local cmd R0 0 紀錄命令0=停止1=前置記錄2=正觸發4=負觸發6=觸發記錄 local dt R1 1 抽樣週期每 dT抽樣一次 local tab R2 TP DAS表格啟始位址 local cnt R3 0 目前記錄點(0~255) local ch1 R4 0 定義頻道1的變數位址 local ch2 R5 0 定義頻道2的變數位址 local ch3 R6 0 定義頻道3的變數位址 local ch4 R7 0 定義頻道4的變數位址 local trg R8 0 定義觸發頻道的變數位址 local th R9 0 觸發準位 local tail R10 0 觸發後的抽樣個數 local buf R11 1 抽樣計數(1~dt) local pnt R12 表格位址計算pnt=tab+cnt4 local len R13 表格長度計算(0~256) data 14 定義模組變數區的長度 table tab 1024 定義表格的長度 initial 啟動程序 WR cmd0 RET cmd=0 timer 控制程序

62

ADD cmd0 JZ t9 if (cmd==0) return SUB buf1 JNZ t9 if (--buf)gt0) return RD dt WR buf dt=buf RD cnt ADD 1 AND 0xff WR cnt cnt=(cnt+1)amp0xff SFL 2 ADD tab WR pnt pnt=tab+cnt4 RD (ch1) WR (pnt) ADD pnt1 pnt++=ch1 RD (ch2) WR (pnt) ADD pnt1 pnt++=ch2 RD (ch3) WR (pnt) ADD pnt1 pnt++=ch3 RD (ch4) WR (pnt) pnt =ch4 RD cmd SUB 1 JZ t9 SUB 1 JZ t2 SUB 1 JZ t3 SUB 1 JZ t4 SUB 1 JZ t5 SUB 1 JZ t6 JR t7 t2 RD (trg) SUB th JGE t9 ADD cmd1 JR t9 wait trgltth t3 RD (trg) SUB th JLE t9 JR t6 wait trggtth t4 RD (trg) SUB th JLE t9 ADD cmd1 JR t9 wait trggtth t5 RD (trg) SUB th JGE t9 JR t6 wait trgltth t6 WR len0 WR cmd7 len=0cmd=7 t7 ADD len1 SUB tail JLT t9 WR cmd0 if ((++len)gt=0x80) cmd=0 t9 RET

與 DC 馬達控制相關的程式模組有以下 4個程式模組說明如下

(1)加減速控制模組 ACC_controlasm (2)光電盤輸入模組 POS_inputasm (3)PWM輸出模組 PWM_outputasm (4)PD控制模組 PD_controlasm

71加減速控制模組 此程式模組主要功能在於執行位置控制的加減速命令修正其數學模式採用 Lynn

濾波器的架構參見下圖

cmd

2

+

old Z -1

-

Z -1

Z -1

Z-1

Z-1x0 x1 x8 x9 x16

+ -

++

2

Z-1

Z-1 y1 y2

+

-

y0

+ +

sumZ-1

+164

12

out

dif

+

63

加減速控制模組方塊圖

其中

1Lynn 濾波器的階數固定成八階也就是 m=8其公式為 H(z) = (1-2Z-m+Z-2m)(1-2Z-1+Z-2)m2

2因為m=8所以m2=64因此最後計算低通濾波的部份時要先做除 64的運算 3因為低通濾波(lp)和 y0之間有 64倍的差異代表 y0y1y2的變化範圍比濾波器輸

入值要擴大許多例如輸入值在+-1000變化時y0y1y2很可能會在+-64000之間變化這範圍已經超出整數處理的範圍很可能會造成錯誤的計算結果

4所以在實驗時輸入值的變化範圍必須控制在+-500之間以保證計算的正確性 5對於 Lynn 濾波器當 m=8時其濾波器的頻寬固定為 1 kHzmdt也就是 dt=1時頻寬為 125 Hz dt=2時頻寬為 625Hz依此類推 6對於 Lynn 濾波器其濾波器的延遲固定為 m個抽樣週期因此設計 hp = x8 - lp 即可得到高通濾波器的對應結果 7其中乘 2和除 64的運算以移位運算取代所以整個程式中並無任何乘法運算 8Lynn 濾波器本身並不是穩定濾波器所以在程式啟動時必須確實的將所有狀態

(x0~x16)歸零否則會產生不穩定的狀態輸出

因為 Lynn濾波器中所有參數固定所以除了抽樣週期 dt 之外並無任何可調參數

抽樣週期 dt 可以控制頻寬dt 越大則濾波器頻寬越低

將步階命令值的輸出送入 Lynn 濾波器中經由低通濾波器的效應可以減緩命

令的變化程度達到加減速控制的目的以下為使用 Lynn 濾波器型式實現加減速控

制的組合語言程式列印 如欲更進一步瞭解 Lynn 濾波器與 FIR 數位濾波器之間的關係可以參考通訊實驗

四數位濾波器設計(FIR)中之說明

ACC_controlasm程式列印 local cmd R0 IP 輸入點位置命令

local out R1 OP 輸出點加減速處理後的位置命令

local dif R2 OP 輸出點位置微分命令

local axis R3 0 馬達編號0=X1=Y2=Z3=C

local old R4 內部變數微分計算用

local sumL R5 內部變數積分計算用

local sumH R6 內部變數積分計算用

local y0 R7 內部變數y(0~2)

local y1 R8 local y2 R9

local x0 R10 內部變數x(0~16)

local x1 R11 local x2 R12 local x3 R13 local x4 R14

local x5 R15 local x6 R16 local x7 R17 local x8 R18

local x9 R19 local x10 R20 local x11 R21 local x12 R22

local x13 R23 local x14 R24 local x15 R25 local x16 R26

64

data 27 模組變數區長度

initial 開機啟動程序

WR dif0 RD (cmd) WR out WR old dif=0 out=old=cmd

sumHL=cmd64

SFL 6 WR sumL RD out SFR 10 SGN 5 WR sumH

RPT 17 WR x00 RPT 3 WR y00 RET x[0~16]=0y[0~2]=0

timer 即時控制程序

RD (cmd) SUBX old WR x0 x0=cmd-old old=cmd

SUB x81 ADD x16 ADD y11 SUB y2 WR y0 y0=x0-2x8+x16+2y1-y2

SGN ADD sumL WR sumL RDH ADC sumH WR sumH sumHL+=y0

WRH RD sumL SFR 6 WR out out=sumHL64

RD y0 SGN SFR WR dif dif=y032mm

RD x0 RPT 16 RDX x1 x[i]=x[i-1] i=1~16

RD y0 RDX y1 WR y2 y[i]=y[i-1] i=1~2

b9 RET

72光電盤輸入模組

DC馬達的位置由光電盤量測之預設儲存於 0xac與 0xbe二個輸入埠位址中其中位址 0xac記錄 X軸馬達的位置位址 0xbe記錄 Y軸馬達的位置由於本實驗的DC馬達接在 Y軸的位置上因此程式中直接選用 Y軸的輸入 光電盤位置輸入的程式列印如下其中速度由位置的差分而得至於馬達的位置

則使用內部 2個 word加以記錄精度為 32位元 POS_inputasm程式列印 local spd R0 OP 輸出點速度量測值

local ang R1 OP 輸出點角度量測值

local angH R2 內部變數角度的 32 位元部分

local mode R3 0x308 模式選擇15MHzAB 相正反向輸入

local pht R4 0xac 輸入阜地址光電盤輸入(0xac)

local phtc R5 0xbe 輸入阜地址光電盤模式(0xbe)

local old R6 內部變數速度更新用

data 7 模組變數區長度

initial 開機啟動程序

RD mode WR (phtc) phtc=mode

RD (pht) WR old WR spd0 RET old=phtspd=0

timer 即時控制程序

RD (pht) SUBX old SGN 11 WR spd spd=(pht-old)old=pht

65

ADD ang WR ang angHL+=spd

RDH ADC angH WR angH

RET

73 PWM輸出控制模組 模組方塊

cmd PWM輸出

程式說明 1在開機時將切換保護時間寫到輸出阜 0xbc上其中切換保護值為 0~6360=5us 2在每次 timer interrupt時將 cmd訊號處理後寫到輸出阜 0xb8上

PWM_outputasm程式列印 local cmd R0 IP gnd 輸入點v相命令

local gain R1 4096 參數輸出增益1=4096

local bias R2 2048 參數輸出偏壓0=2048

local limit R3 4095 參數輸出極限1=4095

local zone R4 0x88f0 參數頻率=12KHz切換保護=5us

local pwm R5 0xb8 輸出阜地址PWM0 輸出(0xb8)

local mode R6 0xbc 輸出阜地址PWM 模式(0xbc)

local p0md R7 0xf8 輸出阜地址port0 模式(0xf8)

local gnd R8 0 輸入接地點

data 9 模組變數區長度

initial 開機啟動程序

RD bias WR (pwm) pwm=bias

RD 0xffff WR (p0md) set port0 mode

RD zone WR (mode) RET mode=zone

stop 關機保護程序

RD bias WR (pwm) RET pwm=bias

timer 即時控制程序

RD (mode) xor 1 and 1 WR (mode) trigger watch-dog

RD (cmd) MUL gain SFR 12 ADD bias ACC=(cmdgain4096)+bias

MAX 0 MIN limit WR (pwm) pwm=limit(ACC)

RET

66

74 PD 控制模組

PD控制的模組方塊參見圖二十一所示其中比例控制的部份直接由增益 kp加以調整微分控制的部份則由誤差的差分經增益 kd的調整而得

Σ+

-

cmd

fdk

err out

Σ

pk

dk

Σ

+

+

+

-

old1minusZ

PD控制器的方塊圖

PD_controlasm程式列印 local cmd R0 IP gnd 輸入點位置命令(可忽略)

local fdk R1 IP gnd 輸入點位置回授(可忽略)

local out R2 OP 輸出點用以控制速度迴路

local kp R3 256 參數增益 kp10=256

local kd R4 0 參數增益 kd10=256

local err R5 0 內部變數

local old R6 0 內部變數

local gnd R7 0 無輸入時的短路點

data 8 模組變數區長度

initial 開機啟動程序

WR out0 WR old0 RET out=old=0

timer 即時控制程序

RD (cmd) SUB (fdk) PRTF WR err

MUL kp SFR 8 P=(cmd-fdk)kp256

RDS err SUBX old MUL kd SFR 8 D=(err-old)kd256

ADDS

WR out out=P+D

RET

程式中預設增益值的 10以整數值 256為基底因此使用 SFR 8的指令加以調

整另外在在計算微分項的程式部份用到 SUBX old的指令其詳細的暫存器動作如

下 參考 piDSP的指令說明SUBX指令將總共用到 3個時序參考錯誤 找不到參照

67

來源在時序 1時將原先 AX的資料拷貝一份到 HX中時序 2時正式執行減

法的動作所以 AX暫存器中的內容會變成 err-old時序 3時DSP會將存放在 HX暫存器中的內容拷貝一份到 old的記憶體中也就是經由 SUBX此一精簡指令將

同時完成計算差分所需要的相減與資料疊代的動作有效的利用 piDSP控制器 DSP核心的精簡指令將可以大幅提昇系統的計算速度

HX AXoldSUBXerr err

old

err

errerr olderr minus

1_err

errerr olderr minus err

1_err

1

2

3

SUBX的指令時序與暫存器變化

68

8附錄快速安裝說明

光纖網路通訊 FPGA 發展系統 (適用於 WIN-XP200098 系統)

快速安裝說明

26Pin 負載輸出入埠

雙電源︵5

12

伏︶輸入埠

單電源︵5

伏︶輸入埠

USB

光纖線輸

號 光纖線輸出埠

入 傳 埠

首先將光碟片 RFFPGA 目錄檔案拷貝在您工作硬碟裡面

第一次安裝時先將 USB 傳輸線接上電腦主機將電源供應器接上 FPGA 模組此時電

腦會出現安裝 USB-Serial 驅動程式選擇從清單安裝此驅動程式放置在光碟片

RFFPGA-USBdrive 選擇您目前安裝系統

可選擇 WIN-98WIN-MEWIN-2000WIN-XP 系統配合您現在工作電腦作業系統

69

注意一般電腦 USB 埠很多插口當您安裝驅動程式時是配合您當時插入之埠

下次如您插入不同接口埠時電腦會再次要求安裝驅動程式這是正常現象請再次安

裝驅動程式否則無法使用

FPLC 操作

首先進入 RFFPGA裡子目錄 testASM直接點選 fPLCexe 出現下面操作畫面(也可直接將

此檔案放置桌面直接點選)

(或者選擇 File 再執行 Setuphellip 選擇您要執行 CAI 檔)

70

進入下面操作畫面 首先使用滑鼠在 FPGA下載按鈕單擊動作使 FPGA變成 DSP晶片 實驗一至實驗五皆為使用 DSP組合語言設計程式其原始程式分別為 testASM1至testASM5可使用 texPad 開啟與編輯程式內容 實驗三與實驗五多有 IO控制動作 當選擇實驗三時出現下面畫面

71

eM_USB 模組

數字型 LED

0 1 2 34 5 6 78 9 A BC D E F

燈號型 LED

44 鍵盤

ADC0 ADC1 DAC0 DAC1

LED 選擇KEY 選擇

模 式 1

0123

注意操作畫面 3與 4 說明開關與按鍵選擇位置後選擇程式下載再按程式啟動如您

按下 0-3按鍵時燈號型 LED會有不同方向閃爍顯示程式停止時結束所有 IO控制動作再按回首頁選擇其他實驗 實驗四與實驗五

模式3

0 1 2 34 5 6 78 9 A BC D E F

按照上面開關選擇直接操作如果以上實驗皆能按照正常操作表示您光纖網路通訊

FPGA發展模組以能正常使用 注意 開機與關機動作順序如下

開機電腦啟動 --- eM_USB 模組電源接上 --- USB 接上電腦 ---

啟動 FPLC 軟體 --- 下載 FPGA 程式

關機關閉 FPLC 軟體 --- eM_USB 模組電源拔掉 --- 拔掉電腦 USB 接頭 ---關掉

電腦

如果以上順序有亂可能造成 USB 找不到驅動造成無法下載經過幾次測試還是

無法下載建議重新啟動電腦主機按照正確步驟操作

72

FPGA 下載操作

進入 FPLC 操作系統按照下列步驟選擇節點模組與下載 bit FPGA 檔案

在 VHDLDEMO 子目錄下您可以選擇您目前 FPGA 種類型號在此型號下我們已將 VHDL

與數位邏輯設計課本範例全部放於此處

73

光纖網路連線 FPGA 下載操作

首先利用光纖線將 eM_USB0 模組光纖輸出埠接至 eM_USB1 模組光纖輸入埠以此

類推最後再將最後 eM_USBN 模組光纖輸出埠接至 eM_USB0 模組光纖輸入埠配置

如附圖方式

個人電腦(Windows) eM_USB模組

0USB

eM_USB模組1

光纖網路

eM_USB模組2

eM_USB模組N

配置完成後進入 FPLC 系統首先必須先將 Node00 下載在 testASM 子目錄裡

piDSPv0bit 檔讓 eM_USB0 模組 FPGA 具備 DSP 功能才能執行光纖網路通訊

操作如下

此時您就可以選擇分別下載至各模組 FPGA 檔 bit

74

安裝 FPLC 注意事項

當您進入 FPLC 時

按 FILE 選擇 programhellip 選擇檔案為 exp_dcmplc 出現下面畫面

正常顯示畫面為

75

DOS 環境操作

在 PC 端的操作是在 Windows 環境中的 DOS 視窗中執行指令範例如下

eFPGA progNETbit 下載 FPGA電路至網路節點0(即 USB節點)中 eFPGA testLEDbit 1 下載 FPGA電路至網路節點1中

對於單一節點的控制程序如下

1將 eM_USB模組連結個人電腦的 USB端 2eM_USB模組開機 3執行下載指令即可 eFPGA xxxxbit 4若要更改 FPGA電路只要重新執行下載指令即可

對於多個網路節點的控制程序如下

1第一組 eM_USB模組連結個人電腦的 USB端再以光纖網路依序其他各節點 2連接 USB界面者為模組0從光纖發射端連接出去的模組為1依此類推 3將所有 eM_USB模組開機 4執行下載指令如下 eFPGA progNETbit 模組0必須先下載指定的 FPGA電路 eFPGA xxxxbit 1 再依序下載其他網路模組的 FPGA電路 eFPGA yyyybit 2 eFPGA zzzzbit 最後再重新下載模組0的 FPGA電路 5換句話說模組0必須先執行 progNETbit讓光纖網路接受 FPGA控制後才能透過光纖網路下載至其他節點等全部網路節點下載完畢後再將模組0的 FPGA重新下載讓模組0也可自由執行任意的 FPGA電路

6若要更改某一個網路節點中的 FPGA電路只要重新執行下述指令 eFPGA progNETbit 模組0必須先下載指定的 FPGA電路 eFPGA yyyybit 2 下載指定網路模組的 FPGA電路 eFPGA zzzz bit 最後再重新下載模組0的 FPGA電路 換句話說除非模組0中的 FPGA已經包括光纖網路管理電路否則一定要先在

模組0中下載網路管理電路後才能下載指定網路節點的 FPGA電路

76

光纖網路通訊 FPGA 發展系統

系統配置

光纖網路通訊 FPGA 發展系統的系統配置圖如下

個人電腦(Windows) eM_USB模組

0USB

eM_USB模組1

光纖網路

eM_USB模組2

eM_USB模組N

其中

1基本模組為 eM_USB模組可用 USB界面和個人電腦連線並提供 USB對光纖網路的轉換功能使得個人電腦可以獨立控制光纖網路中的每個網路節點

2eM_USB模組也可以作為光纖網路中的網路節點透過光纖網路而接受個人電腦的

監控 3就個人電腦而言不論是 USB界面直接連結或是以光纖網路間接連結的 eM_USB模組都是可以直接監控的網路節點最多可以同時控制一個 USB節點和 30個網路節點

4對於每一個網路節點個人電腦都可執行 eM_USB模組中 FPGA的電路下載工作並在適當的 FPGA電路配合下可執行 eM_USB模組中 FPGA內部電路的讀寫控制 5透過適當的 FPGA電路設計各網路節點都可透過光纖網路和其他任何網路節點

作同步通訊執行 FPGA內部記憶體的資料交換資料交換頻率可達 1KHz以上

77

網路模組配置

每個網路模組的標準配置圖如下

eM_USB模組光纖網路

USB eM_FPGA卡

eM_DEMO模組

eM_EXP實驗模組

DC電源

其中

1網路模組以 eM_USB模組為主提供基本的 USB界面和光纖網路連線 2eM_USB模組中的 FPGACPLD採用插卡型式可選擇不同的 eM_FPGA卡包括

eM_2V1K卡可選用 Virtex系列的 XC2V250和 XC2V1000 eM_3S1K卡可選用 Spartan3系列的 XC3S400XC3S1000和 XC3S1500 eM_3S50卡可選用 Spartan3系列的 XC3S50XC3S200和 XC3S400 eM_95XL卡可選用 9500XL系列的 XC95144XL和 XC95288XL 3eM_USB模組中的對外連線有兩種一種是 26P接頭用以連接既有的各種實驗模

組另一種是兩組 50P接頭將 FPGA中各接腳引出用以連接專題實驗 4eM_DEMO模組就是插上 50P接頭的教學模組其中包括 LED 數字顯示和 44鍵盤也具備兩組的 ADC和兩組的 DAC接頭提供類比訊號的測試工具

常用的實驗組合包括

1精簡組合包括(eM_USB+eM_FPGA)提供基本的網路節點適用於專題實驗 2標準組合包括(eM_USB+eM_FPGA+eM_DEMO)提供基礎 FPGA設計的教學實驗

3實驗組合包括(eM_USB+eM_FPGA+eM_DEMO+eM_EXP)提供進階的 FPGA實驗可依需求選用不同的實驗模組

78

eM_USB 模組

eM_USB 模組的電路配置圖如下

TxRx

DCPower

USB

JP2

JP3

光纖界面

外加電源

PC連線

JP1

eM_FPGA模組

FT232 CPLD FlashROM

SRAM

10cm

6cm

JP4

其中

1對外的連線接頭包括 DC電源 可選擇單電源(5V)或是多電源(5V+12V-12V)兩種 USB界面 直接連接個人電腦 光纖界面連接光纖網路 2實驗界面包括 JP1負責內部 CPLD的電路下載 JP2JP3兩組 50P的擴張用接頭 JP4 標準 26P接頭用以連接各種實驗模組 3內部的電路配置包括 A以 SO-DIMM接頭連接各種 eM_FPGA卡 B內附 EEPROMFlashROM和 SRAM提供 FPGA作應用測試 C以一顆 FT232BM作為 USB界面解碼而以一顆 CPLD作為光纖網路解碼 D提供各種 eM_FPGA卡的電路下載功能 4內附五顆 LED由上而下依序為 usbLED指示 USB界面的讀寫狀態 tstLED可由 FPGA電路自行定義 stsLED可由 FPGA電路自行定義 RxLED 可由 FPGA電路自行定義 TxLED 可由 FPGA電路自行定義

79

外部接腳定義

外部接頭的接點順序圖示如下

上視圖

JP11 9 JP4

126225

JP31

50249

JP21

50249

而各接頭的接點定義如下

JP1 JP4 JP2 JP3 1+33V 1+12V 2+12V 1 GND 2 GND 1 GND 2 GND 2GND 3 ADC 4 DAC 3POWER 4ALARM 3 +5V 4 +5V 3nc 5 yPB2 6 yPB3 5RxNET 6TxNET 5+12V 6+12V 4TCK 7 yPB1 6 yPB4 7RxUSB 6TxUSB 7-12V 6-12V 5nc 9 yPB0 10yPB5 9RxCAN 10TxCAN 9 ADC 10 DAC 6TDO 11yPB6 12yPB7 11P0D0 12P0D1 11P1D0 12P1D1 7TDI 13yGND 14yPC3 13P0D2 14P0D3 13P1D2 14P1D3 8nc 15yPC2 16yPC1 15P0D4 16P0D5 15P1D4 16P1D5 9TMS 17yPC0 18yPA0 17P0D6 18P0D7 17P1D6 18P1D7 19yPA1 20yPA2 19P0D8 20P0D9 19P1D8 20P1D9 21yPA3 22GND 21P0D10 22P0D11 21P1D10 22P1D11 23GND 24+5V 23P0D12 24P0D13 23P1D12 24P1D13 25+5V 26nc 25P0D14 26P0D15 25P1D14 26P1D15 27P2D0 28P2D1 27PxA0 28PxA1 29P2D2 30P2D3 29PxA2 30PxA3 31P2D4 32P2D5 31PxA4 32PxA5 33P2D6 34P2D7 33PxA6 34PxA7 35P2D8 36P2D9 35PxB0 36PxB1 37P2D10 38P2D11 37PxB2 38PxB3 39P2D12 40P2D13 39PxB4 40PxB5 41P2D14 42P2D15 41PxB6 42PxB7 43ADC0 44ADC1 43PxC0 44PxC1 45ADC2 46ADC3 45PxC2 46PxC3 47ADC4 48ADC5 47PxC4 48PxC5 49DAC0 50DAC1 49PxC6 50PxC7

80

eM_FPGA 模組

在各種 eM_FPGA 模組中FPGA 對外電路的標準配置圖如下

24576MHz

FlashROM

26PSRAM

EEPROM

mD[8]

yPA[4]

FPGACPLD

mA[19]mRDmWRmCSeeCKeeCSeeDIeeDO

光纖界面 RxNETTxNET

USB 界面 RxUSBTxUSBCLK24MPOWERALARM

LED

tstLEDstsLEDRxLEDTxLED

yPB[8]yPC[4]

ADCDAC

ADC[8]

實驗模組

ADC[2]

DAC[2]

xPA[4]

xPB[8]

xPC[4]

基礎實驗

其中

1FPGACPLD可以選擇下述幾種 XC2V250XC2V1000 採用 eM_2V1K模組其中 FPGA為 FG456包裝 XC3S400XC3S1000XC3S1500採用 eM_3S1K模組其中 FPGA為 FG456包裝 XC3S400XC3S1000XC3S1500採用 eM_3S1K模組其中 FPGA為 FG456包裝 XC3S50XC3S200XC3S400 採用 eM_3S50模組其中 FPGA為 TQ144包裝 XC95144XLXC95288XL 採用 eM_95XL模組其中 CPLD為 TQ144包裝 2採用 FG456包裝者可以控制所有的 IO界面 3採用 TQ144包裝者只是不能控制 RAM和 FlashROM而可以控制其他所有的界面 4所有 FPGA模組都可自由選擇由 USB界面或是由光纖界面下載電路但是 CPLD模組只能固定由 USB界面下載電路

5所有 FPGACPLD模組都可透過 26P接頭連接既有的各種實驗模組

81

FPGA 接腳對照表

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

mD0 XD6 mD0 A17 C13 -- -- mD1 XD7 mD1 B17 D12 -- -- mD2 XD8 mD2 C17 D11 -- -- mD3 XD9 mD3 D17 C11 -- -- mD4 XD10 mD4 E17 D10 -- -- mD5 XD11 mD5 E16 C10 -- -- mD6 XD12 mD6 E14 D9 -- -- mD7 XD13 mD7 E13 D7 -- -- mA0 XD14 mA0 D13 C7 -- -- mA1 XD15 mA1 C13 D6 -- -- mA2 XA0 mA2 V5 C3 -- -- mA3 XA1 mA3 U5 C4 -- -- mA4 XA2 mA4 Y2 D3 -- -- mA5 XA3 mA5 Y1 D4 -- -- mA6 XA4 mA6 V4 E3 -- -- mA7 XA5 mA7 V3 E4 -- -- mA8 XA6 mA8 W2 F3 -- -- mA9 XA7 mA9 W1 F4 -- -- mA10 XA8 mA10 T2 G6 -- -- mA11 XA9 mA11 T1 K3 -- -- mA12 XA10 mA12 R4 K10 -- -- mA13 XA11 mA13 R3 L3 -- -- mA14 XA12 mA14 R2 L4 -- -- mRD XRD mRD R1 D5 -- -- mWR XWR mWR P6 C6 -- --

POWER P0A0 POWER B4 B20 P1 P5 ALARM P0A1 ALARM A4 A19 P2 P6 RxNET P0A2 RxNET C4 B19 P4 P7 TxNET P0A3 TxNET C5 A18 P5 P9 RxUSB P0B0 RxUSB B5 A15 P6 P10 TxUSB P0B1 TxUSB A5 B15 P7 P11 RxCAN P0B2 RxCAN D6 A14 P8 P12 RxCAN P0B3 TxCAN C6 B14 P10 P13

CLK24M CLK24M CLK24M E12 B12 P124 P38

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

PWM0H P3A0 P0D0 E6 A8 P21 P23 PWM0L P3A1 P0D1 E5 B8 P23 P24 PWM1H P3A2 P0D2 C2 B6 P24 P25 PWM1L P3A3 P0D3 C1 A5 P25 P26 PWM2H P3A4 P0D4 D2 B5 P26 P27

82

PWM2L P3A5 P0D5 D1 A4 P27 P28 PWMenb P3A6 P0D6 E4 B4 P28 P30 PHT1Z P3A7 P0D7 E3 A3 P30 P31 PHT1A P3B0 P0D8 G2 C1 P31 P32 PHT1B P3B1 P0D9 G1 C2 P32 P33 PHT0A P3B2 P0D10 H5 D1 P33 P34 PHT0B P3B3 P0D11 J6 D2 P35 P35 AMP0 P3B4 P0D12 H4 E1 P36 P39 AMP1 P3B5 P0D13 H3 E2 P40 P40 AMP2 P3B6 P0D14 H2 F2 P41 P41 AMP3 P3B7 P0D15 H1 G1 P44 P43 eeSK P0C3 P1D0 C10 B9 P20 P22 eeCS P0C2 P1D1 D10 A9 P18 P21 eeDI P0C1 P1D2 F10 B10 P17 P20 eeDO P0C0 P1D3 E10 B11 P15 P19 ssCK P0B7 P1D4 E8 A11 P14 P17 ssCS P0B6 P1D5 E7 A12 P13 P16 ssDI P0B5 P1D6 A6 B13 P12 P15 ssDO P0B4 P1D7 B6 A13 P11 P14

ppCLK P3C0 P1D8 K4 G2 P46 P44 ppDIN P3C1 P1D9 K3 K1 P47 P45 TxD P3C2 P1D10 K2 K2 P50 P46 RxD P3C3 P1D11 K1 L1 P51 P48

tstLED P3C4 P1D12 L5 L2 P52 P49 stsLED P3C5 P1D13 L4 M1 P53 P50 RxLED P3C6 P1D14 L3 M2 P55 P51 TxLED P3C7 P1D15 L2 N1 P56 P52

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

xPA0 P2A0 P2D0 AA3 N2 P59 P53 xPA1 P2A1 P2D1 Y4 T1 P60 P54 xPA2 P2A2 P2D2 AA4 T2 P63 P56 xPA3 P2A3 P2D3 AB4 U2 P68 P57 xPC0 P2A4 P2D4 W5 V1 P69 P58 xPC1 P2A5 P2D5 Y5 V2 P70 P59 xPC2 P2A6 P2D6 AA5 W1 P73 P60 xPC3 P2A7 P2D7 AB5 W2 P74 P61

-- P2B0 P2D8 V6 Y1 P76 P64 -- P2B1 P2D9 V7 Y2 P77 P66 -- P2B2 P2D10 W6 AA3 P78 P68

mCS P2B3 P2D11 Y6 AB4 P79 P69 mA15 P2B4 P2D12 V9 AA4 P80 P70 mA16 P2B5 P2D13 V10 AB5 P82 P71 mA17 P2B6 P2D14 W10 AA5 P83 P74 mA18 P2B7 P2D15 Y10 AA6 P84 P75 CS0 P2C0 ADC0 AA10 AB8 P85 P76

83

SDIN0 P2C1 ADC1 AB10 AA8 P86 P77 CS1 P2C2 ADC2 U10 AB9 P87 P78

SDIN1 P2C3 ADC3 U11 AA9 P89 P79 SCLK P2C4 ADC4 V11 AB10 P90 P80 CS2 P2C5 ADC5 W11 AA10 P92 P81

SDOUT P2C6 ADC6 Y11 AB11 P93 P82 LDAC P2C7 ADC7 AA11 AA11 P95 P83

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

xPB0 P1A0 PxA0 M1 M3 P135 P85 xPB1 P1A1 PxA1 M2 M4 P132 P86 yPB2 P1A2 PxA2 M3 N3 P131 P87 yPB3 P1A3 PxA3 M4 N4 P130 P88 yPB1 P1A4 PxA4 M5 T4 P129 P91 yPB4 P1A5 PxA5 M6 T5 P128 P92 yPB0 P1A6 PxA6 N1 U3 P127 P93 yPB5 P1A7 PxA7 N2 U4 P125 P94 yPB6 P1B0 PxB0 U13 V3 P119 P95 yPB7 P1B1 PxB1 V13 V4 P118 P96 xPB2 P1B2 PxB2 W13 W3 P116 P97 xPB3 P1B3 PxB3 Y13 W4 P113 P98 xPB4 P1B4 PxB4 AA13 Y3 P112 P100 xPB5 P1B5 PxB5 AB13 Y4 P96 P101 yPC3 P1B6 PxB6 U12 Y5 P97 P102 yPC2 P1B7 PxB7 V12 W5 P98 P103 yPC1 P1C7 PxC0 AB17 W11 P108 P113 yPC0 P1C6 PxC1 AA17 Y11 P107 P112 yPA0 P1C5 PxC2 Y17 W10 P105 P111 yPA1 P1C4 PxC3 W17 Y10 P104 P110 yPA2 P1C3 PxC4 AB18 W9 P103 P107 yPA3 P1C2 PxC5 AA18 W8 P102 P106 xPB6 P1C1 PxC6 Y18 W6 P100 P105 xPB7 P1C0 PxC7 W18 Y6 P99 P104

84

eM_DEMO 模組

eM_DEMO 模組的電路配置圖如下

eM_USB 模組

數字型 LED

0 1 2 34 5 6 78 9 A BC D E F

燈號型 LED

44 鍵盤

ADC0 ADC1 DAC0 DAC1

LED 選擇KEY 選擇

其中

1eM_DEMO模組的基本功能包括 A將 xPAxPBxPC等 16個 IO訊號引出控制 LED和鍵盤電路 B將 ADDA訊號引出並放大成+-10V的工作範圍 2LED和鍵盤可以選擇三種模式由 LED和 KEY 兩組開關作選擇圖示如下

模式1

0123

模式2 模式3

0 1 2 34 5 6 78 9 A BC D E F

0123

3模式14鍵輸入並搭配 16點的 LED燈號顯示其中 16點 LED分別對映到 xPA[0~3]xPB[0~7]和 xPC[0~3] 4組按鍵分別對映到 xPC[0~3] 4模式24鍵輸入並搭配四個 7段式數字顯示其中 數字顯示由 xPA[0~3]作數字掃瞄而由 xPB[0~7]作 7段式 LED控制 4組按鍵 分別對映到 xPC[0~3] 5模式316鍵輸入並搭配四個 7段式數字顯示其中 數字顯示由 xPA[0~3]作數字掃瞄而由 xPB[0~7]作 7段式 LED控制 16組按鍵由 xPA[0~3]作鍵盤掃瞄而由 xPC[0~3]作鍵盤讀取 6根據VHDL與數位邏輯設計的章節其中 第 1章至 10章的實驗採用模式1而 第 11章實驗採用模式2而 第 12章之後的實驗都採用模式3

85

FPGA UCF 定義

eM_3S1K 模組

NET CLK LOC = B12

NET XAlt0gt LOC = N2

NET XAlt1gt LOC = T1

NET XAlt2gt LOC = T2

NET XAlt3gt LOC = U2

NET XBlt0gt LOC = M3

NET XBlt1gt LOC = M4

NET XBlt2gt LOC = W3

NET XBlt3gt LOC = W4

NET XBlt4gt LOC = Y3

NET XBlt5gt LOC = Y4

NET XBlt6gt LOC = W6

NET XBlt7gt LOC = Y6

NET XClt0gt LOC = V1

NET XClt1gt LOC = V2

NET XClt2gt LOC = W1

NET XClt3gt LOC = W2

NET YAlt0gt LOC = W10

JP4 接頭

NET YAlt1gt LOC = Y10

NET YAlt2gt LOC = W9

NET YAlt3gt LOC = W8

NET YBlt0gt LOC = U3

NET YBlt1gt LOC = T4

NET YBlt2gt LOC = N3

NET YBlt3gt LOC = N4

NET YBlt4gt LOC = T5

NET YBlt5gt LOC = U4

NET YBlt6gt LOC = V3

NET YBlt7gt LOC = V4

NET YClt0gt LOC = Y11

NET YClt1gt LOC = W11

NET YClt2gt LOC = W5

NET YClt3gt LOC = Y5

在光碟片中 RFFPGAVHDLDEMOBIT3S1K 裡有 VHDL 與數位邏輯設計書本範例原始檔與合成檔

86

eM_3S50 模組

NET CLK LOC = P124

NET XAlt0gt LOC = P59

NET XAlt1gt LOC = P60

NET XAlt2gt LOC = P63

NET XAlt3gt LOC = P68

NET XBlt0gt LOC = P135

NET XBlt1gt LOC = P132

NET XBlt2gt LOC = P116

NET XBlt3gt LOC = P113

NET XBlt4gt LOC = P112

NET XBlt5gt LOC = P96

NET XBlt6gt LOC = P100

NET XBlt7gt LOC = P99

NET XClt0gt LOC = P69

NET XClt1gt LOC = P70

NET XClt2gt LOC = P73

NET XClt3gt LOC = P74

NET YAlt0gt LOC = P105

JP4 接頭

NET YAlt1gt LOC = P104

NET YAlt2gt LOC = P103

NET YAlt3gt LOC = P102

NET YBlt0gt LOC = P127

NET YBlt1gt LOC = P129

NET YBlt2gt LOC = P131

NET YBlt3gt LOC = P130

NET YBlt4gt LOC = P128

NET YBlt5gt LOC = P125

NET YBlt6gt LOC = P119

NET YBlt7gt LOC = P118

NET YClt0gt LOC = P107

NET YClt1gt LOC = P108

NET YClt2gt LOC = P98

NET YClt3gt LOC = P97

在光碟片中 RFFPGAVHDLDEMOBIT3S200 裡有VHDL與數位邏輯設計書本範例原始檔與合成檔

87

eM_95XL 模組

NET CLK LOC = SPIN38

NET XAlt0gt LOC = SPIN53

NET XAlt1gt LOC = SPIN54

NET XAlt2gt LOC = SPIN56

NET XAlt3gt LOC = SPIN57

NET XBlt0gt LOC = SPIN85

NET XBlt1gt LOC = SPIN86

NET XBlt2gt LOC = SPIN97

NET XBlt3gt LOC = SPIN98

NET XBlt4gt LOC = SPIN100

NET XBlt5gt LOC = SPIN101

NET XBlt6gt LOC = SPIN105

NET XBlt7gt LOC = SPIN104

NET XClt0gt LOC = SPIN58

NET XClt1gt LOC = SPIN59

NET XClt2gt LOC = SPIN60

NET XClt3gt LOC = SPIN61

NET YAlt0gt LOC = SPIN111

JP4 接頭

NET YAlt1gt LOC = SPIN110

NET YAlt2gt LOC = SPIN107

NET YAlt3gt LOC = SPIN106

NET YBlt0gt LOC = SPIN93

NET YBlt1gt LOC = SPIN91

NET YBlt2gt LOC = SPIN87

NET YBlt3gt LOC = SPIN88

NET YBlt4gt LOC = SPIN92

NET YBlt5gt LOC = SPIN94

NET YBlt6gt LOC = SPIN95

NET YBlt7gt LOC = SPIN96

NET YClt0gt LOC = SPIN112

NET YClt1gt LOC = SPIN113

NET YClt2gt LOC = SPIN103

NET YClt3gt LOC = SPIN102

在光碟片中 RFFPGAVHDLDEMOSVF95288XL 裡有VHDL與數位邏輯設計書本範例原始檔與合成

檔案

88

eM_FPGA 模組

NET CLK LOC = E12

NET XAlt0gt LOC = AA3

NET XAlt1gt LOC = Y4

NET XAlt2gt LOC = AA4

NET XAlt3gt LOC = AB4

NET XBlt0gt LOC = M1

NET XBlt1gt LOC = M2

NET XBlt2gt LOC = W13

NET XBlt3gt LOC = Y13

NET XBlt4gt LOC = AA13

NET XBlt5gt LOC = AB13

NET XBlt6gt LOC = Y18

NET XBlt7gt LOC = W18

NET XClt0gt LOC = W5

NET XClt1gt LOC = Y5

NET XClt2gt LOC = AA5

NET XClt3gt LOC = AB5

NET YAlt0gt LOC = Y17

JP4 接頭

NET YAlt1gt LOC = W17

NET YAlt2gt LOC = AB18

NET YAlt3gt LOC = AA18

NET YBlt0gt LOC = N1

NET YBlt1gt LOC = M5

NET YBlt2gt LOC = M3

NET YBlt3gt LOC = M4

NET YBlt4gt LOC = M6

NET YBlt5gt LOC = N2

NET YBlt6gt LOC = U13

NET YBlt7gt LOC = V13

NET YClt0gt LOC = AA17

NET YClt1gt LOC = AB17

NET YClt2gt LOC = V12

NET YClt3gt LOC = U12

在光碟片中 RFFPGAVHDLDEMOBIT2V250 裡有VHDL與數位邏輯設計書本範例原始檔與合成檔

89

Page 62: RFFPGA 直流馬達實驗手冊juniortek.com.tw/program/manual/RF-DC-mal.pdf · em_demo模組 em_dcm 直流伺服馬達 dc電源 rffpga 系統的直流馬達實驗規劃 其中包括:

模組程式範例IIR1_FILTERasm

local u R0 IP 輸入點濾波器輸入 local lp R1 OP 輸出點低通濾波器輸出 local hp R2 OP 輸出點高通濾波器輸出 local dt R3 1 參數抽樣週期 local ka R4 4096 參數增益 ka10=4096 local prd R5 內部變數抽樣週期用 data 6 模組變數區長度 initial 開機啟動程序 WR lp0 WR hp0 WR prd1 RET lp=hp=0prd=1 timer 即時控制程序 SUB prd1 JNZ b9 if (--prdgt0) return RD dt WR prd prd=dt RD (u) SUB lp WR hp hp=u-lp MUL ka SFR 12 ADD lp WR lp lp+=(hpka4096) b9 RET

資料蒐集模組

資料蒐集模組是一個非常特殊的模組專門配合 eTTY 程式中的示波器使用

模組程式範例DAS4asm

local cmd R0 0 紀錄命令0=停止1=前置記錄2=正觸發4=負觸發6=觸發記錄 local dt R1 1 抽樣週期每 dT抽樣一次 local tab R2 TP DAS表格啟始位址 local cnt R3 0 目前記錄點(0~255) local ch1 R4 0 定義頻道1的變數位址 local ch2 R5 0 定義頻道2的變數位址 local ch3 R6 0 定義頻道3的變數位址 local ch4 R7 0 定義頻道4的變數位址 local trg R8 0 定義觸發頻道的變數位址 local th R9 0 觸發準位 local tail R10 0 觸發後的抽樣個數 local buf R11 1 抽樣計數(1~dt) local pnt R12 表格位址計算pnt=tab+cnt4 local len R13 表格長度計算(0~256) data 14 定義模組變數區的長度 table tab 1024 定義表格的長度 initial 啟動程序 WR cmd0 RET cmd=0 timer 控制程序

62

ADD cmd0 JZ t9 if (cmd==0) return SUB buf1 JNZ t9 if (--buf)gt0) return RD dt WR buf dt=buf RD cnt ADD 1 AND 0xff WR cnt cnt=(cnt+1)amp0xff SFL 2 ADD tab WR pnt pnt=tab+cnt4 RD (ch1) WR (pnt) ADD pnt1 pnt++=ch1 RD (ch2) WR (pnt) ADD pnt1 pnt++=ch2 RD (ch3) WR (pnt) ADD pnt1 pnt++=ch3 RD (ch4) WR (pnt) pnt =ch4 RD cmd SUB 1 JZ t9 SUB 1 JZ t2 SUB 1 JZ t3 SUB 1 JZ t4 SUB 1 JZ t5 SUB 1 JZ t6 JR t7 t2 RD (trg) SUB th JGE t9 ADD cmd1 JR t9 wait trgltth t3 RD (trg) SUB th JLE t9 JR t6 wait trggtth t4 RD (trg) SUB th JLE t9 ADD cmd1 JR t9 wait trggtth t5 RD (trg) SUB th JGE t9 JR t6 wait trgltth t6 WR len0 WR cmd7 len=0cmd=7 t7 ADD len1 SUB tail JLT t9 WR cmd0 if ((++len)gt=0x80) cmd=0 t9 RET

與 DC 馬達控制相關的程式模組有以下 4個程式模組說明如下

(1)加減速控制模組 ACC_controlasm (2)光電盤輸入模組 POS_inputasm (3)PWM輸出模組 PWM_outputasm (4)PD控制模組 PD_controlasm

71加減速控制模組 此程式模組主要功能在於執行位置控制的加減速命令修正其數學模式採用 Lynn

濾波器的架構參見下圖

cmd

2

+

old Z -1

-

Z -1

Z -1

Z-1

Z-1x0 x1 x8 x9 x16

+ -

++

2

Z-1

Z-1 y1 y2

+

-

y0

+ +

sumZ-1

+164

12

out

dif

+

63

加減速控制模組方塊圖

其中

1Lynn 濾波器的階數固定成八階也就是 m=8其公式為 H(z) = (1-2Z-m+Z-2m)(1-2Z-1+Z-2)m2

2因為m=8所以m2=64因此最後計算低通濾波的部份時要先做除 64的運算 3因為低通濾波(lp)和 y0之間有 64倍的差異代表 y0y1y2的變化範圍比濾波器輸

入值要擴大許多例如輸入值在+-1000變化時y0y1y2很可能會在+-64000之間變化這範圍已經超出整數處理的範圍很可能會造成錯誤的計算結果

4所以在實驗時輸入值的變化範圍必須控制在+-500之間以保證計算的正確性 5對於 Lynn 濾波器當 m=8時其濾波器的頻寬固定為 1 kHzmdt也就是 dt=1時頻寬為 125 Hz dt=2時頻寬為 625Hz依此類推 6對於 Lynn 濾波器其濾波器的延遲固定為 m個抽樣週期因此設計 hp = x8 - lp 即可得到高通濾波器的對應結果 7其中乘 2和除 64的運算以移位運算取代所以整個程式中並無任何乘法運算 8Lynn 濾波器本身並不是穩定濾波器所以在程式啟動時必須確實的將所有狀態

(x0~x16)歸零否則會產生不穩定的狀態輸出

因為 Lynn濾波器中所有參數固定所以除了抽樣週期 dt 之外並無任何可調參數

抽樣週期 dt 可以控制頻寬dt 越大則濾波器頻寬越低

將步階命令值的輸出送入 Lynn 濾波器中經由低通濾波器的效應可以減緩命

令的變化程度達到加減速控制的目的以下為使用 Lynn 濾波器型式實現加減速控

制的組合語言程式列印 如欲更進一步瞭解 Lynn 濾波器與 FIR 數位濾波器之間的關係可以參考通訊實驗

四數位濾波器設計(FIR)中之說明

ACC_controlasm程式列印 local cmd R0 IP 輸入點位置命令

local out R1 OP 輸出點加減速處理後的位置命令

local dif R2 OP 輸出點位置微分命令

local axis R3 0 馬達編號0=X1=Y2=Z3=C

local old R4 內部變數微分計算用

local sumL R5 內部變數積分計算用

local sumH R6 內部變數積分計算用

local y0 R7 內部變數y(0~2)

local y1 R8 local y2 R9

local x0 R10 內部變數x(0~16)

local x1 R11 local x2 R12 local x3 R13 local x4 R14

local x5 R15 local x6 R16 local x7 R17 local x8 R18

local x9 R19 local x10 R20 local x11 R21 local x12 R22

local x13 R23 local x14 R24 local x15 R25 local x16 R26

64

data 27 模組變數區長度

initial 開機啟動程序

WR dif0 RD (cmd) WR out WR old dif=0 out=old=cmd

sumHL=cmd64

SFL 6 WR sumL RD out SFR 10 SGN 5 WR sumH

RPT 17 WR x00 RPT 3 WR y00 RET x[0~16]=0y[0~2]=0

timer 即時控制程序

RD (cmd) SUBX old WR x0 x0=cmd-old old=cmd

SUB x81 ADD x16 ADD y11 SUB y2 WR y0 y0=x0-2x8+x16+2y1-y2

SGN ADD sumL WR sumL RDH ADC sumH WR sumH sumHL+=y0

WRH RD sumL SFR 6 WR out out=sumHL64

RD y0 SGN SFR WR dif dif=y032mm

RD x0 RPT 16 RDX x1 x[i]=x[i-1] i=1~16

RD y0 RDX y1 WR y2 y[i]=y[i-1] i=1~2

b9 RET

72光電盤輸入模組

DC馬達的位置由光電盤量測之預設儲存於 0xac與 0xbe二個輸入埠位址中其中位址 0xac記錄 X軸馬達的位置位址 0xbe記錄 Y軸馬達的位置由於本實驗的DC馬達接在 Y軸的位置上因此程式中直接選用 Y軸的輸入 光電盤位置輸入的程式列印如下其中速度由位置的差分而得至於馬達的位置

則使用內部 2個 word加以記錄精度為 32位元 POS_inputasm程式列印 local spd R0 OP 輸出點速度量測值

local ang R1 OP 輸出點角度量測值

local angH R2 內部變數角度的 32 位元部分

local mode R3 0x308 模式選擇15MHzAB 相正反向輸入

local pht R4 0xac 輸入阜地址光電盤輸入(0xac)

local phtc R5 0xbe 輸入阜地址光電盤模式(0xbe)

local old R6 內部變數速度更新用

data 7 模組變數區長度

initial 開機啟動程序

RD mode WR (phtc) phtc=mode

RD (pht) WR old WR spd0 RET old=phtspd=0

timer 即時控制程序

RD (pht) SUBX old SGN 11 WR spd spd=(pht-old)old=pht

65

ADD ang WR ang angHL+=spd

RDH ADC angH WR angH

RET

73 PWM輸出控制模組 模組方塊

cmd PWM輸出

程式說明 1在開機時將切換保護時間寫到輸出阜 0xbc上其中切換保護值為 0~6360=5us 2在每次 timer interrupt時將 cmd訊號處理後寫到輸出阜 0xb8上

PWM_outputasm程式列印 local cmd R0 IP gnd 輸入點v相命令

local gain R1 4096 參數輸出增益1=4096

local bias R2 2048 參數輸出偏壓0=2048

local limit R3 4095 參數輸出極限1=4095

local zone R4 0x88f0 參數頻率=12KHz切換保護=5us

local pwm R5 0xb8 輸出阜地址PWM0 輸出(0xb8)

local mode R6 0xbc 輸出阜地址PWM 模式(0xbc)

local p0md R7 0xf8 輸出阜地址port0 模式(0xf8)

local gnd R8 0 輸入接地點

data 9 模組變數區長度

initial 開機啟動程序

RD bias WR (pwm) pwm=bias

RD 0xffff WR (p0md) set port0 mode

RD zone WR (mode) RET mode=zone

stop 關機保護程序

RD bias WR (pwm) RET pwm=bias

timer 即時控制程序

RD (mode) xor 1 and 1 WR (mode) trigger watch-dog

RD (cmd) MUL gain SFR 12 ADD bias ACC=(cmdgain4096)+bias

MAX 0 MIN limit WR (pwm) pwm=limit(ACC)

RET

66

74 PD 控制模組

PD控制的模組方塊參見圖二十一所示其中比例控制的部份直接由增益 kp加以調整微分控制的部份則由誤差的差分經增益 kd的調整而得

Σ+

-

cmd

fdk

err out

Σ

pk

dk

Σ

+

+

+

-

old1minusZ

PD控制器的方塊圖

PD_controlasm程式列印 local cmd R0 IP gnd 輸入點位置命令(可忽略)

local fdk R1 IP gnd 輸入點位置回授(可忽略)

local out R2 OP 輸出點用以控制速度迴路

local kp R3 256 參數增益 kp10=256

local kd R4 0 參數增益 kd10=256

local err R5 0 內部變數

local old R6 0 內部變數

local gnd R7 0 無輸入時的短路點

data 8 模組變數區長度

initial 開機啟動程序

WR out0 WR old0 RET out=old=0

timer 即時控制程序

RD (cmd) SUB (fdk) PRTF WR err

MUL kp SFR 8 P=(cmd-fdk)kp256

RDS err SUBX old MUL kd SFR 8 D=(err-old)kd256

ADDS

WR out out=P+D

RET

程式中預設增益值的 10以整數值 256為基底因此使用 SFR 8的指令加以調

整另外在在計算微分項的程式部份用到 SUBX old的指令其詳細的暫存器動作如

下 參考 piDSP的指令說明SUBX指令將總共用到 3個時序參考錯誤 找不到參照

67

來源在時序 1時將原先 AX的資料拷貝一份到 HX中時序 2時正式執行減

法的動作所以 AX暫存器中的內容會變成 err-old時序 3時DSP會將存放在 HX暫存器中的內容拷貝一份到 old的記憶體中也就是經由 SUBX此一精簡指令將

同時完成計算差分所需要的相減與資料疊代的動作有效的利用 piDSP控制器 DSP核心的精簡指令將可以大幅提昇系統的計算速度

HX AXoldSUBXerr err

old

err

errerr olderr minus

1_err

errerr olderr minus err

1_err

1

2

3

SUBX的指令時序與暫存器變化

68

8附錄快速安裝說明

光纖網路通訊 FPGA 發展系統 (適用於 WIN-XP200098 系統)

快速安裝說明

26Pin 負載輸出入埠

雙電源︵5

12

伏︶輸入埠

單電源︵5

伏︶輸入埠

USB

光纖線輸

號 光纖線輸出埠

入 傳 埠

首先將光碟片 RFFPGA 目錄檔案拷貝在您工作硬碟裡面

第一次安裝時先將 USB 傳輸線接上電腦主機將電源供應器接上 FPGA 模組此時電

腦會出現安裝 USB-Serial 驅動程式選擇從清單安裝此驅動程式放置在光碟片

RFFPGA-USBdrive 選擇您目前安裝系統

可選擇 WIN-98WIN-MEWIN-2000WIN-XP 系統配合您現在工作電腦作業系統

69

注意一般電腦 USB 埠很多插口當您安裝驅動程式時是配合您當時插入之埠

下次如您插入不同接口埠時電腦會再次要求安裝驅動程式這是正常現象請再次安

裝驅動程式否則無法使用

FPLC 操作

首先進入 RFFPGA裡子目錄 testASM直接點選 fPLCexe 出現下面操作畫面(也可直接將

此檔案放置桌面直接點選)

(或者選擇 File 再執行 Setuphellip 選擇您要執行 CAI 檔)

70

進入下面操作畫面 首先使用滑鼠在 FPGA下載按鈕單擊動作使 FPGA變成 DSP晶片 實驗一至實驗五皆為使用 DSP組合語言設計程式其原始程式分別為 testASM1至testASM5可使用 texPad 開啟與編輯程式內容 實驗三與實驗五多有 IO控制動作 當選擇實驗三時出現下面畫面

71

eM_USB 模組

數字型 LED

0 1 2 34 5 6 78 9 A BC D E F

燈號型 LED

44 鍵盤

ADC0 ADC1 DAC0 DAC1

LED 選擇KEY 選擇

模 式 1

0123

注意操作畫面 3與 4 說明開關與按鍵選擇位置後選擇程式下載再按程式啟動如您

按下 0-3按鍵時燈號型 LED會有不同方向閃爍顯示程式停止時結束所有 IO控制動作再按回首頁選擇其他實驗 實驗四與實驗五

模式3

0 1 2 34 5 6 78 9 A BC D E F

按照上面開關選擇直接操作如果以上實驗皆能按照正常操作表示您光纖網路通訊

FPGA發展模組以能正常使用 注意 開機與關機動作順序如下

開機電腦啟動 --- eM_USB 模組電源接上 --- USB 接上電腦 ---

啟動 FPLC 軟體 --- 下載 FPGA 程式

關機關閉 FPLC 軟體 --- eM_USB 模組電源拔掉 --- 拔掉電腦 USB 接頭 ---關掉

電腦

如果以上順序有亂可能造成 USB 找不到驅動造成無法下載經過幾次測試還是

無法下載建議重新啟動電腦主機按照正確步驟操作

72

FPGA 下載操作

進入 FPLC 操作系統按照下列步驟選擇節點模組與下載 bit FPGA 檔案

在 VHDLDEMO 子目錄下您可以選擇您目前 FPGA 種類型號在此型號下我們已將 VHDL

與數位邏輯設計課本範例全部放於此處

73

光纖網路連線 FPGA 下載操作

首先利用光纖線將 eM_USB0 模組光纖輸出埠接至 eM_USB1 模組光纖輸入埠以此

類推最後再將最後 eM_USBN 模組光纖輸出埠接至 eM_USB0 模組光纖輸入埠配置

如附圖方式

個人電腦(Windows) eM_USB模組

0USB

eM_USB模組1

光纖網路

eM_USB模組2

eM_USB模組N

配置完成後進入 FPLC 系統首先必須先將 Node00 下載在 testASM 子目錄裡

piDSPv0bit 檔讓 eM_USB0 模組 FPGA 具備 DSP 功能才能執行光纖網路通訊

操作如下

此時您就可以選擇分別下載至各模組 FPGA 檔 bit

74

安裝 FPLC 注意事項

當您進入 FPLC 時

按 FILE 選擇 programhellip 選擇檔案為 exp_dcmplc 出現下面畫面

正常顯示畫面為

75

DOS 環境操作

在 PC 端的操作是在 Windows 環境中的 DOS 視窗中執行指令範例如下

eFPGA progNETbit 下載 FPGA電路至網路節點0(即 USB節點)中 eFPGA testLEDbit 1 下載 FPGA電路至網路節點1中

對於單一節點的控制程序如下

1將 eM_USB模組連結個人電腦的 USB端 2eM_USB模組開機 3執行下載指令即可 eFPGA xxxxbit 4若要更改 FPGA電路只要重新執行下載指令即可

對於多個網路節點的控制程序如下

1第一組 eM_USB模組連結個人電腦的 USB端再以光纖網路依序其他各節點 2連接 USB界面者為模組0從光纖發射端連接出去的模組為1依此類推 3將所有 eM_USB模組開機 4執行下載指令如下 eFPGA progNETbit 模組0必須先下載指定的 FPGA電路 eFPGA xxxxbit 1 再依序下載其他網路模組的 FPGA電路 eFPGA yyyybit 2 eFPGA zzzzbit 最後再重新下載模組0的 FPGA電路 5換句話說模組0必須先執行 progNETbit讓光纖網路接受 FPGA控制後才能透過光纖網路下載至其他節點等全部網路節點下載完畢後再將模組0的 FPGA重新下載讓模組0也可自由執行任意的 FPGA電路

6若要更改某一個網路節點中的 FPGA電路只要重新執行下述指令 eFPGA progNETbit 模組0必須先下載指定的 FPGA電路 eFPGA yyyybit 2 下載指定網路模組的 FPGA電路 eFPGA zzzz bit 最後再重新下載模組0的 FPGA電路 換句話說除非模組0中的 FPGA已經包括光纖網路管理電路否則一定要先在

模組0中下載網路管理電路後才能下載指定網路節點的 FPGA電路

76

光纖網路通訊 FPGA 發展系統

系統配置

光纖網路通訊 FPGA 發展系統的系統配置圖如下

個人電腦(Windows) eM_USB模組

0USB

eM_USB模組1

光纖網路

eM_USB模組2

eM_USB模組N

其中

1基本模組為 eM_USB模組可用 USB界面和個人電腦連線並提供 USB對光纖網路的轉換功能使得個人電腦可以獨立控制光纖網路中的每個網路節點

2eM_USB模組也可以作為光纖網路中的網路節點透過光纖網路而接受個人電腦的

監控 3就個人電腦而言不論是 USB界面直接連結或是以光纖網路間接連結的 eM_USB模組都是可以直接監控的網路節點最多可以同時控制一個 USB節點和 30個網路節點

4對於每一個網路節點個人電腦都可執行 eM_USB模組中 FPGA的電路下載工作並在適當的 FPGA電路配合下可執行 eM_USB模組中 FPGA內部電路的讀寫控制 5透過適當的 FPGA電路設計各網路節點都可透過光纖網路和其他任何網路節點

作同步通訊執行 FPGA內部記憶體的資料交換資料交換頻率可達 1KHz以上

77

網路模組配置

每個網路模組的標準配置圖如下

eM_USB模組光纖網路

USB eM_FPGA卡

eM_DEMO模組

eM_EXP實驗模組

DC電源

其中

1網路模組以 eM_USB模組為主提供基本的 USB界面和光纖網路連線 2eM_USB模組中的 FPGACPLD採用插卡型式可選擇不同的 eM_FPGA卡包括

eM_2V1K卡可選用 Virtex系列的 XC2V250和 XC2V1000 eM_3S1K卡可選用 Spartan3系列的 XC3S400XC3S1000和 XC3S1500 eM_3S50卡可選用 Spartan3系列的 XC3S50XC3S200和 XC3S400 eM_95XL卡可選用 9500XL系列的 XC95144XL和 XC95288XL 3eM_USB模組中的對外連線有兩種一種是 26P接頭用以連接既有的各種實驗模

組另一種是兩組 50P接頭將 FPGA中各接腳引出用以連接專題實驗 4eM_DEMO模組就是插上 50P接頭的教學模組其中包括 LED 數字顯示和 44鍵盤也具備兩組的 ADC和兩組的 DAC接頭提供類比訊號的測試工具

常用的實驗組合包括

1精簡組合包括(eM_USB+eM_FPGA)提供基本的網路節點適用於專題實驗 2標準組合包括(eM_USB+eM_FPGA+eM_DEMO)提供基礎 FPGA設計的教學實驗

3實驗組合包括(eM_USB+eM_FPGA+eM_DEMO+eM_EXP)提供進階的 FPGA實驗可依需求選用不同的實驗模組

78

eM_USB 模組

eM_USB 模組的電路配置圖如下

TxRx

DCPower

USB

JP2

JP3

光纖界面

外加電源

PC連線

JP1

eM_FPGA模組

FT232 CPLD FlashROM

SRAM

10cm

6cm

JP4

其中

1對外的連線接頭包括 DC電源 可選擇單電源(5V)或是多電源(5V+12V-12V)兩種 USB界面 直接連接個人電腦 光纖界面連接光纖網路 2實驗界面包括 JP1負責內部 CPLD的電路下載 JP2JP3兩組 50P的擴張用接頭 JP4 標準 26P接頭用以連接各種實驗模組 3內部的電路配置包括 A以 SO-DIMM接頭連接各種 eM_FPGA卡 B內附 EEPROMFlashROM和 SRAM提供 FPGA作應用測試 C以一顆 FT232BM作為 USB界面解碼而以一顆 CPLD作為光纖網路解碼 D提供各種 eM_FPGA卡的電路下載功能 4內附五顆 LED由上而下依序為 usbLED指示 USB界面的讀寫狀態 tstLED可由 FPGA電路自行定義 stsLED可由 FPGA電路自行定義 RxLED 可由 FPGA電路自行定義 TxLED 可由 FPGA電路自行定義

79

外部接腳定義

外部接頭的接點順序圖示如下

上視圖

JP11 9 JP4

126225

JP31

50249

JP21

50249

而各接頭的接點定義如下

JP1 JP4 JP2 JP3 1+33V 1+12V 2+12V 1 GND 2 GND 1 GND 2 GND 2GND 3 ADC 4 DAC 3POWER 4ALARM 3 +5V 4 +5V 3nc 5 yPB2 6 yPB3 5RxNET 6TxNET 5+12V 6+12V 4TCK 7 yPB1 6 yPB4 7RxUSB 6TxUSB 7-12V 6-12V 5nc 9 yPB0 10yPB5 9RxCAN 10TxCAN 9 ADC 10 DAC 6TDO 11yPB6 12yPB7 11P0D0 12P0D1 11P1D0 12P1D1 7TDI 13yGND 14yPC3 13P0D2 14P0D3 13P1D2 14P1D3 8nc 15yPC2 16yPC1 15P0D4 16P0D5 15P1D4 16P1D5 9TMS 17yPC0 18yPA0 17P0D6 18P0D7 17P1D6 18P1D7 19yPA1 20yPA2 19P0D8 20P0D9 19P1D8 20P1D9 21yPA3 22GND 21P0D10 22P0D11 21P1D10 22P1D11 23GND 24+5V 23P0D12 24P0D13 23P1D12 24P1D13 25+5V 26nc 25P0D14 26P0D15 25P1D14 26P1D15 27P2D0 28P2D1 27PxA0 28PxA1 29P2D2 30P2D3 29PxA2 30PxA3 31P2D4 32P2D5 31PxA4 32PxA5 33P2D6 34P2D7 33PxA6 34PxA7 35P2D8 36P2D9 35PxB0 36PxB1 37P2D10 38P2D11 37PxB2 38PxB3 39P2D12 40P2D13 39PxB4 40PxB5 41P2D14 42P2D15 41PxB6 42PxB7 43ADC0 44ADC1 43PxC0 44PxC1 45ADC2 46ADC3 45PxC2 46PxC3 47ADC4 48ADC5 47PxC4 48PxC5 49DAC0 50DAC1 49PxC6 50PxC7

80

eM_FPGA 模組

在各種 eM_FPGA 模組中FPGA 對外電路的標準配置圖如下

24576MHz

FlashROM

26PSRAM

EEPROM

mD[8]

yPA[4]

FPGACPLD

mA[19]mRDmWRmCSeeCKeeCSeeDIeeDO

光纖界面 RxNETTxNET

USB 界面 RxUSBTxUSBCLK24MPOWERALARM

LED

tstLEDstsLEDRxLEDTxLED

yPB[8]yPC[4]

ADCDAC

ADC[8]

實驗模組

ADC[2]

DAC[2]

xPA[4]

xPB[8]

xPC[4]

基礎實驗

其中

1FPGACPLD可以選擇下述幾種 XC2V250XC2V1000 採用 eM_2V1K模組其中 FPGA為 FG456包裝 XC3S400XC3S1000XC3S1500採用 eM_3S1K模組其中 FPGA為 FG456包裝 XC3S400XC3S1000XC3S1500採用 eM_3S1K模組其中 FPGA為 FG456包裝 XC3S50XC3S200XC3S400 採用 eM_3S50模組其中 FPGA為 TQ144包裝 XC95144XLXC95288XL 採用 eM_95XL模組其中 CPLD為 TQ144包裝 2採用 FG456包裝者可以控制所有的 IO界面 3採用 TQ144包裝者只是不能控制 RAM和 FlashROM而可以控制其他所有的界面 4所有 FPGA模組都可自由選擇由 USB界面或是由光纖界面下載電路但是 CPLD模組只能固定由 USB界面下載電路

5所有 FPGACPLD模組都可透過 26P接頭連接既有的各種實驗模組

81

FPGA 接腳對照表

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

mD0 XD6 mD0 A17 C13 -- -- mD1 XD7 mD1 B17 D12 -- -- mD2 XD8 mD2 C17 D11 -- -- mD3 XD9 mD3 D17 C11 -- -- mD4 XD10 mD4 E17 D10 -- -- mD5 XD11 mD5 E16 C10 -- -- mD6 XD12 mD6 E14 D9 -- -- mD7 XD13 mD7 E13 D7 -- -- mA0 XD14 mA0 D13 C7 -- -- mA1 XD15 mA1 C13 D6 -- -- mA2 XA0 mA2 V5 C3 -- -- mA3 XA1 mA3 U5 C4 -- -- mA4 XA2 mA4 Y2 D3 -- -- mA5 XA3 mA5 Y1 D4 -- -- mA6 XA4 mA6 V4 E3 -- -- mA7 XA5 mA7 V3 E4 -- -- mA8 XA6 mA8 W2 F3 -- -- mA9 XA7 mA9 W1 F4 -- -- mA10 XA8 mA10 T2 G6 -- -- mA11 XA9 mA11 T1 K3 -- -- mA12 XA10 mA12 R4 K10 -- -- mA13 XA11 mA13 R3 L3 -- -- mA14 XA12 mA14 R2 L4 -- -- mRD XRD mRD R1 D5 -- -- mWR XWR mWR P6 C6 -- --

POWER P0A0 POWER B4 B20 P1 P5 ALARM P0A1 ALARM A4 A19 P2 P6 RxNET P0A2 RxNET C4 B19 P4 P7 TxNET P0A3 TxNET C5 A18 P5 P9 RxUSB P0B0 RxUSB B5 A15 P6 P10 TxUSB P0B1 TxUSB A5 B15 P7 P11 RxCAN P0B2 RxCAN D6 A14 P8 P12 RxCAN P0B3 TxCAN C6 B14 P10 P13

CLK24M CLK24M CLK24M E12 B12 P124 P38

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

PWM0H P3A0 P0D0 E6 A8 P21 P23 PWM0L P3A1 P0D1 E5 B8 P23 P24 PWM1H P3A2 P0D2 C2 B6 P24 P25 PWM1L P3A3 P0D3 C1 A5 P25 P26 PWM2H P3A4 P0D4 D2 B5 P26 P27

82

PWM2L P3A5 P0D5 D1 A4 P27 P28 PWMenb P3A6 P0D6 E4 B4 P28 P30 PHT1Z P3A7 P0D7 E3 A3 P30 P31 PHT1A P3B0 P0D8 G2 C1 P31 P32 PHT1B P3B1 P0D9 G1 C2 P32 P33 PHT0A P3B2 P0D10 H5 D1 P33 P34 PHT0B P3B3 P0D11 J6 D2 P35 P35 AMP0 P3B4 P0D12 H4 E1 P36 P39 AMP1 P3B5 P0D13 H3 E2 P40 P40 AMP2 P3B6 P0D14 H2 F2 P41 P41 AMP3 P3B7 P0D15 H1 G1 P44 P43 eeSK P0C3 P1D0 C10 B9 P20 P22 eeCS P0C2 P1D1 D10 A9 P18 P21 eeDI P0C1 P1D2 F10 B10 P17 P20 eeDO P0C0 P1D3 E10 B11 P15 P19 ssCK P0B7 P1D4 E8 A11 P14 P17 ssCS P0B6 P1D5 E7 A12 P13 P16 ssDI P0B5 P1D6 A6 B13 P12 P15 ssDO P0B4 P1D7 B6 A13 P11 P14

ppCLK P3C0 P1D8 K4 G2 P46 P44 ppDIN P3C1 P1D9 K3 K1 P47 P45 TxD P3C2 P1D10 K2 K2 P50 P46 RxD P3C3 P1D11 K1 L1 P51 P48

tstLED P3C4 P1D12 L5 L2 P52 P49 stsLED P3C5 P1D13 L4 M1 P53 P50 RxLED P3C6 P1D14 L3 M2 P55 P51 TxLED P3C7 P1D15 L2 N1 P56 P52

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

xPA0 P2A0 P2D0 AA3 N2 P59 P53 xPA1 P2A1 P2D1 Y4 T1 P60 P54 xPA2 P2A2 P2D2 AA4 T2 P63 P56 xPA3 P2A3 P2D3 AB4 U2 P68 P57 xPC0 P2A4 P2D4 W5 V1 P69 P58 xPC1 P2A5 P2D5 Y5 V2 P70 P59 xPC2 P2A6 P2D6 AA5 W1 P73 P60 xPC3 P2A7 P2D7 AB5 W2 P74 P61

-- P2B0 P2D8 V6 Y1 P76 P64 -- P2B1 P2D9 V7 Y2 P77 P66 -- P2B2 P2D10 W6 AA3 P78 P68

mCS P2B3 P2D11 Y6 AB4 P79 P69 mA15 P2B4 P2D12 V9 AA4 P80 P70 mA16 P2B5 P2D13 V10 AB5 P82 P71 mA17 P2B6 P2D14 W10 AA5 P83 P74 mA18 P2B7 P2D15 Y10 AA6 P84 P75 CS0 P2C0 ADC0 AA10 AB8 P85 P76

83

SDIN0 P2C1 ADC1 AB10 AA8 P86 P77 CS1 P2C2 ADC2 U10 AB9 P87 P78

SDIN1 P2C3 ADC3 U11 AA9 P89 P79 SCLK P2C4 ADC4 V11 AB10 P90 P80 CS2 P2C5 ADC5 W11 AA10 P92 P81

SDOUT P2C6 ADC6 Y11 AB11 P93 P82 LDAC P2C7 ADC7 AA11 AA11 P95 P83

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

xPB0 P1A0 PxA0 M1 M3 P135 P85 xPB1 P1A1 PxA1 M2 M4 P132 P86 yPB2 P1A2 PxA2 M3 N3 P131 P87 yPB3 P1A3 PxA3 M4 N4 P130 P88 yPB1 P1A4 PxA4 M5 T4 P129 P91 yPB4 P1A5 PxA5 M6 T5 P128 P92 yPB0 P1A6 PxA6 N1 U3 P127 P93 yPB5 P1A7 PxA7 N2 U4 P125 P94 yPB6 P1B0 PxB0 U13 V3 P119 P95 yPB7 P1B1 PxB1 V13 V4 P118 P96 xPB2 P1B2 PxB2 W13 W3 P116 P97 xPB3 P1B3 PxB3 Y13 W4 P113 P98 xPB4 P1B4 PxB4 AA13 Y3 P112 P100 xPB5 P1B5 PxB5 AB13 Y4 P96 P101 yPC3 P1B6 PxB6 U12 Y5 P97 P102 yPC2 P1B7 PxB7 V12 W5 P98 P103 yPC1 P1C7 PxC0 AB17 W11 P108 P113 yPC0 P1C6 PxC1 AA17 Y11 P107 P112 yPA0 P1C5 PxC2 Y17 W10 P105 P111 yPA1 P1C4 PxC3 W17 Y10 P104 P110 yPA2 P1C3 PxC4 AB18 W9 P103 P107 yPA3 P1C2 PxC5 AA18 W8 P102 P106 xPB6 P1C1 PxC6 Y18 W6 P100 P105 xPB7 P1C0 PxC7 W18 Y6 P99 P104

84

eM_DEMO 模組

eM_DEMO 模組的電路配置圖如下

eM_USB 模組

數字型 LED

0 1 2 34 5 6 78 9 A BC D E F

燈號型 LED

44 鍵盤

ADC0 ADC1 DAC0 DAC1

LED 選擇KEY 選擇

其中

1eM_DEMO模組的基本功能包括 A將 xPAxPBxPC等 16個 IO訊號引出控制 LED和鍵盤電路 B將 ADDA訊號引出並放大成+-10V的工作範圍 2LED和鍵盤可以選擇三種模式由 LED和 KEY 兩組開關作選擇圖示如下

模式1

0123

模式2 模式3

0 1 2 34 5 6 78 9 A BC D E F

0123

3模式14鍵輸入並搭配 16點的 LED燈號顯示其中 16點 LED分別對映到 xPA[0~3]xPB[0~7]和 xPC[0~3] 4組按鍵分別對映到 xPC[0~3] 4模式24鍵輸入並搭配四個 7段式數字顯示其中 數字顯示由 xPA[0~3]作數字掃瞄而由 xPB[0~7]作 7段式 LED控制 4組按鍵 分別對映到 xPC[0~3] 5模式316鍵輸入並搭配四個 7段式數字顯示其中 數字顯示由 xPA[0~3]作數字掃瞄而由 xPB[0~7]作 7段式 LED控制 16組按鍵由 xPA[0~3]作鍵盤掃瞄而由 xPC[0~3]作鍵盤讀取 6根據VHDL與數位邏輯設計的章節其中 第 1章至 10章的實驗採用模式1而 第 11章實驗採用模式2而 第 12章之後的實驗都採用模式3

85

FPGA UCF 定義

eM_3S1K 模組

NET CLK LOC = B12

NET XAlt0gt LOC = N2

NET XAlt1gt LOC = T1

NET XAlt2gt LOC = T2

NET XAlt3gt LOC = U2

NET XBlt0gt LOC = M3

NET XBlt1gt LOC = M4

NET XBlt2gt LOC = W3

NET XBlt3gt LOC = W4

NET XBlt4gt LOC = Y3

NET XBlt5gt LOC = Y4

NET XBlt6gt LOC = W6

NET XBlt7gt LOC = Y6

NET XClt0gt LOC = V1

NET XClt1gt LOC = V2

NET XClt2gt LOC = W1

NET XClt3gt LOC = W2

NET YAlt0gt LOC = W10

JP4 接頭

NET YAlt1gt LOC = Y10

NET YAlt2gt LOC = W9

NET YAlt3gt LOC = W8

NET YBlt0gt LOC = U3

NET YBlt1gt LOC = T4

NET YBlt2gt LOC = N3

NET YBlt3gt LOC = N4

NET YBlt4gt LOC = T5

NET YBlt5gt LOC = U4

NET YBlt6gt LOC = V3

NET YBlt7gt LOC = V4

NET YClt0gt LOC = Y11

NET YClt1gt LOC = W11

NET YClt2gt LOC = W5

NET YClt3gt LOC = Y5

在光碟片中 RFFPGAVHDLDEMOBIT3S1K 裡有 VHDL 與數位邏輯設計書本範例原始檔與合成檔

86

eM_3S50 模組

NET CLK LOC = P124

NET XAlt0gt LOC = P59

NET XAlt1gt LOC = P60

NET XAlt2gt LOC = P63

NET XAlt3gt LOC = P68

NET XBlt0gt LOC = P135

NET XBlt1gt LOC = P132

NET XBlt2gt LOC = P116

NET XBlt3gt LOC = P113

NET XBlt4gt LOC = P112

NET XBlt5gt LOC = P96

NET XBlt6gt LOC = P100

NET XBlt7gt LOC = P99

NET XClt0gt LOC = P69

NET XClt1gt LOC = P70

NET XClt2gt LOC = P73

NET XClt3gt LOC = P74

NET YAlt0gt LOC = P105

JP4 接頭

NET YAlt1gt LOC = P104

NET YAlt2gt LOC = P103

NET YAlt3gt LOC = P102

NET YBlt0gt LOC = P127

NET YBlt1gt LOC = P129

NET YBlt2gt LOC = P131

NET YBlt3gt LOC = P130

NET YBlt4gt LOC = P128

NET YBlt5gt LOC = P125

NET YBlt6gt LOC = P119

NET YBlt7gt LOC = P118

NET YClt0gt LOC = P107

NET YClt1gt LOC = P108

NET YClt2gt LOC = P98

NET YClt3gt LOC = P97

在光碟片中 RFFPGAVHDLDEMOBIT3S200 裡有VHDL與數位邏輯設計書本範例原始檔與合成檔

87

eM_95XL 模組

NET CLK LOC = SPIN38

NET XAlt0gt LOC = SPIN53

NET XAlt1gt LOC = SPIN54

NET XAlt2gt LOC = SPIN56

NET XAlt3gt LOC = SPIN57

NET XBlt0gt LOC = SPIN85

NET XBlt1gt LOC = SPIN86

NET XBlt2gt LOC = SPIN97

NET XBlt3gt LOC = SPIN98

NET XBlt4gt LOC = SPIN100

NET XBlt5gt LOC = SPIN101

NET XBlt6gt LOC = SPIN105

NET XBlt7gt LOC = SPIN104

NET XClt0gt LOC = SPIN58

NET XClt1gt LOC = SPIN59

NET XClt2gt LOC = SPIN60

NET XClt3gt LOC = SPIN61

NET YAlt0gt LOC = SPIN111

JP4 接頭

NET YAlt1gt LOC = SPIN110

NET YAlt2gt LOC = SPIN107

NET YAlt3gt LOC = SPIN106

NET YBlt0gt LOC = SPIN93

NET YBlt1gt LOC = SPIN91

NET YBlt2gt LOC = SPIN87

NET YBlt3gt LOC = SPIN88

NET YBlt4gt LOC = SPIN92

NET YBlt5gt LOC = SPIN94

NET YBlt6gt LOC = SPIN95

NET YBlt7gt LOC = SPIN96

NET YClt0gt LOC = SPIN112

NET YClt1gt LOC = SPIN113

NET YClt2gt LOC = SPIN103

NET YClt3gt LOC = SPIN102

在光碟片中 RFFPGAVHDLDEMOSVF95288XL 裡有VHDL與數位邏輯設計書本範例原始檔與合成

檔案

88

eM_FPGA 模組

NET CLK LOC = E12

NET XAlt0gt LOC = AA3

NET XAlt1gt LOC = Y4

NET XAlt2gt LOC = AA4

NET XAlt3gt LOC = AB4

NET XBlt0gt LOC = M1

NET XBlt1gt LOC = M2

NET XBlt2gt LOC = W13

NET XBlt3gt LOC = Y13

NET XBlt4gt LOC = AA13

NET XBlt5gt LOC = AB13

NET XBlt6gt LOC = Y18

NET XBlt7gt LOC = W18

NET XClt0gt LOC = W5

NET XClt1gt LOC = Y5

NET XClt2gt LOC = AA5

NET XClt3gt LOC = AB5

NET YAlt0gt LOC = Y17

JP4 接頭

NET YAlt1gt LOC = W17

NET YAlt2gt LOC = AB18

NET YAlt3gt LOC = AA18

NET YBlt0gt LOC = N1

NET YBlt1gt LOC = M5

NET YBlt2gt LOC = M3

NET YBlt3gt LOC = M4

NET YBlt4gt LOC = M6

NET YBlt5gt LOC = N2

NET YBlt6gt LOC = U13

NET YBlt7gt LOC = V13

NET YClt0gt LOC = AA17

NET YClt1gt LOC = AB17

NET YClt2gt LOC = V12

NET YClt3gt LOC = U12

在光碟片中 RFFPGAVHDLDEMOBIT2V250 裡有VHDL與數位邏輯設計書本範例原始檔與合成檔

89

Page 63: RFFPGA 直流馬達實驗手冊juniortek.com.tw/program/manual/RF-DC-mal.pdf · em_demo模組 em_dcm 直流伺服馬達 dc電源 rffpga 系統的直流馬達實驗規劃 其中包括:

ADD cmd0 JZ t9 if (cmd==0) return SUB buf1 JNZ t9 if (--buf)gt0) return RD dt WR buf dt=buf RD cnt ADD 1 AND 0xff WR cnt cnt=(cnt+1)amp0xff SFL 2 ADD tab WR pnt pnt=tab+cnt4 RD (ch1) WR (pnt) ADD pnt1 pnt++=ch1 RD (ch2) WR (pnt) ADD pnt1 pnt++=ch2 RD (ch3) WR (pnt) ADD pnt1 pnt++=ch3 RD (ch4) WR (pnt) pnt =ch4 RD cmd SUB 1 JZ t9 SUB 1 JZ t2 SUB 1 JZ t3 SUB 1 JZ t4 SUB 1 JZ t5 SUB 1 JZ t6 JR t7 t2 RD (trg) SUB th JGE t9 ADD cmd1 JR t9 wait trgltth t3 RD (trg) SUB th JLE t9 JR t6 wait trggtth t4 RD (trg) SUB th JLE t9 ADD cmd1 JR t9 wait trggtth t5 RD (trg) SUB th JGE t9 JR t6 wait trgltth t6 WR len0 WR cmd7 len=0cmd=7 t7 ADD len1 SUB tail JLT t9 WR cmd0 if ((++len)gt=0x80) cmd=0 t9 RET

與 DC 馬達控制相關的程式模組有以下 4個程式模組說明如下

(1)加減速控制模組 ACC_controlasm (2)光電盤輸入模組 POS_inputasm (3)PWM輸出模組 PWM_outputasm (4)PD控制模組 PD_controlasm

71加減速控制模組 此程式模組主要功能在於執行位置控制的加減速命令修正其數學模式採用 Lynn

濾波器的架構參見下圖

cmd

2

+

old Z -1

-

Z -1

Z -1

Z-1

Z-1x0 x1 x8 x9 x16

+ -

++

2

Z-1

Z-1 y1 y2

+

-

y0

+ +

sumZ-1

+164

12

out

dif

+

63

加減速控制模組方塊圖

其中

1Lynn 濾波器的階數固定成八階也就是 m=8其公式為 H(z) = (1-2Z-m+Z-2m)(1-2Z-1+Z-2)m2

2因為m=8所以m2=64因此最後計算低通濾波的部份時要先做除 64的運算 3因為低通濾波(lp)和 y0之間有 64倍的差異代表 y0y1y2的變化範圍比濾波器輸

入值要擴大許多例如輸入值在+-1000變化時y0y1y2很可能會在+-64000之間變化這範圍已經超出整數處理的範圍很可能會造成錯誤的計算結果

4所以在實驗時輸入值的變化範圍必須控制在+-500之間以保證計算的正確性 5對於 Lynn 濾波器當 m=8時其濾波器的頻寬固定為 1 kHzmdt也就是 dt=1時頻寬為 125 Hz dt=2時頻寬為 625Hz依此類推 6對於 Lynn 濾波器其濾波器的延遲固定為 m個抽樣週期因此設計 hp = x8 - lp 即可得到高通濾波器的對應結果 7其中乘 2和除 64的運算以移位運算取代所以整個程式中並無任何乘法運算 8Lynn 濾波器本身並不是穩定濾波器所以在程式啟動時必須確實的將所有狀態

(x0~x16)歸零否則會產生不穩定的狀態輸出

因為 Lynn濾波器中所有參數固定所以除了抽樣週期 dt 之外並無任何可調參數

抽樣週期 dt 可以控制頻寬dt 越大則濾波器頻寬越低

將步階命令值的輸出送入 Lynn 濾波器中經由低通濾波器的效應可以減緩命

令的變化程度達到加減速控制的目的以下為使用 Lynn 濾波器型式實現加減速控

制的組合語言程式列印 如欲更進一步瞭解 Lynn 濾波器與 FIR 數位濾波器之間的關係可以參考通訊實驗

四數位濾波器設計(FIR)中之說明

ACC_controlasm程式列印 local cmd R0 IP 輸入點位置命令

local out R1 OP 輸出點加減速處理後的位置命令

local dif R2 OP 輸出點位置微分命令

local axis R3 0 馬達編號0=X1=Y2=Z3=C

local old R4 內部變數微分計算用

local sumL R5 內部變數積分計算用

local sumH R6 內部變數積分計算用

local y0 R7 內部變數y(0~2)

local y1 R8 local y2 R9

local x0 R10 內部變數x(0~16)

local x1 R11 local x2 R12 local x3 R13 local x4 R14

local x5 R15 local x6 R16 local x7 R17 local x8 R18

local x9 R19 local x10 R20 local x11 R21 local x12 R22

local x13 R23 local x14 R24 local x15 R25 local x16 R26

64

data 27 模組變數區長度

initial 開機啟動程序

WR dif0 RD (cmd) WR out WR old dif=0 out=old=cmd

sumHL=cmd64

SFL 6 WR sumL RD out SFR 10 SGN 5 WR sumH

RPT 17 WR x00 RPT 3 WR y00 RET x[0~16]=0y[0~2]=0

timer 即時控制程序

RD (cmd) SUBX old WR x0 x0=cmd-old old=cmd

SUB x81 ADD x16 ADD y11 SUB y2 WR y0 y0=x0-2x8+x16+2y1-y2

SGN ADD sumL WR sumL RDH ADC sumH WR sumH sumHL+=y0

WRH RD sumL SFR 6 WR out out=sumHL64

RD y0 SGN SFR WR dif dif=y032mm

RD x0 RPT 16 RDX x1 x[i]=x[i-1] i=1~16

RD y0 RDX y1 WR y2 y[i]=y[i-1] i=1~2

b9 RET

72光電盤輸入模組

DC馬達的位置由光電盤量測之預設儲存於 0xac與 0xbe二個輸入埠位址中其中位址 0xac記錄 X軸馬達的位置位址 0xbe記錄 Y軸馬達的位置由於本實驗的DC馬達接在 Y軸的位置上因此程式中直接選用 Y軸的輸入 光電盤位置輸入的程式列印如下其中速度由位置的差分而得至於馬達的位置

則使用內部 2個 word加以記錄精度為 32位元 POS_inputasm程式列印 local spd R0 OP 輸出點速度量測值

local ang R1 OP 輸出點角度量測值

local angH R2 內部變數角度的 32 位元部分

local mode R3 0x308 模式選擇15MHzAB 相正反向輸入

local pht R4 0xac 輸入阜地址光電盤輸入(0xac)

local phtc R5 0xbe 輸入阜地址光電盤模式(0xbe)

local old R6 內部變數速度更新用

data 7 模組變數區長度

initial 開機啟動程序

RD mode WR (phtc) phtc=mode

RD (pht) WR old WR spd0 RET old=phtspd=0

timer 即時控制程序

RD (pht) SUBX old SGN 11 WR spd spd=(pht-old)old=pht

65

ADD ang WR ang angHL+=spd

RDH ADC angH WR angH

RET

73 PWM輸出控制模組 模組方塊

cmd PWM輸出

程式說明 1在開機時將切換保護時間寫到輸出阜 0xbc上其中切換保護值為 0~6360=5us 2在每次 timer interrupt時將 cmd訊號處理後寫到輸出阜 0xb8上

PWM_outputasm程式列印 local cmd R0 IP gnd 輸入點v相命令

local gain R1 4096 參數輸出增益1=4096

local bias R2 2048 參數輸出偏壓0=2048

local limit R3 4095 參數輸出極限1=4095

local zone R4 0x88f0 參數頻率=12KHz切換保護=5us

local pwm R5 0xb8 輸出阜地址PWM0 輸出(0xb8)

local mode R6 0xbc 輸出阜地址PWM 模式(0xbc)

local p0md R7 0xf8 輸出阜地址port0 模式(0xf8)

local gnd R8 0 輸入接地點

data 9 模組變數區長度

initial 開機啟動程序

RD bias WR (pwm) pwm=bias

RD 0xffff WR (p0md) set port0 mode

RD zone WR (mode) RET mode=zone

stop 關機保護程序

RD bias WR (pwm) RET pwm=bias

timer 即時控制程序

RD (mode) xor 1 and 1 WR (mode) trigger watch-dog

RD (cmd) MUL gain SFR 12 ADD bias ACC=(cmdgain4096)+bias

MAX 0 MIN limit WR (pwm) pwm=limit(ACC)

RET

66

74 PD 控制模組

PD控制的模組方塊參見圖二十一所示其中比例控制的部份直接由增益 kp加以調整微分控制的部份則由誤差的差分經增益 kd的調整而得

Σ+

-

cmd

fdk

err out

Σ

pk

dk

Σ

+

+

+

-

old1minusZ

PD控制器的方塊圖

PD_controlasm程式列印 local cmd R0 IP gnd 輸入點位置命令(可忽略)

local fdk R1 IP gnd 輸入點位置回授(可忽略)

local out R2 OP 輸出點用以控制速度迴路

local kp R3 256 參數增益 kp10=256

local kd R4 0 參數增益 kd10=256

local err R5 0 內部變數

local old R6 0 內部變數

local gnd R7 0 無輸入時的短路點

data 8 模組變數區長度

initial 開機啟動程序

WR out0 WR old0 RET out=old=0

timer 即時控制程序

RD (cmd) SUB (fdk) PRTF WR err

MUL kp SFR 8 P=(cmd-fdk)kp256

RDS err SUBX old MUL kd SFR 8 D=(err-old)kd256

ADDS

WR out out=P+D

RET

程式中預設增益值的 10以整數值 256為基底因此使用 SFR 8的指令加以調

整另外在在計算微分項的程式部份用到 SUBX old的指令其詳細的暫存器動作如

下 參考 piDSP的指令說明SUBX指令將總共用到 3個時序參考錯誤 找不到參照

67

來源在時序 1時將原先 AX的資料拷貝一份到 HX中時序 2時正式執行減

法的動作所以 AX暫存器中的內容會變成 err-old時序 3時DSP會將存放在 HX暫存器中的內容拷貝一份到 old的記憶體中也就是經由 SUBX此一精簡指令將

同時完成計算差分所需要的相減與資料疊代的動作有效的利用 piDSP控制器 DSP核心的精簡指令將可以大幅提昇系統的計算速度

HX AXoldSUBXerr err

old

err

errerr olderr minus

1_err

errerr olderr minus err

1_err

1

2

3

SUBX的指令時序與暫存器變化

68

8附錄快速安裝說明

光纖網路通訊 FPGA 發展系統 (適用於 WIN-XP200098 系統)

快速安裝說明

26Pin 負載輸出入埠

雙電源︵5

12

伏︶輸入埠

單電源︵5

伏︶輸入埠

USB

光纖線輸

號 光纖線輸出埠

入 傳 埠

首先將光碟片 RFFPGA 目錄檔案拷貝在您工作硬碟裡面

第一次安裝時先將 USB 傳輸線接上電腦主機將電源供應器接上 FPGA 模組此時電

腦會出現安裝 USB-Serial 驅動程式選擇從清單安裝此驅動程式放置在光碟片

RFFPGA-USBdrive 選擇您目前安裝系統

可選擇 WIN-98WIN-MEWIN-2000WIN-XP 系統配合您現在工作電腦作業系統

69

注意一般電腦 USB 埠很多插口當您安裝驅動程式時是配合您當時插入之埠

下次如您插入不同接口埠時電腦會再次要求安裝驅動程式這是正常現象請再次安

裝驅動程式否則無法使用

FPLC 操作

首先進入 RFFPGA裡子目錄 testASM直接點選 fPLCexe 出現下面操作畫面(也可直接將

此檔案放置桌面直接點選)

(或者選擇 File 再執行 Setuphellip 選擇您要執行 CAI 檔)

70

進入下面操作畫面 首先使用滑鼠在 FPGA下載按鈕單擊動作使 FPGA變成 DSP晶片 實驗一至實驗五皆為使用 DSP組合語言設計程式其原始程式分別為 testASM1至testASM5可使用 texPad 開啟與編輯程式內容 實驗三與實驗五多有 IO控制動作 當選擇實驗三時出現下面畫面

71

eM_USB 模組

數字型 LED

0 1 2 34 5 6 78 9 A BC D E F

燈號型 LED

44 鍵盤

ADC0 ADC1 DAC0 DAC1

LED 選擇KEY 選擇

模 式 1

0123

注意操作畫面 3與 4 說明開關與按鍵選擇位置後選擇程式下載再按程式啟動如您

按下 0-3按鍵時燈號型 LED會有不同方向閃爍顯示程式停止時結束所有 IO控制動作再按回首頁選擇其他實驗 實驗四與實驗五

模式3

0 1 2 34 5 6 78 9 A BC D E F

按照上面開關選擇直接操作如果以上實驗皆能按照正常操作表示您光纖網路通訊

FPGA發展模組以能正常使用 注意 開機與關機動作順序如下

開機電腦啟動 --- eM_USB 模組電源接上 --- USB 接上電腦 ---

啟動 FPLC 軟體 --- 下載 FPGA 程式

關機關閉 FPLC 軟體 --- eM_USB 模組電源拔掉 --- 拔掉電腦 USB 接頭 ---關掉

電腦

如果以上順序有亂可能造成 USB 找不到驅動造成無法下載經過幾次測試還是

無法下載建議重新啟動電腦主機按照正確步驟操作

72

FPGA 下載操作

進入 FPLC 操作系統按照下列步驟選擇節點模組與下載 bit FPGA 檔案

在 VHDLDEMO 子目錄下您可以選擇您目前 FPGA 種類型號在此型號下我們已將 VHDL

與數位邏輯設計課本範例全部放於此處

73

光纖網路連線 FPGA 下載操作

首先利用光纖線將 eM_USB0 模組光纖輸出埠接至 eM_USB1 模組光纖輸入埠以此

類推最後再將最後 eM_USBN 模組光纖輸出埠接至 eM_USB0 模組光纖輸入埠配置

如附圖方式

個人電腦(Windows) eM_USB模組

0USB

eM_USB模組1

光纖網路

eM_USB模組2

eM_USB模組N

配置完成後進入 FPLC 系統首先必須先將 Node00 下載在 testASM 子目錄裡

piDSPv0bit 檔讓 eM_USB0 模組 FPGA 具備 DSP 功能才能執行光纖網路通訊

操作如下

此時您就可以選擇分別下載至各模組 FPGA 檔 bit

74

安裝 FPLC 注意事項

當您進入 FPLC 時

按 FILE 選擇 programhellip 選擇檔案為 exp_dcmplc 出現下面畫面

正常顯示畫面為

75

DOS 環境操作

在 PC 端的操作是在 Windows 環境中的 DOS 視窗中執行指令範例如下

eFPGA progNETbit 下載 FPGA電路至網路節點0(即 USB節點)中 eFPGA testLEDbit 1 下載 FPGA電路至網路節點1中

對於單一節點的控制程序如下

1將 eM_USB模組連結個人電腦的 USB端 2eM_USB模組開機 3執行下載指令即可 eFPGA xxxxbit 4若要更改 FPGA電路只要重新執行下載指令即可

對於多個網路節點的控制程序如下

1第一組 eM_USB模組連結個人電腦的 USB端再以光纖網路依序其他各節點 2連接 USB界面者為模組0從光纖發射端連接出去的模組為1依此類推 3將所有 eM_USB模組開機 4執行下載指令如下 eFPGA progNETbit 模組0必須先下載指定的 FPGA電路 eFPGA xxxxbit 1 再依序下載其他網路模組的 FPGA電路 eFPGA yyyybit 2 eFPGA zzzzbit 最後再重新下載模組0的 FPGA電路 5換句話說模組0必須先執行 progNETbit讓光纖網路接受 FPGA控制後才能透過光纖網路下載至其他節點等全部網路節點下載完畢後再將模組0的 FPGA重新下載讓模組0也可自由執行任意的 FPGA電路

6若要更改某一個網路節點中的 FPGA電路只要重新執行下述指令 eFPGA progNETbit 模組0必須先下載指定的 FPGA電路 eFPGA yyyybit 2 下載指定網路模組的 FPGA電路 eFPGA zzzz bit 最後再重新下載模組0的 FPGA電路 換句話說除非模組0中的 FPGA已經包括光纖網路管理電路否則一定要先在

模組0中下載網路管理電路後才能下載指定網路節點的 FPGA電路

76

光纖網路通訊 FPGA 發展系統

系統配置

光纖網路通訊 FPGA 發展系統的系統配置圖如下

個人電腦(Windows) eM_USB模組

0USB

eM_USB模組1

光纖網路

eM_USB模組2

eM_USB模組N

其中

1基本模組為 eM_USB模組可用 USB界面和個人電腦連線並提供 USB對光纖網路的轉換功能使得個人電腦可以獨立控制光纖網路中的每個網路節點

2eM_USB模組也可以作為光纖網路中的網路節點透過光纖網路而接受個人電腦的

監控 3就個人電腦而言不論是 USB界面直接連結或是以光纖網路間接連結的 eM_USB模組都是可以直接監控的網路節點最多可以同時控制一個 USB節點和 30個網路節點

4對於每一個網路節點個人電腦都可執行 eM_USB模組中 FPGA的電路下載工作並在適當的 FPGA電路配合下可執行 eM_USB模組中 FPGA內部電路的讀寫控制 5透過適當的 FPGA電路設計各網路節點都可透過光纖網路和其他任何網路節點

作同步通訊執行 FPGA內部記憶體的資料交換資料交換頻率可達 1KHz以上

77

網路模組配置

每個網路模組的標準配置圖如下

eM_USB模組光纖網路

USB eM_FPGA卡

eM_DEMO模組

eM_EXP實驗模組

DC電源

其中

1網路模組以 eM_USB模組為主提供基本的 USB界面和光纖網路連線 2eM_USB模組中的 FPGACPLD採用插卡型式可選擇不同的 eM_FPGA卡包括

eM_2V1K卡可選用 Virtex系列的 XC2V250和 XC2V1000 eM_3S1K卡可選用 Spartan3系列的 XC3S400XC3S1000和 XC3S1500 eM_3S50卡可選用 Spartan3系列的 XC3S50XC3S200和 XC3S400 eM_95XL卡可選用 9500XL系列的 XC95144XL和 XC95288XL 3eM_USB模組中的對外連線有兩種一種是 26P接頭用以連接既有的各種實驗模

組另一種是兩組 50P接頭將 FPGA中各接腳引出用以連接專題實驗 4eM_DEMO模組就是插上 50P接頭的教學模組其中包括 LED 數字顯示和 44鍵盤也具備兩組的 ADC和兩組的 DAC接頭提供類比訊號的測試工具

常用的實驗組合包括

1精簡組合包括(eM_USB+eM_FPGA)提供基本的網路節點適用於專題實驗 2標準組合包括(eM_USB+eM_FPGA+eM_DEMO)提供基礎 FPGA設計的教學實驗

3實驗組合包括(eM_USB+eM_FPGA+eM_DEMO+eM_EXP)提供進階的 FPGA實驗可依需求選用不同的實驗模組

78

eM_USB 模組

eM_USB 模組的電路配置圖如下

TxRx

DCPower

USB

JP2

JP3

光纖界面

外加電源

PC連線

JP1

eM_FPGA模組

FT232 CPLD FlashROM

SRAM

10cm

6cm

JP4

其中

1對外的連線接頭包括 DC電源 可選擇單電源(5V)或是多電源(5V+12V-12V)兩種 USB界面 直接連接個人電腦 光纖界面連接光纖網路 2實驗界面包括 JP1負責內部 CPLD的電路下載 JP2JP3兩組 50P的擴張用接頭 JP4 標準 26P接頭用以連接各種實驗模組 3內部的電路配置包括 A以 SO-DIMM接頭連接各種 eM_FPGA卡 B內附 EEPROMFlashROM和 SRAM提供 FPGA作應用測試 C以一顆 FT232BM作為 USB界面解碼而以一顆 CPLD作為光纖網路解碼 D提供各種 eM_FPGA卡的電路下載功能 4內附五顆 LED由上而下依序為 usbLED指示 USB界面的讀寫狀態 tstLED可由 FPGA電路自行定義 stsLED可由 FPGA電路自行定義 RxLED 可由 FPGA電路自行定義 TxLED 可由 FPGA電路自行定義

79

外部接腳定義

外部接頭的接點順序圖示如下

上視圖

JP11 9 JP4

126225

JP31

50249

JP21

50249

而各接頭的接點定義如下

JP1 JP4 JP2 JP3 1+33V 1+12V 2+12V 1 GND 2 GND 1 GND 2 GND 2GND 3 ADC 4 DAC 3POWER 4ALARM 3 +5V 4 +5V 3nc 5 yPB2 6 yPB3 5RxNET 6TxNET 5+12V 6+12V 4TCK 7 yPB1 6 yPB4 7RxUSB 6TxUSB 7-12V 6-12V 5nc 9 yPB0 10yPB5 9RxCAN 10TxCAN 9 ADC 10 DAC 6TDO 11yPB6 12yPB7 11P0D0 12P0D1 11P1D0 12P1D1 7TDI 13yGND 14yPC3 13P0D2 14P0D3 13P1D2 14P1D3 8nc 15yPC2 16yPC1 15P0D4 16P0D5 15P1D4 16P1D5 9TMS 17yPC0 18yPA0 17P0D6 18P0D7 17P1D6 18P1D7 19yPA1 20yPA2 19P0D8 20P0D9 19P1D8 20P1D9 21yPA3 22GND 21P0D10 22P0D11 21P1D10 22P1D11 23GND 24+5V 23P0D12 24P0D13 23P1D12 24P1D13 25+5V 26nc 25P0D14 26P0D15 25P1D14 26P1D15 27P2D0 28P2D1 27PxA0 28PxA1 29P2D2 30P2D3 29PxA2 30PxA3 31P2D4 32P2D5 31PxA4 32PxA5 33P2D6 34P2D7 33PxA6 34PxA7 35P2D8 36P2D9 35PxB0 36PxB1 37P2D10 38P2D11 37PxB2 38PxB3 39P2D12 40P2D13 39PxB4 40PxB5 41P2D14 42P2D15 41PxB6 42PxB7 43ADC0 44ADC1 43PxC0 44PxC1 45ADC2 46ADC3 45PxC2 46PxC3 47ADC4 48ADC5 47PxC4 48PxC5 49DAC0 50DAC1 49PxC6 50PxC7

80

eM_FPGA 模組

在各種 eM_FPGA 模組中FPGA 對外電路的標準配置圖如下

24576MHz

FlashROM

26PSRAM

EEPROM

mD[8]

yPA[4]

FPGACPLD

mA[19]mRDmWRmCSeeCKeeCSeeDIeeDO

光纖界面 RxNETTxNET

USB 界面 RxUSBTxUSBCLK24MPOWERALARM

LED

tstLEDstsLEDRxLEDTxLED

yPB[8]yPC[4]

ADCDAC

ADC[8]

實驗模組

ADC[2]

DAC[2]

xPA[4]

xPB[8]

xPC[4]

基礎實驗

其中

1FPGACPLD可以選擇下述幾種 XC2V250XC2V1000 採用 eM_2V1K模組其中 FPGA為 FG456包裝 XC3S400XC3S1000XC3S1500採用 eM_3S1K模組其中 FPGA為 FG456包裝 XC3S400XC3S1000XC3S1500採用 eM_3S1K模組其中 FPGA為 FG456包裝 XC3S50XC3S200XC3S400 採用 eM_3S50模組其中 FPGA為 TQ144包裝 XC95144XLXC95288XL 採用 eM_95XL模組其中 CPLD為 TQ144包裝 2採用 FG456包裝者可以控制所有的 IO界面 3採用 TQ144包裝者只是不能控制 RAM和 FlashROM而可以控制其他所有的界面 4所有 FPGA模組都可自由選擇由 USB界面或是由光纖界面下載電路但是 CPLD模組只能固定由 USB界面下載電路

5所有 FPGACPLD模組都可透過 26P接頭連接既有的各種實驗模組

81

FPGA 接腳對照表

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

mD0 XD6 mD0 A17 C13 -- -- mD1 XD7 mD1 B17 D12 -- -- mD2 XD8 mD2 C17 D11 -- -- mD3 XD9 mD3 D17 C11 -- -- mD4 XD10 mD4 E17 D10 -- -- mD5 XD11 mD5 E16 C10 -- -- mD6 XD12 mD6 E14 D9 -- -- mD7 XD13 mD7 E13 D7 -- -- mA0 XD14 mA0 D13 C7 -- -- mA1 XD15 mA1 C13 D6 -- -- mA2 XA0 mA2 V5 C3 -- -- mA3 XA1 mA3 U5 C4 -- -- mA4 XA2 mA4 Y2 D3 -- -- mA5 XA3 mA5 Y1 D4 -- -- mA6 XA4 mA6 V4 E3 -- -- mA7 XA5 mA7 V3 E4 -- -- mA8 XA6 mA8 W2 F3 -- -- mA9 XA7 mA9 W1 F4 -- -- mA10 XA8 mA10 T2 G6 -- -- mA11 XA9 mA11 T1 K3 -- -- mA12 XA10 mA12 R4 K10 -- -- mA13 XA11 mA13 R3 L3 -- -- mA14 XA12 mA14 R2 L4 -- -- mRD XRD mRD R1 D5 -- -- mWR XWR mWR P6 C6 -- --

POWER P0A0 POWER B4 B20 P1 P5 ALARM P0A1 ALARM A4 A19 P2 P6 RxNET P0A2 RxNET C4 B19 P4 P7 TxNET P0A3 TxNET C5 A18 P5 P9 RxUSB P0B0 RxUSB B5 A15 P6 P10 TxUSB P0B1 TxUSB A5 B15 P7 P11 RxCAN P0B2 RxCAN D6 A14 P8 P12 RxCAN P0B3 TxCAN C6 B14 P10 P13

CLK24M CLK24M CLK24M E12 B12 P124 P38

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

PWM0H P3A0 P0D0 E6 A8 P21 P23 PWM0L P3A1 P0D1 E5 B8 P23 P24 PWM1H P3A2 P0D2 C2 B6 P24 P25 PWM1L P3A3 P0D3 C1 A5 P25 P26 PWM2H P3A4 P0D4 D2 B5 P26 P27

82

PWM2L P3A5 P0D5 D1 A4 P27 P28 PWMenb P3A6 P0D6 E4 B4 P28 P30 PHT1Z P3A7 P0D7 E3 A3 P30 P31 PHT1A P3B0 P0D8 G2 C1 P31 P32 PHT1B P3B1 P0D9 G1 C2 P32 P33 PHT0A P3B2 P0D10 H5 D1 P33 P34 PHT0B P3B3 P0D11 J6 D2 P35 P35 AMP0 P3B4 P0D12 H4 E1 P36 P39 AMP1 P3B5 P0D13 H3 E2 P40 P40 AMP2 P3B6 P0D14 H2 F2 P41 P41 AMP3 P3B7 P0D15 H1 G1 P44 P43 eeSK P0C3 P1D0 C10 B9 P20 P22 eeCS P0C2 P1D1 D10 A9 P18 P21 eeDI P0C1 P1D2 F10 B10 P17 P20 eeDO P0C0 P1D3 E10 B11 P15 P19 ssCK P0B7 P1D4 E8 A11 P14 P17 ssCS P0B6 P1D5 E7 A12 P13 P16 ssDI P0B5 P1D6 A6 B13 P12 P15 ssDO P0B4 P1D7 B6 A13 P11 P14

ppCLK P3C0 P1D8 K4 G2 P46 P44 ppDIN P3C1 P1D9 K3 K1 P47 P45 TxD P3C2 P1D10 K2 K2 P50 P46 RxD P3C3 P1D11 K1 L1 P51 P48

tstLED P3C4 P1D12 L5 L2 P52 P49 stsLED P3C5 P1D13 L4 M1 P53 P50 RxLED P3C6 P1D14 L3 M2 P55 P51 TxLED P3C7 P1D15 L2 N1 P56 P52

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

xPA0 P2A0 P2D0 AA3 N2 P59 P53 xPA1 P2A1 P2D1 Y4 T1 P60 P54 xPA2 P2A2 P2D2 AA4 T2 P63 P56 xPA3 P2A3 P2D3 AB4 U2 P68 P57 xPC0 P2A4 P2D4 W5 V1 P69 P58 xPC1 P2A5 P2D5 Y5 V2 P70 P59 xPC2 P2A6 P2D6 AA5 W1 P73 P60 xPC3 P2A7 P2D7 AB5 W2 P74 P61

-- P2B0 P2D8 V6 Y1 P76 P64 -- P2B1 P2D9 V7 Y2 P77 P66 -- P2B2 P2D10 W6 AA3 P78 P68

mCS P2B3 P2D11 Y6 AB4 P79 P69 mA15 P2B4 P2D12 V9 AA4 P80 P70 mA16 P2B5 P2D13 V10 AB5 P82 P71 mA17 P2B6 P2D14 W10 AA5 P83 P74 mA18 P2B7 P2D15 Y10 AA6 P84 P75 CS0 P2C0 ADC0 AA10 AB8 P85 P76

83

SDIN0 P2C1 ADC1 AB10 AA8 P86 P77 CS1 P2C2 ADC2 U10 AB9 P87 P78

SDIN1 P2C3 ADC3 U11 AA9 P89 P79 SCLK P2C4 ADC4 V11 AB10 P90 P80 CS2 P2C5 ADC5 W11 AA10 P92 P81

SDOUT P2C6 ADC6 Y11 AB11 P93 P82 LDAC P2C7 ADC7 AA11 AA11 P95 P83

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

xPB0 P1A0 PxA0 M1 M3 P135 P85 xPB1 P1A1 PxA1 M2 M4 P132 P86 yPB2 P1A2 PxA2 M3 N3 P131 P87 yPB3 P1A3 PxA3 M4 N4 P130 P88 yPB1 P1A4 PxA4 M5 T4 P129 P91 yPB4 P1A5 PxA5 M6 T5 P128 P92 yPB0 P1A6 PxA6 N1 U3 P127 P93 yPB5 P1A7 PxA7 N2 U4 P125 P94 yPB6 P1B0 PxB0 U13 V3 P119 P95 yPB7 P1B1 PxB1 V13 V4 P118 P96 xPB2 P1B2 PxB2 W13 W3 P116 P97 xPB3 P1B3 PxB3 Y13 W4 P113 P98 xPB4 P1B4 PxB4 AA13 Y3 P112 P100 xPB5 P1B5 PxB5 AB13 Y4 P96 P101 yPC3 P1B6 PxB6 U12 Y5 P97 P102 yPC2 P1B7 PxB7 V12 W5 P98 P103 yPC1 P1C7 PxC0 AB17 W11 P108 P113 yPC0 P1C6 PxC1 AA17 Y11 P107 P112 yPA0 P1C5 PxC2 Y17 W10 P105 P111 yPA1 P1C4 PxC3 W17 Y10 P104 P110 yPA2 P1C3 PxC4 AB18 W9 P103 P107 yPA3 P1C2 PxC5 AA18 W8 P102 P106 xPB6 P1C1 PxC6 Y18 W6 P100 P105 xPB7 P1C0 PxC7 W18 Y6 P99 P104

84

eM_DEMO 模組

eM_DEMO 模組的電路配置圖如下

eM_USB 模組

數字型 LED

0 1 2 34 5 6 78 9 A BC D E F

燈號型 LED

44 鍵盤

ADC0 ADC1 DAC0 DAC1

LED 選擇KEY 選擇

其中

1eM_DEMO模組的基本功能包括 A將 xPAxPBxPC等 16個 IO訊號引出控制 LED和鍵盤電路 B將 ADDA訊號引出並放大成+-10V的工作範圍 2LED和鍵盤可以選擇三種模式由 LED和 KEY 兩組開關作選擇圖示如下

模式1

0123

模式2 模式3

0 1 2 34 5 6 78 9 A BC D E F

0123

3模式14鍵輸入並搭配 16點的 LED燈號顯示其中 16點 LED分別對映到 xPA[0~3]xPB[0~7]和 xPC[0~3] 4組按鍵分別對映到 xPC[0~3] 4模式24鍵輸入並搭配四個 7段式數字顯示其中 數字顯示由 xPA[0~3]作數字掃瞄而由 xPB[0~7]作 7段式 LED控制 4組按鍵 分別對映到 xPC[0~3] 5模式316鍵輸入並搭配四個 7段式數字顯示其中 數字顯示由 xPA[0~3]作數字掃瞄而由 xPB[0~7]作 7段式 LED控制 16組按鍵由 xPA[0~3]作鍵盤掃瞄而由 xPC[0~3]作鍵盤讀取 6根據VHDL與數位邏輯設計的章節其中 第 1章至 10章的實驗採用模式1而 第 11章實驗採用模式2而 第 12章之後的實驗都採用模式3

85

FPGA UCF 定義

eM_3S1K 模組

NET CLK LOC = B12

NET XAlt0gt LOC = N2

NET XAlt1gt LOC = T1

NET XAlt2gt LOC = T2

NET XAlt3gt LOC = U2

NET XBlt0gt LOC = M3

NET XBlt1gt LOC = M4

NET XBlt2gt LOC = W3

NET XBlt3gt LOC = W4

NET XBlt4gt LOC = Y3

NET XBlt5gt LOC = Y4

NET XBlt6gt LOC = W6

NET XBlt7gt LOC = Y6

NET XClt0gt LOC = V1

NET XClt1gt LOC = V2

NET XClt2gt LOC = W1

NET XClt3gt LOC = W2

NET YAlt0gt LOC = W10

JP4 接頭

NET YAlt1gt LOC = Y10

NET YAlt2gt LOC = W9

NET YAlt3gt LOC = W8

NET YBlt0gt LOC = U3

NET YBlt1gt LOC = T4

NET YBlt2gt LOC = N3

NET YBlt3gt LOC = N4

NET YBlt4gt LOC = T5

NET YBlt5gt LOC = U4

NET YBlt6gt LOC = V3

NET YBlt7gt LOC = V4

NET YClt0gt LOC = Y11

NET YClt1gt LOC = W11

NET YClt2gt LOC = W5

NET YClt3gt LOC = Y5

在光碟片中 RFFPGAVHDLDEMOBIT3S1K 裡有 VHDL 與數位邏輯設計書本範例原始檔與合成檔

86

eM_3S50 模組

NET CLK LOC = P124

NET XAlt0gt LOC = P59

NET XAlt1gt LOC = P60

NET XAlt2gt LOC = P63

NET XAlt3gt LOC = P68

NET XBlt0gt LOC = P135

NET XBlt1gt LOC = P132

NET XBlt2gt LOC = P116

NET XBlt3gt LOC = P113

NET XBlt4gt LOC = P112

NET XBlt5gt LOC = P96

NET XBlt6gt LOC = P100

NET XBlt7gt LOC = P99

NET XClt0gt LOC = P69

NET XClt1gt LOC = P70

NET XClt2gt LOC = P73

NET XClt3gt LOC = P74

NET YAlt0gt LOC = P105

JP4 接頭

NET YAlt1gt LOC = P104

NET YAlt2gt LOC = P103

NET YAlt3gt LOC = P102

NET YBlt0gt LOC = P127

NET YBlt1gt LOC = P129

NET YBlt2gt LOC = P131

NET YBlt3gt LOC = P130

NET YBlt4gt LOC = P128

NET YBlt5gt LOC = P125

NET YBlt6gt LOC = P119

NET YBlt7gt LOC = P118

NET YClt0gt LOC = P107

NET YClt1gt LOC = P108

NET YClt2gt LOC = P98

NET YClt3gt LOC = P97

在光碟片中 RFFPGAVHDLDEMOBIT3S200 裡有VHDL與數位邏輯設計書本範例原始檔與合成檔

87

eM_95XL 模組

NET CLK LOC = SPIN38

NET XAlt0gt LOC = SPIN53

NET XAlt1gt LOC = SPIN54

NET XAlt2gt LOC = SPIN56

NET XAlt3gt LOC = SPIN57

NET XBlt0gt LOC = SPIN85

NET XBlt1gt LOC = SPIN86

NET XBlt2gt LOC = SPIN97

NET XBlt3gt LOC = SPIN98

NET XBlt4gt LOC = SPIN100

NET XBlt5gt LOC = SPIN101

NET XBlt6gt LOC = SPIN105

NET XBlt7gt LOC = SPIN104

NET XClt0gt LOC = SPIN58

NET XClt1gt LOC = SPIN59

NET XClt2gt LOC = SPIN60

NET XClt3gt LOC = SPIN61

NET YAlt0gt LOC = SPIN111

JP4 接頭

NET YAlt1gt LOC = SPIN110

NET YAlt2gt LOC = SPIN107

NET YAlt3gt LOC = SPIN106

NET YBlt0gt LOC = SPIN93

NET YBlt1gt LOC = SPIN91

NET YBlt2gt LOC = SPIN87

NET YBlt3gt LOC = SPIN88

NET YBlt4gt LOC = SPIN92

NET YBlt5gt LOC = SPIN94

NET YBlt6gt LOC = SPIN95

NET YBlt7gt LOC = SPIN96

NET YClt0gt LOC = SPIN112

NET YClt1gt LOC = SPIN113

NET YClt2gt LOC = SPIN103

NET YClt3gt LOC = SPIN102

在光碟片中 RFFPGAVHDLDEMOSVF95288XL 裡有VHDL與數位邏輯設計書本範例原始檔與合成

檔案

88

eM_FPGA 模組

NET CLK LOC = E12

NET XAlt0gt LOC = AA3

NET XAlt1gt LOC = Y4

NET XAlt2gt LOC = AA4

NET XAlt3gt LOC = AB4

NET XBlt0gt LOC = M1

NET XBlt1gt LOC = M2

NET XBlt2gt LOC = W13

NET XBlt3gt LOC = Y13

NET XBlt4gt LOC = AA13

NET XBlt5gt LOC = AB13

NET XBlt6gt LOC = Y18

NET XBlt7gt LOC = W18

NET XClt0gt LOC = W5

NET XClt1gt LOC = Y5

NET XClt2gt LOC = AA5

NET XClt3gt LOC = AB5

NET YAlt0gt LOC = Y17

JP4 接頭

NET YAlt1gt LOC = W17

NET YAlt2gt LOC = AB18

NET YAlt3gt LOC = AA18

NET YBlt0gt LOC = N1

NET YBlt1gt LOC = M5

NET YBlt2gt LOC = M3

NET YBlt3gt LOC = M4

NET YBlt4gt LOC = M6

NET YBlt5gt LOC = N2

NET YBlt6gt LOC = U13

NET YBlt7gt LOC = V13

NET YClt0gt LOC = AA17

NET YClt1gt LOC = AB17

NET YClt2gt LOC = V12

NET YClt3gt LOC = U12

在光碟片中 RFFPGAVHDLDEMOBIT2V250 裡有VHDL與數位邏輯設計書本範例原始檔與合成檔

89

Page 64: RFFPGA 直流馬達實驗手冊juniortek.com.tw/program/manual/RF-DC-mal.pdf · em_demo模組 em_dcm 直流伺服馬達 dc電源 rffpga 系統的直流馬達實驗規劃 其中包括:

加減速控制模組方塊圖

其中

1Lynn 濾波器的階數固定成八階也就是 m=8其公式為 H(z) = (1-2Z-m+Z-2m)(1-2Z-1+Z-2)m2

2因為m=8所以m2=64因此最後計算低通濾波的部份時要先做除 64的運算 3因為低通濾波(lp)和 y0之間有 64倍的差異代表 y0y1y2的變化範圍比濾波器輸

入值要擴大許多例如輸入值在+-1000變化時y0y1y2很可能會在+-64000之間變化這範圍已經超出整數處理的範圍很可能會造成錯誤的計算結果

4所以在實驗時輸入值的變化範圍必須控制在+-500之間以保證計算的正確性 5對於 Lynn 濾波器當 m=8時其濾波器的頻寬固定為 1 kHzmdt也就是 dt=1時頻寬為 125 Hz dt=2時頻寬為 625Hz依此類推 6對於 Lynn 濾波器其濾波器的延遲固定為 m個抽樣週期因此設計 hp = x8 - lp 即可得到高通濾波器的對應結果 7其中乘 2和除 64的運算以移位運算取代所以整個程式中並無任何乘法運算 8Lynn 濾波器本身並不是穩定濾波器所以在程式啟動時必須確實的將所有狀態

(x0~x16)歸零否則會產生不穩定的狀態輸出

因為 Lynn濾波器中所有參數固定所以除了抽樣週期 dt 之外並無任何可調參數

抽樣週期 dt 可以控制頻寬dt 越大則濾波器頻寬越低

將步階命令值的輸出送入 Lynn 濾波器中經由低通濾波器的效應可以減緩命

令的變化程度達到加減速控制的目的以下為使用 Lynn 濾波器型式實現加減速控

制的組合語言程式列印 如欲更進一步瞭解 Lynn 濾波器與 FIR 數位濾波器之間的關係可以參考通訊實驗

四數位濾波器設計(FIR)中之說明

ACC_controlasm程式列印 local cmd R0 IP 輸入點位置命令

local out R1 OP 輸出點加減速處理後的位置命令

local dif R2 OP 輸出點位置微分命令

local axis R3 0 馬達編號0=X1=Y2=Z3=C

local old R4 內部變數微分計算用

local sumL R5 內部變數積分計算用

local sumH R6 內部變數積分計算用

local y0 R7 內部變數y(0~2)

local y1 R8 local y2 R9

local x0 R10 內部變數x(0~16)

local x1 R11 local x2 R12 local x3 R13 local x4 R14

local x5 R15 local x6 R16 local x7 R17 local x8 R18

local x9 R19 local x10 R20 local x11 R21 local x12 R22

local x13 R23 local x14 R24 local x15 R25 local x16 R26

64

data 27 模組變數區長度

initial 開機啟動程序

WR dif0 RD (cmd) WR out WR old dif=0 out=old=cmd

sumHL=cmd64

SFL 6 WR sumL RD out SFR 10 SGN 5 WR sumH

RPT 17 WR x00 RPT 3 WR y00 RET x[0~16]=0y[0~2]=0

timer 即時控制程序

RD (cmd) SUBX old WR x0 x0=cmd-old old=cmd

SUB x81 ADD x16 ADD y11 SUB y2 WR y0 y0=x0-2x8+x16+2y1-y2

SGN ADD sumL WR sumL RDH ADC sumH WR sumH sumHL+=y0

WRH RD sumL SFR 6 WR out out=sumHL64

RD y0 SGN SFR WR dif dif=y032mm

RD x0 RPT 16 RDX x1 x[i]=x[i-1] i=1~16

RD y0 RDX y1 WR y2 y[i]=y[i-1] i=1~2

b9 RET

72光電盤輸入模組

DC馬達的位置由光電盤量測之預設儲存於 0xac與 0xbe二個輸入埠位址中其中位址 0xac記錄 X軸馬達的位置位址 0xbe記錄 Y軸馬達的位置由於本實驗的DC馬達接在 Y軸的位置上因此程式中直接選用 Y軸的輸入 光電盤位置輸入的程式列印如下其中速度由位置的差分而得至於馬達的位置

則使用內部 2個 word加以記錄精度為 32位元 POS_inputasm程式列印 local spd R0 OP 輸出點速度量測值

local ang R1 OP 輸出點角度量測值

local angH R2 內部變數角度的 32 位元部分

local mode R3 0x308 模式選擇15MHzAB 相正反向輸入

local pht R4 0xac 輸入阜地址光電盤輸入(0xac)

local phtc R5 0xbe 輸入阜地址光電盤模式(0xbe)

local old R6 內部變數速度更新用

data 7 模組變數區長度

initial 開機啟動程序

RD mode WR (phtc) phtc=mode

RD (pht) WR old WR spd0 RET old=phtspd=0

timer 即時控制程序

RD (pht) SUBX old SGN 11 WR spd spd=(pht-old)old=pht

65

ADD ang WR ang angHL+=spd

RDH ADC angH WR angH

RET

73 PWM輸出控制模組 模組方塊

cmd PWM輸出

程式說明 1在開機時將切換保護時間寫到輸出阜 0xbc上其中切換保護值為 0~6360=5us 2在每次 timer interrupt時將 cmd訊號處理後寫到輸出阜 0xb8上

PWM_outputasm程式列印 local cmd R0 IP gnd 輸入點v相命令

local gain R1 4096 參數輸出增益1=4096

local bias R2 2048 參數輸出偏壓0=2048

local limit R3 4095 參數輸出極限1=4095

local zone R4 0x88f0 參數頻率=12KHz切換保護=5us

local pwm R5 0xb8 輸出阜地址PWM0 輸出(0xb8)

local mode R6 0xbc 輸出阜地址PWM 模式(0xbc)

local p0md R7 0xf8 輸出阜地址port0 模式(0xf8)

local gnd R8 0 輸入接地點

data 9 模組變數區長度

initial 開機啟動程序

RD bias WR (pwm) pwm=bias

RD 0xffff WR (p0md) set port0 mode

RD zone WR (mode) RET mode=zone

stop 關機保護程序

RD bias WR (pwm) RET pwm=bias

timer 即時控制程序

RD (mode) xor 1 and 1 WR (mode) trigger watch-dog

RD (cmd) MUL gain SFR 12 ADD bias ACC=(cmdgain4096)+bias

MAX 0 MIN limit WR (pwm) pwm=limit(ACC)

RET

66

74 PD 控制模組

PD控制的模組方塊參見圖二十一所示其中比例控制的部份直接由增益 kp加以調整微分控制的部份則由誤差的差分經增益 kd的調整而得

Σ+

-

cmd

fdk

err out

Σ

pk

dk

Σ

+

+

+

-

old1minusZ

PD控制器的方塊圖

PD_controlasm程式列印 local cmd R0 IP gnd 輸入點位置命令(可忽略)

local fdk R1 IP gnd 輸入點位置回授(可忽略)

local out R2 OP 輸出點用以控制速度迴路

local kp R3 256 參數增益 kp10=256

local kd R4 0 參數增益 kd10=256

local err R5 0 內部變數

local old R6 0 內部變數

local gnd R7 0 無輸入時的短路點

data 8 模組變數區長度

initial 開機啟動程序

WR out0 WR old0 RET out=old=0

timer 即時控制程序

RD (cmd) SUB (fdk) PRTF WR err

MUL kp SFR 8 P=(cmd-fdk)kp256

RDS err SUBX old MUL kd SFR 8 D=(err-old)kd256

ADDS

WR out out=P+D

RET

程式中預設增益值的 10以整數值 256為基底因此使用 SFR 8的指令加以調

整另外在在計算微分項的程式部份用到 SUBX old的指令其詳細的暫存器動作如

下 參考 piDSP的指令說明SUBX指令將總共用到 3個時序參考錯誤 找不到參照

67

來源在時序 1時將原先 AX的資料拷貝一份到 HX中時序 2時正式執行減

法的動作所以 AX暫存器中的內容會變成 err-old時序 3時DSP會將存放在 HX暫存器中的內容拷貝一份到 old的記憶體中也就是經由 SUBX此一精簡指令將

同時完成計算差分所需要的相減與資料疊代的動作有效的利用 piDSP控制器 DSP核心的精簡指令將可以大幅提昇系統的計算速度

HX AXoldSUBXerr err

old

err

errerr olderr minus

1_err

errerr olderr minus err

1_err

1

2

3

SUBX的指令時序與暫存器變化

68

8附錄快速安裝說明

光纖網路通訊 FPGA 發展系統 (適用於 WIN-XP200098 系統)

快速安裝說明

26Pin 負載輸出入埠

雙電源︵5

12

伏︶輸入埠

單電源︵5

伏︶輸入埠

USB

光纖線輸

號 光纖線輸出埠

入 傳 埠

首先將光碟片 RFFPGA 目錄檔案拷貝在您工作硬碟裡面

第一次安裝時先將 USB 傳輸線接上電腦主機將電源供應器接上 FPGA 模組此時電

腦會出現安裝 USB-Serial 驅動程式選擇從清單安裝此驅動程式放置在光碟片

RFFPGA-USBdrive 選擇您目前安裝系統

可選擇 WIN-98WIN-MEWIN-2000WIN-XP 系統配合您現在工作電腦作業系統

69

注意一般電腦 USB 埠很多插口當您安裝驅動程式時是配合您當時插入之埠

下次如您插入不同接口埠時電腦會再次要求安裝驅動程式這是正常現象請再次安

裝驅動程式否則無法使用

FPLC 操作

首先進入 RFFPGA裡子目錄 testASM直接點選 fPLCexe 出現下面操作畫面(也可直接將

此檔案放置桌面直接點選)

(或者選擇 File 再執行 Setuphellip 選擇您要執行 CAI 檔)

70

進入下面操作畫面 首先使用滑鼠在 FPGA下載按鈕單擊動作使 FPGA變成 DSP晶片 實驗一至實驗五皆為使用 DSP組合語言設計程式其原始程式分別為 testASM1至testASM5可使用 texPad 開啟與編輯程式內容 實驗三與實驗五多有 IO控制動作 當選擇實驗三時出現下面畫面

71

eM_USB 模組

數字型 LED

0 1 2 34 5 6 78 9 A BC D E F

燈號型 LED

44 鍵盤

ADC0 ADC1 DAC0 DAC1

LED 選擇KEY 選擇

模 式 1

0123

注意操作畫面 3與 4 說明開關與按鍵選擇位置後選擇程式下載再按程式啟動如您

按下 0-3按鍵時燈號型 LED會有不同方向閃爍顯示程式停止時結束所有 IO控制動作再按回首頁選擇其他實驗 實驗四與實驗五

模式3

0 1 2 34 5 6 78 9 A BC D E F

按照上面開關選擇直接操作如果以上實驗皆能按照正常操作表示您光纖網路通訊

FPGA發展模組以能正常使用 注意 開機與關機動作順序如下

開機電腦啟動 --- eM_USB 模組電源接上 --- USB 接上電腦 ---

啟動 FPLC 軟體 --- 下載 FPGA 程式

關機關閉 FPLC 軟體 --- eM_USB 模組電源拔掉 --- 拔掉電腦 USB 接頭 ---關掉

電腦

如果以上順序有亂可能造成 USB 找不到驅動造成無法下載經過幾次測試還是

無法下載建議重新啟動電腦主機按照正確步驟操作

72

FPGA 下載操作

進入 FPLC 操作系統按照下列步驟選擇節點模組與下載 bit FPGA 檔案

在 VHDLDEMO 子目錄下您可以選擇您目前 FPGA 種類型號在此型號下我們已將 VHDL

與數位邏輯設計課本範例全部放於此處

73

光纖網路連線 FPGA 下載操作

首先利用光纖線將 eM_USB0 模組光纖輸出埠接至 eM_USB1 模組光纖輸入埠以此

類推最後再將最後 eM_USBN 模組光纖輸出埠接至 eM_USB0 模組光纖輸入埠配置

如附圖方式

個人電腦(Windows) eM_USB模組

0USB

eM_USB模組1

光纖網路

eM_USB模組2

eM_USB模組N

配置完成後進入 FPLC 系統首先必須先將 Node00 下載在 testASM 子目錄裡

piDSPv0bit 檔讓 eM_USB0 模組 FPGA 具備 DSP 功能才能執行光纖網路通訊

操作如下

此時您就可以選擇分別下載至各模組 FPGA 檔 bit

74

安裝 FPLC 注意事項

當您進入 FPLC 時

按 FILE 選擇 programhellip 選擇檔案為 exp_dcmplc 出現下面畫面

正常顯示畫面為

75

DOS 環境操作

在 PC 端的操作是在 Windows 環境中的 DOS 視窗中執行指令範例如下

eFPGA progNETbit 下載 FPGA電路至網路節點0(即 USB節點)中 eFPGA testLEDbit 1 下載 FPGA電路至網路節點1中

對於單一節點的控制程序如下

1將 eM_USB模組連結個人電腦的 USB端 2eM_USB模組開機 3執行下載指令即可 eFPGA xxxxbit 4若要更改 FPGA電路只要重新執行下載指令即可

對於多個網路節點的控制程序如下

1第一組 eM_USB模組連結個人電腦的 USB端再以光纖網路依序其他各節點 2連接 USB界面者為模組0從光纖發射端連接出去的模組為1依此類推 3將所有 eM_USB模組開機 4執行下載指令如下 eFPGA progNETbit 模組0必須先下載指定的 FPGA電路 eFPGA xxxxbit 1 再依序下載其他網路模組的 FPGA電路 eFPGA yyyybit 2 eFPGA zzzzbit 最後再重新下載模組0的 FPGA電路 5換句話說模組0必須先執行 progNETbit讓光纖網路接受 FPGA控制後才能透過光纖網路下載至其他節點等全部網路節點下載完畢後再將模組0的 FPGA重新下載讓模組0也可自由執行任意的 FPGA電路

6若要更改某一個網路節點中的 FPGA電路只要重新執行下述指令 eFPGA progNETbit 模組0必須先下載指定的 FPGA電路 eFPGA yyyybit 2 下載指定網路模組的 FPGA電路 eFPGA zzzz bit 最後再重新下載模組0的 FPGA電路 換句話說除非模組0中的 FPGA已經包括光纖網路管理電路否則一定要先在

模組0中下載網路管理電路後才能下載指定網路節點的 FPGA電路

76

光纖網路通訊 FPGA 發展系統

系統配置

光纖網路通訊 FPGA 發展系統的系統配置圖如下

個人電腦(Windows) eM_USB模組

0USB

eM_USB模組1

光纖網路

eM_USB模組2

eM_USB模組N

其中

1基本模組為 eM_USB模組可用 USB界面和個人電腦連線並提供 USB對光纖網路的轉換功能使得個人電腦可以獨立控制光纖網路中的每個網路節點

2eM_USB模組也可以作為光纖網路中的網路節點透過光纖網路而接受個人電腦的

監控 3就個人電腦而言不論是 USB界面直接連結或是以光纖網路間接連結的 eM_USB模組都是可以直接監控的網路節點最多可以同時控制一個 USB節點和 30個網路節點

4對於每一個網路節點個人電腦都可執行 eM_USB模組中 FPGA的電路下載工作並在適當的 FPGA電路配合下可執行 eM_USB模組中 FPGA內部電路的讀寫控制 5透過適當的 FPGA電路設計各網路節點都可透過光纖網路和其他任何網路節點

作同步通訊執行 FPGA內部記憶體的資料交換資料交換頻率可達 1KHz以上

77

網路模組配置

每個網路模組的標準配置圖如下

eM_USB模組光纖網路

USB eM_FPGA卡

eM_DEMO模組

eM_EXP實驗模組

DC電源

其中

1網路模組以 eM_USB模組為主提供基本的 USB界面和光纖網路連線 2eM_USB模組中的 FPGACPLD採用插卡型式可選擇不同的 eM_FPGA卡包括

eM_2V1K卡可選用 Virtex系列的 XC2V250和 XC2V1000 eM_3S1K卡可選用 Spartan3系列的 XC3S400XC3S1000和 XC3S1500 eM_3S50卡可選用 Spartan3系列的 XC3S50XC3S200和 XC3S400 eM_95XL卡可選用 9500XL系列的 XC95144XL和 XC95288XL 3eM_USB模組中的對外連線有兩種一種是 26P接頭用以連接既有的各種實驗模

組另一種是兩組 50P接頭將 FPGA中各接腳引出用以連接專題實驗 4eM_DEMO模組就是插上 50P接頭的教學模組其中包括 LED 數字顯示和 44鍵盤也具備兩組的 ADC和兩組的 DAC接頭提供類比訊號的測試工具

常用的實驗組合包括

1精簡組合包括(eM_USB+eM_FPGA)提供基本的網路節點適用於專題實驗 2標準組合包括(eM_USB+eM_FPGA+eM_DEMO)提供基礎 FPGA設計的教學實驗

3實驗組合包括(eM_USB+eM_FPGA+eM_DEMO+eM_EXP)提供進階的 FPGA實驗可依需求選用不同的實驗模組

78

eM_USB 模組

eM_USB 模組的電路配置圖如下

TxRx

DCPower

USB

JP2

JP3

光纖界面

外加電源

PC連線

JP1

eM_FPGA模組

FT232 CPLD FlashROM

SRAM

10cm

6cm

JP4

其中

1對外的連線接頭包括 DC電源 可選擇單電源(5V)或是多電源(5V+12V-12V)兩種 USB界面 直接連接個人電腦 光纖界面連接光纖網路 2實驗界面包括 JP1負責內部 CPLD的電路下載 JP2JP3兩組 50P的擴張用接頭 JP4 標準 26P接頭用以連接各種實驗模組 3內部的電路配置包括 A以 SO-DIMM接頭連接各種 eM_FPGA卡 B內附 EEPROMFlashROM和 SRAM提供 FPGA作應用測試 C以一顆 FT232BM作為 USB界面解碼而以一顆 CPLD作為光纖網路解碼 D提供各種 eM_FPGA卡的電路下載功能 4內附五顆 LED由上而下依序為 usbLED指示 USB界面的讀寫狀態 tstLED可由 FPGA電路自行定義 stsLED可由 FPGA電路自行定義 RxLED 可由 FPGA電路自行定義 TxLED 可由 FPGA電路自行定義

79

外部接腳定義

外部接頭的接點順序圖示如下

上視圖

JP11 9 JP4

126225

JP31

50249

JP21

50249

而各接頭的接點定義如下

JP1 JP4 JP2 JP3 1+33V 1+12V 2+12V 1 GND 2 GND 1 GND 2 GND 2GND 3 ADC 4 DAC 3POWER 4ALARM 3 +5V 4 +5V 3nc 5 yPB2 6 yPB3 5RxNET 6TxNET 5+12V 6+12V 4TCK 7 yPB1 6 yPB4 7RxUSB 6TxUSB 7-12V 6-12V 5nc 9 yPB0 10yPB5 9RxCAN 10TxCAN 9 ADC 10 DAC 6TDO 11yPB6 12yPB7 11P0D0 12P0D1 11P1D0 12P1D1 7TDI 13yGND 14yPC3 13P0D2 14P0D3 13P1D2 14P1D3 8nc 15yPC2 16yPC1 15P0D4 16P0D5 15P1D4 16P1D5 9TMS 17yPC0 18yPA0 17P0D6 18P0D7 17P1D6 18P1D7 19yPA1 20yPA2 19P0D8 20P0D9 19P1D8 20P1D9 21yPA3 22GND 21P0D10 22P0D11 21P1D10 22P1D11 23GND 24+5V 23P0D12 24P0D13 23P1D12 24P1D13 25+5V 26nc 25P0D14 26P0D15 25P1D14 26P1D15 27P2D0 28P2D1 27PxA0 28PxA1 29P2D2 30P2D3 29PxA2 30PxA3 31P2D4 32P2D5 31PxA4 32PxA5 33P2D6 34P2D7 33PxA6 34PxA7 35P2D8 36P2D9 35PxB0 36PxB1 37P2D10 38P2D11 37PxB2 38PxB3 39P2D12 40P2D13 39PxB4 40PxB5 41P2D14 42P2D15 41PxB6 42PxB7 43ADC0 44ADC1 43PxC0 44PxC1 45ADC2 46ADC3 45PxC2 46PxC3 47ADC4 48ADC5 47PxC4 48PxC5 49DAC0 50DAC1 49PxC6 50PxC7

80

eM_FPGA 模組

在各種 eM_FPGA 模組中FPGA 對外電路的標準配置圖如下

24576MHz

FlashROM

26PSRAM

EEPROM

mD[8]

yPA[4]

FPGACPLD

mA[19]mRDmWRmCSeeCKeeCSeeDIeeDO

光纖界面 RxNETTxNET

USB 界面 RxUSBTxUSBCLK24MPOWERALARM

LED

tstLEDstsLEDRxLEDTxLED

yPB[8]yPC[4]

ADCDAC

ADC[8]

實驗模組

ADC[2]

DAC[2]

xPA[4]

xPB[8]

xPC[4]

基礎實驗

其中

1FPGACPLD可以選擇下述幾種 XC2V250XC2V1000 採用 eM_2V1K模組其中 FPGA為 FG456包裝 XC3S400XC3S1000XC3S1500採用 eM_3S1K模組其中 FPGA為 FG456包裝 XC3S400XC3S1000XC3S1500採用 eM_3S1K模組其中 FPGA為 FG456包裝 XC3S50XC3S200XC3S400 採用 eM_3S50模組其中 FPGA為 TQ144包裝 XC95144XLXC95288XL 採用 eM_95XL模組其中 CPLD為 TQ144包裝 2採用 FG456包裝者可以控制所有的 IO界面 3採用 TQ144包裝者只是不能控制 RAM和 FlashROM而可以控制其他所有的界面 4所有 FPGA模組都可自由選擇由 USB界面或是由光纖界面下載電路但是 CPLD模組只能固定由 USB界面下載電路

5所有 FPGACPLD模組都可透過 26P接頭連接既有的各種實驗模組

81

FPGA 接腳對照表

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

mD0 XD6 mD0 A17 C13 -- -- mD1 XD7 mD1 B17 D12 -- -- mD2 XD8 mD2 C17 D11 -- -- mD3 XD9 mD3 D17 C11 -- -- mD4 XD10 mD4 E17 D10 -- -- mD5 XD11 mD5 E16 C10 -- -- mD6 XD12 mD6 E14 D9 -- -- mD7 XD13 mD7 E13 D7 -- -- mA0 XD14 mA0 D13 C7 -- -- mA1 XD15 mA1 C13 D6 -- -- mA2 XA0 mA2 V5 C3 -- -- mA3 XA1 mA3 U5 C4 -- -- mA4 XA2 mA4 Y2 D3 -- -- mA5 XA3 mA5 Y1 D4 -- -- mA6 XA4 mA6 V4 E3 -- -- mA7 XA5 mA7 V3 E4 -- -- mA8 XA6 mA8 W2 F3 -- -- mA9 XA7 mA9 W1 F4 -- -- mA10 XA8 mA10 T2 G6 -- -- mA11 XA9 mA11 T1 K3 -- -- mA12 XA10 mA12 R4 K10 -- -- mA13 XA11 mA13 R3 L3 -- -- mA14 XA12 mA14 R2 L4 -- -- mRD XRD mRD R1 D5 -- -- mWR XWR mWR P6 C6 -- --

POWER P0A0 POWER B4 B20 P1 P5 ALARM P0A1 ALARM A4 A19 P2 P6 RxNET P0A2 RxNET C4 B19 P4 P7 TxNET P0A3 TxNET C5 A18 P5 P9 RxUSB P0B0 RxUSB B5 A15 P6 P10 TxUSB P0B1 TxUSB A5 B15 P7 P11 RxCAN P0B2 RxCAN D6 A14 P8 P12 RxCAN P0B3 TxCAN C6 B14 P10 P13

CLK24M CLK24M CLK24M E12 B12 P124 P38

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

PWM0H P3A0 P0D0 E6 A8 P21 P23 PWM0L P3A1 P0D1 E5 B8 P23 P24 PWM1H P3A2 P0D2 C2 B6 P24 P25 PWM1L P3A3 P0D3 C1 A5 P25 P26 PWM2H P3A4 P0D4 D2 B5 P26 P27

82

PWM2L P3A5 P0D5 D1 A4 P27 P28 PWMenb P3A6 P0D6 E4 B4 P28 P30 PHT1Z P3A7 P0D7 E3 A3 P30 P31 PHT1A P3B0 P0D8 G2 C1 P31 P32 PHT1B P3B1 P0D9 G1 C2 P32 P33 PHT0A P3B2 P0D10 H5 D1 P33 P34 PHT0B P3B3 P0D11 J6 D2 P35 P35 AMP0 P3B4 P0D12 H4 E1 P36 P39 AMP1 P3B5 P0D13 H3 E2 P40 P40 AMP2 P3B6 P0D14 H2 F2 P41 P41 AMP3 P3B7 P0D15 H1 G1 P44 P43 eeSK P0C3 P1D0 C10 B9 P20 P22 eeCS P0C2 P1D1 D10 A9 P18 P21 eeDI P0C1 P1D2 F10 B10 P17 P20 eeDO P0C0 P1D3 E10 B11 P15 P19 ssCK P0B7 P1D4 E8 A11 P14 P17 ssCS P0B6 P1D5 E7 A12 P13 P16 ssDI P0B5 P1D6 A6 B13 P12 P15 ssDO P0B4 P1D7 B6 A13 P11 P14

ppCLK P3C0 P1D8 K4 G2 P46 P44 ppDIN P3C1 P1D9 K3 K1 P47 P45 TxD P3C2 P1D10 K2 K2 P50 P46 RxD P3C3 P1D11 K1 L1 P51 P48

tstLED P3C4 P1D12 L5 L2 P52 P49 stsLED P3C5 P1D13 L4 M1 P53 P50 RxLED P3C6 P1D14 L3 M2 P55 P51 TxLED P3C7 P1D15 L2 N1 P56 P52

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

xPA0 P2A0 P2D0 AA3 N2 P59 P53 xPA1 P2A1 P2D1 Y4 T1 P60 P54 xPA2 P2A2 P2D2 AA4 T2 P63 P56 xPA3 P2A3 P2D3 AB4 U2 P68 P57 xPC0 P2A4 P2D4 W5 V1 P69 P58 xPC1 P2A5 P2D5 Y5 V2 P70 P59 xPC2 P2A6 P2D6 AA5 W1 P73 P60 xPC3 P2A7 P2D7 AB5 W2 P74 P61

-- P2B0 P2D8 V6 Y1 P76 P64 -- P2B1 P2D9 V7 Y2 P77 P66 -- P2B2 P2D10 W6 AA3 P78 P68

mCS P2B3 P2D11 Y6 AB4 P79 P69 mA15 P2B4 P2D12 V9 AA4 P80 P70 mA16 P2B5 P2D13 V10 AB5 P82 P71 mA17 P2B6 P2D14 W10 AA5 P83 P74 mA18 P2B7 P2D15 Y10 AA6 P84 P75 CS0 P2C0 ADC0 AA10 AB8 P85 P76

83

SDIN0 P2C1 ADC1 AB10 AA8 P86 P77 CS1 P2C2 ADC2 U10 AB9 P87 P78

SDIN1 P2C3 ADC3 U11 AA9 P89 P79 SCLK P2C4 ADC4 V11 AB10 P90 P80 CS2 P2C5 ADC5 W11 AA10 P92 P81

SDOUT P2C6 ADC6 Y11 AB11 P93 P82 LDAC P2C7 ADC7 AA11 AA11 P95 P83

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

xPB0 P1A0 PxA0 M1 M3 P135 P85 xPB1 P1A1 PxA1 M2 M4 P132 P86 yPB2 P1A2 PxA2 M3 N3 P131 P87 yPB3 P1A3 PxA3 M4 N4 P130 P88 yPB1 P1A4 PxA4 M5 T4 P129 P91 yPB4 P1A5 PxA5 M6 T5 P128 P92 yPB0 P1A6 PxA6 N1 U3 P127 P93 yPB5 P1A7 PxA7 N2 U4 P125 P94 yPB6 P1B0 PxB0 U13 V3 P119 P95 yPB7 P1B1 PxB1 V13 V4 P118 P96 xPB2 P1B2 PxB2 W13 W3 P116 P97 xPB3 P1B3 PxB3 Y13 W4 P113 P98 xPB4 P1B4 PxB4 AA13 Y3 P112 P100 xPB5 P1B5 PxB5 AB13 Y4 P96 P101 yPC3 P1B6 PxB6 U12 Y5 P97 P102 yPC2 P1B7 PxB7 V12 W5 P98 P103 yPC1 P1C7 PxC0 AB17 W11 P108 P113 yPC0 P1C6 PxC1 AA17 Y11 P107 P112 yPA0 P1C5 PxC2 Y17 W10 P105 P111 yPA1 P1C4 PxC3 W17 Y10 P104 P110 yPA2 P1C3 PxC4 AB18 W9 P103 P107 yPA3 P1C2 PxC5 AA18 W8 P102 P106 xPB6 P1C1 PxC6 Y18 W6 P100 P105 xPB7 P1C0 PxC7 W18 Y6 P99 P104

84

eM_DEMO 模組

eM_DEMO 模組的電路配置圖如下

eM_USB 模組

數字型 LED

0 1 2 34 5 6 78 9 A BC D E F

燈號型 LED

44 鍵盤

ADC0 ADC1 DAC0 DAC1

LED 選擇KEY 選擇

其中

1eM_DEMO模組的基本功能包括 A將 xPAxPBxPC等 16個 IO訊號引出控制 LED和鍵盤電路 B將 ADDA訊號引出並放大成+-10V的工作範圍 2LED和鍵盤可以選擇三種模式由 LED和 KEY 兩組開關作選擇圖示如下

模式1

0123

模式2 模式3

0 1 2 34 5 6 78 9 A BC D E F

0123

3模式14鍵輸入並搭配 16點的 LED燈號顯示其中 16點 LED分別對映到 xPA[0~3]xPB[0~7]和 xPC[0~3] 4組按鍵分別對映到 xPC[0~3] 4模式24鍵輸入並搭配四個 7段式數字顯示其中 數字顯示由 xPA[0~3]作數字掃瞄而由 xPB[0~7]作 7段式 LED控制 4組按鍵 分別對映到 xPC[0~3] 5模式316鍵輸入並搭配四個 7段式數字顯示其中 數字顯示由 xPA[0~3]作數字掃瞄而由 xPB[0~7]作 7段式 LED控制 16組按鍵由 xPA[0~3]作鍵盤掃瞄而由 xPC[0~3]作鍵盤讀取 6根據VHDL與數位邏輯設計的章節其中 第 1章至 10章的實驗採用模式1而 第 11章實驗採用模式2而 第 12章之後的實驗都採用模式3

85

FPGA UCF 定義

eM_3S1K 模組

NET CLK LOC = B12

NET XAlt0gt LOC = N2

NET XAlt1gt LOC = T1

NET XAlt2gt LOC = T2

NET XAlt3gt LOC = U2

NET XBlt0gt LOC = M3

NET XBlt1gt LOC = M4

NET XBlt2gt LOC = W3

NET XBlt3gt LOC = W4

NET XBlt4gt LOC = Y3

NET XBlt5gt LOC = Y4

NET XBlt6gt LOC = W6

NET XBlt7gt LOC = Y6

NET XClt0gt LOC = V1

NET XClt1gt LOC = V2

NET XClt2gt LOC = W1

NET XClt3gt LOC = W2

NET YAlt0gt LOC = W10

JP4 接頭

NET YAlt1gt LOC = Y10

NET YAlt2gt LOC = W9

NET YAlt3gt LOC = W8

NET YBlt0gt LOC = U3

NET YBlt1gt LOC = T4

NET YBlt2gt LOC = N3

NET YBlt3gt LOC = N4

NET YBlt4gt LOC = T5

NET YBlt5gt LOC = U4

NET YBlt6gt LOC = V3

NET YBlt7gt LOC = V4

NET YClt0gt LOC = Y11

NET YClt1gt LOC = W11

NET YClt2gt LOC = W5

NET YClt3gt LOC = Y5

在光碟片中 RFFPGAVHDLDEMOBIT3S1K 裡有 VHDL 與數位邏輯設計書本範例原始檔與合成檔

86

eM_3S50 模組

NET CLK LOC = P124

NET XAlt0gt LOC = P59

NET XAlt1gt LOC = P60

NET XAlt2gt LOC = P63

NET XAlt3gt LOC = P68

NET XBlt0gt LOC = P135

NET XBlt1gt LOC = P132

NET XBlt2gt LOC = P116

NET XBlt3gt LOC = P113

NET XBlt4gt LOC = P112

NET XBlt5gt LOC = P96

NET XBlt6gt LOC = P100

NET XBlt7gt LOC = P99

NET XClt0gt LOC = P69

NET XClt1gt LOC = P70

NET XClt2gt LOC = P73

NET XClt3gt LOC = P74

NET YAlt0gt LOC = P105

JP4 接頭

NET YAlt1gt LOC = P104

NET YAlt2gt LOC = P103

NET YAlt3gt LOC = P102

NET YBlt0gt LOC = P127

NET YBlt1gt LOC = P129

NET YBlt2gt LOC = P131

NET YBlt3gt LOC = P130

NET YBlt4gt LOC = P128

NET YBlt5gt LOC = P125

NET YBlt6gt LOC = P119

NET YBlt7gt LOC = P118

NET YClt0gt LOC = P107

NET YClt1gt LOC = P108

NET YClt2gt LOC = P98

NET YClt3gt LOC = P97

在光碟片中 RFFPGAVHDLDEMOBIT3S200 裡有VHDL與數位邏輯設計書本範例原始檔與合成檔

87

eM_95XL 模組

NET CLK LOC = SPIN38

NET XAlt0gt LOC = SPIN53

NET XAlt1gt LOC = SPIN54

NET XAlt2gt LOC = SPIN56

NET XAlt3gt LOC = SPIN57

NET XBlt0gt LOC = SPIN85

NET XBlt1gt LOC = SPIN86

NET XBlt2gt LOC = SPIN97

NET XBlt3gt LOC = SPIN98

NET XBlt4gt LOC = SPIN100

NET XBlt5gt LOC = SPIN101

NET XBlt6gt LOC = SPIN105

NET XBlt7gt LOC = SPIN104

NET XClt0gt LOC = SPIN58

NET XClt1gt LOC = SPIN59

NET XClt2gt LOC = SPIN60

NET XClt3gt LOC = SPIN61

NET YAlt0gt LOC = SPIN111

JP4 接頭

NET YAlt1gt LOC = SPIN110

NET YAlt2gt LOC = SPIN107

NET YAlt3gt LOC = SPIN106

NET YBlt0gt LOC = SPIN93

NET YBlt1gt LOC = SPIN91

NET YBlt2gt LOC = SPIN87

NET YBlt3gt LOC = SPIN88

NET YBlt4gt LOC = SPIN92

NET YBlt5gt LOC = SPIN94

NET YBlt6gt LOC = SPIN95

NET YBlt7gt LOC = SPIN96

NET YClt0gt LOC = SPIN112

NET YClt1gt LOC = SPIN113

NET YClt2gt LOC = SPIN103

NET YClt3gt LOC = SPIN102

在光碟片中 RFFPGAVHDLDEMOSVF95288XL 裡有VHDL與數位邏輯設計書本範例原始檔與合成

檔案

88

eM_FPGA 模組

NET CLK LOC = E12

NET XAlt0gt LOC = AA3

NET XAlt1gt LOC = Y4

NET XAlt2gt LOC = AA4

NET XAlt3gt LOC = AB4

NET XBlt0gt LOC = M1

NET XBlt1gt LOC = M2

NET XBlt2gt LOC = W13

NET XBlt3gt LOC = Y13

NET XBlt4gt LOC = AA13

NET XBlt5gt LOC = AB13

NET XBlt6gt LOC = Y18

NET XBlt7gt LOC = W18

NET XClt0gt LOC = W5

NET XClt1gt LOC = Y5

NET XClt2gt LOC = AA5

NET XClt3gt LOC = AB5

NET YAlt0gt LOC = Y17

JP4 接頭

NET YAlt1gt LOC = W17

NET YAlt2gt LOC = AB18

NET YAlt3gt LOC = AA18

NET YBlt0gt LOC = N1

NET YBlt1gt LOC = M5

NET YBlt2gt LOC = M3

NET YBlt3gt LOC = M4

NET YBlt4gt LOC = M6

NET YBlt5gt LOC = N2

NET YBlt6gt LOC = U13

NET YBlt7gt LOC = V13

NET YClt0gt LOC = AA17

NET YClt1gt LOC = AB17

NET YClt2gt LOC = V12

NET YClt3gt LOC = U12

在光碟片中 RFFPGAVHDLDEMOBIT2V250 裡有VHDL與數位邏輯設計書本範例原始檔與合成檔

89

Page 65: RFFPGA 直流馬達實驗手冊juniortek.com.tw/program/manual/RF-DC-mal.pdf · em_demo模組 em_dcm 直流伺服馬達 dc電源 rffpga 系統的直流馬達實驗規劃 其中包括:

data 27 模組變數區長度

initial 開機啟動程序

WR dif0 RD (cmd) WR out WR old dif=0 out=old=cmd

sumHL=cmd64

SFL 6 WR sumL RD out SFR 10 SGN 5 WR sumH

RPT 17 WR x00 RPT 3 WR y00 RET x[0~16]=0y[0~2]=0

timer 即時控制程序

RD (cmd) SUBX old WR x0 x0=cmd-old old=cmd

SUB x81 ADD x16 ADD y11 SUB y2 WR y0 y0=x0-2x8+x16+2y1-y2

SGN ADD sumL WR sumL RDH ADC sumH WR sumH sumHL+=y0

WRH RD sumL SFR 6 WR out out=sumHL64

RD y0 SGN SFR WR dif dif=y032mm

RD x0 RPT 16 RDX x1 x[i]=x[i-1] i=1~16

RD y0 RDX y1 WR y2 y[i]=y[i-1] i=1~2

b9 RET

72光電盤輸入模組

DC馬達的位置由光電盤量測之預設儲存於 0xac與 0xbe二個輸入埠位址中其中位址 0xac記錄 X軸馬達的位置位址 0xbe記錄 Y軸馬達的位置由於本實驗的DC馬達接在 Y軸的位置上因此程式中直接選用 Y軸的輸入 光電盤位置輸入的程式列印如下其中速度由位置的差分而得至於馬達的位置

則使用內部 2個 word加以記錄精度為 32位元 POS_inputasm程式列印 local spd R0 OP 輸出點速度量測值

local ang R1 OP 輸出點角度量測值

local angH R2 內部變數角度的 32 位元部分

local mode R3 0x308 模式選擇15MHzAB 相正反向輸入

local pht R4 0xac 輸入阜地址光電盤輸入(0xac)

local phtc R5 0xbe 輸入阜地址光電盤模式(0xbe)

local old R6 內部變數速度更新用

data 7 模組變數區長度

initial 開機啟動程序

RD mode WR (phtc) phtc=mode

RD (pht) WR old WR spd0 RET old=phtspd=0

timer 即時控制程序

RD (pht) SUBX old SGN 11 WR spd spd=(pht-old)old=pht

65

ADD ang WR ang angHL+=spd

RDH ADC angH WR angH

RET

73 PWM輸出控制模組 模組方塊

cmd PWM輸出

程式說明 1在開機時將切換保護時間寫到輸出阜 0xbc上其中切換保護值為 0~6360=5us 2在每次 timer interrupt時將 cmd訊號處理後寫到輸出阜 0xb8上

PWM_outputasm程式列印 local cmd R0 IP gnd 輸入點v相命令

local gain R1 4096 參數輸出增益1=4096

local bias R2 2048 參數輸出偏壓0=2048

local limit R3 4095 參數輸出極限1=4095

local zone R4 0x88f0 參數頻率=12KHz切換保護=5us

local pwm R5 0xb8 輸出阜地址PWM0 輸出(0xb8)

local mode R6 0xbc 輸出阜地址PWM 模式(0xbc)

local p0md R7 0xf8 輸出阜地址port0 模式(0xf8)

local gnd R8 0 輸入接地點

data 9 模組變數區長度

initial 開機啟動程序

RD bias WR (pwm) pwm=bias

RD 0xffff WR (p0md) set port0 mode

RD zone WR (mode) RET mode=zone

stop 關機保護程序

RD bias WR (pwm) RET pwm=bias

timer 即時控制程序

RD (mode) xor 1 and 1 WR (mode) trigger watch-dog

RD (cmd) MUL gain SFR 12 ADD bias ACC=(cmdgain4096)+bias

MAX 0 MIN limit WR (pwm) pwm=limit(ACC)

RET

66

74 PD 控制模組

PD控制的模組方塊參見圖二十一所示其中比例控制的部份直接由增益 kp加以調整微分控制的部份則由誤差的差分經增益 kd的調整而得

Σ+

-

cmd

fdk

err out

Σ

pk

dk

Σ

+

+

+

-

old1minusZ

PD控制器的方塊圖

PD_controlasm程式列印 local cmd R0 IP gnd 輸入點位置命令(可忽略)

local fdk R1 IP gnd 輸入點位置回授(可忽略)

local out R2 OP 輸出點用以控制速度迴路

local kp R3 256 參數增益 kp10=256

local kd R4 0 參數增益 kd10=256

local err R5 0 內部變數

local old R6 0 內部變數

local gnd R7 0 無輸入時的短路點

data 8 模組變數區長度

initial 開機啟動程序

WR out0 WR old0 RET out=old=0

timer 即時控制程序

RD (cmd) SUB (fdk) PRTF WR err

MUL kp SFR 8 P=(cmd-fdk)kp256

RDS err SUBX old MUL kd SFR 8 D=(err-old)kd256

ADDS

WR out out=P+D

RET

程式中預設增益值的 10以整數值 256為基底因此使用 SFR 8的指令加以調

整另外在在計算微分項的程式部份用到 SUBX old的指令其詳細的暫存器動作如

下 參考 piDSP的指令說明SUBX指令將總共用到 3個時序參考錯誤 找不到參照

67

來源在時序 1時將原先 AX的資料拷貝一份到 HX中時序 2時正式執行減

法的動作所以 AX暫存器中的內容會變成 err-old時序 3時DSP會將存放在 HX暫存器中的內容拷貝一份到 old的記憶體中也就是經由 SUBX此一精簡指令將

同時完成計算差分所需要的相減與資料疊代的動作有效的利用 piDSP控制器 DSP核心的精簡指令將可以大幅提昇系統的計算速度

HX AXoldSUBXerr err

old

err

errerr olderr minus

1_err

errerr olderr minus err

1_err

1

2

3

SUBX的指令時序與暫存器變化

68

8附錄快速安裝說明

光纖網路通訊 FPGA 發展系統 (適用於 WIN-XP200098 系統)

快速安裝說明

26Pin 負載輸出入埠

雙電源︵5

12

伏︶輸入埠

單電源︵5

伏︶輸入埠

USB

光纖線輸

號 光纖線輸出埠

入 傳 埠

首先將光碟片 RFFPGA 目錄檔案拷貝在您工作硬碟裡面

第一次安裝時先將 USB 傳輸線接上電腦主機將電源供應器接上 FPGA 模組此時電

腦會出現安裝 USB-Serial 驅動程式選擇從清單安裝此驅動程式放置在光碟片

RFFPGA-USBdrive 選擇您目前安裝系統

可選擇 WIN-98WIN-MEWIN-2000WIN-XP 系統配合您現在工作電腦作業系統

69

注意一般電腦 USB 埠很多插口當您安裝驅動程式時是配合您當時插入之埠

下次如您插入不同接口埠時電腦會再次要求安裝驅動程式這是正常現象請再次安

裝驅動程式否則無法使用

FPLC 操作

首先進入 RFFPGA裡子目錄 testASM直接點選 fPLCexe 出現下面操作畫面(也可直接將

此檔案放置桌面直接點選)

(或者選擇 File 再執行 Setuphellip 選擇您要執行 CAI 檔)

70

進入下面操作畫面 首先使用滑鼠在 FPGA下載按鈕單擊動作使 FPGA變成 DSP晶片 實驗一至實驗五皆為使用 DSP組合語言設計程式其原始程式分別為 testASM1至testASM5可使用 texPad 開啟與編輯程式內容 實驗三與實驗五多有 IO控制動作 當選擇實驗三時出現下面畫面

71

eM_USB 模組

數字型 LED

0 1 2 34 5 6 78 9 A BC D E F

燈號型 LED

44 鍵盤

ADC0 ADC1 DAC0 DAC1

LED 選擇KEY 選擇

模 式 1

0123

注意操作畫面 3與 4 說明開關與按鍵選擇位置後選擇程式下載再按程式啟動如您

按下 0-3按鍵時燈號型 LED會有不同方向閃爍顯示程式停止時結束所有 IO控制動作再按回首頁選擇其他實驗 實驗四與實驗五

模式3

0 1 2 34 5 6 78 9 A BC D E F

按照上面開關選擇直接操作如果以上實驗皆能按照正常操作表示您光纖網路通訊

FPGA發展模組以能正常使用 注意 開機與關機動作順序如下

開機電腦啟動 --- eM_USB 模組電源接上 --- USB 接上電腦 ---

啟動 FPLC 軟體 --- 下載 FPGA 程式

關機關閉 FPLC 軟體 --- eM_USB 模組電源拔掉 --- 拔掉電腦 USB 接頭 ---關掉

電腦

如果以上順序有亂可能造成 USB 找不到驅動造成無法下載經過幾次測試還是

無法下載建議重新啟動電腦主機按照正確步驟操作

72

FPGA 下載操作

進入 FPLC 操作系統按照下列步驟選擇節點模組與下載 bit FPGA 檔案

在 VHDLDEMO 子目錄下您可以選擇您目前 FPGA 種類型號在此型號下我們已將 VHDL

與數位邏輯設計課本範例全部放於此處

73

光纖網路連線 FPGA 下載操作

首先利用光纖線將 eM_USB0 模組光纖輸出埠接至 eM_USB1 模組光纖輸入埠以此

類推最後再將最後 eM_USBN 模組光纖輸出埠接至 eM_USB0 模組光纖輸入埠配置

如附圖方式

個人電腦(Windows) eM_USB模組

0USB

eM_USB模組1

光纖網路

eM_USB模組2

eM_USB模組N

配置完成後進入 FPLC 系統首先必須先將 Node00 下載在 testASM 子目錄裡

piDSPv0bit 檔讓 eM_USB0 模組 FPGA 具備 DSP 功能才能執行光纖網路通訊

操作如下

此時您就可以選擇分別下載至各模組 FPGA 檔 bit

74

安裝 FPLC 注意事項

當您進入 FPLC 時

按 FILE 選擇 programhellip 選擇檔案為 exp_dcmplc 出現下面畫面

正常顯示畫面為

75

DOS 環境操作

在 PC 端的操作是在 Windows 環境中的 DOS 視窗中執行指令範例如下

eFPGA progNETbit 下載 FPGA電路至網路節點0(即 USB節點)中 eFPGA testLEDbit 1 下載 FPGA電路至網路節點1中

對於單一節點的控制程序如下

1將 eM_USB模組連結個人電腦的 USB端 2eM_USB模組開機 3執行下載指令即可 eFPGA xxxxbit 4若要更改 FPGA電路只要重新執行下載指令即可

對於多個網路節點的控制程序如下

1第一組 eM_USB模組連結個人電腦的 USB端再以光纖網路依序其他各節點 2連接 USB界面者為模組0從光纖發射端連接出去的模組為1依此類推 3將所有 eM_USB模組開機 4執行下載指令如下 eFPGA progNETbit 模組0必須先下載指定的 FPGA電路 eFPGA xxxxbit 1 再依序下載其他網路模組的 FPGA電路 eFPGA yyyybit 2 eFPGA zzzzbit 最後再重新下載模組0的 FPGA電路 5換句話說模組0必須先執行 progNETbit讓光纖網路接受 FPGA控制後才能透過光纖網路下載至其他節點等全部網路節點下載完畢後再將模組0的 FPGA重新下載讓模組0也可自由執行任意的 FPGA電路

6若要更改某一個網路節點中的 FPGA電路只要重新執行下述指令 eFPGA progNETbit 模組0必須先下載指定的 FPGA電路 eFPGA yyyybit 2 下載指定網路模組的 FPGA電路 eFPGA zzzz bit 最後再重新下載模組0的 FPGA電路 換句話說除非模組0中的 FPGA已經包括光纖網路管理電路否則一定要先在

模組0中下載網路管理電路後才能下載指定網路節點的 FPGA電路

76

光纖網路通訊 FPGA 發展系統

系統配置

光纖網路通訊 FPGA 發展系統的系統配置圖如下

個人電腦(Windows) eM_USB模組

0USB

eM_USB模組1

光纖網路

eM_USB模組2

eM_USB模組N

其中

1基本模組為 eM_USB模組可用 USB界面和個人電腦連線並提供 USB對光纖網路的轉換功能使得個人電腦可以獨立控制光纖網路中的每個網路節點

2eM_USB模組也可以作為光纖網路中的網路節點透過光纖網路而接受個人電腦的

監控 3就個人電腦而言不論是 USB界面直接連結或是以光纖網路間接連結的 eM_USB模組都是可以直接監控的網路節點最多可以同時控制一個 USB節點和 30個網路節點

4對於每一個網路節點個人電腦都可執行 eM_USB模組中 FPGA的電路下載工作並在適當的 FPGA電路配合下可執行 eM_USB模組中 FPGA內部電路的讀寫控制 5透過適當的 FPGA電路設計各網路節點都可透過光纖網路和其他任何網路節點

作同步通訊執行 FPGA內部記憶體的資料交換資料交換頻率可達 1KHz以上

77

網路模組配置

每個網路模組的標準配置圖如下

eM_USB模組光纖網路

USB eM_FPGA卡

eM_DEMO模組

eM_EXP實驗模組

DC電源

其中

1網路模組以 eM_USB模組為主提供基本的 USB界面和光纖網路連線 2eM_USB模組中的 FPGACPLD採用插卡型式可選擇不同的 eM_FPGA卡包括

eM_2V1K卡可選用 Virtex系列的 XC2V250和 XC2V1000 eM_3S1K卡可選用 Spartan3系列的 XC3S400XC3S1000和 XC3S1500 eM_3S50卡可選用 Spartan3系列的 XC3S50XC3S200和 XC3S400 eM_95XL卡可選用 9500XL系列的 XC95144XL和 XC95288XL 3eM_USB模組中的對外連線有兩種一種是 26P接頭用以連接既有的各種實驗模

組另一種是兩組 50P接頭將 FPGA中各接腳引出用以連接專題實驗 4eM_DEMO模組就是插上 50P接頭的教學模組其中包括 LED 數字顯示和 44鍵盤也具備兩組的 ADC和兩組的 DAC接頭提供類比訊號的測試工具

常用的實驗組合包括

1精簡組合包括(eM_USB+eM_FPGA)提供基本的網路節點適用於專題實驗 2標準組合包括(eM_USB+eM_FPGA+eM_DEMO)提供基礎 FPGA設計的教學實驗

3實驗組合包括(eM_USB+eM_FPGA+eM_DEMO+eM_EXP)提供進階的 FPGA實驗可依需求選用不同的實驗模組

78

eM_USB 模組

eM_USB 模組的電路配置圖如下

TxRx

DCPower

USB

JP2

JP3

光纖界面

外加電源

PC連線

JP1

eM_FPGA模組

FT232 CPLD FlashROM

SRAM

10cm

6cm

JP4

其中

1對外的連線接頭包括 DC電源 可選擇單電源(5V)或是多電源(5V+12V-12V)兩種 USB界面 直接連接個人電腦 光纖界面連接光纖網路 2實驗界面包括 JP1負責內部 CPLD的電路下載 JP2JP3兩組 50P的擴張用接頭 JP4 標準 26P接頭用以連接各種實驗模組 3內部的電路配置包括 A以 SO-DIMM接頭連接各種 eM_FPGA卡 B內附 EEPROMFlashROM和 SRAM提供 FPGA作應用測試 C以一顆 FT232BM作為 USB界面解碼而以一顆 CPLD作為光纖網路解碼 D提供各種 eM_FPGA卡的電路下載功能 4內附五顆 LED由上而下依序為 usbLED指示 USB界面的讀寫狀態 tstLED可由 FPGA電路自行定義 stsLED可由 FPGA電路自行定義 RxLED 可由 FPGA電路自行定義 TxLED 可由 FPGA電路自行定義

79

外部接腳定義

外部接頭的接點順序圖示如下

上視圖

JP11 9 JP4

126225

JP31

50249

JP21

50249

而各接頭的接點定義如下

JP1 JP4 JP2 JP3 1+33V 1+12V 2+12V 1 GND 2 GND 1 GND 2 GND 2GND 3 ADC 4 DAC 3POWER 4ALARM 3 +5V 4 +5V 3nc 5 yPB2 6 yPB3 5RxNET 6TxNET 5+12V 6+12V 4TCK 7 yPB1 6 yPB4 7RxUSB 6TxUSB 7-12V 6-12V 5nc 9 yPB0 10yPB5 9RxCAN 10TxCAN 9 ADC 10 DAC 6TDO 11yPB6 12yPB7 11P0D0 12P0D1 11P1D0 12P1D1 7TDI 13yGND 14yPC3 13P0D2 14P0D3 13P1D2 14P1D3 8nc 15yPC2 16yPC1 15P0D4 16P0D5 15P1D4 16P1D5 9TMS 17yPC0 18yPA0 17P0D6 18P0D7 17P1D6 18P1D7 19yPA1 20yPA2 19P0D8 20P0D9 19P1D8 20P1D9 21yPA3 22GND 21P0D10 22P0D11 21P1D10 22P1D11 23GND 24+5V 23P0D12 24P0D13 23P1D12 24P1D13 25+5V 26nc 25P0D14 26P0D15 25P1D14 26P1D15 27P2D0 28P2D1 27PxA0 28PxA1 29P2D2 30P2D3 29PxA2 30PxA3 31P2D4 32P2D5 31PxA4 32PxA5 33P2D6 34P2D7 33PxA6 34PxA7 35P2D8 36P2D9 35PxB0 36PxB1 37P2D10 38P2D11 37PxB2 38PxB3 39P2D12 40P2D13 39PxB4 40PxB5 41P2D14 42P2D15 41PxB6 42PxB7 43ADC0 44ADC1 43PxC0 44PxC1 45ADC2 46ADC3 45PxC2 46PxC3 47ADC4 48ADC5 47PxC4 48PxC5 49DAC0 50DAC1 49PxC6 50PxC7

80

eM_FPGA 模組

在各種 eM_FPGA 模組中FPGA 對外電路的標準配置圖如下

24576MHz

FlashROM

26PSRAM

EEPROM

mD[8]

yPA[4]

FPGACPLD

mA[19]mRDmWRmCSeeCKeeCSeeDIeeDO

光纖界面 RxNETTxNET

USB 界面 RxUSBTxUSBCLK24MPOWERALARM

LED

tstLEDstsLEDRxLEDTxLED

yPB[8]yPC[4]

ADCDAC

ADC[8]

實驗模組

ADC[2]

DAC[2]

xPA[4]

xPB[8]

xPC[4]

基礎實驗

其中

1FPGACPLD可以選擇下述幾種 XC2V250XC2V1000 採用 eM_2V1K模組其中 FPGA為 FG456包裝 XC3S400XC3S1000XC3S1500採用 eM_3S1K模組其中 FPGA為 FG456包裝 XC3S400XC3S1000XC3S1500採用 eM_3S1K模組其中 FPGA為 FG456包裝 XC3S50XC3S200XC3S400 採用 eM_3S50模組其中 FPGA為 TQ144包裝 XC95144XLXC95288XL 採用 eM_95XL模組其中 CPLD為 TQ144包裝 2採用 FG456包裝者可以控制所有的 IO界面 3採用 TQ144包裝者只是不能控制 RAM和 FlashROM而可以控制其他所有的界面 4所有 FPGA模組都可自由選擇由 USB界面或是由光纖界面下載電路但是 CPLD模組只能固定由 USB界面下載電路

5所有 FPGACPLD模組都可透過 26P接頭連接既有的各種實驗模組

81

FPGA 接腳對照表

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

mD0 XD6 mD0 A17 C13 -- -- mD1 XD7 mD1 B17 D12 -- -- mD2 XD8 mD2 C17 D11 -- -- mD3 XD9 mD3 D17 C11 -- -- mD4 XD10 mD4 E17 D10 -- -- mD5 XD11 mD5 E16 C10 -- -- mD6 XD12 mD6 E14 D9 -- -- mD7 XD13 mD7 E13 D7 -- -- mA0 XD14 mA0 D13 C7 -- -- mA1 XD15 mA1 C13 D6 -- -- mA2 XA0 mA2 V5 C3 -- -- mA3 XA1 mA3 U5 C4 -- -- mA4 XA2 mA4 Y2 D3 -- -- mA5 XA3 mA5 Y1 D4 -- -- mA6 XA4 mA6 V4 E3 -- -- mA7 XA5 mA7 V3 E4 -- -- mA8 XA6 mA8 W2 F3 -- -- mA9 XA7 mA9 W1 F4 -- -- mA10 XA8 mA10 T2 G6 -- -- mA11 XA9 mA11 T1 K3 -- -- mA12 XA10 mA12 R4 K10 -- -- mA13 XA11 mA13 R3 L3 -- -- mA14 XA12 mA14 R2 L4 -- -- mRD XRD mRD R1 D5 -- -- mWR XWR mWR P6 C6 -- --

POWER P0A0 POWER B4 B20 P1 P5 ALARM P0A1 ALARM A4 A19 P2 P6 RxNET P0A2 RxNET C4 B19 P4 P7 TxNET P0A3 TxNET C5 A18 P5 P9 RxUSB P0B0 RxUSB B5 A15 P6 P10 TxUSB P0B1 TxUSB A5 B15 P7 P11 RxCAN P0B2 RxCAN D6 A14 P8 P12 RxCAN P0B3 TxCAN C6 B14 P10 P13

CLK24M CLK24M CLK24M E12 B12 P124 P38

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

PWM0H P3A0 P0D0 E6 A8 P21 P23 PWM0L P3A1 P0D1 E5 B8 P23 P24 PWM1H P3A2 P0D2 C2 B6 P24 P25 PWM1L P3A3 P0D3 C1 A5 P25 P26 PWM2H P3A4 P0D4 D2 B5 P26 P27

82

PWM2L P3A5 P0D5 D1 A4 P27 P28 PWMenb P3A6 P0D6 E4 B4 P28 P30 PHT1Z P3A7 P0D7 E3 A3 P30 P31 PHT1A P3B0 P0D8 G2 C1 P31 P32 PHT1B P3B1 P0D9 G1 C2 P32 P33 PHT0A P3B2 P0D10 H5 D1 P33 P34 PHT0B P3B3 P0D11 J6 D2 P35 P35 AMP0 P3B4 P0D12 H4 E1 P36 P39 AMP1 P3B5 P0D13 H3 E2 P40 P40 AMP2 P3B6 P0D14 H2 F2 P41 P41 AMP3 P3B7 P0D15 H1 G1 P44 P43 eeSK P0C3 P1D0 C10 B9 P20 P22 eeCS P0C2 P1D1 D10 A9 P18 P21 eeDI P0C1 P1D2 F10 B10 P17 P20 eeDO P0C0 P1D3 E10 B11 P15 P19 ssCK P0B7 P1D4 E8 A11 P14 P17 ssCS P0B6 P1D5 E7 A12 P13 P16 ssDI P0B5 P1D6 A6 B13 P12 P15 ssDO P0B4 P1D7 B6 A13 P11 P14

ppCLK P3C0 P1D8 K4 G2 P46 P44 ppDIN P3C1 P1D9 K3 K1 P47 P45 TxD P3C2 P1D10 K2 K2 P50 P46 RxD P3C3 P1D11 K1 L1 P51 P48

tstLED P3C4 P1D12 L5 L2 P52 P49 stsLED P3C5 P1D13 L4 M1 P53 P50 RxLED P3C6 P1D14 L3 M2 P55 P51 TxLED P3C7 P1D15 L2 N1 P56 P52

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

xPA0 P2A0 P2D0 AA3 N2 P59 P53 xPA1 P2A1 P2D1 Y4 T1 P60 P54 xPA2 P2A2 P2D2 AA4 T2 P63 P56 xPA3 P2A3 P2D3 AB4 U2 P68 P57 xPC0 P2A4 P2D4 W5 V1 P69 P58 xPC1 P2A5 P2D5 Y5 V2 P70 P59 xPC2 P2A6 P2D6 AA5 W1 P73 P60 xPC3 P2A7 P2D7 AB5 W2 P74 P61

-- P2B0 P2D8 V6 Y1 P76 P64 -- P2B1 P2D9 V7 Y2 P77 P66 -- P2B2 P2D10 W6 AA3 P78 P68

mCS P2B3 P2D11 Y6 AB4 P79 P69 mA15 P2B4 P2D12 V9 AA4 P80 P70 mA16 P2B5 P2D13 V10 AB5 P82 P71 mA17 P2B6 P2D14 W10 AA5 P83 P74 mA18 P2B7 P2D15 Y10 AA6 P84 P75 CS0 P2C0 ADC0 AA10 AB8 P85 P76

83

SDIN0 P2C1 ADC1 AB10 AA8 P86 P77 CS1 P2C2 ADC2 U10 AB9 P87 P78

SDIN1 P2C3 ADC3 U11 AA9 P89 P79 SCLK P2C4 ADC4 V11 AB10 P90 P80 CS2 P2C5 ADC5 W11 AA10 P92 P81

SDOUT P2C6 ADC6 Y11 AB11 P93 P82 LDAC P2C7 ADC7 AA11 AA11 P95 P83

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

xPB0 P1A0 PxA0 M1 M3 P135 P85 xPB1 P1A1 PxA1 M2 M4 P132 P86 yPB2 P1A2 PxA2 M3 N3 P131 P87 yPB3 P1A3 PxA3 M4 N4 P130 P88 yPB1 P1A4 PxA4 M5 T4 P129 P91 yPB4 P1A5 PxA5 M6 T5 P128 P92 yPB0 P1A6 PxA6 N1 U3 P127 P93 yPB5 P1A7 PxA7 N2 U4 P125 P94 yPB6 P1B0 PxB0 U13 V3 P119 P95 yPB7 P1B1 PxB1 V13 V4 P118 P96 xPB2 P1B2 PxB2 W13 W3 P116 P97 xPB3 P1B3 PxB3 Y13 W4 P113 P98 xPB4 P1B4 PxB4 AA13 Y3 P112 P100 xPB5 P1B5 PxB5 AB13 Y4 P96 P101 yPC3 P1B6 PxB6 U12 Y5 P97 P102 yPC2 P1B7 PxB7 V12 W5 P98 P103 yPC1 P1C7 PxC0 AB17 W11 P108 P113 yPC0 P1C6 PxC1 AA17 Y11 P107 P112 yPA0 P1C5 PxC2 Y17 W10 P105 P111 yPA1 P1C4 PxC3 W17 Y10 P104 P110 yPA2 P1C3 PxC4 AB18 W9 P103 P107 yPA3 P1C2 PxC5 AA18 W8 P102 P106 xPB6 P1C1 PxC6 Y18 W6 P100 P105 xPB7 P1C0 PxC7 W18 Y6 P99 P104

84

eM_DEMO 模組

eM_DEMO 模組的電路配置圖如下

eM_USB 模組

數字型 LED

0 1 2 34 5 6 78 9 A BC D E F

燈號型 LED

44 鍵盤

ADC0 ADC1 DAC0 DAC1

LED 選擇KEY 選擇

其中

1eM_DEMO模組的基本功能包括 A將 xPAxPBxPC等 16個 IO訊號引出控制 LED和鍵盤電路 B將 ADDA訊號引出並放大成+-10V的工作範圍 2LED和鍵盤可以選擇三種模式由 LED和 KEY 兩組開關作選擇圖示如下

模式1

0123

模式2 模式3

0 1 2 34 5 6 78 9 A BC D E F

0123

3模式14鍵輸入並搭配 16點的 LED燈號顯示其中 16點 LED分別對映到 xPA[0~3]xPB[0~7]和 xPC[0~3] 4組按鍵分別對映到 xPC[0~3] 4模式24鍵輸入並搭配四個 7段式數字顯示其中 數字顯示由 xPA[0~3]作數字掃瞄而由 xPB[0~7]作 7段式 LED控制 4組按鍵 分別對映到 xPC[0~3] 5模式316鍵輸入並搭配四個 7段式數字顯示其中 數字顯示由 xPA[0~3]作數字掃瞄而由 xPB[0~7]作 7段式 LED控制 16組按鍵由 xPA[0~3]作鍵盤掃瞄而由 xPC[0~3]作鍵盤讀取 6根據VHDL與數位邏輯設計的章節其中 第 1章至 10章的實驗採用模式1而 第 11章實驗採用模式2而 第 12章之後的實驗都採用模式3

85

FPGA UCF 定義

eM_3S1K 模組

NET CLK LOC = B12

NET XAlt0gt LOC = N2

NET XAlt1gt LOC = T1

NET XAlt2gt LOC = T2

NET XAlt3gt LOC = U2

NET XBlt0gt LOC = M3

NET XBlt1gt LOC = M4

NET XBlt2gt LOC = W3

NET XBlt3gt LOC = W4

NET XBlt4gt LOC = Y3

NET XBlt5gt LOC = Y4

NET XBlt6gt LOC = W6

NET XBlt7gt LOC = Y6

NET XClt0gt LOC = V1

NET XClt1gt LOC = V2

NET XClt2gt LOC = W1

NET XClt3gt LOC = W2

NET YAlt0gt LOC = W10

JP4 接頭

NET YAlt1gt LOC = Y10

NET YAlt2gt LOC = W9

NET YAlt3gt LOC = W8

NET YBlt0gt LOC = U3

NET YBlt1gt LOC = T4

NET YBlt2gt LOC = N3

NET YBlt3gt LOC = N4

NET YBlt4gt LOC = T5

NET YBlt5gt LOC = U4

NET YBlt6gt LOC = V3

NET YBlt7gt LOC = V4

NET YClt0gt LOC = Y11

NET YClt1gt LOC = W11

NET YClt2gt LOC = W5

NET YClt3gt LOC = Y5

在光碟片中 RFFPGAVHDLDEMOBIT3S1K 裡有 VHDL 與數位邏輯設計書本範例原始檔與合成檔

86

eM_3S50 模組

NET CLK LOC = P124

NET XAlt0gt LOC = P59

NET XAlt1gt LOC = P60

NET XAlt2gt LOC = P63

NET XAlt3gt LOC = P68

NET XBlt0gt LOC = P135

NET XBlt1gt LOC = P132

NET XBlt2gt LOC = P116

NET XBlt3gt LOC = P113

NET XBlt4gt LOC = P112

NET XBlt5gt LOC = P96

NET XBlt6gt LOC = P100

NET XBlt7gt LOC = P99

NET XClt0gt LOC = P69

NET XClt1gt LOC = P70

NET XClt2gt LOC = P73

NET XClt3gt LOC = P74

NET YAlt0gt LOC = P105

JP4 接頭

NET YAlt1gt LOC = P104

NET YAlt2gt LOC = P103

NET YAlt3gt LOC = P102

NET YBlt0gt LOC = P127

NET YBlt1gt LOC = P129

NET YBlt2gt LOC = P131

NET YBlt3gt LOC = P130

NET YBlt4gt LOC = P128

NET YBlt5gt LOC = P125

NET YBlt6gt LOC = P119

NET YBlt7gt LOC = P118

NET YClt0gt LOC = P107

NET YClt1gt LOC = P108

NET YClt2gt LOC = P98

NET YClt3gt LOC = P97

在光碟片中 RFFPGAVHDLDEMOBIT3S200 裡有VHDL與數位邏輯設計書本範例原始檔與合成檔

87

eM_95XL 模組

NET CLK LOC = SPIN38

NET XAlt0gt LOC = SPIN53

NET XAlt1gt LOC = SPIN54

NET XAlt2gt LOC = SPIN56

NET XAlt3gt LOC = SPIN57

NET XBlt0gt LOC = SPIN85

NET XBlt1gt LOC = SPIN86

NET XBlt2gt LOC = SPIN97

NET XBlt3gt LOC = SPIN98

NET XBlt4gt LOC = SPIN100

NET XBlt5gt LOC = SPIN101

NET XBlt6gt LOC = SPIN105

NET XBlt7gt LOC = SPIN104

NET XClt0gt LOC = SPIN58

NET XClt1gt LOC = SPIN59

NET XClt2gt LOC = SPIN60

NET XClt3gt LOC = SPIN61

NET YAlt0gt LOC = SPIN111

JP4 接頭

NET YAlt1gt LOC = SPIN110

NET YAlt2gt LOC = SPIN107

NET YAlt3gt LOC = SPIN106

NET YBlt0gt LOC = SPIN93

NET YBlt1gt LOC = SPIN91

NET YBlt2gt LOC = SPIN87

NET YBlt3gt LOC = SPIN88

NET YBlt4gt LOC = SPIN92

NET YBlt5gt LOC = SPIN94

NET YBlt6gt LOC = SPIN95

NET YBlt7gt LOC = SPIN96

NET YClt0gt LOC = SPIN112

NET YClt1gt LOC = SPIN113

NET YClt2gt LOC = SPIN103

NET YClt3gt LOC = SPIN102

在光碟片中 RFFPGAVHDLDEMOSVF95288XL 裡有VHDL與數位邏輯設計書本範例原始檔與合成

檔案

88

eM_FPGA 模組

NET CLK LOC = E12

NET XAlt0gt LOC = AA3

NET XAlt1gt LOC = Y4

NET XAlt2gt LOC = AA4

NET XAlt3gt LOC = AB4

NET XBlt0gt LOC = M1

NET XBlt1gt LOC = M2

NET XBlt2gt LOC = W13

NET XBlt3gt LOC = Y13

NET XBlt4gt LOC = AA13

NET XBlt5gt LOC = AB13

NET XBlt6gt LOC = Y18

NET XBlt7gt LOC = W18

NET XClt0gt LOC = W5

NET XClt1gt LOC = Y5

NET XClt2gt LOC = AA5

NET XClt3gt LOC = AB5

NET YAlt0gt LOC = Y17

JP4 接頭

NET YAlt1gt LOC = W17

NET YAlt2gt LOC = AB18

NET YAlt3gt LOC = AA18

NET YBlt0gt LOC = N1

NET YBlt1gt LOC = M5

NET YBlt2gt LOC = M3

NET YBlt3gt LOC = M4

NET YBlt4gt LOC = M6

NET YBlt5gt LOC = N2

NET YBlt6gt LOC = U13

NET YBlt7gt LOC = V13

NET YClt0gt LOC = AA17

NET YClt1gt LOC = AB17

NET YClt2gt LOC = V12

NET YClt3gt LOC = U12

在光碟片中 RFFPGAVHDLDEMOBIT2V250 裡有VHDL與數位邏輯設計書本範例原始檔與合成檔

89

Page 66: RFFPGA 直流馬達實驗手冊juniortek.com.tw/program/manual/RF-DC-mal.pdf · em_demo模組 em_dcm 直流伺服馬達 dc電源 rffpga 系統的直流馬達實驗規劃 其中包括:

ADD ang WR ang angHL+=spd

RDH ADC angH WR angH

RET

73 PWM輸出控制模組 模組方塊

cmd PWM輸出

程式說明 1在開機時將切換保護時間寫到輸出阜 0xbc上其中切換保護值為 0~6360=5us 2在每次 timer interrupt時將 cmd訊號處理後寫到輸出阜 0xb8上

PWM_outputasm程式列印 local cmd R0 IP gnd 輸入點v相命令

local gain R1 4096 參數輸出增益1=4096

local bias R2 2048 參數輸出偏壓0=2048

local limit R3 4095 參數輸出極限1=4095

local zone R4 0x88f0 參數頻率=12KHz切換保護=5us

local pwm R5 0xb8 輸出阜地址PWM0 輸出(0xb8)

local mode R6 0xbc 輸出阜地址PWM 模式(0xbc)

local p0md R7 0xf8 輸出阜地址port0 模式(0xf8)

local gnd R8 0 輸入接地點

data 9 模組變數區長度

initial 開機啟動程序

RD bias WR (pwm) pwm=bias

RD 0xffff WR (p0md) set port0 mode

RD zone WR (mode) RET mode=zone

stop 關機保護程序

RD bias WR (pwm) RET pwm=bias

timer 即時控制程序

RD (mode) xor 1 and 1 WR (mode) trigger watch-dog

RD (cmd) MUL gain SFR 12 ADD bias ACC=(cmdgain4096)+bias

MAX 0 MIN limit WR (pwm) pwm=limit(ACC)

RET

66

74 PD 控制模組

PD控制的模組方塊參見圖二十一所示其中比例控制的部份直接由增益 kp加以調整微分控制的部份則由誤差的差分經增益 kd的調整而得

Σ+

-

cmd

fdk

err out

Σ

pk

dk

Σ

+

+

+

-

old1minusZ

PD控制器的方塊圖

PD_controlasm程式列印 local cmd R0 IP gnd 輸入點位置命令(可忽略)

local fdk R1 IP gnd 輸入點位置回授(可忽略)

local out R2 OP 輸出點用以控制速度迴路

local kp R3 256 參數增益 kp10=256

local kd R4 0 參數增益 kd10=256

local err R5 0 內部變數

local old R6 0 內部變數

local gnd R7 0 無輸入時的短路點

data 8 模組變數區長度

initial 開機啟動程序

WR out0 WR old0 RET out=old=0

timer 即時控制程序

RD (cmd) SUB (fdk) PRTF WR err

MUL kp SFR 8 P=(cmd-fdk)kp256

RDS err SUBX old MUL kd SFR 8 D=(err-old)kd256

ADDS

WR out out=P+D

RET

程式中預設增益值的 10以整數值 256為基底因此使用 SFR 8的指令加以調

整另外在在計算微分項的程式部份用到 SUBX old的指令其詳細的暫存器動作如

下 參考 piDSP的指令說明SUBX指令將總共用到 3個時序參考錯誤 找不到參照

67

來源在時序 1時將原先 AX的資料拷貝一份到 HX中時序 2時正式執行減

法的動作所以 AX暫存器中的內容會變成 err-old時序 3時DSP會將存放在 HX暫存器中的內容拷貝一份到 old的記憶體中也就是經由 SUBX此一精簡指令將

同時完成計算差分所需要的相減與資料疊代的動作有效的利用 piDSP控制器 DSP核心的精簡指令將可以大幅提昇系統的計算速度

HX AXoldSUBXerr err

old

err

errerr olderr minus

1_err

errerr olderr minus err

1_err

1

2

3

SUBX的指令時序與暫存器變化

68

8附錄快速安裝說明

光纖網路通訊 FPGA 發展系統 (適用於 WIN-XP200098 系統)

快速安裝說明

26Pin 負載輸出入埠

雙電源︵5

12

伏︶輸入埠

單電源︵5

伏︶輸入埠

USB

光纖線輸

號 光纖線輸出埠

入 傳 埠

首先將光碟片 RFFPGA 目錄檔案拷貝在您工作硬碟裡面

第一次安裝時先將 USB 傳輸線接上電腦主機將電源供應器接上 FPGA 模組此時電

腦會出現安裝 USB-Serial 驅動程式選擇從清單安裝此驅動程式放置在光碟片

RFFPGA-USBdrive 選擇您目前安裝系統

可選擇 WIN-98WIN-MEWIN-2000WIN-XP 系統配合您現在工作電腦作業系統

69

注意一般電腦 USB 埠很多插口當您安裝驅動程式時是配合您當時插入之埠

下次如您插入不同接口埠時電腦會再次要求安裝驅動程式這是正常現象請再次安

裝驅動程式否則無法使用

FPLC 操作

首先進入 RFFPGA裡子目錄 testASM直接點選 fPLCexe 出現下面操作畫面(也可直接將

此檔案放置桌面直接點選)

(或者選擇 File 再執行 Setuphellip 選擇您要執行 CAI 檔)

70

進入下面操作畫面 首先使用滑鼠在 FPGA下載按鈕單擊動作使 FPGA變成 DSP晶片 實驗一至實驗五皆為使用 DSP組合語言設計程式其原始程式分別為 testASM1至testASM5可使用 texPad 開啟與編輯程式內容 實驗三與實驗五多有 IO控制動作 當選擇實驗三時出現下面畫面

71

eM_USB 模組

數字型 LED

0 1 2 34 5 6 78 9 A BC D E F

燈號型 LED

44 鍵盤

ADC0 ADC1 DAC0 DAC1

LED 選擇KEY 選擇

模 式 1

0123

注意操作畫面 3與 4 說明開關與按鍵選擇位置後選擇程式下載再按程式啟動如您

按下 0-3按鍵時燈號型 LED會有不同方向閃爍顯示程式停止時結束所有 IO控制動作再按回首頁選擇其他實驗 實驗四與實驗五

模式3

0 1 2 34 5 6 78 9 A BC D E F

按照上面開關選擇直接操作如果以上實驗皆能按照正常操作表示您光纖網路通訊

FPGA發展模組以能正常使用 注意 開機與關機動作順序如下

開機電腦啟動 --- eM_USB 模組電源接上 --- USB 接上電腦 ---

啟動 FPLC 軟體 --- 下載 FPGA 程式

關機關閉 FPLC 軟體 --- eM_USB 模組電源拔掉 --- 拔掉電腦 USB 接頭 ---關掉

電腦

如果以上順序有亂可能造成 USB 找不到驅動造成無法下載經過幾次測試還是

無法下載建議重新啟動電腦主機按照正確步驟操作

72

FPGA 下載操作

進入 FPLC 操作系統按照下列步驟選擇節點模組與下載 bit FPGA 檔案

在 VHDLDEMO 子目錄下您可以選擇您目前 FPGA 種類型號在此型號下我們已將 VHDL

與數位邏輯設計課本範例全部放於此處

73

光纖網路連線 FPGA 下載操作

首先利用光纖線將 eM_USB0 模組光纖輸出埠接至 eM_USB1 模組光纖輸入埠以此

類推最後再將最後 eM_USBN 模組光纖輸出埠接至 eM_USB0 模組光纖輸入埠配置

如附圖方式

個人電腦(Windows) eM_USB模組

0USB

eM_USB模組1

光纖網路

eM_USB模組2

eM_USB模組N

配置完成後進入 FPLC 系統首先必須先將 Node00 下載在 testASM 子目錄裡

piDSPv0bit 檔讓 eM_USB0 模組 FPGA 具備 DSP 功能才能執行光纖網路通訊

操作如下

此時您就可以選擇分別下載至各模組 FPGA 檔 bit

74

安裝 FPLC 注意事項

當您進入 FPLC 時

按 FILE 選擇 programhellip 選擇檔案為 exp_dcmplc 出現下面畫面

正常顯示畫面為

75

DOS 環境操作

在 PC 端的操作是在 Windows 環境中的 DOS 視窗中執行指令範例如下

eFPGA progNETbit 下載 FPGA電路至網路節點0(即 USB節點)中 eFPGA testLEDbit 1 下載 FPGA電路至網路節點1中

對於單一節點的控制程序如下

1將 eM_USB模組連結個人電腦的 USB端 2eM_USB模組開機 3執行下載指令即可 eFPGA xxxxbit 4若要更改 FPGA電路只要重新執行下載指令即可

對於多個網路節點的控制程序如下

1第一組 eM_USB模組連結個人電腦的 USB端再以光纖網路依序其他各節點 2連接 USB界面者為模組0從光纖發射端連接出去的模組為1依此類推 3將所有 eM_USB模組開機 4執行下載指令如下 eFPGA progNETbit 模組0必須先下載指定的 FPGA電路 eFPGA xxxxbit 1 再依序下載其他網路模組的 FPGA電路 eFPGA yyyybit 2 eFPGA zzzzbit 最後再重新下載模組0的 FPGA電路 5換句話說模組0必須先執行 progNETbit讓光纖網路接受 FPGA控制後才能透過光纖網路下載至其他節點等全部網路節點下載完畢後再將模組0的 FPGA重新下載讓模組0也可自由執行任意的 FPGA電路

6若要更改某一個網路節點中的 FPGA電路只要重新執行下述指令 eFPGA progNETbit 模組0必須先下載指定的 FPGA電路 eFPGA yyyybit 2 下載指定網路模組的 FPGA電路 eFPGA zzzz bit 最後再重新下載模組0的 FPGA電路 換句話說除非模組0中的 FPGA已經包括光纖網路管理電路否則一定要先在

模組0中下載網路管理電路後才能下載指定網路節點的 FPGA電路

76

光纖網路通訊 FPGA 發展系統

系統配置

光纖網路通訊 FPGA 發展系統的系統配置圖如下

個人電腦(Windows) eM_USB模組

0USB

eM_USB模組1

光纖網路

eM_USB模組2

eM_USB模組N

其中

1基本模組為 eM_USB模組可用 USB界面和個人電腦連線並提供 USB對光纖網路的轉換功能使得個人電腦可以獨立控制光纖網路中的每個網路節點

2eM_USB模組也可以作為光纖網路中的網路節點透過光纖網路而接受個人電腦的

監控 3就個人電腦而言不論是 USB界面直接連結或是以光纖網路間接連結的 eM_USB模組都是可以直接監控的網路節點最多可以同時控制一個 USB節點和 30個網路節點

4對於每一個網路節點個人電腦都可執行 eM_USB模組中 FPGA的電路下載工作並在適當的 FPGA電路配合下可執行 eM_USB模組中 FPGA內部電路的讀寫控制 5透過適當的 FPGA電路設計各網路節點都可透過光纖網路和其他任何網路節點

作同步通訊執行 FPGA內部記憶體的資料交換資料交換頻率可達 1KHz以上

77

網路模組配置

每個網路模組的標準配置圖如下

eM_USB模組光纖網路

USB eM_FPGA卡

eM_DEMO模組

eM_EXP實驗模組

DC電源

其中

1網路模組以 eM_USB模組為主提供基本的 USB界面和光纖網路連線 2eM_USB模組中的 FPGACPLD採用插卡型式可選擇不同的 eM_FPGA卡包括

eM_2V1K卡可選用 Virtex系列的 XC2V250和 XC2V1000 eM_3S1K卡可選用 Spartan3系列的 XC3S400XC3S1000和 XC3S1500 eM_3S50卡可選用 Spartan3系列的 XC3S50XC3S200和 XC3S400 eM_95XL卡可選用 9500XL系列的 XC95144XL和 XC95288XL 3eM_USB模組中的對外連線有兩種一種是 26P接頭用以連接既有的各種實驗模

組另一種是兩組 50P接頭將 FPGA中各接腳引出用以連接專題實驗 4eM_DEMO模組就是插上 50P接頭的教學模組其中包括 LED 數字顯示和 44鍵盤也具備兩組的 ADC和兩組的 DAC接頭提供類比訊號的測試工具

常用的實驗組合包括

1精簡組合包括(eM_USB+eM_FPGA)提供基本的網路節點適用於專題實驗 2標準組合包括(eM_USB+eM_FPGA+eM_DEMO)提供基礎 FPGA設計的教學實驗

3實驗組合包括(eM_USB+eM_FPGA+eM_DEMO+eM_EXP)提供進階的 FPGA實驗可依需求選用不同的實驗模組

78

eM_USB 模組

eM_USB 模組的電路配置圖如下

TxRx

DCPower

USB

JP2

JP3

光纖界面

外加電源

PC連線

JP1

eM_FPGA模組

FT232 CPLD FlashROM

SRAM

10cm

6cm

JP4

其中

1對外的連線接頭包括 DC電源 可選擇單電源(5V)或是多電源(5V+12V-12V)兩種 USB界面 直接連接個人電腦 光纖界面連接光纖網路 2實驗界面包括 JP1負責內部 CPLD的電路下載 JP2JP3兩組 50P的擴張用接頭 JP4 標準 26P接頭用以連接各種實驗模組 3內部的電路配置包括 A以 SO-DIMM接頭連接各種 eM_FPGA卡 B內附 EEPROMFlashROM和 SRAM提供 FPGA作應用測試 C以一顆 FT232BM作為 USB界面解碼而以一顆 CPLD作為光纖網路解碼 D提供各種 eM_FPGA卡的電路下載功能 4內附五顆 LED由上而下依序為 usbLED指示 USB界面的讀寫狀態 tstLED可由 FPGA電路自行定義 stsLED可由 FPGA電路自行定義 RxLED 可由 FPGA電路自行定義 TxLED 可由 FPGA電路自行定義

79

外部接腳定義

外部接頭的接點順序圖示如下

上視圖

JP11 9 JP4

126225

JP31

50249

JP21

50249

而各接頭的接點定義如下

JP1 JP4 JP2 JP3 1+33V 1+12V 2+12V 1 GND 2 GND 1 GND 2 GND 2GND 3 ADC 4 DAC 3POWER 4ALARM 3 +5V 4 +5V 3nc 5 yPB2 6 yPB3 5RxNET 6TxNET 5+12V 6+12V 4TCK 7 yPB1 6 yPB4 7RxUSB 6TxUSB 7-12V 6-12V 5nc 9 yPB0 10yPB5 9RxCAN 10TxCAN 9 ADC 10 DAC 6TDO 11yPB6 12yPB7 11P0D0 12P0D1 11P1D0 12P1D1 7TDI 13yGND 14yPC3 13P0D2 14P0D3 13P1D2 14P1D3 8nc 15yPC2 16yPC1 15P0D4 16P0D5 15P1D4 16P1D5 9TMS 17yPC0 18yPA0 17P0D6 18P0D7 17P1D6 18P1D7 19yPA1 20yPA2 19P0D8 20P0D9 19P1D8 20P1D9 21yPA3 22GND 21P0D10 22P0D11 21P1D10 22P1D11 23GND 24+5V 23P0D12 24P0D13 23P1D12 24P1D13 25+5V 26nc 25P0D14 26P0D15 25P1D14 26P1D15 27P2D0 28P2D1 27PxA0 28PxA1 29P2D2 30P2D3 29PxA2 30PxA3 31P2D4 32P2D5 31PxA4 32PxA5 33P2D6 34P2D7 33PxA6 34PxA7 35P2D8 36P2D9 35PxB0 36PxB1 37P2D10 38P2D11 37PxB2 38PxB3 39P2D12 40P2D13 39PxB4 40PxB5 41P2D14 42P2D15 41PxB6 42PxB7 43ADC0 44ADC1 43PxC0 44PxC1 45ADC2 46ADC3 45PxC2 46PxC3 47ADC4 48ADC5 47PxC4 48PxC5 49DAC0 50DAC1 49PxC6 50PxC7

80

eM_FPGA 模組

在各種 eM_FPGA 模組中FPGA 對外電路的標準配置圖如下

24576MHz

FlashROM

26PSRAM

EEPROM

mD[8]

yPA[4]

FPGACPLD

mA[19]mRDmWRmCSeeCKeeCSeeDIeeDO

光纖界面 RxNETTxNET

USB 界面 RxUSBTxUSBCLK24MPOWERALARM

LED

tstLEDstsLEDRxLEDTxLED

yPB[8]yPC[4]

ADCDAC

ADC[8]

實驗模組

ADC[2]

DAC[2]

xPA[4]

xPB[8]

xPC[4]

基礎實驗

其中

1FPGACPLD可以選擇下述幾種 XC2V250XC2V1000 採用 eM_2V1K模組其中 FPGA為 FG456包裝 XC3S400XC3S1000XC3S1500採用 eM_3S1K模組其中 FPGA為 FG456包裝 XC3S400XC3S1000XC3S1500採用 eM_3S1K模組其中 FPGA為 FG456包裝 XC3S50XC3S200XC3S400 採用 eM_3S50模組其中 FPGA為 TQ144包裝 XC95144XLXC95288XL 採用 eM_95XL模組其中 CPLD為 TQ144包裝 2採用 FG456包裝者可以控制所有的 IO界面 3採用 TQ144包裝者只是不能控制 RAM和 FlashROM而可以控制其他所有的界面 4所有 FPGA模組都可自由選擇由 USB界面或是由光纖界面下載電路但是 CPLD模組只能固定由 USB界面下載電路

5所有 FPGACPLD模組都可透過 26P接頭連接既有的各種實驗模組

81

FPGA 接腳對照表

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

mD0 XD6 mD0 A17 C13 -- -- mD1 XD7 mD1 B17 D12 -- -- mD2 XD8 mD2 C17 D11 -- -- mD3 XD9 mD3 D17 C11 -- -- mD4 XD10 mD4 E17 D10 -- -- mD5 XD11 mD5 E16 C10 -- -- mD6 XD12 mD6 E14 D9 -- -- mD7 XD13 mD7 E13 D7 -- -- mA0 XD14 mA0 D13 C7 -- -- mA1 XD15 mA1 C13 D6 -- -- mA2 XA0 mA2 V5 C3 -- -- mA3 XA1 mA3 U5 C4 -- -- mA4 XA2 mA4 Y2 D3 -- -- mA5 XA3 mA5 Y1 D4 -- -- mA6 XA4 mA6 V4 E3 -- -- mA7 XA5 mA7 V3 E4 -- -- mA8 XA6 mA8 W2 F3 -- -- mA9 XA7 mA9 W1 F4 -- -- mA10 XA8 mA10 T2 G6 -- -- mA11 XA9 mA11 T1 K3 -- -- mA12 XA10 mA12 R4 K10 -- -- mA13 XA11 mA13 R3 L3 -- -- mA14 XA12 mA14 R2 L4 -- -- mRD XRD mRD R1 D5 -- -- mWR XWR mWR P6 C6 -- --

POWER P0A0 POWER B4 B20 P1 P5 ALARM P0A1 ALARM A4 A19 P2 P6 RxNET P0A2 RxNET C4 B19 P4 P7 TxNET P0A3 TxNET C5 A18 P5 P9 RxUSB P0B0 RxUSB B5 A15 P6 P10 TxUSB P0B1 TxUSB A5 B15 P7 P11 RxCAN P0B2 RxCAN D6 A14 P8 P12 RxCAN P0B3 TxCAN C6 B14 P10 P13

CLK24M CLK24M CLK24M E12 B12 P124 P38

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

PWM0H P3A0 P0D0 E6 A8 P21 P23 PWM0L P3A1 P0D1 E5 B8 P23 P24 PWM1H P3A2 P0D2 C2 B6 P24 P25 PWM1L P3A3 P0D3 C1 A5 P25 P26 PWM2H P3A4 P0D4 D2 B5 P26 P27

82

PWM2L P3A5 P0D5 D1 A4 P27 P28 PWMenb P3A6 P0D6 E4 B4 P28 P30 PHT1Z P3A7 P0D7 E3 A3 P30 P31 PHT1A P3B0 P0D8 G2 C1 P31 P32 PHT1B P3B1 P0D9 G1 C2 P32 P33 PHT0A P3B2 P0D10 H5 D1 P33 P34 PHT0B P3B3 P0D11 J6 D2 P35 P35 AMP0 P3B4 P0D12 H4 E1 P36 P39 AMP1 P3B5 P0D13 H3 E2 P40 P40 AMP2 P3B6 P0D14 H2 F2 P41 P41 AMP3 P3B7 P0D15 H1 G1 P44 P43 eeSK P0C3 P1D0 C10 B9 P20 P22 eeCS P0C2 P1D1 D10 A9 P18 P21 eeDI P0C1 P1D2 F10 B10 P17 P20 eeDO P0C0 P1D3 E10 B11 P15 P19 ssCK P0B7 P1D4 E8 A11 P14 P17 ssCS P0B6 P1D5 E7 A12 P13 P16 ssDI P0B5 P1D6 A6 B13 P12 P15 ssDO P0B4 P1D7 B6 A13 P11 P14

ppCLK P3C0 P1D8 K4 G2 P46 P44 ppDIN P3C1 P1D9 K3 K1 P47 P45 TxD P3C2 P1D10 K2 K2 P50 P46 RxD P3C3 P1D11 K1 L1 P51 P48

tstLED P3C4 P1D12 L5 L2 P52 P49 stsLED P3C5 P1D13 L4 M1 P53 P50 RxLED P3C6 P1D14 L3 M2 P55 P51 TxLED P3C7 P1D15 L2 N1 P56 P52

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

xPA0 P2A0 P2D0 AA3 N2 P59 P53 xPA1 P2A1 P2D1 Y4 T1 P60 P54 xPA2 P2A2 P2D2 AA4 T2 P63 P56 xPA3 P2A3 P2D3 AB4 U2 P68 P57 xPC0 P2A4 P2D4 W5 V1 P69 P58 xPC1 P2A5 P2D5 Y5 V2 P70 P59 xPC2 P2A6 P2D6 AA5 W1 P73 P60 xPC3 P2A7 P2D7 AB5 W2 P74 P61

-- P2B0 P2D8 V6 Y1 P76 P64 -- P2B1 P2D9 V7 Y2 P77 P66 -- P2B2 P2D10 W6 AA3 P78 P68

mCS P2B3 P2D11 Y6 AB4 P79 P69 mA15 P2B4 P2D12 V9 AA4 P80 P70 mA16 P2B5 P2D13 V10 AB5 P82 P71 mA17 P2B6 P2D14 W10 AA5 P83 P74 mA18 P2B7 P2D15 Y10 AA6 P84 P75 CS0 P2C0 ADC0 AA10 AB8 P85 P76

83

SDIN0 P2C1 ADC1 AB10 AA8 P86 P77 CS1 P2C2 ADC2 U10 AB9 P87 P78

SDIN1 P2C3 ADC3 U11 AA9 P89 P79 SCLK P2C4 ADC4 V11 AB10 P90 P80 CS2 P2C5 ADC5 W11 AA10 P92 P81

SDOUT P2C6 ADC6 Y11 AB11 P93 P82 LDAC P2C7 ADC7 AA11 AA11 P95 P83

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

xPB0 P1A0 PxA0 M1 M3 P135 P85 xPB1 P1A1 PxA1 M2 M4 P132 P86 yPB2 P1A2 PxA2 M3 N3 P131 P87 yPB3 P1A3 PxA3 M4 N4 P130 P88 yPB1 P1A4 PxA4 M5 T4 P129 P91 yPB4 P1A5 PxA5 M6 T5 P128 P92 yPB0 P1A6 PxA6 N1 U3 P127 P93 yPB5 P1A7 PxA7 N2 U4 P125 P94 yPB6 P1B0 PxB0 U13 V3 P119 P95 yPB7 P1B1 PxB1 V13 V4 P118 P96 xPB2 P1B2 PxB2 W13 W3 P116 P97 xPB3 P1B3 PxB3 Y13 W4 P113 P98 xPB4 P1B4 PxB4 AA13 Y3 P112 P100 xPB5 P1B5 PxB5 AB13 Y4 P96 P101 yPC3 P1B6 PxB6 U12 Y5 P97 P102 yPC2 P1B7 PxB7 V12 W5 P98 P103 yPC1 P1C7 PxC0 AB17 W11 P108 P113 yPC0 P1C6 PxC1 AA17 Y11 P107 P112 yPA0 P1C5 PxC2 Y17 W10 P105 P111 yPA1 P1C4 PxC3 W17 Y10 P104 P110 yPA2 P1C3 PxC4 AB18 W9 P103 P107 yPA3 P1C2 PxC5 AA18 W8 P102 P106 xPB6 P1C1 PxC6 Y18 W6 P100 P105 xPB7 P1C0 PxC7 W18 Y6 P99 P104

84

eM_DEMO 模組

eM_DEMO 模組的電路配置圖如下

eM_USB 模組

數字型 LED

0 1 2 34 5 6 78 9 A BC D E F

燈號型 LED

44 鍵盤

ADC0 ADC1 DAC0 DAC1

LED 選擇KEY 選擇

其中

1eM_DEMO模組的基本功能包括 A將 xPAxPBxPC等 16個 IO訊號引出控制 LED和鍵盤電路 B將 ADDA訊號引出並放大成+-10V的工作範圍 2LED和鍵盤可以選擇三種模式由 LED和 KEY 兩組開關作選擇圖示如下

模式1

0123

模式2 模式3

0 1 2 34 5 6 78 9 A BC D E F

0123

3模式14鍵輸入並搭配 16點的 LED燈號顯示其中 16點 LED分別對映到 xPA[0~3]xPB[0~7]和 xPC[0~3] 4組按鍵分別對映到 xPC[0~3] 4模式24鍵輸入並搭配四個 7段式數字顯示其中 數字顯示由 xPA[0~3]作數字掃瞄而由 xPB[0~7]作 7段式 LED控制 4組按鍵 分別對映到 xPC[0~3] 5模式316鍵輸入並搭配四個 7段式數字顯示其中 數字顯示由 xPA[0~3]作數字掃瞄而由 xPB[0~7]作 7段式 LED控制 16組按鍵由 xPA[0~3]作鍵盤掃瞄而由 xPC[0~3]作鍵盤讀取 6根據VHDL與數位邏輯設計的章節其中 第 1章至 10章的實驗採用模式1而 第 11章實驗採用模式2而 第 12章之後的實驗都採用模式3

85

FPGA UCF 定義

eM_3S1K 模組

NET CLK LOC = B12

NET XAlt0gt LOC = N2

NET XAlt1gt LOC = T1

NET XAlt2gt LOC = T2

NET XAlt3gt LOC = U2

NET XBlt0gt LOC = M3

NET XBlt1gt LOC = M4

NET XBlt2gt LOC = W3

NET XBlt3gt LOC = W4

NET XBlt4gt LOC = Y3

NET XBlt5gt LOC = Y4

NET XBlt6gt LOC = W6

NET XBlt7gt LOC = Y6

NET XClt0gt LOC = V1

NET XClt1gt LOC = V2

NET XClt2gt LOC = W1

NET XClt3gt LOC = W2

NET YAlt0gt LOC = W10

JP4 接頭

NET YAlt1gt LOC = Y10

NET YAlt2gt LOC = W9

NET YAlt3gt LOC = W8

NET YBlt0gt LOC = U3

NET YBlt1gt LOC = T4

NET YBlt2gt LOC = N3

NET YBlt3gt LOC = N4

NET YBlt4gt LOC = T5

NET YBlt5gt LOC = U4

NET YBlt6gt LOC = V3

NET YBlt7gt LOC = V4

NET YClt0gt LOC = Y11

NET YClt1gt LOC = W11

NET YClt2gt LOC = W5

NET YClt3gt LOC = Y5

在光碟片中 RFFPGAVHDLDEMOBIT3S1K 裡有 VHDL 與數位邏輯設計書本範例原始檔與合成檔

86

eM_3S50 模組

NET CLK LOC = P124

NET XAlt0gt LOC = P59

NET XAlt1gt LOC = P60

NET XAlt2gt LOC = P63

NET XAlt3gt LOC = P68

NET XBlt0gt LOC = P135

NET XBlt1gt LOC = P132

NET XBlt2gt LOC = P116

NET XBlt3gt LOC = P113

NET XBlt4gt LOC = P112

NET XBlt5gt LOC = P96

NET XBlt6gt LOC = P100

NET XBlt7gt LOC = P99

NET XClt0gt LOC = P69

NET XClt1gt LOC = P70

NET XClt2gt LOC = P73

NET XClt3gt LOC = P74

NET YAlt0gt LOC = P105

JP4 接頭

NET YAlt1gt LOC = P104

NET YAlt2gt LOC = P103

NET YAlt3gt LOC = P102

NET YBlt0gt LOC = P127

NET YBlt1gt LOC = P129

NET YBlt2gt LOC = P131

NET YBlt3gt LOC = P130

NET YBlt4gt LOC = P128

NET YBlt5gt LOC = P125

NET YBlt6gt LOC = P119

NET YBlt7gt LOC = P118

NET YClt0gt LOC = P107

NET YClt1gt LOC = P108

NET YClt2gt LOC = P98

NET YClt3gt LOC = P97

在光碟片中 RFFPGAVHDLDEMOBIT3S200 裡有VHDL與數位邏輯設計書本範例原始檔與合成檔

87

eM_95XL 模組

NET CLK LOC = SPIN38

NET XAlt0gt LOC = SPIN53

NET XAlt1gt LOC = SPIN54

NET XAlt2gt LOC = SPIN56

NET XAlt3gt LOC = SPIN57

NET XBlt0gt LOC = SPIN85

NET XBlt1gt LOC = SPIN86

NET XBlt2gt LOC = SPIN97

NET XBlt3gt LOC = SPIN98

NET XBlt4gt LOC = SPIN100

NET XBlt5gt LOC = SPIN101

NET XBlt6gt LOC = SPIN105

NET XBlt7gt LOC = SPIN104

NET XClt0gt LOC = SPIN58

NET XClt1gt LOC = SPIN59

NET XClt2gt LOC = SPIN60

NET XClt3gt LOC = SPIN61

NET YAlt0gt LOC = SPIN111

JP4 接頭

NET YAlt1gt LOC = SPIN110

NET YAlt2gt LOC = SPIN107

NET YAlt3gt LOC = SPIN106

NET YBlt0gt LOC = SPIN93

NET YBlt1gt LOC = SPIN91

NET YBlt2gt LOC = SPIN87

NET YBlt3gt LOC = SPIN88

NET YBlt4gt LOC = SPIN92

NET YBlt5gt LOC = SPIN94

NET YBlt6gt LOC = SPIN95

NET YBlt7gt LOC = SPIN96

NET YClt0gt LOC = SPIN112

NET YClt1gt LOC = SPIN113

NET YClt2gt LOC = SPIN103

NET YClt3gt LOC = SPIN102

在光碟片中 RFFPGAVHDLDEMOSVF95288XL 裡有VHDL與數位邏輯設計書本範例原始檔與合成

檔案

88

eM_FPGA 模組

NET CLK LOC = E12

NET XAlt0gt LOC = AA3

NET XAlt1gt LOC = Y4

NET XAlt2gt LOC = AA4

NET XAlt3gt LOC = AB4

NET XBlt0gt LOC = M1

NET XBlt1gt LOC = M2

NET XBlt2gt LOC = W13

NET XBlt3gt LOC = Y13

NET XBlt4gt LOC = AA13

NET XBlt5gt LOC = AB13

NET XBlt6gt LOC = Y18

NET XBlt7gt LOC = W18

NET XClt0gt LOC = W5

NET XClt1gt LOC = Y5

NET XClt2gt LOC = AA5

NET XClt3gt LOC = AB5

NET YAlt0gt LOC = Y17

JP4 接頭

NET YAlt1gt LOC = W17

NET YAlt2gt LOC = AB18

NET YAlt3gt LOC = AA18

NET YBlt0gt LOC = N1

NET YBlt1gt LOC = M5

NET YBlt2gt LOC = M3

NET YBlt3gt LOC = M4

NET YBlt4gt LOC = M6

NET YBlt5gt LOC = N2

NET YBlt6gt LOC = U13

NET YBlt7gt LOC = V13

NET YClt0gt LOC = AA17

NET YClt1gt LOC = AB17

NET YClt2gt LOC = V12

NET YClt3gt LOC = U12

在光碟片中 RFFPGAVHDLDEMOBIT2V250 裡有VHDL與數位邏輯設計書本範例原始檔與合成檔

89

Page 67: RFFPGA 直流馬達實驗手冊juniortek.com.tw/program/manual/RF-DC-mal.pdf · em_demo模組 em_dcm 直流伺服馬達 dc電源 rffpga 系統的直流馬達實驗規劃 其中包括:

74 PD 控制模組

PD控制的模組方塊參見圖二十一所示其中比例控制的部份直接由增益 kp加以調整微分控制的部份則由誤差的差分經增益 kd的調整而得

Σ+

-

cmd

fdk

err out

Σ

pk

dk

Σ

+

+

+

-

old1minusZ

PD控制器的方塊圖

PD_controlasm程式列印 local cmd R0 IP gnd 輸入點位置命令(可忽略)

local fdk R1 IP gnd 輸入點位置回授(可忽略)

local out R2 OP 輸出點用以控制速度迴路

local kp R3 256 參數增益 kp10=256

local kd R4 0 參數增益 kd10=256

local err R5 0 內部變數

local old R6 0 內部變數

local gnd R7 0 無輸入時的短路點

data 8 模組變數區長度

initial 開機啟動程序

WR out0 WR old0 RET out=old=0

timer 即時控制程序

RD (cmd) SUB (fdk) PRTF WR err

MUL kp SFR 8 P=(cmd-fdk)kp256

RDS err SUBX old MUL kd SFR 8 D=(err-old)kd256

ADDS

WR out out=P+D

RET

程式中預設增益值的 10以整數值 256為基底因此使用 SFR 8的指令加以調

整另外在在計算微分項的程式部份用到 SUBX old的指令其詳細的暫存器動作如

下 參考 piDSP的指令說明SUBX指令將總共用到 3個時序參考錯誤 找不到參照

67

來源在時序 1時將原先 AX的資料拷貝一份到 HX中時序 2時正式執行減

法的動作所以 AX暫存器中的內容會變成 err-old時序 3時DSP會將存放在 HX暫存器中的內容拷貝一份到 old的記憶體中也就是經由 SUBX此一精簡指令將

同時完成計算差分所需要的相減與資料疊代的動作有效的利用 piDSP控制器 DSP核心的精簡指令將可以大幅提昇系統的計算速度

HX AXoldSUBXerr err

old

err

errerr olderr minus

1_err

errerr olderr minus err

1_err

1

2

3

SUBX的指令時序與暫存器變化

68

8附錄快速安裝說明

光纖網路通訊 FPGA 發展系統 (適用於 WIN-XP200098 系統)

快速安裝說明

26Pin 負載輸出入埠

雙電源︵5

12

伏︶輸入埠

單電源︵5

伏︶輸入埠

USB

光纖線輸

號 光纖線輸出埠

入 傳 埠

首先將光碟片 RFFPGA 目錄檔案拷貝在您工作硬碟裡面

第一次安裝時先將 USB 傳輸線接上電腦主機將電源供應器接上 FPGA 模組此時電

腦會出現安裝 USB-Serial 驅動程式選擇從清單安裝此驅動程式放置在光碟片

RFFPGA-USBdrive 選擇您目前安裝系統

可選擇 WIN-98WIN-MEWIN-2000WIN-XP 系統配合您現在工作電腦作業系統

69

注意一般電腦 USB 埠很多插口當您安裝驅動程式時是配合您當時插入之埠

下次如您插入不同接口埠時電腦會再次要求安裝驅動程式這是正常現象請再次安

裝驅動程式否則無法使用

FPLC 操作

首先進入 RFFPGA裡子目錄 testASM直接點選 fPLCexe 出現下面操作畫面(也可直接將

此檔案放置桌面直接點選)

(或者選擇 File 再執行 Setuphellip 選擇您要執行 CAI 檔)

70

進入下面操作畫面 首先使用滑鼠在 FPGA下載按鈕單擊動作使 FPGA變成 DSP晶片 實驗一至實驗五皆為使用 DSP組合語言設計程式其原始程式分別為 testASM1至testASM5可使用 texPad 開啟與編輯程式內容 實驗三與實驗五多有 IO控制動作 當選擇實驗三時出現下面畫面

71

eM_USB 模組

數字型 LED

0 1 2 34 5 6 78 9 A BC D E F

燈號型 LED

44 鍵盤

ADC0 ADC1 DAC0 DAC1

LED 選擇KEY 選擇

模 式 1

0123

注意操作畫面 3與 4 說明開關與按鍵選擇位置後選擇程式下載再按程式啟動如您

按下 0-3按鍵時燈號型 LED會有不同方向閃爍顯示程式停止時結束所有 IO控制動作再按回首頁選擇其他實驗 實驗四與實驗五

模式3

0 1 2 34 5 6 78 9 A BC D E F

按照上面開關選擇直接操作如果以上實驗皆能按照正常操作表示您光纖網路通訊

FPGA發展模組以能正常使用 注意 開機與關機動作順序如下

開機電腦啟動 --- eM_USB 模組電源接上 --- USB 接上電腦 ---

啟動 FPLC 軟體 --- 下載 FPGA 程式

關機關閉 FPLC 軟體 --- eM_USB 模組電源拔掉 --- 拔掉電腦 USB 接頭 ---關掉

電腦

如果以上順序有亂可能造成 USB 找不到驅動造成無法下載經過幾次測試還是

無法下載建議重新啟動電腦主機按照正確步驟操作

72

FPGA 下載操作

進入 FPLC 操作系統按照下列步驟選擇節點模組與下載 bit FPGA 檔案

在 VHDLDEMO 子目錄下您可以選擇您目前 FPGA 種類型號在此型號下我們已將 VHDL

與數位邏輯設計課本範例全部放於此處

73

光纖網路連線 FPGA 下載操作

首先利用光纖線將 eM_USB0 模組光纖輸出埠接至 eM_USB1 模組光纖輸入埠以此

類推最後再將最後 eM_USBN 模組光纖輸出埠接至 eM_USB0 模組光纖輸入埠配置

如附圖方式

個人電腦(Windows) eM_USB模組

0USB

eM_USB模組1

光纖網路

eM_USB模組2

eM_USB模組N

配置完成後進入 FPLC 系統首先必須先將 Node00 下載在 testASM 子目錄裡

piDSPv0bit 檔讓 eM_USB0 模組 FPGA 具備 DSP 功能才能執行光纖網路通訊

操作如下

此時您就可以選擇分別下載至各模組 FPGA 檔 bit

74

安裝 FPLC 注意事項

當您進入 FPLC 時

按 FILE 選擇 programhellip 選擇檔案為 exp_dcmplc 出現下面畫面

正常顯示畫面為

75

DOS 環境操作

在 PC 端的操作是在 Windows 環境中的 DOS 視窗中執行指令範例如下

eFPGA progNETbit 下載 FPGA電路至網路節點0(即 USB節點)中 eFPGA testLEDbit 1 下載 FPGA電路至網路節點1中

對於單一節點的控制程序如下

1將 eM_USB模組連結個人電腦的 USB端 2eM_USB模組開機 3執行下載指令即可 eFPGA xxxxbit 4若要更改 FPGA電路只要重新執行下載指令即可

對於多個網路節點的控制程序如下

1第一組 eM_USB模組連結個人電腦的 USB端再以光纖網路依序其他各節點 2連接 USB界面者為模組0從光纖發射端連接出去的模組為1依此類推 3將所有 eM_USB模組開機 4執行下載指令如下 eFPGA progNETbit 模組0必須先下載指定的 FPGA電路 eFPGA xxxxbit 1 再依序下載其他網路模組的 FPGA電路 eFPGA yyyybit 2 eFPGA zzzzbit 最後再重新下載模組0的 FPGA電路 5換句話說模組0必須先執行 progNETbit讓光纖網路接受 FPGA控制後才能透過光纖網路下載至其他節點等全部網路節點下載完畢後再將模組0的 FPGA重新下載讓模組0也可自由執行任意的 FPGA電路

6若要更改某一個網路節點中的 FPGA電路只要重新執行下述指令 eFPGA progNETbit 模組0必須先下載指定的 FPGA電路 eFPGA yyyybit 2 下載指定網路模組的 FPGA電路 eFPGA zzzz bit 最後再重新下載模組0的 FPGA電路 換句話說除非模組0中的 FPGA已經包括光纖網路管理電路否則一定要先在

模組0中下載網路管理電路後才能下載指定網路節點的 FPGA電路

76

光纖網路通訊 FPGA 發展系統

系統配置

光纖網路通訊 FPGA 發展系統的系統配置圖如下

個人電腦(Windows) eM_USB模組

0USB

eM_USB模組1

光纖網路

eM_USB模組2

eM_USB模組N

其中

1基本模組為 eM_USB模組可用 USB界面和個人電腦連線並提供 USB對光纖網路的轉換功能使得個人電腦可以獨立控制光纖網路中的每個網路節點

2eM_USB模組也可以作為光纖網路中的網路節點透過光纖網路而接受個人電腦的

監控 3就個人電腦而言不論是 USB界面直接連結或是以光纖網路間接連結的 eM_USB模組都是可以直接監控的網路節點最多可以同時控制一個 USB節點和 30個網路節點

4對於每一個網路節點個人電腦都可執行 eM_USB模組中 FPGA的電路下載工作並在適當的 FPGA電路配合下可執行 eM_USB模組中 FPGA內部電路的讀寫控制 5透過適當的 FPGA電路設計各網路節點都可透過光纖網路和其他任何網路節點

作同步通訊執行 FPGA內部記憶體的資料交換資料交換頻率可達 1KHz以上

77

網路模組配置

每個網路模組的標準配置圖如下

eM_USB模組光纖網路

USB eM_FPGA卡

eM_DEMO模組

eM_EXP實驗模組

DC電源

其中

1網路模組以 eM_USB模組為主提供基本的 USB界面和光纖網路連線 2eM_USB模組中的 FPGACPLD採用插卡型式可選擇不同的 eM_FPGA卡包括

eM_2V1K卡可選用 Virtex系列的 XC2V250和 XC2V1000 eM_3S1K卡可選用 Spartan3系列的 XC3S400XC3S1000和 XC3S1500 eM_3S50卡可選用 Spartan3系列的 XC3S50XC3S200和 XC3S400 eM_95XL卡可選用 9500XL系列的 XC95144XL和 XC95288XL 3eM_USB模組中的對外連線有兩種一種是 26P接頭用以連接既有的各種實驗模

組另一種是兩組 50P接頭將 FPGA中各接腳引出用以連接專題實驗 4eM_DEMO模組就是插上 50P接頭的教學模組其中包括 LED 數字顯示和 44鍵盤也具備兩組的 ADC和兩組的 DAC接頭提供類比訊號的測試工具

常用的實驗組合包括

1精簡組合包括(eM_USB+eM_FPGA)提供基本的網路節點適用於專題實驗 2標準組合包括(eM_USB+eM_FPGA+eM_DEMO)提供基礎 FPGA設計的教學實驗

3實驗組合包括(eM_USB+eM_FPGA+eM_DEMO+eM_EXP)提供進階的 FPGA實驗可依需求選用不同的實驗模組

78

eM_USB 模組

eM_USB 模組的電路配置圖如下

TxRx

DCPower

USB

JP2

JP3

光纖界面

外加電源

PC連線

JP1

eM_FPGA模組

FT232 CPLD FlashROM

SRAM

10cm

6cm

JP4

其中

1對外的連線接頭包括 DC電源 可選擇單電源(5V)或是多電源(5V+12V-12V)兩種 USB界面 直接連接個人電腦 光纖界面連接光纖網路 2實驗界面包括 JP1負責內部 CPLD的電路下載 JP2JP3兩組 50P的擴張用接頭 JP4 標準 26P接頭用以連接各種實驗模組 3內部的電路配置包括 A以 SO-DIMM接頭連接各種 eM_FPGA卡 B內附 EEPROMFlashROM和 SRAM提供 FPGA作應用測試 C以一顆 FT232BM作為 USB界面解碼而以一顆 CPLD作為光纖網路解碼 D提供各種 eM_FPGA卡的電路下載功能 4內附五顆 LED由上而下依序為 usbLED指示 USB界面的讀寫狀態 tstLED可由 FPGA電路自行定義 stsLED可由 FPGA電路自行定義 RxLED 可由 FPGA電路自行定義 TxLED 可由 FPGA電路自行定義

79

外部接腳定義

外部接頭的接點順序圖示如下

上視圖

JP11 9 JP4

126225

JP31

50249

JP21

50249

而各接頭的接點定義如下

JP1 JP4 JP2 JP3 1+33V 1+12V 2+12V 1 GND 2 GND 1 GND 2 GND 2GND 3 ADC 4 DAC 3POWER 4ALARM 3 +5V 4 +5V 3nc 5 yPB2 6 yPB3 5RxNET 6TxNET 5+12V 6+12V 4TCK 7 yPB1 6 yPB4 7RxUSB 6TxUSB 7-12V 6-12V 5nc 9 yPB0 10yPB5 9RxCAN 10TxCAN 9 ADC 10 DAC 6TDO 11yPB6 12yPB7 11P0D0 12P0D1 11P1D0 12P1D1 7TDI 13yGND 14yPC3 13P0D2 14P0D3 13P1D2 14P1D3 8nc 15yPC2 16yPC1 15P0D4 16P0D5 15P1D4 16P1D5 9TMS 17yPC0 18yPA0 17P0D6 18P0D7 17P1D6 18P1D7 19yPA1 20yPA2 19P0D8 20P0D9 19P1D8 20P1D9 21yPA3 22GND 21P0D10 22P0D11 21P1D10 22P1D11 23GND 24+5V 23P0D12 24P0D13 23P1D12 24P1D13 25+5V 26nc 25P0D14 26P0D15 25P1D14 26P1D15 27P2D0 28P2D1 27PxA0 28PxA1 29P2D2 30P2D3 29PxA2 30PxA3 31P2D4 32P2D5 31PxA4 32PxA5 33P2D6 34P2D7 33PxA6 34PxA7 35P2D8 36P2D9 35PxB0 36PxB1 37P2D10 38P2D11 37PxB2 38PxB3 39P2D12 40P2D13 39PxB4 40PxB5 41P2D14 42P2D15 41PxB6 42PxB7 43ADC0 44ADC1 43PxC0 44PxC1 45ADC2 46ADC3 45PxC2 46PxC3 47ADC4 48ADC5 47PxC4 48PxC5 49DAC0 50DAC1 49PxC6 50PxC7

80

eM_FPGA 模組

在各種 eM_FPGA 模組中FPGA 對外電路的標準配置圖如下

24576MHz

FlashROM

26PSRAM

EEPROM

mD[8]

yPA[4]

FPGACPLD

mA[19]mRDmWRmCSeeCKeeCSeeDIeeDO

光纖界面 RxNETTxNET

USB 界面 RxUSBTxUSBCLK24MPOWERALARM

LED

tstLEDstsLEDRxLEDTxLED

yPB[8]yPC[4]

ADCDAC

ADC[8]

實驗模組

ADC[2]

DAC[2]

xPA[4]

xPB[8]

xPC[4]

基礎實驗

其中

1FPGACPLD可以選擇下述幾種 XC2V250XC2V1000 採用 eM_2V1K模組其中 FPGA為 FG456包裝 XC3S400XC3S1000XC3S1500採用 eM_3S1K模組其中 FPGA為 FG456包裝 XC3S400XC3S1000XC3S1500採用 eM_3S1K模組其中 FPGA為 FG456包裝 XC3S50XC3S200XC3S400 採用 eM_3S50模組其中 FPGA為 TQ144包裝 XC95144XLXC95288XL 採用 eM_95XL模組其中 CPLD為 TQ144包裝 2採用 FG456包裝者可以控制所有的 IO界面 3採用 TQ144包裝者只是不能控制 RAM和 FlashROM而可以控制其他所有的界面 4所有 FPGA模組都可自由選擇由 USB界面或是由光纖界面下載電路但是 CPLD模組只能固定由 USB界面下載電路

5所有 FPGACPLD模組都可透過 26P接頭連接既有的各種實驗模組

81

FPGA 接腳對照表

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

mD0 XD6 mD0 A17 C13 -- -- mD1 XD7 mD1 B17 D12 -- -- mD2 XD8 mD2 C17 D11 -- -- mD3 XD9 mD3 D17 C11 -- -- mD4 XD10 mD4 E17 D10 -- -- mD5 XD11 mD5 E16 C10 -- -- mD6 XD12 mD6 E14 D9 -- -- mD7 XD13 mD7 E13 D7 -- -- mA0 XD14 mA0 D13 C7 -- -- mA1 XD15 mA1 C13 D6 -- -- mA2 XA0 mA2 V5 C3 -- -- mA3 XA1 mA3 U5 C4 -- -- mA4 XA2 mA4 Y2 D3 -- -- mA5 XA3 mA5 Y1 D4 -- -- mA6 XA4 mA6 V4 E3 -- -- mA7 XA5 mA7 V3 E4 -- -- mA8 XA6 mA8 W2 F3 -- -- mA9 XA7 mA9 W1 F4 -- -- mA10 XA8 mA10 T2 G6 -- -- mA11 XA9 mA11 T1 K3 -- -- mA12 XA10 mA12 R4 K10 -- -- mA13 XA11 mA13 R3 L3 -- -- mA14 XA12 mA14 R2 L4 -- -- mRD XRD mRD R1 D5 -- -- mWR XWR mWR P6 C6 -- --

POWER P0A0 POWER B4 B20 P1 P5 ALARM P0A1 ALARM A4 A19 P2 P6 RxNET P0A2 RxNET C4 B19 P4 P7 TxNET P0A3 TxNET C5 A18 P5 P9 RxUSB P0B0 RxUSB B5 A15 P6 P10 TxUSB P0B1 TxUSB A5 B15 P7 P11 RxCAN P0B2 RxCAN D6 A14 P8 P12 RxCAN P0B3 TxCAN C6 B14 P10 P13

CLK24M CLK24M CLK24M E12 B12 P124 P38

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

PWM0H P3A0 P0D0 E6 A8 P21 P23 PWM0L P3A1 P0D1 E5 B8 P23 P24 PWM1H P3A2 P0D2 C2 B6 P24 P25 PWM1L P3A3 P0D3 C1 A5 P25 P26 PWM2H P3A4 P0D4 D2 B5 P26 P27

82

PWM2L P3A5 P0D5 D1 A4 P27 P28 PWMenb P3A6 P0D6 E4 B4 P28 P30 PHT1Z P3A7 P0D7 E3 A3 P30 P31 PHT1A P3B0 P0D8 G2 C1 P31 P32 PHT1B P3B1 P0D9 G1 C2 P32 P33 PHT0A P3B2 P0D10 H5 D1 P33 P34 PHT0B P3B3 P0D11 J6 D2 P35 P35 AMP0 P3B4 P0D12 H4 E1 P36 P39 AMP1 P3B5 P0D13 H3 E2 P40 P40 AMP2 P3B6 P0D14 H2 F2 P41 P41 AMP3 P3B7 P0D15 H1 G1 P44 P43 eeSK P0C3 P1D0 C10 B9 P20 P22 eeCS P0C2 P1D1 D10 A9 P18 P21 eeDI P0C1 P1D2 F10 B10 P17 P20 eeDO P0C0 P1D3 E10 B11 P15 P19 ssCK P0B7 P1D4 E8 A11 P14 P17 ssCS P0B6 P1D5 E7 A12 P13 P16 ssDI P0B5 P1D6 A6 B13 P12 P15 ssDO P0B4 P1D7 B6 A13 P11 P14

ppCLK P3C0 P1D8 K4 G2 P46 P44 ppDIN P3C1 P1D9 K3 K1 P47 P45 TxD P3C2 P1D10 K2 K2 P50 P46 RxD P3C3 P1D11 K1 L1 P51 P48

tstLED P3C4 P1D12 L5 L2 P52 P49 stsLED P3C5 P1D13 L4 M1 P53 P50 RxLED P3C6 P1D14 L3 M2 P55 P51 TxLED P3C7 P1D15 L2 N1 P56 P52

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

xPA0 P2A0 P2D0 AA3 N2 P59 P53 xPA1 P2A1 P2D1 Y4 T1 P60 P54 xPA2 P2A2 P2D2 AA4 T2 P63 P56 xPA3 P2A3 P2D3 AB4 U2 P68 P57 xPC0 P2A4 P2D4 W5 V1 P69 P58 xPC1 P2A5 P2D5 Y5 V2 P70 P59 xPC2 P2A6 P2D6 AA5 W1 P73 P60 xPC3 P2A7 P2D7 AB5 W2 P74 P61

-- P2B0 P2D8 V6 Y1 P76 P64 -- P2B1 P2D9 V7 Y2 P77 P66 -- P2B2 P2D10 W6 AA3 P78 P68

mCS P2B3 P2D11 Y6 AB4 P79 P69 mA15 P2B4 P2D12 V9 AA4 P80 P70 mA16 P2B5 P2D13 V10 AB5 P82 P71 mA17 P2B6 P2D14 W10 AA5 P83 P74 mA18 P2B7 P2D15 Y10 AA6 P84 P75 CS0 P2C0 ADC0 AA10 AB8 P85 P76

83

SDIN0 P2C1 ADC1 AB10 AA8 P86 P77 CS1 P2C2 ADC2 U10 AB9 P87 P78

SDIN1 P2C3 ADC3 U11 AA9 P89 P79 SCLK P2C4 ADC4 V11 AB10 P90 P80 CS2 P2C5 ADC5 W11 AA10 P92 P81

SDOUT P2C6 ADC6 Y11 AB11 P93 P82 LDAC P2C7 ADC7 AA11 AA11 P95 P83

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

xPB0 P1A0 PxA0 M1 M3 P135 P85 xPB1 P1A1 PxA1 M2 M4 P132 P86 yPB2 P1A2 PxA2 M3 N3 P131 P87 yPB3 P1A3 PxA3 M4 N4 P130 P88 yPB1 P1A4 PxA4 M5 T4 P129 P91 yPB4 P1A5 PxA5 M6 T5 P128 P92 yPB0 P1A6 PxA6 N1 U3 P127 P93 yPB5 P1A7 PxA7 N2 U4 P125 P94 yPB6 P1B0 PxB0 U13 V3 P119 P95 yPB7 P1B1 PxB1 V13 V4 P118 P96 xPB2 P1B2 PxB2 W13 W3 P116 P97 xPB3 P1B3 PxB3 Y13 W4 P113 P98 xPB4 P1B4 PxB4 AA13 Y3 P112 P100 xPB5 P1B5 PxB5 AB13 Y4 P96 P101 yPC3 P1B6 PxB6 U12 Y5 P97 P102 yPC2 P1B7 PxB7 V12 W5 P98 P103 yPC1 P1C7 PxC0 AB17 W11 P108 P113 yPC0 P1C6 PxC1 AA17 Y11 P107 P112 yPA0 P1C5 PxC2 Y17 W10 P105 P111 yPA1 P1C4 PxC3 W17 Y10 P104 P110 yPA2 P1C3 PxC4 AB18 W9 P103 P107 yPA3 P1C2 PxC5 AA18 W8 P102 P106 xPB6 P1C1 PxC6 Y18 W6 P100 P105 xPB7 P1C0 PxC7 W18 Y6 P99 P104

84

eM_DEMO 模組

eM_DEMO 模組的電路配置圖如下

eM_USB 模組

數字型 LED

0 1 2 34 5 6 78 9 A BC D E F

燈號型 LED

44 鍵盤

ADC0 ADC1 DAC0 DAC1

LED 選擇KEY 選擇

其中

1eM_DEMO模組的基本功能包括 A將 xPAxPBxPC等 16個 IO訊號引出控制 LED和鍵盤電路 B將 ADDA訊號引出並放大成+-10V的工作範圍 2LED和鍵盤可以選擇三種模式由 LED和 KEY 兩組開關作選擇圖示如下

模式1

0123

模式2 模式3

0 1 2 34 5 6 78 9 A BC D E F

0123

3模式14鍵輸入並搭配 16點的 LED燈號顯示其中 16點 LED分別對映到 xPA[0~3]xPB[0~7]和 xPC[0~3] 4組按鍵分別對映到 xPC[0~3] 4模式24鍵輸入並搭配四個 7段式數字顯示其中 數字顯示由 xPA[0~3]作數字掃瞄而由 xPB[0~7]作 7段式 LED控制 4組按鍵 分別對映到 xPC[0~3] 5模式316鍵輸入並搭配四個 7段式數字顯示其中 數字顯示由 xPA[0~3]作數字掃瞄而由 xPB[0~7]作 7段式 LED控制 16組按鍵由 xPA[0~3]作鍵盤掃瞄而由 xPC[0~3]作鍵盤讀取 6根據VHDL與數位邏輯設計的章節其中 第 1章至 10章的實驗採用模式1而 第 11章實驗採用模式2而 第 12章之後的實驗都採用模式3

85

FPGA UCF 定義

eM_3S1K 模組

NET CLK LOC = B12

NET XAlt0gt LOC = N2

NET XAlt1gt LOC = T1

NET XAlt2gt LOC = T2

NET XAlt3gt LOC = U2

NET XBlt0gt LOC = M3

NET XBlt1gt LOC = M4

NET XBlt2gt LOC = W3

NET XBlt3gt LOC = W4

NET XBlt4gt LOC = Y3

NET XBlt5gt LOC = Y4

NET XBlt6gt LOC = W6

NET XBlt7gt LOC = Y6

NET XClt0gt LOC = V1

NET XClt1gt LOC = V2

NET XClt2gt LOC = W1

NET XClt3gt LOC = W2

NET YAlt0gt LOC = W10

JP4 接頭

NET YAlt1gt LOC = Y10

NET YAlt2gt LOC = W9

NET YAlt3gt LOC = W8

NET YBlt0gt LOC = U3

NET YBlt1gt LOC = T4

NET YBlt2gt LOC = N3

NET YBlt3gt LOC = N4

NET YBlt4gt LOC = T5

NET YBlt5gt LOC = U4

NET YBlt6gt LOC = V3

NET YBlt7gt LOC = V4

NET YClt0gt LOC = Y11

NET YClt1gt LOC = W11

NET YClt2gt LOC = W5

NET YClt3gt LOC = Y5

在光碟片中 RFFPGAVHDLDEMOBIT3S1K 裡有 VHDL 與數位邏輯設計書本範例原始檔與合成檔

86

eM_3S50 模組

NET CLK LOC = P124

NET XAlt0gt LOC = P59

NET XAlt1gt LOC = P60

NET XAlt2gt LOC = P63

NET XAlt3gt LOC = P68

NET XBlt0gt LOC = P135

NET XBlt1gt LOC = P132

NET XBlt2gt LOC = P116

NET XBlt3gt LOC = P113

NET XBlt4gt LOC = P112

NET XBlt5gt LOC = P96

NET XBlt6gt LOC = P100

NET XBlt7gt LOC = P99

NET XClt0gt LOC = P69

NET XClt1gt LOC = P70

NET XClt2gt LOC = P73

NET XClt3gt LOC = P74

NET YAlt0gt LOC = P105

JP4 接頭

NET YAlt1gt LOC = P104

NET YAlt2gt LOC = P103

NET YAlt3gt LOC = P102

NET YBlt0gt LOC = P127

NET YBlt1gt LOC = P129

NET YBlt2gt LOC = P131

NET YBlt3gt LOC = P130

NET YBlt4gt LOC = P128

NET YBlt5gt LOC = P125

NET YBlt6gt LOC = P119

NET YBlt7gt LOC = P118

NET YClt0gt LOC = P107

NET YClt1gt LOC = P108

NET YClt2gt LOC = P98

NET YClt3gt LOC = P97

在光碟片中 RFFPGAVHDLDEMOBIT3S200 裡有VHDL與數位邏輯設計書本範例原始檔與合成檔

87

eM_95XL 模組

NET CLK LOC = SPIN38

NET XAlt0gt LOC = SPIN53

NET XAlt1gt LOC = SPIN54

NET XAlt2gt LOC = SPIN56

NET XAlt3gt LOC = SPIN57

NET XBlt0gt LOC = SPIN85

NET XBlt1gt LOC = SPIN86

NET XBlt2gt LOC = SPIN97

NET XBlt3gt LOC = SPIN98

NET XBlt4gt LOC = SPIN100

NET XBlt5gt LOC = SPIN101

NET XBlt6gt LOC = SPIN105

NET XBlt7gt LOC = SPIN104

NET XClt0gt LOC = SPIN58

NET XClt1gt LOC = SPIN59

NET XClt2gt LOC = SPIN60

NET XClt3gt LOC = SPIN61

NET YAlt0gt LOC = SPIN111

JP4 接頭

NET YAlt1gt LOC = SPIN110

NET YAlt2gt LOC = SPIN107

NET YAlt3gt LOC = SPIN106

NET YBlt0gt LOC = SPIN93

NET YBlt1gt LOC = SPIN91

NET YBlt2gt LOC = SPIN87

NET YBlt3gt LOC = SPIN88

NET YBlt4gt LOC = SPIN92

NET YBlt5gt LOC = SPIN94

NET YBlt6gt LOC = SPIN95

NET YBlt7gt LOC = SPIN96

NET YClt0gt LOC = SPIN112

NET YClt1gt LOC = SPIN113

NET YClt2gt LOC = SPIN103

NET YClt3gt LOC = SPIN102

在光碟片中 RFFPGAVHDLDEMOSVF95288XL 裡有VHDL與數位邏輯設計書本範例原始檔與合成

檔案

88

eM_FPGA 模組

NET CLK LOC = E12

NET XAlt0gt LOC = AA3

NET XAlt1gt LOC = Y4

NET XAlt2gt LOC = AA4

NET XAlt3gt LOC = AB4

NET XBlt0gt LOC = M1

NET XBlt1gt LOC = M2

NET XBlt2gt LOC = W13

NET XBlt3gt LOC = Y13

NET XBlt4gt LOC = AA13

NET XBlt5gt LOC = AB13

NET XBlt6gt LOC = Y18

NET XBlt7gt LOC = W18

NET XClt0gt LOC = W5

NET XClt1gt LOC = Y5

NET XClt2gt LOC = AA5

NET XClt3gt LOC = AB5

NET YAlt0gt LOC = Y17

JP4 接頭

NET YAlt1gt LOC = W17

NET YAlt2gt LOC = AB18

NET YAlt3gt LOC = AA18

NET YBlt0gt LOC = N1

NET YBlt1gt LOC = M5

NET YBlt2gt LOC = M3

NET YBlt3gt LOC = M4

NET YBlt4gt LOC = M6

NET YBlt5gt LOC = N2

NET YBlt6gt LOC = U13

NET YBlt7gt LOC = V13

NET YClt0gt LOC = AA17

NET YClt1gt LOC = AB17

NET YClt2gt LOC = V12

NET YClt3gt LOC = U12

在光碟片中 RFFPGAVHDLDEMOBIT2V250 裡有VHDL與數位邏輯設計書本範例原始檔與合成檔

89

Page 68: RFFPGA 直流馬達實驗手冊juniortek.com.tw/program/manual/RF-DC-mal.pdf · em_demo模組 em_dcm 直流伺服馬達 dc電源 rffpga 系統的直流馬達實驗規劃 其中包括:

來源在時序 1時將原先 AX的資料拷貝一份到 HX中時序 2時正式執行減

法的動作所以 AX暫存器中的內容會變成 err-old時序 3時DSP會將存放在 HX暫存器中的內容拷貝一份到 old的記憶體中也就是經由 SUBX此一精簡指令將

同時完成計算差分所需要的相減與資料疊代的動作有效的利用 piDSP控制器 DSP核心的精簡指令將可以大幅提昇系統的計算速度

HX AXoldSUBXerr err

old

err

errerr olderr minus

1_err

errerr olderr minus err

1_err

1

2

3

SUBX的指令時序與暫存器變化

68

8附錄快速安裝說明

光纖網路通訊 FPGA 發展系統 (適用於 WIN-XP200098 系統)

快速安裝說明

26Pin 負載輸出入埠

雙電源︵5

12

伏︶輸入埠

單電源︵5

伏︶輸入埠

USB

光纖線輸

號 光纖線輸出埠

入 傳 埠

首先將光碟片 RFFPGA 目錄檔案拷貝在您工作硬碟裡面

第一次安裝時先將 USB 傳輸線接上電腦主機將電源供應器接上 FPGA 模組此時電

腦會出現安裝 USB-Serial 驅動程式選擇從清單安裝此驅動程式放置在光碟片

RFFPGA-USBdrive 選擇您目前安裝系統

可選擇 WIN-98WIN-MEWIN-2000WIN-XP 系統配合您現在工作電腦作業系統

69

注意一般電腦 USB 埠很多插口當您安裝驅動程式時是配合您當時插入之埠

下次如您插入不同接口埠時電腦會再次要求安裝驅動程式這是正常現象請再次安

裝驅動程式否則無法使用

FPLC 操作

首先進入 RFFPGA裡子目錄 testASM直接點選 fPLCexe 出現下面操作畫面(也可直接將

此檔案放置桌面直接點選)

(或者選擇 File 再執行 Setuphellip 選擇您要執行 CAI 檔)

70

進入下面操作畫面 首先使用滑鼠在 FPGA下載按鈕單擊動作使 FPGA變成 DSP晶片 實驗一至實驗五皆為使用 DSP組合語言設計程式其原始程式分別為 testASM1至testASM5可使用 texPad 開啟與編輯程式內容 實驗三與實驗五多有 IO控制動作 當選擇實驗三時出現下面畫面

71

eM_USB 模組

數字型 LED

0 1 2 34 5 6 78 9 A BC D E F

燈號型 LED

44 鍵盤

ADC0 ADC1 DAC0 DAC1

LED 選擇KEY 選擇

模 式 1

0123

注意操作畫面 3與 4 說明開關與按鍵選擇位置後選擇程式下載再按程式啟動如您

按下 0-3按鍵時燈號型 LED會有不同方向閃爍顯示程式停止時結束所有 IO控制動作再按回首頁選擇其他實驗 實驗四與實驗五

模式3

0 1 2 34 5 6 78 9 A BC D E F

按照上面開關選擇直接操作如果以上實驗皆能按照正常操作表示您光纖網路通訊

FPGA發展模組以能正常使用 注意 開機與關機動作順序如下

開機電腦啟動 --- eM_USB 模組電源接上 --- USB 接上電腦 ---

啟動 FPLC 軟體 --- 下載 FPGA 程式

關機關閉 FPLC 軟體 --- eM_USB 模組電源拔掉 --- 拔掉電腦 USB 接頭 ---關掉

電腦

如果以上順序有亂可能造成 USB 找不到驅動造成無法下載經過幾次測試還是

無法下載建議重新啟動電腦主機按照正確步驟操作

72

FPGA 下載操作

進入 FPLC 操作系統按照下列步驟選擇節點模組與下載 bit FPGA 檔案

在 VHDLDEMO 子目錄下您可以選擇您目前 FPGA 種類型號在此型號下我們已將 VHDL

與數位邏輯設計課本範例全部放於此處

73

光纖網路連線 FPGA 下載操作

首先利用光纖線將 eM_USB0 模組光纖輸出埠接至 eM_USB1 模組光纖輸入埠以此

類推最後再將最後 eM_USBN 模組光纖輸出埠接至 eM_USB0 模組光纖輸入埠配置

如附圖方式

個人電腦(Windows) eM_USB模組

0USB

eM_USB模組1

光纖網路

eM_USB模組2

eM_USB模組N

配置完成後進入 FPLC 系統首先必須先將 Node00 下載在 testASM 子目錄裡

piDSPv0bit 檔讓 eM_USB0 模組 FPGA 具備 DSP 功能才能執行光纖網路通訊

操作如下

此時您就可以選擇分別下載至各模組 FPGA 檔 bit

74

安裝 FPLC 注意事項

當您進入 FPLC 時

按 FILE 選擇 programhellip 選擇檔案為 exp_dcmplc 出現下面畫面

正常顯示畫面為

75

DOS 環境操作

在 PC 端的操作是在 Windows 環境中的 DOS 視窗中執行指令範例如下

eFPGA progNETbit 下載 FPGA電路至網路節點0(即 USB節點)中 eFPGA testLEDbit 1 下載 FPGA電路至網路節點1中

對於單一節點的控制程序如下

1將 eM_USB模組連結個人電腦的 USB端 2eM_USB模組開機 3執行下載指令即可 eFPGA xxxxbit 4若要更改 FPGA電路只要重新執行下載指令即可

對於多個網路節點的控制程序如下

1第一組 eM_USB模組連結個人電腦的 USB端再以光纖網路依序其他各節點 2連接 USB界面者為模組0從光纖發射端連接出去的模組為1依此類推 3將所有 eM_USB模組開機 4執行下載指令如下 eFPGA progNETbit 模組0必須先下載指定的 FPGA電路 eFPGA xxxxbit 1 再依序下載其他網路模組的 FPGA電路 eFPGA yyyybit 2 eFPGA zzzzbit 最後再重新下載模組0的 FPGA電路 5換句話說模組0必須先執行 progNETbit讓光纖網路接受 FPGA控制後才能透過光纖網路下載至其他節點等全部網路節點下載完畢後再將模組0的 FPGA重新下載讓模組0也可自由執行任意的 FPGA電路

6若要更改某一個網路節點中的 FPGA電路只要重新執行下述指令 eFPGA progNETbit 模組0必須先下載指定的 FPGA電路 eFPGA yyyybit 2 下載指定網路模組的 FPGA電路 eFPGA zzzz bit 最後再重新下載模組0的 FPGA電路 換句話說除非模組0中的 FPGA已經包括光纖網路管理電路否則一定要先在

模組0中下載網路管理電路後才能下載指定網路節點的 FPGA電路

76

光纖網路通訊 FPGA 發展系統

系統配置

光纖網路通訊 FPGA 發展系統的系統配置圖如下

個人電腦(Windows) eM_USB模組

0USB

eM_USB模組1

光纖網路

eM_USB模組2

eM_USB模組N

其中

1基本模組為 eM_USB模組可用 USB界面和個人電腦連線並提供 USB對光纖網路的轉換功能使得個人電腦可以獨立控制光纖網路中的每個網路節點

2eM_USB模組也可以作為光纖網路中的網路節點透過光纖網路而接受個人電腦的

監控 3就個人電腦而言不論是 USB界面直接連結或是以光纖網路間接連結的 eM_USB模組都是可以直接監控的網路節點最多可以同時控制一個 USB節點和 30個網路節點

4對於每一個網路節點個人電腦都可執行 eM_USB模組中 FPGA的電路下載工作並在適當的 FPGA電路配合下可執行 eM_USB模組中 FPGA內部電路的讀寫控制 5透過適當的 FPGA電路設計各網路節點都可透過光纖網路和其他任何網路節點

作同步通訊執行 FPGA內部記憶體的資料交換資料交換頻率可達 1KHz以上

77

網路模組配置

每個網路模組的標準配置圖如下

eM_USB模組光纖網路

USB eM_FPGA卡

eM_DEMO模組

eM_EXP實驗模組

DC電源

其中

1網路模組以 eM_USB模組為主提供基本的 USB界面和光纖網路連線 2eM_USB模組中的 FPGACPLD採用插卡型式可選擇不同的 eM_FPGA卡包括

eM_2V1K卡可選用 Virtex系列的 XC2V250和 XC2V1000 eM_3S1K卡可選用 Spartan3系列的 XC3S400XC3S1000和 XC3S1500 eM_3S50卡可選用 Spartan3系列的 XC3S50XC3S200和 XC3S400 eM_95XL卡可選用 9500XL系列的 XC95144XL和 XC95288XL 3eM_USB模組中的對外連線有兩種一種是 26P接頭用以連接既有的各種實驗模

組另一種是兩組 50P接頭將 FPGA中各接腳引出用以連接專題實驗 4eM_DEMO模組就是插上 50P接頭的教學模組其中包括 LED 數字顯示和 44鍵盤也具備兩組的 ADC和兩組的 DAC接頭提供類比訊號的測試工具

常用的實驗組合包括

1精簡組合包括(eM_USB+eM_FPGA)提供基本的網路節點適用於專題實驗 2標準組合包括(eM_USB+eM_FPGA+eM_DEMO)提供基礎 FPGA設計的教學實驗

3實驗組合包括(eM_USB+eM_FPGA+eM_DEMO+eM_EXP)提供進階的 FPGA實驗可依需求選用不同的實驗模組

78

eM_USB 模組

eM_USB 模組的電路配置圖如下

TxRx

DCPower

USB

JP2

JP3

光纖界面

外加電源

PC連線

JP1

eM_FPGA模組

FT232 CPLD FlashROM

SRAM

10cm

6cm

JP4

其中

1對外的連線接頭包括 DC電源 可選擇單電源(5V)或是多電源(5V+12V-12V)兩種 USB界面 直接連接個人電腦 光纖界面連接光纖網路 2實驗界面包括 JP1負責內部 CPLD的電路下載 JP2JP3兩組 50P的擴張用接頭 JP4 標準 26P接頭用以連接各種實驗模組 3內部的電路配置包括 A以 SO-DIMM接頭連接各種 eM_FPGA卡 B內附 EEPROMFlashROM和 SRAM提供 FPGA作應用測試 C以一顆 FT232BM作為 USB界面解碼而以一顆 CPLD作為光纖網路解碼 D提供各種 eM_FPGA卡的電路下載功能 4內附五顆 LED由上而下依序為 usbLED指示 USB界面的讀寫狀態 tstLED可由 FPGA電路自行定義 stsLED可由 FPGA電路自行定義 RxLED 可由 FPGA電路自行定義 TxLED 可由 FPGA電路自行定義

79

外部接腳定義

外部接頭的接點順序圖示如下

上視圖

JP11 9 JP4

126225

JP31

50249

JP21

50249

而各接頭的接點定義如下

JP1 JP4 JP2 JP3 1+33V 1+12V 2+12V 1 GND 2 GND 1 GND 2 GND 2GND 3 ADC 4 DAC 3POWER 4ALARM 3 +5V 4 +5V 3nc 5 yPB2 6 yPB3 5RxNET 6TxNET 5+12V 6+12V 4TCK 7 yPB1 6 yPB4 7RxUSB 6TxUSB 7-12V 6-12V 5nc 9 yPB0 10yPB5 9RxCAN 10TxCAN 9 ADC 10 DAC 6TDO 11yPB6 12yPB7 11P0D0 12P0D1 11P1D0 12P1D1 7TDI 13yGND 14yPC3 13P0D2 14P0D3 13P1D2 14P1D3 8nc 15yPC2 16yPC1 15P0D4 16P0D5 15P1D4 16P1D5 9TMS 17yPC0 18yPA0 17P0D6 18P0D7 17P1D6 18P1D7 19yPA1 20yPA2 19P0D8 20P0D9 19P1D8 20P1D9 21yPA3 22GND 21P0D10 22P0D11 21P1D10 22P1D11 23GND 24+5V 23P0D12 24P0D13 23P1D12 24P1D13 25+5V 26nc 25P0D14 26P0D15 25P1D14 26P1D15 27P2D0 28P2D1 27PxA0 28PxA1 29P2D2 30P2D3 29PxA2 30PxA3 31P2D4 32P2D5 31PxA4 32PxA5 33P2D6 34P2D7 33PxA6 34PxA7 35P2D8 36P2D9 35PxB0 36PxB1 37P2D10 38P2D11 37PxB2 38PxB3 39P2D12 40P2D13 39PxB4 40PxB5 41P2D14 42P2D15 41PxB6 42PxB7 43ADC0 44ADC1 43PxC0 44PxC1 45ADC2 46ADC3 45PxC2 46PxC3 47ADC4 48ADC5 47PxC4 48PxC5 49DAC0 50DAC1 49PxC6 50PxC7

80

eM_FPGA 模組

在各種 eM_FPGA 模組中FPGA 對外電路的標準配置圖如下

24576MHz

FlashROM

26PSRAM

EEPROM

mD[8]

yPA[4]

FPGACPLD

mA[19]mRDmWRmCSeeCKeeCSeeDIeeDO

光纖界面 RxNETTxNET

USB 界面 RxUSBTxUSBCLK24MPOWERALARM

LED

tstLEDstsLEDRxLEDTxLED

yPB[8]yPC[4]

ADCDAC

ADC[8]

實驗模組

ADC[2]

DAC[2]

xPA[4]

xPB[8]

xPC[4]

基礎實驗

其中

1FPGACPLD可以選擇下述幾種 XC2V250XC2V1000 採用 eM_2V1K模組其中 FPGA為 FG456包裝 XC3S400XC3S1000XC3S1500採用 eM_3S1K模組其中 FPGA為 FG456包裝 XC3S400XC3S1000XC3S1500採用 eM_3S1K模組其中 FPGA為 FG456包裝 XC3S50XC3S200XC3S400 採用 eM_3S50模組其中 FPGA為 TQ144包裝 XC95144XLXC95288XL 採用 eM_95XL模組其中 CPLD為 TQ144包裝 2採用 FG456包裝者可以控制所有的 IO界面 3採用 TQ144包裝者只是不能控制 RAM和 FlashROM而可以控制其他所有的界面 4所有 FPGA模組都可自由選擇由 USB界面或是由光纖界面下載電路但是 CPLD模組只能固定由 USB界面下載電路

5所有 FPGACPLD模組都可透過 26P接頭連接既有的各種實驗模組

81

FPGA 接腳對照表

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

mD0 XD6 mD0 A17 C13 -- -- mD1 XD7 mD1 B17 D12 -- -- mD2 XD8 mD2 C17 D11 -- -- mD3 XD9 mD3 D17 C11 -- -- mD4 XD10 mD4 E17 D10 -- -- mD5 XD11 mD5 E16 C10 -- -- mD6 XD12 mD6 E14 D9 -- -- mD7 XD13 mD7 E13 D7 -- -- mA0 XD14 mA0 D13 C7 -- -- mA1 XD15 mA1 C13 D6 -- -- mA2 XA0 mA2 V5 C3 -- -- mA3 XA1 mA3 U5 C4 -- -- mA4 XA2 mA4 Y2 D3 -- -- mA5 XA3 mA5 Y1 D4 -- -- mA6 XA4 mA6 V4 E3 -- -- mA7 XA5 mA7 V3 E4 -- -- mA8 XA6 mA8 W2 F3 -- -- mA9 XA7 mA9 W1 F4 -- -- mA10 XA8 mA10 T2 G6 -- -- mA11 XA9 mA11 T1 K3 -- -- mA12 XA10 mA12 R4 K10 -- -- mA13 XA11 mA13 R3 L3 -- -- mA14 XA12 mA14 R2 L4 -- -- mRD XRD mRD R1 D5 -- -- mWR XWR mWR P6 C6 -- --

POWER P0A0 POWER B4 B20 P1 P5 ALARM P0A1 ALARM A4 A19 P2 P6 RxNET P0A2 RxNET C4 B19 P4 P7 TxNET P0A3 TxNET C5 A18 P5 P9 RxUSB P0B0 RxUSB B5 A15 P6 P10 TxUSB P0B1 TxUSB A5 B15 P7 P11 RxCAN P0B2 RxCAN D6 A14 P8 P12 RxCAN P0B3 TxCAN C6 B14 P10 P13

CLK24M CLK24M CLK24M E12 B12 P124 P38

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

PWM0H P3A0 P0D0 E6 A8 P21 P23 PWM0L P3A1 P0D1 E5 B8 P23 P24 PWM1H P3A2 P0D2 C2 B6 P24 P25 PWM1L P3A3 P0D3 C1 A5 P25 P26 PWM2H P3A4 P0D4 D2 B5 P26 P27

82

PWM2L P3A5 P0D5 D1 A4 P27 P28 PWMenb P3A6 P0D6 E4 B4 P28 P30 PHT1Z P3A7 P0D7 E3 A3 P30 P31 PHT1A P3B0 P0D8 G2 C1 P31 P32 PHT1B P3B1 P0D9 G1 C2 P32 P33 PHT0A P3B2 P0D10 H5 D1 P33 P34 PHT0B P3B3 P0D11 J6 D2 P35 P35 AMP0 P3B4 P0D12 H4 E1 P36 P39 AMP1 P3B5 P0D13 H3 E2 P40 P40 AMP2 P3B6 P0D14 H2 F2 P41 P41 AMP3 P3B7 P0D15 H1 G1 P44 P43 eeSK P0C3 P1D0 C10 B9 P20 P22 eeCS P0C2 P1D1 D10 A9 P18 P21 eeDI P0C1 P1D2 F10 B10 P17 P20 eeDO P0C0 P1D3 E10 B11 P15 P19 ssCK P0B7 P1D4 E8 A11 P14 P17 ssCS P0B6 P1D5 E7 A12 P13 P16 ssDI P0B5 P1D6 A6 B13 P12 P15 ssDO P0B4 P1D7 B6 A13 P11 P14

ppCLK P3C0 P1D8 K4 G2 P46 P44 ppDIN P3C1 P1D9 K3 K1 P47 P45 TxD P3C2 P1D10 K2 K2 P50 P46 RxD P3C3 P1D11 K1 L1 P51 P48

tstLED P3C4 P1D12 L5 L2 P52 P49 stsLED P3C5 P1D13 L4 M1 P53 P50 RxLED P3C6 P1D14 L3 M2 P55 P51 TxLED P3C7 P1D15 L2 N1 P56 P52

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

xPA0 P2A0 P2D0 AA3 N2 P59 P53 xPA1 P2A1 P2D1 Y4 T1 P60 P54 xPA2 P2A2 P2D2 AA4 T2 P63 P56 xPA3 P2A3 P2D3 AB4 U2 P68 P57 xPC0 P2A4 P2D4 W5 V1 P69 P58 xPC1 P2A5 P2D5 Y5 V2 P70 P59 xPC2 P2A6 P2D6 AA5 W1 P73 P60 xPC3 P2A7 P2D7 AB5 W2 P74 P61

-- P2B0 P2D8 V6 Y1 P76 P64 -- P2B1 P2D9 V7 Y2 P77 P66 -- P2B2 P2D10 W6 AA3 P78 P68

mCS P2B3 P2D11 Y6 AB4 P79 P69 mA15 P2B4 P2D12 V9 AA4 P80 P70 mA16 P2B5 P2D13 V10 AB5 P82 P71 mA17 P2B6 P2D14 W10 AA5 P83 P74 mA18 P2B7 P2D15 Y10 AA6 P84 P75 CS0 P2C0 ADC0 AA10 AB8 P85 P76

83

SDIN0 P2C1 ADC1 AB10 AA8 P86 P77 CS1 P2C2 ADC2 U10 AB9 P87 P78

SDIN1 P2C3 ADC3 U11 AA9 P89 P79 SCLK P2C4 ADC4 V11 AB10 P90 P80 CS2 P2C5 ADC5 W11 AA10 P92 P81

SDOUT P2C6 ADC6 Y11 AB11 P93 P82 LDAC P2C7 ADC7 AA11 AA11 P95 P83

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

xPB0 P1A0 PxA0 M1 M3 P135 P85 xPB1 P1A1 PxA1 M2 M4 P132 P86 yPB2 P1A2 PxA2 M3 N3 P131 P87 yPB3 P1A3 PxA3 M4 N4 P130 P88 yPB1 P1A4 PxA4 M5 T4 P129 P91 yPB4 P1A5 PxA5 M6 T5 P128 P92 yPB0 P1A6 PxA6 N1 U3 P127 P93 yPB5 P1A7 PxA7 N2 U4 P125 P94 yPB6 P1B0 PxB0 U13 V3 P119 P95 yPB7 P1B1 PxB1 V13 V4 P118 P96 xPB2 P1B2 PxB2 W13 W3 P116 P97 xPB3 P1B3 PxB3 Y13 W4 P113 P98 xPB4 P1B4 PxB4 AA13 Y3 P112 P100 xPB5 P1B5 PxB5 AB13 Y4 P96 P101 yPC3 P1B6 PxB6 U12 Y5 P97 P102 yPC2 P1B7 PxB7 V12 W5 P98 P103 yPC1 P1C7 PxC0 AB17 W11 P108 P113 yPC0 P1C6 PxC1 AA17 Y11 P107 P112 yPA0 P1C5 PxC2 Y17 W10 P105 P111 yPA1 P1C4 PxC3 W17 Y10 P104 P110 yPA2 P1C3 PxC4 AB18 W9 P103 P107 yPA3 P1C2 PxC5 AA18 W8 P102 P106 xPB6 P1C1 PxC6 Y18 W6 P100 P105 xPB7 P1C0 PxC7 W18 Y6 P99 P104

84

eM_DEMO 模組

eM_DEMO 模組的電路配置圖如下

eM_USB 模組

數字型 LED

0 1 2 34 5 6 78 9 A BC D E F

燈號型 LED

44 鍵盤

ADC0 ADC1 DAC0 DAC1

LED 選擇KEY 選擇

其中

1eM_DEMO模組的基本功能包括 A將 xPAxPBxPC等 16個 IO訊號引出控制 LED和鍵盤電路 B將 ADDA訊號引出並放大成+-10V的工作範圍 2LED和鍵盤可以選擇三種模式由 LED和 KEY 兩組開關作選擇圖示如下

模式1

0123

模式2 模式3

0 1 2 34 5 6 78 9 A BC D E F

0123

3模式14鍵輸入並搭配 16點的 LED燈號顯示其中 16點 LED分別對映到 xPA[0~3]xPB[0~7]和 xPC[0~3] 4組按鍵分別對映到 xPC[0~3] 4模式24鍵輸入並搭配四個 7段式數字顯示其中 數字顯示由 xPA[0~3]作數字掃瞄而由 xPB[0~7]作 7段式 LED控制 4組按鍵 分別對映到 xPC[0~3] 5模式316鍵輸入並搭配四個 7段式數字顯示其中 數字顯示由 xPA[0~3]作數字掃瞄而由 xPB[0~7]作 7段式 LED控制 16組按鍵由 xPA[0~3]作鍵盤掃瞄而由 xPC[0~3]作鍵盤讀取 6根據VHDL與數位邏輯設計的章節其中 第 1章至 10章的實驗採用模式1而 第 11章實驗採用模式2而 第 12章之後的實驗都採用模式3

85

FPGA UCF 定義

eM_3S1K 模組

NET CLK LOC = B12

NET XAlt0gt LOC = N2

NET XAlt1gt LOC = T1

NET XAlt2gt LOC = T2

NET XAlt3gt LOC = U2

NET XBlt0gt LOC = M3

NET XBlt1gt LOC = M4

NET XBlt2gt LOC = W3

NET XBlt3gt LOC = W4

NET XBlt4gt LOC = Y3

NET XBlt5gt LOC = Y4

NET XBlt6gt LOC = W6

NET XBlt7gt LOC = Y6

NET XClt0gt LOC = V1

NET XClt1gt LOC = V2

NET XClt2gt LOC = W1

NET XClt3gt LOC = W2

NET YAlt0gt LOC = W10

JP4 接頭

NET YAlt1gt LOC = Y10

NET YAlt2gt LOC = W9

NET YAlt3gt LOC = W8

NET YBlt0gt LOC = U3

NET YBlt1gt LOC = T4

NET YBlt2gt LOC = N3

NET YBlt3gt LOC = N4

NET YBlt4gt LOC = T5

NET YBlt5gt LOC = U4

NET YBlt6gt LOC = V3

NET YBlt7gt LOC = V4

NET YClt0gt LOC = Y11

NET YClt1gt LOC = W11

NET YClt2gt LOC = W5

NET YClt3gt LOC = Y5

在光碟片中 RFFPGAVHDLDEMOBIT3S1K 裡有 VHDL 與數位邏輯設計書本範例原始檔與合成檔

86

eM_3S50 模組

NET CLK LOC = P124

NET XAlt0gt LOC = P59

NET XAlt1gt LOC = P60

NET XAlt2gt LOC = P63

NET XAlt3gt LOC = P68

NET XBlt0gt LOC = P135

NET XBlt1gt LOC = P132

NET XBlt2gt LOC = P116

NET XBlt3gt LOC = P113

NET XBlt4gt LOC = P112

NET XBlt5gt LOC = P96

NET XBlt6gt LOC = P100

NET XBlt7gt LOC = P99

NET XClt0gt LOC = P69

NET XClt1gt LOC = P70

NET XClt2gt LOC = P73

NET XClt3gt LOC = P74

NET YAlt0gt LOC = P105

JP4 接頭

NET YAlt1gt LOC = P104

NET YAlt2gt LOC = P103

NET YAlt3gt LOC = P102

NET YBlt0gt LOC = P127

NET YBlt1gt LOC = P129

NET YBlt2gt LOC = P131

NET YBlt3gt LOC = P130

NET YBlt4gt LOC = P128

NET YBlt5gt LOC = P125

NET YBlt6gt LOC = P119

NET YBlt7gt LOC = P118

NET YClt0gt LOC = P107

NET YClt1gt LOC = P108

NET YClt2gt LOC = P98

NET YClt3gt LOC = P97

在光碟片中 RFFPGAVHDLDEMOBIT3S200 裡有VHDL與數位邏輯設計書本範例原始檔與合成檔

87

eM_95XL 模組

NET CLK LOC = SPIN38

NET XAlt0gt LOC = SPIN53

NET XAlt1gt LOC = SPIN54

NET XAlt2gt LOC = SPIN56

NET XAlt3gt LOC = SPIN57

NET XBlt0gt LOC = SPIN85

NET XBlt1gt LOC = SPIN86

NET XBlt2gt LOC = SPIN97

NET XBlt3gt LOC = SPIN98

NET XBlt4gt LOC = SPIN100

NET XBlt5gt LOC = SPIN101

NET XBlt6gt LOC = SPIN105

NET XBlt7gt LOC = SPIN104

NET XClt0gt LOC = SPIN58

NET XClt1gt LOC = SPIN59

NET XClt2gt LOC = SPIN60

NET XClt3gt LOC = SPIN61

NET YAlt0gt LOC = SPIN111

JP4 接頭

NET YAlt1gt LOC = SPIN110

NET YAlt2gt LOC = SPIN107

NET YAlt3gt LOC = SPIN106

NET YBlt0gt LOC = SPIN93

NET YBlt1gt LOC = SPIN91

NET YBlt2gt LOC = SPIN87

NET YBlt3gt LOC = SPIN88

NET YBlt4gt LOC = SPIN92

NET YBlt5gt LOC = SPIN94

NET YBlt6gt LOC = SPIN95

NET YBlt7gt LOC = SPIN96

NET YClt0gt LOC = SPIN112

NET YClt1gt LOC = SPIN113

NET YClt2gt LOC = SPIN103

NET YClt3gt LOC = SPIN102

在光碟片中 RFFPGAVHDLDEMOSVF95288XL 裡有VHDL與數位邏輯設計書本範例原始檔與合成

檔案

88

eM_FPGA 模組

NET CLK LOC = E12

NET XAlt0gt LOC = AA3

NET XAlt1gt LOC = Y4

NET XAlt2gt LOC = AA4

NET XAlt3gt LOC = AB4

NET XBlt0gt LOC = M1

NET XBlt1gt LOC = M2

NET XBlt2gt LOC = W13

NET XBlt3gt LOC = Y13

NET XBlt4gt LOC = AA13

NET XBlt5gt LOC = AB13

NET XBlt6gt LOC = Y18

NET XBlt7gt LOC = W18

NET XClt0gt LOC = W5

NET XClt1gt LOC = Y5

NET XClt2gt LOC = AA5

NET XClt3gt LOC = AB5

NET YAlt0gt LOC = Y17

JP4 接頭

NET YAlt1gt LOC = W17

NET YAlt2gt LOC = AB18

NET YAlt3gt LOC = AA18

NET YBlt0gt LOC = N1

NET YBlt1gt LOC = M5

NET YBlt2gt LOC = M3

NET YBlt3gt LOC = M4

NET YBlt4gt LOC = M6

NET YBlt5gt LOC = N2

NET YBlt6gt LOC = U13

NET YBlt7gt LOC = V13

NET YClt0gt LOC = AA17

NET YClt1gt LOC = AB17

NET YClt2gt LOC = V12

NET YClt3gt LOC = U12

在光碟片中 RFFPGAVHDLDEMOBIT2V250 裡有VHDL與數位邏輯設計書本範例原始檔與合成檔

89

Page 69: RFFPGA 直流馬達實驗手冊juniortek.com.tw/program/manual/RF-DC-mal.pdf · em_demo模組 em_dcm 直流伺服馬達 dc電源 rffpga 系統的直流馬達實驗規劃 其中包括:

8附錄快速安裝說明

光纖網路通訊 FPGA 發展系統 (適用於 WIN-XP200098 系統)

快速安裝說明

26Pin 負載輸出入埠

雙電源︵5

12

伏︶輸入埠

單電源︵5

伏︶輸入埠

USB

光纖線輸

號 光纖線輸出埠

入 傳 埠

首先將光碟片 RFFPGA 目錄檔案拷貝在您工作硬碟裡面

第一次安裝時先將 USB 傳輸線接上電腦主機將電源供應器接上 FPGA 模組此時電

腦會出現安裝 USB-Serial 驅動程式選擇從清單安裝此驅動程式放置在光碟片

RFFPGA-USBdrive 選擇您目前安裝系統

可選擇 WIN-98WIN-MEWIN-2000WIN-XP 系統配合您現在工作電腦作業系統

69

注意一般電腦 USB 埠很多插口當您安裝驅動程式時是配合您當時插入之埠

下次如您插入不同接口埠時電腦會再次要求安裝驅動程式這是正常現象請再次安

裝驅動程式否則無法使用

FPLC 操作

首先進入 RFFPGA裡子目錄 testASM直接點選 fPLCexe 出現下面操作畫面(也可直接將

此檔案放置桌面直接點選)

(或者選擇 File 再執行 Setuphellip 選擇您要執行 CAI 檔)

70

進入下面操作畫面 首先使用滑鼠在 FPGA下載按鈕單擊動作使 FPGA變成 DSP晶片 實驗一至實驗五皆為使用 DSP組合語言設計程式其原始程式分別為 testASM1至testASM5可使用 texPad 開啟與編輯程式內容 實驗三與實驗五多有 IO控制動作 當選擇實驗三時出現下面畫面

71

eM_USB 模組

數字型 LED

0 1 2 34 5 6 78 9 A BC D E F

燈號型 LED

44 鍵盤

ADC0 ADC1 DAC0 DAC1

LED 選擇KEY 選擇

模 式 1

0123

注意操作畫面 3與 4 說明開關與按鍵選擇位置後選擇程式下載再按程式啟動如您

按下 0-3按鍵時燈號型 LED會有不同方向閃爍顯示程式停止時結束所有 IO控制動作再按回首頁選擇其他實驗 實驗四與實驗五

模式3

0 1 2 34 5 6 78 9 A BC D E F

按照上面開關選擇直接操作如果以上實驗皆能按照正常操作表示您光纖網路通訊

FPGA發展模組以能正常使用 注意 開機與關機動作順序如下

開機電腦啟動 --- eM_USB 模組電源接上 --- USB 接上電腦 ---

啟動 FPLC 軟體 --- 下載 FPGA 程式

關機關閉 FPLC 軟體 --- eM_USB 模組電源拔掉 --- 拔掉電腦 USB 接頭 ---關掉

電腦

如果以上順序有亂可能造成 USB 找不到驅動造成無法下載經過幾次測試還是

無法下載建議重新啟動電腦主機按照正確步驟操作

72

FPGA 下載操作

進入 FPLC 操作系統按照下列步驟選擇節點模組與下載 bit FPGA 檔案

在 VHDLDEMO 子目錄下您可以選擇您目前 FPGA 種類型號在此型號下我們已將 VHDL

與數位邏輯設計課本範例全部放於此處

73

光纖網路連線 FPGA 下載操作

首先利用光纖線將 eM_USB0 模組光纖輸出埠接至 eM_USB1 模組光纖輸入埠以此

類推最後再將最後 eM_USBN 模組光纖輸出埠接至 eM_USB0 模組光纖輸入埠配置

如附圖方式

個人電腦(Windows) eM_USB模組

0USB

eM_USB模組1

光纖網路

eM_USB模組2

eM_USB模組N

配置完成後進入 FPLC 系統首先必須先將 Node00 下載在 testASM 子目錄裡

piDSPv0bit 檔讓 eM_USB0 模組 FPGA 具備 DSP 功能才能執行光纖網路通訊

操作如下

此時您就可以選擇分別下載至各模組 FPGA 檔 bit

74

安裝 FPLC 注意事項

當您進入 FPLC 時

按 FILE 選擇 programhellip 選擇檔案為 exp_dcmplc 出現下面畫面

正常顯示畫面為

75

DOS 環境操作

在 PC 端的操作是在 Windows 環境中的 DOS 視窗中執行指令範例如下

eFPGA progNETbit 下載 FPGA電路至網路節點0(即 USB節點)中 eFPGA testLEDbit 1 下載 FPGA電路至網路節點1中

對於單一節點的控制程序如下

1將 eM_USB模組連結個人電腦的 USB端 2eM_USB模組開機 3執行下載指令即可 eFPGA xxxxbit 4若要更改 FPGA電路只要重新執行下載指令即可

對於多個網路節點的控制程序如下

1第一組 eM_USB模組連結個人電腦的 USB端再以光纖網路依序其他各節點 2連接 USB界面者為模組0從光纖發射端連接出去的模組為1依此類推 3將所有 eM_USB模組開機 4執行下載指令如下 eFPGA progNETbit 模組0必須先下載指定的 FPGA電路 eFPGA xxxxbit 1 再依序下載其他網路模組的 FPGA電路 eFPGA yyyybit 2 eFPGA zzzzbit 最後再重新下載模組0的 FPGA電路 5換句話說模組0必須先執行 progNETbit讓光纖網路接受 FPGA控制後才能透過光纖網路下載至其他節點等全部網路節點下載完畢後再將模組0的 FPGA重新下載讓模組0也可自由執行任意的 FPGA電路

6若要更改某一個網路節點中的 FPGA電路只要重新執行下述指令 eFPGA progNETbit 模組0必須先下載指定的 FPGA電路 eFPGA yyyybit 2 下載指定網路模組的 FPGA電路 eFPGA zzzz bit 最後再重新下載模組0的 FPGA電路 換句話說除非模組0中的 FPGA已經包括光纖網路管理電路否則一定要先在

模組0中下載網路管理電路後才能下載指定網路節點的 FPGA電路

76

光纖網路通訊 FPGA 發展系統

系統配置

光纖網路通訊 FPGA 發展系統的系統配置圖如下

個人電腦(Windows) eM_USB模組

0USB

eM_USB模組1

光纖網路

eM_USB模組2

eM_USB模組N

其中

1基本模組為 eM_USB模組可用 USB界面和個人電腦連線並提供 USB對光纖網路的轉換功能使得個人電腦可以獨立控制光纖網路中的每個網路節點

2eM_USB模組也可以作為光纖網路中的網路節點透過光纖網路而接受個人電腦的

監控 3就個人電腦而言不論是 USB界面直接連結或是以光纖網路間接連結的 eM_USB模組都是可以直接監控的網路節點最多可以同時控制一個 USB節點和 30個網路節點

4對於每一個網路節點個人電腦都可執行 eM_USB模組中 FPGA的電路下載工作並在適當的 FPGA電路配合下可執行 eM_USB模組中 FPGA內部電路的讀寫控制 5透過適當的 FPGA電路設計各網路節點都可透過光纖網路和其他任何網路節點

作同步通訊執行 FPGA內部記憶體的資料交換資料交換頻率可達 1KHz以上

77

網路模組配置

每個網路模組的標準配置圖如下

eM_USB模組光纖網路

USB eM_FPGA卡

eM_DEMO模組

eM_EXP實驗模組

DC電源

其中

1網路模組以 eM_USB模組為主提供基本的 USB界面和光纖網路連線 2eM_USB模組中的 FPGACPLD採用插卡型式可選擇不同的 eM_FPGA卡包括

eM_2V1K卡可選用 Virtex系列的 XC2V250和 XC2V1000 eM_3S1K卡可選用 Spartan3系列的 XC3S400XC3S1000和 XC3S1500 eM_3S50卡可選用 Spartan3系列的 XC3S50XC3S200和 XC3S400 eM_95XL卡可選用 9500XL系列的 XC95144XL和 XC95288XL 3eM_USB模組中的對外連線有兩種一種是 26P接頭用以連接既有的各種實驗模

組另一種是兩組 50P接頭將 FPGA中各接腳引出用以連接專題實驗 4eM_DEMO模組就是插上 50P接頭的教學模組其中包括 LED 數字顯示和 44鍵盤也具備兩組的 ADC和兩組的 DAC接頭提供類比訊號的測試工具

常用的實驗組合包括

1精簡組合包括(eM_USB+eM_FPGA)提供基本的網路節點適用於專題實驗 2標準組合包括(eM_USB+eM_FPGA+eM_DEMO)提供基礎 FPGA設計的教學實驗

3實驗組合包括(eM_USB+eM_FPGA+eM_DEMO+eM_EXP)提供進階的 FPGA實驗可依需求選用不同的實驗模組

78

eM_USB 模組

eM_USB 模組的電路配置圖如下

TxRx

DCPower

USB

JP2

JP3

光纖界面

外加電源

PC連線

JP1

eM_FPGA模組

FT232 CPLD FlashROM

SRAM

10cm

6cm

JP4

其中

1對外的連線接頭包括 DC電源 可選擇單電源(5V)或是多電源(5V+12V-12V)兩種 USB界面 直接連接個人電腦 光纖界面連接光纖網路 2實驗界面包括 JP1負責內部 CPLD的電路下載 JP2JP3兩組 50P的擴張用接頭 JP4 標準 26P接頭用以連接各種實驗模組 3內部的電路配置包括 A以 SO-DIMM接頭連接各種 eM_FPGA卡 B內附 EEPROMFlashROM和 SRAM提供 FPGA作應用測試 C以一顆 FT232BM作為 USB界面解碼而以一顆 CPLD作為光纖網路解碼 D提供各種 eM_FPGA卡的電路下載功能 4內附五顆 LED由上而下依序為 usbLED指示 USB界面的讀寫狀態 tstLED可由 FPGA電路自行定義 stsLED可由 FPGA電路自行定義 RxLED 可由 FPGA電路自行定義 TxLED 可由 FPGA電路自行定義

79

外部接腳定義

外部接頭的接點順序圖示如下

上視圖

JP11 9 JP4

126225

JP31

50249

JP21

50249

而各接頭的接點定義如下

JP1 JP4 JP2 JP3 1+33V 1+12V 2+12V 1 GND 2 GND 1 GND 2 GND 2GND 3 ADC 4 DAC 3POWER 4ALARM 3 +5V 4 +5V 3nc 5 yPB2 6 yPB3 5RxNET 6TxNET 5+12V 6+12V 4TCK 7 yPB1 6 yPB4 7RxUSB 6TxUSB 7-12V 6-12V 5nc 9 yPB0 10yPB5 9RxCAN 10TxCAN 9 ADC 10 DAC 6TDO 11yPB6 12yPB7 11P0D0 12P0D1 11P1D0 12P1D1 7TDI 13yGND 14yPC3 13P0D2 14P0D3 13P1D2 14P1D3 8nc 15yPC2 16yPC1 15P0D4 16P0D5 15P1D4 16P1D5 9TMS 17yPC0 18yPA0 17P0D6 18P0D7 17P1D6 18P1D7 19yPA1 20yPA2 19P0D8 20P0D9 19P1D8 20P1D9 21yPA3 22GND 21P0D10 22P0D11 21P1D10 22P1D11 23GND 24+5V 23P0D12 24P0D13 23P1D12 24P1D13 25+5V 26nc 25P0D14 26P0D15 25P1D14 26P1D15 27P2D0 28P2D1 27PxA0 28PxA1 29P2D2 30P2D3 29PxA2 30PxA3 31P2D4 32P2D5 31PxA4 32PxA5 33P2D6 34P2D7 33PxA6 34PxA7 35P2D8 36P2D9 35PxB0 36PxB1 37P2D10 38P2D11 37PxB2 38PxB3 39P2D12 40P2D13 39PxB4 40PxB5 41P2D14 42P2D15 41PxB6 42PxB7 43ADC0 44ADC1 43PxC0 44PxC1 45ADC2 46ADC3 45PxC2 46PxC3 47ADC4 48ADC5 47PxC4 48PxC5 49DAC0 50DAC1 49PxC6 50PxC7

80

eM_FPGA 模組

在各種 eM_FPGA 模組中FPGA 對外電路的標準配置圖如下

24576MHz

FlashROM

26PSRAM

EEPROM

mD[8]

yPA[4]

FPGACPLD

mA[19]mRDmWRmCSeeCKeeCSeeDIeeDO

光纖界面 RxNETTxNET

USB 界面 RxUSBTxUSBCLK24MPOWERALARM

LED

tstLEDstsLEDRxLEDTxLED

yPB[8]yPC[4]

ADCDAC

ADC[8]

實驗模組

ADC[2]

DAC[2]

xPA[4]

xPB[8]

xPC[4]

基礎實驗

其中

1FPGACPLD可以選擇下述幾種 XC2V250XC2V1000 採用 eM_2V1K模組其中 FPGA為 FG456包裝 XC3S400XC3S1000XC3S1500採用 eM_3S1K模組其中 FPGA為 FG456包裝 XC3S400XC3S1000XC3S1500採用 eM_3S1K模組其中 FPGA為 FG456包裝 XC3S50XC3S200XC3S400 採用 eM_3S50模組其中 FPGA為 TQ144包裝 XC95144XLXC95288XL 採用 eM_95XL模組其中 CPLD為 TQ144包裝 2採用 FG456包裝者可以控制所有的 IO界面 3採用 TQ144包裝者只是不能控制 RAM和 FlashROM而可以控制其他所有的界面 4所有 FPGA模組都可自由選擇由 USB界面或是由光纖界面下載電路但是 CPLD模組只能固定由 USB界面下載電路

5所有 FPGACPLD模組都可透過 26P接頭連接既有的各種實驗模組

81

FPGA 接腳對照表

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

mD0 XD6 mD0 A17 C13 -- -- mD1 XD7 mD1 B17 D12 -- -- mD2 XD8 mD2 C17 D11 -- -- mD3 XD9 mD3 D17 C11 -- -- mD4 XD10 mD4 E17 D10 -- -- mD5 XD11 mD5 E16 C10 -- -- mD6 XD12 mD6 E14 D9 -- -- mD7 XD13 mD7 E13 D7 -- -- mA0 XD14 mA0 D13 C7 -- -- mA1 XD15 mA1 C13 D6 -- -- mA2 XA0 mA2 V5 C3 -- -- mA3 XA1 mA3 U5 C4 -- -- mA4 XA2 mA4 Y2 D3 -- -- mA5 XA3 mA5 Y1 D4 -- -- mA6 XA4 mA6 V4 E3 -- -- mA7 XA5 mA7 V3 E4 -- -- mA8 XA6 mA8 W2 F3 -- -- mA9 XA7 mA9 W1 F4 -- -- mA10 XA8 mA10 T2 G6 -- -- mA11 XA9 mA11 T1 K3 -- -- mA12 XA10 mA12 R4 K10 -- -- mA13 XA11 mA13 R3 L3 -- -- mA14 XA12 mA14 R2 L4 -- -- mRD XRD mRD R1 D5 -- -- mWR XWR mWR P6 C6 -- --

POWER P0A0 POWER B4 B20 P1 P5 ALARM P0A1 ALARM A4 A19 P2 P6 RxNET P0A2 RxNET C4 B19 P4 P7 TxNET P0A3 TxNET C5 A18 P5 P9 RxUSB P0B0 RxUSB B5 A15 P6 P10 TxUSB P0B1 TxUSB A5 B15 P7 P11 RxCAN P0B2 RxCAN D6 A14 P8 P12 RxCAN P0B3 TxCAN C6 B14 P10 P13

CLK24M CLK24M CLK24M E12 B12 P124 P38

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

PWM0H P3A0 P0D0 E6 A8 P21 P23 PWM0L P3A1 P0D1 E5 B8 P23 P24 PWM1H P3A2 P0D2 C2 B6 P24 P25 PWM1L P3A3 P0D3 C1 A5 P25 P26 PWM2H P3A4 P0D4 D2 B5 P26 P27

82

PWM2L P3A5 P0D5 D1 A4 P27 P28 PWMenb P3A6 P0D6 E4 B4 P28 P30 PHT1Z P3A7 P0D7 E3 A3 P30 P31 PHT1A P3B0 P0D8 G2 C1 P31 P32 PHT1B P3B1 P0D9 G1 C2 P32 P33 PHT0A P3B2 P0D10 H5 D1 P33 P34 PHT0B P3B3 P0D11 J6 D2 P35 P35 AMP0 P3B4 P0D12 H4 E1 P36 P39 AMP1 P3B5 P0D13 H3 E2 P40 P40 AMP2 P3B6 P0D14 H2 F2 P41 P41 AMP3 P3B7 P0D15 H1 G1 P44 P43 eeSK P0C3 P1D0 C10 B9 P20 P22 eeCS P0C2 P1D1 D10 A9 P18 P21 eeDI P0C1 P1D2 F10 B10 P17 P20 eeDO P0C0 P1D3 E10 B11 P15 P19 ssCK P0B7 P1D4 E8 A11 P14 P17 ssCS P0B6 P1D5 E7 A12 P13 P16 ssDI P0B5 P1D6 A6 B13 P12 P15 ssDO P0B4 P1D7 B6 A13 P11 P14

ppCLK P3C0 P1D8 K4 G2 P46 P44 ppDIN P3C1 P1D9 K3 K1 P47 P45 TxD P3C2 P1D10 K2 K2 P50 P46 RxD P3C3 P1D11 K1 L1 P51 P48

tstLED P3C4 P1D12 L5 L2 P52 P49 stsLED P3C5 P1D13 L4 M1 P53 P50 RxLED P3C6 P1D14 L3 M2 P55 P51 TxLED P3C7 P1D15 L2 N1 P56 P52

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

xPA0 P2A0 P2D0 AA3 N2 P59 P53 xPA1 P2A1 P2D1 Y4 T1 P60 P54 xPA2 P2A2 P2D2 AA4 T2 P63 P56 xPA3 P2A3 P2D3 AB4 U2 P68 P57 xPC0 P2A4 P2D4 W5 V1 P69 P58 xPC1 P2A5 P2D5 Y5 V2 P70 P59 xPC2 P2A6 P2D6 AA5 W1 P73 P60 xPC3 P2A7 P2D7 AB5 W2 P74 P61

-- P2B0 P2D8 V6 Y1 P76 P64 -- P2B1 P2D9 V7 Y2 P77 P66 -- P2B2 P2D10 W6 AA3 P78 P68

mCS P2B3 P2D11 Y6 AB4 P79 P69 mA15 P2B4 P2D12 V9 AA4 P80 P70 mA16 P2B5 P2D13 V10 AB5 P82 P71 mA17 P2B6 P2D14 W10 AA5 P83 P74 mA18 P2B7 P2D15 Y10 AA6 P84 P75 CS0 P2C0 ADC0 AA10 AB8 P85 P76

83

SDIN0 P2C1 ADC1 AB10 AA8 P86 P77 CS1 P2C2 ADC2 U10 AB9 P87 P78

SDIN1 P2C3 ADC3 U11 AA9 P89 P79 SCLK P2C4 ADC4 V11 AB10 P90 P80 CS2 P2C5 ADC5 W11 AA10 P92 P81

SDOUT P2C6 ADC6 Y11 AB11 P93 P82 LDAC P2C7 ADC7 AA11 AA11 P95 P83

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

xPB0 P1A0 PxA0 M1 M3 P135 P85 xPB1 P1A1 PxA1 M2 M4 P132 P86 yPB2 P1A2 PxA2 M3 N3 P131 P87 yPB3 P1A3 PxA3 M4 N4 P130 P88 yPB1 P1A4 PxA4 M5 T4 P129 P91 yPB4 P1A5 PxA5 M6 T5 P128 P92 yPB0 P1A6 PxA6 N1 U3 P127 P93 yPB5 P1A7 PxA7 N2 U4 P125 P94 yPB6 P1B0 PxB0 U13 V3 P119 P95 yPB7 P1B1 PxB1 V13 V4 P118 P96 xPB2 P1B2 PxB2 W13 W3 P116 P97 xPB3 P1B3 PxB3 Y13 W4 P113 P98 xPB4 P1B4 PxB4 AA13 Y3 P112 P100 xPB5 P1B5 PxB5 AB13 Y4 P96 P101 yPC3 P1B6 PxB6 U12 Y5 P97 P102 yPC2 P1B7 PxB7 V12 W5 P98 P103 yPC1 P1C7 PxC0 AB17 W11 P108 P113 yPC0 P1C6 PxC1 AA17 Y11 P107 P112 yPA0 P1C5 PxC2 Y17 W10 P105 P111 yPA1 P1C4 PxC3 W17 Y10 P104 P110 yPA2 P1C3 PxC4 AB18 W9 P103 P107 yPA3 P1C2 PxC5 AA18 W8 P102 P106 xPB6 P1C1 PxC6 Y18 W6 P100 P105 xPB7 P1C0 PxC7 W18 Y6 P99 P104

84

eM_DEMO 模組

eM_DEMO 模組的電路配置圖如下

eM_USB 模組

數字型 LED

0 1 2 34 5 6 78 9 A BC D E F

燈號型 LED

44 鍵盤

ADC0 ADC1 DAC0 DAC1

LED 選擇KEY 選擇

其中

1eM_DEMO模組的基本功能包括 A將 xPAxPBxPC等 16個 IO訊號引出控制 LED和鍵盤電路 B將 ADDA訊號引出並放大成+-10V的工作範圍 2LED和鍵盤可以選擇三種模式由 LED和 KEY 兩組開關作選擇圖示如下

模式1

0123

模式2 模式3

0 1 2 34 5 6 78 9 A BC D E F

0123

3模式14鍵輸入並搭配 16點的 LED燈號顯示其中 16點 LED分別對映到 xPA[0~3]xPB[0~7]和 xPC[0~3] 4組按鍵分別對映到 xPC[0~3] 4模式24鍵輸入並搭配四個 7段式數字顯示其中 數字顯示由 xPA[0~3]作數字掃瞄而由 xPB[0~7]作 7段式 LED控制 4組按鍵 分別對映到 xPC[0~3] 5模式316鍵輸入並搭配四個 7段式數字顯示其中 數字顯示由 xPA[0~3]作數字掃瞄而由 xPB[0~7]作 7段式 LED控制 16組按鍵由 xPA[0~3]作鍵盤掃瞄而由 xPC[0~3]作鍵盤讀取 6根據VHDL與數位邏輯設計的章節其中 第 1章至 10章的實驗採用模式1而 第 11章實驗採用模式2而 第 12章之後的實驗都採用模式3

85

FPGA UCF 定義

eM_3S1K 模組

NET CLK LOC = B12

NET XAlt0gt LOC = N2

NET XAlt1gt LOC = T1

NET XAlt2gt LOC = T2

NET XAlt3gt LOC = U2

NET XBlt0gt LOC = M3

NET XBlt1gt LOC = M4

NET XBlt2gt LOC = W3

NET XBlt3gt LOC = W4

NET XBlt4gt LOC = Y3

NET XBlt5gt LOC = Y4

NET XBlt6gt LOC = W6

NET XBlt7gt LOC = Y6

NET XClt0gt LOC = V1

NET XClt1gt LOC = V2

NET XClt2gt LOC = W1

NET XClt3gt LOC = W2

NET YAlt0gt LOC = W10

JP4 接頭

NET YAlt1gt LOC = Y10

NET YAlt2gt LOC = W9

NET YAlt3gt LOC = W8

NET YBlt0gt LOC = U3

NET YBlt1gt LOC = T4

NET YBlt2gt LOC = N3

NET YBlt3gt LOC = N4

NET YBlt4gt LOC = T5

NET YBlt5gt LOC = U4

NET YBlt6gt LOC = V3

NET YBlt7gt LOC = V4

NET YClt0gt LOC = Y11

NET YClt1gt LOC = W11

NET YClt2gt LOC = W5

NET YClt3gt LOC = Y5

在光碟片中 RFFPGAVHDLDEMOBIT3S1K 裡有 VHDL 與數位邏輯設計書本範例原始檔與合成檔

86

eM_3S50 模組

NET CLK LOC = P124

NET XAlt0gt LOC = P59

NET XAlt1gt LOC = P60

NET XAlt2gt LOC = P63

NET XAlt3gt LOC = P68

NET XBlt0gt LOC = P135

NET XBlt1gt LOC = P132

NET XBlt2gt LOC = P116

NET XBlt3gt LOC = P113

NET XBlt4gt LOC = P112

NET XBlt5gt LOC = P96

NET XBlt6gt LOC = P100

NET XBlt7gt LOC = P99

NET XClt0gt LOC = P69

NET XClt1gt LOC = P70

NET XClt2gt LOC = P73

NET XClt3gt LOC = P74

NET YAlt0gt LOC = P105

JP4 接頭

NET YAlt1gt LOC = P104

NET YAlt2gt LOC = P103

NET YAlt3gt LOC = P102

NET YBlt0gt LOC = P127

NET YBlt1gt LOC = P129

NET YBlt2gt LOC = P131

NET YBlt3gt LOC = P130

NET YBlt4gt LOC = P128

NET YBlt5gt LOC = P125

NET YBlt6gt LOC = P119

NET YBlt7gt LOC = P118

NET YClt0gt LOC = P107

NET YClt1gt LOC = P108

NET YClt2gt LOC = P98

NET YClt3gt LOC = P97

在光碟片中 RFFPGAVHDLDEMOBIT3S200 裡有VHDL與數位邏輯設計書本範例原始檔與合成檔

87

eM_95XL 模組

NET CLK LOC = SPIN38

NET XAlt0gt LOC = SPIN53

NET XAlt1gt LOC = SPIN54

NET XAlt2gt LOC = SPIN56

NET XAlt3gt LOC = SPIN57

NET XBlt0gt LOC = SPIN85

NET XBlt1gt LOC = SPIN86

NET XBlt2gt LOC = SPIN97

NET XBlt3gt LOC = SPIN98

NET XBlt4gt LOC = SPIN100

NET XBlt5gt LOC = SPIN101

NET XBlt6gt LOC = SPIN105

NET XBlt7gt LOC = SPIN104

NET XClt0gt LOC = SPIN58

NET XClt1gt LOC = SPIN59

NET XClt2gt LOC = SPIN60

NET XClt3gt LOC = SPIN61

NET YAlt0gt LOC = SPIN111

JP4 接頭

NET YAlt1gt LOC = SPIN110

NET YAlt2gt LOC = SPIN107

NET YAlt3gt LOC = SPIN106

NET YBlt0gt LOC = SPIN93

NET YBlt1gt LOC = SPIN91

NET YBlt2gt LOC = SPIN87

NET YBlt3gt LOC = SPIN88

NET YBlt4gt LOC = SPIN92

NET YBlt5gt LOC = SPIN94

NET YBlt6gt LOC = SPIN95

NET YBlt7gt LOC = SPIN96

NET YClt0gt LOC = SPIN112

NET YClt1gt LOC = SPIN113

NET YClt2gt LOC = SPIN103

NET YClt3gt LOC = SPIN102

在光碟片中 RFFPGAVHDLDEMOSVF95288XL 裡有VHDL與數位邏輯設計書本範例原始檔與合成

檔案

88

eM_FPGA 模組

NET CLK LOC = E12

NET XAlt0gt LOC = AA3

NET XAlt1gt LOC = Y4

NET XAlt2gt LOC = AA4

NET XAlt3gt LOC = AB4

NET XBlt0gt LOC = M1

NET XBlt1gt LOC = M2

NET XBlt2gt LOC = W13

NET XBlt3gt LOC = Y13

NET XBlt4gt LOC = AA13

NET XBlt5gt LOC = AB13

NET XBlt6gt LOC = Y18

NET XBlt7gt LOC = W18

NET XClt0gt LOC = W5

NET XClt1gt LOC = Y5

NET XClt2gt LOC = AA5

NET XClt3gt LOC = AB5

NET YAlt0gt LOC = Y17

JP4 接頭

NET YAlt1gt LOC = W17

NET YAlt2gt LOC = AB18

NET YAlt3gt LOC = AA18

NET YBlt0gt LOC = N1

NET YBlt1gt LOC = M5

NET YBlt2gt LOC = M3

NET YBlt3gt LOC = M4

NET YBlt4gt LOC = M6

NET YBlt5gt LOC = N2

NET YBlt6gt LOC = U13

NET YBlt7gt LOC = V13

NET YClt0gt LOC = AA17

NET YClt1gt LOC = AB17

NET YClt2gt LOC = V12

NET YClt3gt LOC = U12

在光碟片中 RFFPGAVHDLDEMOBIT2V250 裡有VHDL與數位邏輯設計書本範例原始檔與合成檔

89

Page 70: RFFPGA 直流馬達實驗手冊juniortek.com.tw/program/manual/RF-DC-mal.pdf · em_demo模組 em_dcm 直流伺服馬達 dc電源 rffpga 系統的直流馬達實驗規劃 其中包括:

注意一般電腦 USB 埠很多插口當您安裝驅動程式時是配合您當時插入之埠

下次如您插入不同接口埠時電腦會再次要求安裝驅動程式這是正常現象請再次安

裝驅動程式否則無法使用

FPLC 操作

首先進入 RFFPGA裡子目錄 testASM直接點選 fPLCexe 出現下面操作畫面(也可直接將

此檔案放置桌面直接點選)

(或者選擇 File 再執行 Setuphellip 選擇您要執行 CAI 檔)

70

進入下面操作畫面 首先使用滑鼠在 FPGA下載按鈕單擊動作使 FPGA變成 DSP晶片 實驗一至實驗五皆為使用 DSP組合語言設計程式其原始程式分別為 testASM1至testASM5可使用 texPad 開啟與編輯程式內容 實驗三與實驗五多有 IO控制動作 當選擇實驗三時出現下面畫面

71

eM_USB 模組

數字型 LED

0 1 2 34 5 6 78 9 A BC D E F

燈號型 LED

44 鍵盤

ADC0 ADC1 DAC0 DAC1

LED 選擇KEY 選擇

模 式 1

0123

注意操作畫面 3與 4 說明開關與按鍵選擇位置後選擇程式下載再按程式啟動如您

按下 0-3按鍵時燈號型 LED會有不同方向閃爍顯示程式停止時結束所有 IO控制動作再按回首頁選擇其他實驗 實驗四與實驗五

模式3

0 1 2 34 5 6 78 9 A BC D E F

按照上面開關選擇直接操作如果以上實驗皆能按照正常操作表示您光纖網路通訊

FPGA發展模組以能正常使用 注意 開機與關機動作順序如下

開機電腦啟動 --- eM_USB 模組電源接上 --- USB 接上電腦 ---

啟動 FPLC 軟體 --- 下載 FPGA 程式

關機關閉 FPLC 軟體 --- eM_USB 模組電源拔掉 --- 拔掉電腦 USB 接頭 ---關掉

電腦

如果以上順序有亂可能造成 USB 找不到驅動造成無法下載經過幾次測試還是

無法下載建議重新啟動電腦主機按照正確步驟操作

72

FPGA 下載操作

進入 FPLC 操作系統按照下列步驟選擇節點模組與下載 bit FPGA 檔案

在 VHDLDEMO 子目錄下您可以選擇您目前 FPGA 種類型號在此型號下我們已將 VHDL

與數位邏輯設計課本範例全部放於此處

73

光纖網路連線 FPGA 下載操作

首先利用光纖線將 eM_USB0 模組光纖輸出埠接至 eM_USB1 模組光纖輸入埠以此

類推最後再將最後 eM_USBN 模組光纖輸出埠接至 eM_USB0 模組光纖輸入埠配置

如附圖方式

個人電腦(Windows) eM_USB模組

0USB

eM_USB模組1

光纖網路

eM_USB模組2

eM_USB模組N

配置完成後進入 FPLC 系統首先必須先將 Node00 下載在 testASM 子目錄裡

piDSPv0bit 檔讓 eM_USB0 模組 FPGA 具備 DSP 功能才能執行光纖網路通訊

操作如下

此時您就可以選擇分別下載至各模組 FPGA 檔 bit

74

安裝 FPLC 注意事項

當您進入 FPLC 時

按 FILE 選擇 programhellip 選擇檔案為 exp_dcmplc 出現下面畫面

正常顯示畫面為

75

DOS 環境操作

在 PC 端的操作是在 Windows 環境中的 DOS 視窗中執行指令範例如下

eFPGA progNETbit 下載 FPGA電路至網路節點0(即 USB節點)中 eFPGA testLEDbit 1 下載 FPGA電路至網路節點1中

對於單一節點的控制程序如下

1將 eM_USB模組連結個人電腦的 USB端 2eM_USB模組開機 3執行下載指令即可 eFPGA xxxxbit 4若要更改 FPGA電路只要重新執行下載指令即可

對於多個網路節點的控制程序如下

1第一組 eM_USB模組連結個人電腦的 USB端再以光纖網路依序其他各節點 2連接 USB界面者為模組0從光纖發射端連接出去的模組為1依此類推 3將所有 eM_USB模組開機 4執行下載指令如下 eFPGA progNETbit 模組0必須先下載指定的 FPGA電路 eFPGA xxxxbit 1 再依序下載其他網路模組的 FPGA電路 eFPGA yyyybit 2 eFPGA zzzzbit 最後再重新下載模組0的 FPGA電路 5換句話說模組0必須先執行 progNETbit讓光纖網路接受 FPGA控制後才能透過光纖網路下載至其他節點等全部網路節點下載完畢後再將模組0的 FPGA重新下載讓模組0也可自由執行任意的 FPGA電路

6若要更改某一個網路節點中的 FPGA電路只要重新執行下述指令 eFPGA progNETbit 模組0必須先下載指定的 FPGA電路 eFPGA yyyybit 2 下載指定網路模組的 FPGA電路 eFPGA zzzz bit 最後再重新下載模組0的 FPGA電路 換句話說除非模組0中的 FPGA已經包括光纖網路管理電路否則一定要先在

模組0中下載網路管理電路後才能下載指定網路節點的 FPGA電路

76

光纖網路通訊 FPGA 發展系統

系統配置

光纖網路通訊 FPGA 發展系統的系統配置圖如下

個人電腦(Windows) eM_USB模組

0USB

eM_USB模組1

光纖網路

eM_USB模組2

eM_USB模組N

其中

1基本模組為 eM_USB模組可用 USB界面和個人電腦連線並提供 USB對光纖網路的轉換功能使得個人電腦可以獨立控制光纖網路中的每個網路節點

2eM_USB模組也可以作為光纖網路中的網路節點透過光纖網路而接受個人電腦的

監控 3就個人電腦而言不論是 USB界面直接連結或是以光纖網路間接連結的 eM_USB模組都是可以直接監控的網路節點最多可以同時控制一個 USB節點和 30個網路節點

4對於每一個網路節點個人電腦都可執行 eM_USB模組中 FPGA的電路下載工作並在適當的 FPGA電路配合下可執行 eM_USB模組中 FPGA內部電路的讀寫控制 5透過適當的 FPGA電路設計各網路節點都可透過光纖網路和其他任何網路節點

作同步通訊執行 FPGA內部記憶體的資料交換資料交換頻率可達 1KHz以上

77

網路模組配置

每個網路模組的標準配置圖如下

eM_USB模組光纖網路

USB eM_FPGA卡

eM_DEMO模組

eM_EXP實驗模組

DC電源

其中

1網路模組以 eM_USB模組為主提供基本的 USB界面和光纖網路連線 2eM_USB模組中的 FPGACPLD採用插卡型式可選擇不同的 eM_FPGA卡包括

eM_2V1K卡可選用 Virtex系列的 XC2V250和 XC2V1000 eM_3S1K卡可選用 Spartan3系列的 XC3S400XC3S1000和 XC3S1500 eM_3S50卡可選用 Spartan3系列的 XC3S50XC3S200和 XC3S400 eM_95XL卡可選用 9500XL系列的 XC95144XL和 XC95288XL 3eM_USB模組中的對外連線有兩種一種是 26P接頭用以連接既有的各種實驗模

組另一種是兩組 50P接頭將 FPGA中各接腳引出用以連接專題實驗 4eM_DEMO模組就是插上 50P接頭的教學模組其中包括 LED 數字顯示和 44鍵盤也具備兩組的 ADC和兩組的 DAC接頭提供類比訊號的測試工具

常用的實驗組合包括

1精簡組合包括(eM_USB+eM_FPGA)提供基本的網路節點適用於專題實驗 2標準組合包括(eM_USB+eM_FPGA+eM_DEMO)提供基礎 FPGA設計的教學實驗

3實驗組合包括(eM_USB+eM_FPGA+eM_DEMO+eM_EXP)提供進階的 FPGA實驗可依需求選用不同的實驗模組

78

eM_USB 模組

eM_USB 模組的電路配置圖如下

TxRx

DCPower

USB

JP2

JP3

光纖界面

外加電源

PC連線

JP1

eM_FPGA模組

FT232 CPLD FlashROM

SRAM

10cm

6cm

JP4

其中

1對外的連線接頭包括 DC電源 可選擇單電源(5V)或是多電源(5V+12V-12V)兩種 USB界面 直接連接個人電腦 光纖界面連接光纖網路 2實驗界面包括 JP1負責內部 CPLD的電路下載 JP2JP3兩組 50P的擴張用接頭 JP4 標準 26P接頭用以連接各種實驗模組 3內部的電路配置包括 A以 SO-DIMM接頭連接各種 eM_FPGA卡 B內附 EEPROMFlashROM和 SRAM提供 FPGA作應用測試 C以一顆 FT232BM作為 USB界面解碼而以一顆 CPLD作為光纖網路解碼 D提供各種 eM_FPGA卡的電路下載功能 4內附五顆 LED由上而下依序為 usbLED指示 USB界面的讀寫狀態 tstLED可由 FPGA電路自行定義 stsLED可由 FPGA電路自行定義 RxLED 可由 FPGA電路自行定義 TxLED 可由 FPGA電路自行定義

79

外部接腳定義

外部接頭的接點順序圖示如下

上視圖

JP11 9 JP4

126225

JP31

50249

JP21

50249

而各接頭的接點定義如下

JP1 JP4 JP2 JP3 1+33V 1+12V 2+12V 1 GND 2 GND 1 GND 2 GND 2GND 3 ADC 4 DAC 3POWER 4ALARM 3 +5V 4 +5V 3nc 5 yPB2 6 yPB3 5RxNET 6TxNET 5+12V 6+12V 4TCK 7 yPB1 6 yPB4 7RxUSB 6TxUSB 7-12V 6-12V 5nc 9 yPB0 10yPB5 9RxCAN 10TxCAN 9 ADC 10 DAC 6TDO 11yPB6 12yPB7 11P0D0 12P0D1 11P1D0 12P1D1 7TDI 13yGND 14yPC3 13P0D2 14P0D3 13P1D2 14P1D3 8nc 15yPC2 16yPC1 15P0D4 16P0D5 15P1D4 16P1D5 9TMS 17yPC0 18yPA0 17P0D6 18P0D7 17P1D6 18P1D7 19yPA1 20yPA2 19P0D8 20P0D9 19P1D8 20P1D9 21yPA3 22GND 21P0D10 22P0D11 21P1D10 22P1D11 23GND 24+5V 23P0D12 24P0D13 23P1D12 24P1D13 25+5V 26nc 25P0D14 26P0D15 25P1D14 26P1D15 27P2D0 28P2D1 27PxA0 28PxA1 29P2D2 30P2D3 29PxA2 30PxA3 31P2D4 32P2D5 31PxA4 32PxA5 33P2D6 34P2D7 33PxA6 34PxA7 35P2D8 36P2D9 35PxB0 36PxB1 37P2D10 38P2D11 37PxB2 38PxB3 39P2D12 40P2D13 39PxB4 40PxB5 41P2D14 42P2D15 41PxB6 42PxB7 43ADC0 44ADC1 43PxC0 44PxC1 45ADC2 46ADC3 45PxC2 46PxC3 47ADC4 48ADC5 47PxC4 48PxC5 49DAC0 50DAC1 49PxC6 50PxC7

80

eM_FPGA 模組

在各種 eM_FPGA 模組中FPGA 對外電路的標準配置圖如下

24576MHz

FlashROM

26PSRAM

EEPROM

mD[8]

yPA[4]

FPGACPLD

mA[19]mRDmWRmCSeeCKeeCSeeDIeeDO

光纖界面 RxNETTxNET

USB 界面 RxUSBTxUSBCLK24MPOWERALARM

LED

tstLEDstsLEDRxLEDTxLED

yPB[8]yPC[4]

ADCDAC

ADC[8]

實驗模組

ADC[2]

DAC[2]

xPA[4]

xPB[8]

xPC[4]

基礎實驗

其中

1FPGACPLD可以選擇下述幾種 XC2V250XC2V1000 採用 eM_2V1K模組其中 FPGA為 FG456包裝 XC3S400XC3S1000XC3S1500採用 eM_3S1K模組其中 FPGA為 FG456包裝 XC3S400XC3S1000XC3S1500採用 eM_3S1K模組其中 FPGA為 FG456包裝 XC3S50XC3S200XC3S400 採用 eM_3S50模組其中 FPGA為 TQ144包裝 XC95144XLXC95288XL 採用 eM_95XL模組其中 CPLD為 TQ144包裝 2採用 FG456包裝者可以控制所有的 IO界面 3採用 TQ144包裝者只是不能控制 RAM和 FlashROM而可以控制其他所有的界面 4所有 FPGA模組都可自由選擇由 USB界面或是由光纖界面下載電路但是 CPLD模組只能固定由 USB界面下載電路

5所有 FPGACPLD模組都可透過 26P接頭連接既有的各種實驗模組

81

FPGA 接腳對照表

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

mD0 XD6 mD0 A17 C13 -- -- mD1 XD7 mD1 B17 D12 -- -- mD2 XD8 mD2 C17 D11 -- -- mD3 XD9 mD3 D17 C11 -- -- mD4 XD10 mD4 E17 D10 -- -- mD5 XD11 mD5 E16 C10 -- -- mD6 XD12 mD6 E14 D9 -- -- mD7 XD13 mD7 E13 D7 -- -- mA0 XD14 mA0 D13 C7 -- -- mA1 XD15 mA1 C13 D6 -- -- mA2 XA0 mA2 V5 C3 -- -- mA3 XA1 mA3 U5 C4 -- -- mA4 XA2 mA4 Y2 D3 -- -- mA5 XA3 mA5 Y1 D4 -- -- mA6 XA4 mA6 V4 E3 -- -- mA7 XA5 mA7 V3 E4 -- -- mA8 XA6 mA8 W2 F3 -- -- mA9 XA7 mA9 W1 F4 -- -- mA10 XA8 mA10 T2 G6 -- -- mA11 XA9 mA11 T1 K3 -- -- mA12 XA10 mA12 R4 K10 -- -- mA13 XA11 mA13 R3 L3 -- -- mA14 XA12 mA14 R2 L4 -- -- mRD XRD mRD R1 D5 -- -- mWR XWR mWR P6 C6 -- --

POWER P0A0 POWER B4 B20 P1 P5 ALARM P0A1 ALARM A4 A19 P2 P6 RxNET P0A2 RxNET C4 B19 P4 P7 TxNET P0A3 TxNET C5 A18 P5 P9 RxUSB P0B0 RxUSB B5 A15 P6 P10 TxUSB P0B1 TxUSB A5 B15 P7 P11 RxCAN P0B2 RxCAN D6 A14 P8 P12 RxCAN P0B3 TxCAN C6 B14 P10 P13

CLK24M CLK24M CLK24M E12 B12 P124 P38

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

PWM0H P3A0 P0D0 E6 A8 P21 P23 PWM0L P3A1 P0D1 E5 B8 P23 P24 PWM1H P3A2 P0D2 C2 B6 P24 P25 PWM1L P3A3 P0D3 C1 A5 P25 P26 PWM2H P3A4 P0D4 D2 B5 P26 P27

82

PWM2L P3A5 P0D5 D1 A4 P27 P28 PWMenb P3A6 P0D6 E4 B4 P28 P30 PHT1Z P3A7 P0D7 E3 A3 P30 P31 PHT1A P3B0 P0D8 G2 C1 P31 P32 PHT1B P3B1 P0D9 G1 C2 P32 P33 PHT0A P3B2 P0D10 H5 D1 P33 P34 PHT0B P3B3 P0D11 J6 D2 P35 P35 AMP0 P3B4 P0D12 H4 E1 P36 P39 AMP1 P3B5 P0D13 H3 E2 P40 P40 AMP2 P3B6 P0D14 H2 F2 P41 P41 AMP3 P3B7 P0D15 H1 G1 P44 P43 eeSK P0C3 P1D0 C10 B9 P20 P22 eeCS P0C2 P1D1 D10 A9 P18 P21 eeDI P0C1 P1D2 F10 B10 P17 P20 eeDO P0C0 P1D3 E10 B11 P15 P19 ssCK P0B7 P1D4 E8 A11 P14 P17 ssCS P0B6 P1D5 E7 A12 P13 P16 ssDI P0B5 P1D6 A6 B13 P12 P15 ssDO P0B4 P1D7 B6 A13 P11 P14

ppCLK P3C0 P1D8 K4 G2 P46 P44 ppDIN P3C1 P1D9 K3 K1 P47 P45 TxD P3C2 P1D10 K2 K2 P50 P46 RxD P3C3 P1D11 K1 L1 P51 P48

tstLED P3C4 P1D12 L5 L2 P52 P49 stsLED P3C5 P1D13 L4 M1 P53 P50 RxLED P3C6 P1D14 L3 M2 P55 P51 TxLED P3C7 P1D15 L2 N1 P56 P52

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

xPA0 P2A0 P2D0 AA3 N2 P59 P53 xPA1 P2A1 P2D1 Y4 T1 P60 P54 xPA2 P2A2 P2D2 AA4 T2 P63 P56 xPA3 P2A3 P2D3 AB4 U2 P68 P57 xPC0 P2A4 P2D4 W5 V1 P69 P58 xPC1 P2A5 P2D5 Y5 V2 P70 P59 xPC2 P2A6 P2D6 AA5 W1 P73 P60 xPC3 P2A7 P2D7 AB5 W2 P74 P61

-- P2B0 P2D8 V6 Y1 P76 P64 -- P2B1 P2D9 V7 Y2 P77 P66 -- P2B2 P2D10 W6 AA3 P78 P68

mCS P2B3 P2D11 Y6 AB4 P79 P69 mA15 P2B4 P2D12 V9 AA4 P80 P70 mA16 P2B5 P2D13 V10 AB5 P82 P71 mA17 P2B6 P2D14 W10 AA5 P83 P74 mA18 P2B7 P2D15 Y10 AA6 P84 P75 CS0 P2C0 ADC0 AA10 AB8 P85 P76

83

SDIN0 P2C1 ADC1 AB10 AA8 P86 P77 CS1 P2C2 ADC2 U10 AB9 P87 P78

SDIN1 P2C3 ADC3 U11 AA9 P89 P79 SCLK P2C4 ADC4 V11 AB10 P90 P80 CS2 P2C5 ADC5 W11 AA10 P92 P81

SDOUT P2C6 ADC6 Y11 AB11 P93 P82 LDAC P2C7 ADC7 AA11 AA11 P95 P83

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

xPB0 P1A0 PxA0 M1 M3 P135 P85 xPB1 P1A1 PxA1 M2 M4 P132 P86 yPB2 P1A2 PxA2 M3 N3 P131 P87 yPB3 P1A3 PxA3 M4 N4 P130 P88 yPB1 P1A4 PxA4 M5 T4 P129 P91 yPB4 P1A5 PxA5 M6 T5 P128 P92 yPB0 P1A6 PxA6 N1 U3 P127 P93 yPB5 P1A7 PxA7 N2 U4 P125 P94 yPB6 P1B0 PxB0 U13 V3 P119 P95 yPB7 P1B1 PxB1 V13 V4 P118 P96 xPB2 P1B2 PxB2 W13 W3 P116 P97 xPB3 P1B3 PxB3 Y13 W4 P113 P98 xPB4 P1B4 PxB4 AA13 Y3 P112 P100 xPB5 P1B5 PxB5 AB13 Y4 P96 P101 yPC3 P1B6 PxB6 U12 Y5 P97 P102 yPC2 P1B7 PxB7 V12 W5 P98 P103 yPC1 P1C7 PxC0 AB17 W11 P108 P113 yPC0 P1C6 PxC1 AA17 Y11 P107 P112 yPA0 P1C5 PxC2 Y17 W10 P105 P111 yPA1 P1C4 PxC3 W17 Y10 P104 P110 yPA2 P1C3 PxC4 AB18 W9 P103 P107 yPA3 P1C2 PxC5 AA18 W8 P102 P106 xPB6 P1C1 PxC6 Y18 W6 P100 P105 xPB7 P1C0 PxC7 W18 Y6 P99 P104

84

eM_DEMO 模組

eM_DEMO 模組的電路配置圖如下

eM_USB 模組

數字型 LED

0 1 2 34 5 6 78 9 A BC D E F

燈號型 LED

44 鍵盤

ADC0 ADC1 DAC0 DAC1

LED 選擇KEY 選擇

其中

1eM_DEMO模組的基本功能包括 A將 xPAxPBxPC等 16個 IO訊號引出控制 LED和鍵盤電路 B將 ADDA訊號引出並放大成+-10V的工作範圍 2LED和鍵盤可以選擇三種模式由 LED和 KEY 兩組開關作選擇圖示如下

模式1

0123

模式2 模式3

0 1 2 34 5 6 78 9 A BC D E F

0123

3模式14鍵輸入並搭配 16點的 LED燈號顯示其中 16點 LED分別對映到 xPA[0~3]xPB[0~7]和 xPC[0~3] 4組按鍵分別對映到 xPC[0~3] 4模式24鍵輸入並搭配四個 7段式數字顯示其中 數字顯示由 xPA[0~3]作數字掃瞄而由 xPB[0~7]作 7段式 LED控制 4組按鍵 分別對映到 xPC[0~3] 5模式316鍵輸入並搭配四個 7段式數字顯示其中 數字顯示由 xPA[0~3]作數字掃瞄而由 xPB[0~7]作 7段式 LED控制 16組按鍵由 xPA[0~3]作鍵盤掃瞄而由 xPC[0~3]作鍵盤讀取 6根據VHDL與數位邏輯設計的章節其中 第 1章至 10章的實驗採用模式1而 第 11章實驗採用模式2而 第 12章之後的實驗都採用模式3

85

FPGA UCF 定義

eM_3S1K 模組

NET CLK LOC = B12

NET XAlt0gt LOC = N2

NET XAlt1gt LOC = T1

NET XAlt2gt LOC = T2

NET XAlt3gt LOC = U2

NET XBlt0gt LOC = M3

NET XBlt1gt LOC = M4

NET XBlt2gt LOC = W3

NET XBlt3gt LOC = W4

NET XBlt4gt LOC = Y3

NET XBlt5gt LOC = Y4

NET XBlt6gt LOC = W6

NET XBlt7gt LOC = Y6

NET XClt0gt LOC = V1

NET XClt1gt LOC = V2

NET XClt2gt LOC = W1

NET XClt3gt LOC = W2

NET YAlt0gt LOC = W10

JP4 接頭

NET YAlt1gt LOC = Y10

NET YAlt2gt LOC = W9

NET YAlt3gt LOC = W8

NET YBlt0gt LOC = U3

NET YBlt1gt LOC = T4

NET YBlt2gt LOC = N3

NET YBlt3gt LOC = N4

NET YBlt4gt LOC = T5

NET YBlt5gt LOC = U4

NET YBlt6gt LOC = V3

NET YBlt7gt LOC = V4

NET YClt0gt LOC = Y11

NET YClt1gt LOC = W11

NET YClt2gt LOC = W5

NET YClt3gt LOC = Y5

在光碟片中 RFFPGAVHDLDEMOBIT3S1K 裡有 VHDL 與數位邏輯設計書本範例原始檔與合成檔

86

eM_3S50 模組

NET CLK LOC = P124

NET XAlt0gt LOC = P59

NET XAlt1gt LOC = P60

NET XAlt2gt LOC = P63

NET XAlt3gt LOC = P68

NET XBlt0gt LOC = P135

NET XBlt1gt LOC = P132

NET XBlt2gt LOC = P116

NET XBlt3gt LOC = P113

NET XBlt4gt LOC = P112

NET XBlt5gt LOC = P96

NET XBlt6gt LOC = P100

NET XBlt7gt LOC = P99

NET XClt0gt LOC = P69

NET XClt1gt LOC = P70

NET XClt2gt LOC = P73

NET XClt3gt LOC = P74

NET YAlt0gt LOC = P105

JP4 接頭

NET YAlt1gt LOC = P104

NET YAlt2gt LOC = P103

NET YAlt3gt LOC = P102

NET YBlt0gt LOC = P127

NET YBlt1gt LOC = P129

NET YBlt2gt LOC = P131

NET YBlt3gt LOC = P130

NET YBlt4gt LOC = P128

NET YBlt5gt LOC = P125

NET YBlt6gt LOC = P119

NET YBlt7gt LOC = P118

NET YClt0gt LOC = P107

NET YClt1gt LOC = P108

NET YClt2gt LOC = P98

NET YClt3gt LOC = P97

在光碟片中 RFFPGAVHDLDEMOBIT3S200 裡有VHDL與數位邏輯設計書本範例原始檔與合成檔

87

eM_95XL 模組

NET CLK LOC = SPIN38

NET XAlt0gt LOC = SPIN53

NET XAlt1gt LOC = SPIN54

NET XAlt2gt LOC = SPIN56

NET XAlt3gt LOC = SPIN57

NET XBlt0gt LOC = SPIN85

NET XBlt1gt LOC = SPIN86

NET XBlt2gt LOC = SPIN97

NET XBlt3gt LOC = SPIN98

NET XBlt4gt LOC = SPIN100

NET XBlt5gt LOC = SPIN101

NET XBlt6gt LOC = SPIN105

NET XBlt7gt LOC = SPIN104

NET XClt0gt LOC = SPIN58

NET XClt1gt LOC = SPIN59

NET XClt2gt LOC = SPIN60

NET XClt3gt LOC = SPIN61

NET YAlt0gt LOC = SPIN111

JP4 接頭

NET YAlt1gt LOC = SPIN110

NET YAlt2gt LOC = SPIN107

NET YAlt3gt LOC = SPIN106

NET YBlt0gt LOC = SPIN93

NET YBlt1gt LOC = SPIN91

NET YBlt2gt LOC = SPIN87

NET YBlt3gt LOC = SPIN88

NET YBlt4gt LOC = SPIN92

NET YBlt5gt LOC = SPIN94

NET YBlt6gt LOC = SPIN95

NET YBlt7gt LOC = SPIN96

NET YClt0gt LOC = SPIN112

NET YClt1gt LOC = SPIN113

NET YClt2gt LOC = SPIN103

NET YClt3gt LOC = SPIN102

在光碟片中 RFFPGAVHDLDEMOSVF95288XL 裡有VHDL與數位邏輯設計書本範例原始檔與合成

檔案

88

eM_FPGA 模組

NET CLK LOC = E12

NET XAlt0gt LOC = AA3

NET XAlt1gt LOC = Y4

NET XAlt2gt LOC = AA4

NET XAlt3gt LOC = AB4

NET XBlt0gt LOC = M1

NET XBlt1gt LOC = M2

NET XBlt2gt LOC = W13

NET XBlt3gt LOC = Y13

NET XBlt4gt LOC = AA13

NET XBlt5gt LOC = AB13

NET XBlt6gt LOC = Y18

NET XBlt7gt LOC = W18

NET XClt0gt LOC = W5

NET XClt1gt LOC = Y5

NET XClt2gt LOC = AA5

NET XClt3gt LOC = AB5

NET YAlt0gt LOC = Y17

JP4 接頭

NET YAlt1gt LOC = W17

NET YAlt2gt LOC = AB18

NET YAlt3gt LOC = AA18

NET YBlt0gt LOC = N1

NET YBlt1gt LOC = M5

NET YBlt2gt LOC = M3

NET YBlt3gt LOC = M4

NET YBlt4gt LOC = M6

NET YBlt5gt LOC = N2

NET YBlt6gt LOC = U13

NET YBlt7gt LOC = V13

NET YClt0gt LOC = AA17

NET YClt1gt LOC = AB17

NET YClt2gt LOC = V12

NET YClt3gt LOC = U12

在光碟片中 RFFPGAVHDLDEMOBIT2V250 裡有VHDL與數位邏輯設計書本範例原始檔與合成檔

89

Page 71: RFFPGA 直流馬達實驗手冊juniortek.com.tw/program/manual/RF-DC-mal.pdf · em_demo模組 em_dcm 直流伺服馬達 dc電源 rffpga 系統的直流馬達實驗規劃 其中包括:

進入下面操作畫面 首先使用滑鼠在 FPGA下載按鈕單擊動作使 FPGA變成 DSP晶片 實驗一至實驗五皆為使用 DSP組合語言設計程式其原始程式分別為 testASM1至testASM5可使用 texPad 開啟與編輯程式內容 實驗三與實驗五多有 IO控制動作 當選擇實驗三時出現下面畫面

71

eM_USB 模組

數字型 LED

0 1 2 34 5 6 78 9 A BC D E F

燈號型 LED

44 鍵盤

ADC0 ADC1 DAC0 DAC1

LED 選擇KEY 選擇

模 式 1

0123

注意操作畫面 3與 4 說明開關與按鍵選擇位置後選擇程式下載再按程式啟動如您

按下 0-3按鍵時燈號型 LED會有不同方向閃爍顯示程式停止時結束所有 IO控制動作再按回首頁選擇其他實驗 實驗四與實驗五

模式3

0 1 2 34 5 6 78 9 A BC D E F

按照上面開關選擇直接操作如果以上實驗皆能按照正常操作表示您光纖網路通訊

FPGA發展模組以能正常使用 注意 開機與關機動作順序如下

開機電腦啟動 --- eM_USB 模組電源接上 --- USB 接上電腦 ---

啟動 FPLC 軟體 --- 下載 FPGA 程式

關機關閉 FPLC 軟體 --- eM_USB 模組電源拔掉 --- 拔掉電腦 USB 接頭 ---關掉

電腦

如果以上順序有亂可能造成 USB 找不到驅動造成無法下載經過幾次測試還是

無法下載建議重新啟動電腦主機按照正確步驟操作

72

FPGA 下載操作

進入 FPLC 操作系統按照下列步驟選擇節點模組與下載 bit FPGA 檔案

在 VHDLDEMO 子目錄下您可以選擇您目前 FPGA 種類型號在此型號下我們已將 VHDL

與數位邏輯設計課本範例全部放於此處

73

光纖網路連線 FPGA 下載操作

首先利用光纖線將 eM_USB0 模組光纖輸出埠接至 eM_USB1 模組光纖輸入埠以此

類推最後再將最後 eM_USBN 模組光纖輸出埠接至 eM_USB0 模組光纖輸入埠配置

如附圖方式

個人電腦(Windows) eM_USB模組

0USB

eM_USB模組1

光纖網路

eM_USB模組2

eM_USB模組N

配置完成後進入 FPLC 系統首先必須先將 Node00 下載在 testASM 子目錄裡

piDSPv0bit 檔讓 eM_USB0 模組 FPGA 具備 DSP 功能才能執行光纖網路通訊

操作如下

此時您就可以選擇分別下載至各模組 FPGA 檔 bit

74

安裝 FPLC 注意事項

當您進入 FPLC 時

按 FILE 選擇 programhellip 選擇檔案為 exp_dcmplc 出現下面畫面

正常顯示畫面為

75

DOS 環境操作

在 PC 端的操作是在 Windows 環境中的 DOS 視窗中執行指令範例如下

eFPGA progNETbit 下載 FPGA電路至網路節點0(即 USB節點)中 eFPGA testLEDbit 1 下載 FPGA電路至網路節點1中

對於單一節點的控制程序如下

1將 eM_USB模組連結個人電腦的 USB端 2eM_USB模組開機 3執行下載指令即可 eFPGA xxxxbit 4若要更改 FPGA電路只要重新執行下載指令即可

對於多個網路節點的控制程序如下

1第一組 eM_USB模組連結個人電腦的 USB端再以光纖網路依序其他各節點 2連接 USB界面者為模組0從光纖發射端連接出去的模組為1依此類推 3將所有 eM_USB模組開機 4執行下載指令如下 eFPGA progNETbit 模組0必須先下載指定的 FPGA電路 eFPGA xxxxbit 1 再依序下載其他網路模組的 FPGA電路 eFPGA yyyybit 2 eFPGA zzzzbit 最後再重新下載模組0的 FPGA電路 5換句話說模組0必須先執行 progNETbit讓光纖網路接受 FPGA控制後才能透過光纖網路下載至其他節點等全部網路節點下載完畢後再將模組0的 FPGA重新下載讓模組0也可自由執行任意的 FPGA電路

6若要更改某一個網路節點中的 FPGA電路只要重新執行下述指令 eFPGA progNETbit 模組0必須先下載指定的 FPGA電路 eFPGA yyyybit 2 下載指定網路模組的 FPGA電路 eFPGA zzzz bit 最後再重新下載模組0的 FPGA電路 換句話說除非模組0中的 FPGA已經包括光纖網路管理電路否則一定要先在

模組0中下載網路管理電路後才能下載指定網路節點的 FPGA電路

76

光纖網路通訊 FPGA 發展系統

系統配置

光纖網路通訊 FPGA 發展系統的系統配置圖如下

個人電腦(Windows) eM_USB模組

0USB

eM_USB模組1

光纖網路

eM_USB模組2

eM_USB模組N

其中

1基本模組為 eM_USB模組可用 USB界面和個人電腦連線並提供 USB對光纖網路的轉換功能使得個人電腦可以獨立控制光纖網路中的每個網路節點

2eM_USB模組也可以作為光纖網路中的網路節點透過光纖網路而接受個人電腦的

監控 3就個人電腦而言不論是 USB界面直接連結或是以光纖網路間接連結的 eM_USB模組都是可以直接監控的網路節點最多可以同時控制一個 USB節點和 30個網路節點

4對於每一個網路節點個人電腦都可執行 eM_USB模組中 FPGA的電路下載工作並在適當的 FPGA電路配合下可執行 eM_USB模組中 FPGA內部電路的讀寫控制 5透過適當的 FPGA電路設計各網路節點都可透過光纖網路和其他任何網路節點

作同步通訊執行 FPGA內部記憶體的資料交換資料交換頻率可達 1KHz以上

77

網路模組配置

每個網路模組的標準配置圖如下

eM_USB模組光纖網路

USB eM_FPGA卡

eM_DEMO模組

eM_EXP實驗模組

DC電源

其中

1網路模組以 eM_USB模組為主提供基本的 USB界面和光纖網路連線 2eM_USB模組中的 FPGACPLD採用插卡型式可選擇不同的 eM_FPGA卡包括

eM_2V1K卡可選用 Virtex系列的 XC2V250和 XC2V1000 eM_3S1K卡可選用 Spartan3系列的 XC3S400XC3S1000和 XC3S1500 eM_3S50卡可選用 Spartan3系列的 XC3S50XC3S200和 XC3S400 eM_95XL卡可選用 9500XL系列的 XC95144XL和 XC95288XL 3eM_USB模組中的對外連線有兩種一種是 26P接頭用以連接既有的各種實驗模

組另一種是兩組 50P接頭將 FPGA中各接腳引出用以連接專題實驗 4eM_DEMO模組就是插上 50P接頭的教學模組其中包括 LED 數字顯示和 44鍵盤也具備兩組的 ADC和兩組的 DAC接頭提供類比訊號的測試工具

常用的實驗組合包括

1精簡組合包括(eM_USB+eM_FPGA)提供基本的網路節點適用於專題實驗 2標準組合包括(eM_USB+eM_FPGA+eM_DEMO)提供基礎 FPGA設計的教學實驗

3實驗組合包括(eM_USB+eM_FPGA+eM_DEMO+eM_EXP)提供進階的 FPGA實驗可依需求選用不同的實驗模組

78

eM_USB 模組

eM_USB 模組的電路配置圖如下

TxRx

DCPower

USB

JP2

JP3

光纖界面

外加電源

PC連線

JP1

eM_FPGA模組

FT232 CPLD FlashROM

SRAM

10cm

6cm

JP4

其中

1對外的連線接頭包括 DC電源 可選擇單電源(5V)或是多電源(5V+12V-12V)兩種 USB界面 直接連接個人電腦 光纖界面連接光纖網路 2實驗界面包括 JP1負責內部 CPLD的電路下載 JP2JP3兩組 50P的擴張用接頭 JP4 標準 26P接頭用以連接各種實驗模組 3內部的電路配置包括 A以 SO-DIMM接頭連接各種 eM_FPGA卡 B內附 EEPROMFlashROM和 SRAM提供 FPGA作應用測試 C以一顆 FT232BM作為 USB界面解碼而以一顆 CPLD作為光纖網路解碼 D提供各種 eM_FPGA卡的電路下載功能 4內附五顆 LED由上而下依序為 usbLED指示 USB界面的讀寫狀態 tstLED可由 FPGA電路自行定義 stsLED可由 FPGA電路自行定義 RxLED 可由 FPGA電路自行定義 TxLED 可由 FPGA電路自行定義

79

外部接腳定義

外部接頭的接點順序圖示如下

上視圖

JP11 9 JP4

126225

JP31

50249

JP21

50249

而各接頭的接點定義如下

JP1 JP4 JP2 JP3 1+33V 1+12V 2+12V 1 GND 2 GND 1 GND 2 GND 2GND 3 ADC 4 DAC 3POWER 4ALARM 3 +5V 4 +5V 3nc 5 yPB2 6 yPB3 5RxNET 6TxNET 5+12V 6+12V 4TCK 7 yPB1 6 yPB4 7RxUSB 6TxUSB 7-12V 6-12V 5nc 9 yPB0 10yPB5 9RxCAN 10TxCAN 9 ADC 10 DAC 6TDO 11yPB6 12yPB7 11P0D0 12P0D1 11P1D0 12P1D1 7TDI 13yGND 14yPC3 13P0D2 14P0D3 13P1D2 14P1D3 8nc 15yPC2 16yPC1 15P0D4 16P0D5 15P1D4 16P1D5 9TMS 17yPC0 18yPA0 17P0D6 18P0D7 17P1D6 18P1D7 19yPA1 20yPA2 19P0D8 20P0D9 19P1D8 20P1D9 21yPA3 22GND 21P0D10 22P0D11 21P1D10 22P1D11 23GND 24+5V 23P0D12 24P0D13 23P1D12 24P1D13 25+5V 26nc 25P0D14 26P0D15 25P1D14 26P1D15 27P2D0 28P2D1 27PxA0 28PxA1 29P2D2 30P2D3 29PxA2 30PxA3 31P2D4 32P2D5 31PxA4 32PxA5 33P2D6 34P2D7 33PxA6 34PxA7 35P2D8 36P2D9 35PxB0 36PxB1 37P2D10 38P2D11 37PxB2 38PxB3 39P2D12 40P2D13 39PxB4 40PxB5 41P2D14 42P2D15 41PxB6 42PxB7 43ADC0 44ADC1 43PxC0 44PxC1 45ADC2 46ADC3 45PxC2 46PxC3 47ADC4 48ADC5 47PxC4 48PxC5 49DAC0 50DAC1 49PxC6 50PxC7

80

eM_FPGA 模組

在各種 eM_FPGA 模組中FPGA 對外電路的標準配置圖如下

24576MHz

FlashROM

26PSRAM

EEPROM

mD[8]

yPA[4]

FPGACPLD

mA[19]mRDmWRmCSeeCKeeCSeeDIeeDO

光纖界面 RxNETTxNET

USB 界面 RxUSBTxUSBCLK24MPOWERALARM

LED

tstLEDstsLEDRxLEDTxLED

yPB[8]yPC[4]

ADCDAC

ADC[8]

實驗模組

ADC[2]

DAC[2]

xPA[4]

xPB[8]

xPC[4]

基礎實驗

其中

1FPGACPLD可以選擇下述幾種 XC2V250XC2V1000 採用 eM_2V1K模組其中 FPGA為 FG456包裝 XC3S400XC3S1000XC3S1500採用 eM_3S1K模組其中 FPGA為 FG456包裝 XC3S400XC3S1000XC3S1500採用 eM_3S1K模組其中 FPGA為 FG456包裝 XC3S50XC3S200XC3S400 採用 eM_3S50模組其中 FPGA為 TQ144包裝 XC95144XLXC95288XL 採用 eM_95XL模組其中 CPLD為 TQ144包裝 2採用 FG456包裝者可以控制所有的 IO界面 3採用 TQ144包裝者只是不能控制 RAM和 FlashROM而可以控制其他所有的界面 4所有 FPGA模組都可自由選擇由 USB界面或是由光纖界面下載電路但是 CPLD模組只能固定由 USB界面下載電路

5所有 FPGACPLD模組都可透過 26P接頭連接既有的各種實驗模組

81

FPGA 接腳對照表

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

mD0 XD6 mD0 A17 C13 -- -- mD1 XD7 mD1 B17 D12 -- -- mD2 XD8 mD2 C17 D11 -- -- mD3 XD9 mD3 D17 C11 -- -- mD4 XD10 mD4 E17 D10 -- -- mD5 XD11 mD5 E16 C10 -- -- mD6 XD12 mD6 E14 D9 -- -- mD7 XD13 mD7 E13 D7 -- -- mA0 XD14 mA0 D13 C7 -- -- mA1 XD15 mA1 C13 D6 -- -- mA2 XA0 mA2 V5 C3 -- -- mA3 XA1 mA3 U5 C4 -- -- mA4 XA2 mA4 Y2 D3 -- -- mA5 XA3 mA5 Y1 D4 -- -- mA6 XA4 mA6 V4 E3 -- -- mA7 XA5 mA7 V3 E4 -- -- mA8 XA6 mA8 W2 F3 -- -- mA9 XA7 mA9 W1 F4 -- -- mA10 XA8 mA10 T2 G6 -- -- mA11 XA9 mA11 T1 K3 -- -- mA12 XA10 mA12 R4 K10 -- -- mA13 XA11 mA13 R3 L3 -- -- mA14 XA12 mA14 R2 L4 -- -- mRD XRD mRD R1 D5 -- -- mWR XWR mWR P6 C6 -- --

POWER P0A0 POWER B4 B20 P1 P5 ALARM P0A1 ALARM A4 A19 P2 P6 RxNET P0A2 RxNET C4 B19 P4 P7 TxNET P0A3 TxNET C5 A18 P5 P9 RxUSB P0B0 RxUSB B5 A15 P6 P10 TxUSB P0B1 TxUSB A5 B15 P7 P11 RxCAN P0B2 RxCAN D6 A14 P8 P12 RxCAN P0B3 TxCAN C6 B14 P10 P13

CLK24M CLK24M CLK24M E12 B12 P124 P38

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

PWM0H P3A0 P0D0 E6 A8 P21 P23 PWM0L P3A1 P0D1 E5 B8 P23 P24 PWM1H P3A2 P0D2 C2 B6 P24 P25 PWM1L P3A3 P0D3 C1 A5 P25 P26 PWM2H P3A4 P0D4 D2 B5 P26 P27

82

PWM2L P3A5 P0D5 D1 A4 P27 P28 PWMenb P3A6 P0D6 E4 B4 P28 P30 PHT1Z P3A7 P0D7 E3 A3 P30 P31 PHT1A P3B0 P0D8 G2 C1 P31 P32 PHT1B P3B1 P0D9 G1 C2 P32 P33 PHT0A P3B2 P0D10 H5 D1 P33 P34 PHT0B P3B3 P0D11 J6 D2 P35 P35 AMP0 P3B4 P0D12 H4 E1 P36 P39 AMP1 P3B5 P0D13 H3 E2 P40 P40 AMP2 P3B6 P0D14 H2 F2 P41 P41 AMP3 P3B7 P0D15 H1 G1 P44 P43 eeSK P0C3 P1D0 C10 B9 P20 P22 eeCS P0C2 P1D1 D10 A9 P18 P21 eeDI P0C1 P1D2 F10 B10 P17 P20 eeDO P0C0 P1D3 E10 B11 P15 P19 ssCK P0B7 P1D4 E8 A11 P14 P17 ssCS P0B6 P1D5 E7 A12 P13 P16 ssDI P0B5 P1D6 A6 B13 P12 P15 ssDO P0B4 P1D7 B6 A13 P11 P14

ppCLK P3C0 P1D8 K4 G2 P46 P44 ppDIN P3C1 P1D9 K3 K1 P47 P45 TxD P3C2 P1D10 K2 K2 P50 P46 RxD P3C3 P1D11 K1 L1 P51 P48

tstLED P3C4 P1D12 L5 L2 P52 P49 stsLED P3C5 P1D13 L4 M1 P53 P50 RxLED P3C6 P1D14 L3 M2 P55 P51 TxLED P3C7 P1D15 L2 N1 P56 P52

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

xPA0 P2A0 P2D0 AA3 N2 P59 P53 xPA1 P2A1 P2D1 Y4 T1 P60 P54 xPA2 P2A2 P2D2 AA4 T2 P63 P56 xPA3 P2A3 P2D3 AB4 U2 P68 P57 xPC0 P2A4 P2D4 W5 V1 P69 P58 xPC1 P2A5 P2D5 Y5 V2 P70 P59 xPC2 P2A6 P2D6 AA5 W1 P73 P60 xPC3 P2A7 P2D7 AB5 W2 P74 P61

-- P2B0 P2D8 V6 Y1 P76 P64 -- P2B1 P2D9 V7 Y2 P77 P66 -- P2B2 P2D10 W6 AA3 P78 P68

mCS P2B3 P2D11 Y6 AB4 P79 P69 mA15 P2B4 P2D12 V9 AA4 P80 P70 mA16 P2B5 P2D13 V10 AB5 P82 P71 mA17 P2B6 P2D14 W10 AA5 P83 P74 mA18 P2B7 P2D15 Y10 AA6 P84 P75 CS0 P2C0 ADC0 AA10 AB8 P85 P76

83

SDIN0 P2C1 ADC1 AB10 AA8 P86 P77 CS1 P2C2 ADC2 U10 AB9 P87 P78

SDIN1 P2C3 ADC3 U11 AA9 P89 P79 SCLK P2C4 ADC4 V11 AB10 P90 P80 CS2 P2C5 ADC5 W11 AA10 P92 P81

SDOUT P2C6 ADC6 Y11 AB11 P93 P82 LDAC P2C7 ADC7 AA11 AA11 P95 P83

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

xPB0 P1A0 PxA0 M1 M3 P135 P85 xPB1 P1A1 PxA1 M2 M4 P132 P86 yPB2 P1A2 PxA2 M3 N3 P131 P87 yPB3 P1A3 PxA3 M4 N4 P130 P88 yPB1 P1A4 PxA4 M5 T4 P129 P91 yPB4 P1A5 PxA5 M6 T5 P128 P92 yPB0 P1A6 PxA6 N1 U3 P127 P93 yPB5 P1A7 PxA7 N2 U4 P125 P94 yPB6 P1B0 PxB0 U13 V3 P119 P95 yPB7 P1B1 PxB1 V13 V4 P118 P96 xPB2 P1B2 PxB2 W13 W3 P116 P97 xPB3 P1B3 PxB3 Y13 W4 P113 P98 xPB4 P1B4 PxB4 AA13 Y3 P112 P100 xPB5 P1B5 PxB5 AB13 Y4 P96 P101 yPC3 P1B6 PxB6 U12 Y5 P97 P102 yPC2 P1B7 PxB7 V12 W5 P98 P103 yPC1 P1C7 PxC0 AB17 W11 P108 P113 yPC0 P1C6 PxC1 AA17 Y11 P107 P112 yPA0 P1C5 PxC2 Y17 W10 P105 P111 yPA1 P1C4 PxC3 W17 Y10 P104 P110 yPA2 P1C3 PxC4 AB18 W9 P103 P107 yPA3 P1C2 PxC5 AA18 W8 P102 P106 xPB6 P1C1 PxC6 Y18 W6 P100 P105 xPB7 P1C0 PxC7 W18 Y6 P99 P104

84

eM_DEMO 模組

eM_DEMO 模組的電路配置圖如下

eM_USB 模組

數字型 LED

0 1 2 34 5 6 78 9 A BC D E F

燈號型 LED

44 鍵盤

ADC0 ADC1 DAC0 DAC1

LED 選擇KEY 選擇

其中

1eM_DEMO模組的基本功能包括 A將 xPAxPBxPC等 16個 IO訊號引出控制 LED和鍵盤電路 B將 ADDA訊號引出並放大成+-10V的工作範圍 2LED和鍵盤可以選擇三種模式由 LED和 KEY 兩組開關作選擇圖示如下

模式1

0123

模式2 模式3

0 1 2 34 5 6 78 9 A BC D E F

0123

3模式14鍵輸入並搭配 16點的 LED燈號顯示其中 16點 LED分別對映到 xPA[0~3]xPB[0~7]和 xPC[0~3] 4組按鍵分別對映到 xPC[0~3] 4模式24鍵輸入並搭配四個 7段式數字顯示其中 數字顯示由 xPA[0~3]作數字掃瞄而由 xPB[0~7]作 7段式 LED控制 4組按鍵 分別對映到 xPC[0~3] 5模式316鍵輸入並搭配四個 7段式數字顯示其中 數字顯示由 xPA[0~3]作數字掃瞄而由 xPB[0~7]作 7段式 LED控制 16組按鍵由 xPA[0~3]作鍵盤掃瞄而由 xPC[0~3]作鍵盤讀取 6根據VHDL與數位邏輯設計的章節其中 第 1章至 10章的實驗採用模式1而 第 11章實驗採用模式2而 第 12章之後的實驗都採用模式3

85

FPGA UCF 定義

eM_3S1K 模組

NET CLK LOC = B12

NET XAlt0gt LOC = N2

NET XAlt1gt LOC = T1

NET XAlt2gt LOC = T2

NET XAlt3gt LOC = U2

NET XBlt0gt LOC = M3

NET XBlt1gt LOC = M4

NET XBlt2gt LOC = W3

NET XBlt3gt LOC = W4

NET XBlt4gt LOC = Y3

NET XBlt5gt LOC = Y4

NET XBlt6gt LOC = W6

NET XBlt7gt LOC = Y6

NET XClt0gt LOC = V1

NET XClt1gt LOC = V2

NET XClt2gt LOC = W1

NET XClt3gt LOC = W2

NET YAlt0gt LOC = W10

JP4 接頭

NET YAlt1gt LOC = Y10

NET YAlt2gt LOC = W9

NET YAlt3gt LOC = W8

NET YBlt0gt LOC = U3

NET YBlt1gt LOC = T4

NET YBlt2gt LOC = N3

NET YBlt3gt LOC = N4

NET YBlt4gt LOC = T5

NET YBlt5gt LOC = U4

NET YBlt6gt LOC = V3

NET YBlt7gt LOC = V4

NET YClt0gt LOC = Y11

NET YClt1gt LOC = W11

NET YClt2gt LOC = W5

NET YClt3gt LOC = Y5

在光碟片中 RFFPGAVHDLDEMOBIT3S1K 裡有 VHDL 與數位邏輯設計書本範例原始檔與合成檔

86

eM_3S50 模組

NET CLK LOC = P124

NET XAlt0gt LOC = P59

NET XAlt1gt LOC = P60

NET XAlt2gt LOC = P63

NET XAlt3gt LOC = P68

NET XBlt0gt LOC = P135

NET XBlt1gt LOC = P132

NET XBlt2gt LOC = P116

NET XBlt3gt LOC = P113

NET XBlt4gt LOC = P112

NET XBlt5gt LOC = P96

NET XBlt6gt LOC = P100

NET XBlt7gt LOC = P99

NET XClt0gt LOC = P69

NET XClt1gt LOC = P70

NET XClt2gt LOC = P73

NET XClt3gt LOC = P74

NET YAlt0gt LOC = P105

JP4 接頭

NET YAlt1gt LOC = P104

NET YAlt2gt LOC = P103

NET YAlt3gt LOC = P102

NET YBlt0gt LOC = P127

NET YBlt1gt LOC = P129

NET YBlt2gt LOC = P131

NET YBlt3gt LOC = P130

NET YBlt4gt LOC = P128

NET YBlt5gt LOC = P125

NET YBlt6gt LOC = P119

NET YBlt7gt LOC = P118

NET YClt0gt LOC = P107

NET YClt1gt LOC = P108

NET YClt2gt LOC = P98

NET YClt3gt LOC = P97

在光碟片中 RFFPGAVHDLDEMOBIT3S200 裡有VHDL與數位邏輯設計書本範例原始檔與合成檔

87

eM_95XL 模組

NET CLK LOC = SPIN38

NET XAlt0gt LOC = SPIN53

NET XAlt1gt LOC = SPIN54

NET XAlt2gt LOC = SPIN56

NET XAlt3gt LOC = SPIN57

NET XBlt0gt LOC = SPIN85

NET XBlt1gt LOC = SPIN86

NET XBlt2gt LOC = SPIN97

NET XBlt3gt LOC = SPIN98

NET XBlt4gt LOC = SPIN100

NET XBlt5gt LOC = SPIN101

NET XBlt6gt LOC = SPIN105

NET XBlt7gt LOC = SPIN104

NET XClt0gt LOC = SPIN58

NET XClt1gt LOC = SPIN59

NET XClt2gt LOC = SPIN60

NET XClt3gt LOC = SPIN61

NET YAlt0gt LOC = SPIN111

JP4 接頭

NET YAlt1gt LOC = SPIN110

NET YAlt2gt LOC = SPIN107

NET YAlt3gt LOC = SPIN106

NET YBlt0gt LOC = SPIN93

NET YBlt1gt LOC = SPIN91

NET YBlt2gt LOC = SPIN87

NET YBlt3gt LOC = SPIN88

NET YBlt4gt LOC = SPIN92

NET YBlt5gt LOC = SPIN94

NET YBlt6gt LOC = SPIN95

NET YBlt7gt LOC = SPIN96

NET YClt0gt LOC = SPIN112

NET YClt1gt LOC = SPIN113

NET YClt2gt LOC = SPIN103

NET YClt3gt LOC = SPIN102

在光碟片中 RFFPGAVHDLDEMOSVF95288XL 裡有VHDL與數位邏輯設計書本範例原始檔與合成

檔案

88

eM_FPGA 模組

NET CLK LOC = E12

NET XAlt0gt LOC = AA3

NET XAlt1gt LOC = Y4

NET XAlt2gt LOC = AA4

NET XAlt3gt LOC = AB4

NET XBlt0gt LOC = M1

NET XBlt1gt LOC = M2

NET XBlt2gt LOC = W13

NET XBlt3gt LOC = Y13

NET XBlt4gt LOC = AA13

NET XBlt5gt LOC = AB13

NET XBlt6gt LOC = Y18

NET XBlt7gt LOC = W18

NET XClt0gt LOC = W5

NET XClt1gt LOC = Y5

NET XClt2gt LOC = AA5

NET XClt3gt LOC = AB5

NET YAlt0gt LOC = Y17

JP4 接頭

NET YAlt1gt LOC = W17

NET YAlt2gt LOC = AB18

NET YAlt3gt LOC = AA18

NET YBlt0gt LOC = N1

NET YBlt1gt LOC = M5

NET YBlt2gt LOC = M3

NET YBlt3gt LOC = M4

NET YBlt4gt LOC = M6

NET YBlt5gt LOC = N2

NET YBlt6gt LOC = U13

NET YBlt7gt LOC = V13

NET YClt0gt LOC = AA17

NET YClt1gt LOC = AB17

NET YClt2gt LOC = V12

NET YClt3gt LOC = U12

在光碟片中 RFFPGAVHDLDEMOBIT2V250 裡有VHDL與數位邏輯設計書本範例原始檔與合成檔

89

Page 72: RFFPGA 直流馬達實驗手冊juniortek.com.tw/program/manual/RF-DC-mal.pdf · em_demo模組 em_dcm 直流伺服馬達 dc電源 rffpga 系統的直流馬達實驗規劃 其中包括:

eM_USB 模組

數字型 LED

0 1 2 34 5 6 78 9 A BC D E F

燈號型 LED

44 鍵盤

ADC0 ADC1 DAC0 DAC1

LED 選擇KEY 選擇

模 式 1

0123

注意操作畫面 3與 4 說明開關與按鍵選擇位置後選擇程式下載再按程式啟動如您

按下 0-3按鍵時燈號型 LED會有不同方向閃爍顯示程式停止時結束所有 IO控制動作再按回首頁選擇其他實驗 實驗四與實驗五

模式3

0 1 2 34 5 6 78 9 A BC D E F

按照上面開關選擇直接操作如果以上實驗皆能按照正常操作表示您光纖網路通訊

FPGA發展模組以能正常使用 注意 開機與關機動作順序如下

開機電腦啟動 --- eM_USB 模組電源接上 --- USB 接上電腦 ---

啟動 FPLC 軟體 --- 下載 FPGA 程式

關機關閉 FPLC 軟體 --- eM_USB 模組電源拔掉 --- 拔掉電腦 USB 接頭 ---關掉

電腦

如果以上順序有亂可能造成 USB 找不到驅動造成無法下載經過幾次測試還是

無法下載建議重新啟動電腦主機按照正確步驟操作

72

FPGA 下載操作

進入 FPLC 操作系統按照下列步驟選擇節點模組與下載 bit FPGA 檔案

在 VHDLDEMO 子目錄下您可以選擇您目前 FPGA 種類型號在此型號下我們已將 VHDL

與數位邏輯設計課本範例全部放於此處

73

光纖網路連線 FPGA 下載操作

首先利用光纖線將 eM_USB0 模組光纖輸出埠接至 eM_USB1 模組光纖輸入埠以此

類推最後再將最後 eM_USBN 模組光纖輸出埠接至 eM_USB0 模組光纖輸入埠配置

如附圖方式

個人電腦(Windows) eM_USB模組

0USB

eM_USB模組1

光纖網路

eM_USB模組2

eM_USB模組N

配置完成後進入 FPLC 系統首先必須先將 Node00 下載在 testASM 子目錄裡

piDSPv0bit 檔讓 eM_USB0 模組 FPGA 具備 DSP 功能才能執行光纖網路通訊

操作如下

此時您就可以選擇分別下載至各模組 FPGA 檔 bit

74

安裝 FPLC 注意事項

當您進入 FPLC 時

按 FILE 選擇 programhellip 選擇檔案為 exp_dcmplc 出現下面畫面

正常顯示畫面為

75

DOS 環境操作

在 PC 端的操作是在 Windows 環境中的 DOS 視窗中執行指令範例如下

eFPGA progNETbit 下載 FPGA電路至網路節點0(即 USB節點)中 eFPGA testLEDbit 1 下載 FPGA電路至網路節點1中

對於單一節點的控制程序如下

1將 eM_USB模組連結個人電腦的 USB端 2eM_USB模組開機 3執行下載指令即可 eFPGA xxxxbit 4若要更改 FPGA電路只要重新執行下載指令即可

對於多個網路節點的控制程序如下

1第一組 eM_USB模組連結個人電腦的 USB端再以光纖網路依序其他各節點 2連接 USB界面者為模組0從光纖發射端連接出去的模組為1依此類推 3將所有 eM_USB模組開機 4執行下載指令如下 eFPGA progNETbit 模組0必須先下載指定的 FPGA電路 eFPGA xxxxbit 1 再依序下載其他網路模組的 FPGA電路 eFPGA yyyybit 2 eFPGA zzzzbit 最後再重新下載模組0的 FPGA電路 5換句話說模組0必須先執行 progNETbit讓光纖網路接受 FPGA控制後才能透過光纖網路下載至其他節點等全部網路節點下載完畢後再將模組0的 FPGA重新下載讓模組0也可自由執行任意的 FPGA電路

6若要更改某一個網路節點中的 FPGA電路只要重新執行下述指令 eFPGA progNETbit 模組0必須先下載指定的 FPGA電路 eFPGA yyyybit 2 下載指定網路模組的 FPGA電路 eFPGA zzzz bit 最後再重新下載模組0的 FPGA電路 換句話說除非模組0中的 FPGA已經包括光纖網路管理電路否則一定要先在

模組0中下載網路管理電路後才能下載指定網路節點的 FPGA電路

76

光纖網路通訊 FPGA 發展系統

系統配置

光纖網路通訊 FPGA 發展系統的系統配置圖如下

個人電腦(Windows) eM_USB模組

0USB

eM_USB模組1

光纖網路

eM_USB模組2

eM_USB模組N

其中

1基本模組為 eM_USB模組可用 USB界面和個人電腦連線並提供 USB對光纖網路的轉換功能使得個人電腦可以獨立控制光纖網路中的每個網路節點

2eM_USB模組也可以作為光纖網路中的網路節點透過光纖網路而接受個人電腦的

監控 3就個人電腦而言不論是 USB界面直接連結或是以光纖網路間接連結的 eM_USB模組都是可以直接監控的網路節點最多可以同時控制一個 USB節點和 30個網路節點

4對於每一個網路節點個人電腦都可執行 eM_USB模組中 FPGA的電路下載工作並在適當的 FPGA電路配合下可執行 eM_USB模組中 FPGA內部電路的讀寫控制 5透過適當的 FPGA電路設計各網路節點都可透過光纖網路和其他任何網路節點

作同步通訊執行 FPGA內部記憶體的資料交換資料交換頻率可達 1KHz以上

77

網路模組配置

每個網路模組的標準配置圖如下

eM_USB模組光纖網路

USB eM_FPGA卡

eM_DEMO模組

eM_EXP實驗模組

DC電源

其中

1網路模組以 eM_USB模組為主提供基本的 USB界面和光纖網路連線 2eM_USB模組中的 FPGACPLD採用插卡型式可選擇不同的 eM_FPGA卡包括

eM_2V1K卡可選用 Virtex系列的 XC2V250和 XC2V1000 eM_3S1K卡可選用 Spartan3系列的 XC3S400XC3S1000和 XC3S1500 eM_3S50卡可選用 Spartan3系列的 XC3S50XC3S200和 XC3S400 eM_95XL卡可選用 9500XL系列的 XC95144XL和 XC95288XL 3eM_USB模組中的對外連線有兩種一種是 26P接頭用以連接既有的各種實驗模

組另一種是兩組 50P接頭將 FPGA中各接腳引出用以連接專題實驗 4eM_DEMO模組就是插上 50P接頭的教學模組其中包括 LED 數字顯示和 44鍵盤也具備兩組的 ADC和兩組的 DAC接頭提供類比訊號的測試工具

常用的實驗組合包括

1精簡組合包括(eM_USB+eM_FPGA)提供基本的網路節點適用於專題實驗 2標準組合包括(eM_USB+eM_FPGA+eM_DEMO)提供基礎 FPGA設計的教學實驗

3實驗組合包括(eM_USB+eM_FPGA+eM_DEMO+eM_EXP)提供進階的 FPGA實驗可依需求選用不同的實驗模組

78

eM_USB 模組

eM_USB 模組的電路配置圖如下

TxRx

DCPower

USB

JP2

JP3

光纖界面

外加電源

PC連線

JP1

eM_FPGA模組

FT232 CPLD FlashROM

SRAM

10cm

6cm

JP4

其中

1對外的連線接頭包括 DC電源 可選擇單電源(5V)或是多電源(5V+12V-12V)兩種 USB界面 直接連接個人電腦 光纖界面連接光纖網路 2實驗界面包括 JP1負責內部 CPLD的電路下載 JP2JP3兩組 50P的擴張用接頭 JP4 標準 26P接頭用以連接各種實驗模組 3內部的電路配置包括 A以 SO-DIMM接頭連接各種 eM_FPGA卡 B內附 EEPROMFlashROM和 SRAM提供 FPGA作應用測試 C以一顆 FT232BM作為 USB界面解碼而以一顆 CPLD作為光纖網路解碼 D提供各種 eM_FPGA卡的電路下載功能 4內附五顆 LED由上而下依序為 usbLED指示 USB界面的讀寫狀態 tstLED可由 FPGA電路自行定義 stsLED可由 FPGA電路自行定義 RxLED 可由 FPGA電路自行定義 TxLED 可由 FPGA電路自行定義

79

外部接腳定義

外部接頭的接點順序圖示如下

上視圖

JP11 9 JP4

126225

JP31

50249

JP21

50249

而各接頭的接點定義如下

JP1 JP4 JP2 JP3 1+33V 1+12V 2+12V 1 GND 2 GND 1 GND 2 GND 2GND 3 ADC 4 DAC 3POWER 4ALARM 3 +5V 4 +5V 3nc 5 yPB2 6 yPB3 5RxNET 6TxNET 5+12V 6+12V 4TCK 7 yPB1 6 yPB4 7RxUSB 6TxUSB 7-12V 6-12V 5nc 9 yPB0 10yPB5 9RxCAN 10TxCAN 9 ADC 10 DAC 6TDO 11yPB6 12yPB7 11P0D0 12P0D1 11P1D0 12P1D1 7TDI 13yGND 14yPC3 13P0D2 14P0D3 13P1D2 14P1D3 8nc 15yPC2 16yPC1 15P0D4 16P0D5 15P1D4 16P1D5 9TMS 17yPC0 18yPA0 17P0D6 18P0D7 17P1D6 18P1D7 19yPA1 20yPA2 19P0D8 20P0D9 19P1D8 20P1D9 21yPA3 22GND 21P0D10 22P0D11 21P1D10 22P1D11 23GND 24+5V 23P0D12 24P0D13 23P1D12 24P1D13 25+5V 26nc 25P0D14 26P0D15 25P1D14 26P1D15 27P2D0 28P2D1 27PxA0 28PxA1 29P2D2 30P2D3 29PxA2 30PxA3 31P2D4 32P2D5 31PxA4 32PxA5 33P2D6 34P2D7 33PxA6 34PxA7 35P2D8 36P2D9 35PxB0 36PxB1 37P2D10 38P2D11 37PxB2 38PxB3 39P2D12 40P2D13 39PxB4 40PxB5 41P2D14 42P2D15 41PxB6 42PxB7 43ADC0 44ADC1 43PxC0 44PxC1 45ADC2 46ADC3 45PxC2 46PxC3 47ADC4 48ADC5 47PxC4 48PxC5 49DAC0 50DAC1 49PxC6 50PxC7

80

eM_FPGA 模組

在各種 eM_FPGA 模組中FPGA 對外電路的標準配置圖如下

24576MHz

FlashROM

26PSRAM

EEPROM

mD[8]

yPA[4]

FPGACPLD

mA[19]mRDmWRmCSeeCKeeCSeeDIeeDO

光纖界面 RxNETTxNET

USB 界面 RxUSBTxUSBCLK24MPOWERALARM

LED

tstLEDstsLEDRxLEDTxLED

yPB[8]yPC[4]

ADCDAC

ADC[8]

實驗模組

ADC[2]

DAC[2]

xPA[4]

xPB[8]

xPC[4]

基礎實驗

其中

1FPGACPLD可以選擇下述幾種 XC2V250XC2V1000 採用 eM_2V1K模組其中 FPGA為 FG456包裝 XC3S400XC3S1000XC3S1500採用 eM_3S1K模組其中 FPGA為 FG456包裝 XC3S400XC3S1000XC3S1500採用 eM_3S1K模組其中 FPGA為 FG456包裝 XC3S50XC3S200XC3S400 採用 eM_3S50模組其中 FPGA為 TQ144包裝 XC95144XLXC95288XL 採用 eM_95XL模組其中 CPLD為 TQ144包裝 2採用 FG456包裝者可以控制所有的 IO界面 3採用 TQ144包裝者只是不能控制 RAM和 FlashROM而可以控制其他所有的界面 4所有 FPGA模組都可自由選擇由 USB界面或是由光纖界面下載電路但是 CPLD模組只能固定由 USB界面下載電路

5所有 FPGACPLD模組都可透過 26P接頭連接既有的各種實驗模組

81

FPGA 接腳對照表

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

mD0 XD6 mD0 A17 C13 -- -- mD1 XD7 mD1 B17 D12 -- -- mD2 XD8 mD2 C17 D11 -- -- mD3 XD9 mD3 D17 C11 -- -- mD4 XD10 mD4 E17 D10 -- -- mD5 XD11 mD5 E16 C10 -- -- mD6 XD12 mD6 E14 D9 -- -- mD7 XD13 mD7 E13 D7 -- -- mA0 XD14 mA0 D13 C7 -- -- mA1 XD15 mA1 C13 D6 -- -- mA2 XA0 mA2 V5 C3 -- -- mA3 XA1 mA3 U5 C4 -- -- mA4 XA2 mA4 Y2 D3 -- -- mA5 XA3 mA5 Y1 D4 -- -- mA6 XA4 mA6 V4 E3 -- -- mA7 XA5 mA7 V3 E4 -- -- mA8 XA6 mA8 W2 F3 -- -- mA9 XA7 mA9 W1 F4 -- -- mA10 XA8 mA10 T2 G6 -- -- mA11 XA9 mA11 T1 K3 -- -- mA12 XA10 mA12 R4 K10 -- -- mA13 XA11 mA13 R3 L3 -- -- mA14 XA12 mA14 R2 L4 -- -- mRD XRD mRD R1 D5 -- -- mWR XWR mWR P6 C6 -- --

POWER P0A0 POWER B4 B20 P1 P5 ALARM P0A1 ALARM A4 A19 P2 P6 RxNET P0A2 RxNET C4 B19 P4 P7 TxNET P0A3 TxNET C5 A18 P5 P9 RxUSB P0B0 RxUSB B5 A15 P6 P10 TxUSB P0B1 TxUSB A5 B15 P7 P11 RxCAN P0B2 RxCAN D6 A14 P8 P12 RxCAN P0B3 TxCAN C6 B14 P10 P13

CLK24M CLK24M CLK24M E12 B12 P124 P38

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

PWM0H P3A0 P0D0 E6 A8 P21 P23 PWM0L P3A1 P0D1 E5 B8 P23 P24 PWM1H P3A2 P0D2 C2 B6 P24 P25 PWM1L P3A3 P0D3 C1 A5 P25 P26 PWM2H P3A4 P0D4 D2 B5 P26 P27

82

PWM2L P3A5 P0D5 D1 A4 P27 P28 PWMenb P3A6 P0D6 E4 B4 P28 P30 PHT1Z P3A7 P0D7 E3 A3 P30 P31 PHT1A P3B0 P0D8 G2 C1 P31 P32 PHT1B P3B1 P0D9 G1 C2 P32 P33 PHT0A P3B2 P0D10 H5 D1 P33 P34 PHT0B P3B3 P0D11 J6 D2 P35 P35 AMP0 P3B4 P0D12 H4 E1 P36 P39 AMP1 P3B5 P0D13 H3 E2 P40 P40 AMP2 P3B6 P0D14 H2 F2 P41 P41 AMP3 P3B7 P0D15 H1 G1 P44 P43 eeSK P0C3 P1D0 C10 B9 P20 P22 eeCS P0C2 P1D1 D10 A9 P18 P21 eeDI P0C1 P1D2 F10 B10 P17 P20 eeDO P0C0 P1D3 E10 B11 P15 P19 ssCK P0B7 P1D4 E8 A11 P14 P17 ssCS P0B6 P1D5 E7 A12 P13 P16 ssDI P0B5 P1D6 A6 B13 P12 P15 ssDO P0B4 P1D7 B6 A13 P11 P14

ppCLK P3C0 P1D8 K4 G2 P46 P44 ppDIN P3C1 P1D9 K3 K1 P47 P45 TxD P3C2 P1D10 K2 K2 P50 P46 RxD P3C3 P1D11 K1 L1 P51 P48

tstLED P3C4 P1D12 L5 L2 P52 P49 stsLED P3C5 P1D13 L4 M1 P53 P50 RxLED P3C6 P1D14 L3 M2 P55 P51 TxLED P3C7 P1D15 L2 N1 P56 P52

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

xPA0 P2A0 P2D0 AA3 N2 P59 P53 xPA1 P2A1 P2D1 Y4 T1 P60 P54 xPA2 P2A2 P2D2 AA4 T2 P63 P56 xPA3 P2A3 P2D3 AB4 U2 P68 P57 xPC0 P2A4 P2D4 W5 V1 P69 P58 xPC1 P2A5 P2D5 Y5 V2 P70 P59 xPC2 P2A6 P2D6 AA5 W1 P73 P60 xPC3 P2A7 P2D7 AB5 W2 P74 P61

-- P2B0 P2D8 V6 Y1 P76 P64 -- P2B1 P2D9 V7 Y2 P77 P66 -- P2B2 P2D10 W6 AA3 P78 P68

mCS P2B3 P2D11 Y6 AB4 P79 P69 mA15 P2B4 P2D12 V9 AA4 P80 P70 mA16 P2B5 P2D13 V10 AB5 P82 P71 mA17 P2B6 P2D14 W10 AA5 P83 P74 mA18 P2B7 P2D15 Y10 AA6 P84 P75 CS0 P2C0 ADC0 AA10 AB8 P85 P76

83

SDIN0 P2C1 ADC1 AB10 AA8 P86 P77 CS1 P2C2 ADC2 U10 AB9 P87 P78

SDIN1 P2C3 ADC3 U11 AA9 P89 P79 SCLK P2C4 ADC4 V11 AB10 P90 P80 CS2 P2C5 ADC5 W11 AA10 P92 P81

SDOUT P2C6 ADC6 Y11 AB11 P93 P82 LDAC P2C7 ADC7 AA11 AA11 P95 P83

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

xPB0 P1A0 PxA0 M1 M3 P135 P85 xPB1 P1A1 PxA1 M2 M4 P132 P86 yPB2 P1A2 PxA2 M3 N3 P131 P87 yPB3 P1A3 PxA3 M4 N4 P130 P88 yPB1 P1A4 PxA4 M5 T4 P129 P91 yPB4 P1A5 PxA5 M6 T5 P128 P92 yPB0 P1A6 PxA6 N1 U3 P127 P93 yPB5 P1A7 PxA7 N2 U4 P125 P94 yPB6 P1B0 PxB0 U13 V3 P119 P95 yPB7 P1B1 PxB1 V13 V4 P118 P96 xPB2 P1B2 PxB2 W13 W3 P116 P97 xPB3 P1B3 PxB3 Y13 W4 P113 P98 xPB4 P1B4 PxB4 AA13 Y3 P112 P100 xPB5 P1B5 PxB5 AB13 Y4 P96 P101 yPC3 P1B6 PxB6 U12 Y5 P97 P102 yPC2 P1B7 PxB7 V12 W5 P98 P103 yPC1 P1C7 PxC0 AB17 W11 P108 P113 yPC0 P1C6 PxC1 AA17 Y11 P107 P112 yPA0 P1C5 PxC2 Y17 W10 P105 P111 yPA1 P1C4 PxC3 W17 Y10 P104 P110 yPA2 P1C3 PxC4 AB18 W9 P103 P107 yPA3 P1C2 PxC5 AA18 W8 P102 P106 xPB6 P1C1 PxC6 Y18 W6 P100 P105 xPB7 P1C0 PxC7 W18 Y6 P99 P104

84

eM_DEMO 模組

eM_DEMO 模組的電路配置圖如下

eM_USB 模組

數字型 LED

0 1 2 34 5 6 78 9 A BC D E F

燈號型 LED

44 鍵盤

ADC0 ADC1 DAC0 DAC1

LED 選擇KEY 選擇

其中

1eM_DEMO模組的基本功能包括 A將 xPAxPBxPC等 16個 IO訊號引出控制 LED和鍵盤電路 B將 ADDA訊號引出並放大成+-10V的工作範圍 2LED和鍵盤可以選擇三種模式由 LED和 KEY 兩組開關作選擇圖示如下

模式1

0123

模式2 模式3

0 1 2 34 5 6 78 9 A BC D E F

0123

3模式14鍵輸入並搭配 16點的 LED燈號顯示其中 16點 LED分別對映到 xPA[0~3]xPB[0~7]和 xPC[0~3] 4組按鍵分別對映到 xPC[0~3] 4模式24鍵輸入並搭配四個 7段式數字顯示其中 數字顯示由 xPA[0~3]作數字掃瞄而由 xPB[0~7]作 7段式 LED控制 4組按鍵 分別對映到 xPC[0~3] 5模式316鍵輸入並搭配四個 7段式數字顯示其中 數字顯示由 xPA[0~3]作數字掃瞄而由 xPB[0~7]作 7段式 LED控制 16組按鍵由 xPA[0~3]作鍵盤掃瞄而由 xPC[0~3]作鍵盤讀取 6根據VHDL與數位邏輯設計的章節其中 第 1章至 10章的實驗採用模式1而 第 11章實驗採用模式2而 第 12章之後的實驗都採用模式3

85

FPGA UCF 定義

eM_3S1K 模組

NET CLK LOC = B12

NET XAlt0gt LOC = N2

NET XAlt1gt LOC = T1

NET XAlt2gt LOC = T2

NET XAlt3gt LOC = U2

NET XBlt0gt LOC = M3

NET XBlt1gt LOC = M4

NET XBlt2gt LOC = W3

NET XBlt3gt LOC = W4

NET XBlt4gt LOC = Y3

NET XBlt5gt LOC = Y4

NET XBlt6gt LOC = W6

NET XBlt7gt LOC = Y6

NET XClt0gt LOC = V1

NET XClt1gt LOC = V2

NET XClt2gt LOC = W1

NET XClt3gt LOC = W2

NET YAlt0gt LOC = W10

JP4 接頭

NET YAlt1gt LOC = Y10

NET YAlt2gt LOC = W9

NET YAlt3gt LOC = W8

NET YBlt0gt LOC = U3

NET YBlt1gt LOC = T4

NET YBlt2gt LOC = N3

NET YBlt3gt LOC = N4

NET YBlt4gt LOC = T5

NET YBlt5gt LOC = U4

NET YBlt6gt LOC = V3

NET YBlt7gt LOC = V4

NET YClt0gt LOC = Y11

NET YClt1gt LOC = W11

NET YClt2gt LOC = W5

NET YClt3gt LOC = Y5

在光碟片中 RFFPGAVHDLDEMOBIT3S1K 裡有 VHDL 與數位邏輯設計書本範例原始檔與合成檔

86

eM_3S50 模組

NET CLK LOC = P124

NET XAlt0gt LOC = P59

NET XAlt1gt LOC = P60

NET XAlt2gt LOC = P63

NET XAlt3gt LOC = P68

NET XBlt0gt LOC = P135

NET XBlt1gt LOC = P132

NET XBlt2gt LOC = P116

NET XBlt3gt LOC = P113

NET XBlt4gt LOC = P112

NET XBlt5gt LOC = P96

NET XBlt6gt LOC = P100

NET XBlt7gt LOC = P99

NET XClt0gt LOC = P69

NET XClt1gt LOC = P70

NET XClt2gt LOC = P73

NET XClt3gt LOC = P74

NET YAlt0gt LOC = P105

JP4 接頭

NET YAlt1gt LOC = P104

NET YAlt2gt LOC = P103

NET YAlt3gt LOC = P102

NET YBlt0gt LOC = P127

NET YBlt1gt LOC = P129

NET YBlt2gt LOC = P131

NET YBlt3gt LOC = P130

NET YBlt4gt LOC = P128

NET YBlt5gt LOC = P125

NET YBlt6gt LOC = P119

NET YBlt7gt LOC = P118

NET YClt0gt LOC = P107

NET YClt1gt LOC = P108

NET YClt2gt LOC = P98

NET YClt3gt LOC = P97

在光碟片中 RFFPGAVHDLDEMOBIT3S200 裡有VHDL與數位邏輯設計書本範例原始檔與合成檔

87

eM_95XL 模組

NET CLK LOC = SPIN38

NET XAlt0gt LOC = SPIN53

NET XAlt1gt LOC = SPIN54

NET XAlt2gt LOC = SPIN56

NET XAlt3gt LOC = SPIN57

NET XBlt0gt LOC = SPIN85

NET XBlt1gt LOC = SPIN86

NET XBlt2gt LOC = SPIN97

NET XBlt3gt LOC = SPIN98

NET XBlt4gt LOC = SPIN100

NET XBlt5gt LOC = SPIN101

NET XBlt6gt LOC = SPIN105

NET XBlt7gt LOC = SPIN104

NET XClt0gt LOC = SPIN58

NET XClt1gt LOC = SPIN59

NET XClt2gt LOC = SPIN60

NET XClt3gt LOC = SPIN61

NET YAlt0gt LOC = SPIN111

JP4 接頭

NET YAlt1gt LOC = SPIN110

NET YAlt2gt LOC = SPIN107

NET YAlt3gt LOC = SPIN106

NET YBlt0gt LOC = SPIN93

NET YBlt1gt LOC = SPIN91

NET YBlt2gt LOC = SPIN87

NET YBlt3gt LOC = SPIN88

NET YBlt4gt LOC = SPIN92

NET YBlt5gt LOC = SPIN94

NET YBlt6gt LOC = SPIN95

NET YBlt7gt LOC = SPIN96

NET YClt0gt LOC = SPIN112

NET YClt1gt LOC = SPIN113

NET YClt2gt LOC = SPIN103

NET YClt3gt LOC = SPIN102

在光碟片中 RFFPGAVHDLDEMOSVF95288XL 裡有VHDL與數位邏輯設計書本範例原始檔與合成

檔案

88

eM_FPGA 模組

NET CLK LOC = E12

NET XAlt0gt LOC = AA3

NET XAlt1gt LOC = Y4

NET XAlt2gt LOC = AA4

NET XAlt3gt LOC = AB4

NET XBlt0gt LOC = M1

NET XBlt1gt LOC = M2

NET XBlt2gt LOC = W13

NET XBlt3gt LOC = Y13

NET XBlt4gt LOC = AA13

NET XBlt5gt LOC = AB13

NET XBlt6gt LOC = Y18

NET XBlt7gt LOC = W18

NET XClt0gt LOC = W5

NET XClt1gt LOC = Y5

NET XClt2gt LOC = AA5

NET XClt3gt LOC = AB5

NET YAlt0gt LOC = Y17

JP4 接頭

NET YAlt1gt LOC = W17

NET YAlt2gt LOC = AB18

NET YAlt3gt LOC = AA18

NET YBlt0gt LOC = N1

NET YBlt1gt LOC = M5

NET YBlt2gt LOC = M3

NET YBlt3gt LOC = M4

NET YBlt4gt LOC = M6

NET YBlt5gt LOC = N2

NET YBlt6gt LOC = U13

NET YBlt7gt LOC = V13

NET YClt0gt LOC = AA17

NET YClt1gt LOC = AB17

NET YClt2gt LOC = V12

NET YClt3gt LOC = U12

在光碟片中 RFFPGAVHDLDEMOBIT2V250 裡有VHDL與數位邏輯設計書本範例原始檔與合成檔

89

Page 73: RFFPGA 直流馬達實驗手冊juniortek.com.tw/program/manual/RF-DC-mal.pdf · em_demo模組 em_dcm 直流伺服馬達 dc電源 rffpga 系統的直流馬達實驗規劃 其中包括:

FPGA 下載操作

進入 FPLC 操作系統按照下列步驟選擇節點模組與下載 bit FPGA 檔案

在 VHDLDEMO 子目錄下您可以選擇您目前 FPGA 種類型號在此型號下我們已將 VHDL

與數位邏輯設計課本範例全部放於此處

73

光纖網路連線 FPGA 下載操作

首先利用光纖線將 eM_USB0 模組光纖輸出埠接至 eM_USB1 模組光纖輸入埠以此

類推最後再將最後 eM_USBN 模組光纖輸出埠接至 eM_USB0 模組光纖輸入埠配置

如附圖方式

個人電腦(Windows) eM_USB模組

0USB

eM_USB模組1

光纖網路

eM_USB模組2

eM_USB模組N

配置完成後進入 FPLC 系統首先必須先將 Node00 下載在 testASM 子目錄裡

piDSPv0bit 檔讓 eM_USB0 模組 FPGA 具備 DSP 功能才能執行光纖網路通訊

操作如下

此時您就可以選擇分別下載至各模組 FPGA 檔 bit

74

安裝 FPLC 注意事項

當您進入 FPLC 時

按 FILE 選擇 programhellip 選擇檔案為 exp_dcmplc 出現下面畫面

正常顯示畫面為

75

DOS 環境操作

在 PC 端的操作是在 Windows 環境中的 DOS 視窗中執行指令範例如下

eFPGA progNETbit 下載 FPGA電路至網路節點0(即 USB節點)中 eFPGA testLEDbit 1 下載 FPGA電路至網路節點1中

對於單一節點的控制程序如下

1將 eM_USB模組連結個人電腦的 USB端 2eM_USB模組開機 3執行下載指令即可 eFPGA xxxxbit 4若要更改 FPGA電路只要重新執行下載指令即可

對於多個網路節點的控制程序如下

1第一組 eM_USB模組連結個人電腦的 USB端再以光纖網路依序其他各節點 2連接 USB界面者為模組0從光纖發射端連接出去的模組為1依此類推 3將所有 eM_USB模組開機 4執行下載指令如下 eFPGA progNETbit 模組0必須先下載指定的 FPGA電路 eFPGA xxxxbit 1 再依序下載其他網路模組的 FPGA電路 eFPGA yyyybit 2 eFPGA zzzzbit 最後再重新下載模組0的 FPGA電路 5換句話說模組0必須先執行 progNETbit讓光纖網路接受 FPGA控制後才能透過光纖網路下載至其他節點等全部網路節點下載完畢後再將模組0的 FPGA重新下載讓模組0也可自由執行任意的 FPGA電路

6若要更改某一個網路節點中的 FPGA電路只要重新執行下述指令 eFPGA progNETbit 模組0必須先下載指定的 FPGA電路 eFPGA yyyybit 2 下載指定網路模組的 FPGA電路 eFPGA zzzz bit 最後再重新下載模組0的 FPGA電路 換句話說除非模組0中的 FPGA已經包括光纖網路管理電路否則一定要先在

模組0中下載網路管理電路後才能下載指定網路節點的 FPGA電路

76

光纖網路通訊 FPGA 發展系統

系統配置

光纖網路通訊 FPGA 發展系統的系統配置圖如下

個人電腦(Windows) eM_USB模組

0USB

eM_USB模組1

光纖網路

eM_USB模組2

eM_USB模組N

其中

1基本模組為 eM_USB模組可用 USB界面和個人電腦連線並提供 USB對光纖網路的轉換功能使得個人電腦可以獨立控制光纖網路中的每個網路節點

2eM_USB模組也可以作為光纖網路中的網路節點透過光纖網路而接受個人電腦的

監控 3就個人電腦而言不論是 USB界面直接連結或是以光纖網路間接連結的 eM_USB模組都是可以直接監控的網路節點最多可以同時控制一個 USB節點和 30個網路節點

4對於每一個網路節點個人電腦都可執行 eM_USB模組中 FPGA的電路下載工作並在適當的 FPGA電路配合下可執行 eM_USB模組中 FPGA內部電路的讀寫控制 5透過適當的 FPGA電路設計各網路節點都可透過光纖網路和其他任何網路節點

作同步通訊執行 FPGA內部記憶體的資料交換資料交換頻率可達 1KHz以上

77

網路模組配置

每個網路模組的標準配置圖如下

eM_USB模組光纖網路

USB eM_FPGA卡

eM_DEMO模組

eM_EXP實驗模組

DC電源

其中

1網路模組以 eM_USB模組為主提供基本的 USB界面和光纖網路連線 2eM_USB模組中的 FPGACPLD採用插卡型式可選擇不同的 eM_FPGA卡包括

eM_2V1K卡可選用 Virtex系列的 XC2V250和 XC2V1000 eM_3S1K卡可選用 Spartan3系列的 XC3S400XC3S1000和 XC3S1500 eM_3S50卡可選用 Spartan3系列的 XC3S50XC3S200和 XC3S400 eM_95XL卡可選用 9500XL系列的 XC95144XL和 XC95288XL 3eM_USB模組中的對外連線有兩種一種是 26P接頭用以連接既有的各種實驗模

組另一種是兩組 50P接頭將 FPGA中各接腳引出用以連接專題實驗 4eM_DEMO模組就是插上 50P接頭的教學模組其中包括 LED 數字顯示和 44鍵盤也具備兩組的 ADC和兩組的 DAC接頭提供類比訊號的測試工具

常用的實驗組合包括

1精簡組合包括(eM_USB+eM_FPGA)提供基本的網路節點適用於專題實驗 2標準組合包括(eM_USB+eM_FPGA+eM_DEMO)提供基礎 FPGA設計的教學實驗

3實驗組合包括(eM_USB+eM_FPGA+eM_DEMO+eM_EXP)提供進階的 FPGA實驗可依需求選用不同的實驗模組

78

eM_USB 模組

eM_USB 模組的電路配置圖如下

TxRx

DCPower

USB

JP2

JP3

光纖界面

外加電源

PC連線

JP1

eM_FPGA模組

FT232 CPLD FlashROM

SRAM

10cm

6cm

JP4

其中

1對外的連線接頭包括 DC電源 可選擇單電源(5V)或是多電源(5V+12V-12V)兩種 USB界面 直接連接個人電腦 光纖界面連接光纖網路 2實驗界面包括 JP1負責內部 CPLD的電路下載 JP2JP3兩組 50P的擴張用接頭 JP4 標準 26P接頭用以連接各種實驗模組 3內部的電路配置包括 A以 SO-DIMM接頭連接各種 eM_FPGA卡 B內附 EEPROMFlashROM和 SRAM提供 FPGA作應用測試 C以一顆 FT232BM作為 USB界面解碼而以一顆 CPLD作為光纖網路解碼 D提供各種 eM_FPGA卡的電路下載功能 4內附五顆 LED由上而下依序為 usbLED指示 USB界面的讀寫狀態 tstLED可由 FPGA電路自行定義 stsLED可由 FPGA電路自行定義 RxLED 可由 FPGA電路自行定義 TxLED 可由 FPGA電路自行定義

79

外部接腳定義

外部接頭的接點順序圖示如下

上視圖

JP11 9 JP4

126225

JP31

50249

JP21

50249

而各接頭的接點定義如下

JP1 JP4 JP2 JP3 1+33V 1+12V 2+12V 1 GND 2 GND 1 GND 2 GND 2GND 3 ADC 4 DAC 3POWER 4ALARM 3 +5V 4 +5V 3nc 5 yPB2 6 yPB3 5RxNET 6TxNET 5+12V 6+12V 4TCK 7 yPB1 6 yPB4 7RxUSB 6TxUSB 7-12V 6-12V 5nc 9 yPB0 10yPB5 9RxCAN 10TxCAN 9 ADC 10 DAC 6TDO 11yPB6 12yPB7 11P0D0 12P0D1 11P1D0 12P1D1 7TDI 13yGND 14yPC3 13P0D2 14P0D3 13P1D2 14P1D3 8nc 15yPC2 16yPC1 15P0D4 16P0D5 15P1D4 16P1D5 9TMS 17yPC0 18yPA0 17P0D6 18P0D7 17P1D6 18P1D7 19yPA1 20yPA2 19P0D8 20P0D9 19P1D8 20P1D9 21yPA3 22GND 21P0D10 22P0D11 21P1D10 22P1D11 23GND 24+5V 23P0D12 24P0D13 23P1D12 24P1D13 25+5V 26nc 25P0D14 26P0D15 25P1D14 26P1D15 27P2D0 28P2D1 27PxA0 28PxA1 29P2D2 30P2D3 29PxA2 30PxA3 31P2D4 32P2D5 31PxA4 32PxA5 33P2D6 34P2D7 33PxA6 34PxA7 35P2D8 36P2D9 35PxB0 36PxB1 37P2D10 38P2D11 37PxB2 38PxB3 39P2D12 40P2D13 39PxB4 40PxB5 41P2D14 42P2D15 41PxB6 42PxB7 43ADC0 44ADC1 43PxC0 44PxC1 45ADC2 46ADC3 45PxC2 46PxC3 47ADC4 48ADC5 47PxC4 48PxC5 49DAC0 50DAC1 49PxC6 50PxC7

80

eM_FPGA 模組

在各種 eM_FPGA 模組中FPGA 對外電路的標準配置圖如下

24576MHz

FlashROM

26PSRAM

EEPROM

mD[8]

yPA[4]

FPGACPLD

mA[19]mRDmWRmCSeeCKeeCSeeDIeeDO

光纖界面 RxNETTxNET

USB 界面 RxUSBTxUSBCLK24MPOWERALARM

LED

tstLEDstsLEDRxLEDTxLED

yPB[8]yPC[4]

ADCDAC

ADC[8]

實驗模組

ADC[2]

DAC[2]

xPA[4]

xPB[8]

xPC[4]

基礎實驗

其中

1FPGACPLD可以選擇下述幾種 XC2V250XC2V1000 採用 eM_2V1K模組其中 FPGA為 FG456包裝 XC3S400XC3S1000XC3S1500採用 eM_3S1K模組其中 FPGA為 FG456包裝 XC3S400XC3S1000XC3S1500採用 eM_3S1K模組其中 FPGA為 FG456包裝 XC3S50XC3S200XC3S400 採用 eM_3S50模組其中 FPGA為 TQ144包裝 XC95144XLXC95288XL 採用 eM_95XL模組其中 CPLD為 TQ144包裝 2採用 FG456包裝者可以控制所有的 IO界面 3採用 TQ144包裝者只是不能控制 RAM和 FlashROM而可以控制其他所有的界面 4所有 FPGA模組都可自由選擇由 USB界面或是由光纖界面下載電路但是 CPLD模組只能固定由 USB界面下載電路

5所有 FPGACPLD模組都可透過 26P接頭連接既有的各種實驗模組

81

FPGA 接腳對照表

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

mD0 XD6 mD0 A17 C13 -- -- mD1 XD7 mD1 B17 D12 -- -- mD2 XD8 mD2 C17 D11 -- -- mD3 XD9 mD3 D17 C11 -- -- mD4 XD10 mD4 E17 D10 -- -- mD5 XD11 mD5 E16 C10 -- -- mD6 XD12 mD6 E14 D9 -- -- mD7 XD13 mD7 E13 D7 -- -- mA0 XD14 mA0 D13 C7 -- -- mA1 XD15 mA1 C13 D6 -- -- mA2 XA0 mA2 V5 C3 -- -- mA3 XA1 mA3 U5 C4 -- -- mA4 XA2 mA4 Y2 D3 -- -- mA5 XA3 mA5 Y1 D4 -- -- mA6 XA4 mA6 V4 E3 -- -- mA7 XA5 mA7 V3 E4 -- -- mA8 XA6 mA8 W2 F3 -- -- mA9 XA7 mA9 W1 F4 -- -- mA10 XA8 mA10 T2 G6 -- -- mA11 XA9 mA11 T1 K3 -- -- mA12 XA10 mA12 R4 K10 -- -- mA13 XA11 mA13 R3 L3 -- -- mA14 XA12 mA14 R2 L4 -- -- mRD XRD mRD R1 D5 -- -- mWR XWR mWR P6 C6 -- --

POWER P0A0 POWER B4 B20 P1 P5 ALARM P0A1 ALARM A4 A19 P2 P6 RxNET P0A2 RxNET C4 B19 P4 P7 TxNET P0A3 TxNET C5 A18 P5 P9 RxUSB P0B0 RxUSB B5 A15 P6 P10 TxUSB P0B1 TxUSB A5 B15 P7 P11 RxCAN P0B2 RxCAN D6 A14 P8 P12 RxCAN P0B3 TxCAN C6 B14 P10 P13

CLK24M CLK24M CLK24M E12 B12 P124 P38

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

PWM0H P3A0 P0D0 E6 A8 P21 P23 PWM0L P3A1 P0D1 E5 B8 P23 P24 PWM1H P3A2 P0D2 C2 B6 P24 P25 PWM1L P3A3 P0D3 C1 A5 P25 P26 PWM2H P3A4 P0D4 D2 B5 P26 P27

82

PWM2L P3A5 P0D5 D1 A4 P27 P28 PWMenb P3A6 P0D6 E4 B4 P28 P30 PHT1Z P3A7 P0D7 E3 A3 P30 P31 PHT1A P3B0 P0D8 G2 C1 P31 P32 PHT1B P3B1 P0D9 G1 C2 P32 P33 PHT0A P3B2 P0D10 H5 D1 P33 P34 PHT0B P3B3 P0D11 J6 D2 P35 P35 AMP0 P3B4 P0D12 H4 E1 P36 P39 AMP1 P3B5 P0D13 H3 E2 P40 P40 AMP2 P3B6 P0D14 H2 F2 P41 P41 AMP3 P3B7 P0D15 H1 G1 P44 P43 eeSK P0C3 P1D0 C10 B9 P20 P22 eeCS P0C2 P1D1 D10 A9 P18 P21 eeDI P0C1 P1D2 F10 B10 P17 P20 eeDO P0C0 P1D3 E10 B11 P15 P19 ssCK P0B7 P1D4 E8 A11 P14 P17 ssCS P0B6 P1D5 E7 A12 P13 P16 ssDI P0B5 P1D6 A6 B13 P12 P15 ssDO P0B4 P1D7 B6 A13 P11 P14

ppCLK P3C0 P1D8 K4 G2 P46 P44 ppDIN P3C1 P1D9 K3 K1 P47 P45 TxD P3C2 P1D10 K2 K2 P50 P46 RxD P3C3 P1D11 K1 L1 P51 P48

tstLED P3C4 P1D12 L5 L2 P52 P49 stsLED P3C5 P1D13 L4 M1 P53 P50 RxLED P3C6 P1D14 L3 M2 P55 P51 TxLED P3C7 P1D15 L2 N1 P56 P52

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

xPA0 P2A0 P2D0 AA3 N2 P59 P53 xPA1 P2A1 P2D1 Y4 T1 P60 P54 xPA2 P2A2 P2D2 AA4 T2 P63 P56 xPA3 P2A3 P2D3 AB4 U2 P68 P57 xPC0 P2A4 P2D4 W5 V1 P69 P58 xPC1 P2A5 P2D5 Y5 V2 P70 P59 xPC2 P2A6 P2D6 AA5 W1 P73 P60 xPC3 P2A7 P2D7 AB5 W2 P74 P61

-- P2B0 P2D8 V6 Y1 P76 P64 -- P2B1 P2D9 V7 Y2 P77 P66 -- P2B2 P2D10 W6 AA3 P78 P68

mCS P2B3 P2D11 Y6 AB4 P79 P69 mA15 P2B4 P2D12 V9 AA4 P80 P70 mA16 P2B5 P2D13 V10 AB5 P82 P71 mA17 P2B6 P2D14 W10 AA5 P83 P74 mA18 P2B7 P2D15 Y10 AA6 P84 P75 CS0 P2C0 ADC0 AA10 AB8 P85 P76

83

SDIN0 P2C1 ADC1 AB10 AA8 P86 P77 CS1 P2C2 ADC2 U10 AB9 P87 P78

SDIN1 P2C3 ADC3 U11 AA9 P89 P79 SCLK P2C4 ADC4 V11 AB10 P90 P80 CS2 P2C5 ADC5 W11 AA10 P92 P81

SDOUT P2C6 ADC6 Y11 AB11 P93 P82 LDAC P2C7 ADC7 AA11 AA11 P95 P83

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

xPB0 P1A0 PxA0 M1 M3 P135 P85 xPB1 P1A1 PxA1 M2 M4 P132 P86 yPB2 P1A2 PxA2 M3 N3 P131 P87 yPB3 P1A3 PxA3 M4 N4 P130 P88 yPB1 P1A4 PxA4 M5 T4 P129 P91 yPB4 P1A5 PxA5 M6 T5 P128 P92 yPB0 P1A6 PxA6 N1 U3 P127 P93 yPB5 P1A7 PxA7 N2 U4 P125 P94 yPB6 P1B0 PxB0 U13 V3 P119 P95 yPB7 P1B1 PxB1 V13 V4 P118 P96 xPB2 P1B2 PxB2 W13 W3 P116 P97 xPB3 P1B3 PxB3 Y13 W4 P113 P98 xPB4 P1B4 PxB4 AA13 Y3 P112 P100 xPB5 P1B5 PxB5 AB13 Y4 P96 P101 yPC3 P1B6 PxB6 U12 Y5 P97 P102 yPC2 P1B7 PxB7 V12 W5 P98 P103 yPC1 P1C7 PxC0 AB17 W11 P108 P113 yPC0 P1C6 PxC1 AA17 Y11 P107 P112 yPA0 P1C5 PxC2 Y17 W10 P105 P111 yPA1 P1C4 PxC3 W17 Y10 P104 P110 yPA2 P1C3 PxC4 AB18 W9 P103 P107 yPA3 P1C2 PxC5 AA18 W8 P102 P106 xPB6 P1C1 PxC6 Y18 W6 P100 P105 xPB7 P1C0 PxC7 W18 Y6 P99 P104

84

eM_DEMO 模組

eM_DEMO 模組的電路配置圖如下

eM_USB 模組

數字型 LED

0 1 2 34 5 6 78 9 A BC D E F

燈號型 LED

44 鍵盤

ADC0 ADC1 DAC0 DAC1

LED 選擇KEY 選擇

其中

1eM_DEMO模組的基本功能包括 A將 xPAxPBxPC等 16個 IO訊號引出控制 LED和鍵盤電路 B將 ADDA訊號引出並放大成+-10V的工作範圍 2LED和鍵盤可以選擇三種模式由 LED和 KEY 兩組開關作選擇圖示如下

模式1

0123

模式2 模式3

0 1 2 34 5 6 78 9 A BC D E F

0123

3模式14鍵輸入並搭配 16點的 LED燈號顯示其中 16點 LED分別對映到 xPA[0~3]xPB[0~7]和 xPC[0~3] 4組按鍵分別對映到 xPC[0~3] 4模式24鍵輸入並搭配四個 7段式數字顯示其中 數字顯示由 xPA[0~3]作數字掃瞄而由 xPB[0~7]作 7段式 LED控制 4組按鍵 分別對映到 xPC[0~3] 5模式316鍵輸入並搭配四個 7段式數字顯示其中 數字顯示由 xPA[0~3]作數字掃瞄而由 xPB[0~7]作 7段式 LED控制 16組按鍵由 xPA[0~3]作鍵盤掃瞄而由 xPC[0~3]作鍵盤讀取 6根據VHDL與數位邏輯設計的章節其中 第 1章至 10章的實驗採用模式1而 第 11章實驗採用模式2而 第 12章之後的實驗都採用模式3

85

FPGA UCF 定義

eM_3S1K 模組

NET CLK LOC = B12

NET XAlt0gt LOC = N2

NET XAlt1gt LOC = T1

NET XAlt2gt LOC = T2

NET XAlt3gt LOC = U2

NET XBlt0gt LOC = M3

NET XBlt1gt LOC = M4

NET XBlt2gt LOC = W3

NET XBlt3gt LOC = W4

NET XBlt4gt LOC = Y3

NET XBlt5gt LOC = Y4

NET XBlt6gt LOC = W6

NET XBlt7gt LOC = Y6

NET XClt0gt LOC = V1

NET XClt1gt LOC = V2

NET XClt2gt LOC = W1

NET XClt3gt LOC = W2

NET YAlt0gt LOC = W10

JP4 接頭

NET YAlt1gt LOC = Y10

NET YAlt2gt LOC = W9

NET YAlt3gt LOC = W8

NET YBlt0gt LOC = U3

NET YBlt1gt LOC = T4

NET YBlt2gt LOC = N3

NET YBlt3gt LOC = N4

NET YBlt4gt LOC = T5

NET YBlt5gt LOC = U4

NET YBlt6gt LOC = V3

NET YBlt7gt LOC = V4

NET YClt0gt LOC = Y11

NET YClt1gt LOC = W11

NET YClt2gt LOC = W5

NET YClt3gt LOC = Y5

在光碟片中 RFFPGAVHDLDEMOBIT3S1K 裡有 VHDL 與數位邏輯設計書本範例原始檔與合成檔

86

eM_3S50 模組

NET CLK LOC = P124

NET XAlt0gt LOC = P59

NET XAlt1gt LOC = P60

NET XAlt2gt LOC = P63

NET XAlt3gt LOC = P68

NET XBlt0gt LOC = P135

NET XBlt1gt LOC = P132

NET XBlt2gt LOC = P116

NET XBlt3gt LOC = P113

NET XBlt4gt LOC = P112

NET XBlt5gt LOC = P96

NET XBlt6gt LOC = P100

NET XBlt7gt LOC = P99

NET XClt0gt LOC = P69

NET XClt1gt LOC = P70

NET XClt2gt LOC = P73

NET XClt3gt LOC = P74

NET YAlt0gt LOC = P105

JP4 接頭

NET YAlt1gt LOC = P104

NET YAlt2gt LOC = P103

NET YAlt3gt LOC = P102

NET YBlt0gt LOC = P127

NET YBlt1gt LOC = P129

NET YBlt2gt LOC = P131

NET YBlt3gt LOC = P130

NET YBlt4gt LOC = P128

NET YBlt5gt LOC = P125

NET YBlt6gt LOC = P119

NET YBlt7gt LOC = P118

NET YClt0gt LOC = P107

NET YClt1gt LOC = P108

NET YClt2gt LOC = P98

NET YClt3gt LOC = P97

在光碟片中 RFFPGAVHDLDEMOBIT3S200 裡有VHDL與數位邏輯設計書本範例原始檔與合成檔

87

eM_95XL 模組

NET CLK LOC = SPIN38

NET XAlt0gt LOC = SPIN53

NET XAlt1gt LOC = SPIN54

NET XAlt2gt LOC = SPIN56

NET XAlt3gt LOC = SPIN57

NET XBlt0gt LOC = SPIN85

NET XBlt1gt LOC = SPIN86

NET XBlt2gt LOC = SPIN97

NET XBlt3gt LOC = SPIN98

NET XBlt4gt LOC = SPIN100

NET XBlt5gt LOC = SPIN101

NET XBlt6gt LOC = SPIN105

NET XBlt7gt LOC = SPIN104

NET XClt0gt LOC = SPIN58

NET XClt1gt LOC = SPIN59

NET XClt2gt LOC = SPIN60

NET XClt3gt LOC = SPIN61

NET YAlt0gt LOC = SPIN111

JP4 接頭

NET YAlt1gt LOC = SPIN110

NET YAlt2gt LOC = SPIN107

NET YAlt3gt LOC = SPIN106

NET YBlt0gt LOC = SPIN93

NET YBlt1gt LOC = SPIN91

NET YBlt2gt LOC = SPIN87

NET YBlt3gt LOC = SPIN88

NET YBlt4gt LOC = SPIN92

NET YBlt5gt LOC = SPIN94

NET YBlt6gt LOC = SPIN95

NET YBlt7gt LOC = SPIN96

NET YClt0gt LOC = SPIN112

NET YClt1gt LOC = SPIN113

NET YClt2gt LOC = SPIN103

NET YClt3gt LOC = SPIN102

在光碟片中 RFFPGAVHDLDEMOSVF95288XL 裡有VHDL與數位邏輯設計書本範例原始檔與合成

檔案

88

eM_FPGA 模組

NET CLK LOC = E12

NET XAlt0gt LOC = AA3

NET XAlt1gt LOC = Y4

NET XAlt2gt LOC = AA4

NET XAlt3gt LOC = AB4

NET XBlt0gt LOC = M1

NET XBlt1gt LOC = M2

NET XBlt2gt LOC = W13

NET XBlt3gt LOC = Y13

NET XBlt4gt LOC = AA13

NET XBlt5gt LOC = AB13

NET XBlt6gt LOC = Y18

NET XBlt7gt LOC = W18

NET XClt0gt LOC = W5

NET XClt1gt LOC = Y5

NET XClt2gt LOC = AA5

NET XClt3gt LOC = AB5

NET YAlt0gt LOC = Y17

JP4 接頭

NET YAlt1gt LOC = W17

NET YAlt2gt LOC = AB18

NET YAlt3gt LOC = AA18

NET YBlt0gt LOC = N1

NET YBlt1gt LOC = M5

NET YBlt2gt LOC = M3

NET YBlt3gt LOC = M4

NET YBlt4gt LOC = M6

NET YBlt5gt LOC = N2

NET YBlt6gt LOC = U13

NET YBlt7gt LOC = V13

NET YClt0gt LOC = AA17

NET YClt1gt LOC = AB17

NET YClt2gt LOC = V12

NET YClt3gt LOC = U12

在光碟片中 RFFPGAVHDLDEMOBIT2V250 裡有VHDL與數位邏輯設計書本範例原始檔與合成檔

89

Page 74: RFFPGA 直流馬達實驗手冊juniortek.com.tw/program/manual/RF-DC-mal.pdf · em_demo模組 em_dcm 直流伺服馬達 dc電源 rffpga 系統的直流馬達實驗規劃 其中包括:

光纖網路連線 FPGA 下載操作

首先利用光纖線將 eM_USB0 模組光纖輸出埠接至 eM_USB1 模組光纖輸入埠以此

類推最後再將最後 eM_USBN 模組光纖輸出埠接至 eM_USB0 模組光纖輸入埠配置

如附圖方式

個人電腦(Windows) eM_USB模組

0USB

eM_USB模組1

光纖網路

eM_USB模組2

eM_USB模組N

配置完成後進入 FPLC 系統首先必須先將 Node00 下載在 testASM 子目錄裡

piDSPv0bit 檔讓 eM_USB0 模組 FPGA 具備 DSP 功能才能執行光纖網路通訊

操作如下

此時您就可以選擇分別下載至各模組 FPGA 檔 bit

74

安裝 FPLC 注意事項

當您進入 FPLC 時

按 FILE 選擇 programhellip 選擇檔案為 exp_dcmplc 出現下面畫面

正常顯示畫面為

75

DOS 環境操作

在 PC 端的操作是在 Windows 環境中的 DOS 視窗中執行指令範例如下

eFPGA progNETbit 下載 FPGA電路至網路節點0(即 USB節點)中 eFPGA testLEDbit 1 下載 FPGA電路至網路節點1中

對於單一節點的控制程序如下

1將 eM_USB模組連結個人電腦的 USB端 2eM_USB模組開機 3執行下載指令即可 eFPGA xxxxbit 4若要更改 FPGA電路只要重新執行下載指令即可

對於多個網路節點的控制程序如下

1第一組 eM_USB模組連結個人電腦的 USB端再以光纖網路依序其他各節點 2連接 USB界面者為模組0從光纖發射端連接出去的模組為1依此類推 3將所有 eM_USB模組開機 4執行下載指令如下 eFPGA progNETbit 模組0必須先下載指定的 FPGA電路 eFPGA xxxxbit 1 再依序下載其他網路模組的 FPGA電路 eFPGA yyyybit 2 eFPGA zzzzbit 最後再重新下載模組0的 FPGA電路 5換句話說模組0必須先執行 progNETbit讓光纖網路接受 FPGA控制後才能透過光纖網路下載至其他節點等全部網路節點下載完畢後再將模組0的 FPGA重新下載讓模組0也可自由執行任意的 FPGA電路

6若要更改某一個網路節點中的 FPGA電路只要重新執行下述指令 eFPGA progNETbit 模組0必須先下載指定的 FPGA電路 eFPGA yyyybit 2 下載指定網路模組的 FPGA電路 eFPGA zzzz bit 最後再重新下載模組0的 FPGA電路 換句話說除非模組0中的 FPGA已經包括光纖網路管理電路否則一定要先在

模組0中下載網路管理電路後才能下載指定網路節點的 FPGA電路

76

光纖網路通訊 FPGA 發展系統

系統配置

光纖網路通訊 FPGA 發展系統的系統配置圖如下

個人電腦(Windows) eM_USB模組

0USB

eM_USB模組1

光纖網路

eM_USB模組2

eM_USB模組N

其中

1基本模組為 eM_USB模組可用 USB界面和個人電腦連線並提供 USB對光纖網路的轉換功能使得個人電腦可以獨立控制光纖網路中的每個網路節點

2eM_USB模組也可以作為光纖網路中的網路節點透過光纖網路而接受個人電腦的

監控 3就個人電腦而言不論是 USB界面直接連結或是以光纖網路間接連結的 eM_USB模組都是可以直接監控的網路節點最多可以同時控制一個 USB節點和 30個網路節點

4對於每一個網路節點個人電腦都可執行 eM_USB模組中 FPGA的電路下載工作並在適當的 FPGA電路配合下可執行 eM_USB模組中 FPGA內部電路的讀寫控制 5透過適當的 FPGA電路設計各網路節點都可透過光纖網路和其他任何網路節點

作同步通訊執行 FPGA內部記憶體的資料交換資料交換頻率可達 1KHz以上

77

網路模組配置

每個網路模組的標準配置圖如下

eM_USB模組光纖網路

USB eM_FPGA卡

eM_DEMO模組

eM_EXP實驗模組

DC電源

其中

1網路模組以 eM_USB模組為主提供基本的 USB界面和光纖網路連線 2eM_USB模組中的 FPGACPLD採用插卡型式可選擇不同的 eM_FPGA卡包括

eM_2V1K卡可選用 Virtex系列的 XC2V250和 XC2V1000 eM_3S1K卡可選用 Spartan3系列的 XC3S400XC3S1000和 XC3S1500 eM_3S50卡可選用 Spartan3系列的 XC3S50XC3S200和 XC3S400 eM_95XL卡可選用 9500XL系列的 XC95144XL和 XC95288XL 3eM_USB模組中的對外連線有兩種一種是 26P接頭用以連接既有的各種實驗模

組另一種是兩組 50P接頭將 FPGA中各接腳引出用以連接專題實驗 4eM_DEMO模組就是插上 50P接頭的教學模組其中包括 LED 數字顯示和 44鍵盤也具備兩組的 ADC和兩組的 DAC接頭提供類比訊號的測試工具

常用的實驗組合包括

1精簡組合包括(eM_USB+eM_FPGA)提供基本的網路節點適用於專題實驗 2標準組合包括(eM_USB+eM_FPGA+eM_DEMO)提供基礎 FPGA設計的教學實驗

3實驗組合包括(eM_USB+eM_FPGA+eM_DEMO+eM_EXP)提供進階的 FPGA實驗可依需求選用不同的實驗模組

78

eM_USB 模組

eM_USB 模組的電路配置圖如下

TxRx

DCPower

USB

JP2

JP3

光纖界面

外加電源

PC連線

JP1

eM_FPGA模組

FT232 CPLD FlashROM

SRAM

10cm

6cm

JP4

其中

1對外的連線接頭包括 DC電源 可選擇單電源(5V)或是多電源(5V+12V-12V)兩種 USB界面 直接連接個人電腦 光纖界面連接光纖網路 2實驗界面包括 JP1負責內部 CPLD的電路下載 JP2JP3兩組 50P的擴張用接頭 JP4 標準 26P接頭用以連接各種實驗模組 3內部的電路配置包括 A以 SO-DIMM接頭連接各種 eM_FPGA卡 B內附 EEPROMFlashROM和 SRAM提供 FPGA作應用測試 C以一顆 FT232BM作為 USB界面解碼而以一顆 CPLD作為光纖網路解碼 D提供各種 eM_FPGA卡的電路下載功能 4內附五顆 LED由上而下依序為 usbLED指示 USB界面的讀寫狀態 tstLED可由 FPGA電路自行定義 stsLED可由 FPGA電路自行定義 RxLED 可由 FPGA電路自行定義 TxLED 可由 FPGA電路自行定義

79

外部接腳定義

外部接頭的接點順序圖示如下

上視圖

JP11 9 JP4

126225

JP31

50249

JP21

50249

而各接頭的接點定義如下

JP1 JP4 JP2 JP3 1+33V 1+12V 2+12V 1 GND 2 GND 1 GND 2 GND 2GND 3 ADC 4 DAC 3POWER 4ALARM 3 +5V 4 +5V 3nc 5 yPB2 6 yPB3 5RxNET 6TxNET 5+12V 6+12V 4TCK 7 yPB1 6 yPB4 7RxUSB 6TxUSB 7-12V 6-12V 5nc 9 yPB0 10yPB5 9RxCAN 10TxCAN 9 ADC 10 DAC 6TDO 11yPB6 12yPB7 11P0D0 12P0D1 11P1D0 12P1D1 7TDI 13yGND 14yPC3 13P0D2 14P0D3 13P1D2 14P1D3 8nc 15yPC2 16yPC1 15P0D4 16P0D5 15P1D4 16P1D5 9TMS 17yPC0 18yPA0 17P0D6 18P0D7 17P1D6 18P1D7 19yPA1 20yPA2 19P0D8 20P0D9 19P1D8 20P1D9 21yPA3 22GND 21P0D10 22P0D11 21P1D10 22P1D11 23GND 24+5V 23P0D12 24P0D13 23P1D12 24P1D13 25+5V 26nc 25P0D14 26P0D15 25P1D14 26P1D15 27P2D0 28P2D1 27PxA0 28PxA1 29P2D2 30P2D3 29PxA2 30PxA3 31P2D4 32P2D5 31PxA4 32PxA5 33P2D6 34P2D7 33PxA6 34PxA7 35P2D8 36P2D9 35PxB0 36PxB1 37P2D10 38P2D11 37PxB2 38PxB3 39P2D12 40P2D13 39PxB4 40PxB5 41P2D14 42P2D15 41PxB6 42PxB7 43ADC0 44ADC1 43PxC0 44PxC1 45ADC2 46ADC3 45PxC2 46PxC3 47ADC4 48ADC5 47PxC4 48PxC5 49DAC0 50DAC1 49PxC6 50PxC7

80

eM_FPGA 模組

在各種 eM_FPGA 模組中FPGA 對外電路的標準配置圖如下

24576MHz

FlashROM

26PSRAM

EEPROM

mD[8]

yPA[4]

FPGACPLD

mA[19]mRDmWRmCSeeCKeeCSeeDIeeDO

光纖界面 RxNETTxNET

USB 界面 RxUSBTxUSBCLK24MPOWERALARM

LED

tstLEDstsLEDRxLEDTxLED

yPB[8]yPC[4]

ADCDAC

ADC[8]

實驗模組

ADC[2]

DAC[2]

xPA[4]

xPB[8]

xPC[4]

基礎實驗

其中

1FPGACPLD可以選擇下述幾種 XC2V250XC2V1000 採用 eM_2V1K模組其中 FPGA為 FG456包裝 XC3S400XC3S1000XC3S1500採用 eM_3S1K模組其中 FPGA為 FG456包裝 XC3S400XC3S1000XC3S1500採用 eM_3S1K模組其中 FPGA為 FG456包裝 XC3S50XC3S200XC3S400 採用 eM_3S50模組其中 FPGA為 TQ144包裝 XC95144XLXC95288XL 採用 eM_95XL模組其中 CPLD為 TQ144包裝 2採用 FG456包裝者可以控制所有的 IO界面 3採用 TQ144包裝者只是不能控制 RAM和 FlashROM而可以控制其他所有的界面 4所有 FPGA模組都可自由選擇由 USB界面或是由光纖界面下載電路但是 CPLD模組只能固定由 USB界面下載電路

5所有 FPGACPLD模組都可透過 26P接頭連接既有的各種實驗模組

81

FPGA 接腳對照表

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

mD0 XD6 mD0 A17 C13 -- -- mD1 XD7 mD1 B17 D12 -- -- mD2 XD8 mD2 C17 D11 -- -- mD3 XD9 mD3 D17 C11 -- -- mD4 XD10 mD4 E17 D10 -- -- mD5 XD11 mD5 E16 C10 -- -- mD6 XD12 mD6 E14 D9 -- -- mD7 XD13 mD7 E13 D7 -- -- mA0 XD14 mA0 D13 C7 -- -- mA1 XD15 mA1 C13 D6 -- -- mA2 XA0 mA2 V5 C3 -- -- mA3 XA1 mA3 U5 C4 -- -- mA4 XA2 mA4 Y2 D3 -- -- mA5 XA3 mA5 Y1 D4 -- -- mA6 XA4 mA6 V4 E3 -- -- mA7 XA5 mA7 V3 E4 -- -- mA8 XA6 mA8 W2 F3 -- -- mA9 XA7 mA9 W1 F4 -- -- mA10 XA8 mA10 T2 G6 -- -- mA11 XA9 mA11 T1 K3 -- -- mA12 XA10 mA12 R4 K10 -- -- mA13 XA11 mA13 R3 L3 -- -- mA14 XA12 mA14 R2 L4 -- -- mRD XRD mRD R1 D5 -- -- mWR XWR mWR P6 C6 -- --

POWER P0A0 POWER B4 B20 P1 P5 ALARM P0A1 ALARM A4 A19 P2 P6 RxNET P0A2 RxNET C4 B19 P4 P7 TxNET P0A3 TxNET C5 A18 P5 P9 RxUSB P0B0 RxUSB B5 A15 P6 P10 TxUSB P0B1 TxUSB A5 B15 P7 P11 RxCAN P0B2 RxCAN D6 A14 P8 P12 RxCAN P0B3 TxCAN C6 B14 P10 P13

CLK24M CLK24M CLK24M E12 B12 P124 P38

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

PWM0H P3A0 P0D0 E6 A8 P21 P23 PWM0L P3A1 P0D1 E5 B8 P23 P24 PWM1H P3A2 P0D2 C2 B6 P24 P25 PWM1L P3A3 P0D3 C1 A5 P25 P26 PWM2H P3A4 P0D4 D2 B5 P26 P27

82

PWM2L P3A5 P0D5 D1 A4 P27 P28 PWMenb P3A6 P0D6 E4 B4 P28 P30 PHT1Z P3A7 P0D7 E3 A3 P30 P31 PHT1A P3B0 P0D8 G2 C1 P31 P32 PHT1B P3B1 P0D9 G1 C2 P32 P33 PHT0A P3B2 P0D10 H5 D1 P33 P34 PHT0B P3B3 P0D11 J6 D2 P35 P35 AMP0 P3B4 P0D12 H4 E1 P36 P39 AMP1 P3B5 P0D13 H3 E2 P40 P40 AMP2 P3B6 P0D14 H2 F2 P41 P41 AMP3 P3B7 P0D15 H1 G1 P44 P43 eeSK P0C3 P1D0 C10 B9 P20 P22 eeCS P0C2 P1D1 D10 A9 P18 P21 eeDI P0C1 P1D2 F10 B10 P17 P20 eeDO P0C0 P1D3 E10 B11 P15 P19 ssCK P0B7 P1D4 E8 A11 P14 P17 ssCS P0B6 P1D5 E7 A12 P13 P16 ssDI P0B5 P1D6 A6 B13 P12 P15 ssDO P0B4 P1D7 B6 A13 P11 P14

ppCLK P3C0 P1D8 K4 G2 P46 P44 ppDIN P3C1 P1D9 K3 K1 P47 P45 TxD P3C2 P1D10 K2 K2 P50 P46 RxD P3C3 P1D11 K1 L1 P51 P48

tstLED P3C4 P1D12 L5 L2 P52 P49 stsLED P3C5 P1D13 L4 M1 P53 P50 RxLED P3C6 P1D14 L3 M2 P55 P51 TxLED P3C7 P1D15 L2 N1 P56 P52

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

xPA0 P2A0 P2D0 AA3 N2 P59 P53 xPA1 P2A1 P2D1 Y4 T1 P60 P54 xPA2 P2A2 P2D2 AA4 T2 P63 P56 xPA3 P2A3 P2D3 AB4 U2 P68 P57 xPC0 P2A4 P2D4 W5 V1 P69 P58 xPC1 P2A5 P2D5 Y5 V2 P70 P59 xPC2 P2A6 P2D6 AA5 W1 P73 P60 xPC3 P2A7 P2D7 AB5 W2 P74 P61

-- P2B0 P2D8 V6 Y1 P76 P64 -- P2B1 P2D9 V7 Y2 P77 P66 -- P2B2 P2D10 W6 AA3 P78 P68

mCS P2B3 P2D11 Y6 AB4 P79 P69 mA15 P2B4 P2D12 V9 AA4 P80 P70 mA16 P2B5 P2D13 V10 AB5 P82 P71 mA17 P2B6 P2D14 W10 AA5 P83 P74 mA18 P2B7 P2D15 Y10 AA6 P84 P75 CS0 P2C0 ADC0 AA10 AB8 P85 P76

83

SDIN0 P2C1 ADC1 AB10 AA8 P86 P77 CS1 P2C2 ADC2 U10 AB9 P87 P78

SDIN1 P2C3 ADC3 U11 AA9 P89 P79 SCLK P2C4 ADC4 V11 AB10 P90 P80 CS2 P2C5 ADC5 W11 AA10 P92 P81

SDOUT P2C6 ADC6 Y11 AB11 P93 P82 LDAC P2C7 ADC7 AA11 AA11 P95 P83

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

xPB0 P1A0 PxA0 M1 M3 P135 P85 xPB1 P1A1 PxA1 M2 M4 P132 P86 yPB2 P1A2 PxA2 M3 N3 P131 P87 yPB3 P1A3 PxA3 M4 N4 P130 P88 yPB1 P1A4 PxA4 M5 T4 P129 P91 yPB4 P1A5 PxA5 M6 T5 P128 P92 yPB0 P1A6 PxA6 N1 U3 P127 P93 yPB5 P1A7 PxA7 N2 U4 P125 P94 yPB6 P1B0 PxB0 U13 V3 P119 P95 yPB7 P1B1 PxB1 V13 V4 P118 P96 xPB2 P1B2 PxB2 W13 W3 P116 P97 xPB3 P1B3 PxB3 Y13 W4 P113 P98 xPB4 P1B4 PxB4 AA13 Y3 P112 P100 xPB5 P1B5 PxB5 AB13 Y4 P96 P101 yPC3 P1B6 PxB6 U12 Y5 P97 P102 yPC2 P1B7 PxB7 V12 W5 P98 P103 yPC1 P1C7 PxC0 AB17 W11 P108 P113 yPC0 P1C6 PxC1 AA17 Y11 P107 P112 yPA0 P1C5 PxC2 Y17 W10 P105 P111 yPA1 P1C4 PxC3 W17 Y10 P104 P110 yPA2 P1C3 PxC4 AB18 W9 P103 P107 yPA3 P1C2 PxC5 AA18 W8 P102 P106 xPB6 P1C1 PxC6 Y18 W6 P100 P105 xPB7 P1C0 PxC7 W18 Y6 P99 P104

84

eM_DEMO 模組

eM_DEMO 模組的電路配置圖如下

eM_USB 模組

數字型 LED

0 1 2 34 5 6 78 9 A BC D E F

燈號型 LED

44 鍵盤

ADC0 ADC1 DAC0 DAC1

LED 選擇KEY 選擇

其中

1eM_DEMO模組的基本功能包括 A將 xPAxPBxPC等 16個 IO訊號引出控制 LED和鍵盤電路 B將 ADDA訊號引出並放大成+-10V的工作範圍 2LED和鍵盤可以選擇三種模式由 LED和 KEY 兩組開關作選擇圖示如下

模式1

0123

模式2 模式3

0 1 2 34 5 6 78 9 A BC D E F

0123

3模式14鍵輸入並搭配 16點的 LED燈號顯示其中 16點 LED分別對映到 xPA[0~3]xPB[0~7]和 xPC[0~3] 4組按鍵分別對映到 xPC[0~3] 4模式24鍵輸入並搭配四個 7段式數字顯示其中 數字顯示由 xPA[0~3]作數字掃瞄而由 xPB[0~7]作 7段式 LED控制 4組按鍵 分別對映到 xPC[0~3] 5模式316鍵輸入並搭配四個 7段式數字顯示其中 數字顯示由 xPA[0~3]作數字掃瞄而由 xPB[0~7]作 7段式 LED控制 16組按鍵由 xPA[0~3]作鍵盤掃瞄而由 xPC[0~3]作鍵盤讀取 6根據VHDL與數位邏輯設計的章節其中 第 1章至 10章的實驗採用模式1而 第 11章實驗採用模式2而 第 12章之後的實驗都採用模式3

85

FPGA UCF 定義

eM_3S1K 模組

NET CLK LOC = B12

NET XAlt0gt LOC = N2

NET XAlt1gt LOC = T1

NET XAlt2gt LOC = T2

NET XAlt3gt LOC = U2

NET XBlt0gt LOC = M3

NET XBlt1gt LOC = M4

NET XBlt2gt LOC = W3

NET XBlt3gt LOC = W4

NET XBlt4gt LOC = Y3

NET XBlt5gt LOC = Y4

NET XBlt6gt LOC = W6

NET XBlt7gt LOC = Y6

NET XClt0gt LOC = V1

NET XClt1gt LOC = V2

NET XClt2gt LOC = W1

NET XClt3gt LOC = W2

NET YAlt0gt LOC = W10

JP4 接頭

NET YAlt1gt LOC = Y10

NET YAlt2gt LOC = W9

NET YAlt3gt LOC = W8

NET YBlt0gt LOC = U3

NET YBlt1gt LOC = T4

NET YBlt2gt LOC = N3

NET YBlt3gt LOC = N4

NET YBlt4gt LOC = T5

NET YBlt5gt LOC = U4

NET YBlt6gt LOC = V3

NET YBlt7gt LOC = V4

NET YClt0gt LOC = Y11

NET YClt1gt LOC = W11

NET YClt2gt LOC = W5

NET YClt3gt LOC = Y5

在光碟片中 RFFPGAVHDLDEMOBIT3S1K 裡有 VHDL 與數位邏輯設計書本範例原始檔與合成檔

86

eM_3S50 模組

NET CLK LOC = P124

NET XAlt0gt LOC = P59

NET XAlt1gt LOC = P60

NET XAlt2gt LOC = P63

NET XAlt3gt LOC = P68

NET XBlt0gt LOC = P135

NET XBlt1gt LOC = P132

NET XBlt2gt LOC = P116

NET XBlt3gt LOC = P113

NET XBlt4gt LOC = P112

NET XBlt5gt LOC = P96

NET XBlt6gt LOC = P100

NET XBlt7gt LOC = P99

NET XClt0gt LOC = P69

NET XClt1gt LOC = P70

NET XClt2gt LOC = P73

NET XClt3gt LOC = P74

NET YAlt0gt LOC = P105

JP4 接頭

NET YAlt1gt LOC = P104

NET YAlt2gt LOC = P103

NET YAlt3gt LOC = P102

NET YBlt0gt LOC = P127

NET YBlt1gt LOC = P129

NET YBlt2gt LOC = P131

NET YBlt3gt LOC = P130

NET YBlt4gt LOC = P128

NET YBlt5gt LOC = P125

NET YBlt6gt LOC = P119

NET YBlt7gt LOC = P118

NET YClt0gt LOC = P107

NET YClt1gt LOC = P108

NET YClt2gt LOC = P98

NET YClt3gt LOC = P97

在光碟片中 RFFPGAVHDLDEMOBIT3S200 裡有VHDL與數位邏輯設計書本範例原始檔與合成檔

87

eM_95XL 模組

NET CLK LOC = SPIN38

NET XAlt0gt LOC = SPIN53

NET XAlt1gt LOC = SPIN54

NET XAlt2gt LOC = SPIN56

NET XAlt3gt LOC = SPIN57

NET XBlt0gt LOC = SPIN85

NET XBlt1gt LOC = SPIN86

NET XBlt2gt LOC = SPIN97

NET XBlt3gt LOC = SPIN98

NET XBlt4gt LOC = SPIN100

NET XBlt5gt LOC = SPIN101

NET XBlt6gt LOC = SPIN105

NET XBlt7gt LOC = SPIN104

NET XClt0gt LOC = SPIN58

NET XClt1gt LOC = SPIN59

NET XClt2gt LOC = SPIN60

NET XClt3gt LOC = SPIN61

NET YAlt0gt LOC = SPIN111

JP4 接頭

NET YAlt1gt LOC = SPIN110

NET YAlt2gt LOC = SPIN107

NET YAlt3gt LOC = SPIN106

NET YBlt0gt LOC = SPIN93

NET YBlt1gt LOC = SPIN91

NET YBlt2gt LOC = SPIN87

NET YBlt3gt LOC = SPIN88

NET YBlt4gt LOC = SPIN92

NET YBlt5gt LOC = SPIN94

NET YBlt6gt LOC = SPIN95

NET YBlt7gt LOC = SPIN96

NET YClt0gt LOC = SPIN112

NET YClt1gt LOC = SPIN113

NET YClt2gt LOC = SPIN103

NET YClt3gt LOC = SPIN102

在光碟片中 RFFPGAVHDLDEMOSVF95288XL 裡有VHDL與數位邏輯設計書本範例原始檔與合成

檔案

88

eM_FPGA 模組

NET CLK LOC = E12

NET XAlt0gt LOC = AA3

NET XAlt1gt LOC = Y4

NET XAlt2gt LOC = AA4

NET XAlt3gt LOC = AB4

NET XBlt0gt LOC = M1

NET XBlt1gt LOC = M2

NET XBlt2gt LOC = W13

NET XBlt3gt LOC = Y13

NET XBlt4gt LOC = AA13

NET XBlt5gt LOC = AB13

NET XBlt6gt LOC = Y18

NET XBlt7gt LOC = W18

NET XClt0gt LOC = W5

NET XClt1gt LOC = Y5

NET XClt2gt LOC = AA5

NET XClt3gt LOC = AB5

NET YAlt0gt LOC = Y17

JP4 接頭

NET YAlt1gt LOC = W17

NET YAlt2gt LOC = AB18

NET YAlt3gt LOC = AA18

NET YBlt0gt LOC = N1

NET YBlt1gt LOC = M5

NET YBlt2gt LOC = M3

NET YBlt3gt LOC = M4

NET YBlt4gt LOC = M6

NET YBlt5gt LOC = N2

NET YBlt6gt LOC = U13

NET YBlt7gt LOC = V13

NET YClt0gt LOC = AA17

NET YClt1gt LOC = AB17

NET YClt2gt LOC = V12

NET YClt3gt LOC = U12

在光碟片中 RFFPGAVHDLDEMOBIT2V250 裡有VHDL與數位邏輯設計書本範例原始檔與合成檔

89

Page 75: RFFPGA 直流馬達實驗手冊juniortek.com.tw/program/manual/RF-DC-mal.pdf · em_demo模組 em_dcm 直流伺服馬達 dc電源 rffpga 系統的直流馬達實驗規劃 其中包括:

安裝 FPLC 注意事項

當您進入 FPLC 時

按 FILE 選擇 programhellip 選擇檔案為 exp_dcmplc 出現下面畫面

正常顯示畫面為

75

DOS 環境操作

在 PC 端的操作是在 Windows 環境中的 DOS 視窗中執行指令範例如下

eFPGA progNETbit 下載 FPGA電路至網路節點0(即 USB節點)中 eFPGA testLEDbit 1 下載 FPGA電路至網路節點1中

對於單一節點的控制程序如下

1將 eM_USB模組連結個人電腦的 USB端 2eM_USB模組開機 3執行下載指令即可 eFPGA xxxxbit 4若要更改 FPGA電路只要重新執行下載指令即可

對於多個網路節點的控制程序如下

1第一組 eM_USB模組連結個人電腦的 USB端再以光纖網路依序其他各節點 2連接 USB界面者為模組0從光纖發射端連接出去的模組為1依此類推 3將所有 eM_USB模組開機 4執行下載指令如下 eFPGA progNETbit 模組0必須先下載指定的 FPGA電路 eFPGA xxxxbit 1 再依序下載其他網路模組的 FPGA電路 eFPGA yyyybit 2 eFPGA zzzzbit 最後再重新下載模組0的 FPGA電路 5換句話說模組0必須先執行 progNETbit讓光纖網路接受 FPGA控制後才能透過光纖網路下載至其他節點等全部網路節點下載完畢後再將模組0的 FPGA重新下載讓模組0也可自由執行任意的 FPGA電路

6若要更改某一個網路節點中的 FPGA電路只要重新執行下述指令 eFPGA progNETbit 模組0必須先下載指定的 FPGA電路 eFPGA yyyybit 2 下載指定網路模組的 FPGA電路 eFPGA zzzz bit 最後再重新下載模組0的 FPGA電路 換句話說除非模組0中的 FPGA已經包括光纖網路管理電路否則一定要先在

模組0中下載網路管理電路後才能下載指定網路節點的 FPGA電路

76

光纖網路通訊 FPGA 發展系統

系統配置

光纖網路通訊 FPGA 發展系統的系統配置圖如下

個人電腦(Windows) eM_USB模組

0USB

eM_USB模組1

光纖網路

eM_USB模組2

eM_USB模組N

其中

1基本模組為 eM_USB模組可用 USB界面和個人電腦連線並提供 USB對光纖網路的轉換功能使得個人電腦可以獨立控制光纖網路中的每個網路節點

2eM_USB模組也可以作為光纖網路中的網路節點透過光纖網路而接受個人電腦的

監控 3就個人電腦而言不論是 USB界面直接連結或是以光纖網路間接連結的 eM_USB模組都是可以直接監控的網路節點最多可以同時控制一個 USB節點和 30個網路節點

4對於每一個網路節點個人電腦都可執行 eM_USB模組中 FPGA的電路下載工作並在適當的 FPGA電路配合下可執行 eM_USB模組中 FPGA內部電路的讀寫控制 5透過適當的 FPGA電路設計各網路節點都可透過光纖網路和其他任何網路節點

作同步通訊執行 FPGA內部記憶體的資料交換資料交換頻率可達 1KHz以上

77

網路模組配置

每個網路模組的標準配置圖如下

eM_USB模組光纖網路

USB eM_FPGA卡

eM_DEMO模組

eM_EXP實驗模組

DC電源

其中

1網路模組以 eM_USB模組為主提供基本的 USB界面和光纖網路連線 2eM_USB模組中的 FPGACPLD採用插卡型式可選擇不同的 eM_FPGA卡包括

eM_2V1K卡可選用 Virtex系列的 XC2V250和 XC2V1000 eM_3S1K卡可選用 Spartan3系列的 XC3S400XC3S1000和 XC3S1500 eM_3S50卡可選用 Spartan3系列的 XC3S50XC3S200和 XC3S400 eM_95XL卡可選用 9500XL系列的 XC95144XL和 XC95288XL 3eM_USB模組中的對外連線有兩種一種是 26P接頭用以連接既有的各種實驗模

組另一種是兩組 50P接頭將 FPGA中各接腳引出用以連接專題實驗 4eM_DEMO模組就是插上 50P接頭的教學模組其中包括 LED 數字顯示和 44鍵盤也具備兩組的 ADC和兩組的 DAC接頭提供類比訊號的測試工具

常用的實驗組合包括

1精簡組合包括(eM_USB+eM_FPGA)提供基本的網路節點適用於專題實驗 2標準組合包括(eM_USB+eM_FPGA+eM_DEMO)提供基礎 FPGA設計的教學實驗

3實驗組合包括(eM_USB+eM_FPGA+eM_DEMO+eM_EXP)提供進階的 FPGA實驗可依需求選用不同的實驗模組

78

eM_USB 模組

eM_USB 模組的電路配置圖如下

TxRx

DCPower

USB

JP2

JP3

光纖界面

外加電源

PC連線

JP1

eM_FPGA模組

FT232 CPLD FlashROM

SRAM

10cm

6cm

JP4

其中

1對外的連線接頭包括 DC電源 可選擇單電源(5V)或是多電源(5V+12V-12V)兩種 USB界面 直接連接個人電腦 光纖界面連接光纖網路 2實驗界面包括 JP1負責內部 CPLD的電路下載 JP2JP3兩組 50P的擴張用接頭 JP4 標準 26P接頭用以連接各種實驗模組 3內部的電路配置包括 A以 SO-DIMM接頭連接各種 eM_FPGA卡 B內附 EEPROMFlashROM和 SRAM提供 FPGA作應用測試 C以一顆 FT232BM作為 USB界面解碼而以一顆 CPLD作為光纖網路解碼 D提供各種 eM_FPGA卡的電路下載功能 4內附五顆 LED由上而下依序為 usbLED指示 USB界面的讀寫狀態 tstLED可由 FPGA電路自行定義 stsLED可由 FPGA電路自行定義 RxLED 可由 FPGA電路自行定義 TxLED 可由 FPGA電路自行定義

79

外部接腳定義

外部接頭的接點順序圖示如下

上視圖

JP11 9 JP4

126225

JP31

50249

JP21

50249

而各接頭的接點定義如下

JP1 JP4 JP2 JP3 1+33V 1+12V 2+12V 1 GND 2 GND 1 GND 2 GND 2GND 3 ADC 4 DAC 3POWER 4ALARM 3 +5V 4 +5V 3nc 5 yPB2 6 yPB3 5RxNET 6TxNET 5+12V 6+12V 4TCK 7 yPB1 6 yPB4 7RxUSB 6TxUSB 7-12V 6-12V 5nc 9 yPB0 10yPB5 9RxCAN 10TxCAN 9 ADC 10 DAC 6TDO 11yPB6 12yPB7 11P0D0 12P0D1 11P1D0 12P1D1 7TDI 13yGND 14yPC3 13P0D2 14P0D3 13P1D2 14P1D3 8nc 15yPC2 16yPC1 15P0D4 16P0D5 15P1D4 16P1D5 9TMS 17yPC0 18yPA0 17P0D6 18P0D7 17P1D6 18P1D7 19yPA1 20yPA2 19P0D8 20P0D9 19P1D8 20P1D9 21yPA3 22GND 21P0D10 22P0D11 21P1D10 22P1D11 23GND 24+5V 23P0D12 24P0D13 23P1D12 24P1D13 25+5V 26nc 25P0D14 26P0D15 25P1D14 26P1D15 27P2D0 28P2D1 27PxA0 28PxA1 29P2D2 30P2D3 29PxA2 30PxA3 31P2D4 32P2D5 31PxA4 32PxA5 33P2D6 34P2D7 33PxA6 34PxA7 35P2D8 36P2D9 35PxB0 36PxB1 37P2D10 38P2D11 37PxB2 38PxB3 39P2D12 40P2D13 39PxB4 40PxB5 41P2D14 42P2D15 41PxB6 42PxB7 43ADC0 44ADC1 43PxC0 44PxC1 45ADC2 46ADC3 45PxC2 46PxC3 47ADC4 48ADC5 47PxC4 48PxC5 49DAC0 50DAC1 49PxC6 50PxC7

80

eM_FPGA 模組

在各種 eM_FPGA 模組中FPGA 對外電路的標準配置圖如下

24576MHz

FlashROM

26PSRAM

EEPROM

mD[8]

yPA[4]

FPGACPLD

mA[19]mRDmWRmCSeeCKeeCSeeDIeeDO

光纖界面 RxNETTxNET

USB 界面 RxUSBTxUSBCLK24MPOWERALARM

LED

tstLEDstsLEDRxLEDTxLED

yPB[8]yPC[4]

ADCDAC

ADC[8]

實驗模組

ADC[2]

DAC[2]

xPA[4]

xPB[8]

xPC[4]

基礎實驗

其中

1FPGACPLD可以選擇下述幾種 XC2V250XC2V1000 採用 eM_2V1K模組其中 FPGA為 FG456包裝 XC3S400XC3S1000XC3S1500採用 eM_3S1K模組其中 FPGA為 FG456包裝 XC3S400XC3S1000XC3S1500採用 eM_3S1K模組其中 FPGA為 FG456包裝 XC3S50XC3S200XC3S400 採用 eM_3S50模組其中 FPGA為 TQ144包裝 XC95144XLXC95288XL 採用 eM_95XL模組其中 CPLD為 TQ144包裝 2採用 FG456包裝者可以控制所有的 IO界面 3採用 TQ144包裝者只是不能控制 RAM和 FlashROM而可以控制其他所有的界面 4所有 FPGA模組都可自由選擇由 USB界面或是由光纖界面下載電路但是 CPLD模組只能固定由 USB界面下載電路

5所有 FPGACPLD模組都可透過 26P接頭連接既有的各種實驗模組

81

FPGA 接腳對照表

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

mD0 XD6 mD0 A17 C13 -- -- mD1 XD7 mD1 B17 D12 -- -- mD2 XD8 mD2 C17 D11 -- -- mD3 XD9 mD3 D17 C11 -- -- mD4 XD10 mD4 E17 D10 -- -- mD5 XD11 mD5 E16 C10 -- -- mD6 XD12 mD6 E14 D9 -- -- mD7 XD13 mD7 E13 D7 -- -- mA0 XD14 mA0 D13 C7 -- -- mA1 XD15 mA1 C13 D6 -- -- mA2 XA0 mA2 V5 C3 -- -- mA3 XA1 mA3 U5 C4 -- -- mA4 XA2 mA4 Y2 D3 -- -- mA5 XA3 mA5 Y1 D4 -- -- mA6 XA4 mA6 V4 E3 -- -- mA7 XA5 mA7 V3 E4 -- -- mA8 XA6 mA8 W2 F3 -- -- mA9 XA7 mA9 W1 F4 -- -- mA10 XA8 mA10 T2 G6 -- -- mA11 XA9 mA11 T1 K3 -- -- mA12 XA10 mA12 R4 K10 -- -- mA13 XA11 mA13 R3 L3 -- -- mA14 XA12 mA14 R2 L4 -- -- mRD XRD mRD R1 D5 -- -- mWR XWR mWR P6 C6 -- --

POWER P0A0 POWER B4 B20 P1 P5 ALARM P0A1 ALARM A4 A19 P2 P6 RxNET P0A2 RxNET C4 B19 P4 P7 TxNET P0A3 TxNET C5 A18 P5 P9 RxUSB P0B0 RxUSB B5 A15 P6 P10 TxUSB P0B1 TxUSB A5 B15 P7 P11 RxCAN P0B2 RxCAN D6 A14 P8 P12 RxCAN P0B3 TxCAN C6 B14 P10 P13

CLK24M CLK24M CLK24M E12 B12 P124 P38

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

PWM0H P3A0 P0D0 E6 A8 P21 P23 PWM0L P3A1 P0D1 E5 B8 P23 P24 PWM1H P3A2 P0D2 C2 B6 P24 P25 PWM1L P3A3 P0D3 C1 A5 P25 P26 PWM2H P3A4 P0D4 D2 B5 P26 P27

82

PWM2L P3A5 P0D5 D1 A4 P27 P28 PWMenb P3A6 P0D6 E4 B4 P28 P30 PHT1Z P3A7 P0D7 E3 A3 P30 P31 PHT1A P3B0 P0D8 G2 C1 P31 P32 PHT1B P3B1 P0D9 G1 C2 P32 P33 PHT0A P3B2 P0D10 H5 D1 P33 P34 PHT0B P3B3 P0D11 J6 D2 P35 P35 AMP0 P3B4 P0D12 H4 E1 P36 P39 AMP1 P3B5 P0D13 H3 E2 P40 P40 AMP2 P3B6 P0D14 H2 F2 P41 P41 AMP3 P3B7 P0D15 H1 G1 P44 P43 eeSK P0C3 P1D0 C10 B9 P20 P22 eeCS P0C2 P1D1 D10 A9 P18 P21 eeDI P0C1 P1D2 F10 B10 P17 P20 eeDO P0C0 P1D3 E10 B11 P15 P19 ssCK P0B7 P1D4 E8 A11 P14 P17 ssCS P0B6 P1D5 E7 A12 P13 P16 ssDI P0B5 P1D6 A6 B13 P12 P15 ssDO P0B4 P1D7 B6 A13 P11 P14

ppCLK P3C0 P1D8 K4 G2 P46 P44 ppDIN P3C1 P1D9 K3 K1 P47 P45 TxD P3C2 P1D10 K2 K2 P50 P46 RxD P3C3 P1D11 K1 L1 P51 P48

tstLED P3C4 P1D12 L5 L2 P52 P49 stsLED P3C5 P1D13 L4 M1 P53 P50 RxLED P3C6 P1D14 L3 M2 P55 P51 TxLED P3C7 P1D15 L2 N1 P56 P52

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

xPA0 P2A0 P2D0 AA3 N2 P59 P53 xPA1 P2A1 P2D1 Y4 T1 P60 P54 xPA2 P2A2 P2D2 AA4 T2 P63 P56 xPA3 P2A3 P2D3 AB4 U2 P68 P57 xPC0 P2A4 P2D4 W5 V1 P69 P58 xPC1 P2A5 P2D5 Y5 V2 P70 P59 xPC2 P2A6 P2D6 AA5 W1 P73 P60 xPC3 P2A7 P2D7 AB5 W2 P74 P61

-- P2B0 P2D8 V6 Y1 P76 P64 -- P2B1 P2D9 V7 Y2 P77 P66 -- P2B2 P2D10 W6 AA3 P78 P68

mCS P2B3 P2D11 Y6 AB4 P79 P69 mA15 P2B4 P2D12 V9 AA4 P80 P70 mA16 P2B5 P2D13 V10 AB5 P82 P71 mA17 P2B6 P2D14 W10 AA5 P83 P74 mA18 P2B7 P2D15 Y10 AA6 P84 P75 CS0 P2C0 ADC0 AA10 AB8 P85 P76

83

SDIN0 P2C1 ADC1 AB10 AA8 P86 P77 CS1 P2C2 ADC2 U10 AB9 P87 P78

SDIN1 P2C3 ADC3 U11 AA9 P89 P79 SCLK P2C4 ADC4 V11 AB10 P90 P80 CS2 P2C5 ADC5 W11 AA10 P92 P81

SDOUT P2C6 ADC6 Y11 AB11 P93 P82 LDAC P2C7 ADC7 AA11 AA11 P95 P83

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

xPB0 P1A0 PxA0 M1 M3 P135 P85 xPB1 P1A1 PxA1 M2 M4 P132 P86 yPB2 P1A2 PxA2 M3 N3 P131 P87 yPB3 P1A3 PxA3 M4 N4 P130 P88 yPB1 P1A4 PxA4 M5 T4 P129 P91 yPB4 P1A5 PxA5 M6 T5 P128 P92 yPB0 P1A6 PxA6 N1 U3 P127 P93 yPB5 P1A7 PxA7 N2 U4 P125 P94 yPB6 P1B0 PxB0 U13 V3 P119 P95 yPB7 P1B1 PxB1 V13 V4 P118 P96 xPB2 P1B2 PxB2 W13 W3 P116 P97 xPB3 P1B3 PxB3 Y13 W4 P113 P98 xPB4 P1B4 PxB4 AA13 Y3 P112 P100 xPB5 P1B5 PxB5 AB13 Y4 P96 P101 yPC3 P1B6 PxB6 U12 Y5 P97 P102 yPC2 P1B7 PxB7 V12 W5 P98 P103 yPC1 P1C7 PxC0 AB17 W11 P108 P113 yPC0 P1C6 PxC1 AA17 Y11 P107 P112 yPA0 P1C5 PxC2 Y17 W10 P105 P111 yPA1 P1C4 PxC3 W17 Y10 P104 P110 yPA2 P1C3 PxC4 AB18 W9 P103 P107 yPA3 P1C2 PxC5 AA18 W8 P102 P106 xPB6 P1C1 PxC6 Y18 W6 P100 P105 xPB7 P1C0 PxC7 W18 Y6 P99 P104

84

eM_DEMO 模組

eM_DEMO 模組的電路配置圖如下

eM_USB 模組

數字型 LED

0 1 2 34 5 6 78 9 A BC D E F

燈號型 LED

44 鍵盤

ADC0 ADC1 DAC0 DAC1

LED 選擇KEY 選擇

其中

1eM_DEMO模組的基本功能包括 A將 xPAxPBxPC等 16個 IO訊號引出控制 LED和鍵盤電路 B將 ADDA訊號引出並放大成+-10V的工作範圍 2LED和鍵盤可以選擇三種模式由 LED和 KEY 兩組開關作選擇圖示如下

模式1

0123

模式2 模式3

0 1 2 34 5 6 78 9 A BC D E F

0123

3模式14鍵輸入並搭配 16點的 LED燈號顯示其中 16點 LED分別對映到 xPA[0~3]xPB[0~7]和 xPC[0~3] 4組按鍵分別對映到 xPC[0~3] 4模式24鍵輸入並搭配四個 7段式數字顯示其中 數字顯示由 xPA[0~3]作數字掃瞄而由 xPB[0~7]作 7段式 LED控制 4組按鍵 分別對映到 xPC[0~3] 5模式316鍵輸入並搭配四個 7段式數字顯示其中 數字顯示由 xPA[0~3]作數字掃瞄而由 xPB[0~7]作 7段式 LED控制 16組按鍵由 xPA[0~3]作鍵盤掃瞄而由 xPC[0~3]作鍵盤讀取 6根據VHDL與數位邏輯設計的章節其中 第 1章至 10章的實驗採用模式1而 第 11章實驗採用模式2而 第 12章之後的實驗都採用模式3

85

FPGA UCF 定義

eM_3S1K 模組

NET CLK LOC = B12

NET XAlt0gt LOC = N2

NET XAlt1gt LOC = T1

NET XAlt2gt LOC = T2

NET XAlt3gt LOC = U2

NET XBlt0gt LOC = M3

NET XBlt1gt LOC = M4

NET XBlt2gt LOC = W3

NET XBlt3gt LOC = W4

NET XBlt4gt LOC = Y3

NET XBlt5gt LOC = Y4

NET XBlt6gt LOC = W6

NET XBlt7gt LOC = Y6

NET XClt0gt LOC = V1

NET XClt1gt LOC = V2

NET XClt2gt LOC = W1

NET XClt3gt LOC = W2

NET YAlt0gt LOC = W10

JP4 接頭

NET YAlt1gt LOC = Y10

NET YAlt2gt LOC = W9

NET YAlt3gt LOC = W8

NET YBlt0gt LOC = U3

NET YBlt1gt LOC = T4

NET YBlt2gt LOC = N3

NET YBlt3gt LOC = N4

NET YBlt4gt LOC = T5

NET YBlt5gt LOC = U4

NET YBlt6gt LOC = V3

NET YBlt7gt LOC = V4

NET YClt0gt LOC = Y11

NET YClt1gt LOC = W11

NET YClt2gt LOC = W5

NET YClt3gt LOC = Y5

在光碟片中 RFFPGAVHDLDEMOBIT3S1K 裡有 VHDL 與數位邏輯設計書本範例原始檔與合成檔

86

eM_3S50 模組

NET CLK LOC = P124

NET XAlt0gt LOC = P59

NET XAlt1gt LOC = P60

NET XAlt2gt LOC = P63

NET XAlt3gt LOC = P68

NET XBlt0gt LOC = P135

NET XBlt1gt LOC = P132

NET XBlt2gt LOC = P116

NET XBlt3gt LOC = P113

NET XBlt4gt LOC = P112

NET XBlt5gt LOC = P96

NET XBlt6gt LOC = P100

NET XBlt7gt LOC = P99

NET XClt0gt LOC = P69

NET XClt1gt LOC = P70

NET XClt2gt LOC = P73

NET XClt3gt LOC = P74

NET YAlt0gt LOC = P105

JP4 接頭

NET YAlt1gt LOC = P104

NET YAlt2gt LOC = P103

NET YAlt3gt LOC = P102

NET YBlt0gt LOC = P127

NET YBlt1gt LOC = P129

NET YBlt2gt LOC = P131

NET YBlt3gt LOC = P130

NET YBlt4gt LOC = P128

NET YBlt5gt LOC = P125

NET YBlt6gt LOC = P119

NET YBlt7gt LOC = P118

NET YClt0gt LOC = P107

NET YClt1gt LOC = P108

NET YClt2gt LOC = P98

NET YClt3gt LOC = P97

在光碟片中 RFFPGAVHDLDEMOBIT3S200 裡有VHDL與數位邏輯設計書本範例原始檔與合成檔

87

eM_95XL 模組

NET CLK LOC = SPIN38

NET XAlt0gt LOC = SPIN53

NET XAlt1gt LOC = SPIN54

NET XAlt2gt LOC = SPIN56

NET XAlt3gt LOC = SPIN57

NET XBlt0gt LOC = SPIN85

NET XBlt1gt LOC = SPIN86

NET XBlt2gt LOC = SPIN97

NET XBlt3gt LOC = SPIN98

NET XBlt4gt LOC = SPIN100

NET XBlt5gt LOC = SPIN101

NET XBlt6gt LOC = SPIN105

NET XBlt7gt LOC = SPIN104

NET XClt0gt LOC = SPIN58

NET XClt1gt LOC = SPIN59

NET XClt2gt LOC = SPIN60

NET XClt3gt LOC = SPIN61

NET YAlt0gt LOC = SPIN111

JP4 接頭

NET YAlt1gt LOC = SPIN110

NET YAlt2gt LOC = SPIN107

NET YAlt3gt LOC = SPIN106

NET YBlt0gt LOC = SPIN93

NET YBlt1gt LOC = SPIN91

NET YBlt2gt LOC = SPIN87

NET YBlt3gt LOC = SPIN88

NET YBlt4gt LOC = SPIN92

NET YBlt5gt LOC = SPIN94

NET YBlt6gt LOC = SPIN95

NET YBlt7gt LOC = SPIN96

NET YClt0gt LOC = SPIN112

NET YClt1gt LOC = SPIN113

NET YClt2gt LOC = SPIN103

NET YClt3gt LOC = SPIN102

在光碟片中 RFFPGAVHDLDEMOSVF95288XL 裡有VHDL與數位邏輯設計書本範例原始檔與合成

檔案

88

eM_FPGA 模組

NET CLK LOC = E12

NET XAlt0gt LOC = AA3

NET XAlt1gt LOC = Y4

NET XAlt2gt LOC = AA4

NET XAlt3gt LOC = AB4

NET XBlt0gt LOC = M1

NET XBlt1gt LOC = M2

NET XBlt2gt LOC = W13

NET XBlt3gt LOC = Y13

NET XBlt4gt LOC = AA13

NET XBlt5gt LOC = AB13

NET XBlt6gt LOC = Y18

NET XBlt7gt LOC = W18

NET XClt0gt LOC = W5

NET XClt1gt LOC = Y5

NET XClt2gt LOC = AA5

NET XClt3gt LOC = AB5

NET YAlt0gt LOC = Y17

JP4 接頭

NET YAlt1gt LOC = W17

NET YAlt2gt LOC = AB18

NET YAlt3gt LOC = AA18

NET YBlt0gt LOC = N1

NET YBlt1gt LOC = M5

NET YBlt2gt LOC = M3

NET YBlt3gt LOC = M4

NET YBlt4gt LOC = M6

NET YBlt5gt LOC = N2

NET YBlt6gt LOC = U13

NET YBlt7gt LOC = V13

NET YClt0gt LOC = AA17

NET YClt1gt LOC = AB17

NET YClt2gt LOC = V12

NET YClt3gt LOC = U12

在光碟片中 RFFPGAVHDLDEMOBIT2V250 裡有VHDL與數位邏輯設計書本範例原始檔與合成檔

89

Page 76: RFFPGA 直流馬達實驗手冊juniortek.com.tw/program/manual/RF-DC-mal.pdf · em_demo模組 em_dcm 直流伺服馬達 dc電源 rffpga 系統的直流馬達實驗規劃 其中包括:

DOS 環境操作

在 PC 端的操作是在 Windows 環境中的 DOS 視窗中執行指令範例如下

eFPGA progNETbit 下載 FPGA電路至網路節點0(即 USB節點)中 eFPGA testLEDbit 1 下載 FPGA電路至網路節點1中

對於單一節點的控制程序如下

1將 eM_USB模組連結個人電腦的 USB端 2eM_USB模組開機 3執行下載指令即可 eFPGA xxxxbit 4若要更改 FPGA電路只要重新執行下載指令即可

對於多個網路節點的控制程序如下

1第一組 eM_USB模組連結個人電腦的 USB端再以光纖網路依序其他各節點 2連接 USB界面者為模組0從光纖發射端連接出去的模組為1依此類推 3將所有 eM_USB模組開機 4執行下載指令如下 eFPGA progNETbit 模組0必須先下載指定的 FPGA電路 eFPGA xxxxbit 1 再依序下載其他網路模組的 FPGA電路 eFPGA yyyybit 2 eFPGA zzzzbit 最後再重新下載模組0的 FPGA電路 5換句話說模組0必須先執行 progNETbit讓光纖網路接受 FPGA控制後才能透過光纖網路下載至其他節點等全部網路節點下載完畢後再將模組0的 FPGA重新下載讓模組0也可自由執行任意的 FPGA電路

6若要更改某一個網路節點中的 FPGA電路只要重新執行下述指令 eFPGA progNETbit 模組0必須先下載指定的 FPGA電路 eFPGA yyyybit 2 下載指定網路模組的 FPGA電路 eFPGA zzzz bit 最後再重新下載模組0的 FPGA電路 換句話說除非模組0中的 FPGA已經包括光纖網路管理電路否則一定要先在

模組0中下載網路管理電路後才能下載指定網路節點的 FPGA電路

76

光纖網路通訊 FPGA 發展系統

系統配置

光纖網路通訊 FPGA 發展系統的系統配置圖如下

個人電腦(Windows) eM_USB模組

0USB

eM_USB模組1

光纖網路

eM_USB模組2

eM_USB模組N

其中

1基本模組為 eM_USB模組可用 USB界面和個人電腦連線並提供 USB對光纖網路的轉換功能使得個人電腦可以獨立控制光纖網路中的每個網路節點

2eM_USB模組也可以作為光纖網路中的網路節點透過光纖網路而接受個人電腦的

監控 3就個人電腦而言不論是 USB界面直接連結或是以光纖網路間接連結的 eM_USB模組都是可以直接監控的網路節點最多可以同時控制一個 USB節點和 30個網路節點

4對於每一個網路節點個人電腦都可執行 eM_USB模組中 FPGA的電路下載工作並在適當的 FPGA電路配合下可執行 eM_USB模組中 FPGA內部電路的讀寫控制 5透過適當的 FPGA電路設計各網路節點都可透過光纖網路和其他任何網路節點

作同步通訊執行 FPGA內部記憶體的資料交換資料交換頻率可達 1KHz以上

77

網路模組配置

每個網路模組的標準配置圖如下

eM_USB模組光纖網路

USB eM_FPGA卡

eM_DEMO模組

eM_EXP實驗模組

DC電源

其中

1網路模組以 eM_USB模組為主提供基本的 USB界面和光纖網路連線 2eM_USB模組中的 FPGACPLD採用插卡型式可選擇不同的 eM_FPGA卡包括

eM_2V1K卡可選用 Virtex系列的 XC2V250和 XC2V1000 eM_3S1K卡可選用 Spartan3系列的 XC3S400XC3S1000和 XC3S1500 eM_3S50卡可選用 Spartan3系列的 XC3S50XC3S200和 XC3S400 eM_95XL卡可選用 9500XL系列的 XC95144XL和 XC95288XL 3eM_USB模組中的對外連線有兩種一種是 26P接頭用以連接既有的各種實驗模

組另一種是兩組 50P接頭將 FPGA中各接腳引出用以連接專題實驗 4eM_DEMO模組就是插上 50P接頭的教學模組其中包括 LED 數字顯示和 44鍵盤也具備兩組的 ADC和兩組的 DAC接頭提供類比訊號的測試工具

常用的實驗組合包括

1精簡組合包括(eM_USB+eM_FPGA)提供基本的網路節點適用於專題實驗 2標準組合包括(eM_USB+eM_FPGA+eM_DEMO)提供基礎 FPGA設計的教學實驗

3實驗組合包括(eM_USB+eM_FPGA+eM_DEMO+eM_EXP)提供進階的 FPGA實驗可依需求選用不同的實驗模組

78

eM_USB 模組

eM_USB 模組的電路配置圖如下

TxRx

DCPower

USB

JP2

JP3

光纖界面

外加電源

PC連線

JP1

eM_FPGA模組

FT232 CPLD FlashROM

SRAM

10cm

6cm

JP4

其中

1對外的連線接頭包括 DC電源 可選擇單電源(5V)或是多電源(5V+12V-12V)兩種 USB界面 直接連接個人電腦 光纖界面連接光纖網路 2實驗界面包括 JP1負責內部 CPLD的電路下載 JP2JP3兩組 50P的擴張用接頭 JP4 標準 26P接頭用以連接各種實驗模組 3內部的電路配置包括 A以 SO-DIMM接頭連接各種 eM_FPGA卡 B內附 EEPROMFlashROM和 SRAM提供 FPGA作應用測試 C以一顆 FT232BM作為 USB界面解碼而以一顆 CPLD作為光纖網路解碼 D提供各種 eM_FPGA卡的電路下載功能 4內附五顆 LED由上而下依序為 usbLED指示 USB界面的讀寫狀態 tstLED可由 FPGA電路自行定義 stsLED可由 FPGA電路自行定義 RxLED 可由 FPGA電路自行定義 TxLED 可由 FPGA電路自行定義

79

外部接腳定義

外部接頭的接點順序圖示如下

上視圖

JP11 9 JP4

126225

JP31

50249

JP21

50249

而各接頭的接點定義如下

JP1 JP4 JP2 JP3 1+33V 1+12V 2+12V 1 GND 2 GND 1 GND 2 GND 2GND 3 ADC 4 DAC 3POWER 4ALARM 3 +5V 4 +5V 3nc 5 yPB2 6 yPB3 5RxNET 6TxNET 5+12V 6+12V 4TCK 7 yPB1 6 yPB4 7RxUSB 6TxUSB 7-12V 6-12V 5nc 9 yPB0 10yPB5 9RxCAN 10TxCAN 9 ADC 10 DAC 6TDO 11yPB6 12yPB7 11P0D0 12P0D1 11P1D0 12P1D1 7TDI 13yGND 14yPC3 13P0D2 14P0D3 13P1D2 14P1D3 8nc 15yPC2 16yPC1 15P0D4 16P0D5 15P1D4 16P1D5 9TMS 17yPC0 18yPA0 17P0D6 18P0D7 17P1D6 18P1D7 19yPA1 20yPA2 19P0D8 20P0D9 19P1D8 20P1D9 21yPA3 22GND 21P0D10 22P0D11 21P1D10 22P1D11 23GND 24+5V 23P0D12 24P0D13 23P1D12 24P1D13 25+5V 26nc 25P0D14 26P0D15 25P1D14 26P1D15 27P2D0 28P2D1 27PxA0 28PxA1 29P2D2 30P2D3 29PxA2 30PxA3 31P2D4 32P2D5 31PxA4 32PxA5 33P2D6 34P2D7 33PxA6 34PxA7 35P2D8 36P2D9 35PxB0 36PxB1 37P2D10 38P2D11 37PxB2 38PxB3 39P2D12 40P2D13 39PxB4 40PxB5 41P2D14 42P2D15 41PxB6 42PxB7 43ADC0 44ADC1 43PxC0 44PxC1 45ADC2 46ADC3 45PxC2 46PxC3 47ADC4 48ADC5 47PxC4 48PxC5 49DAC0 50DAC1 49PxC6 50PxC7

80

eM_FPGA 模組

在各種 eM_FPGA 模組中FPGA 對外電路的標準配置圖如下

24576MHz

FlashROM

26PSRAM

EEPROM

mD[8]

yPA[4]

FPGACPLD

mA[19]mRDmWRmCSeeCKeeCSeeDIeeDO

光纖界面 RxNETTxNET

USB 界面 RxUSBTxUSBCLK24MPOWERALARM

LED

tstLEDstsLEDRxLEDTxLED

yPB[8]yPC[4]

ADCDAC

ADC[8]

實驗模組

ADC[2]

DAC[2]

xPA[4]

xPB[8]

xPC[4]

基礎實驗

其中

1FPGACPLD可以選擇下述幾種 XC2V250XC2V1000 採用 eM_2V1K模組其中 FPGA為 FG456包裝 XC3S400XC3S1000XC3S1500採用 eM_3S1K模組其中 FPGA為 FG456包裝 XC3S400XC3S1000XC3S1500採用 eM_3S1K模組其中 FPGA為 FG456包裝 XC3S50XC3S200XC3S400 採用 eM_3S50模組其中 FPGA為 TQ144包裝 XC95144XLXC95288XL 採用 eM_95XL模組其中 CPLD為 TQ144包裝 2採用 FG456包裝者可以控制所有的 IO界面 3採用 TQ144包裝者只是不能控制 RAM和 FlashROM而可以控制其他所有的界面 4所有 FPGA模組都可自由選擇由 USB界面或是由光纖界面下載電路但是 CPLD模組只能固定由 USB界面下載電路

5所有 FPGACPLD模組都可透過 26P接頭連接既有的各種實驗模組

81

FPGA 接腳對照表

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

mD0 XD6 mD0 A17 C13 -- -- mD1 XD7 mD1 B17 D12 -- -- mD2 XD8 mD2 C17 D11 -- -- mD3 XD9 mD3 D17 C11 -- -- mD4 XD10 mD4 E17 D10 -- -- mD5 XD11 mD5 E16 C10 -- -- mD6 XD12 mD6 E14 D9 -- -- mD7 XD13 mD7 E13 D7 -- -- mA0 XD14 mA0 D13 C7 -- -- mA1 XD15 mA1 C13 D6 -- -- mA2 XA0 mA2 V5 C3 -- -- mA3 XA1 mA3 U5 C4 -- -- mA4 XA2 mA4 Y2 D3 -- -- mA5 XA3 mA5 Y1 D4 -- -- mA6 XA4 mA6 V4 E3 -- -- mA7 XA5 mA7 V3 E4 -- -- mA8 XA6 mA8 W2 F3 -- -- mA9 XA7 mA9 W1 F4 -- -- mA10 XA8 mA10 T2 G6 -- -- mA11 XA9 mA11 T1 K3 -- -- mA12 XA10 mA12 R4 K10 -- -- mA13 XA11 mA13 R3 L3 -- -- mA14 XA12 mA14 R2 L4 -- -- mRD XRD mRD R1 D5 -- -- mWR XWR mWR P6 C6 -- --

POWER P0A0 POWER B4 B20 P1 P5 ALARM P0A1 ALARM A4 A19 P2 P6 RxNET P0A2 RxNET C4 B19 P4 P7 TxNET P0A3 TxNET C5 A18 P5 P9 RxUSB P0B0 RxUSB B5 A15 P6 P10 TxUSB P0B1 TxUSB A5 B15 P7 P11 RxCAN P0B2 RxCAN D6 A14 P8 P12 RxCAN P0B3 TxCAN C6 B14 P10 P13

CLK24M CLK24M CLK24M E12 B12 P124 P38

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

PWM0H P3A0 P0D0 E6 A8 P21 P23 PWM0L P3A1 P0D1 E5 B8 P23 P24 PWM1H P3A2 P0D2 C2 B6 P24 P25 PWM1L P3A3 P0D3 C1 A5 P25 P26 PWM2H P3A4 P0D4 D2 B5 P26 P27

82

PWM2L P3A5 P0D5 D1 A4 P27 P28 PWMenb P3A6 P0D6 E4 B4 P28 P30 PHT1Z P3A7 P0D7 E3 A3 P30 P31 PHT1A P3B0 P0D8 G2 C1 P31 P32 PHT1B P3B1 P0D9 G1 C2 P32 P33 PHT0A P3B2 P0D10 H5 D1 P33 P34 PHT0B P3B3 P0D11 J6 D2 P35 P35 AMP0 P3B4 P0D12 H4 E1 P36 P39 AMP1 P3B5 P0D13 H3 E2 P40 P40 AMP2 P3B6 P0D14 H2 F2 P41 P41 AMP3 P3B7 P0D15 H1 G1 P44 P43 eeSK P0C3 P1D0 C10 B9 P20 P22 eeCS P0C2 P1D1 D10 A9 P18 P21 eeDI P0C1 P1D2 F10 B10 P17 P20 eeDO P0C0 P1D3 E10 B11 P15 P19 ssCK P0B7 P1D4 E8 A11 P14 P17 ssCS P0B6 P1D5 E7 A12 P13 P16 ssDI P0B5 P1D6 A6 B13 P12 P15 ssDO P0B4 P1D7 B6 A13 P11 P14

ppCLK P3C0 P1D8 K4 G2 P46 P44 ppDIN P3C1 P1D9 K3 K1 P47 P45 TxD P3C2 P1D10 K2 K2 P50 P46 RxD P3C3 P1D11 K1 L1 P51 P48

tstLED P3C4 P1D12 L5 L2 P52 P49 stsLED P3C5 P1D13 L4 M1 P53 P50 RxLED P3C6 P1D14 L3 M2 P55 P51 TxLED P3C7 P1D15 L2 N1 P56 P52

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

xPA0 P2A0 P2D0 AA3 N2 P59 P53 xPA1 P2A1 P2D1 Y4 T1 P60 P54 xPA2 P2A2 P2D2 AA4 T2 P63 P56 xPA3 P2A3 P2D3 AB4 U2 P68 P57 xPC0 P2A4 P2D4 W5 V1 P69 P58 xPC1 P2A5 P2D5 Y5 V2 P70 P59 xPC2 P2A6 P2D6 AA5 W1 P73 P60 xPC3 P2A7 P2D7 AB5 W2 P74 P61

-- P2B0 P2D8 V6 Y1 P76 P64 -- P2B1 P2D9 V7 Y2 P77 P66 -- P2B2 P2D10 W6 AA3 P78 P68

mCS P2B3 P2D11 Y6 AB4 P79 P69 mA15 P2B4 P2D12 V9 AA4 P80 P70 mA16 P2B5 P2D13 V10 AB5 P82 P71 mA17 P2B6 P2D14 W10 AA5 P83 P74 mA18 P2B7 P2D15 Y10 AA6 P84 P75 CS0 P2C0 ADC0 AA10 AB8 P85 P76

83

SDIN0 P2C1 ADC1 AB10 AA8 P86 P77 CS1 P2C2 ADC2 U10 AB9 P87 P78

SDIN1 P2C3 ADC3 U11 AA9 P89 P79 SCLK P2C4 ADC4 V11 AB10 P90 P80 CS2 P2C5 ADC5 W11 AA10 P92 P81

SDOUT P2C6 ADC6 Y11 AB11 P93 P82 LDAC P2C7 ADC7 AA11 AA11 P95 P83

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

xPB0 P1A0 PxA0 M1 M3 P135 P85 xPB1 P1A1 PxA1 M2 M4 P132 P86 yPB2 P1A2 PxA2 M3 N3 P131 P87 yPB3 P1A3 PxA3 M4 N4 P130 P88 yPB1 P1A4 PxA4 M5 T4 P129 P91 yPB4 P1A5 PxA5 M6 T5 P128 P92 yPB0 P1A6 PxA6 N1 U3 P127 P93 yPB5 P1A7 PxA7 N2 U4 P125 P94 yPB6 P1B0 PxB0 U13 V3 P119 P95 yPB7 P1B1 PxB1 V13 V4 P118 P96 xPB2 P1B2 PxB2 W13 W3 P116 P97 xPB3 P1B3 PxB3 Y13 W4 P113 P98 xPB4 P1B4 PxB4 AA13 Y3 P112 P100 xPB5 P1B5 PxB5 AB13 Y4 P96 P101 yPC3 P1B6 PxB6 U12 Y5 P97 P102 yPC2 P1B7 PxB7 V12 W5 P98 P103 yPC1 P1C7 PxC0 AB17 W11 P108 P113 yPC0 P1C6 PxC1 AA17 Y11 P107 P112 yPA0 P1C5 PxC2 Y17 W10 P105 P111 yPA1 P1C4 PxC3 W17 Y10 P104 P110 yPA2 P1C3 PxC4 AB18 W9 P103 P107 yPA3 P1C2 PxC5 AA18 W8 P102 P106 xPB6 P1C1 PxC6 Y18 W6 P100 P105 xPB7 P1C0 PxC7 W18 Y6 P99 P104

84

eM_DEMO 模組

eM_DEMO 模組的電路配置圖如下

eM_USB 模組

數字型 LED

0 1 2 34 5 6 78 9 A BC D E F

燈號型 LED

44 鍵盤

ADC0 ADC1 DAC0 DAC1

LED 選擇KEY 選擇

其中

1eM_DEMO模組的基本功能包括 A將 xPAxPBxPC等 16個 IO訊號引出控制 LED和鍵盤電路 B將 ADDA訊號引出並放大成+-10V的工作範圍 2LED和鍵盤可以選擇三種模式由 LED和 KEY 兩組開關作選擇圖示如下

模式1

0123

模式2 模式3

0 1 2 34 5 6 78 9 A BC D E F

0123

3模式14鍵輸入並搭配 16點的 LED燈號顯示其中 16點 LED分別對映到 xPA[0~3]xPB[0~7]和 xPC[0~3] 4組按鍵分別對映到 xPC[0~3] 4模式24鍵輸入並搭配四個 7段式數字顯示其中 數字顯示由 xPA[0~3]作數字掃瞄而由 xPB[0~7]作 7段式 LED控制 4組按鍵 分別對映到 xPC[0~3] 5模式316鍵輸入並搭配四個 7段式數字顯示其中 數字顯示由 xPA[0~3]作數字掃瞄而由 xPB[0~7]作 7段式 LED控制 16組按鍵由 xPA[0~3]作鍵盤掃瞄而由 xPC[0~3]作鍵盤讀取 6根據VHDL與數位邏輯設計的章節其中 第 1章至 10章的實驗採用模式1而 第 11章實驗採用模式2而 第 12章之後的實驗都採用模式3

85

FPGA UCF 定義

eM_3S1K 模組

NET CLK LOC = B12

NET XAlt0gt LOC = N2

NET XAlt1gt LOC = T1

NET XAlt2gt LOC = T2

NET XAlt3gt LOC = U2

NET XBlt0gt LOC = M3

NET XBlt1gt LOC = M4

NET XBlt2gt LOC = W3

NET XBlt3gt LOC = W4

NET XBlt4gt LOC = Y3

NET XBlt5gt LOC = Y4

NET XBlt6gt LOC = W6

NET XBlt7gt LOC = Y6

NET XClt0gt LOC = V1

NET XClt1gt LOC = V2

NET XClt2gt LOC = W1

NET XClt3gt LOC = W2

NET YAlt0gt LOC = W10

JP4 接頭

NET YAlt1gt LOC = Y10

NET YAlt2gt LOC = W9

NET YAlt3gt LOC = W8

NET YBlt0gt LOC = U3

NET YBlt1gt LOC = T4

NET YBlt2gt LOC = N3

NET YBlt3gt LOC = N4

NET YBlt4gt LOC = T5

NET YBlt5gt LOC = U4

NET YBlt6gt LOC = V3

NET YBlt7gt LOC = V4

NET YClt0gt LOC = Y11

NET YClt1gt LOC = W11

NET YClt2gt LOC = W5

NET YClt3gt LOC = Y5

在光碟片中 RFFPGAVHDLDEMOBIT3S1K 裡有 VHDL 與數位邏輯設計書本範例原始檔與合成檔

86

eM_3S50 模組

NET CLK LOC = P124

NET XAlt0gt LOC = P59

NET XAlt1gt LOC = P60

NET XAlt2gt LOC = P63

NET XAlt3gt LOC = P68

NET XBlt0gt LOC = P135

NET XBlt1gt LOC = P132

NET XBlt2gt LOC = P116

NET XBlt3gt LOC = P113

NET XBlt4gt LOC = P112

NET XBlt5gt LOC = P96

NET XBlt6gt LOC = P100

NET XBlt7gt LOC = P99

NET XClt0gt LOC = P69

NET XClt1gt LOC = P70

NET XClt2gt LOC = P73

NET XClt3gt LOC = P74

NET YAlt0gt LOC = P105

JP4 接頭

NET YAlt1gt LOC = P104

NET YAlt2gt LOC = P103

NET YAlt3gt LOC = P102

NET YBlt0gt LOC = P127

NET YBlt1gt LOC = P129

NET YBlt2gt LOC = P131

NET YBlt3gt LOC = P130

NET YBlt4gt LOC = P128

NET YBlt5gt LOC = P125

NET YBlt6gt LOC = P119

NET YBlt7gt LOC = P118

NET YClt0gt LOC = P107

NET YClt1gt LOC = P108

NET YClt2gt LOC = P98

NET YClt3gt LOC = P97

在光碟片中 RFFPGAVHDLDEMOBIT3S200 裡有VHDL與數位邏輯設計書本範例原始檔與合成檔

87

eM_95XL 模組

NET CLK LOC = SPIN38

NET XAlt0gt LOC = SPIN53

NET XAlt1gt LOC = SPIN54

NET XAlt2gt LOC = SPIN56

NET XAlt3gt LOC = SPIN57

NET XBlt0gt LOC = SPIN85

NET XBlt1gt LOC = SPIN86

NET XBlt2gt LOC = SPIN97

NET XBlt3gt LOC = SPIN98

NET XBlt4gt LOC = SPIN100

NET XBlt5gt LOC = SPIN101

NET XBlt6gt LOC = SPIN105

NET XBlt7gt LOC = SPIN104

NET XClt0gt LOC = SPIN58

NET XClt1gt LOC = SPIN59

NET XClt2gt LOC = SPIN60

NET XClt3gt LOC = SPIN61

NET YAlt0gt LOC = SPIN111

JP4 接頭

NET YAlt1gt LOC = SPIN110

NET YAlt2gt LOC = SPIN107

NET YAlt3gt LOC = SPIN106

NET YBlt0gt LOC = SPIN93

NET YBlt1gt LOC = SPIN91

NET YBlt2gt LOC = SPIN87

NET YBlt3gt LOC = SPIN88

NET YBlt4gt LOC = SPIN92

NET YBlt5gt LOC = SPIN94

NET YBlt6gt LOC = SPIN95

NET YBlt7gt LOC = SPIN96

NET YClt0gt LOC = SPIN112

NET YClt1gt LOC = SPIN113

NET YClt2gt LOC = SPIN103

NET YClt3gt LOC = SPIN102

在光碟片中 RFFPGAVHDLDEMOSVF95288XL 裡有VHDL與數位邏輯設計書本範例原始檔與合成

檔案

88

eM_FPGA 模組

NET CLK LOC = E12

NET XAlt0gt LOC = AA3

NET XAlt1gt LOC = Y4

NET XAlt2gt LOC = AA4

NET XAlt3gt LOC = AB4

NET XBlt0gt LOC = M1

NET XBlt1gt LOC = M2

NET XBlt2gt LOC = W13

NET XBlt3gt LOC = Y13

NET XBlt4gt LOC = AA13

NET XBlt5gt LOC = AB13

NET XBlt6gt LOC = Y18

NET XBlt7gt LOC = W18

NET XClt0gt LOC = W5

NET XClt1gt LOC = Y5

NET XClt2gt LOC = AA5

NET XClt3gt LOC = AB5

NET YAlt0gt LOC = Y17

JP4 接頭

NET YAlt1gt LOC = W17

NET YAlt2gt LOC = AB18

NET YAlt3gt LOC = AA18

NET YBlt0gt LOC = N1

NET YBlt1gt LOC = M5

NET YBlt2gt LOC = M3

NET YBlt3gt LOC = M4

NET YBlt4gt LOC = M6

NET YBlt5gt LOC = N2

NET YBlt6gt LOC = U13

NET YBlt7gt LOC = V13

NET YClt0gt LOC = AA17

NET YClt1gt LOC = AB17

NET YClt2gt LOC = V12

NET YClt3gt LOC = U12

在光碟片中 RFFPGAVHDLDEMOBIT2V250 裡有VHDL與數位邏輯設計書本範例原始檔與合成檔

89

Page 77: RFFPGA 直流馬達實驗手冊juniortek.com.tw/program/manual/RF-DC-mal.pdf · em_demo模組 em_dcm 直流伺服馬達 dc電源 rffpga 系統的直流馬達實驗規劃 其中包括:

光纖網路通訊 FPGA 發展系統

系統配置

光纖網路通訊 FPGA 發展系統的系統配置圖如下

個人電腦(Windows) eM_USB模組

0USB

eM_USB模組1

光纖網路

eM_USB模組2

eM_USB模組N

其中

1基本模組為 eM_USB模組可用 USB界面和個人電腦連線並提供 USB對光纖網路的轉換功能使得個人電腦可以獨立控制光纖網路中的每個網路節點

2eM_USB模組也可以作為光纖網路中的網路節點透過光纖網路而接受個人電腦的

監控 3就個人電腦而言不論是 USB界面直接連結或是以光纖網路間接連結的 eM_USB模組都是可以直接監控的網路節點最多可以同時控制一個 USB節點和 30個網路節點

4對於每一個網路節點個人電腦都可執行 eM_USB模組中 FPGA的電路下載工作並在適當的 FPGA電路配合下可執行 eM_USB模組中 FPGA內部電路的讀寫控制 5透過適當的 FPGA電路設計各網路節點都可透過光纖網路和其他任何網路節點

作同步通訊執行 FPGA內部記憶體的資料交換資料交換頻率可達 1KHz以上

77

網路模組配置

每個網路模組的標準配置圖如下

eM_USB模組光纖網路

USB eM_FPGA卡

eM_DEMO模組

eM_EXP實驗模組

DC電源

其中

1網路模組以 eM_USB模組為主提供基本的 USB界面和光纖網路連線 2eM_USB模組中的 FPGACPLD採用插卡型式可選擇不同的 eM_FPGA卡包括

eM_2V1K卡可選用 Virtex系列的 XC2V250和 XC2V1000 eM_3S1K卡可選用 Spartan3系列的 XC3S400XC3S1000和 XC3S1500 eM_3S50卡可選用 Spartan3系列的 XC3S50XC3S200和 XC3S400 eM_95XL卡可選用 9500XL系列的 XC95144XL和 XC95288XL 3eM_USB模組中的對外連線有兩種一種是 26P接頭用以連接既有的各種實驗模

組另一種是兩組 50P接頭將 FPGA中各接腳引出用以連接專題實驗 4eM_DEMO模組就是插上 50P接頭的教學模組其中包括 LED 數字顯示和 44鍵盤也具備兩組的 ADC和兩組的 DAC接頭提供類比訊號的測試工具

常用的實驗組合包括

1精簡組合包括(eM_USB+eM_FPGA)提供基本的網路節點適用於專題實驗 2標準組合包括(eM_USB+eM_FPGA+eM_DEMO)提供基礎 FPGA設計的教學實驗

3實驗組合包括(eM_USB+eM_FPGA+eM_DEMO+eM_EXP)提供進階的 FPGA實驗可依需求選用不同的實驗模組

78

eM_USB 模組

eM_USB 模組的電路配置圖如下

TxRx

DCPower

USB

JP2

JP3

光纖界面

外加電源

PC連線

JP1

eM_FPGA模組

FT232 CPLD FlashROM

SRAM

10cm

6cm

JP4

其中

1對外的連線接頭包括 DC電源 可選擇單電源(5V)或是多電源(5V+12V-12V)兩種 USB界面 直接連接個人電腦 光纖界面連接光纖網路 2實驗界面包括 JP1負責內部 CPLD的電路下載 JP2JP3兩組 50P的擴張用接頭 JP4 標準 26P接頭用以連接各種實驗模組 3內部的電路配置包括 A以 SO-DIMM接頭連接各種 eM_FPGA卡 B內附 EEPROMFlashROM和 SRAM提供 FPGA作應用測試 C以一顆 FT232BM作為 USB界面解碼而以一顆 CPLD作為光纖網路解碼 D提供各種 eM_FPGA卡的電路下載功能 4內附五顆 LED由上而下依序為 usbLED指示 USB界面的讀寫狀態 tstLED可由 FPGA電路自行定義 stsLED可由 FPGA電路自行定義 RxLED 可由 FPGA電路自行定義 TxLED 可由 FPGA電路自行定義

79

外部接腳定義

外部接頭的接點順序圖示如下

上視圖

JP11 9 JP4

126225

JP31

50249

JP21

50249

而各接頭的接點定義如下

JP1 JP4 JP2 JP3 1+33V 1+12V 2+12V 1 GND 2 GND 1 GND 2 GND 2GND 3 ADC 4 DAC 3POWER 4ALARM 3 +5V 4 +5V 3nc 5 yPB2 6 yPB3 5RxNET 6TxNET 5+12V 6+12V 4TCK 7 yPB1 6 yPB4 7RxUSB 6TxUSB 7-12V 6-12V 5nc 9 yPB0 10yPB5 9RxCAN 10TxCAN 9 ADC 10 DAC 6TDO 11yPB6 12yPB7 11P0D0 12P0D1 11P1D0 12P1D1 7TDI 13yGND 14yPC3 13P0D2 14P0D3 13P1D2 14P1D3 8nc 15yPC2 16yPC1 15P0D4 16P0D5 15P1D4 16P1D5 9TMS 17yPC0 18yPA0 17P0D6 18P0D7 17P1D6 18P1D7 19yPA1 20yPA2 19P0D8 20P0D9 19P1D8 20P1D9 21yPA3 22GND 21P0D10 22P0D11 21P1D10 22P1D11 23GND 24+5V 23P0D12 24P0D13 23P1D12 24P1D13 25+5V 26nc 25P0D14 26P0D15 25P1D14 26P1D15 27P2D0 28P2D1 27PxA0 28PxA1 29P2D2 30P2D3 29PxA2 30PxA3 31P2D4 32P2D5 31PxA4 32PxA5 33P2D6 34P2D7 33PxA6 34PxA7 35P2D8 36P2D9 35PxB0 36PxB1 37P2D10 38P2D11 37PxB2 38PxB3 39P2D12 40P2D13 39PxB4 40PxB5 41P2D14 42P2D15 41PxB6 42PxB7 43ADC0 44ADC1 43PxC0 44PxC1 45ADC2 46ADC3 45PxC2 46PxC3 47ADC4 48ADC5 47PxC4 48PxC5 49DAC0 50DAC1 49PxC6 50PxC7

80

eM_FPGA 模組

在各種 eM_FPGA 模組中FPGA 對外電路的標準配置圖如下

24576MHz

FlashROM

26PSRAM

EEPROM

mD[8]

yPA[4]

FPGACPLD

mA[19]mRDmWRmCSeeCKeeCSeeDIeeDO

光纖界面 RxNETTxNET

USB 界面 RxUSBTxUSBCLK24MPOWERALARM

LED

tstLEDstsLEDRxLEDTxLED

yPB[8]yPC[4]

ADCDAC

ADC[8]

實驗模組

ADC[2]

DAC[2]

xPA[4]

xPB[8]

xPC[4]

基礎實驗

其中

1FPGACPLD可以選擇下述幾種 XC2V250XC2V1000 採用 eM_2V1K模組其中 FPGA為 FG456包裝 XC3S400XC3S1000XC3S1500採用 eM_3S1K模組其中 FPGA為 FG456包裝 XC3S400XC3S1000XC3S1500採用 eM_3S1K模組其中 FPGA為 FG456包裝 XC3S50XC3S200XC3S400 採用 eM_3S50模組其中 FPGA為 TQ144包裝 XC95144XLXC95288XL 採用 eM_95XL模組其中 CPLD為 TQ144包裝 2採用 FG456包裝者可以控制所有的 IO界面 3採用 TQ144包裝者只是不能控制 RAM和 FlashROM而可以控制其他所有的界面 4所有 FPGA模組都可自由選擇由 USB界面或是由光纖界面下載電路但是 CPLD模組只能固定由 USB界面下載電路

5所有 FPGACPLD模組都可透過 26P接頭連接既有的各種實驗模組

81

FPGA 接腳對照表

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

mD0 XD6 mD0 A17 C13 -- -- mD1 XD7 mD1 B17 D12 -- -- mD2 XD8 mD2 C17 D11 -- -- mD3 XD9 mD3 D17 C11 -- -- mD4 XD10 mD4 E17 D10 -- -- mD5 XD11 mD5 E16 C10 -- -- mD6 XD12 mD6 E14 D9 -- -- mD7 XD13 mD7 E13 D7 -- -- mA0 XD14 mA0 D13 C7 -- -- mA1 XD15 mA1 C13 D6 -- -- mA2 XA0 mA2 V5 C3 -- -- mA3 XA1 mA3 U5 C4 -- -- mA4 XA2 mA4 Y2 D3 -- -- mA5 XA3 mA5 Y1 D4 -- -- mA6 XA4 mA6 V4 E3 -- -- mA7 XA5 mA7 V3 E4 -- -- mA8 XA6 mA8 W2 F3 -- -- mA9 XA7 mA9 W1 F4 -- -- mA10 XA8 mA10 T2 G6 -- -- mA11 XA9 mA11 T1 K3 -- -- mA12 XA10 mA12 R4 K10 -- -- mA13 XA11 mA13 R3 L3 -- -- mA14 XA12 mA14 R2 L4 -- -- mRD XRD mRD R1 D5 -- -- mWR XWR mWR P6 C6 -- --

POWER P0A0 POWER B4 B20 P1 P5 ALARM P0A1 ALARM A4 A19 P2 P6 RxNET P0A2 RxNET C4 B19 P4 P7 TxNET P0A3 TxNET C5 A18 P5 P9 RxUSB P0B0 RxUSB B5 A15 P6 P10 TxUSB P0B1 TxUSB A5 B15 P7 P11 RxCAN P0B2 RxCAN D6 A14 P8 P12 RxCAN P0B3 TxCAN C6 B14 P10 P13

CLK24M CLK24M CLK24M E12 B12 P124 P38

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

PWM0H P3A0 P0D0 E6 A8 P21 P23 PWM0L P3A1 P0D1 E5 B8 P23 P24 PWM1H P3A2 P0D2 C2 B6 P24 P25 PWM1L P3A3 P0D3 C1 A5 P25 P26 PWM2H P3A4 P0D4 D2 B5 P26 P27

82

PWM2L P3A5 P0D5 D1 A4 P27 P28 PWMenb P3A6 P0D6 E4 B4 P28 P30 PHT1Z P3A7 P0D7 E3 A3 P30 P31 PHT1A P3B0 P0D8 G2 C1 P31 P32 PHT1B P3B1 P0D9 G1 C2 P32 P33 PHT0A P3B2 P0D10 H5 D1 P33 P34 PHT0B P3B3 P0D11 J6 D2 P35 P35 AMP0 P3B4 P0D12 H4 E1 P36 P39 AMP1 P3B5 P0D13 H3 E2 P40 P40 AMP2 P3B6 P0D14 H2 F2 P41 P41 AMP3 P3B7 P0D15 H1 G1 P44 P43 eeSK P0C3 P1D0 C10 B9 P20 P22 eeCS P0C2 P1D1 D10 A9 P18 P21 eeDI P0C1 P1D2 F10 B10 P17 P20 eeDO P0C0 P1D3 E10 B11 P15 P19 ssCK P0B7 P1D4 E8 A11 P14 P17 ssCS P0B6 P1D5 E7 A12 P13 P16 ssDI P0B5 P1D6 A6 B13 P12 P15 ssDO P0B4 P1D7 B6 A13 P11 P14

ppCLK P3C0 P1D8 K4 G2 P46 P44 ppDIN P3C1 P1D9 K3 K1 P47 P45 TxD P3C2 P1D10 K2 K2 P50 P46 RxD P3C3 P1D11 K1 L1 P51 P48

tstLED P3C4 P1D12 L5 L2 P52 P49 stsLED P3C5 P1D13 L4 M1 P53 P50 RxLED P3C6 P1D14 L3 M2 P55 P51 TxLED P3C7 P1D15 L2 N1 P56 P52

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

xPA0 P2A0 P2D0 AA3 N2 P59 P53 xPA1 P2A1 P2D1 Y4 T1 P60 P54 xPA2 P2A2 P2D2 AA4 T2 P63 P56 xPA3 P2A3 P2D3 AB4 U2 P68 P57 xPC0 P2A4 P2D4 W5 V1 P69 P58 xPC1 P2A5 P2D5 Y5 V2 P70 P59 xPC2 P2A6 P2D6 AA5 W1 P73 P60 xPC3 P2A7 P2D7 AB5 W2 P74 P61

-- P2B0 P2D8 V6 Y1 P76 P64 -- P2B1 P2D9 V7 Y2 P77 P66 -- P2B2 P2D10 W6 AA3 P78 P68

mCS P2B3 P2D11 Y6 AB4 P79 P69 mA15 P2B4 P2D12 V9 AA4 P80 P70 mA16 P2B5 P2D13 V10 AB5 P82 P71 mA17 P2B6 P2D14 W10 AA5 P83 P74 mA18 P2B7 P2D15 Y10 AA6 P84 P75 CS0 P2C0 ADC0 AA10 AB8 P85 P76

83

SDIN0 P2C1 ADC1 AB10 AA8 P86 P77 CS1 P2C2 ADC2 U10 AB9 P87 P78

SDIN1 P2C3 ADC3 U11 AA9 P89 P79 SCLK P2C4 ADC4 V11 AB10 P90 P80 CS2 P2C5 ADC5 W11 AA10 P92 P81

SDOUT P2C6 ADC6 Y11 AB11 P93 P82 LDAC P2C7 ADC7 AA11 AA11 P95 P83

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

xPB0 P1A0 PxA0 M1 M3 P135 P85 xPB1 P1A1 PxA1 M2 M4 P132 P86 yPB2 P1A2 PxA2 M3 N3 P131 P87 yPB3 P1A3 PxA3 M4 N4 P130 P88 yPB1 P1A4 PxA4 M5 T4 P129 P91 yPB4 P1A5 PxA5 M6 T5 P128 P92 yPB0 P1A6 PxA6 N1 U3 P127 P93 yPB5 P1A7 PxA7 N2 U4 P125 P94 yPB6 P1B0 PxB0 U13 V3 P119 P95 yPB7 P1B1 PxB1 V13 V4 P118 P96 xPB2 P1B2 PxB2 W13 W3 P116 P97 xPB3 P1B3 PxB3 Y13 W4 P113 P98 xPB4 P1B4 PxB4 AA13 Y3 P112 P100 xPB5 P1B5 PxB5 AB13 Y4 P96 P101 yPC3 P1B6 PxB6 U12 Y5 P97 P102 yPC2 P1B7 PxB7 V12 W5 P98 P103 yPC1 P1C7 PxC0 AB17 W11 P108 P113 yPC0 P1C6 PxC1 AA17 Y11 P107 P112 yPA0 P1C5 PxC2 Y17 W10 P105 P111 yPA1 P1C4 PxC3 W17 Y10 P104 P110 yPA2 P1C3 PxC4 AB18 W9 P103 P107 yPA3 P1C2 PxC5 AA18 W8 P102 P106 xPB6 P1C1 PxC6 Y18 W6 P100 P105 xPB7 P1C0 PxC7 W18 Y6 P99 P104

84

eM_DEMO 模組

eM_DEMO 模組的電路配置圖如下

eM_USB 模組

數字型 LED

0 1 2 34 5 6 78 9 A BC D E F

燈號型 LED

44 鍵盤

ADC0 ADC1 DAC0 DAC1

LED 選擇KEY 選擇

其中

1eM_DEMO模組的基本功能包括 A將 xPAxPBxPC等 16個 IO訊號引出控制 LED和鍵盤電路 B將 ADDA訊號引出並放大成+-10V的工作範圍 2LED和鍵盤可以選擇三種模式由 LED和 KEY 兩組開關作選擇圖示如下

模式1

0123

模式2 模式3

0 1 2 34 5 6 78 9 A BC D E F

0123

3模式14鍵輸入並搭配 16點的 LED燈號顯示其中 16點 LED分別對映到 xPA[0~3]xPB[0~7]和 xPC[0~3] 4組按鍵分別對映到 xPC[0~3] 4模式24鍵輸入並搭配四個 7段式數字顯示其中 數字顯示由 xPA[0~3]作數字掃瞄而由 xPB[0~7]作 7段式 LED控制 4組按鍵 分別對映到 xPC[0~3] 5模式316鍵輸入並搭配四個 7段式數字顯示其中 數字顯示由 xPA[0~3]作數字掃瞄而由 xPB[0~7]作 7段式 LED控制 16組按鍵由 xPA[0~3]作鍵盤掃瞄而由 xPC[0~3]作鍵盤讀取 6根據VHDL與數位邏輯設計的章節其中 第 1章至 10章的實驗採用模式1而 第 11章實驗採用模式2而 第 12章之後的實驗都採用模式3

85

FPGA UCF 定義

eM_3S1K 模組

NET CLK LOC = B12

NET XAlt0gt LOC = N2

NET XAlt1gt LOC = T1

NET XAlt2gt LOC = T2

NET XAlt3gt LOC = U2

NET XBlt0gt LOC = M3

NET XBlt1gt LOC = M4

NET XBlt2gt LOC = W3

NET XBlt3gt LOC = W4

NET XBlt4gt LOC = Y3

NET XBlt5gt LOC = Y4

NET XBlt6gt LOC = W6

NET XBlt7gt LOC = Y6

NET XClt0gt LOC = V1

NET XClt1gt LOC = V2

NET XClt2gt LOC = W1

NET XClt3gt LOC = W2

NET YAlt0gt LOC = W10

JP4 接頭

NET YAlt1gt LOC = Y10

NET YAlt2gt LOC = W9

NET YAlt3gt LOC = W8

NET YBlt0gt LOC = U3

NET YBlt1gt LOC = T4

NET YBlt2gt LOC = N3

NET YBlt3gt LOC = N4

NET YBlt4gt LOC = T5

NET YBlt5gt LOC = U4

NET YBlt6gt LOC = V3

NET YBlt7gt LOC = V4

NET YClt0gt LOC = Y11

NET YClt1gt LOC = W11

NET YClt2gt LOC = W5

NET YClt3gt LOC = Y5

在光碟片中 RFFPGAVHDLDEMOBIT3S1K 裡有 VHDL 與數位邏輯設計書本範例原始檔與合成檔

86

eM_3S50 模組

NET CLK LOC = P124

NET XAlt0gt LOC = P59

NET XAlt1gt LOC = P60

NET XAlt2gt LOC = P63

NET XAlt3gt LOC = P68

NET XBlt0gt LOC = P135

NET XBlt1gt LOC = P132

NET XBlt2gt LOC = P116

NET XBlt3gt LOC = P113

NET XBlt4gt LOC = P112

NET XBlt5gt LOC = P96

NET XBlt6gt LOC = P100

NET XBlt7gt LOC = P99

NET XClt0gt LOC = P69

NET XClt1gt LOC = P70

NET XClt2gt LOC = P73

NET XClt3gt LOC = P74

NET YAlt0gt LOC = P105

JP4 接頭

NET YAlt1gt LOC = P104

NET YAlt2gt LOC = P103

NET YAlt3gt LOC = P102

NET YBlt0gt LOC = P127

NET YBlt1gt LOC = P129

NET YBlt2gt LOC = P131

NET YBlt3gt LOC = P130

NET YBlt4gt LOC = P128

NET YBlt5gt LOC = P125

NET YBlt6gt LOC = P119

NET YBlt7gt LOC = P118

NET YClt0gt LOC = P107

NET YClt1gt LOC = P108

NET YClt2gt LOC = P98

NET YClt3gt LOC = P97

在光碟片中 RFFPGAVHDLDEMOBIT3S200 裡有VHDL與數位邏輯設計書本範例原始檔與合成檔

87

eM_95XL 模組

NET CLK LOC = SPIN38

NET XAlt0gt LOC = SPIN53

NET XAlt1gt LOC = SPIN54

NET XAlt2gt LOC = SPIN56

NET XAlt3gt LOC = SPIN57

NET XBlt0gt LOC = SPIN85

NET XBlt1gt LOC = SPIN86

NET XBlt2gt LOC = SPIN97

NET XBlt3gt LOC = SPIN98

NET XBlt4gt LOC = SPIN100

NET XBlt5gt LOC = SPIN101

NET XBlt6gt LOC = SPIN105

NET XBlt7gt LOC = SPIN104

NET XClt0gt LOC = SPIN58

NET XClt1gt LOC = SPIN59

NET XClt2gt LOC = SPIN60

NET XClt3gt LOC = SPIN61

NET YAlt0gt LOC = SPIN111

JP4 接頭

NET YAlt1gt LOC = SPIN110

NET YAlt2gt LOC = SPIN107

NET YAlt3gt LOC = SPIN106

NET YBlt0gt LOC = SPIN93

NET YBlt1gt LOC = SPIN91

NET YBlt2gt LOC = SPIN87

NET YBlt3gt LOC = SPIN88

NET YBlt4gt LOC = SPIN92

NET YBlt5gt LOC = SPIN94

NET YBlt6gt LOC = SPIN95

NET YBlt7gt LOC = SPIN96

NET YClt0gt LOC = SPIN112

NET YClt1gt LOC = SPIN113

NET YClt2gt LOC = SPIN103

NET YClt3gt LOC = SPIN102

在光碟片中 RFFPGAVHDLDEMOSVF95288XL 裡有VHDL與數位邏輯設計書本範例原始檔與合成

檔案

88

eM_FPGA 模組

NET CLK LOC = E12

NET XAlt0gt LOC = AA3

NET XAlt1gt LOC = Y4

NET XAlt2gt LOC = AA4

NET XAlt3gt LOC = AB4

NET XBlt0gt LOC = M1

NET XBlt1gt LOC = M2

NET XBlt2gt LOC = W13

NET XBlt3gt LOC = Y13

NET XBlt4gt LOC = AA13

NET XBlt5gt LOC = AB13

NET XBlt6gt LOC = Y18

NET XBlt7gt LOC = W18

NET XClt0gt LOC = W5

NET XClt1gt LOC = Y5

NET XClt2gt LOC = AA5

NET XClt3gt LOC = AB5

NET YAlt0gt LOC = Y17

JP4 接頭

NET YAlt1gt LOC = W17

NET YAlt2gt LOC = AB18

NET YAlt3gt LOC = AA18

NET YBlt0gt LOC = N1

NET YBlt1gt LOC = M5

NET YBlt2gt LOC = M3

NET YBlt3gt LOC = M4

NET YBlt4gt LOC = M6

NET YBlt5gt LOC = N2

NET YBlt6gt LOC = U13

NET YBlt7gt LOC = V13

NET YClt0gt LOC = AA17

NET YClt1gt LOC = AB17

NET YClt2gt LOC = V12

NET YClt3gt LOC = U12

在光碟片中 RFFPGAVHDLDEMOBIT2V250 裡有VHDL與數位邏輯設計書本範例原始檔與合成檔

89

Page 78: RFFPGA 直流馬達實驗手冊juniortek.com.tw/program/manual/RF-DC-mal.pdf · em_demo模組 em_dcm 直流伺服馬達 dc電源 rffpga 系統的直流馬達實驗規劃 其中包括:

網路模組配置

每個網路模組的標準配置圖如下

eM_USB模組光纖網路

USB eM_FPGA卡

eM_DEMO模組

eM_EXP實驗模組

DC電源

其中

1網路模組以 eM_USB模組為主提供基本的 USB界面和光纖網路連線 2eM_USB模組中的 FPGACPLD採用插卡型式可選擇不同的 eM_FPGA卡包括

eM_2V1K卡可選用 Virtex系列的 XC2V250和 XC2V1000 eM_3S1K卡可選用 Spartan3系列的 XC3S400XC3S1000和 XC3S1500 eM_3S50卡可選用 Spartan3系列的 XC3S50XC3S200和 XC3S400 eM_95XL卡可選用 9500XL系列的 XC95144XL和 XC95288XL 3eM_USB模組中的對外連線有兩種一種是 26P接頭用以連接既有的各種實驗模

組另一種是兩組 50P接頭將 FPGA中各接腳引出用以連接專題實驗 4eM_DEMO模組就是插上 50P接頭的教學模組其中包括 LED 數字顯示和 44鍵盤也具備兩組的 ADC和兩組的 DAC接頭提供類比訊號的測試工具

常用的實驗組合包括

1精簡組合包括(eM_USB+eM_FPGA)提供基本的網路節點適用於專題實驗 2標準組合包括(eM_USB+eM_FPGA+eM_DEMO)提供基礎 FPGA設計的教學實驗

3實驗組合包括(eM_USB+eM_FPGA+eM_DEMO+eM_EXP)提供進階的 FPGA實驗可依需求選用不同的實驗模組

78

eM_USB 模組

eM_USB 模組的電路配置圖如下

TxRx

DCPower

USB

JP2

JP3

光纖界面

外加電源

PC連線

JP1

eM_FPGA模組

FT232 CPLD FlashROM

SRAM

10cm

6cm

JP4

其中

1對外的連線接頭包括 DC電源 可選擇單電源(5V)或是多電源(5V+12V-12V)兩種 USB界面 直接連接個人電腦 光纖界面連接光纖網路 2實驗界面包括 JP1負責內部 CPLD的電路下載 JP2JP3兩組 50P的擴張用接頭 JP4 標準 26P接頭用以連接各種實驗模組 3內部的電路配置包括 A以 SO-DIMM接頭連接各種 eM_FPGA卡 B內附 EEPROMFlashROM和 SRAM提供 FPGA作應用測試 C以一顆 FT232BM作為 USB界面解碼而以一顆 CPLD作為光纖網路解碼 D提供各種 eM_FPGA卡的電路下載功能 4內附五顆 LED由上而下依序為 usbLED指示 USB界面的讀寫狀態 tstLED可由 FPGA電路自行定義 stsLED可由 FPGA電路自行定義 RxLED 可由 FPGA電路自行定義 TxLED 可由 FPGA電路自行定義

79

外部接腳定義

外部接頭的接點順序圖示如下

上視圖

JP11 9 JP4

126225

JP31

50249

JP21

50249

而各接頭的接點定義如下

JP1 JP4 JP2 JP3 1+33V 1+12V 2+12V 1 GND 2 GND 1 GND 2 GND 2GND 3 ADC 4 DAC 3POWER 4ALARM 3 +5V 4 +5V 3nc 5 yPB2 6 yPB3 5RxNET 6TxNET 5+12V 6+12V 4TCK 7 yPB1 6 yPB4 7RxUSB 6TxUSB 7-12V 6-12V 5nc 9 yPB0 10yPB5 9RxCAN 10TxCAN 9 ADC 10 DAC 6TDO 11yPB6 12yPB7 11P0D0 12P0D1 11P1D0 12P1D1 7TDI 13yGND 14yPC3 13P0D2 14P0D3 13P1D2 14P1D3 8nc 15yPC2 16yPC1 15P0D4 16P0D5 15P1D4 16P1D5 9TMS 17yPC0 18yPA0 17P0D6 18P0D7 17P1D6 18P1D7 19yPA1 20yPA2 19P0D8 20P0D9 19P1D8 20P1D9 21yPA3 22GND 21P0D10 22P0D11 21P1D10 22P1D11 23GND 24+5V 23P0D12 24P0D13 23P1D12 24P1D13 25+5V 26nc 25P0D14 26P0D15 25P1D14 26P1D15 27P2D0 28P2D1 27PxA0 28PxA1 29P2D2 30P2D3 29PxA2 30PxA3 31P2D4 32P2D5 31PxA4 32PxA5 33P2D6 34P2D7 33PxA6 34PxA7 35P2D8 36P2D9 35PxB0 36PxB1 37P2D10 38P2D11 37PxB2 38PxB3 39P2D12 40P2D13 39PxB4 40PxB5 41P2D14 42P2D15 41PxB6 42PxB7 43ADC0 44ADC1 43PxC0 44PxC1 45ADC2 46ADC3 45PxC2 46PxC3 47ADC4 48ADC5 47PxC4 48PxC5 49DAC0 50DAC1 49PxC6 50PxC7

80

eM_FPGA 模組

在各種 eM_FPGA 模組中FPGA 對外電路的標準配置圖如下

24576MHz

FlashROM

26PSRAM

EEPROM

mD[8]

yPA[4]

FPGACPLD

mA[19]mRDmWRmCSeeCKeeCSeeDIeeDO

光纖界面 RxNETTxNET

USB 界面 RxUSBTxUSBCLK24MPOWERALARM

LED

tstLEDstsLEDRxLEDTxLED

yPB[8]yPC[4]

ADCDAC

ADC[8]

實驗模組

ADC[2]

DAC[2]

xPA[4]

xPB[8]

xPC[4]

基礎實驗

其中

1FPGACPLD可以選擇下述幾種 XC2V250XC2V1000 採用 eM_2V1K模組其中 FPGA為 FG456包裝 XC3S400XC3S1000XC3S1500採用 eM_3S1K模組其中 FPGA為 FG456包裝 XC3S400XC3S1000XC3S1500採用 eM_3S1K模組其中 FPGA為 FG456包裝 XC3S50XC3S200XC3S400 採用 eM_3S50模組其中 FPGA為 TQ144包裝 XC95144XLXC95288XL 採用 eM_95XL模組其中 CPLD為 TQ144包裝 2採用 FG456包裝者可以控制所有的 IO界面 3採用 TQ144包裝者只是不能控制 RAM和 FlashROM而可以控制其他所有的界面 4所有 FPGA模組都可自由選擇由 USB界面或是由光纖界面下載電路但是 CPLD模組只能固定由 USB界面下載電路

5所有 FPGACPLD模組都可透過 26P接頭連接既有的各種實驗模組

81

FPGA 接腳對照表

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

mD0 XD6 mD0 A17 C13 -- -- mD1 XD7 mD1 B17 D12 -- -- mD2 XD8 mD2 C17 D11 -- -- mD3 XD9 mD3 D17 C11 -- -- mD4 XD10 mD4 E17 D10 -- -- mD5 XD11 mD5 E16 C10 -- -- mD6 XD12 mD6 E14 D9 -- -- mD7 XD13 mD7 E13 D7 -- -- mA0 XD14 mA0 D13 C7 -- -- mA1 XD15 mA1 C13 D6 -- -- mA2 XA0 mA2 V5 C3 -- -- mA3 XA1 mA3 U5 C4 -- -- mA4 XA2 mA4 Y2 D3 -- -- mA5 XA3 mA5 Y1 D4 -- -- mA6 XA4 mA6 V4 E3 -- -- mA7 XA5 mA7 V3 E4 -- -- mA8 XA6 mA8 W2 F3 -- -- mA9 XA7 mA9 W1 F4 -- -- mA10 XA8 mA10 T2 G6 -- -- mA11 XA9 mA11 T1 K3 -- -- mA12 XA10 mA12 R4 K10 -- -- mA13 XA11 mA13 R3 L3 -- -- mA14 XA12 mA14 R2 L4 -- -- mRD XRD mRD R1 D5 -- -- mWR XWR mWR P6 C6 -- --

POWER P0A0 POWER B4 B20 P1 P5 ALARM P0A1 ALARM A4 A19 P2 P6 RxNET P0A2 RxNET C4 B19 P4 P7 TxNET P0A3 TxNET C5 A18 P5 P9 RxUSB P0B0 RxUSB B5 A15 P6 P10 TxUSB P0B1 TxUSB A5 B15 P7 P11 RxCAN P0B2 RxCAN D6 A14 P8 P12 RxCAN P0B3 TxCAN C6 B14 P10 P13

CLK24M CLK24M CLK24M E12 B12 P124 P38

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

PWM0H P3A0 P0D0 E6 A8 P21 P23 PWM0L P3A1 P0D1 E5 B8 P23 P24 PWM1H P3A2 P0D2 C2 B6 P24 P25 PWM1L P3A3 P0D3 C1 A5 P25 P26 PWM2H P3A4 P0D4 D2 B5 P26 P27

82

PWM2L P3A5 P0D5 D1 A4 P27 P28 PWMenb P3A6 P0D6 E4 B4 P28 P30 PHT1Z P3A7 P0D7 E3 A3 P30 P31 PHT1A P3B0 P0D8 G2 C1 P31 P32 PHT1B P3B1 P0D9 G1 C2 P32 P33 PHT0A P3B2 P0D10 H5 D1 P33 P34 PHT0B P3B3 P0D11 J6 D2 P35 P35 AMP0 P3B4 P0D12 H4 E1 P36 P39 AMP1 P3B5 P0D13 H3 E2 P40 P40 AMP2 P3B6 P0D14 H2 F2 P41 P41 AMP3 P3B7 P0D15 H1 G1 P44 P43 eeSK P0C3 P1D0 C10 B9 P20 P22 eeCS P0C2 P1D1 D10 A9 P18 P21 eeDI P0C1 P1D2 F10 B10 P17 P20 eeDO P0C0 P1D3 E10 B11 P15 P19 ssCK P0B7 P1D4 E8 A11 P14 P17 ssCS P0B6 P1D5 E7 A12 P13 P16 ssDI P0B5 P1D6 A6 B13 P12 P15 ssDO P0B4 P1D7 B6 A13 P11 P14

ppCLK P3C0 P1D8 K4 G2 P46 P44 ppDIN P3C1 P1D9 K3 K1 P47 P45 TxD P3C2 P1D10 K2 K2 P50 P46 RxD P3C3 P1D11 K1 L1 P51 P48

tstLED P3C4 P1D12 L5 L2 P52 P49 stsLED P3C5 P1D13 L4 M1 P53 P50 RxLED P3C6 P1D14 L3 M2 P55 P51 TxLED P3C7 P1D15 L2 N1 P56 P52

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

xPA0 P2A0 P2D0 AA3 N2 P59 P53 xPA1 P2A1 P2D1 Y4 T1 P60 P54 xPA2 P2A2 P2D2 AA4 T2 P63 P56 xPA3 P2A3 P2D3 AB4 U2 P68 P57 xPC0 P2A4 P2D4 W5 V1 P69 P58 xPC1 P2A5 P2D5 Y5 V2 P70 P59 xPC2 P2A6 P2D6 AA5 W1 P73 P60 xPC3 P2A7 P2D7 AB5 W2 P74 P61

-- P2B0 P2D8 V6 Y1 P76 P64 -- P2B1 P2D9 V7 Y2 P77 P66 -- P2B2 P2D10 W6 AA3 P78 P68

mCS P2B3 P2D11 Y6 AB4 P79 P69 mA15 P2B4 P2D12 V9 AA4 P80 P70 mA16 P2B5 P2D13 V10 AB5 P82 P71 mA17 P2B6 P2D14 W10 AA5 P83 P74 mA18 P2B7 P2D15 Y10 AA6 P84 P75 CS0 P2C0 ADC0 AA10 AB8 P85 P76

83

SDIN0 P2C1 ADC1 AB10 AA8 P86 P77 CS1 P2C2 ADC2 U10 AB9 P87 P78

SDIN1 P2C3 ADC3 U11 AA9 P89 P79 SCLK P2C4 ADC4 V11 AB10 P90 P80 CS2 P2C5 ADC5 W11 AA10 P92 P81

SDOUT P2C6 ADC6 Y11 AB11 P93 P82 LDAC P2C7 ADC7 AA11 AA11 P95 P83

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

xPB0 P1A0 PxA0 M1 M3 P135 P85 xPB1 P1A1 PxA1 M2 M4 P132 P86 yPB2 P1A2 PxA2 M3 N3 P131 P87 yPB3 P1A3 PxA3 M4 N4 P130 P88 yPB1 P1A4 PxA4 M5 T4 P129 P91 yPB4 P1A5 PxA5 M6 T5 P128 P92 yPB0 P1A6 PxA6 N1 U3 P127 P93 yPB5 P1A7 PxA7 N2 U4 P125 P94 yPB6 P1B0 PxB0 U13 V3 P119 P95 yPB7 P1B1 PxB1 V13 V4 P118 P96 xPB2 P1B2 PxB2 W13 W3 P116 P97 xPB3 P1B3 PxB3 Y13 W4 P113 P98 xPB4 P1B4 PxB4 AA13 Y3 P112 P100 xPB5 P1B5 PxB5 AB13 Y4 P96 P101 yPC3 P1B6 PxB6 U12 Y5 P97 P102 yPC2 P1B7 PxB7 V12 W5 P98 P103 yPC1 P1C7 PxC0 AB17 W11 P108 P113 yPC0 P1C6 PxC1 AA17 Y11 P107 P112 yPA0 P1C5 PxC2 Y17 W10 P105 P111 yPA1 P1C4 PxC3 W17 Y10 P104 P110 yPA2 P1C3 PxC4 AB18 W9 P103 P107 yPA3 P1C2 PxC5 AA18 W8 P102 P106 xPB6 P1C1 PxC6 Y18 W6 P100 P105 xPB7 P1C0 PxC7 W18 Y6 P99 P104

84

eM_DEMO 模組

eM_DEMO 模組的電路配置圖如下

eM_USB 模組

數字型 LED

0 1 2 34 5 6 78 9 A BC D E F

燈號型 LED

44 鍵盤

ADC0 ADC1 DAC0 DAC1

LED 選擇KEY 選擇

其中

1eM_DEMO模組的基本功能包括 A將 xPAxPBxPC等 16個 IO訊號引出控制 LED和鍵盤電路 B將 ADDA訊號引出並放大成+-10V的工作範圍 2LED和鍵盤可以選擇三種模式由 LED和 KEY 兩組開關作選擇圖示如下

模式1

0123

模式2 模式3

0 1 2 34 5 6 78 9 A BC D E F

0123

3模式14鍵輸入並搭配 16點的 LED燈號顯示其中 16點 LED分別對映到 xPA[0~3]xPB[0~7]和 xPC[0~3] 4組按鍵分別對映到 xPC[0~3] 4模式24鍵輸入並搭配四個 7段式數字顯示其中 數字顯示由 xPA[0~3]作數字掃瞄而由 xPB[0~7]作 7段式 LED控制 4組按鍵 分別對映到 xPC[0~3] 5模式316鍵輸入並搭配四個 7段式數字顯示其中 數字顯示由 xPA[0~3]作數字掃瞄而由 xPB[0~7]作 7段式 LED控制 16組按鍵由 xPA[0~3]作鍵盤掃瞄而由 xPC[0~3]作鍵盤讀取 6根據VHDL與數位邏輯設計的章節其中 第 1章至 10章的實驗採用模式1而 第 11章實驗採用模式2而 第 12章之後的實驗都採用模式3

85

FPGA UCF 定義

eM_3S1K 模組

NET CLK LOC = B12

NET XAlt0gt LOC = N2

NET XAlt1gt LOC = T1

NET XAlt2gt LOC = T2

NET XAlt3gt LOC = U2

NET XBlt0gt LOC = M3

NET XBlt1gt LOC = M4

NET XBlt2gt LOC = W3

NET XBlt3gt LOC = W4

NET XBlt4gt LOC = Y3

NET XBlt5gt LOC = Y4

NET XBlt6gt LOC = W6

NET XBlt7gt LOC = Y6

NET XClt0gt LOC = V1

NET XClt1gt LOC = V2

NET XClt2gt LOC = W1

NET XClt3gt LOC = W2

NET YAlt0gt LOC = W10

JP4 接頭

NET YAlt1gt LOC = Y10

NET YAlt2gt LOC = W9

NET YAlt3gt LOC = W8

NET YBlt0gt LOC = U3

NET YBlt1gt LOC = T4

NET YBlt2gt LOC = N3

NET YBlt3gt LOC = N4

NET YBlt4gt LOC = T5

NET YBlt5gt LOC = U4

NET YBlt6gt LOC = V3

NET YBlt7gt LOC = V4

NET YClt0gt LOC = Y11

NET YClt1gt LOC = W11

NET YClt2gt LOC = W5

NET YClt3gt LOC = Y5

在光碟片中 RFFPGAVHDLDEMOBIT3S1K 裡有 VHDL 與數位邏輯設計書本範例原始檔與合成檔

86

eM_3S50 模組

NET CLK LOC = P124

NET XAlt0gt LOC = P59

NET XAlt1gt LOC = P60

NET XAlt2gt LOC = P63

NET XAlt3gt LOC = P68

NET XBlt0gt LOC = P135

NET XBlt1gt LOC = P132

NET XBlt2gt LOC = P116

NET XBlt3gt LOC = P113

NET XBlt4gt LOC = P112

NET XBlt5gt LOC = P96

NET XBlt6gt LOC = P100

NET XBlt7gt LOC = P99

NET XClt0gt LOC = P69

NET XClt1gt LOC = P70

NET XClt2gt LOC = P73

NET XClt3gt LOC = P74

NET YAlt0gt LOC = P105

JP4 接頭

NET YAlt1gt LOC = P104

NET YAlt2gt LOC = P103

NET YAlt3gt LOC = P102

NET YBlt0gt LOC = P127

NET YBlt1gt LOC = P129

NET YBlt2gt LOC = P131

NET YBlt3gt LOC = P130

NET YBlt4gt LOC = P128

NET YBlt5gt LOC = P125

NET YBlt6gt LOC = P119

NET YBlt7gt LOC = P118

NET YClt0gt LOC = P107

NET YClt1gt LOC = P108

NET YClt2gt LOC = P98

NET YClt3gt LOC = P97

在光碟片中 RFFPGAVHDLDEMOBIT3S200 裡有VHDL與數位邏輯設計書本範例原始檔與合成檔

87

eM_95XL 模組

NET CLK LOC = SPIN38

NET XAlt0gt LOC = SPIN53

NET XAlt1gt LOC = SPIN54

NET XAlt2gt LOC = SPIN56

NET XAlt3gt LOC = SPIN57

NET XBlt0gt LOC = SPIN85

NET XBlt1gt LOC = SPIN86

NET XBlt2gt LOC = SPIN97

NET XBlt3gt LOC = SPIN98

NET XBlt4gt LOC = SPIN100

NET XBlt5gt LOC = SPIN101

NET XBlt6gt LOC = SPIN105

NET XBlt7gt LOC = SPIN104

NET XClt0gt LOC = SPIN58

NET XClt1gt LOC = SPIN59

NET XClt2gt LOC = SPIN60

NET XClt3gt LOC = SPIN61

NET YAlt0gt LOC = SPIN111

JP4 接頭

NET YAlt1gt LOC = SPIN110

NET YAlt2gt LOC = SPIN107

NET YAlt3gt LOC = SPIN106

NET YBlt0gt LOC = SPIN93

NET YBlt1gt LOC = SPIN91

NET YBlt2gt LOC = SPIN87

NET YBlt3gt LOC = SPIN88

NET YBlt4gt LOC = SPIN92

NET YBlt5gt LOC = SPIN94

NET YBlt6gt LOC = SPIN95

NET YBlt7gt LOC = SPIN96

NET YClt0gt LOC = SPIN112

NET YClt1gt LOC = SPIN113

NET YClt2gt LOC = SPIN103

NET YClt3gt LOC = SPIN102

在光碟片中 RFFPGAVHDLDEMOSVF95288XL 裡有VHDL與數位邏輯設計書本範例原始檔與合成

檔案

88

eM_FPGA 模組

NET CLK LOC = E12

NET XAlt0gt LOC = AA3

NET XAlt1gt LOC = Y4

NET XAlt2gt LOC = AA4

NET XAlt3gt LOC = AB4

NET XBlt0gt LOC = M1

NET XBlt1gt LOC = M2

NET XBlt2gt LOC = W13

NET XBlt3gt LOC = Y13

NET XBlt4gt LOC = AA13

NET XBlt5gt LOC = AB13

NET XBlt6gt LOC = Y18

NET XBlt7gt LOC = W18

NET XClt0gt LOC = W5

NET XClt1gt LOC = Y5

NET XClt2gt LOC = AA5

NET XClt3gt LOC = AB5

NET YAlt0gt LOC = Y17

JP4 接頭

NET YAlt1gt LOC = W17

NET YAlt2gt LOC = AB18

NET YAlt3gt LOC = AA18

NET YBlt0gt LOC = N1

NET YBlt1gt LOC = M5

NET YBlt2gt LOC = M3

NET YBlt3gt LOC = M4

NET YBlt4gt LOC = M6

NET YBlt5gt LOC = N2

NET YBlt6gt LOC = U13

NET YBlt7gt LOC = V13

NET YClt0gt LOC = AA17

NET YClt1gt LOC = AB17

NET YClt2gt LOC = V12

NET YClt3gt LOC = U12

在光碟片中 RFFPGAVHDLDEMOBIT2V250 裡有VHDL與數位邏輯設計書本範例原始檔與合成檔

89

Page 79: RFFPGA 直流馬達實驗手冊juniortek.com.tw/program/manual/RF-DC-mal.pdf · em_demo模組 em_dcm 直流伺服馬達 dc電源 rffpga 系統的直流馬達實驗規劃 其中包括:

eM_USB 模組

eM_USB 模組的電路配置圖如下

TxRx

DCPower

USB

JP2

JP3

光纖界面

外加電源

PC連線

JP1

eM_FPGA模組

FT232 CPLD FlashROM

SRAM

10cm

6cm

JP4

其中

1對外的連線接頭包括 DC電源 可選擇單電源(5V)或是多電源(5V+12V-12V)兩種 USB界面 直接連接個人電腦 光纖界面連接光纖網路 2實驗界面包括 JP1負責內部 CPLD的電路下載 JP2JP3兩組 50P的擴張用接頭 JP4 標準 26P接頭用以連接各種實驗模組 3內部的電路配置包括 A以 SO-DIMM接頭連接各種 eM_FPGA卡 B內附 EEPROMFlashROM和 SRAM提供 FPGA作應用測試 C以一顆 FT232BM作為 USB界面解碼而以一顆 CPLD作為光纖網路解碼 D提供各種 eM_FPGA卡的電路下載功能 4內附五顆 LED由上而下依序為 usbLED指示 USB界面的讀寫狀態 tstLED可由 FPGA電路自行定義 stsLED可由 FPGA電路自行定義 RxLED 可由 FPGA電路自行定義 TxLED 可由 FPGA電路自行定義

79

外部接腳定義

外部接頭的接點順序圖示如下

上視圖

JP11 9 JP4

126225

JP31

50249

JP21

50249

而各接頭的接點定義如下

JP1 JP4 JP2 JP3 1+33V 1+12V 2+12V 1 GND 2 GND 1 GND 2 GND 2GND 3 ADC 4 DAC 3POWER 4ALARM 3 +5V 4 +5V 3nc 5 yPB2 6 yPB3 5RxNET 6TxNET 5+12V 6+12V 4TCK 7 yPB1 6 yPB4 7RxUSB 6TxUSB 7-12V 6-12V 5nc 9 yPB0 10yPB5 9RxCAN 10TxCAN 9 ADC 10 DAC 6TDO 11yPB6 12yPB7 11P0D0 12P0D1 11P1D0 12P1D1 7TDI 13yGND 14yPC3 13P0D2 14P0D3 13P1D2 14P1D3 8nc 15yPC2 16yPC1 15P0D4 16P0D5 15P1D4 16P1D5 9TMS 17yPC0 18yPA0 17P0D6 18P0D7 17P1D6 18P1D7 19yPA1 20yPA2 19P0D8 20P0D9 19P1D8 20P1D9 21yPA3 22GND 21P0D10 22P0D11 21P1D10 22P1D11 23GND 24+5V 23P0D12 24P0D13 23P1D12 24P1D13 25+5V 26nc 25P0D14 26P0D15 25P1D14 26P1D15 27P2D0 28P2D1 27PxA0 28PxA1 29P2D2 30P2D3 29PxA2 30PxA3 31P2D4 32P2D5 31PxA4 32PxA5 33P2D6 34P2D7 33PxA6 34PxA7 35P2D8 36P2D9 35PxB0 36PxB1 37P2D10 38P2D11 37PxB2 38PxB3 39P2D12 40P2D13 39PxB4 40PxB5 41P2D14 42P2D15 41PxB6 42PxB7 43ADC0 44ADC1 43PxC0 44PxC1 45ADC2 46ADC3 45PxC2 46PxC3 47ADC4 48ADC5 47PxC4 48PxC5 49DAC0 50DAC1 49PxC6 50PxC7

80

eM_FPGA 模組

在各種 eM_FPGA 模組中FPGA 對外電路的標準配置圖如下

24576MHz

FlashROM

26PSRAM

EEPROM

mD[8]

yPA[4]

FPGACPLD

mA[19]mRDmWRmCSeeCKeeCSeeDIeeDO

光纖界面 RxNETTxNET

USB 界面 RxUSBTxUSBCLK24MPOWERALARM

LED

tstLEDstsLEDRxLEDTxLED

yPB[8]yPC[4]

ADCDAC

ADC[8]

實驗模組

ADC[2]

DAC[2]

xPA[4]

xPB[8]

xPC[4]

基礎實驗

其中

1FPGACPLD可以選擇下述幾種 XC2V250XC2V1000 採用 eM_2V1K模組其中 FPGA為 FG456包裝 XC3S400XC3S1000XC3S1500採用 eM_3S1K模組其中 FPGA為 FG456包裝 XC3S400XC3S1000XC3S1500採用 eM_3S1K模組其中 FPGA為 FG456包裝 XC3S50XC3S200XC3S400 採用 eM_3S50模組其中 FPGA為 TQ144包裝 XC95144XLXC95288XL 採用 eM_95XL模組其中 CPLD為 TQ144包裝 2採用 FG456包裝者可以控制所有的 IO界面 3採用 TQ144包裝者只是不能控制 RAM和 FlashROM而可以控制其他所有的界面 4所有 FPGA模組都可自由選擇由 USB界面或是由光纖界面下載電路但是 CPLD模組只能固定由 USB界面下載電路

5所有 FPGACPLD模組都可透過 26P接頭連接既有的各種實驗模組

81

FPGA 接腳對照表

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

mD0 XD6 mD0 A17 C13 -- -- mD1 XD7 mD1 B17 D12 -- -- mD2 XD8 mD2 C17 D11 -- -- mD3 XD9 mD3 D17 C11 -- -- mD4 XD10 mD4 E17 D10 -- -- mD5 XD11 mD5 E16 C10 -- -- mD6 XD12 mD6 E14 D9 -- -- mD7 XD13 mD7 E13 D7 -- -- mA0 XD14 mA0 D13 C7 -- -- mA1 XD15 mA1 C13 D6 -- -- mA2 XA0 mA2 V5 C3 -- -- mA3 XA1 mA3 U5 C4 -- -- mA4 XA2 mA4 Y2 D3 -- -- mA5 XA3 mA5 Y1 D4 -- -- mA6 XA4 mA6 V4 E3 -- -- mA7 XA5 mA7 V3 E4 -- -- mA8 XA6 mA8 W2 F3 -- -- mA9 XA7 mA9 W1 F4 -- -- mA10 XA8 mA10 T2 G6 -- -- mA11 XA9 mA11 T1 K3 -- -- mA12 XA10 mA12 R4 K10 -- -- mA13 XA11 mA13 R3 L3 -- -- mA14 XA12 mA14 R2 L4 -- -- mRD XRD mRD R1 D5 -- -- mWR XWR mWR P6 C6 -- --

POWER P0A0 POWER B4 B20 P1 P5 ALARM P0A1 ALARM A4 A19 P2 P6 RxNET P0A2 RxNET C4 B19 P4 P7 TxNET P0A3 TxNET C5 A18 P5 P9 RxUSB P0B0 RxUSB B5 A15 P6 P10 TxUSB P0B1 TxUSB A5 B15 P7 P11 RxCAN P0B2 RxCAN D6 A14 P8 P12 RxCAN P0B3 TxCAN C6 B14 P10 P13

CLK24M CLK24M CLK24M E12 B12 P124 P38

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

PWM0H P3A0 P0D0 E6 A8 P21 P23 PWM0L P3A1 P0D1 E5 B8 P23 P24 PWM1H P3A2 P0D2 C2 B6 P24 P25 PWM1L P3A3 P0D3 C1 A5 P25 P26 PWM2H P3A4 P0D4 D2 B5 P26 P27

82

PWM2L P3A5 P0D5 D1 A4 P27 P28 PWMenb P3A6 P0D6 E4 B4 P28 P30 PHT1Z P3A7 P0D7 E3 A3 P30 P31 PHT1A P3B0 P0D8 G2 C1 P31 P32 PHT1B P3B1 P0D9 G1 C2 P32 P33 PHT0A P3B2 P0D10 H5 D1 P33 P34 PHT0B P3B3 P0D11 J6 D2 P35 P35 AMP0 P3B4 P0D12 H4 E1 P36 P39 AMP1 P3B5 P0D13 H3 E2 P40 P40 AMP2 P3B6 P0D14 H2 F2 P41 P41 AMP3 P3B7 P0D15 H1 G1 P44 P43 eeSK P0C3 P1D0 C10 B9 P20 P22 eeCS P0C2 P1D1 D10 A9 P18 P21 eeDI P0C1 P1D2 F10 B10 P17 P20 eeDO P0C0 P1D3 E10 B11 P15 P19 ssCK P0B7 P1D4 E8 A11 P14 P17 ssCS P0B6 P1D5 E7 A12 P13 P16 ssDI P0B5 P1D6 A6 B13 P12 P15 ssDO P0B4 P1D7 B6 A13 P11 P14

ppCLK P3C0 P1D8 K4 G2 P46 P44 ppDIN P3C1 P1D9 K3 K1 P47 P45 TxD P3C2 P1D10 K2 K2 P50 P46 RxD P3C3 P1D11 K1 L1 P51 P48

tstLED P3C4 P1D12 L5 L2 P52 P49 stsLED P3C5 P1D13 L4 M1 P53 P50 RxLED P3C6 P1D14 L3 M2 P55 P51 TxLED P3C7 P1D15 L2 N1 P56 P52

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

xPA0 P2A0 P2D0 AA3 N2 P59 P53 xPA1 P2A1 P2D1 Y4 T1 P60 P54 xPA2 P2A2 P2D2 AA4 T2 P63 P56 xPA3 P2A3 P2D3 AB4 U2 P68 P57 xPC0 P2A4 P2D4 W5 V1 P69 P58 xPC1 P2A5 P2D5 Y5 V2 P70 P59 xPC2 P2A6 P2D6 AA5 W1 P73 P60 xPC3 P2A7 P2D7 AB5 W2 P74 P61

-- P2B0 P2D8 V6 Y1 P76 P64 -- P2B1 P2D9 V7 Y2 P77 P66 -- P2B2 P2D10 W6 AA3 P78 P68

mCS P2B3 P2D11 Y6 AB4 P79 P69 mA15 P2B4 P2D12 V9 AA4 P80 P70 mA16 P2B5 P2D13 V10 AB5 P82 P71 mA17 P2B6 P2D14 W10 AA5 P83 P74 mA18 P2B7 P2D15 Y10 AA6 P84 P75 CS0 P2C0 ADC0 AA10 AB8 P85 P76

83

SDIN0 P2C1 ADC1 AB10 AA8 P86 P77 CS1 P2C2 ADC2 U10 AB9 P87 P78

SDIN1 P2C3 ADC3 U11 AA9 P89 P79 SCLK P2C4 ADC4 V11 AB10 P90 P80 CS2 P2C5 ADC5 W11 AA10 P92 P81

SDOUT P2C6 ADC6 Y11 AB11 P93 P82 LDAC P2C7 ADC7 AA11 AA11 P95 P83

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

xPB0 P1A0 PxA0 M1 M3 P135 P85 xPB1 P1A1 PxA1 M2 M4 P132 P86 yPB2 P1A2 PxA2 M3 N3 P131 P87 yPB3 P1A3 PxA3 M4 N4 P130 P88 yPB1 P1A4 PxA4 M5 T4 P129 P91 yPB4 P1A5 PxA5 M6 T5 P128 P92 yPB0 P1A6 PxA6 N1 U3 P127 P93 yPB5 P1A7 PxA7 N2 U4 P125 P94 yPB6 P1B0 PxB0 U13 V3 P119 P95 yPB7 P1B1 PxB1 V13 V4 P118 P96 xPB2 P1B2 PxB2 W13 W3 P116 P97 xPB3 P1B3 PxB3 Y13 W4 P113 P98 xPB4 P1B4 PxB4 AA13 Y3 P112 P100 xPB5 P1B5 PxB5 AB13 Y4 P96 P101 yPC3 P1B6 PxB6 U12 Y5 P97 P102 yPC2 P1B7 PxB7 V12 W5 P98 P103 yPC1 P1C7 PxC0 AB17 W11 P108 P113 yPC0 P1C6 PxC1 AA17 Y11 P107 P112 yPA0 P1C5 PxC2 Y17 W10 P105 P111 yPA1 P1C4 PxC3 W17 Y10 P104 P110 yPA2 P1C3 PxC4 AB18 W9 P103 P107 yPA3 P1C2 PxC5 AA18 W8 P102 P106 xPB6 P1C1 PxC6 Y18 W6 P100 P105 xPB7 P1C0 PxC7 W18 Y6 P99 P104

84

eM_DEMO 模組

eM_DEMO 模組的電路配置圖如下

eM_USB 模組

數字型 LED

0 1 2 34 5 6 78 9 A BC D E F

燈號型 LED

44 鍵盤

ADC0 ADC1 DAC0 DAC1

LED 選擇KEY 選擇

其中

1eM_DEMO模組的基本功能包括 A將 xPAxPBxPC等 16個 IO訊號引出控制 LED和鍵盤電路 B將 ADDA訊號引出並放大成+-10V的工作範圍 2LED和鍵盤可以選擇三種模式由 LED和 KEY 兩組開關作選擇圖示如下

模式1

0123

模式2 模式3

0 1 2 34 5 6 78 9 A BC D E F

0123

3模式14鍵輸入並搭配 16點的 LED燈號顯示其中 16點 LED分別對映到 xPA[0~3]xPB[0~7]和 xPC[0~3] 4組按鍵分別對映到 xPC[0~3] 4模式24鍵輸入並搭配四個 7段式數字顯示其中 數字顯示由 xPA[0~3]作數字掃瞄而由 xPB[0~7]作 7段式 LED控制 4組按鍵 分別對映到 xPC[0~3] 5模式316鍵輸入並搭配四個 7段式數字顯示其中 數字顯示由 xPA[0~3]作數字掃瞄而由 xPB[0~7]作 7段式 LED控制 16組按鍵由 xPA[0~3]作鍵盤掃瞄而由 xPC[0~3]作鍵盤讀取 6根據VHDL與數位邏輯設計的章節其中 第 1章至 10章的實驗採用模式1而 第 11章實驗採用模式2而 第 12章之後的實驗都採用模式3

85

FPGA UCF 定義

eM_3S1K 模組

NET CLK LOC = B12

NET XAlt0gt LOC = N2

NET XAlt1gt LOC = T1

NET XAlt2gt LOC = T2

NET XAlt3gt LOC = U2

NET XBlt0gt LOC = M3

NET XBlt1gt LOC = M4

NET XBlt2gt LOC = W3

NET XBlt3gt LOC = W4

NET XBlt4gt LOC = Y3

NET XBlt5gt LOC = Y4

NET XBlt6gt LOC = W6

NET XBlt7gt LOC = Y6

NET XClt0gt LOC = V1

NET XClt1gt LOC = V2

NET XClt2gt LOC = W1

NET XClt3gt LOC = W2

NET YAlt0gt LOC = W10

JP4 接頭

NET YAlt1gt LOC = Y10

NET YAlt2gt LOC = W9

NET YAlt3gt LOC = W8

NET YBlt0gt LOC = U3

NET YBlt1gt LOC = T4

NET YBlt2gt LOC = N3

NET YBlt3gt LOC = N4

NET YBlt4gt LOC = T5

NET YBlt5gt LOC = U4

NET YBlt6gt LOC = V3

NET YBlt7gt LOC = V4

NET YClt0gt LOC = Y11

NET YClt1gt LOC = W11

NET YClt2gt LOC = W5

NET YClt3gt LOC = Y5

在光碟片中 RFFPGAVHDLDEMOBIT3S1K 裡有 VHDL 與數位邏輯設計書本範例原始檔與合成檔

86

eM_3S50 模組

NET CLK LOC = P124

NET XAlt0gt LOC = P59

NET XAlt1gt LOC = P60

NET XAlt2gt LOC = P63

NET XAlt3gt LOC = P68

NET XBlt0gt LOC = P135

NET XBlt1gt LOC = P132

NET XBlt2gt LOC = P116

NET XBlt3gt LOC = P113

NET XBlt4gt LOC = P112

NET XBlt5gt LOC = P96

NET XBlt6gt LOC = P100

NET XBlt7gt LOC = P99

NET XClt0gt LOC = P69

NET XClt1gt LOC = P70

NET XClt2gt LOC = P73

NET XClt3gt LOC = P74

NET YAlt0gt LOC = P105

JP4 接頭

NET YAlt1gt LOC = P104

NET YAlt2gt LOC = P103

NET YAlt3gt LOC = P102

NET YBlt0gt LOC = P127

NET YBlt1gt LOC = P129

NET YBlt2gt LOC = P131

NET YBlt3gt LOC = P130

NET YBlt4gt LOC = P128

NET YBlt5gt LOC = P125

NET YBlt6gt LOC = P119

NET YBlt7gt LOC = P118

NET YClt0gt LOC = P107

NET YClt1gt LOC = P108

NET YClt2gt LOC = P98

NET YClt3gt LOC = P97

在光碟片中 RFFPGAVHDLDEMOBIT3S200 裡有VHDL與數位邏輯設計書本範例原始檔與合成檔

87

eM_95XL 模組

NET CLK LOC = SPIN38

NET XAlt0gt LOC = SPIN53

NET XAlt1gt LOC = SPIN54

NET XAlt2gt LOC = SPIN56

NET XAlt3gt LOC = SPIN57

NET XBlt0gt LOC = SPIN85

NET XBlt1gt LOC = SPIN86

NET XBlt2gt LOC = SPIN97

NET XBlt3gt LOC = SPIN98

NET XBlt4gt LOC = SPIN100

NET XBlt5gt LOC = SPIN101

NET XBlt6gt LOC = SPIN105

NET XBlt7gt LOC = SPIN104

NET XClt0gt LOC = SPIN58

NET XClt1gt LOC = SPIN59

NET XClt2gt LOC = SPIN60

NET XClt3gt LOC = SPIN61

NET YAlt0gt LOC = SPIN111

JP4 接頭

NET YAlt1gt LOC = SPIN110

NET YAlt2gt LOC = SPIN107

NET YAlt3gt LOC = SPIN106

NET YBlt0gt LOC = SPIN93

NET YBlt1gt LOC = SPIN91

NET YBlt2gt LOC = SPIN87

NET YBlt3gt LOC = SPIN88

NET YBlt4gt LOC = SPIN92

NET YBlt5gt LOC = SPIN94

NET YBlt6gt LOC = SPIN95

NET YBlt7gt LOC = SPIN96

NET YClt0gt LOC = SPIN112

NET YClt1gt LOC = SPIN113

NET YClt2gt LOC = SPIN103

NET YClt3gt LOC = SPIN102

在光碟片中 RFFPGAVHDLDEMOSVF95288XL 裡有VHDL與數位邏輯設計書本範例原始檔與合成

檔案

88

eM_FPGA 模組

NET CLK LOC = E12

NET XAlt0gt LOC = AA3

NET XAlt1gt LOC = Y4

NET XAlt2gt LOC = AA4

NET XAlt3gt LOC = AB4

NET XBlt0gt LOC = M1

NET XBlt1gt LOC = M2

NET XBlt2gt LOC = W13

NET XBlt3gt LOC = Y13

NET XBlt4gt LOC = AA13

NET XBlt5gt LOC = AB13

NET XBlt6gt LOC = Y18

NET XBlt7gt LOC = W18

NET XClt0gt LOC = W5

NET XClt1gt LOC = Y5

NET XClt2gt LOC = AA5

NET XClt3gt LOC = AB5

NET YAlt0gt LOC = Y17

JP4 接頭

NET YAlt1gt LOC = W17

NET YAlt2gt LOC = AB18

NET YAlt3gt LOC = AA18

NET YBlt0gt LOC = N1

NET YBlt1gt LOC = M5

NET YBlt2gt LOC = M3

NET YBlt3gt LOC = M4

NET YBlt4gt LOC = M6

NET YBlt5gt LOC = N2

NET YBlt6gt LOC = U13

NET YBlt7gt LOC = V13

NET YClt0gt LOC = AA17

NET YClt1gt LOC = AB17

NET YClt2gt LOC = V12

NET YClt3gt LOC = U12

在光碟片中 RFFPGAVHDLDEMOBIT2V250 裡有VHDL與數位邏輯設計書本範例原始檔與合成檔

89

Page 80: RFFPGA 直流馬達實驗手冊juniortek.com.tw/program/manual/RF-DC-mal.pdf · em_demo模組 em_dcm 直流伺服馬達 dc電源 rffpga 系統的直流馬達實驗規劃 其中包括:

外部接腳定義

外部接頭的接點順序圖示如下

上視圖

JP11 9 JP4

126225

JP31

50249

JP21

50249

而各接頭的接點定義如下

JP1 JP4 JP2 JP3 1+33V 1+12V 2+12V 1 GND 2 GND 1 GND 2 GND 2GND 3 ADC 4 DAC 3POWER 4ALARM 3 +5V 4 +5V 3nc 5 yPB2 6 yPB3 5RxNET 6TxNET 5+12V 6+12V 4TCK 7 yPB1 6 yPB4 7RxUSB 6TxUSB 7-12V 6-12V 5nc 9 yPB0 10yPB5 9RxCAN 10TxCAN 9 ADC 10 DAC 6TDO 11yPB6 12yPB7 11P0D0 12P0D1 11P1D0 12P1D1 7TDI 13yGND 14yPC3 13P0D2 14P0D3 13P1D2 14P1D3 8nc 15yPC2 16yPC1 15P0D4 16P0D5 15P1D4 16P1D5 9TMS 17yPC0 18yPA0 17P0D6 18P0D7 17P1D6 18P1D7 19yPA1 20yPA2 19P0D8 20P0D9 19P1D8 20P1D9 21yPA3 22GND 21P0D10 22P0D11 21P1D10 22P1D11 23GND 24+5V 23P0D12 24P0D13 23P1D12 24P1D13 25+5V 26nc 25P0D14 26P0D15 25P1D14 26P1D15 27P2D0 28P2D1 27PxA0 28PxA1 29P2D2 30P2D3 29PxA2 30PxA3 31P2D4 32P2D5 31PxA4 32PxA5 33P2D6 34P2D7 33PxA6 34PxA7 35P2D8 36P2D9 35PxB0 36PxB1 37P2D10 38P2D11 37PxB2 38PxB3 39P2D12 40P2D13 39PxB4 40PxB5 41P2D14 42P2D15 41PxB6 42PxB7 43ADC0 44ADC1 43PxC0 44PxC1 45ADC2 46ADC3 45PxC2 46PxC3 47ADC4 48ADC5 47PxC4 48PxC5 49DAC0 50DAC1 49PxC6 50PxC7

80

eM_FPGA 模組

在各種 eM_FPGA 模組中FPGA 對外電路的標準配置圖如下

24576MHz

FlashROM

26PSRAM

EEPROM

mD[8]

yPA[4]

FPGACPLD

mA[19]mRDmWRmCSeeCKeeCSeeDIeeDO

光纖界面 RxNETTxNET

USB 界面 RxUSBTxUSBCLK24MPOWERALARM

LED

tstLEDstsLEDRxLEDTxLED

yPB[8]yPC[4]

ADCDAC

ADC[8]

實驗模組

ADC[2]

DAC[2]

xPA[4]

xPB[8]

xPC[4]

基礎實驗

其中

1FPGACPLD可以選擇下述幾種 XC2V250XC2V1000 採用 eM_2V1K模組其中 FPGA為 FG456包裝 XC3S400XC3S1000XC3S1500採用 eM_3S1K模組其中 FPGA為 FG456包裝 XC3S400XC3S1000XC3S1500採用 eM_3S1K模組其中 FPGA為 FG456包裝 XC3S50XC3S200XC3S400 採用 eM_3S50模組其中 FPGA為 TQ144包裝 XC95144XLXC95288XL 採用 eM_95XL模組其中 CPLD為 TQ144包裝 2採用 FG456包裝者可以控制所有的 IO界面 3採用 TQ144包裝者只是不能控制 RAM和 FlashROM而可以控制其他所有的界面 4所有 FPGA模組都可自由選擇由 USB界面或是由光纖界面下載電路但是 CPLD模組只能固定由 USB界面下載電路

5所有 FPGACPLD模組都可透過 26P接頭連接既有的各種實驗模組

81

FPGA 接腳對照表

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

mD0 XD6 mD0 A17 C13 -- -- mD1 XD7 mD1 B17 D12 -- -- mD2 XD8 mD2 C17 D11 -- -- mD3 XD9 mD3 D17 C11 -- -- mD4 XD10 mD4 E17 D10 -- -- mD5 XD11 mD5 E16 C10 -- -- mD6 XD12 mD6 E14 D9 -- -- mD7 XD13 mD7 E13 D7 -- -- mA0 XD14 mA0 D13 C7 -- -- mA1 XD15 mA1 C13 D6 -- -- mA2 XA0 mA2 V5 C3 -- -- mA3 XA1 mA3 U5 C4 -- -- mA4 XA2 mA4 Y2 D3 -- -- mA5 XA3 mA5 Y1 D4 -- -- mA6 XA4 mA6 V4 E3 -- -- mA7 XA5 mA7 V3 E4 -- -- mA8 XA6 mA8 W2 F3 -- -- mA9 XA7 mA9 W1 F4 -- -- mA10 XA8 mA10 T2 G6 -- -- mA11 XA9 mA11 T1 K3 -- -- mA12 XA10 mA12 R4 K10 -- -- mA13 XA11 mA13 R3 L3 -- -- mA14 XA12 mA14 R2 L4 -- -- mRD XRD mRD R1 D5 -- -- mWR XWR mWR P6 C6 -- --

POWER P0A0 POWER B4 B20 P1 P5 ALARM P0A1 ALARM A4 A19 P2 P6 RxNET P0A2 RxNET C4 B19 P4 P7 TxNET P0A3 TxNET C5 A18 P5 P9 RxUSB P0B0 RxUSB B5 A15 P6 P10 TxUSB P0B1 TxUSB A5 B15 P7 P11 RxCAN P0B2 RxCAN D6 A14 P8 P12 RxCAN P0B3 TxCAN C6 B14 P10 P13

CLK24M CLK24M CLK24M E12 B12 P124 P38

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

PWM0H P3A0 P0D0 E6 A8 P21 P23 PWM0L P3A1 P0D1 E5 B8 P23 P24 PWM1H P3A2 P0D2 C2 B6 P24 P25 PWM1L P3A3 P0D3 C1 A5 P25 P26 PWM2H P3A4 P0D4 D2 B5 P26 P27

82

PWM2L P3A5 P0D5 D1 A4 P27 P28 PWMenb P3A6 P0D6 E4 B4 P28 P30 PHT1Z P3A7 P0D7 E3 A3 P30 P31 PHT1A P3B0 P0D8 G2 C1 P31 P32 PHT1B P3B1 P0D9 G1 C2 P32 P33 PHT0A P3B2 P0D10 H5 D1 P33 P34 PHT0B P3B3 P0D11 J6 D2 P35 P35 AMP0 P3B4 P0D12 H4 E1 P36 P39 AMP1 P3B5 P0D13 H3 E2 P40 P40 AMP2 P3B6 P0D14 H2 F2 P41 P41 AMP3 P3B7 P0D15 H1 G1 P44 P43 eeSK P0C3 P1D0 C10 B9 P20 P22 eeCS P0C2 P1D1 D10 A9 P18 P21 eeDI P0C1 P1D2 F10 B10 P17 P20 eeDO P0C0 P1D3 E10 B11 P15 P19 ssCK P0B7 P1D4 E8 A11 P14 P17 ssCS P0B6 P1D5 E7 A12 P13 P16 ssDI P0B5 P1D6 A6 B13 P12 P15 ssDO P0B4 P1D7 B6 A13 P11 P14

ppCLK P3C0 P1D8 K4 G2 P46 P44 ppDIN P3C1 P1D9 K3 K1 P47 P45 TxD P3C2 P1D10 K2 K2 P50 P46 RxD P3C3 P1D11 K1 L1 P51 P48

tstLED P3C4 P1D12 L5 L2 P52 P49 stsLED P3C5 P1D13 L4 M1 P53 P50 RxLED P3C6 P1D14 L3 M2 P55 P51 TxLED P3C7 P1D15 L2 N1 P56 P52

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

xPA0 P2A0 P2D0 AA3 N2 P59 P53 xPA1 P2A1 P2D1 Y4 T1 P60 P54 xPA2 P2A2 P2D2 AA4 T2 P63 P56 xPA3 P2A3 P2D3 AB4 U2 P68 P57 xPC0 P2A4 P2D4 W5 V1 P69 P58 xPC1 P2A5 P2D5 Y5 V2 P70 P59 xPC2 P2A6 P2D6 AA5 W1 P73 P60 xPC3 P2A7 P2D7 AB5 W2 P74 P61

-- P2B0 P2D8 V6 Y1 P76 P64 -- P2B1 P2D9 V7 Y2 P77 P66 -- P2B2 P2D10 W6 AA3 P78 P68

mCS P2B3 P2D11 Y6 AB4 P79 P69 mA15 P2B4 P2D12 V9 AA4 P80 P70 mA16 P2B5 P2D13 V10 AB5 P82 P71 mA17 P2B6 P2D14 W10 AA5 P83 P74 mA18 P2B7 P2D15 Y10 AA6 P84 P75 CS0 P2C0 ADC0 AA10 AB8 P85 P76

83

SDIN0 P2C1 ADC1 AB10 AA8 P86 P77 CS1 P2C2 ADC2 U10 AB9 P87 P78

SDIN1 P2C3 ADC3 U11 AA9 P89 P79 SCLK P2C4 ADC4 V11 AB10 P90 P80 CS2 P2C5 ADC5 W11 AA10 P92 P81

SDOUT P2C6 ADC6 Y11 AB11 P93 P82 LDAC P2C7 ADC7 AA11 AA11 P95 P83

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

xPB0 P1A0 PxA0 M1 M3 P135 P85 xPB1 P1A1 PxA1 M2 M4 P132 P86 yPB2 P1A2 PxA2 M3 N3 P131 P87 yPB3 P1A3 PxA3 M4 N4 P130 P88 yPB1 P1A4 PxA4 M5 T4 P129 P91 yPB4 P1A5 PxA5 M6 T5 P128 P92 yPB0 P1A6 PxA6 N1 U3 P127 P93 yPB5 P1A7 PxA7 N2 U4 P125 P94 yPB6 P1B0 PxB0 U13 V3 P119 P95 yPB7 P1B1 PxB1 V13 V4 P118 P96 xPB2 P1B2 PxB2 W13 W3 P116 P97 xPB3 P1B3 PxB3 Y13 W4 P113 P98 xPB4 P1B4 PxB4 AA13 Y3 P112 P100 xPB5 P1B5 PxB5 AB13 Y4 P96 P101 yPC3 P1B6 PxB6 U12 Y5 P97 P102 yPC2 P1B7 PxB7 V12 W5 P98 P103 yPC1 P1C7 PxC0 AB17 W11 P108 P113 yPC0 P1C6 PxC1 AA17 Y11 P107 P112 yPA0 P1C5 PxC2 Y17 W10 P105 P111 yPA1 P1C4 PxC3 W17 Y10 P104 P110 yPA2 P1C3 PxC4 AB18 W9 P103 P107 yPA3 P1C2 PxC5 AA18 W8 P102 P106 xPB6 P1C1 PxC6 Y18 W6 P100 P105 xPB7 P1C0 PxC7 W18 Y6 P99 P104

84

eM_DEMO 模組

eM_DEMO 模組的電路配置圖如下

eM_USB 模組

數字型 LED

0 1 2 34 5 6 78 9 A BC D E F

燈號型 LED

44 鍵盤

ADC0 ADC1 DAC0 DAC1

LED 選擇KEY 選擇

其中

1eM_DEMO模組的基本功能包括 A將 xPAxPBxPC等 16個 IO訊號引出控制 LED和鍵盤電路 B將 ADDA訊號引出並放大成+-10V的工作範圍 2LED和鍵盤可以選擇三種模式由 LED和 KEY 兩組開關作選擇圖示如下

模式1

0123

模式2 模式3

0 1 2 34 5 6 78 9 A BC D E F

0123

3模式14鍵輸入並搭配 16點的 LED燈號顯示其中 16點 LED分別對映到 xPA[0~3]xPB[0~7]和 xPC[0~3] 4組按鍵分別對映到 xPC[0~3] 4模式24鍵輸入並搭配四個 7段式數字顯示其中 數字顯示由 xPA[0~3]作數字掃瞄而由 xPB[0~7]作 7段式 LED控制 4組按鍵 分別對映到 xPC[0~3] 5模式316鍵輸入並搭配四個 7段式數字顯示其中 數字顯示由 xPA[0~3]作數字掃瞄而由 xPB[0~7]作 7段式 LED控制 16組按鍵由 xPA[0~3]作鍵盤掃瞄而由 xPC[0~3]作鍵盤讀取 6根據VHDL與數位邏輯設計的章節其中 第 1章至 10章的實驗採用模式1而 第 11章實驗採用模式2而 第 12章之後的實驗都採用模式3

85

FPGA UCF 定義

eM_3S1K 模組

NET CLK LOC = B12

NET XAlt0gt LOC = N2

NET XAlt1gt LOC = T1

NET XAlt2gt LOC = T2

NET XAlt3gt LOC = U2

NET XBlt0gt LOC = M3

NET XBlt1gt LOC = M4

NET XBlt2gt LOC = W3

NET XBlt3gt LOC = W4

NET XBlt4gt LOC = Y3

NET XBlt5gt LOC = Y4

NET XBlt6gt LOC = W6

NET XBlt7gt LOC = Y6

NET XClt0gt LOC = V1

NET XClt1gt LOC = V2

NET XClt2gt LOC = W1

NET XClt3gt LOC = W2

NET YAlt0gt LOC = W10

JP4 接頭

NET YAlt1gt LOC = Y10

NET YAlt2gt LOC = W9

NET YAlt3gt LOC = W8

NET YBlt0gt LOC = U3

NET YBlt1gt LOC = T4

NET YBlt2gt LOC = N3

NET YBlt3gt LOC = N4

NET YBlt4gt LOC = T5

NET YBlt5gt LOC = U4

NET YBlt6gt LOC = V3

NET YBlt7gt LOC = V4

NET YClt0gt LOC = Y11

NET YClt1gt LOC = W11

NET YClt2gt LOC = W5

NET YClt3gt LOC = Y5

在光碟片中 RFFPGAVHDLDEMOBIT3S1K 裡有 VHDL 與數位邏輯設計書本範例原始檔與合成檔

86

eM_3S50 模組

NET CLK LOC = P124

NET XAlt0gt LOC = P59

NET XAlt1gt LOC = P60

NET XAlt2gt LOC = P63

NET XAlt3gt LOC = P68

NET XBlt0gt LOC = P135

NET XBlt1gt LOC = P132

NET XBlt2gt LOC = P116

NET XBlt3gt LOC = P113

NET XBlt4gt LOC = P112

NET XBlt5gt LOC = P96

NET XBlt6gt LOC = P100

NET XBlt7gt LOC = P99

NET XClt0gt LOC = P69

NET XClt1gt LOC = P70

NET XClt2gt LOC = P73

NET XClt3gt LOC = P74

NET YAlt0gt LOC = P105

JP4 接頭

NET YAlt1gt LOC = P104

NET YAlt2gt LOC = P103

NET YAlt3gt LOC = P102

NET YBlt0gt LOC = P127

NET YBlt1gt LOC = P129

NET YBlt2gt LOC = P131

NET YBlt3gt LOC = P130

NET YBlt4gt LOC = P128

NET YBlt5gt LOC = P125

NET YBlt6gt LOC = P119

NET YBlt7gt LOC = P118

NET YClt0gt LOC = P107

NET YClt1gt LOC = P108

NET YClt2gt LOC = P98

NET YClt3gt LOC = P97

在光碟片中 RFFPGAVHDLDEMOBIT3S200 裡有VHDL與數位邏輯設計書本範例原始檔與合成檔

87

eM_95XL 模組

NET CLK LOC = SPIN38

NET XAlt0gt LOC = SPIN53

NET XAlt1gt LOC = SPIN54

NET XAlt2gt LOC = SPIN56

NET XAlt3gt LOC = SPIN57

NET XBlt0gt LOC = SPIN85

NET XBlt1gt LOC = SPIN86

NET XBlt2gt LOC = SPIN97

NET XBlt3gt LOC = SPIN98

NET XBlt4gt LOC = SPIN100

NET XBlt5gt LOC = SPIN101

NET XBlt6gt LOC = SPIN105

NET XBlt7gt LOC = SPIN104

NET XClt0gt LOC = SPIN58

NET XClt1gt LOC = SPIN59

NET XClt2gt LOC = SPIN60

NET XClt3gt LOC = SPIN61

NET YAlt0gt LOC = SPIN111

JP4 接頭

NET YAlt1gt LOC = SPIN110

NET YAlt2gt LOC = SPIN107

NET YAlt3gt LOC = SPIN106

NET YBlt0gt LOC = SPIN93

NET YBlt1gt LOC = SPIN91

NET YBlt2gt LOC = SPIN87

NET YBlt3gt LOC = SPIN88

NET YBlt4gt LOC = SPIN92

NET YBlt5gt LOC = SPIN94

NET YBlt6gt LOC = SPIN95

NET YBlt7gt LOC = SPIN96

NET YClt0gt LOC = SPIN112

NET YClt1gt LOC = SPIN113

NET YClt2gt LOC = SPIN103

NET YClt3gt LOC = SPIN102

在光碟片中 RFFPGAVHDLDEMOSVF95288XL 裡有VHDL與數位邏輯設計書本範例原始檔與合成

檔案

88

eM_FPGA 模組

NET CLK LOC = E12

NET XAlt0gt LOC = AA3

NET XAlt1gt LOC = Y4

NET XAlt2gt LOC = AA4

NET XAlt3gt LOC = AB4

NET XBlt0gt LOC = M1

NET XBlt1gt LOC = M2

NET XBlt2gt LOC = W13

NET XBlt3gt LOC = Y13

NET XBlt4gt LOC = AA13

NET XBlt5gt LOC = AB13

NET XBlt6gt LOC = Y18

NET XBlt7gt LOC = W18

NET XClt0gt LOC = W5

NET XClt1gt LOC = Y5

NET XClt2gt LOC = AA5

NET XClt3gt LOC = AB5

NET YAlt0gt LOC = Y17

JP4 接頭

NET YAlt1gt LOC = W17

NET YAlt2gt LOC = AB18

NET YAlt3gt LOC = AA18

NET YBlt0gt LOC = N1

NET YBlt1gt LOC = M5

NET YBlt2gt LOC = M3

NET YBlt3gt LOC = M4

NET YBlt4gt LOC = M6

NET YBlt5gt LOC = N2

NET YBlt6gt LOC = U13

NET YBlt7gt LOC = V13

NET YClt0gt LOC = AA17

NET YClt1gt LOC = AB17

NET YClt2gt LOC = V12

NET YClt3gt LOC = U12

在光碟片中 RFFPGAVHDLDEMOBIT2V250 裡有VHDL與數位邏輯設計書本範例原始檔與合成檔

89

Page 81: RFFPGA 直流馬達實驗手冊juniortek.com.tw/program/manual/RF-DC-mal.pdf · em_demo模組 em_dcm 直流伺服馬達 dc電源 rffpga 系統的直流馬達實驗規劃 其中包括:

eM_FPGA 模組

在各種 eM_FPGA 模組中FPGA 對外電路的標準配置圖如下

24576MHz

FlashROM

26PSRAM

EEPROM

mD[8]

yPA[4]

FPGACPLD

mA[19]mRDmWRmCSeeCKeeCSeeDIeeDO

光纖界面 RxNETTxNET

USB 界面 RxUSBTxUSBCLK24MPOWERALARM

LED

tstLEDstsLEDRxLEDTxLED

yPB[8]yPC[4]

ADCDAC

ADC[8]

實驗模組

ADC[2]

DAC[2]

xPA[4]

xPB[8]

xPC[4]

基礎實驗

其中

1FPGACPLD可以選擇下述幾種 XC2V250XC2V1000 採用 eM_2V1K模組其中 FPGA為 FG456包裝 XC3S400XC3S1000XC3S1500採用 eM_3S1K模組其中 FPGA為 FG456包裝 XC3S400XC3S1000XC3S1500採用 eM_3S1K模組其中 FPGA為 FG456包裝 XC3S50XC3S200XC3S400 採用 eM_3S50模組其中 FPGA為 TQ144包裝 XC95144XLXC95288XL 採用 eM_95XL模組其中 CPLD為 TQ144包裝 2採用 FG456包裝者可以控制所有的 IO界面 3採用 TQ144包裝者只是不能控制 RAM和 FlashROM而可以控制其他所有的界面 4所有 FPGA模組都可自由選擇由 USB界面或是由光纖界面下載電路但是 CPLD模組只能固定由 USB界面下載電路

5所有 FPGACPLD模組都可透過 26P接頭連接既有的各種實驗模組

81

FPGA 接腳對照表

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

mD0 XD6 mD0 A17 C13 -- -- mD1 XD7 mD1 B17 D12 -- -- mD2 XD8 mD2 C17 D11 -- -- mD3 XD9 mD3 D17 C11 -- -- mD4 XD10 mD4 E17 D10 -- -- mD5 XD11 mD5 E16 C10 -- -- mD6 XD12 mD6 E14 D9 -- -- mD7 XD13 mD7 E13 D7 -- -- mA0 XD14 mA0 D13 C7 -- -- mA1 XD15 mA1 C13 D6 -- -- mA2 XA0 mA2 V5 C3 -- -- mA3 XA1 mA3 U5 C4 -- -- mA4 XA2 mA4 Y2 D3 -- -- mA5 XA3 mA5 Y1 D4 -- -- mA6 XA4 mA6 V4 E3 -- -- mA7 XA5 mA7 V3 E4 -- -- mA8 XA6 mA8 W2 F3 -- -- mA9 XA7 mA9 W1 F4 -- -- mA10 XA8 mA10 T2 G6 -- -- mA11 XA9 mA11 T1 K3 -- -- mA12 XA10 mA12 R4 K10 -- -- mA13 XA11 mA13 R3 L3 -- -- mA14 XA12 mA14 R2 L4 -- -- mRD XRD mRD R1 D5 -- -- mWR XWR mWR P6 C6 -- --

POWER P0A0 POWER B4 B20 P1 P5 ALARM P0A1 ALARM A4 A19 P2 P6 RxNET P0A2 RxNET C4 B19 P4 P7 TxNET P0A3 TxNET C5 A18 P5 P9 RxUSB P0B0 RxUSB B5 A15 P6 P10 TxUSB P0B1 TxUSB A5 B15 P7 P11 RxCAN P0B2 RxCAN D6 A14 P8 P12 RxCAN P0B3 TxCAN C6 B14 P10 P13

CLK24M CLK24M CLK24M E12 B12 P124 P38

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

PWM0H P3A0 P0D0 E6 A8 P21 P23 PWM0L P3A1 P0D1 E5 B8 P23 P24 PWM1H P3A2 P0D2 C2 B6 P24 P25 PWM1L P3A3 P0D3 C1 A5 P25 P26 PWM2H P3A4 P0D4 D2 B5 P26 P27

82

PWM2L P3A5 P0D5 D1 A4 P27 P28 PWMenb P3A6 P0D6 E4 B4 P28 P30 PHT1Z P3A7 P0D7 E3 A3 P30 P31 PHT1A P3B0 P0D8 G2 C1 P31 P32 PHT1B P3B1 P0D9 G1 C2 P32 P33 PHT0A P3B2 P0D10 H5 D1 P33 P34 PHT0B P3B3 P0D11 J6 D2 P35 P35 AMP0 P3B4 P0D12 H4 E1 P36 P39 AMP1 P3B5 P0D13 H3 E2 P40 P40 AMP2 P3B6 P0D14 H2 F2 P41 P41 AMP3 P3B7 P0D15 H1 G1 P44 P43 eeSK P0C3 P1D0 C10 B9 P20 P22 eeCS P0C2 P1D1 D10 A9 P18 P21 eeDI P0C1 P1D2 F10 B10 P17 P20 eeDO P0C0 P1D3 E10 B11 P15 P19 ssCK P0B7 P1D4 E8 A11 P14 P17 ssCS P0B6 P1D5 E7 A12 P13 P16 ssDI P0B5 P1D6 A6 B13 P12 P15 ssDO P0B4 P1D7 B6 A13 P11 P14

ppCLK P3C0 P1D8 K4 G2 P46 P44 ppDIN P3C1 P1D9 K3 K1 P47 P45 TxD P3C2 P1D10 K2 K2 P50 P46 RxD P3C3 P1D11 K1 L1 P51 P48

tstLED P3C4 P1D12 L5 L2 P52 P49 stsLED P3C5 P1D13 L4 M1 P53 P50 RxLED P3C6 P1D14 L3 M2 P55 P51 TxLED P3C7 P1D15 L2 N1 P56 P52

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

xPA0 P2A0 P2D0 AA3 N2 P59 P53 xPA1 P2A1 P2D1 Y4 T1 P60 P54 xPA2 P2A2 P2D2 AA4 T2 P63 P56 xPA3 P2A3 P2D3 AB4 U2 P68 P57 xPC0 P2A4 P2D4 W5 V1 P69 P58 xPC1 P2A5 P2D5 Y5 V2 P70 P59 xPC2 P2A6 P2D6 AA5 W1 P73 P60 xPC3 P2A7 P2D7 AB5 W2 P74 P61

-- P2B0 P2D8 V6 Y1 P76 P64 -- P2B1 P2D9 V7 Y2 P77 P66 -- P2B2 P2D10 W6 AA3 P78 P68

mCS P2B3 P2D11 Y6 AB4 P79 P69 mA15 P2B4 P2D12 V9 AA4 P80 P70 mA16 P2B5 P2D13 V10 AB5 P82 P71 mA17 P2B6 P2D14 W10 AA5 P83 P74 mA18 P2B7 P2D15 Y10 AA6 P84 P75 CS0 P2C0 ADC0 AA10 AB8 P85 P76

83

SDIN0 P2C1 ADC1 AB10 AA8 P86 P77 CS1 P2C2 ADC2 U10 AB9 P87 P78

SDIN1 P2C3 ADC3 U11 AA9 P89 P79 SCLK P2C4 ADC4 V11 AB10 P90 P80 CS2 P2C5 ADC5 W11 AA10 P92 P81

SDOUT P2C6 ADC6 Y11 AB11 P93 P82 LDAC P2C7 ADC7 AA11 AA11 P95 P83

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

xPB0 P1A0 PxA0 M1 M3 P135 P85 xPB1 P1A1 PxA1 M2 M4 P132 P86 yPB2 P1A2 PxA2 M3 N3 P131 P87 yPB3 P1A3 PxA3 M4 N4 P130 P88 yPB1 P1A4 PxA4 M5 T4 P129 P91 yPB4 P1A5 PxA5 M6 T5 P128 P92 yPB0 P1A6 PxA6 N1 U3 P127 P93 yPB5 P1A7 PxA7 N2 U4 P125 P94 yPB6 P1B0 PxB0 U13 V3 P119 P95 yPB7 P1B1 PxB1 V13 V4 P118 P96 xPB2 P1B2 PxB2 W13 W3 P116 P97 xPB3 P1B3 PxB3 Y13 W4 P113 P98 xPB4 P1B4 PxB4 AA13 Y3 P112 P100 xPB5 P1B5 PxB5 AB13 Y4 P96 P101 yPC3 P1B6 PxB6 U12 Y5 P97 P102 yPC2 P1B7 PxB7 V12 W5 P98 P103 yPC1 P1C7 PxC0 AB17 W11 P108 P113 yPC0 P1C6 PxC1 AA17 Y11 P107 P112 yPA0 P1C5 PxC2 Y17 W10 P105 P111 yPA1 P1C4 PxC3 W17 Y10 P104 P110 yPA2 P1C3 PxC4 AB18 W9 P103 P107 yPA3 P1C2 PxC5 AA18 W8 P102 P106 xPB6 P1C1 PxC6 Y18 W6 P100 P105 xPB7 P1C0 PxC7 W18 Y6 P99 P104

84

eM_DEMO 模組

eM_DEMO 模組的電路配置圖如下

eM_USB 模組

數字型 LED

0 1 2 34 5 6 78 9 A BC D E F

燈號型 LED

44 鍵盤

ADC0 ADC1 DAC0 DAC1

LED 選擇KEY 選擇

其中

1eM_DEMO模組的基本功能包括 A將 xPAxPBxPC等 16個 IO訊號引出控制 LED和鍵盤電路 B將 ADDA訊號引出並放大成+-10V的工作範圍 2LED和鍵盤可以選擇三種模式由 LED和 KEY 兩組開關作選擇圖示如下

模式1

0123

模式2 模式3

0 1 2 34 5 6 78 9 A BC D E F

0123

3模式14鍵輸入並搭配 16點的 LED燈號顯示其中 16點 LED分別對映到 xPA[0~3]xPB[0~7]和 xPC[0~3] 4組按鍵分別對映到 xPC[0~3] 4模式24鍵輸入並搭配四個 7段式數字顯示其中 數字顯示由 xPA[0~3]作數字掃瞄而由 xPB[0~7]作 7段式 LED控制 4組按鍵 分別對映到 xPC[0~3] 5模式316鍵輸入並搭配四個 7段式數字顯示其中 數字顯示由 xPA[0~3]作數字掃瞄而由 xPB[0~7]作 7段式 LED控制 16組按鍵由 xPA[0~3]作鍵盤掃瞄而由 xPC[0~3]作鍵盤讀取 6根據VHDL與數位邏輯設計的章節其中 第 1章至 10章的實驗採用模式1而 第 11章實驗採用模式2而 第 12章之後的實驗都採用模式3

85

FPGA UCF 定義

eM_3S1K 模組

NET CLK LOC = B12

NET XAlt0gt LOC = N2

NET XAlt1gt LOC = T1

NET XAlt2gt LOC = T2

NET XAlt3gt LOC = U2

NET XBlt0gt LOC = M3

NET XBlt1gt LOC = M4

NET XBlt2gt LOC = W3

NET XBlt3gt LOC = W4

NET XBlt4gt LOC = Y3

NET XBlt5gt LOC = Y4

NET XBlt6gt LOC = W6

NET XBlt7gt LOC = Y6

NET XClt0gt LOC = V1

NET XClt1gt LOC = V2

NET XClt2gt LOC = W1

NET XClt3gt LOC = W2

NET YAlt0gt LOC = W10

JP4 接頭

NET YAlt1gt LOC = Y10

NET YAlt2gt LOC = W9

NET YAlt3gt LOC = W8

NET YBlt0gt LOC = U3

NET YBlt1gt LOC = T4

NET YBlt2gt LOC = N3

NET YBlt3gt LOC = N4

NET YBlt4gt LOC = T5

NET YBlt5gt LOC = U4

NET YBlt6gt LOC = V3

NET YBlt7gt LOC = V4

NET YClt0gt LOC = Y11

NET YClt1gt LOC = W11

NET YClt2gt LOC = W5

NET YClt3gt LOC = Y5

在光碟片中 RFFPGAVHDLDEMOBIT3S1K 裡有 VHDL 與數位邏輯設計書本範例原始檔與合成檔

86

eM_3S50 模組

NET CLK LOC = P124

NET XAlt0gt LOC = P59

NET XAlt1gt LOC = P60

NET XAlt2gt LOC = P63

NET XAlt3gt LOC = P68

NET XBlt0gt LOC = P135

NET XBlt1gt LOC = P132

NET XBlt2gt LOC = P116

NET XBlt3gt LOC = P113

NET XBlt4gt LOC = P112

NET XBlt5gt LOC = P96

NET XBlt6gt LOC = P100

NET XBlt7gt LOC = P99

NET XClt0gt LOC = P69

NET XClt1gt LOC = P70

NET XClt2gt LOC = P73

NET XClt3gt LOC = P74

NET YAlt0gt LOC = P105

JP4 接頭

NET YAlt1gt LOC = P104

NET YAlt2gt LOC = P103

NET YAlt3gt LOC = P102

NET YBlt0gt LOC = P127

NET YBlt1gt LOC = P129

NET YBlt2gt LOC = P131

NET YBlt3gt LOC = P130

NET YBlt4gt LOC = P128

NET YBlt5gt LOC = P125

NET YBlt6gt LOC = P119

NET YBlt7gt LOC = P118

NET YClt0gt LOC = P107

NET YClt1gt LOC = P108

NET YClt2gt LOC = P98

NET YClt3gt LOC = P97

在光碟片中 RFFPGAVHDLDEMOBIT3S200 裡有VHDL與數位邏輯設計書本範例原始檔與合成檔

87

eM_95XL 模組

NET CLK LOC = SPIN38

NET XAlt0gt LOC = SPIN53

NET XAlt1gt LOC = SPIN54

NET XAlt2gt LOC = SPIN56

NET XAlt3gt LOC = SPIN57

NET XBlt0gt LOC = SPIN85

NET XBlt1gt LOC = SPIN86

NET XBlt2gt LOC = SPIN97

NET XBlt3gt LOC = SPIN98

NET XBlt4gt LOC = SPIN100

NET XBlt5gt LOC = SPIN101

NET XBlt6gt LOC = SPIN105

NET XBlt7gt LOC = SPIN104

NET XClt0gt LOC = SPIN58

NET XClt1gt LOC = SPIN59

NET XClt2gt LOC = SPIN60

NET XClt3gt LOC = SPIN61

NET YAlt0gt LOC = SPIN111

JP4 接頭

NET YAlt1gt LOC = SPIN110

NET YAlt2gt LOC = SPIN107

NET YAlt3gt LOC = SPIN106

NET YBlt0gt LOC = SPIN93

NET YBlt1gt LOC = SPIN91

NET YBlt2gt LOC = SPIN87

NET YBlt3gt LOC = SPIN88

NET YBlt4gt LOC = SPIN92

NET YBlt5gt LOC = SPIN94

NET YBlt6gt LOC = SPIN95

NET YBlt7gt LOC = SPIN96

NET YClt0gt LOC = SPIN112

NET YClt1gt LOC = SPIN113

NET YClt2gt LOC = SPIN103

NET YClt3gt LOC = SPIN102

在光碟片中 RFFPGAVHDLDEMOSVF95288XL 裡有VHDL與數位邏輯設計書本範例原始檔與合成

檔案

88

eM_FPGA 模組

NET CLK LOC = E12

NET XAlt0gt LOC = AA3

NET XAlt1gt LOC = Y4

NET XAlt2gt LOC = AA4

NET XAlt3gt LOC = AB4

NET XBlt0gt LOC = M1

NET XBlt1gt LOC = M2

NET XBlt2gt LOC = W13

NET XBlt3gt LOC = Y13

NET XBlt4gt LOC = AA13

NET XBlt5gt LOC = AB13

NET XBlt6gt LOC = Y18

NET XBlt7gt LOC = W18

NET XClt0gt LOC = W5

NET XClt1gt LOC = Y5

NET XClt2gt LOC = AA5

NET XClt3gt LOC = AB5

NET YAlt0gt LOC = Y17

JP4 接頭

NET YAlt1gt LOC = W17

NET YAlt2gt LOC = AB18

NET YAlt3gt LOC = AA18

NET YBlt0gt LOC = N1

NET YBlt1gt LOC = M5

NET YBlt2gt LOC = M3

NET YBlt3gt LOC = M4

NET YBlt4gt LOC = M6

NET YBlt5gt LOC = N2

NET YBlt6gt LOC = U13

NET YBlt7gt LOC = V13

NET YClt0gt LOC = AA17

NET YClt1gt LOC = AB17

NET YClt2gt LOC = V12

NET YClt3gt LOC = U12

在光碟片中 RFFPGAVHDLDEMOBIT2V250 裡有VHDL與數位邏輯設計書本範例原始檔與合成檔

89

Page 82: RFFPGA 直流馬達實驗手冊juniortek.com.tw/program/manual/RF-DC-mal.pdf · em_demo模組 em_dcm 直流伺服馬達 dc電源 rffpga 系統的直流馬達實驗規劃 其中包括:

FPGA 接腳對照表

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

mD0 XD6 mD0 A17 C13 -- -- mD1 XD7 mD1 B17 D12 -- -- mD2 XD8 mD2 C17 D11 -- -- mD3 XD9 mD3 D17 C11 -- -- mD4 XD10 mD4 E17 D10 -- -- mD5 XD11 mD5 E16 C10 -- -- mD6 XD12 mD6 E14 D9 -- -- mD7 XD13 mD7 E13 D7 -- -- mA0 XD14 mA0 D13 C7 -- -- mA1 XD15 mA1 C13 D6 -- -- mA2 XA0 mA2 V5 C3 -- -- mA3 XA1 mA3 U5 C4 -- -- mA4 XA2 mA4 Y2 D3 -- -- mA5 XA3 mA5 Y1 D4 -- -- mA6 XA4 mA6 V4 E3 -- -- mA7 XA5 mA7 V3 E4 -- -- mA8 XA6 mA8 W2 F3 -- -- mA9 XA7 mA9 W1 F4 -- -- mA10 XA8 mA10 T2 G6 -- -- mA11 XA9 mA11 T1 K3 -- -- mA12 XA10 mA12 R4 K10 -- -- mA13 XA11 mA13 R3 L3 -- -- mA14 XA12 mA14 R2 L4 -- -- mRD XRD mRD R1 D5 -- -- mWR XWR mWR P6 C6 -- --

POWER P0A0 POWER B4 B20 P1 P5 ALARM P0A1 ALARM A4 A19 P2 P6 RxNET P0A2 RxNET C4 B19 P4 P7 TxNET P0A3 TxNET C5 A18 P5 P9 RxUSB P0B0 RxUSB B5 A15 P6 P10 TxUSB P0B1 TxUSB A5 B15 P7 P11 RxCAN P0B2 RxCAN D6 A14 P8 P12 RxCAN P0B3 TxCAN C6 B14 P10 P13

CLK24M CLK24M CLK24M E12 B12 P124 P38

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

PWM0H P3A0 P0D0 E6 A8 P21 P23 PWM0L P3A1 P0D1 E5 B8 P23 P24 PWM1H P3A2 P0D2 C2 B6 P24 P25 PWM1L P3A3 P0D3 C1 A5 P25 P26 PWM2H P3A4 P0D4 D2 B5 P26 P27

82

PWM2L P3A5 P0D5 D1 A4 P27 P28 PWMenb P3A6 P0D6 E4 B4 P28 P30 PHT1Z P3A7 P0D7 E3 A3 P30 P31 PHT1A P3B0 P0D8 G2 C1 P31 P32 PHT1B P3B1 P0D9 G1 C2 P32 P33 PHT0A P3B2 P0D10 H5 D1 P33 P34 PHT0B P3B3 P0D11 J6 D2 P35 P35 AMP0 P3B4 P0D12 H4 E1 P36 P39 AMP1 P3B5 P0D13 H3 E2 P40 P40 AMP2 P3B6 P0D14 H2 F2 P41 P41 AMP3 P3B7 P0D15 H1 G1 P44 P43 eeSK P0C3 P1D0 C10 B9 P20 P22 eeCS P0C2 P1D1 D10 A9 P18 P21 eeDI P0C1 P1D2 F10 B10 P17 P20 eeDO P0C0 P1D3 E10 B11 P15 P19 ssCK P0B7 P1D4 E8 A11 P14 P17 ssCS P0B6 P1D5 E7 A12 P13 P16 ssDI P0B5 P1D6 A6 B13 P12 P15 ssDO P0B4 P1D7 B6 A13 P11 P14

ppCLK P3C0 P1D8 K4 G2 P46 P44 ppDIN P3C1 P1D9 K3 K1 P47 P45 TxD P3C2 P1D10 K2 K2 P50 P46 RxD P3C3 P1D11 K1 L1 P51 P48

tstLED P3C4 P1D12 L5 L2 P52 P49 stsLED P3C5 P1D13 L4 M1 P53 P50 RxLED P3C6 P1D14 L3 M2 P55 P51 TxLED P3C7 P1D15 L2 N1 P56 P52

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

xPA0 P2A0 P2D0 AA3 N2 P59 P53 xPA1 P2A1 P2D1 Y4 T1 P60 P54 xPA2 P2A2 P2D2 AA4 T2 P63 P56 xPA3 P2A3 P2D3 AB4 U2 P68 P57 xPC0 P2A4 P2D4 W5 V1 P69 P58 xPC1 P2A5 P2D5 Y5 V2 P70 P59 xPC2 P2A6 P2D6 AA5 W1 P73 P60 xPC3 P2A7 P2D7 AB5 W2 P74 P61

-- P2B0 P2D8 V6 Y1 P76 P64 -- P2B1 P2D9 V7 Y2 P77 P66 -- P2B2 P2D10 W6 AA3 P78 P68

mCS P2B3 P2D11 Y6 AB4 P79 P69 mA15 P2B4 P2D12 V9 AA4 P80 P70 mA16 P2B5 P2D13 V10 AB5 P82 P71 mA17 P2B6 P2D14 W10 AA5 P83 P74 mA18 P2B7 P2D15 Y10 AA6 P84 P75 CS0 P2C0 ADC0 AA10 AB8 P85 P76

83

SDIN0 P2C1 ADC1 AB10 AA8 P86 P77 CS1 P2C2 ADC2 U10 AB9 P87 P78

SDIN1 P2C3 ADC3 U11 AA9 P89 P79 SCLK P2C4 ADC4 V11 AB10 P90 P80 CS2 P2C5 ADC5 W11 AA10 P92 P81

SDOUT P2C6 ADC6 Y11 AB11 P93 P82 LDAC P2C7 ADC7 AA11 AA11 P95 P83

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

xPB0 P1A0 PxA0 M1 M3 P135 P85 xPB1 P1A1 PxA1 M2 M4 P132 P86 yPB2 P1A2 PxA2 M3 N3 P131 P87 yPB3 P1A3 PxA3 M4 N4 P130 P88 yPB1 P1A4 PxA4 M5 T4 P129 P91 yPB4 P1A5 PxA5 M6 T5 P128 P92 yPB0 P1A6 PxA6 N1 U3 P127 P93 yPB5 P1A7 PxA7 N2 U4 P125 P94 yPB6 P1B0 PxB0 U13 V3 P119 P95 yPB7 P1B1 PxB1 V13 V4 P118 P96 xPB2 P1B2 PxB2 W13 W3 P116 P97 xPB3 P1B3 PxB3 Y13 W4 P113 P98 xPB4 P1B4 PxB4 AA13 Y3 P112 P100 xPB5 P1B5 PxB5 AB13 Y4 P96 P101 yPC3 P1B6 PxB6 U12 Y5 P97 P102 yPC2 P1B7 PxB7 V12 W5 P98 P103 yPC1 P1C7 PxC0 AB17 W11 P108 P113 yPC0 P1C6 PxC1 AA17 Y11 P107 P112 yPA0 P1C5 PxC2 Y17 W10 P105 P111 yPA1 P1C4 PxC3 W17 Y10 P104 P110 yPA2 P1C3 PxC4 AB18 W9 P103 P107 yPA3 P1C2 PxC5 AA18 W8 P102 P106 xPB6 P1C1 PxC6 Y18 W6 P100 P105 xPB7 P1C0 PxC7 W18 Y6 P99 P104

84

eM_DEMO 模組

eM_DEMO 模組的電路配置圖如下

eM_USB 模組

數字型 LED

0 1 2 34 5 6 78 9 A BC D E F

燈號型 LED

44 鍵盤

ADC0 ADC1 DAC0 DAC1

LED 選擇KEY 選擇

其中

1eM_DEMO模組的基本功能包括 A將 xPAxPBxPC等 16個 IO訊號引出控制 LED和鍵盤電路 B將 ADDA訊號引出並放大成+-10V的工作範圍 2LED和鍵盤可以選擇三種模式由 LED和 KEY 兩組開關作選擇圖示如下

模式1

0123

模式2 模式3

0 1 2 34 5 6 78 9 A BC D E F

0123

3模式14鍵輸入並搭配 16點的 LED燈號顯示其中 16點 LED分別對映到 xPA[0~3]xPB[0~7]和 xPC[0~3] 4組按鍵分別對映到 xPC[0~3] 4模式24鍵輸入並搭配四個 7段式數字顯示其中 數字顯示由 xPA[0~3]作數字掃瞄而由 xPB[0~7]作 7段式 LED控制 4組按鍵 分別對映到 xPC[0~3] 5模式316鍵輸入並搭配四個 7段式數字顯示其中 數字顯示由 xPA[0~3]作數字掃瞄而由 xPB[0~7]作 7段式 LED控制 16組按鍵由 xPA[0~3]作鍵盤掃瞄而由 xPC[0~3]作鍵盤讀取 6根據VHDL與數位邏輯設計的章節其中 第 1章至 10章的實驗採用模式1而 第 11章實驗採用模式2而 第 12章之後的實驗都採用模式3

85

FPGA UCF 定義

eM_3S1K 模組

NET CLK LOC = B12

NET XAlt0gt LOC = N2

NET XAlt1gt LOC = T1

NET XAlt2gt LOC = T2

NET XAlt3gt LOC = U2

NET XBlt0gt LOC = M3

NET XBlt1gt LOC = M4

NET XBlt2gt LOC = W3

NET XBlt3gt LOC = W4

NET XBlt4gt LOC = Y3

NET XBlt5gt LOC = Y4

NET XBlt6gt LOC = W6

NET XBlt7gt LOC = Y6

NET XClt0gt LOC = V1

NET XClt1gt LOC = V2

NET XClt2gt LOC = W1

NET XClt3gt LOC = W2

NET YAlt0gt LOC = W10

JP4 接頭

NET YAlt1gt LOC = Y10

NET YAlt2gt LOC = W9

NET YAlt3gt LOC = W8

NET YBlt0gt LOC = U3

NET YBlt1gt LOC = T4

NET YBlt2gt LOC = N3

NET YBlt3gt LOC = N4

NET YBlt4gt LOC = T5

NET YBlt5gt LOC = U4

NET YBlt6gt LOC = V3

NET YBlt7gt LOC = V4

NET YClt0gt LOC = Y11

NET YClt1gt LOC = W11

NET YClt2gt LOC = W5

NET YClt3gt LOC = Y5

在光碟片中 RFFPGAVHDLDEMOBIT3S1K 裡有 VHDL 與數位邏輯設計書本範例原始檔與合成檔

86

eM_3S50 模組

NET CLK LOC = P124

NET XAlt0gt LOC = P59

NET XAlt1gt LOC = P60

NET XAlt2gt LOC = P63

NET XAlt3gt LOC = P68

NET XBlt0gt LOC = P135

NET XBlt1gt LOC = P132

NET XBlt2gt LOC = P116

NET XBlt3gt LOC = P113

NET XBlt4gt LOC = P112

NET XBlt5gt LOC = P96

NET XBlt6gt LOC = P100

NET XBlt7gt LOC = P99

NET XClt0gt LOC = P69

NET XClt1gt LOC = P70

NET XClt2gt LOC = P73

NET XClt3gt LOC = P74

NET YAlt0gt LOC = P105

JP4 接頭

NET YAlt1gt LOC = P104

NET YAlt2gt LOC = P103

NET YAlt3gt LOC = P102

NET YBlt0gt LOC = P127

NET YBlt1gt LOC = P129

NET YBlt2gt LOC = P131

NET YBlt3gt LOC = P130

NET YBlt4gt LOC = P128

NET YBlt5gt LOC = P125

NET YBlt6gt LOC = P119

NET YBlt7gt LOC = P118

NET YClt0gt LOC = P107

NET YClt1gt LOC = P108

NET YClt2gt LOC = P98

NET YClt3gt LOC = P97

在光碟片中 RFFPGAVHDLDEMOBIT3S200 裡有VHDL與數位邏輯設計書本範例原始檔與合成檔

87

eM_95XL 模組

NET CLK LOC = SPIN38

NET XAlt0gt LOC = SPIN53

NET XAlt1gt LOC = SPIN54

NET XAlt2gt LOC = SPIN56

NET XAlt3gt LOC = SPIN57

NET XBlt0gt LOC = SPIN85

NET XBlt1gt LOC = SPIN86

NET XBlt2gt LOC = SPIN97

NET XBlt3gt LOC = SPIN98

NET XBlt4gt LOC = SPIN100

NET XBlt5gt LOC = SPIN101

NET XBlt6gt LOC = SPIN105

NET XBlt7gt LOC = SPIN104

NET XClt0gt LOC = SPIN58

NET XClt1gt LOC = SPIN59

NET XClt2gt LOC = SPIN60

NET XClt3gt LOC = SPIN61

NET YAlt0gt LOC = SPIN111

JP4 接頭

NET YAlt1gt LOC = SPIN110

NET YAlt2gt LOC = SPIN107

NET YAlt3gt LOC = SPIN106

NET YBlt0gt LOC = SPIN93

NET YBlt1gt LOC = SPIN91

NET YBlt2gt LOC = SPIN87

NET YBlt3gt LOC = SPIN88

NET YBlt4gt LOC = SPIN92

NET YBlt5gt LOC = SPIN94

NET YBlt6gt LOC = SPIN95

NET YBlt7gt LOC = SPIN96

NET YClt0gt LOC = SPIN112

NET YClt1gt LOC = SPIN113

NET YClt2gt LOC = SPIN103

NET YClt3gt LOC = SPIN102

在光碟片中 RFFPGAVHDLDEMOSVF95288XL 裡有VHDL與數位邏輯設計書本範例原始檔與合成

檔案

88

eM_FPGA 模組

NET CLK LOC = E12

NET XAlt0gt LOC = AA3

NET XAlt1gt LOC = Y4

NET XAlt2gt LOC = AA4

NET XAlt3gt LOC = AB4

NET XBlt0gt LOC = M1

NET XBlt1gt LOC = M2

NET XBlt2gt LOC = W13

NET XBlt3gt LOC = Y13

NET XBlt4gt LOC = AA13

NET XBlt5gt LOC = AB13

NET XBlt6gt LOC = Y18

NET XBlt7gt LOC = W18

NET XClt0gt LOC = W5

NET XClt1gt LOC = Y5

NET XClt2gt LOC = AA5

NET XClt3gt LOC = AB5

NET YAlt0gt LOC = Y17

JP4 接頭

NET YAlt1gt LOC = W17

NET YAlt2gt LOC = AB18

NET YAlt3gt LOC = AA18

NET YBlt0gt LOC = N1

NET YBlt1gt LOC = M5

NET YBlt2gt LOC = M3

NET YBlt3gt LOC = M4

NET YBlt4gt LOC = M6

NET YBlt5gt LOC = N2

NET YBlt6gt LOC = U13

NET YBlt7gt LOC = V13

NET YClt0gt LOC = AA17

NET YClt1gt LOC = AB17

NET YClt2gt LOC = V12

NET YClt3gt LOC = U12

在光碟片中 RFFPGAVHDLDEMOBIT2V250 裡有VHDL與數位邏輯設計書本範例原始檔與合成檔

89

Page 83: RFFPGA 直流馬達實驗手冊juniortek.com.tw/program/manual/RF-DC-mal.pdf · em_demo模組 em_dcm 直流伺服馬達 dc電源 rffpga 系統的直流馬達實驗規劃 其中包括:

PWM2L P3A5 P0D5 D1 A4 P27 P28 PWMenb P3A6 P0D6 E4 B4 P28 P30 PHT1Z P3A7 P0D7 E3 A3 P30 P31 PHT1A P3B0 P0D8 G2 C1 P31 P32 PHT1B P3B1 P0D9 G1 C2 P32 P33 PHT0A P3B2 P0D10 H5 D1 P33 P34 PHT0B P3B3 P0D11 J6 D2 P35 P35 AMP0 P3B4 P0D12 H4 E1 P36 P39 AMP1 P3B5 P0D13 H3 E2 P40 P40 AMP2 P3B6 P0D14 H2 F2 P41 P41 AMP3 P3B7 P0D15 H1 G1 P44 P43 eeSK P0C3 P1D0 C10 B9 P20 P22 eeCS P0C2 P1D1 D10 A9 P18 P21 eeDI P0C1 P1D2 F10 B10 P17 P20 eeDO P0C0 P1D3 E10 B11 P15 P19 ssCK P0B7 P1D4 E8 A11 P14 P17 ssCS P0B6 P1D5 E7 A12 P13 P16 ssDI P0B5 P1D6 A6 B13 P12 P15 ssDO P0B4 P1D7 B6 A13 P11 P14

ppCLK P3C0 P1D8 K4 G2 P46 P44 ppDIN P3C1 P1D9 K3 K1 P47 P45 TxD P3C2 P1D10 K2 K2 P50 P46 RxD P3C3 P1D11 K1 L1 P51 P48

tstLED P3C4 P1D12 L5 L2 P52 P49 stsLED P3C5 P1D13 L4 M1 P53 P50 RxLED P3C6 P1D14 L3 M2 P55 P51 TxLED P3C7 P1D15 L2 N1 P56 P52

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

xPA0 P2A0 P2D0 AA3 N2 P59 P53 xPA1 P2A1 P2D1 Y4 T1 P60 P54 xPA2 P2A2 P2D2 AA4 T2 P63 P56 xPA3 P2A3 P2D3 AB4 U2 P68 P57 xPC0 P2A4 P2D4 W5 V1 P69 P58 xPC1 P2A5 P2D5 Y5 V2 P70 P59 xPC2 P2A6 P2D6 AA5 W1 P73 P60 xPC3 P2A7 P2D7 AB5 W2 P74 P61

-- P2B0 P2D8 V6 Y1 P76 P64 -- P2B1 P2D9 V7 Y2 P77 P66 -- P2B2 P2D10 W6 AA3 P78 P68

mCS P2B3 P2D11 Y6 AB4 P79 P69 mA15 P2B4 P2D12 V9 AA4 P80 P70 mA16 P2B5 P2D13 V10 AB5 P82 P71 mA17 P2B6 P2D14 W10 AA5 P83 P74 mA18 P2B7 P2D15 Y10 AA6 P84 P75 CS0 P2C0 ADC0 AA10 AB8 P85 P76

83

SDIN0 P2C1 ADC1 AB10 AA8 P86 P77 CS1 P2C2 ADC2 U10 AB9 P87 P78

SDIN1 P2C3 ADC3 U11 AA9 P89 P79 SCLK P2C4 ADC4 V11 AB10 P90 P80 CS2 P2C5 ADC5 W11 AA10 P92 P81

SDOUT P2C6 ADC6 Y11 AB11 P93 P82 LDAC P2C7 ADC7 AA11 AA11 P95 P83

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

xPB0 P1A0 PxA0 M1 M3 P135 P85 xPB1 P1A1 PxA1 M2 M4 P132 P86 yPB2 P1A2 PxA2 M3 N3 P131 P87 yPB3 P1A3 PxA3 M4 N4 P130 P88 yPB1 P1A4 PxA4 M5 T4 P129 P91 yPB4 P1A5 PxA5 M6 T5 P128 P92 yPB0 P1A6 PxA6 N1 U3 P127 P93 yPB5 P1A7 PxA7 N2 U4 P125 P94 yPB6 P1B0 PxB0 U13 V3 P119 P95 yPB7 P1B1 PxB1 V13 V4 P118 P96 xPB2 P1B2 PxB2 W13 W3 P116 P97 xPB3 P1B3 PxB3 Y13 W4 P113 P98 xPB4 P1B4 PxB4 AA13 Y3 P112 P100 xPB5 P1B5 PxB5 AB13 Y4 P96 P101 yPC3 P1B6 PxB6 U12 Y5 P97 P102 yPC2 P1B7 PxB7 V12 W5 P98 P103 yPC1 P1C7 PxC0 AB17 W11 P108 P113 yPC0 P1C6 PxC1 AA17 Y11 P107 P112 yPA0 P1C5 PxC2 Y17 W10 P105 P111 yPA1 P1C4 PxC3 W17 Y10 P104 P110 yPA2 P1C3 PxC4 AB18 W9 P103 P107 yPA3 P1C2 PxC5 AA18 W8 P102 P106 xPB6 P1C1 PxC6 Y18 W6 P100 P105 xPB7 P1C0 PxC7 W18 Y6 P99 P104

84

eM_DEMO 模組

eM_DEMO 模組的電路配置圖如下

eM_USB 模組

數字型 LED

0 1 2 34 5 6 78 9 A BC D E F

燈號型 LED

44 鍵盤

ADC0 ADC1 DAC0 DAC1

LED 選擇KEY 選擇

其中

1eM_DEMO模組的基本功能包括 A將 xPAxPBxPC等 16個 IO訊號引出控制 LED和鍵盤電路 B將 ADDA訊號引出並放大成+-10V的工作範圍 2LED和鍵盤可以選擇三種模式由 LED和 KEY 兩組開關作選擇圖示如下

模式1

0123

模式2 模式3

0 1 2 34 5 6 78 9 A BC D E F

0123

3模式14鍵輸入並搭配 16點的 LED燈號顯示其中 16點 LED分別對映到 xPA[0~3]xPB[0~7]和 xPC[0~3] 4組按鍵分別對映到 xPC[0~3] 4模式24鍵輸入並搭配四個 7段式數字顯示其中 數字顯示由 xPA[0~3]作數字掃瞄而由 xPB[0~7]作 7段式 LED控制 4組按鍵 分別對映到 xPC[0~3] 5模式316鍵輸入並搭配四個 7段式數字顯示其中 數字顯示由 xPA[0~3]作數字掃瞄而由 xPB[0~7]作 7段式 LED控制 16組按鍵由 xPA[0~3]作鍵盤掃瞄而由 xPC[0~3]作鍵盤讀取 6根據VHDL與數位邏輯設計的章節其中 第 1章至 10章的實驗採用模式1而 第 11章實驗採用模式2而 第 12章之後的實驗都採用模式3

85

FPGA UCF 定義

eM_3S1K 模組

NET CLK LOC = B12

NET XAlt0gt LOC = N2

NET XAlt1gt LOC = T1

NET XAlt2gt LOC = T2

NET XAlt3gt LOC = U2

NET XBlt0gt LOC = M3

NET XBlt1gt LOC = M4

NET XBlt2gt LOC = W3

NET XBlt3gt LOC = W4

NET XBlt4gt LOC = Y3

NET XBlt5gt LOC = Y4

NET XBlt6gt LOC = W6

NET XBlt7gt LOC = Y6

NET XClt0gt LOC = V1

NET XClt1gt LOC = V2

NET XClt2gt LOC = W1

NET XClt3gt LOC = W2

NET YAlt0gt LOC = W10

JP4 接頭

NET YAlt1gt LOC = Y10

NET YAlt2gt LOC = W9

NET YAlt3gt LOC = W8

NET YBlt0gt LOC = U3

NET YBlt1gt LOC = T4

NET YBlt2gt LOC = N3

NET YBlt3gt LOC = N4

NET YBlt4gt LOC = T5

NET YBlt5gt LOC = U4

NET YBlt6gt LOC = V3

NET YBlt7gt LOC = V4

NET YClt0gt LOC = Y11

NET YClt1gt LOC = W11

NET YClt2gt LOC = W5

NET YClt3gt LOC = Y5

在光碟片中 RFFPGAVHDLDEMOBIT3S1K 裡有 VHDL 與數位邏輯設計書本範例原始檔與合成檔

86

eM_3S50 模組

NET CLK LOC = P124

NET XAlt0gt LOC = P59

NET XAlt1gt LOC = P60

NET XAlt2gt LOC = P63

NET XAlt3gt LOC = P68

NET XBlt0gt LOC = P135

NET XBlt1gt LOC = P132

NET XBlt2gt LOC = P116

NET XBlt3gt LOC = P113

NET XBlt4gt LOC = P112

NET XBlt5gt LOC = P96

NET XBlt6gt LOC = P100

NET XBlt7gt LOC = P99

NET XClt0gt LOC = P69

NET XClt1gt LOC = P70

NET XClt2gt LOC = P73

NET XClt3gt LOC = P74

NET YAlt0gt LOC = P105

JP4 接頭

NET YAlt1gt LOC = P104

NET YAlt2gt LOC = P103

NET YAlt3gt LOC = P102

NET YBlt0gt LOC = P127

NET YBlt1gt LOC = P129

NET YBlt2gt LOC = P131

NET YBlt3gt LOC = P130

NET YBlt4gt LOC = P128

NET YBlt5gt LOC = P125

NET YBlt6gt LOC = P119

NET YBlt7gt LOC = P118

NET YClt0gt LOC = P107

NET YClt1gt LOC = P108

NET YClt2gt LOC = P98

NET YClt3gt LOC = P97

在光碟片中 RFFPGAVHDLDEMOBIT3S200 裡有VHDL與數位邏輯設計書本範例原始檔與合成檔

87

eM_95XL 模組

NET CLK LOC = SPIN38

NET XAlt0gt LOC = SPIN53

NET XAlt1gt LOC = SPIN54

NET XAlt2gt LOC = SPIN56

NET XAlt3gt LOC = SPIN57

NET XBlt0gt LOC = SPIN85

NET XBlt1gt LOC = SPIN86

NET XBlt2gt LOC = SPIN97

NET XBlt3gt LOC = SPIN98

NET XBlt4gt LOC = SPIN100

NET XBlt5gt LOC = SPIN101

NET XBlt6gt LOC = SPIN105

NET XBlt7gt LOC = SPIN104

NET XClt0gt LOC = SPIN58

NET XClt1gt LOC = SPIN59

NET XClt2gt LOC = SPIN60

NET XClt3gt LOC = SPIN61

NET YAlt0gt LOC = SPIN111

JP4 接頭

NET YAlt1gt LOC = SPIN110

NET YAlt2gt LOC = SPIN107

NET YAlt3gt LOC = SPIN106

NET YBlt0gt LOC = SPIN93

NET YBlt1gt LOC = SPIN91

NET YBlt2gt LOC = SPIN87

NET YBlt3gt LOC = SPIN88

NET YBlt4gt LOC = SPIN92

NET YBlt5gt LOC = SPIN94

NET YBlt6gt LOC = SPIN95

NET YBlt7gt LOC = SPIN96

NET YClt0gt LOC = SPIN112

NET YClt1gt LOC = SPIN113

NET YClt2gt LOC = SPIN103

NET YClt3gt LOC = SPIN102

在光碟片中 RFFPGAVHDLDEMOSVF95288XL 裡有VHDL與數位邏輯設計書本範例原始檔與合成

檔案

88

eM_FPGA 模組

NET CLK LOC = E12

NET XAlt0gt LOC = AA3

NET XAlt1gt LOC = Y4

NET XAlt2gt LOC = AA4

NET XAlt3gt LOC = AB4

NET XBlt0gt LOC = M1

NET XBlt1gt LOC = M2

NET XBlt2gt LOC = W13

NET XBlt3gt LOC = Y13

NET XBlt4gt LOC = AA13

NET XBlt5gt LOC = AB13

NET XBlt6gt LOC = Y18

NET XBlt7gt LOC = W18

NET XClt0gt LOC = W5

NET XClt1gt LOC = Y5

NET XClt2gt LOC = AA5

NET XClt3gt LOC = AB5

NET YAlt0gt LOC = Y17

JP4 接頭

NET YAlt1gt LOC = W17

NET YAlt2gt LOC = AB18

NET YAlt3gt LOC = AA18

NET YBlt0gt LOC = N1

NET YBlt1gt LOC = M5

NET YBlt2gt LOC = M3

NET YBlt3gt LOC = M4

NET YBlt4gt LOC = M6

NET YBlt5gt LOC = N2

NET YBlt6gt LOC = U13

NET YBlt7gt LOC = V13

NET YClt0gt LOC = AA17

NET YClt1gt LOC = AB17

NET YClt2gt LOC = V12

NET YClt3gt LOC = U12

在光碟片中 RFFPGAVHDLDEMOBIT2V250 裡有VHDL與數位邏輯設計書本範例原始檔與合成檔

89

Page 84: RFFPGA 直流馬達實驗手冊juniortek.com.tw/program/manual/RF-DC-mal.pdf · em_demo模組 em_dcm 直流伺服馬達 dc電源 rffpga 系統的直流馬達實驗規劃 其中包括:

SDIN0 P2C1 ADC1 AB10 AA8 P86 P77 CS1 P2C2 ADC2 U10 AB9 P87 P78

SDIN1 P2C3 ADC3 U11 AA9 P89 P79 SCLK P2C4 ADC4 V11 AB10 P90 P80 CS2 P2C5 ADC5 W11 AA10 P92 P81

SDOUT P2C6 ADC6 Y11 AB11 P93 P82 LDAC P2C7 ADC7 AA11 AA11 P95 P83

eM_DEMO 電路配置

eMotion 舊版定義

piDSP 新版定義

XC2V250-FG456

XC3S1000-FG456

XC3S200 -TQ144

XC95144XL-TQ144

xPB0 P1A0 PxA0 M1 M3 P135 P85 xPB1 P1A1 PxA1 M2 M4 P132 P86 yPB2 P1A2 PxA2 M3 N3 P131 P87 yPB3 P1A3 PxA3 M4 N4 P130 P88 yPB1 P1A4 PxA4 M5 T4 P129 P91 yPB4 P1A5 PxA5 M6 T5 P128 P92 yPB0 P1A6 PxA6 N1 U3 P127 P93 yPB5 P1A7 PxA7 N2 U4 P125 P94 yPB6 P1B0 PxB0 U13 V3 P119 P95 yPB7 P1B1 PxB1 V13 V4 P118 P96 xPB2 P1B2 PxB2 W13 W3 P116 P97 xPB3 P1B3 PxB3 Y13 W4 P113 P98 xPB4 P1B4 PxB4 AA13 Y3 P112 P100 xPB5 P1B5 PxB5 AB13 Y4 P96 P101 yPC3 P1B6 PxB6 U12 Y5 P97 P102 yPC2 P1B7 PxB7 V12 W5 P98 P103 yPC1 P1C7 PxC0 AB17 W11 P108 P113 yPC0 P1C6 PxC1 AA17 Y11 P107 P112 yPA0 P1C5 PxC2 Y17 W10 P105 P111 yPA1 P1C4 PxC3 W17 Y10 P104 P110 yPA2 P1C3 PxC4 AB18 W9 P103 P107 yPA3 P1C2 PxC5 AA18 W8 P102 P106 xPB6 P1C1 PxC6 Y18 W6 P100 P105 xPB7 P1C0 PxC7 W18 Y6 P99 P104

84

eM_DEMO 模組

eM_DEMO 模組的電路配置圖如下

eM_USB 模組

數字型 LED

0 1 2 34 5 6 78 9 A BC D E F

燈號型 LED

44 鍵盤

ADC0 ADC1 DAC0 DAC1

LED 選擇KEY 選擇

其中

1eM_DEMO模組的基本功能包括 A將 xPAxPBxPC等 16個 IO訊號引出控制 LED和鍵盤電路 B將 ADDA訊號引出並放大成+-10V的工作範圍 2LED和鍵盤可以選擇三種模式由 LED和 KEY 兩組開關作選擇圖示如下

模式1

0123

模式2 模式3

0 1 2 34 5 6 78 9 A BC D E F

0123

3模式14鍵輸入並搭配 16點的 LED燈號顯示其中 16點 LED分別對映到 xPA[0~3]xPB[0~7]和 xPC[0~3] 4組按鍵分別對映到 xPC[0~3] 4模式24鍵輸入並搭配四個 7段式數字顯示其中 數字顯示由 xPA[0~3]作數字掃瞄而由 xPB[0~7]作 7段式 LED控制 4組按鍵 分別對映到 xPC[0~3] 5模式316鍵輸入並搭配四個 7段式數字顯示其中 數字顯示由 xPA[0~3]作數字掃瞄而由 xPB[0~7]作 7段式 LED控制 16組按鍵由 xPA[0~3]作鍵盤掃瞄而由 xPC[0~3]作鍵盤讀取 6根據VHDL與數位邏輯設計的章節其中 第 1章至 10章的實驗採用模式1而 第 11章實驗採用模式2而 第 12章之後的實驗都採用模式3

85

FPGA UCF 定義

eM_3S1K 模組

NET CLK LOC = B12

NET XAlt0gt LOC = N2

NET XAlt1gt LOC = T1

NET XAlt2gt LOC = T2

NET XAlt3gt LOC = U2

NET XBlt0gt LOC = M3

NET XBlt1gt LOC = M4

NET XBlt2gt LOC = W3

NET XBlt3gt LOC = W4

NET XBlt4gt LOC = Y3

NET XBlt5gt LOC = Y4

NET XBlt6gt LOC = W6

NET XBlt7gt LOC = Y6

NET XClt0gt LOC = V1

NET XClt1gt LOC = V2

NET XClt2gt LOC = W1

NET XClt3gt LOC = W2

NET YAlt0gt LOC = W10

JP4 接頭

NET YAlt1gt LOC = Y10

NET YAlt2gt LOC = W9

NET YAlt3gt LOC = W8

NET YBlt0gt LOC = U3

NET YBlt1gt LOC = T4

NET YBlt2gt LOC = N3

NET YBlt3gt LOC = N4

NET YBlt4gt LOC = T5

NET YBlt5gt LOC = U4

NET YBlt6gt LOC = V3

NET YBlt7gt LOC = V4

NET YClt0gt LOC = Y11

NET YClt1gt LOC = W11

NET YClt2gt LOC = W5

NET YClt3gt LOC = Y5

在光碟片中 RFFPGAVHDLDEMOBIT3S1K 裡有 VHDL 與數位邏輯設計書本範例原始檔與合成檔

86

eM_3S50 模組

NET CLK LOC = P124

NET XAlt0gt LOC = P59

NET XAlt1gt LOC = P60

NET XAlt2gt LOC = P63

NET XAlt3gt LOC = P68

NET XBlt0gt LOC = P135

NET XBlt1gt LOC = P132

NET XBlt2gt LOC = P116

NET XBlt3gt LOC = P113

NET XBlt4gt LOC = P112

NET XBlt5gt LOC = P96

NET XBlt6gt LOC = P100

NET XBlt7gt LOC = P99

NET XClt0gt LOC = P69

NET XClt1gt LOC = P70

NET XClt2gt LOC = P73

NET XClt3gt LOC = P74

NET YAlt0gt LOC = P105

JP4 接頭

NET YAlt1gt LOC = P104

NET YAlt2gt LOC = P103

NET YAlt3gt LOC = P102

NET YBlt0gt LOC = P127

NET YBlt1gt LOC = P129

NET YBlt2gt LOC = P131

NET YBlt3gt LOC = P130

NET YBlt4gt LOC = P128

NET YBlt5gt LOC = P125

NET YBlt6gt LOC = P119

NET YBlt7gt LOC = P118

NET YClt0gt LOC = P107

NET YClt1gt LOC = P108

NET YClt2gt LOC = P98

NET YClt3gt LOC = P97

在光碟片中 RFFPGAVHDLDEMOBIT3S200 裡有VHDL與數位邏輯設計書本範例原始檔與合成檔

87

eM_95XL 模組

NET CLK LOC = SPIN38

NET XAlt0gt LOC = SPIN53

NET XAlt1gt LOC = SPIN54

NET XAlt2gt LOC = SPIN56

NET XAlt3gt LOC = SPIN57

NET XBlt0gt LOC = SPIN85

NET XBlt1gt LOC = SPIN86

NET XBlt2gt LOC = SPIN97

NET XBlt3gt LOC = SPIN98

NET XBlt4gt LOC = SPIN100

NET XBlt5gt LOC = SPIN101

NET XBlt6gt LOC = SPIN105

NET XBlt7gt LOC = SPIN104

NET XClt0gt LOC = SPIN58

NET XClt1gt LOC = SPIN59

NET XClt2gt LOC = SPIN60

NET XClt3gt LOC = SPIN61

NET YAlt0gt LOC = SPIN111

JP4 接頭

NET YAlt1gt LOC = SPIN110

NET YAlt2gt LOC = SPIN107

NET YAlt3gt LOC = SPIN106

NET YBlt0gt LOC = SPIN93

NET YBlt1gt LOC = SPIN91

NET YBlt2gt LOC = SPIN87

NET YBlt3gt LOC = SPIN88

NET YBlt4gt LOC = SPIN92

NET YBlt5gt LOC = SPIN94

NET YBlt6gt LOC = SPIN95

NET YBlt7gt LOC = SPIN96

NET YClt0gt LOC = SPIN112

NET YClt1gt LOC = SPIN113

NET YClt2gt LOC = SPIN103

NET YClt3gt LOC = SPIN102

在光碟片中 RFFPGAVHDLDEMOSVF95288XL 裡有VHDL與數位邏輯設計書本範例原始檔與合成

檔案

88

eM_FPGA 模組

NET CLK LOC = E12

NET XAlt0gt LOC = AA3

NET XAlt1gt LOC = Y4

NET XAlt2gt LOC = AA4

NET XAlt3gt LOC = AB4

NET XBlt0gt LOC = M1

NET XBlt1gt LOC = M2

NET XBlt2gt LOC = W13

NET XBlt3gt LOC = Y13

NET XBlt4gt LOC = AA13

NET XBlt5gt LOC = AB13

NET XBlt6gt LOC = Y18

NET XBlt7gt LOC = W18

NET XClt0gt LOC = W5

NET XClt1gt LOC = Y5

NET XClt2gt LOC = AA5

NET XClt3gt LOC = AB5

NET YAlt0gt LOC = Y17

JP4 接頭

NET YAlt1gt LOC = W17

NET YAlt2gt LOC = AB18

NET YAlt3gt LOC = AA18

NET YBlt0gt LOC = N1

NET YBlt1gt LOC = M5

NET YBlt2gt LOC = M3

NET YBlt3gt LOC = M4

NET YBlt4gt LOC = M6

NET YBlt5gt LOC = N2

NET YBlt6gt LOC = U13

NET YBlt7gt LOC = V13

NET YClt0gt LOC = AA17

NET YClt1gt LOC = AB17

NET YClt2gt LOC = V12

NET YClt3gt LOC = U12

在光碟片中 RFFPGAVHDLDEMOBIT2V250 裡有VHDL與數位邏輯設計書本範例原始檔與合成檔

89

Page 85: RFFPGA 直流馬達實驗手冊juniortek.com.tw/program/manual/RF-DC-mal.pdf · em_demo模組 em_dcm 直流伺服馬達 dc電源 rffpga 系統的直流馬達實驗規劃 其中包括:

eM_DEMO 模組

eM_DEMO 模組的電路配置圖如下

eM_USB 模組

數字型 LED

0 1 2 34 5 6 78 9 A BC D E F

燈號型 LED

44 鍵盤

ADC0 ADC1 DAC0 DAC1

LED 選擇KEY 選擇

其中

1eM_DEMO模組的基本功能包括 A將 xPAxPBxPC等 16個 IO訊號引出控制 LED和鍵盤電路 B將 ADDA訊號引出並放大成+-10V的工作範圍 2LED和鍵盤可以選擇三種模式由 LED和 KEY 兩組開關作選擇圖示如下

模式1

0123

模式2 模式3

0 1 2 34 5 6 78 9 A BC D E F

0123

3模式14鍵輸入並搭配 16點的 LED燈號顯示其中 16點 LED分別對映到 xPA[0~3]xPB[0~7]和 xPC[0~3] 4組按鍵分別對映到 xPC[0~3] 4模式24鍵輸入並搭配四個 7段式數字顯示其中 數字顯示由 xPA[0~3]作數字掃瞄而由 xPB[0~7]作 7段式 LED控制 4組按鍵 分別對映到 xPC[0~3] 5模式316鍵輸入並搭配四個 7段式數字顯示其中 數字顯示由 xPA[0~3]作數字掃瞄而由 xPB[0~7]作 7段式 LED控制 16組按鍵由 xPA[0~3]作鍵盤掃瞄而由 xPC[0~3]作鍵盤讀取 6根據VHDL與數位邏輯設計的章節其中 第 1章至 10章的實驗採用模式1而 第 11章實驗採用模式2而 第 12章之後的實驗都採用模式3

85

FPGA UCF 定義

eM_3S1K 模組

NET CLK LOC = B12

NET XAlt0gt LOC = N2

NET XAlt1gt LOC = T1

NET XAlt2gt LOC = T2

NET XAlt3gt LOC = U2

NET XBlt0gt LOC = M3

NET XBlt1gt LOC = M4

NET XBlt2gt LOC = W3

NET XBlt3gt LOC = W4

NET XBlt4gt LOC = Y3

NET XBlt5gt LOC = Y4

NET XBlt6gt LOC = W6

NET XBlt7gt LOC = Y6

NET XClt0gt LOC = V1

NET XClt1gt LOC = V2

NET XClt2gt LOC = W1

NET XClt3gt LOC = W2

NET YAlt0gt LOC = W10

JP4 接頭

NET YAlt1gt LOC = Y10

NET YAlt2gt LOC = W9

NET YAlt3gt LOC = W8

NET YBlt0gt LOC = U3

NET YBlt1gt LOC = T4

NET YBlt2gt LOC = N3

NET YBlt3gt LOC = N4

NET YBlt4gt LOC = T5

NET YBlt5gt LOC = U4

NET YBlt6gt LOC = V3

NET YBlt7gt LOC = V4

NET YClt0gt LOC = Y11

NET YClt1gt LOC = W11

NET YClt2gt LOC = W5

NET YClt3gt LOC = Y5

在光碟片中 RFFPGAVHDLDEMOBIT3S1K 裡有 VHDL 與數位邏輯設計書本範例原始檔與合成檔

86

eM_3S50 模組

NET CLK LOC = P124

NET XAlt0gt LOC = P59

NET XAlt1gt LOC = P60

NET XAlt2gt LOC = P63

NET XAlt3gt LOC = P68

NET XBlt0gt LOC = P135

NET XBlt1gt LOC = P132

NET XBlt2gt LOC = P116

NET XBlt3gt LOC = P113

NET XBlt4gt LOC = P112

NET XBlt5gt LOC = P96

NET XBlt6gt LOC = P100

NET XBlt7gt LOC = P99

NET XClt0gt LOC = P69

NET XClt1gt LOC = P70

NET XClt2gt LOC = P73

NET XClt3gt LOC = P74

NET YAlt0gt LOC = P105

JP4 接頭

NET YAlt1gt LOC = P104

NET YAlt2gt LOC = P103

NET YAlt3gt LOC = P102

NET YBlt0gt LOC = P127

NET YBlt1gt LOC = P129

NET YBlt2gt LOC = P131

NET YBlt3gt LOC = P130

NET YBlt4gt LOC = P128

NET YBlt5gt LOC = P125

NET YBlt6gt LOC = P119

NET YBlt7gt LOC = P118

NET YClt0gt LOC = P107

NET YClt1gt LOC = P108

NET YClt2gt LOC = P98

NET YClt3gt LOC = P97

在光碟片中 RFFPGAVHDLDEMOBIT3S200 裡有VHDL與數位邏輯設計書本範例原始檔與合成檔

87

eM_95XL 模組

NET CLK LOC = SPIN38

NET XAlt0gt LOC = SPIN53

NET XAlt1gt LOC = SPIN54

NET XAlt2gt LOC = SPIN56

NET XAlt3gt LOC = SPIN57

NET XBlt0gt LOC = SPIN85

NET XBlt1gt LOC = SPIN86

NET XBlt2gt LOC = SPIN97

NET XBlt3gt LOC = SPIN98

NET XBlt4gt LOC = SPIN100

NET XBlt5gt LOC = SPIN101

NET XBlt6gt LOC = SPIN105

NET XBlt7gt LOC = SPIN104

NET XClt0gt LOC = SPIN58

NET XClt1gt LOC = SPIN59

NET XClt2gt LOC = SPIN60

NET XClt3gt LOC = SPIN61

NET YAlt0gt LOC = SPIN111

JP4 接頭

NET YAlt1gt LOC = SPIN110

NET YAlt2gt LOC = SPIN107

NET YAlt3gt LOC = SPIN106

NET YBlt0gt LOC = SPIN93

NET YBlt1gt LOC = SPIN91

NET YBlt2gt LOC = SPIN87

NET YBlt3gt LOC = SPIN88

NET YBlt4gt LOC = SPIN92

NET YBlt5gt LOC = SPIN94

NET YBlt6gt LOC = SPIN95

NET YBlt7gt LOC = SPIN96

NET YClt0gt LOC = SPIN112

NET YClt1gt LOC = SPIN113

NET YClt2gt LOC = SPIN103

NET YClt3gt LOC = SPIN102

在光碟片中 RFFPGAVHDLDEMOSVF95288XL 裡有VHDL與數位邏輯設計書本範例原始檔與合成

檔案

88

eM_FPGA 模組

NET CLK LOC = E12

NET XAlt0gt LOC = AA3

NET XAlt1gt LOC = Y4

NET XAlt2gt LOC = AA4

NET XAlt3gt LOC = AB4

NET XBlt0gt LOC = M1

NET XBlt1gt LOC = M2

NET XBlt2gt LOC = W13

NET XBlt3gt LOC = Y13

NET XBlt4gt LOC = AA13

NET XBlt5gt LOC = AB13

NET XBlt6gt LOC = Y18

NET XBlt7gt LOC = W18

NET XClt0gt LOC = W5

NET XClt1gt LOC = Y5

NET XClt2gt LOC = AA5

NET XClt3gt LOC = AB5

NET YAlt0gt LOC = Y17

JP4 接頭

NET YAlt1gt LOC = W17

NET YAlt2gt LOC = AB18

NET YAlt3gt LOC = AA18

NET YBlt0gt LOC = N1

NET YBlt1gt LOC = M5

NET YBlt2gt LOC = M3

NET YBlt3gt LOC = M4

NET YBlt4gt LOC = M6

NET YBlt5gt LOC = N2

NET YBlt6gt LOC = U13

NET YBlt7gt LOC = V13

NET YClt0gt LOC = AA17

NET YClt1gt LOC = AB17

NET YClt2gt LOC = V12

NET YClt3gt LOC = U12

在光碟片中 RFFPGAVHDLDEMOBIT2V250 裡有VHDL與數位邏輯設計書本範例原始檔與合成檔

89

Page 86: RFFPGA 直流馬達實驗手冊juniortek.com.tw/program/manual/RF-DC-mal.pdf · em_demo模組 em_dcm 直流伺服馬達 dc電源 rffpga 系統的直流馬達實驗規劃 其中包括:

FPGA UCF 定義

eM_3S1K 模組

NET CLK LOC = B12

NET XAlt0gt LOC = N2

NET XAlt1gt LOC = T1

NET XAlt2gt LOC = T2

NET XAlt3gt LOC = U2

NET XBlt0gt LOC = M3

NET XBlt1gt LOC = M4

NET XBlt2gt LOC = W3

NET XBlt3gt LOC = W4

NET XBlt4gt LOC = Y3

NET XBlt5gt LOC = Y4

NET XBlt6gt LOC = W6

NET XBlt7gt LOC = Y6

NET XClt0gt LOC = V1

NET XClt1gt LOC = V2

NET XClt2gt LOC = W1

NET XClt3gt LOC = W2

NET YAlt0gt LOC = W10

JP4 接頭

NET YAlt1gt LOC = Y10

NET YAlt2gt LOC = W9

NET YAlt3gt LOC = W8

NET YBlt0gt LOC = U3

NET YBlt1gt LOC = T4

NET YBlt2gt LOC = N3

NET YBlt3gt LOC = N4

NET YBlt4gt LOC = T5

NET YBlt5gt LOC = U4

NET YBlt6gt LOC = V3

NET YBlt7gt LOC = V4

NET YClt0gt LOC = Y11

NET YClt1gt LOC = W11

NET YClt2gt LOC = W5

NET YClt3gt LOC = Y5

在光碟片中 RFFPGAVHDLDEMOBIT3S1K 裡有 VHDL 與數位邏輯設計書本範例原始檔與合成檔

86

eM_3S50 模組

NET CLK LOC = P124

NET XAlt0gt LOC = P59

NET XAlt1gt LOC = P60

NET XAlt2gt LOC = P63

NET XAlt3gt LOC = P68

NET XBlt0gt LOC = P135

NET XBlt1gt LOC = P132

NET XBlt2gt LOC = P116

NET XBlt3gt LOC = P113

NET XBlt4gt LOC = P112

NET XBlt5gt LOC = P96

NET XBlt6gt LOC = P100

NET XBlt7gt LOC = P99

NET XClt0gt LOC = P69

NET XClt1gt LOC = P70

NET XClt2gt LOC = P73

NET XClt3gt LOC = P74

NET YAlt0gt LOC = P105

JP4 接頭

NET YAlt1gt LOC = P104

NET YAlt2gt LOC = P103

NET YAlt3gt LOC = P102

NET YBlt0gt LOC = P127

NET YBlt1gt LOC = P129

NET YBlt2gt LOC = P131

NET YBlt3gt LOC = P130

NET YBlt4gt LOC = P128

NET YBlt5gt LOC = P125

NET YBlt6gt LOC = P119

NET YBlt7gt LOC = P118

NET YClt0gt LOC = P107

NET YClt1gt LOC = P108

NET YClt2gt LOC = P98

NET YClt3gt LOC = P97

在光碟片中 RFFPGAVHDLDEMOBIT3S200 裡有VHDL與數位邏輯設計書本範例原始檔與合成檔

87

eM_95XL 模組

NET CLK LOC = SPIN38

NET XAlt0gt LOC = SPIN53

NET XAlt1gt LOC = SPIN54

NET XAlt2gt LOC = SPIN56

NET XAlt3gt LOC = SPIN57

NET XBlt0gt LOC = SPIN85

NET XBlt1gt LOC = SPIN86

NET XBlt2gt LOC = SPIN97

NET XBlt3gt LOC = SPIN98

NET XBlt4gt LOC = SPIN100

NET XBlt5gt LOC = SPIN101

NET XBlt6gt LOC = SPIN105

NET XBlt7gt LOC = SPIN104

NET XClt0gt LOC = SPIN58

NET XClt1gt LOC = SPIN59

NET XClt2gt LOC = SPIN60

NET XClt3gt LOC = SPIN61

NET YAlt0gt LOC = SPIN111

JP4 接頭

NET YAlt1gt LOC = SPIN110

NET YAlt2gt LOC = SPIN107

NET YAlt3gt LOC = SPIN106

NET YBlt0gt LOC = SPIN93

NET YBlt1gt LOC = SPIN91

NET YBlt2gt LOC = SPIN87

NET YBlt3gt LOC = SPIN88

NET YBlt4gt LOC = SPIN92

NET YBlt5gt LOC = SPIN94

NET YBlt6gt LOC = SPIN95

NET YBlt7gt LOC = SPIN96

NET YClt0gt LOC = SPIN112

NET YClt1gt LOC = SPIN113

NET YClt2gt LOC = SPIN103

NET YClt3gt LOC = SPIN102

在光碟片中 RFFPGAVHDLDEMOSVF95288XL 裡有VHDL與數位邏輯設計書本範例原始檔與合成

檔案

88

eM_FPGA 模組

NET CLK LOC = E12

NET XAlt0gt LOC = AA3

NET XAlt1gt LOC = Y4

NET XAlt2gt LOC = AA4

NET XAlt3gt LOC = AB4

NET XBlt0gt LOC = M1

NET XBlt1gt LOC = M2

NET XBlt2gt LOC = W13

NET XBlt3gt LOC = Y13

NET XBlt4gt LOC = AA13

NET XBlt5gt LOC = AB13

NET XBlt6gt LOC = Y18

NET XBlt7gt LOC = W18

NET XClt0gt LOC = W5

NET XClt1gt LOC = Y5

NET XClt2gt LOC = AA5

NET XClt3gt LOC = AB5

NET YAlt0gt LOC = Y17

JP4 接頭

NET YAlt1gt LOC = W17

NET YAlt2gt LOC = AB18

NET YAlt3gt LOC = AA18

NET YBlt0gt LOC = N1

NET YBlt1gt LOC = M5

NET YBlt2gt LOC = M3

NET YBlt3gt LOC = M4

NET YBlt4gt LOC = M6

NET YBlt5gt LOC = N2

NET YBlt6gt LOC = U13

NET YBlt7gt LOC = V13

NET YClt0gt LOC = AA17

NET YClt1gt LOC = AB17

NET YClt2gt LOC = V12

NET YClt3gt LOC = U12

在光碟片中 RFFPGAVHDLDEMOBIT2V250 裡有VHDL與數位邏輯設計書本範例原始檔與合成檔

89

Page 87: RFFPGA 直流馬達實驗手冊juniortek.com.tw/program/manual/RF-DC-mal.pdf · em_demo模組 em_dcm 直流伺服馬達 dc電源 rffpga 系統的直流馬達實驗規劃 其中包括:

eM_3S50 模組

NET CLK LOC = P124

NET XAlt0gt LOC = P59

NET XAlt1gt LOC = P60

NET XAlt2gt LOC = P63

NET XAlt3gt LOC = P68

NET XBlt0gt LOC = P135

NET XBlt1gt LOC = P132

NET XBlt2gt LOC = P116

NET XBlt3gt LOC = P113

NET XBlt4gt LOC = P112

NET XBlt5gt LOC = P96

NET XBlt6gt LOC = P100

NET XBlt7gt LOC = P99

NET XClt0gt LOC = P69

NET XClt1gt LOC = P70

NET XClt2gt LOC = P73

NET XClt3gt LOC = P74

NET YAlt0gt LOC = P105

JP4 接頭

NET YAlt1gt LOC = P104

NET YAlt2gt LOC = P103

NET YAlt3gt LOC = P102

NET YBlt0gt LOC = P127

NET YBlt1gt LOC = P129

NET YBlt2gt LOC = P131

NET YBlt3gt LOC = P130

NET YBlt4gt LOC = P128

NET YBlt5gt LOC = P125

NET YBlt6gt LOC = P119

NET YBlt7gt LOC = P118

NET YClt0gt LOC = P107

NET YClt1gt LOC = P108

NET YClt2gt LOC = P98

NET YClt3gt LOC = P97

在光碟片中 RFFPGAVHDLDEMOBIT3S200 裡有VHDL與數位邏輯設計書本範例原始檔與合成檔

87

eM_95XL 模組

NET CLK LOC = SPIN38

NET XAlt0gt LOC = SPIN53

NET XAlt1gt LOC = SPIN54

NET XAlt2gt LOC = SPIN56

NET XAlt3gt LOC = SPIN57

NET XBlt0gt LOC = SPIN85

NET XBlt1gt LOC = SPIN86

NET XBlt2gt LOC = SPIN97

NET XBlt3gt LOC = SPIN98

NET XBlt4gt LOC = SPIN100

NET XBlt5gt LOC = SPIN101

NET XBlt6gt LOC = SPIN105

NET XBlt7gt LOC = SPIN104

NET XClt0gt LOC = SPIN58

NET XClt1gt LOC = SPIN59

NET XClt2gt LOC = SPIN60

NET XClt3gt LOC = SPIN61

NET YAlt0gt LOC = SPIN111

JP4 接頭

NET YAlt1gt LOC = SPIN110

NET YAlt2gt LOC = SPIN107

NET YAlt3gt LOC = SPIN106

NET YBlt0gt LOC = SPIN93

NET YBlt1gt LOC = SPIN91

NET YBlt2gt LOC = SPIN87

NET YBlt3gt LOC = SPIN88

NET YBlt4gt LOC = SPIN92

NET YBlt5gt LOC = SPIN94

NET YBlt6gt LOC = SPIN95

NET YBlt7gt LOC = SPIN96

NET YClt0gt LOC = SPIN112

NET YClt1gt LOC = SPIN113

NET YClt2gt LOC = SPIN103

NET YClt3gt LOC = SPIN102

在光碟片中 RFFPGAVHDLDEMOSVF95288XL 裡有VHDL與數位邏輯設計書本範例原始檔與合成

檔案

88

eM_FPGA 模組

NET CLK LOC = E12

NET XAlt0gt LOC = AA3

NET XAlt1gt LOC = Y4

NET XAlt2gt LOC = AA4

NET XAlt3gt LOC = AB4

NET XBlt0gt LOC = M1

NET XBlt1gt LOC = M2

NET XBlt2gt LOC = W13

NET XBlt3gt LOC = Y13

NET XBlt4gt LOC = AA13

NET XBlt5gt LOC = AB13

NET XBlt6gt LOC = Y18

NET XBlt7gt LOC = W18

NET XClt0gt LOC = W5

NET XClt1gt LOC = Y5

NET XClt2gt LOC = AA5

NET XClt3gt LOC = AB5

NET YAlt0gt LOC = Y17

JP4 接頭

NET YAlt1gt LOC = W17

NET YAlt2gt LOC = AB18

NET YAlt3gt LOC = AA18

NET YBlt0gt LOC = N1

NET YBlt1gt LOC = M5

NET YBlt2gt LOC = M3

NET YBlt3gt LOC = M4

NET YBlt4gt LOC = M6

NET YBlt5gt LOC = N2

NET YBlt6gt LOC = U13

NET YBlt7gt LOC = V13

NET YClt0gt LOC = AA17

NET YClt1gt LOC = AB17

NET YClt2gt LOC = V12

NET YClt3gt LOC = U12

在光碟片中 RFFPGAVHDLDEMOBIT2V250 裡有VHDL與數位邏輯設計書本範例原始檔與合成檔

89

Page 88: RFFPGA 直流馬達實驗手冊juniortek.com.tw/program/manual/RF-DC-mal.pdf · em_demo模組 em_dcm 直流伺服馬達 dc電源 rffpga 系統的直流馬達實驗規劃 其中包括:

eM_95XL 模組

NET CLK LOC = SPIN38

NET XAlt0gt LOC = SPIN53

NET XAlt1gt LOC = SPIN54

NET XAlt2gt LOC = SPIN56

NET XAlt3gt LOC = SPIN57

NET XBlt0gt LOC = SPIN85

NET XBlt1gt LOC = SPIN86

NET XBlt2gt LOC = SPIN97

NET XBlt3gt LOC = SPIN98

NET XBlt4gt LOC = SPIN100

NET XBlt5gt LOC = SPIN101

NET XBlt6gt LOC = SPIN105

NET XBlt7gt LOC = SPIN104

NET XClt0gt LOC = SPIN58

NET XClt1gt LOC = SPIN59

NET XClt2gt LOC = SPIN60

NET XClt3gt LOC = SPIN61

NET YAlt0gt LOC = SPIN111

JP4 接頭

NET YAlt1gt LOC = SPIN110

NET YAlt2gt LOC = SPIN107

NET YAlt3gt LOC = SPIN106

NET YBlt0gt LOC = SPIN93

NET YBlt1gt LOC = SPIN91

NET YBlt2gt LOC = SPIN87

NET YBlt3gt LOC = SPIN88

NET YBlt4gt LOC = SPIN92

NET YBlt5gt LOC = SPIN94

NET YBlt6gt LOC = SPIN95

NET YBlt7gt LOC = SPIN96

NET YClt0gt LOC = SPIN112

NET YClt1gt LOC = SPIN113

NET YClt2gt LOC = SPIN103

NET YClt3gt LOC = SPIN102

在光碟片中 RFFPGAVHDLDEMOSVF95288XL 裡有VHDL與數位邏輯設計書本範例原始檔與合成

檔案

88

eM_FPGA 模組

NET CLK LOC = E12

NET XAlt0gt LOC = AA3

NET XAlt1gt LOC = Y4

NET XAlt2gt LOC = AA4

NET XAlt3gt LOC = AB4

NET XBlt0gt LOC = M1

NET XBlt1gt LOC = M2

NET XBlt2gt LOC = W13

NET XBlt3gt LOC = Y13

NET XBlt4gt LOC = AA13

NET XBlt5gt LOC = AB13

NET XBlt6gt LOC = Y18

NET XBlt7gt LOC = W18

NET XClt0gt LOC = W5

NET XClt1gt LOC = Y5

NET XClt2gt LOC = AA5

NET XClt3gt LOC = AB5

NET YAlt0gt LOC = Y17

JP4 接頭

NET YAlt1gt LOC = W17

NET YAlt2gt LOC = AB18

NET YAlt3gt LOC = AA18

NET YBlt0gt LOC = N1

NET YBlt1gt LOC = M5

NET YBlt2gt LOC = M3

NET YBlt3gt LOC = M4

NET YBlt4gt LOC = M6

NET YBlt5gt LOC = N2

NET YBlt6gt LOC = U13

NET YBlt7gt LOC = V13

NET YClt0gt LOC = AA17

NET YClt1gt LOC = AB17

NET YClt2gt LOC = V12

NET YClt3gt LOC = U12

在光碟片中 RFFPGAVHDLDEMOBIT2V250 裡有VHDL與數位邏輯設計書本範例原始檔與合成檔

89

Page 89: RFFPGA 直流馬達實驗手冊juniortek.com.tw/program/manual/RF-DC-mal.pdf · em_demo模組 em_dcm 直流伺服馬達 dc電源 rffpga 系統的直流馬達實驗規劃 其中包括:

eM_FPGA 模組

NET CLK LOC = E12

NET XAlt0gt LOC = AA3

NET XAlt1gt LOC = Y4

NET XAlt2gt LOC = AA4

NET XAlt3gt LOC = AB4

NET XBlt0gt LOC = M1

NET XBlt1gt LOC = M2

NET XBlt2gt LOC = W13

NET XBlt3gt LOC = Y13

NET XBlt4gt LOC = AA13

NET XBlt5gt LOC = AB13

NET XBlt6gt LOC = Y18

NET XBlt7gt LOC = W18

NET XClt0gt LOC = W5

NET XClt1gt LOC = Y5

NET XClt2gt LOC = AA5

NET XClt3gt LOC = AB5

NET YAlt0gt LOC = Y17

JP4 接頭

NET YAlt1gt LOC = W17

NET YAlt2gt LOC = AB18

NET YAlt3gt LOC = AA18

NET YBlt0gt LOC = N1

NET YBlt1gt LOC = M5

NET YBlt2gt LOC = M3

NET YBlt3gt LOC = M4

NET YBlt4gt LOC = M6

NET YBlt5gt LOC = N2

NET YBlt6gt LOC = U13

NET YBlt7gt LOC = V13

NET YClt0gt LOC = AA17

NET YClt1gt LOC = AB17

NET YClt2gt LOC = V12

NET YClt3gt LOC = U12

在光碟片中 RFFPGAVHDLDEMOBIT2V250 裡有VHDL與數位邏輯設計書本範例原始檔與合成檔

89