Здравствуйте, гость ( Вход | Регистрация )

Форум » Сайт и форум » Разработки и Статьи на сайте » Все вопросы касающиеся Neil Scope (Ваши замечания, предложения и т.д.)
Все вопросы касающиеся Neil Scope
LeftRadio Пятница, 26.03.2010, 21:41 | Сообщение # 1
Совсем живу сдесь...
Группа: Администраторы
Сообщений: 2045
Статус: Offline
Шапка темы.

--
NEIL SCOPE 2



--------------------------------------------------------------------------------------

--
NEIL SCOPE 3

Схема ревизия 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

-------------------------------------------------------------------

-------------------------------------------------------------------

Прошивка ПЛИС --- 19/05/15

MCU Bootloader (загрузчик МК) --- 17/10/13
Прошивка МК (ЖК с 8бит, 65к цветов) --- 2015_17_15
Прошивка МК (ЖК с 8 бит, 262к цветов) --- 2015_17_15
Прошивка МК для (ЖК с 16бит, HC573, 262к цветов) --- 2015_12_17

Исходники ПЛИС (github) --- 11_12_13
Исходники МК (github) --- 12/02/15
Архивные прошивки МК

Краткое описание осциллографа
Протокол обмена NeilScope3 с ПК

//----------------------------------------------------------------------------------------------------------
Прошивальщик МК (автор Ильдар) - 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"

Драйвера для NeilScope3 (под перепрошитые VID/PID) - NeilScopeDriver.zip

Процедура прошивки МК(обновлено 23.08.2015) - FirmwareManual.pdf

Для последующих обновлений просто запускаем NSFlashLoader, и обновляемся. Джампер при этом трогать уже не нужно.

//----------------------------------------------------------------------------------------------------------
.
.
.
Важные замечания по сборке

На плате не указана перемычка с 10-го вывода(INTRL) 74НС4052(U15) на вывод SWDIO МК, можно и просто подпаять пока на +3.3В в любое удобное переходное отверстие.

//----------------------------------------------------------------------------------------------------------

Фото платы ревизии 3:



Демо видео работы осциллографа, ревизия 1.9

----------------------------------------------------------------------------------------
Схема и плата ByteBlusterMV для программирования EPM570, оригинал здесь. Эту плату делал сам, проверена, работает.
.
.
//----------------------------------------------------------------------------------------------------------

Любое коммерческое использование данного проекта категорически запрещено. По всем вопросам обращаться wladkam(гав)mail.com
Прикрепления: 5561811.jpg (244.1 Kb) · 2201731.jpg (212.8 Kb)


---

Нет войне!


Сообщение отредактировал LeftRadio - Четверг, 17.12.2015, 04:59  
 
LeftRadio Воскресенье, 18.03.2012, 17:26 | Сообщение # 2681
Совсем живу сдесь...
Группа: Администраторы
Сообщений: 2045
Статус: Offline
Спасибо еще раз за разъяснения. Переделал счетчик синхронизации, теперь он считает только послеисторию, предысторию отсчитывает МК, управление запуском тоже изменил, сделал через запись в спец. регистр, теперь сигнал Start_write от МК лишний :) Но соединение пускай будет может ему еще какое назначение придумается. Еще переписал модуль регистров, блин как ве просто оказалось на верилоге то, даже не потребовалось два модуля, как только мозги заработали в "логике" верилога все упростилось :D Правда ресурсов регистры жрут нормально, но пока занято в общем 70% ПЛИС, если не хватит под ЛА тогда и буду думать, пока пусть так будет, уж очень не хочется каждый раз перед стартом записи писать кучу регистров/счетчиков.

А как кстати на верилоге асинхронный сигнал прогнать через пару триггеров, просто объявить два reg с их последовательной загрузкой?


---

Нет войне!


Сообщение отредактировал LeftRadio - Воскресенье, 18.03.2012, 17:31  
 
LeftRadio Воскресенье, 18.03.2012, 18:10 | Сообщение # 2682
Совсем живу сдесь...
Группа: Администраторы
Сообщений: 2045
Статус: Offline
Плату полностью закончил, сейчас обновлю в шапке, ошибок не нашел, просто подкорректировал шелкографию и трассировку некоторых дорожек и т.д.

---

Нет войне!
 
LazyCat Понедельник, 19.03.2012, 10:57 | Сообщение # 2683
Завсегдатай
Группа: Проверенные
Сообщений: 329
Статус: Offline
Quote (kison)
Ну давайте проверим.

Вы совершенно правы. Я по памяти рисовал схему полугодичной давности, а память подвела(XOR это из аналогового триггера) :( Вот правильный вариант.

Quote (kison)
Какие то основания выбрать размер буфера будут?

Я привел скриншоты того как делают умные люди, так сказать стандарт дефакто. Если Вас что-то не устраивает, то вопросы не ко мне :)

Quote (kison)
Прореживание + сжатие = безумно долгая запись. Там даже не минуты - часы возможны.

Именно об этой гибкости я уже устал повторять.

Quote (kison)
Я никогда не видел равного деления буфера, ни в одном приборе. Либо предыстории вообще нет, либо она регулируется.

Ну, наконец-то. Я думал, что Вы этого уже не скажете.

Quote (LeftRadio)
Переделал счетчик синхронизации, теперь он считает только послеисторию, предысторию отсчитывает МК

Вам виднее, но, на мой взгляд, это преднамеренное ухудшение качеств прибора !!! Сколько можно об этом писать. МК не должен заниматься тем, для чего предназначена ПЛИС и наоборот. Раньше все было гораздо проще и универсальнее :(

P.S. AD8130 есть в симуляторе Multisim 11, но мне не удалось просимулировать аналоговую часть :( Может кто окажется удачливее !
Прикрепления: 5704936.png (973.2 Kb) · 1695954.png (38.3 Kb)
 
LeftRadio Понедельник, 19.03.2012, 14:51 | Сообщение # 2684
Совсем живу сдесь...
Группа: Администраторы
Сообщений: 2045
Статус: Offline
Quote (LazyCat)
Вот правильный вариант.

Отлично, я как раз закончил с остальными блоками можно потихоньку переходить к ЛА :) Посмотрю Ваш вариант.

Quote (LazyCat)
Ну, наконец-то. Я думал, что Вы этого уже не скажете.

Ну вроде kison этого(что сказал) и не отрицал никогда :)

Quote (LazyCat)
Вам виднее, но, на мой взгляд, это преднамеренное ухудшение качеств прибора !!! Сколько можно об этом писать. МК не должен заниматься тем, для чего предназначена ПЛИС и наоборот. Раньше все было гораздо проще и универсальные :(

Ну может и универсальные, но тогда предыстоия = послеистории, сами ведь заметили что это нехорошо. А если делать с отдельным счетчиком предыстории то нужно дополнительно потратить как минимум 36 триггеров, если ресурсов хватит то возможно так и удобней будет, я сам за вариант с отсчитыванием предыстории в ПЛИС.


---

Нет войне!
 
LeftRadio Понедельник, 19.03.2012, 14:56 | Сообщение # 2685
Совсем живу сдесь...
Группа: Администраторы
Сообщений: 2045
Статус: Offline
блин, а вот выходные мультиплексоры с выходам с третим состоянием для шины МК и данных памяти я на верилог перенести не смог :( , точнее смог но там такие глюки полезли... И глюки очень сильно зависят от сигнала переключения EN1, когда он постоянно в 1 глюков нет, все работает нормально, если же подать на него сигнал с счетчика(как всхематике) то на выходе данных памяти просто жесть :( В чем дело так и не смог разобраться, вернул схему.

---

Нет войне!
 
kison Понедельник, 19.03.2012, 15:51 | Сообщение # 2686
Завсегдатай
Группа: Друзья
Сообщений: 275
Статус: Offline
Quote (LazyCat)
Вот правильный вариант.

Хорошо. Это исправили. Но триггер по уровню вторичен - основной это фронт/спад. Причем опять таки комбинации произвольны. Можем ждать фронт на одном канале и/или спад на другом. Или любое изменение на одном. Или фронт/спад на 4-х каналах и/или значение на оставшихся 4-х. И т.д. Фантазия тут безгранична, но для начала достаточно скопировать триггер из USBee - его хватит для 95% случаев.
Quote (LazyCat)
Я привел скриншоты того как делают умные люди, так сказать стандарт дефакто.

У умных людей самой проблемы нет. Они могут делать как угодно. Там жесткая связь между размером буфера, дискретизацией и временным интервалом. И любое из этих трех значений элементарно рассчитывается по двум другим. В случае с RLE это не так.
Quote (LazyCat)
Ну, наконец-то. Я думал, что Вы этого уже не скажете.

Уже? Я только это и утверждал. Это был наверно 5 раз :D
Quote (LazyCat)
МК не должен заниматься тем, для чего предназначена ПЛИС и наоборот. Раньше все было гораздо проще и универсальнее

Ну ухудшения нет - всего лишь мелкие неудобства в программе МК, но у него и ресурсов намного больше. Впрочем предыстория внутри ничуть не хуже. Просто снаружи она "на шару", а внутри кушает LE. Можно конечно сейчас встроить и внутрь, но потом - когда на расширения хотелок будет не хватать ресурсов ПЛИС, придется вернуться опять к варианту счетчика в МК. А это переделывать логику программы. Либо отказываться от каких то возможных доработок. Т.е. предыстория внутри начнет реально ухудшать возможности прибора. А до этого дойдет - практика показывает что со временем все ресурсы будут задействованы. Это касается универсальных девайсов типа осциллографа. Для девайсов решающих конкретную задачу расширения и дополнения могут и не делаться.
Quote (LeftRadio)
блин, а вот выходные мультиплексоры с выходам с третим состоянием для шины МК и данных памяти я на верилог перенести не смог

Выше был пример с условным assign. Там как раз модуль - мультиплексор с 3-м состоянием.
Quote (LeftRadio)
если же подать на него сигнал с счетчика(как всхематике) то на выходе данных памяти просто жесть

Дело в том, что счетчики в мегафункциях альтеры имеют асинхронный выход переноса. Их надо тоже прогонять через триггер. Либо написать счетчик на верилоге и опять таки выход брать с триггера.
Да и зачем вообще переключать шину по сигналу EN? Она должна быть на выход в режиме записи и в 3-м состоянии в режиме чтения.
 
LeftRadio Понедельник, 19.03.2012, 16:45 | Сообщение # 2687
Совсем живу сдесь...
Группа: Администраторы
Сообщений: 2045
Статус: Offline
Quote (kison)
Выше был пример с условным assign. Там как раз модуль - мультиплексор с 3-м состоянием.

Да вроде все правильно написал, смотрел также пример у тебя на форуме.

Quote (kison)
Дело в том, что счетчики в мегафункциях альтеры имеют асинхронный выход переноса. Их надо тоже прогонять через триггер. Либо написать счетчик на верилоге и опять таки выход брать с триггера.
Да и зачем вообще переключать шину по сигналу EN? Она должна быть на выход в режиме записи и в 3-м состоянии в режиме чтения.

Не счетчиков там нет, это вот этот кусок схемы:



Код, правда без комментариев :
Прикрепления: 5864927.png (32.5 Kb)


---

Нет войне!


Сообщение отредактировал LeftRadio - Понедельник, 19.03.2012, 16:49  
 
kison Понедельник, 19.03.2012, 17:12 | Сообщение # 2688
Завсегдатай
Группа: Друзья
Сообщений: 275
Статус: Offline
Quote (LeftRadio)
Код, правда без комментариев

Ну код схеме то точно не соответствует.
Это вообще квартус пропускает? Странно.
SRAM_DATA - провод, а не регистр. Ему нельзя присваивать значения в always блоке. Надо вынести оттуда как минимум:
assign SRAM_DATA = (Start_Write == 0)? 8'bzzzzzzzz : DATA;
На схеме всего два 8-ми битных регистра встроенных в мультиплексор ( это кстати причина потери части отсчетов в дециматоре - там такие же мультиплексоры).
В описании их уже два 16 битных.


Сообщение отредактировал kison - Понедельник, 19.03.2012, 17:12  
 
LeftRadio Понедельник, 19.03.2012, 17:25 | Сообщение # 2689
Совсем живу сдесь...
Группа: Администраторы
Сообщений: 2045
Статус: Offline
Quote (kison)
Это вообще квартус пропускает? Странно.

Я см удивлен :D

Quote (kison)
На схеме всего два 8-ми битных регистра встроенных в мультиплексор ( это кстати причина потери части отсчетов в дециматоре - там такие же мультиплексоры).
В описании их уже два 16 битных.

Я пробовал ставить регистры и по входу мультиплексоров(2 по 16 бит) и по выходу два на 8 бит, разницы не было...

Quote (kison)
SRAM_DATA - провод, а не регистр. Ему нельзя присваивать значения в always блоке.

Его там не было, это потом меня видимо глюконуло :D

Ладно пока пусть будет в схематике, а по поводу пропажи отсчетов, так я говорил что отсчеты не теряются в конечном итоге, просто немного ухудшается "точность" расчета макс./мин. на конечный "семпл". Пробовал писать одновременно макс. и мин. каждого канала, но тогда как быть с работой на макс. скорости. получается максимум и минимум совпадают и мы пишем в память одно и тоже в [7:0] и [15:8].


---

Нет войне!
 
kison Понедельник, 19.03.2012, 19:51 | Сообщение # 2690
Завсегдатай
Группа: Друзья
Сообщений: 275
Статус: Offline
Quote (LeftRadio)
а по поводу пропажи отсчетов, так я говорил что отсчеты не теряются в конечном итоге, просто немного ухудшается "точность" расчета макс./мин. на конечный "семпл". Пробовал писать одновременно макс. и мин. каждого канала, но тогда как быть с работой на макс. скорости. получается максимум и минимум совпадают и мы пишем в память одно и тоже в [7:0] и [15:8].

Там ничего теряться не должно.
В общем по сигналу EN надо перезаписывать минимумы в еще один регистр хранения. Его выход на вход мультиплексора. Второй вход мультиплексора на регистр где накапливаются максимумы. Регистр встроенный в мультиплексор вытащить оттуда. Либо, если можно вывести сигнал разрешения записи в этот встроенный регистр наружу - можно оставить и так. Но на этот вход разрешения записи подать два сигнала по ИЛИ - EN и EN1. В общем логика примерно такая:
По сигналу EN минимумы перезаписываются в добавленный регистр хранения. Максимумы через мультиплексор в выходной регистр ( встроенный в мультиплексор или стоящий прямо за ним). Одновременно данные со входов переписывают старые значения минимумов и максимумов ( это и сейчас ровно так - переделывать не надо). Следующий такт EN = 0, EN1 = 1; ( т.е. сигналы переименовать из EN в EN1 и наоборот. Нужно чтоб первым приходил EN и в следующем такте EN1) - мультиплексор переключен на регистр хранения, из него и переносим в выходной регистр ( ну тот что в мультиплексоре). Получим на выходе сначала максимумы, затем минимумы при необходимости. И ничего не потеряем.

Добавлено (19.03.2012, 19:50)
---------------------------------------------
Можно вообще минимум переделок ( смешное слово если одну е пропустить :D ) - просто добавить регистр в разрыв шины на один из входов мультиплексора. Разрешение записи в него - EN. И все - больше ничего не нужно. :) Ничего теряться уже не будет.

Добавлено (19.03.2012, 19:51)
---------------------------------------------
Вру - EN и EN1 надо местами поменять еще.

 
LeftRadio Понедельник, 19.03.2012, 19:55 | Сообщение # 2691
Совсем живу сдесь...
Группа: Администраторы
Сообщений: 2045
Статус: Offline
Спасибо за развернутый ответ drink , попробую сделать минимум перделок :D Кстати основная потеря скорости сейчас по сообщениям квартууса происходит в блоке выборки макс./мин. вот его код на всякий если интересно:


Это так совпало из-за того что дизайн "расползся" по плисине или что то в блоке сделал не правильно не подскажешь? Я тебя уже достал вопросами :D


---

Нет войне!


Сообщение отредактировал LeftRadio - Понедельник, 19.03.2012, 20:07  
 
kison Понедельник, 19.03.2012, 20:12 | Сообщение # 2692
Завсегдатай
Группа: Друзья
Сообщений: 275
Статус: Offline
Quote (LeftRadio)
Это так совпало из-за того что дизайн "расползся" по плисине

Да. Я вводил ЛА, а он вообще у меня автономный. Но скорость просела сразу. Беспокоиться смысла нет пока скорость >60МГц. Вот если станет меньше - то караул.
 
LeftRadio Понедельник, 19.03.2012, 20:50 | Сообщение # 2693
Совсем живу сдесь...
Группа: Администраторы
Сообщений: 2045
Статус: Offline
Понятно, пока 85 показывает.

---

Нет войне!
 
LeftRadio Понедельник, 19.03.2012, 21:40 | Сообщение # 2694
Совсем живу сдесь...
Группа: Администраторы
Сообщений: 2045
Статус: Offline
Сделал, пропуски отсчетов при подсчете минимумов все равно есть, вот осциллограмма и схема, MIN_MAX_SEL это на осциллограмме CLK_EN, приходит после EN. Оранжевым обвел минимум который будет "учтен", черным - тот минимум который "пропадает", красным момент записи в память.





-----------------------------------------------------------------------------------
Кажись починил B) , на дополнительные регистры подал не EN(который первый приходит), а тот же сигнал что идет на регистры после мультиплексоров, вот схема и ее осциллограмма, обведено красным - максимумы, оранжевым - минимумы, зеленым момент записи в память максимумов и минимумов.



Прикрепления: 8119898.png (67.6 Kb) · 5573761.png (39.5 Kb) · 1516624.png (48.9 Kb) · 4778010.png (64.5 Kb)


---

Нет войне!
 
LazyCat Вторник, 20.03.2012, 11:29 | Сообщение # 2695
Завсегдатай
Группа: Проверенные
Сообщений: 329
Статус: Offline
Quote (kison)
Но триггер по уровню вторичен - основной это фронт/спад.

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

Quote (kison)
Ну ухудшения нет - всего лишь мелкие неудобства в программе МК,

Опять двадцать пять !!! Я устал уже это повторять ! МК может только отсчитывать временной интервал(по внутреннему таймеру) и такая предыстория пригодна для осциллографа и ЛА без сжатия. Это резко сужает функционал прибора, поэтому предыстория должна быть внутри ПЛИС+все что я говорил ранее :)

