EDA课程设计报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
北华航天工业学院
《EDA技术综合设计》
课程设计报告
报告题目:16X16点阵显示综合实验作者所在系部:电子工程系
作者所在专业:自动化专业
作者所在班级:
作者姓名:
指导教师:
完成时间:2012年12月26日
容摘要
在本次课设中,设计一个共阴16X16点阵控制接口,要求:在时钟信号的控制下,使点阵动态点亮。显示花样共有三种:①6*16点阵的16列同时从上往下依次点亮,全亮后16列又同时从下往上依次熄灭;②显示单字“飞”;③依次循环显示“航”,“天”,“学”,“院”四个字。
为使点阵显示器能够动态显示,列选信号为16-4编码器编码输出。
控制器各引脚功能为:DIN[3..0]为显示花样模式选择,高电平有效;CLK 为时钟输入端;DOTOUT[15..0]为行驱动信号输出;SELOUT[3..0]为列选信号输出,为16-4编码信号。
列选信号采用与7段数码管的位选信号一样的处理方法,即列扫描信号频率大于24HZ。
关键词: VHDL,16*16点阵,QuartusII,时序仿真图。
目录
一、实验目的 (1)
二、硬件要求 (1)
三、方案论证 (1)
四、模块说明 (1)
1.整体程序 (1)
2.花样一(动画) (6)
3.花样二(“飞”字) (6)
4.花样三(四字循环显示) (7)
五、整体连接图 (7)
六、实验步骤 (7)
七、实验结果 (7)
八、实验总结 (7)
九、参考文献 (8)
课程设计任务书
一、实验目的
(1)了解16*16LED的工作原理。
(2)了解点阵字符的产生和显示原理。
二、硬件要求
(1)主芯片EPF10K10LC84-4。
(2)16*16点阵。
(3)可变时钟源。
(4)四个拨码开关(显示花样的选择)。
三、方案论证
引脚整体可分为四个部分:clk(时钟信号)、din[3…0](花样选择控制)、dotout[15…0](行驱动信号输出)、selout[3…0](列选信号输出)。
其中有一个分频器的设计,可用一个16位的计数器实现:信号q从00000到11111循环变换,将q的低四位赋给列选信号selout,当q=11111时又可驱动另一计数器工作,实现分频。
第一个花样的设计:用q驱动一个5位计数器zhen从00000到11111循环变换,当Zhen=”00000”时,dotout=”00000”
Zhen=”00001”时,dotout=”00001”
……
……
Zhen=”10000”时,dotout=”1”
……
……
Zhen=”11110”时,dotout=”00011”
Zhen=”11111”时,dotout=”00001”。
第二个花样的设计:可参考第三个花样的设计。
第三个花样的设计:当zhen1(功能同zhen)=”00”时,显示第一个字“航”,当selout=”0000”时,dotout为“航”字的最后一列代码;当selout=”0001”时,dotout为“航”字的倒数第二列代码,依次类推。其他三个字的设计同“航”字。
四、模块说明
16*16点阵综合显示实验是用一个整体的程序编写的,所以不可分成模块,但可以分成三个部分:16*16点阵的16列同时从上往下依次点亮,全亮后16列又同时从下往上依次熄灭;显示“飞”字;依次循环显示“航”、“天”、“学”、“院”。下面的程序分析中将讨论三个部分的设计。
1.整体程序
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
entity dots_test is
port(clk:in std_logic; - -硬件接口
din:in std_logic_vector(3 downto 0);
dotout:out std_logic_vector(15 downto 0);
selout:buffer std_logic_vector(3 downto 0));
end dots_test;
architecture a of dots_test is
signal q:std_logic_vector(15 downto 0);
signal zhen:std_logic_vector(4 downto 0);
begin
process(clk,din)
variable h:std_logic_vector(3 downto 0);
variable h1:std_logic_vector(3 downto 0);
variable q1:std_logic_vector(15 downto 0);
variable zhen1:std_logic_vector(1 downto 0);
begin
if clk'event and clk='1' then
if din="0000" then - -花样一的设计if q="11111" then q<="00000"; - -用于分频
if zhen="11111" then zhen<="00000";
else zhen<=zhen+1;
end if;
else q<=q+1;
end if;
selout<=q(3 downto 0);
case zhen is
when "00000"=>dotout<="00000";
when "00001"=>dotout<="00001";
when "00010"=>dotout<="00011";
when "00011"=>dotout<="00111";
when "00100"=>dotout<="01111";
when "00101"=>dotout<="11111";
when "00110"=>dotout<="11111";
when "00111"=>dotout<="11111";
when "01000"=>dotout<="11111";
when "01001"=>dotout<="11111";
when "01010"=>dotout<="11111";
when "01011"=>dotout<="11111";
when "01100"=>dotout<="11111";
when "01101"=>dotout<="11111";
when "01110"=>dotout<="11111";
when "01111"=>dotout<="11111";
when "10000"=>dotout<="11111";
when "10001"=>dotout<="11111";
when "10010"=>dotout<="11111";
when "10011"=>dotout<="11111";