rarow Posted February 23 Share Posted February 23 Hi, Basically I have a block design where a MicroBlaze is connected to an AXI GPIO. Then, the AXI GPIO drives the inputs (except the clock of course) of a custom PWM generator I made. In Vitis, I made C code that writes to the GPIO in order to set the inputs of my PWM generator. However, it seems that nothing is happening. I directed the output of the PWM to an LED in order to see if it is working. I can never see the LED 'on'. Even if out of reset, the pwm is supposed to be at high. I think the main problem is relating to the AXI GPIO. I found the following link where someone suggests the AXI GPIO can only drive top level I/Os. https://electronics.stackexchange.com/questions/677156/how-to-place-connections-between-microblaze-and-custom-rtl-modules-in-vivado Also, I checked the AXI GPIO product guide : AXI GPIO v2.0 Product Guide (PG144) • Viewer • AMD Adaptive Computing Documentation Portal (xilinx.com) It says : Can anyone confirm that my idea of using the GPIO to control an RTL module is indeed wrong? If it is wrong, how can I do the functionality I want, I assume maybe create an AXI interface for my PWM generator? Link to comment Share on other sites More sharing options...
artvvb Posted February 23 Share Posted February 23 Hi @rarow Using AXI GPIO to control module ports works fine, for example: https://forum.digilent.com/topic/28261-qol-script-for-vivado-block-design-and-ps-pl-communication/, https://forum.digilent.com/topic/22978-axi-dma-help-on-cora-z7-10/#comment-85544. Could you provide a screenshot of how your GPIO IPs are connected to your nets, as well as some source code that controls the GPIOs? There are some gotchas, for example, if the AXI GPIO doesn't use "All Outputs" for the appropriate channels and the tristate pins are set to input, output signals are not driven - as workarounds for this specific issue, you could either use the All Outputs setting or you could drive your module ports with the _t pin within the GPIO interface, and use SetDataDirection calls instead of DiscreteWrite (assuming you're using the xgpio driver). Thanks, Arthur Link to comment Share on other sites More sharing options...
Xband Posted March 1 Share Posted March 1 @rarow, I did a similar thing with pulsed LED with triggering a camera. I couldn't see the LED since the pulse was so short it didn't make enough light for me to see with my eyes. Though I finally timed the camera so I could see the led flashing, so you might need better eyes! :) Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now