User Tag List

Страница 9 из 13 ПерваяПервая ... 5678910111213 ПоследняяПоследняя
Показано с 81 по 90 из 232

Тема: Эмуляция 1801ВП1-128 в ПЛИС

Комбинированный просмотр

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1

    Регистрация
    31.03.2013
    Адрес
    г. Киев
    Сообщений
    2,413
    Спасибо Благодарностей отдано 
    132
    Спасибо Благодарностей получено 
    759
    Поблагодарили
    353 сообщений
    Mentioned
    88 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Patron Посмотреть сообщение
    Ещё вопросы по работе 1801ВП1-128.
    1. Когда при записи пропущено требование - на диск пишется контрольная сумма. Но что 1801ВП1-128 делает потом:

    1.1. Переходит в режим чтения.
    1.2. Переходит в режим поиска маркера.
    Остается в режиме записи и продолжает писать нулевые данные.

    Цитата Сообщение от Patron Посмотреть сообщение
    Ещё вопросы по работе 1801ВП1-128.2. Что произойдёт, если при получении требования в режиме записи - выполнить
    чтение регистра данных вместо записи:
    Запись прекращается немедленно (так же nWRE сразу выставляется в высокий уровень), потом переходит в режим чтения, но неполноценное - не ищется маркер и не обнуляется CRC по приходу маркера. То есть полноценно прочитать следующий сектор без инициализации битов GDR не получится.

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

  3. #2

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

    По умолчанию

    Цитата Сообщение от Vslav Посмотреть сообщение
    Остается в режиме записи и продолжает писать нулевые данные.
    Т.е. расчет CRC прекращается? И записанная ранее CRC рассчитывается сама с собой - получается ноль, и он дальше записывается?

  4. #3

    Регистрация
    31.03.2013
    Адрес
    г. Киев
    Сообщений
    2,413
    Спасибо Благодарностей отдано 
    132
    Спасибо Благодарностей получено 
    759
    Поблагодарили
    353 сообщений
    Mentioned
    88 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Alex_K Посмотреть сообщение
    Т.е. расчет CRC прекращается? И записанная ранее CRC рассчитывается сама с собой - получается ноль, и он дальше записывается?
    Нет, она не может сама с собой рассчитаться - она же на выход сдвигового CRC-регистра уходит, а считается со входа. Там чуть хитрее - когда пишется сама сумма после задержанного требования становится активным сигнал CRC_IN0, в регистр при этом начинают вдвигаться единицы (чтобы не искажать вычисленную сумму, то есть регистр CRC просто превращается в сдвиговый, XOR-ы блокируются), и после посылки суммы просто продолжают посылаться уже эти инвертированные единицы.

  5. #4

    Регистрация
    11.09.2009
    Адрес
    Москва
    Сообщений
    4,805
    Спасибо Благодарностей отдано 
    9
    Спасибо Благодарностей получено 
    147
    Поблагодарили
    78 сообщений
    Mentioned
    16 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Vslav Посмотреть сообщение
    Запись прекращается немедленно
    Насколько немедленно:

    1. Дописывается на диск младший байт из сдвигового регистра, а вместо переноса в сдвиговый регистр старшего байта - начинается чтение.

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

    ---------- Post added at 12:14 ---------- Previous post was at 12:11 ----------

    Цитата Сообщение от Vslav Посмотреть сообщение
    полноценно прочитать следующий сектор без инициализации битов GDR не получится.
    В описании КМД этот бит называют GOR:



    ---------- Post added at 12:18 ---------- Previous post was at 12:14 ----------

    Цитата Сообщение от Vslav Посмотреть сообщение
    Остается в режиме записи и продолжает писать нулевые данные.
    И сигнал IND никак на это не влияет ?

    А если не обращаясь к регистру данных - установить в CSR бит GOR, что-нибудь в такой ситуации изменится ?

    ---------- Post added at 14:17 ---------- Previous post was at 12:18 ----------

    Ещё вопрос - по пропуску "синхробита" при записи.

    Программа форматирования пишет на диск четыре байта: 0xA1,0xA1,0xA1,0xFE с установленным в CSR битом WM. В каких байтах при этом происходит пропуск "синхробита":

    1. Только в байтах 0xA1.
    2. Только в первом записываемом байте из каждого слова.
    3. Во всех байтах, записываемых с битом WM в CSR.

    ---------- Post added at 15:03 ---------- Previous post was at 14:17 ----------

    Цитата Сообщение от Alex_K Посмотреть сообщение
    В режиме записи бит 14 устанавливается при пропуске требования, т.е. при начале записи CRC.
    По логике работы программы форматирования - этот бит должен сбрасываться, а генератор CRC перезапускаться то ли после каждого перехода бита WM из 0 в 1 при котором в сдвиговом регистре находится байт 0xA1, то ли просто после каждого попадания при записи байта 0xA1 в сдвиговый регистр, если при этом установлен бит 14.

    Записав заголовок сектора - программа форматирования ждёт установки бита 14, чтобы была выполнена запись CRC, потом без единого перехода в режим чтения - пишет промежуток, маркер данных, данные и затем повторно ожидает записи CRC:

    Код:
    5552$:	CALL	7614$		; Запись GAP, синхрозоны и маркера заголовка
    5556$:	TSTB	@R4		; Контроллер готов к приему?
    	BPL	5556$		; Нет
    	MOV	14(R3),@R5	; Записать дорожку/сторону в заголовок
    	MOV	2(R3),@R4	; Выключить запись маркера
    5572$:	TSTB	@R4		; Контроллер готов к приему?
    	BPL	5572$		; Нет
    	MOV	R2,@R5		; Записать длину/номер сектора в заголовок
    	MOV	#13,R0		; R0 = длина GAP2
    	MOV	#175641,16(R3)	; Будет записываться маркер данных 0xFBA1
    5612$:	BIT	#40000,@R4	; CRC заголовка записана?
    	BEQ	5612$		; Нет
    	CALL	7614$		; Запись GAP2, синхрозоны и маркера данных
    	MOV	R1,R0		; R0 = размер сектора в словах
    5626$:	TSTB	@R4		; Контроллер готов к приему?
    	BPL	5626$		; Нет
    	MOV	34(R3),@R5	; Записать первое слово заполнителя
    	MOV	2(R3),@R4	; Выключить запись маркера
    	DEC	R0		; Уменьшить число записываемых слов
    5644$:	TSTB	@R4		; Контроллер готов к приему?
    	BPL	5644$		; Нет
    	MOV	34(R3),@R5	; Записать заполнитель в цикле
    	SOB	R0,5644$
    	INC	R2		; Увеличить номер сектора
    	MOVB	62(R3),R0	; R0 = размер GAP3 в словах
    	MOV	#177241,16(R3)	; Далее записывается маркер заголовка 0xFEA1
    5672$:	BIT	#40000,@R4	; CRC зоны данных записана?
    	BEQ	5672$		; Нет
    Понятно, что в ходе записи маркера данных - бит 14 сбросился, а генератор CRC перезапустился, но обязательно ли для этого устанавливать бит WM и сработает ли такой "перезапуск" до записи CRC - не понятно.
    Последний раз редактировалось Patron; 22.12.2013 в 18:23.

  6. #5

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

    По умолчанию

    Цитата Сообщение от Patron Посмотреть сообщение
    Насколько немедленно:

    1. Дописывается на диск младший байт из сдвигового регистра, а вместо переноса в сдвиговый регистр старшего байта - начинается чтение.

    2. Дописываются на диск оба байта текущего содержимого регистра данных и только потом начинается чтение.
    Немедленно и сразу. Может записаться только несколько бит.

    ---------- Post added at 18:29 ---------- Previous post was at 18:27 ----------

    Цитата Сообщение от Patron Посмотреть сообщение
    Ещё вопрос - по пропуску "синхробита" при записи.

    Программа форматирования пишет на диск четыре байта: 0xA1,0xA1,0xA1,0xFE с установленным в CSR битом WM. В каких байтах при этом происходит пропуск "синхробита":

    1. Только в байтах 0xA1.
    2. Только в первом записываемом байте из каждого слова.
    3. Во всех байтах, записываемых с битом WM в CSR.
    Во всех байтах записываемых с битом WM, но получится только в 0xA1, т.к. в 0xFE отсутствует требуемого количество нулевых битов (ноль после нуля).

    ---------- Post added at 18:40 ---------- Previous post was at 18:29 ----------

    Цитата Сообщение от Patron Посмотреть сообщение
    По логике работы программы форматирования - этот бит должен сбрасываться, а генератор CRC перезапускаться то ли после каждого перехода бита WM из 0 в 1 при котором в сдвиговом регистре находится байт 0xA1, то ли просто после каждого попадания при записи байта 0xA1 в сдвиговый регистр, если при этом установлен бит 14.

    Записав заголовок сектора - программа форматирования ждёт установки бита 14, чтобы была выполнена запись CRC, потом без единого перехода в режим чтения - пишет промежуток, маркер данных, данные и затем повторно ожидает записи CRC:

    Код:
    5552$:	CALL	7614$		; Запись GAP, синхрозоны и маркера заголовка
    5556$:	TSTB	@R4		; Контроллер готов к приему?
    	BPL	5556$		; Нет
    	MOV	14(R3),@R5	; Записать дорожку/сторону в заголовок
    	MOV	2(R3),@R4	; Выключить запись маркера
    5572$:	TSTB	@R4		; Контроллер готов к приему?
    	BPL	5572$		; Нет
    	MOV	R2,@R5		; Записать длину/номер сектора в заголовок
    	MOV	#13,R0		; R0 = длина GAP2
    	MOV	#175641,16(R3)	; Будет записываться маркер данных 0xFBA1
    5612$:	BIT	#40000,@R4	; CRC заголовка записана?
    	BEQ	5612$		; Нет
    	CALL	7614$		; Запись GAP2, синхрозоны и маркера данных
    	MOV	R1,R0		; R0 = размер сектора в словах
    5626$:	TSTB	@R4		; Контроллер готов к приему?
    	BPL	5626$		; Нет
    	MOV	34(R3),@R5	; Записать первое слово заполнителя
    	MOV	2(R3),@R4	; Выключить запись маркера
    	DEC	R0		; Уменьшить число записываемых слов
    5644$:	TSTB	@R4		; Контроллер готов к приему?
    	BPL	5644$		; Нет
    	MOV	34(R3),@R5	; Записать заполнитель в цикле
    	SOB	R0,5644$
    	INC	R2		; Увеличить номер сектора
    	MOVB	62(R3),R0	; R0 = размер GAP3 в словах
    	MOV	#177241,16(R3)	; Далее записывается маркер заголовка 0xFEA1
    5672$:	BIT	#40000,@R4	; CRC зоны данных записана?
    	BEQ	5672$		; Нет
    Понятно, что в ходе записи маркера данных - бит 14 сбросился, а генератор CRC перезапустился, но обязательно ли для этого устанавливать бит WM и сработает ли такой "перезапуск" до записи CRC - не понятно.
    Битов 14 целых два - один для режима чтения, другой для записи. И отображается в регистр состояния тот, в каком режиме находится контроллер. Vslav уже вроде писал, что расчет CRC при записи начинается при попадании 0xA1 в сдвиговый регистр, а бит WM нужен, чтобы при записи выполнить необходимые пропуски синхроимпульсов.
    По поводу комментариев, они не всегда могут быть верные, т.к. когда я разбирал работу ПЗУ УКНЦ, а далее и фирмваре КМД ДВК, то писал так, как понимал на тот момент работу 1801ВП1-128, документации не было, и все приходилось додумывать самому. Кстати по адресу 5300 правильный комментарий, о том, что CRC начала записываться.

  7. #6

    Регистрация
    11.09.2009
    Адрес
    Москва
    Сообщений
    4,805
    Спасибо Благодарностей отдано 
    9
    Спасибо Благодарностей получено 
    147
    Поблагодарили
    78 сообщений
    Mentioned
    16 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Alex_K Посмотреть сообщение
    По поводу комментариев, они не всегда могут быть верные
    Дело не в комментариях.

    Я сейчас прогоняю форматирование на эмуляторе ВП1-128 и получается, что если бит CRC остался установленным после записи заголовка сектора - у CRC данных просто нет шанса записаться на диск ( бит CRC уже стоит и программа форматирования не ждёт, когда он установится, а сразу начинает писать следующий промежуток ).

    Кроме того - если после записи заголовка сектора генератор CRC не перезапустится на маркере данных - у блока данных неоткуда взяться корректной CRC.

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

    Получается, что если установлен бит CRCw и в сдвиговом регистре находится байт 0xA1 - бит CRCw должен сбрасываться, а генератор CRC - перезапускаться.
    Последний раз редактировалось Patron; 22.12.2013 в 19:17.

  8. #7

    Регистрация
    31.03.2013
    Адрес
    г. Киев
    Сообщений
    2,413
    Спасибо Благодарностей отдано 
    132
    Спасибо Благодарностей получено 
    759
    Поблагодарили
    353 сообщений
    Mentioned
    88 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Извиняюсь, меня тут работой привалило...
    Цитата Сообщение от Patron Посмотреть сообщение
    Насколько немедленно:
    Немедленно - прекращается запись на текущем бите. Если писались данные, то бросит писать данные. Если писалась CRC, то бросит писать CRC. Как только прошло чтение - то LAST_WR немедленно становится высоким - сразу при чтении процессором 177132. Ну и MODE_nR/W становитс низким (не мгновенно, синхронизируется в какой-то фазе битового интервала). Все, nWRE сразу высокий, даже если бы оно продолжило выдачу данных - дисковод запись блокирует. Далее я ему подсунул маркер, и типа поток данных идет, но требование на чтение не выставляется, сумма не обнуляется, в-общем, читать данные не получится.

    Цитата Сообщение от Patron Посмотреть сообщение
    В описании КМД этот бит называют GOR:
    У меня текстовый файлик .txt, я по нему работал, там Gdr, видимо человек набирал с плохой копии.

    Цитата Сообщение от Patron Посмотреть сообщение
    И сигнал IND никак на это не влияет ?
    Элементы N21, N22, N23 представляют собой синхронный D-триггер (вход D - LAST_WR), который записывает сигнал с этого входа по ниспадающему фронту тактового сигнала (выход H15 4-9), и общий асинхронный сброс INIT_073. Поэтому сигнал IND - он максимум может сформировать лишний фронт записи в этот триггер, но повлиять на режим R/W - никак. Я долго не мог поверить что IND никуда больше не идет, тщательно изучал фото, всю цепь перепроверил. В итоге полагаю фактическое НЕ обрабатывание сигнала индекса - косяк 128-ой. Ну или индекс просто банально блокирует смену режима. При высоком уровне на ноге IND микросхема работает, при низком - смена режима блокирована. В-общем, про сигнал индекса можно забыть.

    Цитата Сообщение от Patron Посмотреть сообщение
    А если не обращаясь к регистру данных - установить в CSR бит GOR, что-нибудь в такой ситуации изменится ?
    К регистру данных надо обращаться обязательно - иначе LAST_WR/MODE_R/W правильно не перекинется. Ну или INIT внешний дать.

    Цитата Сообщение от Patron Посмотреть сообщение
    Программа форматирования пишет на диск четыре байта: 0xA1,0xA1,0xA1,0xFE с установленным в CSR битом WM. В каких байтах при этом происходит пропуск "синхробита":
    Во всех байтах маркера A1. Ессно, при чтении пропущенный импульс никак не повлияет на читаемое значение (потому что 128-ая анализирует середину интервала - был имульс в середине - бит данных 1, не было - бит данных 0), Байт FE пишется нормально, без пропусков, потому что все его биты единичные и кодируются имульсом в середине МФМ интервала. Кстати, после FE я начал писать 0x30 - там тоже импульс выкушен, но в 5-ой позиции - не там где в A1. Но на читаемые данные это не повлияет - 128-ая прочтет все правильно, даже несмотря на пропущенный импульс.

    Цитата Сообщение от Patron Посмотреть сообщение
    По логике работы программы форматирования
    Сначала пишем первую порцию, потом игнорим требование записи - начинает записываться CRC, при этом в регистр суммы вдвигаются единицы, сигнал CRC_IN0 - активен. После записи всей CRC регистр приобретет значение 0xFFFF и поэтому после окончания записи CRC будет активен признак CRC_VALID и мы увидим этот флаг в CSR при чтении 177130. Если мы запишем маркер в 177132, то начнется процесс записи нового сектора.

    Цитата Сообщение от Patron Посмотреть сообщение
    Записав заголовок сектора - программа форматирования ждёт установки бита 14, чтобы была выполнена запись CRC, потом без единого перехода в режим чтения - пишет промежуток, маркер данных, данные и затем повторно ожидает записи CRC:
    Именно так.

    Цитата Сообщение от Patron Посмотреть сообщение
    Понятно, что в ходе записи маркера данных - бит 14 сбросился, а генератор CRC перезапустился, но обязательно ли для этого устанавливать бит WM и сработает ли такой "перезапуск" до записи CRC - не понятно.
    Бит WM на перезапуск не влияет - он управляет только работой МФМ-кодировщика.

    ---------- Post added at 19:55 ---------- Previous post was at 19:49 ----------

    Цитата Сообщение от Alex_K Посмотреть сообщение
    Бит 14 устанавливается в начале записи CRC.
    Нет, бит 14 устанавливается ПОСЛЕ того как СRC физически выведена на выходы DOx, то есть записана на диск. Микросхема остается в режиме записи и продолжает писать нули (инвертированный регистр суммы, в котором FF-ы). Если записать маркер в регистр данных - начнется запись новой последовательности, бит WM на этот процесс не влияет, только на кодировщик МФМ. Да, и запись нового маркера сбрасывает бит 14, не мгновенно, а как начнется запись маркера на диск.
    Последний раз редактировалось Vslav; 22.12.2013 в 22:04.

  9. #8

    Регистрация
    11.09.2009
    Адрес
    Москва
    Сообщений
    4,805
    Спасибо Благодарностей отдано 
    9
    Спасибо Благодарностей получено 
    147
    Поблагодарили
    78 сообщений
    Mentioned
    16 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Vslav Посмотреть сообщение
    Далее я ему подсунул маркер, и типа поток данных идет, но требование на чтение не выставляется, сумма не обнуляется, в-общем, читать данные не получится.
    Значит, любое чтение регистра данных после записи и до установки 8-го бита - блокирует чтение.

    А повторная запись в регистр данных приведёт к восстановлению нормальной работы или последующая запись также блокируется ?
    Последний раз редактировалось Patron; 22.12.2013 в 23:39.

  10. #9

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

    По умолчанию

    Цитата Сообщение от Vslav Посмотреть сообщение
    Нет, бит 14 устанавливается ПОСЛЕ того как СRC физически выведена на выходы DOx, то есть записана на диск. Микросхема остается в режиме записи и продолжает писать нули (инвертированный регистр суммы, в котором FF-ы). Если записать маркер в регистр данных - начнется запись новой последовательности, бит WM на этот процесс не влияет, только на кодировщик МФМ. Да, и запись нового маркера сбрасывает бит 14, не мгновенно, а как начнется запись маркера на диск.
    А вот здесь я не согласен. При записи сигнал CSR_CRC формируется из сигналов MODE_nR/W и nLATCH_TR. Если бы бит 14 выставлялся бы после физической записи CRC на диск, то был бы разрыв между CRC и последующими данными. А ведь данные в регистр записи заносятся после установки этого бита, а там исполняется несколько команд.
    А вот сигнал MODE_R/nW и защелкнутый CRC_VALID формируют бит 14 при чтении, соответственно он формируется уже после физического чтения CRC с диска.

  11. #10

    Регистрация
    11.09.2009
    Адрес
    Москва
    Сообщений
    4,805
    Спасибо Благодарностей отдано 
    9
    Спасибо Благодарностей получено 
    147
    Поблагодарили
    78 сообщений
    Mentioned
    16 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    И ещё вопрос - регистр данных обнуляется по INIT ?

    ---------- Post added at 21:32 ---------- Previous post was at 21:27 ----------

    Цитата Сообщение от Alex_K Посмотреть сообщение
    В режиме записи он устанавливается при пропуске требования, т.е. при начале записи CRC.
    Но при начале чтения - бит 14 уже должен быть сброшен, значит - он должен сбрасываться и при переходе из режима записи в режим чтения.

    Хотя нет. Пока не прочитан маркер - контрольная сумма чтения некорректна, поэтому нет смысла сбрасывать бит 14.
    Последний раз редактировалось Patron; 21.12.2013 в 22:40.

Страница 9 из 13 ПерваяПервая ... 5678910111213 ПоследняяПоследняя

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

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

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

Похожие темы

  1. ЮТ-88: Реализация на ПЛИС (DE1)
    от Santechnik в разделе ЮТ-88
    Ответов: 61
    Последнее: 13.05.2022, 08:22
  2. Вопрос по ПЛИС
    от Zloy в разделе Несортированное железо
    Ответов: 23
    Последнее: 17.10.2015, 17:12
  3. Аксель на ПЛИС
    от iceoflame в разделе Amiga
    Ответов: 163
    Последнее: 25.03.2012, 14:51
  4. Список версий 1801ВП1 и 1801РЕ2
    от CodeMaster в разделе ДВК, УКНЦ
    Ответов: 2
    Последнее: 28.02.2012, 22:39
  5. 1801вп1-128
    от dk_spb в разделе ДВК, УКНЦ
    Ответов: 0
    Последнее: 29.05.2010, 11:24

Ваши права

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