SOPCEDA综合课程设计报告点阵显示课程设计.docx

上传人:b****6 文档编号:7265855 上传时间:2023-01-22 格式:DOCX 页数:34 大小:125.95KB
下载 相关 举报
SOPCEDA综合课程设计报告点阵显示课程设计.docx_第1页
第1页 / 共34页
SOPCEDA综合课程设计报告点阵显示课程设计.docx_第2页
第2页 / 共34页
SOPCEDA综合课程设计报告点阵显示课程设计.docx_第3页
第3页 / 共34页
SOPCEDA综合课程设计报告点阵显示课程设计.docx_第4页
第4页 / 共34页
SOPCEDA综合课程设计报告点阵显示课程设计.docx_第5页
第5页 / 共34页
点击查看更多>>
下载资源
资源描述

SOPCEDA综合课程设计报告点阵显示课程设计.docx

《SOPCEDA综合课程设计报告点阵显示课程设计.docx》由会员分享,可在线阅读,更多相关《SOPCEDA综合课程设计报告点阵显示课程设计.docx(34页珍藏版)》请在冰豆网上搜索。

SOPCEDA综合课程设计报告点阵显示课程设计.docx

SOPCEDA综合课程设计报告点阵显示课程设计

江西理工大学应用科学学院

 

SOPC/EDA综合课程设计报告

 

设计题目:

16*16的点阵显示设计

设计者:

学号:

班级:

指导老师:

完成时间:

设计报告

综合测试

 

总评

格式

(10)

内容

(40)

图表

(10)

答辩

(20)

平时

(20)

 

目录

绪论1

第一章设计项目与分析2

1.1设计要求:

2

1.2设计原理2

1.3设计框图3

1.4顶层文件设计3

第二章一屏一屏亮灯显示5

2.1时序控制模块设计5

2.2扫描控制模块设计6

2.3显示控制模块设计7

2.4显示控制模块仿真15

第三章暗灯显示16

3.1暗灯控制模块设计16

3.2扫描控制模块设计17

3.3暗灯显示控制模块设计18

第四章心得体会27

参考文献28

绪论

1在信息产业中EDA产生的影响

随着大规模集成电路技术和计算机技术的不断发展,在设计通信,国防,航天医学工业自动化计算机应用仪器仪表等领域的电子系统设计工作中,EDA技术的含量正以惊人的速度上升;电子类的高新技术项目的开发也逾益依赖于EDA技术的应用,即使是普通的电子产品的开发,EDA技术常常使一些原来的技术瓶颈得以轻松突破,从而使得产品的开发周期大为缩短,性能价格大幅度提高。

不言而喻。

EDA技术将迅速成为电子设计领域中的极其重要的组成部分。

2中国国内EDZ发展情况

从目前的EDA技术来看,其发展趋势是政府重视使用普及应用广泛工具多样软件功能强大。

中国EDA市场已渐趋成熟,不过大部分设计工程师面向的是PC主板的小型ASIC领域,仅有小部分的设计人工发复杂片上系统器件,为了与台湾和美国的设计工程师形成更有力的竞争,中国的设计队伍有必要购入一些最新的EDA技术。

在信息通信领域,优先发展高速宽带信息网,深亚微米集成电路,新型元器件,计算机及软件技术,第三代移动通信技术。

信息管理,信息安全技术,积极开拓以数字技术,网络技术为基础的新一代产品,发展新兴产业,培育新的经济增长点。

要大力推进制造业信息化,积极开展计算机辅助设计(CAD),计算机辅助工程(CAE),计算机辅助工艺(CAPP),j计算机辅助制造(CAM),产品数据管理(PDM),制造资源计划(MRPII),以及企业管理资源(ERP)等。

有条件的企业可开展“网络制造”,便于合作设计合作制造参与国内和国际竞争。

开展“数控化”工程和“数字化”工程。

自动化仪表的技术发展趋势的测试技术,控制技术与计算机技术,通信技术进一步融合,形成测量,控制,通信与计算机结构。

在ASIC和PLD设计反面,向超高速高密度低功耗低电压方向发展。

3课程对多功能数字时钟的设计加深对EDA课程的理解

(1)加深VHDL语言设计的理解。

(2)通过功能数字时钟的设计了解简易集成电路的设计思路

(3)通过对多设计目的