P.S. По поводу потери отсчетов все очень просто !!! Чтобы не было потерь нужна схема задержки на 2 такта(если хотите, FIFO или конвейер). Именно поэтому я говорил о двух мультиплексорах(с защелками), включенных последовательно !!! Только в этом случае, мы устраняя недостатки, бонусом получаем еще и ЛА ;)
 
kison Вторник, 20.03.2012, 18:21 | Сообщение # 2696
Завсегдатай
Группа: Друзья
Сообщений: 275
Статус: Offline
Quote (LazyCat)
Естественно, и текущий вариант рассчитан на ловлю любого перепада на одном выбранном входе ! Если потребуется ожидание перепада хотя бы на одном из нескольких,

Да не только. В ЛА синхронизация бывает очень хитрой. Например по значению на части шины плюс любой перепад на одной линии. Или не на одной. Да и вообще это тема неисчерпаема как атом. Но для старта можно не изобретать велосипед, а просто скопировать режимы из USBee. Это и есть минимальный джентльменский набор.

Quote (LazyCat)
Опять двадцать пять !!! Я устал уже это повторять ! МК может только отсчитывать временной интервал(по внутреннему таймеру) и такая предыстория пригодна для осциллографа и ЛА без сжатия.

Пригодно там все. Сжатие не дает возможности прогнозировать время записи и соответственно заранее сказать пользователю получится записать то, что ему надо или нет. В остальном что со счетчиком выборок внутри, что со счетчиком времени снаружи - результат идентичен. А нам ведь результат и нужен? Приведите пример непригодности варианта с таймером в МК для ЛА со сжатием. Потому что грабли которые я описал выше с непредсказуемостью времени записи в ЛА со сжатием ну совершенно не зависят от того есть счетчик выборок предыстории или нет.

Quote (LazyCat)
По поводу потери отсчетов все очень просто !!! Чтобы не было потерь нужна схема задержки на 2 такта(если хотите, FIFO или конвейер).

Не заметили - этого вопроса больше нет. Все решено. И без всяких FIFO.
 
LeftRadio Вторник, 20.03.2012, 18:25 | Сообщение # 2697
Совсем живу сдесь...
Группа: Администраторы
Сообщений: 2045
Статус: Offline
Quote (kison)
Но для старта можно не изобретать велосипед, а просто скопировать режимы из USBee. Это и есть минимальный джентльменский набор.

А где посмотреть на них можно? Я скачал пару их софтин и как то не нашел настроек режимов синхронизации. Можно ссылку?


---

Нет войне!
 
kison Вторник, 20.03.2012, 18:41 | Сообщение # 2698
Завсегдатай
Группа: Друзья
Сообщений: 275
Статус: Offline
Quote (LeftRadio)
и как то не нашел настроек режимов синхронизации.

Да они там прямо в основном окне. Мышкой настраиваются.
http://www.usbee.com/axla.html
Вообще то там триггер все же покруче, чем у меня вышел - 4 последовательных состояния отрабатывает. У меня только два. Ну что делать.
 
LazyCat Вторник, 20.03.2012, 20:22 | Сообщение # 2699
Завсегдатай
Группа: Проверенные
Сообщений: 329
Статус: Offline
Quote (kison)
Но для старта можно не изобретать велосипед, а просто скопировать режимы из USBee.

Так ведь именно этого я и добиваюсь ! Разве это непонятно ? Режим синхронизации по уровням я привел, режим синхронизации по перепадам достигается введением всего 2-х элементов. И вообще, обсуждение идет не самих режимов(с ними все и так понятно), а именно аппаратной их реализации !!! Или не так обстоит дело ?

Quote (kison)
Пригодно там все.

Ну Вы точно прикалываетесь :D Про грабли с временным счетчиком(что снаружи, что внутри) уже разобрались !!! Если всетаки будет счетчик выборок, то при задании внешнего временного интервала Вы всеравно не будете знать сколько выборок предыстории записалось на самом деле !!! И возникает забавная ситуация, когда их записалось меньше, чем Вы предполагали, и при переходе на начало буфера захвата Вы перейдете неизвестно куда :D Или Вы русский язык не понимаете ? Решать всеравно Владу.

Quote (kison)
Не заметили - этого вопроса больше нет. Все решено. И без всяких FIFO.

Это Вы просто так ляпнули ? И, как всегда, было лень посмотреть, что Влад симулировал !!! И термин FIFO лучше не употребляйте, раз Вы в нем ничего не понимаете !!!
 
LeftRadio Вторник, 20.03.2012, 22:01 | Сообщение # 2700
Совсем живу сдесь...
Группа: Администраторы
Сообщений: 2045
Статус: Offline
Quote (kison)
Да они там прямо в основном окне. Мышкой настраиваются.

Спасибо, поиграюсь :)

Quote (LazyCat)
И вообще, обсуждение идет не самих режимов(с ними все и так понятно)

К сожалению мне непонятно :(

Quote (LazyCat)
Если всетаки будет счетчик выборок, то при задании внешнего временного интервала Вы всеравно не будете знать сколько выборок предыстории записалось на самом деле !!! И возникает забавная ситуация, когда их записалось меньше, чем Вы предполагали

Ну думаю такой ситуации не будет, можно ведь писать чуть с запасом по времени, а что запишется предыстории чуть больше чем надо это нестрашно :)

Quote (LazyCat)
И, как всегда, было лень посмотреть, что Влад симулировал !!!

Там у меня кстати уже все нормально ничего не теряется, "задержка" понадобилась в такт а не два, а там без разницы в мультиплексоре стоит регистр или он сам по себе.


---

Нет войне!
 
LazyCat Вторник, 20.03.2012, 22:35 | Сообщение # 2701
Завсегдатай
Группа: Проверенные
Сообщений: 329
Статус: Offline
Quote (LeftRadio)
К сожалению мне непонятно

Поиграйтесь с USBee и напишите, что конкретно непонятно.

Quote (LeftRadio)
Ну думаю такой ситуации не будет, можно ведь писать чуть с запасом по времени, а что запишется предыстории чуть больше чем надо это нестрашно

Да собственно я не об этом ! Мы уже подробно обсуждали. Допустим, что я убедил и счетчик в ПЛИС отсчитывает выборки. Тогда после окончания захвата мы находимся в конце буфера. Чтобы перейти на триггер достаточно тактировать счетчик чтения WIN[15..0] раз, а чтобы перейти на начало буфера возникают проблемы. Аналогично тикнуть счетчик чтения мы не можем, т.к. попадем неизвестно куда(зависит от характера сигнала до срабатывания триггера, ну это понятно), абсолютно нет гарантии, что там будут данные захвата текущего сеанса. Значит, остается единственный вариант, на котором настаивает kison - мы на каждом тике читаем память, суммируем длительности выборок и полученное время сравниваем с временем предыстории. Только таким образом можно перейти на начало буфера. Зачем такие сложности, если и предысторию считать в выборках, то ничего подобного делать не надо ! Но выбирать, конечно, Вам !
Больше я этот вопрос обсуждать не буду !!!

