FPGA|CPLD|ASICwilliam hill官网
直播中

龚蕾

11年用户 10经验值
擅长:可编程逻辑 电源/新能源 处理器/DSP
私信 关注
[经验]

二进制码转BCD码

module bit_bcd(clk,rst,data_in,data_out);
input clk,rst;
input[7:0] data_in;
output[11:0] data_out;
reg[3:0]cnt;
reg [3:0] state;
reg [19:0]data_reg;

parameter start = 4'b0001,
          yiwei = 4'b0010,
          panduan = 4'b0100,
          idle = 4'b1000;
always@(posedge clk or negedge rst)
if(!rst) begin
cnt<=4'd0;
state<=start;
end
else
case(state)
start:begin cnt<=4'd0;         
                                data_reg<={12'd0,data_in};
                                state<=yiwei;

                end
yiwei:begin
      state<=panduan;
                data_reg<=(data_reg<<1);
                cnt<=cnt+1'b1;
                end
panduan:
       if(cnt==4'd8)
       state<=idle;
                 else
        if(data_reg[11:8]>=3'b101) begin
        data_reg<=data_reg+10'b1100000000;
                  state<=yiwei;
                  end
        else if(data_reg[15:12]>=3'b101) begin
        data_reg<=data_reg+14'b11000000000000;
                  state<=yiwei;
                  end
                  else
                  state<=yiwei;
idle:begin cnt<=4'd0;
     state<=idle;       
          if (data_reg[11:8]>=4'd10) begin
     data_reg[11:8]<=data_reg[11:8]-4'd10;
          data_reg[15:12]<=data_reg[15:12]+1'b1;
          end
     else if(data_reg[15:12]>=4'd10) begin   
     data_reg[15:12]<=data_reg[15:12]-4'd10;
          data_reg[19:16]<=data_reg[19:16]+1'b1;
          end
          end
default:state<=start;
endcase                  

assign  data_out = data_reg[19:8];          
                  
                  
                  
endmodule

回帖(4)

jinyi7016

2015-12-23 17:06:26
用4位二进制数来表示1位十进制数中的0~9这10个数码。是一种二进制的数字编码形式,用二进制编码的十进制代码
举报

golgen0125

2015-12-24 09:04:18
学习一下。。可以根据原来C语言的经验进行改变,尝试新的实现方式。
举报

爱吖花开

2015-12-24 19:05:16
基础很有用,谢谢分享。
举报

Alite丶Love

2015-12-26 23:46:48
好……
举报

更多回帖

发帖
×
20
完善资料,
赚取积分