Вы находитесь на странице: 1из 60

CPRE 583 Reconfigurable Computing Lecture 2: 8/26/2011 (VHDL Overview 1 )

Instructor: Dr. Phillip Jones


(phjones@iastate.edu) Reconfigurable Computing Laboratory Iowa State University Ames, Iowa, USA http://class.ece.iastate.edu/cpre583/

1 - CPRE 583 (Reconfigurable Computing): VHDL overview 1

Iowa State University (Ames)

Overview
VHDL review 1
Highly recommend VHDL tutorial
120 pages with a LOT of examples
http://courseware.ee.calpoly.edu/~bmealy/shock_awe_vhdl_adobe.pdf

Quick reference
http://hapssupportnet.synplicity.com/download/VHDL-Handbook.pdf (quick ref)

Some links other VHDL tutorials


http://www.seas.upenn.edu/~ese201/vhdl/vhdl_primer.html http://www.vhdl-online.de/tutorial/

HW 1 overview

2 - CPRE 583 (Reconfigurable Computing): VHDL overview 1

Iowa State University (Ames)

VHDL basics
VHDL: (V)HSIC (H)ardware (D)escription (L)anguage VHSIC: (V)ery (H)igh (S)peed (I)ntegrated (C)ircuit It is NOT a programming language!!!

It is a Hardware Description Language (HDL)


Conceptually VERY different form C,C++

3 - CPRE 583 (Reconfigurable Computing): VHDL overview 1

Iowa State University (Ames)

Some Key Differences from C


C is inherently sequential (serial), one statement executed at a time VHDL is inherently concurrent (parallel), many statements executed at a time

4 - CPRE 583 (Reconfigurable Computing): VHDL overview 1

Iowa State University (Ames)

Some Key Differences from C


C example
Initially: A,B,C,X,Y,Z,Ans =1 A=B+C X=Y+Z Ans = A + X A <= B + C X <= Y + Z Ans <= A + X

VHDL example

Current Values: A=1 B=1 C=1 X=1 Y=1 Z=1 Ans = 1


5 - CPRE 583 (Reconfigurable Computing): VHDL overview 1

Current Values: A=1 B=1 C=1 X=1 Y=1 Z=1 Ans = 1


Iowa State University (Ames)

Some Key Differences from C


C example
Initially: A,B,C,X,Y,Z,Ans =1 A=B+C X=Y+Z Ans = A + X A <= B + C X <= Y + Z Ans <= A + X

VHDL example

Current Values: A=2 B=1 C=1 X=1 Y=1 Z=1 Ans = 1


6 - CPRE 583 (Reconfigurable Computing): VHDL overview 1

Current Values: A=1 B=1 C=1 X=1 Y=1 Z=1 Ans = 1


Iowa State University (Ames)

Some Key Differences from C


C example
Initially: A,B,C,X,Y,Z,Ans =1 A=B+C X=Y+Z Ans = A + X A <= B + C X <= Y + Z Ans <= A + X

VHDL example

Current Values: A=2 B=1 C=1 X=2 Y=1 Z=1 Ans = 1


7 - CPRE 583 (Reconfigurable Computing): VHDL overview 1

Current Values: A=1 B=1 C=1 X=1 Y=1 Z=1 Ans = 1


Iowa State University (Ames)

Some Key Differences from C


C example
Initially: A,B,C,X,Y,Z,Ans =1 A=B+C X=Y+Z Ans = A + X A <= B + C X <= Y + Z Ans <= A + X

VHDL example

Current Values: A=2 B=1 C=1 X=2 Y=1 Z=1 Ans = 4


8 - CPRE 583 (Reconfigurable Computing): VHDL overview 1

Current Values: A=1 B=1 C=1 X=1 Y=1 Z=1 Ans = 1


Iowa State University (Ames)

Some Key Differences from C


C example
Initially: A,B,C,X,Y,Z,Ans =1 A=B+C X=Y+Z Ans = A + X A <= B + C X <= Y + Z Ans <= A + X Simulates in parallel ever delta time step

VHDL example

Current Values: A=2 B=1 C=1 X=2 Y=1 Z=1 Ans = 4


9 - CPRE 583 (Reconfigurable Computing): VHDL overview 1

Current Values: A=1 B=1 C=1 X=1 Y=1 Z=1 Ans = 1


Iowa State University (Ames)

Some Key Differences from C


C example
Initially: A,B,C,X,Y,Z,Ans =1 A=B+C X=Y+Z Ans = A + X

VHDL example
Snap shot after input change A <= B + C X <= Y + Z Ans <= A + X Simulates in parallel ever delta time step

Current Values: A=2 B=1 C=1 X=2 Y=1 Z=1 Ans = 4


10 - CPRE 583 (Reconfigurable Computing): VHDL overview 1

Current Values: A=1 B=1 C=1 X=1 Y=1 Z=1 Ans = 1


Iowa State University (Ames)

Some Key Differences from C


C example
Initially: A,B,C,X,Y,Z,Ans =1 A=B+C X=Y+Z Ans = A + X A <= B + C X <= Y + Z Ans <= A + X Simulates in parallel ever delta time step

VHDL example

Current Values: A=2 B=1 C=1 X=2 Y=1 Z=1 Ans = 4


11 - CPRE 583 (Reconfigurable Computing): VHDL overview 1

Current Values: A=2 B=1 C=1 X=2 Y=1 Z=1 Ans = 2


Iowa State University (Ames)

Some Key Differences from C


C example
Initially: A,B,C,X,Y,Z,Ans =1 A=B+C X=Y+Z Ans = A + X A <= B + C X <= Y + Z Ans <= A + X Simulates in parallel ever delta time step

VHDL example

Current Values: A=2 B=1 C=1 X=2 Y=1 Z=1 Ans = 4

Different

Current Values: A=2 B=1 C=1 X=2 Y=1 Z=1 Ans = 2


Iowa State University (Ames)

12 - CPRE 583 (Reconfigurable Computing): VHDL overview 1

Some Key Differences from C


C example
Initially: A,B,C,X,Y,Z,Ans =1 A=B+C X=Y+Z Ans = A + X

VHDL example
Snap shot after input change A <= B + C X <= Y + Z Ans <= A + X Simulates in parallel ever delta time step

Current Values: A=2 B=1 C=1 X=2 Y=1 Z=1 Ans = 4


13 - CPRE 583 (Reconfigurable Computing): VHDL overview 1

Current Values: A=2 B=1 C=1 X=2 Y=1 Z=1 Ans = 2


Iowa State University (Ames)

Some Key Differences from C


C example
Initially: A,B,C,X,Y,Z,Ans =1 A=B+C X=Y+Z Ans = A + X A <= B + C X <= Y + Z Ans <= A + X Simulates in parallel ever delta time step

VHDL example

Current Values: A=2 B=1 C=1 X=2 Y=1 Z=1 Ans = 4


14 - CPRE 583 (Reconfigurable Computing): VHDL overview 1

Current Values: A=2 B=1 C=1 X=2 Y=1 Z=1 Ans = 2


Iowa State University (Ames)

Some Key Differences from C


C example
Initially: A,B,C,X,Y,Z,Ans =1 A=B+C X=Y+Z Ans = A + X A <= B + C X <= Y + Z Ans <= A + X Simulates in parallel ever delta time step

VHDL example

Current Values: A=2 B=1 C=1 X=2 Y=1 Z=1 Ans = 4


15 - CPRE 583 (Reconfigurable Computing): VHDL overview 1

Current Values: A=2 B=1 C=1 X=2 Y=1 Z=1 Ans = 4


Iowa State University (Ames)

Some Key Differences from C


C example
Initially: A,B,C,X,Y,Z,Ans =1 Ans = A + X A=B+C X=Y+Z Change order of statements Ans <= A + X A <= B + C X <= Y + Z

VHDL example

Current Values: A=1 B=1 C=1 X=1 Y=1 Z=1 Ans = 1


16 - CPRE 583 (Reconfigurable Computing): VHDL overview 1

Current Values: A=1 B=1 C=1 X=1 Y=1 Z=1 Ans = 1


Iowa State University (Ames)

Corresponding circuit
VHDL example
Initially: A,B,C,X,Y,Z,Ans =1 A <= B + C X <= Y + Z Ans <= A + X Simulates in parallel ever delta time step

17 - CPRE 583 (Reconfigurable Computing): VHDL overview 1

Iowa State University (Ames)

Corresponding circuit
VHDL example
Initially: A,B,C,X,Y,Z,Ans =1 A <= B + C X <= Y + Z Ans <= A + X Simulates in parallel ever delta time step

B(1)

C(1)
Y(1) Z(1)

+ +

A(1)

+
X(1)

Ans(1)

18 - CPRE 583 (Reconfigurable Computing): VHDL overview 1

Iowa State University (Ames)

Corresponding circuit
VHDL example
Initially: A,B,C,X,Y,Z,Ans =1 A <= B + C X <= Y + Z Ans <= A + X Simulates in parallel ever delta time step

B(1)

C(1)
Y(1) Z(1)

+ +

A(2)

+
X(2)

Ans(2)

19 - CPRE 583 (Reconfigurable Computing): VHDL overview 1

Iowa State University (Ames)

Corresponding circuit
VHDL example
Initially: A,B,C,X,Y,Z,Ans =1 A <= B + C X <= Y + Z Ans <= A + X Simulates in parallel ever delta time step

B(1)

C(1)
Y(1) Z(1)

+ +

A(2)

+
X(2)

Ans(4)

20 - CPRE 583 (Reconfigurable Computing): VHDL overview 1

Iowa State University (Ames)

Corresponding circuit (More realistic)


VHDL example
Initially: A,B,C,X,Y,Z,Ans =1 A <= B + C after 2ns X <= Y + Z after 2ns Ans <= A + X after 2ns Simulates in parallel ever delta time step

B(1)

C(1)
Y(1) Z(1)

+
2ns

A(1)

+
X(1) 2ns

Ans(1)

+
2ns

21 - CPRE 583 (Reconfigurable Computing): VHDL overview 1

Iowa State University (Ames)

Corresponding circuit (More realistic)


VHDL example
Initially: A,B,C,X,Y,Z,Ans =1 A <= B + C after 2ns X <= Y + Z after 2ns Ans <= A + X after 2ns Simulates in parallel ever delta time step

B(1)

C(1)
Y(1) Z(1)

+
2ns

A(2)

+
X(2) 2ns

Ans(2)

+
2ns

22 - CPRE 583 (Reconfigurable Computing): VHDL overview 1

Iowa State University (Ames)

Corresponding circuit (More realistic)


VHDL example
Initially: A,B,C,X,Y,Z,Ans =1 A <= B + C after 2ns X <= Y + Z after 2ns Ans <= A + X after 2ns Simulates in parallel ever delta time step

B(1)

C(1)
Y(1) Z(1)

+
2ns

A(2)

+
X(2) 2ns

Ans(4)

+
2ns

23 - CPRE 583 (Reconfigurable Computing): VHDL overview 1

Iowa State University (Ames)

Typical Structure of a VHDL File


LIBRARY ieee; ENTITY test_circuit IS PORT(B,C,Y,Z,Ans); END test_circuit; Include Libraries Define component name and Input/output ports

Declare internal ARCHITECTURE structure OF test_circuit IS signal A : std_logic_vector(7 downto 0); signals, signal X : std_logic_vector(7 downto 0); components BEGIN

A <= B + C; X <= Y + Z; Ans <= A + X;


END
24 - CPRE 583 (Reconfigurable Computing): VHDL overview 1

Implement components functionality

Iowa State University (Ames)

Process
Process provide a level serialization in VHDL (e.g. variables, clocked processes) Help separate and add structure to VHDL design

25 - CPRE 583 (Reconfigurable Computing): VHDL overview 1

Iowa State University (Ames)

Process Example
BEGIN My_process_1 : process (A,B,C,X,Y,Z) Begin Sensitivity list: specify inputs to the A <= B + C; process. Process is updated when X <= Y + Z; a specified input changes Ans <= A + X; End My_process_1; My_process_2 : process (B,X,Y,Ans1) Begin A <= B + 1; X <= B + Y; Ans2 <= Ans1 + X; End My_process_2; END;
26 - CPRE 583 (Reconfigurable Computing): VHDL overview 1

Iowa State University (Ames)

Process Example (Multiple Drivers)


BEGIN My_process_1 : process (A,B,C,X,Y,Z) Begin A <= B + C; X <= Y + Z; Ans <= A + X; End My_process_1; My_process_2 : process (B,X,Y,Ans1) Begin A <= B + 1; X <= B + Y; Ans2 <= Ans1 + X; End My_process_2; END;
27 - CPRE 583 (Reconfigurable Computing): VHDL overview 1

A signal can only be Driven (written) by one process. But can be read by many Compile or simulator may give a multiple driver Error or Warning message

Iowa State University (Ames)

Process Example (Multiple Drivers)


BEGIN My_process_1 : process (A,B,C,X,Y,Z) Begin A <= B + C; X <= Y + Z; Ans <= A + X; End My_process_1; My_process_2 : process (B,X,Y,Ans1) Begin Maybe A,X were suppose to be A1,X1. Cut A1 <= B + 1; and paste error. Or may need to rethink X1 <= B + Y; Hardware structure to remove multiple driver Ans2 <= Ans1 + X; issue. End My_process_2; END;
28 - CPRE 583 (Reconfigurable Computing): VHDL overview 1

Iowa State University (Ames)

Process Example (if-statement)


BEGIN My_process_1 : process (A,B,C,X,Y,Z) Begin if (B = 0) then C <= A + B; Z <= X + Y; Ans1 <= A + X; else C <= 1; Z <= 0; Ans1 <= 1; end if; End My_process_1; END;

29 - CPRE 583 (Reconfigurable Computing): VHDL overview 1

Iowa State University (Ames)

Clock Process Example


BEGIN My_process_1 : process (clk) Begin IF (clkevent and clk = 1) THEN C <= A or B; Z <= X or Y; Ans <= C and Z; END IF; circuit not clocked End My_process_1; A() B() X() Y() END;
30 - CPRE 583 (Reconfigurable Computing): VHDL overview 1

or

C()

and or
Z()

Ans()

Iowa State University (Ames)

Clock Process Example


BEGIN My_process_1 : process (clk) Begin IF (clkevent and clk = 1) THEN C <= A or B; Z <= X or Y; Ans <= C and Z; END IF; circuit with clock End My_process_1; A() B() X() Y() END; clk
Iowa State University (Ames)
31 - CPRE 583 (Reconfigurable Computing): VHDL overview 1

D Flip-Flop DFF Register

or

C()

and or
Z()

Ans()

Clock Process Example


BEGIN My_process_1 : process (clk) Begin IF (clkevent and clk = 1) THEN C <= A or B; Z <= X or Y; Ans <= C and Z; END IF; End My_process_1; clk END; circuit with clock A() B() X() Y()

or

C()

and or
Z()

Ans()

32 - CPRE 583 (Reconfigurable Computing): VHDL overview 1

Iowa State University (Ames)

Clock Process Example 2


BEGIN My_process_1 : process (clk) Begin IF (clkevent and clk = 1) THEN C <= A xor B; Z <= X or Y; Ans <= C xor Z; END IF; End My_process_1; clk END; circuit with clock A() B() X() Y()

xor

C()

xor or
Z()

Ans()

33 - CPRE 583 (Reconfigurable Computing): VHDL overview 1

Iowa State University (Ames)

Clock Process Example 2 (Answer)


BEGIN My_process_1 : process (clk) Begin IF (clkevent and clk = 1) THEN C <= A xor B; Z <= X or Y; Ans <= C xor Z; END IF; End My_process_1; clk END; circuit with clock A() B() X() Y()

xor

C()

xor or
Z()

Ans()

34 - CPRE 583 (Reconfigurable Computing): VHDL overview 1

Iowa State University (Ames)

VHDL Constructs
Entity Process Signal, Variable, Constants, Integers Array, Record

VHDL on-line tutorials: http://www.seas.upenn.edu/~ese201/vhdl/vhdl_primer.html http://www.vhdl-online.de/tutorial/


35 - CPRE 583 (Reconfigurable Computing): VHDL overview 1

Iowa State University (Ames)

Signals and Variables


Signals Updated at the end of a process Have file scope Variables Updated instantaneously Have process scope

36 - CPRE 583 (Reconfigurable Computing): VHDL overview 1

Iowa State University (Ames)

std_logic, std_logic_vector
Very common data types std_logic Single bit value Values: U, X, 0, 1, Z, W, H, L, Example: signal A : std_logic;
A <= 1;

