7段数码管控制系统引脚文档格式.docx

上传人:b****6 文档编号:19232576 上传时间:2023-01-04 格式:DOCX 页数:13 大小:64.92KB
下载 相关 举报
7段数码管控制系统引脚文档格式.docx_第1页
第1页 / 共13页
7段数码管控制系统引脚文档格式.docx_第2页
第2页 / 共13页
7段数码管控制系统引脚文档格式.docx_第3页
第3页 / 共13页
7段数码管控制系统引脚文档格式.docx_第4页
第4页 / 共13页
7段数码管控制系统引脚文档格式.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

7段数码管控制系统引脚文档格式.docx

《7段数码管控制系统引脚文档格式.docx》由会员分享,可在线阅读,更多相关《7段数码管控制系统引脚文档格式.docx(13页珍藏版)》请在冰豆网上搜索。

7段数码管控制系统引脚文档格式.docx

名称

7段数码管控制引脚

完成

时间

2011.

12.12

指导

教师

胡辉

职称

副教授

学生

庄仲

班级

B09212

总体设计要求和技术要点

通过本课程的学习使学生掌握可编程器件、EDA开发系统软件、硬件描述语言和电子线路设计与技能训练等各方面知识;

提高工程实践能力;

学会应用EDA技术解决一些简单的电子设计问题。

具体要求:

1.设计一个共阴7段数码管控制接口,在硬件时钟电路的基础上,采用分频器,输出一个1S的时钟信号,同时显示2、3、4所要求的计数器。

2.设计一个带使能输入、进位输出及同步清0的增1十进制计数器。

3.设计一个带使能输入及同步清0的六十进制同步加法计数器;

4.设计一个四位二进制可逆计数器;

工作容及时间进度安排

第16周:

周一、周二:

设计项目的输入、编译、仿真

周三:

器件编程下载与硬件验证

周四:

成果验收与总结

周五:

撰写课程设计总结报告

课程设计成果

把编写好的程序下载到试验箱,使数码管能够按照编写的程序显示出正确的结果,实验成功。

一、概述

设计一个共阴7段数码管控制接口,在硬件时钟电路的基础上,采用分频器,输出一个1S的时钟信号。

一个带使能输入、进位输出及同步清0的增1十进制计数器。

一个带使能输入及同步清0的六十进制同步加法计数器和一个四位二进制可逆计数器。

要求:

在时钟信号的控制下,使6位数码管动态刷新显示上述计数器的计数结果。

二、方案设计与论证

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

三、单元电路设计

1.数码管译码器程序

libraryieee;

useieee.std_logic_1164.all;

useieee.std_logic_unsigned.all;

entitydeledis

port(num:

instd_logic_vector(3downto0);

led:

outstd_logic_vector(6downto0));

enddeled;

architecturefunofdeledis

begin

--abcdefg

led<

="

1111110"

whennum="

0000"

else

"

0110000"

0001"

"

1101101"

0010"

1111001"

0011"

0110011"

0100"

1011011"

0101"

1011111"

0110"

1110000"

0111"

1111111"

1000"

1111011"

1001"

1110111"

1010"

0011111"

1011"

1001110"

1100"

0111101"

1101"

1001111"

1110"

1000111"

1111"

;

endfun;

原理图

2.十进制计数器程序

entityt10is

port(clk,clr,en:

instd_logic;

co:

outstd_logic;

q:

bufferstd_logic_vector(3downto0));

endt10;

architecturebehaveoft10is

begin

process(clk,clr,en)

begin

if(en='

0'

)thenq<

elsif(clk'

eventandclk='

1'

)then

