我还没有看到任何地方有这样的例子,而且直到现在我还需要它。
我有 2 个控制信号,我需要为它们创建一个嵌套的 with-select-when 语句。我可以轻松地用 case 语句嵌套事物,但我最近意识到我需要在进程之外添加这段代码,因为它会影响时间。这是我目前拥有的代码:
case OpcodeIn is =>
when "000000" =>
case FunctIn is =>
when "00000" =>
...
when "00001" ==>
...
end case;
when "000001" =>
...
end case;
另外,我不能像这样连接:
controlSig <= OpcodeIn & FunctIn;
然后使用:
with controlSig select output <=
...
因为 FunctIn 仅根据 OpcodeIn 的某些值才有效。因此,只有在存在通配符时才有效:
"0010" when "000001***********";
最佳答案
尝试一下,看看是否有效!该语言没有理由禁止这种行为。你实际上是错误的,VHDL 不支持 Don't Cares 的 case 语句。从 VHDL-2008 开始,支持此功能。请参阅下面的示例:
process (Request)
begin
case? Request is
when "1---" => Grant <= "1000" ;
when "01--" => Grant <= "0100" ;
when "001-" => Grant <= "0010" ;
when "0001" => Grant <= "0001" ;
when others => Grant <= "0000" ;
end case? ;
end process ;
需要注意的一件事是,在此过程中添加的解码逻辑越多,满足时序要求就越困难。
关于vhdl - 我可以在 VHDL 中创建嵌套的 with-select-when 语句吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22785909/