久久ER99热精品一区二区-久久精品99国产精品日本-久久精品免费一区二区三区-久久综合九色综合欧美狠狠

新聞中心

EEPW首頁 > 嵌入式系統 > 設計應用 > Ports模式下CY7C68013和FPGA的數據通信

Ports模式下CY7C68013和FPGA的數據通信

——
作者:西安電子科技大學 袁衛 趙小明 張建奇 時間:2007-01-26 來源:《單片機與嵌入式系統應用》 收藏

引言

本文引用地址:http://cqxgywz.com/article/21387.htm

通用串行總線(usb)具有快速、雙向、大批量傳輸、廉價以及可實現熱插拔等優點,cypress公司的fx2系列芯片之一cy7c68013是最早符合usb2.0標準的微控制器,集成了符合usb2.0的收發器、串行接口引擎(sie)、增強型8051內核以及可編程的外圍接口,實現基于usb2.0的接口數據通信,cy7c68013可配置成3種不同的接口模式;ports(端口模式)、gpif master(可編程接口模式)和slave fifo(主從模式),其中,后兩種模式利用其內部集成的可以獨立于微處理器而自動處理usb事務的硬件(usb核),數據的傳輸通過執行usb本身的協議來完成,微處理器可不參與數據傳輸,從而使數據的傳輸速率大大地提高,同時也簡化了固件代碼的編寫。后兩種方式由于克服了微處理器這個帶寬"瓶頸",因而廣泛應用于大批量的數據傳輸,如圖像、視頻等信號的采集。

而對前一種ports(端口模式),文獻中介紹較少,作為一種最基本的數據傳輸方式,其數據傳輸主要由固件程序完成,需要cpu的參與,因此數據傳輸速率比較低,適用于傳輸速率要求不高的場合,而且由于fx2內部集成有8051內核,對一個剛從單片機的開發過渡到usb開發的工程人員來說,也不失是一種有效的數據傳輸方式,現以一個工程開發的實例來詳細說明一下在ports模式下如何實現數據一雙向傳輸。

1 設計要求

主機通過usb接口以4kb/s的速率分別向兩個通道發送數據序列,并由外設的d/a轉換器完成數據的轉換,同時,由外部的兩個a/d轉換器以400kb/s的采樣率完成數據的采集,采集后的數字信號也經usb接口傳送至主機存儲,其中,usb接口芯片采用cypress公司的cy7c68013,fpga采用altera公司的ep1c6q240c8,圖1為其數據的多路傳輸系統框圖。

2 usb

數據多路傳輸硬件

2.1 ez-usb fx2 cy7c68013

ez-usb fx2 cy7c68013支持usb2.0數據傳輸,其內部結構及功能在其他文獻已有詳細的介紹,現針對此芯片在本電路的作用進行簡要的說明,在設計中主要利用cy7c68013的ports接口模式完成多路數據的傳輸,usb和fpga之間數據和狀態的傳輸由cy7c68013的ioa接口完成,iob接口中的iob0-iob2口線作為usb和fpga之間的控制線。cy7c68013內部的ep2端口設置為512字節雙緩沖、out、塊傳輸,作為主機向外設發送數據的緩沖區;ep6端口設置為512字節雙緩沖,in、塊傳輸,作為外設向數據傳送數據的緩沖區。

2.2 fpga芯片ep1c6q240c8

fpga采用altera公司的cyclone 芯片ep1c6q240c8。在這里fpga的作用有3個:其一,給兩路d/a轉通道各分配兩個128×8位的ram區,作為從主機向外設發送數據的緩存。其二、給兩路a/d轉換通道各分配兩個512×8位的ram區,作為從外設向主機傳送數據的緩存,由于兩路數據的傳輸和采集共用一個8位數據總線,因此,數據總線要針對不同的接收和發送來回切換,因而每個通道的兩路分別采用兩個ram塊,起到雙緩沖作為,以防傳輸時數據"溢出"的。其三,由于數據總線要針對不同通道來回切換,控制切換的過程由狀態寄存器來完成,因此,要在fpga內部設置一個狀態寄存器,所設置的狀態寄存器僅包含兩位,分別標識兩個通道的數據ram的"滿"或"空"的狀態,以確定當前應該為哪一個通道發送或接收數據。

3 通信協議的制定

采用cy7c68013的ports模式實現數據通信,與fifo和gpif模式不同,后兩種模式在數據傳輸方面主要由usb核完成,所需的控制信號由cy7c68013自身來提供。而對于ports模式,控制信號沒有專用的口線,那么就必須用其他通用的i/o接口來完成,在此,采用iob0-iob2作為usb和fpga之間的控制線,由于自定義的3條線是通用口線,沒有實際的意義,因此在usb和fpga之間首先要制定兩者的通信協議,即給這3條口線賦以實際的功能。

ale(iob0):例如ale的上升沿,通過ioa端口向fpga傳送控制指令,例如,當ioa=01h時,表示系統開始工作,a/d和d/a轉換器開始啟動。當ioa=88h時,表示轉換結束,fpga將不再接收或發送數據,當ioa=02h時,表示cy7c68013將讀取fpga內狀態寄存器的內容,由讀取兩狀態標志位的0或1,來判斷兩個通道內的4個數據緩沖器的"滿"或"空"狀態,若d/a通道的任一個數據緩沖區為"空",則由fpga向狀態寄存器的第一個狀態標志位內填1;否則填0;同理,若a/d通道的任一個數據緩沖區為"滿",則由fpga向狀態寄存器的第二個狀態標志位內填1;否則填0;當ioa=03h時,表示主機將通過usb向d/a通道發送轉換數據,每次發送256個字節,前128字節為d/a轉換的1通道,后128字節為2通道,當ioa=04h時,表示主機將要接收由a/d通道傳送來的數據。

rd(iob1):利用rd的上升沿通過ioa端口讀取d/a轉換器轉換來的數據。

wr(iob2):利用wr的上升沿通過ioa端口向a/d轉換器發送由主機傳送來的數據。

4 軟件的實現

usb與fpga在ports模式下數據的傳輸,由于是由cy7c68013內部的cpu核來實現的,因此,對固件程序的編寫顯得比較重要,總的來說,固件程序的編寫有兩種方式:一是由于cy7c68013的內部集成有增強型8051內核,對熟悉8051匯編語言的用戶來說,可以直接利用會匯編語言編寫高效的固件代碼;二是cypress公司ez-usb fx2系列配套有現成的固件程序框架函數,用戶需要時,只需添加相應的用戶程序即可。當然,用戶程序中的數據通信的實現也就是如何完成通信協議的過程。

在此,采用后者來完成cy7c68013和fpga的數據通信,實現數據通信功能的部分軟件代碼如下(以下代碼均可寫在框架函數void td_poll(void)內):


5 總結

cy7c68013和fpga的數據通信中,采用基本的ports接口模式,利用自動指針方法,通過數字示波器的觀察,完成1kb的傳送,大約需要750μs。與另外兩種模式相比,雖然數據傳輸的速度較低,但作為一種數據傳輸模式,尤其對剛從單片機開發過渡到usb開發的工程人員來說,也不失為一種有效的開發方式。




關鍵詞:

評論


相關推薦

技術專區

關閉