Verilogコードを生成.特に変わったところはないので,どのAIエージェントを使ってもできると思います.

// AE-T8F81-DIP40: 1Hz LED chaser (Lチカ)
// Clock: 25 MHz on-board oscillator (GPIOL_16)
// led[0]=D1, led[1]=D2, led[2]=D3, led[3]=D4 (one-hot, active low: 0=ON)
module lchika_1hz #(
parameter integer CLK_HZ = 25_000_000,
parameter integer STEP_HZ = 1
) (
input wire clk,
output wire [3:0] led
);
localparam [24:0] TICK_MAX = (CLK_HZ / STEP_HZ) - 1;
reg [24:0] tick_cnt;
reg [3:0] shift_reg;
initial begin
tick_cnt = 25'd0;
shift_reg = 4'b0001; // D1 on first
end
always @(posedge clk) begin
if (tick_cnt >= TICK_MAX) begin
tick_cnt <= 25'd0;
shift_reg <= {shift_reg[2:0], shift_reg[3]}; // D1 -> D2 -> D3 -> D4
end else begin
tick_cnt <= tick_cnt + 25'd1;
end
end
assign led = ~shift_reg;
endmoduleEfinityの使い方も指示してもらいます.
ユーザ:
Efinityの操作を指示してください
AI:
AE-T8F81-DIP40 向け lchika_1hz を Efinity でビルド・書き込みする手順です。秋月チュートリアル(Efinity 2024.2.294 想定)に沿っています。
事前準備
インストール
- Efinix Support から Efinity 2024.2.294 を入手・インストール
- Visual C++ 2019 x64(
vc_redist.x64.exe) - Java JDK(チュートリアル例: jdk-18)
- 書き込み用: AE-FT232HL など JTAG 接続
- Windows で初回のみ: Zadig で FT232 のドライバ設定(AN050 参照)
環境変数(シミュレーションする場合)
ユーザー環境変数の Path に例:
C:\Efinity\gtkwave64\binC:\Efinity\iverilog\bin
プロジェクトフォルダ
- 英数字と
_のみ(スペース・全角文字は避ける) - 例:
C:\Efinity\2024.2\project\lchika_1hz
またはC:\Users\ユーザ名\ae-t8f81-lchikaをそのまま使用可
rtl / constraints / sim フォルダごとコピーして使ってください。
1. プロジェクト新規作成
- Efinity を起動
- File → New Project
- 次を設定:
| 項目 | 値 |
| Project Name | lchika_1hz |
| Project Location | 上記フォルダ |
| Family | Trion |
| Device | T8F81C2 |
| Package | F81 |
| Top Module / Entity | lchika_1hz |
| Source File | rtl/lchika_1hz/v |
- OK で作成
2. ソース・制約ファイルの登録
デザインファイル
Project タブで lchika_1hz(Design)を右クリック → Add → 追加:
rtl\lchika_1hz.v(既に Top なら確認のみ)
制約ファイル
Constraint を右クリック → Add → 両方追加:
constraints\lchika_1hz.sdc(タイミング)constraints\lchika_1hz.isf(ピン割当)
合成オプション(.isf 利用時・必須)
File → Edit Project → Synthesis タブ → Synthesis Options:
| オプション | 値 |
|---|---|
--peri-syn-instantiation | 1 |
--peri-syn-inference | 1 |
OK で閉じる。
(Interface Designer のみでピンを付ける場合は inference を 0 にしますが、本プロジェクトは .isf 方式 です。)
HDL 言語
Synthesis タブで Verilog: Verilog-2001(または SystemVerilog2009 でも可)
3. ピン割当の確認
.isf に次が書いてあります(手動設定不要):
| 信号 | GPIO |
|---|---|
clk | GPIOL_16(パッケージピン C2) |
led[0] (D1) | GPIOR_12 |
led[1] (D2) | GPIOR_11 |
led[2] (D3) | GPIOR_10 |
led[3] (D4) | GPIOR_08 |
GUI で確認したい場合
- Interface Designer を開く
- Check Design → エラー 0 件を確認
- Result タブ → Placement →
lchika_1hz.place.rpt- Unassigned Core Pins が無いこと
4. コンパイル(ビットストリーム生成)
GUI
- 画面上部の Compile(一連フロー)を実行
または順に: Synthesis → Place & Route → Generate Bitstream - Result / Dashboard でエラー・警告を確認
- 成功後、出力例:
outflow\lchika_1hz.bit(JTAG 書き込み)outflow\lchika_1hz.hex(SPI フラッシュ書き込み)
コマンド(任意)
cd C:\Efinity\2024.2\project\lchika_1hz
efx_run.bat lchika_1hz.xml –flow compile
5. ハードウェア接続
- AE-T8F81-DIP40 に電源(チュートリアル例: 3.3 V)
- AE-FT232HL 等で JTAG 接続(TCK/TMS/TDI/TDO/GND)
- USB 接続後、デバイスマネージャで認識を確認
6. 書き込み(Programmer)
- Efinity の Programmer タブ(または Tools → Programmer)
- 接続デバイスを選択
- ファイル:
outflow\lchika_1hz.bit - Program 実行
- 完了後、LED が約 1 秒ごと に D1→D2→D3→D4 と移る(0 = 点灯)
SPI フラッシュへ書く場合は .hex を選び、手順はチュートリアル「書き込み」章に従います。
7. RTL シミュレーション(任意)
- Project → Simulation 右クリック → Add →
sim\lchika_1hz_tb.v - Simulation 実行(RTL Simulation)
- 波形: gtkwave で
outflow\lchika_1hz.vcdを開く
※ テストベンチは短時間で終わるよう CLK_HZ=25 にしてあります。実機はデフォルト 25 MHz のままです。
8. うまくいかないとき
| 症状 | 対処 |
|---|---|
| Unassigned Core Pins | .isf が Constraint に入っているか、--peri-syn-inference=1 か確認 |
| タイミングエラー | lchika_1hz.sdc が追加されているか確認 |
| LED が全点灯/全消灯 | 配線・極性(Low 点灯)・led ピン割当を再確認 |
| FT232 が見えない | Zadig ドライバ設定をやり直す |
| 何も動かない | clk が GPIOL_16(25 MHz オシレータ)か確認 |
9. デバッガ(任意)
Debugger タブで JTAG 接続後、内部信号(例: shift_reg)を観測できます。チュートリアル「デバッガ」章を参照してください。
作業の流れ(まとめ)
「New Project」 → 「ソース・SDC・ISF追加」 → 「peri-synオプション設定」 → 「Compile」 → 「.bitをProgrammerで書込」 → 「Lチカ動作確認」
秋月の詳細図解は、製品ページの AE-T8F81-DIP40 チュートリアル PDF(バージョン 1.2.4 など)がそのまま使えます。本設計はチュートリアルの count16sec の代わりに lchika_1hz を使い、スイッチ(rst_n / reverse_n)は不要です。
特定の画面で止まった場合(エラーメッセージ全文など)を送ってもらえれば、その箇所だけ追記で案内できます。