(4)属性MAX+PLUSII仿真软件的工作方法以及应用技术

 

第一章设计项目与分析

1.1设计要求:

使用FPGA设计一个16*16的点阵显示的控制器,使点阵能够按照自定义的花样显示文字或者数字。

要求至少实现两种花样显示“江西理工大学应用科学学院欢迎您”。

其他功能可以自行设计增加!

1.2设计原理

本设计是针对一个16*16的点阵,使用逐列循环扫描的方式来一屏一屏地显示和滚动地显示“江西理工大学应用科学学院欢迎您”15个汉字。

由于显示器为列共阳,行共阴的结构,因此不可能在同一时刻显示出整个汉字。

为了显示出整个汉字,首先分布好汉字信息;然后以不低于50Hz频率的时序逐一点亮每一列,即每列逐一加高电位,同时行给汉字信息,根据人眼的视觉残留特性使之形成整个汉字的显示。

实验箱上为我们提供了16*16的点阵显示模块。

通过观察,我们可以看到,此点阵显示屏即为16行、16列的LED显示灯。

那么控制这些灯的亮暗分布,就能达到字符显示的目的。

首先我们设计要正确显示“江西理工大学应用科学学院欢迎您”。

显示屏上的灯亮暗的情况如何。

方案一

如第一个汉字“江”。

0000000000000000

0110000011111100

0011000011111100

0001100000110000

0000110000110000

0110000000110000

0011000000110000

0001100000110000

0000110000110000

0000000000110000

0000011000110000

0000110000110000

0001100000110000

0011000111111110

0110000111111110

0000000000000000

 

第一种花样是用亮着的灯组合所要显示的字。

高电平“1”代表灯是亮的,低电平“0”代表灯是暗的,上面我们看到的就是“江”字。

依此类推,我们就可以设计出要显示的“江西理工大学应用科学学院欢迎您”一屏一屏地显示汉字“江西理工大学应用科学学院欢迎您”15个汉字。

方案二

第二种花样是用暗着的灯组合所要显示的字。

高电平“1”代表灯是亮的,低电平“0”代表灯是暗的,上面我们看到的就是“江”字。

依此类推,我们就可以设计出要显示的“江西理工大学应用科学学院欢迎您”一屏一屏地显示汉字“江西理工大学应用科学学院欢迎您”15个汉字。

在显示汉字的基础上加一个gs信号作为计数器,当gs为0000第一个汉字;当gs为0001时显示第二个汉字;当gs为0010……当gs为1110时显示第十五个汉字;用时钟信号clk控制gs的计数,就可以一屏一屏地显示汉字。

1.3设计框图

图1.1

1.4顶层文件设计

顶层文件来实现循环显示各个汉字的功能。

它由时序控制模块,扫描模块和汉字显示控制模块组成。

时序控制模块利用脉冲来控制每个汉字的显示时间。

扫描控制模块利用列扫描脉冲产生列扫描信号。

而汉字显示控制模块用时序控制模块和扫描控制模块所提供的脉冲信号来点亮各个汉字模型中相应的灯。

在时序模块的控制下(此设计中每15个汉字为一个循环)实现了各个汉字循环显示的功能。

实现显示“江西理工大学应用科学学院欢迎您”,结合实际,模块LICHAO01,LICHAO02,LICHAO03分别实现时序控制模块,扫描模块和汉字显示控制模块。

具体电路的顶层文件设计如下图

图1.2顶层电路图

 

第二章一屏一屏亮灯显示

2.1时序控制模块设计

为使汉字不断地循环显示,并且使每个字之间有停顿,就需要在中间加一定的延时和循环环节。

当计数满4个脉冲时cnt自动清零,每个汉字显示4个脉冲的时间;一共有15个汉字,当tmp=1110时,tmp自动清零,进入下一个循环,不停的循环显示每个汉字。

图2.1时序控制模块

其实现程序为:

libraryieee;

useieee.std_logic_1164.all;

useieee.std_logic_unsigned.all;

entityLICHAO01is

port(clk:

instd_logic;

q:

outstd_logic_vector(3downto0));

endLICHAO01;

architectureoneofLICHAO01is

begin

process(clk)

variablecnt:

integer;

variabletmp:

std_logic_vector(3downto0);

begin

ifclk'eventandclk='1'then

ifcnt<4then

cnt:

=cnt+1;

else

cnt:

=0;

iftmp="1110"then

tmp:

="0000";

else

tmp:

=tmp+1;

endif;

endif;

endif;

q<=tmp;

endprocess;

end;

时序控制模块仿真图

2.2扫描控制模块设计

此模块用来实现列扫描控制,每扫描完16列,tmp自动清零,这样就提供了一个列循环扫描的功能,这样就可以循环的显示各个汉字了。

图2.2扫描控制模块

其实现程序为:

libraryieee;

useieee.std_logic_1164.all;

useieee.std_logic_unsigned.all;

entityLICHAO02is

port(clk:

instd_logic;

so:

outstd_logic_vector(3downto0));

endLICHAO02;

architectureoneofLICHAO02is

begin

process(clk)

variabletmp:

std_logic_vector(3downto0);

begin

ifclk'eventandclk='1'then

iftmp="1111"then

tmp:

="0000";

else

tmp:

=tmp+1;

endif;

endif;

so<=tmp-1;

endprocess;

end;

图3.2扫描控制模块仿真图

2.3显示控制模块设计

此模块用来实现显示出相应的汉字。

gs控制汉字的个数,hs控制扫描的行数。

使对应列选择信号输出每一列对应的数据,点量相应的灯。

图2.3显示控制模块

其实现程序为:

libraryieee;

useieee.std_logic_1164.all;

entityLICHAO03is

port(hs:

instd_logic_vector(3downto0);

gs:

instd_logic_vector(3downto0);

qo:

outstd_logic_vector(15downto0));

endLICHAO03;

architectureoneofLICHAO03is

begin

process(hs,gs)

begin

casegsis

when"0000"=>

casehsis

when"0000"=>qo<="0000000000000000";

when"0001"=>qo<="0110000011111100";

when"0010"=>qo<="0011000011111100";

when"0011"=>qo<="0001100000110000";

when"0100"=>qo<="0000110000110000";

when"0101"=>qo<="0110000000110000";

when"0110"=>qo<="0011000000110000";

when"0111"=>qo<="0001100000110000";

when"1000"=>qo<="0000110000110000";

when"1001"=>qo<="0000000000110000";

when"1010"=>qo<="0000011000110000";

when"1011"=>qo<="0000110000110000";

when"1100"=>qo<="0001100000110000";

when"1101"=>qo<="0011000111111110";

when"1110"=>qo<="0110000111111110";

when"1111"=>qo<="0000000000000000";

whenothers=>null;

endcase;

when"0001"=>

casehsis

when"0000"=>qo<="0000000000000000";

when"0001"=>qo<="0011111111111100";

when"0010"=>qo<="0011111111111100";

when"0011"=>qo<="0000001101100000";

when"0100"=>qo<="0000001101100000";

when"0101"=>qo<="0000001101100000";

when"0110"=>qo<="0111111111111110";

when"0111"=>qo<="0111111111111110";

when"1000"=>qo<="0110001101100110";

when"1001"=>qo<="0110001101100110";

when"1010"=>qo<="0110011001111110";

when"1011"=>qo<="0110110000000110";

when"1100"=>qo<="0111100000000110";

when"1101"=>qo<="0111111111111110";

when"1110"=>qo<="0111111111111110";

when"1111"=>qo<="0000000000000000";

whenothers=>null;

endcase;

when"0010"=>

casehsis

when"0000"=>qo<="0000000000000000";

when"0001"=>qo<="0000000111111110";

when"0010"=>qo<="1111110111111110";

when"0011"=>qo<="1111110110110110";

when"0100"=>qo<="0011000111111110";

when"0101"=>qo<="0011000111111110";

when"0110"=>qo<="0000000110110110";

when"0111"=>qo<="1111110111111110";

when"1000"=>qo<="1111110111111110";

when"1001"=>qo<="0011000000110000";

when"1010"=>qo<="0011000111111110";

when"1011"=>qo<="0011000111111110";

when"1100"=>qo<="0011000000110000";

when"1101"=>qo<="1111110000110000";

when"1110"=>qo<="1111111111111111";

when"1111"=>qo<="0000001111111111";

whenothers=>null;

endcase;

when"0011"=>

casehsis

when"0000"=>qo<="0000000000000000";

when"0001"=>qo<="0011111111111100";

when"0010"=>qo<="0011111111111100";

when"0011"=>qo<="0000000110000000";

when"0100"=>qo<="0000000110000000";

when"0101"=>qo<="0000000110000000";

when"0110"=>qo<="0000000110000000";

when"0111"=>qo<="0000000110000000";

when"1000"=>qo<="0000000110000000";

when"1001"=>qo<="0000000110000000";

when"1010"=>qo<="0000000110000000";

when"1011"=>qo<="0000000110000000";

when"1100"=>qo<="0000000110000000";

when"1101"=>qo<="0111111111111110";

when"1110"=>qo<="0111111111111110";

when"1111"=>qo<="0000000000000000";

whenothers=>null;

endcase;

when"0100"=>

casehsis

when"0000"=>qo<="0000000000000000";

when"0001"=>qo<="0000000110000000";

when"0010"=>qo<="0000000110000000";

when"0011"=>qo<="0000000110000000";

when"0100"=>qo<="0111111111111110";

when"0101"=>qo<="0111111111111110";

when"0110"=>qo<="0000000110000000";

when"0111"=>qo<="0000000110000000";

when"1000"=>qo<="0000001111000000";

when"1001"=>qo<="0000011001100000";

when"1010"=>qo<="0000110000110000";

when"1011"=>qo<="0001100000011000";

when"1100"=>qo<="0011000000001100";

when"1101"=>qo<="0110000000000110";

when"1110"=>qo<="1100000000000011";

when"1111"=>qo<="0000000000000000";

whenothers=>null;

endcase;

when"0101"=>

casehsis

when"0000"=>qo<="0000000000000000";

when"0001"=>qo<="0110011000000110";

when"0010"=>qo<="0011001100001100";

when"0011"=>qo<="111111*********1";

when"0100"=>qo<="111111*********1";

when"0101"=>qo<="1100000000000011";

when"0110"=>qo<="1101111111110110";

when"0111"=>qo<="0001111111110000";

when"1000"=>qo<="0000000001100000";

when"1001"=>qo<="0000000011000000";

when"1010"=>qo<="0111111111111110";

when"1011"=>qo<="0111111111111110";

when"1100"=>qo<="0000000110000000";

when"1101"=>qo<="0000000110000000";

when"1110"=>qo<="0000011110000000";

when"1111"=>qo<="0000011110000000";

whenothers=>null;

endcase;

when"0110"=>

casehsis

when"0000"=>qo<="0000000000000000";

when"0001"=>qo<="0000001100000000";

when"0010"=>qo<="0000000110000000";

when"0011"=>qo<="0001111111111110";

when"0100"=>qo<="0001111111111110";

when"0101"=>qo<="0001100000000000";

when"0110"=>qo<="0001100000000000";

when"0111"=>qo<="0001100011000011";

when"1000"=>qo<="0001101101100011";

when"1001"=>qo<="0001101101100110";

when"1010"=>qo<="0011000110110110";

when"1011"=>qo<="0011000110001100";

when"1100"=>qo<="0110000000000000";

when"1101"=>qo<="0110111111111111";

when"1110"=>qo<="110011*********1";

when"1111"=>qo<="0000000000000000";

whenothers=>null;

endcase;

when"0111"=>

casehsis

when"0000"=>qo<="0000000000000000";

when"0001"=>qo<="0001111111111111";

when"0010"=>qo<="0001111111111111";

when"0011"=>qo<="0001100011000110";

when"0100"=>qo<="0001100011000110";

when"0101"=>qo<="0001111111111110";

when"0110"=>qo<="0001111111111110";

when"0111"=>qo<="0001100011000110";

when"1000"=>qo<="0001100011000110";

when"1001"=>qo<="0001111111111110";

when"1010"=>qo<="0001111111111110";

when"1011"=>qo<="0001100011000110";

when"1100"=>qo<="0011000011000110";

when"1101"=>qo<="0110000011011110";

when"1110"=>qo<="1100000011001110";

when"1111"=>qo<="0000000000000000";

whenothers=>null;

endcase;

when"1000"=>

casehsis

when"0000"=>qo<="0000000000000000";

when"0001"=>qo<="0000011000001100";

when"0010

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

当前位置:首页 > 表格模板 > 合同协议

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

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