FC2カウンター FPGAの部屋 AlteraのFPGA

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

FPGAの部屋

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

AlteraのFPGAでのクロック出力とデータ出力1

XilinxでFPGAからSDRAMなどの外部デバイスにクロックを供給する場合は、グローバルクロックからIOブロック(IOB)のDDRレジスタを叩いてクロックを生成した。データも同じグローバルクロックラインからクロックを供給されるクロックを使用するものは、IOBのレジスタ(DDR or SDR)を使用するとFPGAから供給するクロックと大体(スキューがあるときがあるから)同期できた。
Alteraではどうなんだろう?FPGAからSDRAMなどの外部デバイスにクロックを供給する場合のクロックの遅延は?出力するデータの同期はどうなるのか、IOブロックの中のFFを使用するにはどうするのか?実際にDE0のCyclone III (EP3C16F484C6)で、テストプロジェクトを作って調べてみることにした。

まずは、MegaWizard Plug-In Manager でALTPLLを作成して、50MHz入力、133.333MHz外部出力用のc0と内部で使用するためのc1を作成した。
CLK_DATA_test_1_101021.png

これを使って、上のモジュール(CLK_DATA_test.v)を書いた。CLK_DATA_test.vを下に示す。

// CLK_DATA_test.v

`default_nettype none

module CLK_DATA_test (
    input    wire    clk,
    input    wire    reset,
    input    wire    [7:0] din,
    output    wire    clk_out,
    output    wire    [7:0] dout
);
    
    reg [7:0] d0, d1, d2;
    wire c0_sig, c1_sig;
    wire locked_sig;
    wire reset_sig;

    clk_data_test_pll    clk_data_test_pll_inst (
        .areset ( reset ),
        .inclk0 ( clk ),
        .c0 ( c0_sig ),
        .c1 ( c1_sig ),
        .locked ( locked_sig )
    );
    
    assign reset_sig = ~locked_sig;
    
    always @(posedge c1_sig) begin
        if (reset_sig) begin
            d0 <= 8'd0;
            d1 <= 8'd0;
            d2 <= 8'd0;
        end else begin
            d0 <= din;
            d1 <= d0;
            d2 <= d1;
        end
    end
    assign dout = d2;
    
    assign clk_out = c0_sig;
    
endmodule

`default_nettype wire


これで、Quartus II 10.0SP1でコンパイルしてみた。制約ファイルは全く書いていない状態だ。
CLK_DATA_test_2_101022.png

次にChip Plannerを起動して、内部を覗いてみた。
左下をほんの少し使ってある。どうやら、4つの隅にPLLが実装されているようだ。
CLK_DATA_test_3_101022.png

使っている部分を拡大する。ピンクの四角や黒い四角で囲んだ部分が使用されている部分だ。
CLK_DATA_test_4_101022.png

黒い四角で囲んだ部分がPLLなので、これをダブルクリックすると内部構造が見える。Resource Property Editorが開いてPLLのプロパティを見ることができた。
CLK_DATA_test_5_101022.png

CLK0とCLK1がイネーブルされて、133.33MHzが出力されるように設定されている。

さて、一番見たかったのが、最後のFFのd2が何処に割り当てられているかだ。IOブロックのFF(Flip-Flop)かそれともLE(Logic Element)か?
LEの割り当てられていた。
CLK_DATA_test_6_101022.png

PLLのC0の出力先IOピン(clk_out)を見てみる。
CLK_DATA_test_7_101022.png

PLLからIOパッドまで行く配線は立ち上がりの遅延が1.764ns、立ち下がりの遅延が1.783nsだった。
次に、PLLでc0とc1の配線を反対にしてコンパイルしてみた。Chip Planner を立ち上げて、PLLからIOパッドまで行く配線を見てみたが、配線遅延は変化がなかった。

  1. 2010年10月21日 05:50 |
  2. AlteraのFPGA
  3. | トラックバック:0
  4. | コメント:0

Cyclone III のお勉強2

今日はQuartusII 10.0 SP1のWebインストールを試みたが、1%から進まない。そこで、個別にダウンロードしたらダウンロードできた。今からインストールする。今のところiTunesアップデートとiPhoneのOS4.1のインストールをしているので、終了したら、やってみようと思っている。

さて、だいぶ間があいてしまったが、”Cyclone III のお勉強1”の続き。
さて、M9Kメモリ・ブロックはXilinxで言うとBlock RAMか?Spartan3用のブロックRAMは18Kビットなので、半分の粒度だな。256X36ビットまでいけるらしい。ROM、RAMはあたりまえだが、FIFOとしてもコンフィギュレーションできるのか?
エンベデッド・マルチプライヤも持っているみたい。9X9、2個か18X18、1個として使えるようだ。
I/O機能はLVTTLやLVCMOS,SSTL,LVDSなどなどを選ぶことができるみたいだ。
クロック・ネットワークおよびPLL、20個のグローバル・ネットワークを持っている。これは、Xilinxみたいにリージョンはないのだろうか?PLLは4個持っている。AlteraはDLLは無しで、PLLのみ。
DDR2 SDRAM メモリ・インタフェースは、最大400 Mbps のデータ・レートをサポートするそうだ。これはSpartan-3Aよりも転送レートが高い。(333Mbps)

QuartusII 10.0 SP1とModelSim AE, Nios2もインストールできた。
  1. 2010年09月09日 05:57 |
  2. AlteraのFPGA
  3. | トラックバック:0
  4. | コメント:0

Cyclone III のお勉強1

