Цитата(dr.Livsy @ Aug 4 2009, 21:51)

А как сделать аналогичную вещь для любой синхронной схемы без использования библиотечных триггеров и памяти от Xilinx?
Я так понимаю "без использования библиотечных триггеров" означает, что Вы хотите это описать на каком-либо языке.
Если для синтеза с языка использовать HDL, то начальное состояние триггера (ОЗУ и п.т.) задается через начальное значение переменной (сигнала), которая после синтеза превратиться в выход триггера.
Для VDHL это выглядит примерно так:
Код
library ieee;
library ieee;
use ieee.std_logic_1164.all;
entity FDRE_0 is
port(
C, D, CE, PRE, RST: in std_logic;
Q: out std_logic );
end entity FDRE_0;
architecture FDRE_0_BODY of FDRE_0 is
begin
process (C)
variable FF: std_logic := '1';
begin
if rising_edge(C) then
if PRE = '1' then
FF := '1';
elsif RST = '1' then
FF := '0';
elsif CE='1' then
FF := D;
end if;
end if;
Q <= FF;
end process;
end FDRE_0_BODY;
В итоге получается триггер с начальным состоянием '1'.
Т.к. начальное состояние '1', то наивысший приоритет должен имеет сброс в '1' (т.е.
PRE) - поэтому в основном if он проверяется первым.
Следующий по приоритету идёт "инверсный" сброс - в приведенном примере это
RST.
Последним по приоритету идет сигнал
CE и входные данные
D (выход LUT или прямой вход на триггер мимо LUT).