劉 念,張 弛
(武漢紡織大學(xué)機(jī)械工程與自動(dòng)化學(xué)院,武漢 430200)
現(xiàn)有高速旋轉(zhuǎn)LED 顯示系統(tǒng)為了提高顯示分辨率,往往采用處理速度較快ARM+FPGA的結(jié)構(gòu)形式[1-2],此種模式數(shù)據(jù)處理將ARM 模塊的大部分時(shí)間用在視頻文件的處理轉(zhuǎn)換上,大大降低了視頻文件數(shù)據(jù)的傳輸和讀取速度。現(xiàn)有的高速旋轉(zhuǎn)LED 顯示系統(tǒng)往往采用機(jī)械式的供電系統(tǒng)[3-8],由于電機(jī)與電刷不斷的摩擦,電刷會(huì)產(chǎn)生磨損,因此需要定時(shí)更換電刷,機(jī)械式的供電系統(tǒng)結(jié)構(gòu)往往比較復(fù)雜,給產(chǎn)品制作增加了難度。
為了解決上述問(wèn)題,本文提供一種基于雙口RAM雙CPU的高速旋轉(zhuǎn)LED 顯示方法,將視頻圖片文件在上位機(jī)的時(shí)候就轉(zhuǎn)化為L(zhǎng)ED 格式的可直接用于顯示的數(shù)據(jù),無(wú)需再將數(shù)據(jù)在控制板的ARM 模塊中轉(zhuǎn)化,加快數(shù)據(jù)的傳輸與讀取速度。采用2個(gè)CPU加1個(gè)雙口RAM以及1個(gè)CPLD實(shí)現(xiàn)更高的分辨率。采用無(wú)線供電的方式簡(jiǎn)化了機(jī)械式復(fù)雜的機(jī)械結(jié)構(gòu),并且無(wú)需定時(shí)更換電刷,解決了現(xiàn)有技術(shù)中的問(wèn)題。使用自己設(shè)計(jì)的文件管理系統(tǒng),以數(shù)據(jù)流的形式存放在NANDFLASH之中,相較于FAT32 格式的文件,程序執(zhí)行效率跟高,克服了文件數(shù)據(jù)讀取慢的問(wèn)題。
基于雙口RAM雙CPU的高速旋轉(zhuǎn)LED顯示方法如圖1所示,具體按照以下步驟進(jìn)行。
(1)上位機(jī)將所需要的視頻及圖像文件通過(guò)物聯(lián)網(wǎng)模塊的串口傳送到第1 處理器(CPU),第1 處理器根據(jù)接收的數(shù)據(jù)信息將相應(yīng)數(shù)據(jù)保存在Nand Flash讀寫(xiě)模塊指定的地址。

圖1 高速旋轉(zhuǎn)LED顯示系統(tǒng)的數(shù)據(jù)傳遞流程圖
(2)第1 處理器通過(guò)數(shù)據(jù)線和控制線將視頻及圖像文件信息從Nand Flash 讀寫(xiě)模塊指定的地址中讀出,通過(guò)數(shù)據(jù)線送入雙口RAM單元指定地址;雙口RAM單元指定地址是通過(guò)第1處理器的數(shù)據(jù)地址復(fù)用線送出鎖存在CPLD單元中,和另一端口的低四位組成13位的地址線來(lái)確定的。雙口RAM中的數(shù)據(jù)是由處理器1 寫(xiě)入,處理器2 讀出。處理器2 每次讀出256 字節(jié)。雙口RAM 的大小為8 k,故將雙口RAM 分為32 個(gè)空間,每個(gè)空間256字節(jié)。當(dāng)系統(tǒng)剛通電的時(shí)候,處理器1會(huì)先將雙口RAM 8k的數(shù)據(jù)寫(xiě)滿,之后處理器2每隔一個(gè)固定的時(shí)間會(huì)來(lái)讀取一次256字節(jié)數(shù)據(jù),讀完之后會(huì)向處理器1發(fā)送一個(gè)信號(hào),處理器1接收到信號(hào)之后會(huì)將接下來(lái)的數(shù)據(jù)寫(xiě)入剛讀取完的數(shù)據(jù)空間中,由于處理器1的寫(xiě)入速度要快于處理器2的讀取速度,所以數(shù)據(jù)總是能在處理器2讀取之前更新。
(3)第2 處理器通過(guò)數(shù)據(jù)線將雙口RAM 單元指定地址中的數(shù)據(jù)讀出,雙口RAM 單元指定的地址是通過(guò)第2 處理器的數(shù)據(jù)地址復(fù)用線送出鎖存在CPLD單元之中,和另一端口的低四位組成13位的地址線來(lái)確定的。
(4)第2 處理器將從雙口RAM 單元指定地址中讀出的數(shù)據(jù)通過(guò)數(shù)據(jù)線傳輸?shù)紺PLD單元之中鎖存,再通過(guò)CPLD單元將數(shù)據(jù)傳輸?shù)絃ED驅(qū)動(dòng)模塊。
基于雙口RAM雙CPU的高速旋轉(zhuǎn)LED顯示系統(tǒng)如圖2所示,包括物聯(lián)網(wǎng)模塊、Nand Flash 讀寫(xiě)模塊、雙口RAM 模塊、CPLD單元、霍爾傳感器模塊、基于Nand Flash讀寫(xiě)模塊的LED文件管理系統(tǒng)、無(wú)線供電發(fā)射模塊和無(wú)線供電接受模塊。

