element14 Community
element14 Community
    Register Log In
  • Site
  • Search
  • Log In Register
  • 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
  • About Us
  • 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 Building a Custom IP for Minized in Vivado
  • 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: mu.udhay
  • Date Created: 27 Nov 2018 5:31 PM Date Created
  • Views 2012 views
  • Likes 3 likes
  • Comments 7 comments
  • vivado ip
  • ip
  • pwm ip
Related
Recommended

Building a Custom IP for Minized in Vivado

mu.udhay
mu.udhay
27 Nov 2018

In this Post , we will get helpful insights about an IP (Intellectual Property) , How we can create our Own , How we can Integrate it in Our Design using powerful  Xilinx Vivado tools.

For Some Motivation about IP just see the below diagram of the Design I implemented in Vivado for working on PWM in Minized:image

As you can see , the Above Design consists of various blocks Such as "ZYNQ_7 Processing System" Block,"AXI Interconnect "Block,"PWM_w_int" block etc..

All these blocks are simply the IP blocks that i used in this Complex design which helped me to build a complex system/Design relatively easy for me within no time.

 

It is Exaggerating to say , most of the VLSI design is now IP based , even the Most famous ARM company known for the ARM Cortex chips used in Smartphones (and iPhone also uses them) is actually selling its Core IP design for the Designers and Manufacturers to buy and use it under licenses.

This is just a Brief Idea of How demanding IP design is in Present day Designs.

 

What is An IP then ?

To make it short and Simple , IP(Intellectual Property) in Design can be mainly :

1.)Soft IP - Which Includes the HDL files of the Design or Schematic of Design with logic Gates i.e.., This ip is implemented in Design by means of softwares like Vivado..

2.) Hard IP - It refers to Designs given to us in the form of Layout Diagrams (giving Where should i put a pnp/npn transistor or MOSFETs ) , it is least flexible to modify. It is mainly used by Chip manufacturers at the Foundry.

There is also mixture of two : called as Mixed IP , don't have much significance.

 

What Do i require to create my own IP in Vivado?

You don't need much , except the Design of the IP you want to Implement , Powerful EDK tool like Vivado will do most of the Work for us , A great relief !

In order to Understand the Flow to create IP ,we create an IP for implementing "PWM controller with Interrupt Functionality" for zynq-7000 .

Below figure shows how the Actual PWM controller is Designed:

image

The Whole Design is broken into 3 Parts so that we can develop a complex design by just building the simple pars and join them Together by means of a Wrapper (the Covering Box) as shown above.

Here Block1 refers to desgin in "PWM_w_Int_v1_0.vhd" file in the attachments Archive , It is used to Interact with the AXI Interconnect Block to translate the AXI language from the AXI Interconnect block (shown Outside) to the Langauge Understood by the PWM Controller(Block 2 in yellow color).

The AXI Inter connect actually used to Connect multiple Master and Slave AXI Devices , and our Block1 works as a Slave Device , the Master we meant to be Interacting is the ZYNQ7 Processing System block as shown in the first figure in the Post.

The Block 2 is the Heart of the design , it is the PWM controller Design written in "PWM_Controller_Int.v" file , it takes the required Input regarding what should be the Duty Cycle , Time Period and Gives the PWM(Pulse Width Modulated Output) , Interrupt the PS .

 

The Covering Box is nothing but the Wrapper file , which creates the Instances of Block1 and Block2 from the HDL files and Map the Input and Output Ports among Them and to the Outer World as shown in the Block diagram.

 

Now we will be Creating custom IP for this PWM design

 

Note that Vivado is so powerful that it  Creates the required AXI slave - Block1 and the Wrapper by opting for it when creating a new IP , through

1.)Open Vivado  -> 2.) Tools ->3.) Create and Package new IP -> 4.)Next -> 5.)Select Create New AXI4 Peripheral -> 6.)Type IP name (For Eg:"PWM_Controller_Int.v"  for my case)  and Some Description about it , & Select required Path Directory -> 7.)This is the Important thing to Note: It is Mainly Based on your Application/Design , In my case i used below values

image

 

But if the Design require large Data Registers select the Appropriate AXI options.

->8.)Next ->9.)Add IP to Repository / Go for Edit as it needed to be. ->10.)Finish

 

