当前位置:文档之家› EDA课程设计 多功能数字钟设计程序清单 数字系统设计与verilog HDL(第四版) 王金明

EDA课程设计 多功能数字钟设计程序清单 数字系统设计与verilog HDL(第四版) 王金明

EDA课程设计 多功能数字钟设计程序清单 数字系统设计与verilog HDL(第四版) 王金明
EDA课程设计 多功能数字钟设计程序清单 数字系统设计与verilog HDL(第四版) 王金明

EDA课程设计

多功能数字钟设计程序清单

数字系统设计与verilog HDL(第四版)

王金明

/*引脚锁定基于DE2一70,芯片为EP2C70F896,信号定义如下: Clk50m: 50MHz 时钟输,

mode: 模式选择0:计时模式1:设置闹钟模式

mcheck: 手动调整时间

turn: 手动调整时间,在时、分之间选择

change: 对选中的数据调整

led hourl,led_hour0,led_minul,led_minu0,led_secl,led sec0;

alert: 闹钟输出

ld_alert: 是否设置了闹钟

ld_hour,id_min,ld_sec:在调整时,指示选中了时,分还是秒*/ moduleclock(clk50m,mode,turn,change,mreset,led_hour1,led_hour0,led_minu1,led _minu0,led_sec1,led_sec0, alert,ld_alert,ld_check,ld_hour,ld_min,ld_sec);

input clk50m;

input mode; // key0键

input turn; //keyl键

input change; // key2 键

input mreset; //switch0复位,低电平有效

output alert; //gpioO->IOAO

output ld_alert; //ledgO-led19

output ld_check; //ledgl-led22

output ld_hour; //ledr3-led13

output ld_min; //ledr9-led9

output ld_sec; //ledr7-led7

output[6:0] led_hour1;

output[6:0] led_hour0;

output[6:0] led_minu1;

output[6:0] led_minu0;

output[6:0] led_sec1;

output[6:0] led_sec0;

reg [1:0] modestate;

//00: 计时模式10:闹钟模式; 01:手动调整模式;11:非法模式

wire nowmode; //记录当前模式,0:计时模式;1: 设置闹钟模式

wire ischecking; //是否在手动调整时间

assign {nowmode, ischecking}=modestate;

always@(negedge mode)//两个按钮都是低电平有效

begin

case (modestate)

2'b00 : modestate<=2'b10; //设置闹钟模式优先

2'b10: modestate<=2'b01; //手动调整模式

2'b01: modestate<=2'b00;

default :modestate<=2'b00;

endcase

end

wire reset, clk_1hz;

switch #(8) rmjitter(clk50m,mresetr,reset);

clk50mtol genlhz (clk50m, clk_1hz) ; //生成1Hz的时钟

wire [2 : 0] selcode; //对turn信号在不同模式

bitsel seldecoder (nowmode, ischecking, turn, selcode, reset);

wire [3:0] clocktime0,clocktimel,clocktime2,clocktime3,clocktime4,clockthre5;

//计时输出的时钟数值

wire clockalarmon; //整点报时的闹钟输出

wire [2 : 0] counterselcode;

