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 & Tria 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
      • Japan
      •  Korea (Korean)
      •  Malaysia
      •  New Zealand
      •  Philippines
      •  Singapore
      •  Taiwan
      •  Thailand (Thai)
      • Vietnam
      • 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 3
  • Challenges & Projects
  • Design Challenges
  • Path to Programmable 3
  • More
  • Cancel
Path to Programmable 3
Blog Blog 2: The Mystery of Custom IP on Ultra96 and Windows
  • Blog
  • Forum
  • Documents
  • Leaderboard
  • Files
  • Members
  • Mentions
  • Sub-Groups
  • Tags
  • More
  • Cancel
  • New
Join Path to Programmable 3 to participate - click to join for free!
  • Share
  • More
  • Cancel
Group Actions
  • Group RSS
  • More
  • Cancel
Engagement
  • Author Author: pandoramc
  • Date Created: 12 Jul 2023 1:50 AM Date Created
  • Views 543 views
  • Likes 7 likes
  • Comments 1 comment
  • Windows IP issue
  • custom ip
  • Ultra96-V2 Board
  • Path to Programmable III
  • Path to Programmable 3
Related
Recommended

Blog 2: The Mystery of Custom IP on Ultra96 and Windows

pandoramc
pandoramc
12 Jul 2023

Table of Contents

  • The Hardware Lab
  • Windows troubleshooting
  • Captures

The Hardware Lab

image

You may recognize the diagram above, don't you? The diagram corresponds to the Lab 8 in the Hardware manual. Directly from it, I had to do some small changes to work on Windows to bring a functional practice. Despite the design of new IP to solve an specific problem (CISC approach) is easy, if you are not familiar with the procedure you could face some particular challenges. You must remember that we are integrating new peripherals to an ARM-based architecture and those have to be compatible with the embedded hardware, and finally, all of them should be understandable to the software developer.

Windows troubleshooting

When you create a new IP you have a set of files that describe the behavior of the system and how to map memory to the processor, configure it, and get information from the new peripheral. Unfortunately I faced an issue with the Makefile generated by Vivado 2021,

COMPILER=
ARCHIVER=
CP=cp
COMPILER_FLAGS=
EXTRA_COMPILER_FLAGS=
LIB=libxil.a

RELEASEDIR=../../../lib
INCLUDEDIR=../../../include
INCLUDES=-I./. -I${INCLUDEDIR}

INCLUDEFILES=*.h
LIBSOURCES=*.c
OUTS = *.o

libs:
	echo "Compiling PWM_w_Int..."
	$(COMPILER) $(COMPILER_FLAGS) $(EXTRA_COMPILER_FLAGS) $(INCLUDES) $(LIBSOURCES)
	$(ARCHIVER) -r ${RELEASEDIR}/${LIB} ${OUTS}
	make clean

include:
	${CP} $(INCLUDEFILES) $(INCLUDEDIR)

clean:
	rm -rf ${OUTS}

The above file might work well on Linux since the manual does not provide information about the following problem. When you export your hardware to Vitis IDE, apparently all the components seem to be assembled correctly, but when you try to compile your projects without modifications or build the platform, you will get something like this,

image

You might think that there is an error synthesizing the hardware or creating the .XSA file, but it is not sure at all. I faced the same problem for the ePWM IP. This IP consists of a PWM module for clockwise pulse width modulation for motor drivers, it uses the sign bit to establish CW or CCW and the other bits for duty cycle. I designed the ePWM on Vivado 2018 and it was interfaced for a Microblaze processor. I solved the issue with the information available in thread 75527, but it does not work with the version 2021 and for ARM Cortex architecture. Thanks to the Mooona forum question, available here, I made a small change to the file,

COMPILER=
ARCHIVER=
CP=cp
COMPILER_FLAGS=
EXTRA_COMPILER_FLAGS=
LIB=libxil.a

RELEASEDIR=../../../lib
INCLUDEDIR=../../../include
INCLUDES=-I./. -I${INCLUDEDIR}

INCLUDEFILES=*.h
LIBSOURCES:=$(wildcard *.c)
OUTS = *.o

libs:
	echo "Compiling PWM_w_Int..."
	$(COMPILER) $(COMPILER_FLAGS) $(EXTRA_COMPILER_FLAGS) $(INCLUDES) $(LIBSOURCES)
	$(ARCHIVER) -r ${RELEASEDIR}/${LIB} ${OUTS}
	make clean

include:
	${CP} $(INCLUDEFILES) $(INCLUDEDIR)

clean:
	rm -rf ${OUTS}

This change was made in File Groups -> Advanced -> Software Driver to propagate to all instances of the driver on the platform,

image

All these steps solved the problem with Windows and I was able to handle the physical practice.

Captures

As shown in the manual, you can connect your board through the serial port with 115200@8N1

image

and with the ILA IP, you are able to trace the counter values, you can even add triggers to catch an special event without additional lab equipment as long as there are sufficient logic elements to do it.

image

image

  • Sign in to reply
  • javagoza
    javagoza over 2 years ago

    We had discussed that same issue with the wildcards for the windows makefile in the following forum and in the following blog

     RE: Did anyone get a build error in Lab 4 pointing to missing file xp[arameters.h? 

    Importing Digilent Vivado IPs

    • 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