在我的VHDL代码中,我在sig_out_real <= X"00" & sig_in when sig_in(7)='0' else X"ff" & sig_in;
中有一个错误。VHDL顺序条件信号赋值语句错误
我不认为这是一个语法错误。但是Quartus在这一点上显示了一个错误。
我不明白为什么这是一个错误。
任何人都可以提供信息:
- Error--
错误(10500):近文本在S8BT16B.vhd(35)VHDL语法错误 “时”;期待“;”
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_signed.all;
use ieee.std_logic_arith.all;
use work.fft_package.all;
entity S8BT16B is
port(
clk_50 : in std_logic;
clk_baud : in std_logic;
main_reset : in std_logic;
enable : in std_logic;
sig_in : in signed (7 downto 0);
sig_out : out complex;
valid_output : out std_logic
);
end S8BT16B;
architecture Behavioral of S8BT16B is
type state is (idle,start);
signal state_reg, next_state_reg : state;
signal sig_out_real : signed(15 downto 0);
begin
state_change : process(clk_50, main_reset)
begin
if (main_reset = '1' or enable = '0') then
state_reg <= idle;
elsif (main_reset ='0' and enable = '1') then
state_reg <= next_state_reg;
end if;
end process;
S8BT16B_active : process(clk_baud, state_reg)
begin
if (state_reg = idle) then
sig_out_real <="0000000000000000";
sig_out <=(sig_out_real,"0000000000000000");
next_state_reg <= start;
valid_output <= '0';
elsif (state_reg = start and enable = '1') then
sig_out_real <= X"00" & sig_in when sig_in(7)='0' else X"ff" & sig_in;
sig_out <= (signed_converted_input, "0000000000000000");
next_state_reg <= idle;
valid_output <= '1';
end if;
end process;
end Behavioral;
在进程语句中使用VHDL'08功能,如'when ... else'时请注意。当您在项目中启用VHDL'08进行综合时,Quartus支持此功能。但是可能不支持其他VHDL'08功能,给出有线错误消息。在问这里时,也总是尝试创建一个最小的,完整的和可验证的例子。 –