Важная информация

User Tag List

Страница 3 из 8 ПерваяПервая 1234567 ... ПоследняяПоследняя
Показано с 21 по 30 из 75

Тема: Еще один Орион НЕ на ПЛИС или калинка-малинка по-русски

  1. #21
    Guru Аватар для Denn
    Регистрация
    04.05.2006
    Адрес
    St.-Petersburg
    Сообщений
    2,223
    Спасибо Благодарностей отдано 
    475
    Спасибо Благодарностей получено 
    905
    Поблагодарили
    595 сообщений
    Mentioned
    6 Post(s)
    Tagged
    0 Thread(s)

    Lightbulb ОРИОН 2.0

    Итак, продолжим по сабжу. Делаю черновые наброски схемотехники.

    Полагаю, проектировать новый комп в 2019-ом году с тактом 3,5/5 МГц было бы как минимум издевательством. В природе давно существуют КМОП-версии Z80 на 20 МГц, а сейчас скорее всего только они и продаются (из КМОП), логично заложить в схемотехнику их поддержку.

    В связи с этим тактовый генератор будет таким:



    Идея в следующем. По-умолчанию (при сбросе) включен родной орионовский клок = 2,5 МГц. Программно через порт #FC активируется т.н. режим "турбо", который с помощью джамперов конфигурится исходя из установленного экземпляра процессора.
    Этим процессом рулит новое ПО (например, ОС), старое ПО про это не знает, но ему и не нужно, оно работает на родных 2,5 МГц.
    При опросе клавиатуры также придётся "падать" на 2,5 МГц, т.к. ВВ55 и МК физически не смогут даже на 10 МГц, а уж на 20 - и подавно. Заодно не придётся адаптировать код (программные задержки) под различные клоки.


    Выборка ПЗУ/ОЗУ и организация начального старта (ПЗУ @ 0000h) и верхнего непереключаемого ОЗУ:



    До кучи сюда же попала реализация "матюгальника"
    К сожалению, у Z80 нет выходного сигнала "INTE", поэтому придётся идти по пути Z80-card (


    Едем далее. Обращения к системным портам Ориона и эмуляция натягивания портов на память:



    Не нравятся мне эти две КП11 ради того, чтобы IN/OUT копировали LDA/STA... тут надо будет подумать ещё..


    Небольшое ноу-хау: совмещение Монитора и ROM-диска в одной микросхеме ПЗУ WB27C512:



    Смысл в том, что делать сегодня на РФ2 как-то смешно, нынче проще достать "винбонд", и для базового варианта в принципе будет достаточно 62 Кб под ROM-диск. Упаковав оба два мы получаем экономию места и проводки, а заодно избавляемся от лишней ВВ55, для эмуляции которой достаточно защёлкивать адрес (2хИР23), а данные буду выдаваться на ШД МПС напрямую от ПЗУ.
    А в случае применения МП на 20 МГц, для работы в режиме "турбо" винбонд вообще без вариантов!


    В общем-то, и всё. Это почти вся материнка! МП, ПЗУ и СОЗУ не нарисованы, но там всё понятно. Позже разрисую узел клавиатуры, порт пользователя и СОМ-порт.
    Сигналы активации портов видеочасти можно вывести на свободные линии системного разъёма (их там есть и достаточно много), а также чипселекты порта клавиатуры и пула портов расширения (#F7xx).


    С клавиатурой пока вопрос открытый, тут у меня три варианта:

    1. Классическая связка ВВ55 + МК;
    2. Разъём порта расширения с чипселектом #F4, и т.о. исключить собственно ВВ55 (отдать МК и её эмуляцию);
    3. Прямая поддержка клавиатуры PS/2.

    С первым вариантом всё понятно, он самый каноничный и пожалуй универсальный, но некрасивый (для 21-го века) и громоздкий.
    Второй - более красивый - позволит при желании воткнуть платку с ВВ55 и подключить труъ-клаву, но разработка соотв. ПО для МК под вопросом.
    Третий вариант грубо нарушает феньшуй: потребуется "перепил" кода монитора (и поддержка PS/2 скорее всего в 2 Кб не влезет) и кондовое ПО, которое напрямую обращается к клавиатуре, не будет работать. В случае использования конструктора в качестве МПС без видеокарты это всё не проблемы, но для "классики" такой вариант однозначно не подойдёт.


    Раз уж у нас Z80, то можно добавить и диспетчер ОЗУ (от Z80-card), но конструкцию это усложнит, а нужен ли он на практике - х/з.

    Прерывания. Наверное неплохо заложить. Но в виду вынесения "за скобки" видеочасти возникает небольшое неудобство. В случае использования без видео, прерывания (50 Гц?) нужно генерить интернально, а в случае подключения видеокарты хотелось бы их получать от пятки кадровых импульсов. Нужно мутить схему коммутации, автодетект подключения видео-части с переключением на прерывания от неё...


    Можно сразу заложить возможность расширения ОЗУ до 1024 Кб (или даже до 4 Мб?!), но опять же вопрос - нужно ли?


    Также витает мысль "положить на бутер вторым слоем" СОЗУ (512 или 1024 Кб), подпёртое батарейкой, т.о. получится быстрый и почти "халявный" RAM-диск, находящийся в адресном пространстве МП (доступ также, как и к доп. страницам ОЗУ, активация например старшим битом порта #F9).
    Но для работы с таким RAM-диском придётся переключаться на клок 2,5 МГц, т.к. малопотребялющее СОЗУ на клоке 20 МГц работать не будет. В общем-то, такая же история и с клавиатурой, но с ней это по барабану, в её случае скорость и не требуется.
    Последний раз редактировалось Denn; 22.03.2019 в 13:19.
    Критиковать - значит объяснять автору, что он делает не так, как делал бы я, если бы умел

  2. #22
    Guru
    Регистрация
    24.01.2008
    Адрес
    Уфа
    Сообщений
    3,852
    Спасибо Благодарностей отдано 
    84
    Спасибо Благодарностей получено 
    235
    Поблагодарили
    171 сообщений
    Mentioned
    9 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Denn Посмотреть сообщение
    Третий вариант грубо нарушает феньшуй: потребуется "перепил" кода монитора
    Если уж Z80, то можно добавить возможность генерирования NMI при обращении к несуществующим (или старым) портам. Тогда классический софт тоже будет работать, за исключением того, который первые 128 байт от начала использует. Но и тут исхитриться можно, если параллельно с генерацией NMI включать другую карту памяти. Вобщем, аналогично тому, как сделана эмуляция ZX-клавиатуры в Арго. Правда, такие костыли непросто в железе реализовывать.
    Последний раз редактировалось b2m; 22.03.2019 в 13:06.

  3. #23
    Guru Аватар для Denn
    Регистрация
    04.05.2006
    Адрес
    St.-Petersburg
    Сообщений
    2,223
    Спасибо Благодарностей отдано 
    475
    Спасибо Благодарностей получено 
    905
    Поблагодарили
    595 сообщений
    Mentioned
    6 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    b2m, хочется простоты и минимума корпусов. Очень хочется. Даже вот пара КП11 ради IN/OUT и ещё пара ради мифического диспетчера ОЗУ ну очень глаза мозолят...
    Костылей тоже хотелось бы по-минимуму.
    Последний раз редактировалось Denn; 22.03.2019 в 13:20.
    Критиковать - значит объяснять автору, что он делает не так, как делал бы я, если бы умел

  4. #24
    Moderator
    Регистрация
    14.08.2006
    Адрес
    Владимир
    Сообщений
    4,577
    Спасибо Благодарностей отдано 
    61
    Спасибо Благодарностей получено 
    107
    Поблагодарили
    92 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Когда я порывался сделать миникомп с оглядкой на Орион, то ROM/RAM планировал так:


    Тут все пространство порта F9 (16Мб максимум) делится пополам, в нижней половине (с F9.D7=0 как делает любое ПО Ориона) имеем страницы ОЗУ, в верхней - страницы ПЗУ.
    Нулевая страница ПЗУ включается по сбросу (ЦПУ стартует с нуля работая с ПЗУ, копирует код ROM-BIOS-F800 в область F800..FFFF и делает jp F800), затем любая запись в порт F9 с D7=0 (а Монитор обычно делает это первыми командами) включает в адресном пространстве процессора ОЗУ вместо ПЗУ. Т.е. получается как в Орионе-ПРО в режиме совместимости с О-128. В расширенных страницах ПЗУ можно хранить ROM-DISK. Такое включение позволяет на одной ТМ9 подключить сразу 2Мб ОЗУ+ 2Мб ПЗУ (конечно, еще нужна схема реализующая "всегда ОЗУ некоей страницы" в области связи F000 и выше).
    Из недостатков:
    - несовместимость с ПО Ордос лазающим в ROM-диск A: напрямую через ВВ55 (от ВВ55 тут получается избавиться). Как по мне не очень критичный, т.к. ПО в-основном напрямую лазает в ОЗУ-квазидиски Ордос, а не в ПЗУ ROM-диска.
    - Саму Ордос тоже надо поправить в части работы с RОМ.
    - Если не делать доработки из Z80Card-II, то читать можно только 60кб из каждой страницы ПЗУ (теряем 6,25% емкости ПЗУ).
    Последний раз редактировалось Error404; 22.03.2019 в 15:37.
    Лучше сделать и жалеть, чем не сделать и жалеть.

    Некоторые из моих поделок тут: https://github.com/serge-404

  5. #25
    Guru Аватар для Denn
    Регистрация
    04.05.2006
    Адрес
    St.-Petersburg
    Сообщений
    2,223
    Спасибо Благодарностей отдано 
    475
    Спасибо Благодарностей получено 
    905
    Поблагодарили
    595 сообщений
    Mentioned
    6 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Error404, а тоже хорошая мысль! В плане работы с ПЗУ напрямую в адресном пространстве. И не надо изгаляться с эмуляцией ROM-диска. Минус четыре здоровенных корпуса ИР22/23. Только получается "проколотый" ROM-диск, т.к. в F800..FFFF нужно иметь Монитор, причём непереключаемый.

    - - - Добавлено - - -

    у ТМ9 "вверху" два "лишних" бита, с их помощью получается четыре варианта:

    1. Основное ОЗУ
    2. ПЗУ (RD / Монитор)
    3. СОЗУ (RAM-диск)
    4. ххх

    В последнем варианте можно посадить например гламурную видеокарту (четырёх плоскостную от ПРОшки), как доработку.

    - - - Добавлено - - -

    "Старинную" ТМ9 можно махнуть на ИР22, и тогда потенция по объёму ЗУ вырастает до 4 Мб.

    - - - Добавлено - - -

    Только придётся делать обратку (плюс 1х АП6), чтобы можно было читать состояние порта номера банки. Например, мне нужно слазить в ROM/RAM-диск, но мы не знаем из какой страницы основного ОЗУ это делается, т.е. нужно узнать, сохранить, а после восстановить правильную банку.
    Критиковать - значит объяснять автору, что он делает не так, как делал бы я, если бы умел

  6. #26
    Master
    Регистрация
    02.03.2015
    Адрес
    г. Санкт-Петербург
    Сообщений
    801
    Спасибо Благодарностей отдано 
    346
    Спасибо Благодарностей получено 
    72
    Поблагодарили
    57 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Интересный проект. Вот вопросы.
    1) Видео планируется сразу на VGA или ТВ?
    2) Будет таймер ВИ53 на основной плате?
    3) Будут разъемы расширения с системной шиной?
    PS про видео уже понял. Вот только 2-х портовое ОЗУ смущает.
    Может просто сделать отдельную память для видео?
    Последний раз редактировалось Копейкин; 22.03.2019 в 20:35.

  7. #27
    Moderator
    Регистрация
    14.08.2006
    Адрес
    Владимир
    Сообщений
    4,577
    Спасибо Благодарностей отдано 
    61
    Спасибо Благодарностей получено 
    107
    Поблагодарили
    92 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Denn Посмотреть сообщение
    "Старинную" ТМ9 можно махнуть на ИР22, и тогда потенция по объёму ЗУ вырастает до 4 Мб.
    Там еще идея была в использовании входа сброса (чтобы процессору гарантированно по включении питания или Reset включалось ПЗУ, причем определенная страница), тогда регистр надо не ИР22 (у него начальное состояние негарантированное) а какой-то со сбросом (такой есть, но на память не помню).
    Лучше сделать и жалеть, чем не сделать и жалеть.

    Некоторые из моих поделок тут: https://github.com/serge-404

  8. #28
    Master
    Регистрация
    04.12.2008
    Адрес
    г. Черкассы, Украина
    Сообщений
    957
    Спасибо Благодарностей отдано 
    4
    Спасибо Благодарностей получено 
    11
    Поблагодарили
    8 сообщений
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Error404 Посмотреть сообщение
    тогда регистр надо не ИР22
    ИР35?

  9. #29
    Master
    Регистрация
    20.06.2014
    Адрес
    г. Орск, Оренбургская обл.
    Сообщений
    780
    Спасибо Благодарностей отдано 
    26
    Спасибо Благодарностей получено 
    62
    Поблагодарили
    48 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Denn, несколько советов.
    По схеме тактового генератора: в момент записи в порт #FC у сигнала CLK (на выходе 2И-НЕ) в случае разных фаз переключаемых частот однозначно будут глитчи и как их прохавает проц ты, наверное, догадываешься... Поэтому засинхронь сигнал CLK еще одним D-триггером теми же 40 МГц.

    Цитата Сообщение от Denn Посмотреть сообщение
    т.к. ВВ55 и МК физически не смогут даже на 10 МГц, а уж на 20 - и подавно.
    Возьми NEC D8255AC-2, D82C55AC-2, КР1834ВВ55А (длительность nRD >= 150 нс [3 такта 20 МГц], длительность nWR >= 100 нс [2 такта 20 МГц]).

    Цитата Сообщение от Denn Посмотреть сообщение
    Но для работы с таким RAM-диском придётся переключаться на клок 2,5 МГц, т.к. малопотребялющее СОЗУ на клоке 20 МГц работать не будет.
    Цикл чтения/записи памяти от 2 тактов. При 20 МГц это от 100 нс. Сейчас полно низкопотребляющей статики с доступом 35, 55, 70 нс, в том числе и в DIP-корпусе.
    Последний раз редактировалось LeoN65816; 23.03.2019 в 02:13.
    Турбо АГАТ-9/16 (ЦП 65C802, 5 Махов, dual-port SRAM).

  10. #30
    Guru Аватар для Denn
    Регистрация
    04.05.2006
    Адрес
    St.-Petersburg
    Сообщений
    2,223
    Спасибо Благодарностей отдано 
    475
    Спасибо Благодарностей получено 
    905
    Поблагодарили
    595 сообщений
    Mentioned
    6 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от LeoN65816 Посмотреть сообщение
    По схеме тактового генератора: в момент записи в порт #FC у сигнала CLK (на выходе 2И-НЕ) в случае разных фаз переключаемых частот однозначно будут глитчи и как их прохавает проц ты, наверное, догадываешься... Поэтому засинхронь сигнал CLK еще одним D-триггером теми же 40 МГц.
    Насколько я знаком с МП, в них все действия привязаны к тактовым импульсам. Соответственно, программное переключение портов также происходит по клоку.
    Прошу пояснить, откуда могут взяться глитчи?


    Цитата Сообщение от LeoN65816 Посмотреть сообщение
    Возьми NEC D8255AC-2, D82C55AC-2
    Я возьму, а другие посмотрят и скажут "да ну его нафик", ещё какие-то дефицитные микросхемы нужно, побираться по китайским аукционам...

    Впрочем, на порт пользователя таки придётся ставить быструю "ВВ55", но он далеко не всем нужен.


    Цитата Сообщение от LeoN65816 Посмотреть сообщение
    Цикл чтения/записи памяти от 2 тактов. При 20 МГц это от 100 нс. Сейчас полно низкопотребляющей статики с доступом 35, 55, 70 нс, в том числе и в DIP-корпусе.
    У меня есть ОРИОН-ПРО и я знаю вот что. В нём есть два варианта работы ПЗУ Монитора: прямой и с вэйтами. Выбирается джамперами на плате. В аннотации написано, что если ПЗУ "медленная", то нужно выбирать второй вариант. У меня импортная УФ ПЗУ с реакцией 120нс, при прямом подключении, на тактовой 5 МГц комп работает с глюками, а на тактовой 10 МГц не стартует вообще! При переводе на вэйтовый вариант комп работает без проблем. Из чего я делаю вывод, что 120нс не достаточно для МПС с клоком ЦП 10 МГц и даже 5 МГц (нестабильная работа).
    Дальше по аналогии: 70нс памяти не достаточно для 20 и даже 10 МГц.
    Можно конечно собрать на макете и проверить, но мне результатов на Орионе-ПРО достаточно. Это не теория, а честная практика.
    Поэтому для беспроблемной работы на 20 МГц я предпочту ставить 10нс СОЗУ CY7C1049D-10VXI.
    Критиковать - значит объяснять автору, что он делает не так, как делал бы я, если бы умел

Страница 3 из 8 ПерваяПервая 1234567 ... ПоследняяПоследняя

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

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

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

Похожие темы

  1. Эмулятор ZX-Poly
    от Raydac в разделе Эмуляторы
    Ответов: 108
    Последнее: 03.05.2024, 02:15
  2. ОРИОН-2018 на ПЛИС
    от Павел Рябцов в разделе Орион
    Ответов: 125
    Последнее: 06.10.2023, 16:41
  3. Еще один Орион на ПЛИС
    от andreil в разделе Орион
    Ответов: 660
    Последнее: 07.05.2020, 02:02
  4. ОРИОН-2010 на ПЛИС.
    от Ewgeny7 в разделе Орион
    Ответов: 447
    Последнее: 23.11.2016, 12:27
  5. Ещё один Д.Р.
    от GNTB в разделе Поздравления
    Ответов: 4
    Последнее: 19.07.2006, 01:52

Ваши права

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