nedoPC.org

Electronics hobbyists community established in 2002
Atom Feed | View unanswered posts | View active topics It is currently 28 Mar 2024 07:12



This topic is locked, you cannot edit posts or make further replies.  [ 27 posts ]  Go to page 1, 2  Next
Тандем Z80+DMA: RAM-диски без "окна", RAM-toRAM DMA и другое 
Author Message
Doomed

Joined: 25 Aug 2009 07:02
Posts: 459
Location: Москва
Вот сделал себе маленький комп. Основным толчком стало то, что на митинском радиорынке не смог пройти мимо бело-золотого красавца с маркировкой 80A-CPU MME. Вообще давно мысль была, что нужна подручная маленькая программируемая штуковина для удобной работы со всякими другими программируемыми микросхемами. Универсальная система на 8080/8085/Z80 (ну или даже на 1801ВМчто-то) тут подходит в самый раз, имея множество преимуществ по сравнению с вариантом взять AT*, написать прогу, запрограммировать его, вставить в макет и отлаживать непонятно что, то ли прогу контроллера, то ли алгоритм работы с остальной частью девайса. Кроме того, в процессе сборки маленького компа реализуется масса давних фетишных задумок, что дает кучу положительных эмоций. Посему толчок был получен и началась реализация. Далее расскажу, что туда запихнул, как и почему.
Контроллер ПДП. Потому что лет 20+ уже валяется купленный у барыг в Электроне (не ошибся?) на Сущевском Валу КР580ВТ57. К тому же с 37-м работал, с 57-м не работал. Потом лет 15 у меня валялся 8272A, он отлично вписывается идеологически в общую концепцию, особенно вместе с DMA. Потому что идеологическая концепция предусматривает написание и отладку программ на самой микроштуковине, и НГМД там очень даже кстати. Более того, дисковод очень хорошо диктует габариты и конструктив. Без извращений в деле фетишизма никак не обходится, поэтому задумываю изврат ¹1, пусть ПДП работает для пересылок память-память тоже. Как потом оказалось, что это вовсе и не изврат, но мне повезло, что на эту инфу я наткнулся уже после проектирования и обкатки решения, так что цепочка "извратная идея"->"схемотехническая реализация"->"отладка в железе" прошла без помех, что немаловажно для состояния протащиться от изврата по полной. 8) Вот. А если ПДП работает память-память, то сам собой напрашивается электронный диск. Для него у меня опять же лет 15 валяются XX4256, взять из этой кучки два маленьких DIP20 - и вот они 256K. В конце 80-х у меня был самодельный комп (тогда говорили микро-ЭВМ), на что похожий - сказать затрудняюсь, потому как не повторение было, хотя вариант основы не мой. Скажем так, доработка и развитие на базе мМС1204 (МПСС ¹5 1986 стр 65-69). Кроме контроллера там было 2 платы ОЗУ по 64К и плата интерфейса дисковода на 1818ВГ93, а в самом контроллере один канал на ВВ51 был извращенным образом переделан на интерфейс магнитофона. Как опять же потом оказалось, это не изврат, в МПСС встречал статью с описанием магнитофонного интерфейса на ВВ51 в синхронном режиме, но мой вариант был круче, потому что был полностью цифровой, безо всяких АГ-шек :kruto:
Та микро-ЭВМ была утеряна, о чем я иногда жалею, потму как почти свое детище, поэтому маленький комп в чем-то повторяет характеристики того компа, НГМД+192К электронного диска. На прошлой работе как-то выкидывали циску 4-тонник, от нее у меня скопилась кучка AMD-шных 020-х флешек, что есть тоже 256К, что естественным образом родило мысль флешку заюзать как постоянный электронный диск. От той же циски применил 54-й таймер, хотя есть кучка ВИ53-х, почему-то решил поставить этот 8254, хотя без разницы абсолютно в моем случае. 54 и 51 применил идентично как в вышеупомянутом контроллере мМС1204. А контроллер прерываний поставил 1818ВН19, коих парочку опять же лет N назад взял на тогда еще тушинском рынке за какой-то бесценок, просто из любопытства и от удивления, что ВН оказывается еще бывают и не 59. ВН19, как оказалось, идеально подходит к IM2 Z80.
К тому же я никогда не разрабатывал комп на Z80, повторение спектрумов не в счет, поэтому в этой разработке я задействовал все возможности проца (кроме NMI, которое можно было бы использоваь для контроля четности памяти, но это вышло бы за рамки минималистической концепции). RFSH, правда, самым лучшим образом заюзать не получилось, сделал банальное CAS-before-RAS по RFSH. И, наконец, изврат ¹2 это 176ИЕ12 от 5 вольт и 1 МГц в качестве перезапускаемого таймера выключения двигателя дисковода. Вот этого точно никогда не было. Молодцы новосибирцы, хорошую 176-ю серию делают.
Наружу вывел шину данных, три CS с перекрытием по 4 адреса, A0, A1, один DRQ/DACK и два прерывания. Ну и ресет. Заняты оказались все каналы INT и DMA.
В общем, CPU+DMA+64K RAM+FDC+256 FLASH disk+192 RAM disk+Int Controller+Timer+USART уместилось на плате размером с 3" дисковод.
При такой плотности двусторонняя разводка не получается, поэтому монтаж сделал проводом. Время потратил, зато земля сплошная, сигналы на осциллографе красивые, и снаружи смотрится прикольно, микросхемы и текстолит - а дорожек нет.
КПДП поставил не тот старый пластмассовый, хотя решение отладил на нем, а керамику новосибирской серии 1860, из соображений так красивше, потом 1860 это какая-то спецсерия, устойчивая к какому-то спецвоздействию, и вообще, Новосибирск хороший город и люди там хорошие.
Сейчас CP/M на машинке зашевелилась потихоньку.
Концепция программ - если ЦП нечего делать, он в HLT, а в движение его приводят прерывания. Благо вся аппаратная поддержка тому есть, ни одно внешнее устройство без прерываний не подключено. Даже mem-to-mem DMA генерит прерывание в конце передачи.
У меня Zaurus 760-й есть, думаю вывести нормально его RS232, будет маленький терминал к маленькому компу.


