VHDL课程设计报告_第1页
VHDL课程设计报告_第2页
VHDL课程设计报告_第3页
VHDL课程设计报告_第4页
VHDL课程设计报告_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

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

文档简介

1、.湖南科技大学信息与电气工程学院课程设计任务书20 20 学年第 学期专业: 学号: 姓名: 课程设计名称: 设计题目: 完成期限:自 年 月 日至 年 月 日共 周设计依据、要求及主要内容(可另加附页):指导教师(签字): 批准日期: 年 月 日目录1、 摘要2、 VHDL语言介绍3、 设计的目的4、 设计内容5、 电路工作原理6、 主要程序及仿真结果7、 对本次设计的体会和建议8、 参考文献一、摘要人类社会已进入到高度发达的信息化社会。信息化社会的发展离不开电子信息产品开发技术、产品品质的提高和进步。电子信息产品随着科学技术的进步,其电子器件和设计方法更新换代的速度日新月异。实现这种进步的

2、主要原因就是电子设计技术和电子制造技术的发展,其核心就是电子设计自动化(EDA,Electronics Design Automation)技术,EDA技术的发展和推广应用又极大地推动了电子信息产业的发展。为保证电子系统设计的速度和质量,适应“第一时间推出产品”的设计要求,EDA技术正逐渐成为不可缺少的一项先进技术和重要工具。目前,在国内电子技术教学和产业界的技术推广中已形成“EDA热”,完全可以说,掌握EDA技术是电子信息类专业学生、工程技术人员所必备的基本能力和技能。 EDA技术在电子系统设计领域越来越普及,本设计主要利用VHDL语言设计一个电子数字钟,它的计时周期为24小时,显示满刻度为

3、24时59分59秒。总的程序由几个各具不同功能的单元模块程序拼接而成,其中包括分频程序模块、时分秒计数和设置程序模块、比较器程序模块、三输入数据选择器程序模块、译码显示程序模块和拼接程序模块。并且使用软件进行电路波形仿真。关键词:数字钟 EDA VHDL语言2、 VHDL语言介绍 1987年底,VHDL被IEEE和美国国防部确认为标准硬件描述语言 。自IEEE公布了VHDL的标准版本,IEEE-1076(简称87版)之后,各EDA公司相继推出了自己的VHDL设计环境,或宣布自己的设计工具可以和VHDL接口。此后VHDL在电子设计领域得到了广泛的接受,并逐步取代了原有的非标准的硬件描述语言。19

4、93年,IEEE对VHDL进行了修订,从更高的抽象层次和系统描述能力上扩展VHDL的内容,公布了新版本的VHDL,即IEEE标准的1076-1993版本,(简称93版)。现在,VHDL和Verilog作为IEEE的工业标准硬件描述语言,又得到众多EDA公司的支持,在电子工程领域,已成为事实上的通用硬件描述语言。有专家认为,在新的世纪中,VHDL于Verilog语言将承担起大部分的数字系统设计任务。VHDL主要用于描述数字系统的结构,行为,功能和接口。除了含有许多具有硬件特征的语句外,VHDL的语言形式和描述风格与句法是十分类似于一般的计算机高级语言。VHDL的程序结构特点是将一项工程设计,或称

5、设计实体(可以是一个元件,一个电路模块或一个系统)分成外部(或称可是部分,及端口)和内部(或称不可视部分),既涉及实体的内部功能和算法完成部分。在对一个设计实体定义了外部界面后,一旦其内部开发完成后,其他的设计就可以直接调用这个实体。这种将设计实体分成内外部分的概念是VHDL系统设计的基本点。三、设计的目的本项实验通过六十进制计数器和数字钟的设计与仿真,学习VHDL语言及VHDL文本输入设计方法,编写六十进制计数器和数字钟源程序,应用VMAX+plusII软件进HDL文本输入设计与波形仿真。熟练地运用数字系统的设计方法进行数字系统设计,能进行较复杂的数字系统设计,按要求设计一个数字钟。4、 设

6、计内容1、60进制计数器计数器60进制计数器计数器是一个用以实现计数功能的时序部件,它不仅可用来及脉冲数,还常用作数子系统的定时、分频和执行数字运算以及其它特定的逻辑功能。计数器种类很多。按构成计数器中的各触发器是否使用一个时钟脉冲源来分,有同步计数器和异步计数器。2、数字钟 显示秒、分、时,可清零、可调时,具有整点报时功能五、电路工作原理1、六十进制计数器 “秒计数器”采用60进制计数器,每累计60秒发出一个“分脉冲”信号,该信号将作为“分计数器”的时钟脉冲。“分计数器”也采用60进制计数器,每累计60分钟,发出一个“时脉冲”信号,该信号将被送到“时计数器”。2、数字钟 由石英晶体振荡器、分

7、频器、计数器、译码器显示器和校时电路组成。振荡器产生稳定的高频脉冲信号,作为数字钟的时间基准,然后经过分频器输出标准秒脉冲。秒计数器满60后向分计数器进位,分计数器满60后向小时计数器进位,小时计数器按照“24翻1”规律计数。计数器的输出分别经译码器送显示器显示。计时出现误差时,可以用校时电路校时、校分 。6、 主要程序及仿真结果1、六十进制计数器LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY bcd60count ISPORT(clk,bcd1wr,bcd10wr,cin:IN S

8、TD_LOGIC; co:OUT STD_LOGIC; datain:IN STD_LOGIC_VECTOR(3 DOWNTO 0); bcd1:OUT STD_LOGIC_VECTOR(3 DOWNTO 0); bcdSHI:OUT STD_LOGIC_VECTOR(2 DOWNTO 0);END ENTITY bcd60count;ARCHITECTURE rtl OF bcd60count ISSIGNAL bcd1n:STD_LOGIC_VECTOR(3 DOWNTO 0);SIGNAL bcd10n:STD_LOGIC_VECTOR(2 DOWNTO 0);BEGIN bcd1=bc

9、d1n; bcdSHI=bcd10n;PROCESS(clk,bcd1wr)ISBEGIN IF(bcd1wr =1)THEN bcd1n=datain;ELSIF(clk EVENT AND clk=1)THEN IF(cin=1)THEN IF(bcd1n=9)THEN bcd1n=0000; ELSE bcd1n=bcd1n+1; END IF; END IF; END IF;END PROCESS;PROCESS(clk,bcd10wr)ISBEGIN IF(bcd10wr=1)THEN bcd10n=datain(2 DOWNTO 0); ELSIF(clkEVENT AND clk

10、=1)THEN IF(cin=1AND bcd1n=9)THEN IF(bcd10n=5)THEN bcd10n=000; ELSE bcd10n=bcd10n+1; END IF; END IF; END IF;END PROCESS;PROCESS(bcd10n,bcd1n,cin)ISBEGIN IF(cin=1AND bcd1n=9 AND bcd10n=5)THEN co=1; ELSE coclk_1hclk_1h=1; end case; end if; end process; process(clk) variable cnt1 : integer range 0 to 20

11、0; variable cnt2 : integer range 0 to 10; begin if clkevent and clk=1 then if cnt1=200 then cnt1:=0; if cnt2=10 then cnt2:=0; if(cnt=5)then cnt=0; else cnt duan=000001;data_o duan=000010;data_o duan=000100;data_o duan=001000;data_o duan=010000;data_o duan=100000;data_oduanclk_1h,rst=reset,times=abin

12、1,full=carry1); u2 : count60 port map(carry=carry1,rst=reset,times=abin2,full=carry2); u3 : count24 port map(carry=carry2,rst=reset,times=abin3); u4 : i60bcd port map(interg=abin1,ten=sh,one=sl); u5 : i60bcd port map(interg=abin2,ten=mh,one=ml); u6 : i24bcd port map(interg=abin3,ten=hh,one=hl); end;

13、 use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;use ieee.std_logic_arith.all;entity count60 is-分,秒计数器 port( carry : std_logic; rst : std_logic; times : out integer range 0 to 59; full : out std_logic );end;architecture a of count60 is signal time_s : integer range 0 to 59; begin process

14、(rst,carry) begin if rst=1 then time_s=0; full=0; elsif rising_edge(carry) then if time_s=59 then time_s=0; full=1; else time_s=time_s+1; full=0; end if; end if; end process; times=time_s;end; library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;use ieee.std_logic_arith.all;entit

15、y count24 is-时计数器 port( carry : in std_logic; rst : in std_logic; times : out integer range 0 to 23 -full : out std_logic );end;architecture a of count24 is signal time_s : integer range 0 to 23;begin process(rst,carry) begin if rst=1 then time_s=0; -full=0; elsif rising_edge(carry) then if time_s=2

16、3 then time_s=0; -full=1; else time_s=time_s+1; -full=1; end if; end if; end process; times one one one one one one one one one one one ten ten ten ten ten ten ten one one one one one one one one one one one ten ten ten ten=null; end case; end process;end;4、仿真结果七、对本次设计的体会与建议 本设计原理简单,结构清晰,较为容易仿真成功。从本次课程设计中使我获益匪浅,首先使我对这门课程有了更深的体会,通过对60进制计数器的设计使我将以前所学的理论知识运用到实际中去,使用软件进行仿真,使我找到了很多以前没有完全理解的知识,通过再次查找资料,我又学会了很多。这次实验仿真了六十进制计数器, 通过学习设计,初步掌握了软件的使用并且深入地体会到VHDL语言的广泛应用。这次实验让我感觉收获颇多,一方面培养了我用自己的专业知识解决问题的能力,进一步理解了理论必须运用于实际的重要性,加深了我对这门课程

温馨提示

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

评论

0/150

提交评论