此代碼適用於PRBS(僞隨機二進制序列)接收器。它應該採用三個值並模擬PRBS發生器,並使用生成的值檢查獲得的值。 但代碼顯示錯誤的關鍵字等開始,其已經存在已存在關鍵字的vhdl錯誤代碼10500
library ieee;
use ieee.std_logic_1164.all;
use ieee. std_logic_arith.all;
use ieee. std_logic_unsigned.all;
entity receiver is
port(
inp : in std_logic;
clock : in std_logic;
count : out std_logic_vector(4 downto 0);
check : out std_logic);
end receiver;
architecture rec of receiver is
signal P : std_logic_vector(2 downto 0);
signal O : std_logic_vector(2 downto 0);
process (clock)
variable cnt : integer range 0 to 3;
begin
if clock'event and clock='1' then
P <= inp & P(2 downto 1);
cnt<=cnt+1;
end if;
if (cnt = 3) then
O<=P;
elseif (cnt >3)
O <= inp & O(2 downto 1);
end if;
if((O(2) xor O(0)) = P(0))
check <= '0';
else
check <= '1';
count <= count +1;
end if;
end process;
end rec;
錯誤(10500):在receiver.vhd(18)附近的文本「過程」 VHDL語法錯誤;預期「開始」或聲明語句
錯誤(10500):receive.vhd(21)在文本「if」附近的VHDL語法錯誤;錯誤(10500):receive.vhd(21)在文本附近的VHDL語法錯誤「以及」接近「 「;」期望「(」或「'」或「。」
錯誤(10500):receive.vhd(24)附近的文本「if」處的VHDL語法錯誤;期望「;」或標識符「如果」 是保留關鍵字),或 「結構」
錯誤(10500):在receiver.vhd(25 VHDL語法錯誤)鄰近文本 「然後」;需要 「< =」
誤差(10500 ):receiver.vhd處的VHDL語法錯誤(28)接近文字「O」;期望「(」或「'」或「。」
錯誤(10500):receive.vhd(29)附近的文本「if」處的VHDL語法錯誤;期望「;」或標識符(「if 「是一個保留的關鍵字),或 」結構「
錯誤(10500):在receiver.vhd(31 VHDL語法錯誤)鄰近文本 」檢查「;需要」 < =」
錯誤(10500): receiver.vhd(32)附近的文本「else」;期待「end」,或「(」或標識符(「else」是保留關鍵字)或併發語句時的VHDL語法錯誤
錯誤(10500 ):receiver.vhd處的VHDL語法錯誤( 35)附近的文字「if」;期待「;」,或標識符(「如果」是一保留的關鍵字),或「結構」
嘗試反向工作,直到它編譯完成時刪除代碼,然後添加代碼以瞭解爲什麼要將其分開。如果您不明白每個語法錯誤,那麼您可以將它發佈爲[最小,完整和可驗證示例](http://stackoverflow.com/help/mcve)。另外,考慮使用ModelSim仿真器進行初始編譯,因爲週轉時間比Quartus快。 Altera ModelSim入門版是免費的。 –
或者看第一個錯誤。看一個'architecture'的例子,並將它與你的代碼進行比較。查看錯誤消息中是否存在涉及任何關鍵字的差異。提示:有。 –
信號聲明之後缺少保留字('begin'),它將體系結構聲明項與併發語句(如過程聲明)分開。如果else拼寫錯誤'elsif',並且缺少'then',則下一個if語句缺少'then'。 'cnt'不是一個信號,一個變量是一個不同的分隔符(':=')。 (並且約束整數不會進行模運算)。 'count'是一個模式輸出端口,無法讀取您不應該基於組合使能(在'if'中的'else',我們稱之爲一個醒目的振盪器)來增加'count'。 – user1155120