时域反射仪的硬件设计与实现----关键电路设计(三)
本系统的存储深度为3K,对应了10个波形显示区,即实际波形显示范围只占到总共采集到的波形的十分之一。图4-31为预触发设计结构图。

从预触发电路结构图中可以看出,整个电路主要包括四个部分:触发信号输入、RAM地址计数、预触发计数、后触发计数。在触发源选择由一个二选一选择器,可以选择内部脉冲信号触发。当用内部产生的脉冲信号作为触发信号时,在FPGA内部己经启动了脉冲时域测量信号产生模块,因此选择了直接用脉冲信号上升沿作为触发信息。在这里并没有采用从通道进来的脉冲信号,是因为从通道进来的脉冲信号并不是周期信号,同时在通道上还有反射回的脉冲信号,如果前一次触发是发射脉冲,下一次触发有可能不是发射脉冲,而有可能是反射脉冲,则显示出来的信号就有可能不正确,无法正常观察脉冲信号,因此只有采用内部触发,且在此状态下只有一种触发信号,即发射脉冲信号,不会出现触发不正确的情况。当然采用触发释抑的方式也可以解决上述问题,这样的话就可以选择通道脉冲信号来触发,但是需要设计额外的数字电路,因此在这里没有采用。
预触发电路的工作顺序大体上分为四个步骤,首先由ARM对模块进行初始化,则所有的计数器清零。预触发计数器和RAM地址计数器同时开始计数,计数时钟与时基相对应。当预触发计数器达到设定值(1K)以后,产生一个高电平信号,该高电平信号作为触发使能信号,而在此之前触发信号被屏蔽掉的。如果触发使能以后还没有来触发脉冲信号,RAM地址计数器仍然保持计数状态。直到有触发脉冲到来,后触发计数器开始计数,而RAM地址计数器仍然保持计数状态,后触发计数器的计数值大小(2K)等于存储深度(3K)减去预触发计数值大小,当后触发计数器计数达到设定计数值(2K)以后,就会产生一个高电平,将计数时钟改为由ARM来提供,当ARM检测到该高电平以后,就会通过软件来发时钟,使RAM地址计数器重复计数,每发送一个时钟,ARM就会从RAM中读取一个数据,直到发送3K个时钟后,将RAM中的所有数据读出。预触发电路的工作流程图如图4-32所示。

在触发电路工作中有一个关键地方决定了预触发的实现,那就是一直处于工作状态下的RAM地址计数器,从模块初始化以后,RAM地址计数器一直都处于计数状态,当触发使能后,而又没有触发脉冲到来的时候,RAM地址计数器也保持计数状态;当后触发计数结束以后,RAM计数才暂时停止,而整个模块从开始计数到后触发计数结束,RAM计数器的计数时钟次数大于预触发计数器和后触发计数器之和(3K),也就是说,在后触发计数器停止之前,RAM计数器已经计数满,并又从0开始重新计数,直到后触发计数器停止时它才停止。在这里RAM就类似于一个环状的存储器,其工作方式如图4-33所示。

在上图的a图中表示的是预触发初始化以后,RAM从1号地址开始将采集到的数据写入RAM即从A点开始写数据,写满IK数据以后,触发使能打开,RAM到达B点。B图表示触发使能以后,仍触发信号,则继续将数据写入RAM内,直到C点,此时触发信号到来。c图表示触发信号到来以后,RAM被继续写入数据,当RAM计数器计到3K点后,回到了A点,而此时后触发计数器还没有停止,因此RAM计数器从0开始继续计数,直到到达D点,此时后触发器计数停止,RAM计数器也停止。也就
评论