搜索
bottom↓
回复: 16

大家帮忙看看,波形上的毛刺哪里来的呢?

[复制链接]

出0入0汤圆

发表于 2010-11-21 19:16:57 | 显示全部楼层 |阅读模式
接触fpga有些日子了,但是还没有真正的用过,打算做个信号发生器,用的是最简单的方法:波形的采样值128点存在rom,然后读取,全部代码如下:
module sine(resN,clk,outA,outB);
input resN,clk;
output[7:0] outA,outB;
reg[6:0] addA,addB;
reg[31:0] cnt1,cnt2;
wire clk2;

always@(posedge clk)
begin
  if(resN==0)
    cnt1<=0;
  else
    begin
      if(cnt1==178)
        begin
          cnt1<=0;
          addA<=addA+1;
        end
      else
        begin
          cnt1<=cnt1+1;
        end
    end
end

always@(posedge clk)
begin
  if(resN==0)
    cnt2<=0;
  else
    begin
      if(cnt2==325)
        begin
          cnt2<=0;
          addB<=addB+1;
        end
      else
        begin
          cnt2<=cnt2+1;
        end
    end
end
pll mypll(clk,clk2);
rom myrom(
        .address_a(addA),
        .address_b(addB),
        .clock(clk2),
        .q_a(outA),
        .q_b(outB)
        );
       
endmodule
可是波形却出现了很多毛刺,难道是竞争冒险所致?我观察到毛刺主要出现在正弦波波形数值变换大的地方,难道是这个原因?去开外接模拟低通滤波器外,请问大家有什么好办法去除?

(原文件名:QQ截图未命名.jpg)

阿莫论坛20周年了!感谢大家的支持与爱护!!

知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)

出0入0汤圆

 楼主| 发表于 2010-11-21 19:18:51 | 显示全部楼层
自己瞎猜下,如果是数值变化大,导致电流变化大,引起的毛刺,是不是取样点多一些,毛刺会少点么?

出0入22汤圆

发表于 2010-11-21 19:23:09 | 显示全部楼层
这个怎么看像是股票的K线图

出0入0汤圆

 楼主| 发表于 2010-11-21 19:26:33 | 显示全部楼层
晕倒~~~

出0入0汤圆

 楼主| 发表于 2010-11-21 19:49:48 | 显示全部楼层
给点建设性的意见啊,等我试试256点的情况

出0入0汤圆

 楼主| 发表于 2010-11-21 20:34:25 | 显示全部楼层
问题确认,的确是由于电流突变引起的,如图,从B0011_1111跳转到B0100_0001,前者比后者多了4个1,电流突变小,产生毛刺,问题找到了,但是怎么解决呢?这个是数值,不可能用格雷码啊,请大家支招

(原文件名:QQ截图未命名2.jpg)

出0入0汤圆

发表于 2010-11-21 20:37:15 | 显示全部楼层
看上去问题应该是竞争冒险,而不是电流

出0入0汤圆

发表于 2010-11-21 20:58:37 | 显示全部楼层
DAC输出串个小RC

出0入4汤圆

发表于 2010-11-21 21:11:38 | 显示全部楼层
回复【6楼】h2feo4  无机酸
看上去问题应该是竞争冒险,而不是电流
-----------------------------------------------------------------------

顶高手。

出0入4汤圆

发表于 2010-11-21 21:14:57 | 显示全部楼层
在红框处信号两个同时往相反得方向变化了


(原文件名:ourdev_599490SYJOA0.jpg)

出0入0汤圆

 楼主| 发表于 2010-11-29 15:03:36 | 显示全部楼层
谢谢各位,最终还是用了个低通,产生了一点点相移...
可是还有点不甘心啊,要是不用低通,如何消除呢?
束手无策思考中......

出0入0汤圆

发表于 2010-11-29 15:19:33 | 显示全部楼层
应该是竞争冒险吧

硬件是什么样的

出0入0汤圆

发表于 2010-11-29 15:24:31 | 显示全部楼层
关注中,

出0入0汤圆

发表于 2010-11-29 15:33:20 | 显示全部楼层
输出加2寄寄存器试试吧~

出0入0汤圆

发表于 2010-11-29 17:04:09 | 显示全部楼层
用的什么DA芯片?
我想应该是你的输出似乎没有控制WR(我只学过VHDL,没全看懂你的代码),所以才会有竞争冒险的可能
以DAC0832为例:

(原文件名:tm3399.jpg)
你控制一下WR2,在每次给完数据之后再给WR2一个上升沿,应该就可以了。

出0入0汤圆

 楼主| 发表于 2010-12-3 17:24:37 | 显示全部楼层
谢谢,我已用模拟滤波器搞定
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-7-24 17:35

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表