OpenCores
URL https://opencores.org/ocsvn/bluespec_md6/bluespec_md6/trunk

Subversion Repositories bluespec_md6

[/] [bluespec_md6/] [trunk/] [compressionFunction/] [fpga/] [MD6Engine.c] - Blame information for rev 7

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 2 kfleming
#include "md6.h"
2
#include "MD6Engine.h"
3
#include "cLib.h"
4
 
5
#define MD6CommunicationConstant 0xC0000
6
 
7
inline int MD6Send(Command command, RegisterAddr reg, short payload) {
8
  int command_bits =(int)(((command & 0x1) << 31) | ((reg & 0x3fff) << 16) | ((payload & 0xffff) << 0));
9
  return putValue(command_bits);
10
}
11
 
12
inline int MD6Receive(short *payload) {
13
  int resp;
14
  int value = getResponse(&resp);
15
  if(MD6CommunicationConstant ^ (resp & 0xFFFF0000)) {
16
    xil_printf("Communication may be corrupt\r\n");
17
  }
18
  *payload = (short) resp;
19
  return value;
20
}
21
 
22
inline int MD6Write(RegisterAddr reg, short payload) {
23
  return MD6Send(Write, reg, payload);
24
}
25
 
26
inline int MD6Read(RegisterAddr reg, short *payload) {
27
  if(MD6Send(Read, reg, 0) < 0) {
28
     return -1;
29
  }
30
  return MD6Receive(payload);
31
}
32
 
33
/*typedef enum {RoundRegister = 0,
34
              TreeHeightRegister = 1,
35
              LastCompressionRegister = 2,
36
              PaddingBitsRegister = 3,
37
              KeyLengthRegister = 4,
38
              DigestLengthRegister = 5,
39
              CompressionFunctionStatus = 6,
40
              KeyRegisterBase = 7,
41
              IdentifierRegisterBase = KeyRegisterBase + md6_k*(md6_w/16),
42
              SourceRegisterBase = IdentifierRegisterBase + md6_u*(md6_w/16),
43
              DestinationRegisterBase = SourceRegisterBase + 2,
44
              TotalRegisters = DestinationRegisterBase + 2 }  RegisterAddr;*/
45
 
46
char *registerAddrToString(RegisterAddr reg) {
47
    switch(reg) {
48
      case RoundRegister: return "RoundRegister";
49
      case TreeHeightRegister: return "TreeHeightRegister";
50
      case PaddingBitsRegister: return "PaddingBitsRegister";
51
      case KeyLengthRegister: return "KeyLengthRegister";
52
                case DigestLengthRegister: return "DigestLengthRegister";
53
      case KeyRegisterBase: return "KeyRegisterBase";
54
           case IdentifierRegisterBase: return "IdentifierRegisterBase";
55
           case IdentifierRegisterBase + 1: return "IdentifierRegisterBase+1";
56
           case IdentifierRegisterBase + 2: return "IdentifierRegisterBase+2";
57
           case IdentifierRegisterBase + 3: return "IdentifierRegisterBase+3";
58
           case CompressionFunctionStatus: return "CompressionFunctionStatus";
59
           case SourceRegisterBase: return "SourceRegisterBase";
60
           case SourceRegisterBase + 1: return "SourceRegisterBase + 1";
61
      case DestinationRegisterBase: return "DestinationRegisterBase";
62
      case DestinationRegisterBase + 1: return "DestinationRegisterBase + 1";
63
                default: return "Uknown Register";
64
         }
65
}

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.