FTDIUSB-シリアルデバイスを介して画像を受信した後に画像をフィルタリングするシステムをVHDLで作成することを検討しています。その一環として、CPLDが存在する必要のある状態を特定したと思いますが、VHDLで複雑なステートマシンを作成したことがないため、メソッドが適切かどうか疑問に思っています。現在、私のステートマシンの基本的な概要は次のとおりです。
begin
process(clk, reset, USB_RXFN, USB_TXEN)
begin
case state is
when IDLE =>
when NEGOTIATING =>
when RECEIVING =>
when FILTERING =>
when TRANSMITTING =>
when OTHERS => -- this should never happen but go to IDLE
end process;
ここでの私の問題は、すべてのステートマシンのチュートリアルで、すべての立ち上がりエッジ(または同様の、ただしクロックごとに1回)で状態の変化を見つけることができ、このデバイスはIDLEに多く存在し、USB_RXFNがローになったときにのみNEGOTIATINGに移行する必要があることです。それが完了するまで交渉を続け、画像全体が転送されるまで受信を続けます。
私のアプローチに根本的な欠陥はありますか?CPLDは単にこの目的には適していませんか?または、複数のクロックの間状態を維持することは可能であり、チュートリアルは単純化のためにそのように書かれていますか?