原创 Gray码与自然BCD码之间的相互转换

2009-6-4 15:14 5658 12 10 分类: FPGA/CPLD

   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 = ^gray_in[ADDR_WIDTH-1:i];
        end
    end

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

    endmodule

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


PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
EE直播间
更多
我要评论
0
12
关闭 站长推荐上一条 /3 下一条