Std_logic_vector: is an array of std_logic Example: signal A : std_logic_vector (4 downto 0); A <= x00Z001

37 - CPRE 583 (Reconfigurable Computing): VHDL overview 1

Iowa State University (Ames)

Std_logic values Std_logic values


U : Uninitialized (signal has not been assigned a value yet) X : Unknow (2 drivers one 0 one 1) H : weak 1 (example: model pull-up resister)
I have never used this value

L : weak 0

Time step 0
38 - CPRE 583 (Reconfigurable Computing): VHDL overview 1

Iowa State University (Ames)

Std_logic values Std_logic values


U : Uninitialized (signal has not been assigned a value yet) X : Unknow (2 drivers one 0 one 1) H : weak 1 (example: model pull-up resister)
I have never used this value

L : weak 0

Time step 0
39 - CPRE 583 (Reconfigurable Computing): VHDL overview 1

Iowa State University (Ames)

Std_logic values Std_logic values


U : Uninitialized (signal has not been assigned a value yet) X : Unknow (2 drivers one 0 one 1) H : weak 1 (example: model pull-up resister)
I have never used this value

L : weak 0

Time step 1
40 - CPRE 583 (Reconfigurable Computing): VHDL overview 1

Iowa State University (Ames)

Std_logic values Std_logic values


U : Uninitialized (signal has not been assigned a value yet) X : Unknow (2 drivers one 0 one 1) H : weak 1 (example: model pull-up resister)
I have never used this value

L : weak 0

Time step 2
41 - CPRE 583 (Reconfigurable Computing): VHDL overview 1

Iowa State University (Ames)

Std_logic values Std_logic values


U : Uninitialized (signal has not been assigned a value yet) X : Unknow (2 drivers one 0 one 1) H : weak 1 (example: model pull-up resister)
I have never used this value

L : weak 0

Time step 3
42 - CPRE 583 (Reconfigurable Computing): VHDL overview 1

Iowa State University (Ames)

Std_logic values Std_logic values


U : Uninitialized (signal has not been assigned a value yet) X : Unknow (2 drivers one 0 one 1) H : weak 1 (example: model pull-up resister)
I have never used this value

L : weak 0
0
1

Time step 3
43 - CPRE 583 (Reconfigurable Computing): VHDL overview 1

Iowa State University (Ames)

Std_logic values Std_logic values


U : Uninitialized (signal has not been assigned a value yet) X : Unknow (2 drivers one 0 one 1) H : weak 1 (example: model pull-up resister)
I have never used this value

L : weak 0
0
1

Time step 3
44 - CPRE 583 (Reconfigurable Computing): VHDL overview 1

1
Iowa State University (Ames)

Std_logic values Std_logic values


U : Uninitialized (signal has not been assigned a value yet) X : Unknow (2 drivers one 0 one 1) H : weak 1 (example: model pull-up resister)
I have never used this value

L : weak 0
0
0

Time step 3
45 - CPRE 583 (Reconfigurable Computing): VHDL overview 1

1
Iowa State University (Ames)

Std_logic values Std_logic values


U : Uninitialized (signal has not been assigned a value yet) X : Unknow (2 drivers one 0 one 1) H : weak 1 (example: model pull-up resister)
I have never used this value

L : weak 0
1 Pull-up resistor

Time step 0
46 - CPRE 583 (Reconfigurable Computing): VHDL overview 1

Iowa State University (Ames)

Std_logic values Std_logic values


U : Uninitialized (signal has not been assigned a value yet) X : Unknow (2 drivers one 0 one 1) H : weak 1 (example: model pull-up resister)
I have never used this value

L : weak 0
1 Pull-up resistor

Time step 0
47 - CPRE 583 (Reconfigurable Computing): VHDL overview 1

Iowa State University (Ames)

Std_logic values Std_logic values


U : Uninitialized (signal has not been assigned a value yet) X : Unknow (2 drivers one 0 one 1) H : weak 1 (example: model pull-up resister)
I have never used this value

L : weak 0
1 Pull-up resistor

Time step 1
48 - CPRE 583 (Reconfigurable Computing): VHDL overview 1

Iowa State University (Ames)

Std_logic values Std_logic values


U : Uninitialized (signal has not been assigned a value yet) X : Unknow (2 drivers one 0 one 1) H : weak 1 (example: model pull-up resister)
I have never used this value

