2

关于投票
怎样选择合适的信号发生器?

本文介绍了传统信号发生器的任意波形、函数和RF信号发生器的工作原理,以及基本的模拟输出模型和使用方法。

<!--[if !vml]--><!--[endif]-->

信号发生器的表现方式有很多种,其中普遍的就是模拟输出模型的任意波形、函数和RF信号发生器,针对不同的应用他们的特征和功能各有不同。

 

任意波形发生器(AWCs)针对应用需求,具有深度记忆、宽动态范围、高带宽的特点,例如:通信和IC组成系统测试领域。AWGs通过PC接收用户定义数据并且通过这些数据产生任意波形,用户可以根据需要产生一些列片上存储任意波形。通常,可以存储实际的波形和形成这些波形所需的波形序列指令。

 

利用AWG产生波形,先要生成一个任意波形,产生顺序通常经过TTL硬件触发。波形通过单独抽样产生,抽样频率由片上抽样时钟决定。

 

DDS

 

Figure 1: Waveform passes through memory to a DAC, which translates digital samples into the desired analog output.

 

图示为内部抽样时钟驱动示意图,包括直接数字合成(DDS)和驱动时钟,以及外部时钟。产生片上锁相回路相关频率可以由多种方法产生。

 

波形通过存储器传到DAC(如图一示),由数字信号转变成需要的模拟输出波形。DAC之前用来抽样的数字滤波器也变成了模拟滤波器。数字或者模拟滤波器通过谐波低通滤波器增加有效的抽样率修复或者去除纹波,提高信号质量。

 

波形循环
 

AWGs能够通过重复合成波形分析波段,通过片上记忆存储波形,波形的长度是有限度的。波形循环可以多次重复产生波形,提高存储效率、增加波形潜在持续时间。

 

AWGs还可以细化波形状态,包括波段和循环信息。他们逐个生成定义波段,通过波形的排序和循环,能够用最少的存储空间合成高难度波形。AWGs能够同时分析不同波形,但是存在一定的不连续相移。

 

许多AWGs具备模拟函数发生器功能,当要生成标准函数波形时,可以通过软件产生,下载到AWG上使用。这和DDS技术大不相同,函数发生器通过可调频率生成正弦、方波和三角波,他们不需要电脑或者存储缓冲器提供连续输入信号,因为驱动本身就能动态生成波形。

 

函数发生器可以是数字也可以是模拟的,模拟函数发生器通过模拟硬件生成简单的函数信号,例如特定频率的静态正弦或者方波信号。

 

数字函数发生器利用DDS、DAC、信号处理、单周期存储缓冲器动态产生信号。DDS技术依赖数字控制的方法,利用单基准时钟频率来实现一个模拟频率源。能够实现高频率、高精度、高温度稳定性、高带宽以及随机的相位连续频率转换。

dds

Figure 2: In a DDS function generator, one complete cycle of the function waveform is stored in the memory LUT.

 
http://www.eefocus.com/bbs/article_5696.html
系统分类: 测试测量
用户分类:
标签: 无标签
来源: 转贴
发表评论 阅读全文(155) | 回复(0)

0

关于投票
差分信号——生存法则
差分信号——生存法则
 

作者:Douglas Brooks

翻译:Michael Qiao

 

Michael Qiao的声明:翻译本文档纯属兴趣爱好,没有任何商业目的。本文档的著作全归属原作者Douglas Brooks 博士及UltraCAD Design Inc.所有。转载及使用本文档所产生的法 律风险由使用者自行承担,本人不承担任何法律责任。

 

我们通常认为信号以三种模式沿电路传播:单端、差模或共模。

 

单模是我们最熟悉的。它包括介于驱动器与接收器之间的单根导线或走线。信号沿走线传播并从地返回1

 

差模包括介于驱动器与接收器的一对走线(或导线)。我们一般认为其中一根走线传送正信号而另一根传送负信号,并且大小相等极性相反,没有通过地的返回信号;信号沿一根走线前进并从另外一根返回。

 

共模信号通常更难于理解。既可以包括单端走线也可以包括两个(可能更多)差分走线。同样的信号沿走线以及返回路径(地)或者沿差分对中的两根走线流动。大部分人往往对共模信号不熟悉,因为我们自己从来不会故意产生它们。它们通常是由从其它(邻近或外部)源耦合进电路的噪声引起的。一般来讲,结果最好情况是中性的,最坏情况是具有破坏性的。共模信号能够产生干扰电路正常运行的噪声,并且是常见的EMI 问题的来源。

优点:差分信号相比单端信号有一个显著的缺点:需要两根走线而不是一根,或者两倍的电路板面积。但是差分信号有几个优点:如果没有通过地的返回信号,地回路的连续性相对就变得不重要了。因此,假如我们有一个模拟信号通过差分对连接到数字器件,就无需担心跨越电源边界,平面不连续等等问题。差分器件的电源分割也更容易处理2。差分电路在低压信号的应用中是非常有益的。如果信号电平非常低,或者如果信噪比是个问题,那么差分信号可以有效地倍增信号电平(+v-(-v)=2v)。差分信号和差分放大器通常用于信号电平非常低的系统的输入级。

差分接收器往往对输入信号电平的差敏感,但是常常被设计为对输入的共模偏移不敏感。因此在强噪声环境中差分信号往往比单端信号有着更好的性能。

 

相比单端信号(以一个不太精确的受电路板其他位置的噪声的干扰的信号为参考)差分信号(彼此互为参考)的翻转时序可以更精确地设定。差分对的交叉点定义得非常精确(图1)。单端信号位于逻辑1 和逻辑0 之间的交叉点受制于(举例)噪声、噪声门限以及门限检测问题等等。

 

