【发布时间】:2011-05-11 09:05:43
【问题描述】:
我正在研究用 VHDL 创建一个系统,该系统在通过 FTDI USB 转串行设备接收图像后过滤图像。作为其中的一部分,我相信我已经确定了我的 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;
我的问题是,我能够在每个上升沿(或类似的,但每个时钟一次)上找到每个状态机教程的更改状态,并且该设备应该经常处于空闲状态,并且只有在 USB_RXFN 时才转换到 NEGOTIATING变低,保持在 NEGOTIATING 直到完成,保持在 RECEIVING 直到整个图像被传输等等......
我的方法是否存在根本性缺陷? CPLD 是否根本不适合此目的?或者是否可以在一个状态下停留超过一个时钟,而教程只是为了简单起见而写成这样?
【问题讨论】: