日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當前位置:首頁 > 電源 > 數字電源
[導讀]摘要:文章介紹了基于Nios II的SOPC的通用字符顯示電路的設計,通過實時讀取點陣字庫信息并輸出到VGA端口的方法實現。與傳統(tǒng)方法相比,具有簡單易行、便于二次開發(fā)的特點。以本方法進行了電子萬年歷的設計,并在基于

摘要:文章介紹了基于Nios II的SOPC的通用字符顯示電路的設計,通過實時讀取點陣字庫信息并輸出到VGA端口的方法實現。與傳統(tǒng)方法相比,具有簡單易行、便于二次開發(fā)的特點。以本方法進行了電子萬年歷的設計,并在基于EP2C35F672C6的DE2開發(fā)板上下載驗證,結果表明本方法切實可行,適合于實時信息顯示。
關鍵詞:SOPC;視頻圖形陣列字符顯示;Nios II

0 引言
    VGA(視頻圖形陣列)是IBM于1987年提出的圖形顯示標準,雖然早己不是先進的顯示標準,但由于其技術和工藝成熟、成本低廉等優(yōu)勢,目前仍有著廣泛的應用。
    現有基于FPGA的VGA顯示系統(tǒng)需要顯示字符,尤其是漢字時,通常方法是首先獲取所用字符的字模,加入到HDL或C代碼中調用。這種方法過程繁瑣,且系統(tǒng)通用性不強。本設計以任意字符顯示為特點,通過實時讀取點陣字庫實現字符顯示,對存儲空間利用率高,且靈活性好,便于進行二次開發(fā)。

1 系統(tǒng)硬件設計
    本設計使用的是基于EP2C35F672C6的DE2開發(fā)板。在SOPC Builder中,將系統(tǒng)命名為system_0,目標板設定為預定義過的“DE2 Board”,加入NIOSII/s軟核處理器,在時鐘列表中添加50MHz的外部時鐘,在組件列表中添加所需組件,如圖1所示。


    由于本設計的Nios II程序及所使用的字庫需要存儲在Flash中,因此添加了CFI Flash控制器以及三態(tài)Avalon總線,EPCS控制器用于存放FPGA配置信息。LED及JTAG UART組件用于調試中狀態(tài)反饋,按鈕和開關組件用于人機交互,SDRAM組件是本系統(tǒng)的運行內存,最后是VGA顯示IP核。
    本設計中所用VGA顯示IP核符合Avalon總線規(guī)范,實現的功能為單色顯示,即前景色和背景色各為預先指定的一種顏色,系統(tǒng)啟動時核內顯存讀入一幅單色圖像作為初始顯示畫面。編程時分別以VGA_Set_Pixel或VGA_Clr_Pixel指令將某一像素置為前景色或背景色。此IP核的結構原理如圖2所示。

[!--empirenews.page--]
    在整個工程的頂層文件中例化生成的system_0模塊,用鎖相環(huán)模塊產生VGA所需的25MHz時鐘信號并作為VGA模塊iCLK 25信號輸入。由于SOPC的CPU RESET信號只能鎖定在實際器件中的按鈕上作為輸入,而DE2開發(fā)上的4個按鈕在后面的實例都需要用到,因此在頂層文件中將CPU RESET信號直接置1。system_0的其他的輸入輸出信號根據開發(fā)板的相應資源進行定義和管腳鎖定。
    本設計的FPGA配置信息(sof文件)寫入EPCS器件中,Nios II程序(elf文件)寫入CFI Flash模塊中,所用到的兩個字庫也寫入CFI Flash中,字庫起始偏移地址分別為0x80000和0x1000000。

2 字符顯示原理
    調用點陣字庫實現任意數字和漢字的實時顯示是本設計的基本方法。本設計中分別采用ASC16和HZK16字庫作為ASCII碼和漢字的點陣字庫,這兩個字庫最早在UCDOS系統(tǒng)中被使用。
    ASC16字庫含有256個ASCII碼字符,每個ASCII碼字符均以16×8的點陣表示,點陣信息以行優(yōu)先的方式存儲,每個字符占用128個存儲位(16字節(jié)),按照ASCII碼的編碼順序存儲,故一個字符的ASCII碼值乘16就是它在ASC16字庫中的偏移地址。
HZK16是依據GB2312編碼存儲的點陣字庫,每個漢字用16×16的點陣表示,每個字符占用256個存儲位(32字節(jié)),點陣信息同樣以行優(yōu)先方式存儲。
    HZK16字庫內漢字按照內碼順序存儲,每個漢字的內碼由兩個字節(jié)組成,高位字節(jié)為區(qū)號,低字節(jié)為位號,兩字節(jié)的范圍均為0xA1~0xFE共94個取值。將漢字的兩個字節(jié)分別減去0xA1,即可得到該漢字的區(qū)號和位號。設某個漢字編碼的兩個字節(jié)分別為0xMM和0xNN,則該漢字在HZK16字庫中對應的偏移地址為:
    OFFEST=[94×(0xMM-0xA1)+(0xNN-0xA1)]×32
    定位了ASCII碼字符或漢字在點陣字庫中的位置后,讀出其所對應的16字節(jié)或32字節(jié)數據,用按位與運算和左移運算對每個字節(jié)的8個位逐一測試,將測試結果為1的位的對應像素填充為前景色,否則將像素填充為背景色,實現設定字符的顯示。

3 SOPC中相關函數的定義
    根據上述原理,以C語言編寫適用于上述SOPC的字符顯示函數,并以Nios II HAL系統(tǒng)庫為基礎。
3.1 ASCII碼字符顯示函數show_asc
    此函數用于在VGA輸出畫面的(x,y)坐標處顯示單個ASCII碼字符asc,主要代碼如下:
   
          [!--empirenews.page--]

3.2 漢字字符顯示函數show_hz
    此函數用于在VGA輸出畫面的(x,y)坐標處顯示單個漢字字符hz,主要代碼如下:
   
3.3 字符串顯示函數show_str
    此函數用于在VGA輸出畫面的(x,y)坐標處顯示長度為len的字符串str,內容可以由ASCII碼及漢字混合組成,其主要代碼如下:
   

4 實例應用
    基于以上的軟硬件設計,這里以萬年歷作為其應用的一個實例。以往基于FPGA的萬年歷設計多使用LCD或七段數碼管作為輸出,顯示基本的數字和符號尚可,但若要加入問候語、紀念日等中文信息則難于實現,基于本電路設計的萬年歷則可以解決這一問題。
    從功能上劃分,此萬年歷設計可分為3個模塊:
    (1)時間日期生成模塊。此模塊包含年、月、日、星期、時、分、秒共7個變量的輸出,每個變量都有各自的子模塊,每個子模塊都包含預置、計數、進位和顯示的功能。其中星期的確定方法是計算當前日期與1990年1月1日(星期一)之間間隔的天數,將此天數對7取模并加1,即得到當前星期的數字。
    系統(tǒng)啟動時,首先將預置的初始時間日期傳遞給顯示函數,由顯示函數在預定位置分別顯示7個數據,將數字加上0x30便得到其對應的ASCII碼值,其中星期是將1~7的數字按星期一~星期日的漢字顯示。
    隨后進入系統(tǒng)的主循環(huán),以1秒鐘為循環(huán)間隔,當前級數字到達最大值時向下一級數字進位。其中日進位時需判斷月份類型(大月、小月或2月),當前月為2月時還需判斷年份類型(是否閏年),以確定日的進位數值。其他數字的進位值是固定的,其中年的范圍設定為1990~2099。[!--empirenews.page--]
    (2)時間日期調整模塊。除星期外,其他6個數字均可被調整。時間和日期的調整需要用到開發(fā)板上的4個按鈕,對應功能分別為切換日期/時間(KEY0)、在年月日和時分秒間切換(KEY3)、數字減(KEY1)和數字加(KEY2)。用兩個變量pos與dot表示當前的活動數字,其對應關系如表1所示。


    在程序上,此模塊由按下按鈕所觸發(fā)的中斷服務函數實現。按鈕按下時產生下降沿,讀取邊沿捕獲寄存器的值即可判斷哪一按鈕被按下。按下KEY0或KEY3時,當前活動數字發(fā)生改變;按下KEY1或KEY2時,根據當前活動數字的不同進入6個分支,以各自數字的進位規(guī)則得到調整后的數字。
    為了顯示直觀,在當前被調整的數字下方有實心原點作為指示標志,此圓點以ASCII碼字符0x07表示。
    (3)其他信息顯示模塊。此模塊的作用是在未被時間日期信息占用的區(qū)域顯示自定義的信息,如不同時刻的問候語、紀念日信息等。除了使用字符顯示的方法外,還可對VGA輸出的初始畫面進行定制,如加入自定義的圖案標志等。此外,由于所用到兩個字庫均為單一字體,其他特殊字體的文字也可以加入到此初始圖像中進行顯示。