Last edited by Mixa64 on 04 Apr 2023 23:13, edited 2 times in total.



22 Sep 2009 08:43
Profile
Novelist

Joined: 08 Dec 2008 14:08
Posts: 39
Location: Finland
Post 
Mixa64 wrote:
А я тут себе сделал маленький комп.

А можно фотками этой красоты разжиться?


22 Sep 2009 09:09
Profile
Doomed

Joined: 25 Aug 2009 07:02
Posts: 459
Location: Москва
Post 
Freshman wrote:
Mixa64 wrote:
А я тут себе сделал маленький комп.

А можно фотками этой красоты разжиться?


Фотки есть, только как их сюда запостить?


23 Sep 2009 01:54
Profile
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22409
Location: Silicon Valley
Post 
Mixa64 wrote:
Freshman wrote:
Mixa64 wrote:
А я тут себе сделал маленький комп.

А можно фотками этой красоты разжиться?


Фотки есть, только как их сюда запостить?


Посылай мне - вывешу

P.S. А это другой ведь комп? Может топик отпочковать чтобы народ не путать?

_________________
:dj: https://mastodon.social/@Shaos


23 Sep 2009 06:06
Profile WWW
Doomed

Joined: 25 Aug 2009 07:02
Posts: 459
Location: Москва
Post 
Image

Image

Image


24 Sep 2009 09:24
Profile
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22409
Location: Silicon Valley
Post 
Mixa64 wrote:
Image


А выглядит прикольно :)

_________________
:dj: https://mastodon.social/@Shaos


24 Sep 2009 16:15
Profile WWW
Banned
User avatar

Joined: 20 Mar 2005 13:41
Posts: 2141
Location: От туда
Post 
Ух ты, класс! :kruto:


24 Sep 2009 20:11
Profile
Doomed
User avatar

Joined: 11 Dec 2003 14:34
Posts: 413
Post 
Mixa64 wrote:
Freshman wrote:
Mixa64 wrote:
А я тут себе сделал маленький комп.

А можно фотками этой красоты разжиться?


Фотки есть, только как их сюда запостить?


А схему можно глянуть ?. Интересует схема подключения 8272A (с обвязкой). В инете нигде ее (схему) не нашел.

_________________
Vasil Ivanov
vasil-i@yandex.ru


25 Sep 2009 06:05
Profile
Doomed

Joined: 25 Aug 2009 07:02
Posts: 459
Location: Москва
Post 
Vasil Ivanov wrote:
А схему можно глянуть ?. Интересует схема подключения 8272A (с обвязкой). В инете нигде ее (схему) не нашел.


Схема в пикаде :) и 22V10 у меня, поэтому схема простая, 8272-22V10-разъем. Ну не считая инверторов и таймера двигателя.

Вот в этой книжке на стр 128 есть вариант включения на рассыпухе
http://books.google.ru/books?id=DKajtHfqoRkC

А так, если что конкретное, спрашивайте, отвечу, пока только что сделал и в теме еще. Чип со странностями, пока сам не увидишь, как работает, не проникнешься пониманием.


25 Sep 2009 09:10
Profile
Doomed

Joined: 25 Aug 2009 07:02
Posts: 459
Location: Москва
Post 
Mixa64 wrote:
Вот в этой книжке на стр 128 есть вариант включения на рассыпухе
http://books.google.ru/books?id=DKajtHfqoRkC

Опа, прошу пардону, не совсем то. Тут вариант с интегрированным сепаратором.
Вот здесь смотрите
http://www.hartetechnologies.com/manual ... sk%201.pdf


25 Sep 2009 09:15
Profile
Retired

Joined: 03 Aug 2003 22:37
Posts: 1474
Location: Moscow
Post 
Красота. Других слов нет :)

