数电ModelSim作业2
自然二进制码 转换为 格雷码
一、新建Project
具体可以参考 “数电ModelSim作业1”
二、程序代码
自然二进制码:二进制:以2为基数的记数系统
格雷码:在一组数的编码中,任意两个相邻的代码只有一位二进制数不同

实现原理( 自然二进制转换成格雷码 ):
二进制码转换成二进制格雷码,其法则是:
1、保留二进制码的最高位作为格雷码的最高位
2、格雷码其余各位为二进制码这一位与二进制码高一位异或。
代码如下:
1 2 3 4 5 6 7 8 9 10
| module Bin_to_Gray #( parameter NUM = 8 ) ( input [ NUM-1 : 0 ] bin , output [ NUM-1 : 0 ] gray ) ; genvar i ; assign gray[NUM-1] = bin[NUM-1]; generate for (i = 0; i < NUM-2; i = i+1) begin : GF_GRAY_TO_BIN assign gray[i] = ^bin[i+1 : i]; end endmodule
|
三、测试代码
为测试所有8位信号,更改 xxx_tb.v内容如下后保存。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| `timescale 1ns/100ps module Bin_to_Gray_tb ; parameter NUM = 8 ; reg [NUM-1:0] bin ; wire [NUM-1:0] gray ; integer i; initial begin for ( i = 0; i < 2**8; i = i+1 ) #50 bin = i; end Bin_to_Gray #( NUM ) DUT ( .bin (bin ) , .gray (gray ) ); endmodule
|
四、运行结果
