Последняя редакция схем/плат версии 2.0 - NS_V2_0_rev3_7
Прошивка для 2.0 - NS_V2_0_rev1_7E_Firmware Вкл./Отк. каналов А/В происходит по нажатию соотв. кнопок когда ни одно меню не выбрано, при выборе меню Sync эти кнопки перекл. источник синхронизации.
Для конфигурации DS1085 прошить соответствующей прошивкой МК, передернуть питание, подождать некоторое время пока на экране ЖК не выведется надпись об успешном завершении и выключить осцилл. Адрес DS1085 устанавливается равным 0x59 (89 по десятичной системе).
Данная прошивка просто делает автоматом то что можно сделать вручную из программы на ПК и если настраивать вручную из программы то она не нужна.
Внимание! При конфигурации к I2C не должно быть подключено ничего кроме DS1085.
Схема ревизия 3.2 - NS_3.0_rev_3.2.pdf Схема соединения ЖК с 16-ти битной шиной(только для ревизий ниже 3.2, в 3.2 HC573 уже есть на основной плате) - NS_3.0_HC573.pdf BOM(список компонентов) - BOM_NS3_rev3_2.htm
//---------------------------------------------------------------------------------------------------------- Прошивальщик МК (автор Ильдар) - NSFlashLoader2. Утилита для перепрошивки СР2102 VID/PID под NeilScope3 (автор Ильдар) - NSCP2102Utilite2.rar. Использование данных VID/PID для перепрошивки СР2102 под другие устройства категорически запрещено, они были получены по запросу у Silicon Laboratories Inc. и предназначены для использования только с NeilScope3 или другими версиями NeilScope.
Утилита для теста осциллографа - ns_test_util. Для запуска нужно скачать и установить Python 3.4 и PyQt5, при установке добавляем переменные окружения. Распаковать архив куда нибудь и набрать из этой папки в консоли - "python main.py"
Для последующих обновлений просто запускаем NSFlashLoader, и обновляемся. Джампер при этом трогать уже не нужно.
//---------------------------------------------------------------------------------------------------------- . . . Важные замечания по сборке
На плате не указана перемычка с 10-го вывода(INTRL) 74НС4052(U15) на вывод SWDIO МК, можно и просто подпаять пока на +3.3В в любое удобное переходное отверстие.
К чему Вы это сказали я не понял, и выводов, как мы сообща выяснили, у Вас больше
Неправда, выводов меньше, в моем варианте не нужен дополнительный вывод ля форсированного старта синхронизации если порог триггера был установлен неправильно во время работы с осциллографом.
Усовершенствовал синхронизацию по выходу/входу в "окно" и обычную по фронту/спаду, так как в исходном варианте(просто два компаратора и XOR которые предложил LazyCat) она неработоспособна по причине ложных срабатываний если во время "старта" сигнал уже находится в окне/вне окна или выше/ниже порога при обычной синхронизации.
Синхронизация по спаду, с выкл. предысторией, как видно никаких ложных срабатываний при старте, фиксируется только спад:
Синхронизация по спаду, с вкл. предысторией, красным обведена мин. необходимая предвыборка если бы момент синхронизации произошел там где черная линия:
Синхронизация по фронту, с выкл. предысторией, как видно в момент старта сигнал находится выше порога, но триггер не срабатывает(обведено красным), синхронизация происходит только по перепаду как и должна :
Синхронизация по фронту, с вкл. предысторией, момент синхронизации отличается от предыдущего на один период такта, это легко исправить, просто уже сегодня устал, завтра :
Синхронизация по входу в окно, с выкл. предысторией, опять задержка, но это исправлю:
Синхронизация по входу в окно, с вкл. предысторией:
Синхронизация по выходу из окна, с выкл. предысторией, красным обведено где могл быть ложное срабатывание при простом варианте с двумя компараторами и XOR:
Синхронизация по выходу из окна, с вкл. предысторией:
-------------------------------------------------------------------------------- Вот, исправил схему, теперь нет задержки в такт/два. В подтверждение осциллограмма с синхронизацией по выходу из окна с предысторией:
она неработоспособна по причине ложных срабатываний если во время "старта" сигнал уже находится в окне/вне окна или выше/ниже порога при обычной синхронизации.
Наконец-то Вы начали понимать, в чем были мои претензии !!! А в моем варианте это учтено ИЗНАЧАЛЬНО и там все четко(почитайте всетаки о D-триггерах) !!! И вот теперь сравните свой вариант с моим или хотя бы с вариантом MisterDi И это при том, что ОСНОВНОЙ недостаток Вы не устранили
P.S. Я очень настаиваю, чтобы Вы почитали о D-триггерах, пока не зашли слишком далеко !!! Или, если Вы не верите мне, возьмите проверенный вариант от MisterDi. Или, если хотите, могу переделать свой вариант под Ваш способ запуска.
Сообщение отредактировал LazyCat - Понедельник, 11.07.2011, 23:47
Мда, это Вас не украшает, а сложнее это всего на 3-4 макроячейки больше ресурсов чем Ваш вариант.
Я прекрасно представляю себе как работает D-триггер, и пусть уж лучше будет "ха-ха-ха", чем потом чесать репу и думать отчего сбои? То ли D-триггер переходит в метастабильное состояние(пойдите почитайте про это, или Вы думаете что такая ситуация совсем не возможна в Вашем варианте?), то ли проскакивают иголки на входе клока, а это очень может быть, я уже не первый день симулирую схемы в квартусе и если даже симулятор говорит что иголки могут быть и предупреждает о задержках клока/данных, то я считаю лучше перестраховаться лишними 3-4 макроячейками.
Я сомневаюсь что у Вас все работает так как надо, но проверять это уже не буду, отладив эту схему не хочется снова проводить полный цикл симуляций варианта который заведомо содержит сбойный узел. А также мне просто надоело по несколько раз просить Вас указать на то что по вашему мнению ошибочно, а не голословно заявлять о полной неработоспособности и главных недостатках и слышать в ответ только о правильности вашей схемы и неправильности моего варианта. Вы так и не захотели объяснить зачем Ваш вариант работает так а не иначе, зато без аргументов заявляли о ошибках. Это чёрте что а не работа над проектом
Думаю кому надо тот увидит всё на осциллограммах, и что данные правильно захватываются во всех режимах. ---
Неправда, симулятор такого не говорил, Вы сами приводили message.
Quote (LeftRadio)
я считаю лучше перестраховаться лишними 3-4 макроячейками.
Да на здоровье, лишь бы они приводили к работоспособности !
Quote (LeftRadio)
или Вы думаете что такая ситуация совсем не возможна в Вашем варианте?
Да, невозможна в моем варианте ! Но если Вас это все же напрягает, то могу заменить этот элемент на решение от MisterDi, ничего больше не меняя, и получить опять работоспособный вариант всеравно проще Вашего нерабочего
P.S. В предыдущем посте я предложил кучу решений, но не понимаю Вашего упрямства в простых вещах
Неправда, симулятор такого не говорил, Вы сами приводили message.
Осциллограммы говорят об иголках от симуляции к симуляции!!!! Если не верите то скачайте quartus и симулирурте. А message говорит о другом - задержки данных на входе триггера относительно входа клока. И зачем переделывать под мой способ запуска, у меня же хуже, один сигнал с постоянными лог. уровнями для запуска/останова, вместо двух как у Вас, один из которых короткий ноль а не постоянный лог. уровень.
Все таки решил просимулировать Вашу схему, сама симулированная схема, Осциллограммы, хотим синхронизироваться по фронту, порог равен 8, с предысторией и без:
Ну может и неважно, но Ваш предыдущий вариант полностью правильный а мой ПОЛНОСТЬЮ неработоспособен, а новый выложенный Вами вариант еще меньше выигрывает по ресурсам моему, а может уже и проигрывает. ---
Нет войне!
Сообщение отредактировал LeftRadio - Вторник, 12.07.2011, 02:37
новый выложенный Вами вариант еще меньше выигрывает по ресурсам моему, а может уже и проигрывает.
Нельзя сравнивать РАБОТАЮЩИЙ и НЕРАБОТАЮЩИЙ варианты. Доведите свой до ума и тогда посмотрим. Да и добавил то я всего один регистр. Нехорошо так говорить !!!
P.S. А вообще прикольно Вы симулируете. Очень смахивает на умышленную подтасовку Вы прекрасно знаете, что сигнал Start нужно подавать в момент когда устройство сброшено (WR_READY равен 0), но специально этого не делаете. У меня, например, возникают смутные предположения
Доброе утро! Я тут смотрю у вас тут спор не шуточный. Уважаемый LazyCat, если Вам не трудно, пожалуйста скачайте и установите себе Quartus. Тогда Вы сможете свои предложения сразу предварительно проверить на работоспособность. Когда у Вас будет результат симуляции, половина спорных вопросов сразу уйдет. И Владу проще станет.
Сообщение отредактировал Муха - Вторник, 12.07.2011, 05:53
Уважаемый LazyCat, если Вам не трудно, пожалуйста скачайте и установите себе Quartus.
К сожалению, я не имею возможности скачать себе квартус. И мы с Владом договорились, что симулировать будет он и выяснять нюансы в ПЛИСе по моей просьбе. Но не фальсифицировать !!! На деле оказалось не так и выхода из сложившейся ситуации я пока не вижу А свои предложения на работоспособность я проверяю другими методами, прежде чем сюда выкладывать !!!
Нельзя сравнивать РАБОТАЮЩИЙ и НЕРАБОТАЮЩИЙ варианты.
Вы издеваетесь , пока я не увидел полностью работоспособных вариантов от Вас(последний не проверял, да и в свете сказанного Вами ниже не буду), зато я показал на основе осциллограмм что мой вариант работает и работает правильно.
Quote (LazyCat)
А вообще прикольно Вы симулируете. Очень смахивает на умышленную подтасовку
Мда, я все понял.
Quote (LazyCat)
Вы прекрасно знаете, что сигнал Start нужно подавать в момент когда устройство сброшено (WR_READY равен 0), но специально этого не делаете. У меня, например, возникают смутные предположения :(
Ну и ну, я вообще без понятия когда нужно подавать сигнал старта и МК тоже! А вдруг при включении осцилла какие либо сигналы будут не в тех состояниях что нужно для нормальной работы??? В моем варианте абсолютно пофиг когда его подавать синхронизация отработает правильно и абсолютно пофиг какие сигналы будут 1, какие 0, все равно после установки сигнала Start_RW(по моей схеме) все сбросится на нужные значения.
По поводу смутных предположений. Объясняю не для Вас, смотрим схему LazyCat - http://hobby-research.at.ua/NS3/2.pdf , сигнал WR_READY является выходом, то есть устанавливать вручную его состояние я не могу, дальше, если мы посмотрим внимательно на схему LazyCat то увидим что в исходном состоянии(оно же состояние после прошлого запуска) на один вход элемента ИЛИ(inst17) который формирует сигнал WR_READY приходит 1 с выхода регистра lpm_dff2(inst2), этого уже достаточно что бы на выходе была 1, но на другой вход ИЛИ тоже приходит 1 так как в начальном состоянии сигнал Start1 = 0, то выход триггера inst6 тоже равен 1. Спрашивается каким образом можно дождаться когда сигнал WR_READY будет в 0??? Если его установка в ноль возможна только после запуска синхронизации!
Quote (LazyCat)
Но не фальсифицировать !!!
Я все понял, думать не хотим зато смутные предположения и обвинения хотим. Это смешно.
Quote (Муха)
И Владу проще станет. drink
Спасибо, но мне не нужно проще, мне главное что бы работало правильно и гарантированно без глюков, сколько не симулировал свою схему все отрабатывает как надо и без ошибок, и даже в случае сбоя, например питание ПЛИС просело, все можно легко вернуть в исходное состояние и продолжить работу. LazyCat же упорно не хочет объяснить какие по его мнению есть "ошибки" в моей схеме, зато начинает обвинять в фальсификациях меня из-за того что его вариант бредовый и его нужно дорабатывать до хоть какой нормальной работоспособности. Что я в принципе и сделал, просто доработал его вариант и все.... И припоминается его упорство получить глюки с захватом из-за экономии 16макроячеек и с как он это отстаивал, и что в его варианте при вычислениях макс./мин. не теряются отсчеты, а на деле оказалось что теряются и причем при любых коэффициентах прореживания, а у меня только при нечетных, зато всегда его варианты проще, лучше, красивей и работают правильнее всего того что могу я изобразить по своей глупости ---
пока я не увидел полностью работоспособных вариантов от Вас
Оба варианта работают правильно, ведь это один и тот вариант
Quote (LeftRadio)
зато я показал на основе осциллограмм что мой вариант работает и работает правильно.
Правильной работы в осциллограммах я не увидел, не в обиду будет сказано ! Если Вас это устраивает, то можно на этом остановиться !
Quote (LeftRadio)
Ну и ну, я вообще без понятия когда нужно подавать сигнал старта и МК тоже! А вдруг при включении осцилла какие либо сигналы будут не в тех состояниях что нужно для нормальной работы???
А Вы внимательно посмотрите на свою программу. После сброса происходит init hardware и даже Start_RW Вы собираетесь устанавливать в своей схеме. А почему Вы считаете, что Stop не надо устанавливать в моей ? Вам даже стыдно на это ответить, ну да Бог Вам судья !!!
ОПЯТЬ подтасовка - ЭТО не моя схема и Вы умышленно ее кастрировали !!!
Quote (LeftRadio)
LazyCat же упорно не хочет объяснить какие по его мнению есть "ошибки" в моей схеме
Последнее время только этим и занимаюсь, но что-то не находим взаимопонимания
Quote (LeftRadio)
зато начинает обвинять в фальсификациях меня
Ну Вы зачем-то последнее время это делаете! ЗАЧЕМ ???
P.S. Про отсчеты мы же не закончили, Вы сами переключились на триггер, хотя прекрасно видели, что у нас даже сигналы EN и EN1 разные, но дальше дорабатывать почему-то отказались !!! Излишний гонор очень мешает продуктивной работе. А по поводу стремления экономить, нам еще делать логический анализатор (Вы САМИ на нем настояли) и там схема еще сложнее и ресурсы ой как понадобятся. Но что-то энтузиазм у меня начинает иссякать
Для невнимательных, это единственный сигнал инициализирующий запись/чтение в осцилле.
Quote
Quote (LazyCat)
ОПЯТЬ подтасовка - ЭТО не моя схема и Вы умышленно ее кастрировали !!!
Quote (LazyCat)
Quote (LeftRadio) узел с элементом AND2 и сигналом stop неправильный и постоянно блокирует триггер.
И это правильно, но уже неважно :)
Это схема с вырезанным узлом AND2, но в предыдущих постах схема и осциллограммы с ним, и сигнал stop ни на что не влияет.
Quote (LazyCat)
Последнее время только этим и занимаюсь, но что-то не находим взаимопонимания
В последнее время Вы только тем и занимаетесь, что говорите о неработоспособности моего варианта без каких либо аргументов, типа неправильно и все. Ваш вариант единственно правильный, а я изобретаю велосипед. Как тут найти взаимопонимание бог его знает.... А по существу ответить на:
Quote (LeftRadio)
сигнал WR_READY является выходом, то есть устанавливать вручную его состояние я не могу...
Вам нечего вот и начинается черти что, фальсификат и т.д..
Quote (LazyCat)
Ну Вы зачем-то последнее время это делаете! ЗАЧЕМ ???
Спор прекращаю, это явно неадекватное поведение, уж извините. Каждый кто хочет может просимулировать Ваш вариант и увидеть что я ничего не фальсифицировал.
Ваши обвинения оскорбительны, как и Ваги утверждения что я это делаю специально! Да мне начхать Ваш вариант или мой, главное что бы работал нормально!!!
И напоследок всем кому интересно, "не урезанная" схема LazyCat и ее осциллограммы, со всеми вариантами сигналов start/stop, на сигнал WR_READY я влиять не могу это черт побери ВЫХОД:
И если без предыстории это еще работает, то с предысторией нет, а заявлялось что это "ПОЛНОСТЬЮ" работоспособный вариант и нехер его сравнивать с неработоспособным гавном LeftRadio занимающем пусть даже на 5 макроячеек больше.
Для невнимательных, это единственный сигнал инициализирующий запись/чтение в осцилле.
Для особо внимательных повторю, что сигнал Start_RW инициализируется в процедуре init hardware при сбросе МК и именно там же я инициализирую сигнал Stop, чтобы сбросить в 0 сигнал WR_READY. В самом начале диспута Вы это понимали, а что случилось сейчас непонимаю
Quote (LeftRadio)
сигнал stop ни на что не влияет.
А у Вас сигнал Start_RW ни на что не влияет, чтобы Вам было понятнее
Теперь по поводу осциллограмм. Вот ТЕПЕРЬ они просимулированы корректно, но по какой то причине не показан сигнал на выходе, как я писал ранее, самого главного узла inst6. Был бы весьма признателен, если бы Вы его показали !!!
Quote (LeftRadio)
И если без предыстории это еще работает, то с предысторией нет
Спасибо, что уж как-то заработало
P.S. неработоспособным гавном я Ваш вариант не называл. Незачем преувеличивать, это недостойно в техническом диспуте !!! К тому же третий раз повторяю, если он Вас устраивает, то давайте на этом остановимся ! Мое мнение тут не столь важно !
P.P.S. Я кажется нашел причину взаимонепонимания ! Скорее всего триггер inst6 в ПЛИСе работает не совсем так как "железный" 74HC74 (имеется ввиду реакция на асинхронные входы и грамотная симуляция это бы показала). Если так, то нужно соединить выход элемента inst29 с третьим входом элемента inst17, и всего делов А можно и еще проще.
P.P.S. Я кажется нашел причину взаимонепонимания ! Скорее всего триггер inst6 в ПЛИСе работает не совсем так как "железный" 74HC74 (имеется ввиду реакция на асинхронные входы и грамотная симуляция это бы показала). Если так, то нужно соединить выход элемента inst29 с третьим входом элемента inst17, и всего делов А можно и еще проще.
Вот поэтому я и говорю, если бы у Вас стоял квартус, недопониманий бы было гораздо меньше. И есть еще один момент, это оптимизатор квартуса, он может так заоптимимзировать, что результат может отличаться от ожидаемого. Поэтому принимать решение о каждом изменении схемы, только после симуляции...
Вот поэтому я и говорю, если бы у Вас стоял квартус, недопониманий бы было гораздо меньше.
На это я уже отвечал, могу только повторить, что автор сам вызвался помочь с симуляцией моих предложений, но что из этого вышло Вы видите Мой вариант уже смакетирован в реальном "железе" и прекрасно работает, именно поэтому я настоятельно рекомендовал автору ознакомиться с теорией работы D-триггеров ! Если бы он это сделал, то первым сказал бы, что реализация D-триггера в ПЛИСе отличается от классической, и недоразумений бы не было ! Да и свой вариант он бы сделал правильно Но, значит, весь этот флуд на полторы страницы зачем-то был нужен ?
Сообщение отредактировал LazyCat - Среда, 13.07.2011, 10:28
что сигнал Start_RW инициализируется в процедуре init hardware при сбросе МК
Конечно инициализируется, как и любой другой сигнал с МК, в МК , но потом это единственный сигнал переключающий осцилл из режима чтение в режим записи и обратно. А по поводу сигнала Stop я понятие не имел что его нужно устанавливать при старте, мне это никто не объяснял, пояснения были только в этом посте(причем сам описанный там алгоритм не гарантирует нам получении предыстории во всех вариантах), но про сигнал Stop там ни слова, я же напротив попытался наиболее подробно описать работу моего варианта, что бы Вам или кому другому было проще разобраться. Я был и сейчас против Вашего варианта не только из-за его некорректной работы и требования доп. алгоритмических действий МК по разным сигналам(сигнал Start при иниц. = 1 и иниц. Stop, кстати это два сигнала вместо одного у меня), а еще и по причинах описанных мною страницей назад.
Quote (LazyCat)
и именно там же я инициализирую сигнал Stop
А как же если порог триггера установили неправильно? У меня даже такой проблемы не возникает - передергивать Stop, так как его нет.
Quote (LazyCat)
что реализация D-триггера в ПЛИСе отличается от классической
Кстати выход inst6 элементарно определяется по сигналам COUT_CNT2 и CNT_EN, так что не надо говорить что выход самого важного элемента нельзя отследить.
На COUT_CNT1 не обращайте внимания, это просто в vectorFile он не очистился, но как видно он полностью соответствует COUT_CNT2. На всякий скажу что симуляция полностью соответствует схеме ничего не фальсифицирую, просто не имею такой привычки...
Кстати вот сколько занимает ресурсов проект с моей версией синхронизации и добавил еще обработку кнопок: Так что ресурсов должно хватиь для лог. анализатора, хотя я не уверен теперь нужен ли он, кто как считает? Свободно еще 260 макроячеек.
потом это единственный сигнал переключающий осцилл из режима чтение в режим записи и обратно
Сколько можно об одном и том же ? Ведь уже говорилось, что переключать обратно в моем случае не нужно !
Quote (LeftRadio)
А по поводу сигнала Stop я понятие не имел что его нужно устанавливать при старте, мне это никто не объяснял
Я и понятия не имел, что при Вашей-то квалификации нужно объяснять подобные вещи
Quote (LeftRadio)
и сейчас против Вашего варианта не только из-за его некорректной работы и требования доп. алгоритмических действий МК по разным сигналам
Ну работа то оказывается абсолютно корректной Алгоритмических действий не больше чем у Вас !!! А разные сигналы я предлагал привести к удобной для Вас форме, но Вы отказались, поэтому это нельзя считать недостатком !!!
Quote (LeftRadio)
А как же если порог триггера установили неправильно? У меня даже такой проблемы не возникает - передергивать Stop, так как его нет.
О этом тоже уже говорили и Вы согласились, что алгоритм полностью идентичный ! А что теперь вдруг случилось ?
Quote (LeftRadio)
Об этом еще kison говорил.
Я этого не припомню да и Вы не напомнили И, кстати, на осциллограммах, что Вы теперь привели D-триггер стал работать правильно, как 74HC74 !!! Почему это произошло ?
Quote (LeftRadio)
Кстати выход inst6 элементарно определяется по сигналам COUT_CNT2 и CNT_EN, так что не надо говорить что выход самого важного элемента нельзя отследить.
Именно об этом я и говорил, нужного нет а COUT_CNT1 и COUT_CNT2 выведены аж дважды При симуляции своего варианта Вы таких ляпов не допускали, что очень характеризует Ваше отношение к собеседнику.
P.S. Кстати, совершенно не понял, что за схему Вы симулировали ? Где Вы это взяли ? Или это доработки ? Вы лучше уж уберите тот лишний инвертор, что Вы поставили.
Сообщение отредактировал LazyCat - Среда, 13.07.2011, 20:42
Ведь уже говорилось, что переключать обратно в моем случае не нужно !
Не хочу продолжать спорить, просто замечю что МК в любом варианте должен "узнать" что запись окончена и ето есть и у Вас и у меня, какая разница автоматически ПЛИС переключится на чтение после обнаружения окончания записи или по опусканию сигнала Start_WR? Тем более что в моем случае есть преимущество в одном состоянии сигнал Start_WR сбрасывает/инициализирует значениями одни блоки, в другом другие, что возможно позволит обойтись без специального сигнала сброса при включении питания ПЛИС.
Quote (LazyCat)
О этом тоже уже говорили и Вы согласились, что алгоритм полностью идентичный !
Нет не идентичный, в Вашем случае МК после обнаружении отсутствия сигнала окончания записи по таймауту передергивает stop(принудительно запустит развертку) и ждет пока память запишется, затем читает. В моем по таймауту сразу может читать так как память пишется и без сигнала синхронизации. Вроде бы и не такая проблема, но представим что развертка медленная может даже очень тогда у Вас придется после таймаута еще ждать и может достаточно долго пока заполнится память на заданное окно. Это будет создавать впечатление зависания, у меня задержка вывода будет меньше.
Quote (LazyCat)
Почему это произошло ?
Сфальсифицировал , а вообще как есть так и симулирую, может компилер чудит к Altere вопросы.
Quote (LazyCat)
P.S. Кстати, совершенно не понял, что за схему Вы симулировали ? Где Вы это взяли ?
Да действительно моя ошибка, спешил и не увидел что в новой схеме Вы у себя убрали этот инвертор, пересимулирую и исправлю тот пост новыми осциллограммами. ---
В моем по таймауту сразу может читать так как память пишется и без сигнала синхронизации.
Кстати, Вы, наверное, не совсем понимаете причину такого решения. Оно гарантирует что даже если сигнал stop будет подан раньше заполнения окна, окно заполнится полностью. В Вашем же случае, если сигнал start_RW снять раньше, окно останется незаполненным и на экране будет бред ! Но если TIMEOUT вычисляется правильно, эта перестраховка не нужна и схему можно еще упростить и сделать принудительный стоп, ведь и в моем варианте память тоже пишется постоянно !
Quote (LeftRadio)
может компилер чудит
Как то избирательно и стабильно чудит
Quote (LeftRadio)
пересимулирую и исправлю тот пост новыми осциллограммами.
Тогда уж лучше старый вариант(мне он больше нравится), если компилер чудить не будет И достаточно всего 2-х осциллограмм (с предысторией и без), чтобы не захламлять форум.
Сообщение отредактировал LazyCat - Среда, 13.07.2011, 23:08
В Вашем же случае, если сигнал start_RW снять раньше, окно останется незаполненным и на экране будет бред !
А зачем его снимать раньше? Если пришел сигнал завершения записи то он снимается МК автоматом и никакого бреда, если по таймауту то тоже бреда не будет.
Quote (LazyCat)
Как то избирательно и стабильно чудит
Я Вас понял.
Quote (LazyCat)
Тогда уж лучше старый вариант
Зачем? Ну раз Вы настаиваете, то пожалуйста, схема еще раз, и три осциллограммы:
Только потрудитесь найти отличия от тех первых осциллограмм что я выкладывал в том посте, а если же мне не верите и продолжаете утверждать что я фальсификатор, то разговаривать с Вами прекращаю, мне надоело выслушивать оскорбления всему есть предел.
---------------------------------------------------------------------------------------------- Кстати почему я говорил что у Вас алгоритм синхронизации не совсем правильный, дело в том что после записи предыстории мы должны сбросить все условия которые произошли в этот промежуток так как за время предыстории сигнал может несколько раз пересекать границу окна и то что флаг "были в окне" установлен не означает что мы сейчас синхронизируемся правильно, нам нужно заново словить все условия и только потом синхронизироваться, тогда ошибки исключены.
Объясню на примере нужно синхронизироваться по входу в окно, при старте сигнал в окне - условие сработало, но мы пока пишем предысторию, далее сигнал вышел из окна "снизу" например и опять зашел, мы же если только отслеживать пропущенное условие досчитаем счетчиком предвыборки и тут же, а не по входу в окно, словим выполнение условия так как сигнал у нас в окне.
А зачем его снимать раньше? Если пришел сигнал завершения записи то он снимается МК автоматом и никакого бреда, если по таймауту то тоже бреда не будет.
Если Вы не поняли суть описанной ситуации, зачем тогда комментировать ?
Quote (LeftRadio)
Только потрудитесь найти отличия от тех первых осциллограмм что я выкладывал в том посте
Вы сами прекрасно видели, что inst6_out опять перестал работать !!! И какой смысл было выкладывать ЭТИ осциллограммы и еще их комментировать ? Надо было просто попробовать вариант с переносом инвертора и сменой входов триггера, если Вам не трудно. Надо же узнать где глюк в квартусе !
Quote (LeftRadio)
Кстати почему я говорил что у Вас алгоритм синхронизации не совсем правильный, дело в том что после записи предыстории мы должны сбросить все условия которые произошли в этот промежуток так как за время предыстории сигнал может несколько раз пересекать границу окна и то что флаг "были в окне" установлен не означает что мы сейчас синхронизируемся правильно, нам нужно заново словить все условия и только потом синхронизироваться, тогда ошибки исключены.
Это основа любого триггера !!! И само собой разумеется, я учитывал это при разработке. Повторяю, в реальном железе все работает ! Я долго добивался, чтобы Вы осознали необходимость дифференциатора фронта(несколько раз просил посмотреть проект MisterDi или теорию D-триггеров, где это происходит автоматически). Вы очень долго не хотели этого понять В итоге перенесли триггер inst4 в правильное место, но добавили совершенно ненужный сигнал sync_OUT_IN_WIN Получили иллюзию правильной работы, но какой ценой(я не о лутах), хотя я постоянно предлагал Вам более элегантное решение(я не о своем варианте). А получилось, что я упертый баран ?
P.S. Кстати, на 3 поставленных вопроса можете не отвечать - я ответ знаю ! Выполните хотя бы мою просьбу.
Правильное или неправильное вычисление таймаута микроконтроллером нельзя отнести к недостаткам схемы в ПЛИС.
Про это никто и не говорил. Просто при разработке я учитывал абсолютно все возможные проблемы и, как я уже сказал, от многого можно отказаться даже упростив схему !
Quote (LeftRadio)
не буду больше для Вас чего либо симулировать
Значит заработало и мне этого достаточно да и симулировать больше НИКОГДА и НИЧЕГО не придется. Вы хозяин своего слова, захотели дали, захотели забрали. Я не в обиде, но выводы сделал. Второй раз на эти же грабли наступать не буду !
Напоследок небольшая хронологическая справка для ВСЕХ читателей форума. 1. я предложил начальную схему выборки 2. автор после нескольких дополнений и симуляций бросил на полпути начатое, не устранив недостатки причем виновным в них оказался я (см. пост 1455), и переключился на триггер 3. я предложил начальную схему триггера 4. автор после своих доработок выложил ее как рабочий вариант 5. я долго и упорно пытался доказать ее неработоспособность, т.к. в ней не было главного - дифференциатора фронта для ловли условия срабатывания триггера, и многократно предлагал взглянуть на схему MisterDi или посмотреть как используется D-триггер в моем варианте, но кроме скандала ничего не вышло 6. после того как я показал использование дифференциатора на своем варианте, автор, наконец, понял свою ошибку и сделал дифференциатор на регистрах(о велосипеде с квадратными колесами здесь уже говорили), который работал неправильно 7. я опять указал на ошибку и опять получил скандал 8. последний вариант автора, уже на триггерах, я и рассматривать не буду, т.к. от мноих услуг автор в грубой форме отказался И ни разу не было признания своей неправоты.
Итог : (недоделанная схема выборки) + (монструозный триггер). Хорошо, что от логического анализатора отказались- страшно подумать чтобы получилось. Хотя предупреждать надо было заранее чтоб я не тратил на него время.
Quote (LeftRadio)
пока не услышу извинений за оскорбления.
Я человек порядочный и приношу свои извинения, если ПРАВДА для Вас оскорбительна !!! Вы человек сложный в общении, а разрабатывать с Вами что-либо совместно вообще нереально ! Культурно общаться Вы не приучены или гонор мешает ?
P.S. Вопрос к Муха : все ли я правильно изложил, ничего не напутал ?
По поводу хронологической справки, я никогда не отрицал Ваш вклад в проект, за что Вам спасибо, и я всегда подчеркивал что мои схемы в ПЛИС сделаны на Вашей основе.
Quote (LazyCat)
И ни разу не было признания своей неправоты.
Я и сейчас считаю что мой доработанный вариант нормально работоспособен, все условия триггера ловятся никаких ложных срабатываний. И так, и сяк симулировал, все четко работает.
Quote (LazyCat)
Хорошо, что от логического анализатора отказались
Почему отказались? Я только спросил что кто думает, нужен или нет.
Quote (LazyCat)
ПРАВДА для Вас оскорбительна
Извините но называть ПРАВДОЙ то что я фальсификатор несколько неправильно я считаю, так как я ничего не фальсифицировал и последние осциллограммы Вашего изначального варианта это доказывают, каждый может собрать эту схему в quartus и проверить, или я неправ и все таки это ПРАВДА что я фальсификатор?
Quote (LazyCat)
или гонор мешает ?
Нет у меня гонора, я лишь отстаивал свое мнение, во всяком случае ни кого не оскорблял. ---
Нет войне!
Сообщение отредактировал LeftRadio - Пятница, 15.07.2011, 06:43
Все, прошу в том числе и себя больше не спорить Если хотите дальше участвовать и конструктивно помочь, то пожалуйста конкретно скажите почему у меня неправильно ловится условия синхронизации, был бы Вам признателен. Если желания нет, то это ваше право.
Вот с какими изменениями работает Ваш вариант, в разных режимах не симулировал - вх./вых. из окна, только по фронту. Работает пока один в один с моим правда не знаю пока как себя поедет при синхр. вх./вых из окна.
Я и сейчас считаю что мой доработанный вариант нормально работоспособен, все условия триггера ловятся никаких ложных срабатываний. И так, и сяк симулировал, все четко работает.
До установки дифференциатора все предыдущие версии НЕ РАБОТАЛИ, но Вы это не признали, не признаете, и не признаете никогда
Quote (LeftRadio)
Вот с какими изменениями работает Ваш вариант
Как всегда Вы мои посты не читаете, а я, дурак, распинался:
Quote (LazyCat)
P.P.S. Я кажется нашел причину взаимонепонимания ! Скорее всего триггер inst6 в ПЛИСе работает не совсем так как "железный" 74HC74 (имеется ввиду реакция на асинхронные входы и грамотная симуляция это бы показала). Если так, то нужно соединить выход элемента inst29 с третьим входом элемента inst17, и всего делов
Но уже это неважно
P.S. Да, про неработоспособность Вашего последнего варианта я и не говорил(т.к. не разбирался, но должен работать из-за наличия дифференциатора), а только подчеркивал его неоправданную монструозность !
Сообщение отредактировал LazyCat - Пятница, 15.07.2011, 10:35
До установки дифференциатора все предыдущие версии НЕ РАБОТАЛИ
Начиная с того на который Вы сказали "я же говорил что будет хуже" работали. До этого да, полностью, не работал мой вариант это была лишь система запуска с предысторией/без и отсчета необходимых для записи отсчетов. Ну так Вы и на все последующие варианты уже с дифференциатором говорили что они НЕРАБОТАЮТ и главный недостаток я не устранил.
Quote (LazyCat)
Как всегда Вы мои посты не читаете
Читаю, что плохого что работа inst6 стала до конца ясна? Ну да, заменить ИЛИ на трехвходовой и подать туда инвертированный Start1 проще, но это не значит что я не читаю Ваши посты, это Вы кажется не читаете, так и не назвали главный недостаток и почему мои варианты после добавления дифферинциатора нерабочие. Вы держитесь оскорбленным хотя Вас никто не оскорблял и не обвинял в подтасовке и избирательных глюках компилятора. А причина взаимонепонимания возникла после того как я оказался фальсификатором из-за работы триггера которая не совсем соответствует 74НС74, я лишь сомневался в Вашей схеме(или это нельзя?) и был против такой подачи клока на триггер.
Я вижу что мои просьбы не спорить игнорируются, хотя это Вы меня оскорбили а не я Вас, тем неимение я решил снизить обороты, но видимо бесполезно.
--------------------------------------------------------------------------------------------- Для всех не только для Вас, вот пытался получить синхронизацию по входу в окно(от 8 до 18) "сверху" или "снизу" когда в момент старта мы "оказываемся" уже в окне. Мне это не удалось, фиксируется только выход, я об этом говорил и LazyCat заметил что все учтено в отличии от моей "НЕРАБОТОСПОСОБНОЙ" схемы(пост LazyCat где он называет мой вариант уже с дифферинциатором неработоспособным в отличии от его), хотя у меня все четко работает как по входу в окно с "любой стороны" так и по выходу также "в любую сторону".
Может теперь, после осциллограмм схемы LazyCat станет понятна "неоправданная" сложность моего варианта, поверьте я над ней достаточно долго думал и много симулировал, кстати и достаточно сильно упростил в последней схеме(кое что зря, пост ниже).
Зря я выкинул demux1_2 в своей схеме что выкладывал, вернул на место, вот осциллограмма моего варианта, синхронизация по входу в окно, при тех же условиях как постом выше. Вход в окно четко фиксируется, так и должно работать:
Ну так Вы и на все последующие варианты уже с дифференциатором говорили что они НЕРАБОТАЮТ и главный недостаток я не устранил.
Ну, истинного дифференциатора(как у меня и MisterDi) у Вас нет и сейчас, есть просто выделитель фронта, т.к. в Вашем варианте запуска этого достаточно !!! Так вот, все предыдущие схемы, включая первый вариант в "выделителем" на регистрах(про который я сказал "хуже") были неработоспособны. После того, как Вы перенесли регистр, схема заработала и я четыре раза предлагал на этом остановиться ! Претензии были только к неоправданной сложности
Quote (LeftRadio)
лишь сомневался в Вашей схеме(или это нельзя?) и был против такой подачи клока на триггер.
Что я с удовольствием и изменил, заодно показав применение дифференциатора фронта ! Заметьте, сам алгоритм работы схемы не изменился и остался таким до сих пор ! Повторяю, в реальном железе все работает, а нюансы реализации в квартусе Вы обещали уладить
Quote (LeftRadio)
Для всех не только для Вас, вот пытался получить синхронизацию по входу в окно(от 8 до 18) "сверху" или "снизу" когда в момент старта мы "оказываемся" уже в окне.
Вы говорите про входные компараторы ? Так они были предложены как концепт на Вашу просьбу о разных режимах синхронизации :
Quote (LeftRadio)
• Запуск по параметрам окна . Окно – это зона с верхней и нижней границами, между которыми находится значение уровня запуска. Схема запуска срабатывает, когда уровень сигнала пересекает границу в направлении выхода из зоны. Следующий запуск возможен после возврата сигнала в зону окна.
До этого у нас даже обсуждение не дошло, поэтому я над этим и не работал !!! Зачем все валить на меня ??? Кстати, мой вариант удовлетворяет Вашему требованию ! Кроме того, я считаю, что синхронизация по входу в окно совершенно не нужна. Если логически подумать, то это обычная синхронизация с одним порогом. И я честно это отметил в посте 1468. Но если Вы считаете иначе, пусть так и будет !!! Вы уже остановились на конкретном выборе и уже можно закончить это обсуждение !!!
Сообщение отредактировал LazyCat - Пятница, 15.07.2011, 22:20
есть просто выделитель фронта, т.к. в Вашем варианте запуска этого достаточно !!!
А в каком не достаточно? я без каких задних мыслей спрашиваю, просто интересно.
Quote (LazyCat)
Кстати, мой вариант удовлетворяет Вашему требованию !
Да действительно полностью удовлетворяет, я почему то шире понял синхронизацию по окну, но мне кажется больше режимов синхронизации лучше, тем более небольшой ценой, всего в 4 макроячейки
А в каком не достаточно? я без каких задних мыслей спрашиваю, просто интересно.
Истинный дифференциатор фронта работает абсолютно автономно и не требует дополнительного управления, в Вашем же случае понадобились элементы inst20 и inst37. Переход к дифференциатору слегка бы упростил схему
Quote (LeftRadio)
но мне кажется больше режимов синхронизации лучше
В данном случае никакой новый режим синхронизации не добавляется
Сообщение отредактировал LazyCat - Суббота, 16.07.2011, 15:44
В данном случае никакой новый режим синхронизации не добавляется
Новый тип синхронизации не добавляется, а просто получаем дополнительный вариант при синхронизации по окну, можно регистрировать вход в окно с любой стороны, а не только снизу вверх. На последних осциллограммах Вашего и моего вариантов это ведь видно.
Ладно, а что все таки с лог. анализатором? Все молчат , плату то я уже начал разводить, нужно определится. ---