Category: FPGAPage 2 of 2

【PIC】XC8で使用するRAM領域を制限する

自分用メモ。ちゃんと動くようになったら、サンプルをまとめたいと思います。 高エネルギー実験用のFlashADC FPGAボードのかなり大規模なVHDLコードの開発をしているのですが、FT2232D経由のシリアルデバッグを簡単化するために、CQPIC (PIC16F84のVHDL実装)をソフトコアCPUとして用いてソフトウエア制御しようと思っています。 まずは練習として、MPLAB Xで簡単なmain関数をC言語で記述し、コンパイルして生成されるHEXファイルを用いてXilinx ISEで動作シミュレーションするところまでは動きました。 外部IOの数が限られているので、今後、RAMをdual portにして特定領域にVHDL IPコア側からデータを書き込んで、PICに処理させるということをしてみたいと思います。そのために、XC8 C Compiler User Guideの§4.8.49 –RAM: Adjust RAM Rangesに書かれているオプション指定を勉強する必要がありそう。

VHDLを整形(format)したい

VHDLを記述していると、とくにXilinxのISEではコードの整形が結構めんどうです。EclipseだとShift+Command+Fとすると、自動的に指定したルールにもとづいてフォーマットしてくれて、authorによらず統一的な見た目にできますが、残念ながらEclipseのVHDLプラグインはいいものがありません。 そこへくると、Emacsはさすが機能豊富で、整形機能付きの「VHDLモード」を持っています。 MacにインストールされているEmacsでは、.vhdや.vhdlという拡張子のファイルを開くと自動的にVHDLモードになり、 syntax coloringをしてくれます。このモード内で、 Ctrl+C をしたあと、 Ctrl+B すると、コードが整形されます。以下がその例。 Emacs VHDLモードのオフィシャルページはEmacs VHDL Modeにあります。 作者やメンテナのReto ZimmermannさんとRod Whitbyさんに感謝! Thank you Reto and Rod for very nice contribution, the Emacs VHDL…

Xilinx FPGA用のIPコアをNGCファイルとして(ブラックボックスとして)配布できるようにする

XilinxのISEでは、NGCという形式のIPコアを取り込むことができます。IPコアをNGCファイルとして配布すると、C言語やC++言語の.o、Javaの.jarのような感覚でライブラリとして配布できます。ソースコードは配布できないが、IPコアの機能はみなさんのコードに取り込んで使ってもらいたい場合には、自分で記述したVHDL/VerilogをNGCにコンパイルして渡すとよいでしょう。 で、このNGCファイルですが、検索しても作成方法が全然出てこなくて困っていたら、Eli Billauerさんが自身のページで説明してくれていました (thank you for very nice summary of the NGC create procedure!!) NGCファイルの作成方法(IPコアのブラックボックスライブラリ化) 日本語で手順をまとめると、 ISEで新規プロジェクト作成。たとえばSDRAMコントローラをライブラリとして配布したいなら、SDRAMController等のプロジェクト名とする。 Hierarchyサブウインドウで右クリック→Add Fileを選んで、NGCにしたいVHDLファイルをプロジェクトに追加。 ProcessサブウインドウでSynthesisを右クリック→Properties→Xilinx Specific Optionsを開く。 Add I/O Buffersのチェックを外す。 Number of Clock…