« Cosmo-Z Vivado版で波形キャプチャができた! | トップページ | Cosmo-ZのVivado化が完成 »

2016.09.13

VivadoでのZYNQの割り込み

Cosmo-ZのVivado版デザインで、波形のキャプチャができるようになったわけなのですが、どうも1回キャプチャすると止まってしまいます。

なんと、割り込みが発生していない疑い。

そもそもZYNQの割り込みはかなりの謎仕様で、IRQ0が割り込みの何番につながっているか、よくわかりません。

ISEのときは、例の画面で割り込み0と1を使うようにしておくと、

Irq_1

ZYNQのPL→PS割り込みは、割り込み番号91~84と、68~61にあるようなのですが、IRQ(0)の割り込み番号は90番に割り当てられます。(91番ではない)

おそらく、IRQ0→#90、IRQ1→#91になっているのでしょう。

VivadoでのZYNQ場合はさらに複雑で、何番に割り当てられるかは全くわかりません。

Zynq_irq

少なくとも、IRQ_F2P(0)は#91でも#90でもないようです。しかし、デバイスドライバはIRQ #90をハンドルするように作ってしまっているので、何としても90番の割り込みを発生させたいところです。

そこで、IRQ_F2P(0)からIRQ_F2P(15)の16bitを全部一緒にドライブすることを考えました。そうすれば、#61~#68と#84~#91の全部が発生するから、#90の割り込みも発生するだろうというわけです。

ところが、ZYNQのIRQ_F2Pは[0:0]で定義されてしまっていて、

Zynq_irq2

このバス幅を変える設定箇所はGUI上にはありません。

では、どうやって変えるかというと、割り込み信号を出力している側のモジュールで16ビットの幅にしてやればよいようです。簡単にやるには、xlcontatを使います。

Zynq_irq4

接続したらValidate Designを行うと、ZYNQの入力ポートが自動的に16bitに変わります。割り込みの信号をドライブするバスが16bitだと、割り込み信号も16bitになるようです。パラメータの伝搬というそうです。

これで無事に90番の割り込みが(も)発生するようになりました。

|

« Cosmo-Z Vivado版で波形キャプチャができた! | トップページ | Cosmo-ZのVivado化が完成 »

コメント

コメントを書く



(ウェブ上には掲載しません)




« Cosmo-Z Vivado版で波形キャプチャができた! | トップページ | Cosmo-ZのVivado化が完成 »