Quartus II をコマンドラインで

なんとなくGUIを使わずに make コマンドとかでやりたくなった。
調べると同じことを考える人がいたのでメモ。

blink.vhd ファイルを作る。

-- Clock: 50MHz
-- LED Blink: 1Hz
--
-- d2  <- PIN_3
-- clk <- PIN_17
-- key <- PIN_144

library IEEE;

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

entity blink is
  port (
    key : in std_logic;
    clk : in std_logic;
    d2  : out std_logic
  );
end blink;

architecture RTL of blink is
  -- 32bit constant
  constant MAX_COUNT  : std_logic_vector (31 downto 0) := X"02FAF080"; -- 50000000 (50MHz)
  -- 32bit constant
  constant HALF_COUNT : std_logic_vector (31 downto 0) := X"017D7840"; -- 25000000 (50MHz)
  -- 32bit variable
  signal   counter    : std_logic_vector (31 downto 0) := X"00000000"; -- 0
begin
  process (key,clk)
  begin
    if (key = '0') then
      counter <= (others => '0');
    elsif (clk'event and clk = '1') then
      if (counter = MAX_COUNT - 1 ) then
        counter <= (others => '0');
      else
        counter <= counter + 1;
      end if;
    end if;
  end process;

  d2 <= '1' when (counter > HALF_COUNT) else '0';
end RTL;

ピンのアサイン定義のため blink.qsf を作る(先に作るのは邪道っぽいけど気にしない)

set_location_assignment PIN_3 -to d2
set_location_assignment PIN_17 -to clk
set_location_assignment PIN_144 -to key

VHDL を Synthesis する。(コンパイル的な意味として理解)

quartus_map --64bit blink --part=EP2C5T144C8 --source=blink.vhd

fitterってやつを実行(よくわからん)

quartus_fit --64bit blink

assemblerってやつを実行(よくわからん)

quartus_asm --64bit blink

programmerで転送

quartus_pgm --64bit -c 1 -m jtag -o 'P;blink.sof@1'

感想

本来ならば Synthesis で 出力される qsf ファイルを先に作っておく必要があるという時点で、邪道臭ぷんぷん。。。

メモ) AS (Active Serial) で書き込む場合

quartus_pgm --64bit -c 1 -m as -o 'pv;blink.pof'

コメントを残す

メールアドレスが公開されることはありません。