VHDL语言数字秒表设计.docx

上传人:b****3 文档编号:1950690 上传时间:2022-10-25 格式:DOCX 页数:14 大小:456.26KB
下载 相关 举报
VHDL语言数字秒表设计.docx_第1页
第1页 / 共14页
VHDL语言数字秒表设计.docx_第2页
第2页 / 共14页
VHDL语言数字秒表设计.docx_第3页
第3页 / 共14页
VHDL语言数字秒表设计.docx_第4页
第4页 / 共14页
VHDL语言数字秒表设计.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

VHDL语言数字秒表设计.docx

《VHDL语言数字秒表设计.docx》由会员分享,可在线阅读,更多相关《VHDL语言数字秒表设计.docx(14页珍藏版)》请在冰豆网上搜索。

VHDL语言数字秒表设计.docx

VHDL语言数字秒表设计

北华航天工业学院

《EDA技术综合设计》

课程设计报告

 

报告题目:

数字秒表设计

作者所在系部:

电子工程系

作者所在专业:

自动化专业

作者所在班级:

作者姓名:

指导教师:

完成时间:

2011年12月2日

 

容摘要

应用VHDL语言设计数字系统,很多设计工作可以在计算机上完成,从而缩短了数字系统的开发时间。

我们尝试利用VHDL为开发工具设计数字秒表。

秒表的逻辑结构较简单,它主要由十进制计数器、六进制计数器、数据选择器、和显示译码器等组成。

在整个秒表中最关键的是如何获得一个准确的100HZ计时脉冲,除此之外,整个秒表还需有一个启动信号和一个清零信号,以便秒表能随意停止与启动。

秒表有共有6个输出显示,分别为百分之一秒、十分之一秒、秒、十秒、分、十分,所以共有6个计数器与之相对应,6个计数器的输出全都为BCD码输出,这样便与同显示译码器连接。

 

关键词:

VHDL,数字钟,MAX+plusII,时序仿真图。

一、实验目的……………………………………………………………………………1

二、硬件要求……………………………………………………………………………1

三、方案论证……………………………………………………………………………1

四、模块说明……………………………………………………………………………1

1.六进制计数器…………………………………………………………………………1

2.十进制计数器…………………………………………………………………………2

3.蜂鸣器…………………………………………………………………………………3

4.译码器…………………………………………………………………………………4

5.控制器…………………………………………………………………………………5

6.顶层文件………………………………………………………………………………8

五、整体连接图…………………………………………………………………………9

六、实验步骤……………………………………………………………………………10

七、实验结果……………………………………………………………………………10

八、实验总结……………………………………………………………………………10

九、参考文献……………………………………………………………………………10

 

课程设计任务书

课题名称

数字秒表

完成时间

指导教师

职称

学生

班级

总体设计要求和技术要点

设计要求:

秒表共有6个输出显示,分别为百分之一秒、十分之一秒、秒、十秒、分、十分,所以共有6个计数器与之相对应,6个计数器的输出全都为BCD码输出,这样便于和显示译码器的连接。

当计时达60分钟后,蜂鸣器鸣响10声。

除此之外,整个秒表还需有一个启动信号和一个归零信号,以便秒表能随意停止与启动。

设计要点:

秒表的逻辑结构较简单,它主要由显示译码器、分频器、十进制计数器、六进制计数器和报警器组成。

在整个秒表中最关键的是如何获得一个准确的100HZ计时脉冲。

工作容与时间进度安排

工作容:

在软件上编辑、编译程序,并仿真到达实验要求。

进度安排;

课下编写程序,并要求程序能通过编译仿真;

第十四周的周三在实验板上下载调试程序;

周四课设辩论

课程设计成果

1.与设计容对应的软件程序

2.课程设计报告书

3.成果使用说明书

一、实验目的

学习使用VHDL语言,以与EDA芯片的下载仿真

二、硬件要求

〔1〕主芯片EPF10K10LC84-4。

〔2〕蜂鸣器。

〔3〕8位八段扫描共阴极数码显示管。

〔4〕二个按键开关〔清零,开始〕。

三、方案论证

 

四、模块说明

时钟的设计共化分为6个模块:

六进制计数器〔count6〕,十进制计数器〔count10〕,报警电路〔bs〕,扫描电路〔seltime〕,译码电路〔ym〕。