重要假设:差分信号的一个重要方面常常被工程师或者设计人员忽略,甚至有时被误解。我们从两条广为人知的规则开始:(a)电流在一个闭合的环路内流动以及(b)电流在环路内处处相等。

考虑差分对的“正”走线。电流沿走线流动并且必须在一个环路内流动,通常从地返回。另外一根走线中的负信号也必须在一个环路内流动,通常也从地返回。这很容易明白如果我们暂时想象一个差分对中的一根走线上的电流保持不变。另一根走线中的信号必须从某个地方返回并且很清楚返回路径应该是单端信号的返回路径(地)。我们说差分对没有通过地的返回信号不是因为不能,而是因为返回信号的确存在并且大小相等且极性相反所以相互抵销了(和为零)。这一点非常重要。如果从一个信号(+i)返回的信号严格等于,且符号相反,另一个信号(-i),那么它们的和(+i-i)为零,没有电流从任何地方流过(特别是地)。现在假定信号并非严格相等且极性相反。设一个为+i1 另一个为-i2。这里i1 i2 的值近似但是不等。返回电流的和为(i1-i2)。因为不是零,这个增加的电流必须从某个地方返回,推测应该是地。

你说什么?那么让我们假定发送电路发送一对差分信号,严格相等且极性相反。再假定他们在路径的终点仍然如此。但是如果路径长度不等会如何呢?如果(差分对中的)一条路径比另外一条长,那么信号在传输到接收器的阶段就不再是严格相等且极性相反了(图2)。如果信号在它们从一个状态到另一个状态的转变过程中不再是严格相等且相反,没有电流流经地就不再是正确的了。如果有流经地的电流存在,那么电源完整性就一定成为一个问题,并且可能EMI也会成为一个问题。

设计规则1:我们处理差分信号的第一个规则是:走线必须等长。有人激烈地反对这条规则。通常他们的争论的基础包括了信号时序。他们详尽地指出许多差分电路可以容忍差分信号两个部分相当的时序偏差而仍然能够可靠地进行翻转。根据使用的不同的逻辑门系列,可以容忍500 mil 的走线长度偏差。并且这些人们能够将这些情况用器件规范和信号时序图非常详尽地描绘出来。问题是,他们没有抓住要点!差分走线必须等长的原因与信号时序几乎没有任何关系。与之相关的仅仅是假定差分信号是大小相等且极性相反的以及如果这个假设不成立将会发生什么。将会发生的是:不受控的地电流开始流动,最好情况是良性的,最坏情况将导致严重的共模EMI问题。

 

因此,如果你依赖这样的假定,即:差分信号是大小相等且极性相反,并且因此没有通过地的电流,那么这个假定的一个必要推论就是差分信号对的长度必须相等。差分信号与环路面积:如果我们的差分电路处理的信号有着较慢的上升时间,高速设计规则不是问题。但是,假设我们正在处理的信号有着有较快的上升时间,什么样的额外的问题开始在差分线上发生呢?考虑一个设计,一对差分线从驱动器到接收器,跨越一个平面。同时假设走线长度完全相等,信号严格大小相等且极性相反。因此,没有通过地的返回电流。但是,尽管如此,平面层上存在一个感应电流!

 

任何高速信号都能够(并且一定会)在相邻电路(或者平面)产生一个耦合信号。这种机制与串扰的机制完全相同。这是由电磁耦合,互感耦合与互容耦合的综合效果,引起的。因此,如同单端信号的返回电流倾向于在直接位于走线下方的平面上传播,差分线也会在其下方的平面上产生一个感应电流。

 

但这不是返回电流。所有的返回电流已经抵消了。因此,这纯粹是平面上的耦合噪声。问题是,如果电流必须在一个环路中流动,剩下来的电流到哪里去了呢?记住,我们有两根走线,其信号大小相等极性相反。其中一根走线在平面一个方向上耦合了一个信号,另一根在平面另一个方向上耦合了一个信号。平面上这两个耦合电流大小相等(假设其它方面设计得很好)。因此电流完全在差分走线下方的一个环路中流动(图3)。它们看上去就像是涡流。耦合电流在其中流动的环路由(a)差分线自身和(b)走线在每个端点之间的间隔来定义。

 

 

设计规则2:现在EMI 与环路面积已是广为人知了3。因此如果我们想控制EMI,就需要将环路面积最小化。并且做到这一点的方法引出了我们的第二条设计规则:将差分线彼此靠近布线。有人反对这条规则,事实上这条规则在上升时间较慢并且EMI 不是问题时并不是必须的。但是在高速环境中,差分线彼此靠得越近布线,走线下方所感应的电流的环路就越小,EMI 也可以得到更好的控制。

 

值得一提的是一些工程师要求设计人员去掉差分线下方的平面。原因之一是减小或消除走线下方的感应电流环路。另外一个原因是防止平面上已有的噪声耦合到(推测如此)走线上的低压信号4

 

还有一个将差分线彼此靠近布线的理由。差分接收器设计为对输入信号的差敏感而对输入的共模偏移不敏感。也就是说即使(+)输入相对(-)输入仅有轻微的偏移,接收器也会检测到。但是如果(+)和(-)输入一起偏移(在同样的方向),相对而言接收器对这种偏移不敏感。因此如果任何外部噪声(比如EMI 或串扰)等同地耦合到差分线中,接收器将对此种(共模耦合)噪声不敏感。差分线布得越彼此靠近,任何偶合噪声在每根走线上就越相近。因此电路的噪声抑制就越好。

 

规则2

