CPRE 583 Common VHDL mistakes - PowerPoint PPT Presentation

About This Presentation
Title:

CPRE 583 Common VHDL mistakes

Description:

CPRE 583 Common VHDL mistakes It works perfect in simulation, but not in the hardware! Instructor: Dr. Phillip Jones (phjones_at_iastate.edu) Reconfigurable ... – PowerPoint PPT presentation

Number of Views:74
Avg rating:3.0/5.0
Slides: 7
Provided by: Phill155
Category:

less

Transcript and Presenter's Notes

Title: CPRE 583 Common VHDL mistakes


1
CPRE 583Common VHDL mistakesIt works perfect
in simulation, but not in the hardware!
Instructor Dr. Phillip Jones (phjones_at_iastate.edu
) Reconfigurable Computing Laboratory Iowa
State University Ames, Iowa, USA
http//class.ee.iastate.edu/cpre583/
2
Overview
  • Clocked vs. non-clocked process
  • State machine structure
  • Common VHDL mistakes

3
Clocked vs. non-clock processes
Clocked process (clock is ONLY in the sensitivity
list)
Non-clocked process (clock is NOT in the
sensitivity list)
process (clk) begin -- check for rising edge
of the clk if(clkevent and clk 1) then
-- initialize all driven signals during reset
if(reset 1) then a_out lt
x00 data_out lt x00 else if
(sel 1) then a_out lt a
data_out lt my_data end if end if
end if end process
process (sel, a, my_data) begin -- default all
driven signals a_out lt x00
data_out lt x00 if (sel 1) then
a_out lt a data_out lt my_data end
if end process
4
State Machine Structure
-- Compute next state process (STATE, x) begin
-- defaults next_state lt STATE case
STATE is when S1 gt if(x 0) then
Next_STATE lt S1 else
Next_STATE lt S2 end if when S2 gt
Next_State lt S1 end if end process
-- Assign STATE to next state process
(clk) begin -- check for rising edge of the
clk if(clkevent and clk 1) then --
initialize all driven signals during reset
if(reset 1) then STATE lt S1
else STATE lt Next_STATE end if
end if end process
No memory!!!!
Has memory (e.g. flip-flops)
5
Manage Registers/Counters
-- Manage Registers/Counters process (clk) begin
if(clkevent and clk 1) then --
initialize all driven signals during reset
if(reset 1) then store_x_reg lt
x00 counter_1 lt x00 else
-- update registers and counters
if(update_reg) then store_x_reg lt
new_val end if if(update_count)
then counter_1 lt new_count end
if end if end if end process
These are memory elements (e.g. flip-flops)
6
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)
Write a Comment
User Comments (0)
About PowerShow.com