User Tag List

Страница 21 из 24 ПерваяПервая ... 1718192021222324 ПоследняяПоследняя
Показано с 201 по 210 из 232

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

  1. #201

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

    По умолчанию

    Цитата Сообщение от Vslav Посмотреть сообщение
    Если только для моделирования - то, наверное, лучше что-то из Циклонов 1/2/3. У MAX может просто ячеек не хватить. Для поведенческого моделирования выбор конкретного FPGA не важен - все временные параметры из модели берутся.
    Перекачал и поставил Cyclone III, Cyclone IV device support (includes all variations).

  2. #202

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

    По умолчанию

    В "технологическом" режиме КМД ДВК выполняет следующее тестирование работы ВП1-128:

    Код:
    ; Тестирование регистров контроллера накопителя
    	MOV	#177130,R2	; R2 = адрес РСН
    	MOV	@R2,R1		; R1 = значение РСН
    	CMPB	@#177716,#3	; Установлен технологический режим ?
    	BNE	2416$		; Нет
    	RESET			; СБРОС
    	TST	@R2		; Значение РСН равно нулю
    	BEQ	2350$		; Да
    2342$:	MOV	#100010,R0	; R0 = ошибка - ошибка РСН накопителя
    	BR	2372$
    2350$:	MOV	#177777,@R2	; Занести в РСН 177777
    	CMP	#100007,@R2	; Считывается 100007 из РСН?
    	BNE	2342$		; Нет - ошибка
    	MOV	R1,(R2)+		; Занести старое значение РСН R2=адрес РДН
    	TST	@R2		; Перевести контроллер в режим чтения
    	DEC	@R2		; Перевести контроллер в режим записи
    	BR	2424$
    2372$:	CMPB	@#177716,#3	; Установлен технологический режим ?
    	BNE	2412$           	; Нет
    	INC	R5		; Увеличить счетчик ошибок
    	CMP	#37,R5		; Количество ошибок превысило 30?
    	BHIS	2424$		; Нет
    2412$:	JMP	202$
    2416$:	TST	(R2)+		; R2 = адрес РДН
    	TST	@R2		; Перевести контроллер в режим чтения
    	BR	2442$
    2424$:	COM	@#177130
    	BIC	#177774,@#177130
    	JMP	372$		; На начало тестов
    Судя по этому тесту - после записи 0xFFFF в регистр статуста ВП1-128 - там должно читаться 0x8007 ( 0100007 ).

    Это так и есть ?

  3. #203

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

    По умолчанию

    Цитата Сообщение от Patron Посмотреть сообщение
    Судя по этому тесту - после записи 0xFFFF в регистр статуста ВП1-128 - там должно читаться 0x8007 ( 0100007 ).

    Это так и есть ?
    При прогоне в технологическом режиме к контроллеру скорее всего подключаются не дисководы, а специальные перемычки, то что подается на выходы (DS0, DS1, DS2, DS3, HS, MSW, DIR, REZ) должно идти на входы (TR0, RDY, WRP, IND).

  4. #204

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

    По умолчанию

    Судя по содержимому прошивки КМД - 1801ВП1-128 может также полноценно записывать маркеры 0xC2:

    Код:
    	MOV	#0,@R5		; Запись синхрозоны
    	SOB	R0,11664$	; Цикл записи синхрозоны
    	BIS	#1000,2(R3)	; Установить в копии РСН бит записи маркера
    11704$:	TSTB	@R4		; Контроллер готов к приему?
    	BPL	11704$		; Нет
    	MOV	#141302,@R5	; Записать маркер 0xC2C2
    	MOV	2(R3),@R4	; Включить режим записи маркера
    	BIC	#1000,2(R3)	; Сбросить в копии РСН бит записи маркера
    11726$:	TSTB	@R4		; Контроллер готов к приему?
    	BPL	11726$		; Нет
    	MOV	16(R3),@R5	; Записать маркер 0xFСС2
    11736$:	TSTB	@R4		; Контроллер готов к приему?
    	BPL	11736$		; Нет
    	MOV	#47116,@R5	; Записать первое слово промежутка GAP1
    	MOV	2(R3),@R4	; Сбросить режим записи маркера
    	MOV	#31,R0		; R0 = размер GAP1 в формате IBM (50 байт)

  5. #205

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

    По умолчанию

    Цитата Сообщение от Patron Посмотреть сообщение
    Судя по содержимому прошивки КМД - 1801ВП1-128 может также полноценно записывать маркеры 0xC2:
    Ну 1801ВП1-128 по барабану какие маркеры записывать. Схема записи пропускает синхроимпульсы после нуля, который кодируется, как "10". Vslav где-то писал об этом, что при установленном бите WM, идет пропуск синхроимпульсов не только на 0xA1.

  6. #206

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

    По умолчанию

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

    Сколько нулей подряд должно быть в двоичном представлении байта и/или с какого бита в байте должны начинаться эти нули, чтобы у третьего из них ( или не у третьего ? ) был пропущен синхроимпульс ?

    ---------- Post added at 19:10 ---------- Previous post was at 17:17 ----------

    Цитата Сообщение от Vslav Посмотреть сообщение
    после FE я начал писать 0x30 - там тоже импульс выкушен, но в 5-ой позиции - не там где в A1
    И где в итоге ВП1-128 пропускает синхроимпульс при установленном бите WM:

    1. В конкретном месте байта, если там 0 ?
    2. В третьем нулевом бите на выходе сдвигового регистра ?
    Последний раз редактировалось Patron; 02.01.2014 в 19:40.

  7. #207

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

    По умолчанию

    Цитата Сообщение от Patron Посмотреть сообщение
    И где в итоге ВП1-128 пропускает синхроимпульс при установленном бите WM:

    1. В конкретном месте байта, если там 0 ?
    2. В третьем нулевом бите на выходе сдвигового регистра ?
    Должна в третьем нулевом бите. Схема записи не распознает начало байта, биты со сдвигового регистра или регистра CRC двигаются сплошным потоком. Де-факто в схеме запоминаются четыре бита, а пятый - это выход сдвигового регистра или CRC. Вот на основе этих данных и бита записи маркера WM и строится выходной поток.

  8. #208

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

    По умолчанию

    Цитата Сообщение от Alex_K Посмотреть сообщение
    Должна в третьем нулевом бите.
    А если пишутся только нулевые биты - в каких из них будут пропускаться синхроимпульсы ?

    А если циклически пишутся последовательности:

    1) 00001
    2) 0001

    в каких тогда битах будут пропускаться синхроимпульсы ?

  9. #209

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

    По умолчанию

    Посмотрел внимательно схему формирования выходных сигналов DO1, DO2, DO3. Для анализа разложил отдельно по логическим элементам формирование каждого из сигналов. В качестве данных использовал диаграмму, которую выкладывал Vslav в этом сообщении. Также использовал файл для описания диаграммы wave.do. В диаграмме для анализа использовались сигналы DO3, DO2, DO1 (в самом верху), WDATA (бит для записи, соответствует выходу D32 на схеме, а также сигналу WBIT0), WCLK и nWCLK (они перепутаны со схемой, на схеме соответственно nWCLK и WCLK). Далее буду руководствоваться названиями сигналов на схеме.
    Сама схема записи состоит из:
    -фактически мультиплексора D32, который в зависимости от сигнала LATCH_TR, выбирает или выход с регистра CRC (LATCH_TR=1, пропущенное требование, идет запись CRC), или выход со сдвигового регистра (LATCH_TR=0, запись данных). На выходе получается сигнал WBIT0 (на диаграмме WDATA);
    -сдвигового регистра на триггерах D37 (WBIT1), D36 (WBIT2), C37 (WBIT3), C38 (WBIT4), B37 (WBIT5), B36 (WBIT6), A37 (WBIT7), A36 (WBIT8). Хотя разрядов и восемь, но де-факто запоминаются четыре или пять, так как тактируются триггера разными сигналами, нечетные - nWCLK, четные - WCLK. Порядок продвижения битов будет описан чуть ниже;
    -собственно целая куча логики для формирования выходных сигналов на DO1, DO2, DO3, в зависимости от значения сигналов WBIT0-WBIT8 и значения бита записи маркера CSR_WM.
    Сама схема тактируется двумя сигналами WCLK и nWCLK. Сигналы эти поступают только тогда, когда контроллер находится в режиме записи и дискета не защищена от записи. Также, если нет сигналов WCLK и nWCLK, регистр из триггеров находится все время в режиме сброса (сигнал nWRE). Длительность двоичного бита данных составляет 4 мкс. Сам этот интервал для записи MFM-сигнала делится на два интервала по 2 мкс. В середине этих MFM-интервалов проскакивают импульсы - сначала nWCLK, затем WCLK. Как известно в MFM бит "1" кодируется как "01", бит "0" после "1" как "00" и бит "0" после нуля - "10". Из этого следует, что единичный бит данных надо записывать на импульсе WCLK, а нулевой после нуля - на nWCLK.
    Рассмотрим схему продвижения битов по сдвиговому регистру. Они обозначены по порядку, как 1, 2, 3 и т.д.
    876543210
    ---------
    000000011 nWCLK
    000000111 WCLK
    000001122 nWCLK
    000011222 WCLK
    000112233 nWCLK
    001122333 WCLK
    011223344 nWCLK
    112233444 WCLK
    122334455 nWCLK
    223344555 WCLK
    233445566 nWCLK
    Для записи единичного бита используется сигнал WBIT3, для записи нулевого - WBIT4(предыдущий бит данных) и WBIT2(текущий бит данных).
    Вот теперь о распределении сигналов по выходам DO1, DO2, DO3. Как описывал Vslav, что это скорее всего разнесенные по времени сигналы. Но анализ схемы этого не подтвердил. Схема распределяет сигнал на соответствующий вывод в зависимости от того, какие были предыдущие биты данных и какие будут последующие. А уже далее эту информацию использует схема внешней прекоррекции. Если прекоррекция не нужна, то сигналы с трех выводов нужно просто сложить. При этом сигнал на выходе будет только на одном выводе.
    А теперь о распределении сигналов:
    - вывод DO1: "1" - если предыдущий(WBIT5) и следующий(WBIT1) биты данных равны. "0" - если второй слева(WBIT6) и следующий(WBIT0) биты данных равны.
    - вывод DO2: "1" - предыдущий(WBIT5)=0 и следующий(WBIT1)=1. "0" - второй слева(WBIT6)=1 и следующий(WBIT0)=0.
    - вывод DO3: "1" - предыдущий(WBIT5)=1 и следующий(WBIT1)=0. "0" - второй слева(WBIT6)=0 и следующий(WBIT0)=1.
    При установленном бите записи маркера CSR_WM все нулевые биты направляются на вывод DO1.
    Ну а теперь самое интересное - как же делаются пропуски синхроимпульсов при записи маркера. По идее бит "0" должен записываться как "00", если предыдущие биты данных равны "100", а следующий - "0". Но разработчики 1801ВП1-128 поступили проще - они анализируют только третий слева бит данных на равенство "1". И то, что хорошо получается при записи маркера 0xA1, может наделать лишних пропусков при записи других данных.
    Фрагмент из диаграммы от Vslav:
    Код:
       !       30      !       31      !       32      !       33      !       62      !       A7      !       00      !       00      !       A1      !       A1      !       A1      !       FE      !
    1 0 0 0 1 1 0 0 0 0 0 0 1 1 0 0 0 1 0 0 1 1 0 0 1 0 0 0 1 1 0 0 1 1 0 1 1 0 0 0 1 0 1 0 1 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 1 1 0 1 0 0 0 0 1 1 0 1 0 0 0 0 1 1 1 1 1 1 1 1 0 1 
    
    0100000001010000001010100101000000010010010100000100100001010000010100010100000001000100010010010101000000101010101010101010101010100100010010001001010001001000100101000100100010010101010101010100
        ----      --**            ----            --      --      --            ----                      --**                                    **              **              **
    0100101001010010101010100101001010010010010100100100101001010010010100010100101001000100010010010101001010101010101010101010101010100100010010101001010001001010100101000100101010010101010101010100
    Сверху указаны шестнадцатеричные данные с границами байтов, ниже двоичный поток. Еще ниже показаны два MFM-потока - с установленным битом маркера CSR_WM и сброшенным битом маркера. Между потоками с помощью "--" указано, что пропуска не должно быть, а он есть, "**" - пропуск нужен и он есть.
    Также диаграмма маркера C2:
    Код:
           4E      !       00      !       00      !       C2      !       C2      !       C2      !       FC      !
    0 1 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 1 0 1 1 0 0 0 0 1 0 1 1 0 0 0 0 1 0 1 1 1 1 1 1 0 0
    
    0001001001010100000010101010101010101010101010100101000000100100010100000010010001010000001001000101010101010000
                    --**                                  --**            --**            --**                    --
    0001001001010100101010101010101010101010101010100101001010100100010100101010010001010010101001000101010101010010
    Последний раз редактировалось Alex_K; 04.01.2014 в 17:12.

  10. #210

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

    По умолчанию

    Цитата Сообщение от Alex_K Посмотреть сообщение
    то, что хорошо получается при записи маркера 0xA1, может наделать лишних пропусков при записи других данных
    Выходит, что маркер 0xC2 пишется с двумя пропусками синхроимпульсов вместо одного..
    Последний раз редактировалось Patron; 04.01.2014 в 17:12.

Страница 21 из 24 ПерваяПервая ... 1718192021222324 ПоследняяПоследняя

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

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

Эту тему просматривают: 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

Ваши права

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