74汉明编码-Verilog

该模块是一个用Verilog编写的Hamming编码器,根据参数PARITY(0表示偶校验,1表示奇校验)进行数据校验。在时钟上升沿或复位边沿触发,它接收4位输入数据(sink_data),并生成带有校验位的7位输出数据(source_data)。校验位计算基于输入数据的异或操作,确保数据传输的准确性。
摘要由CSDN通过智能技术生成
module hamming_code
#(
    parameter [1-1:0] PARITY = 0 // 奇偶校验: "0" 偶校验,"1" 奇校验
    )
    (
    input          clk      ,
    input          rst_n    ,
    input  [4-1:0] sink_data,

    output [7-1:0] source_data
);

reg [7-1:0] source_data_temp;

generate
    if(PARITY == 0)begin
        always @(posedge clk or negedge rst_n)begin
            if(rst_n == 1'b0)begin
                source_data_temp <= 7'b000_0000;
            end
            else begin
                source_data_temp[2] <= sink_data[0];
                source_data_temp[4] <= sink_data[1];
                source_data_temp[5] <= sink_data[2];
                source_data_temp[6] <= sink_data[3];

                source_data_temp[0] <= (sink_data[0] ^ sink_data[1] ^ sink_data[3]);
                source_data_temp[1] <= (sink_data[0] ^ sink_data[2] ^ sink_data[3]);
                source_data_temp[3] <= (sink_data[1] ^ sink_data[2] ^ sink_data[3]);
            end
        end
    end
    else if(PARITY == 1)begin
        always @(posedge clk or negedge rst_n)begin
            if(rst_n == 1'b0)begin
                source_data_temp <= 7'b000_0000;
            end
            else begin
                source_data_temp[2] <= sink_data[0];
                source_data_temp[4] <= sink_data[1];
                source_data_temp[5] <= sink_data[2];
                source_data_temp[6] <= sink_data[3];

                source_data_temp[0] <= (sink_data[0] ^ sink_data[1] ^ sink_data[3]) ^ 1'b1;
                source_data_temp[1] <= (sink_data[0] ^ sink_data[2] ^ sink_data[3]) ^ 1'b1;
                source_data_temp[3] <= (sink_data[1] ^ sink_data[2] ^ sink_data[3]) ^ 1'b1;
            end
        end
    end
endgenerate

assign source_data = source_data_temp;

endmodule
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

`Bright

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值