Quote (LeftRadio)
Там у меня кстати уже все нормально ничего не теряется, "задержка" понадобилась в такт а не два

Я говорил об общей задержке :D В той схему, что Вы симулировали, если поставить мультиплексор для ЛА, то получите в точности, что я говорил ! И вообще, если Вы внимательно посмотрите всю мою схему, то многие вопросы и непонятки отпадут ;)
 
kison Среда, 21.03.2012, 01:41 | Сообщение # 2702
Завсегдатай
Группа: Друзья
Сообщений: 275
Статус: Offline
Quote (LazyCat)
Допустим, что я убедил и счетчик в ПЛИС отсчитывает выборки. Тогда после окончания захвата мы находимся в конце буфера. Чтобы перейти на триггер достаточно тактировать счетчик чтения WIN[15..0] раз

Допустим. Тогда такой вопрос - меня интересует интервал 1мс до триггера. Что надо занести в счетчик выборок предыстории чтобы это получить? Допустим дискрет у нас 20нС и сжатие RLE. И как потом найти это начало, т.е. 1мС до триггера?
Quote (LazyCat)
а чтобы перейти на начало буфера возникают проблемы.

Никаких проблем как раз не возникает. Я так понимаю это уже о варианте с предысторией основанной на счетчике времени в МК. Так вот в этом варианте как раз проблем с предысторией нет совсем. Считываем от триггера вниз суммируя количество повторов в каждой выборке. Т.е. по сути - считаем выборки которые были бы без сжатия. Оно же по сути - считаем время. Тот же пример с 1мС. Считаем пока сумма этих "эквивалентных выборок" не станет больше 50000. Начало отсчета -триггер. Как только стало больше - мы нашли начало интересующего интервала. Самое забавное, что и в варианте со счетчиком в плис пришлось бы делать ровно то же самое. Что бы не читать те самые бессмысленные отсчеты вне интересующего нас интервала. Вообще вариант со счетчиком в плис наполовину решает проблему сжатия. Но увы - не полностью. Вот если бы и после триггера сделать такой отсчет - было бы чудесно. Однако приходится обходиться кривым убогим вариантом - счетчиком выборок. :(
Quote (LazyCat)
Зачем такие сложности, если и предысторию считать в выборках, то ничего подобного делать не надо !

Какие сложности? Просуммировать даже 50000 тысяч значений не проблема. Но зато ничего лишнего считывать в МК не надо. Передавать в PC тоже лишнее не придется. А все что за пределами интересующего нас ВРЕМЕННОГО интервала - это обычный мусор.
Кстати насчет расчета. От него все равно ну никуда не деться при введении сжатия. И это не зависит как именно мы получили выборки. Ведь привязать выборки к реальному времени можно только суммируя повторы. А нам на экране надо как раз привязанные ко времени картинки рисовать, иначе они вообще никакой цены не имеют.
Quote (LazyCat)
если поставить мультиплексор для ЛА, то получите в точности, что я говорил !

Мультиплексор сам по себе. Вклинить в тракт данные от ЛА он позволит. А вот то, что терялось в дециматоре не вернет. Впрочем теперь уже не теряется.

Quote (LeftRadio)
Ну думаю такой ситуации не будет, можно ведь писать чуть с запасом по времени, а что запишется предыстории чуть больше чем надо это нестрашно

С предысторией все отлично получается, куда лучше чем со счетчиком выборок до триггера. Но проблема никуда не ушла - счетчик после триггера то остался. Он тоже кривой когда сигнал сжимается. Я что то никак не могу придумать красивый вариант.

Добавлено (21.03.2012, 01:41)
---------------------------------------------
Quote (LazyCat)
И термин FIFO лучше не употребляйте, раз Вы в нем ничего не понимаете !!!

О как. Смотрю опять началось. Вообще я смотрю хамство прямо неотъемлемая Ваша черта. Еще одно такое высказывание и я реально попрошу Влада Вас забанить к чертям. И эпитафию напишу. :D Толку с Вас все равно чуть меньше чем минимум, а вот переход на личности Вы отлично провоцируете. Причем зачем - мне не понятно.


Сообщение отредактировал kison - Среда, 21.03.2012, 02:03  
 
LazyCat Среда, 21.03.2012, 12:02 | Сообщение # 2703
Завсегдатай
Группа: Проверенные
Сообщений: 329
Статус: Offline
Quote (kison)
Допустим.

В ответе Владу я все объяснил, повторять не буду. Напомню лишь, что ЛА предназначен именно для анализа сигнала, характеристики которого заранее неизвестны и в 99% случаев вообще нет надобности перейти на N мс вперед или назад. Например, анализируя протокол SPI или UART, который всегда имеет хаотический вид, т.к. интервал между пакетами различен, Вы просто перемещаетесь по буферу, выискивая эти пакеты без точного указания времен, которые Вы априори не знаете ! Еще раз напомню, что все эти перемещения и анализ делаются на PC с его большим экраном и мышкой. Никто делать это на карманнике не будет - очень уж неудобно :D Должна быть простая возможность просто оценить правильно ли захватили сигнал !!!

Quote (kison)
Просуммировать даже 50000 тысяч значений не проблема. Но зато ничего лишнего считывать в МК не надо. Передавать в PC тоже лишнее не придется.

Для того чтобы просуммировать нужно именно читать память. Ну это и Вы понимаете, а вот передавать в РС лишнее никто и не собирался ! Просто передаем весь буфер с начала до конца в формате USBee.

Quote (kison)
А нам на экране надо как раз привязанные ко времени картинки рисовать, иначе они вообще никакой цены не имеют.

Именно так они будут рисоваться в любом случае, независимо от нашего с Вами хотения !

Quote (kison)
О как. Смотрю опять началось. Вообще я смотрю хамство прямо неотъемлемая Ваша черта.

Об источнике хамства я промолчу :D И пока ничего не началось. Вам опять было лень посмотреть схему, которую Влад привел, поэтому поясню. Пары элементов (inst17,inst5) и (inst18,inst6) как раз образуют линию задержки на два такта для сигнала MIN_DATA !!! Или нет ? Естественно, при добавлении ЛА регистры inst17 и inst18 будут заменены на мультиплексор с защелкой. Разве я предлагал не это же самое ? Можно, конечно, и мультиплексоры inst5 и inst6 сделать 3-х входовыми, но это менее красиво, а сути не меняет ! Главное, что появился конвейер на два такта, а выбирать вариант будет всеравно Влад ! Кстати, и про FIFO и про ФНЧ Вы давно могли прочитать в википедии, но почему-то не сделали этого, а потребовали от меня это разъяснить. Зачем ?

Quote (kison)
Еще одно такое высказывание и я реально попрошу Влада Вас забанить к чертям.

:'( :'( :'(

Quote (kison)
Толку с Вас все равно чуть меньше чем минимум

Ну это уж точно не Вам решать ! Владу виднее.

P.S. Влад, если ресурсы ПЛИС позволят, то вот окончательный вариант ЛА со всеми возможными режимами синхронизации. Кстати, цифровой компаратор я изобразил так, как говорил ранее.
Прикрепления: 0177491.png (998.9 Kb)


Сообщение отредактировал LazyCat - Среда, 21.03.2012, 12:30  
 
kison Среда, 21.03.2012, 23:51 | Сообщение # 2704
Завсегдатай
Группа: Друзья
Сообщений: 275
Статус: Offline
Quote (LazyCat)
Напомню лишь, что ЛА предназначен именно для анализа сигнала, характеристики которого заранее неизвестны и в 99% случаев вообще нет надобности перейти на N мс вперед или назад.

Да в 95% случаев ЛА предназначен для записи сигнала, характеристики которого более чем известны. Классический пример - запись какого нибудь протокола типа RS232 или I2C. Если же характеристики неизвестны - то есть оставшиеся 5% случаев, то просто пишем всю память. Тут получается виртуальный счетчик выборок предыстории. То есть его нет физически, он ресурсы в плис не потребляет, но когда нужен - он работает :D
Quote (LazyCat)
Вы просто перемещаетесь по буферу, выискивая эти пакеты без точного указания времен, которые Вы априори не знаете !

Конечно перемещаюсь не зная. Цель то перемещения и поиска - как раз узнать точное время относительно заданного условия в триггере. Мне не интересны данные, которые я не могу интерпретировать. Утрируя - данные которые были на шине год назад меня не интересуют :D
Quote (LazyCat)
Для того чтобы просуммировать нужно именно читать память.

Конечно. Ее же все равно надо читать. Иначе зачем мы ее вообще записывали? :D
Quote (LazyCat)
Об источнике хамства я промолчу

А зря - рассказали бы нам что его вызывает. Хотя и так очевидно - недостаток воспитания. Родителям Вашим не удалось сделать из Вас приличного человека.

Quote (LazyCat)
Вам опять было лень посмотреть схему, которую Влад привел, поэтому поясню.

Ржу. Зачем мне ее смотреть? Я ему просто описал как у меня сделано чтоб ничего не терялось. Теперь у него так же как у меня. Поверьте - свою схему я знаю от и до.
И это не FIFO никакое. Вообще с Вами очень трудно общаться. Вы не знаете что такое FIFO и называете этим что угодно. А FIFO это один из принципов организации очереди. Очередь это такое устройство/программный модуль у которого с одной стороны вход данных, а с другой выход. Моменты записи и чтения никак не связаны друг с другом. Пример функционирования очереди - пишем в очередь 1 порцию данных, через секунду считываем ее с другой стороны. Второй пример - пишем две порции данных и считываем тоже две. Это не зависит от емкости очереди - если она на 500 значений то это не значит что для считывания одного надо сначала 499 считать. Нет - очередь с FIFO сразу выдает данные на выход. Более того - имеет сигнал что очередь пуста на стороне чтения и что очередь заполнена на стороне записи. Очередь с FIFO имеет довольно сложное устройство, это совсем не сдвиговый регистр и не два последовательных триггера.
Ну вот к примеру посмотрите микросхему реализующую очередь с FIFO от NS2 - CY7C421-15AXC
И что там за выходы такие FF,HF,EF. Структурную схему ее посмотрите и подумайте что там за Write Pointer и Read Pointer. В общем сначала узнайте, а потом о этом рассуждайте. Сейчас Вы опять выставили себя клоуном. Зачем нам тут очередная клоунада?
Quote (LazyCat)
с начала до конца в формате USBee.

Опять ржу. Чтоб вот так прикинуться USBee надо соблюсти протокол USBee. Микросхема реализующая функционал моста USB<->UART такого физически не может. USBee не будет работать с другим устройством. Забудьте о USBee, с его софтом работать не получится.

Quote (LazyCat)
Естественно, при добавлении ЛА регистры inst17 и inst18 будут заменены на мультиплексор с защелкой. Разве я предлагал не это же самое ?

В Вашей последней схеме со встроенным мультиплексором для ЛА проблема с потерей отсчета в дециматоре осталась. Как терялся, так и теряется. Скачайте квартус, научитесь с ним работать, проверяйте свои схемы самостоятельно перед их выкладыванием. Если квартус тяжело, типа комп у Вас допотопный - скачайте Max+Plus II - проверять можно и там. Вес дистрибутива около 40Мб. Пока Вы выкладываете нерабочие схемы это только смех вызывает.

Добавлено (21.03.2012, 21:03)
---------------------------------------------

Quote (kison)
Если же характеристики неизвестны - то есть оставшиеся 5% случаев, то просто пишем всю память. Тут получается виртуальный счетчик выборок предыстории.

Я даже немного ошибся - для неизвестного сигнала предыстория вообще не нужна. Просто ставим триггер на любой фронт на любой линии и пишем всю память после этого "события". Предыстория же имеет смысл только для известного сигнала, когда можно установить осмысленное условие для триггера. Итого - для известного сигнала предысторию удобнее задавать через задание времени. Для неизвестного - ее вообще задавать не надо, вся память для выборок после "триггера". Вывод - счетчик выборок предыстории вещь абсолютно бесполезная.

Добавлено (21.03.2012, 23:51)
---------------------------------------------
И еще - давайте представим, что это у Вас рабочие схемы и хорошие идеи, а это мы тут зря смеемся над ними да еще результаты симуляций фальсифицируем. Ну так докажите нам обратное - сделайте свой прибор на своей же схеме. И когда у Вас все будет работать все аргументы против будут бессмысленными. Докажите свою правоту примером работающего прибора!
Там уже сами будете решать нужен интерлив или нет, нужен счетчик выборок предыстории или нет, нужно ли в счетчик адресов чтения переносить адрес триггера или нет. Ну и все остальные свои идеи воплотите, типа работы с софтом от USBee. Дарю эту идею! В смысле идею сделать свой прибор, а не работать с USBee софтом :)
Кстати - и с USBee работать сможете. Надо просто вместо моста USB-UART поставить что то более универсальное. И эту - тоже дарю! :)

 
LazyCat Четверг, 22.03.2012, 11:11 | Сообщение # 2705
Завсегдатай
Группа: Проверенные
Сообщений: 329
Статус: Offline
Quote (kison)
Да в 95% случаев ЛА предназначен для записи сигнала, характеристики которого более чем известны. Классический пример - запись какого нибудь протокола типа RS232 или I2C.

Ну после таких слов что-либо объяснять Вам бесполезно !
Для остальных посетителей форума я поясню. При анализе любых цифровых сигналов Вас в-первую очередь интересуют не абсолютные времена, а, относительные, например, длительности нулей и единичек или интервал между спадом одного сигнала и фронтом другого(не зря в софте предусмотрены соответствующие маркеры). При анализе протоколов Вас даже это не интересует. Вам неважно какой интервал между фронтом CS и фронтом CLK при анализе протокола SPI или аналогичного, т.к. в реальном устройстве это происходит согласно спецификации ! Достаточно запустить плагин и он сам упакует это все в конкретные ЦИФРЫ, даже ничего не измеряя ! А вот интервалы между пакетами измерять в большинстве случаев бессмысленно, т.к. в реальном устройстве на МК эти интервалы будут зависеть от многих факторов(программная реализация, прерывания, режимы работы и т.д.). При анализе RS232 плагин действует аналогично, вначале просматривает весь буфер и ищет минимальный интервал - это будет скорость передачи(автоматически, но можно задать и вручную). Затем с начала буфера он ищет START-условие и упаковывает данные согласно спецификации и Вашим настройкам. Интервал между пакетами опять же зависит от многих факторов и в большинстве случаев неинтересен !
Повторяю, при анализе протоколов нужны выходные РЕАЛЬНЫЕ ДАННЫЕ, а временные интервалы не важны ! А при анализе просто наборов 0 и 1 нужны относительные времена, а не абсолютные, т.к. в реальном устройстве это все "плавает".

Quote (kison)
Опять ржу. Чтоб вот так прикинуться USBee надо соблюсти протокол USBee.

Я где-то писал, что нужно прикинуться USBee ? Или это "сам придумал - сам обвинил" ? Технически это легко, но зачем ? Мы это уже неоднократно обсуждали ! Анализировать сигнал в полном объеме на карманнике - это утопия(неудобно и трудоемко). И чтобы использовать всю мощь плагинов USBee еще полгода назад было решено скидывать захваченный буфер на РС, распаковать его в формате USBee(тут я предлагал свою помощь) и далее подробно анализировать данные на большом экране и мышкой, кстати не заботясь о заряде батареи :D

Quote (kison)
В Вашей последней схеме со встроенным мультиплексором для ЛА проблема с потерей отсчета в дециматоре осталась.

Возможно. Я честно говорил, что не симулировал(поэтому выкладываю идеи, а не реализацию), а всего лишь указал недостаток и сказал, что необходима линия задержки на 2 такта. Влад меня прекрасно понял и сделал грамотную реализацию. Вот и ладушки !!!
Кстати, по поводу второго недостатка ни у кого вопросов не возникло ?
 
LeftRadio Четверг, 22.03.2012, 16:27 | Сообщение # 2706
Совсем живу сдесь...
Группа: Администраторы
Сообщений: 2045
Статус: Offline
Quote (LazyCat)
Влад меня прекрасно понял и сделал грамотную реализацию. Вот и ладушки !!!

