您好,欢迎来到步遥情感网。
搜索
您的当前位置:首页七段数码管

七段数码管

来源:步遥情感网


《EDA技术综合设计 》

课程设计报告

报 告 题 目:计数器7段数码管控制接口技术作者所在系部: 作者所在班级: 作 者 姓 名 : 作 者 学 号 : 指导教师姓名: 完 成 时 间 : 1

1

内 容 摘 要

掌握VHDL语言基本知识,并熟练运用VHDL语言来编写程序,来下载实践到硬件上,培养使用设计综合电路的能力,养成提供文档资料的习惯和规范编程的思想。利用VHDL语言设计一个七段数码管控制引脚,在时钟信号的控制下,使6位数码管动态刷新显示十进制计数器及其进位,十二进制计数器,四位二进制可逆计数器,六十进制计数器的计数结果,这期间需要seltime分频器来动态的给各个计数器分配数码管,并显示数字的变化。

关键词:VHDL语言 编程 七段数码管控制引脚 芯片

2

目 录

一 概 述 ………… ……………………………………………………………1 二 方案设计与论证……………………………………………………………………1 三 单元电路设计与参数计算…………………………………………………………1 3.1数码管译码器……………………………………………………………………1 3.2 十进制计数器……………………………………………………………………2

3.3六十进制计数器 …………………………………………………………………3 3.4四位二进制可逆计数器…………………………………… ……………………5 3.5时间数据扫描分时选择模块……………………………………… ……………6 3.6顶层文件……………………………………………………… …………………8 四 总的原理图…………………………………………………………………………9 五 器件编程与下载……………………………………………………………………9 六 性能测试与分析(要围绕设计要求中的各项指标进行)………… ……………10 七 实验设备……………………………………………………………………………10 八 心得体会……………………………………………………………………………10 九 参考文献……………………………………………………………………………10

3

课程设计任务书

课题 7段数码管控制引脚 名称 指导 胡辉 教师 职称 副教授 姓名 总体设计要求和技术要点 通过本课程的学习使学生掌握可编程器件、EDA开发系统软件、硬件描述语言和电子线路设计与技能训练等各方面知识;提高工程实践能力;学会应用EDA技术解决一些简单的电子设计问题。 具体要求: 1.设计一个共阴7段数码管控制接口,在硬件时钟电路的基础上,采用分频器,输出一个1S的时钟信号,同时显示2、3、4所要求的计数器。 2.设计一个带使能输入、进位输出及同步清0的增1十进制计数器。 3.设计一个带使能输入及同步清0的六十进制同步加法计数器; 4.设计一个四位二进制可逆计数器; 完成 时间 学生 陈东桓 班级 2011. 12.11 B09212 工作内容及时间进度安排 第16周: 周一、周二:设计项目的输入、编译、仿真 周三:器件编程下载与硬件验证 周四:成果验收与总结 周五:撰写课程设计总结报告 课程设计成果 把编写好的程序下载到试验箱,使数码管能够按照编写的程序显示出正确的结果,实验成功。 4

一、概述

设计一个共阴7段数码管控制接口,在硬件时钟电路的基础上,采用分频器,输 出一个1S的时钟信号。一个带使能输入、进位输出及同步清0的增1十进制计数器。一个带使能输入及同步清0的六十进制同步加法计数器和一个四位二进制可逆计数器。要求:在时钟信号的控制下,使6位数码管动态刷新显示上述计数器的计数结果。

二、方案设计与论证

首先VHDL语言编写底层文件和三个计数器的程序,再编写分频器和数码管的程序,最后用例化语句编写顶层文件,分别都调试在确认无误后把顶层文件下载到试验箱,连接导线,完成后实现在时钟信号的控制下,6位数码管动态刷新显示三个计数器的技术结果。

三、单元电路设计

1.数码管译码器程序

library ieee;

use ieee.std_logic_11.all; use ieee.std_logic_unsigned.all; entity deled is

port(num:in std_logic_vector(3 downto 0); led:out std_logic_vector(6 downto 0)); end deled;

architecture fun of deled is begin -- abcdefg

led<=\"1111110\"when num=\"0000\"else \"0110000\"when num=\"0001\"else

\"1101101\"when num=\"0010\"else \"1111001\"when num=\"0011\"else

\"0110011\"when num=\"0100\"else \"1011011\"when num=\"0101\"else

1

