FC2カウンター FPGAの部屋 2012年09月22日
FC2ブログ

FPGAやCPLDの話題やFPGA用のツールの話題などです。 マニアックです。 日記も書きます。

FPGAの部屋

FPGAの部屋の有用と思われるコンテンツのまとめサイトを作りました。Xilinx ISEの初心者の方には、FPGAリテラシーおよびチュートリアルのページをお勧めいたします。

ZedBoardにキャラクタ・ディスプレイ・コントローラを追加する5(完成)

”ZedBoardにキャラクタ・ディスプレイ・コントローラを追加する4(ChipScopeデバック1)”の続き。

前回、ディスプレイにキャラクタの表示が出ないというバグで悩んでいたが、バグが解消してキャラクタがディスプレイに表示できるようになった。

バグは何だったかというと、CharDispCtrler.v のところでVGA信号の出力ポートにつないでいるVerilogコードがあった。それを下に示す。

assign VGA_RED = {red_node,0};
assign VGA_GREEN = {green_node,0};
assign VGA_BLUE = {blue_node,0};


red_node, green_node, blue_node は3ビット長の信号で、それを4ビット長のVGA_RED, VGA_GREEN, VGA_BLUE に接続するために下に1ビットの0を付けるはずだったのが、0と書いてしまったので、32ビット幅に拡張されてしまったようだ。それで、VGA_RED, VGA_GREEN, VGA_BLUE はいつでも0になってしまった。これを下のように書きなおした。

assign VGA_RED = {red_node,1'b0};
assign VGA_GREEN = {green_node,1'b0};
assign VGA_BLUE = {blue_node,1'b0};


これで、論理合成、インプリメントを行い、ハードウェアをSDKにエクスポートしてやってみるとディスプレイに文字が表示された。
ZedBoard_CDC_SVGA_40_120921.jpg

表示したプログラムを下に示す。
ZedBoard_CDC_SVGA_41_120921.png

#include "xparameters.h"

int main()
{
    int *cdc_addr = (int *)XPAR_CDC_AXI_SLAVE_0_S_AXI_RNG00_BASEADDR;
    int i, charval;

    for (i=0, charval=0xffc1; i<7500; i++){
        *(volatile unsigned int *)(cdc_addr++) = charval++;
    }

    return 0;
}


注:キャラクタのデータ (chaval) のフォーマットは、15ビット目~13ビット目の3ビットがRedの明るさ、12ビット目から10ビット目の3ビットがGreenの明るさ、9ビット目から7ビット目の3ビットがBlueの明るさ、6ビット目から0ビット目の7ビットがアスキー・コードです。
charval = 0x41; にして、'A'を表示しようとしても、RGBの値が0なので表示しません。RGBの明るさも設定して下さい。


同時にChipScopeもS_AXI_AWVALID でトリガをかけてあった。ChipScope Analyzer Pro のWaveform ウインドウを下に示す。
ZedBoard_CDC_SVGA_42_120921.png

さすが、667MHzのARM9でバスアクセスを出しているだけあって、Writeアクセスが密に並んでいる。今度は前の部分を拡大してみた。
ZedBoard_CDC_SVGA_43_120921.png

AXI4バスのWriteアクセスの間隔は12クロックだった。クロックは100MHzなので、1クロックは10nsec、12クロックで120nsec 間隔でWriteしている。

もし需要があれば、GitHub辺りにプロジェクトを置いておこうかと思いますが、需要はありますか?

(追加)
GitHubは設定が難しかったので、YahooボックスでISE14.2 ZedBoard用のキャラクタ・ディスプレイ・コントローラIPを公開します。その他の設定はブログの通りに設定してください。なお、保証はありません。自己責任でお使いください。
ダウンロードして動かした方は動作したかどうか?などの感想をコメントで教えて下さい。

(2012/10/01:追記)
コメントされた方はダウンロードされたと思うので、YahooボックスのISE14.2 ZedBoard用のキャラクタ・ディスプレイ・コントローラIPのリンクを削除しました。コメントが無いのが寂しいです。

(2012/10/14:追記)
キャラクタ・ディスプレイ・コントローラIPの情報は全て公開してあると思いますが、IPとしてフォルダごと欲しいという方は使用したい理由を書いて、ご連絡ください。(理由は興味があるからとかでもOKです)
  1. 2012年09月22日 05:09 |
  2. ZedBoard
  3. | トラックバック:0
  4. | コメント:6