Ну во первых ретро должно присутствовать :)
Сейчас все камни типа ПЛИС устаревают достаточно быстро.
Вид для печати
Еще есть сигнал TRST -
Из an039.pdf
Active-low input to asynchronously reset the
boundary-scan circuit. (TRSTis optional according to
IEEE Std. 1149.1). This pin should be driven low when
not in boundary scan operation and for non-JTAG
users the pin should be permanently tied to GND. It is
not supported by all families.
Да есть такой сигнал. Но в даташитах он везде пишется, что должен подключен к Земле. Только непонятка в чем. Где описаны пины, там написано что если не нужен JTAG, то он должен подсоединен к земле. А в другой (смотри таблицу на предыдущей странице) написано что и если нужен, то тоже должен быть на земле.
Вчера откопал в инете некий отрывок документа, кто то делал на таких ПЛИС девборды. И там написано, что ели нужен JTAG, то надо подсоединить к питанию, а если не нужен, то к земле.
Вот хочу проверить это утверждение. Пока ничего не режьте, я у себя сначала сделаю.
---------- Post added at 13:20 ---------- Previous post was at 11:42 ----------
Так, вроде с подключением JTAG разобрались.
Короче отрезал я вход TRST от земли и подал на него питание.
Появилась реакция на детект устройства пропадание меню на компе.
Перепаял резистор еще раз TCK с питания на землю. И MAX начал писать
JTAG chain information confirmed by hardware chek
Но в программаторе пока еще не появилась кнопка разрешающая конфигурить устройство - она пока заблокирована. Надо дальше разбираться.
А вроде он через JTAG не шьется.
В an033.pdf
The configuration data for a FLEX 8000 device can be loaded with one of
six configuration schemes, which you choose on the basis of the target
application.
Configuration Scheme-------Acronym--------Data Source
Active serial------------------AS------------Altera Configuration EPROM
Active parallel up-------------APU-----------Parallel EPROM
Active parallel down----------APD------------Parallel EPROM
Passive serial-----------------PS-------------Serial data path
Passive parallel synchronous---PPS------------Intelligent host
Passive parallel asynchronous--PPA------------Intelligent host
ByteBlasterom наверно можно в режиме PS шить,
но там надо его к другим ножкам подключать и
плюс сигнал nStatus задействовать
an095 стр. 4
JTAG там не для прошивки нужен, он же для отладки. Поэтому там и не написано что он шьется. А так в даташите на него написано что он поддерживает JTAG BST. Тут вопрос другой, могет ли MAX PLUS с ним работать. Так он его детектит, но не хочет работать что то с ним.
Как то непонятно, зачем его туда вставлять если в свое программе он его не может сконфигурить. Что за фигня.
Вобщем я искал, искал - так и не нашел в MAX+PLUS как через JTAG с ней работать. ОН зараза пишет что типа не поддерживает, хотя если нажмешь на детект, он вроде пишет что устройство есть. Вобщем либо эта поддержка есть в полной версии MAX+PLUS, либо Альтера схалтурила.
Для меня лично непонятно, зачем вставлять в микросхему JTAG, если собственная программа это не поддерживает.
Короче, вывод такой - Кто еще не паял, не имеет смысла запаяивать детали на его место, один фиг неизвестно как он работает.
Остается только одна возможность заливки в ПЛИС из MAX+PLUS, это через Passive Serial. Но это как подметили, нужно другие ноги брать, причем пару сигналов нужно брать прямо с ног ПЛИС.
Я лично попробую сделать, только на время отладки. Но вам, думаю не стоит огород городить.
Буквально на днях, Дмитрий меня пнул и я вспомнил, что как бы надо доделать сей комп. Вобщем попробовал я сварганить пассивный программатор, короче не вышло из этой затеи ничего. Только получил незагружаему прошивку как у piroxilin
Вчера сколько раз не пытался стартануть, ни разу не загрузилась.
Думаю надо нести на работу и заниматься ей серьезно.
А так как нет на работе телевизоров, то пришлось чуток изменить прошивку под VGA, естественно временно, так как скандаблера нет и не предвидится.
Но до этого я попытался включить - и что я вижу. Она загружалась, не было ни разу чтобы не зарузилась. Такое ощущение, что действительно блок питания не нравится ПЛИСе. Короче надо разбираться с этим.
Потом изменил прошивку, спаял хвостик-переходник с DB9->DHR15 (VGA)
Правда пока сделал в турбо режиме, чтобы хоть картинку видеть.
Сейчас во время обеда музон на Зефирке слушаю :) Правда оцифровки смешно звучат в турбе :)
Так сказать все на лице
http://s009.radikal.ru/i309/1501/ae/a0321aa22cbft.jpg
http://s017.radikal.ru/i406/1501/0f/9aaff66fa228t.jpg
P.S. Разъем JTAG и рядом стоящие резисторы R12...R15 можете не запаивать, ибо JTAGа тут нема нормального.
Сделал нормальный режим (не турбо) чтобы так сказать отлаживать. Напомню что пока с VGA монитором.
Но как обычно наступил на те же грабли. Сигнал ИНТ - ну блин не хочет он стабилизироваться. Скачет как хочет, а ведь когда работал с обычной телевизорной частотой комп, не было проблем. А теперь опять за свое. :(
Нет, в ПЛИСе формируется так. То нормально , а то два пройдет, а то пропустит.
То что закоменчено, то для телевизора. Там вроде проблем с интом не замечал.Код:------------------------------------------------------------------------------------
-- Синхрогенератор
------------------------------------------------------------------------------------
-- Системные сигналы
------------------------------------------------------------------------------------
Sync_count[].clk = CLK_14MHZ; -- Системные сигналы TI, H0, H1, H2
Sync_count[].d = Sync_count[].q+1;
VCLK = !(Sync_count[0].q & Sync_count[1].q & Sync_count[2].q);
-- VCLK = !(Sync_count[0].q & Sync_count[1].q & Sync_count[2].q & Sync_count[3].q); -- Сигнал H2
------------------------------------------------------------------------------------
-- Строчная развертка
------------------------------------------------------------------------------------
HSync_count[].clk = VCLK; -- Сигналы строчной развертки H3, H4, H5, H6, H7, BC
HSync_count[].d = HSync_count[].q+1;
HSync_count[].clrn = !HReset;
HReset = HSync_count[3].q & HSync_count[4].q & HSync_count[5].q; -- сигнал RH = H6 & H7 & BC
HBorder = HSync_count[5].q; -- сигнал BC
HBlank = !(HSync_count[5].q & !HSync_count[4].q & HSync_count[3].q); --сигналы SG/ = !(BC & !H7 & H6)
HSync = HBlank # HSync_count[2].q; -- сигналы SS/ = SG/ # H5
------------------------------------------------------------------------------------
-- Кадровая развертка
------------------------------------------------------------------------------------
VSync_count[].clk = !HBorder; -- Сигналы кадровой развертки V0...V7
VSync_count[].d = VSync_count[].q+1;
VSync_count[].clrn = !VReset;
VReset = VSync_count[9].q & !VSync_count[8].q & !VSync_count[7].q & VSync_count[6].q & VSync_count[5].q & VSync_count[4].q;
VBorder = VSync_count[9].q # (VSync_count[8].q & VSync_count[7].q); -- сигнал BK = V8 # (V7 & V6)
VSync = VSync_count[9].q # !VSync_count[8].q # !VSync_count[7].q # !VSync_count[6].q # !VSync_count[5].q; -- сигнал KS/ = !V8 # !(V7 & V6 & V5 & V4)
-- VReset = VSync_count[8].q & VSync_count[5].q & VSync_count[4].q & VSync_count[3].q; -- сигнал RV = V8 & V5 & V4 & V3
-- VBorder = VSync_count[8].q # (VSync_count[7].q & VSync_count[6].q); -- сигнал BK = V8 # (V7 & V6)
-- VSync = VSync_count[8].q # !VSync_count[7].q # !VSync_count[6].q # !VSync_count[5].q # !VSync_count[4].q; -- сигнал KS/ = !V8 # !(V7 & V6 & V5 & V4)
------------------------------------------------------------------------------------
-- Счетчики мерцания
------------------------------------------------------------------------------------
Flash_count[].clk = !VSync; --Сигналы счетчиков мерцания BK/, FLASH
Flash_count[].d = Flash_count[].q+1;
------------------------------------------------------------------------------------
-- Строб бордера
------------------------------------------------------------------------------------
Border_sync.d = !(VBorder # HBorder);
Border_sync.clk = HSync_count[0].q; -- сигнал H3
------------------------------------------------------------------------------------
-- Сигнал прерывания
-- Примечание: прерывание генерится с частотой 50Гц
------------------------------------------------------------------------------------
Int_sync.d = GND;
-- Int_sync.clk = VSync_count[8].q; -- прерывание на 256 импульсе --VSync; -- сигнал KS/
Int_sync.clk = VSync_count[9].q; -- прерывание на 256 импульсе --VSync; -- сигнал KS/
Int_sync.prn = 2mux1(!HSync_count[3].q, !HSync_count[2].q, Turbo_en); --сигналы H6 и H5
------------------------------------------------------------------------------------
-- Сигнал прерывания
------------------------------------------------------------------------------------
C_INT = Int_sync.q;
------------------------------------------------------------------------------------
-- Сигнал кадровой разверки
------------------------------------------------------------------------------------
VS = VSync;
------------------------------------------------------------------------------------
-- Сигнал строчной развертки
------------------------------------------------------------------------------------
HS = HSync;