在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

            EEPW首頁 > 嵌入式系統(tǒng) > 專題 > 基于SOPC的液晶屏接口組件設(shè)計

            基于SOPC的液晶屏接口組件設(shè)計

            作者: 時間:2008-01-31 來源:微計算機信息 收藏

            1  引言
            傳統(tǒng)的外設(shè)操作使用I/O接口方式,在硬件工程中,需要設(shè)計與外設(shè)相連的I/O接口,在軟件工程中,需要用戶編寫I/O接口程序?qū)ν庠O(shè)進行初始化,設(shè)置相應(yīng)的外設(shè)寄存器,這樣的工作在每次新建一個工程后,都得重復(fù)進行,因此增加了開發(fā)的成本。

            本文引用地址:http://www.biyoush.com/article/78502.htm

            利用Altera公司提供的Component Editor工具可以設(shè)計符合時序要求的外設(shè)接口,并且可以將用戶開發(fā)驅(qū)動程序與Nios II HAL(硬件抽象層)系統(tǒng)庫集成在一起,形成Nios II的接口組件,在系統(tǒng)生成的時候,對外設(shè)進行初始化設(shè)置。這樣在建立新工程時,只需將接口組件添加到系統(tǒng)就可以了,對組件的訪問也變得輕松,使得代碼可重復(fù)利用。

            Nios II HAL系統(tǒng)庫是一個輕量級實時環(huán)境,提供一個組件驅(qū)動接口,使得程序與底層硬件通信。HAL API(應(yīng)用程序接口)與ANSI C標準庫集成在一起,允許用戶通過類C庫函數(shù)訪問設(shè)備和文件,例如printf()、fopen()和fwrite()等,這樣其他開發(fā)者無需知道底層硬件結(jié)構(gòu)就可以對組件進行操作。

            2  硬件設(shè)計
            Builder中打開Component Editor,在HDL Files標簽下添加硬件描述語言編寫的文件,將其設(shè)定為頂層模塊,該文件描述了組件與Avalon總線的接口以及組件與的接口,系統(tǒng)自動對文件進行分析和模擬。

            點擊Signals標簽,系統(tǒng)自動讀取硬件描述語言文件中的信號,用戶只需設(shè)置接口信號和信號類型。接口信號包括主端信號和從端信號,主端信號與Avalon總線相連,包括iDATA、iADDRESS、iWR_N和iCS_N等,信號類型依次為writedata、address、write_n和chipselect_n等,從端信號與LCD相連,包括LCD_DATA、LCD_ADDRESS、LCD_RD_N、LCD_WR_N和LCD_CS_N等,信號類型均為export。

            從端信號與主端信號的連接用硬件描述語言描述:

            assign     LCD_DATA           =     iDATA;

            assign     LCD_ADDRESS    =     iADDRESS;

            assign     LCD_RD_N           =     1;

            assign     LCD_WR_N          =     iWR_N;

            assign     LCD_CS_N           =     iCS_N;

            由于始終對進行寫操作,不進行讀操作,所以信號LCD_RD_N置1。

            點擊Interfaces標簽,將接口設(shè)置為從類型,地址選擇Registers類型,Avalon Slave Timing可以設(shè)置接口的時序,如圖1所示。

            圖1  寫時序

            點擊SW Files標簽,添加系統(tǒng)所需要的文件,包括兩個頭文件,一個C文件,選擇文件類型,將它們包含在不同的文件夾下,這樣就可以通過標準的C語言函數(shù)來訪問組件了。

            最后一步點擊Component Wizard,為組件取名,點擊Finish完成設(shè)計。

            3  軟件設(shè)計
            組件生成后,組件文件夾的結(jié)構(gòu)如圖2所示。

            圖2 液晶屏接口組件

            lcd_3224inc文件夾下包含_regs.h文件,該文件定義硬件接口,例如:

            #define    IOWR_ LCD_DATA(base, data)           IOWR(base, 0, data)

            寫參數(shù)有三個,base為組件的基地址,0表示地址偏移量,data為要寫入的數(shù)據(jù),重新定義后在源代碼中可以使用自定義的名字對組件進行操作。

            lcd_3224hdl文件夾下包含.v文件,該文件描述組件的接口信號。

            lcd_3224HALinc文件夾下包含.h文件,該文件描述組件的結(jié)構(gòu)、函數(shù)聲明和驅(qū)動程序與標準C函數(shù)的接口等,示例如下:

            #include  "sys/alt_dev.h"              //包含定義組件結(jié)構(gòu)的頭文件

            typedef    struct      alt_LCD_dev   alt_LCD_dev;         //定義組件結(jié)構(gòu)

            struct      alt_LCD_dev

            {

              alt_dev        dev;

              int            base;

            };

            ……

            void        alt_lcd_init(alt_LCD_dev * dev);          //聲明初始化函數(shù)

            int          alt_lcd_write(alt_fd * fd, const char* ptr, int len);              //聲明寫函數(shù)

            ……

            #define ALTERA_AVALON_LCD_INSTANCE(name, device)

            static alt_LCD_dev device =

            {

              {

                ALT_LLIST_ENTRY,

                name##_NAME,

                NULL, /* open */          //fopen可以訪問lcd

                NULL, /* close */

                NULL, /* read */

                alt_lcd_write,         //fprintf將調(diào)用寫函數(shù)訪問液晶屏

                NULL, /* lseek */

                NULL, /* fstat */

                NULL, /* ioctl */

              },

              name##_BASE

            }

            lcd_3224HALsrc文件夾下包含源代碼,mk文件是自動生成的,源代碼主要包括初始化程序、.h文件所聲明的alt_lcd_write和一些子程序,例如:

            static void lcd_write_data(alt_LCD_dev * dev, unsigned char data)           //子程序

            {

              unsigned int base = dev->base;         //基地址由 Builder自動生成

              IOWR_ LCD_DATA(base, data);      //訪問底層硬件

            }

            初始化程序和寫函數(shù)調(diào)用這些子程序完成對組件的初始化和各種操作。

            4  應(yīng)用
            根據(jù)液晶屏的功能及所使用的開發(fā)板,應(yīng)用系統(tǒng)的硬件結(jié)構(gòu)框圖如圖3所示。

            圖3 硬件結(jié)構(gòu)框圖

            Builder中添加組件生成硬件系統(tǒng),將結(jié)果下載到開發(fā)板。打開Nios II IDE創(chuàng)建軟件工程,進行軟件的編寫,其中部分程序如下:

            #include 

            int    main(void)

            {

            FILE * fd;

            fd = fopen(/dev/lcd”, “w”);              //lcd為SOPC Builder中的名字

            if(fd)

            {

            fprintf(fd, “parameter”);        //調(diào)用alt_lcd_write

            fclose(fd);

            }

            ……

            return 0;

            }

            通過標準C函數(shù)訪問液晶屏,程序編寫簡單,可以顯示各種圖像及字符。如果還有特殊要求,用戶可以繼續(xù)在驅(qū)動程序中添加需要的功能。

            5  總結(jié)
            本文詳細介紹了液晶屏接口組件的設(shè)計方法,核心部分是硬件描述語言文件的編寫、時序的設(shè)計以及驅(qū)動程序的編寫。調(diào)試成功后,可以把組件文件夾放到系統(tǒng)組件文件夾下,這樣就可以重復(fù)使用。對于應(yīng)用程序開發(fā)者,不用了解硬件結(jié)構(gòu)就可以使用標準C函數(shù)操作組件,使得開發(fā)簡便快捷,節(jié)省了時間和成本,是一種高效、靈活和低成本的開發(fā)方法。

            本文作者創(chuàng)新點:和傳統(tǒng)的外設(shè)接口方式相比,接口組件的使用極大地方便了接口的硬件和軟件設(shè)計,是高效靈活的接口方式。

            參考文獻

            [1]   任愛芬、初秀琴、常存等,基于FPGA的嵌入式系統(tǒng)的設(shè)計,西安:西安電子科技大學出版社,2004
            [2]   郭書軍、王玉花、葛紉秋,嵌入式處理器原理及應(yīng)用,北京:清華大學出版社,2004
            [3]   李洋洋,基于CPLD的DSP和液晶模塊接口設(shè)計,微計算機信息,2004年,第1期

             



            關(guān)鍵詞: SOPC 組件編輯器 液晶屏

            評論


            相關(guān)推薦

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

            關(guān)閉