Figure 7.1 Control of an alarm system

Slides:



Advertisements
Similar presentations
Flip-Flops, Registers, Counters, and a Simple Processor
Advertisements

28/10/2007DSD,USIT,GGSIPU1 Latch & Register Inference.
EE2420 – Digital Logic Summer II 2013
1 Sequential Circuits Dr. Pang. 2 Outline Introduction to sequential circuits Basic latch Gated SR latch and gated D latch D flip-flop, T flip-flop, JK.
Dr. ClincyLecture1 Appendix A – Part 2: Logic Circuits Current State or output of the device is affected by the previous states Circuit Flip Flops New.
Sequential-Circuit Building Blocks
Simple Sequential Circuits in VHDL. Contents Sequential circuit examples: - SR latch in dataflow style - D flip-flop in behavioral style - shift register.
CSCI 660 EEGN-CSCI 660 Introduction to VLSI Design Lecture 3 Khurram Kazi Some of the slides were taken from K Gaj ’ s lecture slides from GMU ’ s VHDL.
Kazi Fall 2006 EEGN 4941 EEGN-494 HDL Design Principles for VLSI/FPGAs Khurram Kazi Some of the slides were taken from K Gaj’s lecture slides from GMU’s.
CSCI 660 EEGN-CSCI 660 Introduction to VLSI Design Lecture 2 Khurram Kazi Some of the slides were taken from K Gaj ’ s lecture slides from GMU ’ s VHDL.
Counters and Shift Registers
Introduction to Counter in VHDL
ECE 545 Lecture 7 Behavioral Modeling of Sequential-Circuit Building Blocks Mixing Design Styles Modeling of Circuits with a Regular Structure.
CS/EE 3700 : Fundamentals of Digital System Design
Figure 7.1. Control of an alarm system. Memory element Alarm Sensor Reset Set OnOff 
CoE3DJ4 Digital Systems Design Register transfers, sequencing and control (from chapters 7 and 8 of Mano and Kime)
A.7 Concurrent Assignment Statements Used to assign a value to a signal in an architecture body. Four types of concurrent assignment statements –Simple.
CprE / ComS 583 Reconfigurable Computing Prof. Joseph Zambreno Department of Electrical and Computer Engineering Iowa State University Lecture #17 – Introduction.
Chapter 10 State Machine Design. 2 State Machine Definitions State Machine: A synchronous sequential circuit consisting of a sequential logic section.
1 Sequential Logic Lecture #7. 모바일컴퓨팅특강 2 강의순서 Latch FlipFlop Shift Register Counter.
CprE / ComS 583 Reconfigurable Computing
CSET 4650 Field Programmable Logic Devices Dan Solarek VHDL Additional Details & Examples.
1 ECE 545 – Introduction to VHDL ECE 545 Lecture 4 Behavioral & Structural Design Styles.
ENG241 Digital Design Week #8 Registers and Counters.
Reaction Timer Project
Mixed Style RTL Modeling
George Mason University Behavioral Modeling of Sequential-Circuit Building Blocks ECE 545 Lecture 6 Mixing Design Styles.
Figure 7.6. Gated SR latch. (a) Circuit Q Q R S R S R Clk Q Q S Time (c) Timing diagram Clk ? ? SR xx Q(t) (no change) 0 1.
© 2009 Pearson Education, Upper Saddle River, NJ All Rights ReservedFloyd, Digital Fundamentals, 10 th ed Digital Logic Design Dr. Oliver Faust.
 Seattle Pacific University EE Logic System DesignCounters-1 Shift Registers DQ clk DQ DQ ShiftIn Q3Q3 Q2Q2 DQ Q1Q1 Q0Q0 A shift register shifts.
CS/EE 3700 : Fundamentals of Digital System Design
Digital System Design using VHDL
George Mason University ECE 448 – FPGA and ASIC Design with VHDL VHDL Coding for Synthesis ECE 448 Lecture 12.
Algorithmic State Machines Sorting Signed & Unsigned Data Types
CDA 4253 FPGA System Design Sequential Circuit Building Blocks Hao Zheng Dept of Comp Sci & Eng USF.
ECE DIGITAL LOGIC LECTURE 20: REGISTERS AND COUNTERS Assistant Prof. Fareena Saqib Florida Institute of Technology Fall 2015, 11/19/2015.
George Mason University Behavioral Modeling of Sequential-Circuit Building Blocks ECE 545 Lecture 8.
Dept. of Electrical Engineering
Data Flow and Behavioral Modeling in VHDL 1 MS EMBEDDED SYSTEMS.
Fundamentals of Digital System Design Pradondet Nilagupta Lecture 7: Flip-flops, Registers, Counters Chapter 7.
Sequential statements (1) process
Combinational logic circuit
Describing Combinational Logic Using Processes
Registers and Counters
Instructor: Alexander Stoytchev
CHAPTER 17 VHDL FOR SEQUENTIAL LOGIC
Part IV: VHDL CODING.
Instructor: Alexander Stoytchev
Instructor: Alexander Stoytchev
Instructor: Alexander Stoytchev
Sequential-Circuit Building Blocks
Instructor: Alexander Stoytchev
Instructor: Alexander Stoytchev
CHAPTER 17 VHDL FOR SEQUENTIAL LOGIC
Instructor: Alexander Stoytchev
VHDL (VHSIC Hardware Description Language)
Instructor: Alexander Stoytchev
ECE 545 Lecture 6 Behavioral Modeling of Sequential-Circuit Building Blocks Mixing Design Styles Modeling of Circuits with a Regular Structure.
CPE 528: Lecture #5 Department of Electrical and Computer Engineering University of Alabama in Huntsville.
Behavioral Modeling of Sequential-Circuit Building Blocks
Sequntial-Circuit Building Blocks
Figure 8.1. The general form of a sequential circuit.
Instructor: Alexander Stoytchev
ECE 545 Lecture 9 Behavioral Modeling of Sequential-Circuit Building Blocks Mixing Design Styles Modeling of Circuits with a Regular Structure.
14 Digital Systems.
Instructor: Alexander Stoytchev
CprE / ComS 583 Reconfigurable Computing
Sequntial-Circuit Building Blocks
디 지 털 시 스 템 설 계 UP2 Kit를 이용한 카운터 설계
(Sequential-Circuit Building Blocks)
Presentation transcript:

Figure 7.1 Control of an alarm system Set Sensor Memory On ¤ Off Alarm element Reset Figure 7.1 Control of an alarm system

