Difference between revisions of "CAEN V1495 IO"
Line 106: | Line 106: | ||
-> | -> | ||
+ | </pre> | ||
+ | ==v1495test11) function== | ||
+ | |||
+ | The v1495 library has the function below which when | ||
+ | <pre> | ||
+ | //v1495test() | ||
+ | int | ||
+ | v1495test(unsigned int baseaddr) | ||
+ | { | ||
+ | // the address location below starts at the USER FPGA access location which is | ||
+ | //0x8000 lower in memory than the dial switches for the module address location. | ||
+ | |||
+ | // if SW3=0 SW4=8 SW7=1 SW8=1 => 0x80118000 is the 32 bit address and 0x90118000 is the 24 bit adresss | ||
+ | |||
+ | // then try v1495test(0x80110000) | ||
+ | volatile V1495 *v1495 = (V1495 *) baseaddr; | ||
+ | unsigned short *data16 = (unsigned short *)&(v1495->control); | ||
+ | |||
+ | printf("Control [0x%08x] = 0x%04x\n",&(v1495->control),v1495->control); | ||
+ | printf("firmwareRev [0x%08x] = 0x%04x\n",&(v1495->firmwareRev),v1495->firmwareRev); | ||
+ | printf("selflashVME [0x%08x] = 0x%04x\n",&(v1495->selflashVME),v1495->selflashVME); | ||
+ | printf("flashVME [0x%08x] = 0x%04x\n",&(v1495->flashVME),v1495->flashVME); | ||
+ | printf("selflashUSER [0x%08x] = 0x%04x\n",&(v1495->selflashUSER),v1495->selflashUSER); | ||
+ | printf("flashUSER [0x%08x] = 0x%04x\n",&(v1495->flashUSER),v1495->flashUSER); | ||
+ | printf("configROM [0x%08x] = 0x%04x\n",&(v1495->configROM[0]),v1495->configROM[0]); | ||
+ | |||
+ | return(0); | ||
+ | } | ||
+ | |||
+ | <pre> | ||
+ | |||
+ | example | ||
+ | |||
+ | <pre> | ||
+ | -> v1495test(0x80110000); | ||
+ | Control [0x80118000] = 0x0000 | ||
+ | firmwareRev [0x8011800c] = 0x0003 | ||
+ | selflashVME [0x8011800e] = 0x0001 | ||
+ | flashVME [0x80118010] = 0x00ff | ||
+ | selflashUSER [0x80118012] = 0x0001 | ||
+ | flashUSER [0x80118014] = 0x00ff | ||
+ | configROM [0x80118100] = 0x0065 | ||
+ | value = 0 = 0x0 | ||
</pre> | </pre> | ||
Revision as of 22:01, 5 May 2009
Manual
Media:CAEN_V1495_Manual_Rev6.pdf
Readout code
V1
The ZIP file below contains the HDL source code to download into the V1495
http://www.physics.isu.edu/~tforest/DAQ/GEMReadout_V1495Source_Rev1_0.zip
The ZIP file below contains the ROC library
http://www.physics.isu.edu/~tforest/DAQ/GEMReadout_VxWorkxSource_11_26_2008.zip
ROC lib
compile library
To compile the ROC library I executed the following command within the subdirectory containing the v1495.c file
ccppc -fno-builtin -fno-for-scope -fstrength-reduce -mlongcall -mcpu=604 -DCPU=PPC604 -DVXWORKS -D_GNU_TOOL -DVXWORKSPPC -I/usr/local/coda/2.5/common/include/ -I../h -c -o v1495Lib.o -i v1495.c
load library onto the ROC
I then copies the library v1495Lib.o into my ROC library subdirectory which is where the ROC is pooing at boot up
/home/daq/CODA/ROClibs/libs
I loaded the library by hand by typing the following at the ROC console
-> ld < v1495Lib.o value = 268430512 = 0xfffecb0
Setting address
The address pins on this module are not labeled so I adopted the convention of numbering them from left to right as I look from the front pannel.
Address | |
Pin | Setting |
SW 3 | 3 |
SW 4 | 2 |
SW 7 | 1 |
SW 8 | 1 |
probing memory
I set the switches as follows
sw3 sw4 sw7 sw8 0 8 1 1 And the following is a printout of my board: (0x80118000 - A32 0x90118000 - A24) -> m 0x80118000 80118000: 0000- 80118002: 0000- 80118004: 0000- 80118006: 00dd- 80118008: 001f- 8011800a: ffff- 8011800c: 0002- 8011800e: 0001- 80118010: 00ff- 80118012: 0001- 80118014: 00ff- 80118016: 0001- 80118018: 0000- 8011801a: ffff-. value = 1 = 0x1 -> m 0x90118000 90118000: 0000- 90118002: 0000- 90118004: 0000- 90118006: 00dd- 90118008: 001f- 9011800a: ffff- 9011800c: 0002- 9011800e: 0001- 90118010: 00ff- 90118012: 0001- 90118014: 00ff- 90118016: 0001- 90118018: 0000- 9011801a: ffff-. value = 1 = 0x1 ->
v1495test11) function
The v1495 library has the function below which when
//v1495test() int v1495test(unsigned int baseaddr) { // the address location below starts at the USER FPGA access location which is //0x8000 lower in memory than the dial switches for the module address location. // if SW3=0 SW4=8 SW7=1 SW8=1 => 0x80118000 is the 32 bit address and 0x90118000 is the 24 bit adresss // then try v1495test(0x80110000) volatile V1495 *v1495 = (V1495 *) baseaddr; unsigned short *data16 = (unsigned short *)&(v1495->control); printf("Control [0x%08x] = 0x%04x\n",&(v1495->control),v1495->control); printf("firmwareRev [0x%08x] = 0x%04x\n",&(v1495->firmwareRev),v1495->firmwareRev); printf("selflashVME [0x%08x] = 0x%04x\n",&(v1495->selflashVME),v1495->selflashVME); printf("flashVME [0x%08x] = 0x%04x\n",&(v1495->flashVME),v1495->flashVME); printf("selflashUSER [0x%08x] = 0x%04x\n",&(v1495->selflashUSER),v1495->selflashUSER); printf("flashUSER [0x%08x] = 0x%04x\n",&(v1495->flashUSER),v1495->flashUSER); printf("configROM [0x%08x] = 0x%04x\n",&(v1495->configROM[0]),v1495->configROM[0]); return(0); } <pre> example <pre> -> v1495test(0x80110000); Control [0x80118000] = 0x0000 firmwareRev [0x8011800c] = 0x0003 selflashVME [0x8011800e] = 0x0001 flashVME [0x80118010] = 0x00ff selflashUSER [0x80118012] = 0x0001 flashUSER [0x80118014] = 0x00ff configROM [0x80118100] = 0x0065 value = 0 = 0x0
Download Firmware
v1495firmware(0x90118000,"GEMReadout.rbf",0,0)
Go back VME_modules Go back