Ну если быть честным то я сделал так как подсказал Kison - один регистр по входу минимумов, только сигнал разрешения записи этих регистров взял другой, в Вашей же схеме отличий от моей с "потерями" отличий нет не считая простой задержки на такт, потому что регистр стоит по выходу мультиплексоров и перезаписывается и макс. и минимумами.

Quote (kison)
Чтоб вот так прикинуться USBee надо соблюсти протокол USBee. Микросхема реализующая функционал моста USB<->UART такого физически не может.

Не Вы неправильно поняли, прикидываться и не надо, USBee ведь позволяет сохранять осциллограммы? Ну вот и тогда еще подумали именно под формат этих файлов и подделываться.

Quote (kison)
Итого - для известного сигнала предысторию удобнее задавать через задание времени.

Типа имеется ввиду как и сейчас просто отсчетом времени в МК? Логично, если протокол известен, то можно и предсказать примерное время записи, а значит задали с запасом предыстории и записали :) Если использовать сжатие тогда задаем время предыстории, запустили. а как с послеисторией? Тоже временем? Или уже просто счетчиком как в осцилле? Правда это тоже время :D

Quote (LazyCat)
Достаточно запустить плагин и он сам упакует это все в конкретные ЦИФРЫ, даже ничего не измеряя !

А что он выдаст на выходе? Просто странно, ничего мерить не надо и оно нас не интересует, что же тогда делает плагин? Анализирует пакеты приема/передачи?

Quote (LazyCat)
Кстати, по поводу второго недостатка ни у кого вопросов не возникло ?

Какого? Вот любите Вы сказать что недостаток есть, а даже намека нет что за недостаток :D Раз уж пишите, то и пишите что имеете ввиду, мне например "догадываться" не доставляет удовольствия и я этого делать не буду.


---

Нет войне!
 
LeftRadio Четверг, 22.03.2012, 16:30 | Сообщение # 2707
Совсем живу сдесь...
Группа: Администраторы
Сообщений: 2045
Статус: Offline
Посмотрел USBee-ый софт, без реального устройства трудно понять что там за триггер, как я понял можно задать срабатывание триггера на одном канале к примеру уровнем, перепадом и даже 4-мя событиями. правильно? А что будет если я на двух каналах задам условия, какой раньше сработает там триггер и будет?

---

Нет войне!
 
LeftRadio Четверг, 22.03.2012, 17:31 | Сообщение # 2708
Совсем живу сдесь...
Группа: Администраторы
Сообщений: 2045
Статус: Offline
Тфу ты, только обратил внимание что в шапке старая ревизия схемы/платы, сейчас обновлю.

---------------------------------------------------------------------------------------------------
Обновил, эта ревизия платы и "ушла в печать".


---

Нет войне!


Сообщение отредактировал LeftRadio - Четверг, 22.03.2012, 17:37  
 
kison Четверг, 22.03.2012, 19:07 | Сообщение # 2709
Завсегдатай
Группа: Друзья
Сообщений: 275
Статус: Offline
Quote (LazyCat)
При анализе любых цифровых сигналов Вас в-первую очередь интересуют не абсолютные времена, а, относительные

С нами КЭП? Какие еще абсолютные времена? Вы видите в плис часы реального времени? Нет? Значит и вариантов нет - все времена относительные. Хотя абсолютные было бы не хуже, а даже лучше. :D Но вот сложнее в реализации во много раз.
Quote (LazyCat)
При анализе протоколов Вас даже это не интересует. Вам неважно какой интервал между фронтом CS и фронтом CLK при анализе протокола SPI или аналогичного

Ну-ну. Есть не только SPI. Есть например UART. Тоже не важно какой интервал?
Quote (LazyCat)
вначале просматривает весь буфер и ищет минимальный интервал - это будет скорость передачи

Есть еще такая вещь как помехи. Самый короткий с высокой вероятностью и будет помехой.
Quote (LazyCat)
При анализе RS232 плагин действует аналогично, вначале просматривает весь буфер и ищет минимальный интервал - это будет скорость передачи(автоматически, но можно задать и вручную). Затем с начала буфера он ищет START-условие и упаковывает данные согласно спецификации и Вашим настройкам.

Интересно - что это за условие. Применительно к USART. Особо интересно - в синхронном режиме без старт/стопов. Это SPI почти, только CS нет.
Quote (LazyCat)
Интервал между пакетами опять же зависит от многих факторов и в большинстве случаев неинтересен !

Надо же. Предложение о установке предыстории через время как раз и основано на том, что то что между пакетами - неинтересно.
Quote (LazyCat)
Повторяю, при анализе протоколов нужны выходные РЕАЛЬНЫЕ ДАННЫЕ, а временные интервалы не важны !

Анализ протоколов сделать может только МК. Мы же обсуждаем плис. Если в ней потерять привязку ко времени, то и МК уже никакой анализ не проведет. Ну и для примера картинка из рекламы USBee. Там анализ SPI и время учитывается. Можно посмотреть это время для любого сигнала.

Quote (LazyCat)
И чтобы использовать всю мощь плагинов USBee еще полгода назад было решено скидывать захваченный буфер на РС, распаковать его в формате USBee(тут я предлагал свою помощь) и далее подробно анализировать данные на большом экране и мышкой, кстати не заботясь о заряде батареи

А сможете? В USBee всего одна чувствительность - амплитудные измерения невозможны. В USBee нет возможности сдвигать сигнал и соответственно не выйдет объяснить USBee что сигнал сдвинут вверх или вниз. Распаковать то, что вышло после пикового детектора "взад" не возможно - это сжатие с потерями. Ну и т.д. Даже через файлы и то нормально не получится. Впрочем можете попробовать. Мне интересно посмотреть на результат. Для этого не нужны реальные данные, можно на синтезированных. К примеру на синусоиде 50Гц.
Quote (LazyCat)
Возможно. Я честно говорил, что не симулировал

Ну так начните. Что за причина не использовать квартус? Единственную что я могу предположить - очень старый комп который просто не справится с большой и тяжелой программой. Ну так есть MAX+PLUSII - он маленький. Упаковать в современный кристалл он не сможет как и времянки анализировать. Но вот функциональную симуляцию он осилит.
Quote (LazyCat)
а всего лишь указал недостаток и сказал, что необходима линия задержки на 2 такта.

Да не нужна никакая линия. С началом новой выборки регистры накопителя минимумов/максимумов перезаписываются принудительно значениями с АЦП. То, что в них было до этого - накопленные данные, их надо сохранить. Значит в том же такте, когда они принудительно перезаписываются их старое значение надо переписать куда то еще. Выход у дециматора 1 - туда пишем максимумы. А минимумы значит надо поместить куда то еще. Если некуда - надо создать такое место. Сейчас у Влада что то в схеме все равно не так. Потому что вся эта логика зависит только от одного сигнала - который начинает новую выборку перезаписывая накопитель данными с АЦП.
Quote (LeftRadio)
USBee ведь позволяет сохранять осциллограммы? Ну вот и тогда еще подумали именно под формат этих файлов и подделываться.

Чуть выше рассказал. Именно USBee плохой вариант для осциллографа. Для ЛА сойдет, для осциллографа - будет просто убого.
Но для ЛА вариантов и так много. Даже опенсурсных. Надо искать такой же для осциллографа. В опенсурсе можно и не через файлы, а напрямую с интерфейса - просто изменить тот интерфейс что там на нужный - CDC. Наличие исходников такое позволяет.
Quote (LeftRadio)
Или уже просто счетчиком как в осцилле? Правда это тоже время

Нет, для всего что после триггера все плохо. В смысле для ЛА - в осциллографе то нет RLE.
 
LeftRadio Четверг, 22.03.2012, 20:29 | Сообщение # 2710
Совсем живу сдесь...
Группа: Администраторы
Сообщений: 2045
Статус: Offline
Quote (kison)
А минимумы значит надо поместить куда то еще. Если некуда - надо создать такое место. Сейчас у Влада что то в схеме все равно не так. Потому что вся эта логика зависит только от одного сигнала - который начинает новую выборку перезаписывая накопитель данными с АЦП.

Сейчас именно так и работает :) , на перезарузку входных регистров идет сигнал MIN_MAX_LOAD, это тот же сигнал что и MIN_MAX_SEL которым перезагружаются доп. регистры для минимумов. На мультиплексоры также идет этот же сигнал, получаем пока он в 1 у нас перезаружаются входные регистры и сохраняется минимум, становится 0 - мультиплексор переключается на другой вход, и пишется максимум в память и на следующий такт на выходе мультиплексора уже данные минимума.

