《EDA技术及可编程器件应用实训》课程设计报告-基于CPLD技术的数字万年历设计模板Word文档格式.docx

上传人:b****9 文档编号:12971229 上传时间:2022-10-01 格式:DOCX 页数:16 大小:257.72KB
下载 相关 举报
《EDA技术及可编程器件应用实训》课程设计报告-基于CPLD技术的数字万年历设计模板Word文档格式.docx_第1页
第1页 / 共16页
《EDA技术及可编程器件应用实训》课程设计报告-基于CPLD技术的数字万年历设计模板Word文档格式.docx_第2页
第2页 / 共16页
《EDA技术及可编程器件应用实训》课程设计报告-基于CPLD技术的数字万年历设计模板Word文档格式.docx_第3页
第3页 / 共16页
《EDA技术及可编程器件应用实训》课程设计报告-基于CPLD技术的数字万年历设计模板Word文档格式.docx_第4页
第4页 / 共16页
《EDA技术及可编程器件应用实训》课程设计报告-基于CPLD技术的数字万年历设计模板Word文档格式.docx_第5页
第5页 / 共16页
点击查看更多>>
下载资源
资源描述

《EDA技术及可编程器件应用实训》课程设计报告-基于CPLD技术的数字万年历设计模板Word文档格式.docx

《《EDA技术及可编程器件应用实训》课程设计报告-基于CPLD技术的数字万年历设计模板Word文档格式.docx》由会员分享,可在线阅读,更多相关《《EDA技术及可编程器件应用实训》课程设计报告-基于CPLD技术的数字万年历设计模板Word文档格式.docx(16页珍藏版)》请在冰豆网上搜索。

《EDA技术及可编程器件应用实训》课程设计报告-基于CPLD技术的数字万年历设计模板Word文档格式.docx

并能熟练使用QuartusII开发小中型数字系统,解决调试过程中所遇到的一些问题。

三、设计方法

常见数字百年历具有计时和显示、报时功能。

电路设计中包括分频模块,用于将外部晶振产生的一定周期的时钟信号计数产生1s时钟信号;

60进制的秒、分计数模块;

24进制的时计数模块;

12进制的月计数模块;

通过语言选择的闰年平年天数选择模块;

5选一的调时控制模块;

2选一模式转换模块;

另有显示模块和整点报时信号端口。

1、同步计时六十进制加法器的程序如下。

其中,cout为输出端口信号,

clk为分频模块产生的秒计时信号(时钟信号),q1和q2为秒计数中十进制数所对应的高位和低位信号。

libraryieee;

useieee.std_logic_1164.all;

useieee.std_logic_unsigned.all;

entitycnt60isport(clk:

instd_logic;

cout:

outstd_logic;

q1,q2:

outstd_logic_vector(3downto0));

architecturebehavofcnt60isbegin

variablecq1,cq2:

std_logic_vector(3downto0);

begin

ifclk'

eventandclk='

1'

thencq1:

=cq1+1;

ifcq1>

9thencq1:

="

0000"

;

cq2:

=cq2+1;

endif;

ifcq2=6andcq1=0thencq1:

cq2:

cout<

='

elsecout<

0'

endif;

q1<

=cq1;

q2<

=cq2;

endprocess;

end;

所写程序经过仿真的如上图所示。

同理分和秒一样都是六十进制只不过是把程序中q1,q2分别改为分的十位,个位而已,有程序生成六十进制模块图。

如下

该程序在编写过程中应注意IF语句的结束标志ENDIF所对应的是那一部分.

2、同步计时二十四进制加法器的程序如下。

clk为分频模块产生的时计时信号(时钟信号),q1和q2为时计数中十进制数所对应的高位和低位信号。

entitycnt24is

port(clk:

q1:

outstd_logic_vector(3downto0);

q2:

cout:

outstd_logic);

endcnt24

architecturebehavofcnt24isbegin

process(clk)

variablecq1:

std_logic_vector(3downto0);

variablecq2:

ifcq1=4andcq2=2thencq1:

=(others=>

'

);

);

elsecout<

q1<

q2<

end;

程序中实体结束处endcnt24后缺少分号.

程序中IF语句是多层存在,因此应当两次结束,绿色所标注的部分上边缺少end

if;

改正后的程序仿真得到二十四进制模块图如下:

3、天的模块的程序如下。

clk为分频模块产生的天计时信号(时钟信号),cq2和cq1为天计数中十进制数所对应的高位和低位信号,cout为进位位,pan为判断位,判断计到多少天才进位。

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

USEIEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITYtianIS

PORT(pan:

INSTD_LOGIC_VECTOR(1DOWNTO0);

clk:

INSTD_LOGIC;

cq1:

OUTSTD_LOGIC_VECTOR(3DOWNTO0);

cq2:

cout:

OUTSTD_LOGIC);

END;

ARCHITECTUREbehavOFtianIS

signalcq3,cq4:

STD_LOGIC_VECTOR(3DOWNTO0);

PROCESS(clk)

BEGIN

IFclk'

EVENTandclk='

THENcq3<

=cq3+1;

IFcq3=9THEN cq4<

=cq4+1;

cq3<

ENDIF;

CASEpanIS

WHEN "

00"

=>

IF cq3="

0001"

and cq4="

0011"

THEN

cq4<

ELSEcout<

ENDIF;

01"

THENcq3<

ELSEcout<

10"

1000"

0010"

11"

1001"

WHENothers=>

NULL;

ENDCASE;

cq1<

=cq3;

cq2<

=cq4;

ENDPROCESS;

经过仿真从警告处发现错误所在,程序中进程前缺少BEGIN。

修改后仿真可得天的模块图。

4、月的模块的程序。

clk为分频模块产生的月计时信号(时钟信号),cq2和cq1为月计数中十进制数所对应的高位和低位信号,cout为进位位,run为闰年进位位,pan为输入判断位。

ENTITYyueIS

port(clk:

run:

cout:

OUTSTD_LOGIC;

pan:

OUTSTD_LOGIC_VECTOR(1DOWNTO0);

cq1,cq2:

OUTSTD_LOGIC_VECTOR(3DOWNTO0));

END;

ARCHITECTUREbehavOFyueIS

signalcq5:

STD_LOGIC_VECTOR(7DOWNTO0);

BEGIN

PROCESS(clk)BEGIN

THEN

cq3<

IFcq3=9THENcq4<

IFcq3=2andcq4=1THENcq3<

cq5<

=cq4&

cq3;

CASEcq5IS

WHEN"

00000001"

pan<

——一月WHEN"

00000010"

ifrun='

01'

thenpan<

elsepan<

——二月WHEN"

00000011"

——三月WHEN"

00000100"

——四月WHEN"

00000101"

——五月WHEN"

00000110"

——六月WHEN"

00000111"

——七月WHEN"

00001000"

——八月WHEN"

00001001"

——九月WHEN"

00001010"

——十月WHEN"

00001011"

——十一月WHEN"

00001100"

——十

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

当前位置:首页 > 人文社科 > 教育学心理学

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

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