Figure 7.2 A simple memory element B Figure 7.2 A simple memory element

Figure 7.3 A controlled memory element Load A B Data Output TG1 TG2 Figure 7.3 A controlled memory element

Figure 7.4 A memory element with NOR gates Reset Set Q Figure 7.4 A memory element with NOR gates

Figure 7.5 A latch built with NOR gates Q Q a b Q a 0/11/0 (no change) 1 1 1 1 Q 1 1 b S (a) Circuit (b) Truth table t t t t t t t t t t 1 2 3 4 5 6 7 8 9 10 1 R 1 S 1 Q a ? 1 Q b ? Time (c) Timing diagram Figure 7.5 A latch built with NOR gates

Figure 7.6 Gated SR latch ¢ ( ) ¢ R R Clk S R Q t + 1 Q x x Q( t x x Q( t ) (no change) 1 Q( t ) (no change) Clk 1 1 1 1 1 Q 1 1 1 x S Q S S ¢ Clk (a) Circuit (b) Truth table R Q 1 Clk (d) Graphical symbol 1 R 1 S 1 Q ? 1 Q ? Time (c) Timing diagram Figure 7.6 Gated SR latch

Figure 7.7 Gated SR latch with NAND gates Q Clk Q R Figure 7.7 Gated SR latch with NAND gates

Figure 7.8 Gated D latch (b) Truth table (a) Circuit Clk D Q ( t + 1 ) S D x Q ( t ) (Data) 1 Q 1 1 1 Clk (b) Truth table Q R D Q (a) Circuit Clk Q t t t t (c) Graphical symbol 1 2 3 4 Clk D Q Time (d) Timing diagram Figure 7.8 Gated D latch

Figure 7.9 Setup and hold times su t h Clk D Q Figure 7.9 Setup and hold times

Figure 7.10 Master-slave D flip-flop Q Q m s D D Q D Q Q Clock Clk Q Clk Q Q (a) Circuit Clock D Q m D Q Q = Q s Q (b) Timing diagram (c) Graphical symbol Figure 7.10 Master-slave D flip-flop

Figure 7.11 A positive-edge-triggered D flip-flop 2 5 Q Clock P2 6 Q 3 D Q (b) Graphical symbol Clock 4 P4 D (a) Circuit Figure 7.11 A positive-edge-triggered D flip-flop

Figure 7.12 Comparison of level-sensitive and edge-triggered Q Q a Clock Clk Q Q a D Q Q b (b) Timing diagram Q Q b Clock (a) Circuit D Q Q c D Q Q Q c a Q b Q c Figure 7.12 Comparison of level-sensitive and edge-triggered

Figure 7.13 Master-slave D flip-flop with Clear and Preset Q Clock Q Clear (a) Circuit Preset D Q Q Clear (b) Graphical symbol Figure 7.13 Master-slave D flip-flop with Clear and Preset

Figure 7.14 Positive-edge-triggered D flip-flop with Clear and Preset Q Clock Preset Q D Q Q D Clear Clear (a) Circuit (b) Graphical symbol Figure 7.14 Positive-edge-triggered D flip-flop with Clear and Preset

Figure 7.15 Synchronous reset for a D flip-flop

Figure 7.16 T flip-flop (c) Graphical symbol (a) Circuit Q Q D Q Q (c) Graphical symbol T Q Q T Q ( t + 1 ) Clock Q ( t ) 1 Q ( t ) (a) Circuit (b) Truth table Clock T Q (d) Timing diagram Figure 7.16 T flip-flop

(a) Circuit ( ) ( ) ( ) (b) Truth table (c) Graphical symbol J D Q Q K Clock (a) Circuit J K Q ( t + 1 ) Q ( t ) J Q 1 1 1 K Q 1 1 Q ( t ) (b) Truth table (c) Graphical symbol Figure 7.17 JK flip-flop

Figure 7.18 A simple shift register Q Q Q Q 1 2 3 4 In D Q D Q D Q D Q Out Clock Q Q Q Q (a) Circuit In Q Q Q Q = Out 1 2 3 4 t 1 t 1 1 t 1 1 2 t 1 1 1 3 t 1 1 1 1 4 t 1 1 1 5 t 1 1 1 6 t 1 1 7 (b) A sample sequence Figure 7.18 A simple shift register

Figure 7.19 A simple shift register Parallel output Q Q Q Q 3 2 1 D Q D Q D Q D Q Q Q Q Q Serial Clock input Shift/Load Parallel input Figure 7.19 A simple shift register

Figure 7.20 A three-bit up-counter 1 T Q T Q T Q Clock Q Q Q Q Q Q 1 2 (a) Circuit Clock Q Q 1 Q 2 Count 1 2 3 4 5 6 7 (b) Timing diagram Figure 7.20 A three-bit up-counter

Figure 7.21 A three-bit down-counter Q T Q T Q Clock Q Q Q Q Q Q 1 2 (a) Circuit Clock Q Q 1 Q 2 Count 7 6 5 4 3 2 1 (b) Timing diagram Figure 7.21 A three-bit down-counter

Table 7.1 Derivation of the synchronous up-counter Clock cycle Q Q Q 2 1 Q changes 1 Q changes 1 1 2 2 1 3 1 1 4 1 5 1 1 6 1 1 7 1 1 1 8 Table 7.1 Derivation of the synchronous up-counter

Figure 7.22 A four-bit synchronous up-counter 1 T Q T Q T Q T Q Q Q Q Q 1 2 3 Clock Q Q Q Q (a) Circuit Clock Q Q 1 Q 2 Q 3 Count 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 1 (b) Timing diagram Figure 7.22 A four-bit synchronous up-counter

Figure 7.23 Inclusion of enable and clear capability Q T Q T Q T Q Clock Q Q Q Q Clear Figure 7.23 Inclusion of enable and clear capability

Figure 7.26 A modulo-6 counter with synchronous reset 1 Enable D Q D Q 1 1 D Q 2 2 Load Clock Clock (a) Circuit Clock Q Q 1 Q 2 Count 1 2 3 4 5 1 (b) Timing diagram Figure 7.26 A modulo-6 counter with synchronous reset

Figure 7.27 A modulo-6 counter with asynchronous reset 1 T Q T Q T Q Q Q Q 1 2 Clock Q Q Q (a) Circuit Clock Q Q 1 Q 2 Count 1 2 3 4 5 1 2 (b) Timing diagram Figure 7.27 A modulo-6 counter with asynchronous reset

Figure 7.28 A two-digit BCD counter 1 Enable D Q D Q 1 1 BCD D Q 2 2 D Q 3 3 Load Clock Clock Clear Enable D Q D Q 1 1 BCD D Q 1 2 2 D Q 3 3 Load Clock Figure 7.28 A two-digit BCD counter

Figure 7.30 Johnson counter Q Q Q 1 n – 1 D Q D Q D Q Q Q Q Reset Clock Figure 7.30 Johnson counter

Figure 7.31 Three types of storage elements in a schematic

Figure 7.32 Gated D latch generated by CAD tools Data Clock Latch Figure 7.32 Gated D latch generated by CAD tools

Figure 7.34 Timing simulation of storage elements

Figure 7.35 Instantiating a D flip-flop from a package LIBRARY ieee ; USE ieee.std_logic_1164.all ; LIBRARY altera ; USE altera.maxplus2.all ; ENTITY flipflop IS PORT ( D, Clock : IN STD_LOGIC ; Resetn, Presetn : IN STD_LOGIC ; Q : OUT STD_LOGIC ) ; END flipflop ; ARCHITECTURE Structure OF flipflop IS BEGIN dff_instance: dff PORT MAP ( D, Clock, Resetn, Presetn, Q ) ; END Structure ; Figure 7.35 Instantiating a D flip-flop from a package

USE ieee.std_logic_1164.all ; ENTITY implied IS LIBRARY ieee ; USE ieee.std_logic_1164.all ; ENTITY implied IS PORT ( A, B : IN STD_LOGIC ; AeqB : OUT STD_LOGIC ) ; END implied ; ARCHITECTURE Behavior OF implied IS BEGIN PROCESS ( A, B ) IF A = B THEN AeqB <= '1' ; END IF ; END PROCESS ; END Behavior ; Figure 7.36 Implied memory

Figure 7.37 Code for a gated D latch LIBRARY ieee ; USE ieee.std_logic_1164.all ; ENTITY latch IS PORT ( D, Clk : IN STD_LOGIC ; Q : OUT STD_LOGIC) ; END latch ; ARCHITECTURE Behavior OF latch IS BEGIN PROCESS ( D, Clk ) IF Clk = '1' THEN Q <= D ; END IF ; END PROCESS ; END Behavior ; Figure 7.37 Code for a gated D latch

Figure 7.38 Code for a D flip-flop LIBRARY ieee ; USE ieee.std_logic_1164.all ; ENTITY flipflop IS PORT ( D, Clock : IN STD_LOGIC ; Q : OUT STD_LOGIC) ; END flipflop ; ARCHITECTURE Behavior OF flipflop IS BEGIN PROCESS ( Clock ) IF Clock'EVENT AND Clock = '1' THEN Q <= D ; END IF ; END PROCESS ; END Behavior ; Figure 7.38 Code for a D flip-flop

Figure 7.39 Code for a D flip-flop using WAIT UNTIL LIBRARY ieee; USE ieee.std_logic_1164.all; ENTITY flipflop IS PORT ( D, Clock : IN STD_LOGIC ; Q : OUT STD_LOGIC ) ; END flipflop ; ARCHITECTURE Behavior OF flipflop IS BEGIN PROCESS WAIT UNTIL Clock'EVENT AND Clock = '1' ; Q <= D ; END PROCESS ; END Behavior ; Figure 7.39 Code for a D flip-flop using WAIT UNTIL

Figure 7.40 D flip-flop with asynchronous reset LIBRARY ieee ; USE ieee.std_logic_1164.all ; ENTITY flipflop IS PORT ( D, Resetn, Clock : IN STD_LOGIC ; Q : OUT STD_LOGIC) ; END flipflop ; ARCHITECTURE Behavior OF flipflop IS BEGIN PROCESS ( Resetn, Clock ) IF Resetn = '0' THEN Q <= '0' ; ELSIF Clock'EVENT AND Clock = '1' THEN Q <= D ; END IF ; END PROCESS ; END Behavior ; Figure 7.40 D flip-flop with asynchronous reset

Figure 7.41 D flip-flop with synchronous reset LIBRARY ieee ; USE ieee.std_logic_1164.all ; ENTITY flipflop IS PORT ( D, Resetn, Clock : IN STD_LOGIC ; Q : OUT STD_LOGIC) ; END flipflop ; ARCHITECTURE Behavior OF flipflop IS BEGIN PROCESS WAIT UNTIL Clock'EVENT AND Clock = '1' ; IF Resetn = '0' THEN Q <= '0' ; ELSE Q <= D ; END IF ; END PROCESS ; END Behavior ; Figure 7.41 D flip-flop with synchronous reset

Figure 7.42 The lpm_ff parameterized flip-flop module

Figure 7.43 An adder with registered feedback

Figure 7.44 Timing simulation

Figure 7.45 Instantiation of the lpm_shiftreg module LIBRARY ieee ; USE ieee.std_logic_1164.all ; LIBRARY lpm ; USE lpm.lpm_components.all ; ENTITY shift IS PORT ( Clock : IN STD_LOGIC ; Reset : IN STD_LOGIC ; Shiftin, Load : IN STD_LOGIC ; R : IN STD_LOGIC_VECTOR(3 DOWNTO 0) ; Q : OUT STD_LOGIC_VECTOR(3 DOWNTO 0) ) ; END shift ; ARCHITECTURE Structure OF shift IS BEGIN instance: lpm_shiftreg GENERIC MAP (LPM_WIDTH => 4, LPM_DIRECTION => "RIGHT") PORT MAP (data => R, clock => Clock, aclr => Reset, load => Load, shiftin => Shiftin, q => Q ) ; END Structure ; Figure 7.45 Instantiation of the lpm_shiftreg module

Figure 7.46 Code for an eight-bit register with asynchronous clear LIBRARY ieee ; USE ieee.std_logic_1164.all ; ENTITY reg8 IS PORT ( D : IN STD_LOGIC_VECTOR(7 DOWNTO 0) ; Resetn, Clock : IN STD_LOGIC ; Q : OUT STD_LOGIC_VECTOR(7 DOWNTO 0) ) ; END reg8 ; ARCHITECTURE Behavior OF reg8 IS BEGIN PROCESS ( Resetn, Clock ) IF Resetn = '0' THEN Q <= "00000000" ; ELSIF Clock'EVENT AND Clock = '1' THEN Q <= D ; END IF ; END PROCESS ; END Behavior ; Figure 7.46 Code for an eight-bit register with asynchronous clear

Figure 7.47 Code for an n-bit register with asynchronous clear LIBRARY ieee ; USE ieee.std_logic_1164.all ; ENTITY regn IS GENERIC ( N : INTEGER := 16 ) ; PORT ( D : IN STD_LOGIC_VECTOR(N-1 DOWNTO 0) ; Resetn, Clock : IN STD_LOGIC ; Q : OUT STD_LOGIC_VECTOR(N-1 DOWNTO 0) ) ; END regn ; ARCHITECTURE Behavior OF regn IS BEGIN PROCESS ( Resetn, Clock ) IF Resetn = '0' THEN Q <= (OTHERS => '0') ; ELSIF Clock'EVENT AND Clock = '1' THEN Q <= D ; END IF ; END PROCESS ; END Behavior ; Figure 7.47 Code for an n-bit register with asynchronous clear

USE ieee.std_logic_1164.all ; ENTITY muxdff IS LIBRARY ieee ; USE ieee.std_logic_1164.all ; ENTITY muxdff IS PORT ( D0, D1, Sel, Clock : IN STD_LOGIC ; Q : OUT STD_LOGIC ) ; END muxdff ; ARCHITECTURE Behavior OF muxdff IS BEGIN PROCESS WAIT UNTIL Clock'EVENT AND Clock = '1' ; IF Sel = '0' THEN Q <= D0 ; ELSE Q <= D1 ; END IF ; END PROCESS ; END Behavior ; Figure 7.48 Code for a D flip-flop with a 2-to-1 multiplexer on the D input

Figure 7.49 Hierarchical code for a four-bit shift register LIBRARY ieee ; USE ieee.std_logic_1164.all ; ENTITY shift4 IS PORT ( R : IN STD_LOGIC_VECTOR(3 DOWNTO 0) ; L, w, Clock : IN STD_LOGIC ; Q : BUFFER STD_LOGIC_VECTOR(3 DOWNTO 0) ) ; END shift4 ; ARCHITECTURE Structure OF shift4 IS COMPONENT muxdff PORT ( D0, D1, Sel, Clock : IN STD_LOGIC ; Q : OUT STD_LOGIC ) ; END COMPONENT ; BEGIN Stage3: muxdff PORT MAP ( w, R(3), L, Clock, Q(3) ) ; Stage2: muxdff PORT MAP ( Q(3), R(2), L, Clock, Q(2) ) ; Stage1: muxdff PORT MAP ( Q(2), R(1), L, Clock, Q(1) ) ; Stage0: muxdff PORT MAP ( Q(1), R(0), L, Clock, Q(0) ) ; END Structure ; Figure 7.49 Hierarchical code for a four-bit shift register

Figure 7.50 Alternative code for a shift register LIBRARY ieee ; USE ieee.std_logic_1164.all ; ENTITY shift4 IS PORT ( R : IN STD_LOGIC_VECTOR(3 DOWNTO 0) ; Clock : IN STD_LOGIC ; L, w : IN STD_LOGIC ; Q : BUFFER STD_LOGIC_VECTOR(3 DOWNTO 0) ) ; END shift4 ; ARCHITECTURE Behavior OF shift4 IS BEGIN PROCESS WAIT UNTIL Clock'EVENT AND Clock = '1' ; IF L = '1' THEN Q <= R ; ELSE Q(0) <= Q(1) ; Q(1) <= Q(2); Q(2) <= Q(3) ; Q(3) <= w ; END IF ; END PROCESS ; END Behavior ; Figure 7.50 Alternative code for a shift register

Figure 7.51 Code that reverses the ordering of statements LIBRARY ieee ; USE ieee.std_logic_1164.all ; ENTITY shift4 IS PORT ( R : IN STD_LOGIC_VECTOR(3 DOWNTO 0) ; Clock : IN STD_LOGIC ; L, w : IN STD_LOGIC ; Q : BUFFER STD_LOGIC_VECTOR(3 DOWNTO 0) ) ; END shift4 ; ARCHITECTURE Behavior OF shift4 IS BEGIN PROCESS WAIT UNTIL Clock'EVENT AND Clock = '1' ; IF L = '1' THEN Q <= R ; ELSE Q(3) <= w ; Q(2) <= Q(3) ; Q(1) <= Q(2); Q(0) <= Q(1) ; END IF ; END PROCESS ; END Behavior ; Figure 7.51 Code that reverses the ordering of statements

Figure 7.52 Code for an n-bit left-to-right shift register LIBRARY ieee ; USE ieee.std_logic_1164.all ; ENTITY shiftn IS GENERIC ( N : INTEGER := 8 ) ; PORT ( R : IN STD_LOGIC_VECTOR(N-1 DOWNTO 0) ; Clock : IN STD_LOGIC ; L, w : IN STD_LOGIC ; Q : BUFFER STD_LOGIC_VECTOR(N-1 DOWNTO 0) ) ; END shiftn ; ARCHITECTURE Behavior OF shiftn IS BEGIN PROCESS WAIT UNTIL Clock'EVENT AND Clock = '1' ; IF L = '1' THEN Q <= R ; ELSE Genbits: FOR i IN 0 TO N-2 LOOP Q(i) <= Q(i+1) ; END LOOP ; Q(N-1) <= w ; END IF ; END PROCESS ; END Behavior ; Figure 7.52 Code for an n-bit left-to-right shift register

Figure 7.53 Code for a four-bit up-counter LIBRARY ieee ; USE ieee.std_logic_1164.all ; USE ieee.std_logic_unsigned.all ; ENTITY upcount IS PORT ( Clock, Resetn, E : IN STD_LOGIC ; Q : OUT STD_LOGIC_VECTOR (3 DOWNTO 0)) ; END upcount ; ARCHITECTURE Behavior OF upcount IS SIGNAL Count : STD_LOGIC_VECTOR (3 DOWNTO 0) ; BEGIN PROCESS ( Clock, Resetn ) IF Resetn = '0' THEN Count <= "0000" ; ELSIF (Clock'EVENT AND Clock = '1') THEN IF E = '1' THEN Count <= Count + 1 ; ELSE Count <= Count ; END IF ; END PROCESS ; Q <= Count ; END Behavior ; Figure 7.53 Code for a four-bit up-counter

USE ieee.std_logic_1164.all ; ENTITY upcount IS LIBRARY ieee ; USE ieee.std_logic_1164.all ; ENTITY upcount IS PORT ( R : IN INTEGER RANGE 0 TO 15 ; Clock, Resetn, L : IN STD_LOGIC ; Q : BUFFER INTEGER RANGE 0 TO 15 ) ; END upcount ; ARCHITECTURE Behavior OF upcount IS BEGIN PROCESS ( Clock, Resetn ) IF Resetn = '0' THEN Q <= 0 ; ELSIF (Clock'EVENT AND Clock = '1') THEN IF L = '1' THEN Q <= R ; ELSE Q <= Q + 1 ; END IF; END PROCESS; END Behavior; Figure 7.54 A four-bit counter with parallel load, using INTEGER signals

Figure 7.55 Code for a down-counter LIBRARY ieee ; USE ieee.std_logic_1164.all ; ENTITY downcnt IS GENERIC ( modulus : INTEGER := 8 ) ; PORT ( Clock, L, E : IN STD_LOGIC ; Q : OUT INTEGER RANGE 0 TO modulus-1 ) ; END downcnt ; ARCHITECTURE Behavior OF downcnt IS SIGNAL Count : INTEGER RANGE 0 TO modulus-1 ; BEGIN PROCESS WAIT UNTIL (Clock'EVENT AND Clock = '1') ; IF E = '1' THEN IF L = '1' THEN Count <= modulus-1 ; ELSE Count <= Count-1 ; END IF ; END PROCESS; Q <= Count ; END Behavior ; Figure 7.55 Code for a down-counter

Figure 7.56 A digital system with k registers Data Extern Bus Clock R 1 R 2 Rk R 1 R 1 R 2 R 2 Rk Rk in out in out in out Control circuit Function Figure 7.56 A digital system with k registers

Figure 7.58 A shift-register control circuit 2 , R 3 R 1 , R 2 R 3 , R 1 out in out in out in w D Q D Q D Q Clock Q Q Q Reset Figure 7.58 A shift-register control circuit

Figure 7.59 A modified control circuit 2 , R 3 R 1 , R 2 R 3 , R 1 out in out in out in Reset w P D Q D Q D Q Clock Q Q Q Figure 7.59 A modified control circuit

, , , R 2 R 3 R 1 R 2 R 3 R 1 w D Q D Q D Q Clock Q Q Q Reset out in out in out in w D Q D Q D Q Clock Q Q Q Reset Figure 7.60 A control circuit that does not require flip-flop preset inputs

Figure 7.61 Using multiplexers to implement a bus 2 Rk in R 1 in R 2 in Rk Clock Data S Multiplexers S j – 1 Figure 7.61 Using multiplexers to implement a bus

Figure 7.62 Code for an n-bit register with enable LIBRARY ieee ; USE ieee.std_logic_1164.all ; ENTITY regn IS GENERIC ( N : INTEGER := 8 ) ; PORT ( R : IN STD_LOGIC_VECTOR(N-1 DOWNTO 0) ; Rin, Clock : IN STD_LOGIC ; Q : OUT STD_LOGIC_VECTOR(N-1 DOWNTO 0) ) ; END regn ; ARCHITECTURE Behavior OF regn IS BEGIN PROCESS WAIT UNTIL Clock'EVENT AND Clock = '1' ; IF Rin = '1' THEN Q <= R ; END IF ; END PROCESS ; END Behavior ; Figure 7.62 Code for an n-bit register with enable

Figure 7.63 Code for an n-bit tri-state buffer LIBRARY ieee ; USE ieee.std_logic_1164.all ; ENTITY trin IS GENERIC ( N : INTEGER := 8 ) ; PORT ( X : IN STD_LOGIC_VECTOR(N-1 DOWNTO 0) ; E : IN STD_LOGIC ; F : OUT STD_LOGIC_VECTOR(N-1 DOWNTO 0) ) ; END trin ; ARCHITECTURE Behavior OF trin IS BEGIN F <= (OTHERS => 'Z') WHEN E = '0' ELSE X ; END Behavior ; Figure 7.63 Code for an n-bit tri-state buffer

Figure 7.64 Code for the shift-register controller LIBRARY ieee ; USE ieee.std_logic_1164.all ; ENTITY shiftr IS -- left-to-right shift register with async reset GENERIC ( K : INTEGER := 4 ) ; PORT ( Resetn, Clock, w : IN STD_LOGIC ; Q : BUFFER STD_LOGIC_VECTOR(1 TO K) ) ; END shiftr ; ARCHITECTURE Behavior OF shiftr IS BEGIN PROCESS ( Resetn, Clock ) IF Resetn = '0' THEN Q <= (OTHERS => '0') ; ELSIF Clock'EVENT AND Clock = '1' THEN Genbits: FOR i IN K DOWNTO 2 LOOP Q(i) <= Q(i-1) ; END LOOP ; Q(1) <= w ; END IF ; END PROCESS ; END Behavior ; Figure 7.64 Code for the shift-register controller

Figure 7.65 Package and component declarations LIBRARY ieee ; USE ieee.std_logic_1164.all ; PACKAGE components IS COMPONENT regn -- register GENERIC ( N : INTEGER := 8 ) ; PORT ( R : IN STD_LOGIC_VECTOR(N-1 DOWNTO 0) ; Rin, Clock : IN STD_LOGIC ; Q : OUT STD_LOGIC_VECTOR(N-1 DOWNTO 0) ) ; END COMPONENT ; COMPONENT shiftr -- left-to-right shift register with async reset GENERIC ( K : INTEGER := 4 ) ; PORT ( Resetn, Clock, w : IN STD_LOGIC ; Q : BUFFER STD_LOGIC_VECTOR(1 TO K) ) ; END component ; COMPONENT trin -- tri-state buffers PORT ( X : IN STD_LOGIC_VECTOR(N-1 DOWNTO 0) ; E : IN STD_LOGIC ; F : OUT STD_LOGIC_VECTOR(N-1 DOWNTO 0) ) ; END components ; Figure 7.65 Package and component declarations

LIBRARY ieee ; USE ieee.std_logic_1164.all ; USE work.components.all ; ENTITY swap IS PORT ( Data : IN STD_LOGIC_VECTOR(7 DOWNTO 0) ; Resetn, w : IN STD_LOGIC ; Clock, Extern : IN STD_LOGIC ; RinExt : IN STD_LOGIC_VECTOR(1 TO 3) ; BusWires : INOUT STD_LOGIC_VECTOR(7 DOWNTO 0) ) ; END swap ; ARCHITECTURE Behavior OF swap IS SIGNAL Rin, Rout, Q : STD_LOGIC_VECTOR(1 TO 3) ; SIGNAL R1, R2, R3 : STD_LOGIC_VECTOR(7 DOWNTO 0) ; Figure 7-66A

BEGIN control: shiftr GENERIC MAP ( K => 3 ) PORT MAP ( Resetn, Clock, w, Q ) ; Rin(1) <= RinExt(1) OR Q(3) ; Rin(2) <= RinExt(2) OR Q(2) ; Rin(3) <= RinExt(3) OR Q(1) ; Rout(1) <= Q(2) ; Rout(2) <= Q(1) ; Rout(3) <= Q(3) ; tri_ext: trin PORT MAP ( Data, Extern, BusWires ) ; reg1: regn PORT MAP ( BusWires, Rin(1), Clock, R1 ) ; reg2: regn PORT MAP ( BusWires, Rin(2), Clock, R2 ) ; reg3: regn PORT MAP ( BusWires, Rin(3), Clock, R3 ) ; tri1: trin PORT MAP ( R1, Rout(1), BusWires ) ; tri2: trin PORT MAP ( R2, Rout(2), BusWires ) ; tri3: trin PORT MAP ( R3, Rout(3), BusWires ) ; END Behavior ; Fig 7-66Bb

Figure 7.67a Using multiplexers to implement a bus LIBRARY ieee ; USE ieee.std_logic_1164.all ; USE work.components.all ; ENTITY swapmux IS PORT ( Data : IN STD_LOGIC_VECTOR(7 DOWNTO 0) ; Resetn, w : IN STD_LOGIC ; Clock : IN STD_LOGIC ; RinExt : IN STD_LOGIC_VECTOR(1 TO 3) ; BusWires : BUFFER STD_LOGIC_VECTOR(7 DOWNTO 0) ) ; END swapmux ; ARCHITECTURE Behavior OF swapmux IS SIGNAL Rin, Q : STD_LOGIC_VECTOR(1 TO 3) ; SIGNAL S : STD_LOGIC_VECTOR(1 DOWNTO 0) ; SIGNAL R1, R2, R3 : STD_LOGIC_VECTOR(7 DOWNTO 0) ; BEGIN control: shiftr GENERIC MAP ( K => 3 ) PORT MAP ( Resetn, Clock, w, Q ) ; … con’t Figure 7.67a Using multiplexers to implement a bus

BEGIN control: shiftr GENERIC MAP ( K => 3 ) PORT MAP ( Resetn, Clock, w, Q ) ; Rin(1) <= RinExt(1) OR Q(3) ; Rin(2) <= RinExt(2) OR Q(2) ; Rin(3) <= RinExt(3) OR Q(1) ; Rout(1) <= Q(2) ; Rout(2) <= Q(1) ; Rout(3) <= Q(3) ; tri_ext: trin PORT MAP ( Data, Extern, BusWires ) ; reg1: regn PORT MAP ( BusWires, Rin(1), Clock, R1 ) ; reg2: regn PORT MAP ( BusWires, Rin(2), Clock, R2 ) ; reg3: regn PORT MAP ( BusWires, Rin(3), Clock, R3 ) ; tri1: trin PORT MAP ( R1, Rout(1), BusWires ) ; tri2: trin PORT MAP ( R2, Rout(2), BusWires ) ; tri3: trin PORT MAP ( R3, Rout(3), BusWires ) ; END Behavior ; Fig 7-67A Continued

Figure 7.67b Using multiplexers to implement a bus (con’t) Rin(1) <= RinExt(1) OR Q(3) ; Rin(2) <= RinExt(2) OR Q(2) ; Rin(3) <= RinExt(3) OR Q(1) ; reg1: regn PORT MAP ( BusWires, Rin(1), Clock, R1 ) ; reg2: regn PORT MAP ( BusWires, Rin(2), Clock, R2 ) ; reg3: regn PORT MAP ( BusWires, Rin(3), Clock, R3 ) ; encoder: WITH Q SELECT S <= "00" WHEN "000", "10" WHEN "100", "01" WHEN "010", "11" WHEN OTHERS ; muxes: --eight 4-to-1 multiplexers WITH S SELECT BusWires <= Data WHEN "00", R1 WHEN "01", R2 WHEN "10", R3 WHEN OTHERS ; END Behavior ; Figure 7.67b Using multiplexers to implement a bus (con’t)

Figure 7.68 Simplified code for describing a bus (ENTITY declaration not shown) ARCHITECTURE Behavior OF swapmux IS SIGNAL Rin, Q : STD_LOGIC_VECTOR(1 TO 3) ; SIGNAL R1, R2, R3 : STD_LOGIC_VECTOR(7 DOWNTO 0) ; BEGIN control: shiftr GENERIC MAP ( K => 3 ) PORT MAP ( Resetn, Clock, w, Q ) ; Rin(1) <= RinExt(1) OR Q(3) ; Rin(2) <= RinExt(2) OR Q(2) ; Rin(3) <= RinExt(3) OR Q(1) ; reg1: regn PORT MAP ( BusWires, Rin(1), Clock, R1 ) ; reg2: regn PORT MAP ( BusWires, Rin(2), Clock, R2 ) ; reg3: regn PORT MAP ( BusWires, Rin(3), Clock, R3 ) ; muxes: WITH Q SELECT BusWires <= Data WHEN "000", R2 WHEN "100", R1 WHEN "010", R3 WHEN OTHERS ; END Behavior ; Figure 7.68 Simplified code for describing a bus

Figure 7.69 Timing simulation

Figure 7.70 A digital system that implements a simple processor

Table 7.2 Operations performed in the processor

Figure 7.71 A part of the control circuit for the processor 1 2 3 y y y y 1 2 3 2-to-4 decoder w w En 1 1 Q Q Clock 1 Up-counter Clear Reset Figure 7.71 A part of the control circuit for the processor

Figure 7.72 The function registers and decoders X X X X Y Y Y Y 1 2 3 1 2 3 1 2 3 y y y y y y y y y y y y 1 2 3 1 2 3 1 2 3 2-to-4 decoder 2-to-4 decoder 2-to-4 decoder w w En w w En w w En 1 1 1 1 1 1 Clock Function Register FR in f f Rx Rx Ry Ry 1 1 1 Function Figure 7.72 The function registers and decoders

Table 7.3 Control signals asserted in each operation/time step

Figure 7.73 Code for a two-bit up-counter with asynchronous reset LIBRARY ieee ; USE ieee.std_logic_1164.all ; USE ieee.std_logic_unsigned.all ; ENTITY upcount IS PORT ( Clear, Clock : IN STD_LOGIC ; Q : BUFFER STD_LOGIC_VECTOR(1 DOWNTO 0) ) ; END upcount ; ARCHITECTURE Behavior OF upcount IS BEGIN upcount: PROCESS ( Clock ) IF (Clock'EVENT AND Clock = '1') THEN IF Clear = '1' THEN Q <= "00" ; ELSE Q <= Q + '1' ; END IF ; END IF; END PROCESS; END Behavior ; Figure 7.73 Code for a two-bit up-counter with asynchronous reset

Figure 7.74a Code for the processor LIBRARY ieee ; USE ieee.std_logic_1164.all ; USE ieee.std_logic_signed.all ; USE work.subccts.all ; ENTITY proc IS PORT ( Data : IN STD_LOGIC_VECTOR(7 DOWNTO 0) ; Reset, w : IN STD_LOGIC ; Clock : IN STD_LOGIC ; F, Rx, Ry : IN STD_LOGIC_VECTOR(1 DOWNTO 0) ; Done : BUFFER STD_LOGIC ; BusWires : INOUT STD_LOGIC_VECTOR(7 DOWNTO 0) ) ; END proc ; ARCHITECTURE Behavior OF proc IS SIGNAL Rin, Rout : STD_LOGIC_VECTOR(0 TO 3) ; SIGNAL Clear, High, AddSub : STD_LOGIC ; SIGNAL Extern, Ain, Gin, Gout, FRin : STD_LOGIC ; SIGNAL Count, Zero : STD_LOGIC_VECTOR(1 DOWNTO 0) ; SIGNAL T, I, X, Y : STD_LOGIC_VECTOR(0 TO 3) ; SIGNAL R0, R1, R2, R3 : STD_LOGIC_VECTOR(7 DOWNTO 0) ; SIGNAL A, Sum, G : STD_LOGIC_VECTOR(7 DOWNTO 0) ; SIGNAL Func, FuncReg : STD_LOGIC_VECTOR(1 TO 6) ; … con’t Figure 7.74a Code for the processor

Figure 7.74b Code for the processor (con’t) BEGIN Zero <= "00" ; High <= '1' ; Clear <= Reset OR Done OR (NOT w AND T(0)) ; counter: upcount PORT MAP ( Clear, Clock, Count ) ; decT: dec2to4 PORT MAP ( Count, High, T ); Func <= F & Rx & Ry ; FRin <= w AND T(0) ; functionreg: regn GENERIC MAP ( N => 6 ) PORT MAP ( Func, FRin, Clock, FuncReg ) ; decI: dec2to4 PORT MAP ( FuncReg(1 TO 2), High, I ) ; decX: dec2to4 PORT MAP ( FuncReg(3 TO 4), High, X ) ; decY: dec2to4 PORT MAP ( FuncReg(5 TO 6), High, Y ) ; Extern <= I(0) AND T(1) ; Done <= ((I(0) OR I(1)) AND T(1)) OR ((I(2) OR I(3)) AND T(3)) ; Ain <= (I(2) OR I(3)) AND T(1) ; Gin <= (I(2) OR I(3)) AND T(2) ; Gout <= (I(2) OR I(3)) AND T(3) ; AddSub <= I(3) ; … con’t Figure 7.74b Code for the processor (con’t)

Figure 7.74c Code for the processor (con’t) RegCntl: FOR k IN 0 TO 3 GENERATE Rin(k) <= ((I(0) OR I(1)) AND T(1) AND X(k)) OR ((I(2) OR I(3)) AND T(3) AND X(k)) ; Rout(k) <= (I(1) AND T(1) AND Y(k)) OR ((I(2) OR I(3)) AND ((T(1) AND X(k)) OR (T(2) AND Y(k)))) ; END GENERATE RegCntl ; tri_extern: trin PORT MAP ( Data, Extern, BusWires ) ; reg0: regn PORT MAP ( BusWires, Rin(0), Clock, R0 ) ; reg1: regn PORT MAP ( BusWires, Rin(1), Clock, R1 ) ; reg2: regn PORT MAP ( BusWires, Rin(2), Clock, R2 ) ; reg3: regn PORT MAP ( BusWires, Rin(3), Clock, R3 ) ; tri0: trin PORT MAP ( R0, Rout(0), BusWires ) ; tri1: trin PORT MAP ( R1, Rout(1), BusWires ) ; tri2: trin PORT MAP ( R2, Rout(2), BusWires ) ; tri3: trin PORT MAP ( R3, Rout(3), BusWires ) ; regA: regn PORT MAP ( BusWires, Ain, Clock, A ) ; alu: WITH AddSub SELECT Sum <= A + BusWires WHEN '0', A - BusWires WHEN OTHERS ; regG: regn PORT MAP ( Sum, Gin, Clock, G ) ; triG: trin PORT MAP ( G, Gout, BusWires ) ; END Behavior ; Figure 7.74c Code for the processor (con’t)

Figure 7.75a Alternative code for the processor … (ENTITY declaration not shown) ARCHITECTURE Behavior OF proc IS SIGNAL X, Y, Rin, Rout : STD_LOGIC_VECTOR(0 TO 3) ; SIGNAL Clear, High, AddSub : STD_LOGIC ; SIGNAL Extern, Ain, Gin, Gout, FRin : STD_LOGIC ; SIGNAL Count, Zero, T, I : STD_LOGIC_VECTOR(1 DOWNTO 0) ; SIGNAL R0, R1, R2, R3 : STD_LOGIC_VECTOR(7 DOWNTO 0) ; SIGNAL A, Sum, G : STD_LOGIC_VECTOR(7 DOWNTO 0) ; SIGNAL Func, FuncReg, Sel : STD_LOGIC_VECTOR(1 TO 6) ; BEGIN Zero <= "00" ; High <= '1' ; Clear <= Reset OR Done OR (NOT w AND NOT T(1) AND NOT T(0)) ; counter: upcount PORT MAP ( Clear, Clock, Count ) ; T <= Count ; Func <= F & Rx & Ry ; FRin <= w AND NOT T(1) AND NOT T(0) ; functionreg: regn GENERIC MAP ( N => 6 ) PORT MAP ( Func, FRin, Clock, FuncReg ) ; I <= FuncReg(1 TO 2) ; decX: dec2to4 PORT MAP ( FuncReg(3 TO 4), High, X ) ; decY: dec2to4 PORT MAP ( FuncReg(5 TO 6), High, Y ) ; controlsignals: PROCESS ( T, I, X, Y ) … con’t Figure 7.75a Alternative code for the processor

Figure 7.75b Alternative code for the processor (con’t) Extern <= '0' ; Done <= '0' ; Ain <= '0' ; Gin <= '0' ; Gout <= '0' ; AddSub <= '0' ; Rin <= "0000" ; Rout <= "0000" ; CASE T IS WHEN "00" => -- no signals asserted in time step T0 WHEN "01" => -- define signals asserted in time step T1 CASE I IS WHEN "00" => -- Load Extern <= '1' ; Rin <= X ; Done <= '1' ; WHEN "01" => -- Move Rout <= Y ; Rin <= X ; Done <= '1' ; WHEN OTHERS => -- Add, Sub Rout <= X ; Ain <= '1' ; END CASE ; WHEN "10" => -- define signals asserted in time step T2 WHEN "10" => -- Add Rout <= Y ; Gin <= '1' ; WHEN "11" => -- Sub Rout <= Y ; AddSub <= '1' ; Gin <= '1' ; WHEN OTHERS => -- Load, Move WHEN OTHERS => -- define signals asserted in time step T3 Figure 7.75b Alternative code for the processor (con’t)

Figure 7.75c Alternative code for the processor (con’t) WHEN "00" => -- Load WHEN "01" => -- Move WHEN OTHERS => -- Add, Sub Gout <= '1' ; Rin <= X ; Done <= '1' ; END CASE ; END PROCESS ; reg0: regn PORT MAP ( BusWires, Rin(0), Clock, R0 ) ; reg1: regn PORT MAP ( BusWires, Rin(1), Clock, R1 ) ; reg2: regn PORT MAP ( BusWires, Rin(2), Clock, R2 ) ; reg3: regn PORT MAP ( BusWires, Rin(3), Clock, R3 ) ; regA: regn PORT MAP ( BusWires, Ain, Clock, A ) ; alu: WITH AddSub SELECT Sum <= A + BusWires WHEN '0', A - BusWires WHEN OTHERS ; regG: regn PORT MAP ( Sum, Gin, Clock, G ) ; Sel <= Rout & Gout & Extern ; WITH Sel SELECT BusWires <= R0 WHEN "100000", R1 WHEN "010000", R2 WHEN "001000", R3 WHEN "000100", G WHEN "000010", Data WHEN OTHERS ; END Behavior ; Figure 7.75c Alternative code for the processor (con’t)

Figure 7.76 Timing simulation of the processor

Figure 7.78a Code for a two-digit BCD counter LIBRARY ieee ; USE ieee.std_logic_1164.all ; USE ieee.std_logic_unsigned.all ; ENTITY BCDcount IS PORT ( Clock : IN STD_LOGIC ; Clear, E : IN STD_LOGIC ; BCD1, BCD0 : BUFFER STD_LOGIC_VECTOR(3 DOWNTO 0) ) ; END BCDcount ; ARCHITECTURE Behavior OF BCDcount IS BEGIN PROCESS ( Clock ) IF Clock'EVENT AND Clock = '1' THEN IF Clear = '1' THEN BCD1 <= "0000" ; BCD0 <= "0000" ; … con’t Figure 7.78a Code for a two-digit BCD counter

Figure 7.78b Code for a two-digit BCD counter (con’t) ELSIF E = '1' THEN IF BCD0 = "1001" THEN BCD0 <= "0000" ; IF BCD1 = "1001" THEN BCD1 <= "0000"; ELSE BCD1 <= BCD1 + '1' ; END IF ; BCD0 <= BCD0 + '1' ; END IF; END PROCESS; END Behavior ; Figure 7.78b Code for a two-digit BCD counter (con’t)

Figure 7.79a Code for the reaction timer LIBRARY ieee ; USE ieee.std_logic_1164.all ; ENTITY reaction IS PORT ( c9, Reset : IN STD_LOGIC ; w, Pushn : IN STD_LOGIC ; LEDn : OUT STD_LOGIC ; Digit1, Digit0 : BUFFER STD_LOGIC_VECTOR(1 TO 7) ) ; END reaction ; ARCHITECTURE Behavior OF reaction IS COMPONENT BCDcount PORT ( Clock : IN STD_LOGIC ; Clear, E : IN STD_LOGIC ; BCD1, BCD0 : BUFFER STD_LOGIC_VECTOR(3 DOWNTO 0) ) ; END COMPONENT ; COMPONENT seg7 PORT ( bcd : IN STD_LOGIC_VECTOR(3 DOWNTO 0) ; leds : OUT STD_LOGIC_VECTOR(1 TO 7) ) ; SIGNAL LED : STD_LOGIC ; SIGNAL BCD1, BCD0 : STD_LOGIC_VECTOR(3 DOWNTO 0) ; … con’t Figure 7.79a Code for the reaction timer

Figure 7.79b Code for the reaction timer (con’t) BEGIN flipflop: PROCESS WAIT UNTIL c9'EVENT AND c9 = '1' ; IF Pushn = '0' THEN LED <= '0' ; ELSIF w = '1' THEN LED <= '1' ; END IF ; END PROCESS ; LEDn <= NOT LED ; counter: BCDcount PORT MAP ( c9, Reset, LED, BCD1, BCD0 ) ; seg1 : seg7 PORT MAP ( BCD1, Digit1 ) ; seg0 : seg7 PORT MAP ( BCD0, Digit0 ) ; END Behavior ; Figure 7.79b Code for the reaction timer (con’t)

Figure 7.80 Simulation of the reaction-timer circuit

Figure P7.1 Timing diagram for problem 7.1 Clock D Figure P7.1 Timing diagram for problem 7.1

Figure P7.2 Circuit for problem 7.9 A D C E B Figure P7.2 Circuit for problem 7.9

Figure P7.3 The circuit for problem 7.18 Q Q Q 1 2 1 T Q T Q T Q Clock Q Q Q Figure P7.3 The circuit for problem 7.18

Figure P7.4 The circuit for problem 7.19 J S Q S Q Q Clock Clk Clk R Q R Q Q K Figure P7.4 The circuit for problem 7.19

Figure P7.5 A ring oscillator

Figure P7.6 Timing of signals for problem 7.34 Reset Interval 100 ns Figure P7.6 Timing of signals for problem 7.34

Figure P7.7 Circuit and timing diagram for problem 7.35 Q Clock Q A Clock 1 1 D 1 A 1 Q Figure P7.7 Circuit and timing diagram for problem 7.35

Figure P7.8 Timing diagram for problem 7.36 Clock 1 1 Start 1 f 1 g Figure P7.8 Timing diagram for problem 7.36