PDA

Просмотр полной версии : Сетевая карта. Теплая и ламповая.



SfS
02.09.2022, 06:34
Наступает осень. Дети идут в детский сад и школу. Жизнь прекрасна.
Отходит дачный сезон. И приходят в голову разные мысли.

Например, почему на спектруме до сих пор нет сетевой карты на базе Z80, втыкаемой в NemoBus? Ну такой, чтобы по максимуму была теплая и ламповая. То есть на элементной базе 80х по максимуму.

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

В моём представлении, сетевуха выглядит так:

1. Центральный процессор Z80. (Так хочу, потому что тёпло и лампово).
2. Небольшая ПЗУ для начальной загрузки.
3. Большое (128К или больше) ОЗУ. В основном оно нужно для кольцевых буферов приёма и передачи пакетов.
4. Интерфейс NemoBUS.
5. Обязательная генерация прерываний по приёму-передаче.
6. PHY реализовать пока не знаю на чём можно. Но это наверное единственное, что более-менее современное понадбится.

Сетевуха по идее должна быть умной. Часть пакетов, например ICMP и ARP - сама обрабатывать должна. TCP-сокеты держать. В общем, по максимуму разгружать ЦП.

Раз тут типа концепции, то мутные мысли писать можно))

А может я просто не в курсе и такая карта уже есть? Про esp8266 и карты от nedopc я в курсе.

Kulich
02.09.2022, 10:33
Ну запретить делать карту на Z80 никто запретить не сможет, но может что-то более классическое сделать? NE2000 совместимое)

SfS
02.09.2022, 17:54
Что значит "совместимое"?

Физ. уровень Еthernet или wifi.
Иного смысла делать не имеет.

Со стороны спека nemobus или что-то подобное.

Выбор невелик.

Да и тупая эта ne2000. А для спека имеет смысл всю черновую работу делать на карте, разгрузив цп.

Я в чем-то не так рассуждаю?

Error404
04.09.2022, 11:54
Сетевой уровень все равно что-то должно тащить, ты же не прямо к Z80 канальный трансформатор прикрутишь, так что там вполне может быть и NE2000. Может ли на сетевухе быть еще и микрокомп на Z80 с неким API доступа к его буферам и сокетам? Вполне, получится Визнет на Z80. Такое с точки зрения энтомологии может быть вполне интересно. :) Тем более и некие зачатки софта для таких гибридов есть (например от MSX где RTL8019 которая NE2k или чудовищный но безальтернативный uIP).

Какие видятся ограничения. Платформы не хватает для реализации TCP со сборкой фрагментированных пакетов. Поэтому скорость получим менее 10кбайт в секунду (или придется покласть на RFC, что возможно - но черевато). Это не так страшно, ЕМНИП wiznet это тоже не тянет. С другой стороны при этом способе не нужен большой буфер ОЗУ на карте, не нужны прерывания на стороне Хоста (нормального контроллера которых нет ни на одном бытовом ПК на Z80 из тех что тут у нас) - поллинга более чем достаточно.

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

NЕ2к это же вполне решение тех лет - конец 80х. Корпуса конечно мелколапчатые, но не настолько как у Визнета

^m00h^
04.09.2022, 18:27
MSX'ную сетевую карту от Камиля Каримова подключить никак не получится, или ObsoNet от Ptero ?

https://zx-pk.ru/threads/15815-obsonet-(poltora)-ethernet-plata-dlya-msx-).html

SfS
05.09.2022, 09:06
Спасибо, почитающ

Rio444
05.09.2022, 10:57
2. Небольшая ПЗУ для начальной загрузки.А это зачем? Есть же ОЗУ.

Egal
05.09.2022, 11:43
Не очень понятно зачем. И на 64К/512К. Сомнительно.

SfS
05.09.2022, 12:59
Что зачем?

^m00h^
05.09.2022, 13:04
Вобщем-то Камиль делал реплику того же ObsoNet как разьяснили msx'овцы: https://zx-pk.ru/threads/15778-obsonet2-ethernet-plata-dlya-msx.html

Kulich
05.09.2022, 13:49
Вообще в данное время я тащусь от Zxnetusb, прям очень нраица. Конечно W5300 тут не катит по ламповости. Зато вполне реализуем. Вообще все это имеет смысл только если кто-то напишет весь софт от драйвера до браузера)

