《EDA技术与应用》课程设计报告题目:LED点阵显示屏控制系统设计院(系):专业班级:学生姓名:学号:指导教师:2017年6月19日至2017年6月23日《EDA技术及应用》课程设计任务书一、设计题目LED点阵显示屏控制系统设计二、设计主要内容(1)控制要求本课程设计要求根据输入指令要求对16*16点阵的LED显示屏进行显示控制,在控制过程中以EP3C10E144C8为主控芯片,利用译码芯片进行行扫描控制,同时输出字型码进行显示控制。①根据控制要求,编写VHDL程序实现LED点阵屏控制功能;②使用字库转换软件实现汉字字型码的转换。③要求能够实现名字及学号的现示,要求能够实现字符不同的移动显示方向,能够实现不同的显示速度(时钟频率不变)。(2)设计要求①设计FPGA的基础工作电路;②设计LED点阵屏,译码电路,驱动电路及FPGA芯片的硬件电路连接;③程序设计及仿真调试;④程序下载并进行硬件调试(3)撰写说明书①含系统硬件设计电路;②含软件设计(程序及必要的说明);③含软件仿真及生成的顶层文件,含代码生成的硬件电路;④调试及调试结果,以及在调试过程中出现的问题及解决办法。三、原始资料(1)16*16点阵LED屏可显示数字及汉字,对于点阵,在给出字型码数据的同时给出行扫描信号,通过控制给出数据的速度,结合人体的视觉效应可以使点阵屏稳定显示字符;(2)本系统控制的还有译码电路及驱动电路。通过输出译码数据,可以调整显示字符的移动方向。(3)在控制过程中,可以外接控制开关控制字符显示方式;(4)EP3C10E144C8芯片只能输出3.3V电压,对于16个LED液晶灯的驱动是不够的,因此必须有外接驱动电路提供足够的驱动能力。驱动点阵屏显示根据输入信号产生点阵屏的控制数据控制信号驱动电路CLK译码电路四、要求的设计成果在QuartusII软件中新建原理图文件,编译,仿真,锁定管脚并下载到目标芯片。(1)根据设计要求,设计系统的原理框图,说明系统中各主要组成部分的功能;(2)在QuartusII软件中,编写各个模块VHDL源程序;并上机调试通过;(3)根据软件编好用于系统仿真的测试文件;(4)编好用于硬件验证的管脚锁定文件;(5)记录系统各个模块仿真结果;(6)记录调试过程中出现的问题及解决办法。注意:基本要求学生必须完成,学有余力的学生可以在基本要求完成的前提下,选择其它方案完成设计。一般来说,生成的硬件电路越简单考查评价就越高。五、进程安排序号课程设计内容学时分配备注1集中学生学习课程设计的关键理论知识、分配设计任务、明确设计要求、查找资料等。0.5天2根据任务的要求进行方案构思,初选方案,绘制系统原理框图并与指导教师讨论,方案定稿。0.5天3完成各模块的VHDL程序设计、编译和时序仿真2天4编程、下载,结合硬件平台,进行调试。完成顶层文件图绘制,对编制好的文件交给老师检查,并按照老师要求修改。1天5撰写课程设计说明书0.5天6答辩及验收课程设计0.5天合计5天六、主要参考资料[1]侯伯享.VHDL硬件描述语言与数字逻辑电路设计.西安:西安电子科技大学出版,2010[2]潘松.EDA技术实用教程.成都:电子科技大学出版社,2010[3]李玉山.电子系统集成设计技术.北京:电子工业出版社,2010.6.[4]李国丽.EDA与数字系统设计.北京:机械工业出版社,2009[5]周彩宝.VHDL语言及其应用.上海:华东计算机技术研究所:2009[6]谭会生.EDA技术中和应用实例与分析.西安:西安电子科技大学出版社,2008指导教师(签名):20年月日摘要主要研究基于VHDL的LED点阵汉字滚动显示。首先描述了基于现场可编程门阵(FPGA)的硬件电路,以及点阵显示汉字的原理;然后在单个16x16LED发光二极管点阵上滚动显示汉字的原理;最后给出了描述其功能的VHDL语言程序设计方法。通过编程、调试、仿真、下载正确的实现了汉字的滚动显示扫描结果,其硬件系统的实验验证也获得了与软件仿真结论吻合的结果。关键词:LED点阵;FPGA;VHDL语言;汉字滚动显示。目录1.实验要求及总体方案...............................................................错误!未定义书签。1.1实验要求..........................................................................错误!未定义书签。1.2扫描显示..........................................................................错误!未定义书签。1.3滚动显示..........................................................................错误!未定义书签。2.LED点阵显示原理..................................................................错误!未定义书签。2.1LED点阵原理..................................................................错误!未定义书签。2.2汉字取模...........................................................................错误!未定义书签。3.扫描显示...................................................................................错误!未定义书签。3.1设计基本原理..................................................................错误!未定义书签。3.2计数器设计.......................................................................错误!未定义书签。3.3列驱动设计......................................................................错误!未定义书签。3.4行驱动设计......................................................................错误!未定义书签。4.仿真图原理图及实物图..............................................................错误!未定义书签。4.1仿真图...............................................................................错误!未定义书签。4.2原理图...............................................................................错误!未定义书签。4.3实物图...............................................................................错误!未定义书签。5.程序..............................................................................................错误!未定义书签。6.实验调试......................................................................................错误!未定义书签。7.心得体会......................................................................................错误!未定义书签。参考文献:.....................................................................................错误!未定义书签。8程序libraryieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;entitydianzgdisport(clk0,clk1:instd_logic;sel:outstd_logic_vector(3downto0);line:outstd_logic_vector(15downto0));enddianzgd;architecturertlofdianzgdissignalq:std_logic_vector(3downto0);signalcounter:std_logic_vector(3downto0);beginsel=q;p0:process(clk1)beginif(clk1'eventandclk1='1')thenif(counter1111)thencounter=0000;elsecounter=counter+'1';endif;endif;endprocessp0;p1:process(clk0)beginifq=0000;9elsif(clk0'eventandclk0='1')thenif(q1111)thenq=0000;elseq=q+1;endif;endif;endprocessp1;p2:process(q,counter)begincasecounteriswhen0000=caseqiswhen0000=line=x0000;when0001=line=x03f8;when0010=line=x0248;when0011=line=x0248;when0100=line=x0248;when0101=line=x0248;when0110=line=x7fff;when0111=line=x4248;when1000=line=x4248;when1001=line=x4248;when1010=line=x4248;when1011=line=x43f8;when1100=line=x4000;when1101=line=x4000;10when1110=line=x7000;when1111=line=x0000;whenothers=null;endcase;when0001=caseqiswhen0000=line=x03f8;when0001=line=x0248;when0010=line=x0248;when0011=line=x0248;when0100=line=x0248;when0101=line=x7fff;when0110=line=x4248;when0111=line=x4248;when1000=line=x4248;when1001=line=x4248;when1010=line=x43f8;when1011=line=x4000;when1100=line=x4000;when1101=line=x7000;when1110=line=x0000;when1111=line=x0000;whenothers=null;endcase;when0010=caseqiswhen0000=line=x0248;11when0001=line=x0248;when0010=