FPGA中的DSP核心设计课件_第1页
FPGA中的DSP核心设计课件_第2页
FPGA中的DSP核心设计课件_第3页
FPGA中的DSP核心设计课件_第4页
FPGA中的DSP核心设计课件_第5页
已阅读5页,还剩51页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

FPGA中的DSP核心設計FPGA中的DSP核心設計FPGA中的DSP核心設計

應用系統規劃FPGA設計基礎DSP核心設計實驗應用示範2FPGA中的DSP核心設計應用系統規劃2SOC技術演進

3SOC技術演進3SOC技術應用

4SOC技術應用4SOC(System-On-Chip)開發平台

5SOC(System-On-Chip)開發平台5硬體設計

應用系統規劃DSP核心設計微控碼設計CPU界面設計I/O界面設計6硬體設計應用系統規劃6軟體設計

組合語言基礎組合語言結構組合語言定義模組程式設計系統程式設計7軟體設計組合語言基礎7內藏式PC控制器

ZF-Linux公司的MachZ(ZFX86)

1.100MHz的586CPU,耗電0.5W。2.現成的BIOS碼和參數設定工具。3.外加元件極少。4.研發過程中可利用RS-232、USB及Ethernet界面連接。5.模組中併入FPGA和ADC/DAC。6.全部電路板尺寸約10cm*20cm。7.程式和資料儲存在8MB的單晶硬碟(Disk-On-Chip,簡稱DOC)中。8內藏式PC控制器ZF-Linux公司的MachZ(ZFXFPGA電路

Xilinx公司Virtex-II系列的XC2V250:1.閘數(GateCount)為250K,內部電源為1.5V,可允許420MHz的脈波頻率。2.邏輯閘單位為CLB,每個CLB包含四組Slice,每個Slice中都有一組D型正反器和4位元可程式邏輯。3.XC2V250中有24*16個CLB,相當於1536個Slice。4.擁有獨立的雙阜RAM,容量為18Kbit或是2Kbyte。XC2V250中共有24個雙阜RAM,容量共48KB。5.擁有硬體乘法器,為18*18=36的整數乘法器。XC2V250中共有24個硬體乘法器。6.XC2V250中最多可同時擁有16組的公用Clock,具備硬體連線。7.就繞線能力極佳,幾乎不會繞線失敗。8.擁有200個I/O點,每個I/O點都可規劃成不同型式的邏輯準位。

Xilinx公司Spartan系列的XCS05XL:1.閘數(GateCount)為5K,內部電源為3.3V,可允許80MHz的脈波頻率。2.邏輯閘的單位為CLB,每個CLB包含兩組D型暫存器和4位元的可程式邏輯。3.XCS05中有10*10個CLB,相當於200組暫存器。4.最多可同時擁有4組的公用Clock,具備硬體連線。5.擁有72個I/O點,每個I/O點都可規劃成3.3V的LVTTL邏輯準位。

9FPGA電路Xilinx公司Virtex-II系列的XC2內藏式DSP核心1.不參考任何現成的設計。2.組合語言規劃以簡單、易讀為目標。3.DSP必須搭配586CPU,以即時控制為主。4.DSP和586CPU以雙阜記憶體連接。5.目標是執行32KHz的即時控制程式。

功能上

1.就586CPU而言,記憶體佔用ISA-bus的8KB位址,總共48KB的雙阜記憶體規劃成24頁。2.就DSP而言,雙阜記憶體規劃成資料區、程式區、微碼區和堆疊區四個部分,除了微碼區為32-bit外,其他部分都是16-bit(1-word)寬度。3.不論是DSP或586CPU都不准直接控制I/O界面。所有I/O界面都以DMA方式和記憶體連接。4.外部擴接電路(包括ADC、DAC和另一顆FPGA)都是由I/O控制器透過串列界面連接。10內藏式DSP核心1.不參考任何現成的設計。10eMotion控制器配置包括:ZFX86:586CPUEtherNet:網路以PCI-bus連接CPUDOC:8MB單晶硬碟。BIOS:256KB的容量。RAM插槽:插上64MB的RAM卡DSP插槽:插上內含DSP核心的eM_FPGA卡ADDA插槽:插上包括ADC/DAC的eM_ADDA卡ext擴張座:3組50P的插座,可作為彈性擴張用,以處理不同的專題實驗。實驗接頭:2組26P的插座,可連接兩組的實驗模組,通常一組固定為LCD面板。11eMotion控制器配置包括:11軟體開發環境e控制器:提供硬體控制和軟體管理等控制功能。

近端PC:提供軟硬體開發過程中的開發工具和作業環境。

遠端PC:提供教學和產業應用時的遠端監控功能。12軟體開發環境e控制器:提供硬體控制和軟體管理等控制功能。

視窗操作環境執行上採用Linux系統操作上採用視窗作業環境開機程序:

1.DOC檔案解壓縮並下載到RAM中2.檔案的讀寫或管理都在RAM中3.DOC儲存的檔案都是唯讀檔案4.使用者程式儲存在PC端的硬碟5.PC端在視窗環境直接處理檔案6.光碟和印表機在視窗下處理13視窗操作環境執行上採用Linux系統13程式開發環境項目說明C程式開發(e控器部分)1.直接在視窗中編輯程式碼2.在終端機中下達編譯指令3.在終端機中執行下載指令DSP程式開發(e控器部分)1.直接在視窗中編輯程式碼2.在終端機中下達編譯指令3.在終端機中下載並執行VHDL程式開發(e控器部分)1.直接在視窗中編輯程式碼2.直接在視窗中下達編譯指令3.在終端機中下載並執行C程式開發(PC端部分)所有程序都可在視窗環境處理JAVA程式開發所有程序都可在視窗環境處理Matlab開發所有程序都可在視窗環境處理Simulink開發所有程序都可在視窗環境處理應用程式執行所有程序都可在視窗環境處理14程式開發環境項目說明C程式開發1.即時控制環境DSP核心部分負責即時控制程式,抽樣控制頻率可高達32KHz,完全不受Linux作業系統干擾。Linux作業系統下的586CPU,掌管主控程式和TCP/IP通訊程式,只能執行100Hz左右的抽樣控制。所謂100Hz左右,是指基本頻率是100Hz,但是多少會受到其他程式負載所影響,不能完全保證。586CPU和DSP透過雙阜記憶體共享所有的參數和變數。ISA-bus的傳訊速度限制可忽略不計。PC端應用程式可執行人機圖控和TCP/IP通訊界面,執行遠距操作的功能。PC端和586CPU之間透過網路做連線。EtherNet在輕負荷下可執行100Hz的資料傳輸(200-byte左右)若是透過網際網路做遠距連線,則只能傳遞資料而不能保證傳訊速度了。15即時控制環境DSP核心部分負責即時控制程式,抽樣控制頻率可四軸CNC控制器PC端負責操作界面和遠端監控eMotion控制器負責CNC的整個控制動作,即時控制負載由586CPU和DSP核心來分擔。eMotion控制器直接整合在功率驅動級中,形成單一模組的內藏式CNC控制器。可連接工業級PC做標準型的CNC控制器,也可連接簡單的LCD面板做簡易操作型的CNC控制器。16四軸CNC控制器PC端負責操作界面和遠端監控16電動機控制實驗PC端負責Simulink的操作和監控eMotion控制器負責單軸或多軸伺服控制動作586CPU只負責網路資料的傳遞,所有控制都以模組方式架構在DSP核心中。變頻器模式實驗(開環路電壓控制)步進馬達模式實驗(閉環路電流控制)直流馬達模式實驗(閉環路扭力控制)速度控制模式實驗位置控制模式實驗加減速控制與前置補償電流過載與PID補償效應

17電動機控制實驗PC端負責Simulink的操作和監控17FPGA電路基本結構CLB:可程式邏輯單元,行成N*N的電路矩陣IOB:可程式輸入輸出阜,做為外部接腳和連線18FPGA電路基本結構18CLB結構說明包含三組查表結構的模組G-LUT:4點輸入的可程式邏輯閘(16*1的RAM查表結構);F-LUT:4點輸入的可程式邏輯閘(16*1的RAM查表結構);H-LUT:3點輸入的可程式邏輯閘(8*1的RAM查表結構);

19CLB結構說明包含三組查表結構的模組19D型暫存器架構

一個標準的D型暫存器,由CK來控制,可選擇上緣觸發或是下緣觸發。由EC做同步結構下的時鐘控制(D端控制型式),當不需要EC時,EC端就由VCC所取代(固定ON)。SR訊號可由設定(SD)功能或復歸(RD)功能中做二選一,但兩者不能同時存在。一旦選擇了SR功能,開機時產生的GSR(GlobalSet/Rest)訊號就可以自動的執行所有D型暫存器的設定或復歸工作。當SR訊號由GND取代時,D型暫存器就取消了由外界設定和復歸的功能,但是開機的GSR訊號還是可以做設定或復歸的動作。process(K)--順序邏輯開始ifSR='1'then--SR做復歸控制Q<='0';--復歸為0elsifCK'eventandCK='0'then--CK做下緣觸發ifEC='1'then--EC做時鐘控制Q<=D;--D型暫存器endif;endif;endprocess;--順序邏輯結束20D型暫存器架構

一個標準的D型暫存器,由CK來控制,可選擇上IOB結構說明每一個IOB都可以同時做輸入和輸出界面。當將IOB作為輸出控制時:由T來控制三態輸出,可以自由選擇T=0時作動或是T=1時作動。所有的IO接點可以統一的用一個GTS(GlobalTri-State)訊號來控制三態狀況,當有緊急狀況發生時,可以瞬間的將所有接腳變成浮接狀態。輸出到接腳的O訊號,可以選擇正向或反向,也可以選擇直接輸出或是經同步處理(D型暫存器)後統一輸出。輸出浮接時,還可選擇Pull-Up或Pull-Down電阻做開集極控制。

當將IOB作為輸入控制時:

可選擇直接輸入或是經同步處理(D型暫存器)再輸入。當經過D型暫存器處理時,還可增加延遲電路做輕微的雜訊處理。輸入和輸出的控制可以選擇不同的時序(IK和OK)。21IOB結構說明每一個IOB都可以同時做輸入和輸出界面。21可程式繞線結構若要考慮響應速度,就必須採用金屬導線(以銅線為主)。若要考慮應用彈性,就必須用半導體導線和切換電路(以MOSFET為主),但頻寬會受限。在每個CLB和CLB之間,利用金屬導線佈出許多固定式的繞線段(7至10條);而每格一段距離就加上一個可程式的半導體切換盒(ProgrammableSwitchMatrix,簡稱PSM)。

22可程式繞線結構若要考慮響應速度,就必須採用金屬導線(以銅線為FPGA的擴張功能分佈式的RAM功能,快速進位功能,三態匯流排界面。可選取的功能:兩組16*1的RAM,或一組32*1的RAM,或一組16*1的雙阜RAM,可作為FIFO(First-InFirst-Out)緩衝器使用。

23FPGA的擴張功能分佈式的RAM功能,23VHDL程式開發程序開發流程程式對照畫面DESIGNENTRY:編輯VHDL程式(vhd檔)和配置設限(ucf檔),並檢查VHDL程式文法錯誤。SYNTHESIS:編譯VHDL程式並分解後再合成為FPGA內部電路適用的組件群。IMPLEMENTATION:將分解後的組件配置在FPGA電路中,並進行繞線連接處理,將最終處理結果存成硬體配置檔(rbt檔)。PROGRAMMING:經由PRT界面將硬體對映檔(rbt檔)下載到指定的FPGA中,進行實驗測試。記錄視窗編譯視窗命令列捷徑列程式編輯電路合成電路排版24VHDL程式開發程序開發流程程式對照畫面記錄視窗編譯視窗命令VHDL程式開發程序程式範例一

邏輯說明包括包裝和特性兩部分就包裝來說包括XC0和XA0,其中XC0為輸入而XA0為輸出;就特性來說是將XC0直接送至XA0上。硬體配置採用Xilinx公司出品的XCS05,為PLCC方式的84腳包裝。其中XC0為50腳而XA0為28腳。25VHDL程式開發程序程式範例一25VHDL程式開發程序程式範例一

26VHDL程式開發程序程式範例一26when-else的查表指令27when-else的查表指令27when-else的查表指令在when(..)else中的比較部分,可以加上and/or等邏輯動作,製造更多的應用彈性

28when-else的查表指令28標準的順序邏輯設計process(CLK)--加上設定功能的D型暫存器beginifRST='1'then--以RST做準位觸發Q<='0';--復歸動作elsifSET='1'then--以SET做準位觸發Q<='1';--設定動作elsifCLK'eventandCLK='1'then--以CLK做上緣觸發(從0變1)ifEC='1'then--以EC準位做同步脈波控制Q<=D;--儲存動作endif;endif;endprocess;--宣告結束29標準的順序邏輯設計process(CLK)暫存器應用實驗設計自由計數器實驗模組輸出為0時LED燈亮:輸出為1時LED燈熄。30暫存器應用實驗設計自由計數器30暫存器應用實驗設計自由計數器signalQ:STD_LOGIC_VECTOR(21downto0);--宣告自由計數器....process(CLK)--順序邏輯開始beginifCLK'eventandCLK='1'then--上緣觸發Q<=Q+1;--正向計數器endif;endprocess;--順序邏輯結束31暫存器應用實驗設計自由計數器signalQ:STD_L暫存器應用實驗設計查表處理結構

XB<="11111110"whenCNT="0000"else"11111100"whenCNT="0001"else"11111000"whenCNT="0010"else"11110000"whenCNT="0011"else"11100000"whenCNT="0100"else"11000000"whenCNT="0101"else"10000000"whenCNT="0110"else"00000000"whenCNT="0111"else"00000001"whenCNT="1000"else"00000011"whenCNT="1001"else"00000111"whenCNT="1010"else"00001111"whenCNT="1011"else"00011111"whenCNT="1100"else"00111111"whenCNT="1101"else"01111111"whenCNT="1110"else"11111111";32暫存器應用實驗設計查表處理結構XB<="1111111狀態程序處理

組合邏輯將現在和下次狀態區分成兩組不同的訊號,以消除回饋的架構(OUT,NEXT)<=function(IN,NOW);--輸出和下次狀態由輸入和現在狀態決定

狀態控制33狀態程序處理組合邏輯33狀態圖設計

基本上先將所有的狀態列出,每個狀態給一個編號,然後敘述:在某狀態時,輸出條件是什麼,一一列出。在某狀態時,當輸入訊號是如何時,會跳到另一個狀態。在某狀態時,當輸入訊號是如何時,會維持原狀態不變。34狀態圖設計基本上先將所有的狀態列出,每個狀態給一個編號,然case–when指令

process(NOW,DIN)--process指令,卻是組合邏輯begincaseNOWis--case指令開始,NOW是現在狀態when"00"=>--當NOW在00狀態時,DOUT<="10";--DOUT輸出設為10ifDIN="00"then--此時若DIN輸入為00時NXT<="01";--下一狀態NXT將為01else--否則NXT<="00";--下一狀態仍然維持00endif;when"01"=>--當NOW在01狀態時.....when"10"=>--當NOW在10狀態時.....whenothers=>--當NOW在其他狀態時.....endcase;--case指令結束endprocess;--process指令結束35case–when指令process(狀態圖的VHDL程式撰寫STATE_MACHINE:block--狀態控制宣告開始beginprocess(CLK)--順序邏輯開始beginifCLK'eventandCLK='1'then--CLK前緣觸發ifEC='1'then--EC時鐘控制NOW<=NXT;--狀態更新動作endif;endif;endprocess;--順序邏輯結束

process(NOW,DIN)--組合邏輯開始begincaseNOWis--case指令開始when“00”=>--當現在狀態NOW=00時,

DOUT<='0';

--DOUT=0ifDIN="00"then--若DIN=00,則

NXT<="01";--下一狀態NXT將為01else--否則NXT<="00";--下一狀態仍維持00endif;when"01"=>--當現在狀態NOW=01時,DOUT<='0';--DOUT=0ifDIN="00"then--若DIN=00,則NXT<="10";--下一狀態NXT將為10elsifDIN="10"then--否則若DIN=10,則NXT<="11";--下一狀態NXT將為11else--否則NXT<="01";--下一狀態仍維持01endif;when"10"=>--當現在狀態NOW=10時DOUT<='0';--DOUT=0ifDIN="01"then--若DIN=01,則NXT<="11";--下一狀態NXT將為11else--否則NXT<="10";--下一狀態仍維持10endif;whenothers=>--當NOW在其他狀態時(即11)DOUT<='1';--DOUT=0ifDIN="01"then--若DIN=01,則NXT<="00";--下一狀態NXT將為00else--否則NXT<="11";--下一狀態仍維持11endif;endcase;--case指令結束endprocess;--process指令結束endblockSTATE_MACHINE;--狀態控制結束36狀態圖的VHDL程式撰寫STATE_MACHINE:b系統設計

大型積體電路設計,常有配合微電腦一起工作的場合。這時整個邏輯設計就是微電腦硬體界面的一部份,不但要考慮和微電腦的硬體連線問題,還要考慮微電腦的軟體配合問體。當電路越大而結構越複雜時,設計上就更容易出錯了。在此經由建立一個微電腦連線的可程式輸入輸出阜,從一步步的分析和整合,逐步培養系統化的設計經驗。階層式設計

當電路越來越複雜,電路圖也就越來越多張了。這時我們就需要一些方法來整理它們,常用的作法就是由大而小、由高而低的階層式架構。

37系統設計大型積體電路設計,常有配合微電腦一起工作的場合。這Configuration特性選擇即使用了多個architecture來敘述電路特性,最後還是只能用configuration選擇其中的一個來使用。所以每個architecture實際上都擁有entity的全部特性,也都要清楚敘述每一部份。entityAAAis--entity宣告電路名稱為AAA....--接腳及變數endAAA;--entity宣告結束....architectureXXX_ARCHofAAAis--architecture宣告電路特性XXX_ARCHbegin....endXXX_ARCH;--architecture宣告結束....architectureYYY_ARCHofAAAis--architecture宣告電路特性YYY_ARCHbegin....endYYY_ARCH;--architecture宣告結束....architectureZZZ_ARCHofAAAis--architecture宣告電路特性ZZZ_ARCHbegin....endZZZ_ARCH;--architecture宣告結束....configurationRRRofAAAis--configuration宣告特性選擇forYYY_ARCH--特性選擇採用YYY_ARCHendfor;end;--configuration宣告結束38Configuration特性選擇即使用了多個architBlock模組方塊

公用訊號宣告entityXXXis--entity宣告電路名稱port(....--port中宣告的接腳都是公用訊號};endXXX;--entity宣告結束architectureXXX_ARCHofXXXis--architecture宣告電路特性公用訊號宣告signal....--architecture下宣告的signal都是公用訊號begin

局部訊號宣告AAA:block--block模組宣告signal...--block下宣告的signal都是局部訊號begin....--可使用公共訊號和自有的局部訊號endblockAAA;--block模組結束局部訊號宣告

BBB:block--block模組宣告signal...--block下宣告的signal都是局部訊號begin....--可使用公共訊號和自有的局部訊號endblockBBB;--block模組結束....endXXX_ARCH;--architecture宣告結束公用訊號宣告公用訊號宣告局部訊號宣告局部訊號宣告用block定義的模組化程式非常方便,但是只能寫在同一個檔案中,還不能重複的使用,只能算同張電路圖的不同部分而已。當VHDL程式越來越大時,block指令就變得不夠應付了。39Block模組方塊公用訊號宣告公用訊號宣告公用訊號宣告局部Component電路元件

entityAAAis--entity宣告電路名稱為AAAport--port宣告接腳定義(A,B:inSTD_LOGIC;--其中A/B宣告為輸入端,型式為STD_LOGICC:outSTD_LOGIC;--C宣告為輸出端,型式為STD_LOGIC};endAAA;--entity宣告結束....--其他部分的定義,別人就不需要知道了雖然VHDL程式的檔名和entity所定義的名稱可以完全無關,但是為了方便將來的查詢和偵錯,在這裡強烈的要求大家:

務必將vhd檔名和entity所定義的電路名稱設為一致。40Component電路元件entityAAAisVHDL之系統程式範例

entityXXXis--entity宣告電路名稱port--port宣告接腳定義(X1,X2,X3,X4:inSTD_LOGIC;--輸入端宣告Z1:outSTD_LOGIC;--輸出端宣告};endXXX;--entity宣告結束architectureXXX_ARCHofXXXis--architecture宣告電路特性componentAAA--component做元件AAA的宣告port--元件接腳宣告(A,B:inSTD_LOGIC;--輸入端定義C:outSTD_LOGIC--輸出端定義);endcomponent;--component宣告結束signalY1,Y2:STD_LOGIC;--內部訊號宣告beginU1:AAAportmap(X1,X2,Y1);--U1採用AAA元件,並定義3個接腳的連線U2:AAAportmap(X3,X4,Y2);--U2採用AAA元件,並定義3個接腳的連線U3:AAAportmap(Y1,Y2,Z1);--U3採用AAA元件,並定義3個接腳的連線endXXX_ARCH;--architecture宣告結束宣告使用41VHDL之系統程式範例entityXXXisFPGA中的DSP核心設計

一:系統時鐘設計二:ISA界面設計三:記憶體的運用四:動態測試的設計五:IO界面設計六:類比界面設計七:FPGA連線設計八:LCD界面設計九:馬達驅動界面十:伺服控制器的運用十一:硬體控制器的執行十二:微控碼的處理十三:運算單元設計十四:微碼控制器的執行十五:C程式的設計42FPGA中的DSP核心設計一:系統時鐘設計42系統時鐘設計

邏輯設計的第一步就是系統時鐘的設計,所有的順序邏輯都要在一致的系統時鐘下作動,才能確保邏輯電路的可靠性。學習如何使用VHDL語法在FPGA中產生以下的波形,以供數位系統運用。43系統時鐘設計邏輯設計的第一步就是系統時鐘的設計,所有的順序ISA界面設計

eMotion控制器透過ISA-bus和FPGA連線,而X86CPU也可以藉著ISA-bus來監控FPGA中的所有控制動作。學習如何使用VHDL語法在FPGA中建立ISA-bus的界面控制應用。

ISA-bus界面

讀出的控制時序

寫入的控制時序44ISA界面設計eMotion控制器透過ISA-bus和FP記憶體的運用

大型邏輯設計中,記憶體的運用是非常重要的一步。eMotion控制器中的FPGA(XC2V250)本身即有48K-byte的雙阜記憶體空間,可以做非常彈性的應用。學習如何在FPGA#1中建立ISA-bus連線,並測試記憶體的讀寫。

45記憶體的運用大型邏輯設計中,記憶體的運用是非常重要的一步。動態測試的設計

邏輯電路的測試是非常困難的步驟,通常在設計時就要優先考慮。所有的設計,都必須通過作動瞬間的暫態反應測試,才算是完整的測試結果。學習如何在FPGA中建立資料蒐集系統,並由FPGA本身來執行內部邏輯的動態測試工作。

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论