5 測試與評價
    將以上萬年歷實例設計下載到DE2開發(fā)板上運行,經測試,實現了所有預定功能,ASCII碼字符及漢字字符顯示正確,計時穩(wěn)定、準確。運行時的一個畫面如圖3所示。


    本電路采用基于Altera Nios II的SOPC平臺,實現了通用字符VGA顯示的功能,設計上靈活高效,系統(tǒng)資源利用度高。以本設計的通用平臺為基礎加以開發(fā),可應用于諸多需要實時信息顯示的場合。

本站聲明: 本文章由作者或相關機構授權發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內容真實性等。需要轉載請聯系該專欄作者,如若文章內容侵犯您的權益,請及時聯系本站刪除。
換一批
延伸閱讀

在電子電路中,電解電容的紋波電流承受能力直接影響其使用壽命和電路穩(wěn)定性。準確測試紋波電流不僅能驗證電容性能是否達標,也是電路設計可靠性驗證的關鍵環(huán)節(jié)。以下從測試原理、設備準備、操作步驟到數據解讀,全面介紹電解電容紋波電流...

關鍵字: 電解電容 紋波電流 電路設計

在電子電路設計與實踐中,穩(wěn)壓芯片是維持穩(wěn)定輸出電壓的關鍵組件。然而,當我們將兩個輸出電壓不同的穩(wěn)壓芯片的輸出腳連接在一起時,會引發(fā)一系列復雜的物理現象和潛在風險。這一操作不僅違反了常規(guī)的電路設計原則,還可能對電路系統(tǒng)造成...

關鍵字: 穩(wěn)壓 芯片 電路設計

在當今電子技術飛速發(fā)展的時代,隨著電子產品不斷向小型化、高性能化邁進,印刷電路板(PCB)的設計變得愈發(fā)復雜和精密。過孔,作為 PCB 中連接不同層線路的關鍵元件,其對信號完整性的影響已成為電路設計中不可忽視的重要因素。...

關鍵字: 印刷電路板 電路設計 信號

IIC(Inter IC Bus)協(xié)議是一種廣泛應用于嵌入式系統(tǒng)中的同步半雙工通信協(xié)議。隨著電子設備的復雜性不斷增加,高多層電路板設計變得越來越普遍。在高多層電路板中實現可靠的IIC通信,需要綜合考慮布線策略、電源設計、...

關鍵字: 電路板 電路設計

在現代高速、高密度的電路設計領域,電路完整性是確保電子系統(tǒng)可靠運行的關鍵要素。回路電感作為電路中的一個重要參數,對電路完整性有著多方面的深遠影響。從信號傳輸的準確性到電源系統(tǒng)的穩(wěn)定性,回路電感在其中扮演著不容忽視的角色。...

關鍵字: 電子系統(tǒng) 回路電感 電路設計

在現代汽車電子控制系統(tǒng)中,CAN(Controller Area Network,控制器局域網)總線作為一種高效、可靠的通信協(xié)議,發(fā)揮著舉足輕重的作用。它不僅連接著發(fā)動機控制單元(ECU)、變速器控制單元、制動系統(tǒng)控制單...

關鍵字: 車規(guī)級CAN總線 電路設計

串聯一個二極管,是利用二極管的單向導電的特性,實現了最簡單可靠的低成本防反接功能電路。這種低成本方案一般在小電流的場合,類似小玩具等。

關鍵字: 電路設計 串聯

在現代電子系統(tǒng)設計中,SOPC(System on a Programmable Chip,可編程片上系統(tǒng))、SoC(System on Chip,片上系統(tǒng))和FPGA(Field Programmable Gate A...

關鍵字: SOPC SoC FPGA

USB 2.0接口以其高速率等優(yōu)點漸有取代傳統(tǒng)ISA及PCI數據總線的趨勢,熱插拔特性也使其成為各種PC外設的首選接口。

關鍵字: 數據采集 電路設計

Finishing 終飾、終修指各種制成品在外觀上的最后修飾或修整工作,使產品更具美觀、保護,及質感的目的。Metal Finishing特指金屬零件或制品,其外表上為加強防蝕功能及觀而特別加做的處理層而言,如各種電鍍層...

關鍵字: PCB 電路設計
關閉