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

Форум » Сайт и форум » Разработки и Статьи на сайте » Все вопросы касающиеся 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 Суббота, 02.07.2011, 23:05 | Сообщение # 1401
Совсем живу сдесь...
Группа: Администраторы
Сообщений: 2045
Статус: Offline
Хорошо, попробую как можно скорее отсимулировать, асинхронный сброс счетчика не хотелось бы использовать, quartus автоматом генерирует вот такую осциллограмму:



cout я думаю при асинхронном сбросе перейдет в ноль если был активный. Точнее смогу сказать позже.

-------------------------------------------------------------------------------------------------------
Просимулировал, потеря отсчетов все равно есть, WE вроде вписывается в осциллограммы записи SRAM, но "впритык" хотя я может зря волнуюсь :) Не понравились иголки при переключении мультиплексора, они из-за того что пришлось убрать регистры из мультиплексоров так как иначе мин. вообще не записывается.
Прикрепления: 9298748.jpg (179.5 Kb) · ns31.pdf (25.5 Kb) · 8563590.png (49.6 Kb) · 8417930.png (46.1 Kb)


---

Нет войне!


Сообщение отредактировал LeftRadio - Воскресенье, 03.07.2011, 08:11  
 
LazyCat Воскресенье, 03.07.2011, 11:17 | Сообщение # 1402
Завсегдатай
Группа: Проверенные
Сообщений: 329
Статус: Offline
Quote (LeftRadio)
Просимулировал, потеря отсчетов все равно есть,

Да, забыл выкинуть ненужные буферные регистры на выходах АЦП :(
Про асинхронный сброс всеравно ничего не понял, ну да ладно, обойдемся без него :)
 
LeftRadio Воскресенье, 03.07.2011, 18:10 | Сообщение # 1403
Совсем живу сдесь...
Группа: Администраторы
Сообщений: 2045
Статус: Offline
Quote (LazyCat)
Да, забыл выкинуть ненужные буферные регистры на выходах АЦП :(

Их не нужно выбрасывать иначе не будет правильно работать разрешение записи макс./мин., они для синхронизации данных АЦП "под" клок который внутри ПЛИС.


---

Нет войне!
 
LazyCat Воскресенье, 03.07.2011, 18:43 | Сообщение # 1404
Завсегдатай
Группа: Проверенные
Сообщений: 329
Статус: Offline
Quote (LeftRadio)
Их не нужно выбрасывать иначе не будет правильно работать разрешение записи макс./мин.

А можно посмотреть осциллограммы ?
 
LeftRadio Воскресенье, 03.07.2011, 20:22 | Сообщение # 1405
Совсем живу сдесь...
Группа: Администраторы
Сообщений: 2045
Статус: Offline
Вот осциллограмма, компаратор сравнивает DATA_A с MAX_DATA_A/MIN_DATA_A, на WE пока не обращайте внимания, есть некоторые идеи :) , как додумаю выложу.



А вот без "буферного" регистра, вроде все нормально, но нужно учитывать что приход данных с АЦП не полностью соответствует реальности, лучше все же перестраховаться и оставить регистры не так много сэкономим если их выкинуть, всего 16 lut.



И еще присмотрелся к прошлым осциллограммам предложенного Вами варианта, увидел что WE "не вписывается", переход из 0 в 1 происходит уже после смены адреса памяти.
Прикрепления: 2748223.png (47.0 Kb) · 8390696.png (46.5 Kb)


---

Нет войне!


Сообщение отредактировал LeftRadio - Воскресенье, 03.07.2011, 20:31  
 
LazyCat Понедельник, 04.07.2011, 10:18 | Сообщение # 1406
Завсегдатай
Группа: Проверенные
Сообщений: 329
Статус: Offline
По таким осциллограммам вообще о чем-либо судить невозможно !!! Отсутствия буферного регистра на них не видно, т.к. ADC_DATA_A != DATA_A.
А по-поводу работы всех триггеров и счетчиков в ПЛИСе я уже писал - они работают всегда неправильно(если на схеме заявлено срабатывание по фронту, то они срабатывают по спаду и наоборот). В чем причина такого поведения я не знаю и это очень мешает разработке !

P.S. Возвращаясь к прежней просьбе, очень бы хотелось увидеть реакцию вычитающего счетчика на синхронный и асинхронный сброс.
 
LeftRadio Понедельник, 04.07.2011, 14:14 | Сообщение # 1407
Совсем живу сдесь...
Группа: Администраторы
Сообщений: 2045
Статус: Offline
Quote (LazyCat)
По таким осциллограммам вообще о чем-либо судить невозможно !!! Отсутствия буферного регистра на них не видно, т.к. ADC_DATA_A != DATA_A.

Вторая осциллограмма без буферного регистра, DATA_A "запаздывает" относительно ADC_DATA_A из-за задержки прохождения сигнала от "входа" ПЛИС(ADC_DATA_A) до "выхода"(DATA_A). Меня тоже удивило что регистры макс./мин. записывают значения по спаду клока когда clk_en = 1. Но это только так кажется, все же они срабатывают по фронту, но из-за задержки прохождения сигнала до вых. WR_MAX_A относительно clk_en на осциллограмме мы такую странность и видим. Обратите внимание данные на выходе регистров появляются чуть раньше чем спад клока, то есть они никак не могут срабатывать по спаду.

Quote (LazyCat)
Возвращаясь к прежней просьбе, очень бы хотелось увидеть реакцию вычитающего счетчика на синхронный и асинхронный сброс.

Что именно? Я ведь выкладывал с асинхронным сбросом, cout перейдет в 0 если был активен, тоже самое счетчик перейдет к изначальному состоянию, чуть позже создам отдельный проект со счетчиками и выложу результаты.


---

Нет войне!
 
LeftRadio Вторник, 05.07.2011, 07:41 | Сообщение # 1408
Совсем живу сдесь...
Группа: Администраторы
Сообщений: 2045
Статус: Offline
Вот, еще раз осциллограммы работы теперешнего варианта с коэффициентами прореживания 5 и 10:





СХЕМА

При любом коэффициенте теряется последний минимум(обвел красным), это конечно не так страшно, как и не страшны были потери при вычислениях последнего максимума при нечетных коэффициентах прореживания(при четных ничего не терялось) в моем варианте. Теперь о небольших изменениях записи в память, я предлагаю все же для сохранения полной синхронности(не только внутри ПЛИС) пускать клок на SRAM напрямую с генератора на вывод CE, а на WE только разрешение записи, Write Cycle No. 1 (CE Controlled) стр. 8 из - даташита. Клок в любом случае желательно отключать для экономии батареи, я уже упоминал про это.

По поводу вычитающего счетчика был не прав насчет cout, вот схема:



Реакция на синхронный сброс:



И асинхронный:



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

Подправил схему - http://hobby-research.at.ua/NS3/NS_3.0_rev_1.2.pdf

По аналогу, так как не нашли пока подходящего и доступного реле поставил просто фиксированный делитель. R-2R конечно хорошо тем что меньше номиналов и фиксирован импенданс по входу ОУ, но как быть с неточным коэффициентом деления? В даташите на AD603(Figure 1) это явно видно.
Прикрепления: 2033176.png (56.5 Kb) · 1769610.png (18.1 Kb) · 6749324.png (17.1 Kb) · 1159956.png (10.3 Kb) · 0025376.png (50.5 Kb)


---

Нет войне!


Сообщение отредактировал LeftRadio - Вторник, 05.07.2011, 08:57  
 
LazyCat Вторник, 05.07.2011, 11:18 | Сообщение # 1409
Завсегдатай
Группа: Проверенные
Сообщений: 329
Статус: Offline
Quote (LeftRadio)
При любом коэффициенте теряется последний минимум

Странно, вроде у меня выходило все нормально, посмотрю внимательнее :)

Quote (LeftRadio)
я предлагаю все же для сохранения полной синхронности(не только внутри ПЛИС) пускать клок на SRAM напрямую с генератора на вывод CE, а на WE только разрешение записи

Но приводит к дополнительным извратам при чтении памяти :( На досуге обдумаю.

Quote (LeftRadio)
R-2R конечно хорошо тем что меньше номиналов и фиксирован импенданс по входу ОУ, но как быть с неточным коэффициентом деления

Почему неточным ? Строгая линейка коэффициентов деления: 1/2, 1/4, 1/8, 1/16, 1/32, 1/64, 1/128 ! Или имелся ввиду нестандартный ряд ?

P.S. За осциллограммы сбросов большое спасибо, теперь нарисую законченный вариант.


Сообщение отредактировал LazyCat - Вторник, 05.07.2011, 11:19  
 
LeftRadio Вторник, 05.07.2011, 11:28 | Сообщение # 1410
Совсем живу сдесь...
Группа: Администраторы
Сообщений: 2045
Статус: Offline
Quote (LazyCat)
Почему неточным ? Строгая линейка коэффициентов деления: 1/2, 1/4, 1/8, 1/16, 1/32, 1/64, 1/128

Я имел ввиду в дБ :) , ну да неважно очень они уж нестандартны для осциллографа... Не очень хочется иметь пределы типа 5.7832 В/дел....

А на счет извратов с выключением генератора, так там всего 1 транзистор... Как вариант можно в качестве генератора поставить те же DS1077, DS1085 и никаких доп. транзисторов :) С чтением никаких проблем главное что бы CE был в 0, а RW в 1 и это легко реализуемо.


---

Нет войне!


Сообщение отредактировал LeftRadio - Вторник, 05.07.2011, 11:42  
 
Муха Вторник, 05.07.2011, 11:45 | Сообщение # 1411
Почетный Гражданин
Группа: Модераторы
Сообщений: 579
Статус: Offline
Quote (LeftRadio)
Как вариант можно в качестве генератора поставить те же DS1077, DS1085 и никаких доп. транзисторов

DS1077, DS1085 достаточно тяжело народу достать... Лучше пусть обычный генератор + транзистор. :)
 
LeftRadio Вторник, 05.07.2011, 13:23 | Сообщение # 1412
Совсем живу сдесь...
Группа: Администраторы
Сообщений: 2045
Статус: Offline
Согласен, простой генератор проще найти :)

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


---

Нет войне!
 
LazyCat Среда, 06.07.2011, 09:45 | Сообщение # 1413
Завсегдатай
Группа: Проверенные
Сообщений: 329
Статус: Offline
Quote (LeftRadio)
Сегодня думаю закончу в ПЛИС интерфейс к МК

Так мы же даже не определились с количеством управляющих сигналов :(

P.S. В последнем варианте на выходах мультиплексоров разве нет регистров ?

P.P.S. Посмотрел прогу для PC. Теперь вроде все нормально, но удивили делители типа 0.02 mV/div :) Раньше ведь лучше было.
 
LeftRadio Среда, 06.07.2011, 13:17 | Сообщение # 1414
Совсем живу сдесь...
Группа: Администраторы
Сообщений: 2045
Статус: Offline
Quote (LazyCat)
Так мы же даже не определились с количеством управляющих сигналов :(

Чем меньше, тем лучше :) С МК клок, сигнал запись/чтение, старт, ну и на МК сигнал окончания записи, это не считая 8-ми битной шины естественно. Все остальные режимы/настройки через регистры в ПЛИС. Может что еще нужно?

Quote (LazyCat)
P.S. В последнем варианте на выходах мультиплексоров разве нет регистров ?

Есть.

Quote (LazyCat)
Посмотрел прогу для PC. Теперь вроде все нормально, но удивили делители типа 0.02 mV/div :) Раньше ведь лучше было.

Это надо просто зайти в Hardware>Hardware settings и сохранить настройки для используемого аналога, забыл просто поправить чтобы по умолчанию вбирался один из вариантов.


---

Нет войне!


Сообщение отредактировал LeftRadio - Среда, 06.07.2011, 16:44  
 
