格雷码与二进制码转换

本文介绍了如何进行格雷码到二进制码以及二进制码到格雷码的转换,提供了相应的Verilog代码实现,并附带了测试激励tb(sv)的细节。
摘要由CSDN通过智能技术生成

格雷码转二进制码
二进制码转格雷码
代码如下


//gray to bin 

module gray2bin #(parameter ADDR_WIDTH=8)(
	input [ADDR_WIDTH-1:0] grayin,
	output [ADDR_WIDTH-1:0] binout,
	output reg [ADDR_WIDTH-1:0] binout1,
	output [ADDR_WIDTH-1:0] grayout
	);
	
//调用gray2bin实现方式2的函数
assign binout=gray2bin(grayin);

gray2bin 实现方式1:always组合逻辑块
integer j;
always@(*)
	for(j=0;j<ADDR_WIDTH;j=j+1)
		binout1[j]= ^(grayin>>j);

//gray2bin  实现方式2:function组合逻辑块
function  [ADDR_WIDTH-1:0] gray2bin ( input [ADDR_WIDTH-1:0] gray);
reg [31:0] i;
for(i=0; i<ADDR_WIDTH;i=i+1)
	gray2bin[i]=^(gray>> i);
endfunction
	
//二进制转格雷码
assign grayout=binout1^(binout1>>1);

endmodule

tb(sv)如下

parameter ADDR_WIDTH=4;
class datarand;
    rand bit [ADDR_WIDTH-1:0] data;
endclass

module tb_gray2bin(  );
logic [ADDR_WIDTH-1:0] grayin,grayout, binout, binout1;

gray2bin #(.ADDR_WIDTH(ADDR_WIDTH)) gray2b
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值