Quote (kison)
Для ЛА сойдет, для осциллографа - будет просто убого.

Только для ЛА и хотелось, что бы не писать на ПК свое :) Просто один не потяну еще и софт на ПК и так всего хватает. а по опыту знаю что это не два пальца, что бы сделать нормальный, качественный софт которым удобно пользоваться не так просто, нужно быть одновременно программистом, дизайнером, почитать эргономику, математику не забыть, хотя там она простая но все же :) , выловить глюки, и главное довести все это до ума :D

Quote (kison)
Нет, для всего что после триггера все плохо.

Непойму чем, ну пусть запишем чуть больше чем надо, предыстория не перезапишется - остановится счетчик, в чем проблема тогда? Типа запишем меньше чем надо, так ведь можно задавать с запасом. Ну или действительно пусть WIN_Counter будет "уметь" считать от реального количества точек которое можно брать с выхода счетчика для RLE


---

Нет войне!
 
kison Четверг, 22.03.2012, 21:09 | Сообщение # 2711
Завсегдатай
Группа: Друзья
Сообщений: 275
Статус: Offline
Quote (LeftRadio)
на перезарузку входных регистров идет сигнал MIN_MAX_LOAD,

Ну у меня старая схема значит. Там сигнал - EN вызывает принудительную запись в накопители в начале выборки.
Quote (LeftRadio)
Только для ЛА и хотелось, что бы не писать на ПК свое

Для осциллографа софт не менее нужен. Свести и сравнить 2-3-4 осциллограммы например. Это для маленького МК чересчур тяжело, а ПК справится легко.
Что касается ЛА USBee совсем не лучший вариант. Там дискретизация максимум 24 мегасэмпла. А тут - 50. Все времена разъедутся. На экране одно, но надо в уме их пересчитывать. Опять же - там минимальный буфер 1 мегабайт. Придется разжимать минимум в 4 раза. В общем ИМХО кривое решение с какой стороны не посмотри.

Quote (LeftRadio)
Непойму чем, ну пусть запишем чуть больше чем надо, предыстория не перезапишется - остановится счетчик

Какой счетчик остановится? Мы не знаем сколько выборок в предыстории, знаем только время. И не можем соответственно корректно задать значение для счетчика после триггера. Если вставить счетчик на предысторию, то проблема станет обратной - мы можем задать выборки, но не знаем сколько их задать. Это шутки такие из за RLE. Сжатие расширяет возможности, но своеобразно. Т.е. не прогнозируемо заранее. Шанс получить не то, что хотелось в обоих вариантах одинаков. Но вариант с заданием предыстории через время при этом не требует ресурсов. Вот и выбираем из двух кривых способов. Но один как бы бесплатный - поэтому я считаю его предпочтительным. Ну и еще причина - для осциллографа он не кривой. Впрочем со счетчиком тоже для осцилла нормально все. Но по пять. А тот по три. Но вчера... :D
 
LeftRadio Четверг, 22.03.2012, 23:48 | Сообщение # 2712
Совсем живу сдесь...
Группа: Администраторы
Сообщений: 2045
Статус: Offline
Самый простой способ - запоминать адрес с которого начали запись и на нем же останавливаться, компаратор плюс регистр, а счетчик внутри действительно получается бесполезным. Нужно подумать как проще выключать сжатие и писать с сжатием только всю память без всяких предысторий, просто по срабатывания триггера.

---

Нет войне!
 
kison Пятница, 23.03.2012, 00:08 | Сообщение # 2713
Завсегдатай
Группа: Друзья
Сообщений: 275
Статус: Offline
Quote (LeftRadio)
Самый простой способ - запоминать адрес с которого начали запись и на нем же останавливаться

Решение простое и красивое. Только вот - как же узнать этот адрес? :) Я месяца три думаю над проблемой. И что то свет в конце туннеля все не появляется... :(
Quote (LeftRadio)
Нужно подумать как проще выключать сжатие и писать с сжатием только всю память без всяких предысторий, просто по срабатывания триггера.

Вот примерно к этому и я прихожу. Что сжатие вовсе не халва, в ней дегтя намешано тоже прилично.
 
LazyCat Пятница, 23.03.2012, 11:26 | Сообщение # 2714
Завсегдатай
Группа: Проверенные
Сообщений: 329
Статус: Offline
Quote (LeftRadio)
А что он выдаст на выходе? Просто странно, ничего мерить не надо и оно нас не интересует, что же тогда делает плагин? Анализирует пакеты приема/передачи?

Еще раз, для стандартных протоколов написано много плагинов(есть в сети даже с исходниками) и все они работают примерно одинаково: побайтно просматривают буфер и в нужном канале ждут START-условие (перепад 1/0 на шине DATA при CLK=1 для I2C, перепад 0/1 на шине CS для MICROWARE, перепад 1/0 на шине S для SPI или для UART и т.д.). Естественно, при этом ничего измерять не надо. Далее просто упаковываем байты согласно спецификации(ищем перепад 0/1 на шине CLK и фиксируем состояние шины DATA). Понятно, что и тут ничего не меряем ! С UART поступаем несколько по другому. Когда мы определились со скоростью(автоматически или вручную) мы знаем сколько ячеек памяти(n) занимает клок и от START-условия отсчитываем 1.5n ячеек и фиксируем D0, далее отсчитываем n ячеек и фиксируем D1 и т.д. В любом случае упакованные данные протоколов можно сохранить даже в текстовый файл.
Кстати, эти плагины писал не я, и всю критику их работы не ко мне :D

Quote (LeftRadio)
Какого? Вот любите Вы сказать что недостаток есть, а даже намека нет что за недостаток

Если Вы не захотели внимательно посмотреть мою схему(я, кстати, ранее слово "внимательно" выделял даже жирным), не захотели прочитать мои посты, где я дважды указывал на прореживатель, то какие еще нужны намеки я даже не знаю :(

Quote (LeftRadio)
А что будет если я на двух каналах задам условия, какой раньше сработает там триггер и будет?

Совершенно верно, ведь Вы задаете режим любой из нескольких.

Quote (kison)
Есть еще такая вещь как помехи. Самый короткий с высокой вероятностью и будет помехой.

Есть еще такая вещь как усреднение. Надеюсь объяснять как это работает не нужно. И, кстати, для UART в наиболее продвинутых плагинах данные фиксируются по мажоритарному принципу(1 из 3), как сделано в любом железе. Это тоже повышает помехозащищенность :)

Quote (kison)
Анализ протоколов сделать может только МК. Мы же обсуждаем плис. Если в ней потерять привязку ко времени, то и МК уже никакой анализ не проведет.

Скажу более, в МК этого тоже никто делать не будет (преимущества РС я уже упоминал) !!! И о какой потере привязки ко времени Вы говорите ? Мы же фиксируем данные строго по сигналу от прореживателя и не важно упаковываем мы их или нет !!!

Quote (kison)
А сможете? В USBee всего одна чувствительность - амплитудные измерения невозможны. В USBee нет возможности сдвигать сигнал и соответственно не выйдет объяснить USBee что сигнал сдвинут вверх или вниз.

Надеюсь Вы говорите это не про ЛА :D

Quote (LeftRadio)
Ну или действительно пусть WIN_Counter будет "уметь" считать от реального количества точек которое можно брать с выхода счетчика для RLE

:)
Quote (LeftRadio)
Самый простой способ - запоминать адрес с которого начали запись и на нем же останавливаться, компаратор плюс регистр

Это первый вариант, который я предложил ? На самом деле полезного функционала он не добавляет...


Сообщение отредактировал LazyCat - Пятница, 23.03.2012, 11:29  
 
kison Пятница, 23.03.2012, 12:54 | Сообщение # 2715
Завсегдатай
Группа: Друзья
Сообщений: 275
Статус: Offline
Quote (LazyCat)
Еще раз, для стандартных протоколов написано много плагинов(есть в сети даже с исходниками)

Хорошо, где взять пример таких плагинов? Естественно с исходниками. Дайте ссылочку на такой.
Quote (LazyCat)
где я дважды указывал на прореживатель

Я вот тоже не видел. Да и вообще не понимаю в чем недостаток на сейчас. У меня почти так же, я проверял в симуляторе долго и упорно и граблей там так и не увидел. Так где же косяк?
Quote (LazyCat)
И, кстати, для UART в наиболее продвинутых плагинах данные фиксируются по мажоритарному принципу(1 из 3), как сделано в любом железе. Это тоже повышает помехозащищенность

