{"id":29,"date":"2021-10-13T14:47:47","date_gmt":"2021-10-13T14:47:47","guid":{"rendered":"https:\/\/engprojects.tcnj.edu\/3d-fpga\/?p=29"},"modified":"2022-03-30T13:29:00","modified_gmt":"2022-03-30T13:29:00","slug":"frame-buffer","status":"publish","type":"post","link":"https:\/\/engprojects.tcnj.edu\/3d-fpga\/2021\/10\/13\/frame-buffer\/","title":{"rendered":"Frame Buffer"},"content":{"rendered":"\n<p>Implementing a frame buffer allows the display engine to output pixels as defined in memory. Using dual-port RAM, we can read and write at the same time.<\/p>\n\n\n\n<p>Using a function to convert an x,y pixel address to a memory address, the display engine can directly retrieve pixel data with the frame buffer. The function for this is as follows:<\/p>\n\n\n\n<p>MemoryAddress = Hcount + 800 * Vcount<\/p>\n\n\n\n<p>Where Hcount and Vcount both start at 0 and increment until they reset. Loading the frame buffer with default data allows us to display a test pattern.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"623\" src=\"https:\/\/engprojects.tcnj.edu\/3d-fpga\/wp-content\/uploads\/sites\/192\/2021\/10\/IMG_0029-1024x623.jpg\" alt=\"\" class=\"wp-image-30\" srcset=\"https:\/\/engprojects.tcnj.edu\/3d-fpga\/wp-content\/uploads\/sites\/192\/2021\/10\/IMG_0029-1024x623.jpg 1024w, https:\/\/engprojects.tcnj.edu\/3d-fpga\/wp-content\/uploads\/sites\/192\/2021\/10\/IMG_0029-300x183.jpg 300w, https:\/\/engprojects.tcnj.edu\/3d-fpga\/wp-content\/uploads\/sites\/192\/2021\/10\/IMG_0029-768x467.jpg 768w, https:\/\/engprojects.tcnj.edu\/3d-fpga\/wp-content\/uploads\/sites\/192\/2021\/10\/IMG_0029.jpg 1241w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n","protected":false},"excerpt":{"rendered":"<p>Implementing a frame buffer allows the display engine to output pixels as defined in memory. Using dual-port RAM, we can read and write at the same time. Using a function to convert an x,y pixel address to a memory address, the display engine can directly retrieve pixel data with the frame buffer. The function for &hellip; <a href=\"https:\/\/engprojects.tcnj.edu\/3d-fpga\/2021\/10\/13\/frame-buffer\/\" class=\"more-link\">Continue reading <span class=\"screen-reader-text\">Frame Buffer<\/span> <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":373,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"ngg_post_thumbnail":0,"footnotes":""},"categories":[4],"tags":[],"class_list":["post-29","post","type-post","status-publish","format-standard","hentry","category-projectupdates"],"_links":{"self":[{"href":"https:\/\/engprojects.tcnj.edu\/3d-fpga\/wp-json\/wp\/v2\/posts\/29","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/engprojects.tcnj.edu\/3d-fpga\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/engprojects.tcnj.edu\/3d-fpga\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/engprojects.tcnj.edu\/3d-fpga\/wp-json\/wp\/v2\/users\/373"}],"replies":[{"embeddable":true,"href":"https:\/\/engprojects.tcnj.edu\/3d-fpga\/wp-json\/wp\/v2\/comments?post=29"}],"version-history":[{"count":0,"href":"https:\/\/engprojects.tcnj.edu\/3d-fpga\/wp-json\/wp\/v2\/posts\/29\/revisions"}],"wp:attachment":[{"href":"https:\/\/engprojects.tcnj.edu\/3d-fpga\/wp-json\/wp\/v2\/media?parent=29"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/engprojects.tcnj.edu\/3d-fpga\/wp-json\/wp\/v2\/categories?post=29"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/engprojects.tcnj.edu\/3d-fpga\/wp-json\/wp\/v2\/tags?post=29"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}