Question

I am working on a project in VHDL that will be placed onto the spartan 6 fpga. The code is ready but I am not sure how to proceed with getting it onto the fpga.

I have access to another project and noticed that this project has a Microblaze processor (.xmp) file in it and a ucf file that defines all the "NET" interfaces.

Eventually I will be using the FPGA and add-on board connector to communicate with a piece of hardware but I need moving everything onto the FPGA.

Some resources and tutorials would be great, especailly how to get the microblaze processor into my project, that is if I even need it.

Thanks

Update: I started simulation of my project and have an error.

Line 214: statement is not synthesizable since it does not hold its value under NOT(clock-edge) condition

I get this in one of my project files in ana if statement that says

if rising_edge(clk) then
-- other if statements that assign output values
end if

I tried changing the code around but it no longer works if I do.

Not sure what the error means exactly.

Was it helpful?

Solution

The UCF file should contain both constraints to which pins that belong to each of your signals as well as any timing conditions. The "easiest" way is to read the guide for writing such files, or to use the built-in tool that helps you to get them right

Here is the Xilinx guide.

Thiis is one of the most important constraints:

TIMESPEC “TSidentifier”=PERIOD “TNM_reference” period {HIGH | LOW} [high_or_low_time ] INPUT_JITTER value; (cut from the above file)

OTHER TIPS

One of the best tutorials for new VHDL developers is the short tutorial "Intro to Spartan 3E FPGA and VHDL, by Mike Field. You can download the PDF and all the source code from his GitHub account, or browse the chapters for the book on his website.

You'll go from a simple Hello World equivalent in FPGA, to using DCMs and generating VGA signals, in a matter of hours.

Mike uses both Papilio One and Digilent Basys2 boards in the book, but you can easily adapt the examples to any board you're using. You just need to adjust the UCF file accordingly. The fact that he's using Spartan-3 and you're using Spartan-6 shouldn't make any difference.

The UCF, or User Constraints File, is the file that tells your FPGA its connections to the external world. The UCF is highly dependent on your particular hardware, as each board has a different set of pins. You're probably using a board provided by one of the popular manufacturers, so you just have to check the documentation for your particular hardware.

After finding the original UCF file for your particular board, it's recommended that you delete all lines that you're not using (meaning: all nodes that are not connected to anything within your vhdl code), otherwise the compiler will raise warnings or errors.

This should be enough to get you started.

ps: if you don't have any specific reason to use MicroBlaze, you can safely ignore it for now.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top