Holey_yan

20150109_KUAS_Verilog_HammingCode

Jan 8th, 2015
80
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. module HammingCode(_in, Decode, Encode, Reset, _out, _led);
  2.     input       [4:0] _in;
  3.     input       Decode, Encode, Reset;
  4.     output      [6:0] _out;
  5.     output reg  [4:0] _led;
  6.    
  7.     reg     [8:0] HammingCode;
  8.     reg     [3:0] XorCode;
  9.    
  10.     //At the first, remember to click Reset button.
  11.     always@(negedge Encode, negedge Decode, negedge Reset) begin
  12.         if(Reset == 0) begin
  13.             HammingCode = 0;
  14.             XorCode = 0;
  15.             _led = 5'b00000;
  16.         end
  17.        
  18.         else
  19.             if(Encode == 0) begin
  20.                 XorCode = 0;
  21.                 HammingCode[8] = _in[4];
  22.                 HammingCode[6] = _in[3];
  23.                 HammingCode[5] = _in[2];
  24.                 HammingCode[4] = _in[1];
  25.                 HammingCode[2] = _in[0];
  26.                 _led = {HammingCode[8], HammingCode[6], HammingCode[5], HammingCode[4], HammingCode[2]};
  27.                
  28.                 if(HammingCode[8] == 1'b1)
  29.                     XorCode = XorCode ^ 4'b1001;
  30.                 if(HammingCode[6] == 1'b1)
  31.                     XorCode = XorCode ^ 4'b0111;
  32.                 if(HammingCode[5] == 1'b1)
  33.                     XorCode = XorCode ^ 4'b0110;
  34.                 if(HammingCode[4] == 1'b1)
  35.                     XorCode = XorCode ^ 4'b0101;
  36.                 if(HammingCode[2] == 1'b1)
  37.                     XorCode = XorCode ^ 4'b0011;
  38.                        
  39.                 HammingCode[7] = XorCode[3];
  40.                 HammingCode[3] = XorCode[2];
  41.                 HammingCode[1] = XorCode[1];
  42.                 HammingCode[0] = XorCode[0];
  43.             end
  44.            
  45.             else if(Decode == 0) begin
  46.                 XorCode = 0;
  47.                 HammingCode[8] = _in[4];
  48.                 HammingCode[6] = _in[3];
  49.                 HammingCode[5] = _in[2];
  50.                 HammingCode[4] = _in[1];
  51.                 HammingCode[2] = _in[0];
  52.                 if(HammingCode[8] == 1'b1)
  53.                     XorCode = XorCode ^ 4'b1001;
  54.                 if(HammingCode[7] == 1'b1)
  55.                     XorCode = XorCode ^ 4'b1000;
  56.                 if(HammingCode[6] == 1'b1)
  57.                     XorCode = XorCode ^ 4'b0111;
  58.                 if(HammingCode[5] == 1'b1)
  59.                     XorCode = XorCode ^ 4'b0110;
  60.                 if(HammingCode[4] == 1'b1)
  61.                     XorCode = XorCode ^ 4'b0101;
  62.                 if(HammingCode[3] == 1'b1)
  63.                     XorCode = XorCode ^ 4'b0100;
  64.                 if(HammingCode[2] == 1'b1)
  65.                     XorCode = XorCode ^ 4'b0011;
  66.                 if(HammingCode[1] == 1'b1)
  67.                     XorCode = XorCode ^ 4'b0010;
  68.                 if(HammingCode[0] == 1'b1)
  69.                     XorCode = XorCode ^ 4'b0001;
  70.             end
  71.     end
  72.     Seven_Change    tmp (XorCode, _out);
  73. endmodule
  74.  
  75. module Seven_Change(in, out);
  76.     input           [3:0]   in;
  77.     output reg  [6:0]   out;
  78.     always@(in)
  79.     begin
  80.         case(in)
  81.             // 0
  82.             4'b0000: out = 7'b1000000;
  83.             // 1
  84.             4'b0001: out = 7'b1111001;
  85.             // 2
  86.             4'b0010: out = 7'b0100100;
  87.             // 3
  88.             4'b0011: out = 7'b0110000;
  89.             // 4
  90.             4'b0100: out = 7'b0011001;
  91.             // 5
  92.             4'b0101: out = 7'b0010010;
  93.             // 6
  94.             4'b0110: out = 7'b0000010;
  95.             // 7
  96.             4'b0111: out = 7'b1111000;
  97.             // 8
  98.             4'b1000: out = 7'b0000000;
  99.             // 9
  100.             4'b1001: out = 7'b0011000;
  101.             // A
  102.             4'b1010: out = 7'b0001000;
  103.             // b
  104.             4'b1011: out = 7'b0000011;
  105.             // C
  106.             4'b1100: out = 7'b1000110;
  107.             // d
  108.             4'b1101: out = 7'b0100001;
  109.             // E
  110.             4'b1110: out = 7'b0000110;
  111.             // F
  112.             4'b1111: out = 7'b0001110;
  113.         endcase
  114.     end
  115. endmodule
Advertisement
Add Comment
Please, Sign In to add comment