另外还需指出, 由于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显示亮度。

责任编辑;zl

关于显示光电就介绍完了,您有什么想法可以联系小编。