Ewgeny7, жена не ругается? Меня наставник на первой моей работе (на узле связи при шахте) учил бумагой чистить - хороший абразив, если не шибко увлекаться.
Вид для печати
Ewgeny7, жена не ругается? Меня наставник на первой моей работе (на узле связи при шахте) учил бумагой чистить - хороший абразив, если не шибко увлекаться.
Спасибо, вечером сегодня попробую пошаманить.
ПЛИС-ины из одной партии или нет?
Если нет, есть вероятность нарывания на китайский контрафакт...
ALTERA несколько лет назад предупреждала о подобном, советовала брать ПЛИСы только у официальных дистрибьютеров.
У меня один раз попалась партия (штук 10), из которой половину пришлось выбросить - не шились, а некоторые грелись.
Потом я стал все проверять.
В теме про Speccy2007 Alex_NEMO тоже не мог прошить EPM7128SLC-84 на новом компьютере.
Помогла прошивка на старом (http://zx.pk.ru/showpost.php?p=284150&postcount=59).
Может попались ПЛИС, зависящие от времянок во время прошивки...
У меня есть ПЛИСинка EPM3032ALC44, так она, зараза, шьется только будучи вставленной в СМУК второй ревизии. Прошить ее где-либо еще не получилось :)
Обычно ByteBlaster работает в "заднице" компа (LPT разъем), но для удобства его подключают через "хвост" (удлинитель), что существенно влияет на сигнал (затухания, помехи, емкость...). В общем, заморачиваться так сильно не нужно и покупать у проверенных временем дистрибюторов, а иначе кот в мешке Вам обеспечен... Гарантии ведь нет? :)
Вобщем примерно понятно, что можно попытаться сделать:
1. Шаманю с контактами
2. Если не получилось, то беру официальный док и смотрю что должно быть в минимальной обвязке, для того что бы увидел программатор, проверю плату на соответствие
3. Попробовать прошить на компе класса PII.
Если ничего не помогло, то скорее всего в ведро.
По результатам отпишу.
Решил поднять тему. Вот известная схема удвоения частоты. Но реализация её на ПЛИС не к чему в симуляторе Квартуса не привела - на выходе ноль. Так должно быть?
http://zx.pk.ru/attachment.php?attac...1&d=1329066988
Значит реализация данного кусочка не желательна в ПЛИС - на выходе никогда ничего не появится?
P.S. В схеме ошибка элементы исключающие ИЛИ без инверсии.
fifan, такая асинхронная схема, наверно, заработает, если правильно задать констрейнты.
В ПЛИС подобные схемы - однозначные генераторы глюков...
Если надо удваивать частоту - надо использовать встроенную 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.
Я просто хочу получить частоту 4 МГц из 10 МГц входных. Решил сначала удвоить частоту, а затем поделить на 5. В семействе MAX7000S функций PLL почти нет. Я нашёл одну: внутренний генератор - мне не пойдёт.
Вот как-то так можно получить 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;
Подобным образом можно построить делитель на любой полуцелый коэфициент.
п.с. Идея заимствована из журнала "Радио" из прошлого тысячелетия.
Что-то не вяжется с частотой. Входная - 10 МГц ~100 нС. Выходная - 500 нС ~ 2 МГц. В верхнем примере считается частота 10/2=5. Т.е. деление не в 2,5 раза, а в 5 раз.
это было во времена, когда ПЛИС еще и в помине не было...
Схемка на рассыпухе была дана.
Номеров не помню, ибо те времена и те интересы давно канули в лету...
А про ПЛИС (и не только) сейчас печатается не мало в журнале "Компоненты и Технологии".
---------- 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;
Задний фронт слишком затянут: 150 нС против переднего 100 нС. Может не прокатить. Я хочу данный делитель поставить в контроллере дисковода к Специалисту_МХ. Данное несоответствие может сказаться на читаемость дискет.
э... фронты - это перепады из 0 в 1 и обратно... а не длительность состояния 0 и состояния 1...
Если нужен меандр (одинаковые длительности нуля и единицы) - тогда надо ПЛИС с PLL использовать... а на простой логике из 10МHz меандр с 4MHz получить в принципе невозможно..., потому что 5 на 2 нацело не делится...
---------- Post added at 19:43 ---------- Previous post was at 19:41 ----------
Кстати, смешной вопрос... Почему бы в ФАПЧ читалки дисковода напрямую 10 MHz не использовать?
А чем плох приведенный ранее AHDL код?
p.s. того номера журнала и той схемки у меня давно не осталось.
Остался только принцип в голове... и инфа, откуда он появился.
плюс, реализация на AHDL, на написание которой ушло несколько минут.
Кстати, рисование схемы займет намного больше времени.
Вот еще интересная статья
Та же схема на VHDL:
p.s. если VHDL будет освоен, AHDL может и не понадобится... Разве что для понимания того, что делают другие разработчики AHDL - это очень просто!Код:-- ИСПРАВЛЕННАЯ ВЕРСИЯ
LIBRARY IEEE;
USE IEEE.std_logic_1164.all;
USE IEEE.std_logic_unsigned.all;
entity test2 is
Port(clk10 : in std_logic; clk4 : out std_logic);
end test2;
architecture rtl of test2 is
signal ct : std_logic_vector (2 downto 0);
signal c4 : std_logic;
begin
c4 <= clk10 xor ct(2);
clk4 <= ct(1);
process (c4) begin
if c4'event and c4 = '1' then
if ct = 2 or ct = 6 then
ct <= ct + 2;
else
ct <= ct + 1;
end if;
end if;
end process;
end;
К сожалению, посоветовать конкретные книги по VHDL не могу...
Сам когда-то плавал в VHDL, искал хорошую книжку - не нашел.
Изучал VHDL на платных курсах (родной НИИ платил за обучение).
Знаю (лично) одного автора, который книжки по VHDL пишет:
http://www.ozon.ru/context/detail/id/2351693/
Главная сложность VHDL заключается в том, что есть несколько конструкций языка, которые сложно понять. Объем написанных букв местами кажется излишним (особенно после того, как работал на AHDL).
Но это надо принять как данность и не роптать. Тогда язык станет более понятным, когда будет заучено, что триггеры получаются так, конечные автоматы этак, а все остальное строится из них и из простой логики, которая записывается математическими выражениями.
Плюс, некоторое особое оформление схем (я и сейчас не понимаю, зачем в этом оформлении столько всяких фенечек), и VHDL становится почти родным...
п.с. а вообще, уже есть мысля, как написать статью наподобие той, про AHDL, но про "VHDL - это очень просто!"
да-да, сначала написал здесь, потом в квартусе проверял работу (а надо бы наоборот), потому ошибки и остались...
вот конечный вариант:
Код:LIBRARY IEEE;
USE IEEE.std_logic_1164.all;
USE IEEE.std_logic_unsigned.all;
entity test2 is
Port(clk10 : in std_logic; clk4 : out std_logic);
end test2;
architecture rtl of test2 is
signal ct : std_logic_vector (2 downto 0);
signal c4 : std_logic;
begin
c4 <= clk10 xor ct(2);
clk4 <= ct(1);
process (c4) begin
if c4'event and c4 = '1' then
if ct = 2 or ct = 6 then
ct <= ct + 2;
else
ct <= ct + 1;
end if;
end if;
end process;
end;
Ёлки-палки... Вы что, ночами не спите?:)
Спасибо за код, вечером разбираться буду.
Вот, пожалуйста. :)
Скрытый текст
Под спойлером.
К сожалению, что касается практики, то там про ПЛИС фирмы Xilinx в основном описание идёт хотелось бы про АЛЬТЕРу чтобы было. И среда разработки соответственно не Quartus. А так, конечно книжечка очень хорошая, так как очень много другой полезной информации. Но мне не подходит.
Наверное.
подскажите нубу,тоесть мне -убил часа 2 на чтение нета и этого топика -но так и не понял как стереть плис epm3032atc44 ,что бы она была чистая и ноги в ZZZZ ???
JTAG к ПЛИС-е подключен?
Втыкается в него байт-бластер (или USB-бластер), запускается MAX-Plus II или Quartus II, в нем Альтеровский программатор, и в программаторе выбирается действие Erase. После чего просто - Start.
WingLion, если чесТно не могу найти закладку или кнопку erase.прошить могу без проблем.осталось только выпаять плис ,а затем впаять обратно (она мешает микроконтроллеру прошится собака)
использую MAX+PLUS II 10.23
Если ПЛИСа шьется без проблем - как вариант - сделать фиктивную прошивку для нее, где мешающие выводы в Z перманентно переведены (назначены как входы, например).
Не помню уже как там в MAX-Plus было. Возможно, кнопка стирания как-то иначе обозвана.