DM9000A
From JopWiki
Contents
|
[edit] Ethernet using the Davicom DM9000A
[edit] Introduction
This project is implemented on Altera DE2-70 Development board, which has a Davicom DM9000A Ethernet controller.
[edit] Howto's
[edit] IO using JOP
[edit] Important files
[edit] quartus\altde2-70\jop.qsf
This file contains pin descriptions and includes a list of the VHDL files to be included in the project.
This file is where io pin names for the top level module is located.
Notice that there was a problem with certain pins having dual functionality. This was fixed in this file.
[edit] vhdl\top\jop_512x32.vhd
This file is the top level module. This is where io pins are located (in combination with the .qsf file).
[edit] vhdl\scio\scio_min_DE2-70.vhd
This file is the top level io module. This is where io pins from jop_512x32.vhd are connected.
[edit] java\target\src\common\com\jopdesign\sys\Const.java
This is where you would put the address constants for the Java drivers.
[edit] Manual for Quartus II sp2 in Ubuntu 10.04
get Quartus II Web Edition Software v9.1 Service Pack 2 from:
https://www.altera.com/support/software/download/altera_design/quartus_we/dnl-quartus_we.jsp?null
tar xvf 91sp2_quartus_free_linux.tar
cd quartus_free/
sudo apt-get install tcsh
tcsh install
WARNING!!! Dont know if the next section is necessary and it maybe CRASH your X-server:
Download libxi.so.6.0.0.txt.7z from her: http://www.alteraforum.com/forum/attachment.php?attachmentid=2449&d=1272669728
cp libXi.so.6.0.0.txt /usr/lib/libXi.so.6.0.0 ln -s -f /usr/lib/libXi.so.6.0.0 /usr/lib/libXi.so.6 ln -s /usr/lib/libXi.so.6.0.0 /opt/altera9.1sp2/quartus/linux/libXi.so.6
But this is:
cd /opt/altera9.1/quartus/linux/ sudo mv libX11.so.6 libX11.so.6_old sudo mv libuuid.so.1 libuuid.so.1_old
add line to .profile:
PATH="$PATH:/opt/altera9.1sp2/quartus/bin/"
[edit] Manual for USB byteblaster driver
edit the file /etc/rc.local and add this at the bottom:
# USBFS emulation for Altera USB Blaster. mkdir -p /dev/bus/usb/.usbfs mount -n -t usbfs usbfs /dev/bus/usb/.usbfs -obusmode=0700,devmode=0600,listmode=0644 ln -sf .usbfs/devices /dev/bus/usb/devices mount --rbind /dev/bus/usb /proc/bus/usb
Then save that file and run "sudo /etc/rc.local".
AND:
1) Create a new file at /etc/udev/rules.d/51-usbblaster.rules ("sudo gedit /etc/udev/rules.d/51-usbblaster.rules")
2) Put this in it:
# Altera USB-Blaster rule to set mode to 666.
SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", SYSFS{idVendor}=="09fb", SYSFS{idProduct}=="6001", MODE="0666", NAME="bus/usb/$env{BUSNUM}/$env{DEVNUM}", RUN+="/bin/chmod 0666 %c"
3) Save and close.
4) Run "sudo udevadm control --reload-rules".
maybe an alternative:
See http://www.altera.com/support/software/drivers/dri-usb_b-lnx.html for usb blaster JTAG driver to Linux
[edit] Manual for JOP java download over the serial connection
Install openjdk-6-jdk:
sudo apt-get install openjdk-6-jdk
maybe install java6-sdk:
sudo apt-get install java6-sdk
install librxtx-java
sudo apt-get install librxtx-java
In Makefile:
ifeq ($(USB),true)
COM_PORT=COM5
COM_FLAG=-e -usb
else
COM_PORT=/dev/ttyUSB0
COM_FLAG=-e
endif
change the line following line:
COM_PORT=COM1
to
COM_PORT=/dev/ttyUSB0
and uncomment:
java -cp java/tools/dist/lib/jop-tools.jar$(S)java/lib/RXTXcomm.jar com.jopdesign.tools.JavaDown $(COM_FLAG) java/target/dist/bin/$(JOPBIN)$(COM_PORT)
and comment:
# ./down.exe $(COM_FLAG) java/target/dist/bin/$(JOPBIN) $(COM_PORT)
[edit] Testing
[edit] Modelsim testing of communication using the VHDL state machine
We simulated the 3 basic operations: Index, read and write.
[edit] Index
This image show that the processor transfers the index from PROC_DATA_OUT to the DM9000A chip though the Data bus.
[edit] Read
This image show that the databus is read at an appropiate place.
[edit] Write
This image show that the processor transfers the data value from PROC_DATA_OUT to the DM9000A chip though the Data bus.
[edit] Live testing of communication using the VHDL state machine
4 tests was used.
Notice the default value for the registers is:
Address: 0x07, Value: 0x00 Address: 0x08, Value: 0x37 Address: 0x09, Value: 0x38
[edit] Test 1
This test read all 256 registers 3 times in a row to see if we could read the default values.
The results is shown below:
-- Test 1 -- Address: 0x0, Value: 0x0, 0x0, 0x0 Address: 0x1, Value: 0x0, 0x0, 0x0 Address: 0x2, Value: 0x0, 0x0, 0x0 Address: 0x3, Value: 0x0, 0x0, 0x0 Address: 0x4, Value: 0x0, 0x0, 0x0 Address: 0x5, Value: 0x0, 0x0, 0x0 Address: 0x6, Value: 0x0, 0x0, 0x0 Address: 0x7, Value: 0x0, 0x0, 0x0 Address: 0x8, Value: 0x0, 0x37, 0x37 Address: 0x9, Value: 0x38, 0x38, 0x38 Address: 0xa, Value: 0x0, 0x0, 0x0 Address: 0xb, Value: 0x0, 0x0, 0x0 Address: 0xc, Value: 0x0, 0x40, 0x40 Address: 0xd, Value: 0x40, 0x40, 0x0 Address: 0xe, Value: 0x0, 0x0, 0x0 Address: 0xf, Value: 0x0, 0x0, 0x0 Address: 0x10, Value: 0x0, 0x0, 0x0 Address: 0x11, Value: 0x0, 0x0, 0x0 Address: 0x12, Value: 0x0, 0x0, 0x0 Address: 0x13, Value: 0x0, 0x0, 0x0 Address: 0x14, Value: 0x0, 0x0, 0x0 Address: 0x15, Value: 0x0, 0x0, 0x0 Address: 0x16, Value: 0xd, 0xd, 0xd Address: 0x17, Value: 0xd, 0x5a, 0x5a Address: 0x18, Value: 0x5a, 0x70, 0x70 Address: 0x19, Value: 0x70, 0xd7, 0xd7 Address: 0x1a, Value: 0xd7, 0xe7, 0xe7 Address: 0x1b, Value: 0x78, 0x78, 0x78 Address: 0x1c, Value: 0x78, 0x42, 0x42 Address: 0x1d, Value: 0x4, 0x4, 0x4 Address: 0x1e, Value: 0x4, 0x71, 0x71 Address: 0x1f, Value: 0x71, 0x58, 0x58 Address: 0x20, Value: 0x58, 0x0, 0x0 Address: 0x21, Value: 0x0, 0x0, 0x0 Address: 0x22, Value: 0x0, 0x0, 0x0 Address: 0x23, Value: 0x0, 0x0, 0x0 Address: 0x24, Value: 0x0, 0x0, 0x0 Address: 0x25, Value: 0x0, 0xc, 0xc Address: 0x26, Value: 0xc, 0x0, 0x0 Address: 0x27, Value: 0x0, 0x0, 0x0 Address: 0x28, Value: 0x0, 0x0, 0x46 Address: 0x29, Value: 0xa, 0xa, 0xa Address: 0x2a, Value: 0xa, 0x0, 0x0 Address: 0x2b, Value: 0x0, 0x0, 0x0 Address: 0x2c, Value: 0x90, 0x19, 0x19 Address: 0x2d, Value: 0x19, 0x19, 0x0 Address: 0x2e, Value: 0x0, 0x0, 0x0 Address: 0x2f, Value: 0x0, 0x0, 0x0 Address: 0x30, Value: 0x0, 0x0, 0x0 Address: 0x31, Value: 0x0, 0x0, 0x0 Address: 0x32, Value: 0x0, 0x0, 0x0 Address: 0x33, Value: 0x0, 0x0, 0x0 Address: 0x34, Value: 0x1, 0x0, 0x0 Address: 0x35, Value: 0x0, 0x0, 0x0 Address: 0x36, Value: 0x0, 0x0, 0x0 Address: 0x37, Value: 0x0, 0x0, 0x0 Address: 0x38, Value: 0x61, 0x61, 0x61 Address: 0x39, Value: 0x61, 0x0, 0x0 Address: 0x3a, Value: 0x0, 0x0, 0x0 Address: 0x3b, Value: 0x0, 0x0, 0x0 Address: 0x3c, Value: 0x0, 0x0, 0x0 Address: 0x3d, Value: 0x0, 0x0, 0x0 Address: 0x3e, Value: 0x0, 0x0, 0x0 Address: 0x3f, Value: 0x0, 0x0, 0x0 Address: 0x40, Value: 0x5, 0x5, 0x5 Address: 0x41, Value: 0x5, 0x10, 0x10 Address: 0x42, Value: 0x10, 0x0, 0x0 Address: 0x43, Value: 0x0, 0x0, 0x0 Address: 0x44, Value: 0x0, 0x0, 0x0 Address: 0x45, Value: 0x0, 0x0, 0x0 Address: 0x46, Value: 0x0, 0x0, 0x0 Address: 0x47, Value: 0x0, 0x0, 0x0 Address: 0x48, Value: 0x0, 0x0, 0x0 Address: 0x49, Value: 0x0, 0x0, 0x0 Address: 0x4a, Value: 0x0, 0x0, 0x0 Address: 0x4b, Value: 0x0, 0x0, 0x0 Address: 0x4c, Value: 0x0, 0x0, 0x0 Address: 0x4d, Value: 0x0, 0x0, 0x0 Address: 0x4e, Value: 0x0, 0x0, 0x0 Address: 0x4f, Value: 0x0, 0x0, 0x0 Address: 0x50, Value: 0x0, 0x0, 0x0 Address: 0x51, Value: 0x0, 0x0, 0x0 Address: 0x52, Value: 0x0, 0x0, 0x0 Address: 0x53, Value: 0x0, 0x0, 0x0 Address: 0x54, Value: 0x0, 0x0, 0x0 Address: 0x55, Value: 0x0, 0x0, 0x0 Address: 0x56, Value: 0x0, 0x0, 0x0 Address: 0x57, Value: 0x0, 0x0, 0x0 Address: 0x58, Value: 0x0, 0x0, 0x0 Address: 0x59, Value: 0x0, 0x0, 0x0 Address: 0x5a, Value: 0x0, 0x0, 0x0 Address: 0x5b, Value: 0x0, 0x0, 0x0 Address: 0x5c, Value: 0x0, 0x0, 0x0 Address: 0x5d, Value: 0x0, 0x0, 0x0 Address: 0x5e, Value: 0x0, 0x0, 0x0 Address: 0x5f, Value: 0x0, 0x0, 0x0 Address: 0x60, Value: 0x0, 0x0, 0x0 Address: 0x61, Value: 0x0, 0x0, 0x0 Address: 0x62, Value: 0x0, 0x0, 0x0 Address: 0x63, Value: 0x0, 0x0, 0x0 Address: 0x64, Value: 0x0, 0x0, 0x0 Address: 0x65, Value: 0x0, 0x0, 0x0 Address: 0x66, Value: 0x0, 0x0, 0x0 Address: 0x67, Value: 0x0, 0x0, 0x0 Address: 0x68, Value: 0x0, 0x0, 0x0 Address: 0x69, Value: 0x0, 0x0, 0x0 Address: 0x6a, Value: 0x0, 0x0, 0x0 Address: 0x6b, Value: 0x0, 0x0, 0x0 Address: 0x6c, Value: 0x0, 0x0, 0x0 Address: 0x6d, Value: 0x0, 0x0, 0x0 Address: 0x6e, Value: 0x0, 0x0, 0x0 Address: 0x6f, Value: 0x0, 0x0, 0x0 Address: 0x70, Value: 0x0, 0x0, 0x0 Address: 0x71, Value: 0x0, 0x0, 0x0 Address: 0x72, Value: 0x0, 0x0, 0x0 Address: 0x73, Value: 0x0, 0x0, 0x0 Address: 0x74, Value: 0x0, 0x0, 0x0 Address: 0x75, Value: 0x0, 0x0, 0x0 Address: 0x76, Value: 0x0, 0x0, 0x0 Address: 0x77, Value: 0x0, 0x0, 0x0 Address: 0x78, Value: 0x0, 0x0, 0x0 Address: 0x79, Value: 0x0, 0x0, 0x0 Address: 0x7a, Value: 0x0, 0x0, 0x0 Address: 0x7b, Value: 0x0, 0x0, 0x0 Address: 0x7c, Value: 0x0, 0x0, 0x0 Address: 0x7d, Value: 0x0, 0x0, 0x0 Address: 0x7e, Value: 0x0, 0x0, 0x0 Address: 0x7f, Value: 0x0, 0x0, 0x0 Address: 0x80, Value: 0x0, 0x0, 0x0 Address: 0x81, Value: 0x0, 0x0, 0x0 Address: 0x82, Value: 0x0, 0x0, 0x0 Address: 0x83, Value: 0x0, 0x0, 0x0 Address: 0x84, Value: 0x0, 0x0, 0x0 Address: 0x85, Value: 0x0, 0x0, 0x0 Address: 0x86, Value: 0x0, 0x0, 0x0 Address: 0x87, Value: 0x0, 0x0, 0x0 Address: 0x88, Value: 0x0, 0x0, 0x0 Address: 0x89, Value: 0x0, 0x0, 0x0 Address: 0x8a, Value: 0x0, 0x0, 0x0 Address: 0x8b, Value: 0x0, 0x0, 0x0 Address: 0x8c, Value: 0x0, 0x0, 0x0 Address: 0x8d, Value: 0x0, 0x0, 0x0 Address: 0x8e, Value: 0x0, 0x0, 0x0 Address: 0x8f, Value: 0x0, 0x0, 0x0 Address: 0x90, Value: 0x0, 0x0, 0x0 Address: 0x91, Value: 0x0, 0x0, 0x0 Address: 0x92, Value: 0x0, 0x0, 0x0 Address: 0x93, Value: 0x0, 0x0, 0x0 Address: 0x94, Value: 0x0, 0x0, 0x0 Address: 0x95, Value: 0x0, 0x0, 0x0 Address: 0x96, Value: 0x0, 0x0, 0x0 Address: 0x97, Value: 0x0, 0x0, 0x0 Address: 0x98, Value: 0x0, 0x0, 0x0 Address: 0x99, Value: 0x0, 0x0, 0x0 Address: 0x9a, Value: 0x0, 0x0, 0x0 Address: 0x9b, Value: 0x0, 0x0, 0x0 Address: 0x9c, Value: 0x0, 0x0, 0x0 Address: 0x9d, Value: 0x0, 0x0, 0x0 Address: 0x9e, Value: 0x0, 0x0, 0x0 Address: 0x9f, Value: 0x0, 0x0, 0x0 Address: 0xa0, Value: 0x0, 0x0, 0x0 Address: 0xa1, Value: 0x0, 0x0, 0x0 Address: 0xa2, Value: 0x0, 0x0, 0x0 Address: 0xa3, Value: 0x0, 0x0, 0x0 Address: 0xa4, Value: 0x0, 0x0, 0x0 Address: 0xa5, Value: 0x0, 0x0, 0x0 Address: 0xa6, Value: 0x0, 0x0, 0x0 Address: 0xa7, Value: 0x0, 0x0, 0x0 Address: 0xa8, Value: 0x0, 0x0, 0x0 Address: 0xa9, Value: 0x0, 0x0, 0x0 Address: 0xaa, Value: 0x0, 0x0, 0x0 Address: 0xab, Value: 0x0, 0x0, 0x0 Address: 0xac, Value: 0x0, 0x0, 0x0 Address: 0xad, Value: 0x0, 0x0, 0x0 Address: 0xae, Value: 0x0, 0x0, 0x0 Address: 0xaf, Value: 0x0, 0x0, 0x0 Address: 0xb0, Value: 0x0, 0x0, 0x0 Address: 0xb1, Value: 0x0, 0x0, 0x0 Address: 0xb2, Value: 0x0, 0x0, 0x0 Address: 0xb3, Value: 0x0, 0x0, 0x0 Address: 0xb4, Value: 0x0, 0x0, 0x0 Address: 0xb5, Value: 0x0, 0x0, 0x0 Address: 0xb6, Value: 0x0, 0x0, 0x0 Address: 0xb7, Value: 0x0, 0x0, 0x0 Address: 0xb8, Value: 0x0, 0x0, 0x0 Address: 0xb9, Value: 0x0, 0x0, 0x0 Address: 0xba, Value: 0x0, 0x0, 0x0 Address: 0xbb, Value: 0x0, 0x0, 0x0 Address: 0xbc, Value: 0x0, 0x0, 0x0 Address: 0xbd, Value: 0x0, 0x0, 0x0 Address: 0xbe, Value: 0x0, 0x0, 0x0 Address: 0xbf, Value: 0x0, 0x0, 0x0 Address: 0xc0, Value: 0x0, 0x0, 0x0 Address: 0xc1, Value: 0x0, 0x0, 0x0 Address: 0xc2, Value: 0x0, 0x0, 0x0 Address: 0xc3, Value: 0x0, 0x0, 0x0 Address: 0xc4, Value: 0x0, 0x0, 0x0 Address: 0xc5, Value: 0x0, 0x0, 0x0 Address: 0xc6, Value: 0x0, 0x0, 0x0 Address: 0xc7, Value: 0x0, 0x0, 0x0 Address: 0xc8, Value: 0x0, 0x0, 0x0 Address: 0xc9, Value: 0x0, 0x0, 0x0 Address: 0xca, Value: 0x0, 0x0, 0x0 Address: 0xcb, Value: 0x0, 0x0, 0x0 Address: 0xcc, Value: 0x0, 0x0, 0x0 Address: 0xcd, Value: 0x0, 0x0, 0x0 Address: 0xce, Value: 0x0, 0x0, 0x0 Address: 0xcf, Value: 0x0, 0x0, 0x0 Address: 0xd0, Value: 0x0, 0x0, 0x0 Address: 0xd1, Value: 0x0, 0x0, 0x0 Address: 0xd2, Value: 0x0, 0x0, 0x0 Address: 0xd3, Value: 0x0, 0x0, 0x0 Address: 0xd4, Value: 0x0, 0x0, 0x0 Address: 0xd5, Value: 0x0, 0x0, 0x0 Address: 0xd6, Value: 0x0, 0x0, 0x0 Address: 0xd7, Value: 0x0, 0x0, 0x0 Address: 0xd8, Value: 0x0, 0x0, 0x0 Address: 0xd9, Value: 0x0, 0x0, 0x0 Address: 0xda, Value: 0x0, 0x0, 0x0 Address: 0xdb, Value: 0x0, 0x0, 0x0 Address: 0xdc, Value: 0x0, 0x0, 0x0 Address: 0xdd, Value: 0x0, 0x0, 0x0 Address: 0xde, Value: 0x0, 0x0, 0x0 Address: 0xdf, Value: 0x0, 0x0, 0x0 Address: 0xe0, Value: 0x0, 0x0, 0x0 Address: 0xe1, Value: 0x0, 0x0, 0x0 Address: 0xe2, Value: 0x0, 0x0, 0x0 Address: 0xe3, Value: 0x0, 0x0, 0x0 Address: 0xe4, Value: 0x0, 0x0, 0x0 Address: 0xe5, Value: 0x0, 0x0, 0x0 Address: 0xe6, Value: 0x0, 0x0, 0x0 Address: 0xe7, Value: 0x0, 0x0, 0x0 Address: 0xe8, Value: 0x0, 0x0, 0x0 Address: 0xe9, Value: 0x0, 0x0, 0x0 Address: 0xea, Value: 0x0, 0x0, 0x0 Address: 0xeb, Value: 0x0, 0x0, 0x0 Address: 0xec, Value: 0x0, 0x0, 0x0 Address: 0xed, Value: 0x0, 0x0, 0x0 Address: 0xee, Value: 0x0, 0x0, 0x0 Address: 0xef, Value: 0x0, 0x0, 0x0 Address: 0xf0, Value: 0xce26, 0xce26, 0xce26 Address: 0xf1, Value: 0xce26, 0xce26, 0xce26 Address: 0xf2, Value: 0xce26, 0xd4df, 0xb6e2 Address: 0xf3, Value: 0x7c72, 0x0, 0x0 Address: 0xf4, Value: 0x0, 0x8, 0x8 Address: 0xf5, Value: 0x8, 0x0, 0x0 Address: 0xf6, Value: 0x0, 0xcd00, 0xcd00 Address: 0xf7, Value: 0xcd00, 0x0, 0x0 Address: 0xf8, Value: 0x0, 0xcd00, 0xcd00 Address: 0xf9, Value: 0xcd00, 0x0, 0x0 Address: 0xfa, Value: 0x0, 0x0, 0x0 Address: 0xfb, Value: 0x0, 0x0, 0x0 Address: 0xfc, Value: 0x0, 0x0, 0x0 Address: 0xfd, Value: 0x0, 0x0, 0x0 Address: 0xfe, Value: 0x0, 0x0, 0x0
[edit] Test 2
Test 2 reads 3 registers at address 0x07, 0x08 and 0x09.
A counter is incremented in a loop and a sequence where the registers first is read, then the counter is written to register 0x08 and the registers is then read again, is executed.
Below is the first results:
-- Test 2 -- Address: 0x7, Value: 0x0, 0x37, 0x37 Wrote 0x0 to 0x8 Address: 0x7, Value: 0x0, 0x37, 0x37 Address: 0x7, Value: 0x0, 0x37, 0x37 Wrote 0x1 to 0x8 Address: 0x7, Value: 0x0, 0x37, 0x37 Address: 0x7, Value: 0x0, 0x0, 0x0 Wrote 0x2 to 0x8 Address: 0x7, Value: 0x2, 0x37, 0x38 Address: 0x7, Value: 0x38, 0x37, 0x37 Wrote 0x3 to 0x8 Address: 0x7, Value: 0x0, 0x37, 0x37 Address: 0x7, Value: 0x0, 0x0, 0x38 Wrote 0x4 to 0x8 Address: 0x7, Value: 0x0, 0x37, 0x37 Address: 0x7, Value: 0x38, 0x37, 0x37 Wrote 0x5 to 0x8 Address: 0x7, Value: 0x5, 0x37, 0x37 Address: 0x7, Value: 0x38, 0x37, 0x38 Wrote 0x6 to 0x8 Address: 0x7, Value: 0x0, 0x37, 0x37 Address: 0x7, Value: 0x38, 0x37, 0x37 Wrote 0x7 to 0x8 Address: 0x7, Value: 0x0, 0x37, 0x37 Address: 0x7, Value: 0x38, 0x37, 0x38 Wrote 0x8 to 0x8 Address: 0x7, Value: 0x8, 0x8, 0x8 Address: 0x7, Value: 0x38, 0x8, 0x8 Wrote 0x9 to 0x8 Address: 0x7, Value: 0x9, 0x8, 0x9 Address: 0x7, Value: 0x9, 0x9, 0x9 Wrote 0xa to 0x8 Address: 0x7, Value: 0x8, 0x8, 0x9 Address: 0x7, Value: 0x9, 0x8, 0x8 Wrote 0xb to 0x8 Address: 0x7, Value: 0x0, 0x8, 0x8 Address: 0x7, Value: 0x0, 0x0, 0x9 Wrote 0xc to 0x8 Address: 0x7, Value: 0x0, 0x0, 0x9 Address: 0x7, Value: 0x9, 0x8, 0x8 Wrote 0xd to 0x8 Address: 0x7, Value: 0xd, 0x8, 0x8 Address: 0x7, Value: 0x9, 0x8, 0x8 Wrote 0xe to 0x8 Address: 0x7, Value: 0x0, 0x0, 0x0 Address: 0x7, Value: 0x0, 0x0, 0x9 Wrote 0xf to 0x8 Address: 0x7, Value: 0x0, 0x0, 0x9 Address: 0x7, Value: 0x9, 0x9, 0x9
[edit] Test 3 og test 4
Test 3 and 4 are combined in an indefinite loop.
Test 3 reads register 0x07, 0x08 and 0x09.
Test 4 use 2 counters one incrementing by one in each loop the other decrementing by one. First register 0x07, 0x08 and 0x09 are read 2 times each. Then counter 1 is written to register 0x08 and counter 2 to register 0x09. Then register 0x07, 0x08 and 0x09 are read 2 times each again.
-- Test 3 -- Address: 0x7, Value: 0x0 Address: 0x8, Value: 0x0 Address: 0x9, Value: 0x9 . -- Test 4 -- Address: 0x8, Value: 0x9 Address: 0x8, Value: 0xa9 Address: 0x8, Value: 0xa9 Address: 0x9, Value: 0xa9 Address: 0x9, Value: 0x9 Address: 0x9, Value: 0x9 Address: 0x8, Value: 0xbf Address: 0x8, Value: 0xa9 Address: 0x8, Value: 0xa9 Address: 0x9, Value: 0x1 Address: 0x9, Value: 0x1 Address: 0x9, Value: 0x1
-- Test 3 -- Address: 0x7, Value: 0x1 Address: 0x8, Value: 0xa9 Address: 0x9, Value: 0xa9 . -- Test 4 -- Address: 0x8, Value: 0x1 Address: 0x8, Value: 0xa9 Address: 0x8, Value: 0xa9 Address: 0x9, Value: 0x1 Address: 0x9, Value: 0x1 Address: 0x9, Value: 0x1 Address: 0x8, Value: 0x2 Address: 0x8, Value: 0xfe Address: 0x8, Value: 0xfe Address: 0x9, Value: 0xfe Address: 0x9, Value: 0xfe Address: 0x9, Value: 0x2
-- Test 3 -- Address: 0x7, Value: 0x0 Address: 0x8, Value: 0x0 Address: 0x9, Value: 0x2 . -- Test 4 -- Address: 0x8, Value: 0x2 Address: 0x8, Value: 0x2 Address: 0x8, Value: 0x2 Address: 0x9, Value: 0xfe Address: 0x9, Value: 0xfe Address: 0x9, Value: 0x2 Address: 0x8, Value: 0xfe Address: 0x8, Value: 0xfe Address: 0x8, Value: 0xfe Address: 0x9, Value: 0xfe Address: 0x9, Value: 0x2 Address: 0x9, Value: 0x2
-- Test 3 -- Address: 0x7, Value: 0x2 Address: 0x8, Value: 0xfe Address: 0x9, Value: 0x2 . -- Test 4 -- Address: 0x8, Value: 0x2 Address: 0x8, Value: 0xfe Address: 0x8, Value: 0xfe Address: 0x9, Value: 0xfe Address: 0x9, Value: 0x2 Address: 0x9, Value: 0x2 Address: 0x8, Value: 0xfc Address: 0x8, Value: 0xfc Address: 0x8, Value: 0xfc Address: 0x9, Value: 0x2 Address: 0x9, Value: 0x2 Address: 0x9, Value: 0x2
-- Test 3 -- Address: 0x7, Value: 0x0 Address: 0x8, Value: 0x0 Address: 0x9, Value: 0x2 . -- Test 4 -- Address: 0x8, Value: 0xfc Address: 0x8, Value: 0xfc Address: 0x8, Value: 0xfc Address: 0x9, Value: 0xfc Address: 0x9, Value: 0x2 Address: 0x9, Value: 0x2 Address: 0x8, Value: 0x5 Address: 0x8, Value: 0x5 Address: 0x8, Value: 0xfb Address: 0x9, Value: 0xfb Address: 0x9, Value: 0x5 Address: 0x9, Value: 0x5
[edit] Test of basic IO operations with sc_DM9000A
In this section we are testing the communication to the DM9000A with a software controller(DM9000A_LowLevelDriverSoft.java and sc_DM9000A.vhd)
[edit] Simulation
This simulation shows the write and read operation instructions to the DM9000A chip.
[edit] Test on Altera DE2-70
JOP start V 20100424 100 MHz, 2048 KB RAM, 1 CPUs Address: Address: 9, Value: 0x0 Address: a, Value: 0x0 Address: 0, Value: 0x0 Address: 1, Value: 0x0 Address: 2, Value: 0x0 Address: 3, Value: 0x0 Address: 4, Value: 0x0 Address: 5, Value: 0x0 Address: 6, Value: 0x0 Address: 7, Value: 0x0 Address: 8, Value: 0x0 Address: 9, Value: 0x0 Address: a, Value: 0x0 Address: b, Value: 0x0 Address: c, Value: 0x0 Address: d, Value: 0x0 Address: e, Value: 0x0 Address: f, Value: 0x0 Address: 10, Value: 0x0 Address: 11, Value: 0x0 Address: 12, Value: 0x0 Address: 13, Value: 0x0 Address: 14, Value: 0x0 Address: 15, Value: 0x0 Address: 16, Value: 0x0 Address: 17, Value: 0x0 Address: 18, Value: 0x0 Address: 19, Value: 0x0 Address: 1a, Value: 0x0 Address: 1b, Value: 0x0 Address: 1c, Value: 0x0 Address: 1d, Value: 0x0 Address: 1e, Value: 0x0 Address: 1f, Value: 0x0 Address: 20, Value: 0x0 Address: 21, Value: 0x0 Address: 22, Value: 0x0 Address: 23, Value: 0x0 Address: 24, Value: 0x0 Address: 25, Value: 0x0 Address: 26, Value: 0x0 Address: 27, Value: 0x0 Address: 28, Value: 0x0 Address: 29, Value: 0x0 Address: 2a, Value: 0x0 Address: 2b, Value: 0x0 Address: 2c, Value: 0x0 Address: 2d, Value: 0x0 Address: 2e, Value: 0x0 Address: 2f, Value: 0x0 Address: 30, Value: 0x0 Address: 31, Value: 0x0 Address: 32, Value: 0x0 Address: 33, Value: 0x0 Address: 34, Value: 0x0 Address: 35, Value: 0x0 Address: 36, Value: 0x0 Address: 37, Value: 0x0 Address: 38, Value: 0x0 Address: 39, Value: 0x0 Address: 3a, Value: 0x0 Address: 3b, Value: 0x0 Address: 3c, Value: 0x0 Address: 3d, Value: 0x0 Address: 3e, Value: 0x0 Address: 3f, Value: 0x0 Address: 40, Value: 0x0 Address: 41, Value: 0x0 Address: 42, Value: 0x0 Address: 43, Value: 0x0 Address: 44, Value: 0x0 Address: 45, Value: 0x0 Address: 46, Value: 0x0 Address: 47, Value: 0x0 Address: 48, Value: 0x0 Address: 49, Value: 0x0 Address: 4a, Value: 0x0 Address: 4b, Value: 0x0 Address: 4c, Value: 0x0 Address: 4d, Value: 0x0 Address: 4e, Value: 0x0 Address: 4f, Value: 0x0 Address: 50, Value: 0x0 Address: 51, Value: 0x0 Address: 52, Value: 0x0 Address: 53, Value: 0x0 Address: 54, Value: 0x0 Address: 55, Value: 0x0 Address: 56, Value: 0x0 Address: 57, Value: 0x0 Address: 58, Value: 0x0 Address: 59, Value: 0x0 Address: 5a, Value: 0x0 Address: 5b, Value: 0x0 Address: 5c, Value: 0x0 Address: 5d, Value: 0x0 Address: 5e, Value: 0x0 Address: 5f, Value: 0x0 Address: 60, Value: 0x0 Address: 61, Value: 0x0 Address: 62, Value: 0x0 Address: 63, Value: 0x0 Address: 64, Value: 0x0 Address: 65, Value: 0x0 Address: 66, Value: 0x0 Address: 67, Value: 0x0 Address: 68, Value: 0x0 Address: 69, Value: 0x0 Address: 6a, Value: 0x0 Address: 6b, Value: 0x0 Address: 6c, Value: 0x0 Address: 6d, Value: 0x0 Address: 6e, Value: 0x0 Address: 6f, Value: 0x0 Address: 70, Value: 0x0 Address: 71, Value: 0x0 Address: 72, Value: 0x0 Address: 73, Value: 0x0 Address: 74, Value: 0x0 Address: 75, Value: 0x0 Address: 76, Value: 0x0 Address: 77, Value: 0x0 Address: 78, Value: 0x0 Address: 79, Value: 0x0 Address: 7a, Value: 0x0 Address: 7b, Value: 0x0 Address: 7c, Value: 0x0 Address: 7d, Value: 0x0 Address: 7e, Value: 0x0 Address: 7f, Value: 0x0 Address: 80, Value: 0x0 Address: 81, Value: 0x0 Address: 82, Value: 0x0 Address: 83, Value: 0x0 Address: 84, Value: 0x0 Address: 85, Value: 0x0 Address: 86, Value: 0x0 Address: 87, Value: 0x0 Address: 88, Value: 0x0 Address: 89, Value: 0x0 Address: 8a, Value: 0x0 Address: 8b, Value: 0x0 Address: 8c, Value: 0x0 Address: 8d, Value: 0x0 Address: 8e, Value: 0x0 Address: 8f, Value: 0x0 Address: 90, Value: 0x0 Address: 91, Value: 0x0 Address: 92, Value: 0x0 Address: 93, Value: 0x0 Address: 94, Value: 0x0 Address: 95, Value: 0x0 Address: 96, Value: 0x0 Address: 97, Value: 0x0 Address: 98, Value: 0x0 Address: 99, Value: 0x0 Address: 9a, Value: 0x0 Address: 9b, Value: 0x0 Address: 9c, Value: 0x0 Address: 9d, Value: 0x0 Address: 9e, Value: 0x0 Address: 9f, Value: 0x0 Address: a0, Value: 0x0 Address: a1, Value: 0x0 Address: a2, Value: 0x0 Address: a3, Value: 0x0 Address: a4, Value: 0x0 Address: a5, Value: 0x0 Address: a6, Value: 0x0 Address: a7, Value: 0x0 Address: a8, Value: 0x0 Address: a9, Value: 0x0 Address: aa, Value: 0x0 Address: ab, Value: 0x0 Address: ac, Value: 0x0 Address: ad, Value: 0x0 Address: ae, Value: 0x0 Address: af, Value: 0x0 Address: b0, Value: 0x0 Address: b1, Value: 0x0 Address: b2, Value: 0x0 Address: b3, Value: 0x0 Address: b4, Value: 0x0 Address: b5, Value: 0x0 Address: b6, Value: 0x0 Address: b7, Value: 0x0 Address: b8, Value: 0x0 Address: b9, Value: 0x0 Address: ba, Value: 0x0 Address: bb, Value: 0x0 Address: bc, Value: 0x0 Address: bd, Value: 0x0 Address: be, Value: 0x0 Address: bf, Value: 0x0 Address: c0, Value: 0x0 Address: c1, Value: 0x0 Address: c2, Value: 0x0 Address: c3, Value: 0x0 Address: c4, Value: 0x0 Address: c5, Value: 0x0 Address: c6, Value: 0x0 Address: c7, Value: 0x0 Address: c8, Value: 0x0 Address: c9, Value: 0x0 Address: ca, Value: 0x0 Address: cb, Value: 0x0 Address: cc, Value: 0x0 Address: cd, Value: 0x0 Address: ce, Value: 0x0 Address: cf, Value: 0x0 Address: d0, Value: 0x0 Address: d1, Value: 0x0 Address: d2, Value: 0x0 Address: d3, Value: 0x0 Address: d4, Value: 0x0 Address: d5, Value: 0x0 Address: d6, Value: 0x0 Address: d7, Value: 0x0 Address: d8, Value: 0x0 Address: d9, Value: 0x0 Address: da, Value: 0x0 Address: db, Value: 0x0 Address: dc, Value: 0x0 Address: dd, Value: 0x0 Address: de, Value: 0x0 Address: df, Value: 0x0 Address: e0, Value: 0x0 Address: e1, Value: 0x0 Address: e2, Value: 0x0 Address: e3, Value: 0x0 Address: e4, Value: 0x0 Address: e5, Value: 0x0 Address: e6, Value: 0x0 Address: e7, Value: 0x0 Address: e8, Value: 0x0 Address: e9, Value: 0x0 Address: ea, Value: 0x0 Address: eb, Value: 0x0 Address: ec, Value: 0x0 Address: ed, Value: 0x0 Address: ee, Value: 0x0 Address: ef, Value: 0x0 Address: f0, Value: 0x0 Address: f1, Value: 0x0 Address: f2, Value: 0x0 Address: f3, Value: 0x0 Address: f4, Value: 0x0 Address: f5, Value: 0x0 Address: f6, Value: 0x0 Address: f7, Value: 0x0 Address: f8, Value: 0x0 Address: f9, Value: 0x0 Address: fa, Value: 0x0 Address: fb, Value: 0x0 Address: fc, Value: 0x0 Address: fd, Value: 0x0 Address: fe, Value: 0x0 Address: ff, Value: 0x0
This test shows that the software approach can't read from the registers in the DM9000A chip. The simulation shows that these operations are within the timing constraints for the DM9000A chip regarding to the datasheet.
[edit] Status
Communication is not working reliable.
The hardware state machine version is able to read the default values of the registers but not reliable. It is also able to read what has been written to registers but this is even more unreliable.

