Значит реализация данного кусочка не желательна в ПЛИС - на выходе никогда ничего не появится?
P.S. В схеме ошибка элементы исключающие ИЛИ без инверсии.
Последний раз редактировалось ZEK; 12.02.2012 в 22:28.
fifan, такая асинхронная схема, наверно, заработает, если правильно задать констрейнты.
ZXM-Phoenix rev.01 2048K, VG93 hw emulator
В ПЛИС подобные схемы - однозначные генераторы глюков...
Если надо удваивать частоту - надо использовать встроенную PLL.
Хотя, если очень хочется, то попробовать такую схему собрать можно, только надо писать ее соответствующе...
out = LCELL(in xor LCELL(LCELL(in))); - на AHDL
В MAX-Plus II с CPLD такое вполне проканало... а с FPGA были проблемы...
На VHDL такое не пишется, а если и записать то оно соптимизируется в
out <= '0';
В то же время, если удваиваемая частота не слишком высока и есть более высокая тактовая, то можно задержку сделать на D-тригере:
out = DFF(in xor DFF(in,clk_up,,),clk_up,,);
Tакая штука сгенерит два коротких импульса на каждом фронте сигнала in, но только при условии, что clk_up имеет частоту значительно выше, чем частота на входе in.
...подключил к ZX-spectrum-у винчестер на 500Gb...
вместо надписи "1982 (c) Sinclair Research Ltd." появилась надпись "O, Chudo!"
С уважением, WingLion АКА Ivan Mak.
Я просто хочу получить частоту 4 МГц из 10 МГц входных. Решил сначала удвоить частоту, а затем поделить на 5. В семействе MAX7000S функций PLL почти нет. Я нашёл одну: внутренний генератор - мне не пойдёт.
С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
Вот как-то так можно получить 4 мегагерца из 10...
CLK10 : input;
CLK4 : output;
VARIABLE
CT[1..0] : DFF;
C4 : NODE;
BEGIN
CT.clk = C4;
CT[].d = CT[] + 1;
C4 = LCELL(CLK10 xor CT[1]);
CLK4 = CT[1];
---------- Post added at 05:06 ---------- Previous post was at 04:51 ----------
ошибочка - это схема деления на 1.5
Деление на 2.5:
только что в квартусе на симуляторе проверил.Код:SUBDESIGN test( CLK10 : input; CLK4 : output ) VARIABLE CT[3..0] : DFF; C4 : NODE; BEGIN CT[].clk = C4; CASE CT[] IS WHEN 0 => CT[] = 1; WHEN 1 => CT[] = 2; WHEN 2 => CT[] = 4; WHEN 3 => CT[] = 4; WHEN 4 => CT[] = 5; WHEN 5 => CT[] = 6; WHEN 6 => CT[] = 0; WHEN 7 => CT[] = 0; END CASE; C4 = LCELL(CLK10 xor CT[2]); CLK4 = CT[2]; END;
Подобным образом можно построить делитель на любой полуцелый коэфициент.
п.с. Идея заимствована из журнала "Радио" из прошлого тысячелетия.
Последний раз редактировалось WingLion; 13.02.2012 в 06:20.
...подключил к ZX-spectrum-у винчестер на 500Gb...
вместо надписи "1982 (c) Sinclair Research Ltd." появилась надпись "O, Chudo!"
С уважением, WingLion АКА Ivan Mak.
Что-то не вяжется с частотой. Входная - 10 МГц ~100 нС. Выходная - 500 нС ~ 2 МГц. В верхнем примере считается частота 10/2=5. Т.е. деление не в 2,5 раза, а в 5 раз.
Последний раз редактировалось fifan; 13.02.2012 в 17:45.
это было во времена, когда ПЛИС еще и в помине не было...
Схемка на рассыпухе была дана.
Номеров не помню, ибо те времена и те интересы давно канули в лету...
А про ПЛИС (и не только) сейчас печатается не мало в журнале "Компоненты и Технологии".
---------- Post added at 19:06 ---------- Previous post was at 18:51 ----------
Хм, и вправду накосячил... Не с того выхода счетчика сигнал снял...
Обновленная схема:
SUBDESIGN test(
CLK10 : input;
CLK4 : output
)
VARIABLE
CT[3..0] : DFF;
C4 : NODE;
BEGIN
CT[].clk = C4;
CASE CT[] IS
WHEN 0 => CT[] = 1;
WHEN 1 => CT[] = 2;
WHEN 2 => CT[] = 4;
WHEN 3 => CT[] = 4;
WHEN 4 => CT[] = 5;
WHEN 5 => CT[] = 6;
WHEN 6 => CT[] = 0;
WHEN 7 => CT[] = 0;
END CASE;
C4 = LCELL(CLK10 xor CT[2]);
CLK4 = CT[1];
END;
END;
Последний раз редактировалось WingLion; 13.02.2012 в 20:10.
...подключил к ZX-spectrum-у винчестер на 500Gb...
вместо надписи "1982 (c) Sinclair Research Ltd." появилась надпись "O, Chudo!"
С уважением, WingLion АКА Ivan Mak.
Задний фронт слишком затянут: 150 нС против переднего 100 нС. Может не прокатить. Я хочу данный делитель поставить в контроллере дисковода к Специалисту_МХ. Данное несоответствие может сказаться на читаемость дискет.
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)