nedoPC.org

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



Reply to topic  [ 13 posts ] 
6502 CPU in CPLD 
Author Message
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Lavr wrote:
Вопрос как раз связан с этим - влезет/не влезет: я хочу запихать в эту CPLD свой 4-bit Processor,
но пока не имею достаточно опыта и в сомнениях - влезет/не влезет?

Собственно, я и затевал освоить FPGA/CPLD, чтобы не делать проекты типа микропроцессора на ТТЛ мелочевке...

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

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

В общем в лобовую искал я по сочетанию "6502 in CPLD" и нашел вот такой проект:
Arlet_cpld-6502_ 6502 CPU in 4 small CPLDs
Attachment:
6502CPLD.png
6502CPLD.png [ 7.21 KiB | Viewed 6603 times ]

Здесь 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: это правильная прикидка, или я чего-то не учитываю?

_________________
iLavr


16 Apr 2022 04:57
Profile
Senior
User avatar

Joined: 21 Aug 2018 07:39
Posts: 163
Location: Кемеровская обл.
Reply with quote
У плисин внутренние соединения тоже ресурс. Есть шанс что у одной плисины их меньше чем суммарно у четырех.


18 Apr 2022 10:03
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Мне проект показался интересным вот по какой причине:
он явно разделён на 4 части, и можно будет пробовать их соединять и "размещать" в моей ПЛИС.

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

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

А в проекте из 4-х ПЛИС у автора явно был запас и он всунул в проект ещё и аппаратные интерфейсы
RS-232 и SPI, значит есть возможность чем-то пожертвовать, если не лезет целиком в одну ПЛИС.

_________________
iLavr


18 Apr 2022 23:03
Profile
Devil

Joined: 30 Nov 2013 11:08
Posts: 706
Location: WWW
Reply with quote
А что мешает указать в качестве target интересующую CPLD и попытаться скомпилировать ? Сразу все станет понятно, при этом саму микросхему даже иметь не обязательно…


21 Apr 2022 07:16
Profile
Devil

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

Поддерживаю. Я таким образом искал подходящую ПЛИС для работы.


21 Apr 2022 07:25
Profile
Supreme God
User avatar

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

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

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

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

Так что отвечаю на риторический вопрос:"А что мешает указать в качестве target интересующую CPLD и попытаться скомпилировать ?"
Ничто не мешает.

_________________
iLavr


21 Apr 2022 17:26
Profile
Devil

Joined: 06 Oct 2006 03:17
Posts: 856
Location: г.Лянтор,Сургутского р-на,ХМАО
Reply with quote
Если вбить в поиск яндекса слово "марсоход", то можно найти сайт о ПЛИС. Я начинал с их проектов. И я помню, что тоже долго не мог впихнуть один их их проектов в свою плисину (кажется EPM7128SLC84 - тоже полдесятка было). Желание использовать близлежащую микросхему Lavr'ом по максимуму мне понятно. Дерзай!


22 Apr 2022 10:09
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
fifan wrote:
Если вбить в поиск яндекса слово "марсоход", то можно найти сайт о ПЛИС.

Спасибо, конечно, fifan... :-?

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


P.S. Но поскольку мы не одни тут беседуем, и, может быть, кто-то ещё ищет пути для старта с ПЛИС,
ссылочку эту я тут, пожалуй, выложу
: https://marsohod.org

_________________
iLavr


24 Apr 2022 02:04
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Симулирую под MAX+Plus II вентиль "И" ("И-НЕ") на VHDL и Verilog HDL.
В качестве ПЛИС выставлено AUTO (семейство MAX3000).
Задержки распространения получаются ВСЕГДА = 5 нс.
Attachment:
И.PNG
И.PNG [ 23.2 KiB | Viewed 6406 times ]

Мне кажется, что это многовато... :-? Для вентиля я ожидал где-то 2.5 нс.

Это нормально или я что-то не так делаю?

_________________
iLavr


10 May 2022 15:11
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
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 из упомянутого выше проекта, и получилось у меня вот что:
Attachment:
АЛУ.PNG
АЛУ.PNG [ 2.07 KiB | Viewed 6385 times ]

Code:
** 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...

Хреновенькая статистика, честно говоря... либо я опять чего-то не умею... :-?

_________________
iLavr


11 May 2022 11:56
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
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:
** 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:
  initial begin
...
  end


Попробую под Quartus II перекомпилировать оба проекта... но помнится мне, что под Quartus II нет
поддержки MAX 3000 device family у меня. :-?

_________________
iLavr


12 May 2022 05:12
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
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:
Attachment:
Tiny CPU.PNG
Tiny CPU.PNG [ 11.25 KiB | Viewed 6362 times ]
Тем не менее, упихать проект в 172 макроячейки - это лучше, нежели в 322... :lol:
Видимо, не зря Verilog HDL сравнивают с языком С - каким компилятором компильнёшь, такой результат и получишь... :ebiggrin:

_________________
iLavr


12 May 2022 09:23
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Lavr wrote:
То есть АЛУ под Xilinx CPLD XC9572XL уместилось в 72 макроячейки,
а под Altera CPLD EPM3256ATC144-7 - влезло аж в 165 этих ихних LCs...

А этот проект Quartus II значительно улучшить не смог... :(
Attachment:
alu6502.PNG
alu6502.PNG [ 10.71 KiB | Viewed 6360 times ]

165 макроячеек ужал всего лишь до 150...

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

Хотя, я посмотрел схему АЛУ, которая по Verilog-проекту получается... ну, честно говоря,
АЛУ 6502 я бы руками нарисовал гораздо лучше! :roll:

_________________
iLavr


12 May 2022 10:04
Profile
Display posts from previous:  Sort by  
Reply to topic   [ 13 posts ] 

Who is online

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