EDA课程设计

发布 2022-09-30 20:12:28 阅读 1328

eda技术实验报告。

多功能数字电子钟。

verilog hdl语言实现)

班级:应用电子技术111班。

姓名:蒋志文。

学号:110372011321

一、设计要求。

1、基本要求。

⑴小时计数器为8421bcd码24进制 ;分和秒计数器为8421bcd码60进制计数器;

基本功能为:①正常走时; ②能校〝时〞和校〝分〞;③整点报时; ④时段控制。

2、设计方案。

1、层次化设计。

数字钟实际上是一个对标准频率(1hz)进行计数的计数电路。由于计数的起始时间不可能与标准时间(如北京时间)一致,故需要在电路上加一个校时电路,同时标准的1hz时间信号必须做到准确稳定。通常使用石英晶体振荡器电路构成数字钟。

图3-1所示为数字钟的一般构成框图。主要包括时间基准电路、计数器电路、控制电路、译码和显示电路。其中的控制逻辑电路是比较灵活多样的,不断完善它可以增强数字钟的功能。

2、系统示意图。

输入变量:秒时钟cps,校时、校分变量分别为swh、swm ;

输出变量:小时计时h[7..4]、h[3..0]为8421bcd码输出,其时钟为cph;

分钟计时m[7..4]、m[3..0]为8421bcd码输出,其时钟为cpm;

秒计时s[7..4]、s[3..0]为8421bcd码输出,其时钟为cps。

报时bshi和时段控制变量sk等。

三、设计过程。

参数设置:1.小时计时模块。

module counter24h(cph,rd);

output [7:0]h;

input cph,rd;

reg [7:0]h;

always@(negedge rd or posedge cph)

beginif(!rd) h[7:0]<=0如果rd为低电平,小时输出h清零。

elsebegin

if(h[7:4]==2)&&h[3:0]==3到23时,小时输出h清零。

begin

h[7:0]<=0;

endelse

beginif(h[3:0]==9小时个位到9时,

begin h[3:0]<=0小时个位清零。

h[7:4]<=h[7:4]+1并且小时十位进1

endelse h[3:0]<=h[3:0]+1否则小时个位一直加1

endend

endendmodule

**结果,如图。

由**波形可知:①hl作个位计数,hh作十位计数;②当小时的高四位为时,小时的低四位为9时,在下一个时钟的上升沿来之后,高四位加一;③当小时的高四位为2,同时低四位为3时,小时的高低四位都清零。实现了从00到23的循环计数,其结论是符合时计时规律,逻辑电路设计正确。

经**确认无误后,将当前设计打包,打包后生成24进制计数器的符号,如图。

2、分钟计时模块。

module counter60m(m,cp60m,cpm,rd);

output [7:0]m;

output cp60m;

input cpm;

input rd

reg [7:0]m;

wire cp60m;

always@(negedge rd or posedge cpm)

beginif(!rdrd为低电平时,begin m[7:0]<=0;end分输出m清零。

elsebegin

if((m[7:4]==5)&&m[3:0]==9到59时,

begin m[7:0]<=0;end分输出m清零。

elsebegin

if(m[3:0]==9分钟个位到9时,其分钟个位清零。

beginm[3:0]<=0;

if(m[7:4]==5如果分钟十位此时巧好也到5时,begin m[7:4]<=0;end其分钟十位也清零。

else m[7:4]<=m[7:4]+1否则分钟十位加1

endelse m[3:0]<=m[3:0]+1再否则分钟个位一直加1

endend

endassign cp60m=~(m[6]&m[4]&m[3]&m[0分输出m为59时,cp60m输出进位信号。

endmodule

60进制计数器的设计方法类似24进制计数器,不同的地方在于,60进制的设计思想是当计数到59时,置数清零,产生进位输出;而24进制的高低4位的清零和进位需要考虑个位计数到9和整个计满到23。

**波形图如下:

由**波形可知:①ml作个位计数,mh作十位计数;②当分钟的高四位为时,分钟的低四位为9时,在下一个时钟的上升沿来了之后,高四位加一;③当分钟的高四位为5,同时低四位为9时,分钟的高低四位都清零。实现了从00到59的循环计时,其结论是符合分计时规律,逻辑电路设计正确。

模块打包:3、秒计时模块。

module counter60s(s,cp60s,cps,rd);

output [7:0]s;output cp60s;

input cps;input rd

reg [7:0]s;

wire cp60s;

always@(negedge rd or posedge cps)

beginif(!rdrd为低电平时,begin s[7:0]<=0;end秒输出s清零。

elsebegin

if((s[7:4]==5)&&s[3:0]==9到59时,begin s[7:0]<=0;end秒输出s清零。

elsebegin

if(s[3:0]==9秒钟个位到9时,其秒钟个位清零。

begins[3:0]<=0;

if(s[7:4]==5如果秒钟十位此时巧好也到5时,begin s[7:4]<=0;end其秒钟十位也清零。

else s[7:4]<=s[7:4]+1否则秒钟十位加1

endelse s[3:0]<=s[3:0]+1再否则秒钟个位一直加1

endend

endassign cp60s=~(s[6]&s[4]&s[3]&s[0秒输出s为59时,cp60s输出进位信号。

endmodule

**波形如下:

由**波形可知:①sl作个位计数,sh作十位计数;②当秒钟的高四位为时,秒钟的低四位为9时,在下一个时钟的上升沿来了之后,高四位加一;③当秒钟的高四位为5,同时低四位为9时,秒钟的高低四位都清零。实现了从00到59的循环计时,其结论是符合秒计时规律,逻辑电路设计正确。

秒计时模块打包:

4、校时校分模块。

module xiaoshi2(cpm,cph,cps,cp60m,cp60s,swm,swh);

output cpm,cph;

input swm,swh定义校分、校时开关。

input cps,cp60s,cp60m定义正常计时的秒、分、时的脉冲输入。

reg cpm,cph经校分校时后的分、时的脉冲输出。

always@(swm or swh or cps or cp60s or cp60m)

begincase()

2'b01:begin cpm<=cps;cph<=cp60m;end低电平时,校分不校时。

2'b10:begin cpm<=cp60s;cph<=cps;end低电平时,校时不校分。

default:begin cpm<=cp60s;cph<=cp60m;end //正常计时。

endcaseend

EDA课程设计

题目一 数字钟设计 学号1 15 一 实验目的。学习并掌握数字钟的原理 设计方法。二 实验内容。计数始终由模60秒计数器 模60分计数器 模24小时计数器 报时模块 分 时设定模块及输出显示模块构成。可以采用同步计数器或异步计数器设计方法。三 实验要求。计时范围为0小时0分0秒至23小时59分59秒...

eda课程设计

哈尔滨工业大学 威海 信电学院电子信息工程。一 软硬件介绍。1软件部分介绍。1.1 quartus ii 是altera公司的综合性pld fpga开发软件,支持原理图 vhdl veriloghdl以及ahdl altera hardware description language 等多种设计输...

eda课程设计

目录。1 引言 2 1.1 课程设计的目的与任务 2 1.2 课程设计的内容 2 1.3课程设计仪器设备 2 1.4 课程设计的题目 2 1.5 方案的选择 2 2设计方案 3 2.1 设计原理 3 2.2各功能模块的原理及其源程序 3 2.2.1控制模块 3 2.2.2分频模块 4 2.2.3计时...