【FPGA基础】四位二进制--BCD码转换器(vivado)

【设计要求】

设计一个4位的二进制格雷码转换电路
编写代码并进行仿真

【格雷码】

格雷码是任意两个相邻的代码只有一位二进制数不同的编码,它与奇偶校验码同属可靠性编码。

【设计思路】
从对应的n位二进制码中直接得到n位格雷码,需要先对n位二进制从右到左,以0—n-1编号。如果二进制码的第i位和第i+1位相同则第i位格雷码为0,反之则为1.(0<= i <= n-1)

【BCD_TRANS.v】

timescale 1ns / 1ps
//////////////////////////////////////////////////////////////////////////////////
// Company: 
// Engineer: 
// 
// Create Date: 2020/07/28 12:53:18
// Design Name: znj
// Module Name: BCD_TRANS
// Project Name: 
// Target Devices: 
// Tool Versions: 
// Description: 
// 
// Dependencies: 
// 
// Revision:
// Revision 0.01 - File Created
// Additional Comments:
// 
//////////////////////////////////////////////////////////////////////////////////


module BCD_TRANS(
input[3:0] bin4,
input clk,
 output reg[3:0] gray4
    );

//中间变量
integer i;
always @*
    begin
        for(i = 0;i < 4;i = i + 1)
            if(i == 3)
                begin
                    gray4[i] = bin4[i];
                end
            else
                begin
                    gray4[i] = bin4[i] ^ bin4[i+1];
                end
    end
endmodule

【sim1.v】

timescale 1ns / 1ps
//////////////////////////////////////////////////////////////////////////////////
// Company: 
// Engineer: 
// 
// Create Date: 2020/07/28 13:16:11
// Design Name: 
// Module Name: sim1
// Project Name: 
// Target Devices: 
// Tool Versions: 
// Description: 
// 
// Dependencies: 
// 
// Revision:
// Revision 0.01 - File Created
// Additional Comments:
// 
//////////////////////////////////////////////////////////////////////////////////


module sim1(

    );
    reg clk =0;
    reg[3:0] bin4;
    wire[3:0] gray4;
    
    BCD_TRANS test
    (
    .clk(clk),
    .bin4(bin4),
    .gray4(gray4)
    );
    integer i;
    always
    begin
    
    for(i = 0;i < 4;i = i + 1)
        bin4[i] <= {$random} % 2;
    #10 clk = ~clk;
    end
    
    
endmodule

【仿真验证】
【FPGA基础】四位二进制--BCD码转换器(vivado)_第1张图片

你可能感兴趣的:(FPGA,verilog,fpga)