assign counterselcode=(modestate==2'b01)?selcode:3'b000;

counter_time clock_time (clk_1hz,counterselcode,~change,clocktime5,clocktime4,clocktime3,clocktime2,clock time1,clocktime0,clockalarmon,reset);

wire[3:0] alarmtime0,alarmtime1,alarmtime2,alarmtime3;

wire alarmon;

alarm_time alarm_time ( clk_1hz , nowmode , selcode [ 2 : 1] , change ,

{clocktime5, clocktime4, clocktime3, clocktime2, clocktime1},

{alarmtime3, alarmtime2, alarmtime1, alarmtime0} , alarmon, reset) ;

wire voiceout ;

alarm alarmvoice (clk50m,{clockalarmon, alarmon} ,voiceout, raset) ;

//显示输出部分

assign {ld_hour,ld_min,ld_sec}=(ischecking||nowmode)?selcode:3'b000;

assign alert=voiceout;

reg[3:0] showout2,showout3,showout4,showout5;

led led5 (showout5,led_hour1) ; //led译码显示

led led4 (showout4,led_hour0) ;

led led3 (showout3,led_minu1) ;

led led2 (showout2,led_minu0) ;

led led1 (clocktime1,led_sec1) ;

led led0 (clocktime0,led_sec0) ;

always

begin if ( nowmode)

begin showout5=alarmtime3 ; showout4=alarmtime2 ;

showout3=alarmtime1; showout2=alarmtime0 ; end else begin

showout5=clocktime5; showout4=clocktime4 ;

showout3=clocktime3 ; showout2=clocktime2 ; end end

assign ld_alert=nowmode; assign ld_check=ischecking;

endmodule

/*alarm.V:闹铃模块

Clk50m: 50MHz输入时钟

alarmon:闹铃是否打开,2'b00:不打开:2'b01:闹钟;2'b10:整点报时

ala rmoUt:闹铃声音输出*/

module alarm(clk50m,alarmon,alarmout,reset);

input[1:0] alarmon;

input clk50m,reset;

output reg alarmout;

reg[15:0] counter_1k;

wire clk_1k;

assign clk_1k=counter_1k[4];

always@(posedge clk50m)

begin if (counter_1k==20) counter_1k<=0;

else counter_1k<=counter_1k+1'b1; end

wire ddd_du_out,ddd_out;

sound_ddd_du ddd_du (clk_1k,alarmon[1] ,ddd_du_out) ;

sound_ddd ddd(clk_1k,alarmon[0],ddd_out);

always

begin if (!reset)

begin if (alarmon [0]==1'b1) //ddd,闹钟的响铃优先级更高

alarmout=ddd_out ;

else if (alarmon==2'b10) alarmout=ddd_du_out;

else alarmout=0 ;

end else alarmout=0 ;

end

/*alarm_time.V:闹钟时间设定模块

enable:使能信号

Sel:在时、分之间切换选择10:时;01:分

inc:对选中的信号自增

basetime:基准时钟*/

module alarm_time (clk_1hz , enable, sel, inc, basetime, alarmouttime, alarm_on, reset) ;

input clk_1hz,enable, inc,reset;

input[1:0] sel;

input[4*5-1:0] basetime;

output reg alarm_on;

output [4*4-1: 0] alarmouttime;

reg [ 3 : 0] hour1, hour0 , minu1, minu0 ; //存储的设定时间

always@ (posedge inc or posedge reset)

begin if (reset) //reset=1时复位

begin { hour1, hour0,minu1, minu0 } <=16'h0 ; end

else begin

if (enable) begin

if (sel==2'b10) //设置时

begin if({hour1,hour0}==8'h23) {hour1,hour0}<=8'h00;

else if (hour0==9)

begin hour0<=0;hour1<=hour1+1'b1; end

else hour0<=hour0+1'b1;

end

else if(sel===2'b01) //设置分

begin if({minu1,minu0}==8'h59) {minu1,minu0}<=8'h00;

else if (minu0==4'h9)

begin minu0<=4'h0;minu1<=minu1+4'h1;end

else minu0<=minu0+4'h1; end

else {hour1,hour0,minu1,minu0}<=16'h0;

end end

end

always //闹钟开始条件

begin

if(({hour1,hour0,minu1,minu0}==basetime[ (4*5-1) :4]) && (basetime[3:0]<2)) alarm_on=1'b1;

else alarm_on=1'b0; end

assign alarmouttime={ hour1,hour0,minu1,minu0};

endmodule

/*counter time,v:计时模块,并留有调整接;

check:调整信号,3位,分别调整时、分、秒,调整方法:将计数输出给加法器,

转换成异步置数信息,将加法器的输出作为置数值;

hour1,hour0,minul, minu0, sec1,sec0:输出的计时时钟;

alarmout:整点报时输出*/

module

counter_time(clk_1hz,check,inc,hour1,hour0,minu1,minu0,sec1,sec0,alarmout,reset) ;

input clk_1hz,inc,reset;

input[2:0] check;

output[3:0] hour1,hour0,minu1,minu0,sec1,sec0;

output reg alarmout;

reg clk_1hz_md;

wire [6: 0] carryclk;

reg[5:0] incplus;//自增脉冲

wire [5 : 0] carry; //进位时钟

wire [3 : 0] adderout0,adderout1,adderout2,adderout3,adderout4,adderout5;

wire [3 : 0] timerout0,timerout1,timerout2,timerout3,timerout4,timerout5; hexcounter counter_sec0(carryclk[0],reset,4'd9,4'b0,timerout0,carry[0]); hexcounter counter_sec1(carryclk[1],reset,4'd5,4'b0,timerout1,carry[1]); hexcounter counter_minu0(carryclk[2],reset,4'd9,4'b0,timerout2,carry[2]); hexcounter counter_minu1(carryclk[3],reset,4'd5,4'b0,timerout3,carry[3]);

wire [3:0] hour0max;

assign hour0max=(timerout5==4'h2)?(4'h3) : (4'h9);

hexcounter counter_hour0(carryclk[4],reset,hour0max,4'b0,timerout4,carry[4]); hexcounter counter_hour1(carryclk[5],reset,4'd2,4'b0,timerout5,carry[5]);

//每个计时器的时钟,由前级进位和自堦脉冲相加得到

assign carryclk[0]=(check==4'h0) ? clk_1hz_md:incplus[0];

assign carryclk[1]=carry[0]|incplus[1];

assign carryclk[2]=(check==4'h0) ? carry[1]:incplus[2];

assign carryclk[3]=carry[2]|incplus[3];

assign carryclk[4]=(check==4'h0) ? carry[3]:incplus[4];

assign carryclk[5]=carry[4]|incplus[5];

always //对异步置位信号进行解码

begin case (check)

3 'b001: begin clk_1hz_md=0;

incplus={5 'b00000, inc} ;end

3 'b010 : begin clk_1hz_md=0;

incplus={3'b000,inc,2'b00};end

3 'b100 : begin //在正常的调节状态中

clk_1hz_md=0;

incplus={1'b0, inc, 4'b000};end

default:begin incplus=6'b000000;

clk_1hz_md=clk_1hz ;

end

endcase

end

always begin if (((reset|check)==0)&&(timerout3==0) && (timerout2==0) && (timerout1<2)) alarmout=1;

//时间小于20秒的时间内

else alarmout=0;end

assign hour1=timerout5;

assign hour0=timerout4;

assign minu1=timerout3;

assign minu0=timerout2;

assign sec1=timerout1;

assign sec0=timerout0;

endmodule

/*Clk50mtol.v: 50mhz 时钟分频到lhz */

module clk50mtol(clk50m,clk1hz);

input clk50m;

output clk1hz;

reg [25:0]counter_1hz;//从50mhz 分频到lhz 的计数器

assign clk1hz=counter_1hz[14];//assign clk1hz=counter_1hz[25];

always@ (posedge clk50m)

begin

if(counter_1hz==20000) counter_1hz<=0;

else counter_1hz<=counter_1hz+1'b1;

end

endmodule

/*led.v:7段数码管(led)译码显示模块

datain: 4位,10进制数输入

ledout:7位,数码管的7段*/

module led(datain,ledout);

parameter INWIDTH=4;

parameter OUTWIDTH=7;

input [INWIDTH-1: 0] datain;

output [OUTWIDTH-1:0] ledout;

reg [OUTWIDTH-1:0] dataout;

assign ledout=dataout;

always begin

case (datain)

0 : dataout<=7'b1000000;

1 : dataout<=7'b1111001;

2 : dataout<=7'b0100100;

3 : dataout<=7'b0110000;

4 : dataout<=7'b0011001;

5 : dataout<=7'b0010010;

6 : dataout<=7'b0000010;

7 : dataout<=7'b1111000;

8 : dataout<=7'b0000000;

9 : dataout<=7'b0010000;

default : dataout<=7'b1000000;

endcase

end

endmodule

/*switch-v:对按键开关的消抖电路,采用一个频率较低的时钟,

对输入进行采样,消除抖动*/

module switch(clk,keyin,keyout);

parameter COUNTWIDTH=8;

input clk, keyin;

output reg keyout;

reg [COUNTWIDTH-1: 0] counter;

wire clk_use; //频率较低的时钟

assign clk_use=counter [COUNTWIDTH-1];

always@ (posedge clk)

counter<=counter+1'b1;

always@ (posedge clk_use)

keyout<=keyin;

endmodule

/*bitsel-v:将输出解码成对时、分、秒的选择(并且分闹钟设置模式还是计时模式)

Alarmmode:是否是在设置闹钟模式

checkmode:是否是在调整时间模式*/

module bitsel(alarmmode, checkmode, sel, selcode, reset) ;

input alarmmode, checkmode, sel, reset;

output reg [2:0] selcode;

reg [2:0] check_code ;

reg [1:0] alarm_code ;

always@ (negedge sel or posedge reset)

begin if (reset) check_code<=3'b000; //reset=1 复位

else begin

case (check_code)

3 'b000: check_code<=3 'b001;

3 'b001: check_code<=3 'b010;

3 'b010: check_code<=3 'b100;

3 'b100: check_code<=3 'b001;

default: check_code<=3 'b000;

endcase

end

end

always@ (negedge sel or posedge reset)

begin if (reset) alarm_code<=2 'b00; //低电平复位

else begin

case (alarm_code)

2'b00 : alarm_code<=2'b01;

2 'b01 : alarm_code<=2 'b10 ;

2 'b10 : alarm_code<=2 'b01;

default : alarm_code<=2 'b00;

endcase

end

end

always

begin if (alarmmode^checkmode) //两个当中只有1个为1 begin if (checkmode) selcode=check_code;

else selcode={alarm_code,1'b0}; end

else selcode=3 'b000 ;

end

endmodule

/*adder.v:加法器*/

module adder(in1, in2, out);

parameter in1width=8;

parameter in2width=8;

parameter outwidth=8;

input [in1width-1: 0] in1;

input [in2width-1: 0] in2;

output[outwidth-1: 0] out;

assign out=in1+in2;

endmodule

/*excounter-v:16进制计数的一个计数器*/

module hexcounter (clk, set, max, setdata, dataout, carryout) ; input clk,set;

input[3:0] max,setdata;

output carryout;

output[3:0] dataout;

reg[3:0] counter;

reg carrybit;

assign carryout=carrybit;

assign dataout=counter;

always@ (posedge clk or posedge set)

begin if (set) //set是高电平有效

begin counter<=setdata;

carrybit<=0 ;

end

else begin if( (counter==max)||(counter>max) )

begin counter<=0 ;

carrybit<=1;

end

else begin counter<=counter+1'b1;

carrybit<=0 ;

end

end

end

endmodule

/*sound_ddd.V:发出嘀嘀嘀闹铃声模块*/

module sound_ddd(clk_1k, on, out);

parameter soundspace=30;

parameter shotstopspace=20; //20ms,两个嘀声的时间距离

parameter longstopspace=50; //50ms,连续三个嘀后的时间距离

input clk_1k,on;

output reg out;

reg sound;

always@ (posedge clk_1k)

begin sound<=~sound; end

reg[10:0] mscount;

always@ (posedge clk_1k)

begin if (mscount== (soundspace*3+shotstopspace*2+longstopspace-1) )

mscount<=0;

else mscount<=mscount+1'b1;

end

always@ (negedge clk_1k)

begin if (on)

begin if ( (mscount>=0) && (mscount

else if ( (mscount>=soundspace) && (mscount< (soundspace+shotstopspace) ) )

out<=0;

else if ( (mscount>= (soundspace+shotstopspace) ) && (mscount< (soundspace+shotstopspace) +soundspace) )

out<=sound;

else if ( (mscount>= (soundspace+shotstopspace) +soundspace) && (mscount< (soundspace+shotstopspace) *2) )

out<=0;

else if ( (mscount>= (soundspace+shotstopspace) *2)&&(mscount< ((soundspace+shotstopspace) *2+soundspace) ) )

out<=sound;

else out<=0;

end

else out<=0 ;

end

endmodule

/* sound ddd du,v:发出声音嘀嘀嘀一嘟声音模块*/

module sound_ddd_du (clk_1k, on, out) ;

parameter SOUNDSPACE=30;

parameter shotstopspace=20;//20ms,两个嘀声的时间距离

parameter longsoundspace=60; //嘟的长度

input clk_1k, on;

output reg out;

reg sound_di, sound_du;

always@ (posedge clk_1k) sound_di<=~sound_di;

always@ (posedge sound_di) sound_du<=~sound_du;

reg [ 11 : 0 ] mscount ;

always@ (posedge clk_1k)

begin if (on)

begin if (mscount< (SOUNDSPACE+shotstopspace) *3+longsoundspace+10)

mscount<=mscount+1'b1;

end

else mscount<=0 ;

end

always@ (negedge clk_1k)

begin if (on)

begin if ( (mscount>=0) && (mscount

else if ( (mscount>=SOUNDSPACE) && (mscount< (SOUNDSPACE+shotstopspace) ) )

out<=0 ;

else if ( (mscount>= (SOUNDSPACE+shotstopspace) ) && (mscount< (SOUNDSPACE+shotstopspace) +SOUNDSPACE) )

out<=sound_di ;

else if ( (mscount>= (SOUNDSPACE+shotstopspace) +SOUNDSPACE) && (mscount< (SOUNDSPACE+shotstopspace) *2) )

out<=0;

else if ( (mscount>= (SOUNDSPACE+shotstopspace) *2) && (mscount< ( (SOUNDSPACE+shotstopspace) *2+SOUNDSPACE) ) )

out<=sound_di;

else if ( (mscount>= (SOUNDSPACE+shotstopspace) *2+SOUNDSPACE) && (mscount< (SOUNDSPACE+shotstopspace) *3) )

out<=0;

else if ( (mscount>= (SOUNDSPACE+shotstopspace) *3) && (mscount< ( (SOUNDSPACE+shotstopspace) *3+longsoundspace) ) )

out<=sound_du;

else out<=0;

end

end

endmodule

数字系统设计与verilog HDL课程设计

数字系统设计与verilog HDL课程设计 设计题目:实用多功能数字钟 专业:电子信息科学与技术 班级:0313410 学号:031341025 姓名:杨存智 指导老师:黄双林

摘要 本课程设计利用QuartusII软件Verilog VHDL语言的基本运用设计一个多功能数字钟,经分析采用模块化设计方法,分别是顶层模块、alarm、alarm_time、counter_time、clk50mto1、led、switch、bitel、adder、sound_ddd、sound_ddd_du模块,再进行试验设计和软件仿真调试,分别实现时分秒计时、闹钟闹铃、时分秒手动校时、时分秒清零,时间保持和整点报时等多种基本功能。 单个模块调试达到预期目标,再将整体模块进行试验设计和软件仿真调试,已完全达到分块模式设计功能,并达到设计目标要求。 关键字:多功能数字钟、Verilog、模块、调试、仿真、功能

目录 1.课程设计的目的及任务............................................................. 错误!未定义书签。 1.1 课程设计的目的 (3) 1.2 课程设计的任务与要求 (4) 2.课程设计思路及其原理 (4) 3.QuartusII软件的应用 (5) 3.1工程建立及存盘 (5) 3.2工程项目的编译 (5) 3.3时序仿真 (6) 4.分模块设计、调试、仿真与结果分析 (7) 4.1 clk50mto1时钟分频模块 (7) 4.2 adder加法器模块 (7) 4.3 hexcounter16 进制计数器模块 (7) 4.4 counter_time 计时模块 (8) 4.5 alarm闹铃模块 (8) 4.6 sound_ddd嘀嘀嘀闹铃声模块 (9) 4.7 sound_ddd_du嘀嘀嘀—嘟声音模块 (9) 4.8 alarm_time闹钟时间设定模块 (10) 4.9 bitsel将输出解码成时分秒选择模块 (10) 4.10 switch去抖模块 (11) 4.11 led译码显示模块 (11) 4.12 clock顶层模块 (12) 5.实验总结 (13) 5.1调试中遇到的问题及解决的方法 (13) 5.2实验中积累的经验 (14) 5.3心得体会 (14) 6.参考文献 (14) 1.1 课程设计的目的 通过课程设计的锻炼,要求学生掌握V erilog HDL语言的一般设计方法,掌握VerilogHDL语言的基本运用,具备初步的独立设计能力,提高综合运用所学的理论知识独立分析和解决问题的能力,基于实践、源于实践,实践出真知,实践检验真理,培养学生的

EDA课程设计—秒表

EDA 课程设计 姓名:王亮 学号:2012118064 班级:1211自动化

一、课程设计目的 1、熟练利用Verilog HDL语言进行数字系统设计。 2、掌握数字系统的设计方法——自顶向下的设计思想。 3、掌握计数器的设计与使用。 4、根据秒表的功能要求设计一个秒表。 5、熟练掌握用Quartus II软件进行系统原理图设计、文本设计以及进行波形仿真。 二、课程设计所需器材 装有Quartus II软件的电脑一台、FPGA教学实验系统一台、下载电缆一根。 三、课程设计要求 1、有秒、分计数,数码扫描显示输出。 2、有清零端和暂停端。 3、下载,检查结果是否正确。 四、课程设计原理 1、功能描述 秒表是一种计时的工具,有着很广泛的用途。本实验中的秒表要求有两个功能按钮:一个是计数和停止计数按钮,当第一次按下此按钮时,秒表开始计数,再一次按下时,秒表停止计数,并显示所计的数字;另一个是清零按钮,当按下此按钮时,秒表清零。在数码管上采用动态扫描显示输出。 2、基本原理: 本设计中用到的主要元件有计数器、分频器、数据选择器、译码器、位选信号发生器等。秒、分都是60进制计数,所以必须采用两个60进制的计数器,而百分秒择采用的是100进制;分频器主要将1KHZ的时钟信号经过10分频后,产生100HZ的单位时钟周期;数据选择器主要功能是将即将显示的数据送给译码器;译码器将BCD码转换为七段译码进行显示;位选信号发生器根据人眼暂留效应和显示的数码的个数,产生一段循环码。 3、自顶向下的设计方法 自顶向下的设计方法是数字系统设计中最常用的设计方法,也是基于芯片的系统设计的主要方法。 自顶向下的设计方法利用功能分割手段将设计由上到下进行层次话和模块化,及分层次、分模块进行设计和仿真。功能分割时,将系统功能分解为功能块,功能块再分解为逻辑块,逻辑块再分解为更少的逻辑块和电路。如此分割,逐步的将系统细化,将功能逐步的具体化,模块化。高层次设计进行功能和接口描述,说明模块的功能和接口,模块功能的更详细描述在下一设计层次说明,最底层的设计才涉及具体寄存器和逻辑门电路等实现方式的描述。 五、课程设计步骤 1、采用自顶向下的设计方法,首先将系统分块。 2、设计元件,及逻辑块。

数字电路时钟设计verilog语言编写--

电子线路设计与测试 实验报告 一、实验名称 多功能数字钟设计 二、实验目的 1.掌握可编程逻辑器件的应用开发技术 ——设计输入、编译、仿真和器件编程; 2.熟悉一种EDA软件使用; 3.掌握Verilog设计方法;

4.掌握分模块分层次的设计方法; 5.用Verilog完成一个多功能数字钟设计。 三、设计内容及要求 1.基本功能 具有“秒”、“分”、“时”计时功能,小时按24小时制计时。 具有校时功能,能对“分”和“小时”进行调整。 2.扩展功能 仿广播电台正点报时。在59分51秒、53秒、55秒、57秒发出低音512Hz 信号,在59分59秒时发出一次高音1024Hz信号,音响持续1秒钟,在1024Hz音响结束时刻为整点。 定时控制,其时间为23时58分。 3.选做内容 任意时刻闹钟(闹钟时间可设置)。 自动报整点时数。 四.系统框图与说明 数字钟框图

1.数字钟电路系统由主体电路和扩展电路两大部分所组成。 2.秒计数器计满60后向分计数器进位,分计数器计满60后向小时计数器进位,小时计数器按照“24进制”规律计数。 3.计数器的输出经译码器送显示器。 五.设计步骤 1.列写多功能数字钟设计--层次结构图 2.拟定数字钟的组成框图,在Max+Plus II软件中,使用Verilog语言输入,采用分层次分模块的方法设计电路; 3.设计各单元电路并进行仿真; 4.对数字钟的整体逻辑电路图,选择器件,分配引脚,进行逻辑综合; 5.下载到Cyclone II FPGA实验平台上,实际测试数字钟的逻辑功能。

六.Verilog代码 //24进制时钟, 具有计时、校时、仿广播电台正点报时、固定时刻定时,任意时刻闹钟等功能 module clock_main(LED_Hour,LED_Minute,LED_Second,Alarm,CP_1KHz,Jsh_Min_key,Jsh_Hour_ke y,Set_Hour_key,Set_Min_key,Show,Ctrl_Bell); input CP_1KHz;//定义输入时钟 input Jsh_Min_key,Jsh_Hour_key;//定义校时按键 input Set_Hour_key,Set_Min_key;//定义闹钟定时按键 input Show; //定义显示模式按键 input Ctrl_Bell;//定义闹钟铃声控制 output [7:0]LED_Hour,LED_Minute,LED_Second;//定义输出变量 wire [7:0]LED_Hour,LED_Minute,LED_Second;//定义输出变量类型 wire [7:0]Hour,Minute,Second; wire [7:0]Set_Hour_Out,Set_Min_Out; wire Out_1Hz,Out_500Hz;//定义分频模块输出变量类型 reg Alarm_Ring,Alarm_Clock_1KHz;//定义仿广播电台报时和固定时刻定时铃声 output Alarm;//蜂鸣器输入 supply1Vdd; wire Alarm_Clock;//任意时刻闹钟闹铃 wire MinL_EN,MinH_EN,Hour_EN;//定义中间变量类型 //分频 fre_dividerFD0(Out_1Hz,Out_500Hz,Vdd,Vdd,CP_1KHz); //正常计时 counter10 U1(.Q(Second[3:0]),.nCR(Vdd),.EN(Vdd),.CP(Out_1Hz)); counter6 U2(.Q(Second[7:4]),.nCR(Vdd),.EN(Second[3:0]==4'h9),.CP(Out_1Hz)); assignMinL_EN=Jsh_Min_key?Vdd:(Second==8'h59); assign MinH_EN=(Jsh_Min_key&&(Minute[3:0]==4'h9))||(Minute[3:0]==4'h9)&&(Second==8'h59 ); counter10 U3(.Q(Minute[3:0]),.nCR(Vdd),.EN(MinL_EN),.CP(Out_1Hz)); counter6 U4(.Q(Minute[7:4]),.nCR(Vdd),.EN(MinH_EN),.CP(Out_1Hz)); assign Hour_EN=Jsh_Hour_key?Vdd:((Minute==8'h59)&&(Second==8'h59)); counter24 U5(Hour[7:4],Hour[3:0],Vdd,Hour_EN,Out_1Hz); //仿广播电台正点报时 baoshi BS1(Alarm_Ring,Minute,Second,Out_500Hz,CP_1KHz);//在59分51秒、53秒、55秒、57秒发出低音512Hz信号,在59分59秒时发出一次高音1024Hz信号,音响持续1秒钟,在1024Hz音响结束时刻为整点 //固定时刻定时

eda课程设计报告多功能数字钟设计大学论文

湖北大学物电学院EDA课程设计报告(论文) 题目:多功能数字钟设计 专业班级: 14微电子科学与工程 姓名:黄山 时间:2016年12月20日 指导教师:万美琳卢仕 完成日期:2015年12月20日

多功能数字钟设计任务书 1.设计目的与要求 了解多功能数字钟的工作原理,加深利用EDA技术实现数字系统的理解 2.设计内容 1,能正常走时,时分秒各占2个数码管,时分秒之间用小时个位和分钟个位所在数码管的小数点隔开; 2,能用按键调时调分; 3,能整点报时,到达整点时,蜂鸣器响一秒; 4,拓展功能:秒表,闹钟,闹钟可调 3.编写设计报告 写出设计的全过程,附上有关资料和图纸,有心得体会。 4.答辩 在规定时间内,完成叙述并回答问题。

目录(四号仿宋_GB2312加粗居中) (空一行) 1 引言 (1) 2 总体设计方案 (1) 2.1 设计思路 (1) 2.2总体设计框图 (2) 3设计原理分析 (3) 3.1分频器 (4) 3.2计时器和时间调节 (4) 3.3秒表模块 (5) 3.4状态机模块 (6) 3.5数码管显示模块 (7) 3.6顶层模块 (8) 3.7管脚绑定和顶层原理图 (9) 4 总结与体会 (11)

多功能电子表 摘要:本EDA课程主要利用QuartusII软件Verilog语言的基本运用设计一个多功能数字钟,进行试验设计和软件仿真调试,分别实现时分秒计时,闹钟闹铃,时分手动较时,时分秒清零,时间保持和整点报时等多种基本功能 关键词:Verilog语言,多功能数字钟,数码管显示; 1 引言 QuartusII是Altera公司的综合性PLD/FPGA开发软件,支持原理图、VHDL、VerilogHDL 以及AHDL(Altera Hardware Description Language)等多种设计输入形式,内嵌自有的综合器以及仿真器,可以完成从设计输入到硬件配置的完整PLD设计流程,解决了传统硬件电路连线麻烦,出错率高且不易修改,很难控制成本的缺点。利用软件电路设计连线方便,修改容易;电路结构清楚,功能一目了然 2 总体设计方案 2.1 设计思路 根据系统设计的要求,系统设计采用自顶层向下的设计方法,由时钟分频部分,计时部分,按键调时部分,数码管显示部分,蜂鸣器四部分组成。这些模块在顶层原理图中相互连接作用 3 设计原理分析 3.1 分频器 分频模块:将20Mhz晶振分频为1hz,100hz,1000hz分别用于计数模块,秒表模块,状态机模块 module oclk(CLK,oclk,rst,clk_10,clk_100); input CLK,rst; output oclk,clk_10,clk_100;

#用Verilog语言编写的多功能数字钟

2009—2010学年第二学期 《数字电子技术课程设计》报告 专业班级:电气-08-1 姓名:曹操 学号:08051127 设计日期:2010年8月23日~27日 一.设计题目 多功能数字钟电路设计 二.设计任务及要求 多功能数字钟应该具有的功能有:显示时—分—秒、整点报时、小时和分钟可调等基本功能。整个钟表的工作应该是在1Hz信号的作用下进行,这样每来一个时钟信号,秒增加1秒,当秒从59秒跳转到00秒时,分钟增加1分,同时当分钟从59分跳转到00分时,小时增加1小时,小时的范围为0~23时。 在实验中为了显示的方便,由于分钟和秒钟显示的范围都是从0~59,所以可以用一个3位的二进制码显示十位,用一个四位的二进制码(BCD 码)显示个位,对于小时因为他的范围是从0~23,所以可以用一个2位的二进制码显示十位,用一个4位的二进制码(BCD码)显示个位。

实验中由于七段码管是扫描的方式显示,所以虽然时钟需要的是1Hz 时钟信号,但是扫描需要一个比较高频率的信号,因此为了得到准确的1Hz 信号,必须对输入的系统时钟50Mhz进行分频。 对于整点报时功能,本实验设计的是当进行正点的倒计时5秒时,让LED来闪烁进行整点报时的提示。 调整时间的按键用按键模块的S1和S2,S1调节小时,每按下一次,小时增加一个小时;S2调整分钟,每按下一次,分钟增加一分钟。另外用S8按键作为系统时钟复位,复位后全部显示00—00—00。 管脚分配如下表: 端口名使用模块信号对应FPGA管脚说明 S1 按键开关S1 R16 调整小时 S2 按键开关S2 P14 调整分钟 RST 按键开关S8 M15 复位 LED LED模块D1 L14 整点倒计时 LEDAG0 数码管模块A段N4 时间显示 LEDAG1 数码管模块B段G4 LEDAG2 数码管模块C段H4 LEDAG3 数码管模块D段L5 LEDAG4 数码管模块E段L4 LEDAG5 数码管模块F段K4 LEDAG6 数码管模块G段K5 SEL0 数码管选择位1 M4 8个数码管

EDA课程设计——多功能数字钟

哈尔滨工业大学(威海) 电子学课程设计报告带有整点报时的数字钟设计与制作 姓名: 蒋栋栋 班级: 0802503 学号: 080250331 指导教师: 井岩

目录 一、课程设计的性质、目的和任务 (3) 二、课程设计基本要求 (3) 三、设计课题要求 (3) 四、课程设计所需要仪器 (4) 五、设计步骤 (4) 1、整体设计框图 (4) 2、各个模块的设计与仿真 (4) 2.1分频模块 (4) 2.2计数器模块 (6) 2.3控制模块 (10) 2.4数码管分配 (13) 2.5显示模块 (14) 2.6报时模块 (16) 六、调试中遇到的问题及解决的方法 (18) 七、心得体会 (18)

一、课程设计的性质、目的和任务 创新精神和实践能力二者之中,实践能力是基础和根本。这是由于创新基于实践、源于实践,实践出真知,实践检验真理。实践活动是创新的源泉,也是人才成长的必由之路。 通过课程设计的锻炼,要求学生掌握电路的一般设计方法,具备初步的独立设计能力,提高综合运用所学的理论知识独立分析和解决问题的能力,培养学生的创新精神。 二、课程设计基本要求 掌握现代大规模集成数字逻辑电路的应用设计方法,进一步掌握电子仪器的正确使用方法,以及掌握利用计算机进行电子设计自动化(EDA)的基本方法。 三、设计课题要求 (1)构造一个24小时制的数字钟。要求能显示时、分、秒。 (2)要求时、分、秒能各自独立的进行调整。 (3)能利用喇叭作整点报时。从59分50秒时开始报时,每隔一秒报时一秒,到达00分00秒时,整点报时。整点报时声的频率应与其它的报时声频有明显区别。 #设计提示(仅供参考): (1)对频率输入的考虑 数字钟内所需的时钟频率有:基准时钟应为周期一秒的标准信号。报时频率可选用1KHz和2KHz左右(两种频率相差八度音,即频率相差一倍)。另外,为防止按键反跳、抖动,微动开关输入应采用寄存器输入形式,其时钟应为几十赫兹。 (2)计时部分计数器设计的考虑 分、秒计数器均为模60计数器。 小时计数为模24计数器,同理可建一个24进制计数器的模块。 (3)校时设计的考虑 数字钟校准有3个控制键:时校准、分校准和秒校准。 微动开关不工作,计数器正常工作。按下微动开关后,计数器以8Hz频率连续计数(若只按一下,则计数器增加一位),可调用元件库中的逻辑门建一个控制按键的模块,即建立开关去抖动电路(见书70页)。 (4)报时设计的考虑

Verilog HDL数字时钟课程设计

课程设计报告 课程设计名称:EDA课程设计课程名称:数字时钟 二级学院:信息工程学院 专业:通信工程 班级:12通信1班 学号:1200304126 姓名:@#$% 成绩: 指导老师:方振汉 年月日

目录 第一部分 EDA技术的仿真 (3) 1奇偶校验器 (3) 1.1奇偶校验器的基本要求 (3) 1.2奇偶校验器的原理 (3) 1.3奇偶校验器的源代码及其仿真波形 (3) 28选1数据选择器 (4) 2.18选1数据选择器的基本要求 (4) 2.28选1数据选择器的原理 (4) 2.38选1数据选择器的源代码及其仿真波形 (5) 34位数值比较器 (6) 3.14位数值比较器的基本要求 (6) 3.24位数值比较器的原理 (6) 3.34位数值比较器的源代码及其仿真波形 (7) 第二部分 EDA技术的综合设计与仿真(数字时钟) (8) 1概述 (8) 2数字时钟的基本要求 (9) 3数字时钟的设计思路 (9) 3.1数字时钟的理论原理 (9) 3.2数字时钟的原理框图 (10) 4模块各功能的设计 (10) 4.1分频模块 (10) 4.2计数模块(分秒/小时) (11) 4.3数码管及显示模块 (13) 5系统仿真设计及波形图........................... 错误!未定义书签。5 5.1芯片引脚图.................................... 错误!未定义书签。5 5.2数字时钟仿真及验证结果 (16) 5.3数字时钟完整主程序 (17) 6课程设计小结 (23) 7心得与体会 (23) 参考文献 (24)

EDA综合课程设计_数字时钟设计一、题_001

EDA综合课程设计-数字时钟设计 一、题目要求 1、功能 1)具有时、分、秒计数显示功能,以24小时循环计时。 2)时钟计数显示时有LED灯的花样显示。 3)具有调节小时、分钟、秒及清零的功能。 4)具有整点报时功能。 2、总体方框图 3、性能指标及功能设计 1)时钟计数:完成时、分、秒的正确计时并且显示所计的数字;对秒、分——60进制计数,即从0到59循环计数,时钟——24进制计数,即从0到23循环计数,并且在数码管上显示数值。 2)时间设置:手动调节分钟、小时,可以对所设计的时钟任意调时间,这样使数字钟真正具有使用功能。我们可以通过实验板上的键7和键4进行任意的调整,因为我们用的时钟信号均是1HZ的,所以每LED灯变化一次就来一个脉冲,即计数一次。 3)清零功能:reset为复位键,低电平时实现清零功能,高电平时正常计数。可以根据我们自己任意时间的复位。 4)蜂鸣器在整点时有报时信号产生,蜂鸣器报警。产生“滴答.滴答”的报警声音。 5)LED灯在时钟显示时有花样显示信号产生。即根据进位情况,LED不停的闪烁,从而产生“花样”信号。

根据总体方框图及各部分分配的功能可知,本系统可以由秒计数器、分钟计数器、小时计数器、整点报时、分的调整以及小时的调整和一个顶层文件构成。采用自顶向下的设计方法,子模块利用VHDL语言设计,顶层文件用原理图的设计方法。显示:小时采用24进制,而分钟均是采用6进制和10进制的组合。 数字时钟系统顶层原理图

多功能数字时钟的课程设计报告 1、本设计可以实现的功能 1)具有时、分、秒计数显示功能,以24小时循环计时。 2)时钟计数显示时有LED灯的花样显示。 3)具有调节小时、分钟及清零的功能。 4)具有整点报时功能。 2、初步设计的总体方框图 3、性能指标及功能设计 1)时钟计数:完成时、分、秒的正确计时并且显示所计的数字;对秒、分——60进制计数,即从0到59循环计数,时钟——24进制计数,即从0到23循环计数,并且在数码管上显示数值。 2)时间设置:手动调节分钟、小时,可以对所设计的时钟任意调时间,这样使数字钟真正具有使用功能。我们可以通过实验板上的K1-K7进行任意的调整,因为我们用的时钟信号均是1HZ的,所以每LED灯变化一次就来一个脉冲,即计数一次。 3)清零功能:reset为复位键,低电平时实现清零功能,高电平时正常计数。

数字秒表设计EDA课设报告

北华航天工业学院 《EDA技术综合设计》 课程设计报告 报告题目:数字秒表设计 作者所在系部:电子工程系 作者所在专业:自动化 作者所在班级: B08221 作者姓名:赵天娇 指导教师姓名:崔瑞雪 完成时间: 2010年12月1日

内容摘要 EDA技术是电子设计技术和电子制造技术的核心,目前,电子系统的EDA 技术正从主要着眼于数字逻辑向模拟电路和数模混合电路的方向发展。 本设计主要内容是数字逻辑电路——数字秒表,数字秒表在日常生活中有广泛的用途,秒表的逻辑结构较简单,它主要由显示译码器、十进制计数器、六进制计数器和报警器组成。四个10进制计数器:用来分别对百分之一秒、十分之一秒、秒和分进行计数;两个6进制计数器:用来分别对十秒和十分进行计数;显示译码器:完成对显示的控制。根据电路持点,用层次设计概念将此设计任务分成若干模块,规定每一模块的功能和各模块之间的接口,然后再将各模块合起来联试。 通过MAX+plusⅡ软件,对上述模块设计,仿真无误后,设计顶层文件,仿真无误后,下载到主芯片EPF10K10LC84-4中,按适配划分后的管脚定位,同相关功能块硬件电路接口连线,进行硬件实验。 EPF10K10LC84-4是Altera公司生产的FLEX10K系列可编程逻辑器件。主要采用了嵌入式阵列,容量高达百万门,为可重复配置的CMOS SRAM工艺,系统工作过程中可随时改变配置,有利于现场编程,完成秒表设计的修改于完善。 关键词 EDA、可编程逻辑器件、计数器、显示器

目录(字体?) 一、概述 (1) 二、实验目的 (1) 三、单元模块设计 (1) 1十进制计数器 (1) 2.六进制计数器 (2) 3.时间数据分时扫描模块 (3) 4.显示译码模块 (4) 5.报警电路模块 (6) 四、顶层文件原理图 (7) 五、硬件要求 (8) 六、实验连线 (8) 七、实验总结 (8) 八、心得体会 (9) 九、参考文献 (10)

基于VerilogHDL设计的数字时钟

深圳大学考试答题纸 (以论文、报告等形式考核专用) 二○18 ~二○19 学年度第一学期 课程编 1602080001 课程名称 号 学 姓名李思豪专业年级电子科学与技术16级1班号 题目:基于Verilog HDL设计的数字时钟 摘要:本文利用Verilog HDL语言自顶向下的设计方法设计多功能数字钟,突出了其作为硬件描述语言的良好的可读性、可移植性和易理解等优点,并通过Altera QuartusⅡ 6.0和cyclnoe II EP2C35F672C6完成综合、仿真。此程序通过下载到FPGA芯片后,可应用于实际的数字钟显示中 关键词:Verilog HDL;硬件描述语言;FPGA

目录 一、实验任务 (3) 实验目的 (3) 实验要求 (3) 二、设计思路 (3) 三、实验结果 (10) 四、总结与收获 (14)

一、实验任务 实验目的 1.深入了解基于quartus ii工具的复杂时序逻辑电路的设计。 2.理解并熟练利用EDA工具进行综合设计。 3.熟练掌握芯片烧录的流程及步骤。 4.掌握Verilog HDL 语言的语法规范及时序电路描述方法。 实验要求 设计一个带秒表功能的24 小时数字钟,它包括以下几个组成部分: ①显示屏,由6 个七段数码管组成,用于显示当前时间(时:分,秒)或设置的秒表时间; ②复位键复位所有显示和计数 ③设置键,用于确定新的时间设置,三个消抖按键分别用于时分秒的设置 ④秒表键,用于切换成秒表功能 基本要求 (1) 计时功能:这是本计时器设计的基本功能,每隔一秒计时一次,并在显示屏上显示当前时间。 (2) 秒表功能:设置时间,进行倒计时功能 (3) 设置新的计时器时间:按下设置键后,用户能通过时分秒三个消抖按键对时间进行设置。 二、设计思路 1、总原理框图:

基于verilog数字秒表的设计实现--生产实习报告

生产实习报告 班级:通信13-2班 姓名:闫振宇 学号:1306030222 成绩: 电子与信息工程学院 信息与通信工程系

基于verilog 数字秒表的设计实现 1. 概述 硬件描述语言HDL ( HardwareDescription Langyage) 是一种用形式化方法来描述数字电路和系统的语言。数字电路系统的设计这里用这种语言可以从上层倒下层逐层描述自设计思想用一系列分层的模块来表示极其复杂的数字系统,然后用EDA 工具逐层验证,把其中需要为具体物理电路的模块组合由自动综合工具转换到门级电路网表。Verilog HDL 是一种硬件描述语言,用于从算法级、门级到开关级的多种抽象设计层次的数字系统建模。被建模的数字系统对象的复杂性可以介于简单的门和完整的电子数字系统之间。数字系统能够按层次描述,并可在相同描述中显式地进行时序建模。使用VERILOG 进行系统设计时采用的是从顶至下的设计,自顶向下的设计是从系统机开始巴西同划分为若干个基本单元,然后再把每个单元划分为下一层的基本单元,这样下去直到可以直接用EDA 元件库中的基本元件来实现为止。 2. 设计目的及要求 a. 有源晶振频率:50MHZ ; b. 测试计时范围:00' 00” 00 ~ 59 ',59显”示9的9 最长时间为59 分59 秒; c. 数字秒表的计时精度是10ms; d. 显示工作方式:六位BCD 七段数码管显示读数,两个按钮开关(一个按钮使秒表复位,另一个按钮控制秒表的启动/暂停)。 3. 设计原理秒表的逻辑结构较简单,它主要由四进制计数器、十六进制计数器、分频器、数据选择器、和显示译码器等组成。在整个秒表中最关键的是如何获得一个精确的100HZ 计时脉冲,除此之外,整个秒表还需有一个启动信号和一个清零信号,以便秒表能随意停止、启动以及清零复位。 秒表有共有6个输出显示,其中6个显示输出数据,分别为百分之一秒、十分之一秒、秒、十秒、分、十分,所以共有 6 个计数器与之相对应; 6 个计数器的输出全都为BCD 码输出,这样便与同显示译码器连接。 利用一块芯片完成除时钟源,按键和显示器之外的所有数字电路功能。所有数字逻辑功能都在CPLD 器件上用Verilog 语言实现。这样设计具有体积小,设计周期短,调试方 便,故障率地和修改升级容易等特点。 本设计采用依次采用以下设计方法: 1)按键输入缓存,键盘消抖设计;

EDA课程设计

课程设计说明书 课程:EDA技术基础 题目:数字钟的设计 闹钟与整点报时模块 学生姓名:XXX 学号201265110204 班级 :1203班 专业:电子信息与科学 指导教师:XXX 2014年12月20日 长沙理工大学课程设计任务书 物理与电子科学学院电子信息与科学专业1203班姓名王玲课程名称EDA技术基础 题目数字钟的设计

长沙理工大学课程设计成绩评定表

目录 1数字钟设计闹钟模块基本任务要求4 2设计思想4 3简述闹钟模块的输入与输出5 4分进程描述6 5仿真结果与分析7 6简述数字钟的设计总成果10 7总结11 参考文献13 代码附件13

基本任务要求:运用QuartusⅡ13.1软件平台,用VHDL语言描述并设计的闹钟模块满足可调闹钟时间,当时钟时间到达闹钟时间后会响闹铃,(由于实验室权限问题会以FPGA开发板上12个LED灯交替发光来表现);整点报时过程表现为整点的前十秒内响铃,(以FPGA开发板上一个LED灯交替发光来实现)。 设计思想:闹钟模块要以分频模块、计数器模块和译码显示模块为基础,将闹钟模块分为三个进程,一个进程用来实现调闹钟,一个进程来实现闹响闹钟(即实现LED灯交替发光),另一个进程来是实现整点报时。 (上面截图为数字钟整体编译后的RTL电路的闹钟模块) 简述闹钟模块图的输入与输出:上图中的输入粗黑实线为计数器模块输出的小时、分钟的高低位和秒钟的高位(都用四位的二进制表示);输出的粗黑实线为定的闹钟时间(包括小时和分钟),将送到译码显示模块显示闹钟时间,闹钟时间与时钟都在FPGA上的数码管显示,用二选一实现交替显示。clk和clk1都是经过分频器分出的不同频率的信号分别用于整点报时的闪灯脉冲与闹钟调时、闹响的闪灯脉冲。

fpga数字钟课程设计报告

f p g a数字钟课程设计报告 Prepared on 24 November 2020

课程设计报告 设计题目:基于FPGA的数字钟设计 班级:电子信息工程1301 姓名:王一丁 指导教师:李世平 设计时间:2016年1月 摘要 EDA(Electronic Design Automation)电子设计自动化,是以大规模可编程器件为设计载体,以硬件描述语言为系统逻辑描述的主要表达方式,通过相关的软件,自动完成软件方式设计得电子系统到硬件系统,最终形成集成电子系统或专用集成芯片。本次课程设计利用Quartus II 为设计软件,VHDL为硬件描述语言,结合所学知识设计一个多功能时钟,具有显示年、月、日、时、分、秒显示,计时,整点报时,设定时间等功能。利用硬件描述语言VHDL 对设计系统的各个子模块进行逻辑描述,采用模块化的思想完成顶层模块的设计,通过软件编译、逻辑化简、逻辑综合优化、逻辑仿真、最终完成本次课程设计的任务。 关键词:EDA VHDL语言数字钟 目录 摘要 1 课程设计目的 2 课程设计内容及要求

设计任务 设计要求 3 VHDL程序设计 方案论证 系统结构框图 设计思路与方法 状态控制模块 时分秒模块 年月日模块 显示模块 扬声器与闹钟模块 RTL整体电路 4 系统仿真与分析 5 课程设计总结,包括.收获、体会和建议 6 参考文献 1 课程设计目的 (1)通过设计数字钟熟练掌握EDA软件(QUARTUS II)的使用方法,熟练进行设计、编译,为以后实际工程问题打下设计基础。 (2)熟悉VHDL 硬件描述语言,提升分析、寻找和排除电子设计中常见故障的能力。 (3)通过课程设计,锻炼书写有理论根据的、实事求是的、文理通顺的课程设计报告。

EDA数字秒表设计

《EDA技术与应用》 课程设计报告 报告题目:数字秒表设计作者所在系部:电子工程系作者所在专业:电子信息工程作者所在班级: 作者姓名: 指导教师: 完成时间:2017-6-10

容摘要 在科技高度发展的今天,集成电路和计算机应用得到了高速发展。尤其是计算机应用的发展。它在人们日常生活已逐渐崭露头角。大多数电子产品多是由计算机电路组成,如:手机、mp3等。而且将来的不久他们的身影将会更频繁的出现在我们身边。各种家用电器多会实现微电脑技术。电脑各部分在工作时多是一时间为基准的。本报告就是基于计算机电路的时钟脉冲信号、状态控制等原理,运用EDA技术及VHDL语言设计出的数字秒表。秒表在很多领域充当一个重要的角色。在各种比赛中对秒表的精确度要求很高,尤其是一些科学实验,他们对时间精确度达到了几纳秒级别。 利用VHDL语言设计基于计算机电路中时钟脉冲原理的数字秒表。该数字秒表能对0秒~59分59.99秒围进行计时,显示最长时间是59分59秒,超过该时间能够进行报警。计时精度达到10ms。设计了复位开关和启停开关。复位开关可以在任何情况下使用,使用以后计时器清零,并做好下一次计时的准备。 关键词:EDA技术、VHDL语言、分频器、计数器、数码管、蜂鸣器

目录 一概述 (1) 二方案设计与论证 (1) 三单元电路设计 (2) ⒊1分频器的设计 (2) ⒊2计时控制模块的设计 (3) ⒊3计时模块的设计 (4) ⒊⒊1十进制计数器的设计 (4) ⒊⒊2六进制计数器的设计 (5) ⒊⒊3计数器的设计 (6) ⒊4显示模块的设计 (8) ⒊⒋1选择器的设计 (8) ⒊⒋2七段译码器的设计 (9) ⒊5报警模块设计 (10) ⒊6顶层文件的设计 (11) 四器件编程与下载 (11) 五性能测试与分析 (12) ⒌1分频器模块的仿真 (12) ⒌2计时控制模块的仿真 (12)

多功能数字钟设计Verilog语言编写

多功能数字钟设计 院系:电光学院 班级:*** 学号: *** 姓名: *** 指导老师:*** 时间:2010.4.20.

摘要:利用QuartusII软件设计一个数字钟,利用模块化的程序设计思想,核心 模块均采用Verilog语言编写(译码显示模块采用原理图设计),软件仿真调试编译成功后,再下载到SmartSOPC实验系统中。经过硬件测试,查找软件设计缺陷,并进一步完善软件,最终设计得到较为满意的多功能数字钟。 关键词:QuartusII; 多功能数字钟; 模块化; Verilog; 可编程; Abstract:Using the QuartusII software design a digital bell with the blocking method.The design takes theory drawing instead of Verilog language.After emluating and debuging successfully,translate and edit the code.Then,download the result to the programmable SmartSOPC system and test it in hardware.Realizing the soul of designing hardware by software. Keywords:QuartusII; digital bell; blocking method; VHDL; programmable; hardware 目录 设计内容简介 (3) 设计要求说明 (3) 方案论证(整体电路设计原理) (3) 各子模块设计理 (5) 分频模块: (5) 计数模块: (7) --校准模块程序实现: (8) --秒计数模块程序实现: (9) --分计数模块程序实现: (10) --时计数模块程序实现: (10) 整点报时模块: (12) 闹钟设定模块: (13) --闹钟调节模块程序实现: (14) --输出信号选择模块程序实现: (14) 彩铃模块: (15) 译码显示模块: (18) 万年历模块: (19) --日计数模块程序设计: (20) --月计数模块程序设计: (23) --年计数模块程序设计: (23) --万年历波形仿真结果: (25) 结论: (26) 实验感想: (26) 附图: (27)

推荐-基于多功能数字钟的课程设计报告 精品

EDA技术课程设计 多功能数字钟 学院:城市学院 专业、班级: 姓名: 指导老师: 20XX年12月

目录 1、设计任务与要求 (2) 2、总体框图 (2) 3、选择器件 (2) 4、功能模块 (3) (1)时钟记数模块 (3) (2)整点报时驱动信号产生模块 (6) (3)八段共阴扫描数码管的片选驱动信号输出模块 (7) (4)驱动八段字形译码输出模块 (8) (5)高3位数和低4位数并置输出模块 (9) 5、总体设计电路图 (10) (1)仿真图 (10) (2)电路图 (10) 6、设计心得体会 (11)

一、设计任务与要求 1、具有时、分、秒记数显示功能,以24小时循环计时。 2、要求数字钟具有清零、调节小时、分钟功能。 3、具有整点报时,整点报时的同时输出喇叭有音乐响起。 二、总体框图 多功能数字钟总体框图如下图所示。它由时钟记数模块(包括hour、minute、second 三个小模块)、驱动8位八段共阴扫描数码管的片选驱动信号输出模块(seltime)、驱动八段字形译码输出模块(deled)、整点报时驱动信号产生模块(alart)。 系统总体框图 三、选择器件 网络线若干、共阴八段数码管4个、蜂鸣器、hour(24进制记数器)、minute(60进制记数器)、second(60进制记数器)、alert(整点报时驱动信号产生模块)、 seltime(驱动4位八段共阴扫描数码管的片选 驱动信号输出模块)、deled(驱动八段字形译 码输出模块)。

四、功能模块 多功能数字钟中的时钟记数模块、驱动8位八段共阴扫描数码管的片选驱动信号输出模块、驱动八段字形译码输出模块、整点报时驱动信号产生模块。 (1) 时钟记数模块: <1.1>该模块的功能是:在时钟信号(CLK)的作用下可以生成波形;在清零信号(RESET)作用下,即可清零。 VHDL程序如下: library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity hour24 is port( clk: in std_logic; reset:instd_logic; qh:BUFFER STD_LOGIC_VECTOR(2 DOWNTO 0); ql:BUFFER STD_LOGIC_VECTOR(3 DOWNTO 0)); end hour24; architecture behav of hour24 is begin process(reset,clk) begin if reset='1' then qh<="000"; ql<="0000"; elsif(clk'event and clk='1') then if (qh<2) then if (ql=9) then ql<="0000"; qh<=qh + 1; else ql<=ql+1; end if; else if (ql=3) then ql<="0000"; qh<="000"; else ql<=ql+1; end if; end if; end if; end process; end behav; 仿真波形如下:

EDA课程设计完整版---数字秒表(设计报告+仿真文件+硬件实现)

附: EDA课程设计完整版---数字秒表(设计报告+仿真文件+硬件实现) 仿真文件下载地址: https://www.doczj.com/doc/2917200113.html,/detail/zhj8861991/4061198(友情提示:关于页数,下载后请删除此页即可)

《可编程器件及应用课程设计报告》 题目数字秒表 学院信电工程学院 专业电子信息科学与技术 班级 姓名 学号 指导教师

目录 课程设计任务书 (3) 一、系统组成模块连图 (4) 二、模块器件及其程序 (4) 1、分频器 (4) 2、十进制计数器 (5) 3、六进制计数器 (6) 4、动态扫描 (7) 5、译码显示管 (8) 三、系统仿真 (9) 1、六进制计数器 (9) 2、十进制计数器 (9) 3、动态扫描 (9) 4、译码显示管 (10) 5、分频器 (10) 6、系统仿真 (11) 7、硬件实现 (11) 四、心得体会 (12)

课题名称数字秒表设计完成时间12.30 指导教师学生姓名班级 总体设计要求和技术要点 总体设计要求: 通过本课程的学习使学生掌握可编程器件、EDA开发系统软件、硬件描述语言和电子线路设计与技能训练等各方面知识;提高工程实践能力;学会应用EDA技术解决一些简单的电子设计问题。 技术要点: 1.利用VHDL语言设计基于计算机电路中时钟脉冲原理的数字秒表。该秒表计时范围为0秒~59分59.99秒,显示的最长时间为59分59秒,计时精度为10毫秒,并且具有复位功能。复位开关一旦打开所有位都为0。 2.秒表有共有6个输出显示,分别为百分之一秒、十分之一秒、秒、十秒、分、十分,所以共有6个计数器与之相对应,6个计数器的输出全都为BCD码输出,这样便与同显示译码器的连接。 工作内容及时间进度安排 工作内容: 在软件上编辑、编译程序,并在电脑上仿真, 最后在实验室下载到器件上实现硬件要求。 进度安排: 第十八周一周时间; 课程设计成果

EDA数字时钟课程设计报告

EDA技术及应用课程设计说明书 2013 届电子信息工程专业班级 题目数字时钟 学号 姓名 指导教师 二О一五年月日

一、基本原理 一个完整的时钟应由三部分组成:秒脉冲发生电路、计数显示部分和时钟调整部分。 秒脉冲发生电路原理:一个时钟的准确与否主要取决于秒脉冲的精确度。为了保证计时准确我们对系统时钟48MHz进行了48000000分频,从而得到1Hz的秒脉冲。 计数显示部分原理:显示部分是用数码管LED实现的,这里使用的是共阳极的数码管如图所示8个数码管,其中左边两个数码管用来显示时的个位和十位、中间的显示分的个位和十位、最右边两个显示分的个位和十位。 时钟调整部分原理:校时电路里定义key[0]、key[1]和k2、k3分别用于控制时钟的计时开始、清零和调整功能中的时的加1、分的加1处理,从而完成对现在的时间调整。本实验电路校时电路在此完成了暂停、清零、时调整和分调整。

二、硬件设计 芯片图: 图1 数字时钟原理图 程序的调试工作都是在电脑上完成的,通过程序的输入、原理图的建立、管脚分配、编译、仿真、再下载到芯片进行运行。

电路中采用共阳极连接的七段数码管,通过程序的控制扫描驱动来显示时钟的时-分-秒。

程序中的按键设定为K1暂停、K2清零、K3调时、K4调分元件清单: 三、数字时钟的Verilog实现 管脚的分配: 程序: module clock(clk,s1,,s2,key,dig,seg); //模块名clock input clk,s1,s2; //输入时钟 input[1:0]key; //输入按键 output[7:0]dig; //数码管选择输出引脚

相关主题
文本预览
相关文档 最新文档