Использование открытых кодов для расширения...

34

Transcript of Использование открытых кодов для расширения...

Page 1: Использование открытых кодов для расширения возможностей платформы MIPSfpga

XII ìåæäóíàðîäíàÿ êîíôåðåíöèÿCEE-SECR / ÐÀÇÐÀÁÎÒÊÀ ÏÎ28�29 îêòÿáðÿ, Ìîñêâà

Èñïîëüçîâàíèå îòêðûòûõ êîäîâ

äëÿ ðàñøèðåíèÿ âîçìîæíîñòåé

ïëàòôîðìû MIPSfpga

À.Í.Ïàâëîâ

ÔÃÓ ÔÍÖ ÍÈÈÑÈ ÐÀÍ

1/19

Page 2: Использование открытых кодов для расширения возможностей платформы MIPSfpga

Îá àâòîðå

Ïàâëîâ À. Í. <[email protected]>ñîòðóäíèê ñåêòîðà Ïðîãðàììèðîâàíèÿ ÍÈÈÑÈ ÐÀÍ,ó÷àñòâóþ â âåðèôèêàöèè ïðè ïîìîùè ÑÏÎðàçðàáàòûâàåìûõ â ÍÈÈÑÈ ìèêðîïðîöåññîðîâ ñMIPS-ïîäîáíîé ñèñòåìîé êîìàíä (AKA àðõèòåêòóðàÊÎÌÄÈÂ).

Antony Pavlov <[email protected]>ó÷àñòíèê íåñêîëüêèõ ïðîåêòîâ ÑÏÎ:

I linux;

I barebox (U-Boot v2);

I qemu;

I openocd.

ñì. òàêæå https://www.openhub.net/accounts/antonynpavlov

2/19

Page 3: Использование открытых кодов для расширения возможностей платформы MIPSfpga

MIPSfpga (ñ ìàÿ 2015 ãîäà)

I íåîáôóñöèðîâàííûå èñõîäíûå òåêñòû íàVerilog êîììåð÷åñêîãî ïðîöåññîðíîãî ÿäðàMIPS microAptiv UP ïðåäîñòàâëåíû äëÿðåàëèçàöèè â ÏËÈÑ â ó÷åáíûõ/íàó÷íûõöåëÿõ;

I ïîòðåáèòåëè � ïðåïîäàâàòåëè è ñòóäåíòûóíèâåðñèòåòîâ;

I ìåòîäè÷åñêèå ìàòåðèàëû ïî ïðîâåäåíèþëàáîðàòîðíûõ ðàáîò ïðèëàãàþòñÿ(èññëåäîâàíèå ïðîöåññîðà; bare-metalïðîãðàììèðîâàíèå ïðîñòåéøåé ïåðèôåðèè).

3/19

Page 4: Использование открытых кодов для расширения возможностей платформы MIPSfpga

opencores.org

 ðàìêàõ ñîîáùåñòâà opencores.org íàêîïëåíî áîëüøîå ÷èñëîopensource IP-áëîêîâ.

4/19

Page 5: Использование открытых кодов для расширения возможностей платформы MIPSfpga

myMIPSfpga (îêòÿáðü-íîÿáðü 2015 ãîäà)

myMIPSfpga � ìîÿ ïîïûòêà èíòåãðèðîâàòüÿäðî myMIPSfpga ñ open source IP-áëîêàìè ñopencores.org.2mm

Èñõîäíûå òåêñòû:

I https://github.com/MIPSfpga/myMIPSfpga

5/19

Page 6: Использование открытых кодов для расширения возможностей платформы MIPSfpga

myMIPSfpga

6/19

Page 7: Использование открытых кодов для расширения возможностей платформы MIPSfpga

myMIPSfpga: âïå÷àòëåíèÿ

MIPSfpga � çàìå÷àòåëüíûé îáðàçîâàòåëüíûéïðîäóêò!

Ê ïðîåêòó åñòü èíòåðåñ!

