Sie sind auf Seite 1von 2

`timescale 1ns / 1ps

////////////////////////////////////////////////////////////////////////////////
//
// Company:
// Engineer:
//
//
// Design Name:
// Module Name:
hammerdecoder
// Project Name:
// Target Devices:
// Tool versions:
// Description:
// Additional Comments:
//
////////////////////////////////////////////////////////////////////////////////
//
`timescale 1ns / 1ps
////////////////////////////////////////////////////////////////////////////////
//
// Company:
// Engineer:
//
// Create Date:
09:19:03 02/12/2015
// Design Name:
// Module Name:
hamm
// Project Name:
// Target Devices:
// Tool versions:
// Description:
//
// Dependencies:
//
// Revision:
// Revision 0.01 - File Created
// Additional Comments:
//
////////////////////////////////////////////////////////////////////////////////
//
module hammer(out,in,reset
);
parameter n=11,k=7;
output[n-1:0] out;
input[k-1:0] in;
input reset;
reg [n-1:0] out;
integer i,j;
always@(in or reset)
begin
if(reset)
out=0;
else
begin i=0;j=0;
while((i<n)||(j<k))
begin
while(i==2||i==4||i==6||i==9)
begin

out[i]=0;
i=i+1;
end
out[i]=in[j];
i=i+1;
j=j+1;
end
if(^(out&11'b100_1000_1101))
out[2]=~out[2];
if(^(out&11'b001_1011_1000))
out[4]=~out[4];
if(^(out&11'b101_0100_1010))
out[6]=~out[6];
if(^(out&11'b011_1010_1010))
out[9]=~out[9];
end
end
endmodule
module hammerdecoder(out,in,reset
);
parameter n=11,k=7;
output[k-1:0]out;
input[n-1:0]in;
input reset;
reg[k-1:0]out;
reg r1,r2,r4,r8;
reg[3:0]r;
reg[n-1:0]IN;
integer i,j;
always@(in or reset)
begin
if(reset)
out=0;
else
begin
r1=^(in&11'b100_1000_1101);
r2=^(in&11'b001_1011_1000);
r4=^(in&11'b101_0100_1010);
r8=^(in&11'b011_1010_1010);
r={r8,r4,r2,r1};
IN=in;
IN[r-1'b1]=~IN[r-1'b1];
i=0;j=0;
while((i<n)||(j<k))
begin
while(i==2||i==4||i==6||i==9)
i=i+1;
out[j]=IN[i];
i=i+1;
j=j+1;
end
end
end
endmodule

Das könnte Ihnen auch gefallen