电子系统EDA设计课程设计论文_第1页
电子系统EDA设计课程设计论文_第2页
电子系统EDA设计课程设计论文_第3页
电子系统EDA设计课程设计论文_第4页
电子系统EDA设计课程设计论文_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

一、设计题目看门狗定时器内部有一个递减计数器,当该计数器递减为 0 的时候,就会自动重启控制器(如下图所示),如果我们写有这样的程序,该程序在定时器计数器递减为 0 之前,将其递减计数器重新设置一下(喂狗),那么就不会产生重启操作。假如机器设备出现异常情况下如死机,CPU 执行出错,程序跑飞等情况,CPU 就会陷入非正常的执行流程,就不会去执行重置计数器的程序,当计数器递减为 0 时,会产生复位控制器信号,机器就会重新启动,恢复正常执行流程。这样的设计原理就解决了很多环境恶劣的情况下,对服务器进行重启的任务。该定时器框架图是基于 MC68SZ328 的,如图下所示。计数器工作在两个模式中,一个是正常工作模式,速度是 2Hz 每秒,另一个是测试模式,速度是 32kHz 每秒。通过 WCR 寄存器中用户设定的 TMD 来选择。在模块使能之后,计数器进行倒计时计数。在中间过程中,用户可以通过 WHALT 来对计数器进行暂停操作。如果计数器到达 0,那么超时标志位 Time-Out 置高。计数器基本功能图如下:二、题目分析题目要求实现的 Watchdog 模块,通过对寄存器的操作,实现 Watchdog 各项功能。在原来功能要求的基础上,我们添加了一分钟关狗功能,在设置关狗1min、系统上电、系统任何复位重启,都自动产生 1min 的关狗,以保证系统能正常起来,并正常喂狗。系统中对于信号的设置如下:Wdt_wdi 为喂狗信号,电平跳变则清除 Watchdog 溢出计数器计时。Wdt_off 为强制关狗信号,屏蔽 Watchdog 溢出输出。Wdt_rst_force 用于强制输出复位信号。Wdt_off_1min_pulse 用于强制关闭 Watchdog1 分钟。Wdt_rst 用于输出复位脉冲信号。Wdt_off_1min_on 用于输出 1 分钟关狗的状态,表示是否处于 1min 关闭Watchdog 状态中。内部 Watchdog 模块逻辑框图如下所示。三、详细代码Watchdog 代码:module WDT (clk,reset_n,wdt_wdi, /Watchdog 喂狗信号输入wdt_rst, /Watchdog 溢出复位输出 wdt_off, /强制关闭 Watchdog 输入 wdt_rst_force, /强制 Watchdog 输出复位wdt_off_1min_pulse, /强制关闭 Watchdog1min,脉冲输入,1 个 clk 周期宽度wdt_off_1min_on /强制关闭 Watchdog1min 状态输出,高电平表示处于 1min关/狗中,低电平表示处于正常状态);input clk; input reset_n; input wdt_wdi;output wdt_rst;input wdt_off; input wdt_rst_force;input wdt_off_1min_pulse; output wdt_off_1min_on;reg 15:0 count_div1;wire condition_381;always(posedge clk or negedge reset_n) begin if(reset_n = 1b0) begin count_div1 = 16h0000; endelse begin count_div1 = count_div1+16h0001; endendassign condition_381 = /25M/215=381Hzreg 4:0 count_div2; wire condition_12;always(posedge clk or negedge reset_n)beginif(reset_n = 1b0)begin count_div2 = 5h00;end else if(condition_381 = 1b1)begin count_div2 = count_div2+5h01;endelse; endassign condition_12 = ( /381/25=12Hzreg1:0 wdt_wdi_dly;always(posedge clk or negedge reset_n) beginif(reset_n = 1b0) begin wdt_wdi_dly = 2b11;end else begin wdt_wdi_dly = wdt_wdi_dly0,wdt_wdi; endendwire wdt_wdi_dly_edge; assign wdt_wdi_dly_edge = (wdt_wdi_dly = 2b10)|(wdt_wdi_dly = 2b01);reg 4:0 count_1p6s;reg wdt_wdi_overtime; always(posedge clk or negedge reset_n)beginif(reset_n = 1b0)begincount_1p6s = 5h00; wdt_wdi_overtime = 1b0;endelsebegin if(condition_12 = 1b1)wdt_wdi_overtime = 1b0;endelse if(count_1p6s = 5h14)begin count_1p6s = 5h00;wdt_wdi_overtime = 1b1;end elsebegin wdt_wdi_overtime = 1b0; end if(wdt_wdi_dly_edge = 1b1) begin count_1p6s = 5h00; endelse; end endreg 9:0 count_1min;reg wdt_off_1min_on; always(posedge clk or negedge reset_n) beginif(reset_n = 1b0)begin count_1min = 10h000;wdt_off_1min_on = 1b1;end else if(condition_12 = 1b1)wdt_off_1min_on = 1b1;endelse if(wdt_off_1min_pulse = 1b1) wdt_off_1min_on = 1b1;endelse if(count_1min = 10h2d0)begin wdt_off_1min_on = 1b0; end else;endreg wdt_overflew_pulse;wire wdt_rst_force;wire wdt_off;always(posedge clk or negedge reset_n)begin if(reset_n = 1b0)begin wdt_overflew_pulse = 1b1; endelse if(wdt_wdi_overtime = 1b1) end else begin wdt_overflew_pulse = 1b0;endendreg 1:0 count_200ms; reg wdt_rst; always(posedge clk or negedge reset_n)beginif(reset_n = 1b0)begin count_200ms = 2b00; wdt_rst = 1b0;endelse if(wdt_overflew_pulse = 1b1)begin wdt_rst = 1b0;endelse if(wdt_rst = 1b0) end else if(count_200ms = 2b11)begin count_200ms = 2b00;wdt_rst = 1b1;endelse;end endmodule四、仿真结果以下仿真由于按实际时间仿真时间太长,均在原基础上,时间缩小 4096 倍仿真。仿真结果如下:上电复位及上电关狗 1min 仿真 Watchdog溢出仿真 Watchdog正常喂狗仿真 正常喂狗后,Watchdog 未

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论