реклама на сайте
подробности

 
 
> Когда нет глобального СБРОСа, Перечислим варианты решения проблемы.
Мур
сообщение Mar 7 2017, 13:57
Сообщение #1


Знающий
****

Группа: Свой
Сообщений: 815
Регистрация: 7-06-06
Из: Харьков
Пользователь №: 17 847



Всегда применял глобальный Сброс!

НО! Нарвался на оговорку заказчика, что нет в проекте внешнего сброса.
1.Необходимости в PLL у дизайна нет (чтобы взять для сброса сигнал LOCK в качестве недостающего Сброса).
Была оговорка, что для такого случая надо обязательно сделать дополнительную задержку от разрешения LOCK, чтобы была гарантия стабильной частоты от PLL.
2.Была тут информация, что можно в дизайне задавать нужное состояние триггеров простым присвоением при создании.
И сей факт считаю интересным для явного формирования сигнала Сброс. Смысл- прописать состояние одного триггера и если он действительно послушно задал свое состояние, как было в проекте,- то формирователь сброса должен сформировать на счетчке задержанный сигнал перебрасывания его состояние в обратное. Это и будет сигнал сброса.

Что народ еще применял для начальной установки? Спасибо!

Как вариант, работающий на симуляции. Можно и проще, но, то что озвучивалась выглядит. Надеюсь такое будет работать "на железе"

Код
entity freset is
generic (TEMP_DELAY :integer);
    port (
        CLK_INP        : in STD_LOGIC;
        SENSOR_INP    : in STD_LOGIC;
        RESET_OUT    : out STD_LOGIC);
end freset;

architecture res_body of freset is
signal cnt_div_s: INTEGER range TEMP_DELAY-1 downto 0 := (TEMP_DELAY-1);-------  начальное состояние

begin
AVT_OUT_machine: process (CLK_INP)
begin
    if rising_edge(CLK_INP) then
        if cnt_div_s /= 0 and SENSOR_INP = '1' then
            cnt_div_s <= cnt_div_s-1;
            RESET_OUT <= '0';
        else
            RESET_OUT <= '1';
        end if;
    end if;
end process;
end res_body;
----------------------------------
    signal init_s : STD_LOGIC:='1';-------  начальное состояние
    signal tnit_s : STD_LOGIC:='0';
    signal RESET  : STD_LOGIC;
begin
nu: process (CLK)
begin
    if rising_edge(CLK) then
    tnit_s <= not RESET;
        if tnit_s ='1' and RESET ='1' then
            init_s <= '0';
        end if;
    end if;
end process nu;

    rest:    freset
generic map(100)
    port map (
        CLK_INP        =>  CLK,
        SENSOR_INP    =>  init_s,
                    
        RESET_OUT    =>  RESET
        );
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 20th June 2025 - 02:12
Рейтинг@Mail.ru


Страница сгенерированна за 0.01371 секунд с 7
ELECTRONIX ©2004-2016