计数器和输出信号
通常,当计数器的内部寄存器已经计数至满刻度值(端口数)时,它的输出会改变状态。CTM中的每个计数器都是16位,这意味着满刻度值是65535(216 – 1)。内部寄存器可以通过为计数器预先装载一个0到65535之间的值,为其设定好触及端口数的过程的开始状态。应用于计数器输入端口的时基信号的频率以及内部寄存器的初始值决定了输出端每隔多长时间会改变状态,以及所产生的输出信号。
下面展示了一个简化的图表,输入端每两次脉冲会使输出端改变一次状态。内部寄存器预加载的值为65533,与端口数相差为2.
考虑一个100赫兹方波生成的例子。如果计数器的输入是一个1M赫兹的信号,计数器必须在程序中使用10000的值以在输出端产生100赫兹的信号。每次当计数器从输入信号接收到累计10000个脉冲时,输出端会改变状态并生成所需的低频输出信号。
然而,假设需要一个1赫兹的方波,单个16位计数器就无法分割1M赫兹输入信号以完成任务。这种情况下,要么使用额外的计数器频道,要么选择一个频率更低的内部时基信号,这可以在CTM系列主板中获得。
CTM主板的特性与配置
CTM主板使用一个灵活又复杂的芯片:AM9513A,它可以为内部时基信号提供若干种选择,该时基信号会应用于芯片上的五个计数器。
Keithley的CTM主板使用了一个10M赫兹的晶体。然而这一信号在传送至任何一个计数器之前都会被分频。
10M赫兹的信号会降低到1M赫兹或者5M赫兹的信号。DriverLINX配置面板中的设置会控制主板/驱动器使用哪一个。下面图2中展示了选择1M赫兹的情况。也可以在下拉列表中选择5M赫兹的设置。要使设置的改变生效,需要在退出DriverLINX配置面板后重启。
CTM主板(AM9513A芯片)还有一个可编程的分频器,可以进一步将1M赫兹或5M赫兹的信号降频,然后再应用至计数器输入端。这个可编程的分频器通过核心的1M赫兹或5M赫兹又额外提供了4个时基频率。CTM-10和CTM-05/A用户手册中的附录D包含了这一晶体谐振分频器(AM95133A芯片的MM15的主模式寄存器)的更多信息。
分频器可以使用BCD或二进制分频(除以10或16),图3是一张屏幕截图,展示了当DriverLINX的配置面板中”Special”按钮被点击时弹出的对话框。单选按钮可以控制是使用二进制还是BCD分频去进一步降低在”Counter/Timer”标签中选定的时基频率分辨率。
应用信息
下表概括了可用于计数器输入的输入频率,依赖于DriverLINX的设置。
表中的时钟(rateClock)栏可参考DriverLINX的编程语法,用于选择输入计数器的信号。当使用DriverLINX的ActiveX应用程序接口(通常是VB或Delphi)时,该属性是.Evt_Tim_rateClock, 当使用DLL应用程序接口(通常是C/C++)时,SR结构中的timing.u.rateEvent.clock会被使用。
从图4再回到1赫兹方波的目标,在前面的讨论中,我们受到1M赫兹时基信号的约束。根据以上信息,DriverLINX配置可提供许多方法来获得更慢的时基信号。为方便讨论,可以假定DriverLINX被配置为使用1M赫兹分辨率以及BCD频率分频。通过在代码中选择internal5时基信号,并在为计数器编程时使用值100,就能够得到一个1赫兹的输出信号。