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

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

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 10650|回复: 9

[求助] Modelsim 仿真时,输入信号出现如下情况,是怎么回事?

[复制链接]
发表于 2012-9-29 08:55:09 | 显示全部楼层 |阅读模式

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

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

x
如题
testbench如下:

`timescale 1 ns/ 1 ns
module BintoBCD_vlg_tst();

        reg clk;
        reg [7:0] bin_in;
                                                                                                                                 
        wire [3:0]dec_out0;
        wire [3:0]dec_out1;
        wire [3:0]dec_out2;

        /****************************/
                    
        initial                                                
                begin                                                  
                        clk = 0;
                        bin_in = 8'd125;
                end
               
        always #10 clk = ~clk;
       
        /****************************/
       
/*        always @ ( posedge clk )
                if( load )
                        begin
                                bin_in = 8'd0;
                        end
                else
                        begin
                                bin_in = 8'd125;
                        end
*/
        /****************************/
                                                  
endmodule



模块如下:

module BintoBCD
(
        input clk,
        input[7:0] bin_in,                                                //输入8bit Bin码
       
        output reg[3:0]dec_out0 = 4'h0,                //输出3bit BCD码
        output reg[3:0]dec_out1 = 4'h0,
        output reg[3:0]dec_out2 = 4'h0
);

        /***********************************************/
       
        wire [2:0]c_in;
        wire [2:0]c_out;
       
        reg  [7:0]bin_sreg;       
        reg  [3:0]bit_cnt = 4'h0;
       
        reg  [3:0]dec_sreg0 = 4'h0;
        reg  [3:0]dec_sreg1 = 4'h0;
        reg  [3:0]dec_sreg2 = 4'h0;
       
        wire [3:0]next_sreg0, next_sreg1, next_sreg2;
       
        wire load = ~|bit_cnt;                                                                //读入二进制数据,准备转换
       
        wire convert_ready = ( bit_cnt == 4'h9 );                //转换成功
       
        wire convert_end = ( bit_cnt == 4'ha );                //完毕,重新开始

        /***********************************************/
       
        always @ ( posedge clk )
                begin
                        if( convert_end )
                                bit_cnt <= 4'h0;
                        else
                                bit_cnt <= bit_cnt+4'h1;
                end
               
        /***********************************************/
       
        always @ ( posedge clk )
                begin
                        if( load )
                                bin_sreg <= bin_in;
                        else
                                bin_sreg <= { bin_sreg[6:0], 1'b0 };
                end
               
        /***********************************************/

        assign c_in[0]  = bin_sreg[7];
        assign c_in[1]  = ( dec_sreg0 >= 5 );
        assign c_in[2]  = ( dec_sreg1 >= 5 );
       
        assign c_out[0] = c_in[1];       
        assign c_out[1] = c_in[2];
        assign c_out[2] = ( dec_sreg2 >= 5 );
       
        /******************确定移位输出******************/

        assign next_sreg0 = c_out[0] ? ( { dec_sreg0[2:0], c_in[0] } + 4'h6 )
                                                                                  : ( { dec_sreg0[2:0], c_in[0] } );
                                                                                  
        assign next_sreg1 = c_out[1] ? ( { dec_sreg1[2:0], c_in[1] } + 4'h6 )
                                                                                  : ( { dec_sreg1[2:0], c_in[1] } );
                                                                                  
        assign next_sreg2 = c_out[2] ? ( { dec_sreg2[2:0], c_in[2] } + 4'h6 )
                                                                                  : ( { dec_sreg2[2:0], c_in[2] } );
                                                                                  
        /*******************装入数据********************/
       
        always @ (posedge clk )
                if( load )
                        begin
                                dec_sreg0 <= 4'h0;
                                dec_sreg1 <= 4'h0;
                                dec_sreg2 <= 4'h0;
                        end
                else
                        begin
                                dec_sreg0 <= next_sreg0;
                                dec_sreg1 <= next_sreg1;
                                dec_sreg2 <= next_sreg2;
                        end
                                                                                         
        /*********************数据输出******************/
       
        always @ ( posedge clk )
        if( convert_ready )
                begin
                        dec_out0 <= dec_sreg0;
                        dec_out1 <= dec_sreg1;
                        dec_out2 <= dec_sreg2;
                end

        /***********************************************/
               
endmodule
20120929084636.jpg
 楼主| 发表于 2012-9-29 09:11:33 | 显示全部楼层
顶起!~
发表于 2012-9-29 09:27:37 | 显示全部楼层
你没有例化RTL模块
 楼主| 发表于 2012-9-29 09:37:34 | 显示全部楼层
回复 3# pengch0416


            /****************************/
       
        BintoBCD i1
        (  
                .clk( clk ),
                .bin_in( bin_in ),
               
                .dec_out0( dec_out0 ),
                .dec_out1( dec_out1 ),
                .dec_out2( dec_out2 )
        );
     
        /***********************************************/

这个在发帖子的时候不小心删了,谢谢提醒。在testbench文件里面是有的。

还是出现上述情况。
发表于 2012-9-29 09:46:52 | 显示全部楼层
你的信号没有进去,这是我在你testbench添加的
BintoBCD BintoBCD_u (.clk(clk),.bin_in(bin_in),.dec_out0(dec_out0),.dec_out1(dec_out1),.dec_out2(dec_out2));
就这一个改动,其他都是你的代码,波形出来了,如图

仿真图

仿真图
 楼主| 发表于 2012-9-29 10:12:36 | 显示全部楼层
回复 5# pengch0416

不胜感激!

估计是我的软件问题!
 楼主| 发表于 2012-9-29 11:09:49 | 显示全部楼层
终于解决了!工程建的有问题,把以前的全部删掉,重新建一次就行了@!
测试波形.jpg
 楼主| 发表于 2012-9-29 11:11:44 | 显示全部楼层
输入的是125的二进制,
dec_out2为 0001------1
dec_out1为 0010------2
dec_out0为 0101------5
发表于 2012-9-30 18:54:12 | 显示全部楼层
顶起oooooooo
发表于 2020-11-1 21:28:21 | 显示全部楼层
我也想知道
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

GMT+8, 2025-2-2 08:54 , Processed in 0.027226 second(s), 6 queries , Gzip On, Redis On.

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