gray码与自然BCD码之间的转换

Gray码计数增加时每次只有1bit变化,可以减少信号之间干扰,减少glitch的产生,在数字电路中应用广泛,尤其是异步接口电路。自然BCD码计数的每一位都有自己的权重,所以自然BCD码是可以比较大小的。各有各的优点,有时候要相互转换。

   二进制BCD码转换成Gray码算法:


点击看大图

    module bcd2gray(
        bcd_in,
        gray_out
    );

    parameter ADDR_WIDTH = 4;

    input [ADDR_WIDTH-1:0] bcd_in;

    output[ADDR_WIDTH-1:0] gray_out;

    assign gray_out = (bcd_in>>1) ^ bcd_in;

    endmodule


    Gray码转换成二进制BCD码算法:


点击看大图



    module gray2bcd(
        gray_in,
        bcd_out
    );

    parameter ADDR_WIDTH = 4;

    input [ADDR_WIDTH-1:0] gray_in;
    output[ADDR_WIDTH-1:0] bcd_out;

    integer i;

    always @(gray_in) begin
        for(i=0; i<(ADDR_WIDTH-1);i++) begin
            bcd_out[i] = ^gray_in[ADDR_WIDTH-1:i];
        end
    end

    assign bcd_out[ADDR_WIDTH-1] = gray_in[ADDR_WIDTH-1];

    endmodule

for循环在上例中是可以综合的。


原文转载自:http://bbs.ednchina.com/BLOG_ARTICLE_32662.HTM

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值