LazyCat Среда, 06.07.2011, 22:11 | Сообщение # 1415
Завсегдатай
Группа: Проверенные
Сообщений: 329
Статус: Offline
Вот некоторые изменения и дополнения.
Прикрепления: 1404416.png (1.12 Mb)
 
LeftRadio Четверг, 07.07.2011, 11:09 | Сообщение # 1416
Совсем живу сдесь...
Группа: Администраторы
Сообщений: 2045
Статус: Offline
Ммм... Совсем не понял смысла в SEL_BANK на разрешение счета и вижу что Вы совсем не хотите использовать клок в обход ПЛИС, это приведет к ненужному потреблению при чтении из памяти, плюс к неправильным осциллограммам записи. Также не пойму почему Вы против входных регистров для синхронизации данных, как по мне лучше потратить 16lut и иметь гарантированный результат чем потом столкнутся с проблемным захватом макс./мин.
И еще, зачем использовать счетчик triig_counter для подсчета семплов после срабатывания триггера? Ведь это лишит возможности синхронизироваться по длительности фронта. Я не думаю что будет сложно поставить еще один счетчик для этого.


---

Нет войне!
 
pol11 Четверг, 07.07.2011, 14:45 | Сообщение # 1417
Кто здесь?
Группа: Проверенные
Сообщений: 3
Статус: Offline
Добрый день, господа!
Будьте добры, скажите, сильно ли отличается HX8352 от ILI9320?
Есть дисплей с этим контроллером "на шару" и хочется попробовать
его в Вашем осциллографе!
 
LeftRadio Четверг, 07.07.2011, 17:23 | Сообщение # 1418
Совсем живу сдесь...
Группа: Администраторы
Сообщений: 2045
Статус: Offline
День добрый, к сожалению отличается сильно по управлению да и разрешение у ILI9320 меньше - 320х240, а у HX8352 - 400х240.

------------------------------------------------------------------------------------------------------------
to LazyCat. Вот как я себе представляю дизайн в ПЛИС, Ваш вариант еще не рисовал, свой правда просимулировал только то что не касается триггера, триггер не успел. Немного опишу логику работы, для начала записи с предысторией переводим R_W в 1 ждем сколько надо времени и разрешаем триггер сигналом EN_TRG, память продолжает циклически записываться, при срабатывании триггера, который может срабатывать и на заданную длительность фронта/спада(обычный режим или на длительность выбирается битом SDATA1[4]), начинает считать счетчик lpm_counter5(который загружается асинхронно в период чтения из памяти), При окончании счета останавливается счетчик адреса SRAM и блокируется сигнал SRAM_WE предотвращая дальнейшую запись в память. Также генерируется сигнал WR_READY для того чтобы МК знал что запись окончена, загружается адрес на котором остановились в счетчик Read_counter. Затем МК отключает внешний генератор тактовой, выбирает какой канал считывать сигналом SEL_BANK(по умолчанию в нуле). В двухканальном режиме сначала вычитываем один канал, Read_counter при этом считает "вниз", а затем другой канал в обратную сторону. Двухканальный/одноканальный режимы выбираются битом SDATA1[5]. При одно канальном режиме, не важно А или В, Read_counter считает только вниз.
Режимы без предыстории и однократный запуск реализуются элементарно, что бы запустить без предыстории достаточно установить EN_TRG одновременно с установкой в 0 R_W, в режиме однократного запуска тоже самое. Размер захватываемого окна в обеих случаях зависит от того что грузим в lpm_counter5.

Прикрепляю схему и результат построения.
Прикрепления: ns33.pdf (28.8 Kb) · bld.pdf (8.6 Kb)


---

Нет войне!
 
LazyCat Четверг, 07.07.2011, 21:10 | Сообщение # 1419
Завсегдатай
Группа: Проверенные
Сообщений: 329
Статус: Offline
Quote (LeftRadio)
Совсем не понял смысла в SEL_BANK на разрешение счета

Он выбирает читаемый канал, а заодно служит стробом для переключения адреса при чтении.

Quote (LeftRadio)
вижу что Вы совсем не хотите использовать клок в обход ПЛИС, это приведет к ненужному потреблению при чтении из памяти, плюс к неправильным осциллограммам записи.

Ненужное потребление незначительно и им можно пренебречь, а над осциллограммами я еще думаю :)

Quote (LeftRadio)
почему Вы против входных регистров для синхронизации данных

Буферные регистры тактируются совершенно аналогично регистрам max и min и поэтому выгоды никакой не дают. Получается масло масляное.

Quote (LeftRadio)
зачем использовать счетчик triig_counter для подсчета семплов после срабатывания триггера

