The FPX KCPSM Module Exercise: Network Data Encryption / Decryption Using ROT13 Algorithm - PowerPoint PPT Presentation

About This Presentation
Title:

The FPX KCPSM Module Exercise: Network Data Encryption / Decryption Using ROT13 Algorithm

Description:

... Module Exercise. 9. Henry Fu. Writing a KCPSM Program. Access ... Create a KCPSM program using a plain text editor. vi ROT13.PSM. The FPX KCPSM Module Exercise ... – PowerPoint PPT presentation

Number of Views:111
Avg rating:3.0/5.0
Slides: 34
Provided by: arlW
Category:

less

Transcript and Presenter's Notes

Title: The FPX KCPSM Module Exercise: Network Data Encryption / Decryption Using ROT13 Algorithm


1
The FPX KCPSM Module ExerciseNetwork Data
Encryption / Decryption Using ROT13 Algorithm
Henry Fu Washington University Applied Research
Lab Supported by NSF ANI-0096052 and Xilinx
Corp. http//www.arl.wustl.edu/arl/projects/fpx/f
px_kcpsm/ hwf1_at_arl.wustl.edu
2
The FPX KCPSM Module Software Exercise
  • Network data encryption / decryption using ROT13
    algorithm
  • Rotates characters by 13 places
  • A ? N, M ? Z, a ? n, m ? z
  • Encryption Example
  • Hello World encrypts to Uryyb Jbeyq
  • Decryption Example
  • Uryyb Jbeyq decrypts to Hello World

3
Approach to the ROT13 Algorithm
  • Consider the following four cases
  • IF (ch gt A) (ch lt M)
  • Rotate Right ch by 13 characters
  • IF (ch gt N) (ch lt Z)
  • Rotate Left ch by 13 characters
  • IF (ch gt a) (ch lt m)
  • Rotate Right ch by 13 characters
  • IF (ch gt n) (ch lt z)
  • Rotate Left ch by 13 characters

4
The FPX KCPSM Module Package
  • The FPX KCPSM Module Package includes
  • IPTESTBENCH (IP2FAKE)
  • Generates fake ATM cells for simulation
  • UDPTESTBENCH (UDPTEST, UDPSTR)
  • Sends and receives UDP program and data packets
  • KCPSM Package (KCPSMBLE, PSMDEBUG)
  • Includes an assembler and a debugger for KCPSM
  • FPX KCPSM Module in VHDL
  • Includes all the VHDL source codes for the module

5
The FPX KCPSM Module Package (More)
  • The FPX KCPSM Module Package
  • Detailed information on the Internet
  • http//www.arl.wustl.edu/arl/projects/fpx/fpx_kcps
    m/
  • Download the FPX KCPSM Module Package
  • Right click on fpx_kcpsm.tar.gz
  • Save it to h\
  • Extract the FPX KCPSM Module Package
  • Open a cygwin window
  • cd /cygdrive/h/
  • gunzip fpx_kcpsm.tar.gz
  • tar xvf fpx_kcpsm.tar

6
The FPX KCPSM Module Package
  • The FPX KCPSM Module Package includes
  • IPTESTBENCH/
  • Includes the source files, input / output files,
    and comiple script for the IP2FAKE program
  • Build Type make in the prompt
  • UDPTESTBENCH/
  • Includes the source fiels, input files, and
    compile script for the UDPTEST, UDPSTR program
  • Build Type make in the prompt

7
The FPX KCPSM Module Package (More)
  • KCPSM/
  • Includes the KCPSM package from Xilinx Corp. and
    all the VHDL source codes, simulation script,
    synthesis script, and COREGEN component files for
    the FPX_KCPSM Module

8
Programming the KCPSM
  • The KCPSM executes programs stored in the program
    memory and accesses data stored in the data
    memory
  • Program memory stores up to two programs
  • Each program is limited to 255 instructions
  • Program should begin at address 0x00
  • Interrupt input is used to reset the KCPSM
  • Data memory stores up to four data packets
  • Each data packet is limited to 255 bytes

9
Writing a KCPSM Program
  • Access the KCPSM Package
  • cd KCPSM/package
  • Create a subdirectory in the KCPSM package
  • mkdir ROT13
  • cp kcpsmble.dat ROT13/
  • cd ROT13
  • Create a KCPSM program using a plain text editor
  • vi ROT13.PSM

10
The KCPSM Registers and Constants
  • The KCPSM has 16 8-bit registers
  • Used in the program in the sX format, where X
    is one of the following
  • 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F
  • Example s0, sA, sF
  • The KCPSM supports constants
  • Specified in the program in the form of a
    two-digit hexadecimal value, where they ranges
    from 0x00 to 0xFF

11
The KCPSM Special Instructions
  • The KCPSM provides special instructions used to
    handle I/O and Interrupt operations
  • INPUT sX, sY
  • Enables 8-bit data values external to the KCPSM
    to be transferred to register sX, where the port
    address is indirectly specified by the contents
    of sY
  • INPUT sX, pp
  • Enables 8-bit data values external to the KCPSM
    to be transferred to register sX, where the port
    address is directly specified as a two-digit hex
    constant

12
The KCPSM Special Instructions (More)
  • OUTPUT sX, sY
  • Enables 8-bit data values in register sX to be
    transferred to logic external to the KCPSM, where
    the port address is indirectly specified by the
    contents of register sY
  • OUTPUT sX, pp
  • Enables 8-bit data values in register sX to be
    transferred to logic external to the KCPSM, where
    the port address is directly specified by the
    two-digit hex constant

13
The KCPSM Special Instructions (More)
  • ENABLE INTERRUPT
  • Enables future interrupt requests
  • DISABLE INTERRUPT
  • Disables future interrupt requests
  • RETURNI ENABLE
  • Concludes an interrupt service routine and
    specifies that future interrupt requests are
    enabled
  • RETURNI DISABLE
  • Concludes an interrupt service routine and
    specifies that future interrupt requests are
    disabled

14
The KCPSM Instructions
  • For detailed explanations of every instruction
    available to the KCPSM, please refer to the KCPSM
    App Notes
  • 8-bit Microcontroller for Virtex Devices
  • By Ken Chapman of Xilinx Corp.
  • Download URL
  • http//www.xilinx.com/xapp/xapp213.pdf

15
The KCPSM Program Template
  • All KCPSM programs should follow a template in
    order for them to work with the FPX KCPSM Module
  • Enables the KCPSM for Interrupt requests
  • Checks if the data memory is empty
  • Processes data if data memory is not empty
  • Signals to the Interface when KCPSM is done
  • Suspends the KCPSM

16
The KCPSM Program Template (More)
  • Enable KCPSM Interrupt so that the KCPSM
    Interface can reset the KCPSM
  • ENABLE INTERRUPT
  • Check if there is new data packet in memory
  • if no data, signal KCPSM Interface that process
    is done with no write
  • if there is data, proceed to process data
  • INIT INPUT SA,03 LOAD M03 TO SA
  • SUB SA,00 COMPARE SA TO 00
  • JUMP NZ,CHK DATA IN MEMORY,
    PROCEED
  • LOAD SA,00 NO DATA, LOAD 00
    TO SA, no write, signal done
  • OUTPUT SA,FF WRITE 00 TO
    MFF, no write, signal done
  • JUMP WAIT WAIT
  • Assembly code to process data
  • CHK Assembly code goes here
  • Signal KCPSM Interface that process is done, and
    needs to write it out
  • DONE LOAD SA,FF LOAD FF TO SA,
    signal done

17
Assembling a KCPSM Program
  • An assembler called KCPSMBLE is included in the
    KCPSM package from Xilinx Corp.
  • KCPSMBLE needs to be executed in a PC
  • Programs need to be written in plain text
  • Programs needs to be saved in a DOS 8.3 file
    format with a lt.PSMgt extension
  • Usage
  • ../KCPSMBLE ROT13.PSM

18
Assembling a KCPSM Program (More)
  • After KCPSMBLE finishes assembling the program, a
    coefficient file (ROT13.COE) is generated
  • Used by COREGEN to generate a single-port block
    RAM and initialize the block RAM content to the
    machine code of the program
  • Used by CONVERT to generate a dual-port block RAM
    coefficient file for COREGEN and a ltINST.TBPgt for
    simulation and lab testing

19
Debugging a KCPSM Program
  • A debugger called PSMDEBUG is included in the
    KCPSM package from Xilinx Corp.
  • PSMDEBUG needs to be executed in a PC
  • The lt.COEgt file used must be generated by
    KCPSMBLE and must be unmodified
  • Usage
  • ../PSMDEBUG ROT13.COE
  • Detail instructions will appear on screen after
    PSMDEBUG is executed

20
Converting a KCPSM Program
  • The lt.COEgt file generated by KCPSMBLE is targeted
    to use with single-port block RAM
  • The lt.COEgt file generated by KCPSMBLE contains
    the machine code of the KCPSM program
  • Need a program that converts the lt.COEgt file
    generated by KCPSMBLE so that it can be used for
    simulation, synthesis, and testing

21
Converting a KCPSM Program (More)
  • A C program called CONVERT is used to convert the
    lt.COEgt file generated by KCPSMBLE
  • Converts the lt.COEgt file so that it is targeted
    to use with dual-port block RAM
  • Extracts the machine code of the KCPSM from the
    lt.COEgt file so that the program can be used in
    simulation and can be sent to the FPX KCPSM
    Module through an UDP packet

22
Converting a KCPSM Program (More)
  • The CONVERT program
  • Usage
  • ../CONVERT ROT13.COE
  • Two files are generated after the CONVERT program
    is executed
  • ltPROGRAM.COEgt A coefficient file used by COREGEN
    to generate a dual-port block RAM
  • ltINST.TBPgt A input file used by the IP2FAKE
    program to generate simulation inputs and the
    UDPTEST program to send UDP program packet

23
Generating Fake ATM Cells for Simulation
  • A C program called IP2FAKE is used to generate
    fake ATM cells for simulation
  • Generate a fake ROT13 program packet / cell using
    the ltINST.TBPgt from CONVERT
  • Usage
  • /cygdrive/h/iptestbench/ip2fake INST.TBP
    ROT13.DAT
  • Generate a fake input data packet / cell
  • Use a plain text editor to create a HELLO.TBP
    file
  • vi HELLO.TBP

24
Contents of the HELLO.TBP File
  • demo testbench
  • comments start with
  • commands start with !
  • parameters are optional
  • to get familiar with the tools run "ip2raw
    TESTBENCH.TBP"
  • and check the outcoming TBRAW.TBP file
  • UDP block, will be prepended by an UDP header
  • parameter ip-address, dest-port, src-port
  • !UDP 192.168.0.1 7 64000
  • 00000001
  • 48656C6C
  • 6F20576F
  • 726C6400

25
Simulating a KCPSM Program
  • Modelsim is used to simulate the FPX KCPSM Module
  • Copy the fake ATM program and data packet / cell
    to the simulation directory
  • cp ROT13.DAT KCPSM/sim/
  • cp HELLO.DAT KCPSM/sim/
  • Go to the design simulation directory
  • cd KCPSM/sim/
  • Create the simulation input file
  • cat WAIT.DAT ROT13.DAT HELLO.DAT gt INPUT_CELLS.DAT

26
Simulating a KCPSM Program (More)
  • Compile the module and Start Modelsim
  • make compile
  • make sim
  • In Modelsim main window, type
  • do testbench.do
  • run 10000
  • In Modelsim wave window
  • Edit gt Select All
  • Right click on the selected waves
  • Radix gt Hexadecimal

27
Simulating a KCPSM Program (More)
  • In Modelsim wave window
  • Go through the window and see the internal KCPSM
    processing details
  • In the cygwin window, open the simulation output
    file
  • vi LC_CELLSOUT.DAT
  • Scroll through the simulation output file
  • Each ATM cell is separated by a new_cell line
  • The first to the third to last cells are program
    packets
  • The last two cells are the encrypted data packets

28
Simulating a KCPSM Program
  • The input data cell
  • The output data cell

29
Testing a KCPSM Program in the Lab
  • FTP the .TBP file to fpx
  • sftp yourlogin_at_fpx.arl.wustl.edu
  • put ROT13.TBP
  • quit
  • Login to fpx using ssh (Secure Shell)
  • ssh -l yourlogin fpx.arl.wustl.edu
  • mkdir udptestbench/
  • cd udptestbench/
  • cp hwf1/udptestbench/ .

30
Testing a KCPSM Program in the Lab
  • Use UDPTEST to send the ROT13 program packet
  • ./udptest ../ROT13.TBP
  • Use UDPSTR to send the data packet
  • ./udpstr h 192.168.10.1 p 7

31
Testing a KCPSM Program in the Lab (More)
  • Screenshot of the encryption example

32
Testing a KCPSM Program in the Lab (More)
  • Screenshot of the decryption example

33
Conclusion
  • In this FPX KCPSM Module Exercise
  • Write, assemble, and debug a KCPSM program using
    KCPSMBLE, PSMDEBUG
  • Generate fake program and data ATM cells for
    simulation using CONVERT, IP2FAKE
  • Simulate a KCPSM program using Modelsim
  • Test a KCPSM program in the lab using UDPTEST,
    UDPSTR
Write a Comment
User Comments (0)
About PowerShow.com