CPLD大作业电子时钟进制两种实现方法.docx

上传人:b****2 文档编号:24450278 上传时间:2023-05-27 格式:DOCX 页数:13 大小:168.21KB
下载 相关 举报
CPLD大作业电子时钟进制两种实现方法.docx_第1页
第1页 / 共13页
CPLD大作业电子时钟进制两种实现方法.docx_第2页
第2页 / 共13页
CPLD大作业电子时钟进制两种实现方法.docx_第3页
第3页 / 共13页
CPLD大作业电子时钟进制两种实现方法.docx_第4页
第4页 / 共13页
CPLD大作业电子时钟进制两种实现方法.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

CPLD大作业电子时钟进制两种实现方法.docx

《CPLD大作业电子时钟进制两种实现方法.docx》由会员分享,可在线阅读,更多相关《CPLD大作业电子时钟进制两种实现方法.docx(13页珍藏版)》请在冰豆网上搜索。

CPLD大作业电子时钟进制两种实现方法.docx

CPLD大作业电子时钟进制两种实现方法

 

CPLD大作业报告

——电子时钟设计

 

姓名:

班级:

控制专研-15

学号:

实验日期:

2015年12月15日

 

一、实验内容:

1.使用CPLD设计电子钟电路框图,并对主要功能进行解释;

2.设计小时、分、秒处理功能模块的VHDL程序;

二、实验要求:

1.编写小时、分、秒处理功能模块编程。

2.对仿真图形进行分析,对关键处的时序进行解释。

3.每个人的小时、分、秒数都不同。

根据任务布置,本设计的小时、分、秒数分别为24、43、43。

三、模块设计

1.一个模块实现的数字钟设计方案

(1)时钟VHDL源程序

LIBRARYieee;

USEieee.std_logic_1164.all;

ENTITYclk43IS

PORT(

CLRN,LDN,EN,CLK:

INSTD_LOGIC;

Sa,Ma,Ha:

ININTEGERRANGE0TO9;

Sb,Mb:

ININTEGERRANGE0TO4;

Hb:

ININTEGERRANGE0TO2;

QSa,QMa,QHa:

OUTINTEGERRANGE0TO9;

QSb,QMb:

OUTINTEGERRANGE0TO4;

QHb:

OUTINTEGERRANGE0TO2

);

ENDclk43;

ARCHITECTUREaOFclk43IS

BEGIN

PROCESS(CLK)

VARIABLEtmpsa,tmpma,tmpha:

INTEGERRANGE0TO9;

VARIABLEtmpsb,tmpmb:

INTEGERRANGE0TO4;

VARIABLEtmphb:

INTEGERRANGE0TO2;

BEGIN

IFCLRN='0'THEN

tmpsb:

=0;tmpsa:

=0;

tmpmb:

=0;tmpma:

=0;

tmphb:

=0;tmpha:

=0;

ELSE

