eda课程设计报告16x16点阵显示.docx

上传人:b****8 文档编号:10024569 上传时间:2023-05-23 格式:DOCX 页数:17 大小:106.04KB
下载 相关 举报
eda课程设计报告16x16点阵显示.docx_第1页
第1页 / 共17页
eda课程设计报告16x16点阵显示.docx_第2页
第2页 / 共17页
eda课程设计报告16x16点阵显示.docx_第3页
第3页 / 共17页
eda课程设计报告16x16点阵显示.docx_第4页
第4页 / 共17页
eda课程设计报告16x16点阵显示.docx_第5页
第5页 / 共17页
eda课程设计报告16x16点阵显示.docx_第6页
第6页 / 共17页
eda课程设计报告16x16点阵显示.docx_第7页
第7页 / 共17页
eda课程设计报告16x16点阵显示.docx_第8页
第8页 / 共17页
eda课程设计报告16x16点阵显示.docx_第9页
第9页 / 共17页
eda课程设计报告16x16点阵显示.docx_第10页
第10页 / 共17页
eda课程设计报告16x16点阵显示.docx_第11页
第11页 / 共17页
eda课程设计报告16x16点阵显示.docx_第12页
第12页 / 共17页
eda课程设计报告16x16点阵显示.docx_第13页
第13页 / 共17页
eda课程设计报告16x16点阵显示.docx_第14页
第14页 / 共17页
eda课程设计报告16x16点阵显示.docx_第15页
第15页 / 共17页
eda课程设计报告16x16点阵显示.docx_第16页
第16页 / 共17页
eda课程设计报告16x16点阵显示.docx_第17页
第17页 / 共17页
亲,该文档总共17页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

eda课程设计报告16x16点阵显示.docx

《eda课程设计报告16x16点阵显示.docx》由会员分享,可在线阅读,更多相关《eda课程设计报告16x16点阵显示.docx(17页珍藏版)》请在冰点文库上搜索。

eda课程设计报告16x16点阵显示.docx

eda课程设计报告16x16点阵显示

 

湖北大学本科课程设计

 

题目16*16点阵显示

姓名学号

专业年级

指导教师职称

 

2016年12月18日

 

 

一、设计内容

1.1功能描述

本实验主要完成汉字字符在LED上的显示,16*16扫描LED点阵的工作原理与8位扫描数码管类似,只是显示的方式与结果不一样而已。

下面就本实验系统的16*16点阵的工件原理做一些简单的说明。

16*16点阵由此256个LED通过排列组合而形成16行*16列的一个矩阵式的LED阵列,俗称16*16点阵。

单个的LED的电路如下图11-1所示:

图11-1单个LED电路图

由上图可知,对于单个LED的电路图当Rn输入一个高电平,同时Cn输入一个低电平时,电路形成一个回路,LED发光。

也就是LED点阵对应的这个点被点亮。

16*16点阵也就是由16行和16列的LED组成,其中每一行的所有16个LED的Rn端并联在一起,每一列的所有16个LED的Cn端并联在一起。

通过给Rn输入一个高电平,也就相当于给这一列所有LED输入了一个高电平,这时只要某个LED的Cn端输入一个低电平时,对应的LED就会被点亮。

具体的电路如下图11-2所示:

图11-216*16点阵电路原理图

在点阵上显示一字符是根据其字符在点阵上的显示的点的亮灭来表示的,如下图11-3所示:

图11-3字符在点阵上的显示

在上图中,显示的是一个“汉”字,只要将被“汉”字所覆盖的区域的点点亮,则在点阵中就会显示一个“汉”字。

根据前面我们所介绍的点阵显示的原理,当我们选中第一列后,根据要显示汉字的第一列中所需要被点亮的点对应的Rn置为高电平,则在第一列中需要被点亮的点就会被点亮。

依此类推,显示第二列、第三列……第N列中需要被点亮的点。

然后根据人眼的视觉原理,将每一列显示的点的间隔时间设为一定的值,那么我们就会感觉显示一个完整的不闪烁的汉字。

同时也可以按照这个原理来显示其它的汉字。

下图11-4是一个汉字显示所需要的时序图:

图11-4显示时序图

1.2实现目标

本实验的示例程序依次显示的是“考试必过”,要求每隔一秒换下一个字显示。

 

二、逻辑电路图

此程序分为五个模块,两个计数器和一个行驱动程序和一个显示字体控制程序,最后再加上一个顶层文件,用来连接前四个模块,程序简图如下:

