aboutsummaryrefslogtreecommitdiff
path: root/src/mux2to1_structure.vhd
diff options
context:
space:
mode:
Diffstat (limited to 'src/mux2to1_structure.vhd')
-rw-r--r--src/mux2to1_structure.vhd90
1 files changed, 90 insertions, 0 deletions
diff --git a/src/mux2to1_structure.vhd b/src/mux2to1_structure.vhd
new file mode 100644
index 0000000..3ff0c97
--- /dev/null
+++ b/src/mux2to1_structure.vhd
@@ -0,0 +1,90 @@
+-------------------------------------------------------------------------------
+-- Module : mux2to1
+-------------------------------------------------------------------------------
+-- Author : Johann Faerber
+-- Company : University of Applied Sciences Augsburg
+-------------------------------------------------------------------------------
+-- Description: 2-to-1 multiplexer
+-- function modelled as structure of basic logic gates
+-------------------------------------------------------------------------------
+-- Revisions : see end of file
+-------------------------------------------------------------------------------
+LIBRARY IEEE;
+USE IEEE.std_logic_1164.ALL;
+
+ENTITY mux2to1 IS
+ PORT (a_i : IN std_ulogic; -- data input a
+ b_i : IN std_ulogic; -- data input b
+ sel_i : IN std_ulogic; -- select which input is connected to y
+ -- sel = '1': a -> y
+ -- sel = '0': b -> y
+ y_o : OUT std_ulogic -- data output y
+ );
+END mux2to1;
+
+ARCHITECTURE structure OF mux2to1 IS
+
+ COMPONENT invgate
+ PORT (
+ a_i : IN std_ulogic;
+ y_o : OUT std_ulogic);
+ END COMPONENT;
+
+ COMPONENT and2gate
+ PORT (
+ a_i : IN std_ulogic;
+ b_i : IN std_ulogic;
+ y_o : OUT std_ulogic);
+ END COMPONENT;
+
+ COMPONENT or2gate
+ PORT (
+ a_i : IN std_ulogic;
+ b_i : IN std_ulogic;
+ y_o : OUT std_ulogic);
+ END COMPONENT;
+
+ SIGNAL p0, p1 : std_ulogic;
+ SIGNAL p2 : std_ulogic;
+
+BEGIN
+
+ inv_gate_1 : invgate
+ PORT MAP (
+ a_i => sel_i,
+ y_o => p2);
+
+ and2_gate_1 : and2gate
+ PORT MAP (
+ a_i => a_i,
+ b_i => sel_i,
+ y_o => p0);
+
+ and2_gate_2 : and2gate
+ PORT MAP (
+ a_i => b_i,
+ b_i => p2,
+ y_o => p1);
+
+ or2_gate_1 : or2gate
+ PORT MAP (
+ a_i => p0,
+ b_i => p1,
+ y_o => y_o);
+
+-- inv_gate_1 : invgate PORT MAP (sel_i, p2);
+
+-- and2_gate_1 : and2gate PORT MAP (a_i, sel_i, p0);
+
+-- and2_gate_2 : and2gate PORT MAP (b_i, p2, p1);
+
+-- or2_gate_1 : or2gate PORT MAP (p0, p1, y_o);
+
+END structure;
+
+-------------------------------------------------------------------------------
+-- Revisions:
+-- ----------
+-- $Id:$
+-------------------------------------------------------------------------------
+