User Tag List

Страница 29 из 30 ПерваяПервая ... 252627282930 ПоследняяПоследняя
Показано с 281 по 290 из 293

Тема: Чем отличались КА1515ХМ1-031 и 1515ХМ2-001?

  1. #281

    Регистрация
    07.10.2007
    Адрес
    п.Пудость Гатчинского р-на Лен.обл.
    Сообщений
    3,248
    Спасибо Благодарностей отдано 
    360
    Спасибо Благодарностей получено 
    638
    Поблагодарили
    414 сообщений
    Mentioned
    46 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Alex_K Посмотреть сообщение
    И что удивительно, что получаемое число по XOR одинаковое для разных УКНЦ, но разное в зависимости от того, откуда загрузились. Загадка однако.
    Цитата Сообщение от Titus Посмотреть сообщение
    По OR оно получается.
    Не знаю, откуда берется оно в буферном регистре, загадка. Может порождение каких-то иных глюков, но предположений у меня нет.
    Цитата Сообщение от Alex_K Посмотреть сообщение
    Надо бы узнать, какие числа были, а какие должны быть.
    Ну вот решил поделать тесты с таймером и узнать, почему получаются левые числа и какова их закономерность. Вроде бы удалось это понять. Но сначала несколько скриншотов для последующего объяснения ситуации.

    Скрытый текст












    [свернуть]

    Titus, ну что могу сказать. Вы оказались правы насчет записи и чтения регистров таймера. По поводу привязки этих событий к тактам делителя информация подтвердилась. На скриншотах видно, что обычно ошибки бывают только на 8 и 16 мкс, т.к. в данном варианте между импульсами после делителя проскакивает 50 и 100 тактов процессора соответственно. Ну а теперь начнем анализ ситуации. Процессор, как известно, выставляет на шине данные для записи и сопровождает это сигналом DOUT. В ответ на этот сигнал, устройство должно записать данные в свой регистр и выдать сигнал RPLY. В ответ на RPLY процессор снимает сигнал DOUT и данные с магистрали. Соответственно устройство снимает RPLY, а процессор SYNC, всё, адресный обмен завершился. Ну а теперь предположим, что интерфейс связи с QBUS в БМК работает нормально, а вот запись в буферный регистр производится по сигналам с делителя. Что при этом может произойти? Правильно, процессор завершает адресный обмен, приготавливается к очередному, шина адреса-данных будет в третьем состоянии, читаться с нее будет ноль - вот и ноль в буферном регистре. Но ситуация может ухудшиться и процессор уже выставил новый адрес на шине - значит в буфер запишется новый адрес.
    Посмотрим внимательно на скриншоты. Для вывода содержимого ОЗУ ПП используется утилита PMEM, которая показывает размер блока данных памяти, занимаемой резидентом, для полного объема надо прибавить шесть (размер заголовка). Загрузка произведена с IDE-Flash и резидентом у нас сидит только драйвер WD. Левое число равно 3598. Загрузим модуль KBS, его объем 144+6=150 байт, левое число стало 3748=3598+150. Загрузим модуль ALTNUM, его объем 192+6=198 байт, левое число стало 3946=3748+198. Загрузим модуль RBTRON, его объем 102+6=108 байт, левое число стало 4054=3946+108. Загрузим модуль ESCFG, его объем 490+6=496 байт, левое число должно стать 4550=4054+496, но буфер 12-разрядный, вычитаем 4096, получаем 454.
    Вроде бы все сходится, но на 8 мкс иногда проскакивает постоянное значение 976, в восьмеричном это 001720, либо это код команды, либо смещение, кода нет, не могу сказать.
    Как видно на 4 мкс и 2 мкс ошибок нет. Отсюда вывод - останавливать таймер только на 2 мкс и записывать новое значение в буфер, должно обязательно записаться.
    А так для полного анализа нужен ассемблерный листинг, именно листинг MACRO с восьмеричными значениями и мнемониками команд, хотя бы для того, чтобы узнать откуда у 001720 ноги растут.
    Последний раз редактировалось Alex_K; 09.02.2013 в 18:05.

  2. #282

    Регистрация
    08.10.2005
    Адрес
    Москва
    Сообщений
    14,390
    Спасибо Благодарностей отдано 
    1,701
    Спасибо Благодарностей получено 
    2,218
    Поблагодарили
    872 сообщений
    Mentioned
    69 Post(s)
    Tagged
    1 Thread(s)

    По умолчанию

    Цитата Сообщение от Alex_K Посмотреть сообщение
    Ну а теперь предположим, что интерфейс связи с QBUS в БМК работает нормально, а вот запись в буферный регистр производится по сигналам с делителя. Что при этом может произойти? Правильно, процессор завершает адресный обмен, приготавливается к очередному, шина адреса-данных будет в третьем состоянии, читаться с нее будет ноль - вот и ноль в буферном регистре. Но ситуация может ухудшиться и процессор уже выставил новый адрес на шине - значит в буфер запишется новый адрес.
    Как может завершиться обмен, пока таймер не выставил сигнал RPLY? А выдать его он должен только после защелкивания результата в своем регистре по такту предделителя, если уж на то пошло.

  3. #283

    Регистрация
    07.10.2007
    Адрес
    п.Пудость Гатчинского р-на Лен.обл.
    Сообщений
    3,248
    Спасибо Благодарностей отдано 
    360
    Спасибо Благодарностей получено 
    638
    Поблагодарили
    414 сообщений
    Mentioned
    46 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Titus Посмотреть сообщение
    Как может завершиться обмен, пока таймер не выставил сигнал RPLY? А выдать его он должен только после защелкивания результата в своем регистре по такту предделителя, если уж на то пошло.
    А вот получается так, что сигнал RPLY по всей видимости выдает часть схемы, ответственная за обмен с шиной QBUS, а защелкивается по сигналу с делителя, но данные беруться с шины адреса-данных.

  4. #284

    Регистрация
    08.10.2005
    Адрес
    Москва
    Сообщений
    14,390
    Спасибо Благодарностей отдано 
    1,701
    Спасибо Благодарностей получено 
    2,218
    Поблагодарили
    872 сообщений
    Mentioned
    69 Post(s)
    Tagged
    1 Thread(s)

    По умолчанию

    Цитата Сообщение от Alex_K Посмотреть сообщение
    А вот получается так, что сигнал RPLY по всей видимости выдает часть схемы, ответственная за обмен с шиной QBUS, а защелкивается по сигналу с делителя, но данные беруться с шины адреса-данных.
    Это было бы очень грубой ошибкой.
    Да и если бы было так, то на периодах 16мкс (96 тактов), сбоили бы 23 из 24 записей, т.к. цикл шины весьма мал, скажем 4 такта, и если бы таймер мог воспринимать информацию на шине всего лишь раз в 96 тактов (по такту с предделителя), почти все записи улетали бы мимо.
    Тут явно глюк другого плана.

  5. #285

    Регистрация
    07.10.2007
    Адрес
    п.Пудость Гатчинского р-на Лен.обл.
    Сообщений
    3,248
    Спасибо Благодарностей отдано 
    360
    Спасибо Благодарностей получено 
    638
    Поблагодарили
    414 сообщений
    Mentioned
    46 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Titus Посмотреть сообщение
    Это было бы очень грубой ошибкой.
    Да и если бы было так, то на периодах 16мкс (96 тактов), сбоили бы 23 из 24 записей, т.к. цикл шины весьма мал, скажем 4 такта, и если бы таймер мог воспринимать информацию на шине всего лишь раз в 96 тактов (по такту с предделителя), почти все записи улетали бы мимо.
    Тут явно глюк другого плана.
    Вот какой глюк и какого плана надо думать. С разрешения Titus-а воспользовался его исходником теста и получил листинг. Доказательства насчет адреса.
    Первоначально адрес загрузки в ОЗУ ПП неизвестен, поэтому п/п пользователя может быть загружена по любому адресу, но с помощью утилиты PMEM можно определить адрес загрузки. Сперва, когда был загружен только драйвер WD, свободная область начиналась с адреса 024566, прибавим размер заголовка в 6 байт, получим 024574. Так глючное число в этом случае было равно 3598, или 07016 в восьмеричном представлении. Так как счетчик в программируемом таймере 12-разрядный, то уместно предположить, что это часть адреса, и предположительно, с учетом начального адреса загрузки полный адрес будет равен 027016. Разница между ними составляет 027016-024574=02222.
    Теперь глянем на листинг, вот начало программы, загружаемой в ОЗУ ПП:
    Код:
        707					;===================================================================================
        708					;
        709					;			  nA^ALO PEREME]AEMOJ OBLASTI
        710					;
        711					;===================================================================================
        712	002340				PPUTBeg:
        713
        714					;===================================================================================
        715					;
        716					;		   fUNKCIQ TESTIROWANIQ SKOROSTI RABOTY TAJMERA
        717					;
        718					;	wYHODNYE DANNYE: PSTATE - ZNA^ENIE TAJMERA
        719					;
        720					;===================================================================================
        721	002340				SPDPPU:
        722	002340	106427 	000340 				MTPS	#^O340			;zAPRETITX PRERYWANIQ
        723
    Как видно при трансляции она получила адрес 02340. Прибавим к нему полученное ранее значение 02222, получается 04562. Глянем в листинг:
    Код:
       1373					;===============================================
       1374	004550				TBErrProc:
       1375	004550	010701 					MOV	PC,R1			;R1 = TEMP2
       1376	004552	062701 	000310 				ADD	#TEMP2-.,R1		;
       1377	004556	011137 	177712 				MOV	(R1),@#TMRBUF		;(TEMP2) -> TMRBUF
       1378
       1379	004562	011010 					MOV	(R0),(R0)		;pAUZA >= 480 TAKTOW
       1380	004564	011010 					MOV	(R0),(R0)		;(DLQ TO^NOJ ZAPISI BUFERNOGO REGISTRA
       1381	004566	011010 					MOV	(R0),(R0)		;W S^ET^IK)
       1382	004570	011010 					MOV	(R0),(R0)		;
       1383	004572	011010 					MOV	(R0),(R0)		;
       1384	004574	011010 					MOV	(R0),(R0)		;
       1385	004576	011010 					MOV	(R0),(R0)		;
       1386	004600	011010 					MOV	(R0),(R0)		;
       1387
       1388	004602	012701 	177714 				MOV	#TMRCURR,R1		;tO^NOE ^TENIE REGISTRA TEKU]EGO ZNA^ENIQ
       1389	004606	011100 					MOV	(R1),R0			;TAJMERA S RAZBLOKIROWKOJ
       1390	004610	051100 					BIS	(R1),R0			;R0 - REGISTR TEKU]EGO ZNA^ENIQ
       1391	004612	010000 					MOV	R0,R0			;
       1392	004614	051100 					BIS	(R1),R0			;
       1393	004616	051100 					BIS	(R1),R0			;
       1394	004620	010000 					MOV	R0,R0			;
       1395	004622	051100 					BIS	(R1),R0			;
       1396	004624	051100 					BIS	(R1),R0			;
       1397	004626	010000 					MOV	R0,R0			;
       1398	004630	051100 					BIS	(R1),R0			;
       1399
       1400	004632	010701 					MOV	PC,R1			;R1 = TEMP2
       1401	004634	062701 	000226 				ADD	#TEMP2-.,R1		;
       1402
       1403	004640	005700 					TST	R0			;
       1404	004642	001002 					BNE	1$			;
       1405	004644	005215 					INC	(R5)			;eSLI R0 = 0, TO PRIRA]IWAEM S^ET^IK NULEJ
       1406	004646	000406 					BR	2$			;--> 2$
       1407
       1408	004650				1$:
       1409	004650	021100 					CMP	(R1),R0			;eSLI R0 <> (TEMP2), TO
       1410	004652	001404 					BEQ	2$			;PRIRA]IWAEM ^ISLO PROMAHOW
       1411	004654	005265 	000002 				INC	2(R5)			;
       1412
       1413	004660	050065 	000004 				BIS	R0,4(R5)		;zAPISYWAEM S^ITANNOE ^ISLO W PAMQTX PO OR
       1414	004664				2$:
       1415
       1416	004664	011100 					MOV	(R1),R0			;(R1) <-> (R1 + 2)
       1417	004666	016111 	000002 				MOV	2(R1),(R1)		;(OBMENQTX MESTAMI KONSTANTY PROWERKI)
       1418	004672	010061 	000002 				MOV	R0,2(R1)		;
       1419
       1420	004676	000207 					RETURN
    Здесь как раз та самая подпрограмма, которая проверяет вероятность незаписи в буферный регистр. Как раз по адресу 04562 находится следующая команда, которая следует за командой MOV (R1),@#TMRBUF, осуществляющей запись в буферный регистр. Как ведет себя процессор при исполнении этой команды. Т.к. предыдущая команда состоит из двух слов, поэтому условие предвыборки нарушено. Процессор по адресу 027012 читает код команды 011137. Во время ее дешифрации читается следующее слово из памяти по предвыборке - адрес 027014, значение 177712. Во время дешифрации читается значение из памяти по значению регистра R1, это источник. Далее по адресу 027014 у нас уже прочитано значение 177712, по этому адресу происходит запись, это приемник. Т.к. предвыборка нарушена, то процессору остается выставить на шину адрес 027016 для чтения следующей команды. Вот это значение иногда и попадает в буферный регистр.
    Попадающее иногда значение 976 при 4 мкс я пока объяснить не могу, ясно, что это не адрес, т.к. оно постоянно, вне зависимости от того, сколько загружено резидентов в ОЗУ ПП. Единственно, что могу предположить, это то, что процессор в это время снимает собственно данные с шины, а снятие немного проходит неравномерно, то часть битов становится битами данных, а часть нулями. Пока только так.

    Жду комментариев и критики.

  6. #286

    Регистрация
    08.10.2005
    Адрес
    Москва
    Сообщений
    14,390
    Спасибо Благодарностей отдано 
    1,701
    Спасибо Благодарностей получено 
    2,218
    Поблагодарили
    872 сообщений
    Mentioned
    69 Post(s)
    Tagged
    1 Thread(s)

    По умолчанию

    Цитата Сообщение от Alex_K Посмотреть сообщение
    Т.к. предыдущая команда состоит из двух слов, поэтому условие предвыборки нарушено. Процессор по адресу 027012 читает код команды 011137. Во время ее дешифрации читается следующее слово из памяти по предвыборке - адрес 027014, значение 177712. Во время дешифрации читается значение из памяти по значению регистра R1, это источник. Далее по адресу 027014 у нас уже прочитано значение 177712, по этому адресу происходит запись, это приемник. Т.к. предвыборка нарушена, то процессору остается выставить на шину адрес 027016 для чтения следующей команды. Вот это значение иногда и попадает в буферный регистр.
    Учитывая предвыборку кода команды, которая работает всегда, кроме функций ветвления и самомодификации кода, можно предположить несколько иную последовательность на начало выполнения команды
    Код:
    011137 	177712 				MOV	(R1),@#TMRBUF
    1) 011137 уже находится в буфере предвыборки, поэтому первая ступень - это дешифрация кода команды и предвыборка следующего слова из памяти 177712
    2) Слово смещения читается из буфера предвыборки и идет вычисление исполнительного адреса
    3) Тут сложно сказать, идет ли предвыборка следующего слова из адреса 4562, и потом выполняется команда, либо же сперва команда, а потом уже чтение кода следующей команды с адреса 4562. Надо почитать доки.

    До сих пор остается открытым вопрос поднятый мною в предыдущем посте.

  7. #286
    С любовью к вам, Yandex.Direct
    Размещение рекламы на форуме способствует его дальнейшему развитию

  8. #287

    Регистрация
    07.10.2007
    Адрес
    п.Пудость Гатчинского р-на Лен.обл.
    Сообщений
    3,248
    Спасибо Благодарностей отдано 
    360
    Спасибо Благодарностей получено 
    638
    Поблагодарили
    414 сообщений
    Mentioned
    46 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Titus Посмотреть сообщение
    Учитывая предвыборку кода команды, которая работает всегда, кроме функций ветвления и самомодификации кода, можно предположить несколько иную последовательность на начало выполнения команды
    Код:
    011137 	177712 				MOV	(R1),@#TMRBUF
    1) 011137 уже находится в буфере предвыборки, поэтому первая ступень - это дешифрация кода команды и предвыборка следующего слова из памяти 177712
    2) Слово смещения читается из буфера предвыборки и идет вычисление исполнительного адреса
    3) Тут сложно сказать, идет ли предвыборка следующего слова из адреса 4562, и потом выполняется команда, либо же сперва команда, а потом уже чтение кода следующей команды с адреса 4562. Надо почитать доки.
    Предвыборка на следующую команду работает если только предыдущая команда состояла из одного слова, т.е. не было модификации одно из счетчиков команд (а теперь из документации мы знаем, что их целых три), естественно это не команда перехода и не было модификации адреса, прочитанного по предвыборке. А так как команды состояли из двух слов, то предвыборка на следующую команду и не работала. Это еще было показано мной при тесте регистра ловушки адреса при использовании команд, состоящих из одного и нескольких слов.
    Цитата Сообщение от Titus Посмотреть сообщение
    До сих пор остается открытым вопрос поднятый мною в предыдущем посте.
    Вопрос, насколько я понимаю, почему попадает не то что пишется, а другое? Что это другое, это вроде выяснили. Теперь остается понять почему запись происходит в этот момент.

    Кстати а вероятность незаписи регистра состояния и управления 0177710 вроде не проверялась? Вдруг там делитель не прописывается или режим ПУСК не запускается?

  9. #288

    Регистрация
    08.10.2005
    Адрес
    Москва
    Сообщений
    14,390
    Спасибо Благодарностей отдано 
    1,701
    Спасибо Благодарностей получено 
    2,218
    Поблагодарили
    872 сообщений
    Mentioned
    69 Post(s)
    Tagged
    1 Thread(s)

    По умолчанию

    Цитата Сообщение от Alex_K Посмотреть сообщение
    Кстати а вероятность незаписи регистра состояния и управления 0177710 вроде не проверялась? Вдруг там делитель не прописывается или режим ПУСК не запускается?
    Думаю, что он всегда работает исправно, т.к. никогда случайно замечен в этом не был, в отличие от других регистров.
    Да и специфика у него иная, при которой его нелогично было бы тактировать способом, подобным буферному регистру и регистру текущего значения. Это как бы управляющий регистр, стоящий над ними.

    ---------- Post added at 00:13 ---------- Previous post was at 00:11 ----------

    Цитата Сообщение от Alex_K Посмотреть сообщение
    Попадающее иногда значение 976 при 4 мкс я пока объяснить не могу, ясно, что это не адрес, т.к. оно постоянно, вне зависимости от того, сколько загружено резидентов в ОЗУ ПП. Единственно, что могу предположить, это то, что процессор в это время снимает собственно данные с шины, а снятие немного проходит неравномерно, то часть битов становится битами данных, а часть нулями.
    Если б это было из-за пограничного значения между неуспеванием одного, и успеванием другого, оно бы не было так стабильно.
    Кстати, надо заметить, что все значения складываются по OR, следовательно это вполне может быть логической суммой каких-либо чисел.

  10. #289

    Регистрация
    07.10.2007
    Адрес
    п.Пудость Гатчинского р-на Лен.обл.
    Сообщений
    3,248
    Спасибо Благодарностей отдано 
    360
    Спасибо Благодарностей получено 
    638
    Поблагодарили
    414 сообщений
    Mentioned
    46 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Titus Посмотреть сообщение
    Если б это было из-за пограничного значения между неуспеванием одного, и успеванием другого, оно бы не было так стабильно.
    Кстати, надо заметить, что все значения складываются по OR, следовательно это вполне может быть логической суммой каких-либо чисел.
    Кстати для информации - 1515ХМ1-031(да и 1515ХМ2-001) расположены за буфером 1801ВП1-055, так что задержки на линии есть, и обычно они постоянны. Если бы задержки были непостоянны, то числа получались бы разными, а тут все время одно и тоже число. С адресом-то понятно, по мере загрузки резидентов число менялось и менялось на размер загруженного резидента. А вот здесь неясно. Можно 0177777 позаписывать, посмотреть, чего получится.

  11. #290

    Регистрация
    08.10.2005
    Адрес
    Москва
    Сообщений
    14,390
    Спасибо Благодарностей отдано 
    1,701
    Спасибо Благодарностей получено 
    2,218
    Поблагодарили
    872 сообщений
    Mentioned
    69 Post(s)
    Tagged
    1 Thread(s)

    По умолчанию

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

Страница 29 из 30 ПерваяПервая ... 252627282930 ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. Куплю Т34ВГ1 (КА1515ХМ1-216)
    от moxjemi в разделе Барахолка (архив)
    Ответов: 2
    Последнее: 15.04.2011, 12:07

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •