43
Structural Specification of Hardware Instructors: Fu-Chiung Cheng ( 鄭鄭鄭 ) Associate Professor Computer Science & Engineering Tatung University

Structural Specification of Hardware

  • Upload
    parson

  • View
    70

  • Download
    0

Embed Size (px)

DESCRIPTION

Structural Specification of Hardware. Instructors: Fu-Chiung Cheng ( 鄭福炯 ) Associate Professor Computer Science & Engineering Tatung University. Outline. Parts Library Comparator Iterative functions Test bench. Structural Description of Hardware. - PowerPoint PPT Presentation

Citation preview

Page 1: Structural Specification of Hardware

Structural Specificationof Hardware

Instructors: Fu-Chiung Cheng

(鄭福炯 )Associate Professor

Computer Science & EngineeringTatung University

Page 2: Structural Specification of Hardware

Outline

• Parts Library• Comparator• Iterative functions • Test bench

Page 3: Structural Specification of Hardware

Structural Description of Hardware

Structural Description of hardware:– Components (in some libraries i.g. IEEE VHDL 107

6)– Interconnection between

Structural Description – uses netlist– Closely corresponds to the actual hardware

Page 4: Structural Specification of Hardware

Parts Library

Parts library in sec 5.1– Inverter– Two input NAND– Three input NAND

Parts library components:– As small as transistors– As processors, computers or systems

Page 5: Structural Specification of Hardware

Inverter

Symbol of inverter Fig 5.1

ENTITY inv ISPORT (i1 : IN BIT; o1 : OUT BIT);

END inv;

ARCHITECTURE single_delay OF inv ISBEGIN

o1 <= NOT i1 AFTER 4 NS;

END single_delay;

Page 6: Structural Specification of Hardware

Notation

ElementInterface

BidirectionalPort

BufferPort

InputPort

OutputPort

Page 7: Structural Specification of Hardware

Using Ports

Page 8: Structural Specification of Hardware

Two-input NAND Gate

ENTITY nand2 ISPORT (i1, i2 : IN BIT; o1 : OUT BIT);

END nand2;

ARCHITECTURE single_delay OF nand2 ISBEGIN

o1 <= i1 NAND i2 AFTER 5 NS;

END single_delay;

Page 9: Structural Specification of Hardware

Port clause of NAND

Page 10: Structural Specification of Hardware

Three-input NAND Gate

ENTITY nand3 ISPORT (i1, i2, i3 : IN BIT; o1 : OUT BIT);

END nand3;

ARCHITECTURE single_delay OF nand3 ISBEGIN

o1 <= NOT ( i1 AND i2 AND i3 ) AFTER 6 NS;

END single_delay;

Page 11: Structural Specification of Hardware

Wiring Components

Wiring Components for larger designs VHDL Language constructs:

– Signal declarations– Component declarations– Configuration specification– Component instantiation

One-bit comparator is used to demo these constructs

Page 12: Structural Specification of Hardware

Single bit comparator

Five inputs– A, B– G, E, S

Thee outputs:– G, E, S for next stage

Page 13: Structural Specification of Hardware

Single bit comparator

Flow Table

a_gt_b = a . gt + b’ . gt + a . b’a_eq_b = a . b . eq + a’ . b’ . eqa_lt_b = a’ . lt + b . lt + a’ . b

Page 14: Structural Specification of Hardware

Single bit comparator

Use DeMorgan’s for all-NAND implementation

a_gt_b = a . gt + b’ . gt + a . b’a_eq_b = a . b . eq + a’ . b’ . eqa_lt_b = a’ . lt + b . lt + a’ . b

a_gt_b = ((a . gt)’.( b’ . gt)’.( a . b’)’)’a_eq_b = ((a . b . eq)’.(a’ . b’ . eq)’)’a_lt_b = ((a’ . lt)’.(b . lt)’.( a’ . b)’)’

(nand3 (nand2 a gt) (nand2 b’ gt) (nand2 a b’) )

Page 15: Structural Specification of Hardware

Single bit comparator

Page 16: Structural Specification of Hardware

Single bit comparator

Page 17: Structural Specification of Hardware

Single bit comparator (Entity)

ENTITY bit_comparator ISPORT (

a, b, -- data inputsgt, -- previous greater thaneq, -- previous equallt : IN BIT; -- previous less thana_gt_b, -- greatera_eq_b, -- equala_lt_b : OUT BIT); -- less than

END bit_comparator;

Page 18: Structural Specification of Hardware

ARCHITECTURE gate_level OF bit_comparator ISCOMPONENT n1 PORT (i1: IN BIT; o1: OUT BIT);END COMPONENT;COMPONENT n2 PORT (i1, i2: IN BIT; o1: OUT BIT);END COMPONENT;COMPONENT n3 PORT (i1, i2, i3: IN BIT; o1: OUT BIT);END COMPONENT;FOR ALL : n1 USE ENTITY WORK.inv (single_delay);FOR ALL : n2 USE ENTITY WORK.nand2 (single_delay);FOR ALL : n3 USE ENTITY WORK.nand3 (single_delay);-- Intermediate signalsSIGNAL im1,im2, im3, im4, im5, im6, im7, im8, im9,

im10 : BIT;BEGIN

Next PageEND gate_level;

Page 19: Structural Specification of Hardware

BEGINg0 : n1 PORT MAP (a, im1);g1 : n1 PORT MAP (b, im2);-- a_gt_b outputg2 : n2 PORT MAP (a, im2, im3);g3 : n2 PORT MAP (a, gt, im4);g4 : n2 PORT MAP (im2, gt, im5);g5 : n3 PORT MAP (im3, im4, im5, a_gt_b);-- a_eq_b outputg6 : n3 PORT MAP (im1, im2, eq, im6);g7 : n3 PORT MAP (a, b, eq, im7);g8 : n2 PORT MAP (im6, im7, a_eq_b);-- a_lt_b outputg9 : n2 PORT MAP (im1, b, im8);g10 : n2 PORT MAP (im1, lt, im9);g11 : n2 PORT MAP (b, lt, im10);g12 : n3 PORT MAP (im8, im9, im10, a_lt_b);

END gate_level;

Page 20: Structural Specification of Hardware
Page 21: Structural Specification of Hardware

Wiring Components

Page 22: Structural Specification of Hardware

ARCHITECTURE netlist OF bit_comparator IS-- Intermediate signalsSIGNAL im1,im2, im3, im4, im5, im6, im7, im8, im9, im10 : BIT;BEGIN-- a_gt_b outputg0 : ENTITY WORK.inv(single_delay) PORT MAP (a, im1);g1 : ENTITY WORK.inv(single_delay) PORT MAP (b, im2);g2 : ENTITY WORK.nand2(single_delay) PORT MAP (a, im2, im3);g3 : ENTITY WORK.nand2(single_delay) PORT MAP (a, gt, im4);g4 : ENTITY WORK.nand2(single_delay) PORT MAP (im2, gt, im5);g5 : ENTITY WORK.nand3(single_delay)PORT MAP (im3, im4, im5, a_gt_b);-- a_eq_b outputg6 : ENTITY WORK.nand3(single_delay)PORT MAP (im1, im2, eq, im6);g7 : ENTITY WORK.nand3(single_delay) PORT MAP (a, b, eq, im7);g8 : ENTITY WORK.nand2(single_delay)PORT MAP (im6, im7, a_eq_b);

Page 23: Structural Specification of Hardware

-- a_lt_b outputg9 : ENTITY WORK.nand2(single_delay) PORT MAP (im1, b, im8);g10 : ENTITY WORK.nand2(single_delay) PORT MAP (im1, lt, im9);g11 : ENTITY WORK.nand2(single_delay) PORT MAP (b, lt, im10);g12 : ENTITY WORK.nand3(single_delay)PORT MAP (im8, im9, im10, a_lt_b);END netlist;

Page 24: Structural Specification of Hardware

Timing Diagram

Fig 5.17 shows the timing diagram

Page 25: Structural Specification of Hardware

Wiring Iterative Networks

Iterative functions: addition, comparison Example: 4-bit comparator

Page 26: Structural Specification of Hardware

4-bit comparator

ENTITY nibble_comparator ISPORT (a, b : IN BIT_VECTOR (3 DOWNTO 0);

-- a and b data inputsgt, -- previous greater thaneq, -- previous equallt : IN BIT; -- previous less thana_gt_b, -- a > ba_eq_b, -- a = ba_lt_b : OUT BIT); -- a < b

END nibble_comparator;

Page 27: Structural Specification of Hardware
Page 28: Structural Specification of Hardware

