搜索
bottom↓
回复: 1

8位二进制转BCD码,输入125,怎么没有输出呢?

[复制链接]

出0入0汤圆

发表于 2012-9-27 22:11:11 | 显示全部楼层 |阅读模式
如题 (附上module和测试testbench)

module bintobcd
(
        clk, rstn, Data_Bin,
       
//        Hex_8, Hex_7, Hex_6, Hex_5,       
//        Hex_4,
        Hex_3, Hex_2, Hex_1
);
       
        input clk, rstn;
        input[7:0]Data_Bin;

//        output [3:0]Hex_8, Hex_7, Hex_6, Hex_5;       
        output [3:0]//Hex_4,
        Hex_3, Hex_2, Hex_1;

//        reg [3:0]Hex_8, Hex_7, Hex_6, Hex_5;       
        reg [3:0]//Hex_4,
        Hex_3, Hex_2, Hex_1;

        /************************ BCD转换算法 *************************/
                               
        function [3:0]Correct;           
                input[3:0]Decade;
                begin
                        Correct = ( Decade >= 4'd5 ) ? ( Decade + 4'd3 ) : Decade;
                end
        endfunction

        /*************************************************************/
       
//        integer Cnt = 33;
        reg [5:0]Cnt;
        reg [11:0]BCD;
        reg [7:0]Bin_input;
       
        reg [3:0] //BCD_8_I, BCD_7_I, BCD_6_I, BCD_5_I,
                                 //BCD_4_I,
                                 BCD_3_I, BCD_2_I, BCD_1_I;

        always @ ( posedge clk or negedge rstn )
                begin
                        if( !rstn )
                                begin
                                        Cnt = 6'd9;
                                        BCD = 12'd0;
                                        Bin_input = 8'd0;
                                       
                                //        BCD_8_I  = 4'b0000;
                                //        BCD_7_I  = 4'b0000;
                                //        BCD_6_I  = 4'b0000;
                                //        BCD_5_I  = 4'b0000;
                                //        BCD_4_I  = 4'b0000;
                                        BCD_3_I  = 4'b0000;
                                        BCD_2_I  = 4'b0000;
                                        BCD_1_I  = 4'b0000;
                                end
                        else
                                begin
                                        if( Cnt == 6'd9 )
                                                begin
                                                        Bin_input = Data_Bin;
                                                        Cnt = Cnt - 1'b1;
                                                end
                                        else if( Cnt == 0 )
                                                begin
                                                //        BCD_8_I = BCD[31:28];
                                                //        BCD_7_I = BCD[27:24];
                                                //        BCD_6_I = BCD[23:20];
                                                //        BCD_5_I = BCD[19:16];
                                                //        BCD_4_I = BCD[15:12];
                                                        BCD_3_I = BCD[11:8];
                                                        BCD_2_I = BCD[7:4];
                                                        BCD_1_I = BCD[3:0];
                                                       
                                                //        Hex_8 = BCD_8_I;
                                                //        Hex_7 = BCD_7_I;
                                                //        Hex_6 = BCD_6_I;
                                                //        Hex_5 = BCD_5_I;
                                                //        Hex_4 = BCD_4_I;
                                                        Hex_3 = BCD_3_I;
                                                        Hex_2 = BCD_2_I;
                                                        Hex_1 = BCD_1_I;                                       
                                                end
                                                               
                                        else
                                                begin
                                                        BCD[3:0]   = Correct( BCD[3:0] );
                                                        BCD[7:4]   = Correct( BCD[7:4] );
                                                        BCD[11:8]  = Correct( BCD[11:8] );
                                                //        BCD[15:12] = Correct( BCD[15:12] );
                                                //        BCD[19:16] = Correct( BCD[19:16] );
                                                //        BCD[23:20] = Correct( BCD[23:20] );
                                                //        BCD[27:24] = Correct( BCD[27:24] );
                                                //        BCD[31:28] = Correct( BCD[31:28] );
                                                       
                                                        Cnt = Cnt - 1'b1;
                                                        BCD = ( BCD << 1 );
                                                        BCD[0] = Bin_input [7];
                                                        Bin_input = Bin_input << 1;
                                                end
                                end
                end

        /*************************************************************/
               
endmodule



`timescale 1 ps/ 1 ps
module bintobcd_vlg_tst();

        reg [7:0] Data_Bin;
        reg clk;
        reg rstn;
       
        // wires                                               
        wire [3:0]  Hex_1;
        wire [3:0]  Hex_2;
        wire [3:0]  Hex_3;
//        wire [3:0]  Hex_4;
//        wire [3:0]  Hex_5;
//        wire [3:0]  Hex_6;
//        wire [3:0]  Hex_7;
//        wire [3:0]  Hex_8;

        /**************************************/
       
        bintobcd i1
        (
                .clk( clk ),
                .rstn( rstn ),
                .Data_Bin( Data_Bin ),
               
                .Hex_1( Hex_1 ),
                .Hex_2( Hex_2 ),
                .Hex_3( Hex_3 )
//                .Hex_4( Hex_4 ),
//                .Hex_5( Hex_5 ),
//                .Hex_6( Hex_6 ),
//                .Hex_7( Hex_7 ),
//                .Hex_8( Hex_8 )
        );
       
        /**************************************/
       
        initial                                                
                begin                                                  
                        clk = 0;
                        rstn = 1;
                        #10 rstn = 0;
                        #10 rstn = 1;               
                end
               
        always #10 clk = ~clk;

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

        always @ ( posedge clk or negedge rstn )
                if( !rstn )
                        begin
                                Data_Bin = 8'd0;
                        end
                else
                        begin
                                Data_Bin = 8'd125;
                        end

        /**************************************/
                                                     
endmodule

本帖子中包含更多资源

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

x

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

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

出0入0汤圆

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

本版积分规则

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

GMT+8, 2024-7-24 09:21

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

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