FPGArduino をさわってみる(1)
By takagiwa on Wednesday, September 21 2016, 23:04 - FPGA - Permalink
幸い Xilinx Spartan 3A/3AN Starter Kit を自由に使える環境があるので、まずはバイナリで動かしてみた。
シリアルポートが、まだ USB-UART が無くて、D-SUB 9pin の PS/2 側を使わないといけなかったのはハマったけれど、とりあえず動いた。
けど f32c\rtl\proj\xilinx\s3a_700_bram\s3a_700_bram.xise をそのまま ISE 14.7 で通そうとしてもエラーになる。
ERROR:HDLParsers:3375 - "f32c/rtl/generic/bram.vhd" Line 81. Choices for an array aggregate (result of operator) must be locally static unless there is only one choice. (LRM 7.3.2.2)
だそうで。
Makefile 使わないとだめなんだろうか。
でもこれ長くて読むのつらい。
元々、これまた自由に使える ML605 に移植しようと思ったけれど、どこから手をつけていいのか分からない。
なので素直に f32c\rtl\generic\glue_bram.vhd から手をつけていきますか。
基本的には、http://www.nxlab.fer.hr/fpgarduino/ のページの My board isn't listed above, is there any hope?
の手順のはずなんだけど。
と、generic で Synthesize 走らせたら通った。失敗したときはパッケージ系のファイルが入っていなかっただけかもしれない。
C_clk_freq に MHz で数字を設定したら通った。
読み込んだファイルは
f32c/rtl/generic/glue_bram.vhd f32c/rtl/generic/bram.vhd f32c/rtl/cpu/pipeline.vhd f32c/rtl/cpu/alu.vhd f32c/rtl/cpu/debug.vhd f32c/rtl/cpu/defs_f32c.vhd f32c/rtl/cpu/defs_mi32.vhd f32c/rtl/cpu/defs_rv32.vhd f32c/rtl/cpu/idecode_mi32.vhd f32c/rtl/cpu/idecode_rv32.vhd f32c/rtl/cpu/loadalign.vhd f32c/rtl/cpu/mul_dsp.vhd f32c/rtl/cpu/mul_iter.vhd f32c/rtl/cpu/shift.vhd f32c/rtl/generic/bptrace.vhd f32c/rtl/generic/reg1w2r.vhd f32c/rtl/generic/bootloader/boot_rom_mi32el.vhd f32c/rtl/generic/bootloader/boot_sio_mi32eb.vhd f32c/rtl/generic/bootloader/boot_sio_mi32el.vhd f32c/rtl/generic/bootloader/boot_sio_rv32el.vhd f32c/rtl/generic/bootloader/defs_bootblock.vhd f32c/rtl/soc/gpio.vhd f32c/rtl/soc/sio.vhd f32c/rtl/soc/spi.vhd f32c/rtl/soc/timer.vhd
そしてこれをラッピングして ML605 につながるようにして bit ファイル作ったら、とりあえず Arduino IDE と通信はできた。
動作クロックは 150MHz を指定。というか C_clk_freq は integer といってるし、166.6 はどうやって指定するんだろうな。
ただ、LED のアサインが違っているようで、blink は動いてくれなかった。その他も、まだこれからかな。