推论:再次假定高速环境中,如果差分线彼此紧挨着布线(为了使其下方的环路面积最小化)那么走线将彼此耦合。如果走线足够长以至于端接成为一个问题,这种耦合就会影响到确切的端接阻抗5的计算。原因是:

考虑一个差分线对,线1 和线2。假使它们分别携带信号V1 V2。因为它们是差分线,V2=V1V1 在线1 引起一个电流I1 V2在线2 引起一个电流I2。电流必然是从欧姆定律导出,I=V/Z0,这里Z0 是走线的特征阻抗。现在线1(举例)携带的电流事实上由i1 k*i2 组成,这里k 是线1 与线2 间的耦合比例。这表明这种耦合的最终效果是线1 上的一个明显的阻抗,这个阻抗等于Z=Z0-Z12这里Z12 由线1 与线2 间的互耦6引起。如果线1 和线2 分得很开,它们之间的耦合就很小,确切的端接阻抗就只是Z0,单端走线的特征阻抗。但是如果走线靠的更近,它们之间的耦合就会增加,这样走线的阻抗与这种耦合成比例地减小。这就是说确切的走线端接(为了防止反射)为Z0-Z12,或者某个小于Z0 的值。这对差分对的两根走线都适用。因为没有流经地的电流(大概这是个假设)那么端接电阻被连接在线1 和线2 之间,且确切的端接阻抗算得是2(Z0-

Z12)。这个值经常被叫做“差分阻抗”7

 

设计规则3:差分阻抗因互耦而变,而互耦因线距而变。因此在任何情况下,走线阻抗,也就是互耦,在全线为常数是很重要的。这就得到了我们的第三个规则:(差分对的)线距必须在全线为常数。

 

注意对差分阻抗的影响只是规则2 的推论。差分阻抗根本不是与生俱来的。我们要把差分线彼此靠近布线与EMI 和噪声免疫有关。它对“长”线确切端接以及线距一致性的影响的事实只不过是为了EMI 控制而将走线彼此靠近布线的一个推论8

 

结论:差分信号有几个优点,它们中的三个是(a)与电源系统有效隔离,(b)对噪声免疫,和(c)增强信噪比。与电源系统(特别是系统地)隔离依赖于差分线上的信号真正地大小相等且极性相反。这个假定也许不成立,如果差分对中单个线长不完全匹配。对噪声的免疫经常依赖于走线的紧耦合。这将依次影响到为防止反射而对走线进行正确的端接的值,以及如果走线必须紧耦合,通常也是需要的,它们的间距必须全线为常数。

————————————————————————————————————————————

 

1 事实上信号可以仅仅/同时从地或电源系统返回。在这篇文章中我通篇使用单个术语“地”

完全是为了方便。

2 光耦器件是解决这类问题的另一种方法。

3 参见"Loop Areas: Close 'Em Tight", January, 1999

4 据我所知没有权威的研究支持或者反驳这个惯例。

5 阻抗控制走线在行业中有许多参考。比如,参见"PCB Impedance Control: Formulas and

Resources", March, 1998; "Impedance Terminations: What's the Value?" March, 1999; "What

Is Characteristic Impedance" by Eric Bogatin, January, 2000, 18 页。

6 参见"Differential Impedance: What's the Difference", August, 1998

7 对线对的差模及共模成分的有趣讨论,参见"Terminating Differential Signals on PCBs",

Steve Kaufer and Kellee Crisafalu, March, 1999, 25 页。

 
系统分类: 测试测量
用户分类:
标签: 无标签
来源: 转贴
发表评论 阅读全文(132) | 回复(0)

2

关于投票
扫描频率高达20GHz的手持式频谱分析仪
频谱分析是RF和微波频率的基本测量能力,几乎与较低频率时采用的伏特计一样重要。但是,Anritsu公司(www.anritsu.com)最新便携式频谱分析仪系列的性能已经远远超越了频谱分析的能力范围。该公司的B系列型号MS2721B、MS2723B和MS2724B Spectrum Master手持式频谱分析仪是频率范围分别为9kHz~7.1GHz、9kHz~13GHz和9kHz~20GHz的高性能分析仪。但是即使是内置了前置放大器和AM/FM/SSB解调器的最高频率模式的产品,其重量也不到8lbs.(相当于3.6kg)。

新的Spectrum Master手持式分析仪基于以前推出的工作频率达7.1GHz的经济型低频率产品线,如频率范围为100kHz~3GHz、噪声电平高于新产品的MS2711B,以及频率范围为100kHz~7.1GHz的经济型分析仪MS2717A。与先前的型号相比,新的分析仪系列(图1)的噪声电平更低,并新产品具有支持准音频测试和高频限度的低频率扩展功能,可以最大限度地捕捉微波信号。

高性能Spectrum Master分析仪采用首次在Anritsu无线现场测试仪和基站便携式测试仪Site Master产品线中引进的封装。每个分析仪前端都有一个对角线为8英寸的大型高级VGA (SVGA)全色彩液晶显示(LCD)屏,可在测试时显示信号,并在左边显示关键的仪器设置,如分辨率带宽滤波器、视频带宽滤波器、扫描速度和输入衰减。屏幕右方会根据所选功能按钮出现各种控制选项,如用于频率控制的起始和停止频率。另外右边还有光标控制和间隔很宽的数字键盘按钮,可直接进行数字输入;次级功能在这些键的下方,可从前面板进行简单的Spectrum Master控制。

扫描频率高达20GHz的手持式频谱分析仪

