ZYNQ for beginners: programming and connecting the PS and PL | Part 1

Поделиться
HTML-код
  • Опубликовано: 28 окт 2024

Комментарии • 89

  • @1DiscipleDragon
    @1DiscipleDragon 7 месяцев назад +3

    I really appreciate you in not only explaining what you are trying to do, but also explaining other terms and buttons and features surrounding what you are trying to do to help get a bigger picture of why and how we are this thing in vivado. thanks

    • @Dom-bo8wd
      @Dom-bo8wd  7 месяцев назад

      Thanks for watching and your comment :)

  • @jacobattar6829
    @jacobattar6829 2 года назад +16

    Great video, there's nothing else online that is as introductory and easy to understand as this video. In fact San Diego State University is instructing their students to watch this to learn how to work with the minized board with has both PS/PL As well. So thanks.

    • @Dom-bo8wd
      @Dom-bo8wd  2 года назад +2

      wow i am so happy that it is working! thanks for the feedback and for watching!

  • @SciHeartJourney
    @SciHeartJourney 3 года назад +4

    About 12:20 in, the S_AXI options did not appear. I had to select GPIO or the OK button would not appear. When I completed the Block Automation, the M_AXI_GP0_ACLK input disappeared.
    Not to worry though, just open up the Zynq Processing System block and edit the properties to enable the GP0 AXI. Then it worked just fine. I've already seen Part 2, which this is a setup for. This stuff is pure gold! You have to fish through a lot of documents to find what these two videos show. Thank you very much Dom.

    • @Dom-bo8wd
      @Dom-bo8wd  3 года назад +1

      I am glad you got it working!! Thanks for the positive feedback!!

    • @KasLewis
      @KasLewis 2 года назад

      I was having this exact problem and your comment as ell as solution was exactly what I needed to resolve my issue, Thank you

  • @emiliomartineziii2980
    @emiliomartineziii2980 3 месяца назад

    This was amazing. It's always so rare to have somone who can speak english normally making these videos

  • @WiggumRalph
    @WiggumRalph 8 месяцев назад

    Brilliant video. Really appreciate it. No other material on youtube explained it so easily. I could apply the same principles to my PYNQ boards.

  • @SciHeartJourney
    @SciHeartJourney 3 года назад +5

    Thank you! I keep seeing too many PS examples using software. The sight of that "RTL" block in the bock diagram is a subtle, but beautiful thing. That's where the magic happens.

    • @Dom-bo8wd
      @Dom-bo8wd  3 года назад

      You are so right!! Thanks for the comment!!

  • @preontech3477
    @preontech3477 4 года назад +8

    Thank you very much, This is exactly what I´ve been looking for.

    • @Dom-bo8wd
      @Dom-bo8wd  4 года назад

      Great! I am glad it helped!

  • @chinmayapanda9686
    @chinmayapanda9686 Год назад

    Thank you very much.
    I have followed both videos exactly as explained and changed the .xdc file of ZedBoard and it's working perfectly.

  • @AdnanGhadri
    @AdnanGhadri 3 года назад +2

    Many thank for your useful video. I have been looking a while for a video that has both PL and PS code. I hope we could see more videos like this in the future.

  • @stage666
    @stage666 2 года назад +3

    Hi dom, will you do more tutorials on the zynq fpga?

  • @marwanal-yoonus280
    @marwanal-yoonus280 Месяц назад

    Dear friend
    Please, I have a problem during reading the status of an output switch on Zybo Z7-10.
    I use Vitis to program the Zynq processor with Gpio connected to a slid switch. I make the switch (input2) status as a condition as shown in the program below if (D == 1) ;
    The following program works only when the input2 signal that was connected to Gpio IP starts from ("1") but the program does not work when input2 signal starts from ("0").
    //////////
    while (1)
    { D = XGpio_DiscreteRead(&input2, 1); // input2 from a slide switch
    if (D == 1)
    { sum_all = XGpio_DiscreteRead(&input, 1); // input is a 32-bit data
    printf("%x
    " , sum_all);
    sleep (1); }
    else
    { XGpio_DiscreteWrite(&output, 1, 0); // output is a LED
    printf("No_Signal
    ");
    sleep (1); }
    }
    /////////////
    i.e. the program works only when I change input2 from "1" to "0" but does not work when the input2 start changes from "0" to "1".

  • @maxmaxx8739
    @maxmaxx8739 2 года назад +1

    Thanks for the tutorial! Should it also work when i use the latest vitis version? i dont get it managed that it works...

  • @isamuhammadhassan8730
    @isamuhammadhassan8730 Год назад

    Thank you so much for this video as it really stabilized my shaky basics.

  • @mubasheer5584
    @mubasheer5584 4 года назад +6

    Wow! Amazing I was looking for this kinda tutorial.. please make it more for us.

    • @Dom-bo8wd
      @Dom-bo8wd  4 года назад +1

      Im very glad that you found it helpful!

  • @azmatali1159
    @azmatali1159 3 года назад +2

    Hi, Thank you for the video Dom.
    I wanted to know that what max. Speed of IO-PIN of Micro-Zed Board with 7020?
    I cannot find this information into the datasheet. Can you please help me out here

  • @chaoyangnz
    @chaoyangnz Год назад

    Great work Dom, a nice beginner tutorial

  • @ddbohra8426
    @ddbohra8426 7 месяцев назад

    so here AND gate giving one output signal. what to do if i need all four combination on input for operating four different code in PS part?

  • @DM-fw5su
    @DM-fw5su 3 года назад +2

    @9:03 you should not use RGB LEDs with 100% driven output, they should be at 50% PWM duty cycle max. Below that section (as seen in video) was the standard LEDs for Arty-Z7 that are safe to drive 100%, thanks for video this answered many questions I had.

    • @Dom-bo8wd
      @Dom-bo8wd  3 года назад

      gotcha thnks

    • @alexgian9313
      @alexgian9313 Год назад

      That's interesting. Why not?
      Having seen this video, I am about to start with a Cora-z7 board, which has two rgb diodes on it, useful as indicators. In beginner projects I do not run them off PWM, I just set them to '1'. I only use them to test button presses etc, should I not be doing this? Seems a bit strange...
      But if need be I'll write a PWM entity to drive them.
      BTW, many, many thanks to Dom, this was perfect and exactly at the level needed!

    • @DM-fw5su
      @DM-fw5su Год назад

      @@alexgian9313 IIRC my information came from the documentation for the Arty-Z7 I refer to. Maybe your Cora-Z7 hardware design is different, such as having higher ohm inline resistors in the wiring diagram. LEDs can be made to shine brightly with differing MTBF figures.

    • @alexgian9313
      @alexgian9313 Год назад

      @@DM-fw5su Thanks for that, the Arty and Cora setups look very similar, I'll see if I can find anything in the spec sheets.

  • @Chris-hi2hn
    @Chris-hi2hn 2 месяца назад

    Do you know how to write out the bitstream from Vivado to the flash, to keep the design after power 🚴‍♂️

  • @mangalkothari5628
    @mangalkothari5628 2 года назад +1

    Thanks for the nice video and explanation. I have a problem generating bitstream, it says ERROR: [DRC NSTD-1] Unspecified I/O Standard: 3 out of 133 logical ports use I/O standard (IOSTANDARD) value 'DEFAULT', instead of a user assigned specific value. I searched some sources but could not fix it. Could you help ?

  • @checksum1990
    @checksum1990 2 года назад +5

    Finally, someone is explaining this connection, well done!!! Could you please tell me why the option "add module to block design" is greyed out in my program?

    • @JustinCao52
      @JustinCao52 Год назад

      maybe u have it in systemVerilog file? because for me it is only work for verilog

  • @Andrew09LKN
    @Andrew09LKN 2 года назад

    How you can use the RTL instantly at 10:58? There have no such option for me in Vivado 2015.1 or it only available for Vivado 2019
    ?

  • @eigenfield
    @eigenfield Год назад

    Exactly what I'm looking for. You da man!

  • @divyasara1
    @divyasara1 2 года назад

    In our design, axi i2c ip is continuously generating interrupts as soon as we load pl file. Any suggestions

  • @shomiiii96
    @shomiiii96 3 года назад +1

    I am working with Zybo Z7-10, not Arty like you, but I managed to find constraint masterfile and other prerequisites... Everything else is pretty much the same. But I get these warnings(after I create HDL wrapper), and I don't know what they mean. Can someone explain?
    CRITICAL WARNING: [PSU-1] Parameter : PCW_UIPARAM_DDR_DQS_TO_CLK_DELAY_0 has negative value -0.050 . PS DDR interfaces might fail when entering negative DQS skew values.
    CRITICAL WARNING: [PSU-2] Parameter : PCW_UIPARAM_DDR_DQS_TO_CLK_DELAY_1 has negative value -0.044 . PS DDR interfaces might fail when entering negative DQS skew values.
    CRITICAL WARNING: [PSU-3] Parameter : PCW_UIPARAM_DDR_DQS_TO_CLK_DELAY_2 has negative value -0.035 . PS DDR interfaces might fail when entering negative DQS skew values.
    CRITICAL WARNING: [PSU-4] Parameter : PCW_UIPARAM_DDR_DQS_TO_CLK_DELAY_3 has negative value -0.100 . PS DDR interfaces might fail when entering negative DQS skew values

    • @Dom-bo8wd
      @Dom-bo8wd  3 года назад

      The parameter PCW_UIPARAM_DDR_DQS_TO_CLK_DELAY_n should always be positive I believe because it if is negative it means data is arriving late. Does your master constraint file contain timing constraints? If so, try deleting those and just using the physical constraints for now.

  • @wenyanwang219
    @wenyanwang219 3 года назад +1

    could you explain how to greate a board file snd how to defind MIO? Thanks.

  • @danshazar6683
    @danshazar6683 2 года назад +1

    Thank you for great video and clear explanation 🙏

  • @Andrew-eg2pc
    @Andrew-eg2pc 4 года назад +1

    I assume the "ZYNQ" thing is the PS, right? But usually isn't there multiple CPUs (maybe corext A53, cortex R5 for example ) in the PS and how does the "ZYNQ" know which one to use to do the "NOT" operation?

    • @Dom-bo8wd
      @Dom-bo8wd  4 года назад

      The ZYNQ is the processor, just like a Cortex A53 is a processor. There arent multiple processors on a ZYNQ chip unless you instantiate them in the block design/code. (You can put arm processors onto xilinx chips). ZYNQ is the name of the chip family as well as the name of the processor on the chip, so when you are programming a ZYNQ chip in C (not the FPGA part), then you are programming the ZYNQ processor

    • @Andrew-eg2pc
      @Andrew-eg2pc 4 года назад

      @@Dom-bo8wd I see. I just go to the xilinx website and happen to find one of "ZYNQ" processor called "ZYNQ UltraScale+ CG" ("www.xilinx.com/products/silicon-devices/soc/zynq-ultrascale-mpsoc.html"). However, according to description of "ZYNQ UltraScale+ CG", it contains both "cortex A53 and cortex R5", so the "ZYNQ" is not a processor like A53 in this case? It is kind of confusing that the description says that it has both A53 and R5.

    • @Dom-bo8wd
      @Dom-bo8wd  4 года назад

      Okay i understand now. Yes the zynq i was using in the video is just a ZYNQ 7000 series which only has one type of processor. The ZYNQ ultrascale chips have multiple processors on board. I am sorry I should have made that clearer.

    • @Andrew-eg2pc
      @Andrew-eg2pc 4 года назад

      @@Dom-bo8wd Yes, I see. It is clear now. Thank you. And in this case, if there are multiple processors in the ZYNQ, there should be an option to choose which one to run the c code in the sdk environment, right? I remember that in the sdk environment, after clicking "new" -> "application project", there should be a field that show the CPU name (I assume that user should be able choose one of the CPU (A53 or R5) if there are more than 1 CPU in there, right?).

  • @DvuongDo
    @DvuongDo 3 года назад +3

    Thank you! Useful videos!

    • @Dom-bo8wd
      @Dom-bo8wd  3 года назад +1

      I am happy you like them!

  • @tahirsengine
    @tahirsengine 3 года назад +5

    Audio quality was fine.

  • @Akshay-xo5iy
    @Akshay-xo5iy 2 года назад

    Hello!! What should we do if there are 2 outputs?

  • @mbuaesenju8514
    @mbuaesenju8514 2 года назад

    Hi, Thank you for the tutorial. Very cool. I have one worry, I could not "Add Module to Block Design". What do you think is the problem? the error message mentioned the port type led0 is not recognized. Only std_logic and std_logic_vector types are allowed for ports.

  • @michaelbradley7621
    @michaelbradley7621 6 месяцев назад

    Can you wire external 5/0 v digital inputs to the mod pins instead of using their buttons and switches?

    • @Dom-bo8wd
      @Dom-bo8wd  6 месяцев назад +1

      Yes, but you HAVE to use a level shifter. I have done this before with arduino to the FPGA but you need to step the voltage down to 3.3 V before input to the FPGA board.

    • @michaelbradley7621
      @michaelbradley7621 6 месяцев назад +1

      @@Dom-bo8wd thanks Im trying to put together and encoder for my ADC and i figured that a step down is needed I just wasn't sure if it was possible in the xdc i/o file but I'm going to play around with it. Excellent video by the way, do you have a patreon?

    • @Dom-bo8wd
      @Dom-bo8wd  6 месяцев назад

      @@michaelbradley7621 ah gotcha, yes I think you can set different voltage levels in the xdc file, but I have never seen a 5V setting. Vivado might yell at ya lol. No patreon, maybe I will set one up in the future :)

  • @aaronelectronik4762
    @aaronelectronik4762 7 месяцев назад

    Great Video, Well explained 10/10

  • @dipikasahoo5546
    @dipikasahoo5546 3 года назад +1

    Please make tutorials on the vivado software for ZC706 board

  • @alexandrosiii5676
    @alexandrosiii5676 4 года назад +2

    This is the same as transferring data from ps to pl?

    • @Dom-bo8wd
      @Dom-bo8wd  4 года назад +1

      Yep. I think there is more than one way but you can do it this way

    • @alexandrosiii5676
      @alexandrosiii5676 4 года назад

      @@Dom-bo8wd And let me ask one more question. Are you using PS internal memory(cache) to send data? Means you press swich then put into internal memory(cache) PS then put out LED?

  • @sagarhm2237
    @sagarhm2237 3 года назад

    sir how to run the python on zinc and how to build own fpga for runinng python

  • @ZainAhmed
    @ZainAhmed 4 года назад +2

    This is an awesome video, thanks

  • @miladdalim1
    @miladdalim1 2 года назад

    great stuff, good explanation.

  • @murad19882003
    @murad19882003 3 года назад +2

    Thank you, great friendly tutorial. But can't we just run the NOT and the AND on the FPGA ? To avoid doing the C code on SDK?.
    What is the purpose of the processor in this FPGA? Will it not introduce delays if we gonna make a real time system ? Thank you

    • @Dom-bo8wd
      @Dom-bo8wd  3 года назад +7

      Hi! Yes you can run the NOT and the AND on the FPGA, and it would probably be faster. The purpose of the video is only to show how to connect the processor and the FPGA for learning purposes.

  • @isaaczambrano3029
    @isaaczambrano3029 2 года назад

    Excellent video, could you do tutorials using a Zedboard and Vivado from 0?

  • @shreyasborse768
    @shreyasborse768 4 года назад +3

    Good One!

  • @gokulvishnu5899
    @gokulvishnu5899 3 года назад +2

    Thank you for the video, very useful for beginners. Can you upload a video on how to write data into DDR memory using RTL data from PL.

  • @cagakanodabas7673
    @cagakanodabas7673 2 года назад +1

    Very helpful ,thank u

  • @SciHeartJourney
    @SciHeartJourney 3 года назад +2

    VHDL is not case sensitive, but I adhere to writing code like it were. I don't know if Viviado or Verilog are case sensitive. If someone would comment on this, I'd be grateful. Thanks!

    • @Dom-bo8wd
      @Dom-bo8wd  3 года назад +2

      Verilog is case sensitive. Here is a link to a paper on some subtleties about the language www.google.com/url?sa=t&source=web&rct=j&url=lcdm-eng.com/papers/snug06_Verilog%2520Gotchas%2520Part1.pdf&ved=2ahUKEwiv-7uiwq7uAhXGUt8KHRJVDbIQFjACegQIDBAB&usg=AOvVaw03cv3_MkZV2pnkMtmieTX9

    • @SciHeartJourney
      @SciHeartJourney 3 года назад +1

      @@Dom-bo8wd Thanks a lot Dom!

  • @bakeronews1
    @bakeronews1 Год назад

    Best tutorial

  • @knavaneethan79
    @knavaneethan79 Год назад

    great video , thank you verry much
    😉😉😉

  • @숭어찬
    @숭어찬 2 месяца назад

    can i get master.xdc??

  • @pavelkulagin1508
    @pavelkulagin1508 Год назад

    love yr style

  • @VCodes
    @VCodes 3 года назад +1

    great. thx.

  • @nikolaykostishen6402
    @nikolaykostishen6402 Год назад

    Wow!!! Thanks!

  • @omar-moussa
    @omar-moussa 4 года назад +2

    Many thanks for your great videos.
    I got 3 errors after Launching the Runs at "Generate bit stream".
    Btw your launch box is 2 jobs mine is 4 jobs, nevertheless I redid it again like yours and still get errors, I couldn't find a solution, can you help me out here?
    1- [DRC UTLZ-1] Resource utilization: BIBUF over-utilized in Top Level Design (This design requires more BIBUF cells than are available in the target device. This design requires 260 of such cell types but only 130 compatible sites are available in the target device. Please analyze your synthesis results and constraints to ensure the design is mapped to Xilinx primitives as expected. If so, please consider targeting a larger device.)
    2- [DRC UTLZ-1] Resource utilization: PS7 over-utilized in Top Level Design (This design requires more PS7 cells than are available in the target device. This design requires 2 of such cell types but only 1 compatible site is available in the target device. Please analyze your synthesis results and constraints to ensure the design is mapped to Xilinx primitives as expected. If so, please consider targeting a larger device.)
    3- [Vivado_Tcl 4-23] Error(s) found during DRC. Placer not run.
    Many thanks for your time :-)

    • @Dom-bo8wd
      @Dom-bo8wd  4 года назад +4

      The reason mine says 2 jobs is because i am only running a dual core cpu, where you probably have quad core. From your errors it looks like you might be using a different zynq chip maybe one with only a single core arm processor? Thats possibly why the error tells you there is only one ps7 available. Or maybe you accidently tried to instantiate two copies of the zynq processor?

    • @omar-moussa
      @omar-moussa 4 года назад +4

      @@Dom-bo8wd Thanks!

  • @PhilipHubbe
    @PhilipHubbe 2 года назад

    Sorry I just can’t get over the fact that a NAND gate should be less transistors than an AND gate

  • @RatedA4Aliens
    @RatedA4Aliens 7 месяцев назад

    Bla bla bli bli bu 😅

  • @ismailpalit6980
    @ismailpalit6980 3 года назад

    Quite explanatory, thanks for that but please don't say bla bla bla :)

  • @z.3368
    @z.3368 11 месяцев назад

    PS is ASIC, it is not programmable gate array like PL part

    • @JasperHatilima
      @JasperHatilima 4 месяца назад

      Oh, really? I actually asked a question in the comments if the PS is like an application processor like Cortex A53 or so, and as such, if he used an SD card with Linux on it to run on the Cortex A Processing System.

  • @buckets_of_chai
    @buckets_of_chai 10 месяцев назад +1

    @Dom-bo8wd this walkthrough is really really excellent.

    • @Dom-bo8wd
      @Dom-bo8wd  10 месяцев назад

      Glad you like it!

  • @miteshvb1338
    @miteshvb1338 2 года назад

    Hii! Great tutorial i wanted some help in my project how can I contact you?