CLK1

Q1

W1

CLK

图2-2电路连接简图

 

三、功能模块的划分

3.1系统的总体框图

 

 

3-1模块图

四、主要功能的实现

4.118进制加法器设计

CNT8.vhd是8进制的计数器,其每计一次数,输出一个字。

例如当计数为“000B”时显示“湖”,当计数为“001B”时显示“南”。

给其脉冲周期为1S。

4.2216进制计数器设计

CNT16.vhd是16进制的计数器,其输出端控制行和列驱动控制器的输出数据;

4.3列驱动设计

HANG.vhd为列驱动控制器,该模块控制所亮的行,当输出为0001H时,给点阵的第一行高电平,输出为0010H时,给点阵的第二行高电平,依次类推,逐次给每行高电平。

4.4字体显示控制器

XIANSHI.vhd为字体显示控制器,SHI控制的是所显示的字。

例如当SHI为00H时,表示显示第一个字;当SHI为01H时,表示显示第二个字,依次类推。

WEI控制所显示的为字的第几行,例如当WEI为0000B时,表示输出字的第一行文字信息;WEI为0001B时,表示输出字的第二行文字信息,依次类推。

4.5顶层文件设计

JUZHEN16.vhd是顶层文件设计,文件在实体中首先定义了顶层设计元件的端口信号,然后在architecture和begin之间利用component语句对准备调用的元件做了声明,并定义了c,d两个信号作为器件内部的连接线。

最后利用端口映射语句PORTMAP()将两个计数器和列驱动,字体显示驱动连接起来构成一个完整的器件。

五、系统调试与仿真

5.1程序仿真图

图5-1CNT16.vhd仿真波形图

 

图5-2HANG.vhd仿真波形图

 

图5.3顶层仿真图

5.216*16LED点阵显示引脚分配

16×16点阵信号名称

FPGA引脚

说明

DOC-C0

F7

DOT-C1

E8

DOT-C2

J8

DOT-C3

G9

DOT-C4

G10

DOT-C5

F11

DOT-C6

F9

DOT-C7

F10

DOT-C8

G2

DOT-C9

F1

DOT-C10

E1

DOT-C11

E2

DOT-C12

D1

DOT-C13

D2

DOT-C14

C2

DOT-C15

B2

DOT-R0

B3

行选择

DOT-R1

C3

行选择

DOT-R2

H1

行选择

DOT-R3

J2

行选择

DOT-R4

L2

行选择

DOT-R5

J13

行选择

DOT-R6

H15

行选择

DOT-R7

V11

行选择

DOT-R8

E10

行选择

DOT-R9

F12

行选择

DOT-R10

E12

行选择

DOT-R11

F13

行选择

DOT-R12

F14

行选择

DOT-R13

E15

行选择

DOT-R14

F15

行选择

DOT-R015

F16

行选择

时钟:

Clk

N1

图5.4引脚分配

5.3程序运行结果

程序仿真完全正确后,线封锁引脚,然后连接硬件,再次编译,没有错误后下载程序到硬件之中,当拨码开关闭合时,得到点阵LED显示结果,其中每个汉字显示时间为一秒,一秒过后自动换下一个汉字,直到显示完“考试必过”,再循环显示以上内容;当拨码开关断开时,点阵LED不显示任何内容

 

六、附件

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

USEIEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITYCNT8IS

PORT(CLK1:

INSTD_LOGIC;

QOUT:

OUTSTD_LOGIC_VECTOR(2DOWNTO0));

ENDENTITYCNT8;

ARCHITECTUREBEHVOFCNT8IS

SIGNALCQI:

STD_LOGIC_VECTOR(2DOWNTO0);

BEGIN

PROCESS(CLK1)

BEGIN