SDR SDRAMコントローラは、単体で作るか、SOPC Builderベースで全体を構築してIPを使うか?もう少し検討することにした。
さて、DE0に使用されているFPGAのCyclone3について、何も知らないので、マニュアルで勉強することにした。
Cyclone III デバイス・ハンドブックのChapter 1. Cyclone III デバイス・ファミリの概要を読んで勉強する。

・ロー・パワー65 nm FPGA(XilinxではVirtex-5が65nmのようだ。廉価版ではSpartan-3シリーズが90nm、Spartan-6シリーズが45nmなので、Xilinxの廉価版は65nmがないみたい)
・PLLのみ、DCMは入っていない
・DDR2 SDRAMとか最大400Mbpsのメモリインターフェイスに対応する
・I/OはXilinx同様に色々設定できる。


DE0のFPGAの型番は、EP3C16F484C6Nだったので、EP3C16というCyclone III シリーズ。
Chapter 1. Cyclone III デバイス・ファミリの概要の表1–1. Cyclone III FPGA デバイス・ファミリの特長を下に引用させていただく。
Cyclone3_1_100819.jpg

ロジック・エレメントが15,406、メモリ504Kビット、マルチプライヤも56個、PLL4個、グローバル・クロック/ネットワーク20個のかなり大きなFGPAだ。
パッケージは484 ピン FineLineボール・グリッド・アレイ(FBGA)で、346個のIOポートが使える。
  1. 2010年08月19日 05:44 |
  2. AlteraのFPGA
  3. | トラックバック:0
  4. | コメント:3

AlteraのJTAG-UARTの覚書

DE0で、自作ソフトからAvalonバス上のJTAG-UARTとやり取りできないかと思っている。それの覚書。
ネットで検索していたら、niosforum.comの記事がヒット
それによると、nios2-terminalのstdin/stdoutを自作ソフトにリダイレクトするようだ。リダイレクトするソフトウェアは、Redirecting an arbitrary Console's Input/Outputにあるそうだ。
まだ、確かめていない。そのうちに試してみよう。
まずは、nios2-terminalはeclipseからしか起動したことが無いので、これを起動するところから始めないと。。。
  1. 2009年12月08日 05:47 |
  2. AlteraのFPGA
  3. | トラックバック:0
  4. | コメント:0

日昇テクノロジーのサンプルを動作させてみた

とりあえず、購入したAlteraのFPGAボードとUSB Blasterもどきのテストをすることにした。
日昇テクノロジーのサンプルのページからサンプルをダウンロードして、一番簡単そうなled_testをやってみることにした。(Quartusのやり方はいろいろなサイトで説明されているので省略する)

まずはQuartusⅡ9.0sp1を立ち上げて、プロジェクトをオープンする。
Altera_EP2C5_1_090527.png

確か、紫の三角のStart Compilation をクリックすればコンパイルできるはず。。。
コンパイルできた。
Altera_EP2C5_2_090527.png

これでProgrammerを立ち上げればよかったのでは?
Programmerを立ち上げた。
USB-Blasterが見えました。良かった。少し心配していたので。。。
Altera_EP2C5_3_090527.png

Startしたら成功してLEDがついた。
Altera_EP2C5_4_090527.png

Altera_EP2C5_5_090527.jpg

左下のほうの互い違いについているLEDだ。これで、買ったボードとダウンロード・ケーブルは一応動いているのが確認できた。

2009/05/28 : 追加
7セグメントLEDと圧電スピーカーのデモも動かしてみたが、OKだった。案外使えるかも?
Verilog ソースのコメントが中国語?なので読めないのが難点か?できれば日本語とは言わないが英語で書いてあるとうれしい。
  1. 2009年05月27日 21:26 |
  2. AlteraのFPGA
  3. | トラックバック:0
  4. | コメント:2

Alteraのボードを購入しました

昨日、日昇テクノロジーからFPGA/Cyclone II EP2C5Q208ボード CPLD/FPGA用のインタフェース・ボードCPLD/FPGA用ダウンロード・ケーブルを購入しました。
合計、送料込みで16,950円ととてもお買い得でした。コネクタの割り方などに雑なところが見かけられましたし、ダウンロード・ケーブルはフラットケーブルがコネクタではなく、直接出ていたので、価格なりという感じはしましたが、値段を見ると本当に安いので、動けば文句ないです。
これで、Alteraのボードが手に入ったので、Xilinxとの比較をしてみたいと思います。特にNiosⅡとSOPC Builderを使ってみたいですね。
これからQuartusⅡの9をダウンロードして、インストールしようと思います。ですが、今はSpartan3A Starter KitのDDR2 SDRAMコントローラを作っているので、それが終わったらにします。臨時収入が入ったので、なくならないうちに欲しかったボードを買ってしまいました。
マニュアルは全く同梱されていなかったです。すべてWebページからダウンロードということみたいです。電源用DCジャックの仕様をメールで問い合わせたのですが、夜にメールを送って、いくらもたたないうちに返事が来たのにはびっくりしました。電源はセンター+極性の5Vなので、手持ちの電源が使えそうです。
そういえば、品物を注文してから送ってくるのも早いです。日曜日に注文して、次の日(月曜日)に届きました。
nisyou_altera_board_090526.jpg

仕事の関係もあって、私の軸足はXilinxなのですが、Alteraも勉強してみたくなりました。XilinxのFPGAやツールもまだまだ勉強し足りないところがたくさんあります。
  1. 2009年05月26日 06:06 |
  2. AlteraのFPGA
  3. | トラックバック:0
  4. | コメント:0