
VHDL程序语言对于很多新人工程师来说是一道非常难以跨越的门槛,然而,看似困难的程序编写,其实也是有一定的组成方式的。熟悉其排列组合的规则后,工程师可以利用VHDL完成一些复杂电路的设计。本文将会就如何利用VHDL程序语言完成单次触发的单稳态电路设计,进行简析,下面就让我们一起来看看吧。
相信很多工程师都了解的一点是,单次触发的单稳态电路在电源设计过程中是最基本的单稳态电路。它被触发后,在设定的延时时间T内(在这里即输出端4为'1'时),触发端将被屏蔽,直到电路回到稳态,即输出端9为'0',才能进行下一次触发。其源程序如下:
在了解了这一VHDL源程序的编写情况后,下面针对其端口和信号程序编写情况进行详细说明。在这一单次触发的单稳态电路程序设计中,clr为异步清零输人端口,elk为单稳延时计数器的时钟输人端为单稳态电路的输出端口,q-tf为在两个进程中传递状态的中间信号,cnt为控制输出脉冲宽度的计数信号。整个程序使用了两个process进程,分别处理触发脉冲和计数时钟,这是因为在VHDL语言中一个process语句不能处理两个边沿时钟。
那么,这一VHDL程序在单次触发的单稳态电路运行过程中,是如何完成一个指令的执行过程的呢?通过上文中所给出的VHDL源程序设计方案,可以判断出,在这一电路中一个程序的执行过程可以分为三个步骤。首先是外部信号复位过程。输人复位信号clr为'1'时,启动TRIGGER进程,使输出端q输出为'0',同时q为'0,启动COUNT进程,使cnt和q_tf清零,q.tf为'0,后又会启动TRIG-GER进程,使该进程处于等待触发状态。
外部信号的复位指令全部完成后,接下来就是触发过程的指令执行工作了。触发信号tr的上升沿启动TRIGGER进程,使输出端q变为'1',同时q为,I'启动COUNT进程,使该进程处于循环计数状态,每个elk上升沿的到来使计数器cnt加1>同时输出端保持q为'1'不变,直到cnt计数到所设定的值(这里是7,即7个elk周期)时,信号q.tf变为'1',并再次启动TRIGGER进程,使输出端q输出为'0',此时,触发过程结束。
最后一步要进行的,是这一单次触发的单稳态电路自动复位指令执行过程。在完成了触发指令的执行后,此时这一单稳态电路的输出端4变为'01',程序再次启动COUNT进程,重新使.nt和q_tf清零,q.tf为'0'后会启动TRIGGER进程,使该进程处于等待下一次触发的状态。到此,整个单稳态电路的一个完整工作周期就结束了。
为了检测这一VHDL源程序的设计正确与否,以及这一单次触发的单稳态电路的运行情况,本文利用ModelSimSE5.5e仿真软件对这一电路进行了仿真,其功能仿真的波形图如下图图1所示。
从图1所给出的单稳态程序仿离波形可以很明显的看出,本文所设计的这一VHDL源程序完全符合单稳态电路的要求。由于在此例中计数器cnt的设定值为7,因此输出端在被触发后的第8个elk上升沿变为'0',即持续了7个时钟周期。由此可见输出脉冲的脉宽精度很高,小于一个clk周期,符合设计要求。
声明:本内容为作者独立观点,不代表电源网。本网站原创内容,如需转载,请注明出处;本网站转载的内容(文章、图片、视频)等资料版权归原作者所有。如我们采用了您不宜公开的文章或图片,未能及时和您确认,避免给双方造成不必要的经济损失,请电邮联系我们,以便迅速采取适当处理措施;欢迎投稿,邮箱∶editor@netbroad.com。