格雷码转换
格雷码(循环二进制单位距离码)是任意两个相邻数的代码只有一位二进制数不同的编码,它与奇偶校验码同属可靠性编码。
从对应的n位二进制码字中直接得到n位格雷码码字,需要先对n位二进制的码字,从右到左,以0到n-1编号。如果二进制码字的第i位和i+1位相同,则对应的格雷码的第i位为0,否则为1(当i+1=n时,二进制码字的第n位被认为是0,即第n-1位不变)
1、设计一个4位的二进制格雷码转换电路。
2. 推导代码并且进行验证。
给出源代码,软件综合运行,并给出RTL视图截图,做成一份pdf
1.编程:
module GrayCode_trans
#(parameter N=4)//引入参数变量
(input [N-1:0] iBin,
output reg [N-1:0] oGray
);
integer i = 0;
always@(*)
begin
oGray[N-1] = iBin[N-1];
for(i=0;i<N-1;i=i+1)//循环赋值
oGray[i] = iBin[i]^iBin[i+1];
end
endmodule
2.编译使成功运行:
3.生成RTL结构
由上图可知,格雷码转二进制码电路十分简单,4位数的转换仅用到了3个异或门
4.生成时序波形图:
根据上图,可以归纳出二进制码到格雷码的转换表: