目录
1、二进制与格雷码转换
二进制 |
格雷码 |
二进制 |
格雷码 |
0000 |
0000 |
1000 |
1100 |
0001 |
0001 |
1001 |
1101 |
0010 |
0011 |
1010 |
1111 |
0011 |
0010 |
1011 |
1110 |
0100 |
0110 |
1100 |
1010 |
0101 |
0111 |
1101 |
1011 |
0110 |
0101 |
1110 |
1001 |
0111 |
0100 |
1111 |
1000 |
二进制转格雷码
module bin_grey #(
parameter N = 4
)
(
input [N-1:0] bin,
output wire [N-1:0] grey
);
assign grey = (bin>>1)^bin;
endmodule
格雷码转二进制
module grey_bin #(
parameter N = 4
)
(
input [N-1:0] grey,
output wire [N-1:0] bin
);
assign bin[N-1] = grey[N-1];
genvar i;
generate
for(i=0; i<N-1; i=i+1)
begin:gb
assign bin[i] = grey[i]^bin[i+1];
end
endgenerate
endmodule
2、边沿检测
// 边沿检测
module signal(
input clk,
input rst_n,
input data_in,
output pos_o,
output neg_o,
output pos_neg_o
);
reg data_in_r;
always @(posedge clk or negedge rst_n)
if(!rst_n)
data_in_r <= 1'b0;
else
data_in_r <