圖2 高速旋轉(zhuǎn)LED顯示系統(tǒng)的模塊框圖
(1)雙口RAM模塊,包括雙口RAM單元、第1處理器和第2 處理器。第1 處理器與第2 處理器通過(guò)雙口RAM 單元、CPLD 單元建立聯(lián)系,利用雙口RAM 單元和雙核處理器(CPU)提高系統(tǒng)讀寫(xiě)速度。
(2)CPLD 單元,通過(guò)連接第1 處理器和第2 處理器的數(shù)據(jù)線和鎖存控制線,達(dá)到第1處理器和第2處理器的數(shù)據(jù)地址線分時(shí)復(fù)用的效果,拓展了LED驅(qū)動(dòng)模塊8所需的數(shù)據(jù)線。
(3)霍爾傳感器模塊,外接于第1處理器,用于檢測(cè)LED棒的位置和旋轉(zhuǎn)一圈所花費(fèi)的時(shí)間。
(4)基于Nand Flash 讀寫(xiě)模塊的LED 文件管理系統(tǒng),包括兩個(gè)部分,一個(gè)是文件索引部分,另外一個(gè)是文件存儲(chǔ)部分。文件索引部分主要包括文件名、文件大小、文件存儲(chǔ)地址。文件存儲(chǔ)部分是用來(lái)存儲(chǔ)LED 文件。當(dāng)有文件從客戶端傳入設(shè)備時(shí),LED 文件管理系統(tǒng)會(huì)根據(jù)發(fā)過(guò)來(lái)的頭文件信息將文件名、文件大小存入指定的文件索引區(qū)域。并根據(jù)文件系統(tǒng)的存儲(chǔ)情況分配文件存儲(chǔ)的地址,將此地址保存在相應(yīng)的文件索引區(qū)域。然后對(duì)接收到的數(shù)據(jù)包進(jìn)行校驗(yàn),校驗(yàn)無(wú)誤后將數(shù)據(jù)包存入指定地址,如此循環(huán),直到將整個(gè)文件傳輸完畢。
(5)無(wú)線供電發(fā)射模塊,與PWM波發(fā)生模塊在同一塊電路板上,PWM波發(fā)生模塊為直流無(wú)刷電機(jī)提供可變占空比的PWM波來(lái)改變電機(jī)旋轉(zhuǎn)的速度。無(wú)線供電發(fā)射模塊外接12 V的直流電源。
(6)無(wú)線供電接受模塊,與雙口RAM 單元5、CPLD 單元、Nand Flash 讀寫(xiě)模塊、物聯(lián)網(wǎng)模塊、霍爾傳感器模塊、LED驅(qū)動(dòng)模塊8在同一塊電路板上。
無(wú)線供電接受模塊與雙口RAM 單元、CPLD 單元、Nand Flash讀寫(xiě)模塊、物聯(lián)網(wǎng)模塊、霍爾傳感器模塊、LED驅(qū)動(dòng)模塊在同一塊電路板上,接受來(lái)自于無(wú)線供電發(fā)射模塊的能量產(chǎn)生穩(wěn)定的5.0 V 的電壓,5.0 V 直流電源在通過(guò)3.3 V 穩(wěn)壓器模塊產(chǎn)生穩(wěn)定3.3 V 電源,從而為雙口RAM 單元、CPLD 單元、Nand Flash讀寫(xiě)模塊、物聯(lián)網(wǎng)模塊、霍爾傳感器模塊提供穩(wěn)定的3.3 V電源。
關(guān)于靜態(tài)圖像顯示不穩(wěn)定的解決方法:由于圖像顯示的穩(wěn)定性是依賴于電機(jī)轉(zhuǎn)動(dòng)的穩(wěn)定性決定的,當(dāng)電機(jī)帶動(dòng)LED葉片旋轉(zhuǎn)時(shí),電機(jī)的速度受到空氣阻力和其他因素的影響,旋轉(zhuǎn)速度會(huì)產(chǎn)生波動(dòng),進(jìn)而影響圖像顯示的穩(wěn)定性。為了解決這一問(wèn)題,在控制系統(tǒng)板上實(shí)時(shí)監(jiān)測(cè)LED 葉片旋轉(zhuǎn)速度,根據(jù)監(jiān)測(cè)到的速度來(lái)調(diào)整控制板的定時(shí)時(shí)間,以達(dá)到定時(shí)時(shí)間與葉片旋轉(zhuǎn)速度相匹配。
如圖1所示,首先上位機(jī)1(PC端)會(huì)根據(jù)播放的視頻生成裸眼3D 設(shè)備能夠識(shí)別的LED 文件,PC 端的客戶端通過(guò)連接物聯(lián)網(wǎng)模塊2發(fā)出的WIFI信號(hào)使得設(shè)備與PC端處于同一局域網(wǎng)之中,然后PC端將LED文件分成一個(gè)個(gè)數(shù)據(jù)包,并將數(shù)據(jù)包發(fā)給物聯(lián)網(wǎng)模塊2,物聯(lián)網(wǎng)模塊2接受到數(shù)據(jù)包之后,將數(shù)據(jù)包再轉(zhuǎn)發(fā)給第1 處理器3。第1 處理器3 對(duì)數(shù)據(jù)包進(jìn)行校驗(yàn),看在傳輸?shù)倪^(guò)程中是否有數(shù)據(jù)出錯(cuò)。校驗(yàn)無(wú)誤后,第1處理器3 將數(shù)據(jù)包存入Nand Flash 讀寫(xiě)模塊4。當(dāng)設(shè)備要顯示圖像的時(shí)候,第1 處理器3 從Nand Flash 讀寫(xiě)模塊4 中讀出LED文件的數(shù)據(jù)包并將數(shù)據(jù)包傳遞到雙口RAM 單元5。與此同時(shí),第2 處理器6 將雙口RAM 單元5 中的數(shù)據(jù)讀出傳遞給CPLD單元7,CPLD單元7再將數(shù)據(jù)包傳輸給LED驅(qū)動(dòng)模塊8。
如圖3 所示,主程序在進(jìn)入消息循環(huán)狀態(tài)之前初始化Nand Flash讀寫(xiě)模塊、定時(shí)器和外部中斷。初始化Nand Flash讀寫(xiě)模塊的作用有兩個(gè):一個(gè)是讀取文件的播放地址,使系統(tǒng)進(jìn)入播放狀態(tài);另一個(gè)就是讀取文件存儲(chǔ)的狀態(tài)。初始化定時(shí)器和外部中斷的作用是為顯示圖像做準(zhǔn)備。當(dāng)裸眼3D葉片旋轉(zhuǎn)起來(lái)的時(shí)候,控制板上的霍爾傳感器感應(yīng)到固定在電機(jī)上的零位磁鐵后會(huì)產(chǎn)生一個(gè)外部中斷,進(jìn)入外部中斷,執(zhí)行外部中斷程序。首先外部中斷程序會(huì)重置定時(shí)器,再開(kāi)啟定時(shí)器。然后再根據(jù)初始化的文件地址讀取第一個(gè)分度的數(shù)據(jù)并顯示。在過(guò)了定時(shí)器定的時(shí)間之后,程序會(huì)進(jìn)入定時(shí)器中斷,執(zhí)行定時(shí)器中斷程序。定時(shí)器中斷程序首先會(huì)根據(jù)上一次讀取數(shù)據(jù)的位置更新文件讀取地址,然后讀取一個(gè)分度數(shù)據(jù)(256字節(jié))并顯示。如此循環(huán)直到霍爾傳感器再次感應(yīng)到零位后進(jìn)行下一幀的數(shù)據(jù)讀取。

