Jump to content

Boneoh

Members
  • Posts

    23
  • Joined

  • Last visited

About Boneoh

  • Birthday 03/01/1958

Profile Information

  • Gender
    Male
  • Location
    Meridian, ID
  • Interests
    Video, music, photography

Recent Profile Visitors

The recent visitors block is disabled and is not being shown to other users.

Boneoh's Achievements

Member

Member (2/4)

1

Reputation

  1. @artvvb Thanks so much! This is exactly what I needed to dig deeper. I appreciate the help! Pete
  2. Thanks for the feedback. The past hour or two I've been reading through the Vivado Programming and Debugging Tutorial. I really need to learn the debugging part of the process flow now. It's number one on my list. It seems I need to be looking at how to do this with Vitas, since the demo has a lot of dependencies on the software side. Also the app takes about 15 seconds to load and sync up the video. Any ideas of a guide or tutorial on how to do this in Vitas Classic Mode? The HDMI demo docs say that the Classic is required. I am able to get through the process of "Synthesis, Set Up Debug" ok. But I think that I am only half way there. Thanks a bunch for all your help! Pete
  3. I'm having trouble trying to get an FSYNC interrupt from the PL to the PS. I see in file video_capture.c function Gpio_Isr where the interrupt for the timing lock is setup. I've added the callback for the frame sync and the bit for fsync all to the interrupt enable call. The callback function does not receive the interrupt. // $$$ This is where the interrupt handler is set for the timing Lock XVtc_SetCallBack(&(videoPtr->vtc), XVTC_HANDLER_LOCK, VtcIsr, videoPtr); // $$$ Try similar for FSync XVtc_SetFSync(&(videoPtr->vtc), 1, 0, 0); XVtc_SetCallBack(&(videoPtr->vtc), XVTC_HANDLER_FRAMESYNC, VtcIsr_F_SYNC, videoPtr); XVtc_IntrEnable(&(videoPtr->vtc), XVTC_IXR_LO_MASK | XVTC_IXR_FSYNCALL_MASK ); // $$$ Added OR for FSYNC_ALL I've read through the VTC documentation but I must be missing something. I'm also confused as to which VTC is actually generating the lock interrupt, but that's not a problem other than my lack of understanding. This is in function VideoInitialize. /* * Setup direction registers, and ensure HPD is low */ XGpio_DiscreteWrite(&videoPtr->gpio, 1, 0); XGpio_SetDataDirection(&videoPtr->gpio, 1, 0); //Set HPD channel as output XGpio_SetDataDirection(&videoPtr->gpio, 2, 1); //Set Locked channel as input $$$ ? VTC_OUT ? Here is the relevant part of the block design for vtc_in And vtc_out
  4. I found this post that shows how to use an AXI BRAM Controller. It looks like what I am missing, I will give it a try.
  5. I'm learning and making progress on this project! I've added a simple custom IP block to shift the video data bits with wraparound. Also using interrupts for buttons and switches. This is fun! Video with bit shifting The next step is to use BRAM to control the IP processing. I'm using the GettingStartedWithBaremetal example to test my changes, then implementing the changes to my modified HDMI example. I was able to implement a BRAM and access it through the PS. The BRAM will be written by the PS to a set of small structures that contain the control parameters. The structures are small, less than 100 bytes each. There will be 6 to 10 structure instances mapped into the BRAM. The data will not be changed often and latency is not an issue. I am lost as to how to implement the BRAM access on the PL side. I've attached an image of the block design. How should I approach reading the BRAM in the PL? I was thinking that I should create a custom IP that accesses the BRAM and allows the data to be read. Thanks in advance! Pete Edit: typos and replaced block design png with better image.
  6. That's interesting! I made changes to the code to allow display of buffer with index set to zero and just saw a blank display. One of the hardest parts for me learning FPGAs is understanding the 'why' of some things. I'm doing OK learning the 'how' with the documentation, but sometimes I feel a bit lost.
  7. @artvvb thank you for the heads-up! I have tried a help out a bit, but I am so new for FGPAs that I'm afraid that I'm not much help. I'm following the thread and am happy to test on my setup, but so far I've not had any roadblocks. The good news for my little project is that I've been able to use the HDMI demo to learn and have some fun. Progress: 1. Learn the tools - I'm starting to understand the basics. 2. Added LEDs, buttons, and switches to the block diagram. 3. Creating my first IP block to start manipulation of the video pipeline. I feel like the small wins are keeping me motivated!
  8. @Eran Zeavi I am running Vivado and Vitas 2024.1.1 on Windows 11. The Critical Warnings that I am getting don't result in the "Synthesis Failed" hard stop that you are getting. These are the critical warnings I am getting when using the original HDMI Demo source project.
  9. @artvvb Yay! This works great! Thanks a bunch for getting me over this hurdle! Edit: I've added the switches to the interrupts following your example. I've attached a zip file for the ide. Regards, Pete GettingStartedBaremetal.ide.zip
  10. @artvvb Thank you so much for the quick and detailed reply! I will try this asap and confirm the results. Regards, Pete
  11. I've been struggling to try to get the PL to PS interrupts added to the HDMI demo. I've added the getting started with baremetal code into the HDMI demo and can turn the LEDs on and off using the buttons and switches. The goal is to have the VTC in the demo generate an interrupt to the PS. This would use a Frame Sync out from the VTC into the concat and then the IRQ_F2P of the PS. I've struggled with this for a few days and decided to try a more limited test case. I've changed the Getting Started With Baremetal example to try to test the interrupt with no success. If someone would take a look, I would really appreciate it. Thanks! Pete GettingStartedBaremetal.ide.zip
  12. I just found this and will dig deeper. https://github.com/Digilent/vivado-library/issues/25
  13. @Eran Zeavi I am running Vivado + Vitas 2024.1.1 but seem to be getting the same messages. I am so new to FPGAs that I don't understand the implications of these messages. The demo software does seem to be working for me. Are you able to run the demo at all? Does anything appear to be broken? Is there anything you would like me to try on my machine? I get these critical warning messages in Vivado when generating the synthesis and implementation.
  14. I've been making progress getting up the learning curve. I've been able to add the LEDs, buttons, and switches to the HDMI Demo project. My challenge is how to generate an interrupt from the PL to the PS to handle the framebuffer. I'd like to have the software in PS receive an interrupt to know when to switch framebuffers, so the software will be working in one buffer while the PL is displaying another. I've tried experimenting with the code, but I'm too new at this to get a good understanding of what to do. Here is what I've found. A. The v_tc_in is generating an interrupt when receiving the lock. This works great. The v_tc_in.irq is connected to xlconcat0.In3 and the xlconcat0.dout is connected to processing_system7_0.IRQ_F2P[4:0] I'm guessing that these are mapped when the function fsInitInterruptController in intc.c is called. But it's not clear to me what is happening there. The five bits coming out of the xlcontact0.dout are going to bit 4:0 of the PS. I seem to be missing the critical point here... B. I see the code in video_demo.c where the "ivt" is setup for both GPIO and VTC. The interrupt id is set to HDMI_IN_VTC_IRPT_ID which was set to XPAR_FABRIC_V_TC_IN_IRQ_INTR. C. Code in video_capture.c function named VtcIsr receives the interrupt. Getting more specific here: 1. Should I be using an interrupt from v_tc_in to detect a new frame and switch buffers? It seems that v_tc_out is used for the output timing. The only use I can see for the v_tc_in is simply for the 'locked' interrupt. 2. What interrupt is best to use? The product guide shows an example video on page 54, Figure 3-8. Here the "fsync" values are used by the video pipeline. 3. What do I need to do to implement this? a) add a new entry to the ivt. b) add a connection for one or more of the fsync bits to the xlconcat. c) create a handler to receive the interrupt. Thanks in advance! Pete
  15. I used to 'src' folder from the -10 version and it worked great. The HDMI Demo is up and running. I think you can add a new entry by editing the source file that has the video settings, it is file "vga_modes.h" in the "src\display_ctrl" folder. I am trying something similar in a couple days, I want 1080p30. I should be able to add a new entry and change the .freq setting. Then in file "src\video_demo.c" there is function "DemoCRMenu" that will need to be changed to add the new mode to the prompt. Last, in function "DemoChangeRes" it will need to be changed to use the new mode when the user enters the response to the prompt. Here is a link that shows the parameters for many video modes.
×
×
  • Create New...