SfS
05.09.2022, 15:26
Ну так у меня на эве самопайный модуль на esp01 стоит:)
Все это есть.

Rio444
05.09.2022, 15:57
Что зачем?Зачем нужна "2. Небольшая ПЗУ для начальной загрузки."? Если есть ОЗУ.

SfS
05.09.2022, 16:18
Зачем нужна "2. Небольшая ПЗУ для начальной загрузки."? Если есть ОЗУ.

Ну... Для загрузки по сети:)
Конечно можно и через озу заливать по, а потом запускать проц на карте.

Rio444
05.09.2022, 16:28
Ну... Для загрузки по сетиСильно!
Вы художник, если так видите... :D

SfS
05.09.2022, 16:52
Я вижу довольно просто:) умная сетевуха со своим отдельным z80. Ну и почему бы по сети не грузить? :)
Спекки-терминал:)

Rio444
05.09.2022, 18:15
Ну и почему бы по сети не грузить?Это чтобы сэкономить на ПЗУ спеки? :D

SfS
06.09.2022, 16:13
Это чтобы сэкономить на ПЗУ спеки? :D

Нет. Это просто по приколу:)

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

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

В общем, пзу всегда хорошо.

Rio444
06.09.2022, 17:35
В общем, пзу всегда хорошо.Только один минус. Прошивку нужно менять в программаторе, для этого извлечь, потом обратно установить чип.
В то время, как код, хранящийся в ОЗУ меняется всего лишь обновлением драйвера.

SfS
06.09.2022, 17:39
Ну можно и внутрисхемно перешивать.
Не знаю. Везде есть плюсы и минусы

null_device
06.09.2022, 20:41
Rio444, как часто вы перепрошиваете биос в компутаторе, ось в смартфоне или ПЗУ своего железного спектрума?
Какой-то базовый функционал, уровня tr-dos, работающий "искаропки" всяко лучше, чем грузить его с внешнего носителя.
Представьте к примеру себе, что для работы того же bdi, его программный код нужно было загружать с кассеты в теневое ОЗУ контроллера? :)

Rio444
07.09.2022, 21:12
его программный код нужно было загружать с кассеты в теневое ОЗУ контроллераПочему с кассеты?
Если на комп ставится сетевая, там уже как минимум должна быть карта SD, или что-то подобное.

marinovsoft
08.09.2022, 03:41
Если на комп ставится сетевая, там уже как минимум должна быть карта SD, или что-то подобное.
Кому должна? В стартовом посте подразумевается лишь наличие NemoBus.

SfS
08.09.2022, 04:48
Поясню немного мысли свои.
ПЗУ позволит превратить спек в рабочую станцию:)

То есть, берём почти любой спек. В него можно пришлепнуть nemobus.

Втыкаем сетевуху.

Грузимся из пзу сетевуха и можем сразу по интернету, например, игру загрузить.

Или вообще образ трдоса хранить на сервере и работать с ним как с облачным хранилищем.

То есть для начала работы нужна лишь сетевуха и выход в инет.

Для этого сетевуха и нужен собственный проц. Держать сокеты и проч.

Я уж не говорю, что так можно сразу игрухи грузить.

Конечно, для этого нужен спецсайт:) но прикольно же:)

marinovsoft
08.09.2022, 15:30
У тебя же феникс, а в нем считай набортная ZX Multi Card от Caro. которая существует в виде nemobus карточки. У ней есть RS232, цепляем к ней espчтототам и PROFIT!!!

SfS
08.09.2022, 15:55
У тебя же феникс, а в нем считай набортная ZX Multi Card от Caro. которая существует в виде nemobus карточки. У ней есть RS232, цепляем к ней espчтототам и PROFIT!!!

У меня пентева. И esp на ней работает.
Но возможности крайне ограничены.

Никакого автостарта. Никакого облачного хранения.
Там проблем масса.

Одно достоинство - офигеть как просто и дёшево.

Я, кстати, подумал, что физический уровень можно на esp32 повешать. Он одновременно и wifi и ethernet может. Я проверял.

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

Вообще без умной сетевуха мультиплеера не сделать ещё... Эх. Мечты

marinovsoft
08.09.2022, 16:21
Там проблем масса.
Самая главная проблема - очень мало софта, а железку можно какую-угодно сваять.

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

