自制逻辑分析仪为什么毛刺如此多?
我是菜鸟,接触AVR一个多月了,最近设计制作了一个USB的逻辑分析仪器,还没有完全完成,但有些问题想请教各位大侠.先说我的LA的大概结构,和网站上的示例相似,区别是我用的MEGA8和USB接口.
原理就是由MEGA8产生计数脉冲,4040产生计数值送到6116作为地址,外部信号通过245进入6116作为数据.
由于6116存取速度的限制(典型写周期需要150ns),因此本LA(叫LA可能有些夸张了,实际应该叫"数字信号示波器"比较贴切)最高采样频率小于6M,八通道,每通道存储深度为2048位.
我使用INT1"电平变化时触发"作为触发源,这是我想到最简单的办法,虽然功能不强但在简易调试过程中通过多设一个"调试触发口"来看波形还是比较实用的:)
现在碰到一个棘手的问题是采样结果中的毛刺问题,手上没有示波器,非常困惑.
请看附图,这是我采样由51产生的计数信号的P3.0和P3.2脚的结果.
http://cache.amobbs.com/bbs_upload782111/files_5/armok01114786.JPG
51的程序:(省略了头文件等)
void main()
{
unsigned char key=0;
while(1)
{
P3=key;
key++;
}
}
可以看出上面的脉冲周期是下面的4倍,这说明是LA工作是大体正确的.但是其中却有如此之多的"毛刺信号",
我想问大家的是:
1.这些是51的毛刺还是外界的干扰?
2.现在我是将245的外部入口全部加了100K的下拉电阻,请问我还需要什么措施来减轻干扰吗?
3.是否应该在上位机程序中加上软件滤波消除这些干扰? (因为我觉得软件滤波后似乎就不是真实信号了..茫然..)
望大侠不吝赐教! 刚才试验了一下软件滤波.. 效果让我异常惊讶
http://cache.amobbs.com/bbs_upload782111/files_5/armok01114794.JPG 毛刺竟然全都没了!
下面提供我的简单滤波方法程序:
数据都存在BBB数组里.
int i=0;
for (i=1;i<2047;i++)
{
if ((BBB!=BBB)&&(BBB==BBB))
{
BBB=BBB;
}
} 先把测量脚接在GND或VCC上,看有没有毛刺,再作进一步的工作,用软件滤波乃是下策. GND和VCC上都没有毛刺 软件滤波就失去LA的意义了 呵呵,逻辑分析仪分为“逻辑状态分析仪”和“逻辑时间分析仪”两种
逻辑状态分析仪一般是要去除毛刺的
而逻辑时间分析仪相反 那我想做的就是"逻辑状态分析仪"了 多谢大侠指点 不只有什么好办法去除毛刺呢?
包括软件上和硬件上的? 每个输入加上时间常数很小的RC滤波?
软件滤波?连续读几次……? 昨晚复习CPLD准备今天考试时突然想到..
毛刺可能不是电路参数的问题 而是我的设计的问题
我现在就出去买芯片 试验一下 有结果后再具体说 现在的问题还很多 等把这些毛病都解决了会发资料上来的:) 原来我在制作红外线逻辑分析仪时也有同样情况,改插PC上另一个串口就正常了. 菜鸟来了 会不会和CPLD的使用类似 出现冲突啊? 能采用时钟同步吗? 其实我并不清楚你这个逻辑分析仪的:( 随便说两句哈 以前用74245是巨大的错误 后来用573也不行 只能用574 其中的道理就是"电平触发"和"沿触发"的差别
制作资料:
http://www.ouravr.com/bbs/bbs_content.jsp?bbs_sn=621661&bbs_page_no=1&bbs_id=1000
页:
[1]