1、 湖北大学物电学院 EDA课程设计报告(论文) 题目:多功能数字钟设计 专业班级: 14微电子科学与工程 姓 名: 黄山 时 间: 2016年12月20日 指导教师: 万美琳 卢仕 完成日期: 2015年 12月 20日 20 多功能数字钟设计任务书 1. 设计目的与要求 了解多功能数字钟的工作原
2、理,加深利用EDA技术实现数字系统的理解 2.设计内容 1, 能正常走时,时分秒各占2个数码管,时分秒之间用小时个位和分钟个位所在数码管的小数点隔开; 2, 能用按键调时调分; 3, 能整点报时,到达整点时,蜂鸣器响一秒; 4, 拓展功能:秒表,闹钟,闹钟可调 3.编写设计报告 写出设计的全过程,附上有关资料和图纸,有心得体会。 4.答辩 在规定时间内,完成叙述并回答问题。 目录 (四号仿宋_GB2312加粗居中) (空一行) 1 引言 …………………………………………
3、……………………………………1 2 总体设计方案 ……………………………………………………………………1 2.1 设计思路 ………………………………………………………………………1 2.2总体设计框图 ……………………………………………………………2 3设计原理分析 ………………………………………………………………3 3.1分频器 …………………………………………………………………………4 3.2计时器和时间调节…….……………………………………………………4 3.3秒表模块…………………………………………………………………………5 3.4状态机模块……………………………………
4、……………………………6 3.5数码管显示模块…………………………………………………………………7 3.6顶层模块……………………………………………………………8 3.7管脚绑定和顶层原理图…………………………………………………………9 4 总结与体会 ……………………………………………………………………11 多功能电子表 摘要: 本EDA课程主要利用QuartusII软件Verilog语言的基本运用设计一个多功能数字钟 ,进行试验设计和软件仿真调试,分别实现时分秒计时,闹钟闹铃,时分手动较时,时分秒清
5、零,时间保持和整点报时等多种基本功能 关键词: Verilog语言, 多功能数字钟,数码管显示; 1 引言 QuartusII是Altera公司的综合性PLD/FPGA开发软件,支持原理图、VHDL、VerilogHDL以及AHDL(Altera Hardware Description Language)等多种设计输入形式,内嵌自有的综合器以及仿真器,可以完成从设计输入到硬件配置的完整PLD设计流程,解决了传统硬件电路连线麻烦,出错率高且不易修改,很难控制成本的缺点。利用软件电路设计连线方便,修改容易;电路结构清楚,功能一目了然 2 总体设计方案 2.1 设计思路 根
6、据系统设计的要求,系统设计采用自顶层向下的设计方法,由时钟分频部分,计时部分,按键调时部分,数码管显示部分,蜂鸣器四部分组成。这些模块在顶层原理图中相互连接作用 蜂鸣器 计时器 2.2 总体设计框图 分频器 数码管 状态机 晶振 秒表 3 设计原理分析 3.1 分频器 分频模块:将20Mhz晶振分频为1hz,100hz,1000hz分别用于计数模块,秒表模块,状态机模块 module oclk(CLK,oclk,rst,clk_10,clk_100); input CLK,rst
7、 output oclk,clk_10,clk_100; reg [32:0]cnt,cnt1,cnt2; reg oclk,clk_10,clk_100; always@(posedge CLK or negedge rst) begin if(!rst) begin cnt<=0; oclk<=0; end else if(cnt<10000-1) cnt<=cnt+1; else begin cnt<=0; oclk=~oclk; end end always@(posedge CLK or negedge rst) begi
8、n if(!rst) begin cnt1<=0; clk_10<=0; end else if(cnt1<=10000000-1) cnt1<=cnt1+1; else begin cnt1<=0; clk_10<=~clk_10; end end always@(posedge CLK or negedge rst) begin if(!rst) begin cnt2<=0; clk_100<=0; end else if(cnt2<100000-1) cnt2<=cnt2+1; else begin cnt2<=0; clk_
9、100=~clk_100; end end endmodule 3.2计时器和时间调节 计时模块:检测posedge clk_10 并进行计数,同时能调时调分, 最后是整点报时部分 module cni(clk_10,rst,tiaoshi,tiaofen,ge,shi,bai,qian,wan,shiwan,bee); input clk_10,rst,tiaoshi,tiaofen; output reg[3:0]ge,shi,bai,qian,wan,shiwan,bee; always@(posedge clk_10 or
10、 negedge rst) begin if(!rst) begin ge<=0; shi<=0; bai<=0; qian<=0; wan<=0; shiwan<=0; end else begin if((!tiaofen)&&(bai<9)) bai<=bai+1; else begin if((!tiaofen)&&(qian<5)) begin bai<=0;qian<=qian+1;end if((!tiaoshi)&&(wan<9)) wan<=wan+1; else begin if(
11、tiaoshi)&&(shiwan<2)) begin wan<=0;shiwan<=shiwan+1;end else begin if((shiwan==2)&&(wan==4)) begin ge<=0;shi<=0;bai<=0;qian<=0;wan<=0;shiwan<=0;end if(ge<9) ge<=ge+1; else begin ge<=0; if(shi<5) shi<=shi+1; else begin shi<=0; if(bai<9) bai<=bai+1; else begin bai<=0; i
12、f(qian<5) qian<=qian+1; else begin qian<=0; if(wan<3) wan<=wan+1; else begin wan<=0; if(shiwan<2) shiwan<=shiwan+1; else shiwan<=0; end end end end end end end end end end always@(posedge clk_10) begin if((ge==0)&&(shi==0)&&(bai==0)&&(qian==0))
13、 bee=0; else bee=1; end endmodule 3.3秒表模块 与计时部分类似,总体思想是调整进制和提高信号频率,如下 module miaobiao(clk_100,tm,m6,m5,m4,m3,m2,m1); input tm,clk_100; output m6,m5,m4,m3,m2,m1; reg [3:0] m6,m5,m4,m3,m2,m1; always@(posedge clk_100 ) begin if (tm) begin m6<=0; m5<=0; m
14、4<=0; m3<=0; m2<=0; m1<=0; end else begin if(m1<9) m1<=m1+1; else begin m1<=0; if(m2<9) m2<=m2+1; else begin m2<=0; if(m3<9) m3<=m3+1; else begin m3<=0; if(m4<9) m4<=m4+1; else begin m4<=0; if
15、m5<9) m5<=m5+1; else begin m5<=0; if(m6<9) m6<=m6+1; else m6<=0; end end end end end end end endmodule 3.4状态机模块 一般通过逻辑抽象,得出状态转换图,状态化简,状态分配,用三段式写法入下 module state(clk1k,rst,tm,num,wela,ge,shi,bai,qian,wan,shiwan,m6,m5,m4,m3,m2,m1);
16、 input clk1k,rst,tm,ge,shi,bai,qian,wan,shiwan,m6,m5,m4,m3,m2,m1; output num,wela; wire [3:0]ge,shi,bai,qian,wan,shiwan,m6,m5,m4,m3,m2,m1; reg [3:0]num; reg [5:0]wela; reg [3:0]current_state,next_state; parameter[3:0]D1=1; parameter[3:0]D2=2; parameter[3:0]D3=3; parameter[3:0]
17、D4=4; parameter[3:0]D5=5; parameter[3:0]D6=6; parameter[3:0]D01=7; parameter[3:0]D02=8; parameter[3:0]D03=9; parameter[3:0]D04=10; parameter[3:0]D05=11; parameter[3:0]D06=12; always@(posedge clk1k or negedge rst) begin if(!rst) current_state<=D1; else curr
18、ent_state<=next_state; end always@(current_state ) begin if(tm==0) begin case(current_state) D1: begin num=m1; wela=6'b111110; if(clk1k) next_state=D01; else next_state=D1; end D01: begin num=12; wela=6'b1111101; if(clk1k)
19、 next_state=D2; else next_state=D01; end D2: begin num=m2; wela=6'b111101; if(clk1k) next_state=D02; else next_state=D2; end D02: begin num=12; wela=6'b111011; if(clk1k) next_state=D3; else next_state=D02; end D3: begi
20、n num=m3; wela=6'b111011; if(clk1k) next_state=D03; else next_state=D3; end D03: begin num=12; wela=6'b110111; if(clk1k) next_state=D4; else next_state=D03; end D4: begin num=m4; wela=6'b110111; if(clk1k) next_state=D04;
21、else next_state=D4; end D04: begin num=12; wela=6'b101111; if(clk1k) next_state=D5; else next_state=D04; end D5: begin num=m5; wela=6'b101111; if(clk1k) next_state=D6; else next_state=D05; end D05: begin num=12; wela
22、6'b011111; if(clk1k) next_state=D6; else next_state=D05; end D6: begin num=m6; wela=6'b011111; if(clk1k) next_state=D06; else next_state=D6; end D06: begin num=12; wela=6'b111110; if(clk1k) next_state=D1; else next_state=D
23、06; end endcase end else begin case(current_state) D1:begin num=ge;wela=6'b111110; if(clk1k) next_state=D01; else next_state=D1; end D01:begin num=15;wela=6'b111101; if(clk1k) next_state=D2;
24、 else next_state=D01; end D2:begin num=shi;wela=6'b111101; if(clk1k) next_state=D02; else next_state=D2; end D02:begin num=15;wela=6'b111011; if(clk1k) next_state=D3; else
25、 next_state=D02; end D3:begin num=bai;wela=6'b111011; if(clk1k) next_state=D03; else next_state=D3; end D03:begin num=15;wela=6'b110111; if(clk1k) next_state=D4; else next_state=D03; end D4:begin
26、 num=qian;wela=6'b110111; if(clk1k) next_state=D04; else next_state=D4; end D04:begin num=15;wela=6'b101111; if(clk1k) next_state=D5; else next_state=D04; end D5:begin num=wan;wela=6'b101111;
27、 if(clk1k) next_state=D05; else next_state=D5; end D05:begin num=15;wela=6'b011111; if(clk1k) next_state=D6; else next_state=D05; end D6:begin num=shiwan;wela=6'b011111; if(clk1k) next_st
28、ate=D06; else next_state=D6; end D06:begin num=15;wela=6'b111110; if(clk1k) next_state=D1; else next_state=D06; end default: next_state=D1; endcase end end endmodule 3.5数码管显示模块 module SEG7(num,wela,SEG); input
29、 [3:0]num; input [5:0]wela; output SEG; reg [7:0]SEG; always@(num) begin if((wela==6'b111011)||(wela==6'b101111)) begin case(num) 0:SEG=8'b01000000; 1:SEG=8'b01111001; 2:SEG=8'b00100100; 3:SEG=8'b00110000; 4:SEG=8'b00011001; 5:SEG=8'b00010
30、010; 6:SEG=8'b00000010; 7:SEG=8'b01111000; 8:SEG=8'b00000000; 9:SEG=8'b00011000; default:SEG =8'b11111111; endcase end else begin case(num) 0:SEG=8'b11000000; 1:SEG=8'b11111001; 2:SEG=8'b10100100; 3:SEG=8'b10110000;
31、 4:SEG=8'b10011001; 5:SEG=8'b10010010; 6:SEG=8'b10000010; 7:SEG=8'b11111000; 8:SEG=8'b10000000; 9:SEG=8'b10011000; default:SEG =8'b11111111; endcase end end endmodule 3.6顶层模块 所有模块通过元件例化进顶层模块 module clock(tm,clk,rst,tiaoshi,ti
32、aofen,wela,SEG,bee); input clk,rst,tiaoshi,tiaofen,tm; output [5:0]wela; output [7:0]SEG; output bee; wire net1; wire net9; wire net10; wire [3:0]net2; wire [3:0]net3; wire [3:0]net4; wire [3:0]net5; wire [3:0]net6; wire [3:0]net7; wire [3:0]net8; wire [3:0]m6,m5,m4,m3,
33、m2,m1; oclk u1(.CLK(clk),.oclk(net1),.rst(rst),.clk_10(net9),.clk_100(net10)); state u2(.clk1k(net1),.rst(rst),.num(net2),.tm(tm),.wela(wela),.ge(net3),.shi(net4),.bai(net5),.qian(net6),.wan(net7),.shiwan(net8),.m6(m6),.m5(m5),.m4(m4),.m3(m3),.m2(m2),.m1(m1)); SEG7 u3(.num(net2),.wela(we
34、la),.SEG(SEG)); cni u4(.clk_10(net9),.rst(rst),.tiaoshi(tiaoshi),.tiaofen(tiaofen),.ge(net3),.shi(net4),.bai(net5),.qian(net6),.wan(net7),.shiwan(net8),.bee(bee)); miaobiao u5(.tm(tm),.clk_100(net10),.m6(m6),.m5(m5),.m4(m4),.m3(m3),.m2(m2),.m1(m1)); endmodule 3.7管脚绑定和顶层原理
35、 4总结与体会 通过学习,我对多功能数字钟已经有过一定的了解,对于程序,不断的调试仿真过程是必不可少的,无论多么仔细的编程,思路上的漏洞总是存在的,并且会完全体现在实验结果上,在不断的调试仿真过程中,许多问题的暴露使得我们不仅对数字电路原理有了更加深刻的了解也使我们对QUARTUSII平台的使用规则有了更多的了解。在经过了这一切之后,实现创新功能就会变得不再那么困难。目 录 第一章 总论 1 一、项目概况 1 二、项目提出的理由与过
36、程 6 三、项目建设的必要性 8 四、项目的可行性 12 第二章 市场预测 15 一、市场分析 15 二、市场预测 16 三、产品市场竞争力分析 19 第三章 建设规模与产品方案 22 一、建设规模 22 二、产品方案 22 三、质量标准 22 第四章 项目建设地点 25 一、项目建设地点选择 25 二、项目建设地条件 25 第五章 技术方案、设备方案和工程方案 28 一、技术方案 28 二、产品特点 30 三、主要设备方案 32 四、工程方案 32 第六章 原材料与原料供应 35 一、原料来源及运输方式 35 二、燃料供应与运输方式 35
37、 第七章 总图布置、运输、总体布局与公用辅助工程 37 一、总图布置 37 二、 运输 38 三、总体布局 38 四、公用辅助工程 39 第八章 节能、节水与安全措施 44 一、主要依据及标准 44 二、节能 44 三、节水 45 四、消防与安全 45 第九章 环境影响与评价 47 一、法规依据 47 二、项目建设对环境影响 48 三、环境保护措施 48 四、环境影响评价 49 第十章 项目组织管理与运行 50 一、项目建设期管理 50 二、项目运行期组织管理 52 第十一章 项目实施进度 55 第十二章 投资估算和资金筹措 56 一、投资估算 56 二、资金筹措 58 第十三章 财务评价与效益分析 61 一、项目财务评价 61 二、财务评价结论 65 三、社会效益 68 四、生态效益 68 第十四章 风险分析 70 一、主要风险分析识别 70 二、风险程度分析及防范风险的措施 70 第十五章 招标方案 72 一、招标范围 72 二、招标组织形式 72 三、招标方式 72 第十六章 结论与建议 74 一、可行性研究结论 74 二、建议 75 附 件 77 一、附表 77 二、附件 77 三、附图 77






