Вход

Просмотр полной версии : ПЛИС и всё что с ними связано



Страницы : 1 2 [3] 4 5 6 7 8

tnt23
21.05.2010, 10:30
ewgeny7,
tnt23,
Я и делал через Megafunction Wizard.

Но нужно ли прописывать компонент PLL в моем vhd-файле?


Нужно инстанциировать (объявить) твой собственный PLL компонент типа altpll.


pll pll_instance (.inclk0 (CLK0), .c0 (clk), .c1 (clk133), .c2 (clk133_3));




И если у меня в vhdl определен пин i25175 in std_logic (CLK4, это вторая PLL на чипе), то как называть входной пин на схеме PLL?
Квартус пишет, что не подсоединен.
Либо вообще игнорирует подключенный PLL, комплирует без него.


Назначить пину имя в Pin Assignment (обозвать как i25175?), затем при инстанциировании pll скармливаешь это имя pll в виде параметра .inclk0 (i25175).

IanPo
21.05.2010, 11:05
Нужно инстанциировать (объявить) твой собственный PLL компонент типа altpll.
Я в двух местах прописал. Выложу файл вечером.


Назначить пину имя в Pin Assignment (обозвать как i25175?), затем при инстанциировании pll скармливаешь это имя pll в виде параметра .inclk0 (i25175).
Пин уже назначен, далее понял.
Про выход .c0 (clk): в vhd я использую далее сигнал clk?

tnt23
21.05.2010, 12:12
Про выход .c0 (clk): в vhd я использую далее сигнал clk?

Да.

Ewgeny7
21.05.2010, 13:27
Но нужно ли прописывать компонент PLL в моем vhd-файле?
Как обычно с подключаемым модулем - component, port map,...


если у меня в vhdl определен пин i25175 in std_logic (CLK4, это вторая PLL на чипе), то как называть входной пин на схеме PLL?
Вероятно, CLK4.

IanPo
21.05.2010, 20:57
Все заработало. Разобрался: я не заменил в инстанции имена сигналов на свои.

Для vhdl-проекта делается так:
создается дополнительный файл-схема, туда ставится компонент altpll,
в появившемся Megafunction Wizard задаются параметры. Нужно также задать
галочкой генерацию файлов cmp и _inst_vhd.
Затем из cmp копируется определение и вставляется в architecture до begin.
Затем из _inst_vhd копируется инстанция и вставляется в architecture после begin.
В инстанции нужно заменить inclk0_sig и c0_sig на входной сигнал (имя пина входа, один из CLK0..3 или CLK4..7 для CycloneII, там 2 PLL) и имя пина выхода или внутреннего сигнала. Вышеприведенное верно для случая один вход и один выход, если сигналов больше, то перенастроек больше, принцип тот же.

Ewgeny7
28.05.2010, 21:41
Выложу для желающих ознакомиться с контроллером клавиатуры от ПЦ применительно к Спектрум-машинам на ПЛИС.
Это "полуфабрикат" (рабочий), куда можно добавлять свои конфиги кнопок.
Как это делается - несложно понять посмотрев готовые примеры.
В архиве два файла - от самой Альтеры (низкоуровневая работа с клавой) и сам модуль zxkbd.v, который сидит поверх альтеровского и непосредственно общается со спектрумом.
Также, несложно переделать его применительно к клавиатурным матрицам другого размера, не только спектрумовской 8х5.
Этот контроллер (только набок кнопок "пожирнее") уже работает здесь (http://www.zx.pk.ru/showpost.php?p=287322&postcount=172) ;)

Alex_NEMO
30.05.2010, 16:30
Вопрос к знатокам.

Есть пара EPM7032LC44-10 сдернутых с "мертвых" сетевух типа Intel Pro 10/100 TX.
По идее, они "залочены". Пробовал достучаться до них БайтБластером по JTAG - получаю ошибку, типа нет ответа по JTAG. Это что - "мертвый" чип или "залоченным" нужен какой-то специфический проггер с ф-цией "разлочки"?

Ewgeny7
30.05.2010, 16:52
нужен какой-то специфический проггер с ф-цией "разлочки"?
Ага, фирменный. Только навряд ли дело в разлочке, скорее выводы JTAG используются как I/O.
Обрати внимание, у тебя серия LC а не SLC. Сие есть важно. Точнее про это знает Микка, но его нет. Он занимался копированием прошивок с LC на SLC в офисе у дистрибутора Альтеры.

Alex_NEMO
30.05.2010, 17:19
Ага, фирменный. Только навряд ли дело в разлочке, скорее выводы JTAG используются как I/O.
Обрати внимание, у тебя серия LC а не SLC. Сие есть важно. Точнее про это знает Микка, но его нет. Он занимался копированием прошивок с LC на SLC в офисе у дистрибутора Альтеры.
Понятно - спасибо за разъяснения... Под рукой есть "крутой" промышленный проггер "BeeProg+" от Elnec, он поддерживает кучу выриантов/режимов программирования, в т.ч. для EPM7xxx: ISP(JTAG)/JAM/SVF и варианты в переходнике. Так вот - знать бы схему переходника... Для семейства MCS51 я делал самопал DIP40 <> PLCC44, а как тут быть - Х.З.

Кстати, а куда Микка пропал? Случилось что?

Ewgeny7
30.05.2010, 17:30
Кстати, а куда Микка пропал? Случилось что?
Говорил работы много. Наверное, с женой поцапался :)

ALEXEY.GORDEEV
31.05.2010, 20:22
Кстати, а кто-нибудь работал с FPGA фирмы Actel? Существует ли программатор для них, который можно собрать самому, как байтбластер например? Не могу найти ни одной схемы...

IanPo
31.05.2010, 22:10
Фиттер мне выдал:
Warning: Can't pack node sLogicalWidth[0] to I/O pin
Warning: Can't pack node sLogicalWidth[0] and I/O node iCD[0] -- no registers available for I/O cell
Кто знает, что сие означает?

Ewgeny7
31.05.2010, 22:24
Это верилог?
Похоже, это что-то наподобие "Can't route to i/o pin" - не хватает ресурсов для "проводки" сигнала на пин ввода/вывода.

IanPo
31.05.2010, 23:14
Это верилог?
Я в VHDL пишу. В Квартусе, Альтера Циклон 2.


Похоже, это что-то наподобие "Can't route to i/o pin" - не хватает ресурсов для "проводки" сигнала на пин ввода/вывода.
Это насколько плохо и что делать?
Может ли это означать, что выводы в разных частях чипа и тупо не хватает соединений? :(

Ewgeny7
01.06.2010, 08:03
Это насколько плохо и что делать?
Может ли это означать, что выводы в разных частях чипа и тупо не хватает соединений?
Самое лучшее - снять привязку сигналов к пинам (в Pin Assignments) и перекомпилировать, чтобы Кактус сам расчитал удобное для него расположение пинов. Но если плата уже разведена и запаяна, то ой :(

IanPo
01.06.2010, 10:19
Самое лучшее - снять привязку сигналов к пинам (в Pin Assignments) и перекомпилировать, чтобы Кактус сам расчитал удобное для него расположение пинов.
Спасибо, попробую.


Но если плата уже разведена и запаяна, то ой
Именно так. Хотя, если это Warning, то, может, все не так плохо?

IanPo
01.06.2010, 22:33
Снятие привязки к пинам не помогло.

IanPo
03.06.2010, 12:04
Имеется ( VDHL ) следующее объявление:
signal sLogicalWidth : std_logic_vector(10 downto 0) := "00101000000";

Означает ли последнее приравнивание, что в регистре после загрузки конфы будет указанное значение?
Квартус при компиляции пишет, что сигналу never assigned a value.

Ewgeny7
03.06.2010, 15:57
IanPo, нет, эти цифирки нужны только для симулятора. Если сигнал является триггером (регистром) то после старта он будет нулевым. Предустановка есть для ячеек памяти.

aniSKY
04.06.2010, 23:10
Доброго всем времени суток!
начал тут осваивать Циклон1 - действительно здоровская шкукенция!:)
А осваивать я решил сразу с видеоустройства спека на ВГА (клок на 14МГц). ну с первого раза ничего никогда не получалось, но пока достиг этого......
есть несколько вопросов:
Как можно слить образ памяти спека с адреса 4000(хекс) из любого эмулятора (непринципиально)?
В каком формате(для заливки его в РОМ для теста)нужно это сделать?
пока все...:)

Keeper
05.06.2010, 00:05
В анриале жмем Esc попадаем в отладчик, там жмем Alt+w -> to binary file, дальше думаю будет понятно..

aniSKY
05.06.2010, 16:20
пока убрал цвет, попытался вывести ЧБ картинку. результат ниже.
могут ли данные глюки пикселей возникнуть от то того что я используюу Флэшром (M29F002NT-120PI) от старой материнки и она подключена к циклону 3.3в IO а сама флэш запитана от 5в? или тут скорости самой флэши нехватает? если нужно могу выложить проект квартуса, на случай если косяк не в флэшке.
клок счетчиков - 14МГц, адрес считается с 4го вывода счетчика - 0.875МГц

svofski
05.06.2010, 16:37
Больше всего похоже на то, что данные защелкиваются слишком рано.

aniSKY
05.06.2010, 16:59
пока они не защелкиваются, я просто мультиплексором их вывожу, каждые 8 пикселов адрес меняется на следующий

svofski
05.06.2010, 17:11
Выглядит так, как будто проблемы только на границах слов. Попробуй сделать что-то наподобие конвейера: пиксели выдвигать из своего внутреннего регистра, а запись в регистр делать в противофазе с переключением счетчика адресов. Тогда у флешки будет достаточно времени, чтобы выдать устоявшийся сигнал.

aniSKY
05.06.2010, 17:26
попрбую и этот способ, но я тут присмотрелся и заметил, что глюк всегда один и тот же и на том же месте, идут с определенной закономерностью. вероятно что в схеме косяк (я в квартусе схемно все нарисовал).
вот скрин по больльше, на нем видно что оба диззика глючат одинаково, да все по вертикали одинаково глюкнуло, выходит знакоместо здвинуто на 1 пиксел по кругу.
но как я это утворил - буду думаьт

svofski
05.06.2010, 17:52
Да, точно, все сдвинуто циклически на 1. Я не заметил на той фотке.

aniSKY
05.06.2010, 18:36
победил я его!!! но при этом пришлось с мухлевать, здвинул биты на 1 в мультеплексоре - УРА! Диззик в номе, как и все изображение впрочем.
было раньше : 7-6-5-4-3-2-1-0 терь 0-7-6-5-4-3-2-1

---------- Post added at 17:36 ---------- Previous post was at 17:03 ----------

теперь видно, что весь экран съехал на пиксель влево (
как это можно регулировать?

svofski
05.06.2010, 18:38
Странно, должен бы съехать на 1 пикесль вправо, ведь на месте самого левого пикселя ты не можешь показать бит 0 еще не загруженного слова.

aniSKY
06.06.2010, 00:29
то была старая схема и слеплена наугад, терь я сделал на сдвиговом регистре, биты стоят по порядку D0..D7, сдвигаю 14МГц клоком. Может кто пояснит на каком такте данные должны грузиться в регистр сдвига (вроде надо дополнительный регистр?) и как грузить первый пиксел в строке?
добалю проект квартуса, может я где еще ошибся :confused:

Ewgeny7
06.06.2010, 13:48
Разжился я тут Кактусом полным, с таблэткой. Жужжит нормально. Только непонятно как использовать пресловутую incremental compilation. Включил в опциях компилирования "smart compilation", но ничего не изменилось. Кто-нить работал на полных версиях?

ZEK
06.06.2010, 14:14
Там есть tuning advisor для incremental compilation
Много чего не совместимо, тот же Signal Tap

aniSKY
25.06.2010, 15:51
может кто подскажет как синхронизировать данный код с сигналом клока, т.е. привязать сигналы к такту клока:

HSCR<='1' when (hcnt>=8 and hcnt<264) else '0';
HVOE<='0' when (hcnt>=309 and hcnt<397) else '1';
HS<='0' when (hcnt>=320 and hcnt<372) else '1';
HRST<='1' when hcnt=448 else '0';

Keeper
25.06.2010, 15:58
signal sHSCR;
signal sHVOE;
signal sHS;
signal sHRST;

process(CLC)
begin
if CLC'event and CLC = '1' then
sHSCR <= HSCR;
sHVOE <= HVOE;
sHS <= HS;
sHRST <= HRST;
end if;
end process;

IanPo
25.06.2010, 17:35
или так (не знаю, занимает ли этот вариант больше LC, однако):
if rising_edge(CLC) then
if hcnt>=8 and hcnt<264 then
HSCR<='1';
else
HSCR<='0';
end;
....остальные сигналы
end;

aniSKY
25.06.2010, 19:55
правильно ли будет написать следующее безобразие:
sPIX_adr (4 downto 0) <= hcnt (7 downto 3);
sPIX_adr (7 downto 5) <= vcnt (6 downto 4);
sPIX_adr (10 downto 8) <= vcnt (3 downto 1);
sPIX_adr (12 downto 11) <= vcnt (8 downto 7);

такой строчкой:
sPIX_adr (12 downto 0) <= hcnt (7 downto 3),vcnt (6 downto 4),vcnt (3 downto 1),vcnt (8 downto 7);
??? :v2_blush:

Keeper
25.06.2010, 20:13
кажись через & надо, я так писал: SHIFT_REG_DB(7 downto 1) & MISO

Ewgeny7
25.06.2010, 20:24
кажись через & надо
Именно так.

aniSKY
25.06.2010, 21:38
я вроде еще порядок битов задом наперед поставил )
так вроде правильно будет?
sPIX_adr (12 downto 0) <= vcnt (8 downto 7)&vcnt (3 downto 1)&vcnt (6 downto 4)&hcnt (7 downto 3);

