{"id":12456,"date":"2016-02-18T16:35:59","date_gmt":"2016-02-19T00:35:59","guid":{"rendered":"https:\/\/blog.digilentinc.com\/?p=12456"},"modified":"2021-06-16T14:24:14","modified_gmt":"2021-06-16T21:24:14","slug":"getting-started-with-fpga-rprew","status":"publish","type":"post","link":"https:\/\/digilent.com\/blog\/getting-started-with-fpga-rprew\/","title":{"rendered":"Getting Started With FPGAs"},"content":{"rendered":"<p>Welcome back to the Digilent Blog! If you\u2019re new to Digilent, our community, or even FPGAs or coding in general then you\u2019re in for a treat. I have recently started getting back into FPGAs and relearning how to program them. If you\u2019re a long time user to FPGAs coding one can come more naturally. The learning process can be difficult for some people while easier for other. Here I hope to compile a list of resources that I found useful when learning how to program an FPGA.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"size-medium wp-image-2741\" src=\"https:\/\/digilent.com\/blog\/wp-content\/uploads\/2014\/09\/Basys3-new-board-600x317.jpg\" alt=\"The newest member of the Basys family!\" width=\"600\" height=\"317\" srcset=\"https:\/\/digilent.com\/blog\/wp-content\/uploads\/2014\/09\/Basys3-new-board-600x317.jpg 600w, https:\/\/digilent.com\/blog\/wp-content\/uploads\/2014\/09\/Basys3-new-board-1024x541.jpg 1024w, https:\/\/digilent.com\/blog\/wp-content\/uploads\/2014\/09\/Basys3-new-board-225x119.jpg 225w, https:\/\/digilent.com\/blog\/wp-content\/uploads\/2014\/09\/Basys3-new-board.jpg 1463w\" sizes=\"auto, (max-width: 600px) 100vw, 600px\" \/><\/p>\n<p>&nbsp;<\/p>\n<p>One of the first things a good friend recommended is look up a cheat sheet for the language you are coding in. This was helpful because it outlined all the important basics that someone would need to know. You can even look at an <a href=\"http:\/\/hamsterworks.co.nz\/mediawiki\/index.php\/FPGA:A_quick_tour_of_a_few_boards\" target=\"_blank\" rel=\"noopener\">FPGA cheat sheet<\/a> to get a better understanding of the components of the device.<\/p>\n<figure id=\"attachment_12463\" aria-describedby=\"caption-attachment-12463\" style=\"width: 510px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-12463\" src=\"https:\/\/digilent.com\/blog\/wp-content\/uploads\/2016\/02\/verilog.png\" alt=\"Piece of Verilog code\" width=\"510\" height=\"458\" \/><figcaption id=\"caption-attachment-12463\" class=\"wp-caption-text\">Piece of Verilog code.<\/figcaption><\/figure>\n<p>The next thing I found helpful is reading. I&#8217;m more of a tactile learner myself so it was helpful for me to get a hard copy of a book or print out some PDFs. I found a book that simplifies Verilog and sums up a lot of key parts. It\u2019s a massive help when getting started with Verilog. &#8220;Verilog By Example&#8221; by Blaine C. Readler is a good book to take a look at. The author also has a VHDL version of the book, which may also be helpful.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-11540\" src=\"https:\/\/digilent.com\/blog\/wp-content\/uploads\/2015\/12\/Learn-banner-2-600x93.jpg\" alt=\"Learn banner 2\" width=\"600\" height=\"93\" srcset=\"https:\/\/digilent.com\/blog\/wp-content\/uploads\/2015\/12\/Learn-banner-2-600x93.jpg 600w, https:\/\/digilent.com\/blog\/wp-content\/uploads\/2015\/12\/Learn-banner-2.jpg 1024w\" sizes=\"auto, (max-width: 600px) 100vw, 600px\" \/><\/p>\n<p>Once you kind of have a slight grasp on the language you want, it would be beneficial to do some simple projects to see how it works exactly. Digilent conveniently has a great <a href=\"https:\/\/learn.blog.digilentinc.com\/list?category=Digital\">learning site<\/a>. At the learning site there are simple projects for you to try out to become more comfortable with programming your FPGA. One of the first ones I would suggest to try is <a href=\"https:\/\/learn.blog.digilentinc.com\/Documents\/239\">blinking an LED<\/a>.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-6781\" src=\"https:\/\/digilent.com\/blog\/wp-content\/uploads\/2015\/05\/Screen-Shot-2015-05-05-at-1.39.31-PM-600x323.png\" alt=\"Forum Update Screenshot\" width=\"600\" height=\"323\" srcset=\"https:\/\/digilent.com\/blog\/wp-content\/uploads\/2015\/05\/Screen-Shot-2015-05-05-at-1.39.31-PM-600x323.png 600w, https:\/\/digilent.com\/blog\/wp-content\/uploads\/2015\/05\/Screen-Shot-2015-05-05-at-1.39.31-PM-1024x552.png 1024w, https:\/\/digilent.com\/blog\/wp-content\/uploads\/2015\/05\/Screen-Shot-2015-05-05-at-1.39.31-PM-225x121.png 225w, https:\/\/digilent.com\/blog\/wp-content\/uploads\/2015\/05\/Screen-Shot-2015-05-05-at-1.39.31-PM-800x431.png 800w, https:\/\/digilent.com\/blog\/wp-content\/uploads\/2015\/05\/Screen-Shot-2015-05-05-at-1.39.31-PM.png 1385w\" sizes=\"auto, (max-width: 600px) 100vw, 600px\" \/><\/p>\n<p>It has been apparent that the main source of help that I have found is through the internet. I also have a great set of colleagues that I can ask for help or explain how something would work. If you\u2019re thinking that you don\u2019t have an easily accessible network of peers to discuss your issues with then you may be mistake as there are tons of websites that have forums for you to pose questions to or even just read old problems so you know how to avoid them. Digilent also has their own <a href=\"https:\/\/forum.digilent.com\/\">forum<\/a> with a team to answer those questions.<\/p>\n<figure id=\"attachment_12464\" aria-describedby=\"caption-attachment-12464\" style=\"width: 600px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-12464 size-medium\" src=\"https:\/\/digilent.com\/blog\/wp-content\/uploads\/2016\/02\/img-160205130355-2-page-001-e1455732038780-600x464.jpg\" alt=\"img-160205130355 (2)-page-001\" width=\"600\" height=\"464\" srcset=\"https:\/\/digilent.com\/blog\/wp-content\/uploads\/2016\/02\/img-160205130355-2-page-001-e1455732038780-600x464.jpg 600w, https:\/\/digilent.com\/blog\/wp-content\/uploads\/2016\/02\/img-160205130355-2-page-001-e1455732038780-768x593.jpg 768w, https:\/\/digilent.com\/blog\/wp-content\/uploads\/2016\/02\/img-160205130355-2-page-001-e1455732038780-1024x791.jpg 1024w, https:\/\/digilent.com\/blog\/wp-content\/uploads\/2016\/02\/img-160205130355-2-page-001-e1455732038780-800x618.jpg 800w, https:\/\/digilent.com\/blog\/wp-content\/uploads\/2016\/02\/img-160205130355-2-page-001-e1455732038780.jpg 1650w\" sizes=\"auto, (max-width: 600px) 100vw, 600px\" \/><figcaption id=\"caption-attachment-12464\" class=\"wp-caption-text\">A datapath for a GCD calculator<\/figcaption><\/figure>\n<p>When you go to code a project my final words of advice are to draw it out. Draw out your data path. Draw out your Finite State Machine. I find this immensely helpful. It will allow me to trace through my diagrams and see where my data is going or where my machine will be in the state machine. If you aren\u2019t a visual learner I would still recommend this because it can clear up your thoughts so that everything is clearer.<\/p>\n<figure id=\"attachment_12094\" aria-describedby=\"caption-attachment-12094\" style=\"width: 600px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"size-medium wp-image-12094\" src=\"https:\/\/digilent.com\/blog\/wp-content\/uploads\/2016\/01\/StepperMotor_fullstep_statediagran_path-600x452.png\" alt=\"State diagram with the path in green dotted lines. The path is described below. \" width=\"600\" height=\"452\" srcset=\"https:\/\/digilent.com\/blog\/wp-content\/uploads\/2016\/01\/StepperMotor_fullstep_statediagran_path-600x452.png 600w, https:\/\/digilent.com\/blog\/wp-content\/uploads\/2016\/01\/StepperMotor_fullstep_statediagran_path.png 618w\" sizes=\"auto, (max-width: 600px) 100vw, 600px\" \/><figcaption id=\"caption-attachment-12094\" class=\"wp-caption-text\">State diagram with the path in green dotted lines. The path is described below.<\/figcaption><\/figure>\n<p>There are a bunch of resources out there for everyone. If you feel like learning a new language is really daunting or overwelming there&#8217;s a lot of people out there that are willing to help. As an old cartoon character used to say &#8220;Take chances. Make mistakes. Get Messy!&#8221; ~ Ms Frizzle (The Magic School Bus). The best way to learn is to try for yourself and experience what you you&#8217;re learning. I take that to heart.<\/p>\n<p>I hope this post provided some insight to learning FPGAs and their coding languages. Don&#8217;t be afraid to ask questions or make mistakes. It&#8217;s the only way you&#8217;re going to learn. Anyway, have a great day everyone and enjoy your learning experience.<\/p>\n<div class='watch-action'><div class='watch-position align-left'><div class='action-like'><a class='lbg-style6 like-12456 jlk' data-task='like' data-post_id='12456' data-nonce='5286a1c13f' rel='nofollow'><img src='https:\/\/digilent.com\/blog\/wp-content\/plugins\/wti-like-post-pro\/images\/pixel.gif' title='Like' \/><span class='lc-12456 lc'>+1<\/span><\/a><\/div><div class='action-unlike'><a class='unlbg-style6 unlike-12456 jlk' data-task='unlike' data-post_id='12456' data-nonce='5286a1c13f' rel='nofollow'><img src='https:\/\/digilent.com\/blog\/wp-content\/plugins\/wti-like-post-pro\/images\/pixel.gif' title='Unlike' \/><span class='unlc-12456 unlc'>0<\/span><\/a><\/div><\/div> <div class='status-12456 status align-left'><\/div><\/div><div class='wti-clear'><\/div>","protected":false},"excerpt":{"rendered":"<p>Welcome back to the Digilent Blog! If you\u2019re new to Digilent, our community, or even FPGAs or coding in general then you\u2019re in for a treat. I have recently started &hellip; <\/p>\n","protected":false},"author":35,"featured_media":12093,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[35,1563],"tags":[1662],"ppma_author":[4488],"class_list":["post-12456","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-fpga","category-guide","tag-fpga"],"jetpack_featured_media_url":"https:\/\/digilent.com\/blog\/wp-content\/uploads\/2016\/01\/StepperMotor_fullstep_statediagran.png","jetpack_sharing_enabled":true,"authors":[{"term_id":4488,"user_id":35,"is_guest":0,"slug":"rp-prew","display_name":"Robert Prew","avatar_url":"https:\/\/secure.gravatar.com\/avatar\/9b230ab7f67c22e5b9f8800d6ddee5f75d4797eeb0130a12b53d2fb0644a5bb4?s=96&d=mm&r=g","1":"","2":"","3":"","4":"","5":"","6":"","7":"","8":"","9":"","10":""}],"post_mailing_queue_ids":[],"_links":{"self":[{"href":"https:\/\/digilent.com\/blog\/wp-json\/wp\/v2\/posts\/12456","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/digilent.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/digilent.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/digilent.com\/blog\/wp-json\/wp\/v2\/users\/35"}],"replies":[{"embeddable":true,"href":"https:\/\/digilent.com\/blog\/wp-json\/wp\/v2\/comments?post=12456"}],"version-history":[{"count":0,"href":"https:\/\/digilent.com\/blog\/wp-json\/wp\/v2\/posts\/12456\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/digilent.com\/blog\/wp-json\/wp\/v2\/media\/12093"}],"wp:attachment":[{"href":"https:\/\/digilent.com\/blog\/wp-json\/wp\/v2\/media?parent=12456"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/digilent.com\/blog\/wp-json\/wp\/v2\/categories?post=12456"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/digilent.com\/blog\/wp-json\/wp\/v2\/tags?post=12456"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/digilent.com\/blog\/wp-json\/wp\/v2\/ppma_author?post=12456"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}