1 、引言
led 顯示屏具有亮度高, 故障低、能耗少、使用壽命長、顯示內(nèi)容多樣、顯示方式豐富等優(yōu)點, 可廣泛用于公路、金融、證券、車站、碼頭、體育場館等公共場合, 其顯示數(shù)據(jù)通常來自上位PC 機, 這就要求有一個高速通道來傳輸大量的顯示數(shù)據(jù),USB2. 0 接口無疑是一個很好的解決方案。USB 由總線提供電源, 傳輸時具有CRC 檢錯、糾錯能力, 能實現(xiàn)真正的實時熱插拔, 并支持多個外設(shè)連接到同一個連接器上, 從而緩解PC 系統(tǒng)資源沖突, 這些突出的優(yōu)點使得USB1. x 在PC 機外部設(shè)備上得到了廣泛的應(yīng)用, USB2. 0 傳輸速度高達480Mb/ s ,是USB1. x 的40 倍, 并向下兼容USB1. x。這樣就使得快速大量的數(shù)據(jù)傳輸?shù)靡詫崿F(xiàn)。
2 、CY7C68013 簡述
帶高速Slave FIFO 通用外部接口的CY7C68013是CYPRESS 公司推出的USB2. 0 集成微處理芯片,片上集成了USB 收發(fā)器(SIE) 、增強型8051 單片機(其指令系統(tǒng)與普通8051 單片機完全兼容) 及8k 程序存儲區(qū), 共有4 個支持USB2. 0 高速傳輸?shù)?ldquo;大”端點(2 個IN 端點和2 個OUT端點) 和4kB 片內(nèi)RAM,該RAM可配置為4 個“大”端點的FIFO ,其中2 個“大”端點可以配置為雙、三、四緩沖區(qū)( FIFO) ,一個“大”端點最大可配置為2kB FIFO ,更重要的是,該芯片提供了兩個用于實現(xiàn)USB2. 0 高速傳輸?shù)目删幊掏獠吭O(shè)備接口以及Slave FIFO 和GPIF , 這2 個通用外部接口可通過與4 個“大”端點協(xié)調(diào)工作來實現(xiàn)USB2. 0 的高速傳輸, 本文只討論Slave FIFO 可編程外部設(shè)備接口的應(yīng)用。
CY7C68013 有56pin、100pin、128pin 三種封裝,其中56pin 已具備所有USB2. 0 功能, 而100pin 則在56pin 基礎(chǔ)上增加了更多I/ O 和更多GPIF 模式下的控制信號, 128pin 又在100pin 基礎(chǔ)上增加了用于擴充數(shù)據(jù)存儲區(qū)的地址總線和數(shù)據(jù)總線。本應(yīng)用就是基于可編程外部設(shè)備接口Slave FIFO , 大量數(shù)據(jù)傳輸可直接由FPGA 處理而無需擴充外部數(shù)據(jù)存儲區(qū),在此選擇最經(jīng)濟的56pin CY7C68013 即可滿足設(shè)計要求, 其體系結(jié)構(gòu)如圖1 所示。
圖1 56 腳CY7C68013 的體系結(jié)構(gòu)
3、硬件設(shè)計
圖2 所示是FPGA 與CY7C68013 的連接圖, 除將IFCLK作為FPGA 輸入時鐘外,其它信號均在FP2GA 和CY7C68013 之間互連。由于FPGA 片內(nèi)RAM很小, 本系統(tǒng)還使用了一片128k ×8 的高速靜態(tài)RAM(型號為IS63LV1024 , 讀寫周期為15ns) 作為數(shù)據(jù)暫存器。FPGA 與CY7C68013、RAM、VT6103 的硬件連接見圖2。
圖2 硬件連接總圖
從USB 收到的來自上位PC 機數(shù)據(jù)最終將被遠(yuǎn)端安裝在LED 顯示屏屏體內(nèi)的顯示控制部件中, 當(dāng)RAM被填入預(yù)定數(shù)量的顯示數(shù)據(jù)時, FPGA 會從RAM中連續(xù)取出數(shù)據(jù)并送到與VT6103 連接的4 位數(shù)據(jù)輸出端口, VT6103 收到4 位數(shù)據(jù)后, 其內(nèi)部會自動按照IEEE802. 3 規(guī)范對該數(shù)據(jù)進行4B5B(轉(zhuǎn)換4 位數(shù)據(jù)數(shù)據(jù)碼為5 位數(shù)據(jù)碼) 重新編碼,然后將5B碼送擾頻器,再經(jīng)片內(nèi)整形后輸出給以太網(wǎng)變壓器,以驅(qū)動五類雙絞線并將數(shù)據(jù)傳給遠(yuǎn)端顯示控制部件。
4、軟件設(shè)計
本系統(tǒng)的外部主設(shè)備接口邏輯采用VHDL 硬件描述語言,利用ALTERA 公司QUARTUSII 開發(fā)平臺進行設(shè)計。軟件設(shè)計是以FPGA 為核心的,主要由下面3 個并行執(zhí)行的部分組成, 在此每個部分分別設(shè)計為一個VHDL 進程(process) :
進程1 : 外部主設(shè)備FPGA 同步讀寫CY7C68013“大”端點FIFO 的時序邏輯, 并把接收到的數(shù)據(jù)存入FPGA FIFO 中。這部分只需要根據(jù)Slave FIFO 讀寫時序進行設(shè)計,Slave FIFO 時序圖如圖3 所示。
圖3 Slave FIFO 同步讀時序
這里需要引起注意的是兩個建立時間: 其一是tOEon , 這個建立時間是從SLOE 拉低到Slave FIFO 數(shù)據(jù)有效。其二是tSRD ,即從SLRD 信號拉低到第1 個同步讀時鐘上升沿的時間。這兩個建立時間應(yīng)大于等于CY7C68013 數(shù)據(jù)手冊規(guī)定的時間。由于該FPGA有59904 bit 的片上RAM, 這里使用其中4k byte 的RAM來生成FIFO 結(jié)構(gòu),這樣從Slave FIFO 同步接收到的USB 數(shù)據(jù)就可以直接存入FPGA 片上的4k FI2FO 中。圖4 是此進程的設(shè)計流程圖。
圖4 進程1 設(shè)計流程
進程2 : 用于完成將FPGA 的FIFO 中數(shù)據(jù)寫入128kB RAM的設(shè)計。只要FPGA 的FIFO 中有數(shù)據(jù),則該進程啟動, FPGA 會連續(xù)地把片內(nèi)FIFO 中取出的數(shù)據(jù)存入片外128kB 的高速靜態(tài)RAM( IS63LV1024) 中, 這個片外的128kB RAM分為兩個64kB 區(qū),兩個區(qū)輪流接收來自FPGA 片內(nèi)FIFO 的數(shù)據(jù), 當(dāng)一個區(qū)接收完規(guī)定的顯示數(shù)據(jù)后, FPGA 會置位send data flag 去啟動進程3 ,如果FPGA 片內(nèi)FIFO中還有數(shù)據(jù), 則FPGA 會把RAM切換到另一個區(qū)繼續(xù)接收片內(nèi)FIFO 中的數(shù)據(jù),其設(shè)計流程圖如圖5 所示。
圖5 進程2 設(shè)計流程
進程3 : 此進程由send data flag 信號啟動, 當(dāng)發(fā)送數(shù)據(jù)標(biāo)志被置位時, 此進程啟動。此后, FPGA 開始從已完成顯示數(shù)據(jù)接收的RAM區(qū)讀取數(shù)據(jù)并送到4 位寬度的數(shù)據(jù)輸出口, 此輸出口與VT6103 相連。VT6103 以25MHz 時鐘每次接收半個字節(jié)(4bit) ,然后經(jīng)片內(nèi)4B5B 編碼、整形后將數(shù)據(jù)由差分輸出口TX+ 和TX- 串行輸出, 以把數(shù)據(jù)從USB2. 0 接口模塊發(fā)給外部的顯示處理模塊。其設(shè)計流程圖如圖6所示。其中, VT6103 接收顯示數(shù)據(jù)時序如圖7 所示。每次接收4bit 后, 芯片內(nèi)部都將自動對每次接收到的4bit 數(shù)據(jù)進行處理并以100MHz 的時鐘頻率串行差分輸出給以太網(wǎng)變壓器。
圖6 進程3 設(shè)計流程
圖7 接收顯示數(shù)據(jù)時序