88点阵实验报告江理工Word格式.docx
《88点阵实验报告江理工Word格式.docx》由会员分享,可在线阅读,更多相关《88点阵实验报告江理工Word格式.docx(36页珍藏版)》请在冰点文库上搜索。
(3)顶层电路设计,仿真与分析……………………………………………
(4)硬件电路设计与安装图…………………………………………………
三、成品调试
(1)下载调试…………………………………………………………………
(2)收获及体会………………………………………………………………
序言
面对当今飞速发展的电子产品市场,设计师需要更加实用、快捷的EDA工具,使用统一的集成化设计环境,改变传统设计思路,将精力集中到设计构思、方案比较和寻找优化设计等方面,需要以最快的速度,开发出性能优良、质量一流的电子产品,对EDA技术提出了更高的要求。
未来的EDA技术将在仿真、时序分析、集成电路自动测试、高速印刷电路板设计及开发操作平台的扩展等方面取得新的突破,向着功能强大、简单易学、使用方便的方向发展。
可编程逻辑器件已经成为当今世界上最富吸引力的半导体器件,在现代电子系统设计中扮演着越来越重要的角色。
过去的几年里,可编程器件市场的增长主要来自大容量的可编程逻辑器件CPLD和FPGA。
本课程设计主要阐述基于FPGA和VHDL语言实现在8*8点阵上的汉字静态显示、一屏一屏显示以及滚动显示。
在实际学习中我们应该从应用的角度看待这门课程,初步掌握基本设计工具和设计方法,在课程实践中应锻炼自己的实际设计思想、创新思维和创造能力,力求提高自己的工程实践能力和自主创新能力。
一、课题要求
(1)技术要求
软件要求:
能够使用EDA编写程序及仿真设计,能够较为熟练的掌握Quartus软件并使用该软件进行编程、仿真和调试。
硬件要求:
FPGA(EP2C5T144C8)引脚识别和连接。
(2)功能要求
1.静态显示“正”字;
2.滚动显示“江理工”;
3.一屏一显示“10~1”
通过查阅资料,了解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;
ENTITYpengis
port(clk,en:
instd_logic;
lie:
outstd_logic_vector(7downto0);
--列
com:
outstd_logic_vector(7downto0));
--行
Endpeng;
Architectureaofpengis
signalst1:
std_logic_vector(7downto0);
signalosc:
std_logic;
signalosd:
signald_ff:
std_logic_vector(27downto0);
signaldata:
signald0,d1,d2,d3,d4,d5,d6,d7:
signallie0,lie1,lie2,lie3,lie4,lie5,lie6,lie7:
Begin
com<
=data;
lie<
=st1;
d0<
="
10000000"
;
d1<
10000001"
d2<
11110001"
d3<
d4<
11111111"
d5<
10001001"
d6<
d7<
--字库正
First:
process
begin
waituntilclk='
1'
if(d_ff(27downto0)>
=2e8)then
d_ff(27downto0)<
0000000000000000000000000000"
else
=d_ff+1;
endif;
osc<
=notd_ff(10);
endprocessfirst;
second:
process(osc)
if(osc='
andosc'
eventanden='
0'
)then
ifst1(7downto0)="
00000000"
orst1(7downto0)="
01111111"
then
st1(7downto0)<
11111110"
data<
=d0;
elsifst1(7downto0)="
11111101"
=d1;
11111011"
=d2;
11110111"
=d3;
11101111"
=d4;
11011111"
=d5;
10111111"
=d6;
=d7;
endif;
endprocesssecond;
enda;
2>
.滚动显示“江理工”
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
USEIEEE.STD_LOGIC_ARITH.ALL;
entitygdis
PORT(
clk,a,b,c:
INSTD_LOGIC;
outSTD_LOGIC_VECTOR(7DOWNTO0);
--列
outSTD_LOGIC_VECTOR(7DOWNTO0));
ENDgd;
ARCHITECTUREaOFgdIS
SIGNALst1,st2:
STD_LOGIC_VECTOR(7DOWNTO0);
SIGNALosc:
STD_LOGIC;
SIGNALosd:
SIGNALd_ff:
STD_LOGIC_VECTOR(27DOWNTO0);
SIGNALdata:
SIGNALd0,d1,d2,d3,d4,d5,d6,d7:
SIGNALlie0,lie1,lie2,lie3,lie4,lie5,lie6,lie7:
STD_LOGIC_VECTOR(6DOWNTO0);
Com<
D0<
=
"
whenlie0="
0000000"
else--donghua1
0000001"
else--donghua2
0000010"
else--donghua3
0000011"
else--donghua4
0000100"
else--donghua5
0000101"
else--donghua6
0000110"
else--donghua7
0000111"
else--donghua8
"
10001010"
0001000"
else--donghua9bbbbbbbbbbbbbbbbbbbbbbbb
01001010"
0001001"
else--donghua10
0001010"
else--donghua11
0001011"
else--donghua12
0001100"
else--donghua13
0001101"
else--donghua14
0001110"
else--donghua15
0001111"
else--donghua16
10010010"
0010000"
else--donghua17
01111110"
0010001"
else--donghua18
01001001"
0010010"
else--donghua19
0010011"
else--donghua20
0010100"
else--donghua21
11010101"
0010101"
else--donghua22
0010110"
else--donghua23
0010111"
else--donghua24
0011000"
else--donghua25
0011001"
else--donghua26
01000001"
0011010"
else--donghua27
0011011"
else--donghua28
0011100"
else--donghua29
0011101"
else--donghua30
0011110"
else--donghua31
0011111"
else--donghua32
0100000"
else--donghua33sssssssssssssssssssssssss
0100001"
else--donghua34
0100010"
else--donghua35
0100011"
else--donghua36
"
--以上为第一列
--"
0100100"
else--donghua37
--"
0100101"
else--donghua38
0100110"
else--donghua39
D1<
--以上为第二列
D2<
--以上为第三列
D3<
when