课程设计报告课程名称数字系统与逻辑设计课题名称16*16点阵显示专业通信工程班级学号姓名指导教师乔汇东胡瑛2012年7月2日湖南工程学院课程设计任务书课程名称数字系统与逻辑设计课题16*16点阵显示专业班级通信工程1001班学生姓名学号指导老师乔汇东胡瑛审批乔汇东任务书下达日期2012年6月23日任务完成日期2012年7月2日《数字系统与逻辑设计》课程设计任务书一、设计目的全面熟悉、掌握VHDL语言基本知识,掌握利用VHDL语言对常用的的组合逻辑电路和时序逻辑电路编程,把编程和实际结合起来,熟悉编制和调试程序的技巧,掌握分析结果的若干有效方法,进一步提高上机动手能力,培养使用设计综合电路的能力,养成提供文档资料的习惯和规范编程的思想。二、设计要求1、设计正确,方案合理。2、程序精炼,结构清晰。3、设计报告5000字以上,含程序设计说明,用户使用说明,源程序清单及程序框图。4、上机演示。5、有详细的文档。文档中包括设计思路、设计仿真程序、仿真结果及相应的分析与结论。三、进度安排第二十周星期一:课题讲解,查阅资料星期二:总体设计,详细设计星期三:编程,上机调试、修改程序星期四:上机调试、完善程序星期五:答辩星期六-星期天:撰写课程设计报告附:课程设计报告装订顺序:封面、任务书、目录、正文、评分、附件(A4大小的图纸及程序清单)。正文的格式:一级标题用3号黑体,二级标题用四号宋体加粗,正文用小四号宋体;行距为22。正文的内容:一、课题的主要功能;二、课题的功能模块的划分(要求画出模块图);三、主要功能的实现;四、系统调试与仿真;五、总结与体会;六、附件(所有程序的原代码,要求对程序写出必要的注释);七、评分表。目录一.16*16点阵显示的总体设计..................................................................................................11.116*16点阵显示........................................................................................................................11.2基本设计思想...........................................................................................................................1二.16*16点阵显示的功能实现....................................................................................................32.1系统的总体框图..........................................................................................................................32.2系统的流程图..............................................................................................................................32.3系统各功能模块实现..................................................................................................................4三.系统的调试与仿真....................................................................................................................8四.总体与体会................................................................................................................................9五附件...........................................................................................................................................10六评分表.......................................................................................................................................161一.16*16点阵显示的总体设计1.116*16点阵显示本实验主要完成汉字字符在LED上的显示,16*16扫描LED点阵的工作原理与8位扫描数码管类似,只是显示的方式与结果不一样而已。下面就本实验系统的16*16点阵的工件原理做一些简单的说明。16*16点阵由此256个LED通过排列组合而形成16行*16列的一个矩阵式的LED阵列,俗称16*16点阵。本实验的示例程序依次显示的是“湖南工程学院”,要求每隔一秒换下一个字显示。1.2基本设计思想单个的LED的电路如下图11-1所示:图11-1单个LED电路图由上图可知,点阵内的二极管间的连接都是行共阳,列共阴。本实验采用共阴,当二极管的共阳极为高电平,共阴极为低电平时,所接点发光;反之处于截止状态,不放光。本实验采取行扫描方式,用列给文字信息,利用周期为1s的脉冲来控制所显示的字。即对于单个LED的电路图当Rn输入一个高电平,同时Cn输入一个低电平时,电路形成一个回路,LED发光。也就是LED点阵对应的这个点被点亮。16*16点阵也就是由16行和16列的LED组成,其中每一行的所有16个LED的Rn端并联在一起,每一列的所有16个LED的Cn端并联在一起。通过给Rn输入一个高电平,也就相当于给这一列所有LED输入了一个高电平,这时只要某个LED的Cn端输入一个低电平时,对应的LED就会被点亮。具体的电路如下图11-2所示:2图11-216*16点阵电路原理图在点阵上显示一字符是根据其字符在点阵上的显示的点的亮灭来表示的,如下图11-3所示:图11-3字符在点阵上的显示在上图中,显示的是一个“汉”字,只要将被“汉”字所覆盖的区域的点点亮,则在点阵中就会显示一个“汉”字。根据前面我们所介绍的点阵显示的原理,当我们选中第一列后,根据要显示汉字的第一列中所需要被点亮的点对应的Rn置为高电平,则在第一列中需要被点亮的点就会被点亮。依此类推,显示第二列、第三列……第N列中需要被点亮的点。然后根据人眼的视觉原理,将每一列显示的点的间隔时间设为一定的值,那么我们就会感觉显示一个完整的不闪烁的汉字。同时也可以按照这个原理来显示其它的汉字。下图11-4是一个汉字显示所需要的时序图:图11-4显示时序图3二.16*16点阵显示的功能实现2.1系统的总体框图2.2系统的流程图否是是否是否16*16点阵显示六进制计数器列扫描驱动行扫描驱动每隔一段时间逐一显示所要求汉字开始rst='1'dout='00000000000000000'din='000'hl='0000'clk='1'din'6'din='000'din=din+14是否2.3系统各功能模块实现1.六进制计数器当每一个时钟上升沿到来时,计数器就记一次数。其程序如下:libraryieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;entityjyisport(clk,rst:instd_logic;din:bufferstd_logic_vector(3downto0));endjy;architecturebofjyisbeginprocess(clk,rst)beginifrst='1'thendin=0000;elsifclk'eventandclk='1'thenhl15hl='000'hl=hl+1顺序输出汉字结束5ifdin=7thendin=0000;elsedin=din+1;endif;endif;endprocess;endb;其仿真波形:2.A为列驱动控制器,该模块控制所亮的行,当输出为1000000000000000时,给点阵的第一行高电平,输出为0100000000000000时,给点阵的第二行高电平,依次类推,逐次给每行高电平。其程序:A:process(hl)begincasehliswhen0000=row=1000000000000000;when0001=row=0100000000000000;when0010=row=0010000000000000;when0011=row=0001000000000000;when0100=row=0000100000000000;when0101=row=0000010000000000;when0110=row=0000001000000000;when0111=row=0000000100000000;when1000=row=0000000010000000;when1001=row=0000000001000000;when1010=row=0000000000100000;when1011=row=0000000000010000;when1100=row=0000000000001000;when1101=row=0000000000000100;when1110=row=0000000000000010;when1111=row=0000000000000001;whenothers=row=0000000000000000;ENDcase;endprocessA;其仿真波形:63.B为行驱动控制器din控制的是所显示的字。例如当din为000时,表示显示第一个字;当为001时,表示显示第二个字,依次类推。hl控制所显示的为字的第几行,例如当hl为全是0时,表示输出字的第一行文字信息,依次类推。其中包括两种花样的显示方式,其描述如下:B:process(clk,rst,din)beginifrst='1'thendout=0000000000000000;hl=0000;din=000;elsifclk'eventandclk='1'thenifdin6thendin=000;elsedin=din+1;ifhl15thenhl=0000;elsehl=hl+1;endif;casediniswhen000=casehliswhen0000=dout=1000000000011111;when0001=dout=0100001000010001;when0010=dout=0010111110010001;when0011=dout=0010001000010001;when0100=dout=0001001000011111;when0101=dout=1000001000010001;when0110=dout=0100111111010001;when0111=dout=0010100001010001;when1000=dout=0001100001011111;when1001=do