Gray码计数增加时每次只有1bit变化,可以减少信号之间干扰,减少glitch的产生,在数字电路中应用广泛,尤其是异步接口电路。自然BCD码计数的每一位都有自己的权重,所以自然BCD码是可以比较大小的。各有各的优点,有时候要相互转换。
二进制BCD码转换成Gray码算法:
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循环在上例中是可以综合的。
文章评论(0条评论)
登录后参与讨论