cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
whiteBeard1980
Visitor
Visitor
571 Views
Registered: ‎09-29-2020

Adding MicroBlaze to existing old RTL designs

Jump to solution

I'm a real newbie with FPGAs so please bear with me. I've been given an older working design written with Vivado 2017.2 in VHDL which requires adding a process to update to a multiboot flash memory. I've followed the advice on how to do this and understand the multiboot along with the fallback to a golden image nicely.

The next part is then how to get the new binary through the FPGA and into the flash memory which is where I need help:

My plan is to add a MicroBlaze processor into the design so that I can go back to my comfortable realm of writing it in C with the SDK but since the original design was not done using the IP Integrator I now feel lost of how to move forward. Some posts I've followed show how to create a module from the existing RTL but then I get errors complaining about internal signals "[Chipscope 16-213] The debug port 'dbg_hub/clk' has 1 unconnected channels". Here is the schematic view of the original design with the offending internal 'dbg_hub':

whiteBeard1980_0-1601384132805.png

I don't know if I'm heading down the wrong road from the start, can anyone advise me the simplest method?

My new Block Design diagram is basically just one module of the whole previous design but obviously without any access to the 'dbg_hub/clk' signal as follows:

whiteBeard1980_1-1601384281892.png

Thanks in advance

0 Kudos
1 Solution

Accepted Solutions
bhall0107
Adventurer
Adventurer
543 Views
Registered: ‎11-13-2018

Hi @whiteBeard1980,

If I understand correctly, your goal is to add a MicroBlaze to your design that can update the flash memory. It sounds like you want to do this separate from the existing logic in your design. Do you already have VHDL that accomplishes the flash configuration? If you don't, what I've done before is use a system similar to that described in XAPP1280 to create a block design (in IP integrator) that is separate from application specific logic (i.e. the module you posted, assuming it doesn't contain logic for the re-programming). 

So, your TOP VHDL file will have all of your application specific code and will also instantiate this block design with the MicroBlaze and other controllers for re-programming the flash.

Does that answer your question? Let me know if I can clarify anything. 

Good Luck,

Brad

View solution in original post

3 Replies
bhall0107
Adventurer
Adventurer
544 Views
Registered: ‎11-13-2018

Hi @whiteBeard1980,

If I understand correctly, your goal is to add a MicroBlaze to your design that can update the flash memory. It sounds like you want to do this separate from the existing logic in your design. Do you already have VHDL that accomplishes the flash configuration? If you don't, what I've done before is use a system similar to that described in XAPP1280 to create a block design (in IP integrator) that is separate from application specific logic (i.e. the module you posted, assuming it doesn't contain logic for the re-programming). 

So, your TOP VHDL file will have all of your application specific code and will also instantiate this block design with the MicroBlaze and other controllers for re-programming the flash.

Does that answer your question? Let me know if I can clarify anything. 

Good Luck,

Brad

View solution in original post

bhall0107
Adventurer
Adventurer
519 Views
Registered: ‎11-13-2018
Also just wanted to clarify:
I wouldn't suggest making a module in IP Integrator from your VHDL code. My suggestion is make a separate block design for your flash configuration stuff and just instantiate the block design in your top level VHDL file. Most beginner tutorials demonstrate how to make a block design and instantiate it using the instantiation template.
https://reference.digilentinc.com/vivado/getting-started-with-ipi/start
whiteBeard1980
Visitor
Visitor
472 Views
Registered: ‎09-29-2020

Hi Brad

Thanks very much for this, you understood perfectly with what I'm trying to do but there is a mountain of docs and info out there so finding what is useful and what is not is difficult when you don't know what you don't know!

These two references seem to be ideal for me to continue since I've hit a brick wall on making a module from the existing VHDL project code.

I might reply again if I have real troubles but otherwise thanks again...