二进制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