\"1011111\"when num=\"0110\"else \"1110000\"when num=\"0111\"else \"1111111\"when num=\"1000\"else

\"1111011\"when num=\"1001\"else \"1110111\"when num=\"1010\"else \"0011111\"when num=\"1011\"else

\"1001110\"when num=\"1100\"else \"0111101\"when num=\"1101\"else \"1001111\"when num=\"1110\"else \"1000111\"when num=\"1111\";

end fun; 原理图

2.十进制计数器程序

library ieee;

use ieee.std_logic_11.all; use ieee.std_logic_unsigned.all; entity cnt10 is

port(clk,clr,en:in std_logic;

co:out std_logic;

q:buffer std_logic_vector(3 downto 0));

end cnt10; architecture behave of cnt10 is begin

process(clk,clr,en) begin

2

if(en='0')then q<=\"0000\"; elsif(clk'event and clk='1')then if(clr='1')then q<=\"0000\"; elsif(q=9)then q<=\"0000\"; co<='1'; else q<=q+1; co<='0'; end if; end if; end process;

end behave;

原理图

仿真波形图

3.六十进制计数器程序

LIBRARY IEEE;

USE IEEE.STD_LOGIC_11.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY cnt60 IS

3

PORT(clk,clr,en:IN STD_LOGIC;

q:OUT STD_LOGIC_VECTOR(7 DOWNTO 0));

END cnt60;

ARCHITECTURE behave OF cnt60 IS

SIGNAL qh,ql:STD_LOGIC_VECTOR(3 DOWNTO 0); BEGIN

PROCESS(clk,clr,en) BEGIN

IF(en='1')THEN ql<=\"0000\";qh<=\"0000\"; ELSIF(clk'event and clk='1')THEN IF(clr='1')THEN ql<=\"0000\";qh<=\"0000\"; ELSIF(ql=9)THEN ql<=\"0000\"; IF(qh=5)THEN qh<=\"0000\"; ELSE qh<=qh+1; END IF; ELSE ql<=ql+1; END IF; END IF; q<=qh&ql; END PROCESS; END behave;

原理图

4

波形图

4.四位二进制可逆计数器程序

library ieee;

use ieee.std_logic_11.all; use ieee.std_logic_unsigned.all; entity kn4 is

port(clk,clr,plus_sub:in std_logic;

q:buffer std_logic_vector(3 downto 0));

end kn4;

architecture behave of kn4 is begin

process(clk,clr,plus_sub)

begin

if(clk'event and clk='1')then if(clr='1')then q<=\"0000\"; elsif(plus_sub='1')then if(q=15)then q<=\"0000\"; else q<=q+1; end if;

elsif(plus_sub='0')then if(q=0)then q<=\"1111\"; else q<=q-1; end if; end if; end if; end process;

5

end behave;

原理图

波形图

5.时间数据扫描分时选择模块程序

library ieee;

use ieee.std_logic_11.all; use ieee.std_logic_unsigned.all; use ieee.std_logic_arith.all; entity seltime is

port(clk,reset,ci:in std_logic;

Kn4,cnt10:in std_logic_vector(3 downto 0); cnt60:in std_logic_vector(7 downto 0); daout:out std_logic_vector(3 downto 0); dp:out std_logic;

sel:out std_logic_vector(2 downto 0)); end seltime;

architecture fun of seltime is

signal count:std_logic_vector(2 downto 0); begin

6

sel<=count; process(clk,reset) begin

if(reset='0')then count<=\"000\";

elsif(clk'event and clk='1')then if(count>=\"101\")then count<=\"000\"; else

count<=count+1; end if; end if;

case count is

when\"000\"=>daout<=cnt10(3 downto 0);dp<='0'; when\"001\"=>daout(3 downto 1)<=\"000\"; daout(0)<=ci;dp<='0';

when\"010\"=>daout<=kn4(3 downto 0);dp<='0'; when\"011\"=>daout<=cnt60(7 downto 4);dp<='0'; when others=>daout<=cnt60(3 downto 0);dp<='0'; end case; end process; end fun; 原理图

7

6.分频器

library ieee;

use ieee.std_logic_11.all; use ieee.std_logic_arith.all; use ieee.std_logic_unsigned.all; entity fengpinqi is

port(clr,clk_1:in std_logic; q:buffer std_logic); end fengpinqi;

architecture one of fengpinqi is

signal counter:integer range 0 to 624999; begin

process(clr,clk_1) begin

if(clk_1='1'and clk_1'event)then if clr='0' then counter<=0;

elsif counter=62499 then counter<=0; q<=not q; else

counter<=counter+1; end if; end if;

end process; end one;

7.顶层文件程序 library ieee;

use ieee.std_logic_11.all; entity ss_top is

port(clk,clr,en,plus_sub,clkdsp:in std_logic; a,b,c,d,e,f,g,dpout:out std_logic;

sel:out std_logic_vector(2 downto 0)); end ss_top;

architecture one of ss_top is

8

component cnt60

port(clk,clr,en:in std_logic;

q:out std_logic_vector(7 downto 0)); end component; component kn4

port(clk,clr,plus_sub:in std_logic;

q:buffer std_logic_vector(3 downto 0)); end component; component cnt10

port(clk,clr,en:in std_logic; co:out std_logic;

q:buffer std_logic_vector(3 downto 0)); end component;

component deled

PORT(num:in std_logic_vector(3 downto 0); led:out std_logic_vector(6 downto 0)); end component; component seltime

port(clk,reset,ci:in std_logic;

cnt60:in std_logic_vector(7 downto 0); kn4:in std_logic_vector(3 downto 0); cnt10:in std_logic_vector(3 downto 0); dp:out std_logic;

daout:out std_logic_vector(3 downto 0); sel:out std_logic_vector(2 downto 0)); end component;

signal cnt60_out:std_logic_vector(7 downto 0); signal kn4_out:std_logic_vector(3 downto 0); signal cnt10_out:std_logic_vector(3 downto 0); signal cnt10_co:std_logic;

signal ledout:std_logic_vector(6 downto 0);

signal seltime_out:std_logic_vector(3 downto 0); Begin

a<=ledout(6);b<=ledout(5);c<=ledout(4);

d<=ledout(3);e<=ledout(2);f<=ledout(1);g<=ledout(0); u1:deled port map(num=>seltime_out,led=>ledout);

u2:cnt10 port map(clk=>clk,clr=>clr,en=>en,co=>cnt10_co,q=>cnt10_out); u3:cnt60 port map(clk=>clk,clr=>clr,en=>en,q=>cnt60_out);

u4:kn4 port map(clk=>clk,clr=>clr,plus_sub=>plus_sub,q=>cnt16_out); u5:seltime

9

port map(clk=>clkdsp,reset=>clr,ci=>cnt10_co,cnt60=>cnt60_out, kn4=>kn4_out,cnt10=>cnt10_out,

daout=>seltime_out,dp=>dpout,sel=>sel); end one; 四、总的原理图

五、器件编程与下载

用VHDL语言编译四种计数器的、译码器和分时器的程序,然后把他们用例化

语句编译成顶层文件,仿真成功以后下载到试验箱通过数码管显示出结果,试验成功。

六、性能测试与分析

各个程序编译完成以后,通过波形图检测程序的正确性,当源程序en=1时

程序才能运行,当clr=1时清零,等于零时工作,在两个都工作的情况下在clk的上升沿时数据进位,clk=0时保持,等于1时运行。如果程序按以上所说正常循环说明程序正确。

七、实验设备

10

计算机一台,EDA实验箱一台,下载电缆一根,导线若干。

八、心得体会

1.通过这次课程设计,更加系统的掌握了quartusⅡ的操作了解了VHDL语言的编程方法;

2.在编程中每个步骤都很重要,必须要认真检查,核对;

3.遇到不懂的或者不太明白的知识,通过向同学虚心请教,相互交流会有很大收获;

4.课程设计过程中,经历过多次失败,总结经验,对于知识的领悟只有在挫折中磨砺过才会有质的飞跃; 5.实践出真知。 九、参考文献

1.徐惠民,安德宁 《数字逻辑设计与VHDL描述》机械工业出版社 2. 李国洪,胡辉,沈明山《EDA技术与实验》机械工业出版社 3.蒋璇,臧春华 《数字系统设计与PLD应用技术》电子工业出版社

4. 赵曙光,郭万有等 《可编程逻辑器件原理、开发与应用 》西安电子 科技大学出版

5.陈赜,朱如琪 《在系统可编程技术实践教程》科学出版社

11

评 语 指 导 教 师 评语及设 计成绩 指导教师: 日期: 年 月 日 课程设计成绩:

12

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- obuygou.com 版权所有 赣ICP备2024042798号-5

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务