Top Banner
ECE 545 – Introduction to VHDL George Mason University Mixed Style RTL Modeling ECE 545 Lecture 6
47

George Mason University ECE 545 – Introduction to VHDL Mixed Style RTL Modeling ECE 545 Lecture 6.

Jan 05, 2016

Download

Documents

Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: George Mason University ECE 545 – Introduction to VHDL Mixed Style RTL Modeling ECE 545 Lecture 6.

ECE 545 – Introduction to VHDL George Mason University

Mixed Style RTL Modeling

ECE 545Lecture 6

Page 2: George Mason University ECE 545 – Introduction to VHDL Mixed Style RTL Modeling ECE 545 Lecture 6.

ECE 545 – Introduction to VHDL 2

Structural Modeling:

Generate Statements

Examples

Page 3: George Mason University ECE 545 – Introduction to VHDL Mixed Style RTL Modeling ECE 545 Lecture 6.

ECE 545 – Introduction to VHDL 3

w 8

w 11

s 1

w 0

s 0

w 3

w 4

w 7

w 12

w 15

s 3

s 2

f

Example 1

Page 4: George Mason University ECE 545 – Introduction to VHDL Mixed Style RTL Modeling ECE 545 Lecture 6.

ECE 545 – Introduction to VHDL 4

A 4-to-1 Multiplexer

LIBRARY ieee ;USE ieee.std_logic_1164.all ;

ENTITY mux4to1 ISPORT ( w0, w1, w2, w3 : IN STD_LOGIC ;

s : IN STD_LOGIC_VECTOR(1 DOWNTO 0) ;f : OUT STD_LOGIC ) ;

END mux4to1 ;

ARCHITECTURE Dataflow OF mux4to1 ISBEGIN

WITH s SELECTf <= w0 WHEN "00",

w1 WHEN "01", w2 WHEN "10", w3 WHEN OTHERS ;

END Dataflow ;

Page 5: George Mason University ECE 545 – Introduction to VHDL Mixed Style RTL Modeling ECE 545 Lecture 6.

ECE 545 – Introduction to VHDL 5

Straightforward code for Example 1

LIBRARY ieee ;

USE ieee.std_logic_1164.all ;

ENTITY Example1 IS

PORT ( w : IN STD_LOGIC_VECTOR(0 TO 15) ;

s : IN STD_LOGIC_VECTOR(3 DOWNTO 0) ;

f : OUT STD_LOGIC ) ;

END Example1 ;

Page 6: George Mason University ECE 545 – Introduction to VHDL Mixed Style RTL Modeling ECE 545 Lecture 6.

ECE 545 – Introduction to VHDL 6

Straightforward code for Example 1

ARCHITECTURE Structure OF Example1 IS

COMPONENT mux4to1PORT ( w0, w1, w2, w3 : IN STD_LOGIC ;

s : IN STD_LOGIC_VECTOR(1 DOWNTO 0) ;

f : OUT STD_LOGIC ) ;END COMPONENT ;

SIGNAL m : STD_LOGIC_VECTOR(0 TO 3) ;

BEGIN

Mux1: mux4to1 PORT MAP ( w(0), w(1), w(2), w(3), s(1 DOWNTO 0), m(0) ) ;

Mux2: mux4to1 PORT MAP ( w(4), w(5), w(6), w(7), s(1 DOWNTO 0), m(1) ) ;

Mux3: mux4to1 PORT MAP ( w(8), w(9), w(10), w(11), s(1 DOWNTO 0), m(2) ) ;

Mux4: mux4to1 PORT MAP ( w(12), w(13), w(14), w(15), s(1 DOWNTO 0), m(3) ) ;

Mux5: mux4to1 PORT MAP ( m(0), m(1), m(2), m(3), s(3 DOWNTO 2), f ) ;

END Structure ;

Page 7: George Mason University ECE 545 – Introduction to VHDL Mixed Style RTL Modeling ECE 545 Lecture 6.

ECE 545 – Introduction to VHDL 7

Modified code for Example 1

ARCHITECTURE Structure OF Example1 IS

COMPONENT mux4to1

PORT ( w0, w1, w2, w3 : IN STD_LOGIC ;

s : IN STD_LOGIC_VECTOR(1 DOWNTO 0) ;

f : OUT STD_LOGIC ) ;

END COMPONENT ;

SIGNAL m : STD_LOGIC_VECTOR(0 TO 3) ;

BEGIN

G1: FOR i IN 0 TO 3 GENERATE

Muxes: mux4to1 PORT MAP (

w(4*i), w(4*i+1), w(4*i+2), w(4*i+3), s(1 DOWNTO 0), m(i) ) ;

END GENERATE ;

Mux5: mux4to1 PORT MAP ( m(0), m(1), m(2), m(3), s(3 DOWNTO 2), f ) ;

END Structure ;

Page 8: George Mason University ECE 545 – Introduction to VHDL Mixed Style RTL Modeling ECE 545 Lecture 6.

ECE 545 – Introduction to VHDL 8

Example 2

w 0

En

y 0 w 1 y 1

y 2 y 3

y 8 y 9 y 10y 11

w 2

w 0 y 0 y 1 y 2 y 3

w 0

En

y 0 w 1 y 1

y 2 y 3

w 0

En

y 0 w 1 y 1

y 2 y 3

y 4 y 5 y 6 y 7

w 1

w 0

En

y 0 w 1 y 1

y 2 y 3

y 12y 13y 14y 15

w 0

En

y 0 w 1 y 1

y 2 y 3

w 3

En w

Page 9: George Mason University ECE 545 – Introduction to VHDL Mixed Style RTL Modeling ECE 545 Lecture 6.

ECE 545 – Introduction to VHDL 9

A 2-to-4 binary decoder

LIBRARY ieee ;USE ieee.std_logic_1164.all ;

ENTITY dec2to4 ISPORT ( w : IN STD_LOGIC_VECTOR(1 DOWNTO 0) ;

En : IN STD_LOGIC ; y : OUT STD_LOGIC_VECTOR(0 TO 3) ) ;

END dec2to4 ;

ARCHITECTURE Dataflow OF dec2to4 ISSIGNAL Enw : STD_LOGIC_VECTOR(2 DOWNTO 0) ;

BEGINEnw <= En & w ;WITH Enw SELECT

y <= "1000" WHEN "100", "0100" WHEN "101",

"0010" WHEN "110", "0001" WHEN "111",

"0000" WHEN OTHERS ;END Dataflow ;

Page 10: George Mason University ECE 545 – Introduction to VHDL Mixed Style RTL Modeling ECE 545 Lecture 6.

ECE 545 – Introduction to VHDL 10

VHDL code for Example 2 (1)

LIBRARY ieee ;

USE ieee.std_logic_1164.all ;

ENTITY dec4to16 IS

PORT (w : IN STD_LOGIC_VECTOR(3 DOWNTO 0) ;

En : IN STD_LOGIC ;

y : OUT STD_LOGIC_VECTOR(0 TO 15) ) ;

END dec4to16 ;

Page 11: George Mason University ECE 545 – Introduction to VHDL Mixed Style RTL Modeling ECE 545 Lecture 6.

ECE 545 – Introduction to VHDL 11

VHDL code for Example 2 (2)

ARCHITECTURE Structure OF dec4to16 IS

COMPONENT dec2to4PORT ( w : IN STD_LOGIC_VECTOR(1 DOWNTO 0) ;

En : IN STD_LOGIC ;y : OUT STD_LOGIC_VECTOR(0 TO 3) ) ;

END COMPONENT ;

SIGNAL m : STD_LOGIC_VECTOR(0 TO 3) ;

BEGING1: FOR i IN 0 TO 3 GENERATE

Dec_ri: dec2to4 PORT MAP ( w(1 DOWNTO 0), m(i), y(4*i TO 4*i+3) );G2: IF i=3 GENERATE

Dec_left: dec2to4 PORT MAP ( w(i DOWNTO i-1), En, m ) ;END GENERATE ;

END GENERATE ;END Structure ;

Page 12: George Mason University ECE 545 – Introduction to VHDL Mixed Style RTL Modeling ECE 545 Lecture 6.

ECE 545 – Introduction to VHDL 12

Mixed Modeling:

Example

Page 13: George Mason University ECE 545 – Introduction to VHDL Mixed Style RTL Modeling ECE 545 Lecture 6.

ECE 545 – Introduction to VHDL 13

architecture ARCHITECTURE_NAME of ENTITY_NAME is

