6502 CPU in CPLD

MOS Technology / Commodore / Apple II / NES etc.

Moderator: Lavr

User avatar
Lavr
Supreme God
Posts: 16680
Joined: 21 Oct 2009 08:08
Location: Россия

6502 CPU in CPLD

Post by Lavr »

Lavr wrote:Вопрос как раз связан с этим - влезет/не влезет: я хочу запихать в эту CPLD свой 4-bit Processor,
но пока не имею достаточно опыта и в сомнениях - влезет/не влезет?
Собственно, я и затевал освоить FPGA/CPLD, чтобы не делать проекты типа микропроцессора на ТТЛ мелочевке...

Вопрос влезет/не влезет - так и остался повисшим в воздухе, но я всё же решил поискать какую-либо оценку.

Понятно, что прежде чем лепить что-то своё, неплохо бы попробовать заведомо рабочий проект.
И я подумал, что, пожалуй, микропроцессор 6502 - один из тех, которые как только не эмулируют, и, возможно,
оценить можно при помощи проектов эмуляции 6502 в CPLD...

В общем в лобовую искал я по сочетанию "6502 in CPLD" и нашел вот такой проект:
Arlet_cpld-6502_ 6502 CPU in 4 small CPLDs
6502CPLD.png
Здесь 6502 впихнули в 4 сравнительно небольших CPLD типа XC9572XL.

Я сделал примерную прикидку для этого проекта:

CPLD XC9572XL:
Количество макроячеек: 72
Количество блоков логических массивов (LAB): 4


У меня вот такая ПЛИС:

MAX 3000A EPM3256ATC144-10N:
Количество блоков логических массивов 16
Количество макроячеек 256


Если брать по максимуму, то в проекте 6502 используют 72 х 4 = 288 макроячеек
Более чем уверен, что не все из 72 макроячеек в каждой ПЛИС задействованы.

Следовательно, проект 6502 должен уместиться в 256 макроячеек ПЛИС MAX 3000A EPM3256ATC144-10N.
С учётом того, что и межсоединения 4 ПЛИС свернутся внутрь одной ПЛИС.

Но это чисто вот такие рассуждения "на первый взгляд"...

И у меня вопрос к нашим гуру по FPGA/CPLD: это правильная прикидка, или я чего-то не учитываю?
You do not have the required permissions to view the files attached to this post.
iLavr
User avatar
Icer
Senior
Posts: 163
Joined: 21 Aug 2018 07:39
Location: Кемеровская обл.

Re: Starting with FPGA

Post by Icer »

У плисин внутренние соединения тоже ресурс. Есть шанс что у одной плисины их меньше чем суммарно у четырех.
User avatar
Lavr
Supreme God
Posts: 16680
Joined: 21 Oct 2009 08:08
Location: Россия

Re: Starting with FPGA

Post by Lavr »

Мне проект показался интересным вот по какой причине:
он явно разделён на 4 части, и можно будет пробовать их соединять и "размещать" в моей ПЛИС.

Если в итоге ячеек хватит - в результате получится то, что я и хотел. :kruto:
Если не хватит ячеек - будет очевидно, сколько в мою ПЛИС помещается.

Если взять априори полный проект 6502 в одну ПЛИС, и он не полезет - тут уже ничего не сделаешь... :-?

А в проекте из 4-х ПЛИС у автора явно был запас и он всунул в проект ещё и аппаратные интерфейсы
RS-232 и SPI, значит есть возможность чем-то пожертвовать, если не лезет целиком в одну ПЛИС.
iLavr
newold86
Devil
Posts: 716
Joined: 30 Nov 2013 11:08
Location: WWW

Re: Starting with FPGA

Post by newold86 »

А что мешает указать в качестве target интересующую CPLD и попытаться скомпилировать ? Сразу все станет понятно, при этом саму микросхему даже иметь не обязательно…
User avatar
fifan
Devil
Posts: 911
Joined: 06 Oct 2006 03:17
Location: г.Лянтор,Сургутского р-на,ХМАО

Re: Starting with FPGA

Post by fifan »

newold86 wrote:А что мешает указать в качестве target интересующую CPLD и попытаться скомпилировать ? Сразу все станет понятно, при этом саму микросхему даже иметь не обязательно…
Поддерживаю. Я таким образом искал подходящую ПЛИС для работы.
User avatar
Lavr
Supreme God
Posts: 16680
Joined: 21 Oct 2009 08:08
Location: Россия

Re: Starting with FPGA

Post by Lavr »

fifan wrote:
newold86 wrote:А что мешает указать в качестве target интересующую CPLD и попытаться скомпилировать ? Сразу все станет понятно, при этом саму микросхему даже иметь не обязательно…
Поддерживаю. Я таким образом искал подходящую ПЛИС для работы.
Мешать ничего не мешает. Но я, как мне кажется, постарался понятно объяснить:
Указываю я в качестве target интересующую CPLD: MAX 3000A EPM3256ATC144-10N.
Нахожу в сети проект 6502 одним файлом verilog, компилирую, и он в неё не лезет...

Дальше fifan мне посоветует "искать подходящую ПЛИС для работы."

А я вот этих MAX 3000A EPM3256ATC144-10N 6 штук купил вроде как.
Мне в неё надо влезть, а не "искать подходящую ПЛИС ..." :-?

Так что отвечаю на риторический вопрос:"А что мешает указать в качестве target интересующую CPLD и попытаться скомпилировать ?"
Ничто не мешает.
iLavr
User avatar
fifan
Devil
Posts: 911
Joined: 06 Oct 2006 03:17
Location: г.Лянтор,Сургутского р-на,ХМАО

Re: Starting with FPGA

Post by fifan »

Если вбить в поиск яндекса слово "марсоход", то можно найти сайт о ПЛИС. Я начинал с их проектов. И я помню, что тоже долго не мог впихнуть один их их проектов в свою плисину (кажется EPM7128SLC84 - тоже полдесятка было). Желание использовать близлежащую микросхему Lavr'ом по максимуму мне понятно. Дерзай!
User avatar
Lavr
Supreme God
Posts: 16680
Joined: 21 Oct 2009 08:08
Location: Россия

Re: Starting with FPGA

Post by Lavr »

fifan wrote:Если вбить в поиск яндекса слово "марсоход", то можно найти сайт о ПЛИС.
Спасибо, конечно, fifan... :-?

Только вот топик "Starting with FPGA" я начинал 24 июня 2016 г. :wink:
И подсказывать мне в 2022 году слово "марсоход", это всё равно, что играть в Капитана Очевидность... :ebiggrin:


P.S. Но поскольку мы не одни тут беседуем, и, может быть, кто-то ещё ищет пути для старта с ПЛИС,
ссылочку эту я тут, пожалуй, выложу
: https://marsohod.org
iLavr
User avatar
Lavr
Supreme God
Posts: 16680
Joined: 21 Oct 2009 08:08
Location: Россия

Re: Starting with FPGA

Post by Lavr »

Симулирую под MAX+Plus II вентиль "И" ("И-НЕ") на VHDL и Verilog HDL.
В качестве ПЛИС выставлено AUTO (семейство MAX3000).
Задержки распространения получаются ВСЕГДА = 5 нс.
И.PNG
Мне кажется, что это многовато... :-? Для вентиля я ожидал где-то 2.5 нс.

Это нормально или я что-то не так делаю?
You do not have the required permissions to view the files attached to this post.
iLavr
User avatar
Lavr
Supreme God
Posts: 16680
Joined: 21 Oct 2009 08:08
Location: Россия

Re: Starting with FPGA

Post by Lavr »

Lavr wrote:Понятно, что прежде чем лепить что-то своё, неплохо бы попробовать заведомо рабочий проект.
И я подумал, что, пожалуй, микропроцессор 6502 - один из тех, которые как только не эмулируют, и, возможно,
оценить можно при помощи проектов эмуляции 6502 в CPLD...

В общем в лобовую искал я по сочетанию "6502 in CPLD" и нашел вот такой проект:
Arlet_cpld-6502_ 6502 CPU in 4 small CPLDs
Image
Здесь 6502 впихнули в 4 сравнительно небольших CPLD типа XC9572XL.

Я сделал примерную прикидку для этого проекта:

CPLD XC9572XL:
Количество макроячеек: 72
Количество блоков логических массивов (LAB): 4


У меня вот такая ПЛИС:

MAX 3000A EPM3256ATC144-10N:
Количество блоков логических массивов 16
Количество макроячеек 256


Если брать по максимуму, то в проекте 6502 используют 72 х 4 = 288 макроячеек
Более чем уверен, что не все из 72 макроячеек в каждой ПЛИС задействованы.

Следовательно, проект 6502 должен уместиться в 256 макроячеек ПЛИС MAX 3000A EPM3256ATC144-10N.
С учётом того, что и межсоединения 4 ПЛИС свернутся внутрь одной ПЛИС.

Но это чисто вот такие рассуждения "на первый взгляд"...
В интернетах этих наших попадалась мне примерная оценка якобы даже от Altera, что соотношение между
"логическими ячейками" Xilinx и "логическими ячейками" Altera примерно 1.3 ...
Я специально избежал оригинальных названий "логических ячеек", и я не знаю, как получили этот коэффициент 1.3

Скомпилировал я под MAX+Plus II файл alu.v из упомянутого выше проекта, и получилось у меня вот что:
АЛУ.PNG

Code: Select all

** DEVICE SUMMARY **

