另外还需指出, 由于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
关于显示光电就介绍完了,您有什么想法可以联系小编。