_________________
Extreme Entertainment


25 Sep 2009 12:09
Profile
Doomed
User avatar

Joined: 05 Nov 2007 05:08
Posts: 487
Location: Украина
Post 
Песня!


29 Sep 2009 06:58
Profile WWW
Maniac
User avatar

Joined: 05 Oct 2006 04:45
Posts: 269
Location: Moscow
Post 
Проект планируете документировать и выложить на обозрение?
Интересно посмотреть как что решено - как в железе, так и программном коде.

_________________
Всем добра!


26 Oct 2009 05:20
Profile
Writer

Joined: 05 Oct 2007 08:09
Posts: 11
Location: 91.124.79.227
Post 
Зачётно!


27 Oct 2009 02:38
Profile
Doomed

Joined: 25 Aug 2009 07:02
Posts: 459
Location: Москва
Post 
Error404 wrote:
Проект планируете документировать и выложить на обозрение?
Интересно посмотреть как что решено - как в железе, так и программном коде.


Скорее да, чем нет. :) Эта штуковина задумывалась как единичный экземпляр, достойный постамент для достойных микросхем, чтоб не валялись просто так без пользы. Плюс фишки разные, из мира идей в мир железа, опять же, чтоб в голове не валялись без пользы. Поэтому много внимания уделил некоей эстетике, которая весьма субъективна. Полностью документировать смысла нет, потому как вещь в себе, хотя до хорошо расширяемой системы пара простых шагов. Но эти шаги во-первых добавят корпусов, поэтому такого размера платы мало, во-вторых будет ненужный соблазн модернизации.

Да, кнопку сброса поначалу хотел не делать, потом оказалось - ЭТО ГЛАВНАЯ КНОПКА. Во, быстро те времена забываются.

Выложу блок-схему, а для характерных моментов куски принципиальной.

Программные решения, хм... CP/M 2.2 галимый :)
Обычный BIOS с обычным blocking-deblocking'ом. Единственная фишка - отсутствие циклов с опросами флагов готовности ввода-вывода, все по прерываниям. Ну может еще кольцевые буферы на ввод и вывод консоли, их пришлось сделать, чтобы RTS/CTS flow control реализовался, у ВВ51 нет внутренних буферов.

Вывел две лампочки активности, одна с #HALT CPU (у него NMI лишь не задействован, все остальное подключено), другая с AEN DMA. По ним видны вычислительная активность процессора и обмен по ПДП. А можно еще вместо лампочек стрелочный прибор прицепить, будет показывать загрузку CPU. Надо будет где-нибудь это потом реализовать.

Общий подход к программированию такой. Процессор либо знает, что ему делать и делает это, либо для продолжения ему нужно внешнее событие и он ждет этого события. Событие это прерывание. В ожидании события проц уходит в HALT. Перед уходом туда в битовом поле регистраций он взводит требование, по какому событию он выйдет из ожидания.
Обработчик прерывания взводит семафор в отдельном битовом поле.
Если по прерыванию из HALT регистрация и семафор совпадают, то возвращаемся из HALT, иначе - ждем дальше. Для работы с семафорами у Z80 есть прекрасные атомарные команды set-reset bit. При этом не нужно делать DI/EI как у 8080.

Например, фрагмент обмена с контроллером дисковода


Code:
fdcop:
   ld   hl, ISEM      ; База битовых полей, HL->ISEM
   res   INTFDCN, (hl)   ; Очистить семафор
   inc   hl         ; HL-> IREG
   ld   (hl), FDCSEM   ; Регистрация события

   ld   c, FDCD      ; адрес регистра данных FDC
   call   fdccmd      ; программирование контроллера
   call   EVENTS      ; ждать события
 .... ну и т.д., здесь команда FDC выполнена

ISEM      .db   0
IREG      .db   0


Обработчик прерывания от FDC:

Code:
INTFDC:
INTFDCN   .equ   6

FDCSEM      .equ   1<<INTFDCN
      exx
      LD   HL,ISEM
      set   INTFDCN, (hl)
      exx
      ei
      ret


То, где обычно находится процессор:

Code:
EVENTS:
      PUSH   HL
      DI
; На случай, если событие уже произошло и ждать не нужно
      LD   HL,(ISEM)   ; L событие, H регистрация
      LD    A, L
      AND   H      ; Совпадает?
      JR   NZ, EVDONE
ELOOP:
      EI
      HALT         ; Ждем чего-нибудь
      DI
      LD   A,(ISEM)   ; Событие
      AND   H      ; Совпадает с регистрацией?
      JR   Z,ELOOP   ; Нет - ждем еще
EVDONE:
      EI
      POP   HL
      RET


28 Oct 2009 16:10
Profile
Display posts from previous:  Sort by  
This topic is locked, you cannot edit posts or make further replies.   [ 27 posts ]  Go to page 1, 2  Next

Who is online

Users browsing this forum: Google [Bot] and 10 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.