基板を作るどんな基板にしようかPortEnableUCFファイルプログラム書込めない回路図Verilogソースまとめ(のようなもの)概要FPGAを使っていると、簡単なロジックをディスクリートで組むのが面倒になってくる。それで、簡単なロジックを入れるための小さな基板を作ってみたくなった。FPGAの小さなパッケージが見つからない。いうわけで、回路規模がかなり小さくなってしまうが、CPLDを使ってみることにした。素のチップを使ったことが無い。*追記:考えてみると、XC9572は使ったことあった。5V電源だし、消費電力多いんだよね。結局、XilinxのXCR3064XL-VQ44を使うことにした。PC441は、PLCCソケットで取り外しは楽なんだけど、ユニバーサル基板の半田付けが面倒。ポリイミドのテープ貼ってラッピングワイヤーで半田付けした方が楽な気がする。→もうちょっと規模が大きい方が良いんだけど。良いのが見つからない。VQ44で、もっと大規模のCPLDかFPGAがあれば良いんだけどね〜。なんで、少ピンのFPGAって無いんだろう?1それに、もう製造していないはずだし。[top]基板を作るどんな基板にしようか電源コネクタは、USB-MiniBのレセプタクルを使う最大の利点は、パソコンのUSB端子を電源に出来ること。USBケーブルがさせるDCアダプタもあるし。CypressのFT232RLを載せて、シリアル通信出来るようにするついでにFT232RLの3.3V出力を、レギュレータ代わりにしてCPLDの電源にする水晶のクロックモジュールを載せられるようにしておくクロックモジュールのサイズは、ほとんど共通なのでクロック周波数の変更も可能テスト用のA/D、D/Aを搭載。デジタル入出力8bitを確保A/D,D/Aは、SPI接続の方が楽なんだけど、CPLDのロジックで入るかどうか不安なので、パラレル入出力のものを選択。この基板も作ったんだけど、最終的には本当に必要なD/Aのみにした。SPI使いたいところだけど、やはり規模的に無理だろうなぁ。PortEnableいろいろ載せたので、CPLDのピン数一杯まで使ってしまった。JTAGの端子も全部使い切った。それで基板を作った後で、JTAG端子をI/Oピンとして使うのはどうするんだろう?と調べてみた。pinsのチェックを外して、PortEnable端子をHにすればJTAG端子が有効に、LにすればI/O端子として動作するらしいVQ44パッケージの場合は、pin4がPortEnable端子なのか。切り変えられるようにしてない。基板作っちゃったので焦ったけど、GNDはサーマルランドになってるので切るの楽だった。これは、JTAG書込み時はオープンで良いのかなぁ?2UCFファイル作成した基板の接続に合わせて、UCFファイルを作る。UCFはインプリメント時の制約条件を設定するファイルで、この場合入出力ピンを固定する。各ピンのLocを手入力する。これだと正しいピン名しか入れられない。番号を、P1,P2,P3のように設定すれば良いだけだった。プログラムまず、単純にLEDを点滅するだけのプログラムを書いてみる。結局、clkとledの2つのピンしか使っていない。LEDが反転するつまり1秒弱間隔でLEDが点滅することになる。書込めないところが、iMPACTで書込むことが出来ない。Chainでエラーになる。これはJTAGの接続に問題があるということなんだけど、配線を何度見直しても正しいように見える。JTAG端子をプルアップしてみたけどダメ。IIIという奴もう1本同じケーブルがあるので、変えてみたけどダメ。StarterKITへの書込みは出来るので、ケーブルやPC側の問題ではなさそう。思い当たることは全部チェックしたと思うんだけど。回路図をもう一回眺めてみる。結局、これはPortEnable端子(P4)をオープンにしていたためだった。PortEnableはちゃんとHレベルにしないとダメみたい。回路図これは、実際に作ったものとはちょっと違うんだけど、一応参考に。JTAGピンでプログラムする時は、R18をショート。I/Oとして使う場合、R17をショートする。要するにPortEnableピン(P4)をHにしてプログラム。LにしてI/O動作させるということ。Verilogソースこれは、とあるシリアルプロトコルで出力されたデータをD/A変換するために作ったもの。txbuf[0];endmoduleこれは、かなり特殊なので、汎用性はないけど、まぁ参考4に。UART通信は、基本的に送信のみ。受信は単純にRxの立下りで動作する。ホストから、例えばCRコードを送信すると、データを返すという感じ。ちなみに、40MHzのオシレータモジュールを使ったので、43分周で921600bpsで通信する。2後でわかったけど、オープンだとJTAGチェーンが認識出来なかった。3確か、Spartan3はこんな風に設定するんだったと思うけど。4というか、自分用の備忘録なんだけど。[top]まとめ(のようなもの)XCR3064は、9572とかと較べて、消費電流も小さい。3.3V電源だけど、5Vトレラントなので、使いやすい。VQ44パッケージは、実装しやすいので、大好き!規模的には、かなり厳しいので最低限の回路しかインプリメントできない。ビット数も増やせないし、ボーレートカウンタを節約するために高速にせざるを得ないし。倍ぐらいあると良いんだけど。本当は4倍ぐらい欲しいところだなぁ。