Вот - как раз на такой плагин ссылочка и нужна. Продвинутый и в исходниках - то что доктор прописал.
Quote (LazyCat)
Скажу более, в МК этого тоже никто делать не будет

Я - буду. :D Так что насчет никто - мимо :D
Quote (LazyCat)
Надеюсь Вы говорите это не про ЛА

Нет - про осцилл. Но с ЛА тоже не все хорошо - USBee слишком сильно отличается. Я очень сомневаюсь, что и через файлы с этой софтиной удастся подружить другой прибор. Да и описание формата там еще то. Краткость конечно сестра таланта, но не настолько.
 
kt_315 Пятница, 23.03.2012, 16:49 | Сообщение # 2716
Частый посетитель
Группа: Проверенные
Сообщений: 89
Статус: Offline
Здравствуйте.

Хотелось узнать возможность просмотра фигур «лиссажу» на 3 версией (и также не против и за вторую версию услышать)? Если не затруднит автора.

И еще одно по поводу дисплея, я так понимаю судя по маркировки он 3,2 дюйма, а нет возможности использовать с размером по больше, скажем к примеру дюймов 5 -7, я конечно понимаю что стоимость существенно подскочит, ну скажем я видел в районе 50 – 80 $ можно взять 5 дюймовый дисплей, или есть возможность использовать любой дисплей только который контроллере HX8352 (возможно использование с большим разрешением скажем 800 на 600, или на оборот с меньшем разрешением скажем 320 на 240 )? Или использование дисплея с другим контроллером?

А еще, а можно пожалуйста, более детальнее характеристики 3 версии, а то я как-то если честно заплутался сравнивая со второй, получается что версия 2 более высокую частоту пропускания имеет?

Заранее благодарю за ответ.

П.с. Возможно уже на форуме обсуждалось (я так думаю что да) , если не затруднит тогда скиньте ссылки, к сожалению еще не успел прочитать всю ветку.
 
LeftRadio Пятница, 23.03.2012, 18:05 | Сообщение # 2717
Совсем живу сдесь...
Группа: Администраторы
Сообщений: 2045
Статус: Offline
Добрый день, фиуры лиссажу сейчас рисовать это чисто в софте реализация, до этого еще не дошли :) Хотя программа под МК уже можно считать готова, то есть основной функционал работает, фигуры лиссажу добавлю как только приедут платы и соберу/запущу осцилл.
По поводу ЖК, да, есть сравнительно недорогие ЖК с диагональю 5-7", но у них у всех интерфейс RGB, то есть нужен МК с контроллером RGB TFT и память для видео буфера не забыть :) Да и получится уже не "карманник"...

Quote (kt_315)
А еще, а можно пожалуйста, более детальнее характеристики 3 версии, а то я как-то если честно заплутался сравнивая со второй, получается что версия 2 более высокую частоту пропускания имеет?

Характеристики для 3-ей версии я указывал скромные, в чстности по полосе я уверен что там больше будет, но пока прибор не собран точно сказать никак не могу и поэтому указал ту полосу которая гарантированно будет :) Да и зачем там больше полосы, Вы смотрите на дискретизацию - 50Msps. Во второй версии я приводил характеристики без аналога, то есть только с драйверным/буферным ОУ и поэтому полоса аналогового сигнала указывалась близкой к полосе пропускания этого ОУ. Также во второй версии есть интерлив и поэтому там указана частота дискретизации вдвое более высокой для одноканального режима, в 3-ей версии тоже предусмотрел возможность интерлива, но пока из-за трудностей его реализации в ПЛИС этот режим отложен как "возможное будущее". Отличий 3-ей версии много - большая память, нормальный не софтовый триггер и т.д

Quote (kison)
Решение простое и красивое. Только вот - как же узнать этот адрес? :)

Да действительно проблема :( Ну а если действительно оставить счетчик предыстории внутри плис и пусть считает "реальные" выборки как и счетчик после истории, тогда задав предысторию+послеисторию не большим размера памяти будем уверены что ничего не сотрется, как в осцилле :) И не важно как там пишутся сжатые данные эти счетчики считают только отсчеты, а в режиме когда нужна максимальная память просто запускаем без всяких предысторий записывать полностью память переключая счетчик послеистории на счет от RLE.

Quote (LazyCat)
то какие еще нужны намеки я даже не знаю

Не нужны мне намеки :( Я так и не понял зачем в прореживатель теперь приходит сигнал от срабатывания триггера. В чем его работа не устраивала в чем недостаток? Я при самых разных симуляциях ошибки в работе прореживателя не нашел.

Quote (LazyCat)
Скажу более, в МК этого тоже никто делать не будет (преимущества РС я уже упоминал) !!!

А почему?? Неужели нельзя например тот же обмен по SPI отобразить на ЖК? И видно его будет нормально, не хамелионовский же ЖК все же :)

Quote (kison)
Но с ЛА тоже не все хорошо - USBee слишком сильно отличается.

Ну и бог с ним, если есть готовые опенсорсные плагины то задача своего софта во много раз упрощается :) Правда я в гугле поискал и ничего похожего не увидел, сейчас еще поищу может неправильно искал :)


---

Нет войне!
 
kt_315 Пятница, 23.03.2012, 18:22 | Сообщение # 2718
Частый посетитель
Группа: Проверенные
Сообщений: 89
Статус: Offline
Оо :) даже не ожидал на такой быстрый ответ, большое спасибо за ответ, на счет экрана сам подумал, что да действительно, если картинка нужна по больше можно, и на компьютере посмотреть, в этом Вы правы, на счет фигур лиссажу очень полезная «весчь» и даже наверное нужная, поэтому будем ждать я надеюсь что это сделается, благо и так уже есть два канала. :)

Сообщение отредактировал kt_315 - Пятница, 23.03.2012, 18:28  
 
atmicandr_old Пятница, 23.03.2012, 18:55 | Сообщение # 2719
Местный
Группа: Друзья
Сообщений: 186
Статус: Offline
Кстати, раз уж затронули тут версию 2 то у примененных в аналоговой части операционников от максима, цена которых просто космос - 4202 и 4212 есть полные аналоги- EL8101 & EL8103, которые можно получить у интерсила в качестве образцов, причём гораздо проще чем просить образцы у максима.

А я лампы соберу, молоточком все побью. LED&LCD рулят. Мой ящик: andrey66k@gmail.com
 
kison Суббота, 24.03.2012, 07:25 | Сообщение # 2720
Завсегдатай
Группа: Друзья
Сообщений: 275
Статус: Offline
Quote (LeftRadio)
фигуры лиссажу добавлю как только приедут платы и соберу/запущу осцилл.

Я всегда считал это чисто аналоговой примочкой. В цифровом форма таких фигур будет в основном зависеть от метода и качества расчета интерполяции, а не от формы/частот входных сигналов. Мало кто этот режим вообще встраивает. Ибо не информация о фазах, а цена апельсинов в Ташкенте отрисуется.
Quote (LeftRadio)
Ну а если действительно оставить счетчик предыстории внутри плис и пусть считает "реальные" выборки как и счетчик после истории, тогда задав предысторию+послеисторию не большим размера памяти будем уверены что ничего не сотрется, как в осцилле

Только вот что задавать в эти счетчики? Сам по себе счетчик предыстории не нужен. Он автоматом получается из объема памяти и счетчика после триггера. Если в этом счетчике задано выборок меньше, чем объем памяти - будет и предыстория. Гарантированная в выборках, а не во времени. Точно так же, как и после триггера - выборки, а не время.
Я решил сжатие сделать резервным - только вся память и только без предыстории. А вместо сжатия вставлю дециматор и в ЛА. Для известных сигналов типа RS485 на 9600 бит/с это даже больше времени позволит записать. Снижу дискретизацию до 100КГц и ну нафиг это сжатие. Зато точно буду знать сколько времени до триггера, сколько после. А сжатие - только в одну сторону будет. Там уж сколько влезет записать, столько и влезет.
 
Форум » Сайт и форум » Разработки и Статьи на сайте » Все вопросы касающиеся Neil Scope (Ваши замечания, предложения и т.д.)
Поиск:
uTmpl.ru Сайт создан в системе uCoz Сейчас: 28.03.2024, 17:17