999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于FPGA控制的LED漢字滾動顯示器設計

2010-04-12 00:00:00孫振華,唐征兵
現代電子技術 2010年13期

摘 要:實現了基于FPGA硬件及VHDL語言設計的LED點陣漢字滾動顯示,可通過按鍵選擇,控制其滾動方式:左移或者右移及上移或者下移等。闡述了LED點陣顯示漢字的原理,給出了點陣漢字滾動顯示控制器的原理圖、部分VHDL源程序及時序仿真圖并進行了詳細的分析,提出了系統擴展成實現16×16點陣漢字滾動的改動思路。

關鍵詞:FPGA; VHDL語言; EDA技術; LED點陣

中圖分類號:TN949.16 文獻標識碼:B

文章編號:1004-373X(2010)13-0152-04

Design of LED Chinese Characters Scrolling Display Based on FPGA Control

SUN Zhen-hua, TANG Zheng-bing

(Xi’an Aerotechnical College, Xi’an 710077, China)

Abstract: The LED dot-matrix Chinese characters scrolling display was designed based on FPGA hardware and VHDL language, which can control its rolling way by the key selection(left shift, right shift, move up or move down). The principle of LED dot-matrix display Chinese characters, the schematic diagram of dot-matrix Chinese characters scrolling display controller are proposed, the VHDL source code and timing simulation map are analyzed in a detail. The ideas of expanding the system to realize a 16x16 dot-matrix Chinese characters scrolling.

Keywords: FPGA; VHDL language; EDA technology; LED dot-matrix

0 引 言

現代文明的一個顯著特征是城市中隨處可見的五顏六色的廣告宣傳,其中大多都是由LED點陣制作的漢字或圖形廣告,廣泛應用在銀行、醫院、酒店、火車站、體育場館等各種公共場所。

漢字滾動顯示器的傳統設計方法是用單片機來控制的,雖然單片機方案具有價格低廉,程序編程靈活等特點,但由于單片機硬件資源的限制,未來對設計的變更和升級,總是要付出較多研發經費和較長投放市場周期的代價[1-2],甚至有可能需要重新設計。況且,在以顯示為主的系統中,單片機的運算和控制等主要功能的利用率很低,單片機的優勢得不到發揮,相當于很大的資源浪費[3]。

采用EDA技術的自頂向下的模塊化設計方法,借助相關開發軟件,例如Qualtus Ⅱ軟件,將硬件描述語言——VHDL程序固化于具有豐富I/O口、內部邏輯和連線資源的FPGA(現場可編程門陣列)中。該技術具有系統設計效率高、集成度好、保密性強、易于修改、易于實現等優點,成為當今數字系統設計主流技術[4-6]。此方式所制作的LED點陣控制器,由于是純硬件行為,具有速度快、可靠性高、抗干擾能力強、開發周期短等顯著優點。

1 EDA點陣顯示漢字原理

以8×8的LED點陣為例,8×8的LED點陣是由64個發光二極管按矩陣形式排列而成,每一行上的發光管有一個公共的陽極(或陰極),每一列上的發光管有一個公共的陰極(或陽極),一般按動態掃描方式顯示漢字或圖形。掃描分為點掃描、行掃描和列掃描[7]三種方式。行掃描需要按行抽取字型碼,列掃描則需要按列抽取字型碼。為滿足視覺暫留要求,若使用點掃描方式,其掃描頻率必須大于16×64=1 024 Hz,周期小于1 ms。若使用行或列掃描,則頻率必須大于16×8=128 Hz,周期小于7.8 ms[8]。由于所用實驗板上提供有1 kHz的時鐘,本例設計中利用該時鐘進行掃描,使每行掃描時間為1 ms,實驗結果顯示亮度合適。現以行掃描為例簡單說明動態掃描顯示的原理。圖1給出漢字“熱”在點陣為列共陽時的行字模。工作時先將要掃描行的點陣字模從各列上輸出,再讓譯碼器選中(掃描)該行,使本行得以顯示,接著再送下一行數據,再使下一行有效,直到8行全被掃描一遍。至此,一幅完整的文字信息就顯現出來,然后再反復掃描這8行直至顯示新的信息。以下設計采用行掃描方式實現滾動顯示。

2 硬件原理圖

整個電路由五大部分組成:時鐘計數模塊GEL CLK,存儲漢字字模的ROM模塊ROMZI,數據分配器模塊MUX,移位模塊YW及顯示模塊XIANSHI。時鐘計數模塊用于產生整個電路所需要的時鐘及其對時鐘的計數值,例如:移位時鐘CLK YW,移位計數器CNT YW,字計數器CNT WORD,顯示掃描計數器CNT SM。 ROMZI模塊是由Qualtus Ⅱ中的LPM 1PORT ROM定制成,用來存儲8個待顯示的漢字。MUX模塊用于在掃描時鐘及掃描計數器的作用下,從 ROM中讀出一個漢字的8個行字模信息,送給移位模塊YW,YW模塊在移位時鐘及移位計數器作用下,根據SELECT信號選擇對讀出的字模信息,進行相應的移位(左移、右移、上移、下移)后,最后送顯示模塊DISP驅動LED點陣顯示漢字。原理圖如圖2所示。

圖1 漢字的像素點圖

圖2 點陣控制器原理圖

3 模塊設計及時序仿真

3.1 時鐘計數產生模塊

時鐘計數產生模塊由1 kHz的輸入時鐘為基準,進行17位的循環計數CNT[16..0]。該時鐘,既是動態掃描顯示的時鐘,也是從ROM中取一個字8個字模的時鐘,對之進行的3位循環計數作為掃描顯示計數器和取一個字的字型碼計數器。CNT[16..0]中的CNT[ 9] 是對該時鐘的1 024分頻,將其作為移位時鐘CNT YW,周期約為1 s。CNT[13..10]作為4位的移位計數器,是對移位時鐘CLK YW的計數,也是對移位位數的統計。16個狀態使一個漢字逐列移進點陣,又逐列移出。每經過16個移位時鐘,將會顯示完一個漢字。CNT[16..14]作為3位的取字計數器。CNT[16..14]CNT[2..0]作為ROM地址發生器。

3.2 ROMZI模塊

利用LPM參數化模塊庫中單口ROM,利用Qualtus Ⅱ中的MegaWizard Plug-In Manager定制而成,定制前首先要制作LPM ROM初始化文件,其中存儲待顯示漢字的字模數據,然后按照LPM MegaWizard Plug-In Manager的向導提示,結合設計要求進行定制[10]。

圖3為所定制ROM中的初始化漢字“元旦生日開心快樂”的字型碼。數據分配模塊MUX要求能在8個時鐘作用下,從ROM中讀出一行(一個漢字的8個字型碼)分別送到數據分配器中的WL1~WL8輸出端。圖4為數據分配模塊在掃描時鐘作用下讀取的字模數據,比較圖3和圖4可知,仿真結果正確,能滿足題目要求。

圖3 ROM中存儲字模數據

圖4 數據分配模塊的時序分析波形圖

3.3 移位模塊YW

移位模塊YW是整個設計的核心,行掃描實現左移,是通過每來一個移位時鐘,將每一行的字模按位左移一位,掃描時鐘到來時送出移位后的新字模。通過8次移位,可將一個漢字移出點陣平面,按類似的道理,也可以將一個漢字經8次移位后移進點陣平面。本例(圖2)中,CNT YW為移位時鐘的計數值,以WL1~WL8為欲顯示漢字的原始字模,L10~L80為移位后從列上送出的8行顯示字模信息,LL1~LL8為8個原始字模信息未送出位的暫存信號。設計中需要16個移位時鐘,通過前8個時鐘將WL1~WL8字模移進LED點陣平面,再經后8個時鐘,將漢字又一位一位地移出。移位設計參考文獻[9]中有關移位寄存器的設計,分計數值為“0000”和非“0000”兩部分處理,對第一行字模的處理為:

IF CNT YW=″0000″ THEN

L10<=″0000000″WL1(7);

LL1<=WL1(6 DOWNTO 0)′0′;

ELSE L10<=L10(6 DOWNTO 0)LL1(7);

LL1<=LL1(6 DOWNTO 0)′0′;

END IF

其他行可按相同方法處理,具體參見如下的程序:

IF CNT YW=″0000” THEN

L10<=″0000″WL1(7);LL1<=WL1(6 DOWNTO 0)′0′;

L20<=″0000″WL2(7);LL2<=WL1(6 DOWNTO 0) ′0′;

L30<=″0000″WL3(7);LL3<=WL1(6 DOWNTO 0) ′0′;

L40<=″0000″WL4(7);LL4<=WL1(6 DOWNTO 0) ′0′;

L50<=″0000″WL5(7);LL5<=WL1(6 DOWNTO 0) ′0′;

L60<=″0000″WL6(7);LL6<=WL1(6 DOWNTO 0) ′0′;

L70<=″0000″WL7(7);LL7<=WL1(6 DOWNTO 0) ′0′;

L80<=″0000″WL8(7);LL8<=WL8(6 DOWNTO 0) ′0′;

ELSE L10<=L10(6 DOWNTO 0)LL1(7);LL1<=LL1(6 DOWNTO 0) ′0′;

L20<=L20(6 DOWNTO0)LL2(7);LL2<=LL2(6 DOWNTO 0) ′0′;

L30<=L30(6 DOWNTO0)LL3(7);LL1<=LL3(6 DOWNTO 0) ′0′;

L80<= L80(6 DOWNTO 0)LL8(7);LL8<=LL8(6 DOWNTO 0) ′0′;

END IF;

右移處理方法與上面左移相反,如對第一行可按如下方法處理:

IF CNT YW=″0000″ THEN

L10<=WL1(0)″0000000″;

LL1<=′0′ WL1(7 DOWNTO 1);

ELSE L10<=LL1(0)L10(7 DOWNTO 1);LL1<=′0′LL1(7 DOWNTO 1);

END IF;

上移時的部分程序按以下思路編制:L10~L70在CNT YW為初態“0000”時,各信號均賦值X“00”,非初態時,均進行上移一位。即:L10<=L20;L20<=L30;…;L60<=L70;L70<=L80;對于L80,在漢字移進LED過程中即前8個狀態各移進一個新行,在移出LED即后8個狀態時,都補進X“00”。程序如下:

IF CNT YW=″0000″ THEN

L10<=X″00″; L20<= X″00″; … L70<= X″00″;

ELSE L10<=L20;L20<=L30;L30<=L40;… L70<=L80;END IF;

IF CNT YW(3)=′0′ THEN

CASE CNT YW(2 DOWNTO 0) IS

WHEN ″000″=>L80<=WL1;WHEN ″001″ =>L80<=WL2;

WHEN ″110″=>L80<=WL7;WHEN ″111″ =>L80<=WL8;

WHEN OTHERS=>NULL;

END CASE;

ELSE L80<=X″00″;

END IF;

下移程序可按相反思路去編。

3.4 顯示模塊DISP設計

顯示模塊DISP是以CNT SM為掃描計數器,是對1 kHz進行三位循環計數,由前述的時鐘計數產生模塊產生,WL1~WL8為待送出顯示的8個8位字型碼,由前述的移位模塊YW提供;SW[7..0]為行掃描輸出信號,連接至點陣的8個行;DATA[7..0]為行掃描時對應的列輸出字型碼,對外連至點陣的8列。 該模塊參考文獻[10]中數碼管動態顯示程序進行設計如下:

LIBRARY IEEE;

USE IEEE.STD LOGIC 1164.ALL;

USE IEEE.STDLOGIC UNSIGNDE.ALL;

ENTITY DISP IS PORT( CNT SM:IN STD LOGIC VECTOR(2 DOWNTO 0); WL1,WL2,WL3,WL4,WL5,WL6,WL7,WL8:IN STD LOGIC VECTOR(7 DOWNTO 0);

DATA:OUT STD LOGIC VECTOR(7 DOWNTO 0);

SW:OUT STD LOGIC VECTOR(7 DOWNTO 0));

END;

ARCHITECTURE ONE OF DISP IS

BEGIN

PROCESS(CNT SM)

BEGIN

CASE CNT SM IS WHEN″000″=>SW<=″00000001″;DATA<=WL1;

WHEN″001″=>SW<=″00000010″;DATA<=WL2;

WHEN″010″=>SW<=″00000010″;DATA<=WL3;

WHEN″011″=>SW<=″00000010″;DATA<=WL4;

WHEN″100″=>SW<=″00000010″;DATA<=WL5;

WHEN″101″=>SW<=″10000000″;DATA<=WL6;

WHEN″110″=>SW<=″00000010″;DATA<=WL7;

WHEN″111″=>SW<=″00000010″;DATA<=WL8;

WHEN OTHERS=>NULL;

END CASE;

END PROCESS;

END;

4 硬件實現

上述各模塊分別在Qualtus Ⅱ中通過了仿真驗證,最后對整體設計進行了硬件驗證。將設計載入KH31001開發板的CycloneⅠ系列EP1C6Q240C8 FPGA器件中,實驗證明漢字滾動顯示掃描情況均正常,能夠按照預想進行移位顯示,這說明FPGA的內核硬件工作良好,可以正確地實現所要求的設計功能。

5 系統擴展

本文是針對8×8點陣設計,故每次取8個字形碼,如果是16×16點陣,將RONZI中存儲的字形碼改為16位,數據線改為16位,一個漢字需要16個16位的字形碼,數據分配模塊MUX、移位模塊YW、顯示模塊DISP,均要將輸入輸出數據中的原來的8位改成相應的16位。掃描及取字型碼計數器CNT SM應改為CNT計數器的低4位。一個16×16點陣漢字的移進移出共需32個狀態,由5位的計數器提供。如用CNT[16..0]中的14~10位作為該計數器,這可在時鐘計數器產生單元CLK GE中應做相應修改,字計數器CNT WORD按照每取16個字進行加1統計。顯示DISP部分的譯碼器要由3-8譯碼改為4-16譯碼。顯示的漢字信息越多,ROM的地址線位數越多,字計數器CNT WORD應在時鐘計數器產生單元GE CLK中,將相應的計數器位數擴展,由CNT計數器的最高位到位15來承擔。若還是8個漢字,計數器應為CNT[17..0],CNT[17..15]為字計數器;若為16個漢字,計數器應為CNT[18..0],CNT[18..15]為字計數器,…,依次類推。

6 結 語

本文在KH31001開發板上實現了基于Altera 公司的Cyclone Ⅰ系列FPGA器件EP1C6Q240C8硬件及VHDL硬件描述語言設計的LED點陣漢字滾動顯示,能在8×8點陣上滾動顯示“元旦生日開心快樂”8個漢字。文中從 LED點陣顯示漢字的原理闡述出發,給出了點陣漢字滾動顯示控制器的原理圖,部分模塊的VHDL源程序及時序仿真圖,并能由按鍵選擇其滾動方式:左移、右移、上移、下移等,給出了系統擴展成16×16點陣漢字滾動的改動思路。從文中描述的系統擴展方案中看出,當系統顯示字符個數變化時,只需對控制邏輯和連接關系做適當的修改,再將修改完成的程序下載到器件即可,顯然,系統的維護和修改是極其方便和容易的,本文對同類設計也具有一定的參考價值。

參考文獻

[1]王廣軍,鄧記才,畢立恒.CPLD在LED點陣列滾動字符顯示中的應用[J].自動化技術與應用,2007(7):94-96.

[2]付永慶,張林.用EDA設計LED漢字滾動顯示器[J].電子產品世界,2001(13):29-30.

[3]呂常智,范迪.基于CPLD的LED點陣顯示控制器[J].微計算機信息,2006,22(32):218-219.

[4]袁海林.基于FPGA的LED點陣顯示系統的設計[J].信息技術,2007,31(8):11-13,93.

[5]曾繁泰,李冰,李曉林.EDA工程概論[M].北京:清華大學出版社,2002.

[6]褚振勇,翁木云.FPGA設計及應用[M].西安:西安電子科技大學出版社,2002.

[7]唐龍.基于FPGA的LED點陣顯示字符設計[J].科技風,2008(4):47-49.

[8]龍安國.基于單片機的LED漢字顯示屏設計與制作[J].現代電子技術,2007,30(13):186-188.

[9]潘松,黃繼業.EDA技術實用教程[M].北京:科學出版社,2002.

[10]潘松,黃繼業.EDA技術與VHDL[M].北京:清華大學出版社,2005.

主站蜘蛛池模板: 四虎综合网| 婷婷激情亚洲| 嫩草影院在线观看精品视频| 1769国产精品免费视频| 亚洲黄色高清| 成人免费午间影院在线观看| 欧美成人看片一区二区三区 | www.91中文字幕| 国产丝袜无码精品| 一本色道久久88亚洲综合| 国产亚洲精久久久久久久91| 特级毛片8级毛片免费观看| 成人欧美日韩| 国产迷奸在线看| 亚洲精品不卡午夜精品| 色婷婷色丁香| 国产91蝌蚪窝| 日韩在线中文| 国产美女一级毛片| 91精品伊人久久大香线蕉| 亚洲国产成人精品一二区| 久久婷婷色综合老司机| av一区二区无码在线| 国产一二三区在线| 国内精品小视频在线| 欧美日韩成人| 啦啦啦网站在线观看a毛片| 中日韩一区二区三区中文免费视频 | 日韩a级片视频| 婷婷亚洲视频| 亚洲一本大道在线| 国产黑丝视频在线观看| 精品亚洲欧美中文字幕在线看 | 欧美午夜网| 国产日本一区二区三区| 国产美女免费| 国产裸舞福利在线视频合集| 激情在线网| 国产a在视频线精品视频下载| 国产精品免费福利久久播放| a毛片在线免费观看| 久久久91人妻无码精品蜜桃HD| 亚洲国产高清精品线久久| 日韩无码精品人妻| 手机在线看片不卡中文字幕| 久久综合色播五月男人的天堂| 人妻一区二区三区无码精品一区| 国产精品 欧美激情 在线播放 | 国产香蕉一区二区在线网站| 亚洲九九视频| 欧美性精品不卡在线观看| 亚洲精品动漫在线观看| 欧美在线观看不卡| 欧美成人一级| 2024av在线无码中文最新| 在线观看国产精品日本不卡网| 亚洲美女操| 丁香综合在线| 国产视频自拍一区| 中文成人在线视频| 亚洲视频色图| 国产在线一区视频| 自慰网址在线观看| 伊人91在线| 国产激情第一页| 久久夜夜视频| 国产精品成人久久| 中文国产成人久久精品小说| 色偷偷一区| 欧美午夜一区| 五月丁香伊人啪啪手机免费观看| 亚洲高清日韩heyzo| 全色黄大色大片免费久久老太| 国产免费怡红院视频| 国产一区二区网站| 老司国产精品视频91| 亚洲码一区二区三区| 国产精品女在线观看| 91视频免费观看网站| 欧美不卡在线视频| 67194在线午夜亚洲| 欧美亚洲日韩中文|