I am trying to create a Custom Advanced GPIO IP core that has all the normal functions of a normal GPIO IP, but also has the feature to create a square wave signal by toggling the GPIO bit. My desired inputs are start/stop, duration, and duty cycle, and I want this to run independent of the main C code running on the Zynq processor. When the oscillations aren't running, I want to be able to control the GPIO pin with the regular GPIO functions in Vitis. I know how to go about creating IO ports on a custom IP, as well as assigning package pins, but I am a bit unsure on how to tackle the logic in this code, or how to interpret the S0_AXI signals entering the IP.
Does anyone have any good examples of this or any advice on how to go about doing this?