Îïûò ïîêàçàë, ÷òî ìîæíî çàíèìàòüñÿ MIPSfpga¾â äîìàøíèõ óñëîâèÿõ¿ áåç ÷ðåçìåðíûõ óñèëèé(ñì. myMIPSfpga).

Íî åñòü è òðóäíîñòè...

7/19

Page 8: Использование открытых кодов для расширения возможностей платформы MIPSfpga

myMIPSfpga: âïå÷àòëåíèÿ

Îãðàíè÷åíèÿ:

I òîëüêî äëÿ ïðåïîäàâàòåëåé, ðàáîòàþùèõ ñîñòóäåíòàìè;

I NDA;

I äëÿ áûñòðîãî ñòàðòà íóæíû ìàëîäîñòóïíûåïëàòû è ÏÎ;

I åñòü ñèëüíàÿ çàâèñèìîñòü îò ÑÀÏÐ èèíñòðóìåíòàëüíîãî ÏÎ;

I íå ïðåäóñìîòðåíî ïîäêëþ÷åíèÿ open sourceIP-áëîêîâ.

7/19

Page 9: Использование открытых кодов для расширения возможностей платформы MIPSfpga

myMIPSfpga: âïå÷àòëåíèÿ

Äëÿ ñíÿòèÿ îãðàíè÷åíèé íåîáõîäèìîèñïîëüçîâàòü open source êîìïîíåíòû!

7/19

Page 10: Использование открытых кодов для расширения возможностей платформы MIPSfpga

MIPSfpga SoC (ñ äåêàáðÿ 2015 ãîäà)

I ÑíÊ íà áàçå AXI è IP-áëîêîâ XilinxI INTC;I DDR2;I UART;I Ethernet;I I2C;I GPIO.

I ëàáû: bare-metal ÏÎ è Linux (!); ïîääåðæêàMIPSfpga SoC äîáàâëåíà â mainline linux!

8/19

Page 11: Использование открытых кодов для расширения возможностей платформы MIPSfpga

MIPSfpga SoC

Ëåãåíäà:

I ñèíèì � ïðîöåññîðíîå ÿäðî MIPSfpga;

I êðàñíûì � IP-áëîêè Xilinx.9/19

Page 12: Использование открытых кодов для расширения возможностей платформы MIPSfpga

MIPSfpga SoC

Ïðè ñáîðêå ÑíÊ èñïîëüçóþòñÿ ÑÀÏÐ Xilinx.

9/19

Page 13: Использование открытых кодов для расширения возможностей платформы MIPSfpga

êîìïîíåíòû MIPSfpga íå â ñâîáîäíîì äîñòóïå

I ïðîöåññîðíîå ÿäðî MIPSfpga íå â ñâîáîäíîìäîñòóïå;

I çàòðóäíèòåëüíî âíîñèòü èçìåíåíèÿ â ÿäðî;

I MIPSfpga SoC:I IP-áëîêè Xilinx íå â ñâîáîäíîì äîñòóïå;I ïðèâÿçêà ê ÑÀÏÐ è ÏËÈÑ Xilinx.

10/19

Page 14: Использование открытых кодов для расширения возможностей платформы MIPSfpga

Ïëàòû äîðîãè è ìàëîäîñòóïíûïëàòû èç MIPSfpga Getting Started Guide

(Version 1.3, April 5, 2016)

Terasic DE2-115 Digilent Nexys4 DDR$595 $320

(Academic $309) (Academic $159)

11/19

Page 15: Использование открытых кодов для расширения возможностей платформы MIPSfpga

marsohod.org

I îòå÷åñòâåííûé ïðîèçâîäèòåëü (Òàãàíðîã);

I ïëàòû Ìàðñîõîä (1500 � 4200 � 10500 ðóá.) íà áàçåÏËÈÑ Altera;

I ðóêîâîäñòâà ïî ÑÀÏÐ Altera;

I ðóêîâîäñòâî ïî Verilog;

I áëîã ñ ãîòîâûìè ïðîåêòàìè;

I ðóññêîÿçû÷íîå ñîîáùåñòâî.

