格雷码是一种循环二进制编码,特点是相邻数变化时只有一位数据跳变。
1module bin_to_gray
2#(
3 parameter WIDTH = 4
4)
5(
6 input [WIDTH-1:0] in,
7 output [WIDTH-1:0] out
8);
9
10assign out = in ^ (in >> 1);
11
12endmodule
1module gray_to_bin
2#(
3 parameter WIDTH = 4
4)
5(
6 input [WIDTH-1:0] in,
7 output [WIDTH-1:0] out
8);
9
10// assign out[0] = ^in[3:0];
11// assign out[1] = ^in[3:1];
12// assign out[2] = ^in[3:2];
13// assign out[3] = in[3];
14
15genvar i;
16generate
17 assign out[WIDTH-1] = in[WIDTH-1];
18 for(i=0; i1; i=i+1) begin
19 assign out[i] = ^in[WIDTH-1:i];
20 end
21endgenerate
全部0条评论
快来发表一下你的评论吧 !