基于VHDL语言编写的数字钟.doc_第1页
基于VHDL语言编写的数字钟.doc_第2页
基于VHDL语言编写的数字钟.doc_第3页
基于VHDL语言编写的数字钟.doc_第4页
基于VHDL语言编写的数字钟.doc_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

VHDL语言实现数字电子钟的设计湖北文理学院理工学院摘要:随着基于PLD的EDA技术的发展和应用领域的扩大与深入,EDA技术在电子信息、通信、自动控制及计算机应用等领域的重要性日益突出。本文详细介绍EDA课程设计任务数字钟的设计的详细设计过程及结果,并总结出心得体会。关键字:EDA技术;VHDL语言;数字钟EDA技术作为现代电子设计技术的核心,它依赖强大的计算机,在EDA工具软件平台上,对以硬件描述语言HDL为系统逻辑描述手段完成的设计文件,自动地完成逻辑编译、逻辑简化、逻辑分割、逻辑综合,以及逻辑优化和仿真测试,直至实现既定的电子线路系统功能。1笔者详细介绍在QUARTUS II软件环境下开发基于VHDL语言数字钟的设计。1.设计任务及要求1、设计内容选用合适的可编程逻辑器件及外围电子元器件,设计一个数字电子钟,利用EDA软件(QUARTUS )进行编译及仿真,设计输入可采用VHDL硬件描述语言输入法和原理图输入法,并下载到EDA实验开发系统,连接外围电路,完成实际测试。2、设计要求(1)具有时、分、秒计数显示功能。(2)具有清零的功能,且能够对计时系统的小时、分钟进行调整。(3)小时为24小时制。2.方案选择与论证数字系统的设计采用自顶向下、由粗到细, 逐步分解的设计方法, 最顶层电路是指系统的整体要求, 最下层是具体的逻辑电路的实现。自顶向下的设计方法将一个复杂的系统逐渐分解成若干功能模块, 从而进行设计描述, 并且应用EDA 软件平台自动完成各功能模块的逻辑综合与优化, 门级电路的布局, 再下载到硬件中实现设计1。因此对于数字钟来说首先是时分秒的计数功能,然后能显示,附带功能是清零、调整时分。通过参考EDA课程设计指导书,有以下方案:1. 作为顶层文件有输入端口:时钟信号,清零按键;输出端口有:用于接数码管的八段码输出口,扫描用于显示的六个数码管的输出口。2. 底层文件分为:分秒计数模块计数为60计数,时计数模块为24计数。显示模块。显示模块由一个选择控制模块和一个七段译码器组成。.动态输出使能:选择计时模块单独输出计时数据。3方案的原理框图及其说明时钟:200Hz选择计 输时 出模块数据200倍频器时 计 时分 计 时秒 计 时控制选择输出7 段 译 码 器数码管译码器秒个位,十位选择分个位,十位选择时个位,十位选择Out:数码管的位选数码管段选本实验只需要一个时钟,输出为位选和段选,即可实现24小时,60分钟,60秒钟和复位的功能。秒计时VHDLLIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY second IS PORT (CLK,RST,EN1,EN2 : IN STD_LOGIC; q1,q0 : OUT STD_LOGIC_VECTOR(3 DOWNTO 0); COUT : OUT STD_LOGIC ); END second; ARCHITECTURE behav OF second IS signal C0 : STD_LOGIC_VECTOR(3 DOWNTO 0); signal C1 : STD_LOGIC_VECTOR(3 DOWNTO 0); BEGIN PROCESS(CLK, RST,EN1,en2) BEGIN IF RST = 1 THEN c1 0) ; c0 0) ; ELSIF CLKEVENT AND CLK=1 THEN IF c0 9 THEN c0 = c0 + 1; ELSE c0 0); IF c0 = 9 THEN c1 = c1 + 1; END IF; end if; END IF; if (c1=5 and c0=9)then cout= 1;ELSE COUT =0;end if; if (c1=6 and c0=0) then c0 0);c1 0); END IF;if EN1=1 then q1=c1; else q1Z);end if; if en2=1 then q0=c0; else q0Z);end if;END PROCESS; END behav;分计时LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY minutel IS PORT (CLK0,RST,EN3,EN4 : IN STD_LOGIC; q1,q0 : OUT STD_LOGIC_VECTOR(3 DOWNTO 0); COUT : OUT STD_LOGIC ); END minutel; ARCHITECTURE behav OF minutel IS signal CLK : STD_LOGIC; signal C0 : STD_LOGIC_VECTOR(3 DOWNTO 0); signal C1 : STD_LOGIC_VECTOR(3 DOWNTO 0); BEGIN PROCESS(CLK,RST,EN3,EN4) BEGIN clk=clk0; IF RST = 1 THEN c1 0) ; c0 0) ; ELSIF CLKEVENT AND CLK=1 THEN IF c0 9 THEN c0 = c0 + 1; ELSE c0 0); IF c0 = 9 THEN c1 = c1 + 1; END IF; end if; END IF; if (c1=5 and c0=9)then cout= 1;ELSE COUT =0;end if; if (c1=6 and c0=0) then c0 0);c1 0); END IF; if EN3=1 then q1=c1; else q1Z); end if;if EN4=1 then q0=c0; else q0Z); end if; END PROCESS; END behav;时计时LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY hour IS PORT (CLK0, RST,EN5,EN6: IN STD_LOGIC; q1,q0 : OUT STD_LOGIC_VECTOR(3 DOWNTO 0); END hour; ARCHITECTURE behav OF hour IS signal C0 : STD_LOGIC_VECTOR(3 DOWNTO 0); signal C1 : STD_LOGIC_VECTOR(3 DOWNTO 0); BEGIN PROCESS(CLK0, RST,EN5,EN6) BEGIN IF RST = 1 THEN c1 0) ; c0 0) ; ELSIF CLK0EVENT AND CLK0=1 THEN IF c0 9 THEN c0 = c0 + 1; ELSE c0 0); IF c0 = 9 THEN c1 = c1 + 1; END IF; end if; END IF; if (c1=2 and c0=4) then c0 0);c1 0); END IF; if EN5=1 then q1=c1; else q1Z); end if; if EN6=1 then q0=c0; else q0Z); end if; END PROCESS; END behav;脉冲选择library ieee ;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity xize isport (clk : in std_logic; Q1 : out std_logic; Q2 : out std_logic;Q3: out std_logic;Q4 : out std_logic;Q5 : out std_logic;Q6 : out std_logic);end xize;architecture m of xize issignal cq:std_logic_vector(2 downto 0);signal y: std_logic_vector(5 downto 0); begin process begin wait until (clkevent and clk=1); if(cq101)then cq=cq+1; else cqyyyyyyy=000000; end case; end process; Q1=y(0);Q2=y(1);Q3=y(2);Q4=y(3);Q5=y(4);Q6=y(5);end m;7段译码器LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY DECODER IS PORT(INP:IN STD_LOGIC_VECTOR(3 DOWNTO 0); OUTP:OUT BIT_VECTOR (6 DOWNTO 0);END DECODER;ARCHITECTURE ART4 OF DECODER IS BEGIN OUTP= 0111111 WHEN INP=0000ELSE 0000110 WHEN INP=0001ELSE 1011011 WHEN INP=0010ELSE 1001111 WHEN INP=0011ELSE 1100110 WHEN INP=0100ELSE 1101101 WHEN INP=0101ELSE 1111101 WHEN INP=0110ELSE 0000111 WHEN INP=0111ELSE 1111111 WHEN INP=1000ELSE 1101111 WHEN INP=1001EL

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论