Forum Discussion

MATRIX7878's avatar
MATRIX7878
Icon for Occasional Contributor rankOccasional Contributor
3 years ago
Solved

Reset Release IP VHDL code not working

Hello,

I am trying to create a simple VHDL design test for an Agilex 7 m-series FPGA and have hit a snag. I am trying to create a Reset Release IP code snippet and cannot seem to figure out what to do. I do not know what is declared in the IP itself and tried working with the code I saw on the RRIP video. I am attaching my code and the errors I am getting. Any help would be appreciated.

Thank you,

Drew

  • By the way, here is how your project netlist looks like in the RTL viewer. You should really check the connections and make sure if this is what you intended.

    The connections are easily changed through portmapping as I had helped you earlier. You may check out the VHDL trainings as it covers this.

    It seems like a very small project. What are you trying to do with this project? Are you just going to run simulations? Are you going to do hardware programming?

    Regards,

    Nurina

35 Replies

  • Nurina's avatar
    Nurina
    Icon for Regular Contributor rankRegular Contributor

    By the way, here is how your project netlist looks like in the RTL viewer. You should really check the connections and make sure if this is what you intended.

    The connections are easily changed through portmapping as I had helped you earlier. You may check out the VHDL trainings as it covers this.

    It seems like a very small project. What are you trying to do with this project? Are you just going to run simulations? Are you going to do hardware programming?

    Regards,

    Nurina

    • MATRIX7878's avatar
      MATRIX7878
      Icon for Occasional Contributor rankOccasional Contributor

      Hello,

      The RTL viewer looks to be correct. That is what I would expect. I do not see a need to change port mapping for the main part. It is just the RRIP I need to connect somehow.

      It is a very small project indeed. It is to mimic the taillights of a Ford Mustang. The blinking of one after another. For now, it is just simulations, as I do not have an actual board. I cannot find the board I want with the Agilex 7 M-Series. I am currently designing my own FPGA board around the aforementioned FPGA core and then I will program the hardware on that when I get it made. For now though, it is just simulation until I get a physical board.

      Thank you for all your help,

      Drew

      • sstrell's avatar
        sstrell
        Icon for Super Contributor rankSuper Contributor

        You do realize that an Agilex 7 M-series would be waaaay overkill for something like this? It's a brand new device and I'm sure dev kits for it will probably start around $10k. I don't think dev kits are even available for it yet.

        Even an Arria 10 or Cyclone 10 GX would be more than enough for a design like this. And probably much less expensive.

  • MATRIX7878's avatar
    MATRIX7878
    Icon for Occasional Contributor rankOccasional Contributor

    Hello,

    I do not know what implementation is needed. I moved the RRIP into its own .vhd file and now my top-level file is riddled with errors. I simply cut and pasted all the RRIP code into a separate file and saved it into the same directory. I gave it its own architecture and begin statements. What else needs to be done? All the errors are coming up as part of something else not working (ghost errors I call them).

    Thank you,

    Drew

  • MATRIX7878's avatar
    MATRIX7878
    Icon for Occasional Contributor rankOccasional Contributor

    Hello,

    I did not do it right? The component and entity have the same name. Perhaps I am not seeing what you are saying. Could you please tell me what lines are not right. I have a rr_ip and resetRelease component and instantiation. Do I not need both?

    Thank you,


    Drew

  • MATRIX7878's avatar
    MATRIX7878
    Icon for Occasional Contributor rankOccasional Contributor

    Hello,

    I decided to just dump all the RRIP I had and start from scratch as the program was giving me a headache. I found out how to see the .vhd file in the RRIP and saw that I had a conflicting naming convention for the files. That was probably some of the problems. I am still going through the online training of Intel, but I have not gotten to everything yet. I see the .vhd file associated with the RRIP has and see that it has an entity that deals with the ninit_done port. I have re-written the reset release file with this new file in mind and the links you all have sent me. I thought I could get the code right, but I still am not getting it. I do not know why this is not clicking with me. I also see that I had somehow mixed up a port. Locked equals to locked, not the out clock. I do not know why I saw that. The code looks much cleaner now, but it is still riddled with errors. I should get this by now, but I am not. The code without the RRIP compiles without error but gets a severe warning of no RRIP in the program. At this point, I am hoping someone has an actual file for RRIP.

    Thank you,

    Drew

  • MATRIX7878's avatar
    MATRIX7878
    Icon for Occasional Contributor rankOccasional Contributor

    Hello,

    The errors I get are coming from extraneous things. The errors are being caused by one error in one file that infects other files. The code that I know works as it compiles is now erroring out because of something in another file. I am attaching the clockdiv file, so you know what it is. sys_pll.vhd has the my_reset port because I need it for the equation in my process. I have a feeling though that that is not right.

    I generated the IP, but I never got any code from it. I was unaware of that ability to take the template code. I learned about the IP from the youtube video and added it into the project as shown but did not know that I could take code from it that way. I thought it was a library that existed to help the compiler. I did not know what the top-level code was as I have no basis to go off of for the IP. So, the IP creates u0 and I need to make u1 for the sys_pll. Ok, I can do that. I copied the code the IP generated and I have:

    u0 : component RRIP
    port map (
    ninit_done => CONNECTED_TO_ninit_done -- ninit_done.ninit_done
    );

    The CONNECTED_TO_ninit_done is not defined and is causing an error. This is not a signal, so how do I define this?

    sys_clk and rst_in are variables I saw in the RRIP video, so I thought that they were needed. Perhaps I already have things defined and am creating redundant symbols. I would not put that past me. Locked is bidirectional as I saw it equaling itself i.e. locked => locked. I took it as this is a bidirectional pin.

    With ninit_done being an output pin, I was under the impression that I would need an input pin for it as well to give data to something. If I cannot connect it to an input port, then I need an IF statement to say that it has changed? Or is there something else I can do?

    The sys_rst is the flag saying that the system has reset that I saw on the video. Once I got my code running, I was going to use that as the checker to make sure the system reset. I thought that that was the point of it. I understand what the RRIP is supposed to do, but my ability to code it is far from perfect.

    In the video they had the line locked => locked, so I thought that that was what I needed to do. It did not make sense to me either, but I trusted the video as it was from Intel. They should know their FPGA code is what I figured.

    clockdiv is used for the main portion (sig.vhd) of the code to create a 25 MHz clock for the logic. The code will run on a frequency of 25 MHz.

    I think I am slowly getting this as it is starting to make more sense now.

    I did do the training, but it appears as though I need to go back through it. Oh boy. I am attaching the errors (meaningful errors) I am getting now and the code I have.

    Thank you for your patience. I am trying my best to get this.

    Drew

    • sstrell's avatar
      sstrell
      Icon for Super Contributor rankSuper Contributor

      Lots happening here.

      When you generate IP, it creates a number of files. You just don't need to interact with them usually. The generated code is placed in folders in your project directory (may be the instance name you gave to the IP or in an "ip" directory). It looks like you took the top-level file generated by the PLL IP and edited it (adding my_reset) which you should not do.

      The template includes "CONNECTED_TO_..." to indicate where you need to edit it to replace it with the appropriate connection in your design. That's why it's just a template and not the final code you should be using.

      ninit_done is an output signal of the IP, not an actual hardware output pin of the device. As such, you could certainly connect it to an output pin of the device to bring the signal out of the FPGA or connect it to the input of some other logic (like a reset input for example). This does not mean you can connect it to an actual hardware input pin of the device. As I stated previously, this makes no sense.

      And as I suspected, clkdiv is not required. It's not clear if you need one or two clock domains, but you could just use the PLL to create the divided clock instead.

      • MATRIX7878's avatar
        MATRIX7878
        Icon for Occasional Contributor rankOccasional Contributor

        Hello,

        I did not use the PLL IP. The only IP I have is the Reset Release IP. Is that what you are calling the sys_pll? I did not know that that was to come from an IP. I thought that that was its own code chunk.

        Can the template space be replaced with a signal? It would then need to change the direction of the => to <= if I am not mistaken. I do not think that making it ninit_done => ninit_done makes sense, so I need to create a new port for it. Is that right?

        Ok, I think that the label is defined as a PORT and not a SIGNAL, so I might have misunderstood what it was trying to become. Ah, I see what you are saying. ninit_done is a software signal that talks within the software, it is not a hardware signal that I can connect to an LED. I can connect it to another software pin that can trigger a hardware function to turn on an LED if I desire, but I cannot use the signal directly. I think that was a big part of the problem I was having with understanding.

        clkdiv is needed at least for the LED and switch control of the main program. That was the clock I had before I knew that I had to have a Reset Release. It would probably be best to have two clock domains, one for the reset and one for the main program.

        Thank you and hopefully Nurina, has finished with my .qar soon,

        Drew

  • MATRIX7878's avatar
    MATRIX7878
    Icon for Occasional Contributor rankOccasional Contributor

    Hello,

    Yes, I am aware. I just wanted to start off with something simple as a design to test the waters if you will. I plan on making much more complex designs later. I do not plan on buying a dev kit and I have seen 2 as PCIe slot card dev kits. I am planning on making my own FPGA board. I need the Agilex 7 M-series as it has DDR5 and PCIe Gen 5 capabilities. I need to use the modern standards so I can get more qualifications on my résumé. I have a majority of the parts I want for the board already in my PCB schematic, I am just missing the brains. I cannot find a model of the FPGA. I want to use Quartus 1st to make sure that I at least know what I will need to do when I make the board.

    Thank you though for making sure I was aware of what I was doing,

    Drew

  • Nurina's avatar
    Nurina
    Icon for Regular Contributor rankRegular Contributor

    Hi Drew,


    I’m glad that your question has been addressed, I now transition this thread to community support. If you have a new question, Feel free to open a new thread or login to ‘ https://supporttickets.intel.com ’, view details of the desire request, and post a feed/response within the next 15 days to allow me to continue to support you. After 15 days, this thread will be transitioned to community support. The community users will be able to help you on your follow-up questions.

    If any answer from the community or Intel Support are helpful, feel free to rank your support experience by rating 4/5 survey. Please let me know of any inconvenience so that I may improve your future service experience.

    Have a great day!


    Best regards,

    Nurina W.


    • MATRIX7878's avatar
      MATRIX7878
      Icon for Occasional Contributor rankOccasional Contributor

      Hello,

      Thank you for letting me know. I'm glad that this could be resolved as well. Now to figure out how to use the RRIP in the program.

      Drew

  • nadeem129aa's avatar
    nadeem129aa
    Icon for New Contributor rankNew Contributor

    I do not know what should be a signal, a port, or something else. I am attaching my new code and errors. The Reset Release code is lines 13-27. I hope this looks better. I have tried to follow the tutorial for the Reset Release IP I found through Intel,