nedoPC.org

Community for electronics hobbyists, established in 2002
Atom Feed | View unanswered posts | View active topics It is currently 09 Nov 2024 12:56



Reply to topic  [ 24 posts ]  Go to page 1, 2  Next
MC14500 1 bit CPU 
Author Message
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Shaos не раз говорил, что 1-битные процессоры есть, но мне казалось,
что были они давно и это уже почти неправда...
Оказалось, что не так уж и давно, и живьём они ещё есть! :roll:
Вот интересный пример:

MC14500 1 bit CPU от Motorola

Image
Quote:
Originally, the MC-14500, also called Industrial Control Unit (ICU) was a CMOS processor designed for controlling simple industrial devices and making binary decisions based on successive single bit information. One could find it also in LCD display drivers or as a serial port manager.
It has 16 instructions, including bit transfer, logical single bit comparisons (OR, XOR, AND, NAND), Jump and subroutines. Its internal clock speed started from manual pulses to about 1 MHz.


Вдвойне интересно, что и компьютеры на основе MC-14500 были, пусть и
тренировочные! :o

WDR-1-Bit-Computer

Image
Quote:
The pictured computer, made by a German anthusiast, worked when connected to a 9V battery. It includes a LED IO board, CPU board and 512 byte RAM board. The keyboard featured one key for each processor instruction and an octal numeric keypad. Some sounds may be produced through the attached amplifier and loudspeaker.

Интересно, как батареечка типа "Кроны" столько светодиодов тащщит!... :-?

_________________
iLavr


30 Jun 2012 11:34
Profile
Fanat

Joined: 05 Jul 2020 14:08
Posts: 87
Location: Ижевск
Reply with quote
Удалось поместить MC14500 в GAL!
Image


15 Jan 2021 06:40
Profile WWW
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
dvarkin wrote:
Удалось поместить MC14500 в GAL!

А вот это очень интересно!
А то был у нас тут человечек, утверждал, что в GAL под Proteus ничего путного сделать нельзя... :-?

А вы не могли бы развернуть здесь проект с подробностями?
А то я собирался поэкспериментировать с ПЛМ под Proteus, но как-то руки так и не дошли...
Был бы благодарен за понятный и интересный пример.

_________________
iLavr


15 Jan 2021 12:24
Profile
Fanat

Joined: 05 Jul 2020 14:08
Posts: 87
Location: Ижевск
Reply with quote
Proteus был выбран для отладки только потому, что я не подружился с имеющими симуляторы PALASM и WinCUPL, а в железе пока прошивать нечем.
Прошивка (файл .pal) написана для GALASM, который генерирует в том числе файл .jed.
Файл .jed указывается в свойствах компонента в Proteus по аналогии с прошивкой микроконтроллера.

В файле .pal я придерживался такого формата выражения для каждой конъюнкции: сначала код инструкции, при котором нужно установить (для RRR в контексте RR - сбросить) выход, а потом условия установа. "Регистры" организованы как выражения, принимающие своё предыдущее значение, если текущая инструкция не изменяет их содержимое (не команда их изменения), и принимающие новое значение иначе. "Регистр" Result Register (RR) представляет функционал [A]LU, в одну "переменную" не поместился, пришлось вводить RRR, который ещё и инвертирован для де Моргана.

Имея перед глазами список инструкций MC14500 из handbook и диаграммы на следующих страницах с оговорками из README, вроде как остальное в .pal файле становится понятно. Упустил ли я что-то важное?


15 Jan 2021 15:08
Profile WWW
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
dvarkin wrote:
Упустил ли я что-то важное?

На взгляд, вроде как не упустили... попробую повторить ваш проект, если возникнут вопросы - спрошу здесь.

У меня, честно говоря, было вот какое сомнение: GAL поддерживают элементы с обратными связями типа триггера?

_________________
iLavr


15 Jan 2021 15:18
Profile
Fanat

Joined: 05 Jul 2020 14:08
Posts: 87
Location: Ижевск
Reply with quote
Т. к. ATF16V8 по функционалу - полный аналог GAL16V8, то datasheet ATF16V8 понятно описывает возможности их обоих.

Ещё отмечу, что в registered mode на каждом выходе хоть и можно выбрать триггер (а можно и не на каждом), но тактироваться все триггеры будут от первой ножки, а обратная связь триггера идёт с вывода, который может быть и в третьем состоянии, то есть как вход, при том третье состояние выбирается для всех выводов с триггером также одной ножкой.

Я к тому, что не без удачи сабж поместился в GAL без серьёзных изменений.

Кстати, почему-то в Proteus'е вывод /OE работает не так, как я ожидал — в проекте на скрине выше выводы с триггером переходят в третье состояние при 0В на этом выводе, хотя, казалось бы, должно было быть наоборот...


15 Jan 2021 23:09
Profile WWW
Doomed

Joined: 01 Oct 2007 10:30
Posts: 665
Location: Ukraine
Reply with quote
dvarkin wrote:
Кстати, почему-то в Proteus'е вывод /OE работает не так, как я ожидал — в проекте на скрине выше выводы с триггером переходят в третье состояние при 0В на этом выводе, хотя, казалось бы, должно было быть наоборот...
Это одна из фичь, или из разряда и так сойдет.

