VHDL实验报告论文Word文档格式.docx

上传人:b****3 文档编号:7401663 上传时间:2023-05-08 格式:DOCX 页数:20 大小:115.81KB
下载 相关 举报
VHDL实验报告论文Word文档格式.docx_第1页
第1页 / 共20页
VHDL实验报告论文Word文档格式.docx_第2页
第2页 / 共20页
VHDL实验报告论文Word文档格式.docx_第3页
第3页 / 共20页
VHDL实验报告论文Word文档格式.docx_第4页
第4页 / 共20页
VHDL实验报告论文Word文档格式.docx_第5页
第5页 / 共20页
VHDL实验报告论文Word文档格式.docx_第6页
第6页 / 共20页
VHDL实验报告论文Word文档格式.docx_第7页
第7页 / 共20页
VHDL实验报告论文Word文档格式.docx_第8页
第8页 / 共20页
VHDL实验报告论文Word文档格式.docx_第9页
第9页 / 共20页
VHDL实验报告论文Word文档格式.docx_第10页
第10页 / 共20页
VHDL实验报告论文Word文档格式.docx_第11页
第11页 / 共20页
VHDL实验报告论文Word文档格式.docx_第12页
第12页 / 共20页
VHDL实验报告论文Word文档格式.docx_第13页
第13页 / 共20页
VHDL实验报告论文Word文档格式.docx_第14页
第14页 / 共20页
VHDL实验报告论文Word文档格式.docx_第15页
第15页 / 共20页
VHDL实验报告论文Word文档格式.docx_第16页
第16页 / 共20页
VHDL实验报告论文Word文档格式.docx_第17页
第17页 / 共20页
VHDL实验报告论文Word文档格式.docx_第18页
第18页 / 共20页
VHDL实验报告论文Word文档格式.docx_第19页
第19页 / 共20页
VHDL实验报告论文Word文档格式.docx_第20页
第20页 / 共20页
亲,该文档总共20页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

VHDL实验报告论文Word文档格式.docx

《VHDL实验报告论文Word文档格式.docx》由会员分享,可在线阅读,更多相关《VHDL实验报告论文Word文档格式.docx(20页珍藏版)》请在冰点文库上搜索。

VHDL实验报告论文Word文档格式.docx

(4)二个按键(暂停,开关)。

三引脚说明

3.1引脚设置

端口类型

端口名

数据类型

说明

in

clk,pause_clk,

std_logic

时钟信号

stop

开始,清零按钮

out

a,b,c,d,e,f,g,dp

各个显示灯的连接

sr_out

蜂鸣器

d1,d2,d3,d4,d5,d6

控制数码管的信号

3.2信号说明

signalq:

std_logic_vector(3downto0);

--q是用于分频的信号。

signalstate:

std_logic_vector(3downto0);

--state为状态信号,state为1时为暂停记录状态,为0时为正常显示计数状态。

signalled:

--led为数码管扫描信号,通过对d1~d6的选择使数码管发光。

signaldata,data1,data2,data3,data4,data5,data6,data7,data8:

--data1~data8这些信号为计数器所记录的数值,data为传入译码器的变化值。

signalpause1,pause2,pause3,pause4,pause5,pause6:

--这些信号为实现暂停功能寄存信号。

signaloutput:

std_logic_vector(6downto0);

--output为译码输出的信号总线。

signalsound:

std_logic_vector(3downto0)

--sound为蜂鸣器的输入分频器。

signalsound_sout:

std_logic_vector(15downto0);

--data1~data4的总线。

signalsound_star:

std_logic;

--为蜂鸣器输入频率的开关。

四模块介绍

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

六进制计数电路,报时电路,扫描电路,译码电路。

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

4.1计数器

if(count=X)then--‘X’为进制数,为5即为6进制,为9就是10进制。

count<

="

0000"

;

next_count_clk<

='

1'

--为下一个计数器的时钟信号输入。

else

=count+'

--实现计数功能。