В ZXMC терминальная программа в прошивку атмеги зашита - нажимаешь хоткей из бейсика, она и стартует. Можно заменить на свою программу, которая уже откуда-то из другого места подгрузит то, что еще нужно для работы.

SfS
08.09.2022, 17:04
Есть принципиальные проблемы. Отсутствие прерываний. Скорость обмена по 232 порту. Полная загрузка проца временами. Сокетов мало. И проч.

Kulich
08.09.2022, 23:15
Для Спектрума скорость обмена по uart в целом не проблема, 57600, ну 115200 это в среднем предел для реального обмена если это не 14 МГц турбо)
Прерывания да, полезно бы чтоб не полить порт.
А ну и у Спектрума либо мало памяти, либо медленные накопители, поэтому большая скорость не так уж и важна

SfS
09.09.2022, 04:57
Большая скорость обмена важна тем, что остаётся время цп на другие задачи. С этой же точки зрения важны и прерывания.
Смысл умной сетевухи именно в том, чтобы разгрузить цп. Плюнул пакет в сокет и забыли до прихода прерывания. Пришло прерывание, получили несколько слов состояния и данные и опять занимаемся обработкой данных до следующего прерывания или необходимости отправить данные.

А так все время цп уходит на обмен и поллинг. Ни о каких мультиплеерах и речи идти не может. Ну в теории можно, конечно, и на esp что-то сделать. Но то такое.

115200 это 11кбайт в сёк.
С помощью inir otir скорость обмена около 160кбайт в сёк.

Тут соображение такие. 256 байт при скорости 160кбайт в сек будут передаваться всего за 1/12 прерывания кадровой развёртки. То есть 11/12 времени можно тратить на обработку данных.

Это я про мультиплеер. Поди 256 байт хватит для обмена состоянием игры.


В любом случае, COM-порт неудобен. Скорость низкая. Прерываний нет.

Что бы ты не начал писать - упираешься в том, что надо опрашивать ком-порт и кучу времени тратить на ожидания. Да, в промежутках можно что-то делать. Но это всё крайне неудобно.

Kulich
09.09.2022, 08:00
А много на Спектруме применений обмену данных при параллельной обработки, обычно сводится, скачали и смотрим, слушаем, читаем, играем. Толку от на половину загруженного pt3 нам не много. Играм же важнее задержки, 9600 с около нулевой задержкой сильно лучше мегабита с задержкой в 500 мс)

SfS
09.09.2022, 09:43
Тут речь идёт не о скорости как таковой. А о времени получения или отправки пакета.
Средней скорости и 9600 бы хватило. Но не размазаной во времени, а короткими пакетами.

izzx
09.09.2022, 21:16
Мультиплеер через сервер думаю можно сделать. Через ESP и UART с аппаратным контролем. Не обязательно всё время опрашивать порт. Данные держит ESP и контроллер. Примерно килобайт так точно влезает. Когда есть время всё принял, всё отправил на сервер. Сервер всегда свободен для таких мелочей. И до следующего обмена заниматься своими делами.

SfS
10.09.2022, 04:04
Мультиплеер через сервер думаю можно сделать. Через ESP и UART с аппаратным контролем. Не обязательно всё время опрашивать порт. Данные держит ESP и контроллер. Примерно килобайт так точно влезает. Когда есть время всё принял, всё отправил на сервер. Сервер всегда свободен для таких мелочей. И до следующего обмена заниматься своими делами.

Так проблема в принял.
Вот представь. У тебя пакет 256 байт.
На скорости 115200 он будет приниматься 0.022с.
То есть больше одного прерывания. Причём основное время приёма будет занято ожиданием.
И о каком мультиплеер речь?. Ну, конечно, можно уменьшить длину пакета. Но тоже не бесконечно.

При обмене командами работы с портами те же 256 байт примут я за 0.0016 сёк. То за 1/30 от прерывания. И спек спокойно их обработает.

Проблема не в скорости передачи по сети. Проблема в организации обмена между сетевухой и спеком.

Kulich
10.09.2022, 08:22
Не нужно его ждать, нужно просто управление потоком и uart с fifo. Зашли, вычитали десяток байт, убрали CTS и до следующего раза. В пределах разумного.

SfS
10.09.2022, 09:04
Так передача пакета между esp8266 и fifo тоже больше прерывания.
В общем, гемороев море. И теплоты с ламповостью нет:)

