新館スマートフォン用の表示で見るスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。SPIスレーブの実装FPGA/CPLDVerilogFPGA4FUNのSPIスレーブVerilogコードがあまり実用的でなかったので書き直したメモです。fpga4funのSPIコードでは、CS(SSEL)信号やSCK、MOSIの状態を3bitのシフトレジスタにコピーし、立ち上がり・立ち下がりを観測している様です。SPIの転送速度がFPGAクロックに支配されてしまいます。そこで、マスターから送出されるSCKに同期するようにしたものです。要はただの8bitシフトレジスタです。SCLKをFPGAクロックに依存しないようにしたSPIでマスターから受け取った8bitデータをエコーバックするVerilogコード。使用ロジックエレメントは20LEほど。CPLD)軽い説明:マスタからの8bitデータをMOSI端子からSCKクロックに同期して受け取ります。byte_data_receivedをそのままコピーします。これによって次の8bitサイクルでマスタにデータがエコーバックされます。全二重通信なのでマスタはスレーブデータを受け取るために0xffなどのダミーデータを送る必要はありません。スレーブからのデータを受け取りつつ、次のデータを送信できます。このデータは次々回の1バイト送受信のときにスレーブから返ってくるはずです。byte_data_sent[7];endmodule*1:これはSPIの極性(CPHA、CPOL)の変更に柔軟に対応するためみたい。Blogマイコン風雲録マルチチャネルDAC製作記nabeの雑記帳なんでも作っちゃう、かも。Blog|ブログを報告する。