TOM: 0px; WIDOWS: 2; TEXT-TRANSFORM: none; BACKGROUND-COLOR: rgb(255,255,255); TEXT-INDENT: 0px; MARGIN: 20px 0px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT: 14px/25px 宋體, arial; WHITE-SPACE: normal; ORPHANS: 2; LETTER-SPACING: normal; COLOR: rgb(0,0,0); WORD-SPACING: 0px; PADDING-TOP: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px"> ALE(IOB0):例如ALE的上升沿,通過IOA端口向FPGA傳送控制指令,例如,當(dāng)IOA=01H時(shí),表示系統(tǒng)開始工作,A/D和D/A轉(zhuǎn)換器開始啟動(dòng)。當(dāng)IOA=88H時(shí),表示轉(zhuǎn)換結(jié)束,FPGA將不再接收或發(fā)送數(shù)據(jù),當(dāng)IOA=02H時(shí),表示CY7C68013將讀取FPGA內(nèi)狀態(tài)寄存器的內(nèi)容,由讀取兩狀態(tài)標(biāo)志位的0或1,來判斷兩個(gè)通道內(nèi)的4個(gè)數(shù)據(jù)緩沖器的"滿"或"空"狀態(tài),若D/A通道的任一個(gè)數(shù)據(jù)緩沖區(qū)為"空",則由FPGA向狀態(tài)寄存器的第一個(gè)狀態(tài)標(biāo)志位內(nèi)填1;否則填0;同理,若A/D通道的任一個(gè)數(shù)據(jù)緩沖區(qū)為"滿",則由FPGA向狀態(tài)寄存器的第二個(gè)狀態(tài)標(biāo)志位內(nèi)填1;否則填0;當(dāng)IOA=03H時(shí),表示主機(jī)將通過USB向D/A通道發(fā)送轉(zhuǎn)換數(shù)據(jù),每次發(fā)送256個(gè)字節(jié),前128字節(jié)為D/A轉(zhuǎn)換的1通道,后128字節(jié)為2通道,當(dāng)IOA=04H時(shí),表示主機(jī)將要接收由A/D通道傳送來的數(shù)據(jù)。 RD(IOB1):利用RD的上升沿通過IOA端口讀取D/A轉(zhuǎn)換器轉(zhuǎn)換來的數(shù)據(jù)。
WR(IOB2):利用WR的上升沿通過IOA端口向A/D轉(zhuǎn)換器發(fā)送由主機(jī)傳送來的數(shù)據(jù)。
4 軟件的實(shí)現(xiàn)
USB與FPGA在Ports模式下數(shù)據(jù)的傳輸,由于是由CY7C68013內(nèi)部的CPU核來實(shí)現(xiàn)的,因此,對固件程序的編寫顯得比較重要,總的來說,固件程序的編寫有兩種方式:一是由于CY7C68013的內(nèi)部集成有增強(qiáng)型8051內(nèi)核,對熟悉8051匯編語言的用戶來說,可以直接利用會匯編語言編寫高效的固件代碼;二是Cypress公司EZ-USB FX2系列配套有現(xiàn)成的固件程序框架函數(shù),用戶需要時(shí),只需添加相應(yīng)的用戶程序即可。當(dāng)然,用戶程序中的數(shù)據(jù)通信的實(shí)現(xiàn)也就是如何完成通信協(xié)議的過程。
在此,采用后者來完成CY7C68013和FPGA的數(shù)據(jù)通信,實(shí)現(xiàn)數(shù)據(jù)通信功能的部分軟件代碼如下(以下代碼均可寫在框架函數(shù)void TD_Poll(void)內(nèi)):
5 總結(jié)
CY7C68013和FPGA的數(shù)據(jù)通信中,采用基本的Ports接口模式,利用自動(dòng)指針方法,通過數(shù)字示波器的觀察,完成1KB的傳送,大約需要750μs。與另外兩種模式相比,雖然數(shù)據(jù)傳輸?shù)乃俣容^低,但作為一種數(shù)據(jù)傳輸模式,尤其對剛從單片機(jī)開發(fā)過渡到USB開
評論