Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- module HammingCode(_in, Decode, Encode, Reset, _out, _led);
- input [4:0] _in;
- input Decode, Encode, Reset;
- output [6:0] _out;
- output reg [4:0] _led;
- reg [8:0] HammingCode;
- reg [3:0] XorCode;
- //At the first, remember to click Reset button.
- always@(negedge Encode, negedge Decode, negedge Reset) begin
- if(Reset == 0) begin
- HammingCode = 0;
- XorCode = 0;
- _led = 5'b00000;
- end
- else
- if(Encode == 0) begin
- XorCode = 0;
- HammingCode[8] = _in[4];
- HammingCode[6] = _in[3];
- HammingCode[5] = _in[2];
- HammingCode[4] = _in[1];
- HammingCode[2] = _in[0];
- _led = {HammingCode[8], HammingCode[6], HammingCode[5], HammingCode[4], HammingCode[2]};
- if(HammingCode[8] == 1'b1)
- XorCode = XorCode ^ 4'b1001;
- if(HammingCode[6] == 1'b1)
- XorCode = XorCode ^ 4'b0111;
- if(HammingCode[5] == 1'b1)
- XorCode = XorCode ^ 4'b0110;
- if(HammingCode[4] == 1'b1)
- XorCode = XorCode ^ 4'b0101;
- if(HammingCode[2] == 1'b1)
- XorCode = XorCode ^ 4'b0011;
- HammingCode[7] = XorCode[3];
- HammingCode[3] = XorCode[2];
- HammingCode[1] = XorCode[1];
- HammingCode[0] = XorCode[0];
- end
- else if(Decode == 0) begin
- XorCode = 0;
- HammingCode[8] = _in[4];
- HammingCode[6] = _in[3];
- HammingCode[5] = _in[2];
- HammingCode[4] = _in[1];
- HammingCode[2] = _in[0];
- if(HammingCode[8] == 1'b1)
- XorCode = XorCode ^ 4'b1001;
- if(HammingCode[7] == 1'b1)
- XorCode = XorCode ^ 4'b1000;
- if(HammingCode[6] == 1'b1)
- XorCode = XorCode ^ 4'b0111;
- if(HammingCode[5] == 1'b1)
- XorCode = XorCode ^ 4'b0110;
- if(HammingCode[4] == 1'b1)
- XorCode = XorCode ^ 4'b0101;
- if(HammingCode[3] == 1'b1)
- XorCode = XorCode ^ 4'b0100;
- if(HammingCode[2] == 1'b1)
- XorCode = XorCode ^ 4'b0011;
- if(HammingCode[1] == 1'b1)
- XorCode = XorCode ^ 4'b0010;
- if(HammingCode[0] == 1'b1)
- XorCode = XorCode ^ 4'b0001;
- end
- end
- Seven_Change tmp (XorCode, _out);
- endmodule
- module Seven_Change(in, out);
- input [3:0] in;
- output reg [6:0] out;
- always@(in)
- begin
- case(in)
- // 0
- 4'b0000: out = 7'b1000000;
- // 1
- 4'b0001: out = 7'b1111001;
- // 2
- 4'b0010: out = 7'b0100100;
- // 3
- 4'b0011: out = 7'b0110000;
- // 4
- 4'b0100: out = 7'b0011001;
- // 5
- 4'b0101: out = 7'b0010010;
- // 6
- 4'b0110: out = 7'b0000010;
- // 7
- 4'b0111: out = 7'b1111000;
- // 8
- 4'b1000: out = 7'b0000000;
- // 9
- 4'b1001: out = 7'b0011000;
- // A
- 4'b1010: out = 7'b0001000;
- // b
- 4'b1011: out = 7'b0000011;
- // C
- 4'b1100: out = 7'b1000110;
- // d
- 4'b1101: out = 7'b0100001;
- // E
- 4'b1110: out = 7'b0000110;
- // F
- 4'b1111: out = 7'b0001110;
- endcase
- end
- endmodule
Advertisement
Add Comment
Please, Sign In to add comment