Update: Spartan-6 LX9 Microboard


I’ve gotten this development board in, and it is amazing! Haven’t had time to do much but plug it in and watch the example design blink away at me, but impressive knowing instead of a microprocessor controlling the pattern, it’s an actual (mostly) physical multivibrator circuit (I’m assuming, or a binary counter (i think in this case that’d still apply (woo nested parenthesis (it’s late, forgive me.))))

Where-was-I-going-with-this that’s right.

Xilinx/Avnet support for this product is abysmal to the point of embarrassment. That’s a bit harsh. I believe they’ve simply let their respective websites become spaghetti coded to shit, making the documentation, drivers, and reference designs become deadlocked behind levels and levels of infinite loops of server redirects. I’ve contacted them, but in the mean time, I’ve found an excellent listing of tutorials (for both this product, and FPGAs in general) that I will me manually sorting and posting, tomorrow evening, round this time.

Stay posted, let me know what your thinking down below.

I’m out.

A better, faster, stronger DAC: An R-2R Ladder!

This is amazing. In this video, he simultaneously explains the concept of making Thevenin equivalent circuits (handy!) and shows the (actually pretty simple) mathematics behind this circuit. This method basically allows you to trade many digital pins and many resistors for a single, excellent analog out. B-E-A-utiful.

Planning on using this on an FPGA for an absolutely stupid-ridiculous resolution analog stream. Why not? I’ve got 36 conductor ribbon cable and 108 matched resistors that would be better served as a 36-bit analog out.

That actually might bring me closer to implementing HDMI…naaahh.

nRF24L01+ Module Documentation



Arduino Library Download
Copy to ‘Libraries’ folder within your main Arduino folder.


MISO -> 12
MOSI -> 11
SCK -> 13


CE -> 8
CSN -> 7


byte cePin
CE Pin controls RX / TX, default 8.

byte csnPin
CSN Pin (Chip select not), default 7.

byte channel
RF Channel 0 – 127 or 0 – 84 in the US, default 0.

byte payload
Size in bytes, default 16, max 32.
Note: channel and payload must be the same for all nodes.


void init(void)
Initialize the module, set the pin modes for the configurable pins and initialize the SPI module.
Mirf.csnPin = 9;
Mirf.cePin = 7;
void setRADDR(byte *addr)
Set the receiving address. Addresses are 5 bytes long.
Mirf.setRADDR((byte *)"addr1");
void setTADDR(byte *addr)
Set the sending address.
Mirf.setTADDR((byte *)"addr1");
void config(void)
Set channel and payload width. Power up in RX mode and flush RX fifo.
Mirf.payload = 32;
Mirf.channel = 2;
bool dataReady(void)
Is there data ready to be received?.
//Get the data to play with.
void getData(byte *data)
Get the received data. 'data' should be an array of bytes Mirf.payload long.
byte data[Mirf.payload]
void send(byte *data)
Send data. 'data' should be Mirf.payload bytes long.
bool isSending(void)
Return true if still trying to send. If the chip is still in transmit mode then this method will return the chip to receive mode.
//Chip is now in receive mode.
NB: Lots more information is available from the status registers regarding acknowledgement or failure status. See Mirf.cpp:218.
bool rxFifoEmpty(void)
Is the RX Fifo Empty.
bool txFifoEmpty(void)
Is the TX Fifo Empty.
byte getStatus(void)
Return the status register.
void powerUpRx(void)
Power up chip and set to receive mode. Also clear sending interrupts.
void powerUpTx(void)
Power up tx mode.


See examples folder in zip file.
Arduino Library Download

Create a free website or blog at WordPress.com.

%d bloggers like this: