nedoPC.org

Community for electronics hobbyists, established in 2002
Atom Feed | View unanswered posts | View active topics It is currently 06 Oct 2024 23:14



Reply to topic  [ 2 posts ] 
Ethernet+RTC для любых Радио-86РК 
Author Message
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 23357
Location: Silicon Valley
Reply with quote
Отпочковано от Радио-86РК на SRAM 128K Alpha (2014) & Beta (2024) [17]

Shaos wrote:
Кстати вот этот вот разъём расширения:
Shaos wrote:
введены дополнительные дешифраторы #C000 (разделяемый ресурс с ВГ75), #C800, #D000, #D800 - все эти CS-ы вместе с адресами A0...A10, WR/RD и буферизированной шиной данных выходят наружу через 28-дырочный разъём...
позволит подцепить к компьютеру урезанную версию SprinterNet с косвенным обращением к буферам WizNet-чипа вместо прямого доступа - правда прошивку ПЗУ сетевушки придётся переписать с z80 на 8080 и изменить API, чтобы не использовались индексные регистры...
Вообще WizNet можно использовать в режиме с косвенной адресацией, подцепив вместо дополнительного ВВ5 в разъём X3 (9xxx) - там как раз 4 ячейки адресуются:
Code:
0 - регистр MR (включение косвенного режима и флаг автоинкремента, чтобы каждый раз не менять адрес)
1 - регистр IDM_AR0 (старший байт адреса)
2 - регистр IDM_AR1 (младший байт адреса)
3 - регистр IDM_DR (чтение/запись данных в косвенном режиме)
Для пущей логичности адреса можно перевернуть (инвертировав A0 и A1):
Code:
#9000 - [3] регистр IDM_DR (чтение/запись данных в косвенном режиме)
#9001 - [2] регистр IDM_AR1 (младший байт адреса)
#9002 - [1] регистр IDM_AR0 (старший байт адреса)
#9003 - [0] регистр MR (включение косвенного режима и флаг автоинкремента, чтобы каждый раз не менять адрес)
Тогда оно будет соответствовать квазидисковому интерфейсу что по #Axxx!

Адресное пространство W5100 имеет дырки:
Attachment:
Screenshot from 2024-02-25 02-02-38.png
Screenshot from 2024-02-25 02-02-38.png [ 20.71 KiB | Viewed 713 times ]
Когда в 2016 году я начал пилить интернет для TS2068 (который потом превратился в SprinterNet для Спринтера) я в эти дырки планировал воткнуть часы реального времени - в этот раз можно таки это сделать, просто параллельно визнету надо поставить регистры адреса, которые будут сохранять записываемый адрес для дырок, чтобы другие части схемы могли на них реагировать помимо визнета (правда автоинкремент по понятным причинам в этих дырках работать не будет).

Соответственно, косвенные адреса можно расположить таким образом:
Code:
#00XX - WizNET registers (48 bytes)
#01XX - reserved (SPI?)
#02XX - reserved (RTC-addr?)
#03XX - reserved (RTC-data?)
#04XX - 1st socket WizNET (44 bytes)
#05XX - 2nd socket WizNET (44 bytes)
#06XX - 3rd socket WizNET (44 bytes)
#07XX - 4th socket WizNET (44 bytes)
#0800...#1FFF - unused (RTC?)
#2000...#3FFF - ROM-disk (8KB 001...)
#4000...#5FFF - TX memory WizNET (8KB 010...)
#6000...#7FFF - RX memory WizNET (8KB 011...)
В CMOS-памяти RTC может храниться MAC-адрес и локальные настройки сети, а может быть лучше сделать как планировалось в спринтернете - MAC-адрес прошит в защищённую область SPI EEPROM, который также используется для хранений куков (ну и опционально SD-карточку можно подцепить через тот же SPI-интерфейс). Да и RTC по сути ненужен, если есть интернет - тот же sprinternet.io может выдать текущее время по гринвичу. Однако каждую секунду ведь не будешь обращаться к интернету - для этого и нужен RTC, чтобы можно было его дёргать так часто, как нужно, а интернет можно использовать для установки точного времени в самом начале работы (при необходимости).

P.S. Ха - можно ведь там даже ROM с программой разместить для обычных РК-шек :o
Люди будут втыкать эту платку в разъём квазидиска #AXXX (или даже вместо второго ВВ55) и с помощью директивы R вычитать стартовую программку-инициализатор, которая затем всё будет делать, выходя в интернет, и даже программки РК-шные можно было бы читать из интернета директивой R, копируя байты из RX memory WizNET! И часы реального времени лучше в ту же дырку воткнуть - скажем по адресу #1000 пусть будет DS12C887+ (или DS1687-5+), тогда можно одним дешифратором 3:8 обойтись и несколькими вентилями И

P.P.S. Хотя у этих RTC шина мультиплексированная - сначала надо адрес выставить дёрнув ALE, а потом только данные читать-писать...

_________________
https://mastodon.social/@Shaos :dj:
https://www.youtube.com/@Shaos1973


25 Feb 2024 03:22
Profile WWW
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 23357
Location: Silicon Valley
Reply with quote
Накидал примерную схему (2 регистра для сохранения половинок косвенного адреса для доступа к ROM и RTC не показаны):

Attachment:
rk-wiznet-rtc.jpg
rk-wiznet-rtc.jpg [ 31.76 KiB | Viewed 667 times ]

Карта памяти при этом такая получается (при работе с WizNET будет происходить автоинкремент адреса, а для ROM и RTC надо будет программно менять косвенный адрес как при работе с квазидиском):
Code:
#00XX - WizNET registers (48 bytes)
#01XX - WizNET reserved (unused)
#02XX - WizNET reserved (unused)
#03XX - WizNET reserved (unused)
#04XX - 1st socket WizNET (44 bytes)
#05XX - 2nd socket WizNET (44 bytes)
#06XX - 3rd socket WizNET (44 bytes)
#07XX - 4th socket WizNET (44 bytes)
#0800...#0FFF - WizNET reserved (unused)
#1000...#1FFF - RTC (#10xx - data, #11xx - address)
#2000...#3FFF - ROM-disk (8KB)
#4000...#5FFF - TX memory WizNET (8KB)
#6000...#7FFF - RX memory WizNET (8KB)
Обращаться к RTC можно лишь манипулируя старшим байтом косвенного адреса - пишем адрес RTC в #11xx (младшую часть косвенного адреса можно не трогать) и затем читаем или пишем данные RTC по адресу #10xx (опять же младшая часть косвенного адреса тут неважна).

P.S. Подкорректировал схему чтобы строб адреса и строб данных в RTC попадали в один и тот же чипселект. Можно ещё _RD_RTC гейтануть по ИЛИ битом адреса A8, чтобы чтение из RTC было возможно только по адресу #10xx (а хотя наверное это лишнее т.к. ALE без /WR всё равно не появится и чтение из #11xx будет равносильно чтению из #10xx).

_________________
https://mastodon.social/@Shaos :dj:
https://www.youtube.com/@Shaos1973


25 Feb 2024 18:05
Profile WWW
Display posts from previous:  Sort by  
Reply to topic   [ 2 posts ] 

Who is online

Users browsing this forum: No registered users and 11 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
Powered by phpBB® Forum Software © phpBB Group
Designed by ST Software.