Просмотр полной версии : ПЛИС и всё что с ними связано
Страницы :
1
2
[
3]
4
5
6
7
8
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).
Нужно инстанциировать (объявить) твой собственный PLL компонент типа altpll.
Я в двух местах прописал. Выложу файл вечером.
Назначить пину имя в Pin Assignment (обозвать как i25175?), затем при инстанциировании pll скармливаешь это имя pll в виде параметра .inclk0 (i25175).
Пин уже назначен, далее понял.
Про выход .c0 (clk): в vhd я использую далее сигнал clk?
Про выход .c0 (clk): в vhd я использую далее сигнал clk?
Да.
Но нужно ли прописывать компонент PLL в моем vhd-файле?
Как обычно с подключаемым модулем - component, port map,...
если у меня в vhdl определен пин i25175 in std_logic (CLK4, это вторая PLL на чипе), то как называть входной пин на схеме PLL?
Вероятно, CLK4.
Все заработало. Разобрался: я не заменил в инстанции имена сигналов на свои.
Для 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) и имя пина выхода или внутреннего сигнала. Вышеприведенное верно для случая один вход и один выход, если сигналов больше, то перенастроек больше, принцип тот же.
Выложу для желающих ознакомиться с контроллером клавиатуры от ПЦ применительно к Спектрум-машинам на ПЛИС.
Это "полуфабрикат" (рабочий), куда можно добавлять свои конфиги кнопок.
Как это делается - несложно понять посмотрев готовые примеры.
В архиве два файла - от самой Альтеры (низкоуровневая работа с клавой) и сам модуль 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. Это что - "мертвый" чип или "залоченным" нужен какой-то специфический проггер с ф-цией "разлочки"?
нужен какой-то специфический проггер с ф-цией "разлочки"?
Ага, фирменный. Только навряд ли дело в разлочке, скорее выводы 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, а как тут быть - Х.З.
Кстати, а куда Микка пропал? Случилось что?
Кстати, а куда Микка пропал? Случилось что?
Говорил работы много. Наверное, с женой поцапался :)
ALEXEY.GORDEEV
31.05.2010, 20:22
Кстати, а кто-нибудь работал с FPGA фирмы Actel? Существует ли программатор для них, который можно собрать самому, как байтбластер например? Не могу найти ни одной схемы...
Фиттер мне выдал:
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
Кто знает, что сие означает?
Это верилог?
Похоже, это что-то наподобие "Can't route to i/o pin" - не хватает ресурсов для "проводки" сигнала на пин ввода/вывода.
Это верилог?
Я в VHDL пишу. В Квартусе, Альтера Циклон 2.
Похоже, это что-то наподобие "Can't route to i/o pin" - не хватает ресурсов для "проводки" сигнала на пин ввода/вывода.
Это насколько плохо и что делать?
Может ли это означать, что выводы в разных частях чипа и тупо не хватает соединений? :(
Это насколько плохо и что делать?
Может ли это означать, что выводы в разных частях чипа и тупо не хватает соединений?
Самое лучшее - снять привязку сигналов к пинам (в Pin Assignments) и перекомпилировать, чтобы Кактус сам расчитал удобное для него расположение пинов. Но если плата уже разведена и запаяна, то ой :(
Самое лучшее - снять привязку сигналов к пинам (в Pin Assignments) и перекомпилировать, чтобы Кактус сам расчитал удобное для него расположение пинов.
Спасибо, попробую.
Но если плата уже разведена и запаяна, то ой
Именно так. Хотя, если это Warning, то, может, все не так плохо?
Снятие привязки к пинам не помогло.
Имеется ( VDHL ) следующее объявление:
signal sLogicalWidth : std_logic_vector(10 downto 0) := "00101000000";
Означает ли последнее приравнивание, что в регистре после загрузки конфы будет указанное значение?
Квартус при компиляции пишет, что сигналу never assigned a value.
IanPo, нет, эти цифирки нужны только для симулятора. Если сигнал является триггером (регистром) то после старта он будет нулевым. Предустановка есть для ячеек памяти.
Доброго всем времени суток!
начал тут осваивать Циклон1 - действительно здоровская шкукенция!:)
А осваивать я решил сразу с видеоустройства спека на ВГА (клок на 14МГц). ну с первого раза ничего никогда не получалось, но пока достиг этого......
есть несколько вопросов:
Как можно слить образ памяти спека с адреса 4000(хекс) из любого эмулятора (непринципиально)?
В каком формате(для заливки его в РОМ для теста)нужно это сделать?
пока все...:)
В анриале жмем Esc попадаем в отладчик, там жмем Alt+w -> to binary file, дальше думаю будет понятно..
пока убрал цвет, попытался вывести ЧБ картинку. результат ниже.
могут ли данные глюки пикселей возникнуть от то того что я используюу Флэшром (M29F002NT-120PI) от старой материнки и она подключена к циклону 3.3в IO а сама флэш запитана от 5в? или тут скорости самой флэши нехватает? если нужно могу выложить проект квартуса, на случай если косяк не в флэшке.
клок счетчиков - 14МГц, адрес считается с 4го вывода счетчика - 0.875МГц
Больше всего похоже на то, что данные защелкиваются слишком рано.
пока они не защелкиваются, я просто мультиплексором их вывожу, каждые 8 пикселов адрес меняется на следующий
Выглядит так, как будто проблемы только на границах слов. Попробуй сделать что-то наподобие конвейера: пиксели выдвигать из своего внутреннего регистра, а запись в регистр делать в противофазе с переключением счетчика адресов. Тогда у флешки будет достаточно времени, чтобы выдать устоявшийся сигнал.
попрбую и этот способ, но я тут присмотрелся и заметил, что глюк всегда один и тот же и на том же месте, идут с определенной закономерностью. вероятно что в схеме косяк (я в квартусе схемно все нарисовал).
вот скрин по больльше, на нем видно что оба диззика глючат одинаково, да все по вертикали одинаково глюкнуло, выходит знакоместо здвинуто на 1 пиксел по кругу.
но как я это утворил - буду думаьт
Да, точно, все сдвинуто циклически на 1. Я не заметил на той фотке.
победил я его!!! но при этом пришлось с мухлевать, здвинул биты на 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 ----------
теперь видно, что весь экран съехал на пиксель влево (
как это можно регулировать?
Странно, должен бы съехать на 1 пикесль вправо, ведь на месте самого левого пикселя ты не можешь показать бит 0 еще не загруженного слова.
то была старая схема и слеплена наугад, терь я сделал на сдвиговом регистре, биты стоят по порядку D0..D7, сдвигаю 14МГц клоком. Может кто пояснит на каком такте данные должны грузиться в регистр сдвига (вроде надо дополнительный регистр?) и как грузить первый пиксел в строке?
добалю проект квартуса, может я где еще ошибся :confused:
Разжился я тут Кактусом полным, с таблэткой. Жужжит нормально. Только непонятно как использовать пресловутую incremental compilation. Включил в опциях компилирования "smart compilation", но ничего не изменилось. Кто-нить работал на полных версиях?
Там есть tuning advisor для incremental compilation
Много чего не совместимо, тот же Signal Tap
может кто подскажет как синхронизировать данный код с сигналом клока, т.е. привязать сигналы к такту клока:
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';
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;
или так (не знаю, занимает ли этот вариант больше LC, однако):
if rising_edge(CLC) then
if hcnt>=8 and hcnt<264 then
HSCR<='1';
else
HSCR<='0';
end;
....остальные сигналы
end;
правильно ли будет написать следующее безобразие:
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:
кажись через & надо, я так писал: SHIFT_REG_DB(7 downto 1) & MISO
кажись через & надо
Именно так.
я вроде еще порядок битов задом наперед поставил )
так вроде правильно будет?
sPIX_adr (12 downto 0) <= vcnt (8 downto 7)&vcnt (3 downto 1)&vcnt (6 downto 4)&hcnt (7 downto 3);
Вроде правильно.
Вот кусочек Скорпиона на Циклоне:
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;
Вроде правильно.
Вот кусочек Скорпиона на Циклоне:
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:
... вроде дошло:
Да, это формула case (выбор)
если hcnt(2) равно нулю, то в А поступают одни данные,
если равно единице - то другие.
Здесь реализовано чтение данных по видео и по атрибутам экрана.
Вот так более понятно:
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;
altera SDRAM
http://whoyouvotefor.info/altera_sdram.html
помогите понять что не так: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:???
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;
спасибо,:v2_wink: оказалось нужно было добавить это в начало:
use IEEE.std_logic_unsigned.all;
только после этого все заработало:v2_blush:
Подскажите как в квартусе задать в настройках, чтобы задержка группы сигналов (например идущих на сдрам) была приблизительно одинаковой (например по отношению к клоку).
Если для притирки 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"
Извините что не в тему, хочу задать вопрос. Что-то в Квартусе 2 у меня после компиляции не пишется отчет о задействованных ячейках, в том числе и памяти (использую ПЗУ на 4 кБайта в проекте). Может я где-то какие-то крыжики не поставил?
файлы проекта в студию...
Может я где-то какие-то крыжики не поставил?
Гы... А ты привязку сигналов к пинам сделал в заголовке?
Дай сам файлик посмотреть.
Вот сам файлик. Но привязку я сделал, не первый раз замужем. В других проектах (они в большинстве на 7128, а этот - на Циклоне) все нормально. Причем выходные файлы компилятора создаются.
файлы проекта в студию...
Неплохо было бы увидеть все файлы проекта, от одного vhdl файла толку мало...
VAIT : out std_logic;
Скорее всего WAIT
Пожалуйста, правда причем здесь остальные файлы для понимания. Суть проблемы-то не меняется.
Неплохо было бы увидеть все файлы проекта, от одного vhdl файла толку мало...
VAIT : out std_logic;
Скорее всего WAIT
Возможно, хотя я эту переменную не изменял.
Хотя нет в vhdl языке переменная wait зарезервирована и ее нельзя использовать. В редакторе при попытке поменять на правильное WAIT последнее подсвечивается синем цветом.
Картинка говорит о том, что где-то упущен clock, или enable, или есть еще какой-то промах из-за которого вся схема упростилась практически до пустышки.
Надо внимательно читать сообщения, которые Квартус выдает при компиляции и внимательно смотреть все свои сигналы и шины. Бывает.
Комментарии к проекту:
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!
Да, ошибка была тут:
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 можешь получать другие частоты :)
Сделай простой счетчик на три клока, по заполнению меняй фазу выходного клока.
это на 6
это на 6
ага, обсчитался :)
Избавляйся по мере возможностей от latch (простые "защелки" в проекте заменяй на регистры, тактируемые клоком.
т.е. типа этих?
signal scan_key: std_logic_vector(7 downto 0);
signal slow: std_logic register;
Например, было так:
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;
Теперь компилятор доволен, а мы избавлены от глюков.
т.е. типа этих?
Защелка образуется, например, когда в процессе
есть условия, а присвоение значения производится
не во всех вариантах условия.
http://www.interfacebus.com/Design_VHDL_Pitfalls.html - на англ.
Образно говоря, мы заменяем 555ИР22 на 555ИР23 :)
---------- Post added at 12:06 ---------- Previous post was at 12:03 ----------
Защелка образуется, например, когда в процессе
есть условия, а присвоение значения производится
не во всех вариантах условия.
Не только...
Защелка записывает в себя данные всё время, пока активен сигнал выбора этой защелки. Если же сделать эту защелку синхронной, т.е. тактировать ее фронтом какого-либо сигнала, то запись будет происходить мгновенно, например как D-триггер, или регистр ИР23.
А как сделать деление входной частоты на 3?
Делается делителем на 4 и элементом "Исключающее ИЛИ"
http://library.espec.ws/books/ttl/CHAPTER2/2-4-3.htm
Ewgeny7, в твоём файле orionkeyboard.v есть вот такие конструкции:
...
keymatrix[7] <= 8'h0;
...
9'h06c: keymatrix[0][0] <= press_release; //Home
...
Эти два массива различные? Если да, то почему они названы одинаково или это в синтаксисе языка дозволено? Первый индекс означен номер столбца, второй - строки или наоборот?
Я почему спрашиваю. Для реализации клавиатуры в Специалисте, мне приходится перелопачивать весь текст программы, т.к. приходится описывать клавиатуру 12 на 6. В программе учитывается ли что русская и английская раскладка на одних и тех же клавишах не совпадают?
Если да, то почему они названы одинаково или это в синтаксисе языка дозволено? Первый индекс означен номер столбца, второй - строки или наоборот?
Да, keymatrix это массив 8х8. Синтаксис позволяет описывать как любой "бит" массива, так и строчку целиком. Что там строка а что столбец - я уже не помню, надо схему РК-клавиатуры смотреть.
мне приходится перелопачивать весь текст программы, т.к. приходится описывать клавиатуру 12 на 6.
Я приспосабливал этот блок для спектрума, исправлений было достаточно (5х8). Символы переписывал долго :) Выкладывал готовый блок где-то здесь в теме.
В программе учитывается ли что русская и английская раскладка на одних и тех же клавишах не совпадают?
Нет. В Орионе нет четкого сигнала, указывающего на выбранную раскладку. Если бы был, то добавить удобную для себя раскладку - не проблема. Всего лишь сделать вторую таблицу символов :)
А так как есть - только ЯВЕРТЫ.
Да, keymatrix это массив 8х8.
Всё ж, массив который одномерный как-то отличается от двухмерного или это один и тот же массив?
Я приспосабливал этот блок для спектрума, исправлений было достаточно (5х8). Символы переписывал долго :) Выкладывал готовый блок где-то здесь в теме.
У меня есть этот файл - посмотрю.
А так как есть - только ЯВЕРТЫ.
Жаль. А вот в Специалисте есть клавиша РУС/LAT - можно же по нажатию её организовать триггер состояния клавиатуры?
Всё ж, массив который одномерный как-то отличается от двухмерного или это один и тот же массив?
Один и тот же.
А вот в Специалисте есть клавиша РУС/LAT - можно же по нажатию её организовать триггер состояния клавиатуры?
А сама система будет знать какую раскладку ты выбрал? ;)
А если сам монитор без твоего участия раскладку выберет?
Мы уже этот гемор с раскладками подробно проходили, выхода не нашли...
Так в Специалисте есть светодиод "РУС/LAT"...
Так в Специалисте есть светодиод "РУС/LAT"...
В Орионе тоже есть. Только он не обязательно включается :(
Вроде добил драйвер клавиатуры, просмотрите. В нем - metod - метод опроса клавиатуры:
=0 - порт А и мл. тетрада порта С - на вывод, порт В - на ввод;
=1 - порт В - на вывод, порт А и мл. тетрада порта С - на ввод.
Да нет, пока у меня железки нет,прогу пишу...
Да нет, пока у меня железки нет,прогу пишу...
Напиши под готовую железку - девборду "Орион-2010" ;)
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)
Напиши под готовую железку - девборду "Орион-2010" ;)
Не получится. ОЗУ на Специалисте должно с видео ОЗУ цвета иметь нелинейную структуру т.е. 48 кБайт + 12 кБайт. Если расширять до МХ то еще 512 кБайт опять в другом месте. Так что это две срамины, причем одна из них 16 байт ввода/вывода с параллельной шиной адреса и управлением. ПЗУ должно быть от 12 кБайт до 512 кБайт (МХ). Вот посмотрите схему - http://www.spetsialist-mx.ru/for_out/NewSpets.gif. Спасибо конечно за предложение.
Что это за ошибки?
32 битное число присваивается вектору меньше чем 32 бита
Например
reg [3:0] tmp;
tmp = 10; // ругнется
tmp = 4'd10; // не ругнется
Может быть, но я файл взял с проект Орион-2010. У Ewgeny7 таких варнингов нет?
Может быть, но я файл взял с проект Орион-2010. У Ewgeny7 таких варнингов нет?
Есть. Не обращай внимание. Происходит уменьшение разрядности спецпеременных до нужного размера.
Почему-то ранее не встречал таблички для VHDL, где были бы расписаны
приоритеты операторов, знаков и т.п., т.е. в какой последовательности
производится разбор сложных выражений.
(Это позволит пресечь злоупотребление скобочками, между IF и THEN, например ;) )
Исправляем ситуацию:
and, or, nand, nor, xor – самый низкий приоритет
=, /=, <, <=, >, >=
+, -, & (бинарные)
+, - (унарные)
*, /, mod, rem
abs, not – высший приоритет
Операторы с более высоким приоритетом выполняются раньше. Чтобы изменить такой порядок используются скобки.
Что может давать такие искажения? если бордер будет черный - искажение мене выражено
(создано на ФПГА, картинка берется из ПЗУ, вывод на ВГА, тайминги приближены к его стандарту - не скандаблер)
Что может давать такие искажения? если бордер будет черный - искажение мене выражено
(создано на ФПГА, картинка берется из ПЗУ, вывод на ВГА, тайминги приближены к его стандарту - не скандаблер)
Может два кадровых синхроимпульса?
Или строчные синхроимпульсы в этом месте отличаются от других.
если бордер будет черный - искажение мене выражено
Я бы проверил гашение в интервалах между строками.
Файлы нужно смотреть. Похоже на то, что селекторы синхроимпульсов не имеют привязки к клоку.
Похоже на то, что селекторы синхроимпульсов не имеют привязки к клоку.
По человечески это звучит так.
Имеются у нас счетчики пикселей/строк. Тактируются клоком. Но при этом после очередного клока эти счетчики еще какое-то время "устаканиваются". Но за это небольшое время их значение будет "колбаситься" весьма основательно, возникают ложные значения. Если формирователь синхры у нас сделан примерно так:
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;
а как тогда задать 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;
но по твоему мне как то больше нравиться, все четко и понятно.
все равно после первой строки все войдет в норму
Правильно. Первый фрейм все равно будет косой, но его никто не увидит :)
переписал свои селекторы вот так:
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". опять в легком тупнике...
aniSKY, извини, а сколько строк у тебя по вертикали выходит?
Да и кадровый "толщиной" в одну строку как-то смущает...
aniSKY, извини, а сколько строк у тебя по вертикали выходит?
Да и кадровый "толщиной" в одну строку как-то смущает...
по вертикали 264(или 528 если весь счетчик брать, я беру только начиная с с 1го разряда)
кадровый - если брать все разряды то получится две строки, просто 0й разряд не беру в расчет.
опишу в общем весь проект - смесь схемного ввода с кусками на ВХДЛ, пытался на чистом ВХДЛ, но начинаю путаться, мне схемный немного ближе, визуально более понятен, да и та часть что сдвигает пиксели (сдвиговый регистр пикселей) так и не поддается мне....:v2_blush:
на всякий пожарный мой проект по частям:
может кто поможет в написании мультиплексора, коммутирующего двунаправленную шину к двунаправленной или к шине на вывод по сигналу выбора какимнить маленьким примером? а возможно ли такое?
з.ы. хочется подрубить свою поделку к компутеру, а в двунаправленности шин в ВХДЛ все никак не разберусь....ток сильно не пинайте, на конкретных примерах както проще разобраться.
Для затравки выкладываю пример:
двунаправленный порт 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;
aniSKY, то есть, все понятно? Могу прокомментировать.
Код я не проверял, но, по идее, должен работать.
Нужно еще сделать проверку на /IORQ и M1,
чтобы не реагировало на подтверждение прерывания
(это надо в доке на проц уточнить).
aniSKY, что-то я не понял у тебя в блоках hsgen.vhd и vsgen.vhd отсутствует приращение горизонтальных и вертикальных счётчиков. Забыл? Еще одна ошибка. На выходе элемента И (inst20) всегда будет 0. Это в формировании сигнала PINF.
fifan, не, счетчики строк/пикселей в графическом блоке. В текстовиках только селекторы синхры.
счетчики строк/пикселей в графическом блоке. В текстовиках только селекторы синхры.
Понял, не сразу разглядел.:cool:
На выходе элемента И (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) ?)
ioDataZXbus <= (others => 'Z'); -- как это описывается словами? (правильно наверно (others) ?)
Здесь можно немножко упростить для понимания:
ioDataZXbus <="ZZZZZZZZ";
Так лучше? ;) Просто в первой записи мы не указываем разрядность.
если можно в краце пояснить данную конструкцию:
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 раз (так как детектор) пишем в регистр (порт) значение с шины данных.
Есть сигналы:
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);
Под * подразумевается умножение? Вроде так не делается. Необходимо специальную программку писать поразрядного умножения.
Под * подразумевается умножение? Вроде так не делается. Необходимо специальную программку писать поразрядного умножения.
На Циклоне 2 встроенных сколько-то-битных умножителей 26 штук.
Да-да или использовать мегафунции.
Книжки на русском и английском:
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) или требуется какое то преобразование
пока всё..
2. Нет. Только извращаться с логикой. Ты наверное имел ввиду чтото вроде RC-цепочек?
3. Можно. И ТТЛ и КМОП нормально работают с 3.3 выходами ПЛИС. Как вариант, можешь поднять напряжение питания ПЛИС. Они прекрасно работают и при 5 вольт питания.
axel_sunrise
01.10.2010, 15:28
[QUOTE=Ewgeny7;319874]2. Нет. Только извращаться с логикой. Ты наверное имел ввиду чтото вроде RC-цепочек?
ага,типа того :)
А какую недорогую Xilinx Плис можете посоветовать,чтоб поучиться с ней работать?
Всем добрый день.
Задам один вопрос по ядру Т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. к стати, а вот с этим работает правильно.
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...какие использовать для двунаправленных шин?
Маленькое инфо!
в ядре Т80 , которое выложено на OpenCores есть ошибки.
В часности при выполнении команд INI, IND, INIR, INDR ; OUTI, OUTD, OTIR, OTDR регистровая пара HL не изменяется !!!
Блин потратил 2 дня на выяснение этой гадости :(
Маленькое инфо!
в ядре Т80 , которое выложено на OpenCores есть ошибки.
В часности при выполнении команд INI, IND, INIR, INDR ; OUTI, OUTD, OTIR, OTDR регистровая пара HL не изменяется !!!
Блин потратил 2 дня на выяснение этой гадости
Да, там ошибка. Syd исправил ее. Теперь работает прекрасно.
Да, там ошибка. Syd исправил ее. Теперь работает прекрасно.
А исправленное ядро не дадите?
Загляни сюда (http://www.zx.pk.ru/showpost.php?p=321105&postcount=302). Здесь ядро Т80 уже патченное и нормально исполняет команды INIR-OTIR. Только после сброса на шине адреса не ноль, а единица ;)
axel_sunrise
07.10.2010, 15:49
ребята,подскажите схему для подключения статической памяти к спектрумму,чтоб запихнуть её в плис?
В плисине Циклон-3 от Алтеры, например, более 51 кБайт памяти внутренней. На твои извароты не хватит? Тогда подключай как в Reverse. Учи язык vhdl. На пальцах не покажешь, нужно в программу врубаться. А лучше вот почитай - http://www.zx.pk.ru/showpost.php?p=179392&postcount=39.
axel_sunrise
08.10.2010, 09:37
ессесно саму память я не собирался пихать в альтеру))))
подскажите схему для подключения статической памяти к спектрумму,чтоб запихнуть её в плис?
вроде как никто такого изврата не делал
axel_sunrise
08.10.2010, 12:54
ну как же?а спесси 2007,Реверс они же на статической памяти(SRAM - Static ram)?
Всю логику запихнуть в плис,а к плис подрубить память
Проект мой - плис+z80+озу+пзу
ну как же?а спесси 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", там достаточно просто всё сделано, на примере аж двух платформ.
Рекомендую к прочтению пост (http://www.zx.pk.ru/showpost.php?p=321898&postcount=113), если вы используете модули Т80 из готовых проектов.
Это не мною придумано, но я также это широко использую в своих проектах. Будьте внимательны, если ваш проект начнет работать криво - проверьте на всякий случай модуль Т80.VHD
Что предпочтительней ? EP1C12Q240C8 или EP2C8Q208C8N если количество ног 208 устраивает.
у второго меньше макроеечеек а разница в цене 100р.
Что предпочтительней ? EP1C12Q240C8 или EP2C8Q208C8N если количество ног 208 устраивает.
у второго меньше макроеечеек а разница в цене 100р.
Зависит от уверенности, что < 8 т. ячеек хватит и собираешься ли делать серийно(переплата может сыграть роль; чип чуть сложнее паять и т.п.).
axel_sunrise
13.10.2010, 06:52
кто-нибудь собирал Байт Бластер MV без микросхемы 74нст ? Как успехи?
Я собирал. Используется микросхема 555АП5. Полет отличный. Прошил им ПЛИСы своего Pentagon 1024 sl 2.2. Только поножовщина у 555АП5 другая и это нужно учитывать.
IanPo, не думаю, что будет какая то серия большая максимум 2-3 экземпляра.Прожект на еZ80.Циклон 1, как я понял снят с производства.Если кому то интересно выложу концепт в ближайшее время-карманный комп с док станцией.
Totem, я бы выбрал второй циклон, на нем проекты уже были, у Romanichа, например. Есть что позаимствовать.
Циклон 1, как я понял снят с производства.
Как понял? Вроде тут (http://www.altera.com/products/devices/mature/mat-index.html) его нет
IanPo, Что бы. что позаимствовать у Romanichа надо, что то для его железяк сделать:) тогда поделится.
Что бы. что позаимствовать у Romanichа надо, что то для его железяк сделать
Есть схема Tresher Forever, есть фоты платы - вот уже готовые решения по схеме и разводке.
IanPo, поехали во флейм дабы не сорить создам тему Zetnix.
Может есть у кого рабочая схема решения по заливке конфигурации по средствам АВР+ЕПРОМ в ФПГА (в моем случае Цыклон 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 другая и это нужно учитывать.
А вообще без микросхемы,напрямую через резюки?
и второе - через СОМ порт можно прошивать Альтеру?
А вообще без микросхемы,напрямую через резюки?
"не через резюки", а через АП5 - ByteBlaster.
и второе - через СОМ порт можно прошивать Альтеру?BitBlaster, но схему я так и не нашёл.
BitBlaster
хомячки рекомендуют какой-то мифический проект на пик16...
можно jamplayer попробовать, только переделать под свое железо, ту же ft2232 например...
axel_sunrise !
Прошивать ПЛИС вообще без микросхемы напрямую проводками вроде бы называется ByteBlaster II, где-то на этом форуме писалось про это но у меня этот номер не прошел - программатор ByteBlaster II программой не обнаруживался, хотя проводки были не длиннее 15 сантиметров.
Может есть у кого рабочая схема решения по заливке конфигурации по средствам АВР+ЕПРОМ в ФПГА
Есть, ZX Evo называется.
Прошивать ПЛИС вообще без микросхемы напрямую проводками вроде бы называется 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 уже лежит в интернетах.
да, была мысля использовать готовое с других машин, но данная очень уж жирно будет для моей платы. там есть все - клава, мышь, ком-порт, СД-карта, часики. Мне на данном этапе нужно пока всего лишь только КОМ-порт(для РС) и программа которая прошьет ПЛИСину, АВРка меньше понадобится :)
как вариант подошла бы АВРка Мега88 из AEON'a, но там используется Ксилиникс, явно мой циклон она не прошьет.
Через 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 ?.
Мне на данном этапе нужно пока всего лишь только КОМ-порт(для РС) и программа которая прошьет ПЛИСину, АВРка меньше понадобится
как вариант подошла бы АВРка Мега88
Так в чем проблема-то? сырки есть на пентэво, из схемы и даташита на фпга можно понять как подключить МК к фпга для конфигурации... не обязательно подключать именно атмега128, можно хоть тиньку2313+cпи-флеш - принцип один и тот же. А именно такой проект, который бы на 100% тебя удовлетворял по требованиям, не думаю что ты найдешь...
к сожалению я не программист :), в сырках буду полгода разбираться, и не факт что разберусь...
Самодельный USBblaster уже лежит в интернетах.
http://njnmnp.narod.ru/usbblaster/usbblaster.html
Варианты с АТМега8 или мелкой ПЛИС. Курите на здоровье :)
Вот еще вариант: http://www.microchip.su/showpost.php?p=79722&postcount=9
vlad, там региться надо, если есть возможность - файлики запостите тут, плиз.
Вот еще вариант: 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:
: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:
Адрес нужно как минимум на один клок раньше задавать. А так у тебя адреса атрибутов и пикселей получаются перепутаны. Для наглядности, поменяй местами строчки:
PIXd<=VD;
VA<=PIXa;
Ничего не изменится.
поменял-все по прежнему.
вроде они должны выполнять параллельно?
а может у кого есть примеры других разработок спека на ВХДЛе? пытался подсмотреть в исходниках SPECCY2007 - сложно разобраться для новичка, много сигналов и регистров без коментов что за они.
вроде они должны выполнять параллельно?
Для самого ОЗУ сигналы не должны быть "параллельно".
Сначала ставится адрес на шину, спустя клок/полклока считываются данные. У тебя же это не сделано. И в результате в "цветной регистр" считываются данные пикселей, а не аттрибутов.
---------- Post added at 16:23 ---------- Previous post was at 16:21 ----------
посмотри реализацию в u10_speccy, к примеру.
:confused: помогите разобраться что не так.
Попробуем :) Во-первых, начнём со стиля написания кода.
1) Зачем в процессе смешаны асинхронные присвоения в PIXa и ATRa с синхронными присвоениями по CLK25? Если хотелось их тоже обрабатывать синхронно, то надо было их засунуть под if (CLK25'event ..., ну а если они действительно асинхронные, то лучше их убрать из-под процесса.
Понятность кода увеличится, кроме того уменьшится вероятность случайно сделать latch во время правок кода. Ну и наконец некоторые синтезаторы потупее такой код не переваривают.
2) Я надеюсь, VA -- это вывод FPGA, а не какой-то её провод? Внутри FPGA проводов с Z-состоянием нету. И если это вывод, то лучше вынести Z-присвоение на верхний уровень проекта. Облегчает дальнейшую правку кода.
Плюс Квартус не всегда распознаёт "похороненные" Z-присвоения, я на эти грабли уже натыкался.
Теперь по функционированию:
1) b2m совершенно правильно сказал про работу с памятью. В этом коде ставится адрес и сразу читаются данные, так нельзя. Надо хотя бы один такт подождать, пока память не отработает.
2) В этом коде пиксель читается сразу же, а атрибут -- в середине знакоместа. То есть атрибуты будут показываться на 4 пикселя правее, чем надо. Так и задумано? ;)
поменял - все по прежнему.
вроде они должны выполнять параллельно?
Я тебе про это и написал. Глядя на твой код, можно догадаться про ход твоих мыслей. Так вот, поменяв местами строчки, представь, как оно бы работало, согласно ходу твоих мыслей.
атрибуты будут показываться на 4 пикселя правее, чем надо. Так и задумано? ;)
:v2_lol:
То есть атрибуты будут показываться на 4 пикселя правее, чем надо. Так и задумано?
Так и делается. Содержимое регистров цвета и "яркости" выводится с запаздыванием на одно знакоместо.
Так и делается. Содержимое регистров цвета и "яркости" выводится с запаздыванием на одно знакоместо.
Но не в вышеприведённом коде. Данные, считанные посреди знакоместа, надо бы где-то буферизировать, и уже потом копировать в выходные регистры, одновременно с данными, считанными на границе знакомест.
спасибо всем за коменты и замечания, приму к сведению, теперь данную часть буду переписывать заново, а то исправлять все придется :)
Правильно ли я все понял: https://docs.google.com/fileview?id=0B4XPaFHPyj1AMWQwZGE1OGQtOWFjOC00MDM0L TliZWEtY2Y1MTZjMzkwN2Rh&hl=ru&authkey=CPq3w6sK
Я бы объеденил пункты 5 и 6 в один процесс. Потому что и сдвиг, и запись в выходные регистры нужно делать либо по фронту, либо по спаду. Иначе будет нестыковка на полпикселя.
тогда получиться, что на 8-ом такте будет происходить одновременно сдвиг и загрузка данных в регистре, на что квартус жалуется сильно. да и последний пиксель будет всегда из следующего знакоместа вроде.
Я думал, сам догадаешься :)
Самый первый пиксел образуется не после сдвига, а после записи в выходной регистр (крайний пискел которого ты используешь как видео-выход), о остальные 7 - в результате сдвига.
ок, попробуемс :) (наверно прийдется сдвигающий регистр организовать по иному, через "CASE IS ..." привязанным к томуже клоку, что и загрузка во вторые регистры)
прийдется сдвигающий регистр организовать по иному, через "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выход.
В моих проектах сделано так:
Неплохо. Наверное, самое оптимальное решение.
Хотя, неизвестно, что лучше: семь мультиплексоров 2-в-1 (в случае со сдвиговым регистром) или один 8-в-1 (как у тебя). Мультиплексор 2-в-1 будет в той же LE, что и бит регистра, а вот 8-в-1 после регистра - это дополнительные LE.
Хотя, неизвестно, что лучше:
Лучше то, что работает. И самому автору понятно от и до. :v2_dizzy_write:
В моих проектах сделано так:
---------- Post added at 17:46 ---------- Previous post was at 17:44 ----------
На самом деле это не шифт-регистр, а самый обычный мультиплексор на 8 входов-1выход.
да да, я это и имел ввиду (увидел в прошивке u10-speccy когда изучал что куды).
в данном случае привязка к клоку необязятельна, или лучше привязать?
в данном случае привязка к клоку необязятельна, или лучше привязать?
Ну... необязательна. Клок лучше применить когда будешь окончательные сигналы на монитор выводить.
ну наконец то добился толку от своего нагромождения кода :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)) для спека (или вся прошика этого теста) на которой изображены круги полоски градации? помню пролетала прошивка данного теста на форуме, да вот теперь все никак найти ее не могу.
помню пролетала прошивка данного теста на форуме, да вот теперь все никак найти ее не могу.
Помнится, какую-то тестовую прошивку zst выкладывал: http://zx.pk.ru/showthread.php?t=10548
http://zx.pk.ru/showthread.php?t=10548&page=77
ЗЫ: может у кого есть картинка тестового экрана (: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 ?
имеется в виду способ программирования, а не справочные данные на микросхемы из пыльных сборников про ПЗУ.
товарищи и господа! а есть ли информация по РТ1/РТ2 ?
имеется в виду способ программирования, а не справочные данные на микросхемы из пыльных сборников про ПЗУ.
Была книга вроде про отечественные ПЛМ. Там вроде и описывался принцип программирования этих микрух. Лично я такую книгу не видел, кроме картинки обложки в инете. Еще вроде как программатор от ATM позволял их шить, но это надо проверять.
mbojenov
23.10.2010, 10:57
Mick, у меня имеется "Стерх", который их шьет. Проблема в том, что не знаю на каком языке писать прошивки, как и в каком софте. Может быть вспомните название книжицы?
ну наконец то добился толку от своего нагромождения кода :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 -- именно такие.
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
Спасибо. Я ее видел, НО ТАМ ПИК!!! Ужос. Было бы АВР...
Нашёл простую схему программатора USB ALTERA
Прикольно, можно попробовать засунуть в PicKit
axel_sunrise
28.10.2010, 14:07
Спасибо. Я ее видел, НО ТАМ ПИК!!! Ужос. Было бы АВР...
А мне пик больше нравится)))придётся заказывать микросхему (стоит 300-350руб),хочу опробовать схемку :)
надо распотрошить прошивку! и сделать как надо:)
надо распотрошить прошивку! и сделать как надо
походу написано по мотивам http://ixo-jtag.sourceforge.net/ того варианта что для чипа FX2
mbojenov
28.10.2010, 18:05
господа, посмотрите, может у кого нибудь есть информация по программированию (не прошиванию, программатор есть) 556РТ1 или 2
походу написано по мотивам
ну вот как руки дойдут..... блин, дойдут ли только...
господа, посмотрите, может у кого нибудь есть информация по программированию (не прошиванию, программатор есть) 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
программатор стерх, в его программе есть редактор ПЛМ
программатор стерх, в его программе есть редактор ПЛМ
Да, у меня тоже есть ST-700.
Нашёл простую схему программатора USB ALTERA
Собрал, прошил. Определился нормально в винде, квартус тож увидел, сегодня вечером найду в загашниках cpld попробую прошить.
Сырки правильно сделаны, можно в комплекте с USB bootloader заюзать и обновлять прошивку без программатора.
Собрал, прошил. Определился нормально в винде, квартус тож увидел, сегодня вечером найду в загашниках cpld попробую прошить.
ДежаВю :) Сегодня ночью допаял USBBlaster на EPM3064, прошил, квактус определяет, cpldшка тоже определяется, правда прошивать я еще ничего не пробовал :) И я собрал используя отладочный модуль UM245R на FT245R...
axel_sunrise
30.10.2010, 06:25
Собрал, прошил. Определился нормально в винде, квартус тож увидел, сегодня вечером найду в загашниках cpld попробую прошить.
Сырки правильно сделаны, можно в комплекте с USB bootloader заюзать и обновлять прошивку без программатора.
C Max Plus 2 проверяли прогер?
C Max Plus 2 проверяли прогер?
Макс плюс помоему вообще не умеет usb blaster
Макс плюс помоему вообще не умеет usb blaster
Да не умеет, качай программатор от Квартуса (http://www.spetsialist-mx.ru/for_out/91sp2_quartus_programmer.exe) (130 МБайт).
Если надо шить только 1-2 циклоны, всякие старые флексы/ацексы и CPLD
то с головой хватит программатора от Квартуса 4.2, весом в 37Мб
фтп://фтп.альтера.ком/outgoing/release/quartusii_42_programmer.exe
vlad0336
31.10.2010, 13:18
ZEK, был четкий вопрос: работает ли бластер?
Ответ насколько я понял ОТРИЦАТЕЛЬНЫЙ - т.е. нет.
А я так надеялься - хотел собрать
Ответ насколько я понял ОТРИЦАТЕЛЬНЫЙ - т.е. нет.
В 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 на борту
И какие точно прошил?
EPM3064
vlad0336
03.11.2010, 20:09
Немного изменил схему.
Тепер смогу программировать ПЛИС с напряжением питания от 1,65 до 5 вольт.
Немного изменил схему.
Тепер смогу программировать ПЛИС с напряжением питания от 1,65 до 5 вольт.
Схема засекречена или поделитесь ?
vlad0336
03.11.2010, 20:39
Поделюсь после проверки(а то вдруг она только EPM3064 программирует)
Схема засекречена или поделитесь ?
ставишь пару SN74LVC2T45, внутренний порт питаешь от 5в, внешний от разъема jtag
ставишь пару SN74LVC2T45, внутренний порт питаешь от 5в, внешний от разъема jtag
Спасибо за подсказку :v2_cheer:
Я так понимаю что если ставить этот преобразователь уровней,
то резисторы на ногах пика не нужны ?
Alex_NEMO
10.11.2010, 10:25
Нашёл простую схему программатора USB ALTERA
axel_sunrise, спасибо за ссылу!
Спасибо. Я ее видел, НО ТАМ ПИК!!! Ужос. Было бы АВР...
Женя, а что ужастного то? Купил PIC18F2550, прошил ХЕКсом и в путь! Главная "фишка" в том, что PIC18F2550 имеет нормальную "набортную" поддержку USB, в отличие от "софтверных поделок" на той же Меге8. Проггер на ней постоянно "отваливается". Надо попробовать собрать, благо, PIC18F2550 в ДИПе имеется одна!
Самая большая проблема с этим PIC18F2550, так это найти где его купить,
особенно в дип корпусе.
В Харькове нашёл только в соике и то только под заказ :(
Женя, а что ужастного то? Купил PIC18F2550, прошил ХЕКсом и в путь!
Хе... А чем я должен прошить этот ПИК? ПИКкитом? Для его изготовления нужно также прошивать ПИК внутри него. Чем? И так далее в полной рекурсии...
В Харькове нашёл только в соике и то только под заказ
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
восстанавливал (тобиш прошивал) этим
Вот это другое дело :)
Alex_NEMO
10.11.2010, 12:22
To ZEK - Дима, подскажи, чо за перемычка напритив 3 и 4 ног ПИКа?
http://sa89a.net/ele/ub/ub3.jpg
To ZEK - Дима, подскажи, чо за перемычка напритив 3 и 4 ног ПИКа?
Хз,схемы этой платы не видел, но учитывая что код в хексе смещен для того что бы дружить с бутлоадером, 90% это перемычка для перевода микроконтроллера в этот режим
Alex_NEMO
10.11.2010, 12:36
Хз,схемы этой платы не видел, но учитывая что код в хексе смещен для того что бы дружить с бутлоадером, 90% это перемычка для перевода микроконтроллера в этот режим
Дык, в том то и проблема, что на схеме она не отражена, а на фотке есть.
Т.е. это режим программирования ПИКа в режиме USB Botloader'а.
Т.е. это режим программирования ПИКа в режиме 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
Там самое интересное, то что пунктирной линей обведенное, не нарисовано
А так преобразователей уровнем валом, в том числе есть и гальванически развязанные. Можно вообще дубово какую нить 244 воткнуть и поставить резисторов для защиты по току, как сделано в ByteBlaster. Но это только 5 и 3.3в шить можно, в принципе для целей извращения достаточно
Alex_NEMO
10.11.2010, 14:16
А так преобразователей уровнем валом, в том числе есть и гальванически развязанные. Можно вообще дубово какую нить 244 воткнуть и поставить резисторов для защиты по току, как сделано в ByteBlaster
Это понятно. Пулл-апы или пулл-дауны нужно? Со стороны контроллера или со стороны прог. ПЛИСки? Ещё момент - буфер тогда надо питать со стороны прог. ПЛИСки, от питания схемы, где она стоит?
улл-апы или пулл-дауны нужно? Со стороны контроллера или со стороны прог. ПЛИСки?
Со стороны 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
будет ли с обычным кварцом работать?
Ставишь двулапый кварц и пару конденсаторов по 22pF, от каждого вывода на землю
---------- Post added at 13:11 ---------- Previous post was at 12:59 ----------
ZEK,если не затруднит вас,нарисуйте схему доработки,для тех,кто в танке
Я еще в стадии экспериментов, хочю засунуть в прошивку еще CDC класс для COM порта, и как план максимум еще и AVR910
Подскажите, можно ли заводить сигналы с выводов Z80 или с системного разъёма Спектрума сразу на Cyclone III? Надо ли их чем подтягивать (реальными резисторами или пул-апами в Квартусе) или нужно использовать какое схемное решения для сопряжения уровней (5v TTL >> 3.3v LVTTL)?
Пытался перечитывать тему несколько раз. Буду рад подсказкам и советам идти в правильное место! = ))
Подскажите, можно ли заводить сигналы с выводов Z80 или с системного разъёма Спектрума сразу на Cyclone III?
Если только для себя делаешь, помучить и выкинуть, то можно напрямую. Циклон от пятивольтовых сигналов пока ни один не сдох (у меня).
Если "посерьезнее", то преобразователи уровней рулят, конечно. Напрямую уже нельзя - народ засмеёт :)
...
Если "посерьезнее", то преобразователи уровней рулят, конечно. Напрямую уже нельзя - народ засмеёт :)
Может тогда направите, где про это можно почитать-посмотреть? Или вдруг есть готовые примеры использования?
Например, если я буду использовать SN74LVC244A,
http://www.gaw.ru/im/publ/converter_levels/ris15.gif
потребуется какой-либо обвес или можно напрямую соединять её ноги с землёй, питанием и выводами Z80 и Альтеры? Из даташита не вынес никакой полезной информации на этот счёт?
Значит так. Когда используешь сигнал с 5 вольтовой стороны в 3 вольтовую (в одну сторону), то достаточно поставить резистор порядка 300 Ом. В обратном направлении ничего ставить не нужно. В атаче - пример применения ИМС SN74LVC245 в качестве двунаправленного шинного формирователя.
SegaBoy, http://zx.pk.ru/showthread.php?p=269933#post269933
2 питания и никаких резисторов.
Если только для себя делаешь, помучить и выкинуть, то можно напрямую. Циклон от пятивольтовых сигналов пока ни один не сдох (у меня).
Если верить альтеровской документации, то 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 по этой ссыле ?
Вроде простая схема программатора, но я сомневаюсь в её работоспособности. Байтбластер рулит - http://www.spetsialist-mx.ru/schemes/ByteBlaster.png - прошиваю года два, никаких сбоев.
vlad0336
24.11.2010, 00:06
Вот только вопрос:
Где на ноуте взять LPT порт?
Да и на современных материнках тоже?
Где на ноуте взять LPT порт?
Да и на современных материнках тоже?
Заменить ноут и материнку на правильные :)
а какой прогой прошивали 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).
Вот только вопрос:
Где на ноуте взять LPT порт?
Да и на современных материнках тоже?
Переходить на USBBlaster, что я и собираюсь в ближайшее время сделать.
axel_sunrise
24.11.2010, 14:17
Вот только вопрос:
Где на ноуте взять LPT порт?
Да и на современных материнках тоже?
На той ссыле приведена схема подключения к СОМ порту,тока у меня нифига не получается :|
На той ссыле приведена схема подключения к СОМ порту,тока у меня нифига не получается :|
Я ж говорил что сомневаюсь на счёт работы схемы. Ищи LPT порт и собирай байтбластер.
да нафига енти ЛПТ порты - уже давно есть по юзби программаторы (на чипе от Кипариса) , если интересно то могу выложить слитую инфу
хотя сам бук себе брал немного старый но у него есть ЛПТ - но он мне для домашнего программатора Uniprog нужен
Пишу сюда (в теме о дисковой системе никто не отвечает) в надежде привлечь внимание и получить консультацию ввиду своей некомпетентности. Так что сразу примите извинения если немного не в тему.
В общем хочу сделать стандартный контроллер дисковода по схеме 0, но всю логику заменить cpld-шкой. Правильно ли я понимаю что количество входов выходов нужно выбирать столько, сколько задействовано в логике? То есть все сигналы, которые обращаются к логике и выходят из нее нужно заложить в камешек. У меня таких входов выходов получилось примерно 60. В правильном ли направлении я копаю?
Правильно ли я понимаю
(Сигналы_между_компом_и_BDI) + (сигналы_между_ВГ93_и_BDI) - (сигналы_между_компом_и_ВГ93) = количество_ног_CPLD :)
---------- Post added at 17:59 ---------- Previous post was at 17:57 ----------
Объем CPLD навскидку - от 64 макроячеек, но вероятно придется использовать EPM7128.
но вероятно придется использовать EPM7128.
лучше MAXII, они более копытные и дешевле стоят... но правда не любим 5в...
лучше MAXII, они более копытные и дешевле стоят... но правда не любим 5в...
Для меня важно чтобы у этого чуда хватило ног и памяти для программирования ног, чтобы оно поддерживалось прогой maxplus_baseline 10.0, а еще желательно, чтобы это чудо можно было вставлять в панельку, по крайней мере хотя бы до тех пор пока тестирую, или может есть какие тестовые платки для запайки многоногих жуков?
Любовь к 5 вольт можно думаю привить.:)
Насколько я понял это тот камень о котором Вы говорите:EPM240T100I5N ?
EPM240T100I5N ?
да, только в конце можно С5, оно дешевле :) :Конечно в панельку ее не сунуть, но на макетку распаять в самый раз :)
...чтобы у этого чуда хватило ног и памяти для программирования ног, чтобы оно поддерживалось прогой 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
У кого нить есть 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 за ссылку.
Как успехи?
Как успехи?
Прекрасно. Всё заработало. Уже сегодня прошил первый раз через PCI-LPT адаптер своим Байтбластером U10 (http://zx.pk.ru/showthread.php?t=8993).
У кого нить есть 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". Перезагрузка компьютера, и вуаля.
Powered by vBulletin® Version 4.2.5 Copyright © 2026 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot