https://mp.weixin.qq.com/s/82iLT-fmDg9Comp2p9bxKg
RegisterCrossingの簡単な実現。
1. BusyRegisterCrossing
単純な制御状態マシンは、処理中の要求があるか否か、すなわち、か否かを制御するための要求を開始することができます。
1)I
制御インターフェースは、以下に示すとおり
A。master_request_valid / master_request_ready
これは、上流の開始要求(有効)は、ダウンストリーム受信機は(準備)準備ができているか否かを示します。
B。master_response_valid / master_response_ready
か否かの応答情報(有効)を示す、上流(レディ)応答メッセージを受信する準備ができています。
C。crossing_request_valid / crossing_request_ready
これは、構造体へのクロックを介して送信要求(有効)を表し、そして下流のクロスオーバー構造を通過したクロック信号を受信する(準備)準備ができています。
2)忙しいです
これは、この時点で新しい要求を受けることができない、要求が処理されているかどうかを示します。
3)バイパス
ループバックは、バイパスが真であれば、その要求は、クロック構造を横切って転送する、と等価であるが、直接上流に応答メッセージを返します。
2. RegisterCrossingAssertion
次のような条件によってこの主張
。A io.master_bypass:すなわち上流応答してクロック構造、直接応答メッセージを横切ってバイパス項の、状態は、下流心配する必要はありません。
。!Bアップ:川下ないまで、それはクロスクロック構造を使用することはありません。
。!Cのio.slave_reset:下流リセットされず、通常構造をまたがるその後、クロックを使用することができます。
3. RegisterWriteIO
インタフェースを登録書きます:
。リクエスト:リクエストに有効なレディ/制御インタフェースを書きます。
。B GEN:データが書き込まれます。
。C応答:書き込み要求応答メッセージ有効/準備完了制御インターフェース。
。Dブール()応答メッセージ。
4. RegisterWriteCrossingIO
增加了时钟和复位信号的跨时钟写寄存器接口:
a. master是指跨时钟结构上游,slave是指跨时钟结构下游;
b. master_clock/master_reset:主时钟和复位信号;
c. master_bypass:是否绕过跨时钟结构;
d. master_port:写接口,包括valid/ready控制及数据;
e. slave_clock/slave_reset:从时钟和复位信号;
f. slave_register:跨越时钟过来的写的数据;
g. slave_valid:slave_register中的内容是否合法;
5. RegisterWriteCrossing
跨时钟域写寄存器模块:
分为三个主要部分:
a. io:输入输出接口;
b. control:控制模块;
c. crossing:跨时钟模块;
1) 连接时钟和复位信号
2) 连接control模块
3) crossing上游连接
4) crossing下游连接
5) assert
6. RegisterReadIO
读寄存器接口:
a. request:请求控制接口;
b. response:响应消息控制及数据接口;
7. RegisterReadCrossingIO
加入时钟和复位信号的跨时钟读寄存器接口:
8. RegisterReadCrossing
跨时钟域读寄存器模块:
9. AsyncRWSlaveRegField
用于生成异步读写的逻辑和寄存器域:
1) 参数
2) 异步复位寄存器
3) 跨时钟写模块
4) 跨时钟数据写入寄存器
5) 跨时钟读模块
6) 从寄存器跨时钟读取
7) 返回参数
a. async_slave_reg.io.q:寄存器中存储的数据;
b. RegField(width, rd_crossing.io.master_port, wr_crossing.io.master_port, desc):使用跨时钟读写模块的寄存器域;