在我的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功能,給出有線錯誤消息。在問這裏時,也總是嘗試創建一個最小的,完整的和可驗證的例子。 –