12/19

Page 16: Использование открытых кодов для расширения возможностей платформы MIPSfpga

ïëàòà Ìàðñîõîä3

ÏËÈÑ MAX10 10M5050K LE

1600 Kbits10500 ðóá.

Äëÿ MIPSfpga Getting Started äîñòàòî÷íî 24K LE.

13/19

Page 17: Использование открытых кодов для расширения возможностей платформы MIPSfpga

Open source: èíñòðóìåíòàëüíîå ÏÎ

I Debian mips-linux-gnu- toolchain (âìåñòî Codescape MIPSSDK);

I qemu;

I Icarus Verilog, gtkwave (âìåñòî* ModelSim);

14/19

Page 18: Использование открытых кодов для расширения возможностей платформы MIPSfpga

Open source: àïïàðàòóðà

I ïðîöåññîðíîå ÿäðî mips32r1 âìåñòî MIPSfpga;

I øèíà Wishbone è IP-áëîêè ñ opencores âìåñòî AXI èIP-áëîêîâ Xilinx;

I ãåíåðàòîð êîììóòàòîðà Wishbone èç fusesoc;

I äîñòóïíûå ïëàòû ñ ÏËÈÑ.

15/19

Page 19: Использование открытых кодов для расширения возможностей платформы MIPSfpga

ïðîöåññîðíîå ÿäðî 'mips32r1'

Ðåàëèçàöèÿ ïðîöåññîðà ñ àðõèòåêòóðîé MIPS32Release 1. Ñîçäàíî Grant Ayers â ðàìêàõïðîåêòà eXtensible Utah Multicore (XUM)óíèâåðñèòåòà øòàòà Þòà â 2010-2012 ãîäàõ.

Ïåðåíåñåíî ñ OpenCores íà github:

I https://github.com/grantae/mips32r1_core

16/19

Page 20: Использование открытых кодов для расширения возможностей платформы MIPSfpga

ïðîöåññîðíîå ÿäðî 'mips32r1'

I single-issue in-order 5-stage pipeline;

I íåò MMU;

I íåò êýø-ïàìÿòè;

I íåò àðèôìåòè÷åñêîãî ñîïðîöåññîðà.

Ìèíèìàëèñòè÷íîå ÿäðî MIPS32r1, âëåçàåò â10K LE Altera.Óâû, áåç ïîääåðæêè Wishbone èç êîðîáêè...

16/19

Page 21: Использование открытых кодов для расширения возможностей платформы MIPSfpga

fusesoc

fusesoc ïðåäîñòàâëÿåò âîçìîæíîñòü ¾ñîáðàòü¿ ÑíÊ Openriscïî ñöåíàðèþ.

17/19

Page 22: Использование открытых кодов для расширения возможностей платформы MIPSfpga

Äåìîíñòðàöèîííûé ïðîåêò

Äåìîíñòðàöèîííûé ïðîåêò, ñîâìåñòèìûé ñ myMIPSfpga:

Äåìîíñòðàöèîííûé ïðîåêò ïîäòâåðæäàåò ðåàëèçóåìîñòüïðåäëîæåííîãî ïîäõîäà.

Èñõîäíûå òåêñòû:

I https://github.com/open-design/mips32r1_soc_nano

18/19

Page 23: Использование открытых кодов для расширения возможностей платформы MIPSfpga

F I N

19/19

Page 24: Использование открытых кодов для расширения возможностей платформы MIPSfpga

BACKUP

it may be convenient to have some backup/appendix slides ready as asupport for answers to potential questions.

Page 25: Использование открытых кодов для расширения возможностей платформы MIPSfpga

ÑñûëêèI ìîè ïðîåêòû

I https://github.com/open-design/mips32r1_soc_nano

I https://github.com/MIPSfpga/myMIPSfpga

I https://github.com/open-design/quartus-linux-install

I ïðîöåññîðíîå ÿäðî mips32r1

I https://github.com/grantae/mips32r1_core

I êîíñòðóêòîð ÑíÊ fusesoc

I https://github.com/olofk/fusesoc

I https://github.com/openrisc/orpsoc-cores

I êîëëåêöèÿ IP-áëîêîâ opencores.org (> 660 ÌÁ!)

I https://github.com/fabriziotappero/ip-cores

Page 26: Использование открытых кодов для расширения возможностей платформы MIPSfpga

DIGILENT: Your order has NOT been processed.

¾At this time, we are unable to ship orders toRussia from our US website due to shippingrestrictions beyond our control.¿

Page 27: Использование открытых кодов для расширения возможностей платформы MIPSfpga

terraelectronica.ru

From: Åëåíà Äèáðîâà <[email protected]>Subject: RE: ñðîê ïîñòàâêè DL-NEXYS4, DigilentDate: Tue, 16 Jun 2015 09:31:12 +0300

Äîáðûé äåíü!

Ê ñîæàëåíèþ, äàííóþ ïîçèöèþ ïîñòàâèòü íå ñìîæåì.

Page 28: Использование открытых кодов для расширения возможностей платформы MIPSfpga

×òî òàêîå MIPSfpga

I MIPSfpga Getting Started

I MIPSfpga Fundamentals

I MIPSfpga SoC

I The Connected Microcontroller

Lab

Page 29: Использование открытых кодов для расширения возможностей платформы MIPSfpga

×òî òàêîå MIPSfpga

I MIPSfpga Getting StartedI RTL êîäû ÿäðà MIPSfpga;I äîêóìåíòàöèÿ íà ïðîöåññîðíîå ÿäðî;I ïðèìåðû Codescape MIPS SDK;I ñàìûå ïðîñòûå ïðèìåðû; ïðè¼ìû ðàáîòû.

I MIPSfpga FundamentalsI áîëåå ñëîæíûå ðàáîòû â äóõå Getting Started:ïîäêëþ÷åíèå íåñëîæíûõ ïåðèôåðèéíûõêîíòðîëëåðîâ (7SEG display, timer, buzzer, SPILCD);

I ëàáû: bare-metal ÏÎ.

Page 30: Использование открытых кодов для расширения возможностей платформы MIPSfpga

MIPSfpga Getting Started

Ëåãåíäà:

I ñèíèì � ïðîöåññîðíîå ÿäðî MIPSfpga;

I æ¼ëòûì � áëîêè MIPSfpga Getting Started.

Page 31: Использование открытых кодов для расширения возможностей платформы MIPSfpga

MIPSfpga Getting Started

Øèíà AHB-Lite ïîçâîëÿåò èñïîëüçîâàòü ñàìûå ïðîñòûåñðåäñòâà äëÿ ïîäñîåäèíåíèÿ ïåðèôåðèè ê ÿäðó.

Page 32: Использование открытых кодов для расширения возможностей платформы MIPSfpga

MIPSfpga Getting Started

Íàñòðîéêè ñîåäèíåíèÿ IP-áëîêîâ ïðîâîäÿòñÿ âðó÷íóþ â êîäåVerilog.

Page 33: Использование открытых кодов для расширения возможностей платформы MIPSfpga

fusesoc + MIPSfpga

Page 34: Использование открытых кодов для расширения возможностей платформы MIPSfpga

Äàëüíåéøèå ðàáîòû

I èíòåãðàöèÿ Wishbone êîíòðîëëåðà â mips32r1;

I âåðèôèêàöèÿ mips32r1 ïðè ïîìîùè òåñòîâ ÍÈÈÑÈ ÐÀÍ;

I ðåàëèçàöèÿ áîëåå ñëîæíîé ÑíÊ, ñîïîñòîâèìîé ñMIPSfpga SoC;

I ïîääåðæêà ñâîáîäíî ðàñïðîñòðàíÿåìîé ÑÀÏÐ äëÿÏËÈÑ Lattice � icestorm (http://www.cli�ord.at/icestorm/);

I ïîääåðæêà ÏËÈÑ Xilinx (e.g. fusesoc has Vivadobackend).