版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、精选优质文档-倾情为你奉上沈阳航空航天大学 课 程 设 计 报 告课程设计名称:计算机组成原理课程设计课程设计题目:12小时数字钟电路设计与实现院(系):计算机学院专 业:计算机科学与技术班 级:学 号:64姓 名:指导教师:胡光元完成日期:2016 年 1月 13 日专心-专注-专业目 录第1章 总体设计方案1.1 设计原理 通过Verilog语言,编写12小时数字钟电路设计与实现的Verilog程序,一般的做法是底层文件用verilog写代码表示,顶层用写的代码生成的原理图文件链接组成,最后在加上输入输出端口。采用自上而下的方法,顶层设计采用原理图设计输入的方式。1.2 设计思路 1.实时
2、数字钟显示功能,即时、分、秒的正常显示模式,并且在此基础上增加上,下午显示。 2.手动校准。按动方式键,将电路置于校时状态,则计时电路可用手动方式校准,每按一下校时键,时计数器加1;按动方式键,将电路置于校分状态,以同样方式手动校分。1.3 设计环境(1)硬件环境伟福COP2000型计算机组成原理实验仪COP2000计算机组成原理实验系统由COP2000集成调试软件COP2000 集成开发环境是为.(2)EDA环境Xilinx foundation f3.1设计软件Xilinx foundation f3.1是Xilinx公司的可编程期间.第2章 详细设计方案2.1 算法与程序的设计与实现 (
3、1)秒钟计时器 由于秒计数器为60进制计数器,所以以秒计数器作为示例说明其编程思想。其中秒计数器模块在程序中为always (posedge clk)的程序段,由上面分析得秒计数器由一个十进制计数器与一个六进制计数器组成,程序中有second0表示秒计数器低位即10进制计数器,second1表示秒计数器的高位为一个六进制计数器。clk为时钟信号,时钟周期1/60(S),当低位second0满10时,自动进一位,即second1自动进位。Second0,second1位宽均为4位reg型变量。(2) 分钟钟计时器 分钟计时器由于秒计数器为12 进制计数器,示例说明其编程思想。其中秒计数器模块在程
4、序中为always (posedge mod )的程序段,由分析得小时计数器由一个二进制计数器与一个三进制计数器组成,程序中有hour0表示秒计数器低位即二进制计数器,hour1表示秒计数器的高位为一个三进制计数器。Mod为时钟信号,来自分钟计时模块的mod,时钟周期360(S),当低位hour0满3时,自动进一位,即hour1自动进位。hour1,hour1位宽均为4位reg型变量。(3) 小时计时器 小时计时器同秒钟计时器其中小时计数器模块在程序中为always (posedge tun)的程序段,分钟计时器的低位、高位分别由minute0、minute1表示,但分钟计时器模块的敏感信号为
5、“posedge tun”时钟信号,“tun”的产生自秒钟计时器,可知其产生的时钟信号为1(S),每触发一次则分钟计数器计数加1一次,同时产生mod的时钟信号,同时由于做的是12小时数字钟电路,所有zox表示的是显示上下午,当小时计数器满12时zox变化一次,其中zox=0表示的是上午,zox=1表示的是下午。(4) 时间设置 时间设置模块实现的功能为通过按键调节可以对当前时间进行手动控制。其主要是在时间设置使能端有效地情况下通过SW1和i_SW2两个按键对数字钟的小时和分钟数进行调节。Disp_drive为设置中的显示控制,即通过SW1对位的调整,Disp_drive随之变化。i_SW2为对
6、每一位上的数字在其范围内进行加1调节。Disp_drive取值000、001、010和011分别对应hour1、hour0、minute1和minute0的设置,其中的加1设置在各个计时器模块,这样做的原因是防止两个“always”进程对同一个变量赋值发生错误。(5)控制显示模块 控制显示模块在整个数字钟的设计中起着非常重要的作用。它的作用是将时间等数据用数码管显示的控制和数据传输模块,包括数据的传输以及BCD码译码等。通过几个控制使能端将其不同功能时的时间在数码管上显示出来。本模块中端口定义比较多,下面是其所对应的功能。clk:时间自动模式工作使能信号;Timeset_EN:时间设置使能信号
7、;Time_disp_select:时间显示位选信号;Disp_select:显示位选信号输出;程序设计中,各使能端信号为1表示执行该功能,以时间自动工作模式使能信号有效为例说明,当Time_EN为1时,首先将时间显示位选信号isp_select的值赋给显示位选信号disp_select输出,定义time_disp_select的状态一共有6个,分别为、和,其在各状态下分别依次表示将、hour0、hour1、minute0、minute1、second0和second1的值赋给data,用case语句来实现,其实现语句如下:always(clk,TimeSet_EN,time_disp_sel
8、ect,disp_select,hour1,hour0,minute1,minute0,second1,second0) begin /时钟,秒表显示 if(clk | TimeSet_EN) = 1'b1) begin disp_select <= time_disp_select; case(time_disp_select) 6'b: Data <= hour1; 6'b: Data <= hour0; 6'b: Data <= minute1; 6'b: Data <= minute0; 6'b: Data
9、<= second1; 6'b: Data <= second0; default: Data <= 4'b0; endcase end显示译码数据段主要程序如下: case(Data) 4'b0000: disp_data<=7'b; 4'b0001: disp_data<=7'b; 4'b0010: disp_data<=7'b; 4'b0011: disp_data<=7'b; 4'b0100: disp_data<=7'b; 4'b01
10、01: disp_data<=7'b; 4'b0110: disp_data<=7'b; 4'b0111: disp_data<=7'b; 4'b1000: disp_data<=7'b; 4'b1001: disp_data<=7'b; default: disp_data<=7'b0; endcase 显示译码程序说明了0到9十个数在7段数码管中所对应的值,在case语句里面最重要的是一定不能忘了default,否则仿真会发生所不希望看到的结果。下图13为闹钟设置使能有效时仿
11、真结果。 2.2 流程图的设计与实现 1.数字钟数字钟主体小时计数器分计数器秒计数器24进制计数器60进制计数器6进制计数器10进制计数器Zox=0(上午)Zox=1(下午)2. 12小时数字时钟整体12小时数字钟显 示时钟时间数值 时间的校验第3章 程序调试与结果测试3.1 程序调试1、 Error (10170): Verilog HDL syntax error at a.v(65) near text "always" expecting "end" 忘记在begin之后加end结束语2、 Error (10161): Verilog HDL e
12、rror at a.v(165): object "Dat" is not declared 在程序开始Dat忘记标记和定义3、 Error (10170): Verilog HDL syntax error at Time.v(49) near text "else" expecting "endmodule" 程序后面没加"endmodule"4、 Error (10170): Verilog HDL syntax error at Time.v(56) near text "<="
13、expecting ".", or an identifier 把“<=”改为“=”3.2 程序测试及结果分析1. 从图中可以看出当second0满1010即10时被置为0000,而second1加1,满足秒的低位满十进一位的设置。2.从图中可以看出,在第一个时钟周期内,时间显示位选信号time_disp_select的值为,此时应执行case语句的default,Data的值为0;在第二个时钟周期内,time_disp_select的值为,此时对应其最后一种状态,将second0的值赋给Data,即Data的值为0110,从图中看,仿真结果正确,disp_data表
14、示的是将当前数据译码显示之后七段数码管的显示,所以在第一个周期内值为,表示值为0,与Data所表示的数对应。依次类推,可将Data的值全部表示出来。3.从图中可以看出,当只有Timeset_EN:时间设置使能信号有效时,其七段数码管显示结果,与数字钟自动工作使能端的区别为闹钟设置使能端有效时只需对hour0、hour1、minute0和minute1进行设置,由于其同样需要将值赋给disp_select,为了统一期间,其值也设为6位,其4个状态分别为、和。其他与自动工作模式相同。参考文献1张明.Verilog HDL实用教程.成都:电子科技大学出版社,1999 2齐洪喜,陆
15、颖.VHDL电路设计M.北京:清华大学出版社,2004 3江国强,李哲英.EDA技术与应用M.北京:电子工业出版社,2004 4雷伏容.VHDL电路设计M.北京:清华大学出版社,2006 5曾繁泰,陈美金.VHDL程序设计M.北京:清华大学出版社,2000 6潘松,王国栋.VHDL实用教程.成都:电子科技大学出版社,2000 7赵雅兴.FPGA原理、设计与应用.天津:天津大学出版社,1998 8陈俊硕,刘景林,张金萍.基于FPGA的直流电机PWM控制器设计J.微电机2009(10) 9卢杰,赖毅.VHDL与数字电
16、路设计.北京:科学出版社,2001 10张昌凡,龙永红,彭涛.可编程逻辑器件及VHDL设计技术.广州:华南工学院出版社,2001附 录(源代码) 源代码: /timescale 1ns/1nsModule aa(clk,TimeSet_EN, SW1,i_SW2,zox,disp_select,hour1,hour0,minute1,minute0,second1,second0); input clk; input TimeSet_EN; /时间设置使能信号 input SW1; input i_SW2; output zox; /上下午指示模 output 5:0 disp_se
17、lect; output 3:0 hour1,hour0,minute1,minute0,second1,second0; reg 7:0 second,minute,hour; reg tun,mod,zox; wire r_SW2; reg 2:0 disp_drive; reg 6:0 time_disp_select; reg 6:0 disp_select; reg 3:0 Data,hour1,hour0,minute1,minute0,second1,second0; reg 6:0 disp_data; reg mt,nt; initial begin tun=0; mod=0
18、; zox=0; hour=0; minute=0; second=0; disp_drive=3'b000; end assign r_SW2=i_SW2;/ /秒钟计时器 always (posedge clk) /上升沿触发 begin if(r_SW2=1'b1) begin if(disp_drive=3'b110) second<=0; tun<=0; end else if(second=8'h59) begin second<=0; tun<=1; end else begin if(second3:0=9) begin
19、second3:0<=0; second7:4<=second7:4+1; end else begin second3:0<=second3:0+1; end tun<=0; end second1<=second7:4; second0<=second3:0; end/ /分钟计时器always (posedge tun) /上升沿触发 begin if(r_SW2=1'b1) begin case(disp_drive) 3'b010: begin /分的高位 if(minute7:4<5) minute7:4<=minut
20、e7:4 + 1; else minute7:4<=0; end 3'b011: begin if(minute3:0< 9) minute3:0<=minute3:0+1; else minute3:0<=0; end default: begin end endcase mod<=0; end else if(minute=8'h59) begin minute<=0; mod<=1; end else begin if(minute3:0=9) begin minute3:0<=0; minute7:4<=minute
21、7:4+1; end else begin minute3:0<=minute3:0+1; end mod<=0; end minute1<=minute7:4; minute0<=minute3:0; end/ /时钟计时器always (posedge mod ) /上升沿触发begin if(r_SW2=1'b1) begin case(disp_drive) 3'b000: begin if(hour7:4=0) hour7:4<= hour7:4+1; else begin hour7:4<= 0; if(zox=0) zox<
22、;=1; else zox<=0; end end 3'b001: begin /小时的低位 if(hour3:0<1) hour3:0<= hour3:0 +1; else hour3:0<=0; end default: begin end endcase end else begin if(hour=8'h11) begin hour<=0; if(zox=0) zox<=1; else zox<=0; end else hour3:0<=hour3:0+1; end hour1<=hour7:4; hour0<
23、=hour3:0; end/ /时间设置always (posedge SW1) /手动设置使能begin if(TimeSet_EN = 1'b1) begin if(disp_drive <3'b101) disp_drive <= disp_drive + 3'b1; else disp_drive <= 3'b000; endend/ /时钟显示 always (clk, TimeSet_EN,time_disp_select, disp_select,hour1,hour0,minute1,minute0,second1,second
24、0) begin /时钟,秒表显示 if(clk | TimeSet_EN) = 1'b1) begin /时钟,秒表显示 if(clk | TimeSet_EN = 1'b1) begin disp_select <= time_disp_select; case(time_disp_select) 6'b: Data <= hour1; 6'b: Data <= hour0; 6'b: Data <= minute1; 6'b: Data <= minute0; 6'b: Data <= second1; 6'b: Data <= second0; default: Data <= 4'b0; endcase end case(Data) /显示数据译码 4'b0000: disp_data <= 7'b; 4'b00
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年度钢结构工程建造协议条款
- 节假日食堂疫情防控应对方案
- 2024年废窑厂土地修复及承包协议
- 建筑工地安全监控报警系统维保方案
- 城市基础设施建设用水方案
- 餐饮经营合作权益2024协议细则
- 区域科学教育活动概述
- 2024年专业开发票协议格式
- 2024年典当行个人借款协议模板
- 2024高端咨询服务协议精简
- 特种作业人员台账.doc
- 国家开放大学《管理英语1》边学边练参考答案
- 3章SAA的功能应用
- (完整版)装饰装修工程监理细则(详解)最新(精华版)
- 电焊中级工(四级)职业技能鉴定考试题库
- 氧化铝生产工艺教学(拜耳法)(课堂PPT)
- 多巴胺的药理作用及用法PPT参考幻灯片
- 钢结构网架翻新改造施工方案
- 水稻雄性不育系鉴定
- 少先队鼓号队常用鼓号曲谱
- 土方运输次数登记卡
评论
0/150
提交评论