Download presentation
Presentation is loading. Please wait.
Published byStina Nilssen Modified over 6 years ago
1
Data Flow Description of Combinational-Circuit Building Blocks
ECE 545 Lecture 6 Data Flow Description of Combinational-Circuit Building Blocks
2
Required reading P. Chu, RTL Hardware Design using VHDL
Chapter 7, Combinational Circuit Design: Practice
3
Fixed Shifters & Rotators
ECE 448 – FPGA and ASIC Design with VHDL
4
Fixed Logical Shift Right in VHDL
SIGNAL A : STD_LOGIC_VECTOR(3 DOWNTO 0); SIGNAL C: STD_LOGIC_VECTOR(3 DOWNTO 0); A(3) A(2) A(1) A(0) 4 A A >>1 C L Internal signals are from DUT. Main process may be split into main process. I.e. one to drive clk, rst and other for test vectors. Many architectures can be tested by inserting more for DUT:TestComp use entity work.TestComp(archName) statmetns “work” is the name of the library that “TestComp” is being compiled to. The “DUT” tag is required. C 4 ‘0’ A(3) A(2) A(1) ECE 448 – FPGA and ASIC Design with VHDL
5
Fixed Arithmetic Shift Right in VHDL
SIGNAL A : STD_LOGIC_VECTOR(3 DOWNTO 0); SIGNAL C: STD_LOGIC_VECTOR(3 DOWNTO 0); A(3) A(2) A(1) A(0) 4 A A >>1 C A Internal signals are from DUT. Main process may be split into main process. I.e. one to drive clk, rst and other for test vectors. Many architectures can be tested by inserting more for DUT:TestComp use entity work.TestComp(archName) statmetns “work” is the name of the library that “TestComp” is being compiled to. The “DUT” tag is required. C 4 A(3) A(3) A(2) A(1) ECE 448 – FPGA and ASIC Design with VHDL
6
Fixed Logical Shift Left in VHDL
SIGNAL A : STD_LOGIC_VECTOR(3 DOWNTO 0); SIGNAL C: STD_LOGIC_VECTOR(3 DOWNTO 0); A(3) A(2) A(1) A(0) 4 A A <<1 C L Internal signals are from DUT. Main process may be split into main process. I.e. one to drive clk, rst and other for test vectors. Many architectures can be tested by inserting more for DUT:TestComp use entity work.TestComp(archName) statmetns “work” is the name of the library that “TestComp” is being compiled to. The “DUT” tag is required. C 4 A(2) A(1) A(0) ‘0’ ECE 448 – FPGA and ASIC Design with VHDL
7
Fixed Rotation Left in VHDL
SIGNAL A : STD_LOGIC_VECTOR(3 DOWNTO 0); SIGNAL C: STD_LOGIC_VECTOR(3 DOWNTO 0); A(3) A(2) A(1) A(0) 4 A A <<< 1 C Internal signals are from DUT. Main process may be split into main process. I.e. one to drive clk, rst and other for test vectors. Many architectures can be tested by inserting more for DUT:TestComp use entity work.TestComp(archName) statmetns “work” is the name of the library that “TestComp” is being compiled to. The “DUT” tag is required. C 4 A(2) A(1) A(0) A(3) ECE 448 – FPGA and ASIC Design with VHDL
8
Variable Rotators ECE 448 – FPGA and ASIC Design with VHDL
9
8-bit Variable Rotator Left
3 A <<< B B C 8 To be covered during one of the future classes ECE 448 – FPGA and ASIC Design with VHDL
10
Multiplexers ECE 448 – FPGA and ASIC Design with VHDL
11
f <= w1 WHEN s = ‘1' ELSE w0 ;
2-to-1 Multiplexer f s w 1 s f w 1 w 1 (a) Graphical symbol (b) Truth table VHDL: f <= w0 WHEN s = '0' ELSE w1 ; or f <= w1 WHEN s = ‘1' ELSE w0 ; ECE 448 – FPGA and ASIC Design with VHDL
12
VHDL code for a 2-to-1 Multiplexer Entity
LIBRARY ieee ; USE ieee.std_logic_1164.all ; ENTITY mux2to1 IS PORT ( w0, w1, s : IN STD_LOGIC ; f : OUT STD_LOGIC ) ; END mux2to1 ; ARCHITECTURE dataflow OF mux2to1 IS BEGIN f <= w0 WHEN s = '0' ELSE w1 ; END dataflow ; ECE 448 – FPGA and ASIC Design with VHDL
13
Cascade of two multiplexers
3 w 1 y 2 w 1 1 s2 s1 VHDL: f <= w1 WHEN s1 = ‘1' ELSE w2 WHEN s2 = ‘1’ ELSE w3 ; ECE 448 – FPGA and ASIC Design with VHDL
14
VHDL design entity implementing a cascade of two multiplexers
LIBRARY ieee ; USE ieee.std_logic_1164.all ; ENTITY mux_cascade IS PORT ( w1, w2, w3: IN STD_LOGIC ; s1, s : IN STD_LOGIC ; f : OUT STD_LOGIC ) ; END mux_cascade ; ARCHITECTURE dataflow OF mux2to1 IS BEGIN f <= w1 WHEN s1 = ‘1' ELSE w2 WHEN s2 = ‘1’ ELSE w3 ; END dataflow ; ECE 448 – FPGA and ASIC Design with VHDL
15
4-to-1 Multiplexer s WITH s SELECT f <= w0 WHEN "00", w1 WHEN "01",
(a) Graphic symbol (b) Truth table f s 1 w 00 01 2 3 10 11 s w 1 f s 2 3 WITH s SELECT f <= w0 WHEN "00", w1 WHEN "01", w2 WHEN "10", w3 WHEN OTHERS ; ECE 448 – FPGA and ASIC Design with VHDL
16
VHDL code for a 4-to-1 Multiplexer entity
LIBRARY ieee ; USE ieee.std_logic_1164.all ; ENTITY mux4to1 IS PORT ( w0, w1, w2, w3 : IN STD_LOGIC ; s : IN STD_LOGIC_VECTOR(1 DOWNTO 0) ; f : OUT STD_LOGIC ) ; END mux4to1 ; ARCHITECTURE dataflow OF mux4to1 IS BEGIN WITH s SELECT f <= w0 WHEN "00", w1 WHEN "01", w2 WHEN "10", w3 WHEN OTHERS ; END dataflow ; ECE 448 – FPGA and ASIC Design with VHDL
17
Decoders ECE 448 – FPGA and ASIC Design with VHDL
18
2-to-4 Decoder w y Enw <= En & w ; WITH Enw SELECT
(b) Graphical symbol (a) Truth table w y w 1 3 w y 1 y 3 w x En 2 2 y y 1 y En Enw <= En & w ; WITH Enw SELECT y <= "0001" WHEN "100", "0010" WHEN "101", "0100" WHEN "110", "1000" WHEN "111", "0000" WHEN OTHERS ; ECE 448 – FPGA and ASIC Design with VHDL
19
VHDL code for a 2-to-4 Decoder entity
LIBRARY ieee ; USE ieee.std_logic_1164.all ; ENTITY dec2to4 IS PORT ( w : IN STD_LOGIC_VECTOR(1 DOWNTO 0) ; En : IN STD_LOGIC ; y : OUT STD_LOGIC_VECTOR(3 DOWNTO 0) ) ; END dec2to4 ; ARCHITECTURE dataflow OF dec2to4 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 ; ECE 448 – FPGA and ASIC Design with VHDL
20
Encoders ECE 448 – FPGA and ASIC Design with VHDL
21
Priority Encoder y w y <= "11" WHEN w(3) = '1' ELSE
y y w w 1 y 1 w 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' ; 2 z w 3 d 1 w y z - 2 3 ECE 448 – FPGA and ASIC Design with VHDL
22
VHDL code for a Priority Encoder entity
LIBRARY ieee ; USE ieee.std_logic_1164.all ; ENTITY priority IS PORT ( w : IN STD_LOGIC_VECTOR(3 DOWNTO 0) ; y : OUT STD_LOGIC_VECTOR(1 DOWNTO 0) ; z : OUT STD_LOGIC ) ; END priority ; 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 ; ECE 448 – FPGA and ASIC Design with VHDL
23
Adders ECE 448 – FPGA and ASIC Design with VHDL
24
Adder mod 216 16 16 X Y S 16
25
VHDL code for an Adder mod 216
LIBRARY ieee ; USE ieee.std_logic_1164.all ; USE ieee.std_logic_unsigned.all ; ENTITY adder16 IS PORT ( X : IN STD_LOGIC_VECTOR(15 DOWNTO 0) ; Y : IN STD_LOGIC_VECTOR(15 DOWNTO 0) ; S : OUT STD_LOGIC_VECTOR(15 DOWNTO 0) ) ; END adder16 ; ARCHITECTURE dataflow OF adder16 IS BEGIN S <= X + Y ; END dataflow ;
26
+ 16-bit Unsigned Adder X Y Cout Cin S 16 16 16
ECE 448 – FPGA and ASIC Design with VHDL
27
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 UNSIGNED and conversion functions: std_logic_vector(), unsigned() ECE 448 – FPGA and ASIC Design with VHDL
28
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; ECE 448 – FPGA and ASIC Design with VHDL
29
VHDL code for a 16-bit Unsigned Adder
LIBRARY ieee ; USE ieee.std_logic_1164.all ; USE ieee.std_logic_unsigned.all ; ENTITY adder16 IS PORT ( Cin : IN STD_LOGIC ; X : IN STD_LOGIC_VECTOR(15 DOWNTO 0) ; Y : IN STD_LOGIC_VECTOR(15 DOWNTO 0) ; S : OUT STD_LOGIC_VECTOR(15 DOWNTO 0) ; Cout : OUT STD_LOGIC ) ; END adder16 ; ARCHITECTURE dataflow OF adder16 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 ; ECE 448 – FPGA and ASIC Design with VHDL
30
Addition of Unsigned Numbers (1)
LIBRARY ieee ; USE ieee.std_logic_1164.all ; USE ieee.numeric_std.all ; ENTITY adder16 IS PORT ( Cin : IN STD_LOGIC ; X : IN STD_LOGIC_VECTOR(15 DOWNTO 0) ; Y : IN STD_LOGIC_VECTOR(15 DOWNTO 0) ; S : OUT STD_LOGIC_VECTOR(15 DOWNTO 0) ; Cout : OUT STD_LOGIC ) ; END adder16 ; ECE 448 – FPGA and ASIC Design with VHDL
31
Addition of Unsigned Numbers (2)
ARCHITECTURE dataflow OF adder16 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 ; ECE 448 – FPGA and ASIC Design with VHDL
32
Addition of Unsigned Numbers (3)
ARCHITECTURE dataflow OF adder16 IS signal Sum: STD_LOGIC_VECTOR(16 DOWNTO 0) ; BEGIN Sum <= std_logic_vector( unsigned('0' & X) + unsigned(Y) + unsigned('0' & Cin) ) ; S <= Sum(15 downto 0); Cout <= Sum(16) ; END dataflow ; ECE 448 – FPGA and ASIC Design with VHDL
33
Operations on Signed Numbers
For operations on signed numbers USE ieee.numeric_std.all, signals of the type SIGNED, and conversion functions: std_logic_vector(), signed() OR USE ieee.std_logic_signed.all and signals of the type STD_LOGIC_VECTOR ECE 448 – FPGA and ASIC Design with VHDL
34
Multipliers ECE 448 – FPGA and ASIC Design with VHDL
35
Unsigned vs. Signed Multiplication
1111 15 1111 -1 x x x x 225 1
36
8x8-bit Unsigned Multiplier
a b * c U 16
37
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;
38
8x8-bit Signed Multiplier
a b * c S 16
39
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;
40
8x8-bit Unsigned and Signed Multiplier
cu cs 16 16
41
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;
42
Comparators ECE 448 – FPGA and ASIC Design with VHDL
43
4-bit Unsigned Number Comparator
A > B AgtB 4 B U AgtB <= '1' WHEN A > B ELSE '0' ; ECE 448 – FPGA and ASIC Design with VHDL
44
VHDL code for a 4-bit Unsigned Number Comparator entity
LIBRARY ieee ; USE ieee.std_logic_1164.all ; USE ieee.std_logic_unsigned.all ; ENTITY compare IS PORT ( A, B : IN STD_LOGIC_VECTOR(3 DOWNTO 0) ; AgtB : OUT STD_LOGIC ) ; END compare ; ARCHITECTURE dataflow OF compare IS BEGIN AgtB <= '1' WHEN A > B ELSE '0' ; END dataflow ; ECE 448 – FPGA and ASIC Design with VHDL
45
VHDL code for a 4-bit Signed Number Comparator entity
LIBRARY ieee ; USE ieee.std_logic_1164.all ; USE ieee.std_logic_signed.all ; ENTITY compare IS PORT ( A, B : IN STD_LOGIC_VECTOR(3 DOWNTO 0) ; AgtB : OUT STD_LOGIC ) ; END compare ; ARCHITECTURE dataflow OF compare IS BEGIN AgtB <= '1' WHEN A > B ELSE '0' ; END dataflow ; ECE 448 – FPGA and ASIC Design with VHDL
46
4-bit Unsigned Number Comparator
AeqB AgtB 4 B AltB U
47
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 STD_LOGIC_VECTOR(3 DOWNTO 0) ; AeqB, AgtB, AltB : OUT STD_LOGIC ) ; END compare ; ARCHITECTURE dataflow OF compare IS BEGIN AeqB <= '1' WHEN A = B ELSE '0' ; AgtB <= '1' WHEN A > B ELSE '0' ; AltB <= '1' WHEN A < B ELSE '0' ; END dataflow ;
48
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 STD_LOGIC_VECTOR(3 DOWNTO 0) ; AeqB, AgtB, AltB : OUT STD_LOGIC ) ; END compare ; ARCHITECTURE dataflow OF compare IS BEGIN AeqB <= '1' WHEN A = B ELSE '0' ; AgtB <= '1' WHEN A > B ELSE '0' ; AltB <= '1' WHEN A < B ELSE '0' ; END dataflow ;
49
Arithmetic operations
Synthesizable arithmetic operations: Addition, + Subtraction, - Comparisons, >, >=, <, <= Multiplication, * Division by a power of 2, /2**6 (equivalent to right shift)
50
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).
51
Integer Types TYPE day_of_month IS RANGE 1 TO 31;
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) for INTEGERs and their subtypes for NATURALs and their subtypes
52
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 SIGNED, and thus are recommened to be avoided by beginners.
53
ROM ECE 448 – FPGA and ASIC Design with VHDL
54
ROM 8x16 example (1) 8x16 ROM Addr Dout C 3 16
ECE 448 – FPGA and ASIC Design with VHDL
55
ROM 8x16 example (2) 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;
56
ROM 8x16 example (3) 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”800A", X"D459", X"A870", X"7853", X"650D", X"642F", X"F742", X"F548"); BEGIN temp <= to_integer(unsigned(Addr)); Dout <= memory(temp); END dataflow;
57
Buffers ECE 448 – FPGA and ASIC Design with VHDL
58
Tri-state Buffer (a) A tri-state buffer (b) Equivalent circuit
x f e = 0 (a) A tri-state buffer x f e x f e = 1 x f Z 1 Z 1 (b) Equivalent circuit 1 1 1 (c) Truth table ECE 448 – FPGA and ASIC Design with VHDL
59
Four types of Tri-state Buffers
f <= x WHEN (e = '1') ELSE 'Z'; f <= not x WHEN (e = '1') ELSE 'Z'; f <= x WHEN (e = '0') ELSE 'Z'; f <= not x WHEN (e = '0') ELSE 'Z'; ECE 448 – FPGA and ASIC Design with VHDL
60
Tri-state Buffer entity (1)
LIBRARY ieee; USE ieee.std_logic_1164.all; ENTITY tri_state IS PORT ( e: IN STD_LOGIC; x: IN STD_LOGIC; f: OUT STD_LOGIC ); END tri_state; ECE 448 – FPGA and ASIC Design with VHDL
61
Tri-state Buffer entity (2)
ARCHITECTURE dataflow OF tri_state IS BEGIN f <= x WHEN (e = ‘1’) ELSE ‘Z’; END dataflow; ECE 448 – FPGA and ASIC Design with VHDL
62
MLU Example
63
MLU Block Diagram A MUX_4_1 NEG_A Y NEG_Y B L1 L0 NEG_B MUX_0 A1 Y1
1 A1 A MUX_4_1 IN0 Y1 MUX_1 1 NEG_A IN1 MUX_2 Y IN2 OUTPUT IN3 SEL0 SEL1 NEG_Y 1 B1 B L1 L0 MUX_3 NEG_B
64
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; L1 : IN STD_LOGIC; L0 : IN STD_LOGIC; Y : OUT STD_LOGIC ); END mlu;
65
MLU: Architecture Declarative Section
ARCHITECTURE mlu_dataflow OF mlu IS SIGNAL A1 : STD_LOGIC; SIGNAL B1 : STD_LOGIC; SIGNAL Y1 : STD_LOGIC; SIGNAL MUX_0 : STD_LOGIC; SIGNAL MUX_1 : STD_LOGIC; SIGNAL MUX_2 : STD_LOGIC; SIGNAL MUX_3 : STD_LOGIC; SIGNAL L: STD_LOGIC_VECTOR(1 DOWNTO 0);
66
MLU - Architecture Body
BEGIN A1<= NOT A WHEN (NEG_A='1') ELSE A; B1<= NOT B WHEN (NEG_B='1') ELSE B; Y <= NOT Y1 WHEN (NEG_Y='1') ELSE Y1; MUX_0 <= A1 AND B1; MUX_1 <= A1 OR B1; MUX_2 <= A1 XOR B1; MUX_3 <= A1 XNOR B1; L <= L1 & L0; with (L) select Y1 <= MUX_0 WHEN "00", MUX_1 WHEN "01", MUX_2 WHEN "10", MUX_3 WHEN OTHERS; END mlu_dataflow;
67
Combinational Logic Synthesis
for Beginners ECE 448 – FPGA and ASIC Design with VHDL
68
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)
69
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 ()
70
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;)
71
Example: VHDL code for a 4-to-1 MUX
LIBRARY ieee ; USE ieee.std_logic_1164.all ; ENTITY mux4to1 IS PORT ( w0, w1, w2, w3 : IN STD_LOGIC ; s : IN STD_LOGIC_VECTOR(1 DOWNTO 0) ; f : OUT STD_LOGIC ) ; END mux4to1 ; ARCHITECTURE dataflow OF mux4to1 IS BEGIN WITH s SELECT f <= w0 WHEN "00", w1 WHEN "01", w2 WHEN "10", w3 WHEN OTHERS ; END dataflow ;
72
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.
73
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).
74
Left vs. right side of the assignment
Left side <= <= when-else with-select <= Right side Expressions including: Internal signals (defined in a given architecture) Ports of the mode - in - inout Internal signals (defined in a given architecture) Ports of the mode - out - inout
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.