再びこちら。
FPGA ボードで学ぶ組込みシステム開発入門 ?Altera編?
- 作者: 小林優
- 出版社/メーカー: 技術評論社
- 発売日: 2011/09/22
- メディア: 大型本
- 購入: 3人 クリック: 31回
- この商品を含むブログ (19件) を見る
Verilogを勉強しているところなので、このトップモジュールもVerilogで書いてみることにした。
トップモジュールを作成する
プロジェクトで新しいVerilogファイルを作成する、名前は"nios2pio.v"。
module nios2pio( input wire in_clk, input wire [9:0] in_switch, input wire [2:0] in_button, output wire [9:0] out_led, output wire [7:0] seven_segment_0, output wire [7:0] seven_segment_1, output wire [7:0] seven_segment_2, output wire [7:0] seven_segment_3); endmodule
上記で使用しているポートは、筆者がひな形にしていて、ピンアサインメントを事前に作成してあるものだ。
ピンアサインメントの作成方法と、インポートの方法はこちら。
Qsysで作成したqsysファイルとverilogファイルをプロジェクトに追加する
"Project" -> "Add/Remove Files in Project..."を選択すると、下記のダイアログが開く。
"File name:"横の"..."ボタンを押してファイルを指定し、"Add"ボタンで追加する。
qsysファイルはプロジェクトのルートに、verilogファイルは(qsysのファイル名/synthesis)の下にあるはずだ。
追加が終わったら、OKでダイアログを抜ける。
Qsysで作成したモジュールをトップレベルのモジュールに追加する
"nios2pio.v"を以下のように修正する。
module nios2pio( input wire in_clk, input wire [9:0] in_switch, input wire [2:0] in_button, output wire [9:0] out_led, output wire [7:0] seven_segment_0, output wire [7:0] seven_segment_1, output wire [7:0] seven_segment_2, output wire [7:0] seven_segment_3); // modules nios2pio_qsys nios2pio_qsys( .clk_clk(in_clk), .reset_reset_n(in_button[0]), .pio_0_external_connection_export(seven_segment_0), .pio_1_external_connection_export(in_switch[3:0]) ); // assign seven_segment_1 = 8'b1111_1111; assign seven_segment_2 = 8'b1111_1111; assign seven_segment_3 = 8'b1111_1111; assign out_led = 9'b0_0000_0000; endmodule
ここで出てくる"nios2pio_qsys"がQsysで作成したモジュールになる。
設定により名前は異なる可能性があるので、上記でプロジェクトに追加したverilogファイルを開き、モジュールの宣言を確認する。
ちなみに筆者の環境ではそのVerilog("nios2pio_qsys.v")は以下のようになっている。
module nios2pio_qsys ( input wire clk_clk, // clk.clk input wire reset_reset_n, // reset.reset_n output wire [7:0] pio_0_external_connection_export, // pio_0_external_connection.export input wire [3:0] pio_1_external_connection_export // pio_1_external_connection.export );
以上で終了だ。
あとは通常通りコンパイルすれば、Cyclone IIIに焼くことができるsofファイルが作成される。