gpt4 book ai didi

syntax-error - “when”附近: syntax error in VHDL

转载 作者:行者123 更新时间:2023-12-03 08:29:00 26 4
gpt4 key购买 nike

我正在尝试编写一些代码来模拟具有两个三态缓冲器和VHDL中的上拉电阻的电路。下面是我的代码:

library ieee;
use ieee.std_logic_1164.all;

entity PullUpResistor is
port (
A, S, B, T : IN std_logic; -- select one of these four inputs
TriOut : OUT std_logic -- output (no ";" after last port)
);
end entity PullUpResistor;

architecture behavioral of PullUpResistor is
begin
process(A, S, B, T) is
when (S = '1') and (T = '0') => TriOut <= A;
when (S = '0') and (T = '1') => TriOut <= B;
when (S = '0') and (T = '0') => TriOut <= 'H';
when (S = '1') and (T = '1') => TriOut <= 'X';
end process;
end architecture behavioral;

我在 near "when": syntax error行的第14行上收到编译器错误 when (S = '1') and (T = '0') => TriOut <= A;。我无法终生弄清楚语法错误是什么。

任何帮助将不胜感激。

谢谢。

最佳答案

两件事情。 is之后不需要process。更重要的是,when不能那样使用。您可以同时执行以下操作:

TriOut <=
A when S = '1' and T = '0' else
B when S = '0' and T = '1' else
...

或过程中:
process (A, S, B, T)
begin
if S = '1' and T = '0' then
TriOut <= A;
elsif ...

(或与VHDL-2008结合使用)。

您似乎正在使用 when,就好像它在case语句中一样。考虑到这一点,您还可以(在一个过程中)执行以下操作:
sel <= S & T;

case sel is
when "10" =>
TriOut <= A;
when "01" =>
TriOut <= B;
...

您不能做的就是混搭。

关于syntax-error - “when”附近: syntax error in VHDL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28972996/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com