Схема триггера делалась абсолютно автономной и не требует от МК дополнительных алгоритмических действий. Она отличается минимальным числом элементов и управляющих сигналов, а также работает в режиме с предысторией и без. А режим синхронизации по длительности фронта я не понимаю, за всю свою практику ни разу не использовал и даже не знаю в каких приборах он есть :( Если он так уж необходим, то можно над этим подумать.
По поводу Вашего триггера могу сказать, что кроме чрезмерной сложности он имеет большой просчет: нельзя так подавать сигнал на тактовые входы inst27 и inst30, т.к. возможный мусор вызовет сбои в работе.

P.S. И еще неправильно используется MCU_CLK_REG.


Сообщение отредактировал LazyCat - Четверг, 07.07.2011, 21:15  
 
LeftRadio Пятница, 08.07.2011, 07:35 | Сообщение # 1420
Совсем живу сдесь...
Группа: Администраторы
Сообщений: 2045
Статус: Offline
Quote (LazyCat)
Ненужное потребление незначительно и им можно пренебречь

Не согласен, особенно при однократном запуске, получается пока читаем, обсчитываем, выводим на экран, опрашиваем кнопки и т.д. клок исправно тикает вместе со всеми регистрами потребляя ненужную энергию.
Скачал утилиту для расчета потребления, получается около 25-30мА, это не считая еще генератора ~20мА, итого около 50мА, достаточно много для продолжительной автономной работы, остальная схема ведь тоже потребляет, лучше этот ток "отдать" подсветке ЖК.
Плюс моего предложения еще в том, что можно сделать экономный режим работы осцилла, когда выборки осциллограмм будут происходить не одна за другой, а через определенные промежутки времени и на этом реально можно экономить заряд батареи например когда она разряжена, и подзарядить негде.

Quote (LazyCat)
Буферные регистры тактируются совершенно аналогично регистрам max и min и поэтому выгоды никакой не дают.

Да, тактируются аналогично, но захватывают данные по другому, так как нет запрещения записи сигналом WR_MAX/WR_MIN, и компараторы после этих регистров сравнивают данные которые приходят к ним на входы одновременно чем гарантируется что сигналы WR_MAX/WR_MIN поступят на регистры макс./мин. до следующего фронта тактового сигнала. Без этих синхронизирующих регистров захват работает "на пределе", поплыви чего нибудь скажем из-за температуры и захват может не произойти.

Quote (LazyCat)
Схема триггера делалась абсолютно автономной и не требует от МК дополнительных алгоритмических действий.

А как происходит выбор размера предыстории? Или он фиксировано равен окну после?

Quote (LazyCat)
А режим синхронизации по длительности фронта я не понимаю, за всю свою практику ни разу не использовал и даже не знаю в каких приборах он есть :(


Ну вот например(нам конечно все эти режимы не реализовать, просто не влезут):


Полная статья тут.

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

Quote (LazyCat)
нельзя так подавать сигнал на тактовые входы inst27 и inst30, т.к. возможный мусор вызовет сбои в работе.

Да, согласен нельзя, нужно поставить еще ИЛИ, на один вход клок, на другой вых. компаратора.

Quote (LazyCat)
И еще неправильно используется MCU_CLK_REG.

Почему не правильно? Вполне правильно :) В вашем варианте просто экономия одного вывода МК, но при этом клок уже не отключишь.


---

Нет войне!


Сообщение отредактировал LeftRadio - Пятница, 08.07.2011, 09:29  
 
LazyCat Пятница, 08.07.2011, 10:42 | Сообщение # 1421
Завсегдатай
Группа: Проверенные
Сообщений: 329
Статус: Offline
Quote (LeftRadio)
Плюс моего предложения еще в том, что можно сделать экономный режим работы осцилла

Мой вариант тоже работает при отключении клока(даже схема проще за счет исключения триггерного дифференциатора), но такое решение всеравно спорно. Решать Вам :)

Quote (LeftRadio)
Да, тактируются аналогично, но захватывают данные по другому

Так ведь захват и происходит по такту !!!

Quote (LeftRadio)
А как происходит выбор размера предыстории? Или он фиксировано равен окну после?

Этот вопрос мы обсуждали отдельно и Вы сказали, что окна предыстории и основной выборки могут быть одинаковыми(при этом даже нагляднее видно место срабатывания триггера).

Quote (LeftRadio)
Ну вот например(нам конечно все эти режимы не реализовать, просто не влезут)

Нечто подобное было на радиорадаре и мы с kison это обсуждали. Все виды синхронизации слишком специфичны и врядли нужны карманнику. Но можно добавить регистр mask, как у MisterDi, и малыми затратами получить запуск по параметрам окна.

Quote (LeftRadio)
Да, согласен нельзя, нужно поставить еще ИЛИ, на один вход клок, на другой вых. компаратора.

