一种基于Verilog-HDL的可重触发单稳态电路的实现

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

1一种基于VerilogHDL的可重触发单稳态电路的实现摘要:具体介绍了单稳态电路的特点及实现原理,详细阐述了用veriloghdl进行编写设计的过程,同时在quartusii9.0中新建工程进行编译仿真,给出功能仿真的波形,并将该工程下载到fpga硬件板上,得到的运行结果与功能仿真的结果相同,验证了该设计的正确性。关键词:单稳态veriloghdl仿真1引言讲到单稳态电路,很容易想到54hc123,54hc6538和74ls123等单稳态集成电路。这些集成电路的特点是简单、方便,但也存在缺点:(1)专用单稳态集成电路中的宽度定时元件r、c是随温度、湿度等因素变化而变化的,在对其进行温度补偿时,调试过程相当繁琐,而且电路工作的可靠性也不高;(2)由于它不能在高密度的可编程逻辑器件中实现,如cpld,fpga等,因此在以大规模可编程逻辑器件为主的设计中会造成元器件数量增加,可靠性降低。为克服上述缺点,可以用逻辑电路来搭建纯数字化的单稳态电路。veriloghdl语言是目前应用最为广泛的硬件描述语言,用该语言进行设计最大的优点是其与工艺性无关。这使得工程师在功能设计,逻辑验证阶段可以不必过多考虑门级及工艺实现的具体细节,只需根据系统设计的要求施加不同的约束条件,即可设计出实际电路。2可重触发单稳态电路的特点2单稳态电路只有一个稳定状态,触发翻转后经过一段时间会回到原来的稳定状态,一般作固定脉冲宽度整形。单稳态电路的特点如下:(1)稳态和暂稳态两个不同的工作状态;(2)在外接触发脉冲作用下,从稳态翻转到暂稳态,在暂稳态维持一段时间后再自动返回稳态;(3)暂稳态维持时间的长短取决于电路本身的参数,与触发脉冲的宽度和幅度无关。可重触发是单稳态电路中较常用的一项功能,在工业控制中,如常用的看门狗电路,民用系统中,如住宅楼道公共照明系统等,都有很广泛的应用。可重触发功能是指在单稳态电路被触发后,在回到稳态之前仍可以继续进行触发,同时在此期间输出端始终保持为暂稳态不变,直到最后一次触发t时间后,才回到稳态。3单稳态电路设计的基本原理这里我们分两种情况讨论:一种是两个触发脉冲之间的间隔td大于计数器计数的时间tc;另一种是tdtc时,如图1所示,对触发脉冲进行检测,当检测到上升沿时,输出进入暂稳态,同时启动计数器,由于tdtc,所以计数器能够伴随系统时钟自增到设定好的值n,此时立即反馈回一个信号将输出置回稳态,同时计数器清零,等待下一个触发脉冲。tdtc时:这就是重触发的情况,如图2所示,同样对触发脉冲进行检测,当检测到上升沿时,输出进入暂稳态,同时启动计数器,3由于tdtc,所以计数器在计数到达设定好的值n之前会再次遇到一个触发脉冲,此时立即将计数器清零,同时保持暂稳态不变。由以上两种情况的讨论,可以看出在具体实现时其实我们只要遵守这样一个原则,即:检测到触发脉冲后,就将输出置为暂稳态,同时对计数器清零并重新开始计数,若计数器溢出则输出置回稳态,并将计数器清零。4用veriloghdl实现的具体方法本设计中,采用的是自上而下(top-down)的设计方法。veriloghdl设计的程序是并发程序,所以在设计中要把顺序执行的思想转变为并发设计的思想,另外fpga的内部逻辑采用的也是并发机制。接下来我们直接来看重触发是如何实现的。本设计方法采用了两个计数器使能标志flag1和flag2,这两个标志用来对计数器和输出进行控制,我们让flag1=~flag2,这样就相当于每次重触发时重新启动了一个不同的计数器使能标志,从而实现可重触发的功能。本次设计的思路用一个流程图表示,如图3所示。为了对图3中使用到三路并行信号的必要性进行说明,我们把触发脉冲tr分成了奇数个和偶数个两种情况来讨论。首先,初始化q1=0,q2=1,q3=1。之前提到过fpga内部逻辑的并发机制,因此在图3中以下进程是并发的:产生计数器使能标志flag1=~flag2的进程,产生q1波形的进程,产生q2波形的进程,产生q3波形的进程。当tr脉冲个数为奇数个时,如图4所示,在系统时钟的上升沿去判断flag1是否为‘1’。若flag1为‘1’,则q1置‘1’,并启动4计数器计数。当计数器满时,q1变为‘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脉冲个数为偶数个时,实现的方法与tr脉冲为奇数个的情况完全相同。只是在两个使能标志flag1,flag2以及q1和q2的时序上有些差别,从图5中可以看出。最终的输出也是q=q1&q2&q3。因此,我们在实际编写代码进行设计时并不需要将两种情况分开写,只要按照其中的一种情况进行编写,那么它自然而然地也适用于另一种情况。5功能仿真结果图6中所示的情况是两个触发脉冲之间的间隔td大于计数器计数的时间tc,我们可以看到:输出q在触发脉冲到来时进行触发,进入暂稳态,在下一个触发脉冲到达前,计数器已满,因此q又会回到稳态,等待下一个触发脉冲。图7中所示的情况是两个触发脉冲之间的间隔td小于计数器计数的时间tc,我们可以看到它与图5所不同的是q被触发以后,在下一个脉冲到达前,计数器未满,因此q在遇到下一个脉冲时会进行5重触发。最后一个脉冲触发以后,计数器可以一直计数到满,因此q又会回到稳态。6在fpga芯片上运行结果这里我们选择altera公司的fpga芯片ep2c8q208c8n,用quartusii9.0进行编译和综合,将最终生成的.sof文件下载到硬件板上运行的结果如图8所示,该结果与功能仿真的结果相同,验证了该设计的可行性。7总结本设计中输出的脉宽可以根据实际需要进行任意调整,可实现重触发,另外本设计充分利用了veriloghdl高级语言的特点,采用行为描述的方式,使人较容易理解,在一些较复杂的设计中,可以将本设计作为一个模块嵌入到自己的设计中。参考文献:[1]任孟阳,李景华.用vhdl语言实现的单稳态电路[j].2002中国控制与丧策学术年会论文集.[2]liuguisheng,linjiming,fanxiaoming.thedesigningandimplementationofmonostablepulse-expandingcircuitbasedonfpgadevice.journalofguilinuniversityofelectronictechnology,vol.05,2006.[3]袁俊泉,孙敏琪,曹瑞.veriloghdl数字系统设计及其应用[m].西安电子科技大学出版社,2002.6

1 / 6
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功