论文部分内容阅读
摘 要:随着电子设计技术的发展,通过大规模可编程集成电路控制的LED显示屏的应用越来越广,通过FPGA控制LED显示屏的设计正以其高灵活性,高效率,低成本,低能耗等优点逐渐成为人们使用LED显示控制的主流设计方式。本设计是利用EDA技术,基于FPGA的基础上控制16*16的LED点阵汉字显示设计,在技术实现上相较其他简单并且易更改或升级,在熟悉VHDL代码及各功能的前提下,编写用于控制LED显示屏的程序代码及预先设定好的所需显示的汉字符号代码,通过Quartus II软件的编译仿真,在硬件电路上实现LED屏上的汉字滚动或循环显示。
关键词:FPGA VHDL 汉字显示
1.前言
1.1 概述
LED汉字显示屏如今在越来越多的场合有了广泛的应用,例如体育场馆中的大屏显示器,银行、广告、火车站包括很多小吃摊的宣传。LED汉字显示屏在未来将会有越来越多用武之地,并且呈现快速增长之势。
因此研究LED汉字显示的设计方法将具有很重要的理论及现实的意义。
基于FPGA的LED_16*16点阵汉字显示设计是通过EDA技术控制LED显示屏的工作,达到预期的设计目的。之所以基于FPGA的设计是因为现场可编程门阵列(FPGA)设计的周期小,灵活度较高,适合用于较小的批量系统,能够提高系统的可靠性和集成度,并且采用了编写灵活的VHDL语言编写主程序。此文正是基于对FPGA及LED的了解下,通过可编程门阵列控制16*16的LED汉字显示。显示的汉字字符是预先设定好的,将汉字显示内容翻译成程序代码,通过FPGA编译显示出来,需要另外增加或修改字符与图形可以通过16*16汉字字符生成器翻译成代码语言,然后植入程序内编译仿真,最后下载至实际硬件电路中循环显示预先设定的字符。
1.2 总体设计
1.2.1 设计任务
本次设计需要达到的效果是在16*16的LED显示屏上显示出“成、都、理、工、大、学、欢、迎、您”九个汉字,使用FPGA设计控制LED显示屏循环显示这九个汉字。
1.2.2 设计方案
(1)设计一个32进制计数器用于循环显示九个汉字,每个汉字的显示时间为1s。
(2)设计一个16进制计数器用于控制行和列驱动控制器的输出数据。
(3)设计一个列驱动控制器。
(4)设计一个行驱动控制器。
(5)将所有分块设计组合成一个“元器件”并下载至硬件电路中显示九个不同的汉字。
方案:每次显示一个汉字,一秒钟后刷新显示第二个汉字,然后一秒后刷新显示第三个汉字,依次刷新显示所有汉字。
1.3LED点阵显示特点
(1)可以用于显示各种文字、数字、图表、曲线、图形;
(2)采用纯红、高绿作双基色的发光器件,发光亮度高,色彩鲜艳、丰富;
2.软件的设计与仿真
2.1LED的显示原理
16×16扫描LED点阵汉字显示的工作原理与8位扫描数码管类似。LED点阵有16个端口,每个阴极端口又有16个LED灯,所以一共16*16个LED灯,其译码地址通过4位列信号线(SEL0-SEL3)控制,其汉字扫描码由16位段地址(0-15)输入。通过时钟信号的每列扫描完整的显示汉字。
点阵LED采用扫描的方式显示,实际运用时分为三种:点扫描、行扫描、列扫描。
使用点扫描模式时,其频率必须较大,周期应小于1ms才能符合人眼视觉停留要求。而对于行扫描和列扫描,其扫描频率则必须大于128Hz,那么周期需要比7.8ms小,才符合要求,使得LED显示灯在人眼中能显示一个完整的汉字。另外,在驱动一整行(列)LED灯时,激励电流必须足够大才能保证LED灯有足够的亮度,否则会出现LED灯亮度不足而模糊的状态。
2.2計数器的设计
2.2.132进制计数器的设计与仿真
COUNT32.vhd是设计的32进制的计数器,每当计数器加一,计一个数,然后输出下一个字。例如,当计数为“00000B”时显示“成”,当计数为“00001B”时显示“都”等。给定的脉冲周期为1s。程序描述如下:
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY COUNT32 IS
PORT( CLK1: IN STD_LOGIC;
QOUT : OUT STD_LOGIC_VECTOR(4 DOWNTO 0));
END ENTITY COUNT32;
ARCHITECTURE BEHV OF COUNT32 IS
SIGNAL CQI : STD_LOGIC_VECTOR(4 DOWNTO 0);
BEGIN
PROCESS(CLK1)
BEGIN
IF (CLK1'EVENT AND CLK1='1') THEN
CQI<=CQI+1;
END IF;
QOUT<=CQI;
END PROCESS;
END ARCHITECTURE BEHV;
每当CLK1给一个脉冲时,输出值为前一个输出值加一,直至计数至32。例如,24ns时输出为00010,24ns后变为00011,较前数值加一,因此该模块满足设计要求。
2.2.216进制计数器的设计与仿真
COUNT16.vhd是设计的16进制的计数器,其输出端用于控制行驱动和列驱动控制器的输出数据,程序从略。 如图所示为16进制计数器的时序仿真图,每當CLK1给一个脉冲时,输出值为前一个输出值加一,直至计数至16。例如,当时间为24.425ns时的输出为2,当基于时钟脉冲CLK1后,即24.425ns后输出为3,较前数值加一,因此该模块满足设计要求。
2.3 列驱动设计与仿真
ROWCON.vhd为行驱动控制器,该模块控制所亮的行,当输出为0001H时,给点阵的第一行高电平,输出为0010H时,给点阵的第二行高电平,依次类推,逐次给每行高电平。
2.4 行驱动设计与仿真
XIANSHI.vhd为列驱动控制器,SHI控制的是所显示的字。例如,当SHI为00H时,表示显示第一个字;当SHI为01H时,表示显示第二个字,依次类推。WEI控制显示汉字的每一行的信息,例如当WEI为0000B时,表示的是输出字的第一行的文字信息;当WEI为0001B时,表示的是输出字的第二行的文字信息,依次类推。所需要显示的汉字分别是“成、都、理、工、大、学、欢、迎、您”,
2.5分块程序的组合与全程编译仿真
将32进制计数器,16进制计数器,行扫描模块,汉字字符扫描与显示模块组合,分别引出CLK(控制每个字的行扫描,扫描频率较高)、CLK1(控制显示字符的快慢,频率为1秒)为输入,ROW[3..0](根据CLK进行每一列的扫描),Q[15..0](表示每个字符各列的代码信息)为输出,这样就将所有的分块程序组合至含2个输入,2个输出的模块中。
3.软件的整体调试、编译与下载
3.1 子程序块的编译与仿真
在Quartus II中新建四个.vhd文件,分别命名为COUNT32、COUNT16、ROWCON、XIANSHI,分别编写程序,将程序编译后,分别新建四个.vwf的文件,用于对上诉四个子程序的时序仿真,待仿真正确结束后,全部保存在同一文件夹中。
3.2 子程序块的组合
将四个.vhd文件分别创建为一个元件,共有四个元件,将四个元件按照2.5.1原理组合图链接好后,命名为Block1.bdf,新建一个Block1.vwf文件,将组合元件编译,检查错误,进行全程的编译与仿真
3.3 程序下载结果展示
在16*16 LED显示屏中显示“成都理工大学欢迎您”,部分结果截取如下图所示,即完成了预定的设计任务。
参考文献:
[1]艾明晶.EDA设计实验教程.清华大学出版社,2014.
[2]乔庐峰、王志功.VHDL数字电路设计教程.电子工业出版社,2013.1
[3]张鹏、李曼义.基于FPGA和VHDL的LED点阵汉字滚动显示设计.信息技术,2009.12
关键词:FPGA VHDL 汉字显示
1.前言
1.1 概述
LED汉字显示屏如今在越来越多的场合有了广泛的应用,例如体育场馆中的大屏显示器,银行、广告、火车站包括很多小吃摊的宣传。LED汉字显示屏在未来将会有越来越多用武之地,并且呈现快速增长之势。
因此研究LED汉字显示的设计方法将具有很重要的理论及现实的意义。
基于FPGA的LED_16*16点阵汉字显示设计是通过EDA技术控制LED显示屏的工作,达到预期的设计目的。之所以基于FPGA的设计是因为现场可编程门阵列(FPGA)设计的周期小,灵活度较高,适合用于较小的批量系统,能够提高系统的可靠性和集成度,并且采用了编写灵活的VHDL语言编写主程序。此文正是基于对FPGA及LED的了解下,通过可编程门阵列控制16*16的LED汉字显示。显示的汉字字符是预先设定好的,将汉字显示内容翻译成程序代码,通过FPGA编译显示出来,需要另外增加或修改字符与图形可以通过16*16汉字字符生成器翻译成代码语言,然后植入程序内编译仿真,最后下载至实际硬件电路中循环显示预先设定的字符。
1.2 总体设计
1.2.1 设计任务
本次设计需要达到的效果是在16*16的LED显示屏上显示出“成、都、理、工、大、学、欢、迎、您”九个汉字,使用FPGA设计控制LED显示屏循环显示这九个汉字。
1.2.2 设计方案
(1)设计一个32进制计数器用于循环显示九个汉字,每个汉字的显示时间为1s。
(2)设计一个16进制计数器用于控制行和列驱动控制器的输出数据。
(3)设计一个列驱动控制器。
(4)设计一个行驱动控制器。
(5)将所有分块设计组合成一个“元器件”并下载至硬件电路中显示九个不同的汉字。
方案:每次显示一个汉字,一秒钟后刷新显示第二个汉字,然后一秒后刷新显示第三个汉字,依次刷新显示所有汉字。
1.3LED点阵显示特点
(1)可以用于显示各种文字、数字、图表、曲线、图形;
(2)采用纯红、高绿作双基色的发光器件,发光亮度高,色彩鲜艳、丰富;
2.软件的设计与仿真
2.1LED的显示原理
16×16扫描LED点阵汉字显示的工作原理与8位扫描数码管类似。LED点阵有16个端口,每个阴极端口又有16个LED灯,所以一共16*16个LED灯,其译码地址通过4位列信号线(SEL0-SEL3)控制,其汉字扫描码由16位段地址(0-15)输入。通过时钟信号的每列扫描完整的显示汉字。
点阵LED采用扫描的方式显示,实际运用时分为三种:点扫描、行扫描、列扫描。
使用点扫描模式时,其频率必须较大,周期应小于1ms才能符合人眼视觉停留要求。而对于行扫描和列扫描,其扫描频率则必须大于128Hz,那么周期需要比7.8ms小,才符合要求,使得LED显示灯在人眼中能显示一个完整的汉字。另外,在驱动一整行(列)LED灯时,激励电流必须足够大才能保证LED灯有足够的亮度,否则会出现LED灯亮度不足而模糊的状态。
2.2計数器的设计
2.2.132进制计数器的设计与仿真
COUNT32.vhd是设计的32进制的计数器,每当计数器加一,计一个数,然后输出下一个字。例如,当计数为“00000B”时显示“成”,当计数为“00001B”时显示“都”等。给定的脉冲周期为1s。程序描述如下:
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY COUNT32 IS
PORT( CLK1: IN STD_LOGIC;
QOUT : OUT STD_LOGIC_VECTOR(4 DOWNTO 0));
END ENTITY COUNT32;
ARCHITECTURE BEHV OF COUNT32 IS
SIGNAL CQI : STD_LOGIC_VECTOR(4 DOWNTO 0);
BEGIN
PROCESS(CLK1)
BEGIN
IF (CLK1'EVENT AND CLK1='1') THEN
CQI<=CQI+1;
END IF;
QOUT<=CQI;
END PROCESS;
END ARCHITECTURE BEHV;
每当CLK1给一个脉冲时,输出值为前一个输出值加一,直至计数至32。例如,24ns时输出为00010,24ns后变为00011,较前数值加一,因此该模块满足设计要求。
2.2.216进制计数器的设计与仿真
COUNT16.vhd是设计的16进制的计数器,其输出端用于控制行驱动和列驱动控制器的输出数据,程序从略。 如图所示为16进制计数器的时序仿真图,每當CLK1给一个脉冲时,输出值为前一个输出值加一,直至计数至16。例如,当时间为24.425ns时的输出为2,当基于时钟脉冲CLK1后,即24.425ns后输出为3,较前数值加一,因此该模块满足设计要求。
2.3 列驱动设计与仿真
ROWCON.vhd为行驱动控制器,该模块控制所亮的行,当输出为0001H时,给点阵的第一行高电平,输出为0010H时,给点阵的第二行高电平,依次类推,逐次给每行高电平。
2.4 行驱动设计与仿真
XIANSHI.vhd为列驱动控制器,SHI控制的是所显示的字。例如,当SHI为00H时,表示显示第一个字;当SHI为01H时,表示显示第二个字,依次类推。WEI控制显示汉字的每一行的信息,例如当WEI为0000B时,表示的是输出字的第一行的文字信息;当WEI为0001B时,表示的是输出字的第二行的文字信息,依次类推。所需要显示的汉字分别是“成、都、理、工、大、学、欢、迎、您”,
2.5分块程序的组合与全程编译仿真
将32进制计数器,16进制计数器,行扫描模块,汉字字符扫描与显示模块组合,分别引出CLK(控制每个字的行扫描,扫描频率较高)、CLK1(控制显示字符的快慢,频率为1秒)为输入,ROW[3..0](根据CLK进行每一列的扫描),Q[15..0](表示每个字符各列的代码信息)为输出,这样就将所有的分块程序组合至含2个输入,2个输出的模块中。
3.软件的整体调试、编译与下载
3.1 子程序块的编译与仿真
在Quartus II中新建四个.vhd文件,分别命名为COUNT32、COUNT16、ROWCON、XIANSHI,分别编写程序,将程序编译后,分别新建四个.vwf的文件,用于对上诉四个子程序的时序仿真,待仿真正确结束后,全部保存在同一文件夹中。
3.2 子程序块的组合
将四个.vhd文件分别创建为一个元件,共有四个元件,将四个元件按照2.5.1原理组合图链接好后,命名为Block1.bdf,新建一个Block1.vwf文件,将组合元件编译,检查错误,进行全程的编译与仿真
3.3 程序下载结果展示
在16*16 LED显示屏中显示“成都理工大学欢迎您”,部分结果截取如下图所示,即完成了预定的设计任务。
参考文献:
[1]艾明晶.EDA设计实验教程.清华大学出版社,2014.
[2]乔庐峰、王志功.VHDL数字电路设计教程.电子工业出版社,2013.1
[3]张鹏、李曼义.基于FPGA和VHDL的LED点阵汉字滚动显示设计.信息技术,2009.12