《FPGA中的DSP核心设计课件.ppt》由会员分享,可在线阅读,更多相关《FPGA中的DSP核心设计课件.ppt(56页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、FPGA中的DSP核心設計FPGA中的DSP核心設計n應用系統規劃nFPGA設計基礎nDSP核心設計n實驗應用示範2SOC技術演進3SOC技術應用4SOC(System-On-Chip)開發平台5硬體設計n應用系統規劃nDSP核心設計n微控碼設計nCPU界面設計nI/O界面設計6軟體設計n組合語言基礎n組合語言結構n組合語言定義n模組程式設計n系統程式設計7內藏式PC控制器nZF-Linux公司的MachZ(ZFX86)1.100MHz的586CPU,耗電0.5W。2.現成的BIOS碼和參數設定工具。3.外加元件極少。4.研發過程中可利用RS-232、USB及Ethernet界面連接。5.模組
2、中併入FPGA和ADC/DAC。6.全部電路板尺寸約10cm*20cm。7.程式和資料儲存在8MB的單晶硬碟(Disk-On-Chip,簡稱DOC)中。8FPGA電路nXilinx公司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,容量共
3、48KB。5.擁有硬體乘法器,為18*18=36的整數乘法器。XC2V250中共有24個硬體乘法器。6.XC2V250中最多可同時擁有16組的公用Clock,具備硬體連線。7.就繞線能力極佳,幾乎不會繞線失敗。8.擁有200個I/O點,每個I/O點都可規劃成不同型式的邏輯準位。nXilinx公司Spartan系列的XCS05XL:1.閘數(GateCount)為5K,內部電源為3.3V,可允許80MHz的脈波頻率。2.邏輯閘的單位為CLB,每個CLB包含兩組D型暫存器和4位元的可程式邏輯。3.XCS05中有10*10個CLB,相當於200組暫存器。4.最多可同時擁有4組的公用Clock,具備硬
4、體連線。5.擁有72個I/O點,每個I/O點都可規劃成3.3V的LVTTL邏輯準位。9內藏式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界
5、面。所有I/O界面都以DMA方式和記憶體連接。4.外部擴接電路(包括ADC、DAC和另一顆FPGA)都是由I/O控制器透過串列界面連接。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面板。11軟體開發環境ne控
6、制器:提供硬體控制和軟體管理等控制功能。n近端PC:提供軟硬體開發過程中的開發工具和作業環境。n遠端PC:提供教學和產業應用時的遠端監控功能。12視窗操作環境n執行上採用Linux系統n操作上採用視窗作業環境n開機程序:1.DOC檔案解壓縮並下載到RAM中2.檔案的讀寫或管理都在RAM中3.DOC儲存的檔案都是唯讀檔案4.使用者程式儲存在PC端的硬碟5.PC端在視窗環境直接處理檔案6.光碟和印表機在視窗下處理13程式開發環境項目說明C程式開發(e控器部分)1.直接在視窗中編輯程式碼2.在終端機中下達編譯指令3.在終端機中執行下載指令DSP程式開發(e控器部分)1.直接在視窗中編輯程式碼2.在終
7、端機中下達編譯指令3.在終端機中下載並執行VHDL程式開發(e控器部分)1.直接在視窗中編輯程式碼2.直接在視窗中下達編譯指令3.在終端機中下載並執行C程式開發(PC端部分)所有程序都可在視窗環境處理JAVA程式開發所有程序都可在視窗環境處理Matlab開發所有程序都可在視窗環境處理Simulink開發所有程序都可在視窗環境處理應用程式執行所有程序都可在視窗環境處理14即時控制環境nDSP核心部分負責即時控制程式,抽樣控制頻率可高達32KHz,完全不受Linux作業系統干擾。nLinux作業系統下的586CPU,掌管主控程式和TCP/IP通訊程式,只能執行100Hz左右的抽樣控制。n所謂100
8、Hz左右,是指基本頻率是100Hz,但是多少會受到其他程式負載所影響,不能完全保證。n586CPU和DSP透過雙阜記憶體共享所有的參數和變數。ISA-bus的傳訊速度限制可忽略不計。nPC端應用程式可執行人機圖控和TCP/IP通訊界面,執行遠距操作的功能。nPC端和586CPU之間透過網路做連線。EtherNet在輕負荷下可執行100Hz的資料傳輸(200-byte左右)n若是透過網際網路做遠距連線,則只能傳遞資料而不能保證傳訊速度了。15四軸CNC控制器nPC端負責操作界面和遠端監控neMotion控制器負責CNC的整個控制動作,即時控制負載由586CPU和DSP核心來分擔。neMotion
9、控制器直接整合在功率驅動級中,形成單一模組的內藏式CNC控制器。n可連接工業級PC做標準型的CNC控制器,也可連接簡單的LCD面板做簡易操作型的CNC控制器。16電動機控制實驗nPC端負責Simulink的操作和監控neMotion控制器負責單軸或多軸伺服控制動作n586CPU只負責網路資料的傳遞,所有控制都以模組方式架構在DSP核心中。n變頻器模式實驗(開環路電壓控制)n步進馬達模式實驗(閉環路電流控制)n直流馬達模式實驗(閉環路扭力控制)n速度控制模式實驗n位置控制模式實驗n加減速控制與前置補償n電流過載與PID補償效應17FPGA電路n基本結構nCLB:可程式邏輯單元,行成N*N的電路矩
10、陣nIOB:可程式輸入輸出阜,做為外部接腳和連線18CLB結構說明n包含三組查表結構的模組nG-LUT:4點輸入的可程式邏輯閘(16*1的RAM查表結構);nF-LUT:4點輸入的可程式邏輯閘(16*1的RAM查表結構);nH-LUT:3點輸入的可程式邏輯閘(8*1的RAM查表結構);19D型暫存器架構n一個標準的D型暫存器,由CK來控制,可選擇上緣觸發或是下緣觸發。n由EC做同步結構下的時鐘控制(D端控制型式),當不需要EC時,EC端就由VCC所取代(固定ON)。nSR訊號可由設定(SD)功能或復歸(RD)功能中做二選一,但兩者不能同時存在。n一旦選擇了SR功能,開機時產生的GSR(Glob
11、alSet/Rest)訊號就可以自動的執行所有D型暫存器的設定或復歸工作。n當SR訊號由GND取代時,D型暫存器就取消了由外界設定和復歸的功能,但是開機的GSR訊號還是可以做設定或復歸的動作。process(K)-順序邏輯開始ifSR=1then-SR做復歸控制Q=0;-復歸為0elsifCKeventandCK=0then-CK做下緣觸發ifEC=1then-EC做時鐘控制Q=D;-D型暫存器endif;endif;endprocess;-順序邏輯結束20IOB結構說明n每一個IOB都可以同時做輸入和輸出界面。n當將IOB作為輸出控制時:n由T來控制三態輸出,可以自由選擇T=0時作動或是T=
12、1時作動。n所有的IO接點可以統一的用一個GTS(GlobalTri-State)訊號來控制三態狀況,當有緊急狀況發生時,可以瞬間的將所有接腳變成浮接狀態。n輸出到接腳的O訊號,可以選擇正向或反向,也可以選擇直接輸出或是經同步處理(D型暫存器)後統一輸出。n輸出浮接時,還可選擇Pull-Up或Pull-Down電阻做開集極控制。n當將IOB作為輸入控制時:n可選擇直接輸入或是經同步處理(D型暫存器)再輸入。n當經過D型暫存器處理時,還可增加延遲電路做輕微的雜訊處理。n輸入和輸出的控制可以選擇不同的時序(IK和OK)。21可程式繞線結構n若要考慮響應速度,就必須採用金屬導線(以銅線為主)。n若要
13、考慮應用彈性,就必須用半導體導線和切換電路(以MOSFET為主),但頻寬會受限。n在每個CLB和CLB之間,利用金屬導線佈出許多固定式的繞線段(7至10條);而每格一段距離就加上一個可程式的半導體切換盒(ProgrammableSwitchMatrix,簡稱PSM)。22FPGA的擴張功能n分佈式的RAM功能,n快速進位功能,n三態匯流排界面。n可選取的功能:n兩組16*1的RAM,或n一組32*1的RAM,或n一組16*1的雙阜RAM,可作為FIFO(First-InFirst-Out)緩衝器使用。23VHDL程式開發程序n開發流程程式對照畫面nDESIGNENTRY:n編輯VHDL程式(v
14、hd檔)和配置設限(ucf檔),並檢查VHDL程式文法錯誤。nSYNTHESIS:n編譯VHDL程式並分解後再合成為FPGA內部電路適用的組件群。nIMPLEMENTATION:n將分解後的組件配置在FPGA電路中,並進行繞線連接處理,將最終處理結果存成硬體配置檔(rbt檔)。nPROGRAMMING:n經由PRT界面將硬體對映檔(rbt檔)下載到指定的FPGA中,進行實驗測試。記錄視窗編譯視窗命令列捷徑列程式編輯電路合成電路排版24VHDL程式開發程序n程式範例一 n邏輯說明n包括包裝和特性兩部分n就包裝來說包括XC0和XA0,其中XC0為輸入而XA0為輸出;n就特性來說是將XC0直接送至X
15、A0上。n硬體配置n採用Xilinx公司出品的XCS05,為PLCC方式的84腳包裝。其中XC0為50腳而XA0為28腳。25VHDL程式開發程序n程式範例一 26when-else 的查表指令27when-else 的查表指令n在when(.)else中的比較部分,可以加上and/or等邏輯動作,製造更多的應用彈性28標準的順序邏輯設計process(CLK)-加上設定功能的D型暫存器beginifRST=1then-以RST做準位觸發Q=0;-復歸動作elsifSET=1then-以SET做準位觸發Q=1;-設定動作elsifCLKeventandCLK=1then-以CLK做上緣觸發(從
16、0變1)ifEC=1then-以EC準位做同步脈波控制Q=D;-儲存動作endif;endif;endprocess;-宣告結束29暫存器應用實驗設計n自由計數器n實驗模組n輸出為0時LED燈亮:n輸出為1時LED燈熄。30暫存器應用實驗設計n自由計數器signalQ:STD_LOGIC_VECTOR(21downto0);-宣告自由計數器.process(CLK)-順序邏輯開始beginifCLKeventandCLK=1then-上緣觸發Q=Q+1;-正向計數器endif;endprocess;-順序邏輯結束31暫存器應用實驗設計n查表處理結構 XB=11111110 when CNT=0
17、000 else 11111100 when CNT=0001 else 11111000 when CNT=0010 else 11110000 when CNT=0011 else 11100000 when CNT=0100 else 11000000 when CNT=0101 else 10000000 when CNT=0110 else 00000000 when CNT=0111 else 00000001 when CNT=1000 else 00000011 when CNT=1001 else 00000111 when CNT=1010 else 00001111 wh
18、en CNT=1011 else 00011111 when CNT=1100 else 00111111 when CNT=1101 else 01111111 when CNT=1110 else 11111111;32狀態程序處理n組合邏輯n將現在和下次狀態區分成兩組不同的訊號,以消除回饋的架構n(OUT,NEXT)-當NOW在00狀態時,DOUT=10;-DOUT輸出設為10ifDIN=00then-此時若DIN輸入為00時NXT=01;-下一狀態NXT將為01else-否則NXT-當NOW在01狀態時.when10=-當NOW在10狀態時.whenothers=-當NOW在其他狀態時
19、.endcase;-case指令結束endprocess;-process指令結束35狀態圖的VHDL程式撰寫STATE_MACHINESTATE_MACHINE:block -狀態控制宣告開始begin process(CLK)-順序邏輯開始 begin if CLKevent and CLK=1 then -CLK前緣觸發 if EC=1 then -EC時鐘控制 NOW -當現在狀態NOW=00時,DOUT=0;-DOUT=0 if DIN=00 then -若DIN=00,則 NXT=01;-下一狀態NXT將為01 else -否則 NXT -當現在狀態NOW=01時,DOUT=0;-
20、DOUT=0 if DIN=00 then -若DIN=00,則 NXT=10;-下一狀態NXT將為10 elsif DIN=10 then -否則若DIN=10,則 NXT=11;-下一狀態NXT將為11 else -否則 NXT -當現在狀態NOW=10時 DOUT=0;-DOUT=0 if DIN=01 then -若DIN=01,則 NXT=11;-下一狀態NXT將為11 else -否則 NXT -當NOW在其他狀態時(即11)DOUT=1;-DOUT=0 if DIN=01 then -若DIN=01,則 NXT=00;-下一狀態NXT將為00 else -否則 NXT=11;-下
21、一狀態仍維持11 end if;end case;-case指令結束 end process;-process指令結束end block STATE_MACHINESTATE_MACHINE;-狀態控制結束36系統設計n大型積體電路設計,常有配合微電腦一起工作的場合。這時整個邏輯設計就是微電腦硬體界面的一部份,不但要考慮和微電腦的硬體連線問題,還要考慮微電腦的軟體配合問體。當電路越大而結構越複雜時,設計上就更容易出錯了。在此經由建立一個微電腦連線的可程式輸入輸出阜,從一步步的分析和整合,逐步培養系統化的設計經驗。n階層式設計n當電路越來越複雜,電路圖也就越來越多張了。這時我們就需要一些方法來整
22、理它們,常用的作法就是由大而小、由高而低的階層式架構。37Configuration特性選擇n即使用了多個architecture來敘述電路特性,最後還是只能用configuration選擇其中的一個來使用。所以每個architecture實際上都擁有entity的全部特性,也都要清楚敘述每一部份。entity AAA is -entity宣告電路名稱為AAA .-接腳及變數end AAA;-entity宣告結束.architecture XXX_ARCH of AAA is -architecture宣告電路特性XXX_ARCHbegin .end XXX_ARCH;-architectur
23、e宣告結束.architecture YYY_ARCH of AAA is -architecture宣告電路特性YYY_ARCHbegin .end YYY_ARCH;-architecture宣告結束.architecture ZZZ_ARCH of AAA is -architecture宣告電路特性ZZZ_ARCHbegin .end ZZZ_ARCH;-architecture宣告結束.configuration RRR of AAA is -configuration宣告特性選擇 for YYY_ARCH -特性選擇採用YYY_ARCH end for;end;-configura
24、tion宣告結束38Block模組方塊公用訊號宣告entity XXX is -entity宣告電路名稱 port(.-port中宣告的接腳都是公用訊號 ;end XXX;-entity宣告結束architecture XXX_ARCH of XXX is -architecture宣告電路特性公用訊號宣告 signal.-architecture下宣告的signal都是公用訊號begin局部訊號宣告AAA:block -block模組宣告 signal.-block下宣告的signal都是局部訊號begin .-可使用公共訊號和自有的局部訊號end block AAA;-block模組結束局
25、部訊號宣告BBB:block -block模組宣告 signal.-block下宣告的signal都是局部訊號begin .-可使用公共訊號和自有的局部訊號end block BBB;-block模組結束 .end XXX_ARCH;-architecture宣告結束公用訊號宣告公用訊號宣告局部訊號宣告局部訊號宣告n用block定義的模組化程式非常方便,但是只能寫在同一個檔案中,還不能重複的使用,只能算同張電路圖的不同部分而已。當VHDL程式越來越大時,block指令就變得不夠應付了。39Component電路元件entity AAA is -entity宣告電路名稱為AAA port -po
26、rt宣告接腳定義 (A,B:in STD_LOGIC;-其中A/B宣告為輸入端,型式為STD_LOGIC C :out STD_LOGIC;-C宣告為輸出端,型式為STD_LOGIC ;end AAA;-entity宣告結束.-其他部分的定義,別人就不需要知道了n雖然VHDL程式的檔名和entity所定義的名稱可以完全無關,但是為了方便將來的查詢和偵錯,在這裡強烈的要求大家:務必將vhd檔名和entity所定義的電路名稱設為一致。40VHDL之系統程式範例entity XXX is -entity宣告電路名稱 port -port宣告接腳定義 (X1,X2,X3,X4:in STD_LOGIC
27、;-輸入端宣告 Z1 :out STD_LOGIC;-輸出端宣告 ;end XXX;-entity宣告結束architecture XXX_ARCH of XXX is -architecture宣告電路特性 component AAA -component做元件AAA的宣告 port -元件接腳宣告 (A,B:in STD_LOGIC;-輸入端定義 C :out STD_LOGIC -輸出端定義 );end component;-component宣告結束 signal Y1,Y2:STD_LOGIC;-內部訊號宣告beginU1:AAA port map(X1,X2,Y1);-U1採用AA
28、A元件,並定義3個接腳的連線U2:AAA port map(X3,X4,Y2);-U2採用AAA元件,並定義3個接腳的連線U3:AAA port map(Y1,Y2,Z1);-U3採用AAA元件,並定義3個接腳的連線end XXX_ARCH;-architecture宣告結束宣告使用41FPGA中的DSP核心設計n一:系統時鐘設計n二:ISA界面設計n三:記憶體的運用n四:動態測試的設計n五:IO界面設計n六:類比界面設計n七:FPGA連線設計n八:LCD界面設計n九:馬達驅動界面n十:伺服控制器的運用n十一:硬體控制器的執行n十二:微控碼的處理n十三:運算單元設計n十四:微碼控制器的執行n十
29、五:C程式的設計42系統時鐘設計n邏輯設計的第一步就是系統時鐘的設計,所有的順序邏輯都要在一致的系統時鐘下作動,才能確保邏輯電路的可靠性。n學習如何使用VHDL語法在FPGA中產生以下的波形,以供數位系統運用。43ISA界面設計neMotion控制器透過ISA-bus和FPGA連線,而X86CPU也可以藉著ISA-bus來監控FPGA中的所有控制動作。n學習如何使用VHDL語法在FPGA中建立ISA-bus的界面控制應用。ISA-bus界面讀出的控制時序 寫入的控制時序44記憶體的運用n大型邏輯設計中,記憶體的運用是非常重要的一步。eMotion控制器中的FPGA(XC2V250)本身即有48
30、K-byte的雙阜記憶體空間,可以做非常彈性的應用。n學習如何在FPGA#1中建立ISA-bus連線,並測試記憶體的讀寫。45動態測試的設計n邏輯電路的測試是非常困難的步驟,通常在設計時就要優先考慮。所有的設計,都必須通過作動瞬間的暫態反應測試,才算是完整的測試結果。n學習如何在FPGA中建立資料蒐集系統,並由FPGA本身來執行內部邏輯的動態測試工作。46IO界面設計nI/O界面的設計可以非常簡單,也可以非常複雜,必須由I/O處理的複雜度以及CPU的工作負載來決定。在DSP核心設計中,提供獨立的I/O匯流排設計和相關的DMA功能,以提升DSP核心的工作效率。n學習如何在FPGA中,建立標準化的
31、I/O界面設計,並以簡單的I/O阜作測試。47類比界面設計nFPGA可以提供所有的數位邏輯設計。但是對於類比訊號處理,還是必須透過外部的類比轉換元件。n學習如何在FPGA中,使用類比轉換元件的連線方式,建立和其相關的串列通訊界面設計。使用類比輸入輸出的串列通訊界面,建立標準化的實驗模組,並產生簡單的音頻訊號輸出至電話機作測試。48LCD界面設計nLCD模組可以用圖形顯示動態的資料記錄,是個非常方便的測試工具。就電路設計而言,LCD的點矩陣畫面也是DMA控制中的一個重要項目。n學習如何在FPGA中,完成LCD模組的連線方式和其相關的界面設計。49馬達驅動界面n馬達的控制需要高速的動態響應能力,是
32、DSP核心的重要應用方向。n學習如何在FPGA中,建立馬達驅動器的界面,包括PWM的驅動控制以及光電盤的解碼和計數,提供馬達控制實驗的設計基礎。n使用VHDL程式建立DCM模組的連線,包括PWM控制和光電盤解碼。50伺服控制器的運用nPWM驅動方式只是簡單的開環路控制,而高精度的馬達控制必須透過回授控制來完成。對於邏輯電路的設計者而言,必須先瞭解基本的回授控制架構,以便將來轉換成實用的邏輯電路設計。n以組合語言撰寫模組程式,用軟體方式控制直流馬達。分別處理n開環路的電壓控制n閉環路的速度控制:以P控制器作回授控制n閉環路的位置控制:以PD控制器作回授控制51硬體控制器的執行n回授控制器可以用不
33、同的方法執行,包括軟體方式、硬體方式和微碼方式。n前一個實驗是以軟體方式(組合語言)執行的範例。接著換成用硬體方式來執行,即是在FPGA中直接設計邏輯電路來執行PD控制器,同樣以直流馬達的閉環路位置控制作為測試目標。52微控碼的處理n前面兩個實驗中分別以軟體方式和硬體方式來執行閉環路控制中的控制器。接下來將建立微碼控制器,再試著以微碼方式重新執行閉環路控制。軟體執行方式 硬體執行方式 微控碼執行方式53微控碼的處理流程n微控碼的處理電路包括位址管理、記憶內容和解碼處理三個部分。微控碼位址管理 微碼控制流程 微碼控制器系統架構圖54運算單元的設計n運算單元包括了暫存器和運算處理,負責整個DSP核心的數值運算和邏輯運算等工作。n學習如何在FPGA中,完成運算單元的細部設計,並設計微控碼來測試運算的正確性。n運算單元的設計內容nAX暫存器的管理nHX暫存器的管理nFX暫存器的管理n匯流排的管理nmREG的解碼n加減運算n邏輯運算n比較運算n移位運算n補位運算55實驗應用示範n使用軟體控制方式,控制DC馬達neM10_ANG.txtn使用硬體控制方式,控制DC馬達neM11_POS.vhdn使用微碼控制方式,控制DC馬達neM14_ANG.txt56