The best way to start learning Verilog

Поделиться
HTML-код
  • Опубликовано: 23 июл 2024
  • My new channel dedicated to FPGAs: www.youtube.com/@visualfpga-g...
    There aren't that many fundamental concepts in Verilog Hardware Description Language, but the few there are, we need to know WELL. This video explores some of these fundamental concepts. We look at Combinational Versus Sequential logic and explore the 3 modelling styles in Verilog; Gate Level, Dataflow and Behavioral.
  • НаукаНаука

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

  • @ctbram0627
    @ctbram0627 Год назад +4

    Very goog. Short sweet and to the point! Your explanation of blocking and non-blocking was especially good. Coming from a programming background I get wrapped around that axel constantly.

  • @audiodiwhy2195
    @audiodiwhy2195 Год назад +35

    Outstanding! I am a Verilog newbie and was bewildered by the different Verilog programming paradigms until I watched this. Thank you.

  • @andrewphillip8432
    @andrewphillip8432 3 года назад +17

    Wow what a great video! Thanks for taking the time to put this together!

  • @kandredfpv
    @kandredfpv Год назад +5

    Awesome tutorial! I was able to follow with ease as a complete Verilog newbie. Thanks! 👍

  • @julio4094
    @julio4094 Год назад +2

    I took digital Circuits 1 and barely survives, this tutorial helped me understand what I didn't in my class. Thank you!

  • @huynhbaoduy6057
    @huynhbaoduy6057 8 месяцев назад +1

    Prominent instruction. Thank you !

  • @ksbs2829
    @ksbs2829 Год назад +54

    At 4:02 I don't understand why the data flow is out1 = ((~X&A)&A)|(B&X); isn't the second &A redundant? I would think assign out1 = (~X&A)|(X&B); ? I haven't tried it in a tool so don't know if there is another reason to construct the statement this way. Great Video. Thanks.

    • @nikoskandyliotis8854
      @nikoskandyliotis8854 Год назад +10

      i would actually comment the same thing? are we thinking of sth wrong?

    • @riperboyxl3216
      @riperboyxl3216 Год назад +11

      it's wrong, you're correct on your solution

    • @LorenMLang
      @LorenMLang Год назад +13

      I had to come to the comments for the very same question.

    • @ichigonixsun
      @ichigonixsun 11 месяцев назад +2

      I was going to ask the exact same question before I saw your comment.

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

      Same here, had me sitting up thinking why on earth they would write it like that! Okay now back to the video 😂

  • @Kaamanita
    @Kaamanita Месяц назад

    Thank you so much and kudos to you for making this marvelous video!

  • @233kosta
    @233kosta 9 месяцев назад +2

    My first FPGA kit will be here in a few days... can't wait to get stuck in!

  • @e630fnr
    @e630fnr 5 месяцев назад +1

    Blocking or non-blocking assignments can give you either combinational or sequential logic depending on the sensitivity list of the always block these assignments are included in.

  • @GayathriG-j7h
    @GayathriG-j7h 28 дней назад

    Wow wow wow! , I am a total beginner to verilog and this video helped so much for my lab exam due in a few days. Thank you!

  • @OmarWaelAhmed
    @OmarWaelAhmed 7 месяцев назад +2

    00:01 Verilog coding involves three different layers of abstraction and understanding the difference between combinational and sequential logic is important.
    01:59 Modeling in Verilog at the gate level involves instantiating each logic gate independently and connecting them together using wires.
    03:46 Behavioral level Verilog code describes circuit behavior at a high abstraction level.
    05:40 Multiplexer can be implemented in different ways: gate level, data flow level, and behavioral level.
    07:31 Utilize D-type flip-flops for sequential logic
    09:14 Blocking and non-blocking assignments have different evaluation and assignment processes.
    11:03 Understanding the difference between blocking and non-blocking assignments in Verilog
    12:54 Use blocking assignments for combinational logic and non-blocking assignments for sequential logic.

  • @shantanufatale7968
    @shantanufatale7968 Год назад +1

    Really good informational video

  • @ksbs2829
    @ksbs2829 Год назад +1

    Very well done. Thanks

  • @lujeanguieb7271
    @lujeanguieb7271 4 месяца назад +2

    Cried in class because I couldn't understand this topic. Thank you for the simple explanation

  • @arifnishan5646
    @arifnishan5646 Год назад +1

    just outstanding

  • @neilclay5835
    @neilclay5835 8 месяцев назад +1

    Excellent explanation

  • @Vishalkumar-ez5xy
    @Vishalkumar-ez5xy Год назад

    thank you for this video

  • @sulphuric99
    @sulphuric99 9 месяцев назад

    Great video overall, other than the multiplexor code at 4:02 which could be simplified. Good explanation of non-blocking vs. blocking assignments.

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

    good job

  • @kashaarjun595
    @kashaarjun595 Год назад +47

    Can anyone confirm to me that the statement assign out1 = ((~X & A)&A)|(B & X) should be assign out1 = (~X & A)| ( B&X)

    • @johnpatrickmoore5505
      @johnpatrickmoore5505 Год назад +8

      They're equivalent but yeah it should

    • @Ma_X64
      @Ma_X64 Год назад +4

      You can remove left internal parentheses without any effect. Then you can see that A & A is always equals A. So your two expressions are the same. There definitely is a rule of the formal logic that describes this kind of cases but I'm to lazy to take the book from the shelf.)

    • @MrMineHeads.
      @MrMineHeads. Год назад +7

      A&A simplifies to A anyway so they are equivalent

    • @lukealadeen7836
      @lukealadeen7836 10 месяцев назад +2

      ​@@MrMineHeads.yea but why would you write it like that. Why not just have the simplified expression

    • @Shagrat_52
      @Shagrat_52 9 месяцев назад

      ​@@lukealadeen7836is this design always simplified? is it impossible to write so as to make a small delay?

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

    08:13 starting an important explanation of non-blocking vs blocking assignments.

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

    the behavioural level is a bit like reactive programming which is something I'm familiar with as a web developer

  • @AK-vx4dy
    @AK-vx4dy 5 месяцев назад +2

    @3:56 Why (~X&A)&A) instead of ~X&A ?

  • @ayeflippum
    @ayeflippum 8 месяцев назад +5

    *Visual Electric* 3:20 Why are there 2 ampersands: ((~X&A)&A)?

    • @cchsiang2002
      @cchsiang2002 5 месяцев назад

      I have the same question. (~X & A) | (B & X) should serve the purpose well.

    • @jfbeam
      @jfbeam 11 дней назад

      It's a trick! Were you paying attention? Is your compiler a piece of s...? (it emit a warning "statement has no effect". at best it'll optimize it out.)

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

    Can you please help us to have the Verilog code for the ifft and fft to implement in FPGA

  • @sajanjeka677
    @sajanjeka677 5 месяцев назад +2

    @3:54 Why do you &A twice ? shouldn't it just be (~X&A)|(X&B) ?

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

    great

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

    Thank u

  • @geevnahal7926
    @geevnahal7926 2 года назад +2

    Would you please make a series of videos teaching DSP using this setup?

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

    What FPGA kit do you use ?

  • @riperboyxl3216
    @riperboyxl3216 Год назад +3

    3:30 ain't an error in that assign?

  • @rahi10
    @rahi10 10 месяцев назад +2

    How do codes written at these different level of abstractions convert to synthesis in ASIC Design?
    Say I write, assign wire = (a&b) | (c&d) ;
    I can come up with 3 possible ways to synthesize this:
    1) 2 AND, 1 OR gate ( 18 Transistors )
    2) 3 NAND gates ( 12 Transistors )
    3) AND-OR22 module ( 10 Transistors )
    Which one does the code synthesize in this case and how does it make that decision?

    • @cryora
      @cryora 10 месяцев назад

      I'd assume number 1, because that is the literal interpretation of the boolean expression. Unless the synthesizer has a way to automatically simplify boolean expressions into simpler circuits.

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

      hi what is the third option? could you please explain it?

  • @marwanal-yoonus280
    @marwanal-yoonus280 Год назад

    Dear Sir
    Thank you very much for this helpful video
    Please, I try to write the following Verilog code in Vivado, the synthesis process is OK but when I want to implement it an error signal appear !!
    module Tog_not (hsync, EOL, q);
    input hsync, EOL;
    output reg q;
    always @ (posedge hsync)
    begin
    q

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

      Could be bc you’re driving the same output for two different processes. In VHDL I think this is equivalent to a “multiple drivers” error and I think that means the output can’t be determined correctly. If you think about it at the Logical Level, it may be clearer.

  • @zulyadein4837
    @zulyadein4837 11 месяцев назад

    Is it term of bolean algebra...?...why the symbol different...

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

    Is the example of dataflow level correct here? At around 3:40 , isn't it supposed to be: assign out1 = ( (~X&A) | (X&B) ); #newbie here, dont understand why the 1st AND gate is written as (~X&A)&A

  • @ladolahiral5007
    @ladolahiral5007 5 месяцев назад

    Which tool you using ?

  • @ayanacharya9747
    @ayanacharya9747 2 месяца назад

    What software are you using?

  • @temporary9508
    @temporary9508 22 дня назад

    Is Gate level design same a Structural design in Verilog ?

  • @tombouie
    @tombouie Год назад +1

    Thks &;
    I'm new to FPGAs & will try to watch your whole playlist.
    Oh a question, I would like to program FPGAs via smartphone & I hope to use the smartphone as the human interface to the FPGA. ??Can you point me in the right direction to get started??

    • @VisualElectric_
      @VisualElectric_  11 месяцев назад

      Hi, thanks! I'm not aware of any development tool or existing project which does this. Programming the FPGA is not a simple task so it will be a big challenge!

    • @tombouie
      @tombouie 11 месяцев назад

      @@VisualElectric_ Thks, a few more newbie questions though;
      I been researching FPGAs (how they work in theory) & collecting the material to come up to speed. Now I need to choice my 1st FPGA to learn-on.
      1. Given the initial comment, ??Which FPGA would you recommend to try implementing all these crux FPGA theories (ex: LUTs, Boolean Algebra, SOP/POS tables, etc) I've learnt so I can minimize frustration, profanity, throwing-things, etc ;)??
      2. ??What are some good groups/resources/etc to learn FPGAs with others knowledgeable people?? (I've found slim-to-none except a few good but old books, RUclips playlists, etc ;)
      3. ??Why pray-tell ain't FPGAs more popular?? (ex: programable FPGA hardware, parallel FPGA processing, etc runs circles around CPUs hands-down)
      Thks again

  • @emanon2315
    @emanon2315 Месяц назад

    I don't have any background in this subject, but I want to know why, at the data flow level, he used `((~X & A) & A) | (X & B)` and not `(~X & A) | (X & B)`.

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

    👍👍👍..,

  • @Reanplayzz
    @Reanplayzz Год назад +2

    I think you made a mistake here at 9:36.
    "Blocking" means, that the assignments are blocking, i.e. they run sequentially (one waits for the prior to finish). "Non-blocking" means, that the assignments do NOT block, i.e. they run in parallel and are evalutaed immediately.

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

    Great video, awesome teaching style. Thanks a bunch! What resources are you recommending as follows-ups?

  • @cchsiang2002
    @cchsiang2002 5 месяцев назад +1

    Why the firs example is not (~X & A) | (B & X) instead of ((~X & A) & A) | (B & X)? Why do we need the extra "& A"?

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

    You dropped the science down so smooth on this video man
    Much respect 🫡

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

    good job