[quote author="Robert Dunn"]After doing some of those eeprom dumps and getting acked to death in the terminal window[/quote]Lol! I empathize - I know the feeling of being drowned in non-relevant data. Just a thought - while I do understand that the ability to use the BP in a terminal is very useful (since it is almost OS independent, and just about any VT100 terminal can be used) I also realize that the text for the menu options eats up a lot of memory. Removing text could possibly free up a lot of space for more features. For those users wanting to use only the GUI, would it be useful to include just the binary mode commands for all modes, maybe including the XSVF player (so one could drag and drop the file into the GUI to program a CPLD).
Let me be quite frank - I have not really studied the firmware code, so I don't know if this is even feasible. BUt I certainly would like to have a powerful GUI. If you work on multiple systems you could carry all firmware with you on a flash drive: the regular firmware, the extras firmware, the XSVF player firmware, and the new all-in-one-GUI-only firmware.
Sure. I tried to make a device which would execute some code on the rising edge of a button press, and some other code on the falling edge. There are some totally noob errors in the code below, and I felt quite stupid after realizing what they were:
This code could not be synthesized because of 1 error - "Multi-source in Unit <Ledon> on signal <led>; this signal is connected to multiple drivers.". I also got a warning - "Input <clk> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved."
An 'edge' is an (almost) instantaneous transition of voltage levels. So naturally, you cannot execute a piece of code 'during' an edge. The edge can only 'trigger' a particular functionality. The reason the error is thrown up is because once the negedge code is called it wants to 'always' make led=1, while the posedge wants to make led=0. Two obviously conflicting states cannot be allowed. The way to fix this error is to continue use the edge as a trigger but then test the state of the 'clk' using an 'if-then-else'.
Well, I've got to STOP thinking software and start thinking more hardware! Wrote some better code which works fine. I'm finding that the easiest way to write HDL code is to first draw out the hardware I want, apply edge/clock restrictions, and only then try to describe it in Verilog.
I'm a total noob with Verilog and CPLDs, so please bear with dumb questions :-P
I've bought the XC9572XL board, and have got simple stuff working - the code examples. Now I want to try out a flashing LED demo. Just to get a few things clear: I'll have to solder a crystal at the back, right? And then feed the clock signal into a counter. Keep testing the counter till it reaches the desired value, and then toggle the LED state.
So I was trying out some code, unrelated to the above issue:
. Why? I know this is not the best way to go about turning on and off an LED - my end goal is different (I basically want to perform a task on both clock edges) - I've stripped down my code to the bare essentials for easy readability.
I updated your url, and we'll run this on the blog next week.
Cool! Here's what the top of the board looks like:[attachment=0]Right angled pin headers on the left, an LP2950-3.3 regulator to power the BP, a PIC24, and a 10uF capacitor.
For quite a while I've been really interested in the Bus Pirate and its features. I recently bought an XC9572 CLPD board from Seeed and realized I'd need a JTAG programmer. The BP has got some great firmware that makes it into a JTAG programmer. And since I've bombed several times at the Free PCB giveaways I decided to build one myself.
My BP is decidedly ghetto - hand soldered on vero board, and a wild mix of through-hole and SMD components. (Sorry, I'm newly registered and can't post a link till I'm at least 1 post old - so blog link in the next post)
Here are a few photos from my blog:[attachment=2][attachment=1][attachment=0]