L : weak 0
1 Pull-up resistor

Resolution(H,0) = 0
0 1

Time step 2
49 - CPRE 583 (Reconfigurable Computing): VHDL overview 1

Iowa State University (Ames)

Pre-defined VHDL attributes


mysignalevent (mysignal changed value) mysignalhigh (highest value of mysignals type) mysignallow Many other attributes
http://www.cs.umbc.edu/help/VHDL/summary.html

50 - CPRE 583 (Reconfigurable Computing): VHDL overview 1

Iowa State University (Ames)

Singal vs Varible scope


Signal: global to file Variable: local to process
My_process_1 : process (B,C,Y) Begin A <= B + C; Z <= Y + C; End My_process_1; My_process_2 : process (B,X,Y,Ans1) Begin X <= Z + 1; Ans <= B + Y; End My_process_2;

51 - CPRE 583 (Reconfigurable Computing): VHDL overview 1

Iowa State University (Ames)

Singal vs Varible scope


Signal: global to file Variable: local to process
My_process_1 : process (B,C,Y) Begin A <= B + C; varZ <= Y + C; End My_process_1; My_process_2 : process (B,X,Y,Ans1) Begin X <= varZ + 1; Ans <= B + Y; End My_process_2;

Each varZ are local to their process. Completely independent

52 - CPRE 583 (Reconfigurable Computing): VHDL overview 1

Iowa State University (Ames)

Arrays and Records


Arrays: Group signals of the same type together Records: Group signal of different types together

VHDL on-line tutorials: http://www.seas.upenn.edu/~ese201/vhdl/vhdl_primer.html http://www.vhdl-online.de/tutorial/


53 - CPRE 583 (Reconfigurable Computing): VHDL overview 1

Iowa State University (Ames)

Array Example (Delay Shift Register)


flag_in flag_1 flag_2 flag_3 flag_out

BEGIN My_process_1 : process (clk) Begin IF (clkevent and clk = 1) THEN flag_1 <= flag_in; flag_2 <= flag_1; flag_3 <= flag_2; END IF; End My_process_1; flag_out <= flag_3 END;

54 - CPRE 583 (Reconfigurable Computing): VHDL overview 1

Iowa State University (Ames)

Array Example (Delay Shift Register)


flag_in flag_1 flag_20 flag_out

BEGIN My_process_1 : process (clk) Begin IF (clkevent and clk = 1) THEN flag_1 <= flag_in; flag_2 <= flag_1; flag_20 <= flag_19; END IF; End My_process_1; flag_out <= flag_20 END;

55 - CPRE 583 (Reconfigurable Computing): VHDL overview 1

Iowa State University (Ames)

Array Example (Delay Shift Register)


flag_in flag_1 flag_20 flag_out

type flag_reg_array is array (DELAY-1 downto 0) of std_logic; signal flag_reg : flag_reg_array; BEGIN My_process_1 : process (clk) Begin IF (clkevent and clk = 1) THEN flag_reg(flag_reg'high downto 0) <= flag_reg(flag_reg'high-1 downto 0) & flag_in; END IF; End My_process_1; flag_out <= flag_reg(flag_reg'high); END;

56 - CPRE 583 (Reconfigurable Computing): VHDL overview 1

Iowa State University (Ames)

Array Example (Delay Shift Register)


flag_reg(flag_reg'high downto 0)<= flag_reg(flag_reg'high-1 downto 0) & flag_in; flag_in flag(0) 0 0 flag(1) 1 flag(2) flag_out

flag_in 1 0

flag(0) 0

flag(1) 1

flag(2) flag_out

flag_in 1

flag(0) 0

flag(1) 0

flag(2) flag_out

57 - CPRE 583 (Reconfigurable Computing): VHDL overview 1

Iowa State University (Ames)

Detailed in class design next Friday

58 - CPRE 583 (Reconfigurable Computing): VHDL overview 1

Iowa State University (Ames)

HW1

59 - CPRE 583 (Reconfigurable Computing): VHDL overview 1

Iowa State University (Ames)

Questions/Comments/Concerns

60 - CPRE 583 (Reconfigurable Computing): VHDL overview 1

Iowa State University (Ames)

Вам также может понравиться