Presentation is loading. Please wait.

Presentation is loading. Please wait.

ECE 434 Advanced Digital System L10

Similar presentations


Presentation on theme: "ECE 434 Advanced Digital System L10"— Presentation transcript:

1 ECE 434 Advanced Digital System L10
Electrical and Computer Engineering University of Western Ontario

2 Outline What we know What we do not know
Design of Combinational and Sequential Networks VHDL description of combinational networks VHDL processes – description of sequential networks Wait statements Variables, signals, constants What we do not know 06/12/2018

3 Review: Wait Statements
... an alternative to a sensitivity list Note: a process cannot have both wait statement(s) and a sensitivity list Generic form of a process with wait statement(s) process begin sequential-statements wait statement wait-statement ... end process; How wait statements work? Execute seq. statement until a wait statement is encountered. Wait until the specified condition is satisfied. Then execute the next set of sequential statements until the next wait statement is encountered. ... When the end of the process is reached start over again at the beginning. 06/12/2018

4 Review: Forms of Wait Statements
wait on sensitivity-list; wait for time-expression; wait until boolean-expression; Wait on until one of the signals in the sensitivity list changes Wait for waits until the time specified by the time expression has elapsed What is this: wait for 0 ns; Wait until the boolean expression is evaluated whenever one of the signals in the expression changes, and the process continues execution when the expression evaluates to TRUE 06/12/2018

5 Review: Variables vs. Signals
Variable assignment statement variable_name := expression; expression is evaluated and the variable is instantaneously updated (no delay, not even delta delay) Signal assignment statement signal_name <= expression [after delay]; expression is evaluated and the signal is scheduled to change after delay; if no delay is specified the signal is scheduled to be updated after a delta delay 06/12/2018

6 Review: Variables vs. Signals (cont’d)
Process Using Variables Process Using Signals Sum = ? Sum = ? 06/12/2018

7 Review: Predefined VHDL Types
Variables, signals, and constants can have any one of the predefined VHDL types or they can have a user-defined type Predefined Types bit – {‘0’, ‘1’} boolean – {TRUE, FALSE} integer – [ – 1} real – floating point number in range –1.0E38 to +1.0E38 character – legal VHDL characters including lower- uppercase letters, digits, special characters, ... time – an integer with units fs, ps, ns, us, ms, sec, min, or hr 06/12/2018

8 Review: User Defined Type
Common user-defined type is enumerated type state_type is (S0, S1, S2, S3, S4, S5); signal state : state_type := S1; If no initialization, the default initialization is the leftmost element in the enumeration list (S0 in this example) VHDL is strongly typed language => signals and variables of different types cannot be mixed in the same assignment statement, and no automatic type conversion is performed 06/12/2018

9 Review: Arrays Example General form ALT_WORD(0) – rightmost bit
type SHORT_WORD is array (15 downto 0) of bit; signal DATA_WORD : SHORT_WORD; variable ALT_WORD : SHORT_WORD := “ ”; constant ONE_WORD : SHORT_WORD := (others => ‘1’); ALT_WORD(0) – rightmost bit ALT_WORD(5 downto 0) – low order 6 bits General form type arrayTypeName is array index_range of element_type; signal arrayName : arrayTypeName [:=InitialValues]; 06/12/2018

10 Arrays (cont’d) Multidimensional arrays Unconstrained array type
type matrix4x3 is array (1 to 4, 1 to 3) of integer; variable matrixA: matrix4x3 := ((1,2,3), (4,5,6), (7,8,9), (10,11,12)); matrixA(3, 2) = ? Unconstrained array type type intvec is array (natural range<>) of integer; type matrix is array (natural range<>,natural range<>) of integer; range must be specified when the array object is declared signal intvec5 : intvec(1 to 5) := (3,2,6,8,1); 06/12/2018

11 Predefined Unconstrained Array Types
Bit_vector, string constant A : bit_vector(0 to 5) := “10101”; -- (‘1’, ‘0’, ‘1’, ‘0’, ‘1’); Subtypes include a subset of the values specified by the type subtype SHORT_WORD is : bit_vector(15 to 0); POSITIVE, NATURAL – predefined subtypes of type integer 06/12/2018

12 Review: VHDL Operators
Binary logical operators: and or nand nor xor xnor Relational: = /= < <= > >= Shift: sll srl sla sra rol ror Adding: + - & (concatenation) Unary sign: + - Multiplying: * / mod rem Miscellaneous: not abs ** Class 7 has the highest precedence (applied first), followed by class 6, then class 5, etc 06/12/2018

13 VHDL Functions Functions execute a sequential algorithm and return a single value to calling program A = “ ” General form 06/12/2018

14 For Loops Should not be explicitly declared
Can be used inside the loop, but cannot be changed 06/12/2018

15 Add Function Z <= add4(X, not Y, ‘1’); 06/12/2018

16 VHDL Procedures Facilitate decomposition of VHDL code into modules
Procedures can return any number of values using output parameters General form procedure procedure_name (formal-parameter-list) is [declarations] begin Sequential-statements end procedure_name; procedure_name (actual-parameter-list); 06/12/2018

17 Procedure for Adding Bit_vectors
06/12/2018

18 Parameters for Subprogram Calls
06/12/2018

19 Packages and Libraries
Provide a convenient way of referencing frequently used functions and components Package declaration Package body [optional] 06/12/2018

20 Accessing Library Components
To access the BITLIB To use entire bit_pack package To use a specific component library BITLIB; use BITLIB.bit_pack.all; use BITLIB.bit_pack.Nand2; 06/12/2018

21 Library BITLIB – bit_pack package
06/12/2018

22 Library BITLIB – bit_pack package
06/12/2018

23 Library BITLIB – bit_pack package
06/12/2018

24 VHDL Model for a 74163 Counter
74163 – 4-bit fully synchronous binary counter Counter operations Generate a Cout in state 15 if T=1 Cout = Q3Q2Q1Q0T 06/12/2018

25 VHDL Model for a 74163 Counter
06/12/2018

26 Cascaded Counters 06/12/2018

27 Cascaded Counters (cont’d)
06/12/2018

28 To Do Read Textbook chapters 2.9, 2.10, 2.11, 2.12 06/12/2018

29 Networks for Arithmetic Operations
Serial Adder with Accumulator 06/12/2018

30 Networks for Arithmetic Operations
Serial Adder with Accumulator 06/12/2018

31 State Graphs for Control Networks
Use variable names instead of 0s and 1s E.g., XiXj/ZpZq if Xi and Xj inputs are 1, the outputs Zp and Zq are 1 (all other outputs are 0s) E.g., X = X1X2X3X4, Z = Z1Z2Z3Z4 X1X4’/Z2Z3 == / 06/12/2018

32 Constraints on Input Labels
Assume: I – input expression => we traverse the arc when I=1 Assures that at most one input label can be 1 at any given time Assures that at least one input label will be 1 at any given time 1 + 2: Exactly one label will be 1 => the next state will be uniquely defined for every input combination 06/12/2018

33 Constraints on Input Labels (cont’d)
06/12/2018


Download ppt "ECE 434 Advanced Digital System L10"

Similar presentations


Ads by Google