Speccy - наш выбор!

Speccy - наш выбор! (http://zx-pk.ru/index.php)
-   Unsorted (http://zx-pk.ru/forumdisplay.php?f=13)
-   -   ПЛИС и всё что с ними связано (http://zx-pk.ru/showthread.php?t=9342)

Ewgeny7 10th October 2011 09:00

USB-blaster самодельный обошелся в примерно 150 рублей (на PIC18F14K50).

Quote:

Originally Posted by Totem (Post 422862)
ну от машинки еще зависит, для мелочи 8 веб хватает

Верно, для мелких проектов на CPLD среда разработки не важна.

Viktor2312 10th October 2011 13:50

Так стоит начинать качать вот эту версию или нет?

Quartus II 9.1 Altera Complete Design Suite 9.1

Complete Design Suite - перевёл как вроде значит полный набор дизайна

Вобщем как вроде полная версия.


С книжечкой тоже определился, даже распечатал, чтобы удобно было читать и не ломать глаза.
Пока вот эту почитаю:
А. К. Поляков "Языки VHDL и Verilog в проектировании цифровой аппаратуры", Москва САЛОН-Пресс, 2003г.

http://img-fotki.yandex.ru/get/5815/...f2ff72c5_L.jpg
http://fotki.yandex.ru/users/lpiti/view/340044/

Ewgeny7 10th October 2011 14:22

Quote:

Originally Posted by Viktor2312 (Post 422959)
Так стоит начинать качать вот эту версию или нет?

Да.

Viktor2312 13th October 2011 00:59

Хух, докачал. Инет обрезали, в итоге на перу суток затянулось. Интересно посмотреть на эту САПР.

костя 13th October 2011 02:06

Тоже решил с плис поиграться,качнул квартус 10й,сделал кривоватую платку http://dl.dropbox.com/u/11463601/DSC09586.JPG для микрухи,теперь надо программатор собрать (скорее всего на лпт порт).

WingLion 13th October 2011 05:51

Квартус лучше версию 9.1 (или более раннюю) качать, если начинать, потому что в нем еще есть встроенный симулятор, с которым можно интуитивно разобраться, а начиная с 10.0 версии альтеровцы его выкинули :( и предлагают пересаживаться на ModelSim, с которым без внешней помощи не разобраться.

А делать что-либо без симулятора сейчас - дохлый номер.

Quote:

Originally Posted by костя (Post 424017)
сделал кривоватую платку http://dl.dropbox.com/u/11463601/DSC09586.JPG для микрухи,

эх... разъемчика для подключения программатора-то и не видно. И питание лучше разводить на двух слоях хотя бы, чтобы емкости поставить поближе к выводам ПЛИСа.

Ewgeny7 13th October 2011 09:19

Quote:

Originally Posted by костя (Post 424017)
сделал кривоватую платку

Посмотри здесь, вполне рабочая "лошадка" на подобной плате :)
Сейчас на ней работают "Скорпион" со "СМУКом" и "Ленинград" с "DivIDE".

Vasily 5th December 2011 13:10

Добрый день.

Вопрос к гуру, если плисина не реагирует на попытки со стороны ByteBlaster до неё достучаться, то это говорит о том что она дохлая или возможны варианты (некорректно прошита, например). Другая плисина в этом же разъёме шъётся.

PS. плисина EPM7128SLC84

Спасибо.

vlad 5th December 2011 13:43

Quote:

Originally Posted by Vasily (Post 442927)
если плисина не реагирует на попытки со стороны ByteBlaster до неё достучаться, то это говорит о том что она дохлая или возможны варианты (некорректно прошита, например). Другая плисина в этом же разъёме шъётся.

Должна сразу определиться. Смотрим на напряжение питания и правильность подключения сопряжения со стороны программатора.

Ewgeny7 5th December 2011 13:57

Quote:

Originally Posted by Vasily (Post 442927)
плисина EPM7128SLC84

Питание/земля на все двенадцать ног, TCK, TDO, TMS, TDI, GND - подключены правильно. На питание хотя бы один электролит и один керамика 0.1м. Вот минимальный "набор" для работы с этой ПЛИСой.

Vasily 5th December 2011 14:08

Ситуация следующая: есть spessy2007, 2 плисины, ByteBlaster. Одна плисина, шьётся, вторая ни в какую не определяется. Почему спрашиваю, не рабочая плисина из заводской упаковки, вроде как вероятность того что дохлая крайне низкая.

PS. Из того что одна шъётся, делаю вывод, что пины подключены правильно, или тут может быть косяк?

Ewgeny7 5th December 2011 14:18

Quote:

Originally Posted by Vasily (Post 442937)
или тут может быть косяк?

плотной бархоткой ножки потри. Я обычно тру их об обивку кресла :)

Дмитрий 5th December 2011 14:30

Ewgeny7, жена не ругается? Меня наставник на первой моей работе (на узле связи при шахте) учил бумагой чистить - хороший абразив, если не шибко увлекаться.

Vasily 5th December 2011 14:32

Спасибо, вечером сегодня попробую пошаманить.

WingLion 5th December 2011 18:38

ПЛИС-ины из одной партии или нет?

Если нет, есть вероятность нарывания на китайский контрафакт...

ALTERA несколько лет назад предупреждала о подобном, советовала брать ПЛИСы только у официальных дистрибьютеров.

Vasily 6th December 2011 11:31

Quote:

Originally Posted by WingLion (Post 443048)
ПЛИС-ины из одной партии или нет?

Если нет, есть вероятность нарывания на китайский контрафакт...

ALTERA несколько лет назад предупреждала о подобном, советовала брать ПЛИСы только у официальных дистрибьютеров.

Посмотрел, партии разные, и различный размер шрифта надписей, стилистика и расположения одинаковы. Причём на рабочей ПЛИС-ине качество нанесения маркировки несколько хуже. Как-нибудь выяснить ПЛИС-ина из китайского ящика или из нет можно(даты, номера партий)?

zst 6th December 2011 14:00

Quote:

Originally Posted by Vasily (Post 443297)
Посмотрел, партии разные, и различный размер шрифта надписей, стилистика и расположения одинаковы. Причём на рабочей ПЛИС-ине качество нанесения маркировки несколько хуже. Как-нибудь выяснить ПЛИС-ина из китайского ящика или из нет можно(даты, номера партий)?

У меня один раз попалась партия (штук 10), из которой половину пришлось выбросить - не шились, а некоторые грелись.
Потом я стал все проверять.

В теме про Speccy2007 Alex_NEMO тоже не мог прошить EPM7128SLC-84 на новом компьютере.
Помогла прошивка на старом (http://zx.pk.ru/showpost.php?p=284150&postcount=59).

Может попались ПЛИС, зависящие от времянок во время прошивки...

Ewgeny7 6th December 2011 14:28

У меня есть ПЛИСинка EPM3032ALC44, так она, зараза, шьется только будучи вставленной в СМУК второй ревизии. Прошить ее где-либо еще не получилось :)

vlad 6th December 2011 14:33

Обычно ByteBlaster работает в "заднице" компа (LPT разъем), но для удобства его подключают через "хвост" (удлинитель), что существенно влияет на сигнал (затухания, помехи, емкость...). В общем, заморачиваться так сильно не нужно и покупать у проверенных временем дистрибюторов, а иначе кот в мешке Вам обеспечен... Гарантии ведь нет? :)

Vasily 6th December 2011 15:04

Вобщем примерно понятно, что можно попытаться сделать:
1. Шаманю с контактами
2. Если не получилось, то беру официальный док и смотрю что должно быть в минимальной обвязке, для того что бы увидел программатор, проверю плату на соответствие
3. Попробовать прошить на компе класса PII.

Если ничего не помогло, то скорее всего в ведро.

По результатам отпишу.

axel_sunrise 6th December 2011 16:03

Quote:

Originally Posted by zst (Post 443346)
а некоторые грелись.

подобное встречал с этой плисиной

fifan 12th February 2012 22:16

1 Attachment(s)
Решил поднять тему. Вот известная схема удвоения частоты. Но реализация её на ПЛИС не к чему в симуляторе Квартуса не привела - на выходе ноль. Так должно быть?
http://zx.pk.ru/attachment.php?attac...1&d=1329066988

ZEK 12th February 2012 22:32

Quote:

Originally Posted by fifan (Post 466177)
Так должно быть?

да, потому что этот кусок схемы синтезируется в табличку истинности либо in=out либо in=~out, в итоге либо займет одну LUT либо вообще будет заменено дорожкой.

fifan 12th February 2012 22:42

Значит реализация данного кусочка не желательна в ПЛИС - на выходе никогда ничего не появится?
P.S. В схеме ошибка элементы исключающие ИЛИ без инверсии.

ZEK 12th February 2012 23:25

Quote:

Originally Posted by fifan (Post 466201)
ПЛИС - на выходе никогда ничего не появится?

для этого есть специальные цифроаналоговые умножители в составе некоторых чипов, можно самодельный сделать но надо снаружи транзюк и конденсатор как минимум, есть еще косяковые методы с отключением оптимизатора, и делать для задержки цепочки lcell

IanPo 12th February 2012 23:31

fifan, такая асинхронная схема, наверно, заработает, если правильно задать констрейнты.

WingLion 12th February 2012 23:38

Quote:

Originally Posted by fifan (Post 466177)
Вот известная схема удвоения частоты.

В ПЛИС подобные схемы - однозначные генераторы глюков...
Если надо удваивать частоту - надо использовать встроенную 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.

fifan 13th February 2012 05:59

Я просто хочу получить частоту 4 МГц из 10 МГц входных. Решил сначала удвоить частоту, а затем поделить на 5. В семействе MAX7000S функций PLL почти нет. Я нашёл одну: внутренний генератор - мне не пойдёт.

WingLion 13th February 2012 07:06

Вот как-то так можно получить 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:

Code:

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;

только что в квартусе на симуляторе проверил.

Подобным образом можно построить делитель на любой полуцелый коэфициент.

п.с. Идея заимствована из журнала "Радио" из прошлого тысячелетия.

fifan 13th February 2012 18:37

1 Attachment(s)
Что-то не вяжется с частотой. Входная - 10 МГц ~100 нС. Выходная - 500 нС ~ 2 МГц. В верхнем примере считается частота 10/2=5. Т.е. деление не в 2,5 раза, а в 5 раз.

Viktor2312 13th February 2012 19:07

Quote:

Originally Posted by WingLion (Post 466337)
Идея заимствована из журнала "Радио" из прошлого тысячелетия.

А можно поподробнее, хотя бы год за который журнал, если конечно там описывался принцип работы с ПЛИС? И вообще в журнале Радио что-то печаталось о ПЛИС, как о микроконтроллерах?

WingLion 13th February 2012 21:06

Quote:

Originally Posted by Viktor2312 (Post 466563)
А можно поподробнее, хотя бы год за который журнал, если конечно там описывался принцип работы с ПЛИС? И вообще в журнале Радио что-то печаталось о ПЛИС, как о микроконтроллерах?

это было во времена, когда ПЛИС еще и в помине не было...

Схемка на рассыпухе была дана.
Номеров не помню, ибо те времена и те интересы давно канули в лету...

А про ПЛИС (и не только) сейчас печатается не мало в журнале "Компоненты и Технологии".

---------- Post added at 19:06 ---------- Previous post was at 18:51 ----------

Quote:

Originally Posted by fifan (Post 466548)
Что-то не вяжется с частотой. Входная - 10 МГц ~100 нС. Выходная - 500 нС ~ 2 МГц. В верхнем примере считается частота 10/2=5. Т.е. деление не в 2,5 раза, а в 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[1];

END;

END;

fifan 13th February 2012 21:34

Задний фронт слишком затянут: 150 нС против переднего 100 нС. Может не прокатить. Я хочу данный делитель поставить в контроллере дисковода к Специалисту_МХ. Данное несоответствие может сказаться на читаемость дискет.

WingLion 13th February 2012 21:43

э... фронты - это перепады из 0 в 1 и обратно... а не длительность состояния 0 и состояния 1...

Если нужен меандр (одинаковые длительности нуля и единицы) - тогда надо ПЛИС с PLL использовать... а на простой логике из 10МHz меандр с 4MHz получить в принципе невозможно..., потому что 5 на 2 нацело не делится...

---------- Post added at 19:43 ---------- Previous post was at 19:41 ----------

Quote:

Originally Posted by fifan (Post 466638)
Задний фронт слишком затянут: 150 нС против переднего 100 нС. Может не прокатить. Я хочу данный делитель поставить в контроллере дисковода к Специалисту_МХ. Данное несоответствие может сказаться на читаемость дискет.

Кстати, смешной вопрос... Почему бы в ФАПЧ читалки дисковода напрямую 10 MHz не использовать?

fifan 13th February 2012 22:25

Quote:

Originally Posted by WingLion (Post 466641)
... а не длительность состояния 0 и состояния 1...

Да верно, не так написал.
Quote:

Originally Posted by vlad (Post 466649)
fifan, ставьте второй кварц и будет все без заморочек... Нет, то подберите CPLD с PLL.

Второй кварц не пойдёт - сейчас уже не проходит...
CPLD с PLL тоже не нужно. У меня только EPM7064SLC44 и то на основной плате.
Грустно. нужно на обычных ЛП5 и ИЕ5 делать... Всем спасибо, все свободны.:o

lisica 14th February 2012 00:14

Quote:

Originally Posted by WingLion (Post 466623)
Схемка на рассыпухе была дана.

А можно схемку приложить?

WingLion 14th February 2012 00:26

Quote:

Originally Posted by lisica (Post 466701)
А можно схемку приложить?

А чем плох приведенный ранее AHDL код?

p.s. того номера журнала и той схемки у меня давно не осталось.
Остался только принцип в голове... и инфа, откуда он появился.
плюс, реализация на AHDL, на написание которой ушло несколько минут.
Кстати, рисование схемы займет намного больше времени.

vlad 14th February 2012 01:21

Quote:

Originally Posted by lisica (Post 466701)
А можно схемку приложить?

Вот еще интересная статья

lisica 14th February 2012 01:23

Quote:

Originally Posted by WingLion (Post 466704)
А чем плох приведенный ранее AHDL код?

Только в том, что я в нём не разобрался... VHDL пока осваиваю.

WingLion 14th February 2012 05:42

Та же схема на VHDL:

Code:

-- ИСПРАВЛЕННАЯ ВЕРСИЯ
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;

p.s. если VHDL будет освоен, AHDL может и не понадобится... Разве что для понимания того, что делают другие разработчики AHDL - это очень просто!


All times are GMT +4. The time now is 06:42.

Powered by vBulletin® Version 3.8.3
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.