⼆进制转格雷码的Verilog代码
⼗进制数⾃然⼆进制数格雷码000000000
100010001
200100011
300110010
401000110
501010111
601100101
701110100
810001100
910011101
1010101111
1110111110
1211001010
1311011011
1411101001
1511111000
格雷码转换⼆进制码的逻辑关系为:
bin[0]=gray[3]^gray[2] ^gray[1] ^gray[0]
bin[1]=gray[3]^gray[2] ^gray[1]
bin[2]=gray[3]^gray[2]
bin[3]=gray[3]
设计代码
//
// Create Date: 2020/07
// Design Name:
// Module Name: Test1103
// Project Name:
// Target Devices:
// Tool Versions:
// Description:
//
module Test1103(gray,bin,clk,inc,rst_n); parameter size=4;
output [size-1:0] gray,bin;
input clk,inc,rst_n;
reg [size-1:0] gnext,gray,bnext,bin; integer i;
///
always @(posedge clk or negedge rst_n) if(!rst_n)
gray<=0;
else
gray<=gnext;
///
always @(gray or inc)
begin
for(i=0;i<size;i=i+1)
bin[i]=^(gray>>i);
bnext=bin+inc;
gnext=(bnext>>1)^ bnext;
end
endmodule
测试代码(Testbench)
//
// Create Date: 2020/07
// Design Name:
html代码转链接// Module Name: Test1110 // Project Name:
/
/ Target Devices:
// Tool Versions:
// Description:
//
module Test1110;
reg clk;
reg rst_n;
reg inc;
wire [3:0] gray,bin; always begin
#10 clk=0;
#10 clk=1;
end
initial begin
clk=0;
inc=0;
rst_n=0;
#100;
rst_n=1;
#20;
inc=1;
end
Test1103 x1(.gray (gray ),
.
bin  (bin  ),
.clk  (clk  ),
.inc  (inc  ),
.rst_n(rst_n)); endmodule
仿真波形如下

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。