DM9000A

From JopWiki

Jump to: navigation, search

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

Image:DM9000A-Sim1_INDEX.png This image show that the processor transfers the index from PROC_DATA_OUT to the DM9000A chip though the Data bus.

[edit] Read

Image:DM9000A-Sim1_READ.png This image show that the databus is read at an appropiate place.

[edit] Write

Image:DM9000A-Sim1_WRITE.png 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

Image:DM9000A-sim_soft.png

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.

[edit] Links

DM9000A datasheet

Personal tools