Ewgeny7
25.06.2010, 22:40
Вроде правильно.
Вот кусочек Скорпиона на Циклоне:
case hcnt(2) is
when '0'=>a<="001" & p7ffd(3) & "10" & vcnt(7 downto 6) & vcnt(2 downto 0) & vcnt(5 downto 3) & hcnt(7 downto 3);
when '1'=>a<="001" & p7ffd(3) & "10110" & vcnt(7 downto 3) & hcnt(7 downto 3);
end case;

aniSKY
25.06.2010, 23:05
Вроде правильно.
Вот кусочек Скорпиона на Циклоне:
case hcnt(2) is
when '0'=>a<="001" & p7ffd(3) & "10" & vcnt(7 downto 6) & vcnt(2 downto 0) & vcnt(5 downto 3) & hcnt(7 downto 3);
when '1'=>a<="001" & p7ffd(3) & "10110" & vcnt(7 downto 3) & hcnt(7 downto 3);
end case;
а можно разжувать для меня что есть за конструкция ...=>a<=...?:v2_blush:
а все остальное я понял вроде...:smile:

... вроде дошло:
когда 0, тогда в "а" идет ("001" & p7ffd(3) & "10" & vcnt(7 downto 6) & vcnt(2 downto 0) & vcnt(5 downto 3) & hcnt(7 downto 3))
когда 1, тогда в "а" идет ("001" & p7ffd(3) & "10110" & vcnt(7 downto 3) & hcnt(7 downto 3))
вроде так..?
ЗЫ: а вот на сдвигающем регистре я чувствую долго корячиться буду, буду лопатить книги пока пойму иль опять в тупик не зайду:v2_smile:

Ewgeny7
26.06.2010, 11:29
... вроде дошло:
Да, это формула case (выбор)
если hcnt(2) равно нулю, то в А поступают одни данные,
если равно единице - то другие.
Здесь реализовано чтение данных по видео и по атрибутам экрана.

IanPo
26.06.2010, 19:27
Вот так более понятно:

case hcnt(2) is
when '0'=>
a<="001" & p7ffd(3) & "10" & vcnt(7 downto 6) & vcnt(2 downto 0) & vcnt(5 downto 3) & hcnt(7 downto 3);
when '1'=>
a<="001" & p7ffd(3) & "10110" & vcnt(7 downto 3) & hcnt(7 downto 3);
end case;

skyther
01.07.2010, 00:14
altera SDRAM
http://whoyouvotefor.info/altera_sdram.html

aniSKY
04.07.2010, 23:14
помогите понять что не так:confused:

process (CLK0)
begin
if (CLK0'event and CLK0='1') then
if hcnt(8 downto 0) <= 448 then
hcnt <= hcnt + 1;
else hcnt <= "000000000";
end if;
end if;
end process;

Квартус выдает ошибку:
Error (10327): VHDL error at vgasync.vhd(36): can't determine definition of operator ""<="" -- found 0 possible definitions

:v2_conf2: скопировал из другого проекта где процесс работал, что я не так делаю:v2_conf3:???

Ewgeny7
04.07.2010, 23:36
can't determine definition of operator ""<="" -- found 0 possible definitions
"Невозможно применение <= в данном конкретном случае". На какую строчку укажет курсор если щелкнуть по сообщению об ошибке?
Как у тебя описан сигнал hcnt?

---------- Post added at 23:30 ---------- Previous post was at 23:29 ----------


if hcnt(8 downto 0) <= 448 then
слепая я п... :)
Поправь <= на =.
Удачи :)

---------- Post added at 23:36 ---------- Previous post was at 23:30 ----------

Кстати, лучше писать так:

process(clk0,hcnt)
begin
if (clk0'event and clk0='1') then
if hcnt=447 then -- для 448 пикселей (0-447)
hcnt<="000000000";
else
hcnt<=hcnt+1;
end if;
end if;
end process;

aniSKY
05.07.2010, 00:02
спасибо,:v2_wink: оказалось нужно было добавить это в начало:
use IEEE.std_logic_unsigned.all;
только после этого все заработало:v2_blush:

syd
22.07.2010, 11:05
Подскажите как в квартусе задать в настройках, чтобы задержка группы сигналов (например идущих на сдрам) была приблизительно одинаковой (например по отношению к клоку).

tnt23
22.07.2010, 12:13
Если для притирки SDRAM, то стоит взять TimeQuest II и в нем "отконстрейнить" дизайн (то есть задать все ограничения и требования по времянкам). Тогда квартус при компиляции будет эти требования и ограничения учитывать.

Книжки на тему (мне их не прицепить, но гуглятся легко):

"Quartus II TimeQuest Timing Analyzer Cookbook"
документ "Constraining SOPC Designs v1.1.doc"
документ "TimeQuest_Clocks_Quick_Start_Guide.doc"
" AN433 - Constraining and Analyzing Source-Synchronous Interfaces.pdf"

fifan
04.08.2010, 18:58
Извините что не в тему, хочу задать вопрос. Что-то в Квартусе 2 у меня после компиляции не пишется отчет о задействованных ячейках, в том числе и памяти (использую ПЗУ на 4 кБайта в проекте). Может я где-то какие-то крыжики не поставил?

Keeper
04.08.2010, 19:12
файлы проекта в студию...

Ewgeny7
04.08.2010, 19:15
Может я где-то какие-то крыжики не поставил?
Гы... А ты привязку сигналов к пинам сделал в заголовке?
Дай сам файлик посмотреть.

fifan
05.08.2010, 04:22
Вот сам файлик. Но привязку я сделал, не первый раз замужем. В других проектах (они в большинстве на 7128, а этот - на Циклоне) все нормально. Причем выходные файлы компилятора создаются.

Keeper
05.08.2010, 04:40
файлы проекта в студию...

Неплохо было бы увидеть все файлы проекта, от одного vhdl файла толку мало...


VAIT : out std_logic;

Скорее всего WAIT

fifan
05.08.2010, 04:46
Пожалуйста, правда причем здесь остальные файлы для понимания. Суть проблемы-то не меняется.

fifan
05.08.2010, 04:50
Неплохо было бы увидеть все файлы проекта, от одного vhdl файла толку мало...


VAIT : out std_logic;

Скорее всего WAIT
Возможно, хотя я эту переменную не изменял.

Хотя нет в vhdl языке переменная wait зарезервирована и ее нельзя использовать. В редакторе при попытке поменять на правильное WAIT последнее подсвечивается синем цветом.

svofski
05.08.2010, 04:53
Картинка говорит о том, что где-то упущен clock, или enable, или есть еще какой-то промах из-за которого вся схема упростилась практически до пустышки.

Надо внимательно читать сообщения, которые Квартус выдает при компиляции и внимательно смотреть все свои сигналы и шины. Бывает.

fifan
05.08.2010, 05:27
Комментарии к проекту:
1. Описания и организацию работы с клавиатурой (еще не задействована) я позаимствовал у Ewgeny7.
2. Пока пытаюсь эмуллировать оригинальный Специалист, но в плане и МХ.
3. Буду применять готовые исходники 8253 для эмулляции последнего.

Ewgeny7, на словах объясни каким образом у тебя меняются прошивки мониторов в проекте.

---------- Post added at 07:02 ---------- Previous post was at 07:00 ----------

Возможно. Предупреждений более 100 пока. На какой вывод данного Циклона следует привязывать сигнал CLOCK в моем проекте частотой 24 МГц?

---------- Post added at 07:16 ---------- Previous post was at 07:02 ----------

Вопрос о выводе результатов компиляции снимается. Просто компилятор в одном из предупреждений выдал мне что не используется вход clock. Я поменял в самом начале программы на следующее:

clk <= '0' when clock = '0' else '1';
И все стало выводится. Пока задействовано 50% ячеек и 32832 из 59904 бит памяти (4 кБайта).

---------- Post added at 07:17 ---------- Previous post was at 07:16 ----------

А как сделать деление входной частоты на 3?

---------- Post added at 07:27 ---------- Previous post was at 07:17 ----------

Количество предупреждений доведено до 44!

Ewgeny7
05.08.2010, 10:03
Да, ошибка была тут:
clk <= '1' when clock = '0' else '1';
схема просто не тактировалась, отсюда и "оптимизация в ноль".



Ewgeny7, на словах объясни каким образом у тебя меняются прошивки мониторов в проекте.
Делаю ROM размером с два монитора. Соответственно, оба монитора там и сидят.
Переключаю банально руля старшим адресом ROM. На клавиатуре у меня задействована кнопка F8 для переключения, в модуле это сигнал cpm_s (нажата - "1"), сигнал идет на обычный триггер, с которого и рулится старший адрес ROM с мониторами.


Количество предупреждений доведено до 44!
Хорошо, но лучше меньше :)
У меня в "напиханном" Орионе 25 варнингов.
Избавляйся по мере возможностей от latch (простые "защелки" в проекте заменяй на регистры, тактируемые клоком).


А как сделать деление входной частоты на 3?
Проще всего - PLL. Но без нормальной разводки питания может подглюкивать и "плыть". Сделай простой счетчик на три клока, по заполнению меняй фазу выходного клока.

---------- Post added at 10:03 ---------- Previous post was at 09:51 ----------

Кстати, если деление частоты тебе нужно только для процессора, то есть такая удобная хитрость - не делить частоту, а просто приостанавливать подачу тактовой на нужное время. Например, у тебя есть счетчик пикселей hcnt. Можно сделать так, например:

clk_cpu<=not(clk_cpu) when ((clock'event and clock='1') and (hcnt(2)='0'));

Это даст тебе псевдоделение частоты на два. Изменяя параметры hcnt можешь получать другие частоты :)

ZEK
05.08.2010, 10:31
Сделай простой счетчик на три клока, по заполнению меняй фазу выходного клока.
это на 6

Ewgeny7
05.08.2010, 10:47
это на 6
ага, обсчитался :)

fifan
05.08.2010, 11:39
Избавляйся по мере возможностей от latch (простые "защелки" в проекте заменяй на регистры, тактируемые клоком.
т.е. типа этих?

signal scan_key: std_logic_vector(7 downto 0);
signal slow: std_logic register;

Ewgeny7
05.08.2010, 11:56
Например, было так:

process(eoc,int_keyb,int_buf)
begin
if eoc='1' then
vector<="11111101";
elsif (int_keyb='1' and int_buf='0') then
vector<="11111011";
end if;
end process;

Это даст лишний варнинг, что vector - это latch. А это не очень хорошо... Можно получить неустойчивую работу из-за "иголок" и "гонок". Делаем так:

process(clock,eoc,int_keyb,int_buf)
begin
if (clock'event and clock='1') then
if eoc='1' then
vector<="11111101";
elsif (int_keyb='1' and int_buf='0') then
vector<="11111011";
end if;
end if;
end process;

Теперь компилятор доволен, а мы избавлены от глюков.

IanPo
05.08.2010, 12:00
т.е. типа этих?
Защелка образуется, например, когда в процессе
есть условия, а присвоение значения производится
не во всех вариантах условия.

http://www.interfacebus.com/Design_VHDL_Pitfalls.html - на англ.

Ewgeny7
05.08.2010, 12:06
Образно говоря, мы заменяем 555ИР22 на 555ИР23 :)

---------- Post added at 12:06 ---------- Previous post was at 12:03 ----------


Защелка образуется, например, когда в процессе
есть условия, а присвоение значения производится
не во всех вариантах условия.
Не только...
Защелка записывает в себя данные всё время, пока активен сигнал выбора этой защелки. Если же сделать эту защелку синхронной, т.е. тактировать ее фронтом какого-либо сигнала, то запись будет происходить мгновенно, например как D-триггер, или регистр ИР23.

Keeper
05.08.2010, 14:09
А как сделать деление входной частоты на 3?

Делается делителем на 4 и элементом "Исключающее ИЛИ"

http://library.espec.ws/books/ttl/CHAPTER2/2-4-3.htm

fifan
05.08.2010, 16:43
Ewgeny7, в твоём файле orionkeyboard.v есть вот такие конструкции:


...
keymatrix[7] <= 8'h0;
...
9'h06c: keymatrix[0][0] <= press_release; //Home
...

Эти два массива различные? Если да, то почему они названы одинаково или это в синтаксисе языка дозволено? Первый индекс означен номер столбца, второй - строки или наоборот?
Я почему спрашиваю. Для реализации клавиатуры в Специалисте, мне приходится перелопачивать весь текст программы, т.к. приходится описывать клавиатуру 12 на 6. В программе учитывается ли что русская и английская раскладка на одних и тех же клавишах не совпадают?

Ewgeny7
05.08.2010, 17:28
Если да, то почему они названы одинаково или это в синтаксисе языка дозволено? Первый индекс означен номер столбца, второй - строки или наоборот?
Да, keymatrix это массив 8х8. Синтаксис позволяет описывать как любой "бит" массива, так и строчку целиком. Что там строка а что столбец - я уже не помню, надо схему РК-клавиатуры смотреть.


мне приходится перелопачивать весь текст программы, т.к. приходится описывать клавиатуру 12 на 6.
Я приспосабливал этот блок для спектрума, исправлений было достаточно (5х8). Символы переписывал долго :) Выкладывал готовый блок где-то здесь в теме.



