|
我用过泰克,安捷伦好几个型号的数字示波器,根据我的使用体会及针对EEWORLD这项DIY活动具体硬件条件和实现难度设计了这个示波器,下面说下主要的特色,从显示动态效果看,应当说非常好的,优化代码快速地处理显示刷新,把开始按照STM32的库调用方式来画点,到最后实现的优化画点,速度上提高三倍。另外我最初刷屏先把原来的图擦掉再画新数据,结果感觉闪烁比较厉害,后来采取边擦边画的方式,有效降低闪烁,显示感觉与好的商品DSO一样,显示非常流畅。
按原来设想有三个IO选择时基,这样最多8级,不是按标准1-2-5-10跳级,为与普通示波器操作习惯一致,增加了一个IO,这样时基选择级数按标准方式跳就可能了。目前最慢时基设计为20ms,我是这样考虑的:一屏可以观察200ms内信号,分辨率15kHz(0。067ms),再慢的分辨率就低了,同时CPLD分频及预触发深度控制消耗资源就多了。
显示屏宽度320点,使用300点显示,目前时基最快30MHz,60MHz还有待试验,因为按IDT7204的参数不支持这样快的写,目前简单的试验似乎能跑60MHz,但我现在还没有使用在设计中。采样率设计见上表,从10us开始都是将3000点处理为300列并显示,这样设计的考虑是动态显示时能看到较多的整体部分,停止采集分析时能展宽看波形细节,我设想的展宽最多100倍(2-5-10-20-50-100六级变化),也就是最高展宽后一个采样值水平上画10个点(1/3格)足够观察细节了。10us以下,因为数据采集不到3000点,处理相应调整,其中500ns档还要做2倍插值才满足全屏300点。
CPLD部分除了分频产生控制FIFO和ADC的时钟外,最重要的是采集控制。几个信号之间有相对复杂的牵涉关系,原理图方式很难画,所以我使用VHDL的行为描述方式设计控制时序。这个设计带有预触发功能,预触发深度有9级,在显示屏上网格上方的黄色三角形位置可以通过按键移动,从第一格到第九格,使用NORMAL扫描触发方式时,三角形左边显示触发前的部分,右边显示触发后的部分,举例吧,如果触发点设置在第2条线上,假设时基是100us/格,则显示触发前200us和触发后800us波形,同样触发点设置在第9条线上,则显示触发前900us和触发后100us波形,因为使用按键调节,没有旋转编码开关,所以没做像商品DSO无级变动,如果我搞的调节更细微就难兼顾调节的快捷性,所以设计了9级,应当是够用的了。最近在OPURDEV。COM上看的一个网友发的,(从贴中看他是一个小组在DIY,设计速度相当快,我只有中午和晚上时间试验,如果用示波器只有中午在单位用,家中没有),不是魏坤的,使用了IDT7205的HF脚,估计是一半触发前一半触发后,效果如何没见过实物。现在CPLD程序与开始设想变化很多,开始设想先简单实现采集以后再完善,我接下后,感觉不如做更到位的扩展,尽量接近标准DSO操作功能,当然设计出超越别人的参考方案并实现是个能令自己开心的事。因为逻辑上较复杂,存在输出反馈到输入(预触发深度控制),所以用VHDL的行为描述方式来设计。
设计硬件触发电路使用比较器,开始试验用的是高速的,结果发现速度太快导致边沿翻转振荡,对脉冲信号振荡少,对缓变的信号就非常严重,改接成带正反馈的施密特比较器方式能减少振荡但想消除很难,于是我换速度稍低的型号,并且也要加正反馈施密特,效果明显好于用高速的比较器,但是对慢速变化波形还是有取沿抖动错误,等我中午找时间进一步研究,看是否有简单方式处理,如果我想不出,我把波形贴出,大家一起想办法。
现在的设计总共11个按键,感觉稍少了点,所以采取结合显示屏上的提示来实现较多的参数设置,对于使用中很频繁的时基选择与幅度选择保留直接操作键以方便使用,当然如果键更多直接操作会更方便。我最近在南京市场找到单圈20位的编码开关,并带中间下压开关,价格比我想象低许多,才四元,我已经用示波器看过信号特性,不过还没使用在示波器设计中。
通过试验还有些改进设想,比如一个模拟通道增加一个只观察数字信号的脉冲通道,硬件上只加非常少的代价,却能近似得到双路显示效果。另外还有停止采集后的展宽观察细节(前述能把信号时基最多加快到100倍)移动的操作等都没来得及完成。
南京这样电子市场比较发达,但是元件大路货多,DIY示波器上用的EEWORLD提供了元件大部分,少部分在南京好不容易才配上,还有的没配上,好在EEWORLD编辑在北京配上了,其中有两片AD8065片子,试验发现2MHz脉冲都失真为三角波了,仔细用100kHz脉冲试验,发现电压上升太慢了才1。5V/us,与参数表180V/us差很多,仔细查了外部元件没有问题,怀疑是假货,在南京又买不到,淘宝上也信不过,还是琳子编辑在北京解决了器件问题,收到新器件一看,是印字的,原来是激光刻的字,还是怀疑假的,但换上后测试,对脉冲的响应边沿很陡,应当是真品。
电压衰减部分,我的设想配置10:1的探头,这样通常信号都不会损坏器件(不过还有的地方应当串100欧电阻,以便在AC耦合时减少对AD8065的冲击程度,现在没加上),还有衰减我现在是10和20两档(配10:1探头)机械切换,另控制AD603增益和显示补偿。不是1 10 100(配1:1探头)三档,因为我自己算过通常控制电压范围能满足同时因为我需要更多的IO来控制CPLD,把一个继电器的控制脚挪用了。为了方便,我没有接89C51做键盘,直接用STM采集按键,使用原来分配给发光管的脚,DAC控制也是设法在STM32中找脚挪用实现。
我首先看了下原理图,发现NE5532负电源问题及输出的电解电容,在焊接前我就肯定这电容是不合理的,我后来特意把电容焊上,结果NE5532自激振荡,不能正常工作。
由于第一次做板有元件封装上的疏忽,不得不飞线,还有象高速比较器输出抖动问题,虽然我试验之前就有所估计,不过上电后情况比我想象糟糕得多,加上正反馈处理(施密特电路)改善仍然有限,同时正反馈量太多也意味触发灵敏度下降,后来换速度稍低的比较器才有明显改善,更彻底的改进因为现在电路板飞线不方便,还有我也要先试验下,可能要再第二版上实现。
我大概有10年没有自己业余做东西了(都是在单位做开发基本都是写控制器程序),这次DIY,重新考验了我的技艺,从模拟,CPLD,CORTEX-M3都过了一遍,象VHDL,我6年多没写,有的稍忘了,好在现在网络发达,简单查下就回忆出来,我以前是做模拟电子的,所以对输入的调试及碰到问题都有对策,当然自己也要不停学新东西,比如使用STM32和TFT屏,到我10月接下DSO时,用了才3个月,不过我用AT91SAM做产品已经3年了,所以有信心。
通过DIY,我发现自己宝刀不老,呵呵呵呵呵呵呵呵呵呵呵呵。
|
|