Xilinx FPGAでARM Cortex M1またはCortex M3を実行する

SoCの開発コストが増加する中、Armが2010年から始めているのが「DesignStart」という取り組みだ。同社のコア「Cortex-M0」をライセンス無償で提供するというもので、設計時間の短縮やIP（Intellectual Property）コストの低減を図ることができる。Armは、Armコアを採用する裾野を広げるべく、DesignStartの拡充に注力している。(https://eetimes.jp/ee/articles/1812/05/news010.html)

ARM DesignStart(https://developer.arm.com/ip-products/designstart/fpga)では、Cortex-M0、Cortex-M3、Cortex-A5のプロセッサなどARM IPとサポートするIPの厳選した組み合わせ、カスタムシリコン設計用のソフトウェアと資料をすぐに入手することができます。本プログラムでは、Cortex-M1およびCortex-M3のソフトCPUのIP、FPGA設計用のソフトウェアと資料も提供します。

組み込み設計のエキスパート、アダム・テイラー（Adam Taylor）が、Cortex M1またはCortex M3をDigilent Arty S7-50TまたはArty A7-35Tで実行させるためのチュートリアルを作成しました。詳細なガイドラインは、Resources for DesignStart FPGA（DesignStart FPGA用資料）/Get up and running with Arm DesignStart（Arm DesignStartの使用開始について https://community.arm.com/innovation/b/blog/posts/arm-innovator-adam-taylor-shares-top-20-resources-for-fpga-developers）の中のARM resources page（ARM資料ページ）に掲載されています。以下のページで概要をご覧いただけます。 

![Xilinx製Vivado Design SuiteのARM Cortex-Mのブロック図.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/616703/359b5e06-5f08-ec74-2402-7c7ecc75657d.jpeg)
Xilinx製Vivado Design SuiteのARM Cortex-Mのブロック図


必要なツール：
1. Xilinx Vivado 2018.2
2.ARM DesignStart Xilinx FPGAでダウンロードしたARM Cortex Mコア (https://developer.arm.com/ip-products/designstart/fpga/fpga-xilinx)
3. Digilent Arty S7-50TまたはArty A7-35T
ステップ１：DesignStartプログラムに登録して、Cortex M0またはCortex M3をダウンロードします

![ARM DesignStart FPGAの登録.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/616703/8a422a73-e4c8-b0bd-2d4d-3252144df18d.jpeg)
ARM DesignStart FPGAの登録

ステップ2：ARM Cortex Mコアをダウンロードします
ダウンロードをクリックし、[ARM DesignStart Cortex M3 Xilinx Edition]の[Download Now（今すぐダウンロード）]をクリックします。ライセンス条項のすべてに同意する必要があります。 
![ARM DesignStart FPGA Cortex-Mダウンロード.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/616703/cfb40996-312e-5d9b-765c-afac1d922866.jpeg)
ARM DesignStart FPGA Cortex-Mダウンロード

ステップ3：プロジェクトファイルを展開します
M1パッケージとM3の両方のパッケージを圧縮ファイルでダウンロード後、これらのファイルを解凍すると、次のファイル構造が表示されます
![ARM DesignStart FPGA Cortex M-3フォルダ.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/616703/6e243570-5fb1-1e18-7519-3a7d15cc0ca8.jpeg)
ARM DesignStart FPGA Cortex M-3フォルダ

ステップ4：Xilinx Vivado Webpackをダウンロードしてインストールします
Getting Started with Vivado at Digilent Wiki（Digilent WikiでのVivadoの使用開始について）(https://reference.digilentinc.com/vivado/getting_started/start) に従って、無料のXilinx Vivado Webpackをインストールします
![Xilinx Vivado Design Suite.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/616703/cc5f758a-4d15-d14e-f527-f806ec9a6bef.jpeg)
Xilinx Vivado Design Suite

ステップ5：Xilinx VivadoでARM Cortex Mコアを開きます
アダムの場合、Cortex M3をDigilent Arty A7-35Tにロードします。彼はVivadoを開いたら、デフォルトのIPロケーションを設定します。「［Tools（ツール）］->［Setting（設定）］をクリックして［IP Defaults（IPデフォルト）］を選択し、ARM Cortex M3のダウンロードで展開されたVivadoフォルダーへのパスを追加します」
（ARM Cortex M3ダウンロード内の）ハードウェアのディレクトリの中の既存のプロジェクトを開きます
![Xilinx Vivado設定のIPロケーション.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/616703/bffeaeb3-d52b-e7f2-74a4-36ddca78cd2c.jpeg)
Xilinx Vivado設定のIPロケーション

ステップ6：Xilinx FPGAにARM CortexコアMをロードします
アダムはDigilent Arty A7-35TにCortex M3をロードする前に、オンボードのUSBポート経由でArty A7-35Tをコンピューターに接続しました。次に、VivadoとUARTターミナル（PuTTYなど）の[プログラムとデバッグ]の［ハードウェアマネージャー］を開きました。UARTターミナル経由でARM Cortex M3がロードされていることを確認できました。 
![Xilinx Vivado経由でFPGAデバイスに設計をダウンロードする.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/616703/743e967c-1a96-3c00-0612-12cfb97d961c.jpeg)
Xilinx Vivado経由でFPGAデバイスに設計をダウンロードする 

アダムはAMR Cortex M3が正常にロードされたときのデモ動画(https://www.youtube.com/watch?v=51r47K0H5uw&feature=youtu.be) を作成しました。Project Page（プロジェクトページ）(https://www.hackster.io/news/microzed-chronicles-using-cortex-m1-and-cortex-m3-with-arm-designstart-b00931655235) にプロジェクトの詳細を掲載しています。アダムのブログでは、その他のプロジェクトもご覧いただけます。