next_count_clk<

0'

endif;

4.2蜂鸣器

process(data6,data5,data4,data3,data2,data1)

begin

sound_sout<

=data4&

data3&

data2&

data1;

--实现整点报时的标识。

if(sound_sout=0)then

if(data5>

=1)then

sound_star<

--开始报时的信号

elsif(data6>

endif;

endif;

if(sound_star='

)then

if(sound=1)then

sr_out<

else

if(data3=5)then

sound_star<

--结束报时的信号

endprocess;

4.3译码器

process(data)

case(data)is--低电平有效

when"

=>

output<

="

0000001"

--显示0

0001"

1001111"

--显示1

0010"

0010010"

--显示2

0011"

0000110"

--显示3

0100"

1001100"

--显示4

0101"

0100100"

--显示5

0110"

0100000"

--显示6

0111"

0001111"

--显示7

1000"

0000000"

--显示8

1001"

0000100"

--显示9

whenothers=>

endcase;

endprocess;

a<

=output(6);

b<

=output(5);

c<

=output(4);

d<

=output(3);

e<

=output

(2);

f<

=output

(1);

g<

=output(0);

4.4控制器

--输出控制器

case(led)is

when"

data<

=data1;

--将百分秒位赋值于data。

d1<

d2<

d3<

d4<

d5<

d6<

dp<

--(从右到左)选择第一个数码管。

pause1<

--寄存现在的数值。

=data2;

--十分秒位

--第二个数码管

pause2<

--寄存

when"

=data3;

--秒低位

--第三个数码管

pause3<

=data4;

--秒高位

--第四个数码管

pause4<

=data5;

--分低位

--第五个数码管

pause5<

=data6;

--分高位

--第六个数码管

pause6<

whenothers=>

endcase;

process(pause_clk,stop)--状态控制器

if(pause_clk'

eventandpause_clk='

if(state="

state<

--计时显示状态

=state+1;

--暂停状态

五整体连接图

六实验结果

器件上六个数码管上各自显示这一个数值,当左侧第一个开关为1时便清零停止,为0时便开始计数,从00.00.00开始,记录到59.59.99时会变为01.00.00,此时记录为时位、分位和秒位,直到23.59.59时才会自动清零,又从头开始计数。

另外该器件上还有另一个按钮,为暂停记录按钮,该按钮的作用是对正在计数显示的秒表进行数值显示上的暂停功能,再暂停之后再按这个按钮时,则是继续进行显示,其中计数功能并没有终断,只是在输出显示上暂停而已。

另外,当分位为整时本秒表会进行报时蜂鸣。

充分满足了老师的要求。

七实验总结

本次VHDL课程设计历时一个学期,从开始接触到现在结束已经经历了一个学期的日子,因为很多东西都不了解,可以说是苦多于甜,但是后来我学到了很多东西,而且通过实验我还学到了很多在书本上所没有学到过的知识。

这次设计,是对这一学期来所学知识的检验,也是进一步加深对VHDL的了解,我对它有浓厚的兴趣。

但是在编调试程序时,也遇到了不少问题,特别是各元件之间的连接,以及各种语法,总是有错误,在细心的检查下,终于找出了错误,排除困难后,程序编译就通过了。

在硬件实验时,也遇到了一点困难:

想要的结果不能在数码管上得到正确的显示;

在设定输入的时钟信号后,数字秒表开始计数,但是始终是乱码等。

后来,经过多次调试之后,才发现是因为输入的时钟信号出了问题。

经过屡次调试,终于找到了比较合适的输入脉冲,时钟周期设置在100hz秒左右比较合适。

通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。

在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固。

总的来说,这次设计的数字秒表还是比较成功的,虽然在实际的过程中曾经遇到了大量的问题,但是经过自己的努力,都给妥善解决了,这样的积累对于现在大学生来说是十分宝贵的。

希望以后能有更多的动手实践机会,在硬件中发现自己的不足,弥补自己的不足,最终成为一个合格的大学生。

最后,特别感谢老师对我的帮助。

谢辞

本论文的完成,得益于伊开和张芳老师传授的知识,使本人有了完成论文所要求的知识积累,更得益于两位老师从选题的确定、论文资料的收集、论文框架的确定、开题报告准备及论文初稿与定稿中对字句的斟酌倾注的大量心血,在此对两位老师表示感谢!

感谢和我一起生活四年的室友,是你们让我们的寝室充满快乐与温馨,“君子和而不同”,我们正是如此!

愿我们以后的人生都可以充实、多彩与快乐!

感谢我的同学们,谢谢你们给予我的帮助。

回首本人的求学生涯,父母的支持是本人最大的动力。

父母不仅在经济上承受了巨大的负担,在心里上更有思子之情的煎熬与望子成龙的期待。

忆往昔,每次回到家时父母的欣喜之情,每次离家时父母的依依不舍之眼神,电话和信件中的殷殷期待和思念之语,皆使本人刻苦铭心,目前除了学习成绩尚可外无以为报,希望以后的学习、工作和生活能使父母宽慰。

通过这一阶段的努力,我的论文《硬件描述语言实现秒表功能》终于完成了。

在这个阶段,我在学习上和思想上都受益非浅,这除了自身的努力外,与各位老师、同学和朋友的关心、支持和鼓励是分不开的。

时间的仓促及自身专业水平的不足,整篇论文肯定存在尚未发现的缺点和错误。

恳请阅读此篇论文的老师、同学,多予指正,不胜感激!

在论文即将完成之际,我的心情无法平静,从开始进入课题到论文的顺利完成,有多少可敬的师长、同学、朋友给了我无言的帮助,在这里请接受我诚挚的谢意!

最后我还要感谢培养我长大含辛茹苦的父母,谢谢你们!

愿把我的幸福和快乐都送给关心和支持过我的人,也愿他们一切如意。

附录

--QuartusIIVHDLTemplate

--BasicShiftRegister

libraryieee;

useieee.std_logic_1164.all;

useieee.std_logic_unsigned.all;

entityminute_clockis

port

clk,pause_clk,stop:

instd_logic;

a,b,c,d,e,f,g,dp,sr_out:

outstd_logic;

d1,d2,d3,d4,d5,d6:

outstd_logic

);

endentity;

architecturertlofminute_clockis

signalstate,led,data:

signaldata1,data2,data3,data4,data5,data6,data7,data8:

signalpause1,pause2,pause3,pause4,pause5,pause6,sound:

signaloutput:

std_logic_vector(6downto0);

begin

process(pause_clk,stop)

if(sound=1)then

sound<

else

=sound+'

process(clk,stop)

if(stop='

data1<

data2<

data3<

data4<

data5<

data6<

data7<

data8<

else

if(clk'

eventandclk='

if(q=6)then

q<

if(data1="

data1<

if(data2="

data2<

if(data3="

data3<

if(data4="

data4<

if(data5="

data5<

if(data6="

data6<

if(data7="

data7<

if(data8="

data8<

else

=data8+'

endif;

elsif(data8="

anddata7="

data8<

else

=data7+'

endif;

else

=data6+'

endif;

else

=data5+'

endif;

else

=data4+'

endif;

else

=data3+'

endif;

else

=data2+'

endif;

else

=data1+'

endif;

=q+'

endif;

process(data6,data5,data4,data3,data2,data1)

if(sound_sout=0)then

if(data5>

sound_star<

elsif(data6>

if(sound_star='

)then

if(sound=1)then

sr_out<

if(data3=5)then

process(clk)

if(led="

led<

=led+1;

process(led,data7)

if(state="

case(led)is

when"

=pause1;

=pause2;

=pause3;

=pause4;

=pause5;

=pause6;

whenothers=>

endcase;

if(data7="

anddata8<

case(led)is

when"

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

当前位置:首页 > IT计算机 > 电脑基础知识

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2