An Introduction To FPGA and CPLD

This course is meant to create a pathway into learning about FPGA and CPLD electronics, for people who are scared of the code, tools and general trickery that usually comes with it. A hands-on approach is taken in this course through a combination of lecture and experimentation to teach you about the different features of both the development tools and languages used in the world of FPGA. Additionally, visuals are used throughout lectures like step-by-step schematic building and line-by-line code explanations so that everything gets explained.

  1. Lesson 1: The Intro

    Lesson 1: The Intro

    Want to learn about FPGA and CPLD? Please start here! This lesson explains the course content, what expectations you should have and what parts are needed for the course.

    • Lesson 2: Hardware Hello World

      Lesson 2: Hardware Hello World

      Building a ‘hello world’ application signifies a time honored approach to learning how to program. In this lesson, we will explore the first steps necessary for building and loading images onto a CPLD.

      • Lesson 3: Input and Output

        Lesson 3: Input and Output

        All FPGA and CPLD devices have general purpose input and output pins, often called GPIO. Here we will take a look at how to build a CPLD image and hardware to accept push-button input in order to affect output LEDs.

        • Lesson 4: Combinatorial Logic

          Lesson 4: Combinatorial Logic

          In the Introduction to Digital Electronics course, we explored AND, OR, NOT, NOR and other logic gates. Now we’ll harness the power of programmed logic to dynamically create and use these gates in a CPLD.

          • Lesson 5: Procedural Logic

            Lesson 5: Procedural Logic

            FPGA and CPLD devices offer a separate type of logic which happens in series. This is called procedural logic and it uses a clock source to drive the logic contained within the procedure.

            • Lesson 6: Design A Binary Timer

              Lesson 6: Design A Binary Timer

              We built a binary counter using all hardware components in the Digital Course, but now let’s build a binary counter by programming it using VHDL code.

              • Lesson 7: Parallel Hardware

                Lesson 7: Parallel Hardware

                A powerful tool of CPLD and FPGA design is being able to create multiple modules that perform operations in parallel. Let’s explore how this is done and why it is so awesome.

                • Lesson 8: LED Dimming Via PWM

                  Lesson 8: LED Dimming Via PWM

                  We have used PWM in many other courses before, but creating PWM in an FPGA or CPLD requires a different way of thinking. Let’s make our own PWM output module to change the brightness of some LEDs.

                  • Lesson 9: Design A Handheld POV

                    Lesson 9: Design A Handheld POV

                    A very fascinating effect called persistence of vision can easily be created by repeatedly telling a single row of LEDs to output a message. Let’s build a POV with a secret message!

                    • Lesson 10: VHDL vs Verilog vs Schematic

                      Lesson 10: VHDL vs Verilog vs Schematic

                      There are many ways to create a CPLD or FPGA image. The most common methods are with VHDL, Verilog or schematic capture. In this lesson we’ll explore and compare all three.


                      Generally, electronics is a difficult subject mathematically, however theoretically it's actually not as bad if you take a hands-on approach and create vivid imagery to demonstrate what is going on. Using this approach, virtually anyone with a basic math background and a desire to know more about electronics can get started. So the following prerequisites are necessary for this course:



                      This Introduction To FPGA and CPLD course will be split up into 10 lessons with the lecture video for each lesson hosted on youtube. The lectures will be to 8-12 minutes in length so that you have enough time to see the information and can go over it twice to perform any of the experiments while following along with the video. Each lecture will contain 4 main sections: an introduction, theoretical explanation, experiment(s) and real world example(s). In addition, each lesson video will be hosted at PyroEDU with downloadable offline information and material like homework, schematics, formulas and parts information.

                      Course Content

                      1. Introduction (Live!)
                      2. Hardware Hello World (Live!)
                      3. Input and Output (Live!)
                      4. Combinatorial Logic (Live!)
                      5. Procedural Logic (Live!)
                      6. Design a Binary Counter (Live!)
                      7. Parallel Hardware (Live!)
                      8. LED Dimming via PWM (Live!)
                      9. Design a Handheld POV (Live!)
                      10. VHDL vs Verilog vs Schematic (Live!)


                      This course is meant to take you, the learner, from a blank slate to a more informed individual by teaching about electronics in a hands-on way, as the lecture videos will emphasize and guide you with experimentation. You should expect to learn the basics for designing and implementing FPGA and CPLD designs using Altera development tools. Beyond that, you should also expect to get experiencing building digital hardware and controlling it using FPGA code.

                      Additional information

                      This course and its additional material is located at:


                      From there you can access all of the lectures (as we do them) and download homework, schematics, formulas and extra parts information.

                      Teacher qualifications

                      Hello! Aside from building many electronics tutorials and projects, and posting their full hardware schematics and source code on PyroElectro.com, I studied computer and electrical engineering at university and have Bachelor's + Master's degrees in the subject. My work is typically more slanted to digital hardware, however the basics are the same no matter if you're an analog designer or a digital designer.

                      Latest Update
                      Sensors Course - How To Sense Sound Lesson (2015-06-04 21:38:11)

                      "Hello Students!

                      Time to use some sound sensors in our new PyroEDU Introduction to Sensors course. This is a lesson about interfacing with sound sensors, here's a quick overview of this lesson:

                      We all hear and use sound in our daily lives, so we must also learn how to detect sound electronically. In this lesson we will use an electret microphone to convert sound from an acoustic wave, into an electrical signal.

                      Lesson 6 Link: http://www.pyroelectro.com/edu/sensors/sound/

                      Chris @ PyroElectro.com"

                      1. khichi
                      2. Blueduck577
                      3. connollyed
                      4. reckoner133
                      5. xsaardo
                      6. Ohey
                      7. Asumi
                      8. Rabid_Monkey
                      9. blizzard1108
                      10. Bombalur
                      11. slothsd
                      12. GradualYeti
                      13. keepitsimplejim
                      14. LyTeo
                      15. mngiggle
                      16. Peroviendo
                      17. WaHooCrazy7
                      18. Trajan.mp
                      19. Shmuma
                      20. playmobot
                      21. MoserLabs
                      22. 9dof
                      23. gvigelet
                      24. shigidono
                      25. leahcimmirror
                      26. Stoobiedoo
                      27. coldkeyboard
                      28. oxullo
                      29. rohit7gupta
                      30. Bravo786
                      31. javallone
                      32. M0les
                      33. craig139
                      34. mrb0y
                      35. birojow
                      36. AntonH
                      37. blixem
                      38. gatorfan93
                      39. wardwouts
                      40. vitello
                      41. Loota
                      42. wkuace
                      43. geearem
                      44. sfabris
                      45. fhrh
                      46. Kemp
                      47. megadans
                      48. SoundsOKToMe
                      49. elitegoodguy
                      50. mtenten
                      51. Evotistical
                      52. m477i3win2
                      53. ceyung
                      54. redraz
                      55. RichardP
                      56. bibin57110
                      57. puneethkumar23
                      58. EasyP
                      59. lumenx
                      60. bucklittle
                      61. ReffectsLRG
                      62. hexdream
                      63. dramaturg
                      64. wrill
                      65. shashank_nuthakki
                      66. nxxsr
                      67. sodaburger
                      68. roshkovanv
                      69. Kamis
                      70. bg4g
                      71. morcillazo
                      72. chuckclj
                      73. javiernoval
                      74. grimmn
                      75. TheZombie
                      76. rezz
                      77. furyon
                      78. thephotograph
                      79. intro_VERT13
                      80. dbansal5078
                      81. mnmx
                      82. learn.me
                      83. raghav
                      84. icedragon13
                      85. L2BSmart
                      86. ElectronicByte
                      87. crichm03
                      88. RicoSpartan
                      89. wvpeet
                      90. Anayansi-Iris
                      91. tesla47
                      92. mkunkel138
                      93. vilts
                      94. falconteep
                      95. buguoruci
                      96. s_jmp
                      97. abstraktions
                      98. Rob_Haggis
                      99. SEL_Work_Account
                      100. RyanDT
                      101. morganfabian
                      102. hendrix
                      103. uredditboris
                      104. lasersandstuff
                      105. JoanneR
                      106. smaroo
                      107. Kschutz
                      108. gokul
                      109. kingosraigi
                      110. Theguybehindthescreen
                      111. aurojyoti
                      112. fauxhemian5
                      113. Usagi
                      114. chiwakii
                      115. asingh21
                      116. Arunkrishnan
                      117. geezusfreak
                      118. gitsebas
                      119. yasirzreddit
                      120. davidesp
                      121. spectrum
                      122. kdlynch12
                      123. demirtas91
                      124. Heistanbul
                      125. ahmadmzak
                      126. Vexed
                      127. 20sat92
                      128. aboutdabusiness
                      129. smsshah
                      130. skysi.jacky
                      131. hooray4alex
                      132. snarficus
                      133. ni11256
                      134. evanrlew
                      135. JHulsinger
                      136. Farhad_H_Reza
                      137. zombiechef_urdinner
                      138. blpst
                      139. auburnrising
                      140. sheikhshadi
                      141. atabac
                      142. prasgane
                      143. yujyet
                      144. brownix001
                      145. monicaleba
                      146. garakthesimpletailor
                      147. srpsco
                      148. saipranav.c
                      149. jaedyn
                      150. fabio09
                      151. burubaxair
                      152. xhyperamp
                      153. jordangold123
                      154. seanknight
                      155. kemalay
                      156. Rezid
                      157. abhishek
                      158. costisor
                      159. StB
                      160. dman2
                      161. capthook
                      162. rggmcn
                      163. messi
                      164. darethedweeb
                      165. Danze55
                      166. inmesia
                      167. Gesteiger
                      168. gmontague0205
                      169. albertcode
                      170. jyenzer
                      171. brunocastro
                      172. SpecialGray
                      173. Hebert002
                      174. Jung1e
                      175. infinit3knowledg3
                      176. pwerix
                      177. ArduinoAficionado
                      178. onuraltan
                      179. samnnodim
                      180. jasna
                      181. fghlj4359t0
                      182. hamstripe
                      183. tubamouse
                      184. Alicia
                      185. max_power992
                      186. BigGuyFU
                      187. Serg_Red
                      188. nooshaw
                      189. tvalerio
                      190. jediejr
                      191. nukeduke
                      192. tubos9000
                      193. skippotter
                      194. burkepowers
                      195. thebringrofdeath
                      196. jrhiggin
                      197. theflyingbrant
                      198. jlramirez43
                      199. raideraid
                      200. neoezekiel
                      201. okyan0
                      202. akhil_dev
                      203. gottdammer
                      204. woojay
                      205. zephyrean
                      206. kallelay
                      207. PolymathMark
                      208. p3t3r.tnie
                      209. Saydine
                      210. Hatif
                      211. apocrypha13142
                      212. chim20air
                      213. Justin_Obsurver
                      214. aditya20
                      215. 0x7270-3001
                      216. HeeyBob
                      217. ceater259
                      218. rohit_dralion
                      219. pooriayousefi
                      220. adamdaboss
                      221. hbaghar
                      222. sandra95051
                      223. hkjairam
                      224. euphorialive
                      225. AwedSentinel
                      226. sodainmycereal
                      227. IniyanD2
                      228. abirkand
                      229. Nathanmyers123
                      230. 0xTJ
                      231. morad6
                      232. TBLIXXXY
                      233. leflyi
                      234. nastrus
                      235. mikiozen
                      236. Ajay1397
                      237. Gowthamraj_ravi
                      238. Anj2017
                      239. anki1997137
                      240. Pascaller
                      241. shannonT16
                      242. MAHIPAL_KULADIYA
                      243. 0xdante
                      244. gh0s7
                      245. chaitanya2k6er
                      246. mryitch
                      247. shastrivj
                      248. SAndy19595
                      249. GunsoSniper
                      250. dhershkowitz
                      251. mironoprea
                      252. stefannes
                      253. alizerin
                      254. badsmash4