88点阵实验报告.docx

上传人:b****3 文档编号:5487553 上传时间:2022-12-17 格式:DOCX 页数:18 大小:270.38KB
下载 相关 举报
88点阵实验报告.docx_第1页
第1页 / 共18页
88点阵实验报告.docx_第2页
第2页 / 共18页
88点阵实验报告.docx_第3页
第3页 / 共18页
88点阵实验报告.docx_第4页
第4页 / 共18页
88点阵实验报告.docx_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

88点阵实验报告.docx

《88点阵实验报告.docx》由会员分享,可在线阅读,更多相关《88点阵实验报告.docx(18页珍藏版)》请在冰豆网上搜索。

88点阵实验报告.docx

88点阵实验报告

JIANGSUTEACHERSUNIVERSITYOFTECHNOLOGY

数字电路课程设计报告

 

基于FFPA的

8*8点阵显示器的设计

(软件部分)

 

学院名称:

电气信息工程学院

专业:

通信工程

班级:

08通信2W

姓名:

孙立波(朱容海)

学号:

08313219

指导教师姓名:

朱幼莲宋伟

 

2010年12月

 

序言……………………………………………………………

一、课题要求…………………………………………………………………

(1)技术要求………………………………………………………………………

(2)功能要求………………………………………………………………………

(3)本人的工作……………………………………………………………………

二、设计原理及其框图……………………………………………

(1)8*8点阵的工作原理和方案……………………………………………

(2)单元电路设计,仿真与分析……………………………………………

(3)顶层电路设计,仿真与分析……………………………………………

(4)硬件电路设计与安装图…………………………………………………

三、成品调试

(1)下载调试…………………………………………………………………

(2)收获及体会………………………………………………………………

 

序言

面对当今飞速发展的电子产品市场,设计师需要更加实用、快捷的EDA工具,使用统一的集成化设计环境,改变传统设计思路,将精力集中到设计构思、方案比较和寻找优化设计等方面,需要以最快的速度,开发出性能优良、质量一流的电子产品,对EDA技术提出了更高的要求。

未来的EDA技术将在仿真、时序分析、集成电路自动测试、高速印刷电路板设计及开发操作平台的扩展等方面取得新的突破,向着功能强大、简单易学、使用方便的方向发展。

可编程逻辑器件已经成为当今世界上最富吸引力的半导体器件,在现代电子系统设计中扮演着越来越重要的角色。

过去的几年里,可编程器件市场的增长主要来自大容量的可编程逻辑器件CPLD和FPGA。

本课程设计主要阐述基于FPGA和VHDL语言实现在8*8点阵上的汉字静态显示、一屏一屏显示以及滚动显示。

在实际学习中我们应该从应用的角度看待这门课程,初步掌握基本设计工具和设计方法,在课程实践中应锻炼自己的实际设计思想、创新思维和创造能力,力求提高自己的工程实践能力和自主创新能力。

一、课题要求

(1)技术要求

软件要求:

能够使用EDA编写程序及仿真设计,能够较为熟练的掌握Quartus软件并使用该软件进行编程、仿真和调试。

硬件要求:

FPGA(EP2C5T144C8)引脚识别和连接。

(2)功能要求

1.静态显示“王”字;

2.一屏一屏的显示“江技师”;

3.滚动的显示数字“19”。

(3)本人的工作

通过查阅资料,了解8*8点阵的工作原理和FPGA芯片的基本工作原理并负责软件的编写,仿真和调试。

 

二、设计原理及其框图

(1)8*8点阵的工作原理和方案

若要用点阵发光二极管显示汉字,首先要将汉字放在一个方块内,方格块分成8*8共64个小方格,在方块内写上汉字,在字笔划下落处的小方格里填上“1”,无笔划处填上“0”,这样就形成了一个汉字二进制数据。

下图是一只8*8阵列的点阵发光显示器,该点阵发光显示器是由8*8阵列组成,共8行,每行8只发光二极管,共64只发光像素,每列的8只发光二极管的所有负极(阴极)相连。

每行发光管的正极相连,点阵发光显示器在同一时间只能点亮一列,每列点亮的情况是根据从显示器P1~P8送入的数据点亮,要使一个字符在显示器整屏显示,点阵发光显示器就必须通过快速逐列点亮,而且是周而复始的循环点亮,使人眼的暂留视觉效应形成一个全屏字符。

8*8点阵二极管示意图

原理框图:

(2)单元电路设计,仿真与分析

<1>:

静态显示“王”字

程序:

libraryieee;

useieee.std_logic_1164.all;

useieee.std_logic_Unsigned.all;

useieee.std_logic_ARITH.all;

ENTITYjingxianis

port(clk:

instd_logic;

en:

instd_logic;

lie:

outstd_logic_vector(7downto0);--列

hang:

outstd_logic_vector(7downto0));--行

Endjingxian;

Architectureaofjingxianis

signalst1:

std_logic_vector(7downto0);

signalosc:

std_logic;

signalosd:

std_logic;

signald_ff:

std_logic_vector(27downto0);

signaldata:

std_logic_vector(7downto0);

