Posts Issued on September 11, 2026

posted by sakurai on September 11, 2026 #1116

1. 書き込みの基本形

図1116.1
図1116.1

マスタは 50 のサイクルで awvalid と wvalid を同時に立て、awaddr に 00、wdata に 11111111、wstrb に F を置きます。スレーブは awready と wready を常に立てているので、両方とも 50 の立ち上がりで成立し、マスタは 60 で valid を下ろします。スレーブは受け取った2つを揃えて 60 のサイクルで処理し、regs_0 が 70 で 11111111 になります。同じ 70 で bvalid が立ち、bresp は 0 で OKAY です。bready は最初から立てているので B はその 70 の立ち上がりで成立し、80 で bvalid が下がります。

見るべき点は、AW と W と B が三つの独立した握手だということです。マスタ側で AW と W は par で並べた別々の文が処理していて、たまたま同じサイクルに成立しています。

2. 読み出しの基本形

図1116.2
図1116.2

120 で arvalid を立て、araddr に 00 を置きます。arready は立っているので 120 で成立し、130 で下ろします。スレーブは 130 のサイクルで regs_0 を読み、140 で rvalid と rdata と rresp を同時に出します。rdata は rvalid と同じサイクルにだけ意味を持ちます。rready は立っているので 140 で成立し、マスタは 150 で rdReg に 11111111 を記録します。

3. W を先に、AW を後に出す

図1116.3
図1116.3

190 で W だけを出し、190 で成立します。スレーブはデータだけ受け取っても何もしません。regs はどれも変わらず、bvalid も立ちません。3サイクル空けて 240 で AW を出し、240 で成立すると、揃った次の 250 のサイクルで処理され、260 で bvalid が立ち regs_1 が 22222222 になります。

AW と W の順序に決まりがないことと、スレーブが両方揃うまで待つことが見えます。


左矢前のブログ 次のブログ右矢