Vivado 2019.1 Issues with using the Microblaze MCS IP module.

Thread Starter

dcbingaman

Joined Jun 30, 2021
605
I have the following project created for an Artix-7 FPGA target: xc7a35tcpg236-1

Very straight forward VHDL here is the top module. It instantiates a MMCM IP clock manager that takes the boards 12Mhz clock and converts it to 100Mhz.

The next VHDL module, just blinks an LED via a counter using the 100Mhz clock. This proves the clock module is working.

You will notice I instantiated a Xilinx Microblaze MCS processor in the top module and have one of the port outputs connected to a second LED.

I exported the design to the SDK along with the bit file and built an application project that is also attached. The application project is to blink the second LED.

The source code is just helloworld.c modified to blink the second LED.

The FPGA file builds fine and blinks the first LED on the board proving the 100Mhz clock is present.

I can build the Microblaze application fine as well but when I go to run it, I get the following error:

"
Error while launching program:
no targets found with "name =~ "microblaze*#0" && bscan=="USER2" && jtag_cable_name =~ "Digilent Cmod A7 - 35T 210328AD3CE8A"". available targets:
1* xc7a35t
no targets found with "name =~ "microblaze*#0" && bscan=="USER2" && jtag_cable_name =~ "Digilent Cmod A7 - 35T 210328AD3CE8A"". available targets:
1* xc7a35t
"

Anyone with experience doing this? What am I doing wrong and how to go about fixing it?

Thanks!
 

Attachments

Thread Starter

dcbingaman

Joined Jun 30, 2021
605
Resolved:
Started a new Vivado project. This time selected the board CMOD A7 instead of the FPGA itself. For whatever reason, that fixed the issue!

Another issue I ran across and resolved was the following line causing issues:
static volatile unsigned int* const pOutputRegister=0x80000010;
This should allow me to write to the digital output register as such:
*pOutputRegister=0xFACEACE0;

With other compilers this is not an issue but with the Vivado SDK C compiler this is wrong and needs specified as:
static volatile unsigned int* const pOutputRegister=0x80000010U;

Notice the U at the end of the literal. You have to specify the literal as an unsigned value, otherwise it is a signed value that is converted into an unsigned value of 0x0000_0010! Something to look out for if using the Vivado C compiler.
 

Thread Starter

dcbingaman

Joined Jun 30, 2021
605
Does anyone know the proper way to close a posting when it is resolved? This issue has been resolved but I am not sure how you actually close a posting?
 
Top