Sorry, you need to enable JavaScript to visit this website.

Zedboard - Create a PlanAhead Project with Embedded Processor

EDIT:  Git repo of this project can be found here: https://github.com/zynqgeek/zed_helloworld - enjoy!

To take advantage of any aspect of Zynq's configurable FPGA fabric we are going to need to learn how to use PlanAhead, and specifically how to create a new PlanAhead project with an embedded processor within it.

Giving credit where credit is due.  I used the document in this example project from zedboard.org as my reference when doing this post:

http://zedboard.org/node/95 - Thanks to the author!

First, make sure you have the tools downloaded and licensed.  You can read a how-to post here.

The first we are going to launch is PlanAhead.  Go ahead and open up PlanAhead from the state menu.  Note: I am using version 14.2 of the tools.

Note:  If you are not on a x64 based machine, you should not be using the x64 version of the tools.  Launch the PlanAhead(32-bit) version.

Once PlanAhead starts we want to click "Create New Project".

A wizard will pop up with some information.  Click Next to get to the screen where you will name your project and decide where it will live.

You need to remember two rules about naming projects, and placing them on your computer:

  • Directory length can not exceed 255 characters 
  • No spaces are allowed in directory or file names

Don't break those two rules, and you can put your files anywhere you want :D.

On the next screen we are presented with various different types of projects.  In this case we are going to be writing picking a RTL project.  More on what all these mean in a future blog post :D

On the next three screens we have the ability to add source files, existing IP (intellectual property blocks), and/or constraint files we may have.  We have no need to do any of these things so just keep clicking next until you get to the Part Selection page.  On the left side you will see two selectable options "Parts" and "Boards".

Now, Avnet hasn't released their board definition files for the Xilinx tools yet.  They will include them in future releases of the tools though, don't worry.  Today, though, we need to kind of hack something together using the Xilinx ZC702 board as our base configuration which we will then change.  Not too bad, I promise.

Click "Boards" on the left hand side.

Change the three pull down options to these:

Family: Zynq-7000
Package: CLG484
Speed grade: -1

In the list at the bottom of the window you will see the "Zynq-7 ZC702 Evaluation Board" as an option.  Select it and hit Next.

Note: when this changes, I will stop back here and update the blog.

On the last page there is a brief summary of what you have selected throughout the wizard.  Review it and click Finish.

PlanAhead will take a moment to create your project, and then display the default view.  It should look something like this:

Now that we have PlanAhead launched and our project created, we will need to add our embedded processor to the design.

In the Sources Window Pane find the "Design Sources" folder and right mouse click on it.  In that menu select "Add Sources ...".

A window with several options on it will pop up.  One of the options in the list is "Add or Create Embedded Sources".  This option will allow us to add the ARM subsystem to our design.  Select this option and click next.
A window with two buttons below a listview will show up.  The two buttons are "Add Sub-Design ..." and "Create Sub-Design".  Since we do not have one created yet, we will click "Create Sub-Design".  A small window will pop up asking what you would like to call your sub-system.  I called mine "proc_module".
That's it.  Click Finish.  A progress bar window will pop up and inform you that it is creating the Xilinx Platform Studio (XPS) project for your new sub system.  XPS will then be launched (if you don't think it got launched, check your task bar - it might have launched in the background).
XPS will ask you this question:
We want to use as many Wizards as possible for our first few designs until we become comfortable with the Xilinx tools, so click Yes.
A window will come up that is the beginning of the wizard.  There is an option for an AXI based design or PLB.  You will notice that the PLB option is grayed out.  This is because the ARM sub system within Zynq uses the AXI standard to talk to it's peripherals, not the rather antiquated PLB standard.  Select AXI (not that you have a choice) and click Next.
At the time of this post being written, Avnet's Zedboard isn't yet an option within the Board Selection portion of the wizard.  What is available is the Xilinx ZC702 board.  What we are going to do is pick this board, and then import the specific configuration for the Zedboard after the wizard is complete.  Select the ZC702 board from the list, and click Next.
The next screen is where we will select what internal and external peripherals we want to use within our design.
In this particulare case, we are going to just go with the defaults and move past this.  This is mostly because these are the available peripherals for the ZC702 board, not the Zedboard.  Click Finish.
The wizard will turn away on the configuration you have given it, and after a minute will return back to the XPS GUI, where the System Assembly View will be visable.
Ok, since we targeted the ZC702 board and not the Zedboard, we need to import the correct peripheral configuration file.  This file can be downloaded here:

http://zedboard.com/misc/files/zedboard_RevC_v1.xml

EDIT: An update has been posted to the Board Definition File.
http://zedboard.org/sites/default/files/documentations/zedboard_RevC_v2.xml

EDIT: bad link - updated.  Thanks Jan for pointing it out!
http://zedboard.org/sites/default/files/documentations/zedboard_RevC_v2_XML.zip

I have placed this file in the root directory of my project (same place as system.xmp).  This file is an XML file (go ahead and open it up and take a look if you would like) which contains all of the information needed to configure the ARM sub-system of the Zynq device.  Specificly in our case we will only have certain peripherals pulled out to the outside world, so we need to tell the device this.

Once you have downloaded the Board Definition File and saved it to your project directory, find the "Import" icon above the System Assembly View PS view.

A screen will pop up that is important to take a second to talk about.  Once Xilinx start distributing the Board Support files with their software tools this window will have the Zedboard as a selectable item in the list of available boards (actually the process to get to this point will be completely different, but for now we will do it this way).  Since we aren't there yet, we need to click the + sign on this window and browse to our .xml file.

Once you have your file selected in the second window you can click OK.  A message box will ask if you are sure you want to continue, if you are hit Yes.

EDK will load up the new configuration and after a few seconds it will show the updated System Assembly View.  This configuration will set all of the various registers that are associated with the various parts of the ARM sub system, including peripherals with shared IO pins.

Note: I am going to a full blog post on what this view means.  I have not yet, so poke around a bit and see what some of the different settings are.


Ok, take a deep breath.  There is a lot going on here, and once you go though it a few times and start exploring what everything means you will feel better.  Let's move on and get a simple Hello World example running.
First, let's make sure we've done everything correctly up to this point.  We can do this by running a Design Rule Check.  This will run a series of scripts that will tell us if we have any errors with our configuration.  You can get to the DRC by going to Project -> Design Rule Check within XPS.
If there are no errors, then you've got it right up to this point, congratz!  We can close XPS, we have done everything we need to here.  Once XPS is closed, PlanAhead should be available to use again.

Now let me take a moment to let you all know that in the world of FPGA's there is a lot of Religion ... a LOT.  There are "A" users, and "X" users (I'll let you figure that out on your own ..), and there are Verilog users and VHDL users.  I happen to be an X and VHDL user - you know, because I only use the best ;D.
I will be continuing my example using VHDL.  If you choose to use Verilog go for it, you might be on your own with a few things though (But I am sure you will be able to get it!).  As for you "A" users out there ... keep using your soft cores and co-processors, we'll be over here at the bleeding edge :).
Note: To switch to/from Verilog or VHDL, click the "Project Settings" button under the "Project Manager" tree item on the left side of your screen (within the Flow Navigator).  From the window that opens up you can hoose Verilog or VHDL from the Target Language combo box.
Once you are done picking your preferred language you can right mouse click on your .xmp file.  Mine was called proc_module.xmp.  Select "Create Top HDL".
This will create a Human Readable file that is in VHDL that is the instantiation of the processor system.  PlanAhead is creating this wrapper to instantiate the .xmp file that describes our processor system.
This file is really nice once you get into larger projects that might require you to add additional logic between your top level instantiation and your processor system.  For now we will leave it unmodified.
Well, that's ... we have our base system with just the processor sub system instantiated (that is that nothing from the Programmable Logic (PL) portion of the Zynq device is being used by custom code.  Next, we need to create a bit file that will be used to program our Zed board.
On the left side in the Flow Navigator view click the "Generate Bitstream" option under Program and Debug.  This is going to take a few minutes to run, as it is doing a lot of things.  You may get a window that pops up that displays some warnings about unused pads.  Click OK to close that window.
Once this is complete a small little window will pop up that asks what you would like to view now that the bit file is created.  I like looking at the reports, but you can pick anything you would like.  We are not quite ready to program our board, so don't load iMPACT quite yet.
Now that we have our full hardware system described, we can write some code for it!  woohoo!
Go to File -> Export -> Export Hardware for SDK ... to launch the Xilinx Software Development Kit (SDK).
A little window will come up with some options.  Make sure you click all three check boxes to Include the bitstream, export the hardware, and launch SDK.  Click OK to launch SDK to start writing some code.
It will take a bit to export everything, but eventually SDK opens.
To continue getting the code written for the this project go here.
You have created a PlanAhead project with an embedded ARM processor in it! That's so awesome!

Comments

i am for the first time here. I found this board and I in finding It truly helpful & it helped me out a lot. I hope to present something back and help others such as you helped me. day camp in Houston

Much obliged to you for such an elegantly composed article. It's brimming with astute data and diverting depictions. Your perspective is the best among numerous. como fazer tiaras da moda

Much obliged for a superb offer. Your article has demonstrated your diligent work and experience you must this field. Splendid .i cherish it perusing. Question

This is an awesome article a debt of gratitude is in order for sharing this instructive data. I will visit your website routinely for some most recent post. I will visit your website frequently for Some most recent post. voyance-retour-amour

You completed a few fine points there. I did a search on the subject and found nearly all persons will go along with with your blog. seo los angeles

Respecting the time and exertion you put into your online journal and point by point data you offer!.. theuniversitypapers

I am exceptionally upbeat to find your post as it will get to be on top in my gathering of most loved online journals to visit. Destination wedding planner USA

Somebody Sometimes with visits your web journal consistently and prescribed it I would say to peruse also. The method for composing is phenomenal furthermore the substance is first rate. A debt of gratitude is in order for that understanding you give the perusers! FS19 mods

Thanks for the blog post buddy! Keep them coming... best online dispensary bc

Really great post. I just unearthed your online journal and needed to say that I have truly delighted in perusing your blog entries. Any way I'll be subscribing to your food and I trust you post again soon. Huge a debt of gratitude is in order for the valuable information. farming simulator 2019 mods

In the event that more individuals that compose articles truly fretted about composing awesome substance like you, more perusers would be occupied with their compositions. Much thanks to you for thinking about your substance. http://marcobqerc.blogolize.com/Nya-steg-f-r-steg-Karta-F-r-billiga-f-lgar-17745928

I have perused your site it is exceptionally useful for me. I need to express profound gratitude to you. I have bookmark your site for future redesigns. womens dresses

Your online journal gave us important data to work with. Each and every tips of your post are wonderful. You rock for sharing. Continue blogging.. neck traction

On the off chance that you set out to make me think today; mission fulfilled! I truly like you're composing style and how you express your thoughts. Much obliged to you. pest control san antonio

Thanks for taking the time to discuss this, I feel strongly that love and read more on this topic. If possible, such as gain knowledge, would you mind updating your blog with additional information? It is very useful for me. 먹튀

I haven't any word to welcome this post.....Really i am inspired from this post....the individual who make this post it was an awesome human..thanks for imparted this to us. porntubejoy

I just couldn't leave your site before letting you know that I really appreciated the top quality information you present to your guests? Will be back again as often as possible to determine the status of new posts. cheap sport socks

IntimacyKit.org: Online shopping, classifieds & auctions for electronics, fashion apparel, jobs, cars, real estate, buy and sell, services, dating & adult classifieds ... intimacy kit

This is my first time i visit here. I discovered such a large number of fascinating stuff in your online journal particularly its dialog. From the huge amounts of remarks on your articles, I figure I am by all account not the only one having all the satisfaction here! keep doing awesome construction company los angeles

More often than not I don't make remarks on sites, yet I'd like to say this article truly constrained me to do as such. Truly pleasant post! Queens New York Bankruptcy lawyers

A debt of gratitude is in order for setting aside an ideal opportunity to talk about this, I feel emphatically about it and adoration adapting more on this point. In the event that conceivable, as you pick up skill, would you psyche upgrading your online journal with more data? It is greatly useful for me. ISO 9001 Service Provider

Extraordinary overview, I'm certain you're getting an awesome reaction. furnace heat pump York

I can't read articles online all the time, yet I'm happy I did today. This is exceptionally elegantly composed and your focuses are very much communicated. Kindly, never quit composing. Synthetic Grass Austin

Your work is great and I value you and bouncing for some more enlightening posts. Much obliged to you for sharing extraordinary data to us. new relic

I am glad to discover this post Very valuable for me, as it contains parcel of data. I Always like to peruse The Quality and happy I discovered this thing in you post. Much appreciated Lifestyle

exceptionally intriguing continue posting. ass licking

Awesome occupation for distributed such a gainful site. Your web log isn't just valuable yet it is also truly innovative as well. There have a tendency to be very few individuals who can absolutely compose not all that basic posts that creatively. Proceed with the decent written work game publishing

This was a truly extraordinary challenge and ideally I can go to the following one. It was alot of fun and I truly had a ball.. security cameras

Thankyou for this wondrous post, I am happy I watched this site on yippee. Cheapest Samsung Note 9 tempered glass

I am very happy to discover your post as it will become on top in my collection of favorite blogs to visit. hook and loop

Much appreciated such a great amount for sharing this amazing information! I am anticipating see more postsby you! digital forensics corporation

Much obliged to you for some other enlightening site. The spot else might just I understand that sort of data written in such a flawless strategy? I have an endeavor that I am essentially now running on, and I've been at the look out for such information. letou

I have read your article, it is very informative and helpful for me.I admire the valuable information you offer in your articles. Thanks for posting it.. bola online

I've been surfing online over three hours today, yet I never discovered any intriguing article like yours. It's really sufficiently worth for me. As I would like to think, if all website admins and bloggers made great substance as you did, the web will be significantly more helpful than any other time in recent memory. ganhar seguidores instagram

Youtupedia is a place full of free articles for your blog or website, and info to find places to get beautiful pictures on the web!  free articles

I wish more writers of this kind of substance would take the time you did to explore and compose so well. I am extremely inspired with your vision and knowledge. Kansas City web design companies

This is a truly good site post. Not too many people would actually, the way you just did. I am really impressed that there is so much information about this subject that have been uncovered and you’ve done your best, with so much class. If wanted to know more about green smoke reviews, than by all means come in and check our stuff. tor2web

I'm happy I discovered this site, I couldn't discover any learning on this matter earlier to.Also work a website and in the event that you are ever keen on doing some guest composing for me if conceivable don't hesitate to tell me, im dependably search for individuals to look at my site. sigaretta elettronica

This is a great post. I like this topic.This site has lots of advantage.I found many interesting things from this site. It helps me in many ways.Thanks for posting this again. vape

You make so many great points here that I read your article a couple of times. Your views are in accordance with my own for the most part. This is great content for your readers. good dentist in nyc

The information you have posted is very useful. The sites you have referred was good. Thanks for sharing.. O Level Geography Gce Guide

I am certainly making the most of your site. You unquestionably have some extraordinary knowledge and incredible stories. https://bit.ly/2HhGv0u

Wonderful blog! I found it while surfing around on Yahoo News. Do you have any suggestions on how to get listed in Yahoo News? I’ve been trying for a while but I never seem to get there! Appreciate it. whatsapp status in hindi

You have made an awesome showing on this article. It's exceptionally lucid and exceedingly astute. You have even figured out how to make it reasonable and simple to peruse. You have some genuine written work ability. Much thanks to you.  dentist in liberty

For ubuntu user, this was my solution to fix this problem i posted:
cd /usr/bin
sudo ln -s make gmake

I get the following errors after "generate bitstream" and it gives out the message saying "Implementation failed". Tried this numerous times.
[Constraints 18-5] Cannot loc instance 'processing_system7_0_PS_PORB_IBUF' at site B5, Site location is not valid ["/home/ashish/project_3/project_3.srcs/sources_1/edk/module_1/implementation/module_1_processing_system7_0_wrapper.ncf":158]
[Constraints 18-5] Cannot loc instance 'processing_system7_0_PS_SRSTB_IBUF' at site C9, Site location is not valid ["/home/ashish/project_3/project_3.srcs/sources_1/edk/module_1/implementation/module_1_processing_system7_0_wrapper.ncf":159]
[Constraints 18-5] Cannot loc instance 'processing_system7_0_PS_CLK_IBUF' at site F7, Site location is not valid ["/home/ashish/project_3/project_3.srcs/sources_1/edk/module_1/implementation/module_1_processing_system7_0_wrapper.ncf":160]

I have the same critical errors. Have anyone a solution for this problem?

Constraints 18-5] Cannot loc instance 'processing_system7_0_PS_PORB_IBUF' at site B5, Site location is not valid ["/home/ashish/project_3/project_3.srcs/sources_1/edk/module_1/implementation/module_1_processing_system7_0_wrapper.ncf":158] .....

I can see that you are an expert at your field! I am launching a website soon, and your information will be very useful for me.. wishing you all the success in your business. https://www.diskusjon.no/index.php?showuser=482091

Amazing article. Extremely intriguing to peruse. I truly love to peruse such a decent article. Much obliged! continue shaking. Manhattan home design review

Pages