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

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

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 5373|回复: 10

[求助] Modesim 仿真时为什么波形总是高阻值??蓝色线

[复制链接]
发表于 2012-5-9 11:54:27 | 显示全部楼层 |阅读模式

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

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

x
// 实验名称 : 加法器
// 程序名称 : adder.v
// 日  期 : 2001/2/20

//*********************************************************
//                      定义模块(module)                 
//*********************************************************

module adder( A, B, SUM );

input  [3:0]    A;              // 四位加法器的加数输入线
input  [3:0]    B;              // 四位加法器的被加数输入线
output [4:0]    SUM;            // 包括进位的四位加法器输出

// 利用Verilog HDL加法运算子设计出的加法器

assign SUM = A + B;                    

//*********************************************************

endmodule


测试激励如下


/ 实验名称 : 加法器
// 程序名称 : tb_adder.v(测试平台)
// 日  期 : 2002/1/21

module tb_adder();

reg  [3:0]      tb_A;           // 用来仿真加数的输入
reg  [3:0]      tb_B;           // 用来仿真被加数的输入
wire [4:0]      tb_SUM;         // 用来连接加法器包括进位的输出


//*********************************************************
//                 激活仿真后的时序设定
//*********************************************************

initial                                 
begin

// 仿真开始时将加数的输入设定为0000,被加数的输入设定为0000。

        tb_A <= 4'b0000;
        tb_B <= 4'b0000;

// 经过100个时间单位后,将加数的输入改为0101
        
#100    tb_A <= 4'b0101;

// 再经过100个时间单位后,将加数的输入改为1010

#100    tb_A <= 4'b1010;

// 再经过100个时间单位后,将加数的输入改为1111

#100    tb_A <= 4'b1111;

// 再经过100个时间单位后,将加数的输入改回0000
// 同时将被加数的输入改为0101

#100    tb_A <= 4'b0000;
        tb_B <= 4'b0101;

// 再经过100个时间单位后,将被加数的输入改为1010

#100    tb_B <= 4'b1010;

// 再经过100个时间单位后,将被加数的输入改为1111

#100    tb_B <= 4'b1111;

// 再经过100个时间单位后,将加数的输入改为1111

#100    tb_A <= 4'b1111;

// 再经过100个时间单位后,将加数的输入改回0000
// 同时将被加数的输入也改回0000

#100    tb_A <= 4'b0000;        
        tb_B <= 4'b0000;

// 再经过100个时间单位后结束仿真。

#100    $finish;        
        end

//*********************************************************
//       加载并且连接准备仿真的加法器模块
//*********************************************************

adder adder(

// 将tb_A讯号连接到adder的A port

        .A( tb_A ),

// 将tb_B讯号连接到adder的B port

        .B( tb_B ),

// 将tb_SUM向量讯号连接到adder的SUM port

        .SUM( tb_SUM )
);

//*********************************************************

endmo QQ截图未命名.png dule
 楼主| 发表于 2012-5-9 12:00:37 | 显示全部楼层
回复 1# fj773


    另外一个计数器的测试也是出现高阻值,程序如下:
module count4(out,reset,clk);
output[3:0] out;
input reset,clk;
reg[3:0] out;
initial ;
always @(posedge clk)
begin
if (reset)  out<=0;           //????
else        out<=out+1;   //??
    end
endmodule

激励:
module count_test;
reg clk,reset;
wire [3:0] out;
count4 i1(
          .out(out),
          .reset(reset),
          .clk(clk)         
          );
initial
  clk=0;
always
  #10  clk=~clk;
initial
  begin
#1000  reset=0;
#1000  reset=1;
#500  reset=0;
#500  reset=1;
$stop;
end
endmodule

dd.png


刚接触这个
不是很会
求高手指点
发表于 2012-5-9 12:56:42 | 显示全部楼层
好像见过类似问题,有可能是visual界面的选项勾错了。直接在transcript里敲命令试试,只用最基本的选项。
vlog,vsim,add wave,run
 楼主| 发表于 2012-5-9 14:07:53 | 显示全部楼层
跟“visual界面的选项勾错”那个相关啊??
发表于 2012-5-9 15:02:55 | 显示全部楼层
回复 4# fj773


   记得是simulation这一步的对话框里。我也不能确定是不是这个问题,你先用命令试试。
 楼主| 发表于 2012-5-9 19:04:48 | 显示全部楼层
回复 5# rvnistelrooy


    呵呵
自己找到原因了
发表于 2012-5-11 13:18:15 | 显示全部楼层
回复 6# fj773


    LZ 什么原因啊  我跟你一样的问题啊  困扰我好久了
发表于 2012-5-11 15:20:49 | 显示全部楼层
这种问题先看时钟 复位 输入激励
没问题再看有没有multi-drive
再查其他问题 仿真阶段的问题好处理
 楼主| 发表于 2012-5-16 08:19:20 | 显示全部楼层
回复 7# lyc3981714641


    这个你试试simulate下面
在start simulate >>>optimization option>>apply full visiblity to all module试试看
截图如下 EE.png
发表于 2012-5-16 09:33:58 | 显示全部楼层
使用VCS就没有这些问题,直接run就好了,我就是用的vcs,有时候就不用查看GUI界面,直接看打印结果就可以验证功能仿真的正确性,比看波形直观的多,建议大家使用一下vcs
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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


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

GMT+8, 2024-12-23 05:02 , Processed in 0.037423 second(s), 9 queries , Gzip On, Redis On.

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