CPRE 583 Reconfigurable Computing Instructor: Dr. Phillip Jones Lecture 7: 9/15/2010 (Common VHDL Mistakes: “It works perfect in simulation, but not in the hardware!” ) Instructor: Dr. Phillip Jones (phjones@iastate.edu) Reconfigurable Computing Laboratory Iowa State University Ames, Iowa, USA http://class.ece.iastate.edu/cpre583/
Announcements/Reminders MP1/HW1 Due midnight tonight MP2: Make sure to get started by Thursday (tomorrow HW2: Delayed Thur/Fri release, due date will be appropriated adjusted. Mini literary survey PowerPoint tree due: Fri 9/17 by class, so try to have to me by 9/16 night. My current plan is to summarize some of the classes findings during class. Final 5-10 page write up on your tree due: Fri 9/24 midnight.
Literary Survey Start with searching for papers from 2007-2010 on IEEE Xplorer: http://ieeexplore.ieee.org/ Advanced Search (Full Text & Meta data) Find popular cross references for each area For each area try to identify 1 good survey papers For each area Identify 2-3 core Problems/issues For each problem identify 2-3 Approaches for addressing For each approach identify 1-2 papers that Implement the approach.
Literary Survey: Example Structure Hardware Accelerated Bioinformatics P1 P2 P3 A1 A2 A3 A1 A2 A1 A2 I1 I1 I2 I1 I1 I1 I1 I2 I1 5-10 page write up on your survey tree
Common Questions
Common Questions
Overview Common VHDL mistakes What you should learn What are the ~6 common mistakes How to identify these mistakes How to fix these mistakes
My design works in simulation, but not in hardware!! Clocked and non-clock processes common issues. Clean Statemachine design, using best know practices Common Mistakes pdf document
Clocked vs. non-clock processes Non-clocked process (clock is NOT in the sensitivity list) Clocked process (clock is ONLY in the sensitivity list) process (clk) begin -- check for rising edge of the clk if(clk’event and clk = ‘1’) then -- initialize all driven signals during reset if(reset = ‘1’) then a_out <= x”00”; data_out <= x”00”; else if (sel = ‘1’) then a_out <= a; data_out <= my_data; end if; end process; process (sel, a, my_data) begin -- default all driven signals a_out <= x”00”; data_out <= x”00”; if (sel = ‘1’) then a_out <= a; data_out <= my_data; end if; end process;
State Machine Structure -- Assign STATE to next state process (clk) begin -- check for rising edge of the clk if(clk’event and clk = ‘1’) then -- initialize all driven signals during reset if(reset = ‘1’) then STATE <= S1; else STATE <= Next_STATE; end if; end process; -- Compute next state process (STATE, x) begin -- defaults next_state <= STATE; case STATE is when S1 => if(x = ‘0’) then Next_STATE <= S1; else Next_STATE <= S2; end if; when S2 => Next_State <= S1; end process; No memory!!!! Has memory (e.g. flip-flops)
Manage Registers/Counters process (clk) begin if(clk’event and clk = ‘1’) then -- initialize all driven signals during reset if(reset = ‘1’) then store_x_reg <= x”00”; counter_1 <= x“00”; else -- update registers and counters if(update_reg) then store_x_reg <= new_val; end if; if(update_count) then counter_1 <= new_count; end process; These are memory elements (e.g. flip-flops)
Good papers on state machine design FSM “good practices” paper (Note: inVerilog) http://www.sunburst-design.com/papers/ The Fundamentals of Efficient Synthesizable Finite State Machine (2002) Synthesizable Finite State Machine Design Techniques (2003)
Common Mistakes in more detail See Common VHDL mistakes pdf on course web
Common Mistakes in more detail
Common Mistakes in more detail
Common Mistakes in more detail
Common Mistakes in more detail
Common Mistakes in more detail
Common Mistakes in more detail
Common Mistakes in more detail
Common Mistakes in more detail
Common Mistakes in more detail
Common Mistakes in more detail
Common Mistakes in more detail
Common Mistakes in more detail
Common Mistakes in more detail
Common Mistakes in more detail Correct Example of a counter
Common Mistakes in more detail
MP2 overview
MP2 overview
MP2 overview
MP2 overview
MP2 overview
Next Class VHDL -> FPGA, or Short History of Reconfigurable computing
Questions/Comments/Concerns