完璧ではありませんが、まあ使えます。どうやって、速度を変えるか?簡単です。ソースコードを編集して、コンパイルし直すだけです。
parameter DOT_PERIOD = 5000000;
サイドトーン発信器も含まれています。
assign OUT_SOUND = ( OUT_KEY && (sound > SOUND_PERIOD/2) )? 1'b1 : 1'b0;
Ham Radio Blog
PICボード(MAX10-JB)は、USB-Blasterダウンロードケーブルのように動作するはずですが、どこかで何かがおかしいようです。
% dmesg [ 99.874756] usb 3-6: new full-speed USB device number 5 using xhci_hcd [ 100.005217] usb 3-6: New USB device found, idVendor=09fb, idProduct=6001 [ 100.005224] usb 3-6: New USB device strings: Mfr=1, Product=2, SerialNumber=3 [ 100.005229] usb 3-6: Product: USB-Blaster [ 100.005232] usb 3-6: Manufacturer: Altera % lsusb Bus 003 Device 005: ID 09fb:6001 Altera Blaster % sudo ./jtagd --foreground --debug JTAG daemon started Using config file /etc/jtagd/jtagd.conf Remote JTAG permitted when password set USB-Blaster added "USB-Blaster [3-6]" USB-Blaster port (/dev/bus/usb/003/005) opened USB-Blaster port (/dev/bus/usb/003/005) opened % ls -l /dev/bus/usb/003/005 crw-rw-rw- 1 root root 189, 260 May 18 16:30 /dev/bus/usb/003/005 % cat /etc/udev/rules.d/51-usbblaster.rules # Altera USB-Blaster for Quartus FPGA Software SUBSYSTEMS=="usb", ATTR{idVendor}=="09fb", ATTR{idProduct}=="6001", MODE="0666" SUBSYSTEMS=="usb", ATTR{idVendor}=="09fb", ATTR{idProduct}=="6002", MODE="0666" SUBSYSTEMS=="usb", ATTR{idVendor}=="09fb", ATTR{idProduct}=="6003", MODE="0666"
これは、FPGA CW Keyer (4)で、短点メモリと長点メモリとを追加したときに気にはなっていたことでした。
直流電源(+5V)を、USBインターフェースから受け取るのは、標準あるいは非標準のプロトコールが含まれていてやや複雑です。 D+とD-の信号線が、情報を伝送するために用いられている場合があります。
https://www.maximintegrated.com/en/app-notes/index.mvp/id/5801
http://www.ti.com/lit/ds/symlink/tps2540a.pdf
このことは、PICボード(MAX10-JB)において問題をもたらします。何故ならば、PICマイクロコントローラの幾つかのI/Oピンは、USBインターフェースのD+とD-信号線と、フラッシュプログラムメモリへの書き込みの両方に用いられているからです。
干渉を避けるために、私は、フラッシュメモリをプログラムしている間だけは、USBケーブルを抜いて外部電源を用いました。
FPGA評価ボード(MAX10-FB)の緑に点滅しているLEDは、フラッシュメモリへの書き込みが成功して、ベリフィケーションがOKであったことを示しています。
これは、AlteraによるHDLデザインの例です。
// 4-State Moore state machine // A Moore machine's outputs are dependent only on the current state. // The output is written only when the state changes. (State // transitions are synchronous.) module moore_mac ( input clk, data_in, reset, output reg [1:0] data_out ); // Declare state register reg [1:0]state; // Declare states parameter S0 = 0, S1 = 1, S2 = 2, S3 = 3; // Output depends only on the state always @ (state) begin case (state) S0: data_out = 2'b01; S1: data_out = 2'b10; S2: data_out = 2'b11; S3: data_out = 2'b00; default: data_out = 2'b00; endcase end // Determine the next state always @ (posedge clk or posedge reset) begin if (reset) state <= S0; else case (state) S0: state <= S1; S1: if (data_in) state <= S2; else state <= S1; S2: if (data_in) state <= S3; else state <= S1; S3: if (data_in) state <= S2; else state <= S3; endcase end endmodule
あなたはこのような例をコピー・ペーストすることもできるし、もし、Quartus Primeを使っているのであれば、テンプレートを挿入することもできます。
PICボード(MAX10-JB)が、FPGA評価ボード(MAX10-FB)の上にプラグインされています。明るい白いLEDが点滅しているので、マウント済みのFPGAがあらかじめプログラムされた構成で動作していることが確認できます。
このPICボードは、AlteraのUSB-Blasterダウンロードケーブルのように動作します。
https://www.altera.com/en_US/pdfs/literature/hb/qts/qts-qps-handbook.pdf
殆ど全ての分野において、推奨される慣習というものがあります。
例えば、The ARRL Operating Manual には、”CQに応答するときは、両方のコールサイン、あなたのとCQをしている局の、を明確に与えなさい。”と書かれています。
なので、私は今、FPGAに関する推奨されるデザイン慣習とコーディングスタイルについて学んでいます。勿論、これらは用いるデバイスと開発環境とによって大いに異なりますが。
色んな種類の評価キットが入手可能です。このAlteraのボードは、HDMI出力も可能で非常に良さそうです。
https://www.altera.com/products/boards_and_kits/dev-kits/altera/kit-max-10m50-evaluation.html
これが私が使おうとしているボードです。AlteraのMAX 10 FPGA (10M08SAE144C8G)は、マウント済みですが、他の部品、256kbit SDRAMや28MHz 水晶発振器等はハンダ付けをしなければいけません。
このボードのより詳細な説明は、ここにあります。
(いいえ、英語で書かれたページは無いようです。)