MS2724B(图2)的频率范围为9kHz~20GHz,专用于大部分商业无线标准和高宽带军事雷达测试。该分析仪与其低频率的同类产品同时使用时,可提供1Hz~3MHz的数字分辨率带宽滤波器,可实现复杂信号的精密检查,并且不会牺牲较低滤波器带宽的扫描速度。视频带宽滤波器可在1Hz~3MHz范围内按1-3的顺序进行选择。这些分析仪可在1Hz内调至这些滤波器的分辨率,并且可以控制最低为10Hz,最高为仪器全频带宽(MS2724B为20GHz)的测试范围。这几个分析仪全部可以进行zerospan测量,这在检查宽带调制信号时非常有用。用于全程扫描的扫描时间为100ms,用于zerospan测量的扫描时间则为10?s,都非常短。新的分析仪可以执行正峰值检测、负峰值检测、采样检测、均方根(RMS)检测和准峰值检测,支持对大量CW、猝发信号或脉冲信号的测量。这三种Spectrum Master分析仪都具有准峰值检测器和用于EMC预兼容测试的CISPR带宽。

扫描频率高达20GHz的手持式频谱分析仪

Spectrum Master系列产品的幅度测量范围取决于能够测得的最高电平信号和最低电平信号。最低电平被定义为显示的平均噪声电平(DANL)。在频率为20GHz的MS2724B分析仪中,具有1Hz分辨率带宽滤波器的DANL在10MHz~4GHz为-139dBm,4~10GHz为-136dBm,10~13GHz为-130dBm,13~20GHz为-136dB。由于这三款Spectrum Master分析仪均内置了低噪声前置放大器,因此DANL可以通过这个前置放大器(100kHz~4GHz)在10MHz~1GHz提高至-159dBm,1~3GHz达到-156dBm,3~4GHz达到-154dBm。当处于测量范围另一端时,Spectrum Master分析仪被设计成处理1W(+30dBm)的输入信号,并在前置放大器关闭时提供典型的三阶截取(TOI)性能:0.5~2GHz时+8dBm、2~6GHz时+10dBm、6~20GHz时+12dBm。为了保护前端不发生过载,这些分析仪配备了宽带微波衰减器,能以5dB的步长在0~65dB之间调整。

这些分析仪的核心为一个具有优良稳定性的同步本地振荡器(LO)。内部LO的单边带(SSB)相位噪声为:20GHz载波10kHz偏差时为-95dBc/Hz、20GHz载波100kHz偏差时为-97dBc/Hz、20GHz载波1MHz偏差时为-105dBc/Hz、20GHz载波10MHz偏差时为-102dBc/Hz(基本上为本底噪声)。剩余的寄生噪声在13GHz以上的频率时为-85dBc或更低,13GHz频率以下时低于-90dBc。

与其低频率Spectrum Master同类产品配合使用时,这些新的分析仪具有大量标记功能(可以使用6个标记,每个标记都有一个delta函数用于有效的12个总屏幕标记)、限制线和自动测试功能(Anritsu公司称之为“智能测量”)。这些自动测量功能包括占用带宽、信信功率、载干比(C/I,Carrier to Interference ratio)、场强和邻信道功率比(ACPR)。由于使用波形重叠功能可同时在屏幕上显示三条波形(A、B和C),因此波形存储由安装的小型闪存(CF)卡的内存量决定,对于256MB的小型闪存卡,波形存储为大约13,000条波形和超过10,000次仪器校准。

每个Spectrum Master分析仪都提供通用显示功能,从而更好地理解和分析捕捉的数据。例如,频谱显示用来检查频率为850~910MHz、具有彩色功率电平的蜂窝范围,以帮助简化分析(图3)。

扫描频率高达20GHz的手持式频谱分析仪

这些新款Spectrum Master分析仪都配有各种可选功能,如支持标量网络分析仪(SNA)型扫描频率测量的波形发生器。可选的波形发生器可以产生步长为0.1dB功率范围为-40~0dBm的450kHz~7.1GHz的校准信号。另外,采用PSN50型号的功率计传感器,通过USB与分析仪相连,还可以增加精确的功率测量能力;信道扫描功能可以简化无线标准信道的分析,如GSM和UMTS系统;内置的全球定位系统(GPS)接收器可以提供精确的位置指示;WCDMA/HSDPA RF测量功能则可以检测和显示高级无线通信信号。例如,信道扫描显示用于分析935.0~936.8MHz的GSM 900信号,可根据频率和功率电平清晰地显示每个信道(图4)。GSP可选功能可以在分析UMTS波段1下游链路时打开,从而为被测信号提供位置代码(图5)。

扫描频率高达20GHz的手持式频谱分析仪

扫描频率高达20GHz的手持式频谱分析仪

为了给其便携性增加多功能,MS2721B、MS2723B和MS2724B Spectrum Master分析仪配备了带有多种可选择语言的控制器,包括英语、西班牙语、意大利语、法语、德语、日语、韩语和中文。这些分析仪上还有用于输入测试信号和可选波形发生器的N型插孔、用于可选GSP天线的BNC插孔、用于连接局域网(LAN)的RJ45以太网连接器,以及用于连接闪存驱动器、PSN50功率计和PC的通用串行总线(2.0)连接器。

这些便携型手持式分析仪是按MIL-PRF-28800F 2类要求设计制造的,能耐受要求苛刻的场内应用,是频谱监视、安全和智能要求、RF/微波测量或蜂窝信号测量的理想选择。这些分析仪都配有充电电池,每次充电可工作两小时以上。

作者:Jack Browne,《Microwave & RF》

系统分类: 测试测量
用户分类:
标签: 无标签
来源: 转贴
发表评论 阅读全文(127) | 回复(2)

0

关于投票
通过捕捉与分析视频帧来加快视频设备的开发和调试速度

