我是靠谱客的博主 发嗲纸飞机,最近开发中收集的这篇文章主要介绍格雷码与二进制码转换,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

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


//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)) gray2bin(
    .grayin(grayin),
    .binout(binout),
    .binout1(binout1),
    .grayout(grayout)
    );
datarand dr;
integer k;
initial
    begin
    dr=new();
    for(k=0;k<30;k=k+1)
    begin
    #10
    assert(dr.randomize());
    grayin=dr.data;
    end
    end

endmodule

最后

以上就是发嗲纸飞机为你收集整理的格雷码与二进制码转换的全部内容,希望文章能够帮你解决格雷码与二进制码转换所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(50)

评论列表共有 0 条评论

立即
投稿
返回
顶部