Без триггеров не обойтись :(

Quote (LeftRadio)
Почему не правильно?

Предположим Вы записали нужные данные в один регистр, а в другой уже записать не получится, т.к. запортятся данные в первом :(


Сообщение отредактировал LazyCat - Пятница, 08.07.2011, 10:46  
 
LeftRadio Пятница, 08.07.2011, 11:57 | Сообщение # 1422
Совсем живу сдесь...
Группа: Администраторы
Сообщений: 2045
Статус: Offline
Quote (LazyCat)
Мой вариант тоже работает при отключении клока

Да, но при этом считывать память уже нельзя, то есть опять проблемы с сигналом WE, если клок пустить в обход ПЛИС то для чтения из памяти нужно отключить его, а этого сделать нельзя так как тогда не прочитаем память, выход - делать WE как у Вас, но тогда проблемы с осциллограммой записи из-за задержек... Хотя Ваш вариант конечно более простой и красивый.

Вот кстати еще данные по потреблению:



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

Quote (LazyCat)
Так ведь захват и происходит по такту !!!

По такту, но у "синхронизирующих" регистров не запрещается запись сигналом clk_en и если у регистров записи макс./мин. этот сигнал не придет раньше фронта клока они ничего не запишут, а это очень просто может произойти задержись данные от АЦП еще на самую малость, что легко может произойти при повышении температуры, при изменении топологии печатной платы, разброса входных емкостей EPM570 от микросхемы к микросхеме и даже при не достаточно чисто отмытой платы что может повысить емкость шины.... Цена вопроса два 8-ми битных регистра, не вижу причин для спора :)

Quote (LazyCat)
Нечто подобное было на радиорадаре и мы с kison это обсуждали. Все виды синхронизации слишком специфичны и врядли нужны карманнику.

Согласен, действительно карманнику это может и не надо, значит нужно выкинуть этот блок. Не смотрел как у MisterDi сделано, в кратце принцип захвата по окну при помощи регистра mask не опишите?

Quote (LazyCat)
Без триггеров не обойтись :(

Ну можно и триггеры поставить.

Quote (LazyCat)
Предположим Вы записали нужные данные в один регистр, а в другой уже записать не получится, т.к. запортятся данные в первом

Спасибо, этого не заметил, нужно подумать.
Прикрепления: 9301667.png (42.2 Kb)


---

Нет войне!


Сообщение отредактировал LeftRadio - Пятница, 08.07.2011, 14:02  
 
LazyCat Суббота, 09.07.2011, 10:10 | Сообщение # 1423
Завсегдатай
Группа: Проверенные
Сообщений: 329
Статус: Offline
Quote (LeftRadio)
Цена вопроса два 8-ми битных регистра, не вижу причин для спора

Хорошо, убедили, оставляем буферные регистры.

Quote (LeftRadio)
принцип захвата по окну при помощи регистра mask не опишите?

Стал подробнее разбираться - бред получается, слишком уж специфичные требования должны быть у входного сигнала для праильного выделения нужной группы бит :(
Лучше уж так. При этом, если занести в соответствующий регистр 0x00 или 0xFF, получим синхронизацию по фронту или по спаду. А если занести различные значения, то можно получить синхронизацию при выходе входного сигнала из заданного коридора или при входе его туда :)
Прикрепления: 0752706.png (1.13 Mb)
 
LeftRadio Суббота, 09.07.2011, 12:48 | Сообщение # 1424
Совсем живу сдесь...
Группа: Администраторы
Сообщений: 2045
Статус: Offline
Спасибо, вот еще чего не пойму откуда берутся сигналы start/stop и почему у start два входа, или это один start другой stop?

Не совсем понял почему используется именно aclr а не aload, ведь в первом случае счетчик будет считать до 0xFFFF и неважно что мы в него грузим. Вот осциллограмма:



------------------------------------------------------------------------------
Просимулировал с некоторыми изменениями, в любом случае может не правильно работать так как на выходе cout счетчика проскакивают иголки.
Прикрепления: 9244497.png (45.6 Kb) · 09.07.pdf (11.0 Kb)


---

Нет войне!


Сообщение отредактировал LeftRadio - Суббота, 09.07.2011, 17:31  
 
LazyCat Суббота, 09.07.2011, 15:51 | Сообщение # 1425
Завсегдатай
Группа: Проверенные
Сообщений: 329
Статус: Offline
Quote (LeftRadio)
откуда берутся сигналы start/stop и почему у start два входа

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

Quote (LeftRadio)
Не совсем понял почему используется именно aclr а не aload

Вы правы, здесь нужен именно aload.

Quote (LeftRadio)
в любом случае может не правильно работать так как на выходе cout счетчика проскакивают иголки.

Не совсем понял, что Вы имели ввиду. Но если все же правильно понял, то элемент AND2 все исправит :)

P.S. на схеме компараторы должны быть включены в разные режимы (больше/меньше) !


Сообщение отредактировал LazyCat - Суббота, 09.07.2011, 18:08  
 
LeftRadio Суббота, 09.07.2011, 21:04 | Сообщение # 1426
Совсем живу сдесь...
Группа: Администраторы
Сообщений: 2045
Статус: Offline
Quote (LazyCat)
Я же уже писал

Прошу прощения как то пропустил, теперь понятно, спасибо, но мне больше нравится вариант с просто 1/0 - start/stop.

Quote (LazyCat)
Но если все же правильно понял, то элемент AND2 все исправит :)

Это первое о чем я подумал, но иногда иголки совпадали с 1 такта и алгоритм нарушался :(

Quote (LazyCat)
P.S. на схеме компараторы должны быть включены в разные режимы (больше/меньше) !

Бесмыслица, Вы уж извините. Давайте представим, выставили уровень триггера в 128, на входе данные 64, выход комаратора a>b = 0, a<b =1, значит на выход XOR = 1, теперь данные пересекли порог и равны к примеру 130 и теперь a>b = 1, a<b =0, XOR = 1....

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

Прикрепил мой вариант на основе Вашего, полностью синхронный по "обнаружению и захвату" фронта/спада.
Занимает он всего 43 макроячейки, 8% от EPM570. Ваш вариант к примеру занимает 49 макроячеек(с двумя компараторами), но вопрос естественно не в этом, просто из-за иголок алгоритм сбоил и заставить нормально работать схему я не смог.

В кратце алгоритм, Start изначально в нуле и загружает в lpm_counter0 размер окна, сбрасывает lpm_dff1 и сбрасывает/устанавливает lpm_dff0 в зависимости от сигнала H_OFF который отвечает за захват с предысторией( лог. 0) или без(лог. 1). Для начала захвата переводим Start в 1 чем снимается очистка/загрузка lpm_dff1/lpm_counter0. Теперь алгоритм разветвляется на два - с предысторией и без.

С предысторией вых. lpm_dff0 равен 1, так как H_OFF = 0, то триггер запрещен, а работа счетчика разрешена. Сигнал EN находится все время в 1 - случай макс. дискретизации. При достижении счетчиком нуля он автоматически повторно загружает в себя значение размера окна - WIN[15..0] и разрешается захват сигнала TRG_OUT триггером lpm_dff0, выход lpm_dff0 переходит из 1 в 0 чем запрещается работа счетчика и снимается блокировка захвата синхронизации. Все останавливается(запись в SRAM не запрещается, SRAM продолжает записываться) до срабатывания lpm_dff1 по фронту/спаду, после срабатывания опять разрешается работа счетчика и когда он опять досчитает до нуля выход lpm_dff0 переходит из 0 в 1, сигнал WR_READY переходит из 0 в 1 сигнализируя об окончании захвата и останавливая счетчик адреса SRAM(на схеме этих узлов нет, решил отладить отдельно).

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

Осциллограмма с предысторией:


В режиме без предыстории вых. lpm_dff0 равен 0, так как H_OFF = 1, то триггер разрешен, а работа счетчика запрещена. Все остановлено до срабатывания lpm_dff1 по фронту/спаду, после срабатывания разрешается работа счетчика и когда он досчитает до нуля выход lpm_dff0 переходит из 0 в 1, сигнал WR_READY аналогично с предыдущим режимом. Все, получаем после момента синхронизации фиксированное количество точек.

Осциллограмма без предыстории:


Осциллограмма с предысторией и перезапуском сигналом Start:
Прикрепления: 8561869.png (57.4 Kb) · 6180629.png (57.0 Kb) · 0572957.pdf (11.3 Kb) · 3286984.png (59.1 Kb)


---

Нет войне!


Сообщение отредактировал LeftRadio - Суббота, 09.07.2011, 21:36  
 
LazyCat Суббота, 09.07.2011, 21:37 | Сообщение # 1427
Завсегдатай
Группа: Проверенные
Сообщений: 329
Статус: Offline
Quote (LeftRadio)
но мне больше нравится вариант с просто 1/0 - start/stop.

Кроме усложнения схемы, это не экономит даже количество управляющих сигналов :( Но как хотите... Принципиально одним логическим элементом можно перейти к Вашему варианту.

Quote (LeftRadio)
Это первое о чем я подумал, но иногда иголки совпадали с 1 такта и алгоритм нарушался

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

Quote (LeftRadio)
Бесмыслица, Вы уж извините. Давайте представим, выставили уровень триггера в 128, на входе данные 64,

А для кого я это писал:
Quote (LazyCat)
если занести в соответствующий регистр 0x00 или 0xFF, получим синхронизацию по фронту или по спаду.
?

И второй компаратор я добавил по Вашей просьбе для добавления возможности захвата по окну. Но принцип его работы, я так понимаю, Вы не поняли ?


Сообщение отредактировал LazyCat - Суббота, 09.07.2011, 21:41  
 
LeftRadio Суббота, 09.07.2011, 21:51 | Сообщение # 1428
Совсем живу сдесь...
Группа: Администраторы
Сообщений: 2045
Статус: Offline
Quote (LazyCat)
Кроме усложнения схемы, это не экономит даже количество управляющих сигналов :( Но как хотите...

Да какая разница :) Компилятор там может все оптимизировать что получится даже проще :) , зато уж точно не будет сбоев :) , а сигналов меньше, всего 2, один для запуска/перезапуска(при неправильно выставленном уровне триггера), второй из внутреннего регистра для выбора предыстория/без, так что к МК всего один провод :)
Кстати с двумя компараторами мой вариант занимает всего на 3 макроячейки больше Вашего.

Quote (LazyCat)
Ни на одной осциллограмме иголок я не видел

Они то есть, то нет в зависимости от подключенных выводов для отслеживания сигналов и от компиляции к компиляции, я сам очень был удивлен , я же не из-за вредности :) , сначала у меня получился совсем монстроподобный вариант, он был откинут в пользу Вашего более простого, но из-за сбоев пришлось модифицировать :)

Quote (LazyCat)
А для кого я это писал:

Посыпаю голову пеплом, невнимателен, совсем замотался.


---

Нет войне!


Сообщение отредактировал LeftRadio - Суббота, 09.07.2011, 22:11  
 
LazyCat Суббота, 09.07.2011, 22:26 | Сообщение # 1429
Завсегдатай
Группа: Проверенные
Сообщений: 329
Статус: Offline
Quote (LeftRadio)
зато уж точно не будет сбоев

С триггером и у меня не будет :)

Quote (LeftRadio)
а сигналов меньше, всего 2

Опять невнимательно читаем :
Quote (LazyCat)
Короткий нолик по входу stop прерывает ожидание синхронизации(точнее насильно ее запускает) для случая, когда неправильно выставлен порог триггера и он никогда не сработает

Т.е. в моем случае захват будет всегда и истинные данные будут выведены на экран, что позволит правильно установить порог триггера. Для Вашего сигнала start/stop это невозможно и потребуется еще сигнал !!!
 
LeftRadio Суббота, 09.07.2011, 22:47 | Сообщение # 1430
Совсем живу сдесь...
Группа: Администраторы
Сообщений: 2045
Статус: Offline
Quote (LazyCat)
С триггером и у меня не будет :)

Ну так мой вариант на основе Вашего и отличается практически заменой "обычных" триггеров более "хитрыми" :)

Quote (LazyCat)
Для Вашего сигнала start/stop это невозможно и потребуется еще сигнал !!!

У Вас - один сигнал старт, другой форсированный старт(stop), два сигнала да еще один хитрый требующий доп. логики. В моей модификации если сигнал синхронизации так и не приходит память продолжает записываться, достаточно в МК поставить таймер на таймаут(в Вашем варианте он тоже нужен так что разницы нет) и по таймауту просто остановить запись переводом сигнала Start в 0 и вычитать память на сколько нужно... Единственный случай когда нужен еще один сигнал это когда нужна развертка с вообще выкл. синхронизацией. Насколько этот режим нужен? Правда этот сигнал можно формировать из внутреннего регистра, а не с внешней ноги.


---

Нет войне!


Сообщение отредактировал LeftRadio - Суббота, 09.07.2011, 23:02  
 
LeftRadio Суббота, 09.07.2011, 23:51 | Сообщение # 1431
Совсем живу сдесь...
Группа: Администраторы
Сообщений: 2045
Статус: Offline
Вот полная схема, и рез. компиляции, пока без кнопок.
Прикрепления: ns3_4.pdf (26.6 Kb) · 6476852.png (15.3 Kb)


---

Нет войне!
 
LazyCat Воскресенье, 10.07.2011, 01:23 | Сообщение # 1432
Завсегдатай
Группа: Проверенные
Сообщений: 329
Статус: Offline
Заменить триггер на регистр - хорошая идея !
Я так сделал и в своем варианте. Второй триггер не менял за ненадобностью :)

В Вашем варианте все хорошо кроме того, что неправильно организована логика работы с предысторией :)
Прикрепления: 8664529.png (1.14 Mb)
 
LeftRadio Воскресенье, 10.07.2011, 04:42 | Сообщение # 1433
Совсем живу сдесь...
Группа: Администраторы
Сообщений: 2045
Статус: Offline
Quote (LazyCat)
неправильно организована логика работы с предысторией

Почему неправильно? Запрещаем триггер пишем нужное количество точек, разрешаем триггер, после срабатывания пишем еще такое же количество точек, останавливаем запись, именно так у меня и работает. И еще имейте ввиду если у регистра есть вход aset, то вых. у него будет по умолчанию в 1 и если даже сделать сброс, то после снятия сигнала сброса вых. все равно вернется в 1. Именно поэтому я и сделал две установки - aset и aload.


---

Нет войне!
 