IF(CLK'eventANDCLK='1')THEN

IFLDN='0'THEN

tmpsa:

=Sa;tmpsb:

=Sb;tmpma:

=Ma;tmpmb:

=Mb;

tmpha:

=Ha;tmphb:

=Hb;

ELSIFEN='1'THEN

IF(tmpsb=4ANDtmpsa=2ANDtmpmb=4ANDtmpma=2)THEN

IF(tmphb=2ANDtmpha=3)THEN

tmpha:

=0;tmphb:

=0;

ELSIFtmpha=9THEN

tmpha:

=0;tmphb:

=tmphb+1;

ELSEtmpha:

=tmpha+1;

ENDIF;

ENDIF;

IF(tmpsb=4ANDtmpsa=2)THEN

IF(tmpmb=4ANDtmpma=2)THEN

tmpmb:

=0;tmpma:

=0;

ELSIFtmpma=9THEN

tmpma:

=0;tmpmb:

=tmpmb+1;

ELSEtmpma:

=tmpma+1;

ENDIF;

ENDIF;

IF(tmpsb=4ANDtmpsa=2)THEN

tmpsa:

=0;tmpsb:

=0;

ELSIFtmpsa=9THEN

tmpsa:

=0;tmpsb:

=tmpsb+1;

ELSEtmpsa:

=tmpsa+1;

ENDIF;

ENDIF;

ENDIF;

ENDIF;

QSa<=tmpsa;QSb<=tmpsb;

QMa<=tmpma;QMb<=tmpmb;

Qha<=tmpha;Qhb<=tmphb;

ENDPROCESS;

ENDa;

以上程序实现了,用统一化整体模块完成了对时钟的时、分、秒的相应的进制设计。

其中,在时钟模块的功能端“CLRN”、“LDN”、“EN”同时为1时,在“CLK”有一个时钟信号的上升沿时,输出“QSa”自行加1,每到加至43时,自行向分的个位进1,同时秒的十位和个位置为0,分钟和小时的计数功能与之类似。

当“LDN”为0,“CLRN”为1,“EN”为1时,时钟模块实现加载功能。

(2)原理连接图

图1时钟原理接线图

(3)波形仿真

输出端口自下而上分别是:

QSb(秒的十位)、QSa(秒的个位)、QMb(分的十位)、QMa(分的个位)、QHb(时的十位)、QMa(时的个位)。

时钟电路秒的进制仿真图(9s到10s)

时钟电路秒的进制仿真图(43s到1min)

时钟电路秒的进制仿真图(42min:

42s到1h)

时钟电路秒的进制仿真图(23:

42:

42到00:

00:

00)

2.三个模块实现的数字钟设计方案

(1)时钟VHDL源程序

程序1(24进制(时)计数器)

LIBRARYieee;

USEieee.std_logic_1164.all;

USEieee.std_logic_unsigned.all;

ENTITYcout24_vIS

PORT(

CLRN,LDN,EN,CLK:

INSTD_LOGIC;

Da:

INSTD_LOGIC_VECTOR(3downto0);

Db:

INSTD_LOGIC_VECTOR(2downto0);

Qa:

OUTSTD_LOGIC_VECTOR(3downto0);

Qb:

OUTSTD_LOGIC_VECTOR(2downto0)

);

ENDcout24_v;

ARCHITECTUREaOFcout24_vIS

BEGIN

PROCESS(Clk)

VARIABLEtmpa:

STD_LOGIC_VECTOR(3downto0);

VARIABLEtmpb:

STD_LOGIC_VECTOR(2downto0);

BEGIN

IFCLRN='0'THENtmpb:

="000";tmpa:

="0000";

ELSE

IF(CLK'eventANDCLK='1')THEN

IFLDN='0'THEN

tmpa:

=Da;tmpb:

=Db;

ELSIFEN='1'THEN

IFtmpa="1001"THEN

tmpa:

="0000";tmpb:

=tmpb+1;

ELSIF(tmpb="010"ANDtmpa="0011")THEN

tmpb:

="000";tmpa:

="0000";

ELSEtmpa:

=tmpa+1;

ENDIF;

ENDIF;

ENDIF;

ENDIF;

Qa<=tmpa;Qb<=tmpb;

ENDPROCESS;

ENDa;

程序2(43进制(分)计数器)

LIBRARYieee;

USEieee.std_logic_1164.all;

USEieee.std_logic_unsigned.all;

ENTITYcout43_minIS

PORT(

CLRN,LDN,EN,CLK:

INSTD_LOGIC;

Da:

INSTD_LOGIC_VECTOR(3downto0);

Db:

INSTD_LOGIC_VECTOR(2downto0);

BQa:

OUTSTD_LOGIC_VECTOR(3downto0);

BQb:

OUTSTD_LOGIC_VECTOR(2downto0);

BRCO:

OUTSTD_LOGIC

);

ENDcout43_min;

ARCHITECTUREclck_43OFcout43_minIS

BEGIN

PROCESS(Clk)

VARIABLEtmpa:

STD_LOGIC_VECTOR(3downto0);

VARIABLEtmpb:

STD_LOGIC_VECTOR(2downto0);

BEGIN

IFCLRN='0'THENtmpb:

="000";tmpa:

="0000";

ELSEIF(Clk'eventANDClk='1')THEN

IFLDN='0'THENtmpa:

=Da;tmpb:

=Db;

ELSIFEN='1'THEN

IFtmpa="1001"THEN

tmpa:

="0000";tmpb:

=tmpb+1;

ELSIF(tmpb="100"ANDtmpa="0010")THEN

tmpb:

="000";tmpa:

="0000";

ELSEtmpa:

=tmpa+1;

ENDIF;

ENDIF;

ENDIF;

ENDIF;

BQa<=tmpa;BQb<=tmpb;

IF(tmpb="000"ANDtmpa="0000"ANDEN='1'ANDLDN='1'ANDCLRN='1')THEN

BRCO<='1';

ELSE

BRCO<='0';

ENDIF;

ENDPROCESS;

ENDclck_43;

程序3(43进制(秒)计数器)

LIBRARYieee;

USEieee.std_logic_1164.all;

USEieee.std_logic_unsigned.all;

ENTITYcout43_secIS

PORT(

CLRN,LDN,EN,CLK:

INSTD_LOGIC;

Da:

INSTD_LOGIC_VECTOR(3downto0);

Db:

INSTD_LOGIC_VECTOR(2downto0);

AQa:

OUTSTD_LOGIC_VECTOR(3downto0);

AQb:

OUTSTD_LOGIC_VECTOR(2downto0);

ARCO:

OUTSTD_LOGIC

);

ENDcout43_sec;

ARCHITECTUREclck_43OFcout43_secIS

BEGIN

PROCESS(Clk)

VARIABLEtmpa:

STD_LOGIC_VECTOR(3downto0);

VARIABLEtmpb:

STD_LOGIC_VECTOR(2downto0);

BEGIN

IFCLRN='0'THENtmpb:

="000";tmpa:

="0000";

ELSEIF(Clk'eventANDClk='1')THEN

IFLDN='0'THENtmpa:

=Da;tmpb:

=Db;

ELSIFEN='1'THEN

IFtmpa="1001"THEN

tmpa:

="0000";tmpb:

=tmpb+1;

ELSIF(tmpb="100"ANDtmpa="0010")THEN

tmpb:

="000";tmpa:

="0000";

ELSEtmpa:

=tmpa+1;

ENDIF;

ENDIF;

ENDIF;

ENDIF;

AQa<=tmpa;AQb<=tmpb;

IF(tmpb="000"ANDtmpa="0000"ANDEN='1'ANDLDN='1'ANDCLRN='1')THEN

ARCO<='1';

ELSE

ARCO<='0';

ENDIF;

ENDPROCESS;

ENDclck_43;

以上程序实现了,用模块化完成了对时钟的时、分、秒的相应的进制设计。

其中,在时钟模块的功能端“CLRN”、“LDN”、“EN”同时为1时,在“CLK”有一个时钟信号的上升沿时,输出“QSa”自行加1,每到加至43时,自行向分的个位进1,同时秒的十位和个位置为0,分钟和小时的计数功能与之类似。

当“LDN”为0,“CLRN”为1,“EN”为1时,时钟模块实现加载功能。

(2)原理连接图

(3)波形仿真

时钟电路时的进制仿真图(43s到1min)

时钟电路时的进制仿真图(42min:

42s到1h)

时钟电路时的进制仿真图(23h:

42min:

42s到00:

00:

00)

从波形图可见当秒针计数器满43秒,有进位;当分针计数器满43分钟,有进位;当小时计数器满24小时,计数器清零,可见,达到了设计要求。

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

当前位置:首页 > PPT模板 > 艺术创意

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

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