ECE 545 Lecture 5 Data Flow Description of
- Slides: 67
ECE 545 Lecture 5 Data Flow Description of Combinational-Circuit Building Blocks George Mason University
Required reading • P. Chu, RTL Hardware Design using VHDL Chapter 7, Combinational Circuit Design: Practice 2
Fixed Shifters & Rotators ECE 448 – FPGA and ASIC Design with VHDL 3
Fixed Logical Shift Right in VHDL SIGNAL A : SIGNAL C: STD_LOGIC_VECTOR(3 DOWNTO 0); A(3) A(2) A(1) A(0) 4 A A >>1 L C C 4 ‘ 0’ A(3) A(2) A(1) C= 4
Fixed Arithmetic Shift Right in VHDL SIGNAL A : SIGNAL C: STD_LOGIC_VECTOR(3 DOWNTO 0); A(3) A(2) A(1) A(0) 4 A A >>1 A C C 4 A(3) A(2) A(1) C= 5
Fixed Rotation in VHDL SIGNAL A : SIGNAL C: STD_LOGIC_VECTOR(3 DOWNTO 0); 4 A(3) A(2) A(1) A(0) A A <<< 1 C C 4 A(2) A(1) A(0) A(3) 6
Multiplexers ECE 448 – FPGA and ASIC Design with VHDL 7
2 -to-1 Multiplexer s w 0 0 w 1 1 f (a) Graphical symbol s f 0 w 0 1 w 1 (b) Truth table 8
VHDL code for a 2 -to-1 Multiplexer LIBRARY ieee ; USE ieee. std_logic_1164. all ; ENTITY mux 2 to 1 IS PORT ( w 0, w 1, s : IN STD_LOGIC ; f : OUT STD_LOGIC ) ; END mux 2 to 1 ; ARCHITECTURE dataflow OF mux 2 to 1 IS BEGIN f <= w 0 WHEN s = '0' ELSE w 1 ; END dataflow ; 9
Cascade of two multiplexers w 3 0 w 2 1 0 w 1 y 1 s 2 s 1 10
VHDL code for a cascade of two multiplexers LIBRARY ieee ; USE ieee. std_logic_1164. all ; ENTITY mux_cascade IS PORT ( w 1, w 2, w 3: IN STD_LOGIC ; s 1, s 2 : IN STD_LOGIC ; f : OUT STD_LOGIC ) ; END mux_cascade ; ARCHITECTURE dataflow OF mux 2 to 1 IS BEGIN f <= w 1 WHEN s 1 = ‘ 1' ELSE w 2 WHEN s 2 = ‘ 1’ ELSE w 3 ; END dataflow ; 11
4 -to-1 Multiplexer s 0 s 1 w w 0 00 1 01 2 10 3 11 (a) Graphic symbol f s 1 s 0 f 0 0 w 0 1 w 1 0 w 1 1 w 0 1 2 3 (b) Truth table 12
VHDL code for a 4 -to-1 Multiplexer LIBRARY ieee ; USE ieee. std_logic_1164. all ; ENTITY mux 4 to 1 IS PORT ( w 0, w 1, w 2, w 3 s f END mux 4 to 1 ; : IN : OUT STD_LOGIC ; STD_LOGIC_VECTOR(1 DOWNTO 0) ; STD_LOGIC ) ; ARCHITECTURE dataflow OF mux 4 to 1 IS BEGIN WITH s SELECT f <= w 0 WHEN "00", w 1 WHEN "01", w 2 WHEN "10", w 3 WHEN OTHERS ; END dataflow ; 13
Decoders ECE 448 – FPGA and ASIC Design with VHDL 14
2 -to-4 Decoder En w w 1 0 y y 3 2 1 0 0 0 1 1 0 0 1 1 0 0 x x 0 0 (a) Truth table w 1 w 0 En y 3 y 2 y 1 y 0 (b) Graphical symbol 15
VHDL code for a 2 -to-4 Decoder LIBRARY ieee ; USE ieee. std_logic_1164. all ; ENTITY dec 2 to 4 IS PORT ( w : IN En : IN y : OUT END dec 2 to 4 ; STD_LOGIC_VECTOR(1 DOWNTO 0) ; STD_LOGIC_VECTOR(3 DOWNTO 0) ) ; ARCHITECTURE dataflow OF dec 2 to 4 IS SIGNAL Enw : STD_LOGIC_VECTOR(2 DOWNTO 0) ; BEGIN Enw <= En & w ; WITH Enw SELECT y <= “ 0001" WHEN "100", "0010" WHEN "101", "0100" WHEN "110", “ 1000" WHEN "111", "0000" WHEN OTHERS ; END dataflow ; 16
Encoders ECE 448 – FPGA and ASIC Design with VHDL 17
Priority Encoder w 0 y 0 w 1 y 1 w 2 z w 3 w 2 w 1 w 0 0 0 1 x x 0 1 x x x y 1 y 0 z d 0 0 1 1 1 1 d 0 1 18
VHDL code for a Priority Encoder LIBRARY ieee ; USE ieee. std_logic_1164. all ; ENTITY priority IS PORT ( w : IN y : OUT z : OUT END priority ; STD_LOGIC_VECTOR(3 DOWNTO 0) ; STD_LOGIC_VECTOR(1 DOWNTO 0) ; STD_LOGIC ) ; ARCHITECTURE dataflow OF priority IS BEGIN y <= "11" WHEN w(3) = '1' ELSE "10" WHEN w(2) = '1' ELSE "01" WHEN w(1) = '1' ELSE "00" ; z <= '0' WHEN w = "0000" ELSE '1' ; END dataflow ; 19
Adders ECE 448 – FPGA and ASIC Design with VHDL 20
Adder mod 28 8 8 X Y S 8 21
VHDL code for an Adder mod 28 LIBRARY ieee ; USE ieee. std_logic_1164. all ; USE ieee. std_logic_unsigned. all ; ENTITY adder 16 IS PORT ( X Y S END adder 16 ; : IN : OUT STD_LOGIC_VECTOR(7 DOWNTO 0) ; STD_LOGIC_VECTOR(7 DOWNTO 0) ) ; ARCHITECTURE dataflow OF adder 16 IS BEGIN S <= X + Y ; END dataflow ; 22
16 -bit Unsigned Adder 16 16 X Y Cout Cin S 16 23
Operations on Unsigned Numbers For operations on unsigned numbers USE ieee. std_logic_unsigned. all and signals of the type STD_LOGIC_VECTOR OR USE ieee. numeric_std. all, signals of the type UNSIGNED and conversion functions: std_logic_vector(), unsigned() 24
Signed and Unsigned Types Behave exactly like STD_LOGIC_VECTOR plus, they determine whether a given vector should be treated as a signed or unsigned number. Require USE ieee. numeric_std. all; 25
VHDL code for a 16 -bit Unsigned Adder LIBRARY ieee ; USE ieee. std_logic_1164. all ; USE ieee. std_logic_unsigned. all ; ENTITY adder 16 IS PORT ( Cin X Y S Cout END adder 16 ; : IN : OUT STD_LOGIC ; STD_LOGIC_VECTOR(15 DOWNTO 0) ; STD_LOGIC ) ; ARCHITECTURE dataflow OF adder 16 IS SIGNAL Sum : STD_LOGIC_VECTOR(16 DOWNTO 0) ; BEGIN Sum <= ('0' & X) + Y + Cin ; S <= Sum(15 DOWNTO 0) ; Cout <= Sum(16) ; END dataflow ; 26
Addition of Unsigned Numbers (1) LIBRARY ieee ; USE ieee. std_logic_1164. all ; USE ieee. numeric_std. all ; ENTITY adder 16 IS PORT ( Cin X Y S Cout END adder 16 ; : IN : OUT STD_LOGIC ; STD_LOGIC_VECTOR(15 DOWNTO 0) ; STD_LOGIC ) ; 27
Addition of Unsigned Numbers (2) ARCHITECTURE dataflow OF adder 16 IS SIGNAL Xu : UNSIGNED(15 DOWNTO 0); SIGNAL Yu: UNSIGNED(15 DOWNTO 0); SIGNAL Su : UNSIGNED(16 DOWNTO 0) ; BEGIN Xu <= unsigned(X); Yu <= unsigned(Y); Su <= ('0' & Xu) + Yu + unsigned(‘ 0’ & Cin) ; S <= std_logic_vector(Su(15 DOWNTO 0)) ; Cout <= Su(16) ; END dataflow ; 28
Operations on Signed Numbers For operations on signed numbers USE ieee. std_logic_signed. all and signals of the type STD_LOGIC_VECTOR OR USE ieee. numeric_std. all, signals of the type SIGNED, and conversion functions: std_logic_vector(), signed() 29
Multipliers ECE 448 – FPGA and ASIC Design with VHDL 30
Unsigned vs. Signed Multiplication Unsigned Signed 1111 x 1111 15 x 15 1111 x 1111 -1 x -1 11100001 225 00000001 1 31
8 x 8 -bit Unsigned Multiplier 8 8 a b * c U 16 32
Multiplication of unsigned numbers LIBRARY ieee; USE ieee. std_logic_1164. all; USE ieee. std_logic_unsigned. all ; entity multiply is port( a : in STD_LOGIC_VECTOR(7 downto 0); b : in STD_LOGIC_VECTOR(7 downto 0); c : out STD_LOGIC_VECTOR(15 downto 0) ); end multiply; architecture dataflow of multiply is begin c <= a * b; end dataflow; 33
8 x 8 -bit Signed Multiplier 8 8 a b * c S 16 34
Multiplication of signed numbers LIBRARY ieee; USE ieee. std_logic_1164. all; USE ieee. std_logic_signed. all ; entity multiply is port( a : in STD_LOGIC_VECTOR(7 downto 0); b : in STD_LOGIC_VECTOR(7 downto 0); c : out STD_LOGIC_VECTOR(15 downto 0) ); end multiply; architecture dataflow of multiply is begin c <= a * b; end dataflow; 35
8 x 8 -bit Unsigned and Signed Multiplier 8 16 8 a b cu cs 16 36
Multiplication of signed and unsigned numbers LIBRARY ieee; USE ieee. std_logic_1164. all; USE ieee. numeric_std. all ; entity multiply is port( a : in STD_LOGIC_VECTOR(7 downto 0); b : in STD_LOGIC_VECTOR(7 downto 0); cu : out STD_LOGIC_VECTOR(15 downto 0); cs : out STD_LOGIC_VECTOR(15 downto 0) ); end multiply; architecture dataflow of multiply is begin -- signed multiplication cs <= STD_LOGIC_VECTOR(SIGNED(a)*SIGNED(b)); -- unsigned multiplication cu <= STD_LOGIC_VECTOR(UNSIGNED(a)*UNSIGNED(b)); end dataflow; 37
Comparators ECE 448 – FPGA and ASIC Design with VHDL 38
4 -bit Unsigned Number Comparator 4 4 A B Aeq. B Agt. B Alt. B U 39
VHDL code for a 4 -bit Unsigned Number Comparator LIBRARY ieee ; USE ieee. std_logic_1164. all ; USE ieee. std_logic_unsigned. all ; ENTITY compare IS PORT ( A, B : IN Aeq. B, Agt. B, Alt. B : OUT END compare ; STD_LOGIC_VECTOR(3 DOWNTO 0) ; STD_LOGIC ) ; ARCHITECTURE dataflow OF compare IS BEGIN Aeq. B <= '1' WHEN A = B ELSE '0' ; Agt. B <= '1' WHEN A > B ELSE '0' ; Alt. B <= '1' WHEN A < B ELSE '0' ; END dataflow ; 40
VHDL code for a 4 -bit Signed Number Comparator LIBRARY ieee ; USE ieee. std_logic_1164. all ; USE ieee. std_logic_signed. all ; ENTITY compare IS PORT ( A, B : IN Aeq. B, Agt. B, Alt. B : OUT END compare ; STD_LOGIC_VECTOR(3 DOWNTO 0) ; STD_LOGIC ) ; ARCHITECTURE dataflow OF compare IS BEGIN Aeq. B <= '1' WHEN A = B ELSE '0' ; Agt. B <= '1' WHEN A > B ELSE '0' ; Alt. B <= '1' WHEN A < B ELSE '0' ; END dataflow ; 41
Arithmetic operations Synthesizable arithmetic operations: • Addition, + • Subtraction, • Comparisons, >, >=, <, <= • Multiplication, * • Division by a power of 2, /2**6 (equivalent to right shift) 42
Arithmetic operations The result of synthesis of an arithmetic operation is a - combinational circuit - without pipelining. The exact internal architecture used (and thus delay and area of the circuit) may depend on the timing constraints specified during synthesis (e. g. , the requested maximum clock frequency). 43
Integer Types Operations on signals of the integer types: INTEGER, NATURAL, and their sybtypes, such as TYPE day_of_month IS RANGE 1 TO 31; are synthesizable in the range -(231 -1). . 231 -1 for INTEGERs and their subtypes 0. . 231 -1 for NATURALs and their subtypes 44
Integer Types Operations on signals (variables) of the integer types: INTEGER, NATURAL, are less flexible and more difficult to control than operations on signals (variables) of the type STD_LOGIC_VECTOR UNSIGNED, and thus are recommened to be avoided by beginners. 45
ROM ECE 448 – FPGA and ASIC Design with VHDL 46
8 -bit Variable Rotator Left 3 Addr 8 x 16 ROM Dout 16 C 47
Instruction ROM example (1) LIBRARY ieee; USE ieee. std_logic_1164. all; USE ieee. numeric_std. all; ENTITY rom IS PORT ( Addr : IN STD_LOGIC_VECTOR(2 DOWNTO 0); Dout : OUT STD_LOGIC_VECTOR(15 DOWNTO 0) ); END rom; 48
Instruction ROM example (2) ARCHITECTURE dataflow OF rom IS SIGNAL temp: INTEGER RANGE 0 TO 7; TYPE vector_array IS ARRAY (0 to 7) OF STD_LOGIC_VECTOR(15 DOWNTO 0); CONSTANT memory : vector_array : = ( X” 800 A", X"D 459", X"A 870", X"7853", X"650 D", X"642 F", X"F 742", X"F 548"); BEGIN temp <= to_integer(unsigned(Addr)); Dout <= memory(temp); END dataflow; 49
Buffers ECE 448 – FPGA and ASIC Design with VHDL 50
Tri-state Buffer e x f e= 0 (a) A tri-state buffer e x f 0 0 1 1 Z Z 0 1 0 1 x x f e= 1 f (b) Equivalent circuit (c) Truth table 51
Four types of Tri-state Buffers 52
Tri-state Buffer – example (1) LIBRARY ieee; USE ieee. std_logic_1164. all; ENTITY tri_state IS PORT ( ena: IN STD_LOGIC; input: IN STD_LOGIC; output: OUT STD_LOGIC ); END tri_state; 53
Tri-state Buffer – example (2) ARCHITECTURE dataflow OF tri_state IS BEGIN output <= input WHEN (ena = ‘ 1’) ELSE ‘Z’; END dataflow; 54
MLU Example 55
MLU Block Diagram A 0 A 1 MUX_0 MUX_4_1 1 NEG_A MUX_1 MUX_2 Y 1 IN 0 IN 1 IN 2 0 OUTPUT SEL 0 IN 3 SEL 1 1 Y NEG_Y B 0 B 1 L 0 1 MUX_3 NEG_B 56
MLU: Entity Declaration LIBRARY ieee; USE ieee. std_logic_1164. all; ENTITY mlu IS PORT( NEG_A : IN STD_LOGIC; NEG_B : IN STD_LOGIC; NEG_Y : IN STD_LOGIC; A: IN STD_LOGIC; B: IN STD_LOGIC; L 1 : IN STD_LOGIC; L 0 : IN STD_LOGIC; Y: OUT STD_LOGIC ); END mlu; 57
MLU: Architecture Declarative Section ARCHITECTURE mlu_dataflow OF mlu IS SIGNAL SIGNAL A 1 : STD_LOGIC; B 1 : STD_LOGIC; Y 1 : STD_LOGIC; MUX_0 : STD_LOGIC; MUX_1 : STD_LOGIC; MUX_2 : STD_LOGIC; MUX_3 : STD_LOGIC; L: STD_LOGIC_VECTOR(1 DOWNTO 0); 58
MLU - Architecture Body BEGIN A 1<= NOT A WHEN (NEG_A='1') ELSE A; B 1<= NOT B WHEN (NEG_B='1') ELSE B; Y <= NOT Y 1 WHEN (NEG_Y='1') ELSE Y 1; MUX_0 <= A 1 MUX_1 <= A 1 MUX_2 <= A 1 MUX_3 <= A 1 AND B 1; OR B 1; XNOR B 1; L <= L 1 & L 0; with (L) select Y 1 <= MUX_0 MUX_1 MUX_2 MUX_3 WHEN "00", WHEN "01", WHEN "10", WHEN OTHERS; END mlu_dataflow; 59
Combinational Logic Synthesis for Beginners ECE 448 – FPGA and ASIC Design with VHDL 60
Simple rules for beginners For combinational logic, use only concurrent statements • • concurrent signal assignment ( ) conditional concurrent signal assignment (when-else) selected concurrent signal assignment (with-select-when) generate scheme for equations (for-generate) 61
Simple rules for beginners For circuits composed of - simple logic operations (logic gates) - simple arithmetic operations (addition, subtraction, multiplication) - shifts/rotations by a constant use • concurrent signal assignment ( ) 62
Simple rules for beginners For circuits composed of - multiplexers - decoders, encoders - tri-state buffers use • conditional concurrent signal assignment (when-else) (ending with ELSE) • selected concurrent signal assignment (with-select-when) (ending with WHEN OTHERS; ) 63
Example: VHDL code for a 4 -to-1 MUX LIBRARY ieee ; USE ieee. std_logic_1164. all ; ENTITY mux 4 to 1 IS PORT ( w 0, w 1, w 2, w 3 s f END mux 4 to 1 ; : IN : OUT STD_LOGIC ; STD_LOGIC_VECTOR(1 DOWNTO 0) ; STD_LOGIC ) ; ARCHITECTURE dataflow OF mux 4 to 1 IS BEGIN WITH s SELECT f <= w 0 WHEN "00", w 1 WHEN "01", w 2 WHEN "10", w 3 WHEN OTHERS ; END dataflow ; 64
when-else vs. with-select-when (1) "when-else" should be used when: 1) there is only one condition (and thus, only one else), as in the 2 -to-1 MUX 2) conditions are independent of each other (e. g. , they test values of different signals) 3) conditions reflect priority (as in priority encoder); one with the highest priority need to be tested first. 65
when-else vs. with-select-when (2) "with-select-when" should be used when there is 1) more than one condition 2) conditions are closely related to each other (e. g. , represent different ranges of values of the same signal) 3) all conditions have the same priority (as in the 4 -to-1 MUX). 66
Left vs. right side of the assignment Left side <= Right side <= when-else with-select <= • Internal signals (defined in a given architecture) • Ports of the mode - out - inout Expressions including: • Internal signals (defined in a given architecture) • Ports of the mode - inout 67
- Cis 515 upenn
- Cse 545
- Cse 545 asu github
- 486 dibagi 6 dengan cara bersusun
- 01 4929 545
- Nia 545
- Cse 545
- 545 lecrim
- 01:640:244 lecture notes - lecture 15: plat, idah, farad
- Data flow vs control flow
- Control flow and data flow computers
- Flow cytometry lecture
- Wpi ece flowchart
- Wpi ece courses
- Big data data flow diagram
- Example of data dictionary in system analysis and design
- Eulerian description of fluid flow
- Ece 340 uiuc
- Exploratory data analysis lecture notes
- Bayesian classification in data mining lecture notes
- Data mining lecture notes
- Data visualization lecture
- Data mining lecture notes
- Data mining lecture notes
- Evolution of bi
- Hafoe mask
- Venturi mask 50 percent
- Non rebreather mask nursing considerations
- Laminar vs turbulent flow
- Internal versus external flow
- Energy naturally flows from warmer matter to cooler matter
- Flow of energy vs flow of matter
- Structure chart in software engineering
- Data flow structure
- Irrotational flow meaning
- External flow vs internal flow
- Cheddar cheese production flow chart
- Control flow vs transaction flow
- What is data definition language (ddl)
- Data description language
- Concept description in data mining
- Chapter 3 data description
- What is concept description in data mining
- Example of transaction flow graph
- Application of data flow testing
- Cspec in software engineering
- Du path testing
- Identifying trust boundaries
- Garage
- Animated data flow diagram
- Steady flow data hec-ras
- Data flow diagram example
- Physical data flow diagram
- Data flow diagram
- Sales order processing flow chart
- Data flow diagram for employee management system
- Data flow model in software engineering
- Data flow architecture
- Vhdl data flow modeling
- Data flow diagram in system analysis and design
- Ssis optimization
- Business process data flow diagram
- Data flow modeling in verilog
- Data flow diagram
- What is data flow testing
- Dfd symbols
- Data flow diagram book
- Global data flow analysis in compiler design