Радио-86РК на SRAM 32K

Советский компьютер Радио-86РК (1986) и его клоны

Moderator: Shaos

User avatar
alexcp
Senior
Posts: 139
Joined: 11 Jun 2012 07:30

Радио-86РК на SRAM 32K (2018)

Post by alexcp »

Схема прототипа мало отличается от схемы 2012 года: удалены ROM-диск, адаптер PS/2 клавиатуры и источник питания на модулях, обеспечен запуск монитора с адреса F800 (а не E000, как в первоначальном варианте). К589ИР12 заменен на на ИР33/LS573 + инвертор, а К155ИР13 - на 2 шт. ИР11/LS194.
Radio-86RK-SRAM_R2.pdf
74LS198.png
В феврале 2024 года Shaos добавил сюда вторую картинку для пущей понятности:
74LS573.png
You do not have the required permissions to view the files attached to this post.
Last edited by alexcp on 02 Jan 2019 19:42, edited 8 times in total.
User avatar
Shaos
Admin
Posts: 23992
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: Радио-86РК на SRAM 32K

Post by Shaos »

Самый компактный РК в мире? ;)



Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
alexcp
Senior
Posts: 139
Joined: 11 Jun 2012 07:30

Re: Радио-86РК на SRAM 32K

Post by alexcp »

Да, иду на мировой рекорд :ebiggrin:
Эмуляторы, конечно, существенно компактнее, как на ESP8266, так и на PIC32.
Кстати, существуют SMT версии для 8255 и 8085, так что можно еще ужаться по размерам, да и раскладывать SMT по плате существенно легче, чем паять каждую ногу. С другой стороны, я не вижу use case'а для суперкомпактного компьютера, которому нужны дисплей и клавиатура.
Last edited by alexcp on 15 Dec 2018 19:39, edited 2 times in total.
newold86
Devil
Posts: 716
Joined: 30 Nov 2013 11:08
Location: WWW

Re: Радио-86РК на SRAM 32K

Post by newold86 »

Красиво... Я давно сам думал сделать что-то подобное, но был занят другими проектами...

Насчет раскладывания SMT - я настолько обленился, что даже при отсутствии SMT версий каких-то микросхем, просто использую SMT панельки. Еще уменьшил базовый размер рассыпухи до 0603 (начинал с 1210, долгое время был на 0805), вообще красота - места почти не занимает. 0402 приходится использовать только в виде блокировочных конденсаторов питания для BGA корпусов - там между ногами бОльшие размеры не помещаются...
User avatar
alexcp
Senior
Posts: 139
Joined: 11 Jun 2012 07:30

Re: Радио-86РК на SRAM 32K

Post by alexcp »

На мой взгляд, использование SMT в самоделках - это вопрос отчасти навыков, отчасти наличия соответствующего оборудования.

Например, SOIC и 1210/1206 хорошо видно невооруженным глазом, их легко паять вручную, и только для контроля качества нужна лупа. SSOP и 0805/0603 без лупы паять неудобно, а 0402 и мельче, думаю, и невозможно. Удобен монтажный микроскоп, но его нужно купить и куда-то поставить. Пайка горячим воздухом решает часть проблем, в том числе ремонта/rework, но требует наличия фена. Reflow oven позволяет, например, уверенно использовать DFN/QFN, но опять же, требует денег и места, а также трафаретов, особенно для мелких (0603) и fine pitch (<=0.65мм) деталей.

Если все это оборудование иметь, то тогда можно быстро и удобно собирать довольно сложные вещи, но они оказываются недоступны для повторения тем, у кого нет соответствующего оборудования и опыта работы с ним, так что не все смогут приобщиться. Например, готовую плату под QFN с шагом выводом 0.4мм невозможно собрать без горячего воздуха и трудно - без трафарета. С другой стороны, многие современные компоненты существуют только в SMT, и навык работы с ними приходит с опытом.

Есть, наверное, какая-то золотая середина.
Last edited by alexcp on 15 Dec 2018 19:39, edited 1 time in total.
User avatar
fifan
Devil
Posts: 909
Joined: 06 Oct 2006 03:17
Location: г.Лянтор,Сургутского р-на,ХМАО

Re: Радио-86РК на SRAM 32K

Post by fifan »

Я всё таки не нашёл упоминание в постах - а плата разведена на двух слоях или более?
User avatar
alexcp
Senior
Posts: 139
Joined: 11 Jun 2012 07:30

Re: Радио-86РК на SRAM 32K

Post by alexcp »

Плата четырёхслойная - в двух не развелось :osad:
Дополнил свой пост выше, чтобы было понятно.
Last edited by alexcp on 15 Dec 2018 18:06, edited 1 time in total.
User avatar
alexcp
Senior
Posts: 139
Joined: 11 Jun 2012 07:30

USB интерфейс

Post by alexcp »

Еще две игрушки на ту же тему.

Первая - это USB интерфейс на базе FT245R, который можно воткнуть вместо ВВ55.

Со стороны хоста (PC) это выглядит как виртуальный последовательный порт (/dev/tty.usbserial-XXXXXXXX или COMx), а со стороны РК - как два порта, один двунаправленный для данных, второй, только на чтение, содержит два бита статуса очередей чтения/записи. Если воткнуть платку в РК вместо D14, то порт данных будет находиться по всем четным адресам 0xAxxx, а порт статуса - по всем нечетным. Их можно читать/писать даже из Монитора, директивами D или L и M или F, соответственно.

Пример использования из ассемблера:

Code: Select all

;===========================================================================
;  FT245R use example
;  Created by @alexcp on 18 Dec 2018
;  
;
FT245R  equ     0A000h  ;  base address of FT245R FIFO
DATA    equ     0       ;  Data register
STAT    equ     1       ;  Status register
;
;  Define FIFO port
FIFO_DATA   equ   FT245R+DATA
FIFO_STATUS equ   FT245R+STAT
RXEMPTY equ     1       ; MASK FOR RX BUFFER EMPTY
TXFULL  equ     2       ; MASK FOR TX BUFFER FULL
;
;===========================================================================
;  Get a character to A
;
;  Return A=char, CY=0 if data received
;         CY=1 if timeout
;
;  Uses 4 bytes of stack including return address
;
GETCHAR:
        PUSH    D
        LXI     D,8000h       ;long timeout
gc10:   DCX     D
        MOV     A,D
        ORA     E
        JZ      gc90          ;exit if timeout
        LDA     FIFO_STATUS   ;read device status
        ANI     RXEMPTY
        JNZ     gc10          ;not ready yet.
;
;  Data received:  return CY=0. data in A
        XRA     A             ;cy=0
        LDA     FIFO_DATA     ;read data
        POP     D
        RET
;
;  Timeout:  return CY=1
gc90:   STC                   ;cy=1
        POP     D
        RET
;
;===========================================================================
;  Output character in A
;
;  Uses 4 bytes of stack including return address
;
PUTCHAR:
        PUSH    PSW           ;save byte to output
pc10:   LDA     FIFO_STATUS   ;read device status
        ANI     TXFULL        ;tx full ?
        JNZ     pc10

        POP     PSW
        STA     FIFO_DATA     ;transmit char
        RET
К сожалению, в схеме допущена ошибка - вывод 5 U4 подключен к A0, а должен бы к /A0. Из-за этого данных порт на запись/передачу расположен не по четному адресу, а по нечетному, по которому на чтение выдаются биты состояния FIFO. Исправлю в следующей редакции.
You do not have the required permissions to view the files attached to this post.
Last edited by alexcp on 21 Dec 2018 11:53, edited 14 times in total.
User avatar
alexcp
Senior
Posts: 139
Joined: 11 Jun 2012 07:30

Re: Радио-86РК на SRAM 32K

Post by alexcp »

Вторая игрушка - интерфейс I2C на базе PCF8584, тоже втыкается вместо ВВ55.
Пример программирования:

Code: Select all

; PCF8584 use example
; Created by @alexcp on 20 Dec 2018
; 
; Define PCF8584 ports
PCF_BASE    EQU     0A000h
DATA_REG    EQU     0
CTRL_REG    EQU     1
PCF_DATA    EQU     PCF_BASE+DATA_REG
PCF_CTRL    EQU     PCF_BASE+CTRL_REG
;
; Define PCF8584 status bit masks
PCF_BBN     EQU     01h             ; bus busy, active low
PCF_PIN     EQU     80h             ; pending interrupt, active low
PCF_LRB     EQU     08h             ; last received bit (typically the ACK bit)
;
; Define slave address
SLAVE_ADDR  EQU     8
; Byte to send to the slave
DATA_BYTE   EQU     'A'
;
            ORG     0
; initialize PCF8584
PCF_INIT:
; program own slave address (this is required even if the address is not used)
            MVI     A, 80h          ; serial interface off; next byte will be loaded into register own address register
            STA     PCF_CTRL
            MVI     A, 55h          ; effective own address becomes 0AAh (55h<<1)
            STA     PCF_DATA
; program clock and I2C bus speed
            MVI     A, 0A0h         ; next byte will be loaded into the clock control register S2
            STA     PCF_CTRL
            MVI     A, 1Ch          ; system clock is 12 MHz; SCL = 90 kHz
            STA     PCF_DATA
; enable serial interface
            MVI     A, 0C1h         ; enable serial interface, set I2C-bus into idle mode
            STA     PCF_CTRL
;
; now actually send something to a slave
PCF_MASTER_TX:
; wait for bus availability
            LDA     PCF_CTRL        ; load status byte
            ANI     PCF_BBN         ; is bus available?
            JZ      PCF_MASTER_TX   ; JIF not available
; form the slave address with the R/W bit (R=1, W=0) at LSB
            XRA     A               ; Carry = 0
            MVI     A, SLAVE_ADDR   ; load slave address
            RAL                     ; shift address left, set R/W bit to 0 (write)
            STA     PCF_DATA
; generate START condition on the I2C bus and clock out the address byte
            MVI     A, 0C5h          
            STA     PCF_CTRL        ; transmit address + R/W bit
TX10:
; wait for the transmission to finish
            LDA     PCF_CTRL        ; poll for transmission finished
            MOV     B, A            ; store status byte for the later chack for acknowledgement
            ANI     PCF_PIN         ; is transmission complete?
            JNZ     TX10            ; not complete, keep waiting
            MOV     A, B
; check if the slave acknowledged the address
            ANI     PCF_LRB         ; slave acknowledged?
            JNZ     TXSTOP          ; JIF not acknowledged - maybe the slave is busy or not present at that address
; slave acknowledged the address, so send the data
            MVI     A, DATA_BYTE    ; byte to be transferred
            STA     PCF_DATA        ; send the data byte to the slave
TX20:
; wait for the transmission to finish
            LDA     PCF_CTRL        ; poll for transmission finished
            ANI     PCF_PIN
            JNZ     TX20            ; JIF not finished
; here one can check for acknowledgement and send the next byte, etc.
TXSTOP:
; generate STOP condition on the I2C bus
            MVI     A, 0C3h          
            STA     PCF_CTRL        ; generate STOP condition
;
            JMP     PCF_MASTER_TX   ; repeat sending sequence
You do not have the required permissions to view the files attached to this post.
Last edited by alexcp on 21 Dec 2018 11:41, edited 2 times in total.
User avatar
Shaos
Admin
Posts: 23992
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: Радио-86РК на SRAM 32K

Post by Shaos »

интересно :)
Я тут за главного - если что шлите мыло на me собака shaos точка net
newold86
Devil
Posts: 716
Joined: 30 Nov 2013 11:08
Location: WWW

Re: Радио-86РК на SRAM 32K

Post by newold86 »

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

Но заставить себя возиться с паяльником тоже не могу... Да и объективно, осеовная зона моих интересов требует микросхемы с большим количеством ножек, которые есть только у BGA...
User avatar
alexcp
Senior
Posts: 139
Joined: 11 Jun 2012 07:30

Re: Радио-86РК на SRAM 32K

Post by alexcp »

Для питания теперь используется готовый адаптер на 5 вольт с разъемом MicroUSB. Напряжения +12 и -5 вольт для ВМ80 обеспечивает отдельный преобразователь - см. схему ниже. Работает отлично, но с оговоркой, что выходное напряжение многих адаптеров под нагрузкой (общий ток потребления для РК86 и TFT дисплея составляет 850-900 мA) проседает, в зависимости от конкретного адаптера, на 0.5 вольта и больше, даже если максимальный ток нагрузки для адаптера заявлен 2А. Мне пришлось купить новый.

Преобразователь использует один boost converter для получения двух разнополярных напряжений. От аналогов, обсуждавшихся, например, в соседнем форуме, отличается схемой выпрямителя, фильтра и стабилизатора в канале -5 вольт. Кроме того, использование boost converter с высокой частотой переключения (1.6МГц) позволило применить малогабаритные компоненты и собрать все вместе на плате размером 32x26мм - см. фото. Преобразователь прекрасно себя чувствует под нагрузкой 120мА по каналу +12 вольт и 50 мА по каналу -5 вольт, это не считая светодиодов на плате самого конвертера. РК86 столько не нужно, конечно.
You do not have the required permissions to view the files attached to this post.
User avatar
fifan
Devil
Posts: 909
Joined: 06 Oct 2006 03:17
Location: г.Лянтор,Сургутского р-на,ХМАО

Re: Радио-86РК на SRAM 32K

Post by fifan »

Вопрос по преобразователю. Применяются не полярные конденсаторы, хотя судя по их ёмкости лучше применить электролиты (2.2 и 4.7 мкФ).
User avatar
alexcp
Senior
Posts: 139
Joined: 11 Jun 2012 07:30

Re: Радио-86РК на SRAM 32K

Post by alexcp »

В связи с высокой частотой преобразования (1.6МГц), для LMR62014 рекомендованы (см. datasheet, стр. 9) как раз многослойные керамические - у них, по сравнению с электролитами, меньше ESR и выше собственная резонансная частота.
You do not have the required permissions to view the files attached to this post.
User avatar
Shaos
Admin
Posts: 23992
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: Радио-86РК на SRAM 32K

Post by Shaos »

Скопирую сюда тоже, а то может кто не заметить, что фотка всей конструкции в целом на предыдущей страничке появилась ;)

Image

А от аккумуляторов пробовал питать? Это уже получается настоящий микроноутбук РК :)
Я тут за главного - если что шлите мыло на me собака shaos точка net