パスワードを忘れた? アカウント作成
15264722 journal
日記

kitune-sanの日記: 8259をSystemVerilogで書いてみる #3

日記 by kitune-san

まだまだ続く

In-Serviceレジスタ(ISR)のブロックを作成した。

このブロックでは以下の処理を行っている。
- 1回目のACKパルスが入ったときにコントロールロジックは割り込み確定の信号を生成し、その信号を受けてISRに割り込みをセットする。
- EOI信号が入ったときにコントロールロジックは割り込みリセットの信号を生成し、その信号を受けてISRをリセットする。(どのISRをリセットするかの選択はコントロールロジック側で行う予定)
- ISRと優先順位の回転状態から、現在発生中の最高位割り込みを決定する。

メモ・その他
発生中の最高位割り込みは、優先度解決の他にNon-Specific-EOIの場合に使用される。
Auto-EOIの場合には、最高位ではなくその時点で発生した割り込みのISRをリセットするため、Non-Specific-EOI実行の場合とは異なるかもしれない。今後注意する。
(Auto-EOIでは1回目のACKでISRをセット→2or3回目のACKでISRをリセットとなるため、通常ISR=0であると考えると実質最優先割り込みを常にリセットしているようにも思える)

途中で気がついたけど、今回スプリアス割り込みの動作は作れないと思う。

以前の優先度解決のブロックで作成したビット回転などのfunctionを、今回作成したブロックで使用したくなった。
そのため今回パッケージを始めて作成し、そこにfunctionを移動した。
SystemVerilogの様々な文法については、使えそうな機会を見つけて少しづつ使っていきたい。

typodupeerror

私は悩みをリストアップし始めたが、そのあまりの長さにいやけがさし、何も考えないことにした。-- Robert C. Pike

読み込み中...