• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      集成化圖像控制引擎的研究與實現(xiàn)

      2013-09-25 14:13:00李奇劉宇紅金海陸
      電子設(shè)計工程 2013年5期
      關(guān)鍵詞:內(nèi)核端口總線

      李奇,劉宇紅,金海陸

      (貴州大學 理學院,貴州 貴陽 550025)

      SOPC是Altera公司提出來的一種靈活、高效的SOC解決方案,它是一種特殊的嵌入式系統(tǒng):首先它是片上系統(tǒng)SOC;其次它是可編程系統(tǒng),具有靈活的設(shè)計方式,可裁剪、可擴充、可升級,并具備軟硬件在系統(tǒng)可編程的功能。NIOS II是由硬件描述語言編寫的基于FPGA的軟核CPU。NIOS II嵌入式處理器不僅提供更高的性能、更低的成本,還提供了齊全的軟件開發(fā)工具以及系統(tǒng)靈活性設(shè)計。本文將結(jié)合Nios II處理器的總線架構(gòu),分析SD卡的接口協(xié)議和驅(qū)動程序設(shè)計方法;由于FPGA片內(nèi)的存儲資源可能滿足不了系統(tǒng)的設(shè)計需求,在設(shè)計中使用了片外SDRAM作為程序存儲和數(shù)據(jù)存儲器。通過SOPC中的Avalon總線接口與Nios II處理器和SDRAM控制器通信,構(gòu)建了基于Nios II的SOPC,使之能顯示圖片格式為JPEG的圖像 ,并實現(xiàn)各種控制操作,能較好的模擬類似于引擎的操作,并給出基于Nios II處理器的設(shè)計實例。

      1 NIOS II處理器的Avalon總線架構(gòu)

      Avalon總線模塊是系統(tǒng)模塊的主干,是SOPC設(shè)計中外設(shè)之間通信的主要通道。Avalon總線模塊由各類控制、數(shù)據(jù)和地址信號以及仲裁邏輯組成,它將系統(tǒng)模塊的外設(shè)連接起來,并描述了主從構(gòu)件的端口連接關(guān)系,以及構(gòu)件間通信的時序關(guān)系。以構(gòu)成可編程片上系統(tǒng)(SOPC)[1],Avalon總線系統(tǒng)結(jié)構(gòu)如圖1所示。

      圖1 Avalon總線系統(tǒng)結(jié)構(gòu)Fig.1 Avalon-bus system architecture

      Avalon總線模塊是一種可配置的總線結(jié)構(gòu),它可以隨著用戶的不同互聯(lián)要求而改變。Nios II處理器的片內(nèi)系統(tǒng)互聯(lián)主要靠的就是Avalon總線,Nios II處理器和各外設(shè)之間都是通過Avalon總線進行交互。Avalon定義了5種不同的傳輸方式,包括從端口傳輸、主端口傳輸、流水線讀傳輸、流傳輸控制和三態(tài)傳輸。本文僅分析和討論SD卡設(shè)備所使用的從端口傳輸方式。

      一個Nios II處理器系統(tǒng)可以說是包含了一個可配置CPU軟核、FPGA片上存儲器和片外存儲器、外設(shè)以及外設(shè)接口等的一個片上可編程系統(tǒng),所有的Nios II處理器系統(tǒng)都用同一的指令和編程模式[6]。一個典型的Nios II處理器系統(tǒng)如圖2所示。

      圖2 NIOS II處理器系統(tǒng)Fig.2 NIOS II processor system

      Nios II處理器系統(tǒng)[2]根據(jù)不同用戶的要求,其設(shè)計類型也不同,在設(shè)計中,CPU為主要部件,需要強大的性能,除了實現(xiàn)Nios II處理器系統(tǒng)外,剩下的邏輯資源可以用作粘貼和邏輯使用;而在另一些設(shè)計中,Nios II處理器系統(tǒng)只占FPGA一小部分資源,性能要求不高,剩下的邏輯資源可實現(xiàn)主要的邏輯功能。在這些系統(tǒng)中,如果用戶邏輯需要和Nios II處理器系統(tǒng)相互通信,用戶邏輯可以直接掛在片內(nèi)的Avalon總線上。Nios II是一個可靈活配置的軟核處理器,是用戶根據(jù)自己設(shè)計的性能或成本要求,靈活的增加或裁剪一些系統(tǒng)特性和外設(shè)。用戶甚至可以在系統(tǒng)中放置多個Nios II處理器內(nèi)核,以滿足應用的要求。本設(shè)計中由于要處理圖片信息,故選用的是快速型內(nèi)核“Nios II/f”。其系統(tǒng)架構(gòu)如圖3所示。

      圖3 系統(tǒng)架構(gòu)Fig.3 system architecture

      本設(shè)計中根據(jù)Nios II處理器系統(tǒng)配置的SOPC系統(tǒng)如圖4所示。

      圖4 SOPC系統(tǒng)Fig.4 SOPC system

      由此產(chǎn)生的設(shè)計原理圖模塊如圖5所示。

      圖5 原理圖模塊Fig.5 Schematic module

      2 SD卡讀寫控制設(shè)計

      SD卡(SecureDigitalMemoryCard)是一種常見的存儲器件,以FlashMemory為存儲體,SD卡允許兩個可選的通信協(xié)議:SD模式和SPI模式。文中所研究的是SPI協(xié)議下的SD卡設(shè)計。

      2.1 SD卡的接口-SPI協(xié)議分析

      在SPI模式下,SD卡支持單塊的或是多塊的寫操作,在接收到一個合法的寫指令時,SD卡件響應一個應答標記的等待主控制器發(fā)送這個數(shù)據(jù)塊。

      圖6 單個塊的讀取操作Fig.6 Single block read operation

      在SPI模式下,SD卡支持單塊的或是多塊的寫操作[3],在接收到一個合法的寫指令時,SD卡將響應一個應答標記和等待主控制器發(fā)送這個數(shù)據(jù)塊。

      圖7 單個塊的寫入操作Fig.7 Single block write operation

      SPI模式下SD卡引腳定義如表1所示。

      表1 SD卡引腳定義Tab.1 SD card pin configuration

      SPI總線允許通過 DI(數(shù)據(jù)輸入)和 DO(數(shù)據(jù)輸出)兩個通道傳輸數(shù)據(jù),數(shù)據(jù)為串行模式,每8位數(shù)據(jù)為一組。輸入數(shù)據(jù)和輸出數(shù)據(jù)在SCLK的上升沿是鎖存。SD卡的復位、初始化、寫操作和讀操作等都是通過DI端口發(fā)送SPI命令進行控制的,SPI命令由 6個字節(jié)組成,其格式如表2所示。

      表2 SPI命令格式Tab.2 SPI command format

      字節(jié)1由“命令號+0x40”組成。例如,CMD55,55的16進制為 0x37,0x37+0X40=0X77,二進制為 01110111。

      字節(jié)2-5為命令參數(shù),共32為寬度。有些命令有參數(shù),有些命令沒有參數(shù)。對于沒有參數(shù)的命令可以直接置0x00、0x00、0x00、0x00、0x00。

      字節(jié)6為“CRC校驗位+停止位”,對于SPI模式下的命令不需要進行CRC校驗,可直接置為0xff。

      本設(shè)計中使用到的命令如下:

      2.2 SPI內(nèi)核

      SPI內(nèi)核集成在SOPC Builder內(nèi)部,SPI內(nèi)核的結(jié)構(gòu)如圖8所示。

      圖8 SPI內(nèi)核結(jié)構(gòu)Fig.8 SPI core construction

      由圖可知,SPI內(nèi)核的接口信號有兩條數(shù)據(jù)線、一條同步時鐘和一條控制線,它們分別表示如下。

      Master Out Slave In(mosi):主設(shè)備輸出數(shù)據(jù)到從設(shè)備的數(shù)據(jù)線。

      Master In Slave Out(miso):從設(shè)備輸出數(shù)據(jù)到主設(shè)備的數(shù)據(jù)線。

      Serial Clock(SCLK):主設(shè)備與從設(shè)備之間的數(shù)據(jù)同步時鐘。

      Slave Select(SS_n):主設(shè)備驅(qū)動選擇從設(shè)備的選擇信號,低電平時有效。

      SPI內(nèi)核有 5 個存儲器應像的寄存器:rxdata、txdata、status、control和slaveselect。寄存器提供了用戶與SPI內(nèi)核的設(shè)計接口,SPI內(nèi)核支持流傳輸,設(shè)計中與DMA控制器相連接。

      在 Nios II中,Alter提供了一個函數(shù) int alt_avalon_spi_command(),該函數(shù)提供了對配置為主設(shè)備的SPI內(nèi)核的通用接口訪問,該函數(shù)原型為[4]:

      int alt_avalon_spi_command(alt_u32 base, alt_u32 slave,alt_u32 write_length, const alt_u8 * write_data,alt_u32 read_length, alt_u8*read_data,alt_u32 flags);

      調(diào)用該函數(shù)可以寫一個或多個字節(jié)的數(shù)據(jù)到數(shù)據(jù)緩沖區(qū)并通過mosi端口發(fā)送,然后從miso端口讀回一個或多個字節(jié)的數(shù)據(jù)。

      函數(shù)的參數(shù)說明如下。

      alt_u32 base:選擇主設(shè)備

      alt_u32 slave:選擇從設(shè)備,0為第一個從設(shè)備,1為第二個從設(shè)備,以此類推。

      alt_u32 write_length:設(shè)置主設(shè)備發(fā)送數(shù)據(jù)的字節(jié)數(shù)。

      const alt_u8*write_data:待發(fā)送緩沖數(shù)據(jù),函數(shù)將數(shù)組中的數(shù)據(jù)依次發(fā)出。

      alt_u32 read_length:設(shè)置主設(shè)備接收數(shù)據(jù)的字節(jié)數(shù)。

      alt_u8*read_data:接收的數(shù)據(jù)緩沖。

      alt_u32 flags:如果從不連續(xù)的數(shù)據(jù)緩沖區(qū)發(fā)送數(shù)據(jù),可以多次調(diào)用該函數(shù),每次指明訪問的合并標志(merge flag),則訪問從設(shè)備之后不會釋放從設(shè)備,即SS_n為低電平。如果flag=0,則訪問從設(shè)備之后會釋放從設(shè)備,即SS_n為高電平。

      3 SOPC中TFT LCD控制器核與驅(qū)動設(shè)計

      本設(shè)計中使用Nios II軟核對TFT-LCD進行驅(qū)動時,片內(nèi)的存儲器資源滿足不了系統(tǒng)的設(shè)計需求,因此在設(shè)計中將使用片外SDRAM作為程序存儲器和數(shù)據(jù)存儲器。

      3.1 SDRAM控制器內(nèi)核

      SDRAM控制器內(nèi)核為FPGA片外的SDRAM提供了一個Avalon_MM接口,可以使用SDRAM控制器將片外的SDRAM芯片連接到自定制的Nios II系統(tǒng)中。如圖9所示為SDRAM控制器內(nèi)核與片外SDRAM芯片連接的框圖。

      圖9 SDRAM控制器內(nèi)核與外設(shè)的連接Fig.9 SDRAM controller core and peripherals connection

      3.2 TFT-LCD組件設(shè)計

      LCD控制器主要由Avalon總線接口、寄存器組、控制模塊,DMA、FIFO以及時序生成模塊組成。每個寄存器獨立編址。處理器通過Avalon總線讀寫寄存器,從而完成對LCD控制器工作狀態(tài)的設(shè)定與控制。控制器啟動后,DMA Master通過Avalon總線讀取SDRAM中的數(shù)據(jù),然后存入FIFO中,外部的SDRAM控制器在每一場的開始都會清空FIFO,然后保持FIFO中有數(shù)據(jù)(但不溢出)可供當前顯示。在每次FIFO讀請求信號有效后,相應的FIFO輸出數(shù)據(jù)也會送到該模塊內(nèi)部進行鎖存。時序生成模塊按照TFT時序要求從FIFO中讀取數(shù)據(jù),然后送出去顯示。由于DMA讀取的速度與TFT時序發(fā)生器輸出的速度不一致,所以在DMA與TFT時序發(fā)生器之間加入FIFO用來緩沖數(shù)據(jù),DMA由控制模塊控制其工作,控制器不斷檢測FIFO狀態(tài),當FIFO快滿是,暫停DMA,當FIFO快空時,重新啟動DMA,如此循環(huán),保證顯示畫面的連續(xù)性與穩(wěn)定性。

      3.3 TFT-LCD控制的實現(xiàn)

      設(shè)計中利用取模軟件將圖片格式為JPEG的圖像轉(zhuǎn)化成從上到下、從左到右的RGB像素點色彩數(shù)據(jù)[5],然后將這些數(shù)據(jù)以并行的方式傳遞給LCD顯示,器驅(qū)動原理如圖10所示。

      圖10 LCD驅(qū)動原理Fig.10 LCD drive

      本設(shè)計中使用的LCD有一個16位的數(shù)據(jù)接口,設(shè)定要顯示的點的XY坐標,以及顯示什么顏色。觸摸屏為4線式觸摸觸摸屏,四線觸摸屏包含兩個阻性層。其中一層在屏幕的左右邊緣各有一條垂直總線,另一層在屏幕的底部和頂部各有一條水平總線,為了在X軸方向進行測量,將左側(cè)總線偏置為0 V,右側(cè)總線偏置為VREF。將頂部或底部總線連接到ADC,當頂層和底層相接觸時即可作一次測量。為了在Y軸方向進行測量,將頂部總線偏置為VREF,底部總線偏置為0 V。將ADC輸入端接左側(cè)總線或右側(cè)總線,當頂層與底層相接觸時即可對電壓進行測量。

      設(shè)計中使用軟件編程的方法實行控制,利用C程序在觸摸屏中的相應的位置畫上相應的控制圖標。

      4 結(jié)束語

      基于NIOS II軟核處理器的設(shè)備驅(qū)動設(shè)計方案具有良好的穩(wěn)定性與靈活性,可以按照設(shè)計者的需要去設(shè)計每個細節(jié),使整個系統(tǒng)結(jié)構(gòu)清晰明朗,設(shè)計比較靈活,設(shè)計中深刻的理解了FPGA的體系結(jié)構(gòu)與各部件協(xié)同的工作方式。設(shè)計中成功的實現(xiàn)的圖片格式為JPEG圖像的顯示與控制。并對SD卡的接口協(xié)議與LCD顯示有了較深刻的理解。

      [1]孫愷,程世恒.NiosⅡ系統(tǒng)開發(fā)設(shè)計與實例》[M].北京:北京航空航天大學出版社,2007.

      [2]赫建國,倪德克,鄭燕.基于Nios II內(nèi)核的FPGA電路系統(tǒng)設(shè)計[M].北京:電子工業(yè)出版社,2010.

      [3]王黎明,陳雙嬌,閆曉玲,等.ARM9嵌入式系統(tǒng)開發(fā)與實踐[M].北京:北京航空航天大學出版社,2008.

      [4]Altera Corporation.Nios II softerware developer’Handbook[S].2009.

      [5]吳厚航.愛上FPGA開發(fā)-特權(quán)同學和你一起學NIOS II[M].北京:北京航空航天大學出版社,2011.

      [6]Altera Corporation.Nios II processor reference handbook[S].2009.

      猜你喜歡
      內(nèi)核端口總線
      萬物皆可IP的時代,我們當夯實的IP內(nèi)核是什么?
      強化『高新』內(nèi)核 打造農(nóng)業(yè)『硅谷』
      一種端口故障的解決方案
      科學家(2021年24期)2021-04-25 13:25:34
      基于嵌入式Linux內(nèi)核的自恢復設(shè)計
      Linux內(nèi)核mmap保護機制研究
      基于PCI Express總線的xHC與FPGA的直接通信
      機載飛控1553B總線轉(zhuǎn)以太網(wǎng)總線設(shè)計
      端口阻塞與優(yōu)先級
      初識電腦端口
      電腦迷(2015年6期)2015-05-30 08:52:42
      生成樹協(xié)議實例探討
      定兴县| 九江县| 东乡族自治县| 电白县| 阿勒泰市| 东辽县| 南阳市| 常熟市| 昂仁县| 隆回县| 南开区| 湾仔区| 碌曲县| 泸定县| 大化| 临夏市| 永福县| 巨野县| 志丹县| 合作市| 珠海市| 大荔县| 磐安县| 邢台县| 焉耆| 鄂托克前旗| 张家港市| 临城县| 安阳市| 广平县| 莆田市| 深州市| 方山县| 邢台市| 洛阳市| 孝感市| 龙川县| 新泰市| 辛集市| 徐水县| 彰武县|