LazyCat Воскресенье, 10.07.2011, 10:28 | Сообщение # 1434
Завсегдатай
Группа: Проверенные
Сообщений: 329
Статус: Offline
Quote (LeftRadio)
Почему неправильно?

Я думал Вы из моей схемы поняли :( Тогда поясняю для предыстории.
1. разрешаем триггер(т.е. разблокируем триггер inst27, ловящий условие, регистр inst33 и запускаем счетчик inst17)
2. как только появится COUT, на выходе регистра inst33 возникнет 1, которая остановит счетчик(через элемент исключающего ИЛИ), если были пропущены условия(т.е. 1 на выходе inst27), или счетчик продолжит свою работу, если условий еще не было(т.е. 0 на выходе inst27).
3а. если счетчик стоял, то по первому же условию в триггер inst27 запишется 0, что запустит счетчик опять, и после возникновения COUT весь процесс остановится и запись в ОЗУ тоже (сигнал R_W перейдет в 0).
3б. если счетчик продолжал считать, то по первому же условию в триггер inst27 запишется 1 и весь процесс остановится и запись в ОЗУ тоже (сигнал R_W перейдет в 0).
Подробнее объяснить уже не смогу.

Quote (LeftRadio)
Именно поэтому я и сделал две установки - aset и aload.

Это само собой разумеется, именно поэтому я и не ставил ничего лишнего :)
 
LeftRadio Воскресенье, 10.07.2011, 17:25 | Сообщение # 1435
Совсем живу сдесь...
Группа: Администраторы
Сообщений: 2045
Статус: Offline
Не понимаю зачем нам разрешать триггер до записи окна предыстории! Алгоритм ведь простейший - триггер изначально запрещен, записываем необходимое количество отсчетов предыстории, сбрасываем и останавливаем счетчик записанных отсчетов, при этом память продолжает записываться циклически по кругу, разрешаем синхронизацию, (запись некоторого количества точек необходима только что бы гарантированно получить предысторию в единственном случае - если условие синхронизации произойдет сразу после разрешения синхронизации), ждем условия синхронизации и когда оно происходит записываем в память такое же количество точек что и перед разрешением синхронизации, и останавливаем запись в SRAM с сигнализацией что запись окончена. МК зная какое значение счетчика предыстории/послеистории просто вычитывает из SRAM в двое больше точек чем значение счетчика(предыстория + послеистория, а "посредине" момент синхронизации). Все, процесс можно повторять :) Это я не только к Вам пишу, может кому не до конца ясно как "оно" работать должно.

Я совсем не понял для чего у Вас два случая записи с предысторией, один когда триггер произошел во время записи предыстории, второй когда нет, ведь во время записи предыстории событие синхронизации не нужно вовсе!!!

Quote (LazyCat)
Это само собой разумеется, именно поэтому я и не ставил ничего лишнего :)

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

Бессмысленный спор до тех пор пока не будет ясно что доработанный мною вариант имеет правильный/неправильный алгоритм и остальные минусы/плюсы, пока мне он больше нравится простотой управления запуском/перезапуском, полной синхронностью алгоритма.


---

Нет войне!


Сообщение отредактировал LeftRadio - Воскресенье, 10.07.2011, 17:36  
 
LazyCat Воскресенье, 10.07.2011, 18:15 | Сообщение # 1436
Завсегдатай
Группа: Проверенные
Сообщений: 329
Статус: Offline
Quote (LeftRadio)
Бессмысленный спор

Совершенно согласен, особенно если Вы не читаете то что Вам пишут !!!
И про компилятор я не согласен - он никогда не выкинет совершенно ненужный элемент demux1_2. Но это Ваше с ним личное дело. Я же приучен не ставить за ненадобностью даже лишний инвертор. Уж простите !

Quote (LeftRadio)
мне он больше нравится

В этом я как раз не сомневаюсь и очень рад за Вас :) Но мой вариант всеравно проще, понятнее, удобнее в управлении(кстати, лишнего сигнала управления R_W у меня тоже нет) и полностью синхронный. Но, повторяю, я его не навязываю ! Вы сделали свой выбор, на этом и остановимся !
 
LeftRadio Воскресенье, 10.07.2011, 19:10 | Сообщение # 1437
Совсем живу сдесь...
Группа: Администраторы
Сообщений: 2045
Статус: Offline
Quote (LazyCat)
Совершенно согласен, особенно если Вы не читаете то что Вам пишут !!!

Читаю, но из описания алгоритма работы схемы непонятно почему оказывается неверный алгоритм другой схемы без информации о алгоритме который надо получить :) Я описал алгоритм который нужно получить и схема полностью ему соответствует, если это не так то мало самого этого факта нужно еще и почему, и что будет не правильно работать. Можно ведь тоже сказать - вот тот мостовой кран не правильный и нарисовать свой, но это мало даст информации по технологии машиностроения! И только потратив уйму времени можно анализируя нарисованный кран хоть к чему то дойти.

Я тут же соглашусь что у меня ошибка/недоработка если это хоть как то подтвердится, пока подтверждений неправильного алгоритма моей модификации Вашего варианта я не вижу. Ваш усложненный алгоритм с разветвлением, извините, но пока мало о чем мне говорит кроме своей ненужности по причинам описанным мною выше.

Quote (LazyCat)
И про компилятор я не согласен - он никогда не выкинет совершенно ненужный элемент demux1_2.

Еще как выкинет :) возможно вместе с "ненужными" управляющими сигналами других блоков. Это же не "конечная" схема, это "алгоритм схемой", с таким же успехом можно было бы описать этот алгоритм на Verilog/VHDL/AHDL, а компилятор его реализует наиболее оптимальным образом доступным компилятору. Да и в любом случае demux1_2 это всего лишь два ИЛИ и один НЕТ, я просто объединил их в один блок. Все равно в EPM240 не влезем что нам ресурсы ПЛИС солить что ли и спорить только из-за пары макроячеек? Зато удобней, почему чуть ниже.

Quote (LazyCat)
В этом я как раз не сомневаюсь и очень рад за Вас :)

