EZ-USB FX2的數(shù)據(jù)采集和傳輸系統(tǒng)設(shè)計
FPGA提供TLC5510 20 MHz的工作時鐘和使能輸出信號OE,低電平有效,同時接受TLC5510的采樣數(shù)據(jù)。由于系統(tǒng)需要同步的兩路采樣,所以由FPGA輸出的時鐘和使能輸出信號OE同時控制2個TLC5510。這樣FPGA就可以同時收到兩路同時采樣的信號數(shù)據(jù),將其存入兩個獨立的異步FIFO中。
值的注意的是,實驗中將FPGA產(chǎn)生的工作時鐘和使能輸出信號先輸入74HCT573,然后由74HCT573的輸出去控制兩路的TLC5510。這主要是完成將FPGA的CMOS電平轉(zhuǎn)換成TTL電平的工作。在實驗的初期,未經(jīng)過電平轉(zhuǎn)換的信號在控制TLC5510時,得不到穩(wěn)定數(shù)據(jù)。后來經(jīng)過改善后,TLC5510能夠穩(wěn)定、準確地完成采樣和數(shù)據(jù)輸出。
(2)數(shù)據(jù)傳輸模塊
在數(shù)據(jù)傳輸模塊中,為了保證較高的傳輸速度,使用不經(jīng)過CPU的SLAVEFIFO控制工作模式。模塊的基本工作過程為:當A/D采樣數(shù)據(jù)存儲滿FPGA中的FIFO后,F(xiàn)PGA根據(jù)SLAVEFIFO的控制時序產(chǎn)生相應(yīng)的控制信號,將在FIFO中的數(shù)據(jù)傳輸給EZ-IJSB FX2的內(nèi)部端點FIFO,而當內(nèi)部端點存儲滿后,FX2自動將數(shù)據(jù)傳輸?shù)缴衔粰C。外部控制器FPGA對FX2的控制進程如下:
①IDLE,當寫事件發(fā)生時,轉(zhuǎn)向狀態(tài)1。
②狀態(tài)1,指向EZ-LJSB FX2的內(nèi)部端點IN FIFO,激活FIFOADR[1:0],轉(zhuǎn)向狀態(tài)2。
③狀態(tài)2,如果內(nèi)部端點FIF0滿標志為“假”(FIFO不滿),則轉(zhuǎn)向狀態(tài)3;否則停留在狀態(tài)2。
④狀態(tài)3,傳送總線驅(qū)動數(shù)據(jù)。產(chǎn)生一個SLWR跳變,轉(zhuǎn)向狀態(tài)4。
⑤狀態(tài)4,如果有更多的數(shù)據(jù)要寫,則轉(zhuǎn)向狀態(tài)2;否則,轉(zhuǎn)向IDLE。
EZ-JSB FX2內(nèi)部端點FIFO異步寫的時序如圖3所示。
2 FPGA的模塊設(shè)計
在系統(tǒng)中,F(xiàn)PGA構(gòu)成了數(shù)據(jù)采集系統(tǒng)和數(shù)據(jù)傳輸系統(tǒng)的“橋梁”,完成對TLC25510的控制和數(shù)據(jù)的存儲,同時也完成對EZ-USB FX2單片機的控制。利用FPGA強大的功能,使電路的結(jié)構(gòu)得到了簡化,不需要利用分立器件來完成對數(shù)據(jù)的存儲。因此,在FPGA中需要構(gòu)成4個模塊:2片F(xiàn)IFO數(shù)據(jù)存儲模塊、數(shù)據(jù)通道選擇模塊、控制模塊和輸出20 MHz時鐘的PLL模塊。
(1)2片F(xiàn)IFO數(shù)據(jù)存儲模塊
FIFO數(shù)據(jù)存儲模塊主要完成對A/D轉(zhuǎn)換數(shù)據(jù)的存儲。由于需要兩路同時采集數(shù)據(jù),所以要有2個FIFO模塊,這樣易于對數(shù)據(jù)的存儲和傳輸控制。每個FIFO存儲模塊的存儲容量定為2 048 B,可通過MegaWizard工具來調(diào)用。
(2)數(shù)據(jù)通道選擇模塊
數(shù)據(jù)通道選擇模塊主要是針對兩路的數(shù)據(jù)讀取和傳輸而設(shè)計的。當A/D轉(zhuǎn)換器采集到對應(yīng)的數(shù)據(jù)后,存入兩個異步FIFO存儲模塊中。在兩個異步FIFO存儲模塊存儲滿后,對FIFO存儲模塊數(shù)據(jù)的讀取是關(guān)鍵。數(shù)據(jù)通道選擇模塊的基本原理是在控制模塊對讀取數(shù)據(jù)進行計數(shù),當把其中的一個FIFO存儲模塊讀取完后,由控制模塊發(fā)出通道切換信號,由數(shù)據(jù)通道選擇模塊切換數(shù)據(jù)通道,再讀取另一個FIFO存儲模塊的數(shù)據(jù)。
(3)控制模塊
控制模塊要完成對TLC5510、FIFO存儲模塊、數(shù)據(jù)選擇模塊和EZ―USB FX2的控制,這是整個系統(tǒng)的關(guān)鍵。根據(jù)系統(tǒng)實現(xiàn)的功能和各個模塊的控制時序,控制模塊將產(chǎn)生相應(yīng)的控制信號,實現(xiàn)系統(tǒng)的采集和存儲的功能。
(4)20 MHz時鐘的PLL模塊
系統(tǒng)提供的FPGA外部時鐘頻率為50 MHz,而TLC5510的最大采樣工作頻率為20 MHz。所以通過對前置分頻參數(shù)N=5、倍頻器參數(shù)M=2的設(shè)置,將50 MHz鐘頻率分頻成20 MHz的時鐘作為采樣時鐘和系統(tǒng)的工作時鐘。
3 EZ―USB FX2的固件設(shè)計
固件程序是指運行在設(shè)備CPU中的程序。只有在該程序運行時,外設(shè)才能稱為具有給定功能的外圍設(shè)備。C2ypress公司為FX2固件開發(fā)提供了一個固件庫和固件框架,都是在Keil C51集成開發(fā)環(huán)境下開發(fā)的。固件庫提供了一些常量、數(shù)據(jù)結(jié)構(gòu)、宏、函數(shù)來簡化用戶對芯片的使用。固件框架實現(xiàn)了初始化芯片、處理USB標準設(shè)備請求以及掛起狀態(tài)下的電源管理等功能。該框架不添加任何代碼,編譯后生成的.HEX文件載人芯片就能和主機進行基本的USB通信。用戶主要的工作就是選擇適合的傳輸方式,添加需要使用的端點,在框架預(yù)留的地方(如TD_Init()、TD_Poll()等函數(shù)中)添加初始化代碼和完成特定功能的代碼。這樣大大簡化了用戶對程序的編寫,在不十分了解USB2.O協(xié)議的情況下,也能通過代碼的編寫,實現(xiàn)USB的傳輸功能。
評論