Гал-ки прикольная (полезная) штука. Отличный пример. Всякие мелко контроллеры на них лепить, при условии, что четко понимаешь чего хочешь.

_________________
Эмулятор OrionEXT:
http://www.orion-ext.narod.ru


15 Jan 2021 23:43
Profile
Fanat

Joined: 05 Jul 2020 14:08
Posts: 87
Location: Ижевск
Reply with quote
Нашёл баг, связанный с FSKP: когда я только начинал писать .pal, этот сигнал сначала устанавливался только по инструкции SKP при RR = 0, потом я с лёгкой руки добавил выставление этого сигнала по RTN, но забыл про RR, в результате при некоторых инструкциях, следующих сразу за RTN и по идее не выполняющихся, установленный RR сбрасывался.

Уже исправил в последнем коммите. Предлагаю потестить на подобные вещи.

+ Вспомнил-таки про прошивальщик GAL на Arduino, буду делать.


16 Jan 2021 03:42
Profile WWW
Doomed

Joined: 01 Oct 2007 10:30
Posts: 665
Location: Ukraine
Reply with quote
Тесть это в тему влиться. Но круто, баги ловить в незамысловатой прошивке ГАЛ.

p.s. Вот тут проще купить MiniPro, не отвлекаться и дальше по теме творить.

_________________
Эмулятор OrionEXT:
http://www.orion-ext.narod.ru


16 Jan 2021 03:48
Profile
Fanat

Joined: 05 Jul 2020 14:08
Posts: 87
Location: Ижевск
Reply with quote
Хорошая новость: я собрал afterburner и успешно прошил им ATF16V8B.
Но спешу сообщить не очень хорошую новость: в RRR была ошибка, вместо каждой "/I2" должно было стоять просто "I2" - дело в том, что я сначала убрал избыточные повторения "/I3 + I2" в RRR, но потом решил вернуть, скопипастил не то и плохо проверил, извиняюсь. Уже отправил коммит.


16 Jan 2021 12:26
Profile WWW
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
dvarkin wrote:
Уже отправил коммит.

Это я уже третий вариант скачиваю... хорошо, что не тороплюсь... :wink:
Так, глядишь, пока суть да дело и все баги отыщутся... :D
У меня просто нет Протеуса пока - на чистую Венду_7 всякий нужный софт ставлю.

P.S. А что такое "коммит", кстати? :roll:

_________________
iLavr


18 Jan 2021 05:47
Profile
Fanat

Joined: 05 Jul 2020 14:08
Posts: 87
Location: Ижевск
Reply with quote
Окей, просто думал, что из-за меня самую интересную часть исходника было не понять, поэтому тишина :oops:
Кстати, я вот думаю, всё-таки не нужно расписывать выражения в исходнике (файл .pal), или мне одному там всё понятно?
Lavr wrote:
P.S. А что такое "коммит", кстати? :roll:
Короче говоря, коммит в этом контексте - патч. Образованными патчами версиями проекта можно управлять через систему контроля версий git. На странице github проекта обычно скачивается ветка main, в которой все патчи применены до последнего.


18 Jan 2021 08:28
Profile WWW
Fanat

Joined: 05 Jul 2020 14:08
Posts: 87
Location: Ижевск
Reply with quote
Решил, что просто проц - это скучно, сделал к нему некоторую периферию на тех же 16V8:

IO - однобитные 3 входа и 4 выхода (выходы можно прочитать как ещё 4 входа), логика для генератора/тактирующего устройства (инвертор и неинвертор одного и того же входа). Пока не проверил.

ROMCTL - на эту штуку ушло уйма времени, она генерирует стартовый сигнал для I2C EEPROM (часть картинки сверху) и в бесконечном цикле тащит с неё данные (снизу) начиная с самого последнего байта EEPROM, продолжая нулевым, первым, вторым, третьим и т. д., при том вывод данных EEPROM должен быть подключен через диод, тактируемые фронтом HOLD данные поступают в какой-нибудь регистр сдвига типа 74HC164, GAL14500 должен тактироваться от MSB счётчика, то есть при переходе 0 -> 8.
Image
Уже проверил в железе с 24C08 - работает :kruto: !
Исходники и jedы в репе. Вот где диаграммы делал.

Скоро, возможно, сделаю что-нибудь интересное.

Обнаружил у Proteus ещё один недочёт с 16V8 - при подаче питания выводы с регистрами должны быть установлены в 5В, но у меня было что-то другое.


23 Jan 2021 13:34
Profile WWW
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
dvarkin wrote:
ATF16V8 по функционалу - полный аналог GAL16V8, ...

А вы не пробовали поэкспериментировать с большими PLD под Proteus?
Attachment:
PLD_PRO.gif
PLD_PRO.gif [ 3.59 KiB | Viewed 18467 times ]

_________________
iLavr


27 Jan 2021 08:41
Profile
Doomed

Joined: 18 Nov 2013 02:38
Posts: 662
Location: Москва
Reply with quote
Фотка кристалла, на всякий случай:
https://siliconpr0n.org/map/motorola/mc14500/mz_mit20x/

_________________
https://t.me/tronix_blog


29 Jan 2021 01:09
Profile
Display posts from previous:  Sort by  
Reply to topic   [ 24 posts ]  Go to page 1, 2  Next

Who is online

Users browsing this forum: No registered users and 2 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.