Jamie 发表于 2007-11-24 15:49:14

PCI6251产生8路不同频率和相位的方波

手上只有NI的PCI6251,现在想产生8路方波,具体要求为:
4组信号,四种频率,一组两路方波,其频率一样,相位不一样,这样的8路信号,想用DIO口输出,是否可以?频率为可调,范围为20K~150K。

[ 本帖最后由 Jamie 于 2007-11-24 16:08 编辑 ]

wdyjz 发表于 2007-11-24 16:13:02

方波当然没有问题了,就相当于单片机的CPL P2.0一样,每次对管脚的电平取反,而波形周期可以靠延时的方法,可以考虑定时循环结构,timed loop.,在内部进行延时的改变,从而改变高低电平的时间,从而改变占空比和频率。

如果用AO的方法,可以直接输出方波的波形了,不用这么麻烦。

wdyjz 发表于 2007-11-26 16:12:30

再给你提供一个方法,
原理:
PCI-6251 - Multifunction DAQThe National Instruments PCI-6251 is a high-speed multifunction M Series data acquisition (DAQ) board optimized for superior accuracy at fast sampling rates. For increased measurement accuracy, consider the high-accuracy M Series devices with an 18-bit analog-to-digital converter
        模拟输入: 16 SE/8 DI · 1.25 MS/s · 16 bits
模拟输出: 2 · 2.86 MS/s · 16 bits
数字I/O: 24 DIO · 10 MHz
计时器/定时器: 2 · 32 bits · 80 MHz

wdyjz 发表于 2007-11-26 16:15:55

方法;
每个IO的最大刷新速率10M/s,那么我只需要按照这个最大的刷新速率考虑即可。
我将一个方波(比如1000个点,其中500点为高电平5V),给定一个阈值2.5V,当大于这个阈值的时候,输出True,否则为False,则会形成一个新的T、F真假值的数组,for循环送给IO端口即可。
IO 物理刷新能力为10M,则点间为0.1us,
下面以50%的占空比为例:
比如要实现20K的方波,则需要保证一个周期为50us,那么50us需要多少点?
答案是: 高电平25us/0.1us=250个点;低电平为250个点;
比如要实现50K的方波,则需要保证一个周期为20us,那么20us需要多少点?
答案是: 高电平10us/0.1us=100个点;低电平为100个点;
只需要保证高低电平的点数合适,则就可以保证合适的方波了,当然也可以采用2个for loop,构造2个数组分别为高电平和低电平的点数构造,然后连接形成合适的方波,最后统一输出。

[ 本帖最后由 wdyjz 于 2007-11-26 17:08 编辑 ]

wdyjz 发表于 2007-11-27 09:55:43

解决方法3

采用外部时基,花10元人民币左右,来够造一个20MHz的晶振电路,输出5V、20MHZ的方波,送往counter输入,LabVIEW通过计数,来调整IO端子电平的高低控制,从而形成方波和一定的占空比,这个可以参考解决方案2;

wdyjz 发表于 2007-11-27 09:56:18

方法4、采用一个标准的信号发生器

采用一个标准的信号发生器+1路counter,参考方式2.

wdyjz 发表于 2007-11-27 09:57:51

解决方案5、采用counter的内部路由机制

利用counter内的自振荡和路由机制,根据脉冲个数来调整IO电平的高低电平变化。参考:DAQmx部分的例子和方式2.

wdyjz 发表于 2007-11-27 10:00:29

解决方案6、采用外部触发管脚+AI+外部振荡器时钟

采用外部触发管脚+AI+外部振荡器时钟,通过外部AI记录中断触发的个数,然后调节IO电平变化,参考方法2.
具体实现我没有做过,不过从示波器和信号发生器的角度思考,再加上单片机的定时、计数、外部中断的多年开发经验,可以移植到PCI-6251的IO控制上。
页: [1]
查看完整版本: PCI6251产生8路不同频率和相位的方波