异步QSPI的方向控制挪到下降沿,时序逻辑控制
This commit is contained in:
@@ -18,6 +18,8 @@ abstract class SyncSpiInterfaceBase extends Module with RequireAsyncReset{
|
|||||||
val bitSel = withClockAndReset(posedge_sck, qspi.csn.asAsyncReset){RegInit(0.U(3.W)) }
|
val bitSel = withClockAndReset(posedge_sck, qspi.csn.asAsyncReset){RegInit(0.U(3.W)) }
|
||||||
val byteSel = withClockAndReset(posedge_sck, qspi.csn.asAsyncReset){RegInit(0.U(12.W))}
|
val byteSel = withClockAndReset(posedge_sck, qspi.csn.asAsyncReset){RegInit(0.U(12.W))}
|
||||||
val exRego = withClockAndReset(negedge_sck, qspi.csn.asAsyncReset){RegInit(0.U(8.W))}
|
val exRego = withClockAndReset(negedge_sck, qspi.csn.asAsyncReset){RegInit(0.U(8.W))}
|
||||||
|
val isDirIn = withClockAndReset(negedge_sck, qspi.csn.asAsyncReset){RegInit(true.B)}
|
||||||
|
qspi.isDirIn := isDirIn
|
||||||
val exRegi = withClockAndReset(posedge_sck, qspi.csn.asAsyncReset){RegInit(0.U(8.W))}
|
val exRegi = withClockAndReset(posedge_sck, qspi.csn.asAsyncReset){RegInit(0.U(8.W))}
|
||||||
val addrw_async = for( _ <- 0 until 2 ) yield { withClockAndReset(posedge_sck, qspi.csn.asAsyncReset){ RegInit(0.U(16.W)) } }
|
val addrw_async = for( _ <- 0 until 2 ) yield { withClockAndReset(posedge_sck, qspi.csn.asAsyncReset){ RegInit(0.U(16.W)) } }
|
||||||
val addrr_async = for( _ <- 0 until 2 ) yield { withClockAndReset(posedge_sck, qspi.csn.asAsyncReset){ RegInit(0.U(16.W)) } }
|
val addrr_async = for( _ <- 0 until 2 ) yield { withClockAndReset(posedge_sck, qspi.csn.asAsyncReset){ RegInit(0.U(16.W)) } }
|
||||||
@@ -69,7 +71,10 @@ trait SyncSpiAsync{ this: SyncSpiInterfaceBase =>
|
|||||||
|
|
||||||
|
|
||||||
qspi.miso := exRego(7, 4)
|
qspi.miso := exRego(7, 4)
|
||||||
qspi.isDirIn := isSpiWrite | (byteSel <= 3.U)
|
|
||||||
|
when( byteSel === 4.U & bitSel === 0.U ){
|
||||||
|
isDirIn := isSpiWrite
|
||||||
|
}
|
||||||
|
|
||||||
when( (if( OPER114 ) { byteSel <= 3.U } else {false.B}) ){ //单线操作
|
when( (if( OPER114 ) { byteSel <= 3.U } else {false.B}) ){ //单线操作
|
||||||
bitSel := bitSel + 1.U
|
bitSel := bitSel + 1.U
|
||||||
|
|||||||
Reference in New Issue
Block a user