基于synopsys的多功能时钟芯片的设计—毕业设计论文内容摘要:

技术指标: A、具有数字电子钟的基本功能:拥有年月日时分秒显示,并且月日的显示要有阴阳历两种显示,时为 12 小时制显示; B、支持闰年闰月提醒、传统节假日提醒和日程提醒功能; C、支持时间校对功能; D、支持闹铃功能,且闹铃音乐 1632Kbs 播放。 E、支持背景图案显示; F、芯片版图成正方形,且控制版图面积为 150um*150um 以内。 基于 Modelsim 对多功能时钟芯片的 设计方案 ModelSim 是业界最优秀的 HDL 语言仿真器。 它提供 的调试环境是相当不错的 , 是单内核 仿真器中 支持 Verilog 和 VHDL 混合仿真的 唯一。 目前 VHDL 语言应用于很多领域,几乎很难找到哪个领域没有 VHDL 的踪迹。 计算机的数据传输以及网络通讯,广泛使用的各种智能 IC 卡,工业自动化过程中对实时控制盒数据的处理,民用高级轿车里的安全系统保障,全自动洗衣机的控制、摄影机,甚至在程控玩具、宠物机等等,都离不开 VHDL。 ModelSim 最大的特点是其强大的调试功能:数据流 窗口的先进性,能够 迅速 对 追踪到产生 的错误状态 或者 不定 状态的原因:性能分析工具 则能够 帮助 我们对性能瓶颈做出分析 和 加速仿真;代码覆盖率 的检测则在一定程度上 确保 了 测试的完备;多种模式的波形比较功能; Signal Spy 功能 的先进性 , 进而能够 方便 地对 VHDL 和 Verilog 混合设计或 VHDL 中的底层信号 做出访问。 而基于 Modelsim 和 Design Compiler 的数字电子钟 ,其都是 在软件 上 操作的, 所以成本 很低, 且数字系统的设计采用自顶向下、由粗到细 , 逐步分解的设计方法。 设计如果出现误差时 ,可以用校时电路即 set 端口进行校正。 系统的整体要求是要有最顶层电路 , 而具体的逻辑电路的实现要具有最下层。 自上至下的设计方式对一个复杂的系统进行不断地分解,使其变成成若干功能模块 , 最后对其做出设计描述 , 并使完成的各个功能模块和的逻辑综合与优化在 modelsim 软件平台上自动完成。 数字电子钟是由计数器、比较器、计数器、校时电路和 存储器 组成。 计数器连续稳定的计数 ,作为数字钟的时间基准。 月计数器满 12后向年计数器进位 ,日计数器满 30 后向月计数器进位 ,小时计数器满 12 向日计数器进位。 而 存储器可以用来储存音乐以及图片。 设计出现误差时 ,可第三章:时钟芯片设计方案 8 以用校时电路即 set 端口进行校正。 图 31 整体设计思路 熟悉 Modelsim 和 Design Compiler 软件 分析整体功能及要求 分析设计各部分模块 编辑各个程序模块 仿真出波形图输出网表电路 综合各模块完成整体程序 根据最终网表电路绘制电子钟 芯片版图 第四章:时钟芯片各模块的设计及仿真 9 第四章 时钟芯片 各模块 的 设计及仿真 设计原理 本次电子钟的设计是实现显示阴阳历年月日时分秒的功能,支持闰年闰月提醒、传统节假日提醒和日程提醒功能,且能随时进行时间校对和支持闹铃功能,支持背景图案显示。 可以设置一个基本的输入时钟 clk 作为激励来触发小时进行计数,再设置内部时钟,来触发日、月、年的计数。 设置一个校对时间的信号 jiaodui,当 jiaodui 为高电平的 时候允许时间校对,当 jiaodui 为低电平的时候继续计数。 设置一个预置闹铃信号 timing, timing 为高电平的时候设置的时钟闹铃有效,当闹铃时间到则闹铃信号 naoling 输出高电平,直到 timing 为低电平的时候 naoling 恢复低电平(即闹钟响后,要按下开关闹钟才会停止)。 闰年提醒信号 run,就是当年份是闰年时, run 的输出为一个高电平。 中国传统节日的提醒信号 jieri,即当为中国的传统节日的时候 jieri会输出高电平。 在设计年月日时( year, month, day, hour, minute, second)的模块是都加进以时钟信号 clk为敏感信号。 判断是否符合预置校对时间信号 jiaodui 为高电平。 若符合则分别在年月日时( year2, month2, day2, hour2, minute2, second2)模块加进预置的校对年月日时。 再独立设置一个闹钟进程,当闹钟允许信号 timing 有效时,比较当前的时间( year, month, day, hour, minute, second)是否与闹铃时间( year1, month1,day1, hour1, minute1, second1)相等,若相等则 rco 信号输出高电平直到允许信 号timing 关闭。 设置一个闰年提醒进程以当前年份( year)为敏感信号,当年份为闰年的时候闰年信号 run输出为高电平,平年的时候为低电平。 设置一个节日提醒进程以当前月份( month)和当前日( day)为敏感信号,时刻把当前的月日与事先设置好的节日做比较,当满足相等的时候 jieri 信号输出高电平。 首先设计秒模块,秒模块里有一个周期为 1s 的时钟 clk,每个上升沿到来秒钟数自动加 1,当秒钟为 59 并且有上升沿到来时,输出信号 c0 从低电平跳变为高电平; c0 就作为分钟模块的脉冲,当分钟为 59并且有上升沿到来时,输出 信号 c1 从低电平跳变为高电平;后面时钟模块,日模块,月模块以此类推。 第四章:时钟芯片各模块的设计及仿真 10 图 41 设计原理图 基本显示功能 秒钟模块 代码: u1: process(clk,q) begin if(clk39。 event and clk=39。 139。 ) then if q=59 then q=0。 c0=39。 139。 else q = q+1。 c0=39。 039。 end if。 end if。 end PROCESS。 q0=q。 end。 代码解释:当时钟 clk变化时运行此模块进程,当 q0计数到 59的时候则 q0 赋值为 1 继续计数从而构成一个 60进制的计数器。 而每当 q0 为 59,期间 c0(计数分的时钟)为高电平, 否则为低电平。 由图片可以看出,这是一个初值为 51s 的秒模块,当时间为 59s 并且上升沿到来时自动跳转为 0,并且计数分的时钟 c0 跳变为高电平。 基础模块 电子钟开始工作 按判断键 复位键 自动校对时间 开启闹钟 时间到闹铃响 开启日程提醒 时间到日程提醒 传统节假日提醒 闰年闰月提醒 电子钟继续工作 第四章:时钟芯片各模块的设计及仿真 11 图 42( a) 秒钟模块仿真图 图 42(b) 秒钟模块仿真图 由波形可见这是一个 059的 60进制计数器。 图 43 秒钟模块网表电路 当时间从 59s到 0s跳转时, c0自动跳变为 1,此时 c0 为分钟脉冲 第四章:时钟芯片各模块的设计及仿真 12 在 Design Compiler 工具下将秒钟模块的 VHDL 语言描述的电路转换为工艺库器件从而生成了秒模块网表电路。 分钟模块 代码: u2: process(c0,q) begin if(c039。 event and c0=39。 139。 ) then if q=59 then q=1。 c1=39。 139。 else q = q+1。 c1=39。 039。 end if。 end if。 end PROCESS。 q1=q。 end。 代码解释:秒钟模块输出的 c0作为分钟模块的脉冲,脉 冲 c0 变化时运行此模块进程,当 q1 计数到 59 的时候则 q1 赋值为 1 继续计数从而构成一个 60进制的计数器。 而每当q0为 59,期间 c1(计数时的时钟)为高电平,否则为低电平。 由图片可以看出,这是一个初值为 47m 的分模块,当时间为 59m并且上升沿到来时自动跳转为 0,并且计数时的时钟 c1 跳变为高电平。 图 44(a) 分钟模块仿真图 第四章:时钟芯片各模块的设计及仿真 13 图 44(b)分钟模块仿真图 由波形可见这是一个 059的 60进制计数器。 图 45 分钟模网表电路 在 Design Compiler 工具下将秒钟模块的 VHDL 语言描述的电路转换为工艺库器件从而生成了分模块网表电路。 时钟模块 代码: u3: begin process(c1,q) begin if(c139。 event and c1=39。 139。 ) then if q=11 then q=0。 c22=c22+1。 If(c22%2=0) then c2=39。 139。 else q = q+1。 c2=39。 039。 end if。 当时间从 59 到 0 跳转时, c1 自动跳变为 1,此时 c1 为时钟脉冲 第四章:时钟芯片各模块的设计及仿真 14 end if。 end PROCESS。 q2=q。 end。 代码解释:分钟模块输出的 c1 作为时钟模块的脉冲,当时钟 c1 变化时运行此模块进程,当 q2 计数到 11 的时候则 q2 赋值为 1 继续计数从而构成一个 12进制的计数器。 而每当q0为 11,期间 c2(计数日的时钟)为高电平,否则为低电平。 由图片可以看出,这是一个初值为 6的时模块,当时间为 12h 并且上升沿到来时自动跳转 为 1,并且计数日的时钟 c2跳变为高电平。 图 46(a) 时钟模块仿真图 图 46(b) 时钟模块仿真图 由波形可见这是一个 112的 12进制计数器。 当时钟从 12到 1跳转时,c2 自动跳变为 1,此时 c2为日期的半个脉冲 第四章:时钟芯片各模块的设计及仿真 15 图 47 时钟模块网表电路 在 Design Compiler 工具下将秒钟模块的 VHDL 语言描述的电路转换为工艺库器件从而生成了时模块网表电路。 日模块 代码: u4: process(c2,q) begin if(c239。 event and c2 =39。 139。 ) then if q4=1,3,5,7,8,10,12 q=31 then q=1。 c3=39。 139。 else q = q + 1。 c3=39。 039。 end if。 end if。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。