基于cyclone EP1C6 的LED大屏設(shè)計(jì)方案
摘要:介紹了一種基于FPGA的LED大屏設(shè)計(jì)方案,采用自頂向下的設(shè)計(jì)思想,設(shè)計(jì)了基于FPGA的雙口RAM和掃描控制電路,解決了傳統(tǒng)LED大屏設(shè)計(jì)中,控制系統(tǒng)復(fù)雜﹑可靠性差的問(wèn)題。
關(guān)鍵詞:?jiǎn)纹瑱C(jī),F(xiàn)PGA, LED大屏幕,雙口RAM
目前采用的LED大屏幕顯示系統(tǒng)的控制電路,大多由單個(gè)或多個(gè)CPU及復(fù)雜的外圍電路組成,這種電路設(shè)計(jì),單片機(jī)編程比較復(fù)雜,整個(gè)電路的調(diào)試比較麻煩,可靠性和實(shí)時(shí)性很難得到保證。針對(duì)這種情況,介紹一種基于cyclone EP1C6的LED大屏幕設(shè)計(jì)方案,該設(shè)計(jì)方案無(wú)須外掛FLASH ROM和RAM,無(wú)須任何外部功能電路,所有功能均由一片cyclone EP1C6和一片單片機(jī)SPCE061A來(lái)實(shí)現(xiàn),具有數(shù)據(jù)處理速度快、可靠性高的特點(diǎn)。其中FPGA內(nèi)部雙口RAM的運(yùn)用,為不同總線間的數(shù)據(jù)通信提供了一個(gè)新的解決方案?!?
1 系統(tǒng)結(jié)構(gòu)及功能概述
設(shè)計(jì)對(duì)象是一塊具有192×128個(gè)紅色LED點(diǎn)陣的電子屏。整塊電子屏是模塊化的結(jié)構(gòu),每4個(gè)16×16的點(diǎn)陣塊為一個(gè)單元,共3×8個(gè)這樣的單元。屏上要求連續(xù)顯示5屏內(nèi)容,且每屏具有上下左右移動(dòng)等動(dòng)畫(huà)效果,實(shí)際應(yīng)用中主控制室距離電子屏約為200米。結(jié)合設(shè)計(jì)對(duì)象的要求和大屏幕設(shè)計(jì)的特點(diǎn),系統(tǒng)結(jié)構(gòu)框圖如圖1所示。
圖1 系統(tǒng)框圖
LED大屏設(shè)計(jì)系統(tǒng)由三個(gè)主要單元組成:上位機(jī)圖象/文字編輯與發(fā)送部分單元、主控板單元、LED電子屏。系統(tǒng)上位機(jī)由一臺(tái)PC機(jī)來(lái)控制,主要是編輯、發(fā)送圖象/文字信息到主控板,而主控板對(duì)這些數(shù)據(jù)進(jìn)行處理后發(fā)送到大屏幕上顯示出來(lái)。
2 系統(tǒng)硬件設(shè)計(jì)
系統(tǒng)硬件設(shè)計(jì)主要是對(duì)主控板的設(shè)計(jì),主控板的主要功能包括:數(shù)據(jù)通訊、數(shù)據(jù)存儲(chǔ)、數(shù)據(jù)處理、掃描控制等。傳統(tǒng)LED大屏設(shè)計(jì)由作為數(shù)據(jù)存儲(chǔ)器的FLASH ROM和數(shù)據(jù)處理緩存器的RAM、CPU和可編程邏輯器件FPGA/CPLD、作為數(shù)據(jù)掃描緩沖區(qū)的RAM組成,其結(jié)構(gòu)如圖2所示。
圖2 傳統(tǒng)LED大屏設(shè)計(jì)主控板結(jié)構(gòu)圖
傳統(tǒng)主控板硬件設(shè)計(jì)需要較多的外圍器件(有的設(shè)計(jì)中還不止一個(gè)CPU和CPLD),不僅硬件結(jié)構(gòu)和連線復(fù)雜,而且設(shè)計(jì)成本較高。此外,由于LED大屏幕數(shù)據(jù)量很大,各個(gè)分立存儲(chǔ)器之間、單片機(jī)與FPGA/CPLD之前數(shù)據(jù)實(shí)時(shí)可靠的傳輸也是一個(gè)問(wèn)題。為解決這些問(wèn)題,主控板硬件電路的設(shè)計(jì)選用一片凌陽(yáng)單片機(jī)SPCE061A和一片F(xiàn)PGA cyclone EP1C6,其結(jié)構(gòu)框圖如圖3所示。
2.1 cyclone EP1C6和SPCE061A簡(jiǎn)介
cyclone EP1C6是Altera推出的一款高性價(jià)比FPGA,工作電壓3.3V,內(nèi)核電壓1.5V。采用0.13μm工藝技術(shù),全銅SRAM工藝,其密度為5980個(gè)邏輯單元,包含20個(gè)128×36位的RAM塊(M4K模塊),總的RAM空間達(dá)到92160位。內(nèi)嵌2個(gè)鎖相環(huán)電路和一個(gè)用于連接SDRAM的特定雙數(shù)據(jù)率接口,工作頻率高達(dá)200MHz[3]。
SPCE061A是凌陽(yáng)科技推出的一款16位微控制器,內(nèi)嵌32K字FLASH和2K字SRAM,并集成了ICE仿真電路接口﹑通用I/O端口﹑定時(shí)器/計(jì)數(shù)器﹑中斷控制﹑CPU時(shí)鐘﹑模數(shù)轉(zhuǎn)換器A/D﹑DAC輸出﹑通用異步串行輸入輸出接口、串行輸入輸出接口﹑低電壓檢測(cè)/低電壓復(fù)位﹑看門(mén)狗等功能。CPU最高可工作在49MHz的主頻下,較高的處理速度使SPCE061A能夠非常容易、快速地處理復(fù)雜的數(shù)字信號(hào)[1]。
2.2主控板結(jié)構(gòu)及功能
主控板結(jié)構(gòu)如圖3所示,上位機(jī)發(fā)送的數(shù)據(jù)通過(guò)雙絞傳送到RS422接收模塊[2],經(jīng)轉(zhuǎn)換后送至單片機(jī),由單片機(jī)的IOB7口以UART中斷的方式接收上位機(jī)發(fā)送的數(shù)據(jù)。單片機(jī)將接收的串口數(shù)據(jù)以兩個(gè)字節(jié)為單位逐一寫(xiě)入內(nèi)置的FLASH中。單片機(jī)內(nèi)部的2K字SRAM在此作為一個(gè)緩存區(qū),每次單片機(jī)要向FPGA中寫(xiě)一屏新的數(shù)據(jù)時(shí),先按特定的地址從FLASH中讀出數(shù)據(jù)并存放到SRAM中,再將SRAM的數(shù)據(jù)并行寫(xiě)到FPGA的雙口RAM中。
FPGA在其內(nèi)部配置一個(gè)雙口RAM緩存單片機(jī)寫(xiě)入的數(shù)據(jù),同時(shí)將這些數(shù)據(jù)按照大屏的結(jié)構(gòu)和掃描電路的特點(diǎn),從雙口RAM中有選擇性地讀出,并將讀出的數(shù)據(jù)由并轉(zhuǎn)串,按照一定的時(shí)序?qū)Υ笃咙c(diǎn)陣進(jìn)行、列掃描,這個(gè)時(shí)序也是由FPGA產(chǎn)生的。掃描數(shù)據(jù)和時(shí)序控制信號(hào)從FPGA的I/O口輸出后,經(jīng)過(guò)一個(gè)由74LS245構(gòu)成的隔離驅(qū)動(dòng)電路送至大屏幕。
2.3基于FPGA的雙口RAM的配置
基于FPGA的雙口RAM的配置是本設(shè)計(jì)的獨(dú)特之處。RAM作為中介將單片機(jī)送來(lái)的數(shù)據(jù)在LED電子屏上顯示出來(lái),由于數(shù)據(jù)顯示是一種動(dòng)態(tài)掃描方式,若采用一個(gè)RAM區(qū),單片機(jī)在寫(xiě)RAM時(shí),F(xiàn)PGA只能處于等待狀態(tài),F(xiàn)PGA讀RAM時(shí),單片機(jī)寫(xiě)數(shù)據(jù)也無(wú)法同時(shí)進(jìn)行,導(dǎo)致屏幕刷新頻率降低,動(dòng)態(tài)掃描不連續(xù),影響屏幕的顯示效果。因此設(shè)計(jì)了兩個(gè)同樣大小的RAM區(qū):A區(qū)和B區(qū)。當(dāng)單片機(jī)寫(xiě)A區(qū)時(shí), FPGA讀B區(qū)的數(shù)據(jù),單片機(jī)寫(xiě)B(tài)區(qū)時(shí),F(xiàn)PGA讀A區(qū)的數(shù)據(jù)。此外,由于FPGA掃描模塊可以達(dá)到很高的掃描速率,而單片機(jī)的運(yùn)行速率則相對(duì)較低,且兩個(gè)模塊間有大量的數(shù)據(jù)交換,為此選擇高速雙口RAM,一方面保證單片機(jī)和FPGA同時(shí)讀寫(xiě)數(shù)據(jù),另一方面保證了數(shù)據(jù)的處理速度。
cyclone EP1C6提供了20個(gè)具有異步﹑雙端口﹑帶寄存器輸入口﹑可選擇的帶寄存器輸出口的存儲(chǔ)模塊—M4K模塊,每個(gè)M4K模塊的存儲(chǔ)容量為4Kbit。在QUARTUS軟件中進(jìn)行簡(jiǎn)單的設(shè)置,就可以將M4K模塊配置成雙口RAM,數(shù)據(jù)和地址的位寬可根據(jù)實(shí)際需要進(jìn)行選擇。本文設(shè)計(jì)的RAM可容納兩屏的數(shù)據(jù),數(shù)據(jù)位寬為16位,地址為12位,其中地址的最高位作RAM分區(qū)用,每個(gè)區(qū)存儲(chǔ)一屏的數(shù)據(jù),兩屏讀寫(xiě)同時(shí)進(jìn)行,雙口RAM的配置如圖4所示。
圖4 雙口RAM配置
其中wren是單片機(jī)往FPGA中寫(xiě)入數(shù)據(jù)的寫(xiě)使能信號(hào),wraddress[11..0]是寫(xiě)的地址信號(hào),wrclock是寫(xiě)時(shí)鐘,data[15..0]是寫(xiě)的數(shù)據(jù),rdaddress[11..0]是讀的地址信號(hào),rdclock是讀數(shù)據(jù)的時(shí)鐘信號(hào),q[15..0]是讀出的數(shù)據(jù)。 [!--empirenews.page--]
2.4基于FPGA的獨(dú)立掃描單元
點(diǎn)陣模塊是紅色LED共陰模塊,4塊16×16點(diǎn)陣模塊連接成64×16點(diǎn)陣作為一個(gè)單元進(jìn)行控制,整個(gè)大屏有3×8個(gè)這樣的單元。將LED的公共接口作為行控制,行掃描信號(hào)同時(shí)控制著一行中多個(gè)LED的通斷,以每個(gè)LED流過(guò)的電流為10mA計(jì)算,一個(gè)單元有64列,行掃描信號(hào)至少得提供1A左右的電流,因此,在掃描信號(hào)送到LED之前必須經(jīng)過(guò)一個(gè)三極管以提高驅(qū)動(dòng)能力。三極管選用高速中功率達(dá)林頓管TIP127,它的集電極吸收電流最大可達(dá)5A,保證行驅(qū)動(dòng)能力。由于點(diǎn)陣的每行需要一個(gè)三極管驅(qū)動(dòng),所以一個(gè)64×16的單元塊需要16個(gè)TIP127。行掃描電路采用帶鎖存的移位寄存器74LS595來(lái)控制,每片74LS595控制8行點(diǎn)陣的選通與否。由于采用的掃描方式為每隔8行數(shù)據(jù)同時(shí)掃描,一片74LS595每次只能點(diǎn)亮一行的數(shù)據(jù),每行點(diǎn)亮的時(shí)間相等即占空比為1/8,因此屏幕亮度非常均衡。
列掃描電路的功能是把要顯示的行對(duì)應(yīng)的列數(shù)據(jù)送到LED的陰極,列掃描也是由74LS595控制的。本文設(shè)計(jì)的屏幕的硬件結(jié)構(gòu)特點(diǎn)是:每8行LED的陰極是連在一起的,每片74LS595控制8列數(shù)據(jù),每隔8行同時(shí)掃描,對(duì)于一個(gè)64×16的點(diǎn)陣單元,共需要8×2個(gè)74LS595控制,每行上的74LS595都是級(jí)聯(lián)起來(lái)的。每完成一次列掃描,F(xiàn)PGA都要輸出一個(gè)鎖存信號(hào)給74LS595以鎖存列數(shù)據(jù),接著輸出行掃描信號(hào)點(diǎn)亮對(duì)應(yīng)的行,再對(duì)行掃描數(shù)據(jù)進(jìn)行鎖存,如此循環(huán)往復(fù)實(shí)現(xiàn)整個(gè)大屏幕的動(dòng)態(tài)實(shí)時(shí)顯示功能[4]。
由于FPGA在行列掃描之前已經(jīng)對(duì)數(shù)據(jù)進(jìn)行并串轉(zhuǎn)換,數(shù)據(jù)都是串行輸出的,每隔8行同時(shí)掃描,整個(gè)屏幕行掃描只需占用1個(gè)I/O口,列掃描只需占用16個(gè)I/O口,從而大大減少了對(duì)I/O的占用。采用FPGA設(shè)計(jì)掃描邏輯,掃描的關(guān)鍵不在是硬件連接,而是對(duì)芯片資源的配置。
3 軟件設(shè)計(jì)
系統(tǒng)的軟件設(shè)計(jì)由三部分組成:上位機(jī)圖象/文字編輯與發(fā)送軟件設(shè)計(jì),單片機(jī)控制單元軟件設(shè)計(jì),F(xiàn)PGA控制單元軟件設(shè)計(jì)。
3.1 上位機(jī)軟件設(shè)計(jì)
上位機(jī)的圖象/文字編輯與發(fā)送軟件由Visual Basic編寫(xiě),只須在界面中將屏幕大小設(shè)置為192×128,串口選擇COM1或COM2,波特率設(shè)置為9600,設(shè)置每屏起始地址和要發(fā)送的屏數(shù),調(diào)入包含相關(guān)信息的文件,點(diǎn)擊“發(fā)送”按鈕即可。該軟件適用于任何大小彩色/單色屏,提供了豐富的圖形/文字編輯﹑修改功能,也可以直接調(diào)用WINDOWS中的16色畫(huà)圖文件(*.bmp)。
3.2 單片機(jī)控制單元軟件設(shè)計(jì)
單片機(jī)控制單元的軟件設(shè)計(jì)主要實(shí)現(xiàn)三大功能:串行數(shù)據(jù)接收和存儲(chǔ)、數(shù)據(jù)輸出和圖象顯示方式變換。串行數(shù)據(jù)接收部分主要是通過(guò)UART中斷接收并保存數(shù)據(jù)。圖象顯示方式變換部分實(shí)現(xiàn)圖象的變換如上移、下移、左移、右移等以實(shí)現(xiàn)豐富多彩的圖象顯示效果。單片機(jī)軟件設(shè)計(jì)是在凌陽(yáng)科技的集成開(kāi)發(fā)環(huán)境unSP IDE下完成的,主要由一個(gè)C文件和一個(gè)ASM文件組成,C文件包括5屏數(shù)據(jù)的循環(huán)送顯和圖像顯示方式變換,匯編文件包括中斷服務(wù)子程序和其他函數(shù)調(diào)用的子程序。
3.3 FPGA控制單元軟件設(shè)計(jì)
FPGA控制單元的設(shè)計(jì)是在QUARTUSII環(huán)境下完成,并用硬件描述語(yǔ)言VHDL描述,主要功能是配置雙口RAM、設(shè)計(jì)掃描控制電路。該單元的軟件設(shè)計(jì)模塊如圖5所示。
圖5 FPGA控制單元軟件設(shè)計(jì)框圖
雙端口RAM的配置完全通過(guò)在QUARTUS環(huán)境中設(shè)置菜單實(shí)現(xiàn),配置完成后將自動(dòng)生成一個(gè)VHDL文件,描述雙口RAM的內(nèi)部邏輯功能,雙口RAM在整個(gè)程序設(shè)計(jì)作為一個(gè)元件調(diào)用。
基于FPGA的掃描模塊的軟件設(shè)計(jì)如下:首先對(duì)FPGA總時(shí)鐘clk進(jìn)行64分頻得到clk1,clk1的低電平其間FPGA讀取雙口RAM的數(shù)據(jù),每4個(gè)clk周期讀一個(gè)16位的數(shù)據(jù),共讀出16個(gè)數(shù)。clk1的高電平期間FPGA進(jìn)行列掃描,每2個(gè)clk周期同時(shí)輸出16個(gè)數(shù)的1位,共32個(gè)周期將這16個(gè)數(shù)由并轉(zhuǎn)串輸出到16根數(shù)據(jù)線上,由于單片機(jī)寫(xiě)RAM的速度低于FPGA對(duì)數(shù)據(jù)的處理速度,剩下的32個(gè)clk周期用于等待單片機(jī)完成一個(gè)區(qū)的寫(xiě)操作。12個(gè)clk1周期后,一行的數(shù)據(jù)全部掃描完畢,F(xiàn)PGA輸出一個(gè)列鎖存信號(hào)給74LS595鎖存這些數(shù)據(jù),同時(shí)輸出行掃描信號(hào)和行鎖存信號(hào),接著掃描第二行,由于采用16根數(shù)據(jù)線進(jìn)行隔8行掃描,整個(gè)LED電子屏128行只要完成8次行掃描即可,時(shí)序如圖6所示。
圖6 掃描時(shí)序圖
5 結(jié)束語(yǔ)
通過(guò)采用自頂向下的設(shè)計(jì)思想,運(yùn)用EDA技術(shù)實(shí)現(xiàn)FPGA內(nèi)部雙口RAM的配置和掃描控制電路的設(shè)計(jì),將復(fù)雜的系統(tǒng)設(shè)計(jì)集成在一起,只需一片F(xiàn)PGA就可以實(shí)現(xiàn)所需的功能,高集成度帶來(lái)的不僅是成本降低,還提高了系統(tǒng)的穩(wěn)定性和可靠性。基于cyclone EP1C6 的LED 大屏設(shè)計(jì)方案已成功應(yīng)用于我院的LED圖文發(fā)布電子屏,實(shí)踐證明:本系統(tǒng)能以多種播出方式顯示各種字體和型號(hào)的文字和圖形信息,與同類(lèi)設(shè)計(jì)相比,畫(huà)面清晰、性能穩(wěn)定、操作使用簡(jiǎn)單,具有很好的應(yīng)用前景。
參考文獻(xiàn)
1 羅亞非. 凌陽(yáng)16位單片機(jī)應(yīng)用基礎(chǔ). 北京:北京航空航天大學(xué)出版社,2003;12:163~173
2 石東海. 單片機(jī)數(shù)據(jù)通信技術(shù)從入門(mén)到精通. 西安:西安電子科技大學(xué)出版社,2002;11:104~109
3 潘松,黃繼業(yè). EDA技術(shù)實(shí)用教程. 北京:科學(xué)出版社,2002;10:231~237
4 李?lèi)?ài)國(guó). 模塊化LED電子大屏幕的設(shè)計(jì)與實(shí)現(xiàn). 計(jì)算機(jī)應(yīng)用研究,1998;2:74~75