墨菲定律告诉我们“有可能出错的事,就一定会出错”。在视频设备的测试或生产过程中,出问题的时候往往是我们最不想出问题和最不方便解决的时候。其中,数字域的视频问题经常是随机发生,因而最难判断和隔离。所以,在解决此类问题时,能够检测视频信号中错误状态的视频监控和测量设备就显得必不可少。具备CaptureVu功能的泰克公司最新波形监视仪就能在视频信号出错时,捕捉一个完整的视频帧,并将其保存到仪器内部的存储器中。

用户可以通过菜单选项手动捕捉视频数据,也可以让仪器在发现表1所列的任何一种视频错误时,自动捕捉一个视频帧。表1中的触发条件涵盖了SDI信号格式或视频信号电平中的一系列错误。

用户可以使用“触发类型(Trigger Type)”菜单在仪器所支持的触发类型中任意选择。配置好触发菜单后,就可以将仪器设置为运行模式,等待第一次出现任何与用户所选触发模式相匹配的错误。在发现错误后,波形监视仪会将包含该错误的视频帧捕捉下来,并存储在仪器的内部存储器中。

参考样本的捕捉

波形监视仪可以在波形窗口、矢量窗口、色域窗口或图像窗口显示捕捉到的数据。在波形窗口(矢量窗口、色窗口和图像窗口),捕捉到的信号以黄色迹线显示。用户可以单独观察捕捉到的信号迹线,也可将其与当前视频信号的迹线进行比较。这与大家熟知的截屏所用的“冻结”模式类似,所不同的是,采用截屏方式“冻结”迹线或图像后,仪器无法同时创建一个与捕捉到的屏幕图像不同的新显示窗口。

采用CaptureVu技术存储下来的是一个完整的视频帧,因此仪器可以根据捕捉到的数据重建任何一种它本身支持的显示图像。例如,假设仪器捕捉到的是包含一个RGB色域错误的视频帧,而最初仪器是在配置为YPbPr显示模式的波形窗口下显示捕捉到的数据。为了看清包含色域错误的信号成分,用户可能想在配置为YRGB显示模式的显示窗口下查看该数据。这时,只需简单地将波形显示模式改为YRGB显示,仪器就能自动创建一个新的波形显示窗口,以YRGB模式显示捕捉到的数据。用户可以将其与另一个窗口显示的YRGB模式下的当前信号进行比较。此外,用户还可选择利用泰克的Diamond显示来分析捕捉到的信号中的色域错误。此时,仪器又会为捕捉到的数据创建一种全新的显示。

图1 利用WFM7100的CaptureVu功能捕捉存在RGB色域错误的图像。
图1 利用WFM7100的CaptureVu功能捕捉存在RGB色域错误的图像。

用户还可采用仪器面板上的USB接口将捕捉到的视频帧数据存储到USB记忆棒中。之后,也可从USB记忆棒中将数据导回本仪器或其他仪器中。例如,工程师在现场捕捉到一帧包含错误的视频数据后,可以将数据带回测试中心与同事们共同研究,而测试中心的工程师则可以在另一台波形监视仪上恢复该数据,并从中查找问题。

视频格式错误,手动捕捉,“黄金参考”校准

再举个例子,假设工作人员要为下次生产校准相机。通常相机校准是利用一套相机测试图表并在波形监视仪上测量拍摄得到的信号实现的。如果采用了带CaptureVu功能的泰克监视仪,那么在一台相机完成校准之后,操作员就可以利用CaptureVu手动捕捉一组视频信号,然后将保存下的数据作为“黄金参考”。其他相机的校准就可以通过比照其拍摄信号的显示与之前保存下来的参考相机拍摄信号的显示来实现。由于CaptureVu是利用原始视频数据来创建显示图像,因此操作员可以通过各种波形显示、矢量显示、色域显示和图像显示来比较被校准相机与参考相机的输出。而且,通过向USB记忆棒中保存数据,操作员还可以比较不同时刻相机的校准情况,检查在使用时间增加后或摄影棚内条件变化后,相机性能是否出现劣化。

在视频设备的设计和调试中,工程师可以利用这种捕捉功能诊断视频格式中的错误。通常,这些错误类型都是间歇性出现的,而且可能很难将其从视频信号中分离出来。但有了CaptureVu,工程师只需配置好波形监视仪,利用仪器监视视频信号,捕捉包含错误的视频帧。仪器检测并捕捉到一个错误帧之后,会在错误日志中记录捕捉时间。如此一来,工程师通过查看错误日志就能确定,当视频信号通路中的某些设备或其他系统发生改变,从而导致视频信号源出现了变动时,这些错误是否以某个固定的时间间隔出现。


CaptureVu捕捉到的完整视频帧中既包含有效图像数据也包含辅助数据,并且这些数据以一种专有格式存储至USB记忆棒中。泰克已为此开发了一套实用程序,可按以下多种方式读取和格式化捕捉到的数据:

? 简单的CSV文件,其中包含捕捉到的数据中的原始Cb,Y,Cr,Y*样本。该文件不能直接导出至电子表格软件,但用户自行开发的应用程序可将其用作原始文本文件输入。

? 针对Excel优化的CSV文件,可导出至Excel,包含单独的样本和行序号。

? 泰克TG700测试信号发生器可使用的 *.PIC文件。以这种格式存储的数据可以直接作为一帧完整的图像发送到TG700中去。文件中只包含TG700需要的有效图像数据,辅助数据和空白数据由TG700模块自行插入。

该实用程序可从泰克网站上下载。

当采用Excel电子表格格式时,数据按照Cb, Y, Cr, Y*的顺序出现。每个16进制数值之前都有一个“x”前缀,而且在电子表格顶部会出现一个如表2所示的表头。

表头提供的信息包括被捕获数据出现的时间、捕获数据中存在的触发错误类型以及视频信号格式。在表2所示的例子中,信号是一个包含1920x1080有效图像面积的1080i59.94信号。

在电子表格程序中,工程师可以采用各种手段对数据进行分类和搜索,也可以开发Visual Basic程序,通过多种方式进行数据搜索和格式化。例如,它们可以在所有数据中查找有效视频的起始点和结束点(序号为x3FF, x000, x000)。类似的,工程师还可以通过查找数据图案为x000, x3FF, x3FF的数据,或者查找相应视频标准所规定的数据标志(DID)对辅助数据进行分类。利用这些工具,工程师就能确定某个特定的视频设备所输出的辅助数据序列中是否包含由设备代码或操作差错导致的错误。

观察假影噪声,测试信号

通常,工程师通过测量一个测试信号经过被测器件(DUT)后得到的输出信号来测试被测器件。而有了CaptureVu后,就可以在波形监视仪中先捕捉一个测试信号的视频帧,然后将其与测试信号通过DUT之后的现场输出进行比较,以寻找二者的差异。通过被测器件之前和之后的测试信号均可在被捕捉后存入USB存储器,因此,工程师们还可以利用多种手段对这两个文件进行比较,以寻找测试信号和被测器件输出信号的差异。

在视频设备的设计阶段,工程师可能会发现设备对某种特殊的视频序列或者某种类型的图像处理起来比较困难。此时,他们就可以利用CaptureVu捕捉一帧此类视频信号,并将其存储至USB存储器,然后将存储下来的文件(*.cap文件)转换为可下载至Tektronix TG700的图像(*.pic文件)。通过配置测试信号发生器,还可让这帧图像水平或垂直移动,从而产生运动的测试图像,以方便工程师观察设备产品的任何假影噪声。由于此时测试信号是由捕捉到的视频帧转换来的,因此工程师仍可让这一已知的视频数据源通过DUT,以比较DUT输出信号和原始测试信号的差异。


由于CaptureVu具备视频数据捕捉功能,允许工程师对各种视频信号进行快速比较,因此可以降低视频设备开发、安装和维护所需的时间和精力。而其在多个波形显示窗口重建视频数据的能力又为工程师们提供了比简单的波形图像冻结更丰富的处理手段,同时也让用户能够更方便地确定视频信号中的各种问题。总而言之,CaptureVu的优点就是能让工程师用简单的技术手段快速找到视频信号中的错误,从而帮助他们确定和隔离其设备或视频信号通路中存在的问题。

作者:Mike Waidson, 视频应用工程师

系统分类: 模拟技术
用户分类:
标签: 无标签
来源: 转贴
发表评论 阅读全文(100) | 回复(0)

0

关于投票
最新USPISP(基于M8)的制作和使用介绍

声明:
    
    本USBISP是根据网上一德国人的开源设计(http://www.ullihome.de/index.php/USBAVR-ISP)制作的.本人仅在硬件上做了一点改动.

    本人前后共制作了50几个,通过自己的使用和学生的使用,没有出现大的问题(个别出问题均是硬件焊接问题).
    
    该方案为非正式产品,仅供AVR业余爱好者参考使用.本人不提供任何技术支持,对使用该USBISP出现的问题不承担何责任.

    本方案全部采用免费资源,应该无版权的官司之争。如果有侵权的部分,请告之。

    具体见附录E 自制USBISP下载线
 
========================================================
1.为何使用USBISP?
  为解决使用笔记本电脑没有并口,不能使用并口ISP下载线的问题.提供直接使用USB口对AVR进行编程下载的"超便宜"的方案和手段.

2.USBISP与USBASP
  USBISP与USBASP分别是2个德国人的设计,在硬件上基本兼容,但内核软件有不同,尽管低层USB都采用开源代码,但上层支持协议不同.USBISP是STK500v2 conpatible (direct from AVR-Studio useable) 的,直接在AVR STUDIO中支持和使用.而USBASP需要使用专用的编程软件.另外ASPISP的更新比USBASP快.

3.USBISP与并口ISP(STK200/STK300)的比较
  并口ISP(STK200/STK300)下载线需要PC带真正的LPT口,在ICC、CVAVR、BASCOM-AVR中可以直接使用。
  USBISP使用USB口,只能在AVR STUDIO中使用(其它支持的不稳定)
  USBISP速度稍为慢一点(M8模拟USB)

4。USBISP的可靠性
  前段时间,制作了一批USBISP(使用兼容USBASP的内核)提供学生使用,经过2个学期证明一般应用没有问题,比较可靠。由于USBISP最新的更新已经不提供与USBASP兼容的内核了,因此直接采用USBISP的方案。

=======================================================
相关资料下载:
1.SCH和PCB
点击看大图
点击看大图

2.M8内核固件(hex)
点击此处下载固件(文件大小:9K)

3.M8内核固件源码
点击此处下载源码(文件大小:91K)

4.USBISP的WINDOS驱动(inf)
点击此处下载WINGDOWS驱动(文件大小:774字节)
文件中的改动如下,将第一行注销,使用第二行.这样在WINDOWS的设备中,USBISP的设备名称为"USBASP-ISP"
;Modem3="Communications Port"
Modem3="USBASP-ISP"


========================================================
制作 
1。硬件...... 
2。将固件写入AVRISP的M8中。 
    a/ 在USB口接入5V电源,将JP短路,选择其它的一个AVR编程器如并口的ISP编程器,将其编程口接在AVRISP的编程口上。 
    b/ 配置AVRISP上ATmega8的熔丝位:电源检测电压为2.7v;检测有效;系统使用高频外部晶体;高频满幅震荡。具体参数如下: 
    BODLEVEL = 1                (BOD电压为2.7v) 
    BODEN = 0                (BOD有效) 
    CKSEL=1111,SUT=11        (高频外部晶体,64ms启动延时时间) 
    CKOPT = 0                (高频满幅震荡) 
 
    c/ 写固件 

3。将AVRISP上的JP开路,插到本本的USB口上,安装wondows驱动。驱动安装成功后,可以在windows的设备管理中看到一个串口设备USBASP-ISP。该驱动将AVRISP作为串口设备,占用一个COM口。请查看该COM口的号码。见4下面的图.
 
4。如果你的本本中有很多的串口设备,需要进行调整,将USBASP-ISP对应的COM口号降到9以下,即在COM0-COM9。原因是AVR STUDIO中的串口仅能连接COM9以下的串口设备。(这个对计算机不熟悉的用户就不方便了)


==========================================================
使用 
1。以上完成后,打开AVR STUDIO。在Tools->Program AVR->Connect中选择"STK500 or AVRISP" 
可以使用aoto让STUDIO自己找,也可直接选择AVRISP对应的COM口。 


2。出现以下窗口STK500 with top module '0x00'说明AVRISP正常,可以工作。USBISP的LED1亮表示与AVR STUDIO连接成功. 
注意正确选择要编程的(目标板上的)AVR芯片型号,和编程方式为ISP mode!! 

 
3。在这里可以设置AVRISP的编程速度(AVRISP有记忆的)。选择速度后按WRITE按钮。 


4。对于编程工作在1M以下的AVR芯片,要降低AVRISP的编程速度,否则回出现错误提示: 
 

5。当被编程的AVR芯片工作在4M以上时,可以使用最高的编程速度(1.845M),下载程序还是比较快的。USBISP下载速度的选择比较重要,如果采用低速,下载程序的时间比较长,速度过高,会出现上图的错误提示.USBIAP的下载速度一般应稍微小于目标系统频率的1/4。 

6。在使用中可能会由于目标板的上电、断电等,会造成USBISP连接不上(LED1不亮),此时将AVRIAP从USB口拔下,然后重新插上,在AVR STUDIO中需要重新连接一下(从1开始)既可。 

7.USBISP由PC的USB口供电工作.USB提供5V电源,由HT7536转换成3.6v提供M8使用.USBISP不提供目标板电源,因此目标板需要自己供电,主要是为了PC上USB口的安全.USBISP的信号电平为3.6v,即符合USB协议的标准(解决了原来USB设备不能识别的问题),同时也可适应目标板上5V或3V系统.

8.具网友介绍,可能不支持大于64K代码的下载(如M128).本人没进行过测试.


总结: 
不如并口的ISP方便,因为在ICC、CVAVR、BASCOM中可以直接使用STK200/STK300的并口ISP。AVRISP只能在AVR STUDIO中使用。但对没有并口的本本来说,还是一个比较好的方案。 

另外,对于这个AVRISP的制作,可以在它的基础上深入学习,提高水平,因为是全部公开的。其它的方案只能作为工具使用,不方便深入的学习和研究。这也是我推荐AVRISP的原因。 

============================================================================
使用例子

使用USBISP配合AVR-51多功能实验版,实现对M16的编程下载.(开发环境CVAVR,新M16,系统使用外部4M晶体).USBISP的下载口与并口下载线接口完全兼容.

1.在CVAVR中编写代码,编译生成HEX文件.
2.将USBISP插到电脑的USB口上,将下载线将USBISP与AVR-51板上的下载口连接(可以直接使用并口ISP的下载连接线)
3.启动AVR STUDIO,连接USBISP.LED1亮表示AVR STUDIO与USBISP连接成功.LED3亮表示USBISP下载口已经接到目标板上,且目标板电源已开启.
4.将USBISP的下载速度降低(因为新的M16使用内部RC1M),选择115.2k,按"write"


5.配置M16的溶丝位,使用外部4M晶体
6.将USBISP的下载速度提高(因为新的M16使用内部RC 1M),如460k,按"write",见上图
7.加载要写如M16的HEX文件,按"编程按钮"(FLASH部分).编程过程中,LED1灭,LED2闪烁(1次/1.5s左右),编程结束LED1亮,LED2熄灭.


  

本贴被 machao 编辑过,最后修改时间:2007-12-15,19:34:54.

http://www.ouravr.com/bbs/bbs_content.jsp?bbs_sn=871314&bbs_page_no=1&bbs_id=9999

系统分类: 单片机
用户分类:
标签: 无标签
来源: 转贴
发表评论 阅读全文(324) | 回复(0)

1

关于投票
基于PC控制的多步进电机驱动控制系统全部资料(VC,ICCAVR,PCB,SCH)
导师上个星期给了个任务要求完成一个用于电子射线探针分析仪的控制系统,这几天完成了初步的功能和框架,上传所有开发资料,以飨众友。
功能说明:
1。完成上位机控制软件。该软件需要控制另外两个应用程序(一个是CMOS摄像机的上位机软件,一个是能谱测量软件)的启动与关闭,并删除两个应用程序原有的菜单栏中的放大,缩小和关闭按钮。
2。在任意的进程环境中皆可以通过键盘控制下位机仪器。
3。下位机仪器需要完成对7个步进电机的驱动,细分数等于8。
4。采用USB接口进行通信。
5。步进选择1-9档。

采用的技术:
1。使用钩子函数和全局内存影射完成进程间键盘消息的响应,和不同进程间切换时,进程间的数据通信
2。使用A3977完成步进电机的8细分驱动。
3。采用FT232完成接口通信,并在软件中实现串口的自动获取打开。
4。采用EXE与DLL方式。


快捷键:
数字键:1-9,代表9个档位,1步进最小,9步进最大,每按一次1数字键,发出一个步进脉冲,每个档位提高步进脉冲数提高1倍。
pageup:z轴电机正转
pagedown:z轴电机反转
方向键,分别代表x,y轴电机的四个方向运动;

采用的是二手的步进电机,在城隍庙淘的
直接用万用表测量线圈之间的电阻确定相线。

硬件原理图,PCB,SCH;ourdev_255711.rar(文件大小:199K) (原文件名:Hard.rar) 

A39977数据手册ourdev_255728.rar(文件大小:466K) (原文件名:A3977KED.rar) 

ICCAVR下位机代码ourdev_255731.rar(文件大小:53K) (原文件名:ICCAVR.rar) 

FT232驱动程序安装exeourdev_255747.rar(文件大小:1.46M) (原文件名:CDM 2.02.04.rar) 

上位机界面程序和动态链接库ourdev_255782.rar(文件大小:586K) (原文件名:VcSource.rar) 

上位机与下位机协议ourdev_255785.rar(文件大小:13K) (原文件名:XPrb协议2008-3-20-2.rar) 

点击看大图
 (原文件名:RIMG0003.JPG) 


点击此处打开 ourdev_255806.JPG(文件大小:364K,只有300K以内的图片才能直接显示) (原文件名:RIMG0005.JPG) 

点击看大图
 (原文件名:RIMG0006.JPG) 


http://www.ouravr.com/bbs/bbs_content.jsp?bbs_sn=985796&bbs_page_no=1&bbs_id=9999
系统分类: 模拟技术
用户分类:
标签: 无标签
来源: 转贴
发表评论 阅读全文(148) | 回复(0)

0

关于投票
FPGA控制DS18B20代码,绝对原创,欢迎拍砖

library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;

entity ds1820 is
        port(clk : in std_logic;                 
               dq  : inout std_logic;
            temp_h : out std_logic_vector(7 downto 0);
            temp_l : out std_logic_vector(7 downto 0));
end ds1820;

architecture Behavioral of ds1820 is

TYPE STATE_TYPE is (RESET,CMD_CC,WRITE_BYTE,WRITE_LOW,WRITE_HIGH,READ_BIT,CMD_44,WAIT800MS,CMD_BE,GET_TMP,WAIT4MS);
signal STATE: STATE_TYPE:=RESET;

signal clk_temp : std_logic:='0';
signal clk1m : std_logic;

signal write_temp : std_logic_vector(7 downto 0):="00000000";

signal TMP : std_logic_vector(11 downto 0);
signal tmp_bit : std_logic;

signal WRITE_BYTE_CNT : integer range 0 to 8:=0;
signal WRITE_LOW_CNT : integer range 0 to 2:=0;
signal WRITE_HIGH_CNT : integer range 0 to 2:=0;
signal READ_BIT_CNT : integer range 0 to 3:=0;
signal GET_TMP_CNT : integer range 0 to 12:=0;

signal cnt : integer range 0 to 100001:=0;
signal count : integer range 0 to 25:=0;

signal WRITE_BYTE_FLAG : integer range 0 to 4:=0;

begin

ClkDivider:process (clk)
begin
if rising_edge(clk) then
   if (count = 24) then
      count <= 0;
      clk_temp<= not clk_temp;
   else
      count <= count +1;
   end if;
end if; 
   clk1m<=clk_temp;
end Process;


STATE_TRANSITION:process(STATE,clk1m)
begin        
   if rising_edge(clk1m) then
      case STATE is
         when RESET=>                        
            if (cnt>=0 and cnt<500) then        
               dq<='0';        
            cnt<=cnt+1;
            STATE<=RESET;
           elsif (cnt>=500 and cnt<1000) then
            dq<='Z';
            cnt<=cnt+1;
            STATE<=RESET;
        elsif (cnt>=1000) then
            cnt<=0;                                
            STATE<=CMD_CC;        
        end if;
        when CMD_CC=>                        
        write_temp<="11001100";                        
        STATE<=WRITE_BYTE;
        when WRITE_BYTE=>
        case WRITE_BYTE_CNT is
        when 0 to 7=>
           if (write_temp(WRITE_BYTE_CNT)='0') then
              STATE<=WRITE_LOW;
           else
              STATE<=WRITE_HIGH;
           end if;
              WRITE_BYTE_CNT<=WRITE_BYTE_CNT+1;                                
        when 8=>
           if (WRITE_BYTE_FLAG=0) then -- 第一次写0XCC完毕
              STATE<=CMD_44;
              WRITE_BYTE_FLAG<=1;
           elsif (WRITE_BYTE_FLAG=1) then --写0X44完毕
              STATE<=RESET;
              WRITE_BYTE_FLAG<=2;
           elsif (WRITE_BYTE_FLAG=2) then --第二次写0XCC完毕
              STATE<=CMD_BE;
              WRITE_BYTE_FLAG<=3;
           elsif (WRITE_BYTE_FLAG=3) then --写0XBE完毕
              STATE<=GET_TMP;
              WRITE_BYTE_FLAG<=0;
           end if;
           WRITE_BYTE_CNT<=0;                                        
        end case;
        when WRITE_LOW=>
        case WRITE_LOW_CNT is
           when 0=>
              dq<='0';
              if (cnt=78) then                                                
                 cnt<=0;
                 WRITE_LOW_CNT<=1;
              else
                 cnt<=cnt+1;                                                
              end if;
           when 1=>
              dq<='Z';
              if (cnt=2) then                                                
                 cnt<=0;
                 WRITE_LOW_CNT<=2;
              else
                 cnt<=cnt+1;                                                
              end if;
           when 2=>
   &nb