В программе учитывается ли что русская и английская раскладка на одних и тех же клавишах не совпадают?
Нет. В Орионе нет четкого сигнала, указывающего на выбранную раскладку. Если бы был, то добавить удобную для себя раскладку - не проблема. Всего лишь сделать вторую таблицу символов :)
А так как есть - только ЯВЕРТЫ.

fifan
05.08.2010, 17:47
Да, keymatrix это массив 8х8.
Всё ж, массив который одномерный как-то отличается от двухмерного или это один и тот же массив?



Я приспосабливал этот блок для спектрума, исправлений было достаточно (5х8). Символы переписывал долго :) Выкладывал готовый блок где-то здесь в теме.
У меня есть этот файл - посмотрю.



А так как есть - только ЯВЕРТЫ.
Жаль. А вот в Специалисте есть клавиша РУС/LAT - можно же по нажатию её организовать триггер состояния клавиатуры?

Ewgeny7
05.08.2010, 18:13
Всё ж, массив который одномерный как-то отличается от двухмерного или это один и тот же массив?
Один и тот же.


А вот в Специалисте есть клавиша РУС/LAT - можно же по нажатию её организовать триггер состояния клавиатуры?
А сама система будет знать какую раскладку ты выбрал? ;)
А если сам монитор без твоего участия раскладку выберет?
Мы уже этот гемор с раскладками подробно проходили, выхода не нашли...

fifan
05.08.2010, 18:44
Так в Специалисте есть светодиод "РУС/LAT"...

Ewgeny7
05.08.2010, 19:20
Так в Специалисте есть светодиод "РУС/LAT"...
В Орионе тоже есть. Только он не обязательно включается :(

fifan
09.08.2010, 20:29
Вроде добил драйвер клавиатуры, просмотрите. В нем - metod - метод опроса клавиатуры:
=0 - порт А и мл. тетрада порта С - на вывод, порт В - на ввод;
=1 - порт В - на вывод, порт А и мл. тетрада порта С - на ввод.

Ewgeny7
09.08.2010, 20:37
Работает?

fifan
09.08.2010, 20:59
Да нет, пока у меня железки нет,прогу пишу...

Ewgeny7
09.08.2010, 21:25
Да нет, пока у меня железки нет,прогу пишу...
Напиши под готовую железку - девборду "Орион-2010" ;)

fifan
11.08.2010, 16:44
Ewgeny7, при компиляции программы большинство варнингов (30) выдается на файл ps2_keyboard.v. Что это за ошибки?

Warning (10230): Verilog HDL assignment warning at ps2_keyboard.v(321): truncated value with size 32 to match size of target (1)
Warning (10230): Verilog HDL assignment warning at ps2_keyboard.v(332): truncated value with size 32 to match size of target (1)
Warning (10230): Verilog HDL assignment warning at ps2_keyboard.v(333): truncated value with size 32 to match size of target (1)
Warning (10230): Verilog HDL assignment warning at ps2_keyboard.v(338): truncated value with size 32 to match size of target (1)
Warning (10230): Verilog HDL assignment warning at ps2_keyboard.v(339): truncated value with size 32 to match size of target (1)
Warning (10230): Verilog HDL assignment warning at ps2_keyboard.v(341): truncated value with size 32 to match size of target (1)
Warning (10230): Verilog HDL assignment warning at ps2_keyboard.v(359): truncated value with size 32 to match size of target (4)
Warning (10230): Verilog HDL assignment warning at ps2_keyboard.v(388): truncated value with size 32 to match size of target (12)
Warning (10230): Verilog HDL assignment warning at ps2_keyboard.v(396): truncated value with size 32 to match size of target (8)

fifan
11.08.2010, 17:06
Напиши под готовую железку - девборду "Орион-2010" ;)
Не получится. ОЗУ на Специалисте должно с видео ОЗУ цвета иметь нелинейную структуру т.е. 48 кБайт + 12 кБайт. Если расширять до МХ то еще 512 кБайт опять в другом месте. Так что это две срамины, причем одна из них 16 байт ввода/вывода с параллельной шиной адреса и управлением. ПЗУ должно быть от 12 кБайт до 512 кБайт (МХ). Вот посмотрите схему - http://www.spetsialist-mx.ru/for_out/NewSpets.gif. Спасибо конечно за предложение.

ZEK
11.08.2010, 17:40
Что это за ошибки?
32 битное число присваивается вектору меньше чем 32 бита

Например
reg [3:0] tmp;

tmp = 10; // ругнется
tmp = 4'd10; // не ругнется

fifan
11.08.2010, 18:16
Может быть, но я файл взял с проект Орион-2010. У Ewgeny7 таких варнингов нет?

Ewgeny7
11.08.2010, 18:30
Может быть, но я файл взял с проект Орион-2010. У Ewgeny7 таких варнингов нет?
Есть. Не обращай внимание. Происходит уменьшение разрядности спецпеременных до нужного размера.

IanPo
19.08.2010, 11:24
Почему-то ранее не встречал таблички для VHDL, где были бы расписаны
приоритеты операторов, знаков и т.п., т.е. в какой последовательности
производится разбор сложных выражений.
(Это позволит пресечь злоупотребление скобочками, между IF и THEN, например ;) )
Исправляем ситуацию:

and, or, nand, nor, xor – самый низкий приоритет

=, /=, <, <=, >, >=

+, -, & (бинарные)

+, - (унарные)

*, /, mod, rem

abs, not – высший приоритет

Операторы с более высоким приоритетом выполняются раньше. Чтобы изменить такой порядок используются скобки.

aniSKY
21.08.2010, 18:02
Что может давать такие искажения? если бордер будет черный - искажение мене выражено
(создано на ФПГА, картинка берется из ПЗУ, вывод на ВГА, тайминги приближены к его стандарту - не скандаблер)

zx-kit
21.08.2010, 18:05
Что может давать такие искажения? если бордер будет черный - искажение мене выражено
(создано на ФПГА, картинка берется из ПЗУ, вывод на ВГА, тайминги приближены к его стандарту - не скандаблер)

Может два кадровых синхроимпульса?
Или строчные синхроимпульсы в этом месте отличаются от других.

svofski
21.08.2010, 18:35
если бордер будет черный - искажение мене выражено
Я бы проверил гашение в интервалах между строками.

Ewgeny7
21.08.2010, 20:42
Файлы нужно смотреть. Похоже на то, что селекторы синхроимпульсов не имеют привязки к клоку.

Ewgeny7
21.08.2010, 23:33
Похоже на то, что селекторы синхроимпульсов не имеют привязки к клоку.
По человечески это звучит так.
Имеются у нас счетчики пикселей/строк. Тактируются клоком. Но при этом после очередного клока эти счетчики еще какое-то время "устаканиваются". Но за это небольшое время их значение будет "колбаситься" весьма основательно, возникают ложные значения. Если формирователь синхры у нас сделан примерно так:

hsyn<='0' when (vcnt>224) and (vcnt<228) else '1';

то будут ложные переключения значения hsyn.
Если так:

process(vcnt)
begin
if vcnt=224 then
hsyn<='0';
elsif vcnt=228 then
hsyn<='1';
end if;
end process;

то результат может быть еще хуже, импульс hsyn может растянуться на изрядное пространство фрейма, притом в неположенном месте. Да и "защелка" ("latch") hsyn лишняя совершенно не нужна, ПЛИСы их очень не любят.

Поэтому лучше дать кусочек времени счетчикам для "успокоения значения". Для этого применяем тот же клок. В результате мы прочитаем значение на период (или полпериода) позже, зато чётко и надежно. Заодно latch превратится в обычный синхронный триггер, что само по себе очень хорошо :) :

process(clk,vcnt)
begin
if (clk'event and clk='1') then
if vcnt=224 then hsyn<='0'; end if;
if vcnt=228 then hsyn<='1'; end if;
end if;
end process;

aniSKY
22.08.2010, 21:38
а как тогда задать hsync='1' всегда кроме описанного примера выше, или по другому, до того как сменить значение на '0', hsync должен выдавать '1' ?. или это не нужно ( все равно после первой строки все войдет в норму)?
у меня сейчас вот так:
process (CLK,hcnt)
begin
if (CLK'event and CLK='1') then
---
if (hcnt>=320 and hcnt<382) then HSYNC<='0';
else HSYNC<='1';
end if;
---
if (hcnt>=312 and hcnt<400) then HBLANC<='1';
else HBLANC<='0';
end if;
---
if (hcnt>=8 and hcnt<264) then HSCR<='1';
else HSCR<='0';
end if;
---
if hcnt=448 then HRST<='1';
else HRST<='0';
end if;
---
end if;
end process;
но по твоему мне как то больше нравиться, все четко и понятно.

Ewgeny7
22.08.2010, 21:48
все равно после первой строки все войдет в норму
Правильно. Первый фрейм все равно будет косой, но его никто не увидит :)

aniSKY
22.08.2010, 22:18
переписал свои селекторы вот так:
process (CLK,hcnt)
begin
if (CLK'event and CLK='1') then
---
if hcnt=320 then HSYNC<='0'; end if;
if hcnt=382 then HSYNC<='1'; end if;
-- if (hcnt>=320 and hcnt<382) then HSYNC<='0';
-- else HSYNC<='1';
-- end if;
---
if hcnt=312 then HBLANC<='1'; end if;
if hcnt=400 then HBLANC<='0'; end if;
-- if (hcnt>=312 and hcnt<400) then HBLANC<='1';
-- else HBLANC<='0';
-- end if;
---
if hcnt=8 then HSCR<='1'; end if;
if hcnt=264 then HSCR<='0'; end if;
-- if (hcnt>=8 and hcnt<264) then HSCR<='1';
-- else HSCR<='0';
-- end if;
---
if hcnt=448 then HRST<='1';
else HRST<='0';
end if;
---
end if;
end process;
это по горизонтали (закоментил старый вариант)
и так:
process (CLK,vcnt)
begin
if (CLK'event and CLK='1') then
---
if vcnt=224 then VSYNC<='0'; end if;
if vcnt=225 then VSYNC<='1'; end if;
-- if vcnt=224 then VSYNC<='0';
-- else VSYNC<='1';
-- end if;
---
if vcnt=216 then VBLANC<='1'; end if;
if vcnt=241 then VBLANC<='0'; end if;
-- if (vcnt>=216 and vcnt<241) then VBLANC<='1';
-- else VBLANC<='0';
-- end if;
---
if vcnt<192 then VSCR<='1';
else VSCR<='0';
end if;
---
if vcnt=264 then VRST<='1';
else VRST<='0';
end if;
---
end if;
end process;
по вертикали (в коментах также старый вариант)
и как итог - опять появились срывы, но вот почему только в середине экрана(вторая из трех частей) ума не приложу...... на ЖКИ 22" вайдскрин - теже пилы видны, что и на стареньком ВГА 14". опять в легком тупнике...

Ewgeny7
22.08.2010, 22:45
aniSKY, извини, а сколько строк у тебя по вертикали выходит?
Да и кадровый "толщиной" в одну строку как-то смущает...

aniSKY
22.08.2010, 23:17
aniSKY, извини, а сколько строк у тебя по вертикали выходит?
Да и кадровый "толщиной" в одну строку как-то смущает...
по вертикали 264(или 528 если весь счетчик брать, я беру только начиная с с 1го разряда)
кадровый - если брать все разряды то получится две строки, просто 0й разряд не беру в расчет.
опишу в общем весь проект - смесь схемного ввода с кусками на ВХДЛ, пытался на чистом ВХДЛ, но начинаю путаться, мне схемный немного ближе, визуально более понятен, да и та часть что сдвигает пиксели (сдвиговый регистр пикселей) так и не поддается мне....:v2_blush:
на всякий пожарный мой проект по частям:

aniSKY
26.08.2010, 23:50
может кто поможет в написании мультиплексора, коммутирующего двунаправленную шину к двунаправленной или к шине на вывод по сигналу выбора какимнить маленьким примером? а возможно ли такое?
з.ы. хочется подрубить свою поделку к компутеру, а в двунаправленности шин в ВХДЛ все никак не разберусь....ток сильно не пинайте, на конкретных примерах както проще разобраться.

IanPo
27.08.2010, 11:31
Для затравки выкладываю пример:
двунаправленный порт FF (условно, конечно), проц его читает и туда пишет;
Если для записи и чтения порты разные, но номер одинаковый, то в процессах пишем в один сигнал, читаем из другого (его нужно добавить).



-- ПЛИС <-> Z80 чтение-запись порта, например, FF

port (
signal iAddrZXbus : in std_logic_vector (15 downto 0);
signal ioDataZXbus : inout std_logic_vector (7 downto 0);
signal iIorqZXbus : in std_logic;
signal iRdZXbus : in std_logic;
signal iWrZXbus : in std_logic;
signal iM1ZXbus : in std_logic; -- добавить, чтобы не срабатывал при подтв.прерывания
signal iResetZXbus : in std_logic;
signal iFZXBus : in std_logic ) -- тактовый 14 МГц

signal sIoWr : std_logic;
signal sIoRd : std_logic;

signal A1,A2 : std_logic;

signal sFF : std_logic_vector (7 downto 0);

sIoWr <= iIorqZXbus or iWrZXbus;
sIoRd <= iIorqZXbus or iRdZXbus;

process (iFZXbus)
begin
if iReset = '0' then
ioDataZXbus <= (others => 'Z');
elsif rising_edge(iFZXbus) then
A1 <= sIoWr;
A2 <= not A1;
if sIoRd = '0' and iAddrZXbus = x"00FF" then
ioDataZXbus <= sFF;
else
ioDataZXbus <= (others => 'Z');
end if;
if (A1 or A2) = '0' and iAddrZXbus = x"00FF" then
sFF <= ioDataZXbus;
end if;
end if;
end;

IanPo
27.08.2010, 15:27
aniSKY, то есть, все понятно? Могу прокомментировать.
Код я не проверял, но, по идее, должен работать.
Нужно еще сделать проверку на /IORQ и M1,
чтобы не реагировало на подтверждение прерывания
(это надо в доке на проц уточнить).

fifan
27.08.2010, 16:01
aniSKY, что-то я не понял у тебя в блоках hsgen.vhd и vsgen.vhd отсутствует приращение горизонтальных и вертикальных счётчиков. Забыл? Еще одна ошибка. На выходе элемента И (inst20) всегда будет 0. Это в формировании сигнала PINF.

Ewgeny7
27.08.2010, 20:13
fifan, не, счетчики строк/пикселей в графическом блоке. В текстовиках только селекторы синхры.

fifan
27.08.2010, 20:30
счетчики строк/пикселей в графическом блоке. В текстовиках только селекторы синхры.
Понял, не сразу разглядел.:cool:

aniSKY
27.08.2010, 21:42
На выходе элемента И (inst20) всегда будет 0. Это в формировании сигнала PINF.
эт пока счетчик на ФЛЭШ не добавлен, позже допишу, как более менее заработает буду подчищать, по возможности в ВХДЛ переписывать:)

---------- Post added at 20:36 ---------- Previous post was at 20:33 ----------


aniSKY, то есть, все понятно? Могу прокомментировать.
Код я не проверял, но, по идее, должен работать.
Нужно еще сделать проверку на /IORQ и M1,
чтобы не реагировало на подтверждение прерывания
(это надо в доке на проц уточнить).
на 100% еще наверно нет, просто как пример использовании двунаправленных портов/сигналов/шин (или как там правильнее) немного прояснил, а мысли пошли думать дальше....:v2_thumb:

---------- Post added at 20:42 ---------- Previous post was at 20:36 ----------

если можно в краце пояснить данную конструкцию:
if iReset = '0' then
ioDataZXbus <= (others => 'Z');
elsif rising_edge(iFZXbus) then
... далее по примеру
ioDataZXbus <= (others => 'Z'); -- как это описывается словами? (правильно наверно (others) ?)

Ewgeny7
27.08.2010, 22:10
ioDataZXbus <= (others => 'Z'); -- как это описывается словами? (правильно наверно (others) ?)
Здесь можно немножко упростить для понимания:
ioDataZXbus <="ZZZZZZZZ";
Так лучше? ;) Просто в первой записи мы не указываем разрядность.

IanPo
27.08.2010, 23:19
если можно в краце пояснить данную конструкцию:
if iReset = '0' then
ioDataZXbus <= (others => 'Z');
elsif rising_edge(iFZXbus) then
... далее по примеру
ioDataZXbus <= (others => 'Z'); -- как это описывается словами? (правильно наверно (others) ?)
Если сброс нажали, то асинхронный сброс (как у триггера, то есть это и будет триггер, точнее, регистр). Правильно сигнал будет iResetZXbus, а не iReset. При этом шина переходит в Z-состояние.
A1 и A2 - детектор спада (в течение 1 такта действует, чтобы 1 раз писать).
Если проц выставил IORQ и RD в 0 и на шине адреса - адрес порта, то ставим на шину данных и держим содержимое порта, пока проц его не считает (станет IORQ =1 и RD = 1).
Если IORQ и WR активны (равны 0), то 1 раз (так как детектор) пишем в регистр (порт) значение с шины данных.

IanPo
30.08.2010, 11:59
Есть сигналы:

signal a,b : std_logic_vector (11 downto 0);
signal c : std_logic_vector (18 downto 0);

хочется написать конструкцию типа:
c <= (a*b)(18 downto 0);
однако, компилятор ругается на скобки.
Можно ли сделать БЕЗ использования доп. переменной?
variable i : std_logic_vector(25 downto 0);

i := a*b;
c <= i(18 downto 0);

fifan
30.08.2010, 16:29
Под * подразумевается умножение? Вроде так не делается. Необходимо специальную программку писать поразрядного умножения.

IanPo
30.08.2010, 17:02
Под * подразумевается умножение? Вроде так не делается. Необходимо специальную программку писать поразрядного умножения.
На Циклоне 2 встроенных сколько-то-битных умножителей 26 штук.

fifan
30.08.2010, 20:39
Да-да или использовать мегафунции.

krotan
09.09.2010, 21:02
Книжки на русском и английском:
http://rutracker.org/forum/viewtopic.php?t=2135243
http://rutracker.org/forum/viewtopic.php?t=2357013

axel_sunrise
01.10.2010, 13:42
У меня вопросы
1.на Алтере 3000 и 7000 возможно ли ставить вентили КМОП или только ТТЛ?

2.На этих же плисах можно ли,как правильно сказать не знаю,прописать резисторы и конденсаторы в ячейку

3.Плис семейства 3000 (например epm3064) требует питалово 3.3 в,следовательно на выходах будут 3в...можно ли напрямую подключать выходы плис,например,к микросхемам (например к555,кр1533) или требуется какое то преобразование

пока всё..

Ewgeny7
01.10.2010, 13:59
2. Нет. Только извращаться с логикой. Ты наверное имел ввиду чтото вроде RC-цепочек?
3. Можно. И ТТЛ и КМОП нормально работают с 3.3 выходами ПЛИС. Как вариант, можешь поднять напряжение питания ПЛИС. Они прекрасно работают и при 5 вольт питания.

axel_sunrise
01.10.2010, 15:28
[QUOTE=Ewgeny7;319874]2. Нет. Только извращаться с логикой. Ты наверное имел ввиду чтото вроде RC-цепочек?

ага,типа того :)

А какую недорогую Xilinx Плис можете посоветовать,чтоб поучиться с ней работать?

Z_E_V_S
01.10.2010, 15:35
Всем добрый день.

Задам один вопрос по ядру Т80, может кто сталкивался?

ситуация следующая - имеется вот такая конструкция :

cpuWAIT_n <= not TrdosWait;

process( clk_in ) -- 56 МГЦ

begin

if (clk_in'event and clk_in = '1') then

if cpuIORQ_n = '0' and cpuWR_n = '0' and cpuM1_n = '1' and cpuBUSAK_n = '1' then --CPU WRITE

if TrdosFlag = '1' then

TrdosWait <= '1';

end if;
end if;
end if;
end process;

ядро Т80 тактируется от тогоже синхронного счетчика, что и этот процесс, но с частотой 3,5 мгц.

проблема в том, что Т80 в указаном месте не останавливается, а останавливается на выборке следующей за OUT командой,
хотя он должен в такте Т2 опросить сигнал cpuWAIT_n и остановиться.

sid вообще отказался от использования cpuWAIT_n в своей разработке.
Может у кого есть объяснение сего :v2_conf3: Буду благодарен.

P.S. к стати, а вот с этим работает правильно.

fifan
01.10.2010, 17:39
axel_sunrise
1. Вопрос не корректен. Эмуллируется (вернее есть в библиотеке) стандартные элемены ТТЛ логики. Ищи функциональные аналоги ТТЛ логики. Например 561ЛА7 -> 555ЛА3 -> 7400 и т.д.
2. В плисинах эмуллируются логические элемены и ИМС, состоящие из логических элементов. Вспомнился институт, там мы курсовые писали о том как в гибридные микросхемы запихать различные полупроводники, конденсаторы и микросхемы.
3. Ewgeny7 ответил точно. Ещё как вариант можно между 5 вольтовой логикой и ПЛИС воткнуть резисторы 300 Ом, если предполагается обмен в обе стороны или поставить типа SN74LVC245DW (8 битный двухнаправленный буфер) и запитать его от 3,3 В.

axel_sunrise
05.10.2010, 13:22
Скажите,а в графическом редакторе Max Plus 2 как обозначать выводы ( (которые в будущем будут подключены к процессору и рам,имею ввиду двунаправленные шины А0-А15, D0-D8)?там есть значки output input - это понятно,но есть ещё bidir bidirc outputc...какие использовать для двунаправленных шин?

fifan
05.10.2010, 17:01
bidir

Z_E_V_S
06.10.2010, 15:42
Маленькое инфо!

в ядре Т80 , которое выложено на OpenCores есть ошибки.
В часности при выполнении команд INI, IND, INIR, INDR ; OUTI, OUTD, OTIR, OTDR регистровая пара HL не изменяется !!!

Блин потратил 2 дня на выяснение этой гадости :(

Ewgeny7
06.10.2010, 16:38
Маленькое инфо!

в ядре Т80 , которое выложено на OpenCores есть ошибки.
В часности при выполнении команд INI, IND, INIR, INDR ; OUTI, OUTD, OTIR, OTDR регистровая пара HL не изменяется !!!

Блин потратил 2 дня на выяснение этой гадости
Да, там ошибка. Syd исправил ее. Теперь работает прекрасно.

fifan
06.10.2010, 16:41
Да, там ошибка. Syd исправил ее. Теперь работает прекрасно.
А исправленное ядро не дадите?

Ewgeny7
06.10.2010, 16:42
Загляни сюда (http://www.zx.pk.ru/showpost.php?p=321105&postcount=302). Здесь ядро Т80 уже патченное и нормально исполняет команды INIR-OTIR. Только после сброса на шине адреса не ноль, а единица ;)

axel_sunrise
07.10.2010, 15:49
ребята,подскажите схему для подключения статической памяти к спектрумму,чтоб запихнуть её в плис?

fifan
07.10.2010, 16:35
В плисине Циклон-3 от Алтеры, например, более 51 кБайт памяти внутренней. На твои извароты не хватит? Тогда подключай как в Reverse. Учи язык vhdl. На пальцах не покажешь, нужно в программу врубаться. А лучше вот почитай - http://www.zx.pk.ru/showpost.php?p=179392&postcount=39.

axel_sunrise
08.10.2010, 09:37
ессесно саму память я не собирался пихать в альтеру))))

Ewgeny7
08.10.2010, 09:39
подскажите схему для подключения статической памяти к спектрумму,чтоб запихнуть её в плис?
вроде как никто такого изврата не делал

axel_sunrise
08.10.2010, 12:54
ну как же?а спесси 2007,Реверс они же на статической памяти(SRAM - Static ram)?
Всю логику запихнуть в плис,а к плис подрубить память
Проект мой - плис+z80+озу+пзу

Ewgeny7
08.10.2010, 14:20
ну как же?а спесси 2007,Реверс они же на статической памяти(SRAM - Static ram)?
Всю логику запихнуть в плис,а к плис подрубить память
Проект мой - плис+z80+озу+пзу
ну дык и вопрос надо задавать правильно.
Судя по твоему вопросу ты хотел подключить статическую памать вместо динамики к реальному спектруму. Я тебе на это и ответил.

---------- Post added at 14:20 ---------- Previous post was at 14:11 ----------

А насчет проекта с логикой целиком в ПЛИС тебе fifan правильно ответил - почитай это: http://www.zx.pk.ru/showpost.php?p=179392&postcount=39
Практическую реализацию можешь подсмотреть в треде "Reverse", там достаточно просто всё сделано, на примере аж двух платформ.

Ewgeny7
09.10.2010, 14:42
Рекомендую к прочтению пост (http://www.zx.pk.ru/showpost.php?p=321898&postcount=113), если вы используете модули Т80 из готовых проектов.
Это не мною придумано, но я также это широко использую в своих проектах. Будьте внимательны, если ваш проект начнет работать криво - проверьте на всякий случай модуль Т80.VHD

Totem
11.10.2010, 17:19
Что предпочтительней ? EP1C12Q240C8 или EP2C8Q208C8N если количество ног 208 устраивает.
у второго меньше макроеечеек а разница в цене 100р.

IanPo
11.10.2010, 18:33
Что предпочтительней ? EP1C12Q240C8 или EP2C8Q208C8N если количество ног 208 устраивает.
у второго меньше макроеечеек а разница в цене 100р.
Зависит от уверенности, что < 8 т. ячеек хватит и собираешься ли делать серийно(переплата может сыграть роль; чип чуть сложнее паять и т.п.).

axel_sunrise
13.10.2010, 06:52
кто-нибудь собирал Байт Бластер MV без микросхемы 74нст ? Как успехи?

13joe
13.10.2010, 08:04
Я собирал. Используется микросхема 555АП5. Полет отличный. Прошил им ПЛИСы своего Pentagon 1024 sl 2.2. Только поножовщина у 555АП5 другая и это нужно учитывать.

Totem
13.10.2010, 10:34
IanPo, не думаю, что будет какая то серия большая максимум 2-3 экземпляра.Прожект на еZ80.Циклон 1, как я понял снят с производства.Если кому то интересно выложу концепт в ближайшее время-карманный комп с док станцией.

IanPo
13.10.2010, 11:16
Totem, я бы выбрал второй циклон, на нем проекты уже были, у Romanichа, например. Есть что позаимствовать.

ZEK
13.10.2010, 11:19
Циклон 1, как я понял снят с производства.
Как понял? Вроде тут (http://www.altera.com/products/devices/mature/mat-index.html) его нет

Totem
13.10.2010, 11:26
IanPo, Что бы. что позаимствовать у Romanichа надо, что то для его железяк сделать:) тогда поделится.

IanPo
13.10.2010, 11:49
Что бы. что позаимствовать у Romanichа надо, что то для его железяк сделать
Есть схема Tresher Forever, есть фоты платы - вот уже готовые решения по схеме и разводке.

Totem
13.10.2010, 12:12
IanPo, поехали во флейм дабы не сорить создам тему Zetnix.

aniSKY
14.10.2010, 00:11
Может есть у кого рабочая схема решения по заливке конфигурации по средствам АВР+ЕПРОМ в ФПГА (в моем случае Цыклон 1)? связь АВР с компом хотя бы по COM, а по USB было бы просто за счастье (USB Blaster с eBay притянуть очень хлопотно, страна такая, а официальный Альтеровский или аналоги никто не продает).
Ну просто задолбался через ББластер это делать: работаю на ноутбуке (новый и недорогой, из IO толко 3xUSB, картридер и EXPRESCARD). Прошивать приходиться через десктоп (ЛПТ еще присутствует), на обоих стоит W7x64 (установка ХР не решение, старовата под мои железки). Приходиться запускать виртуальную машину с ХР, на которой установлен КВАРТУС-программер - ну просто жутко не удобно:v2_dizzy_wall:. Для однократной прошивки подошло бы, но вот для отладки своих поделок метаться между двумя компами напрягает:(

axel_sunrise
14.10.2010, 02:31
Я собирал. Используется микросхема 555АП5. Полет отличный. Прошил им ПЛИСы своего Pentagon 1024 sl 2.2. Только поножовщина у 555АП5 другая и это нужно учитывать.

А вообще без микросхемы,напрямую через резюки?

и второе - через СОМ порт можно прошивать Альтеру?

fifan
14.10.2010, 06:30
А вообще без микросхемы,напрямую через резюки?
"не через резюки", а через АП5 - ByteBlaster.

и второе - через СОМ порт можно прошивать Альтеру?BitBlaster, но схему я так и не нашёл.

skyther
14.10.2010, 08:05
BitBlaster
хомячки рекомендуют какой-то мифический проект на пик16...

можно jamplayer попробовать, только переделать под свое железо, ту же ft2232 например...

13joe
14.10.2010, 08:24
axel_sunrise !

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

Дмитрий
14.10.2010, 08:56
Может есть у кого рабочая схема решения по заливке конфигурации по средствам АВР+ЕПРОМ в ФПГА
Есть, ZX Evo называется.

Ewgeny7
14.10.2010, 10:20
Прошивать ПЛИС вообще без микросхемы напрямую проводками вроде бы называется ByteBlaster II,
ByteBlasterII делается также на "ключах", как и MV.
Просто "проволочного" бластера нет. Вероятно, прямое подключение всё же прокатит, просто страшновато рисковать альтеркой.


программатор ByteBlaster II программой не обнаруживался, хотя проводки были не длиннее 15 сантиметров.
"Обнаруживается" не сам бластер, а перемычка между контактами LPT-порта. Для MV это ноги 7 и 10, для ВВII - другие.
Схему ВВII я вроде выкладывал в этой теме.

---------- Post added at 10:20 ---------- Previous post was at 10:19 ----------


и второе - через СОМ порт можно прошивать Альтеру?
Через USB можно. Самодельный USBblaster уже лежит в интернетах.

aniSKY
14.10.2010, 10:55
да, была мысля использовать готовое с других машин, но данная очень уж жирно будет для моей платы. там есть все - клава, мышь, ком-порт, СД-карта, часики. Мне на данном этапе нужно пока всего лишь только КОМ-порт(для РС) и программа которая прошьет ПЛИСину, АВРка меньше понадобится :)
как вариант подошла бы АВРка Мега88 из AEON'a, но там используется Ксилиникс, явно мой циклон она не прошьет.

aniSKY
14.10.2010, 11:13
Через USB можно. Самодельный USBblaster уже лежит в интернетах.
может кто повторял данный проект? http://www.speccyland.net/index.php?option=com_agora&task=topic&id=59&p=1&Itemid=3#p62
на какой PIC можно заменить? подойдет ли PIC18F25J10-I/SO вместо PIC18F25J10-X/SO?
Но есть еще вариант, более компактный, тоже на пик (PIC18F45J10-I/PT), все что у нас нашел так тока PIC18F452-I/PT, PIC18F4520-I/PT, PIC18F4525-I/PT, PIC18F4550-I/PT, PIC18F458-I/PT - чем можно заменить PIC18F45J10-I/PT ?.

Дмитрий
14.10.2010, 11:16
Мне на данном этапе нужно пока всего лишь только КОМ-порт(для РС) и программа которая прошьет ПЛИСину, АВРка меньше понадобится
как вариант подошла бы АВРка Мега88
Так в чем проблема-то? сырки есть на пентэво, из схемы и даташита на фпга можно понять как подключить МК к фпга для конфигурации... не обязательно подключать именно атмега128, можно хоть тиньку2313+cпи-флеш - принцип один и тот же. А именно такой проект, который бы на 100% тебя удовлетворял по требованиям, не думаю что ты найдешь...

aniSKY
14.10.2010, 11:22
к сожалению я не программист :), в сырках буду полгода разбираться, и не факт что разберусь...

Ewgeny7
14.10.2010, 12:51
Самодельный USBblaster уже лежит в интернетах.
http://njnmnp.narod.ru/usbblaster/usbblaster.html
Варианты с АТМега8 или мелкой ПЛИС. Курите на здоровье :)

vlad
14.10.2010, 14:25
Вот еще вариант: http://www.microchip.su/showpost.php?p=79722&postcount=9

Дмитрий
14.10.2010, 15:06
vlad, там региться надо, если есть возможность - файлики запостите тут, плиз.

aniSKY
14.10.2010, 15:15
Вот еще вариант: http://www.microchip.su/showpost.php?p=79722&postcount=9
я про него выше спрашивал.:rolleyes:
PIC18F45J10-I/PT на что можно заменить из выше написанных ?:confused:

---------- Post added at 14:15 ---------- Previous post was at 14:13 ----------


vlad, там региться надо, если есть возможность - файлики запостите тут, плиз.
USB Blaster(PIC).rar (http://zx.pk.ru/attachment.php?attachmentid=21357&d=1287040362) в #643 посте

axel_sunrise
17.10.2010, 10:47
допускается ли применение всяких PCI - LPT адаптеров вместо родного встроенного в материнку?

---------- Post added at 17:47 ---------- Previous post was at 17:41 ----------

[QUOTE=aniSKY;322885]
PIC18F45J10-I/PT

Бл...Дорогой как самолёт :sleep:

aniSKY
18.10.2010, 15:00
:confused: помогите разобраться что не так.
пытаюсь написать на ВХДЛ ту часть, которая выводит графику на экран - что то ну ни как не поддается, в схемном вводе все нормально было, показывало как надо, а вот на ВХДЛе все ни как не получается:v2_conf2:
вот кусок проекта:

process(CLK25,TI,vcnt,hcnt)
begin
PIXa<="0"&"000"&vcnt(8 downto 7)&vcnt(3 downto 1)&vcnt(6 downto 4)&hcnt(7 downto 3);
ATRa<="0"&"000"&"110"&vcnt(8 downto 4)&hcnt(7 downto 3);
if (CLK25'event and CLK25='1') then
if TI='0' then --CLK25/2
if hcnt(2 downto 0)=0 then
VA<=PIXa;
PIXd<=VD;
end if;
if hcnt(2 downto 0)=3 then
VA<=ATRa;
ATRd<=VD;
end if;
else
VA<=(others=>'Z');
if (hscr and vscr)='1' then
PIXd(7 downto 1)<=PIXd(6 downto 0);
PIXd(0)<='0';
if PIXd(7)='0' then
B<=ATRd(0);
R<=ATRd(1);
G<=ATRd(2);
Y<=ATRd(6);
else
B<=ATRd(3);
R<=ATRd(4);
G<=ATRd(5);
Y<=ATRd(6);
end if;
else
if (hvoe or vvoe)='1'then
R<='0';
G<='0';
B<='0';
Y<='0';
else
R<='1';
G<='0';
B<='1';
Y<='0';
end if;
end if;
end if;
end if;
end process;
что не так? на экране цветной бред напоминающий нужную картинку(pic01.jpg).
если убрать загрузку атрибутов и выводить только пикселы - все четко, чб картинка отличная (pic02.jpg). а стоит только вернуть загрузку атрибутов обратно и выводить только пикселы - получается что выводятся атрибуты вместо пикселов, хотя данные загружаю в разные регистры(pic03.jpg).:v2_conf2:

b2m
18.10.2010, 15:33
Адрес нужно как минимум на один клок раньше задавать. А так у тебя адреса атрибутов и пикселей получаются перепутаны. Для наглядности, поменяй местами строчки:
PIXd<=VD;
VA<=PIXa;
Ничего не изменится.

aniSKY
18.10.2010, 16:12
поменял-все по прежнему.
вроде они должны выполнять параллельно?
а может у кого есть примеры других разработок спека на ВХДЛе? пытался подсмотреть в исходниках SPECCY2007 - сложно разобраться для новичка, много сигналов и регистров без коментов что за они.

Ewgeny7
18.10.2010, 16:23
вроде они должны выполнять параллельно?
Для самого ОЗУ сигналы не должны быть "параллельно".
Сначала ставится адрес на шину, спустя клок/полклока считываются данные. У тебя же это не сделано. И в результате в "цветной регистр" считываются данные пикселей, а не аттрибутов.

---------- Post added at 16:23 ---------- Previous post was at 16:21 ----------

посмотри реализацию в u10_speccy, к примеру.

Sandro
18.10.2010, 17:26
:confused: помогите разобраться что не так.

Попробуем :) Во-первых, начнём со стиля написания кода.
1) Зачем в процессе смешаны асинхронные присвоения в PIXa и ATRa с синхронными присвоениями по CLK25? Если хотелось их тоже обрабатывать синхронно, то надо было их засунуть под if (CLK25'event ..., ну а если они действительно асинхронные, то лучше их убрать из-под процесса.
Понятность кода увеличится, кроме того уменьшится вероятность случайно сделать latch во время правок кода. Ну и наконец некоторые синтезаторы потупее такой код не переваривают.
2) Я надеюсь, VA -- это вывод FPGA, а не какой-то её провод? Внутри FPGA проводов с Z-состоянием нету. И если это вывод, то лучше вынести Z-присвоение на верхний уровень проекта. Облегчает дальнейшую правку кода.
Плюс Квартус не всегда распознаёт "похороненные" Z-присвоения, я на эти грабли уже натыкался.

Теперь по функционированию:

1) b2m совершенно правильно сказал про работу с памятью. В этом коде ставится адрес и сразу читаются данные, так нельзя. Надо хотя бы один такт подождать, пока память не отработает.
2) В этом коде пиксель читается сразу же, а атрибут -- в середине знакоместа. То есть атрибуты будут показываться на 4 пикселя правее, чем надо. Так и задумано? ;)

b2m
18.10.2010, 17:49
поменял - все по прежнему.
вроде они должны выполнять параллельно?
Я тебе про это и написал. Глядя на твой код, можно догадаться про ход твоих мыслей. Так вот, поменяв местами строчки, представь, как оно бы работало, согласно ходу твоих мыслей.


атрибуты будут показываться на 4 пикселя правее, чем надо. Так и задумано? ;)
:v2_lol:

Ewgeny7
18.10.2010, 17:53
То есть атрибуты будут показываться на 4 пикселя правее, чем надо. Так и задумано?
Так и делается. Содержимое регистров цвета и "яркости" выводится с запаздыванием на одно знакоместо.

b2m
18.10.2010, 18:13
Так и делается. Содержимое регистров цвета и "яркости" выводится с запаздыванием на одно знакоместо.
Но не в вышеприведённом коде. Данные, считанные посреди знакоместа, надо бы где-то буферизировать, и уже потом копировать в выходные регистры, одновременно с данными, считанными на границе знакомест.

aniSKY
18.10.2010, 19:37
спасибо всем за коменты и замечания, приму к сведению, теперь данную часть буду переписывать заново, а то исправлять все придется :)

aniSKY
21.10.2010, 02:51
Правильно ли я все понял: https://docs.google.com/fileview?id=0B4XPaFHPyj1AMWQwZGE1OGQtOWFjOC00MDM0L TliZWEtY2Y1MTZjMzkwN2Rh&hl=ru&authkey=CPq3w6sK

b2m
21.10.2010, 10:57
Я бы объеденил пункты 5 и 6 в один процесс. Потому что и сдвиг, и запись в выходные регистры нужно делать либо по фронту, либо по спаду. Иначе будет нестыковка на полпикселя.

aniSKY
21.10.2010, 13:20
тогда получиться, что на 8-ом такте будет происходить одновременно сдвиг и загрузка данных в регистре, на что квартус жалуется сильно. да и последний пиксель будет всегда из следующего знакоместа вроде.

b2m
21.10.2010, 13:49
Я думал, сам догадаешься :)
Самый первый пиксел образуется не после сдвига, а после записи в выходной регистр (крайний пискел которого ты используешь как видео-выход), о остальные 7 - в результате сдвига.

aniSKY
21.10.2010, 17:25
ок, попробуемс :) (наверно прийдется сдвигающий регистр организовать по иному, через "CASE IS ..." привязанным к томуже клоку, что и загрузка во вторые регистры)

Ewgeny7
21.10.2010, 17:46
прийдется сдвигающий регистр организовать по иному, через "CASE IS ..."
В моих проектах сделано так:


process(hcnt,vidb) --Video data shift registers--
begin
case hcnt(2 downto 0) is
when "000"=>vid<=vidb(7);
when "001"=>vid<=vidb(6);
when "010"=>vid<=vidb(5);
when "011"=>vid<=vidb(4);
when "100"=>vid<=vidb(3);
when "101"=>vid<=vidb(2);
when "110"=>vid<=vidb(1);
when "111"=>vid<=vidb(0);
end case;
end process;


---------- Post added at 17:46 ---------- Previous post was at 17:44 ----------

На самом деле это не шифт-регистр, а самый обычный мультиплексор на 8 входов-1выход.

b2m
21.10.2010, 17:57
В моих проектах сделано так:
Неплохо. Наверное, самое оптимальное решение.

Хотя, неизвестно, что лучше: семь мультиплексоров 2-в-1 (в случае со сдвиговым регистром) или один 8-в-1 (как у тебя). Мультиплексор 2-в-1 будет в той же LE, что и бит регистра, а вот 8-в-1 после регистра - это дополнительные LE.

Ewgeny7
21.10.2010, 18:05
Хотя, неизвестно, что лучше:
Лучше то, что работает. И самому автору понятно от и до. :v2_dizzy_write:

aniSKY
21.10.2010, 18:49
В моих проектах сделано так:


---------- Post added at 17:46 ---------- Previous post was at 17:44 ----------

На самом деле это не шифт-регистр, а самый обычный мультиплексор на 8 входов-1выход.
да да, я это и имел ввиду (увидел в прошивке u10-speccy когда изучал что куды).
в данном случае привязка к клоку необязятельна, или лучше привязать?

Ewgeny7
21.10.2010, 18:51
в данном случае привязка к клоку необязятельна, или лучше привязать?
Ну... необязательна. Клок лучше применить когда будешь окончательные сигналы на монитор выводить.

aniSKY
21.10.2010, 23:27
ну наконец то добился толку от своего нагромождения кода :D
что имею: четкий спековский экран, все точки и атрибуты там где им и положено; бордер пока выставляю в ручную.
:mad: больше времени прострадал из-за собственной криворукости
PIXa<="0"&"000"&vcnt(8 downto 7)&vcnt(3 downto 1)&vcnt(6 downto 4)&hcnt(7 downto 3);
ATRa<="0"&"000"&"110"&vcnt(8 downto 4)&hcnt(7 downto 3);
привязял к клоку - от этого и шел косяк, стоило убрать привязку - ка все бульк и в порядке :eek:
то что получилось в прицепе (мот кто глянет если не лень будет, подскажет что где подправить чтоб правильно и грамотно было :v2_blush:)
ЗЫ: может у кого есть картинка тестового экрана (:v2_dizzy_photo: (http://zx.pk.ru/attachment.php?attachmentid=14121&d=1257543079) или :v2_dizzy_photo: (http://zx.pk.ru/attachment.php?attachmentid=14120&d=1257543064)) для спека (или вся прошика этого теста) на которой изображены круги полоски градации? помню пролетала прошивка данного теста на форуме, да вот теперь все никак найти ее не могу.

IanPo
22.10.2010, 10:10
помню пролетала прошивка данного теста на форуме, да вот теперь все никак найти ее не могу.
Помнится, какую-то тестовую прошивку zst выкладывал: http://zx.pk.ru/showthread.php?t=10548
http://zx.pk.ru/showthread.php?t=10548&page=77

zx-kit
22.10.2010, 11:26
ЗЫ: может у кого есть картинка тестового экрана (:v2_dizzy_photo: (http://zx.pk.ru/attachment.php?attachmentid=14121&d=1257543079) или :v2_dizzy_photo: (http://zx.pk.ru/attachment.php?attachmentid=14120&d=1257543064)) для спека (или вся прошика этого теста) на которой изображены круги полоски градации? помню пролетала прошивка данного теста на форуме, да вот теперь все никак найти ее не могу.

Программа для тестирования мониторов: http://zx.pk.ru/showthread.php?t=11194
Прошивка для ПЛИС с градациями яркости: http://zx.pk.ru/showpost.php?p=212360&postcount=113

mbojenov
23.10.2010, 00:22
товарищи и господа! а есть ли информация по РТ1/РТ2 ?

имеется в виду способ программирования, а не справочные данные на микросхемы из пыльных сборников про ПЗУ.

Mick
23.10.2010, 09:13
товарищи и господа! а есть ли информация по РТ1/РТ2 ?

имеется в виду способ программирования, а не справочные данные на микросхемы из пыльных сборников про ПЗУ.

Была книга вроде про отечественные ПЛМ. Там вроде и описывался принцип программирования этих микрух. Лично я такую книгу не видел, кроме картинки обложки в инете. Еще вроде как программатор от ATM позволял их шить, но это надо проверять.

mbojenov
23.10.2010, 10:57
Mick, у меня имеется "Стерх", который их шьет. Проблема в том, что не знаю на каком языке писать прошивки, как и в каком софте. Может быть вспомните название книжицы?

Sandro
24.10.2010, 21:55
ну наконец то добился толку от своего нагромождения кода :D


"Нагромождение" -- это очень удачное слово. Честно говорю, эта задача решается проще ;)
Просто, как я понимаю, ты раньше работал исключительно со схемным вводом, а VHDL только начал учить? Код уж больно характерно выглядит.



привязял к клоку - от этого и шел косяк, стоило убрать привязку - ка все бульк и в порядке :eek:


Хм. Вообще говоря, если ты что-то исправил, и оно почему-то заработало, это не значит, что ты исправил ошибку. С вероятностью не менее 50% ты просто её замаскировал, и она вылезет когда-нибудь потом. Симуляцией пользуешься хоть?


то что получилось в прицепе (мот кто глянет если не лень будет, подскажет что где подправить чтоб правильно и грамотно было :v2_blush:)


Приступим. Для начала, тебе следовало бы посмотреть в отчёт квартуса. Он там синим по белому пишет вот такое:



Warning: Can't achieve minimum setup and hold requirement CLK25 along 32 path(s). See Report window for details.


То есть, попадание в желаемые времянки квартусу не удалось (а если не задавать максимальную тактовую частоту, то квартус выдаёт красным предупреждение про clock/data skew, что более правильно, как мы увидим позже; почему он его не выдаёт при заданной частоте -- хз, это косяк).

На такое сообщение надо реагировать, как бык на красную тряпку: работоспособность схемы не гарантируется !!! То есть надо бросать все, и разбираться, почему.
Разбираемся: лезем в Report Window и открываем в нём вкладку Timing Analyzer. Сразу видим, что там выделены красным строки Summary и Clock Hold:' CLK25'. Ну, общая сводка на то и общая, что в ней деталей нету, поэтому открываем вторую, про CLK25. Видим список цепей, красным выделены те, по которым есть нарушение времянок. У меня они начинаются с hcnt[2]->PIXd0[1], что уже само по себе подозрительно (ладно, когда сигналы данных попадают в нарушения по Clock Setup, это просто схема тормозная получилась, но Clock Hold? :v2_dizzy_fear: Это явный признак гонки сигналов :v2_scare:).

Что же, тыкаем правой кнопкой мыши в первую строку, и выбираем Locate->Locate in RTL viewer. Видим то, что в аттаче, и ужасаемся.
Со счётчика hcnt сигналы идут одновременно на тактовый вход триггеров PIXd0, и на вход разрешения записи, через логику! При этом получается, что прибывают они в недопустимом порядке, сначала клок напрямую, а потом сигнал разрешения записи через логику. Таким образом, разрешение записи прибывает на один период hclk[0] позже, чем подразумевалось в VHDL коде, и схема работает только потому, что там есть очень большой запас по времени защёлкивания VD в PIXd0, да и само разрешение записи висит целый период hclk[0]. Стоит уплотнить временную диаграмму доступа в память, и полезут ошибки, странные и непонятные.

О лечении. На самом деле, проще и лучше всего отказаться от использования множественных клоков. FPGA и их компиляторы разработаны для того, чтобы запихивать в них преимущественно синхронную логику. Если планируется делать логику асинхронную (а наличие более одного клока -- это уже асинхронная логика), то с гонками и метастабильностью придётся бороться вручную. Тебе это надо?
Кроме того, в твоей FPGA всего 8 линий для тактовых сигналов, из которых твой код уже использует 5. Как только при расширении проекта потребуется девятый клок, то он пойдёт не по специальной выделенной цепи с выровненным временем доставки, а по обычным проводам (точнее, по ним пойдёт клок с наименьшим количеством триггеров). Что опять же приведёт к гонкам сигналов и глюкам.

Не, в такой простой схеме лучше сделать один клок.

PS: Если ты действительно переходишь со схематика, то Tools->Netlist Viewers->RTL Viewer тебе очень поможет. Сразу видно, какую схему квартус соорудил из твоего кода.
PPS: Прошу не обижаться на тон ;) Просто это действительно базовые вещи при работе с полностью синхронными схемами. А FPGA -- именно такие.

aniSKY
26.10.2010, 02:14
PS: Если ты действительно переходишь со схематика, то Tools->Netlist Viewers->RTL Viewer тебе очень поможет. Сразу видно, какую схему квартус соорудил из твоего кода.
PPS: Прошу не обижаться на тон ;) Просто это действительно базовые вещи при работе с полностью синхронными схемами. А FPGA -- именно такие.
:v2_thumb: такая критика только на пользу идет, все четко описано (ляпы начинающего VHDL-кодера), побольше таких людей на форумах, которые не отказываются в помощи начинающим - смотришь и умельцев больше будет:v2_cool:. В книгах конечно все описано, но все не охватишь сразу, возникают попутные вопросы, которые у книги не спросишь, а тут все четко и на конкретный вопрос с конкретным примером. огромное спасибо тебе за это, теперь обязательно буду на это обращать внимание!!!!:)
P.S. исправил, как описано выше - коварный "Warning" больше не светится.:smile: ...... рученки уже зачесались писать дальше:v2_dizzy_write:!

axel_sunrise
28.10.2010, 12:18
Нашёл простую схему программатора USB ALTERA

Ewgeny7
28.10.2010, 12:37
Спасибо. Я ее видел, НО ТАМ ПИК!!! Ужос. Было бы АВР...

ZEK
28.10.2010, 13:42
Нашёл простую схему программатора USB ALTERA
Прикольно, можно попробовать засунуть в PicKit

axel_sunrise
28.10.2010, 14:07
Спасибо. Я ее видел, НО ТАМ ПИК!!! Ужос. Было бы АВР...

А мне пик больше нравится)))придётся заказывать микросхему (стоит 300-350руб),хочу опробовать схемку :)

psb
28.10.2010, 14:13
надо распотрошить прошивку! и сделать как надо:)

ZEK
28.10.2010, 14:18
надо распотрошить прошивку! и сделать как надо
походу написано по мотивам http://ixo-jtag.sourceforge.net/ того варианта что для чипа FX2

mbojenov
28.10.2010, 18:05
господа, посмотрите, может у кого нибудь есть информация по программированию (не прошиванию, программатор есть) 556РТ1 или 2

psb
28.10.2010, 19:14
походу написано по мотивам
ну вот как руки дойдут..... блин, дойдут ли только...

MV1971
28.10.2010, 20:17
господа, посмотрите, может у кого нибудь есть информация по программированию (не прошиванию, программатор есть) 556РТ1 или 2

Как я понял нужна инфа о том, как подготавливать прошивку ?
А какой программатор ? Редактор есть в программе для него ?
Вот описание редактора одного из программаторов. В принципе все основные моменты есть.

Редактор ПЛМ предназначен для подготовки данных для микросхем ПЛМ. Буфер этого редактора отображается на экране после выбора микросхемы ПЛМ.
Буфер редактора ПЛМ представляет из себя ОЗУ, в которое можно считать информацию (с микросхемы ПЛМ или из текстового файла специального формата) или ввести ее вручную. Информация, содержащаяся в буфере ПЛМ, отображается на экране в виде стандартной таблицы истинности ПЛМ. Эта таблица содержит 3 области для отображения разных слоев логических функций: слоя И, слоя ИЛИ и слоя НЕ.
На микросхеме ПЛМ типа К556РТ1 или К556РТ2 (выходы с открытым коллектором или с тремя состояниями соответственно) можно реализовать до 8 логических функций F0...F7 от 16 входных переменных A0...A15. Каждая из функций F0...F7 представляет собой дизъюнкцию (прямую или инверсную) нескольких конъюнкций входных переменных. Слой И микросхемы содержит 48 конъюнкторов, каждый из которых имеет по 32 входа (по 2 входа для каждой входной переменной: прямой вход и инверсный вход). На каждом входе имеется плавкая перемычка, которую можно прожечь при программировании микросхемы. Слой ИЛИ содержит 8 дизъюнкторов, каждый из которых имеет 48 входов, соединенных с выходами конъюнкторов. На каждом входе также имеется плавкая перемычка. Слой НЕ содержит 8 двухвходовых элементов "Исключающее ИЛИ". Один из входов подключен к выходу дизъюнктора, а второй заземлен (через перемычку). Каждый из этих элементов может быть либо инвертором (если перемычку на его входе прожечь) или повторителем (если перемычка целая).
Левая часть таблицы отражает состояние перемычек слоя И микросхемы ПЛМ. Каждый из 48 конъюнкторов представлен в таблице одной строкой. Состояние каждой пары перемычек отображается одним символом:
"-" - обе перемычки целые
"x" - обе перемычки прожжены
"H" - целая только перемычка прямого входа
"L" - целая только перемычка инверсного входа
Если у какого-либо конъюнктора не прожжена хотя бы одна пара перемычек (символ "-" в таблице), то на выходе этого конъюнктора всегда будет 0, т.е. этот конъюнктор не будет влиять ни на одну из выходных логических функций. Если у конъюнктора прожжены обе перемычки для какой-либо входной переменной (символ "x" в таблице), то эта переменная не будет влиять на выходное значение этого конъюнктора, т.е. не будет входить в его логическую функцию. Если прожжена только одна перемычка из пары, то соответствующая входная переменная будет входить в логическую функцию этого конъюнктора в прямом или инверсном виде (соответственно символ "H" или "L" в таблице).
Правая часть таблицы отражает состояние перемычек слоя ИЛИ микросхемы ПЛМ. Каждый из 8 дизъюнкторов представлен в таблице одним столбцом из 48 символов. Состояние каждой перемычки отображается одним символом:
"A" - перемычка целая
"-" - перемычка прожжена
Наличие какой-либо перемычки у дизъюнктора означает, что к этому входу подключен соответствующий конъюнктор, т.е. логическая функция этого конъюнктора входит в состав выходной логической функции. Любой из 48 конъюнкторов может быть подключен не к одному, а к нескольким дизъюнкторам (при этом соответствующие выходные функции будут содержать одинаковые конъюнкции).
Слой НЕ микросхемы представлен одной строкой символов в правой половине верхней части таблицы. Состояние каждой перемычки отображается одним символом:
"L" - перемычка целая
"H" - перемычка прожжена (при этом соответствующая
выходная функция инвертируется)
При выборе микросхемы К556РТ1/2 (командой из меню ) на экране появляется таблица, отображающая исходное состояние буфера редактора ПЛМ, соответствующее "чистой" микросхеме, у которой все перемычки целые.
Чтение информации в буфер редактора ПЛМ и запись из этого буфера в файл осуществляется так же, как и для микросхем ПЗУ: чтение в буфер редактора ПЛМ из микросхемы - командой меню , чтение из файла и запись в файл - командами и меню .

mbojenov
28.10.2010, 20:42
программатор стерх, в его программе есть редактор ПЛМ

MV1971
28.10.2010, 20:47
программатор стерх, в его программе есть редактор ПЛМ

Да, у меня тоже есть ST-700.

ZEK
29.10.2010, 09:24
Нашёл простую схему программатора USB ALTERA
Собрал, прошил. Определился нормально в винде, квартус тож увидел, сегодня вечером найду в загашниках cpld попробую прошить.
Сырки правильно сделаны, можно в комплекте с USB bootloader заюзать и обновлять прошивку без программатора.

Keeper
29.10.2010, 11:54
Собрал, прошил. Определился нормально в винде, квартус тож увидел, сегодня вечером найду в загашниках cpld попробую прошить.

ДежаВю :) Сегодня ночью допаял USBBlaster на EPM3064, прошил, квактус определяет, cpldшка тоже определяется, правда прошивать я еще ничего не пробовал :) И я собрал используя отладочный модуль UM245R на FT245R...

axel_sunrise
30.10.2010, 06:25
Собрал, прошил. Определился нормально в винде, квартус тож увидел, сегодня вечером найду в загашниках cpld попробую прошить.
Сырки правильно сделаны, можно в комплекте с USB bootloader заюзать и обновлять прошивку без программатора.


C Max Plus 2 проверяли прогер?

ZEK
31.10.2010, 01:15
C Max Plus 2 проверяли прогер?
Макс плюс помоему вообще не умеет usb blaster

fifan
31.10.2010, 07:04
Макс плюс помоему вообще не умеет usb blaster
Да не умеет, качай программатор от Квартуса (http://www.spetsialist-mx.ru/for_out/91sp2_quartus_programmer.exe) (130 МБайт).

ZEK
31.10.2010, 09:42
Если надо шить только 1-2 циклоны, всякие старые флексы/ацексы и CPLD
то с головой хватит программатора от Квартуса 4.2, весом в 37Мб
фтп://фтп.альтера.ком/outgoing/release/quartusii_42_programmer.exe

vlad0336
31.10.2010, 13:18
ZEK, был четкий вопрос: работает ли бластер?
Ответ насколько я понял ОТРИЦАТЕЛЬНЫЙ - т.е. нет.
А я так надеялься - хотел собрать

ZEK
31.10.2010, 13:32
Ответ насколько я понял ОТРИЦАТЕЛЬНЫЙ - т.е. нет.
В Quartus работает, в MAX PLUS не работает.

vlad0336
31.10.2010, 15:05
В Quartus работает, в MAX PLUS не работает.
Я так понял в Quartus ОПРЕДЕЛЯЕТСЯ.
А удалось прошить хоть какую либо ПЛИС?
И какие точно прошил?

axel_sunrise
31.10.2010, 17:17
Да не умеет, качай программатор от Квартуса (http://www.spetsialist-mx.ru/for_out/91sp2_quartus_programmer.exe) (130 МБайт).

спасибо,квартус у меня есть,придётся на него переходить

---------- Post added at 00:17 ---------- Previous post was at 00:16 ----------


Я так понял в Quartus ОПРЕДЕЛЯЕТСЯ.
А удалось прошить хоть какую либо ПЛИС?
И какие точно прошил?


мне тоже интересно!А удалось прошить хоть какую либо ПЛИС?


Если он работает,то думаю можно заказать ZST плату,если он согласится...а также можно и ту плату с ft245 на борту

ZEK
31.10.2010, 17:40
И какие точно прошил?
EPM3064

vlad0336
03.11.2010, 20:09
Немного изменил схему.
Тепер смогу программировать ПЛИС с напряжением питания от 1,65 до 5 вольт.

lintech
03.11.2010, 20:22
Немного изменил схему.
Тепер смогу программировать ПЛИС с напряжением питания от 1,65 до 5 вольт.

Схема засекречена или поделитесь ?

vlad0336
03.11.2010, 20:39
Поделюсь после проверки(а то вдруг она только EPM3064 программирует)

ZEK
03.11.2010, 21:19
Схема засекречена или поделитесь ?
ставишь пару SN74LVC2T45, внутренний порт питаешь от 5в, внешний от разъема jtag

lintech
04.11.2010, 01:48
ставишь пару SN74LVC2T45, внутренний порт питаешь от 5в, внешний от разъема jtag

Спасибо за подсказку :v2_cheer:

Я так понимаю что если ставить этот преобразователь уровней,
то резисторы на ногах пика не нужны ?

Alex_NEMO
10.11.2010, 10:25
Нашёл простую схему программатора USB ALTERA

axel_sunrise, спасибо за ссылу!

Спасибо. Я ее видел, НО ТАМ ПИК!!! Ужос. Было бы АВР...
Женя, а что ужастного то? Купил PIC18F2550, прошил ХЕКсом и в путь! Главная "фишка" в том, что PIC18F2550 имеет нормальную "набортную" поддержку USB, в отличие от "софтверных поделок" на той же Меге8. Проггер на ней постоянно "отваливается". Надо попробовать собрать, благо, PIC18F2550 в ДИПе имеется одна!

lintech
10.11.2010, 10:44
Самая большая проблема с этим PIC18F2550, так это найти где его купить,
особенно в дип корпусе.
В Харькове нашёл только в соике и то только под заказ :(

Ewgeny7
10.11.2010, 10:45
Женя, а что ужастного то? Купил PIC18F2550, прошил ХЕКсом и в путь!
Хе... А чем я должен прошить этот ПИК? ПИКкитом? Для его изготовления нужно также прошивать ПИК внутри него. Чем? И так далее в полной рекурсии...

ZEK
10.11.2010, 11:21
В Харькове нашёл только в соике и то только под заказ
http://kosmodrom.com.ua/product.php?page=0&name=PIC18F2550&okbutton=%CF%EE%E8%F1%EA

я на макетке под soic собирал в том же космодроме их есть, с 95% вероятностью подойдет PIC18F4550 но он должен быть дороже и 40 лапый в дипе

---------- Post added at 10:21 ---------- Previous post was at 10:10 ----------


А чем я должен прошить этот ПИК? ПИКкитом?
Я затертый бутлоадер в PicKit восстанавливал (тобиш прошивал) этим http://home.vrweb.de/~lotharstolz/stolz.de.be/lvpc/index.html

Ewgeny7
10.11.2010, 11:37
восстанавливал (тобиш прошивал) этим
Вот это другое дело :)

Alex_NEMO
10.11.2010, 12:22
To ZEK - Дима, подскажи, чо за перемычка напритив 3 и 4 ног ПИКа?
http://sa89a.net/ele/ub/ub3.jpg

ZEK
10.11.2010, 12:34
To ZEK - Дима, подскажи, чо за перемычка напритив 3 и 4 ног ПИКа?
Хз,схемы этой платы не видел, но учитывая что код в хексе смещен для того что бы дружить с бутлоадером, 90% это перемычка для перевода микроконтроллера в этот режим

Alex_NEMO
10.11.2010, 12:36
Хз,схемы этой платы не видел, но учитывая что код в хексе смещен для того что бы дружить с бутлоадером, 90% это перемычка для перевода микроконтроллера в этот режим
Дык, в том то и проблема, что на схеме она не отражена, а на фотке есть.
Т.е. это режим программирования ПИКа в режиме USB Botloader'а.

ZEK
10.11.2010, 12:40
Т.е. это режим программирования ПИКа в режиме USB Botloader'а.
Ну это мое предположение, как таковому JTAG не нужны никакие перемычки
хотя я себе наделал (питание JTAG устройства от 5в, питание JTAG устройства от 3.3в, от ноги VUSB мелкоконтролера, типа для прошивки 3.3в чипа вне схемы)

PS. По той схеме что нарисована, нельзя использовать бластер для ISP программирования, оно в куче со стандартными подтяжками ISP получается нехорошо (да и номиналы резюков не позволят в чистом виде прошить те же 3064, я для согласования уровней от большой лени прогнал сигналы через DE1, а не стал соображать делитель :) ), правильно делать с преобразователями уровней сигналов.

Alex_NEMO
10.11.2010, 14:02
PS. По той схеме что нарисована, нельзя использовать бластер для ISP программирования, оно в куче со стандартными подтяжками ISP получается нехорошо (да и номиналы резюков не позволят в чистом виде прошить те же 3064, я для согласования уровней от большой лени прогнал сигналы через DE1, а не стал соображать делитель ), правильно делать с преобразователями уровней сигналов.
Смотри, такой вариант согласования пойдет? http://www.amontec.com/amontec_jtagkey_flyer_diagram.pdf

ZEK
10.11.2010, 14:10
Там самое интересное, то что пунктирной линей обведенное, не нарисовано

А так преобразователей уровнем валом, в том числе есть и гальванически развязанные. Можно вообще дубово какую нить 244 воткнуть и поставить резисторов для защиты по току, как сделано в ByteBlaster. Но это только 5 и 3.3в шить можно, в принципе для целей извращения достаточно

Alex_NEMO
10.11.2010, 14:16
А так преобразователей уровнем валом, в том числе есть и гальванически развязанные. Можно вообще дубово какую нить 244 воткнуть и поставить резисторов для защиты по току, как сделано в ByteBlaster
Это понятно. Пулл-апы или пулл-дауны нужно? Со стороны контроллера или со стороны прог. ПЛИСки? Ещё момент - буфер тогда надо питать со стороны прог. ПЛИСки, от питания схемы, где она стоит?

ZEK
10.11.2010, 14:24
улл-апы или пулл-дауны нужно? Со стороны контроллера или со стороны прог. ПЛИСки?
Со стороны pic это в даташиты смотреть надо, сможет ли к примеру HC244 питаемая от 3.3 нормально с пиком общаться который на 5в. С стороны JTAG подтяжка не нужна, она по правилам должна быть в схеме куда подключается программатор.

А можно проверить, если руки вечером дойдут привинчу 244 и посмотрю что из этого выйдет

vlad0336
10.11.2010, 21:00
del

axel_sunrise
11.11.2010, 13:41
axel_sunrise, спасибо за ссылу!

Женя, а что ужастного то? Купил PIC18F2550, прошил ХЕКсом и в путь! Главная "фишка" в том, что PIC18F2550 имеет нормальную "набортную" поддержку USB, в отличие от "софтверных поделок" на той же Меге8. Проггер на ней постоянно "отваливается". Надо попробовать собрать, благо, PIC18F2550 в ДИПе имеется одна!

Пожалуйста :)

