数字系统设计任务书-汉字的LED点阵动态显示.doc
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数字 系统 设计 任务书 汉字 LED 点阵 动态 显示
- 资源描述:
-
数字系统设计任务书_汉字的LED点阵动态显示 ———————————————————————————————— 作者: ———————————————————————————————— 日期: 2 个人收集整理 勿做商业用途 数字系统设计报告 学 院(部): 电气与信息工程学院 专 业: 自动化 学 生 姓 名: 陈建允 指 导 老 师: 聂辉 班 级: 1002 学号 10401700504 2013年11月 数字系统设计任务及要求 学院:电气与信息工程学院 班级:自动化1002班 姓名:陈建允 学号:10401700504 课题 汉字的LED点阵动态显示 系 统 功 能 要 求 通过用QuartusⅡ设计、调试16×16点阵动态显示,熟悉QuartusⅡ的设计输入、设计编译、仿真验证、时序分析、器件编程等基本操作。本设计要求掌握汉字的点阵显示原理、LED点阵的组成及驱动原理、字模软件的使用和汉字动态显示的编程方法。具体要求: 1。用一个16×16的LED点阵显示“班级,姓名,2013年11月18日" 2。至少用以下一种方法实现上面的显示。 显示方式 :a.按钮k0一次就显示下一个字符;b.左移显示; c.右移显示 d.上移显示; e.下移显示;其中a方式可以用按键按下显示下一个字,用单次脉冲开关进行切换,即按一次单次脉冲开关显示一个汉字或数字;也可用软件控制,每隔一定时间显示一个字。 汉字字模数据:16×16,宋体。 字模提取方法:从第一个开始向下每取8个点作为一个字节,如果最后不足8个点就补满8位. 取模顺序:从高到低,即第一个点作为最高位。如*-——————取为10000000。 3。电路原理图:使用visio或protel 或proteus 绘制 4。编程思路,用visio画程序设计流程图或用文字描述 5.详细的程序清单(QuartusⅡ工程文件夹) 6.仿真过程及结果(截图,视频),RTL图等 工 具 EL—EDA—V+试验箱 1。FPGA型号芯片EP1K30TC144-3 2.16×16LED点阵 进 度 安 排 第1周:理解设计内容,查阅资料,确定设计思路并撰写计划,完成方案设计以及电路原理图设计,并开始软件设计。 第2周:主要做程序设计,用实验箱调试程序(验收),撰写实验报告,用A4打印。 汉字的LED点阵动态显示 一、 系统设计要求; 通过用QuartusⅡ设计、调试16×16点阵动态显示,熟悉QuartusⅡ的设计输入、设计编译、仿真验证、时序分析、器件编程等基本操作。本设计要求掌握汉字的点阵显示原理、LED点阵的组成及驱动原理、字模软件的使用和汉字动态显示的编程方法。具体要求: 1。用一个16×16的LED点阵显示“班级,姓名,2013年11月18日"。 2.至少用以下一种方法实现上面的显示。 显示方式 :a.按钮k0一次就显示下一个字符;b.左移显示; c.右移显示 d.上移显示; e.下移显示;其中a方式可以用按键按下显示下一个字,用单次脉冲开关进行切换,即按一次单次脉冲开关显示一个汉字或数字;也可用软件控制,每隔一定时间显示一个字。 汉字字模数据:16×16,宋体。 字模提取方法:从第一个开始向下每取8个点作为一个字节,如果最后不足8个点就补满8位。 取模顺序:从高到低,即第一个点作为最高位.如*--—-———取为10000000。 3。电路原理图:使用visio或protel 或proteus 绘制. 4。编程思路,用visio画程序设计流程图或用文字描述。 5.详细的程序清单(QuartusⅡ工程文件夹). 6.仿真过程及结果(截图,视频),RTL图等。 二、 系统设计原理; 2.1、LED的显示原理; 16×16扫描LED点阵的工作原理同8位扫描数码管类似。它有16个共阴极输出端口,每个共阴极对应有16个LED显示灯,所以其扫描译码地址需4位信号线(SEL0—SEL3),其汉字扫描码由16位段地址(0-15)输入。 通过时钟的每列扫描显示完整汉字。 图2—1 LED灯红绿信号 图2-2 16×16点阵LED等效电路 点阵LED一般采用扫描式显示,实际运用分为三种方式: (1)点扫描 (2)行扫描 (3)列扫描 若使用第一种方式,其扫描频率必须大于16×64=1024Hz,周期小于1ms即可。若使用第二和第三种方式,则频率必须大于16×8=128Hz,周期小于7。8ms即可符合视觉暂留要求。此外一次驱动一列或一行(8颗LED)时需外加驱动电路提高电流,否则LED亮度会不足。 2.2、汉字的储存; 用动态分时扫描技术使LED点阵模块显示图像,需要进行两步工作.第一步是获得数据并保存,即在存贮器中建立汉字数据库。第二步是在扫描模块的控制下,配合行扫描的次序正确地输出这些数据。获得图像数据的步骤是,先将要显示的每一幅图像画在一个如图3。3所示的被分成16×16共256个小方格的矩形框中,再在有笔划下落处的小方格里填上“1",无笔划处填上“0”,这样就形成了与这个汉字所对应的二进制数据在该矩形框上的分布,再将此分布关系以32×16的数据结构组成64个字节的数据,并保存在只读存贮器ROM中。以这种方式将若干个汉字的数据贮存在存贮器内,就完成了图像数据库的建立工作。 2.3、设计方案; 16×16扫描LED点阵只要其对应的X、Y轴顺向偏压,即可使LED发亮。例如如果想使左上角LED点亮,则Y0=1,X0=0即可.应用时限流电阻可以放在X轴或Y轴。它有16个共阴极输出端口,每个共阴极对应有16个LED显示灯。本实验就是要通过CPLD芯片产生读时序,将字形 从寄存器中读出,然后产生写时序,写入16×16的点阵,使其扫描显示输出.为了显示整个汉字,首先分布好汉字的排列,以列给出汉字信息(从16个Y轴线输入字模信息);然后以128HZ的时序逐个点亮每一行(行扫描),即每行逐一加高电平,根据人眼的视觉残留特性,使之形成整个汉字的显示。 LED点阵每个点都有一个红色的发光二极管。点阵内的二极管间的连接都是行共阳,列共阴(要点亮的二极管给出低电平字模信息)。本实验采用共阴,当二极管的共阳极为高电平,共阴极为低电平时,所接点发光;反之处于截止状态,不放光。本实验采取列扫描方式,用列给文字信息,利用周期为1s的脉冲来控制所显示的字。 图2—3 点阵原理图 图2—4 取字模 三、VHDL源程序; 3.1、延时消抖程序 —-延时消抖程序 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164。ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY BUTTON IS PORT(CLK:IN STD_LOGIC; KEY:IN STD_LOGIC; BUTTON:OUT STD_LOGIC); END ENTITY BUTTON; ARCHITECTURE ART OF BUTTON IS SIGNAL COUNT:INTEGER:=0; BEGIN PROCESS(CLK,KEY)IS BEGIN IF(CLK’EVENT AND CLK=’1')THEN IF KEY=’0’THEN IF COUNT=10000 THEN COUNT〈=COUNT; ——按键消抖 10ms 默认输入CLK:1MHz ELSE COUNT<=COUNT+1; END IF; IF COUNT=10000—1 THEN BUTTON〈='0’; —-按下及长按都只出现一个低电平 ELSE BUTTON<=’1'; END IF; ELSE COUNT<=0; END IF; END IF; END PROCESS; END ARCHITECTURE ART; 3。2、汉字显示程序 --汉字显示程序,带按键切换 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164。ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY LATTICE IS PORT(CLK:IN STD_LOGIC; BUTTON:IN STD_LOGIC; LEDD:OUT STD_LOGIC_VECTOR(15 DOWNTO 0); LEDW:OUT STD_LOGIC_VECTOR(3 DOWNTO 0)); END ENTITY LATTICE; ARCHITECTURE ART OF LATTICE IS SIGNAL M:INTEGER:=0; SIGNAL COUNT:STD_LOGIC_VECTOR(3 DOWNTO 0):="0000"; BEGIN PROCESS(CLK,BUTTON) BEGIN IF CLK'EVENT AND CLK=’1’ THEN COUNT<=COUNT+1; IF(M=0)THEN CASE COUNT IS --{0x00,0x00,0x7F,0xFF,0x44,0x40,0x4A,0x20,0x71,0xC4,0x00,0x08,0x23,0x30,0x2D,0x02,}, ——{0x31,0x01,0xE7,0xFE,0x21,0x00,0x21,0x40,0x21,0x20,0x21,0x18,0x20,0x0C,0x00,0x00,},/*”陈",0*/ WHEN "0000”=〉LEDD<=”0000000000000000”; WHEN ”0001”=〉LEDD〈="0111111111111111"; WHEN "0010"=〉LEDD<="0100010001000000”; WHEN "0011”=〉LEDD〈=”0100101000100000"; WHEN "0100”=>LEDD〈=”0111000111000100"; WHEN ”0101"=>LEDD<=”0000000000001000”; WHEN ”0110”=〉LEDD<=”0010001100110000"; WHEN "0111"=〉LEDD〈="0010110100000010"; WHEN ”1000"=>LEDD<=”0011000100000001"; WHEN ”1001"=〉LEDD〈=”1110011111110111”; WHEN "1010”=〉LEDD〈=”0010000100000000"; WHEN "1011"=〉LEDD〈=”0010000101000000”; WHEN ”1100"=>LEDD<=”0010000100100000"; WHEN ”1101"=>LEDD<=”0010000100011000"; WHEN "1110”=〉LEDD<="0010000000001100"; WHEN "1111”=>LEDD<="0000000000000000"; WHEN OTHERS=〉COUNT〈=”0000"; END CASE; END IF; IF(M=1)THEN CASE COUNT IS —-{0x00,0x02,0x42,0xC4,0x46,0x28,0x5A,0x10,0x63,0xE8,0x08,0x14,0x2A,0x94,0x2A,0x92}, -—{0x2A,0x92,0xFF,0xFE,0x2A,0x92,0x2A,0x92,0x3E,0x92,0x08,0x92,0x08,0x02,0x00,0x00},/*"建",1*/ WHEN "0000"=>LEDD<=”0000000000000010"; WHEN "0001”=〉LEDD〈=”0100001011000100”; WHEN ”0010”=>LEDD〈=”0100011000101000"; WHEN ”0011"=〉LEDD〈=”0101101000010000"; WHEN ”0100"=>LEDD〈=”0110001111101000”; WHEN "0101"=〉LEDD〈=”0000100000010010”; WHEN "0110”=>LEDD〈="0010101010010100”; WHEN ”0111”=〉LEDD〈="0010101010010010"; WHEN ”1000"=〉LEDD〈=”0010101010010010"; WHEN "1001"=〉LEDD〈="1111111111111110”; WHEN "1010"=〉LEDD<=”0010101010010010”; WHEN "1011"=〉LEDD〈=”0010101010010010"; WHEN "1100”=〉LEDD〈=”0011111010010010"; WHEN "1101”=〉LEDD<="0000100010010010"; WHEN ”1110”=>LEDD<=”0000100000000010"; WHEN "1111"=>LEDD〈="0000000000000000"; WHEN OTHERS=>COUNT<=”0000”; END CASE; END IF; IF(M=2)THEN CASE COUNT IS -—{0x00,0x00,0x00,0x01,0x00,0x02,0x04,0x04,0x0E,0x08,0x34,0x30,0xC7,0xC0,0x04,0x00}, ——{0x04,0x00,0x07,0xFC,0x04,0x02,0x14,0x02,0x0E,0x02,0x04,0x02,0x00,0x0E,0x00,0x00},/*"允”,2*/ WHEN "0000”=〉LEDD<="0000000000000000”; WHEN ”0001”=〉LEDD<="0000000000000001"; WHEN ”0010"=〉LEDD<="0000000000000010"; WHEN "0011”=〉LEDD〈=”0000010000000100"; WHEN ”0100”=>LEDD<="0000111000001000”; WHEN ”0101”=>LEDD〈="0011010000110000"; WHEN ”0110"=〉LEDD<=”1100011111000000"; WHEN "0111”=〉LEDD〈="0000010000000000"; WHEN ”1000"=>LEDD<=”0000010000000000”; WHEN "1001”=>LEDD〈="0000011111111100"; WHEN "1010"=>LEDD〈=”0000010000000010"; WHEN "1011"=>LEDD<="0001010000000010”; WHEN "1100"=〉LEDD<=”0000111000000010"; WHEN "1101”=>LEDD<=”0000010000000010"; WHEN ”1110”=>LEDD〈="0000000000001110"; WHEN ”1111”=〉LEDD<=”0000000000000000”; WHEN OTHERS=>COUNT<="0000”; END CASE; END IF; END IF; END PROCESS; LEDW〈=COUNT; PROCESS(BUTTON)IS BEGIN IF(BUTTON'EVENT AND BUTTON=’0’)THEN IF M=3 THEN M〈=0; ELSE M〈=M+1; END IF; END IF; END PROCESS; END ARCHITECTURE ART; 四、 仿真与结果分析; 4。1、开发环境介绍 Quartus II 是Altera公司的综合性PLD开发软件,支持原理图、VHDL、Veril-ogHDL以及AHDL(Altera Hardware Description Language)等多种设计输入形式,内嵌自有的综合器以及仿真器,可以完成从设计输入到硬件配置的完整PLD设计流程。 Quartus II支持Altera的IP核,包含了LPM/MegaFunction宏功能模块库,使用户可以充分利用成熟的模块,简化了设计的复杂性、加快了设计速度.对第三方EDA工具的良好支持也使用户可以在设计流程的各个阶段使用熟悉的第三方EDA工具。 此外,Quartus II 通过和DSP Builder工具与Matlab/Simulink相结合,可以方便地实现各种DSP应用系统;支持Altera的片上可编程系统(SOPC)开发,集系统级设计、嵌入式软件开发、可编程逻辑设计于一体,是一种综合性的开发平台。 4。2、创建工程 在Quartus II 中新建一个VHDL File文件,将VHDL代码输入这个文件,并保存到工作目录,名为LATTICE。vhd。 利用new preject wizard 工具创建一个工程,工程名为LATTICE,顶层文件实体名为LATTICE,并将上面创建的LATTICE文件加入到工程中. 4。3、编译前设置 1。选择目标芯片.用assignmemts—=〉settings命令,弹出settings对话框,选择目标芯片为EP2C5T144C8. 图4-1 选择目标器件 2.选择工作方式,编程方式,及闲置引脚状态 单击上图中的device&pin options按钮,弹出device&pin options窗口. 在General项中选中auto—restart configuration after error,使对FPGA的配置失败后能自动重新配置,并加入JTAG用户编码。 图4—2 选择配置器件工作方式 在configuration项中,其下方的Generate compressed bitstreams处打勾,这样就能产生用于EPCS的POF压缩配置文件。 在Configuration 选项页,选择配置器件为EPCS1,其配置模式选择为active serial。 图4—3选择编程方式 在Unused pins项,将目标器件闲置引脚状态设置高阻态,即选择As input,tri-stated。 图4—4 设置闲置引脚状态 4.4、 全程编译 设置好前面的内容之后,就可以进行编译了。选择Processing菜单中start compilation,在窗口的下方processing栏中显示编译信息。 图4-5 全程编译成功完成 完成后在工程管理窗口左是角显示了工程yz_ok 的层次结构和其中结构模块耗用的逻辑宏单元数.此栏的右边是编译处理流程,包括数据网表建立、逻辑综合、适配、配置文件装配和时序分析等。 4。5、时序仿真 1。新建一个矢量波形文件,同时打开波形编辑器。设置仿真时间为50us,保存波形文件为LATTICE.vwf。 2.将工程LATTICE的端口信号名选入波形编辑器中,所选的端口有clk,enable及总线h0和h8.设置clk的时钟周期为2us,占空比为50%。 图4-6 选择仿真控制 仿真器参数设置.选择菜单Assignment中的Settings,在Settings窗口下选择Simulator,在右侧的simulation mode项下选择timing,即选择时序仿真,并选择仿真激励文件名LATTICE。vwf.选择simulation options栏,确认选定simulation coverage reporting; 毛刺检测Glitch detection 为1ns 宽度;选中Run simulation until all vector stimuli 全程仿真。 现在所有设置进行完毕,在菜单processing项下选择start simulation,直到出现simulation was successful,仿真结束 。仿真文件simulation report 通常会自动弹出,否则选择processing=>simulation report 。 五、逻辑综合与结果分析。 VHDL 语言具有强大的语言结构,只需采用简单明确的VHDL语言程序就可以描述十分复杂的硬件电路。同时,它还具有多层次的电路设计描述功能。此外,VHDL 语言能够同时支持同步电路、异步电路和随机电路的设计实现,这是其他硬件描述语言所不能比拟的。VHDL 语言设计方法灵活多样,既支持自顶向下的设计方式,也支持自底向上的设计方法; 既支持模块化设计方法,也支持层次化设计方法.VHDL是超高速集成电路的硬件描述语言,它能够描述硬件的结构、行为与功能.另外,VHDL具有并发性,采用自上而下的结构式设计方法,适合大型设计工程的分工合作。在编写程序的时候,我才发现能看懂程序和能自己写程序是两个完全不同的概念,自己一开始写程序时,即便是一个很简单的功能模块,在编译时也可能产生很多错误,在不断的改错过程中,自己对VHDL语言的语法结构有了深刻的理解,对编译过程中常见的错误也有了全面的认识.通过这两周的课程设计,我在熟悉了基于FPGA设计的同时,也学到了很多在学习课本知识时所体会不到的东西。展开阅读全文
咨信网温馨提示:1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:0574-28810668;投诉电话:18658249818。




数字系统设计任务书-汉字的LED点阵动态显示.doc



实名认证













自信AI助手
















微信客服
客服QQ
发送邮件
意见反馈



链接地址:https://www.zixin.com.cn/doc/2670355.html