Добрый день.
Разработка ведется в среде Quartus 13.1 Web Edition для ПЛИС EP4CGX150CF23C7.
Мне необходимо собрать схему, представленную на прикрепленном рисунке (1). При этом я хочу использовать только один логический элемент. Если я правильно понял структуру логического элемента в Cyclone IV (рисунок 2), то это возможно.
Написанный мною код:
CODE
library IEEE;
use IEEE.std_logic_1164.all;
use IEEE.std_logic_arith.all;
use IEEE.std_logic_signed.all;
LIBRARY altera_mf;
USE altera_mf.altera_mf_components.all;
entity LUT_CELL is
port(
INPUT_1 : in STD_LOGIC;
INPUT_2 : in STD_LOGIC;
MUX : in STD_LOGIC;
CLK : in STD_LOGIC;
OUTPUT : out STD_LOGIC;
OUTPUT_D : out STD_LOGIC
);
end LUT_CELL;
architecture a of LUT_CELL is
signal int_INPUT_1 :std_logic;
signal int_INPUT_2 :std_logic;
signal int_MUX :std_logic;
signal int_OUT1 :std_logic;
signal int_OUT2 :std_logic;
component lut_input
port(
a_in : in std_logic;
a_out : out std_logic);
end component;
component lut_output
port(
a_in : in std_logic;
a_out : out std_logic);
end component;
COMPONENT DFFE
PORT (d : IN STD_LOGIC;
clk : IN STD_LOGIC;
clrn : IN STD_LOGIC;
prn : IN STD_LOGIC;
ena : IN STD_LOGIC;
q : OUT STD_LOGIC );
END COMPONENT;
begin
inp1:component lut_input
port map(INPUT_1,int_INPUT_1);
inp2:component lut_input
port map(INPUT_2,int_INPUT_2);
mxx:component lut_input
port map(MUX,int_MUX);
outp:component lut_output
port map(int_OUT1,int_OUT2);
int_OUT1<=(int_INPUT_1 and (not int_MUX))or(int_INPUT_2 and int_MUX);
OUTPUT<=int_OUT2;
dfff:component DFFE
port map(int_OUT2,CLK,'1','1','1',OUTPUT_D);
end a;
Компиляция проходит успешно, но в отчете пишется что задействовано 2 логических элемента (рисунок 3). Почему триггер берется из другого LE?
Эскизы прикрепленных изображений