А Пик заказывал тут chip-nn.ru - уже едет

---------- Post added at 20:41 ---------- Previous post was at 20:39 ----------


Там самое интересное, то что пунктирной линей обведенное, не нарисовано

А так преобразователей уровнем валом, в том числе есть и гальванически развязанные. Можно вообще дубово какую нить 244 воткнуть и поставить резисторов для защиты по току, как сделано в ByteBlaster. Но это только 5 и 3.3в шить можно, в принципе для целей извращения достаточно


ZEK,если не затруднит вас,нарисуйте схему доработки,для тех,кто в танке :)

axel_sunrise
11.11.2010, 13:50
Хз,схемы этой платы не видел, но учитывая что код в хексе смещен для того что бы дружить с бутлоадером, 90% это перемычка для перевода микроконтроллера в этот режим


Вот оригинальная схема Проггера...Не пойму,какой туда кварц воткнуть,на схеме ещё Осциллятор используется...будет ли с обычным кварцом работать?


с 95% вероятностью подойдет PIC18F4550 но он должен быть дороже и 40 лапый в дипе


Автор тоже говорит,что вроде должен работать с PIC18F4550

ZEK
11.11.2010, 14:11
будет ли с обычным кварцом работать?
Ставишь двулапый кварц и пару конденсаторов по 22pF, от каждого вывода на землю

---------- Post added at 13:11 ---------- Previous post was at 12:59 ----------


ZEK,если не затруднит вас,нарисуйте схему доработки,для тех,кто в танке
Я еще в стадии экспериментов, хочю засунуть в прошивку еще CDC класс для COM порта, и как план максимум еще и AVR910

SegaBoy
16.11.2010, 19:10
Подскажите, можно ли заводить сигналы с выводов Z80 или с системного разъёма Спектрума сразу на Cyclone III? Надо ли их чем подтягивать (реальными резисторами или пул-апами в Квартусе) или нужно использовать какое схемное решения для сопряжения уровней (5v TTL >> 3.3v LVTTL)?

Пытался перечитывать тему несколько раз. Буду рад подсказкам и советам идти в правильное место! = ))

Ewgeny7
16.11.2010, 19:33
Подскажите, можно ли заводить сигналы с выводов Z80 или с системного разъёма Спектрума сразу на Cyclone III?
Если только для себя делаешь, помучить и выкинуть, то можно напрямую. Циклон от пятивольтовых сигналов пока ни один не сдох (у меня).
Если "посерьезнее", то преобразователи уровней рулят, конечно. Напрямую уже нельзя - народ засмеёт :)

SegaBoy
17.11.2010, 13:11
...
Если "посерьезнее", то преобразователи уровней рулят, конечно. Напрямую уже нельзя - народ засмеёт :)
Может тогда направите, где про это можно почитать-посмотреть? Или вдруг есть готовые примеры использования?

Например, если я буду использовать SN74LVC244A,
http://www.gaw.ru/im/publ/converter_levels/ris15.gif
потребуется какой-либо обвес или можно напрямую соединять её ноги с землёй, питанием и выводами Z80 и Альтеры? Из даташита не вынес никакой полезной информации на этот счёт?

fifan
17.11.2010, 18:54
Значит так. Когда используешь сигнал с 5 вольтовой стороны в 3 вольтовую (в одну сторону), то достаточно поставить резистор порядка 300 Ом. В обратном направлении ничего ставить не нужно. В атаче - пример применения ИМС SN74LVC245 в качестве двунаправленного шинного формирователя.

IanPo
17.11.2010, 20:15
SegaBoy, http://zx.pk.ru/showthread.php?p=269933#post269933
2 питания и никаких резисторов.

Sandro
23.11.2010, 02:42
Если только для себя делаешь, помучить и выкинуть, то можно напрямую. Циклон от пятивольтовых сигналов пока ни один не сдох (у меня).


Если верить альтеровской документации, то 5В неограниченно по времени держат только первый и второй циклоны. Третий и далее должны сдохнуть рано или поздно, правда я так и не понял -- когда именно. :confused: Вменяемой методики расчёта времени жизни они не приводят. :(

Хотя, как я понял, это тысячи часов в любом случае. Для наколеночной поделки хватит, если не держать её включенной 24/7.

axel_sunrise
23.11.2010, 18:23
Я затертый бутлоадер в PicKit восстанавливал (тобиш прошивал) этим http://home.vrweb.de/~lotharstolz/stolz.de.be/lvpc/index.html (http://home.vrweb.de/%7Elotharstolz/stolz.de.be/lvpc/index.html)[/QUOTE]


а какой прогой прошивали 18ф2550 по этой ссыле ?

fifan
23.11.2010, 19:19
Вроде простая схема программатора, но я сомневаюсь в её работоспособности. Байтбластер рулит - http://www.spetsialist-mx.ru/schemes/ByteBlaster.png - прошиваю года два, никаких сбоев.

vlad0336
24.11.2010, 00:06
Вот только вопрос:
Где на ноуте взять LPT порт?
Да и на современных материнках тоже?

Ewgeny7
24.11.2010, 07:53
Где на ноуте взять LPT порт?
Да и на современных материнках тоже?
Заменить ноут и материнку на правильные :)

ZEK
24.11.2010, 08:07
а какой прогой прошивали 18ф2550 по этой ссыле ?
шил 18f4550 с помощью IC-Prog

Alex_NEMO
24.11.2010, 09:42
Да и на современных материнках тоже?
Я себе под ближайший апгрейд уже взял такую - GIGABYTE GA-P55-UD3L (http://www.gigabyte.ru/products/mb/specs/ga-p55-ud3l_20.html). Есть и флоппи и ИДЕ и ЛПТ и СОМ! Короче, все, что мне нужно!!! Все кондеры - "твердотельные". В общем, по идее, полный РУЛЕЗ! Осталось жену раскрутить на проц и память DDR-3 под эму "мамку". Мамку брал в своей провинции в пределах 3 500р(~83 euro).

fifan
24.11.2010, 10:48
Вот только вопрос:
Где на ноуте взять LPT порт?
Да и на современных материнках тоже?
Переходить на USBBlaster, что я и собираюсь в ближайшее время сделать.

axel_sunrise
24.11.2010, 14:17
Вот только вопрос:
Где на ноуте взять LPT порт?
Да и на современных материнках тоже?


На той ссыле приведена схема подключения к СОМ порту,тока у меня нифига не получается :|

fifan
24.11.2010, 16:18
На той ссыле приведена схема подключения к СОМ порту,тока у меня нифига не получается :|
Я ж говорил что сомневаюсь на счёт работы схемы. Ищи LPT порт и собирай байтбластер.

backa
24.11.2010, 16:38
да нафига енти ЛПТ порты - уже давно есть по юзби программаторы (на чипе от Кипариса) , если интересно то могу выложить слитую инфу
хотя сам бук себе брал немного старый но у него есть ЛПТ - но он мне для домашнего программатора Uniprog нужен

rnd.gen
24.11.2010, 17:43
Пишу сюда (в теме о дисковой системе никто не отвечает) в надежде привлечь внимание и получить консультацию ввиду своей некомпетентности. Так что сразу примите извинения если немного не в тему.
В общем хочу сделать стандартный контроллер дисковода по схеме 0, но всю логику заменить cpld-шкой. Правильно ли я понимаю что количество входов выходов нужно выбирать столько, сколько задействовано в логике? То есть все сигналы, которые обращаются к логике и выходят из нее нужно заложить в камешек. У меня таких входов выходов получилось примерно 60. В правильном ли направлении я копаю?

Ewgeny7
24.11.2010, 17:59
Правильно ли я понимаю
(Сигналы_между_компом_и_BDI) + (сигналы_между_ВГ93_и_BDI) - (сигналы_между_компом_и_ВГ93) = количество_ног_CPLD :)

---------- Post added at 17:59 ---------- Previous post was at 17:57 ----------

Объем CPLD навскидку - от 64 макроячеек, но вероятно придется использовать EPM7128.

Дмитрий
24.11.2010, 19:20
но вероятно придется использовать EPM7128.
лучше MAXII, они более копытные и дешевле стоят... но правда не любим 5в...

rnd.gen
24.11.2010, 20:40
лучше MAXII, они более копытные и дешевле стоят... но правда не любим 5в...
Для меня важно чтобы у этого чуда хватило ног и памяти для программирования ног, чтобы оно поддерживалось прогой maxplus_baseline 10.0, а еще желательно, чтобы это чудо можно было вставлять в панельку, по крайней мере хотя бы до тех пор пока тестирую, или может есть какие тестовые платки для запайки многоногих жуков?
Любовь к 5 вольт можно думаю привить.:)
Насколько я понял это тот камень о котором Вы говорите:EPM240T100I5N ?

Дмитрий
24.11.2010, 21:15
EPM240T100I5N ?
да, только в конце можно С5, оно дешевле :) :Конечно в панельку ее не сунуть, но на макетку распаять в самый раз :)

fifan
25.11.2010, 16:29
...чтобы у этого чуда хватило ног и памяти для программирования ног, чтобы оно поддерживалось прогой maxplus_baseline 10.0, а еще желательно, чтобы это чудо можно было вставлять в панельку...
Евгений предложил EPM7128SLC84, я поддерживаю. Количество пользовательских пинов - более 60, 5 вольтовая логика.

axel_sunrise
03.01.2011, 15:56
У кого нить есть PCI-LPT адаптер?попробйте подключит байт бластер по этой инструкции,что получиться?

http://eclipsevl.livejournal.com/3850.html#cutid1


http://electronix.ru/forum/lofiversion/index.php/t67947.html

fifan
03.01.2011, 20:51
У кого нить есть PCI-LPT адаптер?попробйте подключит байт бластер по этой инструкции,что получиться?
У меня на материнке нет LPT порта. Пробовал упомянутый адаптер. Ничего не получилось. Порт виден, Квартус отказывается через него видеть Байтбластер. Пробовал две винды: ХР и 7. Но в упомянутой статье я нашёл также описанные автором проблемы при подключении адаптера. Он нашёл как их решить. Я тоже так попробую. Спасибо axel_sunrise за ссылку.

garlands
03.01.2011, 21:06
хех. проблема стара как мир... большинство "xxx-LPT адаптеров" рассчитаны на принтеры, а не на битбанг. хотя на казусе пробегала ссылка на usb-lpt на кипарисе 68013, с которым вроде заработал (битбанговый по своей природе) программатор MSP430 (кажется)...

---------- Post added at 20:06 ---------- Previous post was at 20:02 ----------

а, вот тема на казусе (http://kazus.ru/forums/showthread.php?t=13724). сообщение #1472 (http://kazus.ru/forums/showpost.php?p=278203&postcount=1472) и дальше. товарищ утверждает, что шьется...

axel_sunrise
10.01.2011, 15:24
У меня на материнке нет LPT порта. Пробовал упомянутый адаптер. Ничего не получилось. Порт виден, Квартус отказывается через него видеть Байтбластер. Пробовал две винды: ХР и 7. Но в упомянутой статье я нашёл также описанные автором проблемы при подключении адаптера. Он нашёл как их решить. Я тоже так попробую. Спасибо axel_sunrise за ссылку.


Как успехи?

fifan
10.01.2011, 19:53
Как успехи?
Прекрасно. Всё заработало. Уже сегодня прошил первый раз через PCI-LPT адаптер своим Байтбластером U10 (http://zx.pk.ru/showthread.php?t=8993).

zx-kit
10.01.2011, 21:41
У кого нить есть PCI-LPT адаптер?попробйте подключит байт бластер по этой инструкции,что получиться?

http://eclipsevl.livejournal.com/3850.html#cutid1


http://electronix.ru/forum/lofiversion/index.php/t67947.html

Отлично - проблема с новыми компьютерами без LPT решена!
Добавил эти ссылки в FAQ (http://zx.pk.ru/showpost.php?p=238640&postcount=2)

---------- Post added at 23:41 ---------- Previous post was at 23:33 ----------


Прекрасно. Всё заработало. Уже сегодня прошил первый раз через PCI-LPT адаптер своим Байтбластером U10 (http://zx.pk.ru/showthread.php?t=8993).

Но там много лишнего написано. Нельзя ли написать только то, что надо сделать ?

Sentenced
11.01.2011, 12:40
Итак, из всех перечисленных драйверов интересует нас PCIPPorts.sys, т.к. судя по названию, именно он отвечает за параллельный порт. Проверим его активность:

SERVICE_NAME: pcipports
TYPE : 1 KERNEL_DRIVER
STATE : 4 RUNNING
(STOPPABLE,NOT_PAUSABLE,IGNORES_SHUTDOWN)
WIN32_EXIT_CODE : 0 (0x0)
SERVICE_EXIT_CODE : 0 (0x0)
CHECKPOINT : 0x0
WAIT_HINT : 0x0


Активен, ура :) Вот именно его мы и впишем в "HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\ AlteraByteBlaster" в поле "DependIOnService". Перезагрузка компьютера, и вуаля.