{"id":34,"date":"2012-04-28T09:59:14","date_gmt":"2012-04-28T13:59:14","guid":{"rendered":"https:\/\/coefs.charlotte.edu\/amukherj\/?page_id=34"},"modified":"2026-03-11T13:53:46","modified_gmt":"2026-03-11T17:53:46","slug":"ecgr-4146ecgr5146-hardware-acceleration-using-fpgas","status":"publish","type":"page","link":"https:\/\/coefs.charlotte.edu\/amukherj\/teaching\/ecgr-4146ecgr5146-hardware-acceleration-using-fpgas\/","title":{"rendered":"ECGR 4146\/ECGR5146 Hardware Acceleration using FPGAs"},"content":{"rendered":"\n<h1 class=\"wp-block-heading\"><span style=\"color: #993300;\"><strong><span style=\"font-size: medium;\">Advanced System Design using HDLs&nbsp;<\/span><\/strong><\/span><\/h1>\n\n\n\n<h1 class=\"wp-block-heading\"><strong><span style=\"font-size: small;\">Catalog Listing &#8220;Introduction to VHDL&#8221;(ECGR 4146\/5146&nbsp;)<\/span><\/strong><\/h1>\n\n\n\n<h1 class=\"wp-block-heading\"><strong><span style=\"font-size: small;\">Spring 2011<\/span><\/strong><\/h1>\n\n\n\n<h2 class=\"wp-block-heading\">\u00a0\u00a0<img decoding=\"async\" src=\"https:\/\/coefs.charlotte.edu\/amukherj\/files\/2012\/03\/cascade.jpg\" alt=\"waterfall\" style=\"\"><\/h2>\n\n\n\n<h2 class=\"wp-block-heading\"><strong><span style=\"font-size: small;\">A Design Flow is similar to a Cascading Waterfall<\/span><\/strong><\/h2>\n\n\n\n<h2 class=\"wp-block-heading\"><span style=\"font-size: small;\"><span style=\"color: #993300;\"><strong>Lecture Timings<\/strong><em> <\/em><\/span><span style=\"color: #000000;\">12:30pm &#8211; 1:45pm Tuesday, Thursday&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Room: Woodward 140<\/span><\/span><\/h2>\n\n\n\n<h2 class=\"wp-block-heading\"><span style=\"font-size: small;\">TA for class : None<\/span><\/h2>\n\n\n\n<h2 class=\"wp-block-heading\"><span style=\"font-size: small;\">TA office : None<\/span><\/h2>\n\n\n\n<h2 class=\"wp-block-heading\"><span style=\"font-size: small;\">TA office hours : None<\/span><\/h2>\n\n\n\n<h2 class=\"wp-block-heading\"><span style=\"font-size: small;\">Instructor office hours : Tuesdays, Thursdays 11:30pm &#8211; 12:30 pm @ Woodward 235B<\/span><\/h2>\n\n\n\n<h2 class=\"wp-block-heading\"><span style=\"font-size: small;\"><span style=\"color: #993300;\"><strong>Instructor<\/strong><\/span> <span style=\"color: #000000;\"><strong>Dr. Arindam Mukherjee<\/strong><\/span><\/span><\/h2>\n\n\n\n<h2 class=\"wp-block-heading\"><span style=\"color: #993300;\"><strong><span style=\"font-size: small;\">Course Description<\/span><\/strong><\/span><\/h2>\n\n\n\n<p><span style=\"font-size: small;\">This course is designed for junior\/senior undergraduate students with a background in digital logic design and VHDL. The class meets twice a week with alternating lectures and laboratories. The lectures and laboratory sessions seeks to impart students the ability for FPGA based reconfigurable hardware implementation of computationally intensive algorithms from diverse areas such as bioinformatics, scientific computing and image processing. No background knowledge of these topics is required. Students are required to complete a design project involving implementation of a real world computational application on FPGAs. CAD tools including Xilinx ISE design flow and Modelsim are used extensively throughout the course.<\/span><\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span style=\"color: #993300;\"><strong><span style=\"font-size: small;\">Course Objectives<\/span><\/strong><\/span><\/h2>\n\n\n\n<h2 class=\"wp-block-heading\"><span style=\"font-size: small;\">Ability to describe digital logic in VHDL.<\/span><\/h2>\n\n\n\n<h2 class=\"wp-block-heading\"><span style=\"font-size: small;\">Familiarity with FPGA design flow including interfacing issues.<\/span><\/h2>\n\n\n\n<h2 class=\"wp-block-heading\"><span style=\"font-size: small;\">Exposure to computing algorithms from diverse application areas.<\/span><\/h2>\n\n\n\n<h2 class=\"wp-block-heading\"><span style=\"font-size: small;\">Ability to map computationally intensive algorithms to FPGAs.<\/span><\/h2>\n\n\n\n<h2 class=\"wp-block-heading\"><span style=\"font-size: small;\">Successful project execution and presentation of results working in a team.<\/span><\/h2>\n\n\n\n<h2 class=\"wp-block-heading\"><span style=\"color: #993300;\"><strong><span style=\"font-size: small;\">Prerequisites<\/span><\/strong><\/span><\/h2>\n\n\n\n<h2 class=\"wp-block-heading\"><span style=\"font-size: small;\">&nbsp;ECGR 3181 Advanced Digital Logic Systems.<\/span><\/h2>\n\n\n\n<h2 class=\"wp-block-heading\"><span style=\"font-size: small;\"><span style=\"color: #993300;\"><strong>Textbook&nbsp;&nbsp;<\/strong><\/span>&nbsp;&nbsp;&nbsp;<\/span><\/h2>\n\n\n\n<p><span style=\"font-size: small;\">&nbsp;Peter J. Ashenden, THE DESIGNER&#8217;S GUIDE TO VHDL, Third Edition, Elsevier Publishers, 2008.<\/span><br>\n<span style=\"font-size: small;\"><span style=\"color: #993300;\"><strong>Grading<\/strong><\/span><strong><\/strong><\/span><br>\n<span style=\"font-size: small;\">Midterm ? 20%, Class Projects &#8211; 20%, Final ? 30%, Final Project and Presentation ? 30%<\/span><br>\n<span style=\"color: #993300; font-size: small;\"><strong>Course Topics (Subject to change)<\/strong><strong><\/strong><\/span> <\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><span style=\"font-size: small;\">Review ofFiniteStateMachines<\/span><\/li>\n\n\n\n<li><span style=\"font-size: small;\">Overview of VHDL ? Structure and Syntax<\/span><\/li>\n\n\n\n<li><span style=\"font-size: small;\">Overview of VHDL ? Modeling<\/span><\/li>\n\n\n\n<li><span style=\"font-size: small;\">Overview of VHDL &#8211; Synthesis<\/span><\/li>\n\n\n\n<li><span style=\"font-size: small;\">FPGA Design Flow<\/span><\/li>\n\n\n\n<li><span style=\"font-size: small;\">Interfacing FPGA based hardware accelerators to computers<\/span><\/li>\n\n\n\n<li><span style=\"font-size: small;\">Design Case Studies<\/span><\/li>\n\n\n\n<li><span style=\"font-size: small;\">Projects<\/span><\/li>\n<\/ol>\n\n\n\n<p><span style=\"font-size: small;\">&nbsp;<\/span><br>\n<span style=\"color: #993300; font-size: small;\"><strong>Lecture Notes<\/strong><\/span><br>\n<span style=\"font-size: small;\">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;<a href=\"https:\/\/coefs.charlotte.edu\/amukherj\/files\/2012\/04\/Basic-VHDL-Constructs1.ppt\">Basic VHDL Constructs<\/a> <\/span><br>\n<span style=\"font-size: small;\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <a href=\"http:\/\/coe.uncc.edu\/~amukherj\/INTRO2VHDL\/VHDLexamples\">VHDL examples<\/a><\/span><br>\n<span style=\"font-size: small;\"><a href=\"https:\/\/coefs.charlotte.edu\/amukherj\/files\/2012\/04\/Resolution_Function.ppt\">Resolved Signals<\/a><\/span><br>\n<span style=\"font-size: small;\"><a href=\"https:\/\/coefs.charlotte.edu\/amukherj\/files\/2012\/04\/L08-Pipelining.pdf\">Pipelining<\/a><\/span><br>\n<span style=\"font-size: small;\"><a href=\"https:\/\/coefs.charlotte.edu\/amukherj\/files\/2012\/04\/Parallel_Designs.pptx\">Parallel Designs<\/a><\/span><br>\n<span style=\"font-size: small;\">Previous <a href=\"https:\/\/coefs.charlotte.edu\/amukherj\/files\/2012\/04\/Convolution.ppt\">Class Project: Convolution<\/a><\/span><br>\n<span style=\"font-size: small;\">Previous <a href=\"https:\/\/coefs.charlotte.edu\/amukherj\/files\/2012\/04\/LU_Decomposition.ppt\">Final Project: LU Decomposition of a Matrix<\/a><\/span><br>\n<span style=\"font-size: small;\">Previous <a href=\"https:\/\/coefs.charlotte.edu\/amukherj\/files\/2012\/04\/Needleman_Wunsch.ppt\">Final Project: Needleman Wunsch Algorithm for Sequence Alignment in Bioinformatic<\/a><\/span><br>\n<span style=\"font-size: small;\"><a href=\"https:\/\/coefs.charlotte.edu\/amukherj\/files\/2012\/04\/l11_12_fpgas.pdf\">Notes on FPGAs<\/a><\/span><br>\n<span style=\"font-size: small;\">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <\/span><br>\n<span style=\"font-size: small;\">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; Previous <strong><a href=\"https:\/\/coefs.charlotte.edu\/amukherj\/files\/2012\/04\/ECGR_4146_PreTest_v2.doc\">Pre\/Post Test<\/a><\/strong><\/span><br>\n<span style=\"font-size: small;\">&nbsp;<\/span><br>\n<span style=\"color: #993300; font-size: small;\"><strong>Instructions on using ModelSim<\/strong><\/span><br>\n<span style=\"font-size: small;\"><strong>source \/afs\/uncc.edu\/coe\/unix\/opt\/mgc\/cshrc.en2002 vsim<\/strong><\/span><br>\n<span style=\"font-size: small;\"><strong>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <a href=\"https:\/\/coefs.charlotte.edu\/amukherj\/files\/2012\/04\/ISE_Tutorial.pdf\">Xilinx ISE Tutorial<\/a><\/strong><\/span> &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;<br>\n<a href=\"http:\/\/www.xilinx.com\/products\/virtex5\/index.htm\">Xilinx Virtex-5 FPGAs<\/a><br>\n<span style=\"font-size: small;\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style=\"color: #993300;\"><strong>Assignments<\/strong><\/span><\/span><br>\n<span style=\"font-size: small;\">1.Example FIFO: <a href=\"https:\/\/coefs.charlotte.edu\/amukherj\/files\/2012\/04\/fifo_ctl.vhd\">fifo controller<\/a>,<a href=\"https:\/\/coefs.charlotte.edu\/amukherj\/files\/2012\/04\/fifo_top.vhd\"> fifo<\/a>, <a href=\"https:\/\/coefs.charlotte.edu\/amukherj\/files\/2012\/04\/tb_fifo.vhd\">testbench<\/a><\/span><br>\n<span style=\"font-size: small;\"><strong>Modify the above FIFO to handle network data packets, where each packet has 4 32-bit words : <\/strong><\/span><br>\n<strong><\/strong><br>\n<span style=\"font-size: small;\"><strong>Fall 2008 Midterm Solution&nbsp;&nbsp;&nbsp; <a href=\"http:\/\/coe.uncc.edu\/~amukherj\/INTRO2VHDL\/2_BCD_counter\">BCD Counter<\/a>&nbsp;&nbsp;&nbsp; <a href=\"http:\/\/coe.uncc.edu\/~amukherj\/INTRO2VHDL\/fsm\">FSM<\/a>&nbsp;&nbsp;&nbsp; <a href=\"http:\/\/coe.uncc.edu\/~amukherj\/INTRO2VHDL\/propagation_deley\">Delay<\/a><\/strong><\/span><br>\n<span style=\"font-size: small;\"><strong>Mini-Project Solution&nbsp;&nbsp;&nbsp; <a href=\"https:\/\/coefs.charlotte.edu\/amukherj\/files\/2012\/04\/convolution_adder.vhd\">1<\/a>&nbsp;&nbsp;&nbsp; <a href=\"https:\/\/coefs.charlotte.edu\/amukherj\/files\/2012\/04\/convolution_pe.vhd\">2<\/a>&nbsp; &nbsp; <a href=\"https:\/\/coefs.charlotte.edu\/amukherj\/files\/2012\/04\/convolution_pe_array.vhd\">3<\/a>&nbsp;&nbsp;&nbsp; <a href=\"https:\/\/coefs.charlotte.edu\/amukherj\/files\/2012\/04\/sys_pkg.vhd\">4<\/a>&nbsp;&nbsp;&nbsp; <a href=\"https:\/\/coefs.charlotte.edu\/amukherj\/files\/2012\/04\/tb_convolution.vhd\">5<\/a>&nbsp;&nbsp;&nbsp; <a href=\"https:\/\/coefs.charlotte.edu\/amukherj\/files\/2012\/04\/wave.bmp\">6<\/a><\/strong><\/span><br>\n<strong><\/strong><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Advanced System Design using HDLs&nbsp; Catalog Listing &#8220;Introduction to VHDL&#8221;(ECGR 4146\/5146&nbsp;) Spring 2011 \u00a0\u00a0 A Design Flow is similar to a Cascading Waterfall Lecture Timings 12:30pm &#8211; 1:45pm Tuesday, Thursday&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Room: Woodward 140 TA for class : None TA office &hellip; <a href=\"https:\/\/coefs.charlotte.edu\/amukherj\/teaching\/ecgr-4146ecgr5146-hardware-acceleration-using-fpgas\/\">Continue reading <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":168,"featured_media":0,"parent":15,"menu_order":3,"comment_status":"closed","ping_status":"open","template":"","meta":{"footnotes":""},"class_list":["post-34","page","type-page","status-publish","hentry"],"jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/coefs.charlotte.edu\/amukherj\/wp-json\/wp\/v2\/pages\/34","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/coefs.charlotte.edu\/amukherj\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/coefs.charlotte.edu\/amukherj\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/coefs.charlotte.edu\/amukherj\/wp-json\/wp\/v2\/users\/168"}],"replies":[{"embeddable":true,"href":"https:\/\/coefs.charlotte.edu\/amukherj\/wp-json\/wp\/v2\/comments?post=34"}],"version-history":[{"count":5,"href":"https:\/\/coefs.charlotte.edu\/amukherj\/wp-json\/wp\/v2\/pages\/34\/revisions"}],"predecessor-version":[{"id":713,"href":"https:\/\/coefs.charlotte.edu\/amukherj\/wp-json\/wp\/v2\/pages\/34\/revisions\/713"}],"up":[{"embeddable":true,"href":"https:\/\/coefs.charlotte.edu\/amukherj\/wp-json\/wp\/v2\/pages\/15"}],"wp:attachment":[{"href":"https:\/\/coefs.charlotte.edu\/amukherj\/wp-json\/wp\/v2\/media?parent=34"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}