欢迎来到天天文库
浏览记录
ID:13857972
大小:36.50 KB
页数:6页
时间:2018-07-24
《一种基于verilog hdl的可重触发单稳态电路的实现》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、一种基于VerilogHDL的可重触发单稳态电路的实现摘要:具体介绍了单稳态电路的特点及实现原理,详细阐述了用veriloghdl进行编写设计的过程,同时在quartusii9.0中新建工程进行编译仿真,给出功能仿真的波形,并将该工程下载到fpga硬件板上,得到的运行结果与功能仿真的结果相同,验证了该设计的正确性。关键词:单稳态veriloghdl仿真1引言讲到单稳态电路,很容易想到54hc123,54hc6538和74ls123等单稳态集成电路。这些集成电路的特点是简单、方便,但也存在缺点:(
2、1)专用单稳态集成电路中的宽度定时元件r、c是随温度、湿度等因素变化而变化的,在对其进行温度补偿时,调试过程相当繁琐,而且电路工作的可靠性也不高;(2)由于它不能在高密度的可编程逻辑器件中实现,如cpld,fpga等,因此在以大规模可编程逻辑器件为主的设计中会造成元器件数量增加,可靠性降低。为克服上述缺点,可以用逻辑电路来搭建纯数字化的单稳态电路。veriloghdl语言是目前应用最为广泛的硬件描述语言,用该语言进行设计最大的优点是其与工艺性无关。这使得工程师在功能设计,逻辑验证阶段可以不必过多
3、考虑门级及工艺实现的具体细节,只需根据系统设计的要求施加不同的约束条件,即可设计出实际电路。2可重触发单稳态电路的特点单稳态电路只有一个稳定状态,触发翻转后经过一段时间会回到原来的稳定状态,一般作固定脉冲宽度整形。单稳态电路的特点如下:(1)稳态和暂稳态两个不同的工作状态;(2)在外接触发脉冲作用下,从稳态翻转到暂稳态,在暂稳态维持一段时间后再自动返回稳态;(3)暂稳态维持时间的长短取决于电路本身的参数,与触发脉冲的宽度和幅度无关。可重触发是单稳态电路中较常用的一项功能,在工业控制中,如常用的看
4、门狗电路,民用系统中,如住宅楼道公共照明系统等,都有很广泛的应用。可重触发功能是指在单稳态电路被触发后,在回到稳态之前仍可以继续进行触发,同时在此期间输出端始终保持为暂稳态不变,直到最后一次触发t时间后,才回到稳态。3单稳态电路设计的基本原理这里我们分两种情况讨论:一种是两个触发脉冲之间的间隔td大于计数器计数的时间tc;另一种是tdtc时,如图1所示,对触发脉冲进行检测,当检测到上升沿时,输出进入暂稳态,同时启动计数器,由于td>tc,所以计数器能够伴随系统时钟自增到设定好的值n,此时立即反馈
5、回一个信号将输出置回稳态,同时计数器清零,等待下一个触发脉冲。td6、iloghdl实现的具体方法本设计中,采用的是自上而下(top-down)的设计方法。veriloghdl设计的程序是并发程序,所以在设计中要把顺序执行的思想转变为并发设计的思想,另外fpga的内部逻辑采用的也是并发机制。接下来我们直接来看重触发是如何实现的。本设计方法采用了两个计数器使能标志flag1和flag2,这两个标志用来对计数器和输出进行控制,我们让flag1=~flag2,这样就相当于每次重触发时重新启动了一个不同的计数器使能标志,从而实现可重触发的功能。本次设计的思路用一个流程图表7、示,如图3所示。为了对图3中使用到三路并行信号的必要性进行说明,我们把触发脉冲tr分成了奇数个和偶数个两种情况来讨论。首先,初始化q1=0,q2=1,q3=1。之前提到过fpga内部逻辑的并发机制,因此在图3中以下进程是并发的:产生计数器使能标志flag1=~flag2的进程,产生q1波形的进程,产生q2波形的进程,产生q3波形的进程。当tr脉冲个数为奇数个时,如图4所示,在系统时钟的上升沿去判断flag1是否为‘1’。若flag1为‘1’,则q1置‘1’,并启动计数器计数。当计数器满时,q1变8、为‘0’,下一个系统时钟上升沿到来后,q1又会被置‘1’,所以会出现如图4中q1的波形,这时候我们再设置一个q3信号,这个信号只在以flag1为使能信号的计数器满时回到稳态,如图4中的q3波形所示;若flag1为‘0’,则对计数器清零,这时的flag2为‘1’,因此以flag2为使能信号的计数器会启动计数,q2已初始化为‘1’,所以此时并没有置q2为‘1’的操作。同样该计数器满时,q2重新回到‘0’。最后再把q1,q2和q3做与运算得到最终的输出q=q1&q2&q3。当tr脉冲个数为偶数个时,实
6、iloghdl实现的具体方法本设计中,采用的是自上而下(top-down)的设计方法。veriloghdl设计的程序是并发程序,所以在设计中要把顺序执行的思想转变为并发设计的思想,另外fpga的内部逻辑采用的也是并发机制。接下来我们直接来看重触发是如何实现的。本设计方法采用了两个计数器使能标志flag1和flag2,这两个标志用来对计数器和输出进行控制,我们让flag1=~flag2,这样就相当于每次重触发时重新启动了一个不同的计数器使能标志,从而实现可重触发的功能。本次设计的思路用一个流程图表
7、示,如图3所示。为了对图3中使用到三路并行信号的必要性进行说明,我们把触发脉冲tr分成了奇数个和偶数个两种情况来讨论。首先,初始化q1=0,q2=1,q3=1。之前提到过fpga内部逻辑的并发机制,因此在图3中以下进程是并发的:产生计数器使能标志flag1=~flag2的进程,产生q1波形的进程,产生q2波形的进程,产生q3波形的进程。当tr脉冲个数为奇数个时,如图4所示,在系统时钟的上升沿去判断flag1是否为‘1’。若flag1为‘1’,则q1置‘1’,并启动计数器计数。当计数器满时,q1变
8、为‘0’,下一个系统时钟上升沿到来后,q1又会被置‘1’,所以会出现如图4中q1的波形,这时候我们再设置一个q3信号,这个信号只在以flag1为使能信号的计数器满时回到稳态,如图4中的q3波形所示;若flag1为‘0’,则对计数器清零,这时的flag2为‘1’,因此以flag2为使能信号的计数器会启动计数,q2已初始化为‘1’,所以此时并没有置q2为‘1’的操作。同样该计数器满时,q2重新回到‘0’。最后再把q1,q2和q3做与运算得到最终的输出q=q1&q2&q3。当tr脉冲个数为偶数个时,实
此文档下载收益归作者所有