LED顯示屏高速數據通訊接口設計
摘要:本文闡述了利用CYPRESS公司EZ-USB FX2系列USB2.0集成芯片CY7C68013的高速Slave FIFO通用外部接口來(lái)實(shí)現PC機和LED點(diǎn)陣顯示屏間數據通訊的設計方案,給出了其接口電路的硬件原理及底層軟件的設計過(guò)程。
關(guān)鍵詞:USB2.0;CY7C68013;FIFO;LED顯示
1 引言
LED顯示屏具有亮度高,故障低、能耗少、使用壽命長(cháng)、顯示內容多樣、顯示方式豐富等優(yōu)點(diǎn),可廣泛用于公路、金融、證券、車(chē)站、碼頭、體育場(chǎng)館等公共場(chǎng)合,其顯示數據通常來(lái)自上位PC機,這就要求有一個(gè)高速通道來(lái)傳輸大量的顯示數據,USB2.0接口無(wú)疑是一個(gè)很好的解決方案。
USB由總線(xiàn)提供電源,傳輸時(shí)具有CRC檢錯、糾錯能力,能實(shí)現真正的實(shí)時(shí)熱插拔,并支持多個(gè)外設連接到同一個(gè)連接器上,從而緩解PC系統資源沖突,這些突出的優(yōu)點(diǎn)使得USB1.x在PC機外部設備上得到了廣泛的應用, USB2.0傳輸速度高達480Mb/s,是USB1.x的40倍,并向下兼容USB1.x。這樣就使得快速大量的數據傳輸得以實(shí)現。
在此強調一下兩個(gè)下文將要用到的概念:IN端點(diǎn)和OUT端點(diǎn)。此處的IN、OUT都是相對于上位PC機而言,IN端點(diǎn)指用來(lái)接收上位PC機數據的端點(diǎn),OUT端點(diǎn)則是往PC機發(fā)送數據的端點(diǎn)。
2?。茫伲罚茫叮福埃保澈?jiǎn)述
帶高速Slave FIFO通用外部接口的CY7C68013是CYPRESS公司推出的USB2.0集成微處理芯片,片上集成了USB收發(fā)器(SIE)、增強型8051單片機(其指令系統與普通8051單片機完全兼容)及8k程序存儲區? 共有4個(gè)支持USB2.0高速傳輸的“大”端點(diǎn)(2個(gè)IN端點(diǎn)和2個(gè)OUT端點(diǎn))和4kB片內RAM?該RAM 可配置為4個(gè)“大”端點(diǎn)的FIFO,其中2個(gè)“大”端點(diǎn)可以配置為雙、三、四緩沖區(FIFO),一個(gè)“大”端點(diǎn)最大可配置為2kB FIFO,更重要的是?該芯片提供了兩個(gè)用于實(shí)現USB2.0高速傳輸的可編程外部設備接口以及Slave FIFO和GPIF,這2個(gè)通用外部接口可通過(guò)與4個(gè)“大”端點(diǎn)協(xié)調工作來(lái)實(shí)現USB2.0的高速傳輸,本文只討論 Slave FIFO可編程外部設備接口的應用。
CY7C68013有56pin、100pin、128pin三種封裝,其中56pin已具備所有USB2.0功能,而100pin則在56pin基礎上增加了更多I/O和更多GPIF模式下的控制信號,128pin又在100pin基礎上增加了用于擴充數據存儲區的地址總線(xiàn)和數據總線(xiàn)。本應用就是基于可編程外部設備接口Slave FIFO,大量數據傳輸可直接由FPGA處理而無(wú)需擴充外部數據存儲區,在此選擇最經(jīng)濟的56pin CY7C68013 即可滿(mǎn)足設計要求, 其體系結構如圖1所示。
3 Slave FIFO簡(jiǎn)介
CY7C68013 雖然可以用內置增強型8051單片機直接處理USB2.0數據,但這樣會(huì )受到單片機速度的限制而無(wú)法實(shí)現USB2.0的高速傳輸。通常為了解決這一矛盾,可使CY7C68013的片上增強型8051單片機僅用于輔助處理USB設備請求和設備列舉以及協(xié)調內部“大”端點(diǎn)和外部數據處理設備(如 FPGA,ASIC? DSP,IDE等)的工作,這樣USB數據流就可繞過(guò)慢速的8051單片機而直接從“大”端點(diǎn)FIFO進(jìn)入快速外部主設備或從外部主設備進(jìn)入“大”端點(diǎn)FIFO,以實(shí)現USB2.0高速傳輸。由于CY7C68013“大”端點(diǎn)FIFO的讀寫(xiě)是受外部數據處理設備控制的,所以這些FIFO稱(chēng)為 Slave FIFO,上述這種實(shí)現USB2.0高速傳輸的模式稱(chēng)為 Slave FIFO模式。
4 CY7C68013固件程序設計
為方便應用開(kāi)發(fā),CYPRESS 公司為CY7C68013所屬的EZ-USB FX2系列提供了免費下載的Keil C環(huán)境下的USB固件庫,以及C51編寫(xiě)的固件構架程序和一些典型應用的范例程序,這使得開(kāi)發(fā)者只需理解USB數據傳輸原理,而不用鉆入艱深的USB底層協(xié)議就可完成開(kāi)發(fā),從而大大縮短開(kāi)發(fā)時(shí)間,以便把更多的精力放在外部接口設計上。
下面僅就固件程序設計進(jìn)行論述,整個(gè)固件應用程序通常包含3個(gè)程序文件:
DSCR.A5――設備描述符表文件,該文件詳細記錄了USB外圍設備的相關(guān)信息,這里需要注意的是設備描述符和端點(diǎn)描述符。設備描述符給出了USB的一般信息,其中VID/PID 碼十分重要,上位PC機根據這個(gè)碼值才能正確加載USB應用設備驅動(dòng)程序。至于端點(diǎn)描述符,每個(gè)端點(diǎn)都有,上位PC機根據端點(diǎn)描述符的內容來(lái)決定每個(gè)端點(diǎn)的帶寬要求。本設計用1個(gè)“大”端點(diǎn)EP2來(lái)接收上位PC機的顯示數據;另用一個(gè)“小”端點(diǎn)EP1來(lái)處理上位機和通訊接口間開(kāi)發(fā)者自定義的通訊協(xié)議,以使上位機可以在需要的時(shí)候查詢(xún)已被傳送的顯示數據的接收狀況,從而進(jìn)一步保證顯示數據的有序傳輸。
FW.C――固件構架程序。該固件構架程序主要用于實(shí)現USB設備列舉的諸多控制傳輸和USB總線(xiàn)協(xié)議的相關(guān)工作,完成了USB與外部兼容設備所需的基本功能。該程序的核心函數 void SetupCommand?void? 稱(chēng)作設備請求剖析器,用于處理上位PC機發(fā)送的標準USB設備請求以實(shí)現USB設置命令。
APP.C ――開(kāi)發(fā)者在相關(guān)范例應用程序的基礎上通過(guò)修改或增加一些應用程序段而形成的面向實(shí)際的應用程序。本應用中主要修改了Slave FIFO的操作方式以使Slave FIFO接收數據的速度能夠達到最大值,所采用的設置方法如下:
通過(guò)寄存器EP2CFG可將EP2設置為OUT端點(diǎn)。當需要首先考慮數據準確性時(shí),可將該端點(diǎn)傳輸模式設置為批量傳輸,其最大包長(cháng)為512字節,4緩沖區(FIFO)。而當需要傳輸視頻數據時(shí),可將該端點(diǎn)的傳輸模式設置為同步傳輸,最大包長(cháng)1024字節,雙緩沖區(FIFO)。
通過(guò)寄存器EP2FIFOCFG設置下面的內容:將“大”端點(diǎn)EP2設置為16位操作模式(一次可以操作2個(gè)字節)以與FD 16位寬度總線(xiàn)匹配; 再設置該OUT端點(diǎn)為AUTOOUT模式,這樣來(lái)自上位PC機的數據就可以不通過(guò)CY7C68013上的8051單片機,而是自動(dòng)地填充相應的“大”端點(diǎn)FIFO。
通過(guò)寄存器IFCONFIG設置這樣的工作模式:用CY7C68013產(chǎn)生48MHz IFCLK時(shí)鐘,將該時(shí)鐘作為片上SlaveFIFO與外部主設備的工作時(shí)鐘;數據的接收與發(fā)送設置為同步讀寫(xiě)方式,這樣在每個(gè)IFCLK 時(shí)鐘的上升沿就可以讀寫(xiě)2個(gè)字節,從而使數據讀寫(xiě)速度可以達到96MHz byte/s。
本設計只使用了EP2這個(gè)“大”端點(diǎn),而且 已將其配置為AUTOOUT操作模式。因此,CY7C68013可繞過(guò)片上8051而自動(dòng)將USB數據接收到EP2的FI-FO中。
需要增加的程序段是CY7C68013片內8051單片機根據上位機查詢(xún)回應當前數據接收狀況,這個(gè)程序段和普通的8051單片機232串口通訊程序類(lèi)似,不同的只是原來(lái)的232串行口中斷被EP1 IN和EP1 OUT這兩個(gè)USB2.0中斷所替換,當EP1 OUT 端點(diǎn)收到上位PC機發(fā)來(lái)的數據時(shí),將產(chǎn)生EP1 OUT中斷來(lái)處理接收到的數據;同樣當CY7C68013片內8051欲發(fā)往上位PC機的數據已通過(guò)EP1 IN發(fā)送完畢時(shí),也會(huì )產(chǎn)生EP1 IN中斷以使片內8051可以在該端點(diǎn)放入新的發(fā)送數據。
5 硬件設計
圖2所示是FPGA與CY7C68013 的連接圖,除將IFCLK作為FPGA輸入時(shí)鐘外,其它信號均在FP-GA和CY7C68013之間互連。由于FPGA片內RAM很小,本系統還使用了一片128k8的高速靜態(tài)RAM(型號為IS63LV1024,讀寫(xiě)周期為15ns)作為數據暫存器。FPGA與CY7C68013、RAM、VT6103的硬件連接見(jiàn)圖2。
從USB收到的來(lái)自上位PC機數據最終將被遠端安裝在LED顯示屏屏體內的顯示控制部件中,當RAM被填入預定數量的顯示數據時(shí),FPGA會(huì )從RAM中連續取出數據并送到與VT6103連接的4位數據輸出端口,VT6103收到4位數據后,其內部會(huì )自動(dòng)按照IEEE802.3規范對該數據進(jìn)行4B5B?轉換4位數據數據碼為5位數據碼?重新編碼,然后將5B碼送擾頻器,再經(jīng)片內整形后輸出給以太網(wǎng)變壓器,以驅動(dòng)五類(lèi)雙絞線(xiàn)并將數據傳給遠端顯示控制部件。
6 軟件設計
本系統的外部主設備接口邏輯采用VHDL硬件描述語(yǔ)言,利用ALTERA公司QUARTUS II開(kāi)發(fā)平臺進(jìn)行設計。軟件設計是以FPGA為核心的,主要由下面3個(gè)并行執行的部分組成,在此每個(gè)部分分別設計為一個(gè)VHDL進(jìn)程?process?:
進(jìn)程1:外部主設備FPGA同步讀寫(xiě)CY7C68013“大”端點(diǎn)FIFO的時(shí)序邏輯? 并把接收到的數據存入FPGA FIFO中。這部分只需要根據Slave FIFO讀寫(xiě)時(shí)序進(jìn)行設計,Slave FIFO時(shí)序圖如圖3所示。
這里需要引起注意的是兩個(gè)建立時(shí)間:其一是tOEon,這個(gè)建立時(shí)間是從SLOE拉低到 Slave FIFO數據有效。其二是tSRD ,即從SLRD信號拉低到第1個(gè)同步讀時(shí)鐘上升沿的時(shí)間。這兩個(gè)建立時(shí)間應大于等于CY7C68013數據手冊規定的時(shí)間。由于該FPGA有59904 bit的片上RAM,這里使用其中4k byte的 RAM來(lái)生成FIFO結構,這樣從Slave FIFO同步接收到的USB數據就可以直接存入FPGA片上的4k FI-FO中。圖4是此進(jìn)程的設計流程圖。
進(jìn)程2:用于完成將FPGA的FIFO中數據寫(xiě)入128kB RAM的設計。只要FPGA的FIFO中有數據,則該進(jìn)程啟動(dòng),FPGA會(huì )連續地把片內FIFO中取出的數據存入片外128kB的高速靜態(tài)RAM (IS63LV1024)中,這個(gè)片外的128kB RAM分為兩個(gè)64kB區,兩個(gè)區輪流接收來(lái)自FPGA片內FIFO的數據,當一個(gè)區接收完規定的顯示數據后,FPGA會(huì )置位send data flag去啟動(dòng)進(jìn)程3,如果FPGA片內FIFO中還有數據,則FPGA會(huì )把RAM切換到另一個(gè)區繼續接收片內FIFO中的數據,其設計流程圖如圖5所示。
其中,VT6103 接收顯示數據時(shí)序如圖7所示。每次接收4bit后,芯片內部都將自動(dòng)對每次接收到的4bit數據進(jìn)行處理并以100MHz的時(shí)鐘頻率串行差分輸出給以太網(wǎng)變壓器。
評論