Для обсуждение хочу предложить ещё несколько вариантов применения FPGA в ретро-компьютерном хобби.Википедия wrote:возникла тенденция реализовывать средствами FPGA процессоры и контроллеры
Ныне среди ретро-хоббиистов даже "замороженные" и "истинные ольдфаги" начинают понимать, что появление FPGA это революция в МП-железе, большой прогресс, реально позволяющий даже небогатым любителям конструировать и, за вполне разумные деньги, делать не только готовые контроллеры, но и как бы "производить" высокоинтегральные микросхемы без необходимости за огромные деньги заказывать их производство на заводе.
Теперь каждый может почувствовать себя Чаком Пэдлом или даже Масатоши Шимой и разработать свой собственный микропроцессор и применить его в своём, сделанном на кухне компьютере. Об этом любители самодельных компьютеров из 70-тых - 90-тых не смели даже мечтать.
Есть ещё одно интересное направление использования FPGA. На нём можно сделать процессор с другим интерфейсом шины, что даёт новые возможности конструкторам. Например, можно сделать аналог процессоров Z80, 6502, 1801, 8086, который ставится напрямую в панельку CPU любой из отечественных ЭВМ с КР580, причём без всяких доработок.
Выше упомянули, что современные FPGA позволяют в одном кристалле эмулировать целиком (и даже намного более мощную) ретро-ЭВМ. Но я веду речь о настоящих реальных отечественных самоделках из 80-тых, и меня совсем не интересует аппаратная эмуляция. Интересует процессор на FPGA, причём обязательно дешёвый или незначительно дороже оригинального, который можно вставить в панельку на реальной ретро-ЭВМ.
Например, таким путём можно исправить один пробел разработчиков микропроцессоров 80-тых годов. Речь о удобном для строительства любительских бытовых компьютеров микропроцессоре с системой команд DEC, но с нормальным интерфейсом шины, что позволяет использовать весь широкий спектр обычных периферийных БИС, предназначенных для нормальных шин.
Мне всегда было непонятно зачем применили извращённый протокол DEC-шины не позволяющий использовать стандартную периферию, что приводит к необходимости использовать для неё редкие и дорогостоящие заказные БИС на базе ПЛИС.
Непонятно почему, когда стало ясно, что дороговизна многоразрядной шины является тормозом при разработке дешёвых, доступных широким массам ЭВМ, отчего для CPU 8086 и 68000 разработали их версии с 8-ми разрядной шиной 8088 и 68008, для шины 6502 сделали совместимый по интерфейсу и цоколёвке 16-ти разрядный 65816, то почему не сделали DEC версию с 8-ми разрядной шиной или хотя-бы полноценно 16-ти разрядный DEC процессор с нормальной шиной.
Хотя система команд DEC намного лучше (даже не сильно уступает по удобству программирования 8086), разработчики Микро-80, Специалиста, РК86 и Ориона из-за неудобства и сложности DEC-шины, не смогли применить серию 588/1801/1806 и вынуждены были использовать антикварный, к тому времени давно морально устаревший, КР580.
Мне довелось попрограммировать на удобном макро-ассемблере ДВК и это впечатлило. Впоследствии, когда узнал о том, что бывают хитрые кросс-ассемблеры транслирующие исходник в системе команд одного процессора в программу, которая работает на совсем другом процессоре, я серъёзно подумывал написать такой компилятор ассемблера 1801, транслирующего в коды Z80.
Т.е пишешь программу для ОРИОНА, как будто в нём стоит процессор 1801, а странслированная программа работает на обычном ОРИОНЕ с Z80 на такте 5 МГЦ. При трансляции каждая строка DEC-ассемблера заменяется на эмулирующую цепочку команд.
Понятно, что это тормознёт, возможно втрое, и эквивалентный такт 1801 будет низким. Двойное или тройное турбирование ОРИОНА позволит частично компенсировать эту потерю скорости. Но главное, программист получает удобную систему команд существенно облегчающую программирование, пусть и ценой существенной тормознутости полученных программ.
Для компенсации которой необходим быстрый процессор Z80. И для этого как раз можно применить FPGA. Собственно, быстрые Z80 аж до 20 МГЦ и даже выше - доступны, но узким местом остаётся архитектура, в частности необходимость синхронного доступа к экранному буферу.
Для регенерации видео, скорость работы основного ОЗУ приходится сохранять медленной. При этом из-за необходимости синхронизации быстрого CPU и медленной памяти, удвоение такта Z80 даёт выигрыш всего 42%, утроение даёт выигрыш ещё на 20%, а учетверение - вообще не прибавляет скорости.
Можно получить ускорение в 10 и более раз, если применительно к ОРИОНУ (хотя это справедливо для любой ретро-платформы с КР580) воткнуть в панельку специально разработанный процессор Z80 на FPGA, в котором есть внутреннее скоростное ОЗУ во всех адресах, кроме буфера экрана и портов. Тогда программы работают на максимальной скорости, что допускает ОЗУ имеющееся внутри FPGA или внешнее (например, на древней статике w24512 с временем доступа 15 НСЕК), что позволяет иметь реальный (эффективный) такт эмулированного Z80 в 25 МГЦ и выше.
При этом при прогоне программы без обращения в экран, доступа к медленному ОЗУ на основной плате не производится, программа прогоняется на такте 25 МГЦ без WAIT. И лишь доступ в экранное ОЗУ выполняется на обычной скорости РУ5-тых, т.е длится 400 НСЕК. Замечу, что эта идея в точности повторяет идею акселераторов Apple-II дающих ускорение до 15-ти раз. Хотя в случае FPGA с ОЗУ внутри кристалла это внеэкранное ОЗУ можно считать неперегружаемым скоростным кэшем самого процессора.
Но даже и без этого. Есть кто-нибудь, кто в состоянии разработать на FPGA и произвести в DIP-конструктиве обычный тормозной Z80 с тактом до 2.5 МГЦ, которым можно было бы без хлопот заменить CPU в любом компьютере на КР580 (без всяких доработок с кучей порезов печати и доп.микросхем вторым этажом)? Т.е нужен Z80 имеющий совместимость по цоколёвке и интерфейсу с КР580, что напрасно не сделали сами разработчики Z80, но что разумно догадались сделать отечественные разработчики КР580ВМ1.
Думаю, что никто из владельцев реальных ретро-компьютеров c КР580 не откажется заменить процессор на лучший. К тому же в один FPGA можно "запихнуть" сразу несколько ходовых микропроцессоров и даже с программно переключаемой скоростью работы за счёт как переключения такта, так и оптимизации доступа к шине (при желании можно даже ввести реальный конвейер).