signald0,d1,d2,d3,d4,d5,d6,d7,d8,d9,d10,d11,d12,d13,d14,d15:

std_logic_vector(7downto0);

Begin

hang<=data;

lie<=st1;

d0<="00000010";

d1<="10010010";

d2<="10010010";

d3<="11111110";

d4<="10010010";

d5<="10010010";

d6<="00000010";

d7<="00000000";--字库‘王’

First:

process

begin

waituntilclk='1';

if(d_ff(27downto0)>=2e8)then

d_ff(27downto0)<="0000000000000000000000000000";

else

d_ff(27downto0)<=d_ff+1;

endif;

osc<=notd_ff(10);

endprocessfirst;

second:

process(osc,en)

begin

if(osc='1'andosc'event)then

if(en='1')then

ifst1(7downto0)="00000000"orst1(7downto0)="01111111"then

st1(7downto0)<="11111110";data<=d0;

elsifst1(7downto0)="11111110"then

st1(7downto0)<="11111101";data<=d1;

elsifst1(7downto0)="11111101"then

st1(7downto0)<="11111011";data<=d2;

elsifst1(7downto0)="11111011"then

st1(7downto0)<="11110111";data<=d3;

elsifst1(7downto0)="11110111"then

st1(7downto0)<="11101111";data<=d4;

elsifst1(7downto0)="11101111"then

st1(7downto0)<="11011111";data<=d5;

elsifst1(7downto0)="11011111"then

st1(7downto0)<="10111111";data<=d6;

elsifst1(7downto0)="10111111"then

st1(7downto0)<="01111111";data<=d7;

endif;

elsest1<="00000000";data<="00000000";

endif;

endif;

endprocesssecond;

enda;

波形图:

 

<2>:

.一屏一屏显示“江技师”

程序:

Libraryieee;

Useieee.std_logic_1164.all;

Useieee.std_logic_unsigned.all;

Useieee.std_logic_arith.all;

Entitypingxianis

Port(

Clk,en:

instd_logic;

lie:

outstd_logic_vector(7downto0);--列

hang:

outstd_logic_vector(7downto0));--行

Endpingxian;

Architectureaofpingxianis

signalst1:

std_logic_vector(7downto0);

signalosc:

std_logic;

signalosd:

std_logic;

signald_ff:

std_logic_vector(27downto0);

signaldata:

std_logic_vector(7downto0);

signald0,d1,d2,d3,d4,d5,d6,d7:

std_logic_vector(7downto0);

signallie0:

std_logic_vector(6downto0);

begin

hang<=data;

lie<=st1;

D0<=

"01000001"whenlie0(6downto0)="0000000"else

"00001000"whenlie0(6downto0)="0000001"else

"00111100"whenlie0(6downto0)="0000010"else

"00000000";

D1<=

"01000001"whenlie0(6downto0)="0000000"else

"00101101"whenlie0(6downto0)="0000001"else

"10101000"whenlie0(6downto0)="0000010"else

"00000000";

D2<=

"01000001"whenlie0(6downto0)="0000000"else

"11111010"whenlie0(6downto0)="0000001"else

"11111111"whenlie0(6downto0)="0000010"else

"00000000";

D3<=

"01000001"whenlie0(6downto0)="0000000"else

"00101101"whenlie0(6downto0)="0000001"else

"10100000"whenlie0(6downto0)="0000010"else

"00000000";

D4<=

"01000001"whenlie0(6downto0)="0000000"else

"00001000"whenlie0(6downto0)="0000001"else

"00111100"whenlie0(6downto0)="0000010"else

"00000000";

D5<=

"00101100"whenlie0(6downto0)="0000000"else

"00110000"whenlie0(6downto0)="0000001"else

"11111100"whenlie0(6downto0)="0000010"else

"00000000";

D6<=

"01010010"whenlie0(6downto0)="0000000"else

"11111111"whenlie0(6downto0)="0000001"else

"00000010"whenlie0(6downto0)="0000010"else

"00000000";

D7<=

"10100001"whenlie0(6downto0)="0000000"else

"00100110"whenlie0(6downto0)="0000001"else

"00111101"whenlie0(6downto0)="0000010"else

"00000000";--字库江技师

first:

process

begin

waituntilclk='1';

if(d_ff(27downto0)>=2e8)then

d_ff(27downto0)<="0000000000000000000000000000";

else

d_ff(27downto0)<=d_ff+1;

endif;

osc<=notd_ff(10);

osd<=notd_ff(25);

endprocessfirst;

second:

process(osc,en)

begin

if(osc='1'andosc'event)then

if(en='1')then

ifst1(7downto0)="00000000"orst1(7downto0)="01111111"then

st1(7downto0)<="11111110";data<=d0;

elsifst1(7downto0)="11111110"then

st1(7downto0)<="11111101";data<=d1;

elsifst1(7downto0)="11111101"then

st1(7downto0)<="11111011";data<=d2;

elsifst1(7downto0)="11111011"then

st1(7downto0)<="11110111";data<=d3;

elsifst1(7downto0)="11110111"then

st1(7downto0)<="11101111";data<=d4;

elsifst1(7downto0)="11101111"then

st1(7downto0)<="11011111";data<=d5;

elsifst1(7downto0)="11011111"then

st1(7downto0)<="10111111";data<=d6;

elsifst1(7downto0)="10111111"then

st1(7downto0)<="01111111";data<=d7;

endif;

elsest1<="00000000";data<="00000000";

endif;

endif;

endprocesssecond;

third:

process(osd,en)

begin

if(osd='1'andosd'eventanden='1')then

iflie0(6downto0)="0000010"then

lie0(6downto0)<="0000000";

elselie0(6downto0)<=lie0+1;

endif;

endif;

endprocessthird;

enda;

波形图:

 

<3>:

滚动显示“19”

程序:

Libraryieee;

Useieee.std_logic_1164.all;

Useieee.std_logic_unsigned.all;

Useieee.std_logic_arith.all;

Entitygunis

Port(

Clk,en:

instd_logic;

lie:

outstd_logic_vector(7downto0);--列

hang:

outstd_logic_vector(7downto0));--行

Endgun;

Architectureaofgunis

signalst1:

std_logic_vector(7downto0);

signalosc:

std_logic;

signalosd:

std_logic;

signald_ff:

std_logic_vector(27downto0);

signaldata:

std_logic_vector(7downto0);

signald0,d1,d2,d3,d4,d5,d6,d7:

std_logic_vector(7downto0);

signallie0:

std_logic_vector(6downto0);

begin

hang<=data;

lie<=st1;

D0<=

"11111111"whenlie0="0000000"else--19第0列

"10010001"whenlie0="0000001"else--19第1列

"10010001"whenlie0="0000010"else--19第2列

"10010001"whenlie0="0000011"else--19第3列

"11110001"whenlie0="0000100"else--19第4列

"00000000"whenlie0="0000101"else--19第5列

"11111111"whenlie0="0000110"else--19第6列

"00000000"whenlie0="0000111"else--19第7列

"00000000";--以上为字库0

D1<=

"10010001"whenlie0="0000001"else--19第1列

"10010001"whenlie0="0000010"else--19第2列

"10010001"whenlie0="0000011"else--19第3列

"11110001"whenlie0="0000100"else--19第4列

"00000000"whenlie0="0000101"else--19第5列

"11111111"whenlie0="0000110"else--19第6列

"00000000"whenlie0="0000111"else--19第7列

"11111111"whenlie0="0000000"else--19第0列

"00000000";--以上为字库1

D2<=

"10010001"whenlie0="0000010"else--19第2列

"10010001"whenlie0="0000011"else--19第3列

"11110001"whenlie0="0000100"else--19第4列

"00000000"whenlie0="0000101"else--19第5列

"11111111"whenlie0="0000110"else--19第6列

"00000000"whenlie0="0000111"else--19第7列

"11111111"whenlie0="0000000"else--19第0列

"10010001"whenlie0="0000001"else--19第1列

"00000000";--以上为字库2

D3<=

"10010001"whenlie0="0000011"else--19第3列

"11110001"whenlie0="0000100"else--19第4列

"00000000"whenlie0="0000101"else--19第5列

"11111111"whenlie0="0000110"else--19第6列

"00000000"whenlie0="0000111"else--19第7列

"11111111"whenlie0="0000000"else--19第0列

"10010001"whenlie0="0000001"else--19第1列

"10010001"whenlie0="0000010"else--19第2列

"00000000";--以上为字库3

D4<=

"11110001"whenlie0="0000100"else--19第4列

"00000000"whenlie0="0000101"else--19第5列

"11111111"whenlie0="0000110"else--19第6列

"00000000"whenlie0="0000111"else--19第7列

"11111111"whenlie0="0000000"else--19第0列

"10010001"whenlie0="0000001"else--19第1列

"10010001"whenlie0="0000010"else--19第2列

"10010001"whenlie0="0000011"else--19第3列

"00000000";--以上为字库4

D5<=

"00000000"whenlie0="0000101"else--19第5列

"11111111"whenlie0="0000110"else--19第6列

"00000000"whenlie0="0000111"else--19第7列

"11111111"whenlie0="0000000"else--19第0列

"10010001"whenlie0="0000001"else--19第1列

"10010001"whenlie0="0000010"else--19第2列

"10010001"whenlie0="0000011"else--19第3列

"11110001"whenlie0="0000100"else--19第4列

"00000000";--以上是字库5

D6<=

"11111111"whenlie0="0000110"else--19第6列

"00000000"whenlie0="0000111"else--19第7列

"11111111"whenlie0="0000000"else--19第0列

"10010001"whenlie0="0000001"else--19第1列

"10010001"whenlie0="0000010"else--19第2列

"10010001"whenlie0="0000011"else--19第3列

"11110001"whenlie0="0000100"else--19第4列

"00000000"whenlie0="0000101"else--19第5列

"00000000";--以上是字库6

D7<=

"00000000"whenlie0="0000111"els

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

当前位置:首页 > 高中教育 > 数学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1