Slicekit Hardware Manual

Technical discussions related to any XMOS development kit or reference design. Eg XK-1A, sliceKIT, etc.
jarnot
Member++
Posts: 26
Joined: Thu Apr 15, 2010 4:52 pm
Contact:

Slicekit Hardware Manual

Post by jarnot »

A colleague of mine just built a custom board to plug into the TRIANGLE slot of a Slicekit. The one bit ports he selected (P1A0 and P1D0) did not function as expected, and the schematic shows that these ports are connected to the output of a multiplexer (U6). It looks like the STAR slot has a similar trap. I recommend updating the tables in the Hardware Manual to point out which pins are not freely available to the user.


User avatar
TSC
Experienced Member
Posts: 111
Joined: Sun Mar 06, 2011 11:39 pm

Post by TSC »

I think the XS1-L16 boot section in the SliceKit Hardware Manual makes it reasonably clear that some pins are multiplexed between SPI flash and triangle/star slots.

By the way, including module_slicekit_support in the project will automatically set those multiplexed pins for use with the triangle and star slots.
jarnot
Member++
Posts: 26
Joined: Thu Apr 15, 2010 4:52 pm
Contact:

Post by jarnot »

Thanks for the correct and informative reply. This is what happens when I do not read every page carefully. I still think it would be nice to flag the afflicted pins in the tables with a note to read the XS1-L16 boot section. It looks like you have given me a simple solution to my colleague's problem.
User avatar
TSC
Experienced Member
Posts: 111
Joined: Sun Mar 06, 2011 11:39 pm

Post by TSC »

I'm glad I could help.
I still think it would be nice to flag the afflicted pins in the tables with a note to read the XS1-L16 boot section.
I agree. It would make designing Slice boards much less hazardous, especially in situations where the design uses the SPI flash after booting.
jarnot
Member++
Posts: 26
Joined: Thu Apr 15, 2010 4:52 pm
Contact:

Post by jarnot »

TSC,

I have followed your advice, but the A and D ports are still being held down by the outputs of the MUX chip. This is the active content of my Makefile:

TARGET = XK-SK-L2
USED_MODULES = module_slicekit_support
XCC_FLAGS_Debug = -g -O0 -Wcodes -Xmapper -Wcodes
XCC_FLAGS_Release = -g -O3 -Wcodes -Xmapper -Wcodes
VERBOSE = 0
XMOS_MAKE_PATH ?= ../..
ifneq ($(wildcard $(XMOS_MAKE_PATH)/xcommon/module_xcommon/build/Makefile.common),)
include $(XMOS_MAKE_PATH)/xcommon/module_xcommon/build/Makefile.common
else
include ../module_xcommon/build/Makefile.common
endif

I have attached all of the (simple) code. When I run xmake I see:

Creating dependencies for toggle_ports.xc
Creating dependencies for main.xc
Using modules: module_slicekit_support
Compiling main.xc
Compiling toggle_ports.xc
Creating app_Brian_Gordon.xe
Build Complete
Done

Any idea what I might be missing?

Regards,

Robert Jarnot
Attachments
slicekit_conf.h
(32 Bytes) Downloaded 325 times
slicekit_conf.h
(32 Bytes) Downloaded 325 times
toggle_ports.xc
(346 Bytes) Downloaded 334 times
toggle_ports.xc
(346 Bytes) Downloaded 334 times
main.xc
(823 Bytes) Downloaded 294 times
main.xc
(823 Bytes) Downloaded 294 times
User avatar
TSC
Experienced Member
Posts: 111
Joined: Sun Mar 06, 2011 11:39 pm

Post by TSC »

From module_slicekit_support:
If this module is used when the application target is not SLICEKIT-L2 or SLICEKIT-L16 then this module will do nothing.
So in your makefile, change

Code: Select all

TARGET = XK-SK-L2
to

Code: Select all

TARGET = SLICEKIT-L16
jarnot
Member++
Posts: 26
Joined: Thu Apr 15, 2010 4:52 pm
Contact:

Post by jarnot »

Oops. That was a silly error. I have changed the Makefile and recompiled the project, but the A and D ports are still being held down by the MUX chip. I get the same result when using SLICEKIT-L2 as the target. The Makefile is now:

Code: Select all

TARGET = SLICEKIT-L2
APP_NAME = app_Brian_Gordon
USED_MODULES = module_slicekit_support
XCC_FLAGS_Debug = -g -O0 -Wcodes -Xmapper -Wcodes
XCC_FLAGS_Release = -g -O3 -Wcodes -Xmapper -Wcodes
VERBOSE = 0
and I have tried TARGET = SLICEKIT-L16 too, with the same results.
User avatar
TSC
Experienced Member
Posts: 111
Joined: Sun Mar 06, 2011 11:39 pm

Post by TSC »

Hmm, I thought that would have done the trick.

Try calling the below function before any other code. It should do what module_slicekit_support is supposed to do.

Code: Select all

on tile[0]: out port p8d = XS1_PORT_8D; //Port controlling mux for SPI vs IO for X0D0 (P1A0), X0D1 (P1B0), X0D10 (P1C0), X0D11 (P1D0)

/*
 * Switches muxed one-bit ports on tile 0 from SPI flash to connectors for general use.
 * Ports controlled: X0D0 (P1A0) , X0D1 (P1B0), X0D10 (P1C0) ,X0D11 (P1D0)
 */
void enableMuxedPorts(){
	p8d <: 0b10000000; //Send one to DFF.
	sync(p8d);
	p8d <: 0b11000000;  //Latch one into DFF to disable SPI flash and enable ports.
	sync(p8d);
}
User avatar
Folknology
XCore Legend
Posts: 1274
Joined: Thu Dec 10, 2009 10:20 pm
Contact:

Post by Folknology »

There was an Advisory with the first version of the SliceKit, not sure if it is relevant in this case but worth checking.

regards
Al
jarnot
Member++
Posts: 26
Joined: Thu Apr 15, 2010 4:52 pm
Contact:

Post by jarnot »

Folknology, thanks for the link, but the advisory was not for this particular issue. I looked at the schematics, and it seems that U6 has OE_N hardwired low. This means that X0D0_EXT and X0D11_EXT can be used as outputs if pin 1 of U6 (S) is held low. I do not see how either of these pins can be used as inputs from the TRIANGLE slot. This does not explain why the advice given earlier in this thread does not enable me to use X0D0_EXT and X0D11_EXT as outputs however. I still am of the opinion that the board documentation is not completely correct. I would like to thank everyone who has posted to this thread.
Post Reply