this post was submitted on 29 Sep 2023
143 points (97.4% liked)

Ask Lemmy

26968 readers
761 users here now

A Fediverse community for open-ended, thought provoking questions

Please don't post about US Politics. If you need to do this, try [email protected]


Rules: (interactive)


1) Be nice and; have funDoxxing, trolling, sealioning, racism, and toxicity are not welcomed in AskLemmy. Remember what your mother said: if you can't say something nice, don't say anything at all. In addition, the site-wide Lemmy.world terms of service also apply here. Please familiarize yourself with them


2) All posts must end with a '?'This is sort of like Jeopardy. Please phrase all post titles in the form of a proper question ending with ?


3) No spamPlease do not flood the community with nonsense. Actual suspected spammers will be banned on site. No astroturfing.


4) NSFW is okay, within reasonJust remember to tag posts with either a content warning or a [NSFW] tag. Overtly sexual posts are not allowed, please direct them to either [email protected] or [email protected]. NSFW comments should be restricted to posts tagged [NSFW].


5) This is not a support community.
It is not a place for 'how do I?', type questions. If you have any questions regarding the site itself or would like to report a community, please direct them to Lemmy.world Support or email [email protected]. For other questions check our partnered communities list, or use the search function.


Reminder: The terms of service apply here too.

Partnered Communities:

Tech Support

No Stupid Questions

You Should Know

Reddit

Jokes

Ask Ouija


Logo design credit goes to: tubbadu


founded 1 year ago
MODERATORS
 

Loosely inspired by how much people seemed to enjoy a similar question I asked on Games about unappreciated titles. But answers don't have to be media related (they still can be though).

you are viewing a single comment's thread
view the rest of the comments
[–] [email protected] 13 points 1 year ago

The "print hello world" equivalent of FPGAs is to make an LED blink. That teaches you how to use an FPGA's clock, divide it down to a frequency the human eye can actually see, and route it out to a pin (the LED on your board). Then you can experiment with your catalog of digital circuit building blocks using buttons, switches, LEDs, and 7-segment displays. You can make your own custom logic of ANDs and ORs to display different logic.

Some super beginner projects I found fun back in college:

  • Create a counter, and increment the counter every time you press a button. That's the easy part. Then display the value on a 4-digit 7-segment display. It's harder than it sounds, because you have to learn about time multiplexing! (At any one instance in time, only one digit is on, and the other three are off. Human persistence of vision makes us believe all 4 digits are being shown at once, but in reality, the system cycles through each digit, flashing one on for a few milliseconds, then turning it off and moving to the next one. Implementing this takes effort!)

  • Learning Finite State Machines and then implementing your own is fun. I made a "vending machine" state machine once, where different buttons corresponded to inserting different coins, and then once a certain amount of money was put in, you could select which beverage you wanted, the machine would "vend" (an LED would flash), and then change is administered. Another fun and classic FSM is the pattern detector, where you input a series of 1s and 0s, and the machine will blink an LED if it detects a certain pattern in the sequence, say, 11010. This one is a lot harder than it sounds, because it requires a lot of thinking of the different edge cases! If I input 111, for example, the system shouldn't be like, "well he inputted 111 but I was expecting 110..., so I'm gonna start over", because I could input "111111010" and the pattern is there, just at the end. This one teaches you how to draw state diagrams and Mealy/Moore machines!

  • Then you can get into using peripherals, like RGB LEDs, gyroscopes, graphics on a screen, ethernet connections, etc. You just need to learn the protocols and follow the correct logic in your own logic. It's a lot of copy and pasting at first, but if you put in the effort to understand what you're copying, you'll pick up on it fast.

Really, the world's your oyster, all you need is a development kit and a program that will synthesize/place&route your Verilog or VHDL.

And if you'd like to start at the very, very beginning, HDLBits is an amazing resource to learn Verilog: https://hdlbits.01xz.net/wiki/Main_Page

Let me know if I can ever be of any assistance :)