2020/12/20追記: CYC1000を使って音源定位→動画はこちら
- 音の鳴っている場所を色で表示
- 複数の音が鳴っている環境でも、それぞれの音源を色で表示できる(下図は左右2箇所)
本題: はじめに
- FPGA開発ボードCYC1000について
- 25kLEのIntel Cyclone10搭載
- 今回はLチカを例に、基本的な使い方をメモしていきます
1. 開発環境
- Windows 10 64bit
- Quartus Prime Lite 19.1
- USB Programmer Driver Ver. 2.2
2. ピン配置
- ピン配置の一覧表を作りました
- 詳細はこちらを参照
Pin Header | Pin No. | Node Name | Bank | Location |
---|---|---|---|---|
J1 | 1 | GPIO0 AREF1 |
4 | P11 |
J1 | 2 | GPIO1 AIN0 |
4 | R12 |
J1 | 3 | GPIO2 AIN1 |
4 | T13 |
J1 | 4 | GPIO3 AIN2 |
4 | R13 |
J1 | 5 | GPIO4 AIN3 |
4 | T14 |
J1 | 6 | GPIO5 AIN4 |
4 | P14 |
J1 | 7 | GPIO6 AIN5 |
4 | R14 |
J1 | 8 | GPIO7 AIN6 |
4 | T15 |
J1 | 9 | GPIO8 D0 |
5 | N16 |
J1 | 10 | GPIO9 D1 |
5 | L15 |
J1 | 11 | GPIO10 D2 |
5 | L16 |
J1 | 12 | GPIO11 D3 |
5 | K15 |
J1 | 13 | GPIO12 D4 |
5 | K16 |
J1 | 14 | GPIO13 D5 |
5 | J14 |
J2 | 1 | GPIO14 D6 |
2 | N2 |
J2 | 2 | GPIO15 D7 |
2 | N1 |
J2 | 3 | GPIO16 D8 |
2 | P2 |
J2 | 4 | GPIO17 D9 |
2 | J1 |
J2 | 5 | GPIO18 D10 |
2 | J2 |
J2 | 6 | GPIO19 D11 |
2 | K2 |
J2 | 7 | GPIO20 D12 |
2 | L2 |
J2 | 8 | GPIO21 D13 |
2 | P1 |
J2 | 9 | GPIO22 D14 |
2 | R1 |
J2 | 10 | Reset | - | - |
J2 | 11 | GND | - | - |
J2 | 12 | 3.3V | - | - |
J2 | 13 | VIN (5V supply) |
- | - |
J2 | 14 | 5V | - | - |
J3 | 1 | GPIO23 AIN |
4 | T12 |
J3 | 2 | GND | - | - |
J3 | 3 | GPIO24 AIN7 |
4 | R11 |
J4 | 1 | GND | - | - |
J4 | 2 | n.c. | - | - |
J4 | 3 | TCK | 1 | H3 |
J4 | 4 | TDO | 1 | J4 |
J4 | 5 | TDI | 1 | H4 |
J4 | 6 | TMS | 1 | J5 |
J6 | 1 | PIO_01 | 6 | F13 |
J6 | 2 | PIO_02 | 6 | F15 |
J6 | 3 | PIO_03 | 6 | F16 |
J6 | 4 | PIO_04 | 6 | D16 |
J6 | 5 | GND | - | - |
J6 | 6 | 3.3V | - | - |
J6 | 7 | PIO_05 | 6 | D15 |
J6 | 8 | PIO_06 | 6 | C15 |
J6 | 9 | PIO_07 | 6 | B16 |
J6 | 10 | PIO_08 | 6 | C16 |
J6 | 11 | GND | - | - |
J6 | 12 | 3.3V | - | - |
- | - | LED1 | 3 | M6 |
- | - | LED2 | 3 | T4 |
- | - | LED3 | 3 | T3 |
- | - | LED4 | 3 | R3 |
- | - | LED5 | 3 | T2 |
- | - | LED6 | 3 | R4 |
- | - | LED7 | 3 | N5 |
- | - | LED8 | 3 | N3 |
- | - | USER_BTN (pull-up) |
3 | N6 |
- | - | CLK (12MHz) |
2 | M2 |
- 2020/03/22:J6ピン配置の誤記修正
- 2020/08/02:分かりやすい図を見つけました
- 2020/08/14:Pin No.順に並び替え、Bankを追記
- 2020/09/15:分かりやすい図を見つけました
3. サンプルコード
- LED1を1秒毎に点滅させる
main.vhd
library IEEE;
use IEEE.std_logic_1164.all;
use IEEE.std_logic_arith.all;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
entity main is
Port (
RST_N : IN std_logic;
CLK : IN std_logic;
LED1 : OUT std_logic );
end main ;
architecture RTL of main is
signal counter : std_logic_vector(25 downto 0);
signal counter_clr, counter_dec : std_logic;
begin
process( RST_N, CLK )
begin
if( RST_N = '0' ) then
counter <= (others => '0');
elsif( CLK'event and CLK = '1' ) then
if(counter_clr = '1') then
counter <= (others => '0');
else
counter <= counter + 1;
end if;
end if;
end process;
counter_clr <= '1' when counter = 11999999 else '0';
counter_dec <= '1' when counter < 6000000 else '0';
LED1 <= not counter_dec;
end RTL;
4. プロジェクト作成→コンパイル
-
File
→New Project Wizard
→ プロジェクト名とフォルダを入力
-
Family, Device & Board Settings
→Family
をCyclone 10 LP
,Name
を10CL025YU256C8G
に設定 -
Next
→Finish
を押す -
Assignment
→Settings
→General
→Top-level entity
にentity名を入力 -
Assignment
→Pin Planner
でピン配置を設定 -
Processing
→Start Compilation
でコンパイル
5. メモリ書込み
-
Tool
→Programmer
を開く
-
Hardware Setup
→Currently selected hardware
をArrow-USB-Blaster
に設定してClose
を押す -
Change Files
を押してoutput_files
内のsofファイルを選択 -
Program/Configure
にチェックを入れる -
Start
を押すと書込み
6. 不揮発性メモリに書込み(参考)
- メイン画面で
File
→Convert Programming Files...
→Output programming file
を開く
-
Programming file type
をJTAG Indirect Configuration File (.jic)
に設定 -
Input files to convert
→Flash Loader
→Add Device
を開く -
Device family
をCyclone 10 LP
に設定 -
Device name
を10CL025Y
に設定 -
Input files to convert
→SOF Data
→Add File...
を開き、sofファイルを選択 -
最後に
Generate
を押すと、jicファイルが生成される -
Programmer画面で
Change File
を押して、jicファイルを選択 -
EPCS16
を選択し、Program
とVerify
にチェックを入れる -
Start
を押すと書込み -
こちらのページを参考にさせて頂きました
参考資料
-
AREFはLPFに接続されているので、GPIOとして使う場合は注意 ↩