版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 大连理工大学城市学院数字电路与系统课程设计设计题目:设计数字显示电路学 院:电子与自动化学专 业: 学 生: 同 组 人: 指导教师: 完成日期: 2012年3 目 录第一章 设计任务 1.1项目名称1.2项目设计说明1.2.1设计任务和要求1.2.2进度安排1.3项目总体功能模块图第二章 需求分析2.1问题基本描述2.2系统模块分解2.3系统各模块功能的基本要求第三章 设计原理3.1 设计原理3.2 MAXPLUSII介绍第四章 系统功能模块设计4.1计数模块计数模块流程图4.1.2输入输出引脚及其功能说明4.1.3程序代码实现4.2数据选择模块数据选择模块流程图4.2.2输入输出引脚及其
2、功能说明4.2.3程序代码实现4.3七段译码显示模块七段译码显示模块流程图4.3.2输入输出引脚及其功能说明4.3.3程序代码实现第五章调试并分析结果5.1输入说明5.2预计输出5.3测试结果记录5.4测试结果分析第6章 结论 6.1心得体会6.2参考文献第一章 设计任务1.1 项目名称:设计数字显示电路本项目的主要内容是设计并实现8位数码管轮流显示8个数字。该电路将所学的数字电路与系统大部分知识和VHDL语言结合。1.2项目设计说明1.2.1设计任务和要求A、用CPLD设计一个八位数码管显示电路;B、8位数码管轮流显示8个数字,选择合适的时钟脉冲频率实现8个数码 管同时被点亮的视觉效果。1.
3、2.2进度安排第一周至第二周每周二2课时,共10课时。具体安排为:第一周至第三周 6课时自行设计、第四周实验结果验收、第五周交报告并进行答辩。1.3项目总体功能模块图第二章 需求分析2.1问题基本描述基本系统流程图如下2.2系统模块分解动态扫描显示电路的主要组成为:计数器、显示译码器、32选4数据选择器、扫描电路组成。2.3系统各模块功能的基本要求1、计数器:CN8模块输入信号是时钟脉clk,每遇到一个时钟脉冲clk上升沿时,内部累 加器便加一,再把累加器所得结果与2进制数的形式输出。要显示8位数字,所以用3位2进制数作为输出。输出信号为cout0.2。2、八选一数据选择模块:模块输入信号一个
4、是数据选择器的地址码SEL2.0,另一部分是数据信息A3.0F3.0.地址码是SEL2.0来自时钟脉冲计数器CN6,由地址码SEL2.0决定输出哪个输入数据。输出信号是q3.0; 3、扫描显示译码器:完成对7字段数码管显示的控制。第三章 设计原理3.1 设计原理采用动态扫描的方式实现设计要求。动态扫描显示需要由两组信号来控制:一组是字段输出口输出的字形代码,用来控制显示的字形,称为段码;另一组是位输出口输出的控制信号,用来选择第几位数码管工作,称为位码。各位数码管的段线并联,段码的输出对各位数码管来说都是相同的。因此在同一时刻如果各位数码管的位选线都处于选通状态的话,6位数码管将显示相同的字符
5、。若要各位数码管能够显示出与本位相应的字符,就必须采用扫描显示方式,即在某一时刻,只让某一位的位选线处于导通状态,而其它各位的位选线处于关闭状态。同时,段线上输出相应位要显示字符的字型码。这样在同一时刻,只有选通的那一位显示出字符,而其它各位则是熄灭的,如此循环下去,就可以使各位数码管显示出将要显示的字符。虽然这些字符是在不同时刻出现的,而且同一时刻,只有一位显示,其它各位熄灭,但由于数码管具有余辉特性和人眼有视觉暂留现象,只要每位数码管显示间隔足够短,给人眼的视觉印象就会是连续稳定地显示。总之,多个数码管动态扫描显示,是将所有数码管的相同段并联在一起,通过选通信号分时控制各个数码管的公共端,
6、循环一次点亮多个数码管,并利用人眼的视觉暂留现象,只要扫描的频率较大,将看不到闪烁现象。将会看到6个数码管持续稳定点亮的现象。3.2 MAXPLUSII介绍 MAX+PLUS II 是一个完全集成化的可编程逻辑环境,能满足用户各种各样的设计需要。它支持Altera公司不同结构的器件,可在多平台上运行。MAX+PLUS II 具有突出的灵活性和高效性,为设计者提供了多种可自由选择的设计方法和工具。丰富的图形界面,可随时访问的在线帮助文档,使用户能够快速轻松地掌握和使用MAX+PLUSII软件。 MAX+PLUSII 具有的强大功能极大地减轻了设计者的负担,使设计者可以快速完成所需的设计,使用该软
7、件,用户从开始设计逻辑电路到完成器件下载编程一般只需要数小时时间,其中设计的编译时间往往仅需数分钟。用于可在一个工作日内完成实现设计项目的多次修改,直至最终设计定型。 MAX+PLUS II 开发系统众多突出的特点,使它深受广大用户的青睐。 MAX+PLUSII支持 Altera公司的 Classic、ACEX 1K、 MAX 3000、 MAX 5000、 MAX 7000、 MAX 9000、 FLEX 6000和 FLEX 10K等系列的可编程逻辑器件,门数为600250000门,提供了工业界真正与结构无关的可编程逻辑设计环境。MAX+PLUSII的编辑器还提供了强大的逻辑综合与优化功能
8、以减轻用户的设计负担。MAX+PLUSII软件的设计输入、处理、校验功能完全集成于可编程逻辑开发工具内,从而可以更快的进行调试,缩短开发周期。设计者可以从各种设计输入、编辑、校验及器件编程工具中作出选择,形成用户风格的开发环境,必要时还可以在保留原始功能的基础上添加新的功能。由于MAX+PLUSII支持多种器件系列,设计者无须学习新的开发工具即可对新结构的器件进行开发。MAX+PLUSII软件支持多种HDL的设计输入,包括标准的VHDL、 Verilog HDL及Altera公司自己开发的硬件描述语言AHDL。MAX+PLUS II 由设计输入、项目处理、项目检验和器件编程等4部分组成,所有这
9、些部分都集成在一个可视化的操作环境下。MAX+PLUS II 管理窗口包括项目路径、工作文件标题条、MAX+PLUS II菜单条、快捷工具条和工作区等几个部分。设置好授权码后,启动MAX+PLUS II即进入MAX+PLUS II 管理窗口,如图6.4所示。MAX+PLUS II 还为用户提供了功能强大的在线帮助功能。通过使用在线帮助,用户可以获得设计中所需的全部信息。第四章 系统功能模块设计4.1计数(数码管位选控制)模块数码管位选控制模块流程图 4.1.2输入输出引脚及其功能说明CN8模块输入信号是时钟脉冲clk,每遇到一个时钟脉冲clk上升沿时,内部累加器便加一,再把累加器所得结果与2进
10、制数的形式输出。要显示八位数字,所以用3位2进制数作为输出。输出信号为cout0.2。总之是通过输入输出信号来对数码管进行位选控制。4.1.3程序代码实现library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity cn8 is port(clr,start,clk: in bit; cout: out std_logic_vector(2 downto 0));end cn8;architecture a of cn8 is signal temp:std_logic_vector(2 down
11、to 0);begin process(clk,clr) begin if clr='0' then temp<="000" cout<='0' elsif (clk'event and clk='1') then if start='0' then if temp>="111" then temp<="000" cout<='1' else temp<=temp+1; cout<='0'
12、end if; end if; end if; end process; cout<=temp; end a;4.2数据选择模块4.2.1.数据选择模(八选一模块)块流程图4.2.2输入输出引脚及其功能说明SEL81模块输入信号一个是数据选择器SEL81的地址码SEL2.0,另一部分是数据信息A3.0H3.0.地址码是SEL2.0来自时钟脉冲计数器CN8,由地址码SEL2.0决定输出哪个输入数据。输出信号是q3.0。4.2.3程序代码实现Library ieee;Use ieee.std_logic_1164.all;Entity sel81 is Port(sel:in std_log
13、ic_vector(2 downto 0); A,b,c,d,e,f,g,h:in std_logic_vector(3 downto 0); Q:out std_logic_vector(3 downto 0); End sel81;Architecture rtl of sel81 isbegin Process(a,b,c,d,e,f,g,h,sel) Variable cout:std_logic_vector(3 downto 0); Begin Case(sel)is When"000"=>cout:=a; When"001"=>
14、cout:=b;When"010"=>cout:=c; When"011"=>cout:=d; When"100"=>cout:=e; When"101"=>cout:=f; When"110"=>cout:=g; When others =>cout:=h; End case; Q<=cout; End process;End rtl;4.3七段译码器模块4.3.1七段译码器模块模块流程图4.3.2输入输出引脚及其功能说明DISP模块是七段译码器,将输
15、入的4位二进制数转换为数码显示管对应的数字。例如输入为4进制数0000的时候,使数码显示管显示0,则要七段译码器输出为011111。即g段为0,g段发光二极管不亮,其它发光二极管被点亮,显示效果为0。DISP模块输入信号D3.0,输出信号是Q6.0。4.3.3程序代码实现Library ieee;Use ieee.std_logic_1164.all;Entity disp is port(d:in std_logic_vector(3 downto 0); q:out std_logic_vector(6 downto 0); end disp; Architecture rtl of di
16、sp isBegin Process(d) Begin Case d is When"0000"=>q<="0111111" When"0001"=>q<="0000110" When"0010"=>q<="1011011" When"0011"=>q<="1001111" When"0100"=>q<="1100110" When&qu
17、ot;0101"=>q<="1101101" When"0110"=>q<="1111101" When"0111"=>q<="0100111" When"1000"=>q<="1111111" When others=>q<="1101111" End case; End process;End rtl;第五章调试并分析结果5.1输入说明clk时钟输入 Clr计数器
18、清零(低电平有效) Start打开计数器(低电平有效)A3.0.H3.0 输入要显示的数字5.2预计输出 Cout2.0数码管位选控制 Q6.0数码管段选控制5.3测试结果记录同时显示0,1,2,3,4,5,6,7这八个不同的数字图形到八个数码管上。5.4测试结果分析 输入一个时钟,驱动计数器工作。选用模值为8的计数器,依次控制8个数码管的亮灭,使得某一时刻有且仅有一个数码管点亮,同时产生对应的,将点亮的数码管赋值显示为相应的数码予以显示。由于扫描频率较高,8位数码管序列将显示持续稳定的0至7的数码。第六章 结论6.1心得体会在课程设计之前,我学过51单片机,对硬件与软件的联系有初步的了解,其
19、次我的题目相对较简单-设计8位数码管动态显示电路,所以上手特别的快。在编写程序之前,我到实验室实地考察了一下试验箱,发现8位数码管实验无法实现,只能实现6位,开关实现数码管数字变换也不现实,单单8位数码管的数字就需要32个开关控制,试验箱远远达不到这个要求,因此,我就设计全软件来控制并且做得非常成功。最后验收时听老师分析,全软件的程序有很大的缺陷,然后对我的设计又进一步的改进,用开关来进行控制。目前为止已实现6位数码管循环显示0-F,即循环滚动,始终点亮6个数码管,左出右进。状态为:01234512345623456734567845678956789A6789AB789ABC89ABCD9A
20、BCDEABCDEFBCDEF0.(代码见附录)。但未实现:向左滚动,用全灭的数码管充右边,直至全部变灭,然后再依次从右边一个一个地点亮。状态为:01234512345X2345XX345XXX45XXXX5XXXXXXXXXXXXXXXX0XXXX01XXX012XX0123X01234012345,其中X表示数码管不显示。总之,通过这次课程设计,我对EDA技术有了更进一步的了解。也知道了如何把vhdl的程序装到实验的硬件中,然后如何的连接实验箱上的管脚。 通过在上网查询本次实验相关资料。丰富了对EDA的了解。6.2参考文献李云、侯传教、冯永浩。VHDL电路设计实用教程。机械工业出版社。附录
21、:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity div2k isport(clk_in : in std_logic; clk_out : out std_logic);end;architecture a of div2k issignal cnt : integer range 0 to 999;signal clk_tmp : std_logic;beginprocess(clk_in)beginif (clk_in'event and clk_in='1
22、39;) thenif cnt=999 thencnt<=0; clk_tmp<= not clk_tmp;elsecnt<=cnt+1;end if;end if;end process;clk_out<=clk_tmp;end;-BLIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;-USE IEEE.STD_numeric_stdENTITY scan_led IS PORT ( CLK : IN STD_LOGIC; SG : OUT STD_LOGIC_VECTOR(
23、6 DOWNTO 0); BT : OUT STD_LOGIC_VECTOR(2 DOWNTO 0) ); END;ARCHITECTURE arc OF scan_led IScomponent div2kport(clk_in: in std_logic; clk_out: out std_logic);end component; SIGNAL CNT6 : INTEGER RANGE 0 TO 5; SIGNAL A : INTEGER RANGE 0 TO 5;SIGNAL COUNT : INTEGER RANGE 0 TO 5000 := 0;SIGNAl FLAG : INTE
24、GER RANGE 0 TO 10 := 0; SIGNAl FLAG_A : INTEGER RANGE 0 TO 15;SIGNAL clk_tmp: STD_LOGIC;BEGINu1:div2k port map(clk_in=>CLK,clk_out=>clk_tmp);-3线至6线译码器-A为位码-P1:process(CNT6) BEGIN CASE CNT6 IS WHEN 0 => BT <= "000" ; A <= 0 ; WHEN 1 => BT <= "001" ; A <= 1
25、; WHEN 2 => BT <= "010" ; A <= 2 ; WHEN 3 => BT <= "011" ; A <= 3 ; WHEN 4 => BT <= "100" ; A <= 4 ; WHEN 5 => BT <= "101" ; A <= 5 ; WHEN OTHERS => NULL ; END CASE ; END PROCESS P1;-拓展模块-P2:process(clk_tmp) BEGIN IF clk_tmp'EVENT AND clk_tmp = '1' THEN -实现模6计数器 if CNT6 = 5 then CNT6 <= 0; else CNT6 <= CNT6 + 1; end if;IF (FLAG = 11) THEN-设置标志 FLAG <= 0; END IF;IF COUNT = 5000 THEN-另一个时钟COUNT <= 0; FLAG <= FLAG + 1; -当记满5000时左移动一位 ELSECOUNT <= COUNT + 1;END IF; END IF; END PROCESS
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 直播平台主播薪资规范
- 娱乐场所安防施工合同
- 旅游信息市场管理办法
- 矿山安全设备测试管理办法
- 森林苗圃施工协议
- 建筑工程彩钢瓦施工合同
- 武汉市计划生育管理妇联行业应用
- 湿地保护中石化施工合同
- 畜牧设备租赁合同转让样本
- 城市绿化项目投标承诺:生态优先
- 社区管理(第三版)教学课件汇总完整版电子教案
- 码头安全使用手册
- 小学语文课堂有效评价策略研究实施方案
- 服装品牌调研报告(共38张幻灯片)课件
- [上海]大型房地产项目开发成本测算实例(全套表格)
- 《西方音乐史》课件李斯特
- PAC、PAM的储存及使用注意事项
- 牛津上海版4AM3U2-Around my home
- 桥梁工程梁板的预制和安装监理实施细则
- 机能实验考核细则
- 石拱桥加固施工方案
评论
0/150
提交评论