圖3 高速旋轉(zhuǎn)LED顯示系統(tǒng)的程序流程圖
實(shí)現(xiàn)高分辨率的實(shí)質(zhì)是在一定的時(shí)間之內(nèi),處理器能夠讀取足夠多的數(shù)據(jù)來(lái)生成一幀的畫(huà)面。這就要求處理器的速度足夠快。所以大多數(shù)技術(shù)人員都采用速度較快的STM32 單片機(jī)。而本文使用兩個(gè)成本較低的單片機(jī)加上用匯編寫(xiě)的驅(qū)動(dòng)程序同樣能夠達(dá)到較高的分辨率。實(shí)現(xiàn)的難度體現(xiàn)在要協(xié)調(diào)好兩個(gè)處理器之間的數(shù)據(jù)寫(xiě)入與數(shù)據(jù)讀取。其次使用匯編語(yǔ)言來(lái)實(shí)現(xiàn)更高效的代碼。本文在視頻圖像文件傳輸之前就將視頻圖像文件通過(guò)軟件轉(zhuǎn)化為裸眼3D設(shè)備可以執(zhí)行的LED文件。通過(guò)使用雙處理器以達(dá)到更快的數(shù)據(jù)讀取寫(xiě)入速度。使用自己設(shè)計(jì)的文件管理系統(tǒng),以數(shù)據(jù)流的形式存放在NANDFLASH 之中,相較于FAT32 格式的文件,程序執(zhí)行效率更高,克服了文件數(shù)據(jù)讀取慢的問(wèn)題。采用4個(gè)傳感器監(jiān)測(cè)裸眼3D設(shè)備轉(zhuǎn)速,使設(shè)備顯示的圖像更加穩(wěn)定,克服了裸眼3D設(shè)備顯示不穩(wěn)定的問(wèn)題。