可能是这样的,when...else和if...else是对应的,前者用在并行语句(不在process语句内),后者用在顺序语句内(如process语句内)。还有一对就是 with...select和case语句。所以,你的程序改成if...else...结构的试试。
VHDL中when...else语句比较特殊,不能在进程中用