基于ARM+FPGA的大屏幕顯示器控制系統(tǒng)設(shè)計(jì)
3 系統(tǒng)軟件設(shè)計(jì)
本文引用地址:http://butianyuan.cn/article/261853.htm3.1 ARM軟件設(shè)計(jì)
根據(jù)該系統(tǒng)的設(shè)計(jì)需求,將軟件劃分如下幾個(gè)模塊分別形成獨(dú)立的程序文件:?jiǎn)?dòng)代碼模塊、串口模塊、時(shí)鐘模塊、溫度和亮度傳感器模塊、FLASH 管理模塊、下載管理模塊和顯示模塊。啟動(dòng)代碼用于初始化系統(tǒng)配置、初始化各個(gè)處理器模式下的棧空間,初始化目標(biāo)板,引導(dǎo)C程序運(yùn)行,用匯編語(yǔ)言編寫(xiě);串口模塊實(shí)現(xiàn)串口的發(fā)送、接收等基本功能;時(shí)鐘模塊實(shí)現(xiàn)RTC時(shí)間的設(shè)置與讀取等基本功能;溫度和亮度傳感器模塊實(shí)現(xiàn)溫度和亮度控制;Flash管理模塊實(shí)現(xiàn)外部FLASH擦除、存儲(chǔ)、分配的管理,將顯示指令和顯示信息進(jìn)行存儲(chǔ);下載管理模塊負(fù)責(zé)與上位機(jī)通訊,下載顯示指令和信息;顯示模塊負(fù)責(zé)顯示指令的解析以及顯示信息的提取,顯示效果的處理,包括出場(chǎng)模式和表演模式以及各種字體字形的產(chǎn)生,同時(shí)負(fù)責(zé)送灰度數(shù)據(jù)給FPGA,本設(shè)計(jì)以啟動(dòng)代碼為例闡述源代碼的編寫(xiě)。
通常將啟動(dòng)代碼劃分為5個(gè)文件:startup.s、IRQ.s、stack.s、heap.s和target.c。startup.s包含中斷向量表和系統(tǒng)初始化代碼;IRQ.s包含中斷服務(wù)程序與C程序的接口代碼;stack.s和heap.s保存C語(yǔ)言使用的堆和棧的開(kāi)始位置;target.c包含目標(biāo)板特殊的代碼,包括異常處理程序和目標(biāo)板初始化程序。下面給出幾個(gè)關(guān)鍵的初始化程序段供參考。
1.中斷向量表
2.系統(tǒng)初始化代碼
ResetInit
BL Initstack;初始化芯片各種模式的堆棧
BL TargetResetInit:目標(biāo)板基本初始化
B Main;跳轉(zhuǎn)到ADS提供的_ain函數(shù)處,它初始化函數(shù)庫(kù)并最終引導(dǎo)CPU進(jìn)入main()函數(shù)
3.初始化CPU堆棧Initstack(源代碼略)
3.2 FPGA內(nèi)部的功能模塊
圖4為FPGA內(nèi)部的功能模塊圖。FPGA將ARM傳送過(guò)來(lái)的信號(hào)包括灰度數(shù)據(jù)(DATA)、系統(tǒng)時(shí)鐘(CLK)、幀同步信號(hào)(VSYNC)、行同步信號(hào)(HSYNC)、片選信號(hào)(CS2)和寫(xiě)信號(hào)(WRITE)送入存儲(chǔ)器切換電路,存儲(chǔ)器切換電路將圖像數(shù)據(jù)(DAIA)分時(shí)送到靜態(tài)存儲(chǔ)器 SRAM1和靜態(tài)存儲(chǔ)器SKAM2進(jìn)行存儲(chǔ)。SRAM1和SRAM2工作在交替讀寫(xiě)狀態(tài),即向一片SRAM寫(xiě)人數(shù)據(jù)的同時(shí),從另一片SRAM中讀出數(shù)據(jù);靜態(tài)存儲(chǔ)器的讀寫(xiě)狀態(tài)由系統(tǒng)時(shí)鐘、幀同步、行同步以及片選信號(hào)來(lái)控制。讀地址發(fā)生器用于計(jì)算所需數(shù)據(jù)信息在存儲(chǔ)器中存儲(chǔ)的地址,以便保證LED大屏幕的正確顯示,它是由移位時(shí)鐘來(lái)控制產(chǎn)生15位讀地址信號(hào),移位時(shí)鐘信號(hào)的工作頻率為4 MHz。讀地址發(fā)生器產(chǎn)生的讀地址信號(hào)在移位時(shí)鐘的作用下,產(chǎn)生4個(gè)分區(qū)鎖存信號(hào),4個(gè)分區(qū)的顯示數(shù)據(jù)同時(shí)送人屏體,只有當(dāng)鎖存信號(hào)有效時(shí),才點(diǎn)亮顯示屏。從SRAM讀出的灰度數(shù)據(jù)DAIA送入灰度值發(fā)生器,并根據(jù)屏體顯示結(jié)構(gòu)進(jìn)行數(shù)據(jù)重組,轉(zhuǎn)化成LED顯示屏要求的上屏數(shù)據(jù)信號(hào)(紅、綠、藍(lán)灰度數(shù)據(jù))。三色的上屏數(shù)據(jù)送入串行發(fā)送數(shù)據(jù)寄存器,并在移位時(shí)鐘的作用下串行發(fā)送至屏體。在將一片SRAM中的數(shù)據(jù)轉(zhuǎn)換后上屏的同時(shí),通知微處理器發(fā)送下一屏數(shù)據(jù)。此外,ARM還發(fā)送兩位亮度控制信號(hào)COMM0、COMM1和亮度數(shù)據(jù)信號(hào)COMM2。串行發(fā)送的亮度數(shù)據(jù)信號(hào)進(jìn)入8位串并轉(zhuǎn)換電路,在 COMM0、COMM1的控制下,產(chǎn)生亮度信號(hào)。
4 仿真及系統(tǒng)驗(yàn)證
使用ModelSim仿真用VHDL編寫(xiě)的掃描驅(qū)動(dòng)電路波形如圖5。從圖5可知,從ARM接收到的數(shù)據(jù)data(01010101)存入到外部擴(kuò)展的存儲(chǔ)器SRAM2,m2ma是存儲(chǔ)器2的地址線,它根據(jù)控制信號(hào)(tp1,tp2,cs2,swite)的控制作用連續(xù)增加;cm2d是存儲(chǔ)器2的數(shù)據(jù)線,將data數(shù)據(jù)存入,則cm2d為01010101,同時(shí)從存儲(chǔ)器1中讀出數(shù)據(jù),轉(zhuǎn)換后送給red0、ged0、bed0,從而驗(yàn)證驅(qū)動(dòng)電路的正確性。
經(jīng)硬件設(shè)計(jì)和軟件編碼與調(diào)試后,將ARM軟件源代碼通過(guò)ISP下載到ARM中的FLASH后復(fù)位運(yùn)行,系統(tǒng)驗(yàn)證了該設(shè)計(jì)的可靠性和正確性。
5 結(jié)論
本設(shè)計(jì)采用32位ARM嵌入式微處理器S3C4510B和32位FPGA掃描驅(qū)動(dòng)電路芯片PolarProQLlP300,選用 IS61C1024靜態(tài)RAM作為緩存器,組成由多塊大屏幕LED顯示器構(gòu)成的顯示系統(tǒng),選用ARM+RAM+FPGA設(shè)計(jì)方案,從而解決了系統(tǒng)的運(yùn)行速度、尋址能力和功耗等問(wèn)題,從而支持更大可視區(qū)域的穩(wěn)定顯示,存儲(chǔ)更多的顯示內(nèi)容。
fpga相關(guān)文章:fpga是什么
led顯示器相關(guān)文章:led顯示器原理
三相異步電動(dòng)機(jī)相關(guān)文章:三相異步電動(dòng)機(jī)原理
評(píng)論