<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 基于SOPC的觸控屏控制器IP核設(shè)計(jì)

          基于SOPC的觸控屏控制器IP核設(shè)計(jì)

          作者: 時(shí)間:2013-01-07 來(lái)源:網(wǎng)絡(luò) 收藏

            可編程片上系統(tǒng)()是一種特殊的嵌入式系統(tǒng),它設(shè)計(jì)方式靈活,具備軟硬件在系統(tǒng)可編程功能。 在設(shè)計(jì)上以集成電路IP 核為基礎(chǔ),而自行開發(fā)的 IP 核,根據(jù)實(shí)際硬件資源和功能任務(wù)需求來(lái)定制顯示控制功能,可以增強(qiáng)系統(tǒng)可靠性和設(shè)計(jì)靈活性,降低了成本。目前針對(duì)LCD 顯示設(shè)計(jì)的控制器IP 核文章較多[1-2],但對(duì)于TFT-LCD 觸控屏設(shè)計(jì)的控制器IP 核文章較少[3],而且這類文章中很少見(jiàn)對(duì)控制器各個(gè)模塊進(jìn)行仿真驗(yàn)證內(nèi)容。

            文中提出一種針對(duì)TFT-LCD IP 核的設(shè)計(jì)方法。該控制器具有Avalon 總線接口,與其他標(biāo)準(zhǔn)IP 核一起構(gòu)成以NiosⅡ?yàn)楹诵牡钠舷到y(tǒng)。針對(duì)本設(shè)計(jì)中觸控屏幀緩存讀操作的特點(diǎn),選擇以Avalon 主端口接口的形式對(duì)模塊進(jìn)行開發(fā),大大提高了處理器運(yùn)行效率,同時(shí)實(shí)現(xiàn)了IP 核的參數(shù)化設(shè)計(jì), 提高了控制器對(duì)于不同LCD 屏的可復(fù)用性,最后通過(guò)對(duì)輸出緩沖FIFO 的使用,解決了數(shù)據(jù)讀出時(shí)鐘與像素時(shí)鐘不同步問(wèn)題。

            1 總體結(jié)構(gòu)

            在SDRAM 中開辟一段儲(chǔ)存空間, 用來(lái)存放屏幕圖像數(shù)據(jù),稱之為幀緩存。通過(guò)設(shè)計(jì)適當(dāng)?shù)挠布壿媮?lái)建立幀緩存與屏幕圖像像素之間的一一對(duì)應(yīng)關(guān)系,并配合觸控屏顯示所必需的行、場(chǎng)時(shí)序信號(hào),將幀緩存中的數(shù)據(jù)不斷地輸送給觸控屏, 完成最終的顯示刷新, 其總體結(jié)構(gòu)如圖1所示。

          總體結(jié)構(gòu)

            觸控屏控制器刷新周期開始時(shí),主端口模塊根據(jù)幀緩存地址生成邏輯所產(chǎn)生的地址,完成主端口的讀操作,實(shí)現(xiàn)幀緩存中數(shù)據(jù)讀取,并將該數(shù)據(jù)輸送給輸出緩沖模塊。同時(shí),時(shí)序信號(hào)生成模塊依據(jù)觸控屏的時(shí)序規(guī)范生成行、場(chǎng)同步信號(hào),以及與像素同步的相關(guān)顯示點(diǎn)的橫、縱坐標(biāo)。觸控屏控制器數(shù)據(jù)顯示模塊不斷從緩存中讀取屏幕顯示數(shù)據(jù)。

            2 觸控屏控制器模塊設(shè)計(jì)

            2.1 Avalon-MM Slave 接口模塊

            本模塊掛載在Avalon 總線上作為從設(shè)備使用,用來(lái)對(duì)所有的用戶邏輯進(jìn)行配置和控制, 核心功能是寄存器操作,包括讀、寫以及一些特殊指示與狀態(tài)信號(hào)的產(chǎn)生與轉(zhuǎn)換。通過(guò)從端口得到的數(shù)據(jù)分別賦值給相應(yīng)的寄存器,寄存器分為:FIFO 地址寄存器、坐標(biāo)寄存器、一幀數(shù)據(jù)長(zhǎng)度寄存器。本模塊是最后在觸控屏上實(shí)現(xiàn)圖形顯示功能的接口電路。

            2.2 Avalon-MM Master 接口模塊

            LCD 控制器的本功能是產(chǎn)生LCD 時(shí)序信號(hào),將幀緩存中的圖像信息進(jìn)行有序輸出。由于圖形是一幀一幀地輸出到觸控屏上,而且顯示刷新過(guò)程是無(wú)限循環(huán)的,所以必須反復(fù)執(zhí)行幀緩存讀操作,因此本設(shè)計(jì)對(duì)上述讀操作進(jìn)行了硬件加速??梢圆粩嗟貜腇IFO 讀取圖像數(shù)據(jù),并且在行、場(chǎng)和觸控屏顯示有效時(shí)間段讀取圖像數(shù)據(jù),其它時(shí)間不讀圖像數(shù)據(jù),這樣減少了Avalon 總線的使用,有利于圖像顯示并減少了總線負(fù)擔(dān)。分析讀幀緩存的操作可以發(fā)現(xiàn),該過(guò)程總是按照一定的順序,將存儲(chǔ)器中的數(shù)據(jù)讀出來(lái)進(jìn)行顯示輸出,規(guī)律性非常強(qiáng)。本模塊主要完成地址及操作時(shí)序的產(chǎn)生、像素?cái)?shù)據(jù)緩存寫操作控制、數(shù)據(jù)寬度的變換等功能。

            2.3 觸控屏?xí)r序產(chǎn)生模塊

            本文的觸控屏引出信號(hào)線有5 根:像素?cái)?shù)據(jù)信號(hào)、觸控屏?xí)r鐘信號(hào)、行同步信號(hào)、場(chǎng)同步信號(hào)、使能信號(hào)。為了實(shí)現(xiàn)觸控屏的正常顯示,必須對(duì)以上信號(hào)按照規(guī)范的時(shí)序進(jìn)行驅(qū)動(dòng),其中,行、場(chǎng)同步信號(hào)分別用來(lái)標(biāo)記屏幕上一行和一幀圖像的顯示時(shí)間,屏幕掃描線從上到下、從左到右依次掃描。在這個(gè)過(guò)程中,只需將幀緩存中的圖像像素?cái)?shù)據(jù)依次輸出,就可以實(shí)現(xiàn)屏幕圖像顯示。

            2.4 FIFO 幀緩存模塊

            DDR 控制器隨著系統(tǒng)時(shí)鐘不斷往FIFO 寫數(shù)據(jù), 當(dāng)一幀數(shù)據(jù)寫滿時(shí)就不再進(jìn)行寫狀態(tài),而等待LCD 控制器進(jìn)行讀狀態(tài), 顏色處理器從FIFO 中獲取數(shù)據(jù), 每次從FIFO 中讀取32 bit 數(shù)據(jù)并不斷送給LCD.顏色處理器將每一個(gè)字節(jié)作為一個(gè)像素?cái)?shù)據(jù),并將一個(gè)字節(jié)的像素?cái)?shù)據(jù)轉(zhuǎn)換為3 個(gè)字節(jié)的RGB 數(shù)據(jù)。顏色處理器從同步FIFO 緩沖器中讀取數(shù)據(jù),當(dāng)同步FIFO 緩沖器寫和讀相互不沖突時(shí),同步FIFO 緩沖器產(chǎn)生讀請(qǐng)求,讓Avalon 主端口向Avalon 總線發(fā)起讀傳輸,從總線上獲取的數(shù)據(jù)將寫入同步FIFO 緩沖器,顏色處理器從FIFO 中讀取像素值,并且傳給LCD 顯示模塊。

            3 Modelsim 仿真與測(cè)試

            1)Avalon 從端口仿真與測(cè)試

            由圖2 可知,從端口一位地址對(duì)應(yīng)一位數(shù)據(jù)。當(dāng)寫信號(hào)有效時(shí),將數(shù)據(jù)寫入相應(yīng)的寄存器;當(dāng)讀信號(hào)有效時(shí),對(duì)應(yīng)寄存器地址將數(shù)據(jù)輸出。通過(guò)從端口數(shù)據(jù)寫入來(lái)控制LCD 模塊,控制LCD 讀取圖像的首地址和讀取數(shù)據(jù)的長(zhǎng)度。

          從端口仿真波形圖

          圖2 從端口仿真波形圖


          上一頁(yè) 1 2 下一頁(yè)

          關(guān)鍵詞: SOPC 觸控屏控制器 IP核

          評(píng)論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();