izzx
10.09.2022, 10:09
Так проблема в принял.
Вот представь. У тебя пакет 256 байт.
На скорости 115200 он будет приниматься 0.022с.
А если поставить кварц в 8 раз быстрее, то примем за 0,00275с.
Но буфер и правда может спасти. Там по-моему буфер fifo на 16 байт. Вот по 16 байт надо время от времени принимать и так вывернемся.

Kulich
10.09.2022, 10:21
Вообще я на современном Спектруме знаю ровно одну сетевую игру и не слышал ни разу чтобы хоть один человек играл в неё по сети) Ещё был пяток игр под Interface I следа в истории тоже не оставили. Поэтому игры по сети это не первоочеиедное) непонятно зачем вам именно 50 раз в секунду выгребать 256 байт, если хоть сколько нить сложная игра и 25 кадров не выдаст в секунду) а для игр вроде Laser Squad, Worms и прочих вообще не важно, не дезматчи же вы по кваке хотите устраивать.

Rio444
10.09.2022, 11:22
Вот представь. У тебя пакет 256 байт.Это что за пакет такой? Для файла очень мало. Для обмена данными при игре по сети - очень много.

Kulich
10.09.2022, 11:53
наверное хотели стейт игры передавать в нем. В общем если человек чувствует в себе силы реализовать сетевой уровень на z80 в одно лицо, тол ко можем пожелать удачи в этом нелёгком деле) а потом уже обсудим особенности его программирования, а интернет по Uart у нас в другой теме =)

Rio444
10.09.2022, 13:41
В общем если человек чувствует в себе силы реализовать сетевой уровень на z80 в одно лицо, только можем пожелать удачи в этом нелёгком деле):v2_thumb:Лучше не скажешь. :D

Sandro
10.09.2022, 14:59
На память, в Doom 6 байт 35 раз в секунду на каждого игрока.

Rio444
10.09.2022, 15:08
Sandro, вот это гораздо ближе к истине.
Ведь эти байты не только отправить-принять надо, но ещё и обработать. Z80 не по силам 256 байт в самом турбо-турбо режиме.

Sandro
10.09.2022, 18:13
Прошу прощения, таки попутал. 4 байта в Doom.

Флаги: смена оружия/гашетка/"использовать"/особое действие, бег, стрейф, направление взгляда (и прицела).

А Варкрафт старается вообще ничего не передавать, если игрок ничего не делает. Поэтому он по 2400 вполне нормально играется.

SfS
13.09.2022, 00:32
Это раздел концепции.
Вот я пока и концептуирую тут:)

Пока не могу ничего сделать по теме, кроме как поговорить.

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


А если поставить кварц в 8 раз быстрее, то примем за 0,00275с.


Кварц на скорость обмена по uart не влияет:) если речь про обмен по уарт. Придётся все равно 115200 выставлять. Ну и прерываний нет.

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

256 байт для определённости. Число круглое и красиаое:)

SfS
13.09.2022, 03:34
Вообще, самая простая концептуально правильная карта это esp32, снабженная двумя регистрами и дешифратором адреса плюс прерывание.

Но она не ламповотеплая:)

CodeMaster
13.09.2022, 07:29
Вообще, самая простая концептуально правильная карта это esp32
Начал за здравие, закончил за упокой...

SfS
13.09.2022, 07:38
Какой упокой? Я просто рассуждаю:)

izzx
13.09.2022, 09:53
Кварц на скорость обмена по uart не влияет если речь про обмен по уарт. Придётся все равно 115200 выставлять.
Можно и 921600 скорость поставить. Отчего ж нельзя. Я про конкретную карту на ESP12. На сколько проц успевает использовать такую скорость при таком способе обмена - вопрос.

Kulich
13.09.2022, 10:50
А ещё для ускорения можно ноль закодить как последовательность и тогда не нужно проверять статус даже, прочли ноль, значит данных нет.

SfS
14.09.2022, 04:50
На сегодня самая крутая карта для спека это zxnetusb. Надо бы приобрести, поиграться.

CodeMaster
14.09.2022, 07:12
На сегодня самая крутая карта для спека это zxnetusb.
С USB на лампах?

SfS
14.09.2022, 08:04
С USB на лампах?

Нет, с лампой в эзернете:)