200 likes | 321 Views
Discussed in class and on Fridays. FSMs (only synchronous, with asynchronous reset) Moore Mealy Rabin-Scott Generalized register: With D FFs, With T FFs, transitions Iterative circuits (using decomposition to one dimensional, one-directional iterative circuits specified as FSMs)
E N D
Discussed in class and on Fridays • FSMs (only synchronous, with asynchronous reset) • Moore • Mealy • Rabin-Scott • Generalized register: • With D FFs, • With T FFs, transitions • Iterative circuits (using decomposition to one dimensional, one-directional iterative circuits specified as FSMs) • Trade-off between FSM and iterative circuit • Parallel and serial adder • ALU with arithmetic and logic part. • Realization of all functions of 2 variables • Realization of all symmetric functions. • Generalization of generalized register to SIMD architecture • GAPP processor • Sequential Controller (SAT example) • Pipelined architecture for vector processing • Linear Systolic array for convolution • Generate Statements
Iterative circuit (one dimensional) Iterative circuit (general, n-dimensional) Finite state machine Professor Perkowski wants you to select a good design pattern to get an A in this class and become a talented designer Generalized register pipelined Data Path SIMD Butterfly combinational Sequential controller systolic
Regular VHDL Structures • Iterative Circuits Are Composed of Many Identical Circuits • Ripple-carry (RC) adder • RAM • Counters • Comparators
Generate Statement • Use Generate Statement to Reduce Coding Effort • Can Include Any Concurrent Statement Including Another Generate Statement • Does Not Execute Directly, But Expands into Code Which Does Execute
Generate Statement • Automatically Generates Multiple Component Instantiations • Two Kinds of Statements • Iteration • FOR . . . GENERATE • Conditional • IF . . . GENERATE
Iteration: FOR Generate • Instantiates Identical Components • Syntax of FOR identifier : FOR N IN 1 TO 8 GENERATE concurrent-statements END GENERATEname ; • N is a constant and cannot be changed • “name” is required
Conditional: IF GENERATE • Takes Care of Boundary Conditions • Syntax of IF identifier : IF (boolean expression) GENERATE concurrent-statements END GENERATEname ; • Cannot use “else” or “ifelse” clauses
Generate e.g., Ripple Carry (R-C) Adder ENTITY RCAdder_16 IS PORT ( A, B :IN Bit_Vector(15 downto 0); Cforce :IN Bit ; Sum :OUT Bit_Vector(15 downto 0); Cout :OUT Bit ) ; END RCAdder_16 ;
Generate e.g., R-C Adder ARCHITECTURE Generate_S OF RCAdder_16 IS COMPONENT Full_Adder --defined elsewhere PORT ( A, B, Cin :IN bit ; S, Cout :OUT bit ); END COMPONENTFull_Adder ; SIGNAL Int_C :BIT_VECTOR (15 DOWNTO 0);
Generate e.g., R-C Adder BEGIN--RC Adder All_Bits: FOR I IN15 DOWNTO 0GENERATE LSB : IF (I = 0) GENERATE BEGIN S0: Full_Adder PORT MAP ( A(I), B(I), Cforce, Sum(I), Int_C(I) ); END GENERATES0 ;
Generate e.g., R-C Adder Middle_bits: IF ( I < 15 AND I > 0 ) GENERATE BEGIN SI: Full_Adder PORT MAP(A(I), B(I), Int_C(I-1), Sum(I), Int_C(I) ); END GENERATESI;
Generate e.g., R-C Adder MSB: IF ( I = 15 ) GENERATE BEGIN S15: Full_Adder PORT MAP(A(I), B(I), Int_C(I-1), Sum(I), Cout ); END GENERATEMSB; END GENERATEAll_Bits END Generate_S ;
Unconstrained Ports • Entity Declarations Can Have Ports Defined Using Arrays Without Explicitly Including the Size of the Array • Leads to General Specification of Iterative Circuit • Uses Predefined Array Attribute ‘LENGTH
Generate e.g., R-C Adder ENTITY RCAdder_N IS PORT (A, B :IN Bit_Vector; Cforce :IN Bit; Sum :OUT Bit_Vector ; Cout :OUT Bit) ; END RCAdder_N ;
Generate e.g., R-C Adder ARCHITECTURE Generate_S OF RCAdder_N IS COMPONENT Full_Adder --defined elsewhere PORT ( A, B, Cin :IN bit; S, Cout :OUT bit) ; END COMPONENTFull_Adder ; SIGNAL Int_C :BIT_VECTOR ( (A’LENGTH - 1) DOWNTO 0); Uses Predefined Array Attribute ‘LENGTH
Generate e.g., R-C Adder BEGIN --RC Adder All_Bits: FORI IN(A’LENGTH -1) DOWNTO 0 GENERATE LSB: IF (I = 0) GENERATE BEGIN S0: Full_Adder PORT MAP( A(I), B(I), Cforce, Sum(I), Int_C(I)); END GENERATES0 ; For primary input, not iterative carry Please remember that FOR used here is for structure description. It is different than LOOP used in behavioral descriptions in future
Generate e.g., Ripple-Carry- (R-C) Adder Middle_bits: IF( I < ( A’LENGTH - 1 ) AND I > 0 )GENERATE BEGIN SI: Full_Adder PORT MAP ( A(I), B(I), C(I-1), Sum(I), Int_C(I) ); END GENERATESI ;
Generate e.g., R-C Adder MSB: IF( I = A’LENGTH - 1 ) GENERATE BEGIN SN: Full_Adder PORT MAP (A(I), B(I), INT_C(I-1), Sum(I), Cout ); END GENERATEMSB; END GENERATEAll_Bits END Generate_S ; For primary output, not iterative carry out
Problems for students to think about • Generate statement for one dimensional combinational regular structures. • Generate statement for two-dimensional combinational regular structures. • Generate statement for many dimensional circuits. • Generate statement for regular structures of finite state machines and generalized shift registers. • How to describe GAPP processor and similar FPGA structures using “Generate”. • Importance of the “generalized register” model as a prototype of many combinational, sequential, cellular and systolic circuits.
Slides used Prof. K. J. Hintz Department of Electrical and Computer Engineering George Mason University