element14 Community
element14 Community
    Register Log In
  • Site
  • Search
  • Log In Register
  • About Us
  • Community Hub
    Community Hub
    • What's New on element14
    • Feedback and Support
    • Benefits of Membership
    • Personal Blogs
    • Members Area
    • Achievement Levels
  • Learn
    Learn
    • Ask an Expert
    • eBooks
    • element14 presents
    • Learning Center
    • Tech Spotlight
    • STEM Academy
    • Webinars, Training and Events
    • Learning Groups
  • Technologies
    Technologies
    • 3D Printing
    • FPGA
    • Industrial Automation
    • Internet of Things
    • Power & Energy
    • Sensors
    • Technology Groups
  • Challenges & Projects
    Challenges & Projects
    • Design Challenges
    • element14 presents Projects
    • Project14
    • Arduino Projects
    • Raspberry Pi Projects
    • Project Groups
  • Products
    Products
    • Arduino
    • Avnet Boards Community
    • Dev Tools
    • Manufacturers
    • Multicomp Pro
    • Product Groups
    • Raspberry Pi
    • RoadTests & Reviews
  • Store
    Store
    • Visit Your Store
    • Choose another store...
      • Europe
      •  Austria (German)
      •  Belgium (Dutch, French)
      •  Bulgaria (Bulgarian)
      •  Czech Republic (Czech)
      •  Denmark (Danish)
      •  Estonia (Estonian)
      •  Finland (Finnish)
      •  France (French)
      •  Germany (German)
      •  Hungary (Hungarian)
      •  Ireland
      •  Israel
      •  Italy (Italian)
      •  Latvia (Latvian)
      •  
      •  Lithuania (Lithuanian)
      •  Netherlands (Dutch)
      •  Norway (Norwegian)
      •  Poland (Polish)
      •  Portugal (Portuguese)
      •  Romania (Romanian)
      •  Russia (Russian)
      •  Slovakia (Slovak)
      •  Slovenia (Slovenian)
      •  Spain (Spanish)
      •  Sweden (Swedish)
      •  Switzerland(German, French)
      •  Turkey (Turkish)
      •  United Kingdom
      • Asia Pacific
      •  Australia
      •  China
      •  Hong Kong
      •  India
      •  Korea (Korean)
      •  Malaysia
      •  New Zealand
      •  Philippines
      •  Singapore
      •  Taiwan
      •  Thailand (Thai)
      • Americas
      •  Brazil (Portuguese)
      •  Canada
      •  Mexico (Spanish)
      •  United States
      Can't find the country/region you're looking for? Visit our export site or find a local distributor.
  • Translate
  • Profile
  • Settings
Path to Programmable
  • Challenges & Projects
  • Design Challenges
  • Path to Programmable
  • More
  • Cancel
Path to Programmable
Blog Week 4: Done!! Lab 7
  • Blog
  • Forum
  • Documents
  • Polls
  • Files
  • Events
  • Mentions
  • Sub-Groups
  • Tags
  • More
  • Cancel
  • New
  • Share
  • More
  • Cancel
Group Actions
  • Group RSS
  • More
  • Cancel
Engagement
  • Author Author: snidhi
  • Date Created: 20 Nov 2018 3:55 PM Date Created
  • Views 741 views
  • Likes 5 likes
  • Comments 2 comments
  • zynq
  • fpga
  • path_to_programmable
  • minized
Related
Recommended

Week 4: Done!! Lab 7

snidhi
snidhi
20 Nov 2018

All my previous blogs can be read in detail here Path to Programmable

 

This lab was very special and interesting. It involved creating a custom ip block (partly in VHDL and partly in GUI) and adding it to the existing previous vivado design with the BRAM memory. In this lab we actually did some VHDL programming. In this lab one can see that the ip creation in VHDL itself is quite some work and understanding of the input; output signals in the ip block is necessary.

 

  • Lab 7 Overview and Objectives
  • Creating a new IP in Vivado
  • Customize the IP and add it to Vivado
  • Compilation and the looking into the Schematic
  • Exp 4: Add IP to Project
  • Conclusion

Lab 7 Overview and Objectives

 

Xilinx IP catalog can be used to connect many of the common interfaces to the design. This lab provides step-by-step instruction on how to create custom IP, add it to the IP catalog, and then connect it into the design.

 

When you have completed Lab 7, you will know how to do the following:

  1. Create a new IP project
  2. Customize the IP
  3. Add it to the Vivado IP Catalog
  4. Add this custom IP to your project
  5. Add an interrupt to the Zynq PS and connect to the custom IP
  6. Test the custom IP with a custom software application

 

Creating a new IP in Vivado

 

Custom IPs are user written hardware. It can be in VHDL or Verilog. These ips can be created separately and re-used in the projects as needed. Such as there can be some standard communication ips which should be customized for a project. This idea is time saving as it reduces redundancy in copying pasting the VHDL code again and again. Also the development of ips cores can be independent to a particular project.

 

In this project we created a PWM with Interrupt option ip called PWM_w_Int.This peripheral is simple and does not require much bandwidth, thus an AXI-Lite interface is acceptable. This will also be a slave device with the PS as the Master.

 

image

How the custom ip is linked to the main project

 

image

Setting up the custom ip block in vivado

 

image

The ip is added to the IP catalog here and can be searched in the window.

 

Customize the IP and add it to Vivado

 

After creating the ip core it can be packaged in the flow navigator and the compatibility of the ip can be set to multiple fpgas such as zynq and artix. And also the life cycle of the ip can be chosen as to be in pre-production or beta. Customization Parameters should also be set in the customization GUI. After the ip core is done it should be reviewed and packaged using the Re-package IP button. This will create the new ip core.

 

image

image

 

image

Modifying the VHDL code of the ip core to adjust to the project.

 

 

The long process of reviewing and packaging the PWM ip core.

image

 

image

 

image

 

image

image

After the customizations are done the ip core should be packaged and all the check marks set to OK.

 

Compilation and the looking into the Schematic

 

Below are some pictures how the device design must look like once the ip core is integrated in the vivado project.

image

 

image

 

 

Exp 4: Add IP to Project

 

Here I added the ip core into the existing vivado project and and re-run the connection wizard. Later I also regenerated the layout to fit to the block diagram window. The interrupts in the ZYNQ7 Processing System IP block should be turned on and connected to the interrupt of the PWM_w_Int IP. Later I also added the inbuilt logic analyzer ILA for tests and configured the ILA wizard in the design.

 

image

image

image

image

The full design of the Block Diagram

 

The pre-defined constraints file is also added to the design which sets constraints to all the input/output ports and clocks in the project. This MiniZed_Speedway.xdc file is pre-defined and was sent to us. Later the whole project need to be re-synthesized again and Bitstream should be re-generated.

 

Conclusion

 

There were many learnings in this lab exercise and creation of new ips can be a bit daunting if you are a beginner. The process to make new cores in vivado is completely different from what it used to be in ISE. Each step in the process must be closely evaluated as there is a ton of code which gets generated in the background by click of a button. Nevertheless once the process is done the ip- core is a fantastic piece of hardware which can be easily maintained and re-used when needed.

  • Sign in to reply
  • snidhi
    snidhi over 6 years ago in reply to rscasny

    I think the learning curve for fpga is pretty steep as in the last 5 years a huge amount of progress has been made in the fpga tool chain. And even I had to re-learn quite a bit to get a good hang of the new tool chain from designing hardware to writing your own software code and combining the both to get them going.

     

    More number of simple projects and examples come make it a bit easier to start. Available ips for generic hardware sensors is something xilinx is already doing. I have seen that often when people see working hardware they get excited. Another good step taken by xilinx is that they made the tool vivado free unlike previous ISE.

     

    With this everyone can download and give a go. Also take their time. But again if you can do something with a micro-controller probably going for an fpga is not the best idea.

     

    Cheers

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • More
    • Cancel
  • rscasny
    rscasny over 6 years ago

    Interesting conclusion. I'm wondering what could be done to make it less "daunting."

     

    Randall

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • More
    • Cancel
element14 Community

element14 is the first online community specifically for engineers. Connect with your peers and get expert answers to your questions.

  • Members
  • Learn
  • Technologies
  • Challenges & Projects
  • Products
  • Store
  • About Us
  • Feedback & Support
  • FAQs
  • Terms of Use
  • Privacy Policy
  • Legal and Copyright Notices
  • Sitemap
  • Cookies

An Avnet Company © 2025 Premier Farnell Limited. All Rights Reserved.

Premier Farnell Ltd, registered in England and Wales (no 00876412), registered office: Farnell House, Forge Lane, Leeds LS12 2NE.

ICP 备案号 10220084.

Follow element14

  • X
  • Facebook
  • linkedin
  • YouTube