Chip/                     Input   Output   Bidir         Shareable
POF       Device          Pins    Pins     Pins     LCs  Expanders  % Utilized

alu       EPM3256ATC144-7  13       4        16     165     88          64 %
То есть АЛУ под Xilinx CPLD XC9572XL уместилось в 72 макроячейки,
а под Altera CPLD EPM3256ATC144-7 - влезло аж в 165 этих ихних LCs...

Хреновенькая статистика, честно говоря... либо я опять чего-то не умею... :-?
You do not have the required permissions to view the files attached to this post.
iLavr
User avatar
Lavr
Supreme God
Posts: 16680
Joined: 21 Oct 2009 08:08
Location: Россия

Re: Starting with FPGA

Post by Lavr »

Lavr wrote:То есть АЛУ под Xilinx CPLD XC9572XL уместилось в 72 макроячейки,
а под Altera CPLD EPM3256ATC144-7 - влезло аж в 165 этих ихних LCs...
Что-то у меня очень нехорошее подозрение, что в MAX+PLUS II устаревший компилятор Verilog HDL... :-?

Чтобы не грешить уже на несоответствие макроячеек Xilinx<-->Altera, нашел очень близкий проект
CPU на Altera CPLD EPM7128 - 128 макроячеек.

Проект и сам по себе интересный: Tiny CPU in a CPLD - в 128 макроячеек автор упихал сильно урезанный,
но всё-таки работоспособный вариант 6502! :roll:

Скомпилировал я его проект под MAX+PLUS II и Altera CPLD EPM3256ATC144-7 - 256 макроячеек.
От результата я просто офигел! :o

Code: Select all

** DEVICE SUMMARY **

Chip/                     Input   Output   Bidir         Shareable
POF       Device          Pins    Pins     Pins     LCs  Expanders  % Utilized

tinycpu   EPM7512AETC144-7 2        11       8      322     154         62 %
Ожидал я что из 256 макроячеек хотя бы половина останется свободной, но 322 макроячейки вместо 128 - я никак не ожидал... :esurprised:

В MAX+PLUS II компилятор Verilog HDL от 2000 года, а в 2001 году в Verilog HDL внесли изменения.
В частности компилятор Verilog HDL от MAX+PLUS II не понимает always @* - приходится ставить условие...
И вот эту конструкцию он также не понимает: :-?

Code: Select all

  initial begin
...
  end
Попробую под Quartus II перекомпилировать оба проекта... но помнится мне, что под Quartus II нет
поддержки MAX 3000 device family у меня. :-?
iLavr
User avatar
Lavr
Supreme God
Posts: 16680
Joined: 21 Oct 2009 08:08
Location: Россия

Re: Starting with FPGA

Post by Lavr »

Lavr wrote:Что-то у меня очень нехорошее подозрение, что в MAX+PLUS II устаревший компилятор Verilog HDL... :-?
В MAX+PLUS II компилятор Verilog HDL от 2000 года, а в 2001 году в Verilog HDL внесли изменения.
Это нехорошее подозрение оправдалось: в MAX+PLUS II от 2000 года компилятор Verilog HDL аж от 1995 года... :-?
А вот в Quartus II можно выбрать компилятор Verilog HDL, но версия от 2001 года - последняя.
Lavr wrote:Ожидал я что из 256 макроячеек хотя бы половина останется свободной, но 322 макроячейки вместо 128 - я никак не ожидал... :esurprised:
...
Попробую под Quartus II перекомпилировать оба проекта...
Quartus II справился лучше, но в 128 макроячеек запихать Tiny CPU также не сумел... :wink:
Tiny CPU.PNG
Тем не менее, упихать проект в 172 макроячейки - это лучше, нежели в 322... :lol:
Видимо, не зря Verilog HDL сравнивают с языком С - каким компилятором компильнёшь, такой результат и получишь... :ebiggrin:
You do not have the required permissions to view the files attached to this post.
iLavr
User avatar
Lavr
Supreme God
Posts: 16680
Joined: 21 Oct 2009 08:08
Location: Россия

Re: Starting with FPGA

Post by Lavr »

Lavr wrote:То есть АЛУ под Xilinx CPLD XC9572XL уместилось в 72 макроячейки,
а под Altera CPLD EPM3256ATC144-7 - влезло аж в 165 этих ихних LCs...
А этот проект Quartus II значительно улучшить не смог... :(
alu6502.PNG
165 макроячеек ужал всего лишь до 150...

Может быть оптимизации какие-то в Quartus II включать надо - я не знаю... :-?

Хотя, я посмотрел схему АЛУ, которая по Verilog-проекту получается... ну, честно говоря,
АЛУ 6502 я бы руками нарисовал гораздо лучше! :roll:
You do not have the required permissions to view the files attached to this post.
iLavr