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

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

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 18989|回复: 43

[求助] 高手帮我分析下代码MASH+sigma-delta-modulator

[复制链接]
发表于 2010-11-27 11:28:51 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
本帖最后由 mustangyhz 于 2010-11-27 16:08 编辑

初学verilog和MASH,写了个代码,仿真结果不对,高手帮我分析下:
mash.JPG
mash-2.JPG

`timescale 10ps / 1ps

module modulator(clk, rst, k_in, v_out);

input clk, rst;

input [28:0] k_in;

output [2:0] v_out;

reg [2:0] v_out;

reg [28:0] a1, a2, a3;

reg [2:0] a4, a5;

wire [28:0] s1, s2, s3, q1, q2, q3;

wire [2:0]
s4, s5, neg_a5, neg_a4;

wire [2:0] c1, c2, c3;

assign s1 = k_in + a1;

assign s2=q1 + a2;

assign s3=q2 + a3;

assign s4=c2+c3 + neg_a5;

assign s5=c1+s4 + neg_a4;

assign c1 = {2'b0,s1[28]};

assign c2 = {2'b0,s2[28]};

assign c3 = {2'b0,s3[28]};

assign q1={s1[27:0] };

assign q2={s2[27:0] };

assign q3={s3[27:0] };

always@(posedge clk or posedge rst)

begin
if(rst) a1<=29'h0;

else a1<=q1;

end

always@(posedge clk or posedge rst)

begin
if(rst) a2<=29'h0;

else a2<=q2;

end

always@(posedge clk or posedge rst)

begin
if(rst) a3<=29'h0;

else a3<=q3;

end

always@(posedge clk or posedge rst)

begin
if(rst) a4<=3'h0;

else a4<=s4;

end

always@(posedge clk or posedge rst)

begin
if(rst) a5<=3'h0;

else a5<=c3;

end

always@(posedge clk or posedge rst)

begin
if(rst)

begin

v_out<=3'b000;

end

else
begin

v_out<=s5[2:0];

end

end

assign neg_a5=~a5+1'b1;

assign neg_a4=~a4+1'b1;

endmodule

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

`timescale 10ps / 1ps

module test;

reg clk;

reg rst;

reg [28:0] k_dth;

reg [24:0] bout_sum, clk_sum, averange;

wire [2:0] bout;

modulator M1(clk, rst, k_dth, bout);

always #2 clk = ~clk;

initial

begin

bout_sum = 25'b0;
clk_sum = 25'b0;

averange = 25'b0;

clk = 1'b0;

k_dth = 29'b0;

rst = 1'b1;

#100000 k_dth = 29'b01000110011010011010110101000;rst=1'b1;

#1 rst=1'b0;

#100000 $stop;

end

always@(posedge clk or posedge rst)

begin
if (rst)

begin

bout_sum = 25'b0;

clk_sum = 25'b0;

averange = 25'b0;

end

else

begin

bout_sum = bout_sum + bout ;//这里肯定错了,bout是补码,有负数的:)

clk_sum = clk_sum + 1;

averange = {bout_sum}/clk_sum;

end

ende

endmodule

 楼主| 发表于 2010-11-27 19:12:35 | 显示全部楼层
本帖最后由 mustangyhz 于 2010-11-29 10:23 编辑

MASH-mml-final.tar (10 KB, 下载次数: 349 ) 回复 1# mustangyhz


    我自己搞定了:
MASH-OUT.JPG
发表于 2010-12-8 13:05:58 | 显示全部楼层
thanks for sharing this,
发表于 2010-12-17 17:48:00 | 显示全部楼层
tks.............
发表于 2010-12-24 15:48:40 | 显示全部楼层
dddddddddddd
发表于 2011-2-13 10:52:00 | 显示全部楼层
xxxxxxxxxxxxxxxxxxxxxxxx
发表于 2011-2-13 20:39:39 | 显示全部楼层
回复 2# mustangyhz


   请问2楼图中所示是什么仿真软件?~~
发表于 2011-2-13 22:09:25 | 显示全部楼层
tks.............
 楼主| 发表于 2011-2-14 16:59:20 | 显示全部楼层
回复 7# kuaiyu


    cadence+ius
发表于 2011-2-22 22:21:05 | 显示全部楼层
top ding ding ding
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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


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

GMT+8, 2024-11-14 22:21 , Processed in 0.040788 second(s), 8 queries , Gzip On, Redis On.

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