沈阳航空航天大学课程设计报告课程设计名称:计算机组成原理课程设计课程设计题目:12小时数字钟电路设计与实现院(系):计算机学院专业:计算机科学与技术班级:34010104学号:2013040101164姓名:指导教师:胡光元完成日期:2016年1月13日沈阳航空航天大学课程设计报告-I-目录第1章总体设计方案...................................................................................................21.1设计原理.................................................................................................................21.2设计思路.................................................................................................................21.3设计环境.................................................................................................................2第2章详细设计方案...................................................................................................22.1算法与程序的设计与实现...................................................................................32.2流程图的设计与实现...........................................................................................4第3章程序调试与结果测试.......................................................................................73.1程序调试...............................................................................................................7列举出调试过程中存在的问题....................................................................................73.2程序测试及结果分析...........................................................................................7参考文献...........................................................................................................................9附录(源代码).......................................................................................................10沈阳航空航天大学课程设计报告错误!未指定书签。附录-2-第1章总体设计方案1.1设计原理通过Verilog语言,编写12小时数字钟电路设计与实现的Verilog程序,一般的做法是底层文件用verilog写代码表示,顶层用写的代码生成的原理图文件链接组成,最后在加上输入输出端口。采用自上而下的方法,顶层设计采用原理图设计输入的方式。1.2设计思路1.实时数字钟显示功能,即时、分、秒的正常显示模式,并且在此基础上增加上,下午显示。2.手动校准。按动方式键,将电路置于校时状态,则计时电路可用手动方式校准,每按一下校时键,时计数器加1;按动方式键,将电路置于校分状态,以同样方式手动校分。1.3设计环境(1)硬件环境•伟福COP2000型计算机组成原理实验仪COP2000计算机组成原理实验系统由………•COP2000集成调试软件COP2000集成开发环境是为………….(2)EDA环境•Xilinxfoundationf3.1设计软件Xilinxfoundationf3.1是Xilinx公司的可编程期间………….沈阳航空航天大学课程设计报告错误!未指定书签。附录-3-第2章详细设计方案2.1算法与程序的设计与实现(1)秒钟计时器由于秒计数器为60进制计数器,所以以秒计数器作为示例说明其编程思想。其中秒计数器模块在程序中为always@(posedgeclk)的程序段,由上面分析得秒计数器由一个十进制计数器与一个六进制计数器组成,程序中有second0表示秒计数器低位即10进制计数器,second1表示秒计数器的高位为一个六进制计数器。clk为时钟信号,时钟周期1/60(S),当低位second0满10时,自动进一位,即second1自动进位。Second0,second1位宽均为4位reg型变量。(2)分钟钟计时器分钟计时器由于秒计数器为12进制计数器,示例说明其编程思想。其中秒计数器模块在程序中为always@(posedgemod)的程序段,由分析得小时计数器由一个二进制计数器与一个三进制计数器组成,程序中有hour0表示秒计数器低位即二进制计数器,hour1表示秒计数器的高位为一个三进制计数器。Mod为时钟信号,来自分钟计时模块的mod,时钟周期360(S),当低位hour0满3时,自动进一位,即hour1自动进位。hour1,hour1位宽均为4位reg型变量。(3)小时计时器小时计时器同秒钟计时器其中小时计数器模块在程序中为always@(posedgetun)的程序段,分钟计时器的低位、高位分别由minute0、minute1表示,但分钟计时器模块的敏感信号为“posedgetun”时钟信号,“tun”的产生自秒钟计时器,可知其产生的时钟信号为1(S),每触发一次则分钟计数器计数加1一次,同时产生mod的时钟信号,同时由于做的是12小时数字钟电路,所有zox表示的是显示上下午,当小时计数器满12时zox变化一次,其中zox=0表示的是上午,zox=1表示的是下午。沈阳航空航天大学课程设计报告错误!未指定书签。附录-4-(4)时间设置时间设置模块实现的功能为通过按键调节可以对当前时间进行手动控制。其主要是在时间设置使能端有效地情况下通过SW1和i_SW2两个按键对数字钟的小时和分钟数进行调节。Disp_drive为设置中的显示控制,即通过SW1对位的调整,Disp_drive随之变化。i_SW2为对每一位上的数字在其范围内进行加1调节。Disp_drive取值000、001、010和011分别对应hour1、hour0、minute1和minute0的设置,其中的加1设置在各个计时器模块,这样做的原因是防止两个“always”进程对同一个变量赋值发生错误。(5)控制显示模块控制显示模块在整个数字钟的设计中起着非常重要的作用。它的作用是将时间等数据用数码管显示的控制和数据传输模块,包括数据的传输以及BCD码译码等。通过几个控制使能端将其不同功能时的时间在数码管上显示出来。本模块中端口定义比较多,下面是其所对应的功能。clk:时间自动模式工作使能信号;Timeset_EN:时间设置使能信号;Time_disp_select:时间显示位选信号;Disp_select:显示位选信号输出;程序设计中,各使能端信号为1表示执行该功能,以时间自动工作模式使能信号有效为例说明,当Time_EN为1时,首先将时间显示位选信号isp_select的值赋给显示位选信号disp_select输出,定义time_disp_select的状态一共有6个,分别为100000、010000、001000、000100、000010和000001,其在各状态下分别依次表示将、hour0、hour1、minute0、minute1、second0和second1的值赋给data,用case语句来实现,其实现语句如下:always@(clk,TimeSet_EN,time_disp_select,disp_select,hour1,hour0,minute1,minute0,second1,second0)begin//时钟,秒表显示if((clk||TimeSet_EN)==1'b1)沈阳航空航天大学课程设计报告错误!未指定书签。附录-5-begindisp_select=time_disp_select;case(time_disp_select)6'b100000:Data=hour1;6'b010000:Data=hour0;6'b001000:Data=minute1;6'b000100:Data=minute0;6'b000010:Data=second1;6'b000001:Data=second0;default:Data=4'b0;endcaseend显示译码数据段主要程序如下:case(Data)4'b0000:disp_data=7'b1111110;4'b0001:disp_data=7'b0110000;4'b0010:disp_data=7'b1101101;4'b0011:disp_data=7'b1111001;4'b0100:disp_data=7'b0110011;4'b0101:disp_data=7'b1011011;4'b0110:disp_data=7'b1011111;4'b0111:disp_data=7'b1110000;4'b1000:disp_data=7'b1111111;4'b1001:disp_data=7'b1111011;default:disp_data=7'b0;endcase显示译码程序说明了0到9十个数在7段数码管中所对应的值,在case语句里面最重要的是一定不能忘了default,否则仿真会发生所不希望看到的沈阳航空航天大学课程设计报告错误!未指定书签。附录-6-结果。下图13为闹钟设置使能有效时仿真结果。2.2流程图的设计与实现1.数字钟2.12小时数字时钟整体数字钟主体小时计数器分计数器秒计数器24进制计数器60进制计数器6进制计数器10进制计数器Zox=0(上午)Zox=1(下午)12小时数字钟显示时钟时间数值时间的校验沈阳航空航天大学课程设计报告错误!未指定书签。附录-7-第3章程序调试与结果测试3.1程序调试1、Error(10170):VerilogHDLsyntaxerrorata.v(65)neartextalways;expectingend忘记在begin之后加end结束语2、Error(10161):VerilogHDLerrorata.v(165):objectDatisnotdeclared在程序开始Dat忘记标记和定义3、Error(10170):VerilogHDLsyntaxerroratTime.v(49)neartextelse;expectingendmodule程序后面没加endmodule4、Error(10170):VerilogHDLsyntaxerroratTime.v(56)neartext=;expecting.,oranidentifier把“=”改为“=”3.2