88点阵实验报告江理工.docx
《88点阵实验报告江理工.docx》由会员分享,可在线阅读,更多相关《88点阵实验报告江理工.docx(36页珍藏版)》请在冰豆网上搜索。
88点阵实验报告江理工
JIANGSUUNIVERSITYOFTECHNOLOGY
数字电路课程设计报告
基于FPGA的8*8点阵设计
学院:
电信学院
专业:
电子信息工程
班级:
11电子1
姓名:
胡毅
学号:
11311103
指导教师:
李秋烨翟丽芳
设计时间:
2013年06月17日
序言……………………………………………………………
一、课题要求…………………………………………………………………
(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.一屏一显示“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:
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,lie1,lie2,lie3,lie4,lie5,lie6,lie7:
std_logic_vector(7downto0);
Begin
com<=data;
lie<=st1;
d0<="10000000";
d1<="10000001";
d2<="11110001";
d3<="10000001";
d4<="11111111";
d5<="10001001";
d6<="10001001";
d7<="10000000";--字库正
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)
begin
if(osc='1'andosc'eventanden='0')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;
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;
lie:
outSTD_LOGIC_VECTOR(7DOWNTO0);--列
com:
outSTD_LOGIC_VECTOR(7DOWNTO0));--行
ENDgd;
ARCHITECTUREaOFgdIS
SIGNALst1,st2:
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,lie1,lie2,lie3,lie4,lie5,lie6,lie7:
STD_LOGIC_VECTOR(6DOWNTO0);
Begin
Com<=data;
lie<=st1;
D0<=
"00000000"whenlie0="0000000"else--donghua1
"00000000"whenlie0="0000001"else--donghua2
"00000000"whenlie0="0000010"else--donghua3
"00000000"whenlie0="0000011"else--donghua4
"00000000"whenlie0="0000100"else--donghua5
"00000000"whenlie0="0000101"else--donghua6
"00000000"whenlie0="0000110"else--donghua7
"00000000"whenlie0="0000111"else--donghua8
"10001010"whenlie0="0001000"else--donghua9bbbbbbbbbbbbbbbbbbbbbbbb
"01001010"whenlie0="0001001"else--donghua10
"10000001"whenlie0="0001010"else--donghua11
"10000001"whenlie0="0001011"else--donghua12
"11111111"whenlie0="0001100"else--donghua13
"10000001"whenlie0="0001101"else--donghua14
"10000001"whenlie0="0001110"else--donghua15
"00000000"whenlie0="0001111"else--donghua16
"10010010"whenlie0="0010000"else--donghua17
"01111110"whenlie0="0010001"else--donghua18
"01001001"whenlie0="0010010"else--donghua19
"00000000"whenlie0="0010011"else--donghua20
"11011111"whenlie0="0010100"else--donghua21
"11010101"whenlie0="0010101"else--donghua22
"11111111"whenlie0="0010110"else--donghua23
"11010101"whenlie0="0010111"else--donghua24
"11011111"whenlie0="0011000"else--donghua25
"00000000"whenlie0="0011001"else--donghua26
"01000001"whenlie0="0011010"else--donghua27
"01000001"whenlie0="0011011"else--donghua28
"01000001"whenlie0="0011100"else--donghua29
"01111111"whenlie0="0011101"else--donghua30
"01000001"whenlie0="0011110"else--donghua31
"01000001"whenlie0="0011111"else--donghua32
"01000001"whenlie0="0100000"else--donghua33sssssssssssssssssssssssss
"00000000"whenlie0="0100001"else--donghua34
"00000000"whenlie0="0100010"else--donghua35
"00000000"whenlie0="0100011"else--donghua36
"00000000";--以上为第一列
--"00000000"whenlie0="0100100"else--donghua37
--"00000000"whenlie0="0100101"else--donghua38
--"00000000"whenlie0="0100110"else--donghua39
D1<=
"00000000"whenlie0="0000000"else--donghua1
"00000000"whenlie0="0000001"else--donghua2
"00000000"whenlie0="0000010"else--donghua3
"00000000"whenlie0="0000011"else--donghua4
"00000000"whenlie0="0000100"else--donghua5
"00000000"whenlie0="0000101"else--donghua6
"00000000"whenlie0="0000110"else--donghua7
"10001010"whenlie0="0000111"else--donghua8
"01001010"whenlie0="0001000"else--donghua9bbbbbbbbbbbbbbbbbbbbbbbb
"10000001"whenlie0="0001001"else--donghua10
"10000001"whenlie0="0001010"else--donghua11
"11111111"whenlie0="0001011"else--donghua12
"10000001"whenlie0="0001100"else--donghua13
"10000001"whenlie0="0001101"else--donghua14
"00000000"whenlie0="0001110"else--donghua15
"10010010"whenlie0="0001111"else--donghua16
"01111110"whenlie0="0010000"else--donghua17
"01001001"whenlie0="0010001"else--donghua18
"00000000"whenlie0="0010010"else--donghua19
"11011111"whenlie0="0010011"else--donghua20
"11010101"whenlie0="0010100"else--donghua21
"11111111"whenlie0="0010101"else--donghua22
"11010101"whenlie0="0010110"else--donghua23
"11011111"whenlie0="0010111"else--donghua24
"00000000"whenlie0="0011000"else--donghua25
"01000001"whenlie0="0011001"else--donghua26
"01000001"whenlie0="0011010"else--donghua27
"01000001"whenlie0="0011011"else--donghua28
"01111111"whenlie0="0011100"else--donghua29
"01000001"whenlie0="0011101"else--donghua30
"01000001"whenlie0="0011110"else--donghua31
"01000001"whenlie0="0011111"else--donghua32
"00000000"whenlie0="0100000"else--donghua33sssssssssssssssssssssssss
"00000000"whenlie0="0100001"else--donghua34
"00000000"whenlie0="0100010"else--donghua35
"00000000"whenlie0="0100011"else--donghua36
"00000000";--以上为第二列
D2<=
"00000000"whenlie0="0000000"else--donghua1
"00000000"whenlie0="0000001"else--donghua2
"00000000"whenlie0="0000010"else--donghua3
"00000000"whenlie0="0000011"else--donghua4
"00000000"whenlie0="0000100"else--donghua5
"00000000"whenlie0="0000101"else--donghua6
"10001010"whenlie0="0000110"else--donghua7
"01001010"whenlie0="0000111"else--donghua8
"10000001"whenlie0="0001000"else--donghua9bbbbbbbbbbbbbbbbbbbbbbbb
"10000001"whenlie0="0001001"else--donghua10
"11111111"whenlie0="0001010"else--donghua11
"10000001"whenlie0="0001011"else--donghua12
"10000001"whenlie0="0001100"else--donghua13
"00000000"whenlie0="0001101"else--donghua14
"10010010"whenlie0="0001110"else--donghua15
"01111110"whenlie0="0001111"else--donghua16
"01001001"whenlie0="0010000"else--donghua17
"00000000"whenlie0="0010001"else--donghua18
"11011111"whenlie0="0010010"else--donghua19
"11010101"whenlie0="0010011"else--donghua20
"11111111"whenlie0="0010100"else--donghua21
"11010101"whenlie0="0010101"else--donghua22
"11011111"whenlie0="0010110"else--donghua23
"00000000"whenlie0="0010111"else--donghua24
"01000001"whenlie0="0011000"else--donghua25
"01000001"whenlie0="0011001"else--donghua26
"01000001"whenlie0="0011010"else--donghua27
"01111111"whenlie0="0011011"else--donghua28
"01000001"whenlie0="0011100"else--donghua29
"01000001"whenlie0="0011101"else--donghua30
"01000001"whenlie0="0011110"else--donghua31
"00000000"whenlie0="0011111"else--donghua32
"00000000"whenlie0="0100000"else--donghua33sssssssssssssssssssssssss
"00000000"whenlie0="0100001"else--donghua34
"00000000"whenlie0="0100010"else--donghua35
"00000000"whenlie0="0100011"else--donghua36
"00000000";--以上为第三列
D3<=
"00000000"whenlie0="0000000"else--donghua1
"00000000"whenlie0="0000001"else--donghua2
"00000000"whenlie0="0000010"else--donghua3
"00000000"whenlie0="0000011"else--donghua4
"00000000"whenlie0="0000100"else--donghua5
"10001010"whenlie0="0000101"else--donghua6
"01001010"whenlie0="0000110"else--donghua7
"10000001"whenlie0="0000111"else--donghua8
"10000001"whenlie0="0001000"else--donghua9bbbbbbbbbbbbbbbbbbbbbbbb
"11111111"when