ARCHITECTURE iterative OF nibble_comparator ISCOMPONENT comp1

PORT (a, b, gt, eq, lt : IN BIT; a_gt_b, a_eq_b, a_lt_b : OUT BIT);

END COMPONENT;

FOR ALL : comp1 USE ENTITY WORK.bit_comparator (gate_level);

SIGNAL im : BIT_VECTOR ( 0 TO 8);

BEGINc0: comp1 PORT MAP (a(0), b(0), gt, eq, lt, im(0), im(1), im(2));

c1to2: FOR i IN 1 TO 2 GENERATE

c: comp1 PORT MAP (a(i), b(i), im(i*3-3), im(i*3-2), im(i*3-1),

im(i*3+0), im(i*3+1), im(i*3+2) );

END GENERATE;

c3: comp1

PORT MAP (a(3), b(3), im(6), im(7), im(8), a_gt_b, a_eq_b, a_lt_b);

END iterative;

Page 29: Structural Specification of Hardware

Wire connection

for … generate statement

Page 30: Structural Specification of Hardware

For … Generate Statement

Page 31: Structural Specification of Hardware

ARCHITECTURE iterative OF nibble_comparator ISCOMPONENT comp1PORT (a, b, gt, eq, lt : IN BIT; a_gt_b, a_eq_b, a_lt_b : OUT BIT);END COMPONENT;FOR ALL : comp1 USE ENTITY WORK.bit_comparator (gate_level);CONSTANT n : INTEGER := 4;SIGNAL im : BIT_VECTOR ( 0 TO (n-1)*3-1);

BEGINc_all: FOR i IN 0 TO n-1 GENERATE

l: IF i = 0 GENERATEleast: comp1 PORT MAP (a(i), b(i), gt, eq, lt,im(0),im(1),im(2));

END GENERATE;m: IF i = n-1 GENERATE

most: comp1 PORT MAP (a(i), b(i),im(i*3-3), im(i*3-2), im(i*3-1), a_gt_b, a_eq_b, a_lt_b);

END GENERATE;r: IF i > 0 AND i < n-1 GENERATE

rest: comp1 PORT MAP (a(i), b(i), im(i*3-3), im(i*3-2), im(i*3-1), im(i*3+0), im(i*3+1), im(i*3+2) );

END GENERATE;END GENERATE;

END iterative;

Page 32: Structural Specification of Hardware

Modeling a Test Bench

Test VHDL system– System (in VHDL) under test – Test Data (in VHDL)– Comparison outputs

Page 33: Structural Specification of Hardware

Test Bench of 4-bit comparator

Page 34: Structural Specification of Hardware

ENTITY nibble_comparator_test_bench ISEND nibble_comparator_test_bench ;ARCHITECTURE input_output OF nibble_comparator_test_bench IS

COMPONENT comp4 PORT (a, b : IN bit_vector (3 DOWNTO 0);a_gt_b, a_eq_b, a_lt_b : IN BIT;a_gt_b_out, a_eq_b_out, a_lt_b_out : OUT BIT);END COMPONENT;FOR a1 : comp4 USE ENTITY WORK.nibble_comparator(iterative);SIGNAL a, b : BIT_VECTOR (3 DOWNTO 0);SIGNAL eql, lss, gtr : BIT;SIGNAL vdd : BIT := '1';SIGNAL gnd : BIT := '0';

BEGINa1: comp4 PORT MAP (a, b, gnd, vdd, gnd, gtr, eql, lss);a2: a <= "0000", ---- a = b (steady state)…a3 : b <= "0000", ---- a = b (steady state)…

END input_output;

Page 35: Structural Specification of Hardware

a2: a <= "0000", ---- a = b (steady state)"1111" AFTER 0500 NS, -- a > b (worst case)"1110" AFTER 1500 NS, -- a < b (worst case)"1110" AFTER 2500 NS, -- a > b (need bit 1 info)"1010" AFTER 3500 NS, -- a < b (need bit 2 info)"0000" AFTER 4000 NS, -- a < b (steady state, prepare for next)"1111" AFTER 4500 NS, -- a = b (worst case)"0000" AFTER 5000 NS, -- a < b (need bit 3 only, best case)"0000" AFTER 5500 NS, -- a = b (worst case)"1111" AFTER 6000 NS; -- a > b (need bit 3 only, best case)a3 : b <= "0000", ---- a = b (steady state)"1110" AFTER 0500 NS, -- a > b (worst case)"1111" AFTER 1500 NS, -- a < b (worst case)"1100" AFTER 2500 NS, -- a > b (need bit 1 info)"1100" AFTER 3500 NS, -- a < b (need bit 2 info)"1111" AFTER 4000 NS, -- a < b (steady state, prepare for next)"1111" AFTER 4500 NS, -- a = b (worst case)"1111" AFTER 5000 NS, -- a < b (need bit 3 only, best case)"0000" AFTER 5500 NS, -- a = b (worst case)"0000" AFTER 6000 NS; -- a > b (need bit 3 only, best case)END input_output;

Page 36: Structural Specification of Hardware
Page 37: Structural Specification of Hardware

Simple Latch

With equal timing this will not work Correct the oscillation problem by binding

to NAND gates of different delay values

Page 38: Structural Specification of Hardware

Set-Reset Flip/Flop (latch?)

ENTITY sr_latch IS PORT (s, r, c : IN BIT; q : OUT BIT);

END sr_latch;ARCHITECTURE gate_level OF sr_latch IS

COMPONENT n2 PORT (i1, i2: IN BIT; o1: OUT BIT);

ENDCOMPONENT;

FOR ALL : n2 USE ENTITY WORK.nand2 (single_delay);

SIGNAL im1, im2, im3, im4 : BIT;

BEGINg1 : n2 PORT MAP (s, c, im1);

g2 : n2 PORT MAP (r, c, im2);

g3 : n2 PORT MAP (im1, im4, im3); -- g3 and g4 have the same delay

g4 : n2 PORT MAP (im3, im2, im4); -- oscillation

q <= im3;

END gate_level;

Page 39: Structural Specification of Hardware

Set-Reset Flip/Flop with buffer

ENTITY sr_latch IS PORT (s, r, c : IN BIT; q : OUT BIT);

END sr_latch;ARCHITECTURE gate_level OF sr_latch IS

COMPONENT n2 PORT (i1, i2: IN BIT; o1: BUFFER BIT);

ENDCOMPONENT;

FOR ALL : n2 USE ENTITY WORK.nand2 (single_delay);

SIGNAL im1, im2, im4 : BIT;

BEGINg1 : n2 PORT MAP (s, c, im1);

g2 : n2 PORT MAP (r, c, im2);

g3 : n2 PORT MAP (im1, im4, q);

g4 : n2 PORT MAP (q, im2, im4);

q <= im3;

END gate_level;

Page 40: Structural Specification of Hardware

SR-latch with different delays

ARCHITECTURE gate_level OF sr_latch ISCOMPONENT n2 PORT (i1, i2: IN BIT; o1: OUT BIT); END

COMPONENT;

FOR g1, g3 : n2 USE ENTITY WORK.nand2 (fast_single_delay);

FOR g2, g4 : n2 USE ENTITY WORK.nand2 (single_delay);

SIGNAL im1, im2, im3, im4 : BIT;

BEGINg1 : n2 PORT MAP (s, c, im1);

g2 : n2 PORT MAP (r, c, im2);

g3 : n2 PORT MAP (im1, im4, im3);

g4 : n2 PORT MAP (im3, im2, im4);

q <= im3;

END gate_level;

Page 41: Structural Specification of Hardware

SR-latch with nand2 and nand3

ARCHITECTURE gate_level OF sr_latch ISCOMPONENT n2 PORT (x, y: IN BIT; z: OUT BIT);

END COMPONENT;

FOR g1, g3 : n2

USE ENTITY WORK.nand2 (single_delay) PORT MAP (x, y, z);

FOR g2, g4 : n2

USE ENTITY WORK.nand3 (single_delay) PORT MAP (x, x, y, z);

SIGNAL im1, im2, im3, im4 : BIT;

BEGINg1 : n2 PORT MAP (s, c, im1);

g2 : n2 PORT MAP (r, c, im2);

g3 : n2 PORT MAP (im1, im4, im3);

g4 : n2 PORT MAP (im3, im2, im4);

q <= im3;

END gate_level;

Page 42: Structural Specification of Hardware

Configuration specification syntax details

Page 43: Structural Specification of Hardware

Summary

A structural description of a design consists of a wiring specification of its subcomponents.

The definition and usage of components in larger designs are illustrated.