04-07-2009 01:43 AM - edited 04-07-2009 01:43 AM
I've inserted JTAG chain to program the rom.
When I lunch hex2svfsetup, I choose Spartan 3 because non Spartan 3E fpga is on list. After I indicate 0,0 as number of devices before and after fpga.
Is it correct ?
The message on screen is that a 0,0 on Pico 2 is configured. But, it's Pico3. ?????? Why ????
I assume to load the code via usb cable ? Is it correct ?
Solved! Go to Solution.
04-07-2009 02:55 AM
IF you are using the Spartan-3E Starter Kit then there are 3 devices in the JTAG chain. Zero before the Spartan-3E and two after. You see this displayed in the iMPACT display as part of your ISE design flow.
The following reference design comes with a demonstration of JTAG_loader which you can use to confirm your own set up.
Pulse Width Modulation (PWM) Generation and Control with PicoBlaze Processor
The PicoBlaze processor generates 12 channels of PWM with a PRF of 1KHz and duty cycle resolution of 8-bits (256 steps). Simple commands entered via HyperTerminal (not included) allow the duty cycle for each channel to be set independently with 8 of the channels controlling the intensity of the 8 LEDs and the remaining 4 channels provided as direct outputs on the J4 connector. This design also facilitates rapid changes to the PicoBlaze processor program stored in Block Memory with a second program included for immediate download.
Principal Engineer, Xilinx UK
04-07-2009 06:09 AM - edited 04-07-2009 06:12 AM
I read the linked document.
But starting the configuration, I've this problem :
As you can se, device number 1 ( my fpga ) is seen as Pico2. Is it right ?
The second device is listed, but not the third, XC2C64A CoolRunner-II. What is the instruction leght of this device ?
No referement to this aspect in the documentation!
04-08-2009 03:22 AM
Yes, this is right but just a bit historical! PicoBlaze-II was the PicoBlaze for Virtex-II devices and these were the first FPGA's with a 1K x 18bit Block memory. This was the same BRAM that was used in Spartan-3 so JTAG_loader really did not need to be changed.
As to the instruction length of an XC2C64A then the answer is 8. In most cases you could probably just make a guess and it would work anyway especially for devices after the target device containing PicoBlaze.
The general answer to how to find out the instruction length is a little longer but I'll explain how for all readers that may be interested. Go to the Xilinx installation directory and under ISE you will find directories relating to each family of devices. Then in each of these is a sub-directory called ‘data’. For example /ISE/spartan2e/data. I have to say that the Coolrunner 2 director is a little less obvious being called /ISE/acr2/data.
Inside the data directory you will then see ‘bsd’ files for each device in the family. Find the device you are interested in and open that file in a text editor. Then look for a line that looks like this….
attribute INSTRUCTION_LENGTH of xa2c64a : entity is 8;
So now the instruction length for any device can be determined.
Principal Engineer, Xilinx UK
04-08-2009 06:37 AM - edited 04-08-2009 06:42 AM
I followed you!
Now on generating program file in ISE there is a warning not present before Jtag insertion :
WARNING:PhysDesignRules:1063 - Dangling pins on
configured to use an input parity pins. There is a dangling output parity
There is no impact on fpga functionality but, why there is this ?
Programming via JTAG, the cable seems not connected. I say "seems", because is the same cable for impact main program bitstream. So, It is connect.
How can I check the cable ? I don't know how to do.
04-09-2009 01:33 AM
What you are seeing is normal so carry on. I think now you have forgotton what you have read about using iMPACT with the Paltform USB Cable (also built in to the Starter Kits) and are proably still trying to use the 'playxsvf' utility that expects a parallel download cable. I wish you had tried the examples provided for the Starter Kit (i.e. the PWM reference design) to prove it all works first and then just modify from there rather than start from scratch.
Anyway.....How to update a PicoBlaze program (play an XSVF file) using iMPACT
Use the existing procedure to create the XSVF file for your board.
hex2svf %1.hex %1.svf
svf2xsvf -d -i %1.svf -o %1.xsvf
Note that 'hex2svfsetup' is only required the first time.
Open iMPACT in the normal way and select to configure using Boundary Scan mode.
Ideally, select the option 'Enter a Boundary-Scan Chain' which will then allow you to
see and select the 'xsvf' file which you have in your working directory. If you can do
this then jump over the next section between the **** lines.
If you already have the device chain for your board defined and shown as a graphic, you
first need to remove these devices. Simply LEFT click on each device symbol to highlight
it and then press the Delete key on your keyboard. Repeat this until the complete chain
is removed and the screen only has the message 'Right click to Add Device or Initialise
Then RIGHT click and select the option 'Add Xilinx Device...'
This will allow you to see and select the 'xsvf' file which you have in your working
The graphic should then show a simple TDI to TDO chain consisting of one 'unknown' device
of type XSVF.
Right click on the symbol to 'Execute XSVF/SVF' and the PicoBlaze program should be updated.
Hint - It is a good idea to save this as a project (File - Save Project As...) so that you can
avoid the set up each time.
Note that iMPACT dynamically reads the XSVF file each time the 'Execute XSVF/SVF' is performed.
Therefore it is useful to leave iMPACT open to allow more rapid iterations to be achieved.
Again, see the PWM reference design for a batch file version of the above.
Principal Engineer, Xilinx UK
09-03-2010 03:06 AM - edited 09-07-2010 12:45 AM
I work with the spartan 3A demo board .
I followed the steps and are able to "play" the xsfv file , with impac GUI or with the batch file similar to the one of the PWM project. But the software is not updated in the FPGA .
I uploaded the svf file.
Some more information:
- if I connect the jwrite ( so the "write" signal from the jtag block inside the memory module) to a LED it is blinking when I "play" the xsvf file ( from IMPACT GUI).
use pBlazeIDe and convert the MEM file to a HEX file and follow then the steps.
As memory template I use what is provided by mediatronix
Has someone a clue why it doesn't work?