SOPCEDA综合课程设计1616的点阵显示设计.docx
- 文档编号:8460067
- 上传时间:2023-01-31
- 格式:DOCX
- 页数:34
- 大小:120.81KB
SOPCEDA综合课程设计1616的点阵显示设计.docx
《SOPCEDA综合课程设计1616的点阵显示设计.docx》由会员分享,可在线阅读,更多相关《SOPCEDA综合课程设计1616的点阵显示设计.docx(34页珍藏版)》请在冰豆网上搜索。
SOPCEDA综合课程设计1616的点阵显示设计
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"=>qo<="0000110
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- SOPCEDA 综合 课程设计 1616 点阵 显示 设计