IF(CLK1'EVENTANDCLK1='1')THEN

CQI<=CQI+1;

ENDIF;

QOUT<=CQI;

ENDPROCESS;

ENDARCHITECTUREBEHV;

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

USEIEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITYCNT16IS

PORT(CLK:

INSTD_LOGIC;

QOUT:

OUTSTD_LOGIC_VECTOR(3DOWNTO0));

ENDENTITYCNT16;

ARCHITECTUREBEHVOFCNT16IS

SIGNALCQI:

STD_LOGIC_VECTOR(3DOWNTO0);

BEGIN

PROCESS(CLK)

BEGIN

IF(CLK'EVENTANDCLK='1')THEN

CQI<=CQI+1;

ENDIF;

QOUT<=CQI;

ENDPROCESS;

ENDARCHITECTUREBEHV;

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

USEIEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITYHANGIS

PORT(DATAIN:

INSTD_LOGIC_VECTOR(3DOWNTO0);

ROW:

OUTSTD_LOGIC_VECTOR(15DOWNTO0));

ENDENTITYHANG;

ARCHITECTUREBEHVOFHANGIS

SIGNALHANG:

STD_LOGIC_VECTOR(15DOWNTO0);

BEGIN

PROCESS(DATAIN)

BEGIN

CASEDATAINIS

WHEN"0000"=>ROW<="1000000000000000";

WHEN"0001"=>ROW<="0100000000000000";

WHEN"0010"=>ROW<="0010000000000000";

WHEN"0011"=>ROW<="0001000000000000";

WHEN"0100"=>ROW<="0000100000000000";

WHEN"0101"=>ROW<="0000010000000000";

WHEN"0110"=>ROW<="0000001000000000";

WHEN"0111"=>ROW<="0000000100000000";

WHEN"1000"=>ROW<="0000000010000000";

WHEN"1001"=>ROW<="0000000001000000";

WHEN"1010"=>ROW<="0000000000100000";

WHEN"1011"=>ROW<="0000000000010000";

WHEN"1100"=>ROW<="0000000000001000";

WHEN"1101"=>ROW<="0000000000000100";

WHEN"1110"=>ROW<="0000000000000010";

WHEN"1111"=>ROW<="0000000000000001";

WHENOTHERS=>ROW<="0000000000000000";

ENDCASE;ENDPROCESS;

ENDARCHITECTUREBEHV;

LIBRARYieee;

USEieee.std_logic_1164.all;

ENTITYXIANSHIIS

PORT(WEI:

INSTD_LOGIC_VECTOR(3downto0);

SHI:

INSTD_LOGIC_VECTOR(2downto0);

Q:

OUTSTD_LOGIC_VECTOR(15downto0));

ENDXIANSHI;

ARCHITECTUREXIANSHI_architectureOFXIANSHIIS

BEGIN

process(shi,wei)

variableb:

std_logic_vector(15downto0);

begin

caseshiis

When"000"=>

caseweiis

when"0000"=>b:

="1111111111111111";

when"0001"=>b:

="1011111111110111";

when"0010"=>b:

="1101111111110000";

when"0011"=>b:

="1110111011101110";

when"0100"=>b:

="1111111101110110";

when"0101"=>b:

="1000000001110000";

when"0110"=>b:

="0010011111111001";

when"0111"=>b:

="1110111101110110";

when"1000"=>b:

="1111111101110000";

when"1001"=>b:

="1111110000010110";

when"1010"=>b:

="1111010111010110";

when"1011"=>b:

="1110110111010110";

when"1100"=>b:

="1101110000010110";

when"1101"=>b:

="1011111111011110";

when"1110"=>b:

="1011111111011110";

when"1111"=>b:

="1111111111111111";

whenothers=>null;endcase;

When"001"=>

caseweiis

when"0000"=>b:

="1111111111111111";

when"0001"=>b:

="1111111110111111";

when"0010"=>b:

="1111111101111111";

when"0011"=>b:

="1110000000000111";

when"0100"=>b:

="1111110111111111";

when"0101"=>b:

="1111101111111111";

when"0110"=>b:

="1111000000000111";

when"0111"=>b:

="1111011011010111";

when"1000"=>b:

="1111011010110111";

when"1001"=>b:

="1111010000010111";

when"1010"=>b:

="1111011101110111";

when"1011"=>b:

="1111010000010111";

when"1100"=>b:

="1111011101110111";

when"1101"=>b:

="1111011101110111";

when"1110"=>b:

="1111111111111111";

when"1111"=>b:

="1111111111111111";

whenothers=>null;endcase;

When"010"=>

caseweiis

when"0000"=>b:

="1111111111111111";

when"0001"=>b:

="1111111111110111";

when"0010"=>b:

="1000000000000011";

when"0011"=>b:

="1111111011111111";

when"0100"=>b:

="1111111011111111";

when"0101"=>b:

="1111111011111111";

when"0110"=>b:

="1111111011111111";

when"0111"=>b:

="1111111011111111";

when"1000"=>b:

="1111111011111111";

when"1001"=>b:

="1111111011111111";

when"1010"=>b:

="1111111011111111";

when"1011"=>b:

="1111111011111111";

when"1100"=>b:

="1111111011111011";

when"1101"=>b:

="0000000000000001";

when"1110"=>b:

="1111111111111111";

when"1111"=>b:

="1111111111111111";

whenothers=>null;endcase;

When"011"=>

caseweiis

when"0000"=>b:

="1111111111111111";

when"0001"=>b:

="1111101111111111";

when"0010"=>b:

="1111011111111111";

when"0011"=>b:

="1110111100000111";

when"0100"=>b:

="1000111101110111";

when"0101"=>b:

="1110111101110111";

when"0110"=>b:

="1110111100000111";

when"0111"=>b:

="1000000111111111";

when"1000"=>b:

="1110111000000011";

when"1001"=>b:

="1100011111011111";

when"1010"=>b:

="1010101000000011";

when"1011"=>b:

="0110101111011111";

when"1100"=>b:

="0110110111011111";

when"1101"=>b:

="1110111000000011";

when"1110"=>b:

="1110111111111111";

when"1111"=>b:

="1111111111111111";

whenothers=>null;endcase;

When"100"=>

caseweiis

when"0000"=>b:

="1101110111110111";

when"0001"=>b:

="1110111011110111";

when"0010"=>b:

="1111111111111111";

when"0011"=>b:

="1111111111011111";

when"0100"=>b:

="1000000000000001";

when"0101"=>b:

="1011111111111101";

when"0110"=>b:

="0111111111111011";

when"0111"=>b:

="1110000000011111";

when"1000"=>b:

="1111111110111111";

when"1001"=>b:

="1111111001111011";

when"1010"=>b:

="0000000000000001";

when"1011"=>b:

="1111111011111111";

when"1100"=>b:

="1111111011111111";

when"1101"=>b:

="1111111011111111";

when"1110"=>b:

="1111101011111111";

when"1111"=>b:

="1111110111111111";

whenothers=>null;endcase;

When"101"=>

caseweiis

when"0000"=>b:

="1111111111111111";

when"0001"=>b:

="1111011110011111";

when"0010"=>b:

="1110101111101111";

when"0011"=>b:

="1101110100000001";

when"0100"=>b:

="1101110011111110";

when"0101"=>b:

="1100001011000110";

when"0110"=>b:

="1101001111111111";

when"0111"=>b:

="1101110100000001";

when"1000"=>b:

="1100010111010111";

when"1001"=>b:

="1101101111010111";

when"1010"=>b:

="1101111111010111";

when"1011"=>b:

="1101111110010111";

when"1100"=>b:

="1101111110110101";

when"1101"=>b:

="1101111101110000";

when"1110"=>b:

="1111111111111111";

when"1111"=>b:

="1111111111111111";

whenothers=>null;endcase;

whenothers=>null;

endcase;

q<=b;

endprocess;

ENDXIANSHI_architecture;

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

USEIEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITYJUZHEN16IS

PORT(a,b:

INSTD_LOGIC;

Q1,W1:

OUTSTD_LOGIC_VECTOR(15DOWNTO0));

ENDENTITYJUZHEN16;

ARCHITECTUREJZ16OFJUZHEN16IS

COMPONENTCNT8

PORT(CLK1:

INSTD_LOGIC;

QOUT:

OUTSTD_LOGIC_VECTOR(2DOWNTO0));

ENDCOMPONENT;

COMPONENTCNT16

PORT(CLK:

INSTD_LOGIC;

QOUT:

OUTSTD_LOGIC_VECTOR(3DOWNTO0));

ENDCOMPONENT;

COMPONENTHANG

PORT(DATAIN:

INSTD_LOGIC_VECTOR(3DOWNTO0);

ROW:

OUTSTD_LOGIC_VECTOR(15DOWNTO0));

ENDCOMPONENT;

COMPONENTXIANSHI

PORT(WEI:

INSTD_LOGIC_VECTOR(3downto0);

SHI:

INSTD_LOGIC_VECTOR(2downto0);

Q:

OUTSTD_LOGIC_VECTOR(15downto0));

ENDCOMPONENT;

SIGNALc:

STD_LOGIC_VECTOR(3downto0);

SIGNALd:

STD_LOGIC_VECTOR(2downto0);

BEGIN

U1:

CNT8PORTMAP(CLK1=>b,QOUT=>d);

U2:

CNT16PORTMAP(CLK=>a

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 经管营销 > 经济市场

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2