EDN首页   博客首页

日志档案

发表于 2007/6/15 19:44:24

4

标签: gray  bcd  asynchronous  fifo  

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循环在上例中是可以综合的。


系统分类: CPLD/FPGA   |   用户分类: ASIC DESIGN   |   来源: 原创   |   【推荐给朋友】   |   【添加到收藏夹】

该用户于2009/6/4 15:14:06编辑过该文章

    阅读(1721)    回复(0)  

投一票您将和博主都有获奖机会!