ICE40 の spi programmer と jtag debugger その2

昨日書いた回路で SS が双方向で共有信号でないので tristate buffer は経由せず AD4 = SS 直結としました. その回路を組んだところちゃんと動きませんでした.

理由は Radiant Programmer が出す波形が CRESET_B を L レベルのまま FT232H から SPI を操作していました. Lattice の Technical Note も守ってないし、起動前の謎の待ち時間、ちゃんと回路を組んだ時間の浪費などでうんざりしています.

CRESET_B = L のままなら ICE40 側は tristate を維持するようですので、動作としては納得しましたが、Lattice のソフト担当者への信用は減りました.

とりあえずは SLAVE = ~(CRESET_B == 0 && C_DONE == 0) = CRESET_B | C_DONE とすれば想定通り動くはずです.