この章では、Cherry Syn を使って Tang Nano 9K 上で LED を順番に点滅させる回路を設計・合成し、実際に動作させる方法を紹介します。
process blink(
    clkin uint#1 pin<52> period<37> clk,
    rstin uint#1 pin<3> iostandard<LVCMOS18> pullup rst,
    out uint#6 pin<10,11,13,14,15,16> latch leds)
{
    uint#6 a = 0b000001;
    while (1) {
        for (uint#24 i=0; i != 13500000; i++) ;
        a = a#(4..0)@a#(5);
        leds = ~a;
    }
}このコードは、6ビットの LED を順番に点灯させる回路です。
    クロックは 27MHz(period=37)、LED はピン 10〜16 に接続されています。
tutorial2_1.chc をクリックして自動入力。blink.v(Verilog HDL)blink.cst(ピン制約ファイル)blink.sdc(タイミング制約ファイル)GW1NR-LV9QN88PC6/15 を選択、Device Version は C → Nexta = a#(4..0)@a#(5); はビットの循環シフトleds = ~a; により、1ビットだけが OFF になるよう反転for ループは遅延用。FPGA 上ではカウンタとして展開されるpin<...> や iostandard<...> は .cst に反映されるCherry Syn を使えば、HDL・ピン制約・タイミング制約を一気に生成できます。
    Tang Nano 9K の LED を自在に操ることで、回路設計の楽しさと詩的な美しさを体感しましょう。
次回は、スイッチ入力や RAM を使った例題にも挑戦してみましょう。