Advertisement
Guest User

Untitled

a guest
Apr 11th, 2019
129
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. /************************************************************************
  2. Avalon-MM Interface for AES Decryption IP Core
  3.  
  4. Dong Kai Wang, Fall 2017
  5.  
  6. For use with ECE 385 Experiment 9
  7. University of Illinois ECE Department
  8.  
  9. Register Map:
  10.  
  11.  0-3 : 4x 32bit AES Key
  12.  4-7 : 4x 32bit AES Encrypted Message
  13.  8-11: 4x 32bit AES Decrypted Message
  14.    12: Not Used
  15.     13: Not Used
  16.    14: 32bit Start Register
  17.    15: 32bit Done Register
  18.  
  19. ************************************************************************/
  20.  
  21. module avalon_aes_interface (
  22.     // Avalon Clock Input
  23.     input logic CLK,
  24.    
  25.     // Avalon Reset Input
  26.     input logic RESET,
  27.    
  28.     // Avalon-MM Slave Signals
  29.     input  logic AVL_READ,                  // Avalon-MM Read
  30.     input  logic AVL_WRITE,                 // Avalon-MM Write
  31.     input  logic AVL_CS,                        // Avalon-MM Chip Select
  32.     input  logic [3:0] AVL_BYTE_EN,     // Avalon-MM Byte Enable
  33.     input  logic [3:0] AVL_ADDR,            // Avalon-MM Address
  34.     input  logic [31:0] AVL_WRITEDATA,  // Avalon-MM Write Data
  35.     output logic [31:0] AVL_READDATA,   // Avalon-MM Read Data
  36.    
  37.     // Exported Conduit
  38.     output logic [31:0] EXPORT_DATA     // Exported Conduit Signal to LEDs
  39. );
  40.  
  41. // an unpacked array of 32-bit registers
  42. logic [31:0] reggy [15:0];
  43.  
  44.  
  45. // Assign variables for the AES interface variables
  46. logic [127:0] AES_MSG_DEC;
  47. logic AES_DONE;
  48. logic AES_START;
  49. logic [127:0] AES_KEY;
  50. logic [127:0] AES_MSG_ENC;
  51.  
  52. assign AES_MSG_ENC = {reggy[4], reggy[5], reggy[6], reggy[7]};
  53. assign AES_START = reggy[14][0];
  54. assign AES_KEY = {reggy[0], reggy[1], reggy[2], reggy[3]};
  55.  
  56.  
  57. // Instantiate AES interface to get AES_MSG_DEC
  58.  
  59. AES aes(.*);
  60.  
  61.  
  62.  
  63. always_ff @ (posedge CLK)
  64. begin
  65.     // Reset is active HIGH
  66.     if(RESET)
  67.     begin
  68.         // initialize register contents to 0
  69.         reggy[0] <= 32'b0;
  70.         reggy[1] <= 32'b0;
  71.         reggy[2] <= 32'b0;
  72.         reggy[3] <= 32'b0;
  73.         reggy[4] <= 32'b0;
  74.         reggy[5] <= 32'b0;
  75.         reggy[6] <= 32'b0;
  76.         reggy[7] <= 32'b0;
  77.         reggy[8] <= 32'b0;
  78.         reggy[9] <= 32'b0;
  79.         reggy[10] <= 32'b0;
  80.         reggy[11] <= 32'b0;
  81.         reggy[12] <= 32'b0;
  82.         reggy[13] <= 32'b0;
  83.         reggy[14] <= 32'b0;
  84.     end
  85.     else if(AVL_CS)
  86.     begin
  87.         if(AVL_WRITE)
  88.         begin
  89.             // depending on which register is the destination register, load contents from data bus into
  90.             // that register
  91.             case(AVL_ADDR)
  92.             4'b0000:
  93.             begin  
  94.                 case(AVL_BYTE_EN)
  95.                 4'b0001 : reggy[0][7:0] <= AVL_WRITEDATA;
  96.                 4'b0010 : reggy[0][15:8] <= AVL_WRITEDATA;
  97.                 4'b0100 : reggy[0][23:16] <= AVL_WRITEDATA;
  98.                 4'b1000 : reggy[0][31:24] <= AVL_WRITEDATA;
  99.                 4'b0011 : reggy[0][15:0] <= AVL_WRITEDATA;
  100.                 4'b1100 : reggy[0][31:16] <= AVL_WRITEDATA;
  101.                 4'b1111 : reggy[0] <= AVL_WRITEDATA;
  102.                 endcase
  103.             end
  104.             4'b0001:
  105.             begin  
  106.                 case(AVL_BYTE_EN)
  107.                 4'b0001 : reggy[1][7:0] <= AVL_WRITEDATA;
  108.                 4'b0010 : reggy[1][15:8] <= AVL_WRITEDATA;
  109.                 4'b0100 : reggy[1][23:16] <= AVL_WRITEDATA;
  110.                 4'b1000 : reggy[1][31:24] <= AVL_WRITEDATA;
  111.                 4'b0011 : reggy[1][15:0] <= AVL_WRITEDATA;
  112.                 4'b1100 : reggy[1][31:16] <= AVL_WRITEDATA;
  113.                 4'b1111 : reggy[1] <= AVL_WRITEDATA;
  114.                 endcase
  115.             end
  116.             4'b0010:
  117.             begin  
  118.                 case(AVL_BYTE_EN)
  119.                 4'b0001 : reggy[2][7:0] <= AVL_WRITEDATA;
  120.                 4'b0010 : reggy[2][15:8] <= AVL_WRITEDATA;
  121.                 4'b0100 : reggy[2][23:16] <= AVL_WRITEDATA;
  122.                 4'b1000 : reggy[2][31:24] <= AVL_WRITEDATA;
  123.                 4'b0011 : reggy[2][15:0] <= AVL_WRITEDATA;
  124.                 4'b1100 : reggy[2][31:16] <= AVL_WRITEDATA;
  125.                 4'b1111 : reggy[2] <= AVL_WRITEDATA;
  126.                 endcase
  127.             end        
  128.             4'b0011:
  129.             begin  
  130.                 case(AVL_BYTE_EN)
  131.                 4'b0001 : reggy[3][7:0] <= AVL_WRITEDATA;
  132.                 4'b0010 : reggy[3][15:8] <= AVL_WRITEDATA;
  133.                 4'b0100 : reggy[3][23:16] <= AVL_WRITEDATA;
  134.                 4'b1000 : reggy[3][31:24] <= AVL_WRITEDATA;
  135.                 4'b0011 : reggy[3][15:0] <= AVL_WRITEDATA;
  136.                 4'b1100 : reggy[3][31:16] <= AVL_WRITEDATA;
  137.                 4'b1111 : reggy[3] <= AVL_WRITEDATA;
  138.                 endcase
  139.             end
  140.             4'b0100:
  141.             begin  
  142.                 case(AVL_BYTE_EN)
  143.                 4'b0001 : reggy[4][7:0] <= AVL_WRITEDATA;
  144.                 4'b0010 : reggy[4][15:8] <= AVL_WRITEDATA;
  145.                 4'b0100 : reggy[4][23:16] <= AVL_WRITEDATA;
  146.                 4'b1000 : reggy[4][31:24] <= AVL_WRITEDATA;
  147.                 4'b0011 : reggy[4][15:0] <= AVL_WRITEDATA;
  148.                 4'b1100 : reggy[4][31:16] <= AVL_WRITEDATA;
  149.                 4'b1111 : reggy[4] <= AVL_WRITEDATA;
  150.                 endcase
  151.             end
  152.             4'b0101:
  153.             begin  
  154.                 case(AVL_BYTE_EN)
  155.                 4'b0001 : reggy[5][7:0] <= AVL_WRITEDATA;
  156.                 4'b0010 : reggy[5][15:8] <= AVL_WRITEDATA;
  157.                 4'b0100 : reggy[5][23:16] <= AVL_WRITEDATA;
  158.                 4'b1000 : reggy[5][31:24] <= AVL_WRITEDATA;
  159.                 4'b0011 : reggy[5][15:0] <= AVL_WRITEDATA;
  160.                 4'b1100 : reggy[5][31:16] <= AVL_WRITEDATA;
  161.                 4'b1111 : reggy[5] <= AVL_WRITEDATA;
  162.                 endcase
  163.             end
  164.             4'b0110:
  165.             begin  
  166.                 case(AVL_BYTE_EN)
  167.                 4'b0001 : reggy[6][7:0] <= AVL_WRITEDATA;
  168.                 4'b0010 : reggy[6][15:8] <= AVL_WRITEDATA;
  169.                 4'b0100 : reggy[6][23:16] <= AVL_WRITEDATA;
  170.                 4'b1000 : reggy[6][31:24] <= AVL_WRITEDATA;
  171.                 4'b0011 : reggy[6][15:0] <= AVL_WRITEDATA;
  172.                 4'b1100 : reggy[6][31:16] <= AVL_WRITEDATA;
  173.                 4'b1111 : reggy[6] <= AVL_WRITEDATA;
  174.                 endcase
  175.             end
  176.             4'b0111:
  177.             begin  
  178.                 case(AVL_BYTE_EN)
  179.                 4'b0001 : reggy[7][7:0] <= AVL_WRITEDATA;
  180.                 4'b0010 : reggy[7][15:8] <= AVL_WRITEDATA;
  181.                 4'b0100 : reggy[7][23:16] <= AVL_WRITEDATA;
  182.                 4'b1000 : reggy[7][31:24] <= AVL_WRITEDATA;
  183.                 4'b0011 : reggy[7][15:0] <= AVL_WRITEDATA;
  184.                 4'b1100 : reggy[7][31:16] <= AVL_WRITEDATA;
  185.                 4'b1111 : reggy[7] <= AVL_WRITEDATA;
  186.                 endcase
  187.             end    
  188.             4'b1000:
  189.             begin  
  190.                 case(AVL_BYTE_EN)
  191.                 4'b0001 : reggy[8][7:0] <= AVL_WRITEDATA;
  192.                 4'b0010 : reggy[8][15:8] <= AVL_WRITEDATA;
  193.                 4'b0100 : reggy[8][23:16] <= AVL_WRITEDATA;
  194.                 4'b1000 : reggy[8][31:24] <= AVL_WRITEDATA;
  195.                 4'b0011 : reggy[8][15:0] <= AVL_WRITEDATA;
  196.                 4'b1100 : reggy[8][31:16] <= AVL_WRITEDATA;
  197.                 4'b1111 : reggy[8] <= AVL_WRITEDATA;
  198.                 endcase
  199.             end
  200.             4'b1001:
  201.             begin  
  202.                 case(AVL_BYTE_EN)
  203.                 4'b0001 : reggy[9][7:0] <= AVL_WRITEDATA;
  204.                 4'b0010 : reggy[9][15:8] <= AVL_WRITEDATA;
  205.                 4'b0100 : reggy[9][23:16] <= AVL_WRITEDATA;
  206.                 4'b1000 : reggy[9][31:24] <= AVL_WRITEDATA;
  207.                 4'b0011 : reggy[9][15:0] <= AVL_WRITEDATA;
  208.                 4'b1100 : reggy[9][31:16] <= AVL_WRITEDATA;
  209.                 4'b1111 : reggy[9] <= AVL_WRITEDATA;
  210.                 endcase
  211.             end
  212.             4'b1010:
  213.             begin  
  214.                 case(AVL_BYTE_EN)
  215.                 4'b0001 : reggy[10][7:0] <= AVL_WRITEDATA;
  216.                 4'b0010 : reggy[10][15:8] <= AVL_WRITEDATA;
  217.                 4'b0100 : reggy[10][23:16] <= AVL_WRITEDATA;
  218.                 4'b1000 : reggy[10][31:24] <= AVL_WRITEDATA;
  219.                 4'b0011 : reggy[10][15:0] <= AVL_WRITEDATA;
  220.                 4'b1100 : reggy[10][31:16] <= AVL_WRITEDATA;
  221.                 4'b1111 : reggy[10] <= AVL_WRITEDATA;
  222.                 endcase
  223.             end
  224.             4'b1011:
  225.             begin  
  226.                 case(AVL_BYTE_EN)
  227.                 4'b0001 : reggy[11][7:0] <= AVL_WRITEDATA;
  228.                 4'b0010 : reggy[11][15:8] <= AVL_WRITEDATA;
  229.                 4'b0100 : reggy[11][23:16] <= AVL_WRITEDATA;
  230.                 4'b1000 : reggy[11][31:24] <= AVL_WRITEDATA;
  231.                 4'b0011 : reggy[11][15:0] <= AVL_WRITEDATA;
  232.                 4'b1100 : reggy[11][31:16] <= AVL_WRITEDATA;
  233.                 4'b1111 : reggy[11] <= AVL_WRITEDATA;
  234.                 endcase
  235.             end
  236.             4'b1100:
  237.             begin  
  238.                 case(AVL_BYTE_EN)
  239.                 4'b0001 : reggy[12][7:0] <= AVL_WRITEDATA;
  240.                 4'b0010 : reggy[12][15:8] <= AVL_WRITEDATA;
  241.                 4'b0100 : reggy[12][23:16] <= AVL_WRITEDATA;
  242.                 4'b1000 : reggy[12][31:24] <= AVL_WRITEDATA;
  243.                 4'b0011 : reggy[12][15:0] <= AVL_WRITEDATA;
  244.                 4'b1100 : reggy[12][31:16] <= AVL_WRITEDATA;
  245.                 4'b1111 : reggy[12] <= AVL_WRITEDATA;
  246.                 endcase
  247.             end
  248.             4'b1101:
  249.             begin  
  250.                 case(AVL_BYTE_EN)
  251.                 4'b0001 : reggy[13][7:0] <= AVL_WRITEDATA;
  252.                 4'b0010 : reggy[13][15:8] <= AVL_WRITEDATA;
  253.                 4'b0100 : reggy[13][23:16] <= AVL_WRITEDATA;
  254.                 4'b1000 : reggy[13][31:24] <= AVL_WRITEDATA;
  255.                 4'b0011 : reggy[13][15:0] <= AVL_WRITEDATA;
  256.                 4'b1100 : reggy[13][31:16] <= AVL_WRITEDATA;
  257.                 4'b1111 : reggy[13] <= AVL_WRITEDATA;
  258.                 endcase
  259.             end
  260.             4'b1110:
  261.             begin  
  262.                 case(AVL_BYTE_EN)
  263.                 4'b0001 : reggy[14][7:0] <= AVL_WRITEDATA;
  264.                 4'b0010 : reggy[14][15:8] <= AVL_WRITEDATA;
  265.                 4'b0100 : reggy[14][23:16] <= AVL_WRITEDATA;
  266.                 4'b1000 : reggy[14][31:24] <= AVL_WRITEDATA;
  267.                 4'b0011 : reggy[14][15:0] <= AVL_WRITEDATA;
  268.                 4'b1100 : reggy[14][31:16] <= AVL_WRITEDATA;
  269.                 4'b1111 : reggy[14] <= AVL_WRITEDATA;
  270.                 endcase
  271.             end
  272.             4'b1111: ;
  273.             default: ;
  274.  
  275.             endcase
  276.            
  277.            
  278.         end
  279.         else if(AES_DONE)
  280.         begin
  281.             reggy[11] <= AES_MSG_DEC[127:96];
  282.             reggy[10] <= AES_MSG_DEC[95:64];
  283.             reggy[9] <= AES_MSG_DEC[63:32];
  284.             reggy[8] <= AES_MSG_DEC[31:0];
  285.         end
  286.         else
  287.         begin
  288.             reggy[0] <= reggy[0];
  289.             reggy[1] <= reggy[1];
  290.             reggy[2] <= reggy[2];
  291.             reggy[3] <= reggy[3];
  292.             reggy[4] <= reggy[4];
  293.             reggy[5] <= reggy[5];
  294.             reggy[6] <= reggy[6];
  295.             reggy[7] <= reggy[7];
  296.             reggy[8] <= reggy[8];
  297.             reggy[9] <= reggy[9];
  298.             reggy[10] <= reggy[10];
  299.             reggy[11] <= reggy[11];
  300.             reggy[12] <= reggy[12];
  301.             reggy[13] <= reggy[13];
  302.             reggy[14] <= reggy[14];
  303.  
  304.         end
  305.     end
  306. end
  307.  
  308.  
  309. always_comb
  310. begin
  311.  
  312.             if(AVL_READ && AVL_CS)
  313.                 AVL_READDATA = reggy[AVL_ADDR];
  314.             else
  315.                 AVL_READDATA = 32'bx;
  316. end
  317.            
  318.            
  319.            
  320.  
  321.  
  322. assign EXPORT_DATA = {reggy[4][31:16] , reggy[7][15:0]};
  323.  
  324. assign reggy[15] = {31'b0, AES_DONE};
  325.  
  326. endmodule
  327.  
  328.  
  329.  
  330.  
  331.  
  332.  
  333.  
  334.  
  335.  
  336. //
  337. //
  338. ///************************************************************************
  339. //Avalon-MM Interface for AES Decryption IP Core
  340. //
  341. //Dong Kai Wang, Fall 2017
  342. //
  343. //For use with ECE 385 Experiment 9
  344. //University of Illinois ECE Department
  345. //
  346. //Register Map:
  347. //
  348. // 0-3 : 4x 32bit AES Key
  349. // 4-7 : 4x 32bit AES Encrypted Message
  350. // 8-11: 4x 32bit AES Decrypted Message
  351. //   12: Not Used
  352. //  13: Not Used
  353. //   14: 32bit Start Register
  354. //   15: 32bit Done Register
  355. //
  356. //************************************************************************/
  357. //
  358. //module avalon_aes_interface (
  359. //  // Avalon Clock Input
  360. //  input logic CLK,
  361. // 
  362. //  // Avalon Reset Input
  363. //  input logic RESET,
  364. // 
  365. //  // Avalon-MM Slave Signals
  366. //  input  logic AVL_READ,                  // Avalon-MM Read
  367. //  input  logic AVL_WRITE,                 // Avalon-MM Write
  368. //  input  logic AVL_CS,                        // Avalon-MM Chip Select
  369. //  input  logic [3:0] AVL_BYTE_EN,     // Avalon-MM Byte Enable
  370. //  input  logic [3:0] AVL_ADDR,            // Avalon-MM Address
  371. //  input  logic [31:0] AVL_WRITEDATA,  // Avalon-MM Write Data
  372. //  output logic [31:0] AVL_READDATA,   // Avalon-MM Read Data
  373. // 
  374. //  // Exported Conduit
  375. //  output logic [31:0] EXPORT_DATA     // Exported Conduit Signal to LEDs
  376. //);
  377. // 
  378. //  logic [15:0][31:0] output_arr;
  379. //  logic [127:0] decoded_msg;
  380. //  logic done;
  381. ////    logic [127:0] lastditch_out;
  382. // 
  383. ////    assign EXPORT_DATA = {output_arr[4][31:16], output_arr[7][15:0]}; encrypted message
  384. ////    assign EXPORT_DATA = {output_arr[0][31:16], output_arr[3][15:0]}; key
  385. //  assign EXPORT_DATA = {output_arr[11][31:16], output_arr[8][15:0]};
  386. // 
  387. //  //BEGIN REGISTER FILE
  388. //  always_ff @ (posedge CLK) begin
  389. //      if (RESET) begin
  390. //          output_arr[0] <= 32'h0;
  391. //          output_arr[1] <= 32'h0;
  392. //          output_arr[2] <= 32'h0;
  393. //          output_arr[3] <= 32'h0;
  394. //          output_arr[4] <= 32'h0;
  395. //          output_arr[5] <= 32'h0;
  396. //          output_arr[6] <= 32'h0;
  397. //          output_arr[7] <= 32'h0;
  398. //          output_arr[8] <= 32'h0;
  399. //          output_arr[9] <= 32'h0;
  400. //          output_arr[10] <= 32'h0;
  401. //          output_arr[11] <= 32'h0;
  402. ////            output_arr[8] <= decoded_msg[31:0];
  403. ////            output_arr[9] <= decoded_msg[63:32];
  404. ////            output_arr[10] <= decoded_msg[95:64];
  405. ////            output_arr[11] <= decoded_msg[127:96];
  406. //          output_arr[12] <= 32'h0;
  407. //          output_arr[13] <= 32'h0;
  408. //          output_arr[14] <= 32'h0;
  409. //          output_arr[15] <= 32'h0;
  410. //      end
  411. //      else if (done == 1'b1)
  412. //          begin
  413. //              output_arr[8] <= decoded_msg[127:96];
  414. //              output_arr[9] <= decoded_msg[95:64];
  415. //              output_arr[10] <= decoded_msg[63:32];
  416. //              output_arr[11] <= decoded_msg[31:0];
  417. ////                output_arr[15] <= 32'h00000001;
  418. ////                output_arr[8] <= 32'hEEADBEEF;
  419. ////                output_arr[9] <= 32'hBEADFAAF;
  420. ////                output_arr[10] <= 32'hCEEDFEED;
  421. ////                output_arr[11] <= 32'hDEADBEEB;
  422. //          end
  423. //      else if (AVL_WRITE & AVL_CS)
  424. //          case(AVL_ADDR)
  425. //              4'd0:
  426. //                  case(AVL_BYTE_EN)
  427. //                      4'b0001:
  428. //                          output_arr[0][7:0] <= AVL_WRITEDATA[7:0];
  429. //                      4'b0010:
  430. //                          output_arr[0][15:8] <= AVL_WRITEDATA[15:8];
  431. //                      4'b0100:
  432. //                          output_arr[0][23:16] <= AVL_WRITEDATA[23:16];
  433. //                      4'b1000:
  434. //                          output_arr[0][31:24] <= AVL_WRITEDATA[31:24];
  435. //                      4'b0011:
  436. //                      begin
  437. //                          output_arr[0][15:0] <= AVL_WRITEDATA[15:0];
  438. //                      end
  439. //                      4'b1100:
  440. //                      begin
  441. //                          output_arr[0][31:16] <= AVL_WRITEDATA[31:16];
  442. //                      end
  443. //                      4'b1111:
  444. //                          output_arr[0] <= AVL_WRITEDATA;
  445. //                      default: ;
  446. //                  endcase
  447. //
  448. //              4'd1:
  449. //                  case(AVL_BYTE_EN)
  450. //                      4'b0001:
  451. //                          output_arr[1][7:0] <= AVL_WRITEDATA[7:0];
  452. //                      4'b0010:
  453. //                          output_arr[1][15:8] <= AVL_WRITEDATA[15:8];
  454. //                      4'b0100:
  455. //                          output_arr[1][23:16] <= AVL_WRITEDATA[23:16];
  456. //                      4'b1000:
  457. //                          output_arr[1][31:24] <= AVL_WRITEDATA[31:24];
  458. //                      4'b0011:
  459. //                      begin
  460. //                          output_arr[1][15:0] <= AVL_WRITEDATA[15:0];
  461. //                      end
  462. //                      4'b1100:
  463. //                      begin
  464. //                          output_arr[1][31:16] <= AVL_WRITEDATA[31:16];
  465. //                      end
  466. //                      4'b1111:
  467. //                          output_arr[1] <= AVL_WRITEDATA;
  468. //                      default: ;
  469. //                  endcase
  470. //                 
  471. //              4'd2:
  472. //                  case(AVL_BYTE_EN)
  473. //                      4'b0001:
  474. //                          output_arr[2][7:0] <= AVL_WRITEDATA[7:0];
  475. //                      4'b0010:
  476. //                          output_arr[2][15:8] <= AVL_WRITEDATA[15:8];
  477. //                      4'b0100:
  478. //                          output_arr[2][23:16] <= AVL_WRITEDATA[23:16];
  479. //                      4'b1000:
  480. //                          output_arr[2][31:24] <= AVL_WRITEDATA[31:24];
  481. //                      4'b0011:
  482. //                      begin
  483. //                          output_arr[2][15:0] <= AVL_WRITEDATA[15:0];
  484. //                      end
  485. //                      4'b1100:
  486. //                      begin
  487. //                          output_arr[2][31:16] <= AVL_WRITEDATA[31:16];
  488. //                      end
  489. //                      4'b1111:
  490. //                          output_arr[2] <= AVL_WRITEDATA;
  491. //                      default: ;
  492. //                  endcase
  493. //                 
  494. //              4'd3:
  495. //                  case(AVL_BYTE_EN)
  496. //                      4'b0001:
  497. //                          output_arr[3][7:0] <= AVL_WRITEDATA[7:0];
  498. //                      4'b0010:
  499. //                          output_arr[3][15:8] <= AVL_WRITEDATA[15:8];
  500. //                      4'b0100:
  501. //                          output_arr[3][23:16] <= AVL_WRITEDATA[23:16];
  502. //                      4'b1000:
  503. //                          output_arr[3][31:24] <= AVL_WRITEDATA[31:24];
  504. //                      4'b0011:
  505. //                      begin
  506. //                          output_arr[3][15:0] <= AVL_WRITEDATA[15:0];
  507. //                      end
  508. //                      4'b1100:
  509. //                      begin
  510. //                          output_arr[3][31:16] <= AVL_WRITEDATA[31:16];
  511. //                      end
  512. //                      4'b1111:
  513. //                          output_arr[3] <= AVL_WRITEDATA;
  514. //                      default: ;
  515. //                  endcase
  516. //                 
  517. //              4'd4:
  518. //                  case(AVL_BYTE_EN)
  519. //                      4'b0001:
  520. //                          output_arr[4][7:0] <= AVL_WRITEDATA[7:0];
  521. //                      4'b0010:
  522. //                          output_arr[4][15:8] <= AVL_WRITEDATA[15:8];
  523. //                      4'b0100:
  524. //                          output_arr[4][23:16] <= AVL_WRITEDATA[23:16];
  525. //                      4'b1000:
  526. //                          output_arr[4][31:24] <= AVL_WRITEDATA[31:24];
  527. //                      4'b0011:
  528. //                      begin
  529. //                          output_arr[4][15:0] <= AVL_WRITEDATA[15:0];
  530. //                      end
  531. //                      4'b1100:
  532. //                      begin
  533. //                          output_arr[4][31:16] <= AVL_WRITEDATA[31:16];
  534. //                      end
  535. //                      4'b1111:
  536. //                          output_arr[4] <= AVL_WRITEDATA;
  537. //                      default: ;
  538. //                  endcase
  539. //                 
  540. //              4'd5:
  541. //                  case(AVL_BYTE_EN)
  542. //                      4'b0001:
  543. //                          output_arr[5][7:0] <= AVL_WRITEDATA[7:0];
  544. //                      4'b0010:
  545. //                          output_arr[5][15:8] <= AVL_WRITEDATA[15:8];
  546. //                      4'b0100:
  547. //                          output_arr[5][23:16] <= AVL_WRITEDATA[23:16];
  548. //                      4'b1000:
  549. //                          output_arr[5][31:24] <= AVL_WRITEDATA[31:24];
  550. //                      4'b0011:
  551. //                      begin
  552. //                          output_arr[5][15:0] <= AVL_WRITEDATA[15:0];
  553. //                      end
  554. //                      4'b1100:
  555. //                      begin
  556. //                          output_arr[5][31:16] <= AVL_WRITEDATA[31:16];
  557. //                      end
  558. //                      4'b1111:
  559. //                          output_arr[5] <= AVL_WRITEDATA;
  560. //                      default: ;
  561. //                  endcase
  562. //                 
  563. //              4'd6:
  564. //                  case(AVL_BYTE_EN)
  565. //                      4'b0001:
  566. //                          output_arr[6][7:0] <= AVL_WRITEDATA[7:0];
  567. //                      4'b0010:
  568. //                          output_arr[6][15:8] <= AVL_WRITEDATA[15:8];
  569. //                      4'b0100:
  570. //                          output_arr[6][23:16] <= AVL_WRITEDATA[23:16];
  571. //                      4'b1000:
  572. //                          output_arr[6][31:24] <= AVL_WRITEDATA[31:24];
  573. //                      4'b0011:
  574. //                      begin
  575. //                          output_arr[6][15:0] <= AVL_WRITEDATA[15:0];
  576. //                      end
  577. //                      4'b1100:
  578. //                      begin
  579. //                          output_arr[6][31:16] <= AVL_WRITEDATA[31:16];
  580. //                      end
  581. //                      4'b1111:
  582. //                          output_arr[6] <= AVL_WRITEDATA;
  583. //                      default: ;
  584. //                  endcase
  585. //                 
  586. //              4'd7:
  587. //                  case(AVL_BYTE_EN)
  588. //                      4'b0001:
  589. //                          output_arr[7][7:0] <= AVL_WRITEDATA[7:0];
  590. //                      4'b0010:
  591. //                          output_arr[7][15:8] <= AVL_WRITEDATA[15:8];
  592. //                      4'b0100:
  593. //                          output_arr[7][23:16] <= AVL_WRITEDATA[23:16];
  594. //                      4'b1000:
  595. //                          output_arr[7][31:24] <= AVL_WRITEDATA[31:24];
  596. //                      4'b0011:
  597. //                      begin
  598. //                          output_arr[7][15:0] <= AVL_WRITEDATA[15:0];
  599. //                      end
  600. //                      4'b1100:
  601. //                      begin
  602. //                          output_arr[7][31:16] <= AVL_WRITEDATA[31:16];
  603. //                      end
  604. //                      4'b1111:
  605. //                          output_arr[7] <= AVL_WRITEDATA;
  606. //                      default: ;
  607. //                  endcase
  608. ////
  609. ////                4'd8:
  610. ////                    output_arr[8] <= lastditch_out[31:0];
  611. ////                   
  612. ////                4'd9:
  613. ////                    output_arr[9] <= lastditch_out[63:32];
  614. ////                   
  615. ////                4'd10:
  616. ////                    output_arr[10] <= lastditch_out[95:64];
  617. ////           
  618. ////                4'd11:
  619. ////                    output_arr[11] <= lastditch_out[127:97];
  620. //
  621. //              4'd12:
  622. //                  case(AVL_BYTE_EN)
  623. //                      4'b0001:
  624. //                          output_arr[12][7:0] <= AVL_WRITEDATA[7:0];
  625. //                      4'b0010:
  626. //                          output_arr[12][15:8] <= AVL_WRITEDATA[15:8];
  627. //                      4'b0100:
  628. //                          output_arr[12][23:16] <= AVL_WRITEDATA[23:16];
  629. //                      4'b1000:
  630. //                          output_arr[12][31:24] <= AVL_WRITEDATA[31:24];
  631. //                      4'b0011:
  632. //                      begin
  633. //                          output_arr[12][15:0] <= AVL_WRITEDATA[15:0];
  634. //                      end
  635. //                      4'b1100:
  636. //                      begin
  637. //                          output_arr[12][31:16] <= AVL_WRITEDATA[31:16];
  638. //                      end
  639. //                      4'b1111:
  640. //                          output_arr[12] <= AVL_WRITEDATA;
  641. //                      default: ;
  642. //                  endcase
  643. //                 
  644. //              4'd13:
  645. //                  case(AVL_BYTE_EN)
  646. //                      4'b0001:
  647. //                          output_arr[13][7:0] <= AVL_WRITEDATA[7:0];
  648. //                      4'b0010:
  649. //                          output_arr[13][15:8] <= AVL_WRITEDATA[15:8];
  650. //                      4'b0100:
  651. //                          output_arr[13][23:16] <= AVL_WRITEDATA[23:16];
  652. //                      4'b1000:
  653. //                          output_arr[13][31:24] <= AVL_WRITEDATA[31:24];
  654. //                      4'b0011:
  655. //                      begin
  656. //                          output_arr[13][15:0] <= AVL_WRITEDATA[15:0];
  657. //                      end
  658. //                      4'b1100:
  659. //                      begin
  660. //                          output_arr[13][31:16] <= AVL_WRITEDATA[31:16];
  661. //                      end
  662. //                      4'b1111:
  663. //                          output_arr[13] <= AVL_WRITEDATA;
  664. //                      default: ;
  665. //                  endcase
  666. //                 
  667. //              4'd14:
  668. //                  case(AVL_BYTE_EN)
  669. //                      4'b0001:
  670. //                          output_arr[14][7:0] <= AVL_WRITEDATA[7:0];
  671. //                      4'b0010:
  672. //                          output_arr[14][15:8] <= AVL_WRITEDATA[15:8];
  673. //                      4'b0100:
  674. //                          output_arr[14][23:16] <= AVL_WRITEDATA[23:16];
  675. //                      4'b1000:
  676. //                          output_arr[14][31:24] <= AVL_WRITEDATA[31:24];
  677. //                      4'b0011:
  678. //                      begin
  679. //                          output_arr[14][15:0] <= AVL_WRITEDATA[15:0];
  680. //                      end
  681. //                      4'b1100:
  682. //                      begin
  683. //                          output_arr[14][31:16] <= AVL_WRITEDATA[31:16];
  684. //                      end
  685. //                      4'b1111:
  686. //                          output_arr[14] <= AVL_WRITEDATA;
  687. //                      default: ;
  688. //                  endcase
  689. //             
  690. //              // nothin for 15 lolol
  691. //             
  692. //              default: ;
  693. //          endcase
  694. //      else begin
  695. //          output_arr[0] <= output_arr[0];
  696. //          output_arr[1] <= output_arr[1];
  697. //          output_arr[2] <= output_arr[2];
  698. //          output_arr[3] <= output_arr[3];
  699. //          output_arr[4] <= output_arr[4];
  700. //          output_arr[5] <= output_arr[5];
  701. //          output_arr[6] <= output_arr[6];
  702. //          output_arr[7] <= output_arr[7];
  703. //          output_arr[8] <= output_arr[8];
  704. //          output_arr[9] <= output_arr[9];
  705. //          output_arr[10] <= output_arr[10];
  706. //          output_arr[11] <= output_arr[11];
  707. //          output_arr[12] <= output_arr[12];
  708. //          output_arr[13] <= output_arr[13];
  709. //          output_arr[14] <= output_arr[14];
  710. ////            output_arr[15] <= output_arr[15];
  711. //      end
  712. //     
  713. //      output_arr[15] <= {31'b0, done};
  714. //  end
  715. // 
  716. //  always_comb begin
  717. //      if (AVL_READ & AVL_CS) begin
  718. //          case(AVL_ADDR)
  719. //              4'd0:
  720. //                  AVL_READDATA = output_arr[0];
  721. //              4'd1:
  722. //                  AVL_READDATA = output_arr[1];
  723. //              4'd2:
  724. //                  AVL_READDATA = output_arr[2];
  725. //              4'd3:
  726. //                  AVL_READDATA = output_arr[3];
  727. //              4'd4:
  728. //                  AVL_READDATA = output_arr[4];
  729. //              4'd5:
  730. //                  AVL_READDATA = output_arr[5];
  731. //              4'd6:
  732. //                  AVL_READDATA = output_arr[6];
  733. //              4'd7:
  734. //                  AVL_READDATA = output_arr[7];
  735. //              4'd8:
  736. //                  AVL_READDATA = output_arr[8];
  737. //              4'd9:
  738. //                  AVL_READDATA = output_arr[9];
  739. //              4'd10:
  740. //                  AVL_READDATA = output_arr[10];
  741. //              4'd11:
  742. //                  AVL_READDATA = output_arr[11];
  743. //              4'd12:
  744. //                  AVL_READDATA = output_arr[12];
  745. //              4'd13:
  746. //                  AVL_READDATA = output_arr[13];
  747. //              4'd14:
  748. //                  AVL_READDATA = output_arr[14];
  749. //              4'd15:
  750. //                  AVL_READDATA = output_arr[15];
  751. //              default: ;
  752. //          endcase
  753. //      end
  754. //     
  755. //      else begin
  756. //          AVL_READDATA = 32'bX;
  757. //      end
  758. //  end
  759. //  //END REGISTER FILE
  760. // 
  761. //  //Decryption
  762. //  AES decryptboi(
  763. //                      .CLK,
  764. //                      .RESET,
  765. //                      .AES_START(output_arr[14][0]),
  766. //                      .AES_DONE(done),
  767. ////                        .AES_KEY(output_arr[3:0]),
  768. //                      .AES_KEY({output_arr[0], output_arr[1], output_arr[2], output_arr[3]}),
  769. ////                        .AES_MSG_ENC(output_arr[7:4]),
  770. //                      .AES_MSG_ENC({output_arr[4], output_arr[5], output_arr[6], output_arr[7]}),
  771. //                      .AES_MSG_DEC(decoded_msg)
  772. //                  );
  773. //                 
  774. ////    reg_128_ld lastditch(.Clk(CLK), .Reset(RESET), .Load(done), .D(decoded_msg), .Dout(lastditch_out));
  775. //     
  776. //endmodule
  777. //
  778. ////module reg_128_ld (
  779. ////                        input logic Clk, Reset, Load,
  780. ////                        input  logic [127:0]  D,
  781. ////                        output logic [127:0]  Dout
  782. ////                        );
  783. ////
  784. ////    always_ff @ (posedge Clk)
  785. ////    begin
  786. ////         if (Reset) //notice, this is a sycnrhonous reset, which is recommended on the FPGA
  787. ////              Dout <= 128'b0;
  788. ////         else if (Load)
  789. ////              Dout <= D;
  790. ////    end
  791. ////endmodule
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement