<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁(yè) > EDA/PCB > 設(shè)計(jì)應(yīng)用 > 基于FPGA的LED點(diǎn)陣顯示字符的設(shè)計(jì)原理分析

          基于FPGA的LED點(diǎn)陣顯示字符的設(shè)計(jì)原理分析

          作者: 時(shí)間:2012-05-03 來(lái)源:網(wǎng)絡(luò) 收藏

          隨著社會(huì)的發(fā)展和信息時(shí)代對(duì)各類(lèi)信息快速發(fā)布的需要, 許多政府部門(mén)和企事業(yè)單位從提高自身形象和信息規(guī)范化管理考慮, 廣泛采用 電子顯示屏顯示產(chǎn)品, 此類(lèi)多媒體顯示系統(tǒng)通過(guò)一定的控制方式,用于顯示文字、圖形、圖像、動(dòng)畫(huà)、股市行情等各種信息以及電視、錄像、DVD 等信號(hào), 是交通指揮引導(dǎo)、部隊(duì)作戰(zhàn)、電力部門(mén)、公共場(chǎng)所進(jìn)行企業(yè)形象宣傳、信息發(fā)布和精神文明建設(shè)的有效工具和良好窗口。

          本文引用地址:http://www.ex-cimer.com/article/190433.htm

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

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

          1 系統(tǒng)結(jié)構(gòu)及其原理

          本設(shè)計(jì)結(jié)合上海航虹高科技公司生產(chǎn)的EDA實(shí)驗(yàn)箱, 需要顯示的16 個(gè)的字模已存放在EPROM 的8000H~807FH, 采用單個(gè)8×8 點(diǎn)陣(WTD3088)顯示, 顯示控制由現(xiàn)場(chǎng)可編程門(mén)陣列( ) EPF10K20TC144- 4 來(lái)實(shí)現(xiàn)。系統(tǒng)原理是首先產(chǎn)生點(diǎn)陣字模地址, 并從存儲(chǔ)器讀出數(shù)據(jù)存放在16 位寄存器中, 然后輸出到 點(diǎn)陣的列, 同時(shí)對(duì)點(diǎn)陣列循環(huán)掃描以動(dòng)態(tài)顯示數(shù)據(jù), 當(dāng)需要顯示數(shù)據(jù)字模的列和被選中的列能夠協(xié)調(diào)配合起來(lái), 就可以正確顯示。

          2 FPGA設(shè)計(jì)及其原理

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

          另外還需指出, 由于addr 的運(yùn)算要靠硬件實(shí)現(xiàn), 故地址指針addr的模應(yīng)取為N, 而且為實(shí)現(xiàn)全部字符信息滾過(guò)LED 點(diǎn)陣, 必須在數(shù)據(jù)N前補(bǔ)充8 個(gè)空數(shù)據(jù)字節(jié)。根據(jù)其工作原理, 設(shè)計(jì)了描述FPGA內(nèi)核硬件功能的VHDL 語(yǔ)言程序。本設(shè)計(jì)結(jié)合了EDA實(shí)驗(yàn)箱和ALTERA公司的MAX+PLUSⅡ研發(fā)工具, 并采取了行為的描述方式。

          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(clk2event 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)


          上一頁(yè) 1 2 下一頁(yè)

          關(guān)鍵詞: FPGA LED 點(diǎn)陣顯示 字符

          評(píng)論


          相關(guān)推薦

          技術(shù)專(zhuān)區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();