ISE实现多功能数字钟设计Word文档下载推荐.docx

上传人:b****6 文档编号:21294414 上传时间:2023-01-29 格式:DOCX 页数:19 大小:186.16KB
下载 相关 举报
ISE实现多功能数字钟设计Word文档下载推荐.docx_第1页
第1页 / 共19页
ISE实现多功能数字钟设计Word文档下载推荐.docx_第2页
第2页 / 共19页
ISE实现多功能数字钟设计Word文档下载推荐.docx_第3页
第3页 / 共19页
ISE实现多功能数字钟设计Word文档下载推荐.docx_第4页
第4页 / 共19页
ISE实现多功能数字钟设计Word文档下载推荐.docx_第5页
第5页 / 共19页
点击查看更多>>
下载资源
资源描述

ISE实现多功能数字钟设计Word文档下载推荐.docx

《ISE实现多功能数字钟设计Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《ISE实现多功能数字钟设计Word文档下载推荐.docx(19页珍藏版)》请在冰豆网上搜索。

ISE实现多功能数字钟设计Word文档下载推荐.docx

0]sum,counter;

supply1Vdd;

wireCP_1Hz;

//===========分频=============

Divider50MHzU0(.CLK_50M(CLK_50),

.nCLR(nCR),

.CLK_1HzOut(CP_1Hz));

//用以时钟计数的CP

defparamU0.N=25,

U0.CLK_Freq=50000000,

U0.OUT_Freq=1;

Divider50MHzU1(.CLK_50M(CLK_50),

.CLK_1HzOut(CP_200Hz));

//用以动态扫描的CP,供给数码管

defparamU1.N=18,

U1.CLK_Freq=50000000,

U1.OUT_Freq=200;

//===========60进制秒计数器=========

Scounter10S0(TSecond[3:

0],nCR,EN,CP_1Hz);

//秒:

个位

Scounter6S1(TSecond[7:

4],nCR,(TSecond[3:

0]==4'

h9),CP_1Hz);

十位

//===========60进制分计数器=========

Mcounter10M0(TMinute[3:

0],nCR,ENM_L,EN,CP_1Hz);

//分:

Mcounter6M1(TMinute[7:

4],nCR,ENM_H,EN,CP_1Hz);

assignENM_L=Adj_Min?

Vdd:

(TSecond==8'

h59);

//分钟按书上CP调时

assignENM_H=(Adj_Min&

&

(TMinute[3:

h9))||(TMinute[3:

h9)&

//24小时制

counter24H0(Hour_24[7:

4],Hour_24[3:

0],nCR,ENH,EN,CP_1Hz);

assignENH=Adj_Hour?

((TMinute==8'

h59)&

h59));

//===========12小时与24小时进制切换控制==========

assignDisplay_HourAdjust=((Hour_24==8'

h20)||(Hour_24==8'

h21))?

(Hour_24-24):

(Hour_24-18);

assignHour_12=(Hour_24<

8'

h13)?

Hour_24:

Display_HourAdjust;

assignDisplay_HourT=Hchange?

Hour_12:

Hour_24;

//===========闹钟============

//----------时钟秒---------

//counter60CCS(nCR,CP_1Hz,EN,CSecond[7:

4],CSecond[3:

0]);

//----------时钟分---------

counter60CCM(nCR,CP_1Hz,CMin_EN,CMinute[7:

4],CMinute[3:

//--产生分使能信号--

assignCMin_EN=(!

EN&

Adj_Clock&

Adj_Min);

//----------时钟时---------

Counter24CCCH(nCR,CP_1Hz,CHour_EN,CHour[7:

4],CHour[3:

//--产生时使能信号--

assignCHour_EN=(!

Adj_Hour);

//--闹钟响--

always@(ENorClock_EN)//闹钟开关

begin

if(EN&

Clock_EN&

(CHour==Display_HourT)&

(CMinute==TMinute))Alarm<

=1;

elseAlarm<

=0;

end

always@(posedgeCLK_50ornegedgeENornegedgeAlarm)//表示闹钟的LED

if(~EN)Led_Alarm<

else

begin

if(~Alarm)Led_Alarm<

elseLed_Alarm<

=~Led_Alarm;

end

//alarm_clockAL0(Hour24,Minute,CP_1Hz,Set_Alarm,Close_clock,nCR,KeySet_Hour_ev,KeySet_Minute_ev,LD_7,Alarm_Hour,Alarm_Minute);

//===========数码显示=========

always@(Adj_Clock)//确定数码管显示闹钟还是正常时钟

if(Adj_Clock)beginDisplay_Hour<

=CHour;

Minute<

=CMinute;

end

elsebeginDisplay_Hour<

=Display_HourT;

=TMinute;

end

always@(posedgeCP_200Hz)

begin

if(Change==1)//数码管进行时分显示

begin

case(HEX)

4'

b1110:

beginHEX<

=4'

b0111;

bcd<

=Display_Hour[7:

4];

end//第一根数码管显示小时十位

b0111:

b1011;

=Display_Hour[3:

0];

end//第二根显示小时个位

b1011:

b1101;

=Minute[7:

end//第三根显示分钟十位

b1101:

b1110;

=Minute[3:

end//第四根显示分钟个位

default:

=0111;

=Display_Hour[7:

endcase

end

else//数码管进行秒显示,change为低电平时显示秒

=TSecond[7:

end//第三根显示秒十位

=TSecond[3:

end//第四根显示秒个位

=1101;

end

SEG7_LUTL0(HEX0,bcd);

//调用数码管子函数

//======整点报时==========

assignLD_6=LD_6_RADIO;

always@(CP_1Hz)

if((Minute[7:

0]==8'

h00)&

(counter[7:

0]<

(Hour_24[7:

4]*10+Hour_24[3:

0])))

LD_6_RADIO<

=CP_1Hz;

else

always@(posedgeCP_1Hz)

if(Minute[7:

0]==8'

h00)

counter[7:

0]<

=counter[7:

0]+1'

b1;

else

=8'

h00;

end

endmodule

五、顶层模块设计图

六、子模块设计

1、50MHz分频器

moduleDivider50MHz(CLK_50M,nCLR,CLK_1HzOut);

parameterN=25;

//位宽

parameterCLK_Freq=50000000;

//50MHz时钟输入

parameterOUT_Freq=1;

//1Hz时钟输出

inputnCLR,CLK_50M;

//输入端口说明

outputregCLK_1HzOut;

//输出端口说明

reg[N-1:

0]Count_DIV;

//内部节点,存放计数器的输出值

always@(posedgeCLK_50MornegedgenCLR)

if(!

nCLR)beginCLK_1HzOut<

Count_DIV<

elsebegin

if(Count_DIV<

(CLK_Freq/(2*OUT_Freq)-1))//计数器模

Count_DIV<

=Count_DIV+1'

//分频器计数加1

elsebegin

//分频器输出清零

CLK_1HzOut<

=~CLK_1HzOut;

//输出信号取反

2、秒模10计数器

moduleScounter10(Q,nCR,EN,CP);

inputCP,nCR,EN;

outputQ;

reg[3:

0]Q;

always@(posedgeCPornegedgenCR)

begin

if(~nCR)Q<

=4'

//异步清零

elseif(~EN)Q<

=Q;

//暂停计数

elseif(Q==4'

b1001)Q<

elseQ<

=Q+1'

3、秒模6计数器

moduleScounter6(Q,nCR,EN,CP);

b0101)Q<

4、分模10计数器

moduleMcounter10(Q,nCR,EN1,EN2,CP);

inputCP,nCR,EN1,EN2;

elseif(~EN1||!

EN2)Q<

5、分模6计数器

moduleMcounter6(Q,nCR,EN1,EN2,CP);

elseif(~EN1||~EN2)Q<

6、模24计数器

modulecounter24(CntH,CntL,nCR,EN1,EN2,CP);

outputreg[3:

0]CntH,CntL;

//小时的十位和个位输出

always@(posedgeCPornegedgenCR)

if(~nCR){CntH,CntL}<

=8'

//异步清零

elseif(~EN1||~EN2){CntH,CntL}<

={CntH,CntL};

//暂停计数

elseif((CntH)>

2||(CntL>

9)||(CntH)==2&

(CntL)>

=3)

{CntH,CntL}<

//对小时计数器出错时的处理

elseif((CntH)==2&

(CntL)<

3)//进行20~23计数

beginCntH<

=CntH;

CntL<

=CntL+1'

elseif(CntL==9)//小时十位的计数

=CntH+1'

else

=CntH;

7、模60计数器

modulecounter60(nCLR,Clk,EN,CntH,CntL);

inputnCLR,Clk,EN;

always@(posedgeClkornegedgenCLR)

if(~nCLR)

{CntH,CntL}<

//异步清零

elseif(~EN)

//暂停信号

elseif(((CntH>

5)||(CntL>

9))||((CntH==5)&

(CntL==9)))

//异常处理

elseif(CntL==9)

=CntH+1'

CntL<

end//十位计数

end//个位计数

8、数码管显示

moduleSEG7_LUT(oSEG,iDIG);

input[3:

0]iDIG;

//二进制输入

outputreg[6:

0]oSEG;

//7段码输出

always@(iDIG)

case(iDIG)

4'

h0:

oSEG=7'

b000_0001;

h1:

b100_1111;

h2:

b001_0010;

h3:

b000_0110;

h4:

b100_1100;

h5:

b010_0100;

h6:

b010_0000;

h7:

b000_1111;

h8:

b000_0000;

h9:

b000_0100;

default:

oSEG=7'

b1111111;

endcase

七、各模块仿真

1、模10计数器

测试代码:

//Inputs

regnCR;

regEN;

regCP;

//Outputs

wire[3:

//InstantiatetheUnitUnderTest(UUT)

counter10uut(

.Q(Q),

.nCR(nCR),

.EN(EN),

.CP(CP)

);

parameterPERIOD=40;

//时钟信号周期设置为40ns

alwaysbegin

CP=1'

b0;

#(PERIOD/2)CP=1'

#(PERIOD/2);

initialbegin

//InitializeInputs

nCR=0;

EN=1;

CP=1;

//Wait100nsforglobalresettofinish

#100;

nCR=1;

//Addstimulushere

2、模6计数器

//Inputs

counter6uut(

.CP(CP)

nCR=1;

3、模24计数器

0]CntH;

0]CntL;

counter24uut(

.CntH(CntH),

.CntL(CntL),

4、模60计数器

regnCLR;

regClk;

counter60uut(

.nCLR(nCLR),

.Clk(Clk),

.CntL(CntL)

Clk=1'

#(PERIOD/2)Clk=1'

nCLR=0;

Clk=1;

nCLR=1;

//Addstimul

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

当前位置:首页 > 幼儿教育 > 唐诗宋词

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

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