1 1 // how do I get MUXF5/MUXF6.
2 2 // This implies eight to one multiplexing, so use a three bit select in the case statement.
3 3 // This following will produce the LUT4/MUXF5/MUXF6 logic:
4 4
5 5 module lut_test8(a, b, c, f, s);
6 6 input[3:0]a, b;
7 7 input[1:0]s;
8 8 input[1:0]f;
9 9 output c;
10 10
11 11 reg c;
12 12
13 13 always @(a or b or f or s)
14 14 case({s,f[1]})
15 15 4'b000: c = !f[0] ? (a[0] & b[0]) : (a[0] | b[0]);
16 16 4'b010: c = !f[0] ? (a[1] & b[1]) : (a[1] | b[1]);
17 17 4'b100: c = !f[0] ? (a[2] & b[2]) : (a[2] | b[2]);
18 18 4'b110: c = !f[0] ? (a[3] & b[3]) : (a[3] | b[3]);
19 19 4'b001: c = !f[0] ? (a[0] ^ b[0]) : (a[0] & ~b[0]);
20 20 4'b011: c = !f[0] ? (a[1] ^ b[1]) : (a[1] & ~b[1]);
21 21 4'b101: c = !f[0] ? (a[2] ^ b[2]) : (a[2] & ~b[2]);
22 22 4'b111: c = !f[0] ? (a[3] ^ b[3]) : (a[3] & ~b[3]);
23 23 endcase
24 24
25 25 endmodule
1 ----------------------------------------------------------------------------------
2 -- Company:
3 -- Engineer:
4 --
5 -- Create Date: 08:21:54 05/11/2012
6 -- Design Name:
7 -- Module Name: mux_8_to_1 - Behavioral
8 -- Project Name:
9 -- Target Devices:
10 -- Tool versions:
11 -- Description:
12 --
13 -- Dependencies:
14 --
15 -- Revision:
16 -- Revision 0.01 - File Created
17 -- Additional Comments:
18 --
19 ----------------------------------------------------------------------------------
20 library IEEE;
21 use IEEE.STD_LOGIC_1164.all;
22
23 -- Uncomment the following library declaration if using
24 -- arithmetic functions with Signed or Unsigned values
25 --use IEEE.NUMERIC_STD.ALL;
26
27 -- Uncomment the following library declaration if instantiating
28 -- any Xilinx primitives in this code.
29 --library UNISIM;
30 --use UNISIM.VComponents.all;
31
32 entity mux_8_to_1 is
33 port (
34 i_select : in std_logic_vector(2 downto 0);
35 i_input : in std_logic_vector(7 downto 0);
36 o_output : out std_logic);
37 end mux_8_to_1;
38
39 architecture Behavioral of mux_8_to_1 is
40 signal input0123 : std_logic;
41 signal input4567 : std_logic;
42 signal input01 : std_logic;
43 signal input23 : std_logic;
44 signal input45 : std_logic;
45 signal input67 : std_logic;
46
47 begin
48
49 -- input01 <= i_input(1) when i_select(0) = '1' else i_input(0);
50 -- input23 <= i_input(3) when i_select(0) = '1' else i_input(2);
51 -- input45 <= i_input(4) when i_select(0) = '1' else i_input(4);
52 -- input67 <= i_input(5) when i_select(0) = '1' else i_input(6);
53 --
54 -- input4567 <= input67 when i_select(1) = '1' else input45;
55 -- input0123 <= input23 when i_select(1) = '1' else input01;
56 --
57 -- o_output <= input4567 when i_select(2) = '1' else input0123;
58
59 process ( i_input, i_select )
60 begin
61 case i_select (2 downto 0) is
62 when "000" => o_output <= i_input (0);
63 when "001" => o_output <= i_input (1);
64 when "010" => o_output <= i_input (2);
65 when "011" => o_output <= i_input (3);
66 when "100" => o_output <= i_input (4);
67 when "101" => o_output <= i_input (5);
68 when "110" => o_output <= i_input (6);
69 when "111" => o_output <= i_input (7);
70 when others => o_output <= 'X';
71 end case;
72 end process;
73
74 end Behavioral;