できないことはできない

ただのメモの置き場所

MAX10でLチカ

マクニカのodysseyでLチカをやってみよう。

まずAlteraのホームページから開発ツールの「Quartus Prime(Quartus Ver.15)」をダウンロード。MAX10のデバイスファイルも忘れずに。

早速起動して、プロジェクトファイルを作ります。

f:id:i8087:20160427195730j:plain

適当なプロジェクト名を付けて次に進みます。

f:id:i8087:20160427195834j:plain

odysseyのMAX10は「10M08SAU169C8GES」です。そうES品なのです。

プロジェクト作成ウィザード終了後、HDLを記述します。 f:id:i8087:20160427200435j:plain

library ieee;
use IEEE.std_logic_1164.all; 
use IEEE.std_logic_unsigned.all;

entity odyssey_m10 is
   port (
      CLK       : in  std_logic;
      PB0       : in  std_logic;
      LED0      : out std_logic;
      LED1      : out std_logic
   );
end odyssey_m10;

architecture rtl of odyssey_m10 is 

   signal   counter : std_logic_vector(23 downto 0) := (others=>'0');
    
begin
   
   process(CLK) begin
        if(rising_edge(CLK)) then
            counter <= counter + '1';
        end if;
    end process;

    LED0 <= counter(23);
    

end rtl;

ただクロックの立ち上がりでカウンターの値をインクリメントするだけの単純なデザインです。
クロックはOdysseyの場合、基板上に50MHzの発振子があるのでそれを使います。 223クロックサイクルごとにLEDが点滅させます。

記述はここまで。Analysis&Synthesisはこれでパスできるはずです。


次はPin PlannerでFPGAのI/Oを指定します。

f:id:i8087:20160427201355j:plain

プロジェクト作成ウィザードで「10M08SAU169C8GES」を指定してるので、上のキャプチャのようなものが表示されるはずです。
このPin Plannerの図はFPGAを上から見た(Top View)ピン配列になっています。
今回指定するのはCLK、LEDです。おまけでプッシュボタン(PB0)も指定しちゃいましょう。

・CLK:F13
・LED0:L13
・PB0:K13
(I/O Standerdはすべて3.3V LVTTL)

odysseyの回路図は公開されています。↓のリンクの「MAX 10 FPGAボード回路図」

Odyssey MAX 10 FPGA & BLE Sensor Kit - Mpression

使用するLEDやPBを増やしたり、バンク電圧を確認するときにはこの回路図を見ればOK。


Fitterを実行して、Assemblerも実行しちゃいましょう。

f:id:i8087:20160427202245j:plain

エラーが無いことを確認してFPGAにデータをProgramします。

Program Deviceを開いて、sofファイルを書きます。Program Deviceが立ち上がったら、Add Fileでsofファイルを指定します。

sofファイルは"(プロジェクトファイルの場所)/Output/***.sof"にあります。

f:id:i8087:20160427202506j:plain

追加すると↑のようにMAX10の絵がポコっと出現します。あとはUSB Blasterを繋いでStartするだけ。USB Blasterのドライバーのインストール方法はここにかいてありました。

www.altera.co.jp

f:id:i8087:20160427202914j:plain

f:id:i8087:20160502230556j:plain 光りました。 非純正のterasic製のUSB Blasterでも無事書き込めました。めでたしめでたし。

次はこのプロジェクトにNiosを追加してみます。