• Here you can declare signals, constants, functions, procedures…

• Component declarations• No variable declarations !!

beginConcurrent statements:

• Concurrent simple signal assignment • Conditional signal assignment • Selected signal assignment• Generate statement

• Component instantiation statement

• Process statement• inside process you can use only sequential

statements

end ARCHITECTURE_NAME;

Mixed Style Modeling

Concurrent Statements

Page 14: George Mason University ECE 545 – Introduction to VHDL Mixed Style RTL Modeling ECE 545 Lecture 6.

ECE 545 – Introduction to VHDL 14

Simple Processor

R 3 i n

Bus

Clock

R 0 i n R 0 o u t R 3 o u t

Control circuit Function

G

R 0 R3 A

AddSub

A i n G i n G o u t

Extern

Data

w

Done

B

Page 15: George Mason University ECE 545 – Introduction to VHDL Mixed Style RTL Modeling ECE 545 Lecture 6.

ECE 545 – Introduction to VHDL 15

N-bit register with enableLIBRARY ieee ;USE ieee.std_logic_1164.all ;

ENTITY regn ISGENERIC ( N : INTEGER := 8 ) ;PORT ( D : IN STD_LOGIC_VECTOR(N-1 DOWNTO 0) ;

En : IN STD_LOGIC ; Clock : IN STD_LOGIC ; Q : OUT STD_LOGIC_VECTOR(N-1 DOWNTO 0) ) ;

END regn ;

ARCHITECTURE Behavior OF regn ISBEGIN

PROCESSBEGIN

IF (Clock'EVENT AND Clock = '1‘) THEN IF En = '1' THEN Q <= D ;

END IF;END IF ;

END PROCESS ;END Behavior ;

Page 16: George Mason University ECE 545 – Introduction to VHDL Mixed Style RTL Modeling ECE 545 Lecture 6.

ECE 545 – Introduction to VHDL 16

N-bit tristate buffer

LIBRARY ieee ;USE ieee.std_logic_1164.all ;

ENTITY trin ISGENERIC ( N : INTEGER := 8 ) ;PORT ( X : IN STD_LOGIC_VECTOR(N-1 DOWNTO 0) ;

En : IN STD_LOGIC ;Y : OUT STD_LOGIC_VECTOR(N-1 DOWNTO 0)

) ;END trin ;

ARCHITECTURE Behavior OF trin ISBEGIN

Y <= (OTHERS => 'Z') WHEN En = '0' ELSE X ;END Behavior ;

Page 17: George Mason University ECE 545 – Introduction to VHDL Mixed Style RTL Modeling ECE 545 Lecture 6.

ECE 545 – Introduction to VHDL 17

Packages and component declarations

LIBRARY ieee ;USE ieee.std_logic_1164.all ;

PACKAGE exec_components IS

COMPONENT regn -- registerGENERIC ( N : INTEGER := 8 ) ;PORT ( D : IN STD_LOGIC_VECTOR(N-1 DOWNTO 0) ; En : IN STD_LOGIC ;

Clock : IN STD_LOGIC ;Q : OUT STD_LOGIC_VECTOR(N-1 DOWNTO 0) ) ;

END COMPONENT ;

COMPONENT trin -- tri-state buffersGENERIC ( N : INTEGER := 8 ) ;PORT ( X : IN STD_LOGIC_VECTOR(N-1 DOWNTO 0) ;

En : IN STD_LOGIC ;Y : OUT STD_LOGIC_VECTOR(N-1 DOWNTO 0) ) ;

END COMPONENT ;

END exec_components ;

Page 18: George Mason University ECE 545 – Introduction to VHDL Mixed Style RTL Modeling ECE 545 Lecture 6.

ECE 545 – Introduction to VHDL 18

Processor – Execution Unit (1)LIBRARY ieee ;

USE ieee.std_logic_1164.all ;

USE work.exec_components.all ;

USE ieee.std_logic_signed.all ;

ENTITY Proc_Exec IS

