Недавно приносили скорпион у него похожее было из за лп5
Вид для печати
не то, что б стабилизатор, но..
When VCCIO is 5.0 V, setting the output drain option is not necessary
because the pull-up transistor will already turn off when the pin
exceeds approximately 3.8 V, allowing the external pull-up resistor to
pull the output high enough to meet 5.0-V CMOS input voltages
А не надо все 30 в одну картинку впихивать)
Несколько осциллограмм, типа we+d, we+a, oe+d,...
ЗЫ. Разбирал недавно свою похожую макетку - так обратил внимание на то, что f14 я подавал на нее тонким коаксиальчиком. Наверное не просто так..
я тоже немного читал тему и видел что у людей были вопросы как "правильно" заводить на плату 14МГц . У меня выходит с главной CPLD после деления 28 на 2 и в экоанированном кабеле с остальными rgb сигналами приходит на плату VGA. Я проверял форму - ничего плохого не обнаружил. близкие к прямоугольнику 14МГц.
поставил я K6T1008CE2-BB55 и результат .... тот-же((((чтобы отвязаться от памяти....
лучей как раз 4 и еще лог.анализатор на 16 каналов - к сожалению , только на работе .
Я уже многократно убеждался в отсутствии "контактов где они нужны" и КЗ между ножками CPLD.
Все идет к тому, что напишу простой скрипт для "JTAG Live Studio" на Python , который проверит эту связку "CPLD+RAM" .... я им уже баловался - моргал светодиодами на другой платке с Xilinx....
Есть у меня сомнения по поводу того, что Quatrus "оптимизирует" что-то и выкидывает нужное из кода.
Я настройки не менял особо там - только неиспользуемые пины в 3ее состояние перевел и на TTL уровни.
Я не автор и не могу судить как этот проект работает в реале в CPLD. По-этому и надоедаю автору и "со-авторам" с вопросами системного характреа. А по электронике я сам разберусь (с КЗ и обрывами и конфликтами на шинах - уже много десятков лет этим занимаюсь)) ).
Я очень ценю помощь отвечающих в этом топике!!! Это помогает найти ИСТИНУ))
(безотносительно обсуждаемого железа - не лучшее решение для неиспользуемых пинов.)
ну а исходник на что, его надо вдумчиво курить)
да и функционал скандаблера не бог весть какой сложный: в пределах одной входной видеостроки на одну запись в память приходится два чтения, на один входной строчный синхроимпульс генерится два выходных - вот эту картинку и стоит для начала снять анализатором (необязательно при этом заводить все адреса, достаточно нескольких младших разрядов для оценки правильности работы счетчиков)
- - - Добавлено - - -
да и схему с макетки срисовать не лишним будет (само-реверс-инжиниринг, как метод отладки. иногда приводит к неожиданным результатам))
так это же Ваши исходники я использую из этой темы)))
- - - Добавлено - - -
вот оба , Вами выложенные в теме ...
Вложение 79066Вложение 79067
- - - Добавлено - - -
схемы НЕТ как таковой)) две макетки - на них 2 чипа соединные проводами)))
Это не про код базового модуля, а как раз про побочные штуки внутри проекта, меня интересовал .qsf и финальный .pin - дело ж в каких-то мелочах..
qsf вроде без вопросов, да и в коде, по сути, нету изменений кроме ряды константных выходов, хотя для макета я бы не тянул отдельные провода к A17, A18 и CS, а занулил бы - это припаять проще, чем к ПЛИСке )
Память в DIP32, то есть на в reverse-корпусе, тут тоже не ошибиться. На 22й ноге всегда 0 ?
Вот схема этих проводов и интересует, ошибку ж ищем)Цитата:
схемы НЕТ как таковой)) две макетки - на них 2 чипа соединные проводами)))
Я тоже сталкивался с тем, что доказявая по своему клубку проводов себе (и не только себе), что все правильно, вдруг обнаруживается какой-нибудь нежданчик.
я же многократно говорил, что в программе ТорJtag ВСЕ ЛИНИИ С CPLD дрыгал и смотрел на ОЗУ!!! на соотвествующем пине....на CS всегда "0"))) Я подключал все пины от ОЗУ к CPLD как для этого случая - программно полностью управлять ОЗУ из строннего софта по JTAG Boundary-Scan technology. Надежно и удобно. А еще можно прошивать таким образом ПЗУ ВНУТРИ СХЕМЫ ( что я и делал с основной ПЗУ - правда не быстро - 2часа для 512к)
Ничего не остается как снова пройтись в режиме JTAG с тестером ну или на работе распаяю пины с шины данных и управления ОЗУ(для логического анализатора) или скриптом на Pythone все-таки напишу тест для ОЗУ.
Не совсем понял , что Вы имели ввиду но память находиться ПОД CPLD - место надо экономить на макетке и линии короче будут))) По-идее на макетке весь Синклер можно засунуть под CPLD на переходной плате - у меня под основной CPLD 2 ОЗУ корпуса расположены очень удобно))) Правда много макроячеек съедает ручное назанчение пинов на CPLD (((( Я изза этого не смог Карабас нано весь впихнуть в 216 макроячеек (на авторасстановке все влазит)
реальнополезная для понимания физики процесса трассировки!
Я старался разместить шину данных в одном блоке и шину адресса тоже - не помогло - разница при авторассировке и ручной значительная
Ну чтобы это узнать - надо новую платку спаять - у меня есть такая задумка на PLCC корпусе сделать - но нет особой надобности. Думал к Балтику прикрутить но там тактовая 16МГц - перелапачивать код ради Балтика не хочу)
- - - Добавлено - - -
полезное замечание (я вроде даже где-то такое читал но забыл)))
ОЗУ в ДИП32. Но Вы правы, и у меня есть гигантский SOIC на 32 с этой памятью - на переходную плату - были идеи ее поставить, потому что корпус DIP32 на 1 мм не влазил под CPLD - пришлось напильником торец подточить)))
Оххх - как это все затянулось ))) Но пока это все глючит - рядом на плате уже установлен корпус Cyclone® 10 LP 10CL025YE144C8G. Ипамять есть 3вольтовая на 8МБАЙТ для него. Туда все влезет )))) сразу - шутка ...Смогу нормально тренироваться (на кошках - часики делать для начала ) и отлаживать без лимита в стираниях - осталось найти ПОЛНЫЙ datasheet -Intel засекретил этот чип для ардуринщиков))) На сайте и везде лежать какие-то буклеты
Попробуйте ещё урезать, до просто скандаблера
не совсем понятно что выкинуть из кода?
Кстати попробовал поставить на все линии входных сигналов экранированный кабель - делал когда-то для высокоскоростного SPI . Результат тот-же.Прозвонил все 32 ноги от пинов ОЗУ К ПИНАМ CPLD - ошибок нет ( да и прлверял уже много раз )
- - - Добавлено - - -
Напоминаю что тест идет исключительного качества. Т.е. CPLD и схема выхода в порядке. щВ рабочем режиме есть проблемы с двоением букв и синхронизациями.
- - - Добавлено - - -
У меня на главный глобальный тактовый вход подаеться внешние 14МГц а на второй подаеться после 2 инверторов на 74НС04. Я убирал это сигнал для проверки( в панельке ) - никакого эффекта
backa, а вот, кстати, попутный вопрос: входные ноги перемычек в макете куда-то подтянуты ? Исходно к единице.
Вот эти:
У 7128 встроенные подтяжки на входах не включить (их не было в тем поколениях), а висящие входы вроде бы нулевыми читаются.Код:input SET_FK_OUT,
input INVERSE_KSI,
input INVERSE_SSI,
Последние два либо в коде надо заединичить, либо ноги резисторами подтянуть.
А SET_FK_OUT определяет выходную кадровую 60гц (при 1) или 50гц (при 0), тут не так критично.
так и сделано - стоят джамперы и ноги через резисторы к питанию подтянуты - я распаял все 7 на всякий случай
У меня по железу НЕТ ИДЕЙ больше((( я все уже перпроверил 100500 раз - мистика какая-то...
Осталось в схеме скриптом ОЗУ проверить и больше идей нету - но скриптом надо в выходные заниматься - там надо немного повникать - давно делал
Если я правильно понимаю, с моим Балтиком с его кварцем на 16МГц этот VGA мегадевайс не заработает (чисто для проверки - мало ли что)) ) без кординального перелопачивания кода для подгона таймингов ?
а вот с этим как очень просто - таких пеерходных платок с одинаковым CPLD у меня несколько))) это все стоит в панельке - один раз ответкой подковырнуть и готово - во второй записан тест.
Сделано! Тот-же результат - отрицательный((
- - - Добавлено - - -
на макетке с проводами он мне не нужен вообще в будущем - я планировал развести плату и по результатам макетирования и уже там все бы стояло - теперь вижу есть подводные камни ... надо код VHDL править под карабас нано и решать с VGA. Не хочу потом проводов и резанных дорожек на плате)))
Жесть. Просто лютая, бешеная жесть. Отладить это невозможно, поскольку это куча асинхронной логики, связанная крест-накрест. Естественно, оно глючит.
Особенно меня поразило вот что:
Во ЧТО, в какое физическое железо должен компилятор это превратить? В микросхеме ничего даже близко похожего нету.Код:always @(F14) begin
VGA_H_MAX <= VIDEO_H_MAX[9:1];
end
Решение: всё переписать начисто на полностью синхронную логику. always (@posedge/negedge F14 ...
Никаких других always-блоков быть не должно. Вообще. Ни одного.
первое что я хотел-бы сказать, что и на Verilog и оригинальный на VHDL коды глючат одинаково. Я остался с версией на VHDL - я как-то уже привык глазом к этому языку описания , хоть он и смотрится не так лаконично)))
второе - я еще очень далек от того момента когда я сам смогу такое написать - на Си или любом ассемблере под любой микроконтроллер - намного проще чем ПОКА этот описательный язык
backa, прочитал я этот весь тред, и так до конца не понял, в чем у вас такие сложности? как я понял, у вас комп с прошивкой карабас-нано, также понятно, что вы используете прошивку, переписанную на verilog и тут вопрос - почему вы не хотите использовать оригинальные проверенные прошивки на vhdl? ту же 2.0.9?
также, есть на гите @andykarpov прошивка для карабаса с программными перемычками, которая работает и с карабасом-нано - https://github.com/andykarpov/karabas-scandoubler
для чего такие сложности?
- - - Добавлено - - -
у вас Балтик на 16мгц? дайте ссылку на схему...
- - - Добавлено - - -
посмотрел схему у себя, скачанную отсюда, да, похоже в схеме ошибка. кварц на 16мгц. это не проблема, вы всегда можете для проверки взять сигнал частоты CLK с 14 ноги D20. и использовать прошивку 2.0.9 в которой есть поддержка 8мгц.
я не могу ТЕПЕРЬ использовать спаянную макетку для версий выше 1.х , потому что у меня распаяна 8битная ОЗУ. нарастить второй корпус в ДИП32 не реально - нет места на платке. Паять заново все - ну разве что для Балтика ))) коль к нему можно все-таки подключиться с его нестандартным кварцем. Снасибо за инфу по Балтику
Я изначально брал версию Карпова для карабаса за основу но не посмотрел в коде , что у него 16тиная ОЗУ используется . Пришлось использовать версию 1.х
Во, кто-то заглянул в код )
Сие осталось от бездумного переписывания, а затем выстригания вот этого фрагмента
Скрытый текст
Код:--------------------------------------------------------------------------------
-- УПРАВЛЕНИЕ СЧЕТЧИКАМИ ТОЧЕК В СТРОКАХ 100216 --
--------------------------------------------------------------------------------
process (F14, SSI, SSI_2)
begin
if (falling_edge(SSI)) then -- если спад строчного синхроимпульса,
if RESET_ZONE = '0' then -- если зона для сброса счетчиков
-- запоминаем состояние вспомогательного счетчика тактов в строке
VIDEO_H_MAX <= H_COUNT;
-- VGA_H_MAX <= (VIDEO_H(9 downto 1) );
end if;
end if;
--------------------------------------------------------------------------------
VGA_H_MAX <= (VIDEO_H_MAX(9 downto 1) ); -- максимальное знач. счетчика VGA
--------------------------------------------------------------------------------
if (falling_edge(F14)) then -- по спаду тактового импульса:
--------------------------------------------------------------------------------
if (RESET_H = '0') then -- если спад входного синхросигнала,
H_COUNT <= (others => '0'); -- обнуляем вспомогательный счетчик тактов
else
H_COUNT <= H_COUNT + 1; -- иначе - увеличиваем его
end if;
--------------------------------------------------------------------------------
-- если начало строчного СИ и строка в средней части экрана по-вертикали:
-- синхронизируем счетчики тактов с входными синхроимпульсами
if (RESET_H or RESET_ZONE) = '0' then
VGA_H <= (others => '0'); -- обнуляем счетчик тактов VGA
VIDEO_H <= (others => '0'); -- обнуляем счетчик тактов VIDEO
else
if (VGA_H = VGA_H_MAX) then -- если последняя точка в строке VGA,
VGA_H <= (others => '0'); -- обнуляем счетчик VGA
else
VGA_H <= VGA_H + 1; -- иначе - увеличиваем счетчик точек VGA
end if;
if (VIDEO_H = VIDEO_H_MAX) then -- если конец строки VIDEO,
VIDEO_H <= (others => '0'); -- обнуляем счетчик VIDEO
else
VIDEO_H <= VIDEO_H + 1; -- увеличиваем счетчик точек VIDEO,
end if;
end if;
end if;
end process;
[свернуть]
Компилятор это мужественно выдерживал и превращал действительно в ничто.
Но правда чушь. Выкидываем в мусорку.
это выше моих сил))) да и существующая "конструкция" не даст проделать сей финт - ОЗУ в панельке глухой а с обратно стороны уже распайны провода поперек "подбрюшья" - уж точно проще новое спаять чем в этом "экземпляре" менять ))))
- - - Добавлено - - -
выложите весь проект с корректировкой - в будущем может быть как отправная точка в освоении Verilog-a