下面具体分析各个模块的原理、容和功能。

〔1〕六进制计数器(count6)

能够实现6进制循环计数,带有清零端stop、开始端start、时钟信号端clk、其文本语言〔文件名:

count6.vhd〕为底层文本,图1为六进制计数器的仿真波形图。

libraryieee;

useieee.std_logic_1164.all;

useieee.std_logic_unsigned.all;

entitycount6is

port(clk,clr,start:

instd_logic;

daout:

outstd_logic_vector(3downto0);

cout:

bufferstd_logic);

endcount6;

architecturebehaveofcount6is

signaltemp:

std_logic_vector(3downto0);

begin

process(clk,clr)

begin

ifclr='1'thentemp<="0000";

cout<='0';

elsifclk'eventandclk='1'then

ifstart='1'then

iftemp="0101"thentemp<="0000";

cout<='1';

elsetemp<=temp+1;cout<='0';

endif;

elsifstart='0'thentemp<=temp;cout<=cout;

endif;

endif;

endprocess;

daout<=temp;

endbehave;

图1.六进制计数器的仿真波形

〔2〕十进制计数器〔COUNT10〕

能够实现10进制循环计数,带有清零端stop、开始端start、时钟信号端clk、其文本语言〔文件名:

COUNT10.vhd〕为底层文本,图2为十进制计数器的仿真波形图

libraryieee;

useieee.std_logic_1164.all;

useieee.std_logic_unsigned.all;

entitycount10is

port(clk,clr,start:

instd_logic;

daout:

outstd_logic_vector(3downto0);

cout:

bufferstd_logic);

endcount10;

architecturebehaveofcount10is

signaltemp:

std_logic_vector(3downto0);

begin

process(clk,clr)

begin

ifclr='1'thentemp<="0000";

cout<='0';

elsifclk'eventandclk='1'then

ifstart='1'then

iftemp="1001"thentemp<="0000";

cout<='1';

elsetemp<=temp+1;cout<='0';

endif;

elsifstart='0'thentemp<=temp;cout<=cout;

endif;

endif;

endprocess;

daout<=temp;

endbehave;

图2.十进制分计数器的仿真波形

〔3〕蜂鸣器

libraryieee;

useieee.std_logic_1164.all;

useieee.std_logic_unsigned.all;

entityalarmis

port(clk,I:

instd_logic;

q:

outstd_logic

);

endalarm;

architecturearofalarmis

signaln:

integerrange0to20;

signalq0:

std_logic;

begin

process(clk)

begin

ifclk'eventandclk='1'then

ifi='0'thenq0<='0';n<=0;

elseifn<=19thenq0<=not(q0);n<=n+1;

elseq0<='0';n<=0;

endif;

endif;

endif;

endprocess;

q<=q0;

endar;

 

〔4〕译码器

libraryieee;

useieee.std_logic_1164.all;

entityymis

port(num:

instd_logic_vector(3downto0);

led:

outstd_logic_vector(6downto0));

endym;

architectureaofymis

begin

process(num)

begin

casenumis

when"0000"=>led<="0111111";

when"0001"=>led<="0000110";

when"0010"=>led<="1011011";

when"0011"=>led<="1001111";

when"0100"=>led<="1100110";

when"0101"=>led<="1101101";

when"0110"=>led<="1111101";

when"0111"=>led<="0100111";

when"1000"=>led<="1111111";

when"1001"=>led<="1101111";

whenothers=>led<="0000000";

endcase;

endprocess;

enda;

〔5〕控制器

libraryieee;

useieee.std_logic_1164.all;

useunsigned.all;

entityseltimeis

port(clr,clk:

inbit;

dain0,dain1,dain2,dain3,dain4,dain5:

instd_logic_vector(3downto0);

sel:

outstd_logic_vector(2downto0);

daout:

outstd_logic_vector(3downto0));

endseltime;

architecturebofseltimeis

signaltemp:

integerrange0to5;

begin

process(clk)

begin

ifclr='1'thendaout<="0000";sel<="000";temp<=0;

else

ifclk'eventandclk='1'then

iftemp=5thentemp<=0;

elsetemp<=temp+1;

endif;

endif;

casetempis

when0=>sel<="000";daout<=dain0;

when1=>sel<="001";daout<=dain1;

when2=>sel<="010";daout<=dain2;

w

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 农学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1