标签:
gray bcd asynchronous fifo
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编辑过该文章