This is an old revision of the document!
JOP - Java Optimized Processor
JOP is one way to use a configurable Java processor in small embedded real-time systems. It shall help to increase the acceptance of Java for these systems.
Now JOP processor works on ZTEX boards. With DDR SDRAM support (but 16Mb, yet). FPGA is only used by 23% so you can make multiple cores in CMP JOP
The latest version can be obtained from with following Git command:
git clone git://www.soc.tuwien.ac.at/jop.git
Create the needed directories with:
make directories
The tools are built with following make command:
make tools
The JVM configured to download the Java application from the serial interface is built with:
make jopser
Use Coregen/MIG 3.7 (or 3.61 for ISE 12.4) to create the controller. You may use file xilinx/ztex/mig_37/mig_37.xco for Coregen
Once the controller is generated copy all the vhdl files from the user_design/rtl directory to xilinx/ztex/mig_37 directory and apply patch:
patch < memc3_infrastructure.patch
Run make in directory xilinx/ztex or load project xilinx/ztex/ise_13/ise_13.xise to ISE
Use FWLoader or Xilinx impact
Connect serial cable to line “A”
From root dir of jop make:
make japp -e P1=bench P2=jbe P3=DoAll
Copy file java/target/dist/bin/DoAll.jop to root jop dir and load it:
down.exe -e DoAll.jop com3
./down -e DoAll.jop /dev/ttyUSB0
Provide your correct port!
Result:
Parsed JOP file ok. * 11656 words of Java bytecode (45 KB) * 20315 words external RAM (79 KB) Transmitting data via serial... [########################################################### ] 20224 / 20315 Done. JOP start V 20110107 93 MHz, 16384 KB RAM, 1 CPUs JavaBenchEmbedded V1.1 Micro Benchmarks: iload_3 iadd 46091000 1/s iinc 23172000 1/s ldc 4629000 1/s if_icmplt taken 15477000 1/s if_icmplt not taken 15477000 1/s getfield 2699000 1/s getstatic 5084000 1/s iaload 2122000 1/s invoke 521679 1/s invokestatic 667033 1/s invokeinterface 413802 1/s Kernel Benchmarks: Sieve 3663 1/s Application benchmarks: Kfl 8555 1/s UdpIp 3980 1/s Lift 9346 1/s