在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 12591|回复: 32

MASH 1-1-1,出来结果不对,

[复制链接]
发表于 2021-3-7 22:30:53 | 显示全部楼层 |阅读模式
200资产
213555lgepe72atxx2uezz.jpg [size=0.83em]image.jpg (157.8 KB, 下载次数: 0)
下载附件  [url=]保存到相册[/url]
[color=rgb(153, 153, 153) !important]半小时前 上传





这是结构。

代码如下:
213656j2dd4d2imrrda4mp.png

213738flib8csvm9v0lr6r.png
213801dtnlibztj2v1nnvz.png


但是出来的波形不对,结果应该是 -3, -2, -1, 0 , 1, 2, 3, 4.
可是我的出来是这样的波形。
214001qqzqlp5tprl5tqrd.png


哪里有问题?希望可以和大家交流一下。第一次写verilog

希望路过的大神可以指点一下。拜托了。

最佳答案

查看完整内容

上贴已回复,第一,位宽少一位,第二显示的波形要改为有符号数。
发表于 2021-3-7 22:30:54 | 显示全部楼层
上贴已回复,第一,位宽少一位,第二显示的波形要改为有符号数。
 楼主| 发表于 2021-3-8 08:47:39 | 显示全部楼层


yylei 发表于 2021-3-7 22:34
上贴已回复,第一,位宽少一位,第二显示的波形要改为有符号数。


非常感谢,波形怎么改成有符号数?我用的是Verdi 看的波形。这是测试代码。

image.png

image.png
发表于 2021-3-8 13:21:44 | 显示全部楼层
你需要学习软件的使用方法,波形查看软件里面你找找菜单里面可以设置波形的类型,有符号,无符号,进制等设置。
发表于 2021-3-8 14:01:14 | 显示全部楼层
你这个结构图是没问题的,与我用simulink做的仿真结构基本一样,
发表于 2021-3-8 15:08:52 | 显示全部楼层
我用matlab编辑了你的代码,发现不行qaq
 楼主| 发表于 2021-3-8 16:24:24 | 显示全部楼层


zaowulanyin 发表于 2021-3-8 15:08
我用matlab编辑了你的代码,发现不行qaq


谢谢小哥,我重新改了一下,发现那个代码多了寄存器,重新写了一下。
还有您说的QAQ是什么意思?


module mash_111(CLK, RST, IN_X, F_N);


parameter ACCUM_SIZE=8;
parameter OUT_SIZE=4;


input                   CLK;
input                   RST;
input [ACCUM_SIZE-1:0]  IN_X;

output  [OUT_SIZE-1:0]   F_N;


reg  [ACCUM_SIZE-1:0]   sum0_d;

reg  [ACCUM_SIZE-1:0]   sum1_d;

reg  [ACCUM_SIZE-1:0]   sum2_d;


reg   c1_d1,  c2_d1;
reg   z2_d;


wire    [OUT_SIZE-1:0]       F_N;
wire    [OUT_SIZE-1:0]       s1;
wire    [OUT_SIZE-1:0]       s2;
wire    [OUT_SIZE-1:0]       z1;
wire    [OUT_SIZE-1:0]       z2;
wire                         c1;
wire                         c2;
wire    [OUT_SIZE-1:0]       sum1;
wire    [OUT_SIZE-1:0]       sum2;
wire                         c0;
wire    [OUT_SIZE-1:0]       sum0;




assign          {c0,sum0} = IN_X + sum0_d;
assign          {c1,sum1} = sum0 + sum1_d;
assign          {c2,sum2} = sum1 + sum2_d;
assign           z1 = c1_d1 - c1;
assign           z2 = c2_d1 -c2;
assign           s2 = z2_d - z2;
assign           s1 = z1 - s2;
assign           F_N = c0 - s1;



always @(posedge CLK or posedge RST )
  begin
     if (RST)

             begin      
               sum0_d <= 0;
               sum1_d <= 0;
               sum2_d <= 0;
               c1_d1 <= 0;
               c2_d1 <= 0;
               z2_d <= 0;

              end
     else
          begin
            sum0_d <= sum0;
            sum1_d <= sum1;
            sum2_d <= sum2;
            c1_d1 <= c1;
            c2_d1 <= c2;
            z2_d <= z2;
           end
   end



endmodule

发表于 2021-3-8 16:34:06 | 显示全部楼层
你原来的verilog除了位宽也没问题吧,matlab的话这里有源码:
https://www.mathworks.com/matlab ... ma-delta-simulation
发表于 2021-3-9 11:56:25 | 显示全部楼层


zaowulanyin 发表于 2021-3-8 14:01
你这个结构图是没问题的,与我用simulink做的仿真结构基本一样,


这个结构我有点疑问,第一上一级累加器送给下一级的信号应该是上一级量化之后的量化误差,反馈给B端的应该是量化之后再延迟的输出,这里是对不上的。第二他这里我没有看到量化器(实际就是个比较器),也许并不需要单独再加量化器,这一点个人不确定,但感觉是要有的。3个比较器怎么弄是我现在在头疼的,还没完全搞清楚3个比较器的输出应该是什么样子的。最后图是3阶mash的模型图。 微信图片_20210309115259.png
发表于 2021-3-10 10:23:54 | 显示全部楼层
本帖最后由 zaowulanyin 于 2021-3-10 10:26 编辑


海马懒人 发表于 2021-3-9 11:56
这个结构我有点疑问,第一上一级累加器送给下一级的信号应该是上一级量化之后的量化误差,反馈给B端的应 ...


你这一说是有些不同,贴一下我使用的模型图吧

模块内部

模块内部

mash1-1-1

mash1-1-1
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /1 下一条

小黑屋| 手机版| 关于我们| 联系我们| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2025-2-8 19:04 , Processed in 0.054919 second(s), 7 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表