• 本当は、田舎に庵を建てて隠遁生活したいけど、先立つものも無いので自宅で..。

ADCで信号をキャプチャする(3)

具体的にコーディングします。

ステートマシンを使って制御します。 状態は、PCからコマンドが送られてくるのを待機(NOR)、ADCからメモリへ書き込み(WCNT)、メモリから読みだして、UARTで送信(RCNT)の3つです。 ソースコードには、余計な状態が記載されていますが、実際に使用しているのは3つだけです。

NORは、UART_RXでデータを受信してコマンドレジスタ(cmdreg)に入力するという動作を繰り返します。コマンドレジスタの内容が”00000001″になると、次のステートWCNTに移行します。

WCNTでは、ADCからの10bitの符号付データを16bit幅でメモリに書き込みます。 この時、普通はビット拡張が必要ですが、ビット拡張がなくても正常に動作しているようです。 メモリの書き込みアドレスが255になると、次のステートRCNTに移行します。

RCNTでは、UART_TXからのtxLOADをクロックとして、メモリから8ビットのデータを読み出しUART_TXを使ってデータをPCに送ります。

実際のソースコードです。

module ADC2020(
input MRST,
input MCLK,
output STB,
input signed [9:0] ADC_DATA,
output TXD,
input RXD
);

endmodule

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA