////////////////////////////////////////////////////////////////////// // File: DESmedium_SW.h // Date: 27 November 2000 // Author: Antonio Esteves, GEC-DI-UM // // Definitions for the hw/sw implementation of the DES example. // ////////////////////////////////////////////////////////////////////// #ifndef _DESMEDIUM_SW_H_ #define _DESMEDIUM_SW_H_ #include "windrvr.h" #include "edgar2_lib.h" // +------------------+---------+---------+------------+---------+ // | SIGNAL | A17 A16 | A15..A7 | A6 A5..A2 | ADDRESS | // +------------------+---------+---------+------------+---------+ // | notOEdoutB0 | 0 0 | x..x | x 0000 | 00 | // | notOEdoutB1 | 0 0 | x..x | x 0001 | 04 | // | notOEdoutB2 | 0 0 | x..x | x 0010 | 08 | // | notOEdoutB3 | 0 0 | x..x | x 0011 | 0C | // | notOEdoutB4 | 0 0 | x..x | x 0100 | 10 | // | notOEdoutB5 | 0 0 | x..x | x 0101 | 14 | // | notOEdoutB6 | 0 0 | x..x | x 0110 | 18 | // | notOEdoutB7 | 0 0 | x..x | x 0111 | 1C | // | | | | | | // | notOEreadNewData | 0 0 | x..x | x 1000 | 20 | // | notOEwriteData | 0 0 | x..x | x 1001 | 24 | // +------------------+---------+---------+------------+---------+ // | LOADdinB0 | 0 0 | x..x | 0 0000 | 00 | // | LOADdinB1 | 0 0 | x..x | 0 0001 | 04 | // | LOADdinB2 | 0 0 | x..x | 0 0010 | 08 | // | LOADdinB3 | 0 0 | x..x | 0 0011 | 0C | // | LOADdinB4 | 0 0 | x..x | 0 0100 | 10 | // | LOADdinB5 | 0 0 | x..x | 0 0101 | 14 | // | LOADdinB6 | 0 0 | x..x | 0 0110 | 18 | // | LOADdinB7 | 0 0 | x..x | 0 0111 | 1C | // | | | | | | // | LOADkeyInB0 | 0 0 | x..x | 0 1000 | 20 | // | LOADkeyInB1 | 0 0 | x..x | 0 1001 | 24 | // | LOADkeyInB2 | 0 0 | x..x | 0 1010 | 28 | // | LOADkeyInB3 | 0 0 | x..x | 0 1011 | 2C | // | LOADkeyInB4 | 0 0 | x..x | 0 1100 | 30 | // | LOADkeyInB5 | 0 0 | x..x | 0 1101 | 34 | // | LOADkeyInB6 | 0 0 | x..x | 0 1110 | 38 | // | LOADkeyInB7 | 0 0 | x..x | 0 1111 | 3C | // | | | | | | // | LOADdinValid | 0 0 | x..x | 1 0000 | 40 | // | LOADencryptIn | 0 0 | x..x | 1 0001 | 44 | // | LOADwriteDone | 0 0 | x..x | 1 0010 | 48 | // | | | | | | // | LOADresetFf | 0 0 | x..x | 1 0011 | 4C | // | LOADstartFsm | 0 0 | x..x | 1 0100 | 50 | // +------------------+---------+---------+------------+---------+ //--------------------------------------------------------- // CONSTANTS //--------------------------------------------------------- // ADDRESSES USED TO ACCESS HARDWARE REGISTERS #define ADD_R_b0_dout (DWORD) 0x00000 #define ADD_R_b1_dout (DWORD) 0x00004 #define ADD_R_b2_dout (DWORD) 0x00008 #define ADD_R_b3_dout (DWORD) 0x0000C #define ADD_R_b4_dout (DWORD) 0x00010 #define ADD_R_b5_dout (DWORD) 0x00014 #define ADD_R_b6_dout (DWORD) 0x00018 #define ADD_R_b7_dout (DWORD) 0x0001C #define ADD_R_readNewData (DWORD) 0x00020 #define ADD_R_writeData (DWORD) 0x00024 #define ADD_W_b0_din (DWORD) 0x00000 #define ADD_W_b1_din (DWORD) 0x00004 #define ADD_W_b2_din (DWORD) 0x00008 #define ADD_W_b3_din (DWORD) 0x0000C #define ADD_W_b4_din (DWORD) 0x00010 #define ADD_W_b5_din (DWORD) 0x00014 #define ADD_W_b6_din (DWORD) 0x00018 #define ADD_W_b7_din (DWORD) 0x0001C #define ADD_W_b0_keyIn (DWORD) 0x00020 #define ADD_W_b1_keyIn (DWORD) 0x00024 #define ADD_W_b2_keyIn (DWORD) 0x00028 #define ADD_W_b3_keyIn (DWORD) 0x0002C #define ADD_W_b4_keyIn (DWORD) 0x00030 #define ADD_W_b5_keyIn (DWORD) 0x00034 #define ADD_W_b6_keyIn (DWORD) 0x00038 #define ADD_W_b7_keyIn (DWORD) 0x0003C #define ADD_W_dinValid (DWORD) 0x00040 #define ADD_W_encryptIn (DWORD) 0x00044 #define ADD_W_writeDone (DWORD) 0x00048 #define ADD_W_resetFf (DWORD) 0x0004C #define ADD_W_startFsm (DWORD) 0x00050 // VALUES USED TO SET HARDWARE FLIP-FLOPS #define TRUE_resetFf (DWORD) 0x01010101 #define TRUE_startFsm (DWORD) 0x01010101 // VALUES USED TO RESET HARDWARE FLIP-FLOPS #define FALSE_resetFf (DWORD) 0x00000000 #define PARITY (DWORD) 0x7F7F7F7F #define B0 (DWORD) 0x00000001 #define B1 (DWORD) 0x00000002 #define B2 (DWORD) 0x00000004 #define B3 (DWORD) 0x00000008 #define B24 (DWORD) 0x01000000 #define B31 (DWORD) 0x80000000 #define newline() while(getchar()!='\n') //--------------------------------------------------------- // DEFINED TYPES //--------------------------------------------------------- typedef short int SWORD; //--------------------------------------------------------- // FUNCTIONS PROTOTYPES //--------------------------------------------------------- void pseudoRandom64 (DWORD, DWORD, DWORD *, DWORD *); void read_write (EDGAR2A_HANDLE , EDGAR2A_ADDR ); void generateRandData (int, DWORD *, DWORD *, DWORD *, DWORD *); int saveDESdata (char*, int, int, DWORD*, DWORD*, DWORD*, DWORD*, DWORD*, DWORD*); int readDESdata (char*, int *, int *, DWORD*, DWORD*, DWORD*, DWORD*, DWORD*, DWORD*); int readNumberSamples (char*, int *); #endif