In Order to Open IP to Edit , you can Do so by : ->1.) Select Window tab on the Top ->2.)Select IP Catalog ->3.)Type the Name of your IP ->4.)Right Click On it ->Select Edit in IP packages

Give the Editing Profile a name and Location where you would like to save those Settings/Temporary data while Editing your IP

This is the Screenshot of my IP Manager:

image

As you can see i already added the Design files under my IP wrapper file , but i am joking , Vivado automatically parses the Design files based on the Component Instantiations used in the Wrapper file,it adds those Designs files under it.

So if you are writing a new IP, Don't Forget to Instantiate your Each Design Block in your IP as a component in the Wrapper file and port map it (giving port names/Connecting to Already Existed/Created Ports in the Blocks).

On the Left Panel is the Package Steps tab.

After Integrating all the Design files under the Wrapper Run the Synthesis to Generate the Synthesized Design.

After Successfully Synthesizing your Design , you can Package the IP: By Going for "Package IP" as shown below after synthesizing the Design

image

1.)In the Identification Tab , Fill the details which help to Identify your IP based on these Fields effectively while Searching in the Catalog.

2.)In the Compatibility , you can tell Vivado ,for which family of Devices this IP can be Used

3.)For the Proper Functionality(Both Simulation 7 Synthesis) of your Design in the Standard way , you include the Design files in Simulation and Synthesis file groups , if not present already Press '+' icon to Create the File Group

For Instance My file Groups are as Follows:

image

The Drivers and Other are generated Automatically based on your Design files.

4.)Customization Parameters is helpful if you would like to change the Generic Parameters such as the Data Width,Address Width,Size of Data...

5.)It gives what are the Ports of your IP (Input & Output) and you can also give the details regarding their Functionality for some special Ports like Interrupts,CLK , Reset as this can be used for Automating Wiring when you click "Run Block Automation" (yeah its saves lot of time for other if you spend it here wisely !)

6.)Addressing and Memory is helpful if you would like to change the Address Space of your Components in the Design , if not required/Sure about it Keep  it untouched(No Harm)

7.)Customization GUI gives the flexibility of controlling what ports are to be Displayed in the IP Block fig. and some default Parameters to be Used(if not given/Used)

8.)Review and Package : Its Self Explanatory , Isn't IT , If not Comment on image

Thats It ! You Created your Own IP for your Design.

In the Next post , we will be using this IP on our Design(I already showed it to you in the First figure )

Attachments:
PWM_ip_design_files.zip
  • Sign in to reply

Top Comments

  • 14rhb
    14rhb over 6 years ago +2
    Very informative and a great blog, thank you. I'm not on the course but I am finding these blog posts really useful for my understanding of Vivado and FPGA designs. Rod
  • mu.udhay
    mu.udhay over 6 years ago in reply to 14rhb +2
    Thank you Rod for your valuable Feedback, if possible give some feedback regarding whether my posts are easy to understand or seem bit difficult to grasp , or too dull to read - and if it is the case …
  • 14rhb
    14rhb over 6 years ago in reply to mu.udhay +1
    Hi Udhay, Definitely not dull; plenty of informative diagrams is always good for me. The surrounding text was easy to follow and clearly presented. I guess you'll have a range of readers with different…
  • rscasny
    rscasny over 6 years ago

    I enjoyed your explanation and breakdown of IP.

     

    Randall

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • More
    • Cancel
  • mu.udhay
    mu.udhay over 6 years ago in reply to DAB

    Thanks DAB

     

    udhay

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • More
    • Cancel
  • mu.udhay
    mu.udhay over 6 years ago in reply to 14rhb

    Thank you Rod , it is such a great pleasure to hear from you image

    • Cancel
    • Vote Up +1 Vote Down
    • Sign in to reply
    • More
    • Cancel
  • DAB
    DAB over 6 years ago

    Nice update.

     

    DAB

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • More
    • Cancel
  • 14rhb
    14rhb over 6 years ago in reply to mu.udhay

    Hi Udhay,

     

    Definitely not dull; plenty of informative diagrams is always good for me. The surrounding text was easy to follow and clearly presented.

     

    I guess you'll have a range of readers with different skills so there will always be some that find it too complex and others will find it too basic: I've done some work with Vivado before so probably fit into the middle :-)

     

    Rod

    • Cancel
    • Vote Up +1 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