Вы берете фразу из контекста, я там написал почему нравится. Если было просто нравится потому что мой, то я бы сейчас настаивал на своем монструозном варианте и не брал бы Ваш за основу как более экономный по ресурсам.
Я например не думаю что Вы отстаиваете свой вариант только потому что он Ваш, я отстаиваю схему исходя из параметров этой схемы - удобство, наименьшее количество доп. алгоритмический действий со стороны МК и т. д. И я очень Вам признателен за активное участие в практической разработке дизайна ПЛИС.

Quote (LazyCat)
Но мой вариант всеравно проще, понятнее, удобнее в управлении

Проще, понятней это только может так казаться. Проще описал выше, понятнее Вам, другому может нет. Это не главные аргументы. А удобнее, то как раз не удобней, захват с предысторией - короткий ноль по одному входу. Без предыстории короткий ноль по другому. Форсированный старт еще один управляющий сигнал. Сомневаюсь что это удобней одного запускающего/перезапускающего/останавливающего сигнала с фиксированным активным уровнем. Плюс если триггер был установлен неправильно, то никаких доп. алгоритмических действий от МК по сравнению с Вашим вариантом не требуется.

Quote (LazyCat)
кстати, лишнего сигнала управления R_W у меня тоже нет

Его можно легко совместить с сигналом Start, я тоже подумал что он не нужен.

Quote (LazyCat)
...и полностью синхронный.

Нет никакой синхронности в захвате данных триггером inst27, кстати компилятор ругается о неправильных задержках клока/данных для этого триггера:
Code

Warning: Circuit may not operate. Detected 1 non-operational path(s) clocked by clock "CLK" with clock skew larger than data delay. See Compilation Report for details.
.....
Not operational: Clock Skew > Data Delay: From inst30: To inst6

inst30, inst6 это соответственно inst33(lpm_dff8), inst27(DFF) у Вас. Это может и ничего не значить, так как это относительно "основного" клока CLK, а может привести к сбоям, метастабильному состоянию триггера и т.д. Вы сами недавно мне указывали на подобные недостатки! Я попытался исправится :) и теперь стараюсь строго придерживаться синхронности.

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

Выкладываю сам проект, что бы кто хочет мог посмотреть/просимулировать в quartus-е - NS3_Prg


---

Нет войне!


Сообщение отредактировал LeftRadio - Воскресенье, 10.07.2011, 20:20  
 
LazyCat Понедельник, 11.07.2011, 10:27 | Сообщение # 1438
Завсегдатай
Группа: Проверенные
Сообщений: 329
Статус: Offline
Нда, буковок много, но осилил все и, надеюсь, правильно понял :)

Quote (LeftRadio)
А удобнее, то как раз не удобней

По мне так гораздо удобнее, к тому же парой элементов можно перейти к Вашему способу управления, но как я уже говорил, не люблю ставить лишних элементов !!!

Quote (LeftRadio)
Плюс если триггер был установлен неправильно, то никаких доп. алгоритмических действий от МК по сравнению с Вашим вариантом не требуется.

Неправда, действия совершенно одинаковые(те же самые, что были бы и при любом третьем варианте).

Quote (LeftRadio)
Нет никакой синхронности в захвате данных триггером inst27

Нет синхронности с чем ??? И Вы сами на него ответили, так что это не аргумент. Синхронность синхронности рознь. К тому же это главный элемент схемы. Его работу Вы не поняли и потому Ваш вариант полностью неработоспособен :( Но я предлагаю именно на нем остановиться !!! Просто дальше будет хуже :(
 
LeftRadio Понедельник, 11.07.2011, 11:07 | Сообщение # 1439
Совсем живу сдесь...
Группа: Администраторы
Сообщений: 2045
Статус: Offline
Quote (LazyCat)
Неправда, действия совершенно одинаковые

Да, я неправильно высказался, одинаковые, но на один вывод больше либо наворотить логики больше чем в моем варианте. Такая же картина и с запуском, для того что бы использовать один вывод МК для запуска синхронизации нужно поставить демультиплексор с битом управления(с предысторией/без), Выход МК>демультиплексор>"двойной" вход старта синхронизации. И в чем проще?

Quote (LazyCat)
Нет синхронности с чем ???

С любым тактовым сигналом, желательно с глобальным. Выход триггера тактовым сигналом считать нельзя если не дай бог в какой то момент изменение уровня на входе данных и на входе клока inst27 совпадут, то триггер может перейти в метастабильное состояние, к чему это приведет не знаю. Зачем все это?

Quote (LazyCat)
Его работу Вы не поняли

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

Quote (LazyCat)
и потому Ваш вариант полностью неработоспособен

Quote (LazyCat)
Просто дальше будет хуже

Извините, но это просто смешно, или мне опять приводить аналогии?


---

Нет войне!
 
LazyCat Понедельник, 11.07.2011, 11:20 | Сообщение # 1440
Завсегдатай
Группа: Проверенные
Сообщений: 329
Статус: Offline
Quote (LeftRadio)
Да, я неправильно высказался, одинаковые, но на один вывод больше либо наворотить логики больше чем в моем варианте.

К чему Вы это сказали я не понял, и выводов, как мы сообща выяснили, у Вас больше :(

Quote (LeftRadio)
Его работу я понял, Вы ее расписали

Ничего Вы не поняли, и работу D-триггера я не расписывал, т.к. это ОСНОВА и расписана она в любой книге по цифровой технике !!!
И про синхронность я устал повторять. ЗДЕСЬ СОВЕРШЕННО ДРУГОЙ СЛУЧАЙ. Все всему соответствует !!! Но если уж Вам хочется полного синхронизма с глобальным тактовым сигналом, то это все подробно изложено в проекте MisterDi. Но, на мой взгляд, это неоправданная сложность !!!
 
Форум » Сайт и форум » Разработки и Статьи на сайте » Все вопросы касающиеся Neil Scope (Ваши замечания, предложения и т.д.)
Поиск:
uTmpl.ru Сайт создан в системе uCoz Сейчас: 18.04.2024, 21:40