PORT ( Data : IN STD_LOGIC_VECTOR(7 DOWNTO 0) ;

Clock : IN STD_LOGIC ; Rin : IN STD_LOGIC_VECTOR(0 to 3);

Rout : IN STD_LOGIC_VECTOR(0 to 3);

Ain : IN STD_LOGIC ;

Gin : IN STD_LOGIC ;

Gout : IN STD_LOGIC ; AddSub : IN STD_LOGIC;

Extern : IN STD_LOGIC;

BusWires : INOUT STD_LOGIC_VECTOR(7 DOWNTO 0) ;

END Proc_Exec ;

Page 19: George Mason University ECE 545 – Introduction to VHDL Mixed Style RTL Modeling ECE 545 Lecture 6.

ECE 545 – Introduction to VHDL 19

Processor – Execution Unit (2)

ARCHITECTURE Mixed OF Proc_Exec IS

TYPE RegArray is ARRAY(0 to 3) of STD_LOGIC_VECTOR(7 downto 0);

SIGNAL R : RegArray;

SIGNAL A : STD_LOGIC_VECTOR(7 DOWNTO 0) ;

SIGNAL G : STD_LOGIC_VECTOR(7 DOWNTO 0) ;

SIGNAL Sum : STD_LOGIC_VECTOR(7 DOWNTO 0) ;

Page 20: George Mason University ECE 545 – Introduction to VHDL Mixed Style RTL Modeling ECE 545 Lecture 6.

ECE 545 – Introduction to VHDL 20

Processor – Execution Unit (3)

BEGIN

G1: FOR i IN 0 TO 3 GENERATE

Regs: regn PORT MAP (

D => BusWires,

En => Rin(i),

Clock => Clock,

Q => R(i)) ;

Trins: trin PORT MAP (

X => R(i),

En => Rout(i),

Y => BusWires) ;

END GENERATE ;

Page 21: George Mason University ECE 545 – Introduction to VHDL Mixed Style RTL Modeling ECE 545 Lecture 6.

ECE 545 – Introduction to VHDL 21

Processor – Execution Unit (4)

RegA: regn PORT MAP (

D => BusWires,

En => Ain,

Clock => Clock,

Q => A) ;

RegG: regn PORT MAP (

D => Sum,

En => Gin,

Clock => Clock,

Q => G) ;

triG: trin PORT MAP (

X => G,

En => Gout,

Y => BusWires) ;

Page 22: George Mason University ECE 545 – Introduction to VHDL Mixed Style RTL Modeling ECE 545 Lecture 6.

ECE 545 – Introduction to VHDL 22

Processor – Execution Unit (5)

ALU: WITH AddSub Select

Sum <= A + B WHEN ‘0’,

A – B WHEN OTHERS;

Tri_extern: trin PORT MAP (

X => Data,

En => Extern,

Y => BusWires) ;

END Mixed;

Page 23: George Mason University ECE 545 – Introduction to VHDL Mixed Style RTL Modeling ECE 545 Lecture 6.

ECE 545 – Introduction to VHDL 23

Processor – Control Unit (1)

LIBRARY ieee ;

USE ieee.std_logic_1164.all ;

USE work.control_components.all ;

ENTITY Proc_Control IS

PORT ( Func : IN STD_LOGIC_VECTOR(1 TO 6) ;

w : IN STD_LOGIC ;

Clock : IN STD_LOGIC ; Reset : IN STD_LOGIC ;

Rin : OUT STD_LOGIC_VECTOR(0 to 3);

Rout : OUT STD_LOGIC_VECTOR(0 to 3);

Ain : OUT STD_LOGIC ;

Gin : OUT STD_LOGIC ;

Gout : OUT STD_LOGIC ; AddSub : OUT STD_LOGIC;

Extern : OUT STD_LOGIC;

Done : OUT STD_LOGIC;

END Proc_Control ;

Page 24: George Mason University ECE 545 – Introduction to VHDL Mixed Style RTL Modeling ECE 545 Lecture 6.

ECE 545 – Introduction to VHDL 24

Processor Instructions

Page 25: George Mason University ECE 545 – Introduction to VHDL Mixed Style RTL Modeling ECE 545 Lecture 6.

ECE 545 – Introduction to VHDL 25

Processor

R 3 i n

Bus

Clock

R 0 i n R 0 o u t R 3 o u t

Control circuit Function

G

R 0 R3 A

AddSub

A i n G i n G o u t

Extern

Data

w

Done

B

Page 26: George Mason University ECE 545 – Introduction to VHDL Mixed Style RTL Modeling ECE 545 Lecture 6.

ECE 545 – Introduction to VHDL 26

Counter of instruction clock cycles

Reset

Up-counterClear

w 0 En

y 0

w 1

y 1 y 2 y 3

1

T 1 T 2 T 3

2-to-4 decoder

Q 1 Q 0 Clock

T 0

Count

Page 27: George Mason University ECE 545 – Introduction to VHDL Mixed Style RTL Modeling ECE 545 Lecture 6.

ECE 545 – Introduction to VHDL 27

The Function Register and Decoders

Clock

X 0

w 0 En

y 0

w 1

y 1 y 2 y 3

1

X 1 X 2 X 3

2-to-4 decoder

Function Register

Y 0

w 0 En

y 0

w 1

y 1 y 2 y 3

1

Y 1 Y 2 Y 3

2-to-4 decoder

I 0

En

y 0 y 1 y 2 y 3

1

I 1 I 2 I 3

2-to-4 decoder

FRin

f 1 f 0 Rx1 Rx0 Ry1 Ry0

w 0 w 1

Function

Page 28: George Mason University ECE 545 – Introduction to VHDL Mixed Style RTL Modeling ECE 545 Lecture 6.

ECE 545 – Introduction to VHDL 28

Control signals asserted in each operation and time step

Page 29: George Mason University ECE 545 – Introduction to VHDL Mixed Style RTL Modeling ECE 545 Lecture 6.

ECE 545 – Introduction to VHDL 29

Packages and component declarations

LIBRARY ieee ;USE ieee.std_logic_1164.all ;

PACKAGE control_components IS

COMPONENT dec2to4PORT (w : IN STD_LOGIC_VECTOR(1 DOWNTO 0) ; En : IN STD_LOGIC ; y : OUT STD_LOGIC_VECTOR(0 TO 3) ) ;

END COMPONENT ;

COMPONENT upcountGENERIC ( N : INTEGER := 2 ) ;PORT ( Clock : IN STD_LOGIC ;

Reset : IN STD_LOGIC ;Q : OUT STD_LOGIC_VECTOR(N-1 DOWNTO 0) ) ;

END COMPONENT ;

END control_components ;

Page 30: George Mason University ECE 545 – Introduction to VHDL Mixed Style RTL Modeling ECE 545 Lecture 6.

ECE 545 – Introduction to VHDL 30

N-bit Up Counter (1)

LIBRARY ieee ;USE ieee.std_logic_1164.all ;USE ieee.std_logic_unsigned.all ;

ENTITY upcount ISGENERIC ( N : INTEGER := 2 ) ;PORT (Clock : IN STD_LOGIC ;

Reset : IN STD_LOGIC ; Q : BUFFER STD_LOGIC_VECTOR(N-1 DOWNTO

0) ) ;END upcount ;

Page 31: George Mason University ECE 545 – Introduction to VHDL Mixed Style RTL Modeling ECE 545 Lecture 6.

ECE 545 – Introduction to VHDL 31

N-bit Up Counter (2)

ARCHITECTURE Behavior OF upcount ISBEGIN

upcount: PROCESS ( Clock )BEGIN

IF (Clock'EVENT AND Clock = '1') THENIF Reset = '1' THEN

Q <= (OTHERS => ‘0’);ELSE

Q <= Q + 1 ;END IF ;

END IF;END PROCESS;

END Behavior ;

Page 32: George Mason University ECE 545 – Introduction to VHDL Mixed Style RTL Modeling ECE 545 Lecture 6.

ECE 545 – Introduction to VHDL 32

Processor – Control Unit (2)

ARCHITECTURE Mixed OF Proc_Control IS

SIGNAL Clear : STD_LOGIC;

SIGNAL Count: STD_LOGIC_VECTOR(1 DOWNTO 0);

SIGNAL T : STD_LOGIC_VECTOR(0 TO 3);

SIGNAL FRin : STD_LOGIC;

SIGNAL FuncReg: IN STD_LOGIC_VECTOR(5 DOWNTO 0) ;

SIGNAL I : STD_LOGIC_VECTOR(0 TO 3);

SIGNAL X : STD_LOGIC_VECTOR(0 TO 3);

SIGNAL Y : STD_LOGIC_VECTOR(0 TO 3);

SIGNAL High : STD_LOGIC;

Page 33: George Mason University ECE 545 – Introduction to VHDL Mixed Style RTL Modeling ECE 545 Lecture 6.

ECE 545 – Introduction to VHDL 33

Counter of instruction clock cycles

Reset

Up-counterClear

w 0 En

y 0

w 1

y 1 y 2 y 3

1

T 1 T 2 T 3

2-to-4 decoder

Q 1 Q 0 Clock

T 0

Count

Page 34: George Mason University ECE 545 – Introduction to VHDL Mixed Style RTL Modeling ECE 545 Lecture 6.

ECE 545 – Introduction to VHDL 34

Processor – Control Unit (3)

BEGIN

counter: upcount PORT MAP (

Clock => Clock,

Reset => Clear,

Q => Count ) ;

Clear <= Reset OR Done OR (NOT w AND T(0)) ;

High <= '1' ;

decT: dec2to4 PORT MAP (

w => Count,

En => High,

y => T );

Page 35: George Mason University ECE 545 – Introduction to VHDL Mixed Style RTL Modeling ECE 545 Lecture 6.

ECE 545 – Introduction to VHDL 35

The Function Register and Decoders

Clock

X 0

w 0 En

y 0

w 1

y 1 y 2 y 3

1

X 1 X 2 X 3

2-to-4 decoder

Function Register

Y 0

w 0 En

y 0

w 1

y 1 y 2 y 3

1

Y 1 Y 2 Y 3

2-to-4 decoder

I 0

En

y 0 y 1 y 2 y 3

1

I 1 I 2 I 3

2-to-4 decoder

FRin

f 1 f 0 Rx1 Rx0 Ry1 Ry0

w 0 w 1

Function

Page 36: George Mason University ECE 545 – Introduction to VHDL Mixed Style RTL Modeling ECE 545 Lecture 6.

ECE 545 – Introduction to VHDL 36

Processor – Control Unit (4)

functionreg: regn GENERIC MAP ( N => 6 )

PORT MAP (

D => Func,

En => FRin,

Clock => Clock,

Q => FuncReg ) ;

FRin <= w AND T(0);

decI: dec2to4 PORT MAP (

w =>FuncReg(5 DOWNTO 4),

En => High,

y => I ) ;

Page 37: George Mason University ECE 545 – Introduction to VHDL Mixed Style RTL Modeling ECE 545 Lecture 6.

ECE 545 – Introduction to VHDL 37

Processor – Control Unit (5)

decX: dec2to4 PORT MAP (

w => FuncReg(3 DOWNTO 2),

En => High,

y => X ) ;

decY: dec2to4 PORT MAP (

w => FuncReg(1 DOWNTO 0),

En => High,

y => Y ) ;

Page 38: George Mason University ECE 545 – Introduction to VHDL Mixed Style RTL Modeling ECE 545 Lecture 6.

ECE 545 – Introduction to VHDL 38

Control signals asserted in each operation and time step

Page 39: George Mason University ECE 545 – Introduction to VHDL Mixed Style RTL Modeling ECE 545 Lecture 6.

ECE 545 – Introduction to VHDL 39

Processor – Control Unit (5)

control_signals: PROCESS (T, I, X, Y)

BEGIN

Extern <= '0' ; Done <= '0' ; Ain <= '0' ; Gin <= '0' ;

Gout <= '0' ; AddSub <= '0' ; Rin <= "0000" ; Rout <= "0000" ;

CASE T IS

WHEN “1000” => null; -- no signals asserted in the time step T0

WHEN “0100” =>

CASE I IS

WHEN “1000" => -- Load

Extern <= '1' ; Rin <= X ; Done <= '1' ;

WHEN "0100" => -- Move

Rout <= Y ; Rin <= X ; Done <= '1' ;

WHEN OTHERS => -- Add, Sub

Rout <= X ; Ain <= '1' ;

END CASE ;

END PROCESS;

Page 40: George Mason University ECE 545 – Introduction to VHDL Mixed Style RTL Modeling ECE 545 Lecture 6.

ECE 545 – Introduction to VHDL 40

Processor – Control Unit (6)WHEN “0010” =>

CASE I IS

WHEN “0010" => -- Add

Rout <= Y ; Gin <= '1' ;

WHEN “0001" => -- Sub

Rout <= Y ; AddSub <= '1' ; Gin <= '1' ;

WHEN OTHERS => -- Load, Move

END CASE ;

WHEN OTHERS => -- define signals asserted in time step T3

CASE I IS

WHEN “1000" => -- Load

WHEN "0100" => -- Move

WHEN OTHERS => -- Add, Sub

Gout <= '1' ; Rin <= X ; Done <= '1' ;

END CASE ;

END CASE ;

Page 41: George Mason University ECE 545 – Introduction to VHDL Mixed Style RTL Modeling ECE 545 Lecture 6.

ECE 545 – Introduction to VHDL 41

Processor – Control Unit (7)

END PROCESS;

END Mixed;

Page 42: George Mason University ECE 545 – Introduction to VHDL Mixed Style RTL Modeling ECE 545 Lecture 6.

ECE 545 – Introduction to VHDL 42

Using Arrays of Test Vectors

In Testbenches

Page 43: George Mason University ECE 545 – Introduction to VHDL Mixed Style RTL Modeling ECE 545 Lecture 6.

ECE 545 – Introduction to VHDL 43

Testbench (1)LIBRARY ieee;USE ieee.std_logic_1164.all;

ENTITY sevenSegmentTB isEND sevenSegmentTB;

ARCHITECTURE testbench OF sevenSegmentTB IS

COMPONENTsevenSegment PORT ( bcdInputs: IN STD_LOGIC_VECTOR (3 DOWNTO 0); seven_seg_outputs: OUT STD_LOGIC_VECTOR(6 DOWNTO 0); );end COMPONENT;

CONSTANT PropDelay: time := 40 ns;CONSTANT SimLoopDelay: time := 10 ns;

Page 44: George Mason University ECE 545 – Introduction to VHDL Mixed Style RTL Modeling ECE 545 Lecture 6.

ECE 545 – Introduction to VHDL 44

Testbench (2)TYPE vector IS RECORD bcdStimulus: STD_LOGIC_VECTOR(3 downto 0); sevSegOut: STD_LOGIC_VECTOR(6 downto 0);END RECORD;

CONSTANT NumVectors: INTEGER:= 10;

TYPE vectorArray is ARRAY (0 TO NumVectors - 1) OF vector;

CONSTANT vectorTable: vectorArray := ( (bcdStimulus => "0000", sevSegOut => "0000001"), (bcdStimulus => "0001", sevSegOut => "1001111"), (bcdStimulus => "0010", sevSegOut => "0010010"), (bcdStimulus => "0011", sevSegOut => "0000110"), (bcdStimulus => "0100", sevSegOut => "1001100"), (bcdStimulus => "0101", sevSegOut => "0100100"), (bcdStimulus => "0110", sevSegOut => "0100000"), (bcdStimulus => "0111", sevSegOut => "0001111"), (bcdStimulus => "1000", sevSegOut => "0000000"), (bcdStimulus => "1001", sevSegOut => "0000100"));

Page 45: George Mason University ECE 545 – Introduction to VHDL Mixed Style RTL Modeling ECE 545 Lecture 6.

ECE 545 – Introduction to VHDL 45

Testbench (3)

SIGNAL StimInputs: STD_LOGIC_VECTOR(3 downto 0);

SIGNAL CaptureOutputs: STD_LOGIC_VECTOR(6 downto 0);

BEGIN

u1: sevenSegment PORT MAP (

bcdInputs => StimInputs,

seven_seg_outputs => CaptureOutputs);

Page 46: George Mason University ECE 545 – Introduction to VHDL Mixed Style RTL Modeling ECE 545 Lecture 6.

ECE 545 – Introduction to VHDL 46

Testbench (4)

LoopStim: PROCESS

BEGIN

FOR i in 0 TO NumVectors-1 LOOP

StimInputs <= vectorTable(i).bcdStimulus;

WAIT FOR PropDelay;

ASSERT CaptureOutputs == vectorTable(i).sevSegOut

REPORT “Incorrect Output”

SEVERITY error;

WAIT FOR SimLoopDelay;

END LOOP;

Page 47: George Mason University ECE 545 – Introduction to VHDL Mixed Style RTL Modeling ECE 545 Lecture 6.

ECE 545 – Introduction to VHDL 47

Testbench (5)

WAIT;

END PROCESS;

END testbench;