if(clr='

elsif(q=9)thenq<

co<

='

elseq<

=q+1;

endif;

endprocess;

endbehave;

仿真波形图

3.六十进制计数器程序

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

USEIEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITYt60IS

PORT(clk,clr,en:

INSTD_LOGIC;

OUTSTD_LOGIC_VECTOR(7DOWNTO0));

ENDt60;

ARCHITECTUREbehaveOFt60IS

SIGNALqh,ql:

STD_LOGIC_VECTOR(3DOWNTO0);

BEGIN

PROCESS(clk,clr,en)

IF(en='

)THENql<

qh<

ELSIF(clk'

)THEN

IF(clr='

ELSIF(ql=9)THENql<

IF(qh=5)THENqh<

ELSEqh<

=qh+1;

ENDIF;

ELSEql<

=ql+1;

q<

=qh&

ql;

ENDPROCESS;

ENDbehave;

波形图

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

libraryieee;

useieee.std_logic_1164.all;

useieee.std_logic_unsigned.all;

entitykn4is

port(clk,clr,plus_sub:

q:

endkn4;

architecturebehaveofkn4is

begin

process(clk,clr,plus_sub)

if(clk'

if(clr='

elsif(plus_sub='

)then

if(q=15)thenq<

elseq<

endif;

if(q=0)thenq<

=q-1;

endprocess;

endbehave;

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

useieee.std_logic_arith.all;

entityseltimeis

port(clk,reset,ci:

Kn4,cnt10:

t60:

instd_logic_vector(7downto0);

daout:

outstd_logic_vector(3downto0);

dp:

sel:

outstd_logic_vector(2downto0));

endseltime;

architecturefunofseltimeis

signalcount:

std_logic_vector(2downto0);

sel<

=count;

process(clk,reset)

begin

if(reset='

count<

000"

elsif(clk'

if(count>

101"

else

=count+1;

endif;

casecountis

when"

=>

daout<

=cnt10(3downto0);

dp<

001"

daout(3downto1)<

daout(0)<

=ci;

010"

=kn4(3downto0);

011"

=cnt60(7downto4);

whenothers=>

=cnt60(3downto0);

endcase;

endprocess;

6.顶层文件程序

entityss_topis

port(clk,clr,en,plus_sub,clkdsp:

a,b,c,d,e,f,g,dpout:

sel:

endss_top;

architectureoneofss_topis

componentt60

port(clk,clr,en:

outstd_logic_vector(7downto0));

endcomponent;

componentkn4

componentt10

co:

componentdeled

PORT(num:

componentseltime

t60:

kn4:

t10:

dp:

daout:

signalt60_out:

std_logic_vector(7downto0);

signalkn4_out:

std_logic_vector(3downto0);

signalt10_out:

signalt10_co:

std_logic;

signalledout:

std_logic_vector(6downto0);

signalseltime_out:

Begin

a<

=ledout(6);

b<

=ledout(5);

c<

=ledout(4);

d<

=ledout(3);

e<

=ledout

(2);

f<

=ledout

(1);

g<

=ledout(0);

u1:

deledportmap(num=>

seltime_out,led=>

ledout);

u2:

cnt10portmap(clk=>

clk,clr=>

clr,en=>

en,co=>

cnt10_co,q=>

cnt10_out);

u3:

cnt60portmap(clk=>

en,q=>

cnt60_out);

u4:

kn4portmap(clk=>

clr,plus_sub=>

plus_sub,q=>

cnt16_out);

u5:

seltime

portmap(clk=>

clkdsp,reset=>

clr,ci=>

cnt10_co,cnt60=>

cnt60_out,

kn4=>

kn4_out,cnt10=>

cnt10_out,

daout=>

seltime_out,dp=>

dpout,sel=>

sel);

endone;

4、总的原理图

五、器件编程与下载

用VHDL语言编译四种计数器的、译码器和分时器的程序,然后把他们用例化语句编译成顶层文件,仿真成功以后下载到试验箱通过数码管显示出结果,试验成功。

六、性能测试与分析

各个程序编译完成以后,通过波形图检测程序的正确性,当源程序en=1时程序才能运行,当clr=1时清零,等于零时工作,在两个都工作的情况下在clk的上升沿时数据进位,clk=0时保持,等于1时运行。

如果程序按以上所说正常循环说明程序正确。

七、实验设备

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

八、心得体会

通过一周的EDA课设实践,虽然时间不是很长,但是我学到了很多。

通过实践让我能够熟练的运用VHDL语言和Quartus‖软件,发现这个软件功能十分的强大,而且用途也很广。

在实践中我们遇到了挺多的困难,在开始的程序编写中其实还挺顺利的,但是把它编写到EDA试验箱中让它通过数码管显示出结果时,事实并不是想象中的那样,通过多次的更改和实验,最终实验成功。

到最后找到失败的原因时让我们都感到很惊讶,它仅仅是一个让我们所有人都忽略的小小的细节,这也让我明白了一个道理,做任何事,不管大小都要认真仔细,要集中百分之百的注意力在上面,保证没有一丝遗漏,才能把事情做好。

还有在遇到困难时要有不抛弃不放弃的劲头,要相信在任何时候办法总比困难多。

这次实践让我收获很多,为我以后的学习打下了坚实的基础,也为我以后的学习生活增添的信心。

九、参考文献

1.国洪,胡辉,明山《EDA技术与实验》机械工业

2.徐惠民,安德宁《数字逻辑设计与VHDL描述》机械工业

3.璇,臧春华《数字系统设计与PLD应用技术》电子工业

4.赜,朱如琪《在系统可编程技术实践教程》科学

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

指导教师评语及设计成绩

评语

课程设计成绩:

日期:

年月日

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

当前位置:首页 > 表格模板 > 合同协议

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

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