新聞中心

        EEPW首頁 > 光電顯示 > 設計應用 > 基于FPGA的LED點陣顯示字符設計

        基于FPGA的LED點陣顯示字符設計

        作者: 時間:2012-05-02 來源:網絡 收藏
        隨著社會的發展和信息時代對各類信息快速發布的需要, 許多政府部門和企事業單位從提高自身形象和信息規范化管理考慮, 廣泛采用 電子顯示屏顯示產品, 此類多媒體顯示系統通過一定的控制方式,用于顯示文字、圖形、圖像、動畫、股市行情等各種信息以及電視、錄像、DVD 等信號, 是交通指揮引導、部隊作戰、電力部門、公共場所進行企業形象宣傳、信息發布和精神文明建設的有效工具和良好窗口。

          采用現場可編程邏輯器件( ) 作為控制器, 選擇合適的器件, 利用器件豐富的I/O 口、內部邏輯和連線資源, 采用自上而下的模塊化設計方法, 可以方便地設計整個顯示系統。

          電子設計自動化(EDA)技術是基于可編程器件( PLD) 的數字電子系統設計, 它是進行系統芯片集成的新設計方法, 也正在快速地取代基于PCB 板的傳統設計方式。在EDA工具軟件MAX+PLUSⅡ的支持下, 本設計通過了編譯、適配和軟件仿真驗證。最后用載入真實實驗系統的硬件實驗證明了它的正確性。

          1 系統結構及其原理

          本設計結合上海航虹高科技公司生產的EDA實驗箱, 需要顯示的16 個字符的字模已存放在EPROM 的8000H~807FH, 采用單個8×8 點陣(WTD3088)顯示字符, 顯示控制由現場可編程門陣列( ) EPF10K20TC144- 4 來實現。系統原理是首先產生點陣字模地址, 并從存儲器讀出數據存放在16 位寄存器中, 然后輸出到 點陣的列, 同時對點陣列循環掃描以動態顯示數據, 當需要顯示數據字模的列和被選中的列能夠協調配合起來, 就可以正確顯示字符。

          2 FPGA設計及其原理

          為在8×8LED 發光二極管點陣上顯示字符, 首先要把字符表示成為8×8 像素點( AD0~AD7) , 分別為按列抽取依序排列的字符像素信息, 均具有8 位字長。然后依次對多字符抽取像素信息, 并按序排隊存放于EPROM 之中, 便可得到一個待顯示數據序列。進一步通過尋址的方法來控制該數據序列的釋放過程, 就可實現在8×8LED發光二極管點陣上滾動顯示多個字符信息的目的。page 控制字符顯示的滾動速度, 它的取值范圍應為0~N, col 決定LED 點陣的列開關的掃描速度,它的取值范圍應為0~7.某一時刻能在顯示數據序列中定位待顯示數據的地址指針可用下式計算: addr=page+col應當注意的是, 掃描速度應遠大于滾動速度, 本設計中使用的掃描時鐘是1KHz, 字符的滾動速度是1 秒/ 個。調節字符信息的滾動速度;改變col 的重復掃描周期, 可改善在LED 點陣上顯示完整字符信息的穩定性。

          另外還需指出, 由于addr 的運算要靠硬件實現, 故地址指針addr的模應取為N, 而且為實現全部字符信息滾過LED 點陣, 必須在數據N前補充8 個空數據字節。根據其工作原理, 設計了描述FPGA內核硬件功能的VHDL 語言程序。本設計結合了EDA實驗箱和ALTERA公司的MAX+PLUSⅡ研發工具, 并采取了行為的描述方式。

          VHDL程序如下:

          libraryieee;

          use ieee.s td_logic_1164.all;

          use ieee.s td_logic_arith.all;

          use ieee.s td_logic_uns igned.all;

          entityledis

          port (clk1,clk2,reset: ins td_logic;

          led_s: out s td_logic_vector(2downto0);

          memcs,rd,wr,cs0809,sELmled:out s td_logic;

          a: out s td_logic_vector(15downto0);

          ad: out s td_logic_vector(7downto0));

          end;

          architecture led_archofledis

          s ignalcol:integerrange 0to7;

          s ignalpage :integerrange 0to15;

          s ignaloe:s td_logic;

          begin

          proces s(clk2,reset,col)

          begin

          ifreset=''1'' then

          col=0;

          els if(clk2''event andclk2=''1'')then

          col=col+1;

          endif;

          led_s = conv_s td_logic_vector(col,3);

          a(2downto0)=conv_s td_logic_vector(col,3);

          endproces s;

          proces s(clk1,page)

          begin

          if(clk1''event andclk1=''1'')then

          page=page+1;

          endif;

          a(6downto3)=conv_s td_logic_vector(page,4);

          endproces s;

          ad= "ZZZZZZZZ";oe = ''0'';

          memcs = ''0'';rd= ''0'';

          wr= ''1'';selmled=''1'';cs0809= ''1'';

          a(15downto7)="100000000";

          endled_arch;

          3 實驗驗證

          通過使用EDA工具軟件MAX+PLUSⅡ中的仿真器, 對通過編譯的字符滾動顯示器的VHDL設計進行了模擬仿真驗證, 證明FPGA的內核硬件工作良好。此外, 將VHDL 程序下載到由上海航虹高科技公司生產的EDA實驗箱上后, 能正確顯示存放于EPROM 中的字符。從而說明了在硬件系統中字符滾動和顯示掃描情況也均正常, 驗證了設計的正確性。

          4 結束語

          本設計為顯示單個字符系統, 若要同時顯示多個字符時, 可以加入多個LED 點陣即可。同時采用外部譯碼器時, 可以控制的字符數將大大增加, 但須注意時鐘CLK的頻率需要提高, 以眼睛看到整個字符的不閃爍為基準。此外, 由于FPGA的驅動能力有限, 當點陣LED 顯示亮度不夠時, 需要為LED 點陣添加驅動電路( 如高壓大電流達林頓陣列集成電路) 以提高的LED顯示亮度。



        關鍵詞: FPGA LED 點陣顯示

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 玛沁县| 河源市| 稷山县| 霍城县| 当阳市| 南靖县| 昆山市| 抚州市| 东宁县| 博野县| 玛沁县| 浦北县| 富裕县| 高碑店市| 乐平市| 江都市| 西乡县| 鄱阳县| 康马县| 平乐县| 定西市| 濉溪县| 安龙县| 涿州市| 韶关市| 芒康县| 通州区| 庆安县| 清丰县| 炎陵县| 武隆县| 麻江县| 汕尾市| 广安市| 马尔康县| 习水县| 资兴市| 丰镇市| 思茅市| 龙州县| 鄄城县|