允許進程聲明項在IEEE標準1076至2008年11.3過程聲明第2款規定:
process_declarative_item ::=
subprogram_declaration
| subprogram_body
| type_declaration
| subtype_declaration
| constant_declaration
| variable_declaration
| file_declaration
| alias_declaration
| attribute_declaration
| attribute_specification
| use_clause
| group_type_declaration
| group_declaration
你可以注意到沒有列出信號的聲明。
該信號聲明可以在體系結構聲明部分(在體系結構體中的緊跟在保留字體系結構之後的最開始之前)進行。
做出這樣的轉變:
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY work4 IS
PORT ( CS: IN STD_LOGIC;
RD: IN STD_LOGIC;
WR: IN STD_LOGIC;
DATA : INOUT STD_LOGIC_VECTOR(3 DOWNTO 0));
END work4;
ARCHITECTURE behav OF work4 IS
SIGNAL T: STD_LOGIC_VECTOR(3 DOWNTO 0);
BEGIN
PROCESS(CS, RD,WR)
--SIGNAL T: STD_LOGIC_VECTOR(3 DOWNTO 0);
BEGIN
IF CS'EVENT AND CS = '1' THEN
IF WR='1' AND RD='0' THEN DATA<=T;
ELSE IF WR='0' AND RD='1' THEN T<=DATA;
END IF;
END IF;
END IF;
END PROCESS;
END behav;
而且你的代碼分析。
(並且它是否符合你的意圖不是這個問題的一部分)。
也可以代替信號使用的變量:
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY work4 IS
PORT ( CS: IN STD_LOGIC;
RD: IN STD_LOGIC;
WR: IN STD_LOGIC;
DATA : INOUT STD_LOGIC_VECTOR(3 DOWNTO 0));
END work4;
ARCHITECTURE behav OF work4 IS
-- SIGNAL T: STD_LOGIC_VECTOR(3 DOWNTO 0);
BEGIN
PROCESS(CS, RD,WR)
--SIGNAL T: STD_LOGIC_VECTOR(3 DOWNTO 0);
variable T: std_logic_vector (3 downto 0);
BEGIN
IF CS'EVENT AND CS = '1' THEN
IF WR='1' AND RD='0' THEN DATA <= T;
ELSE IF WR='0' AND RD='1' THEN T := DATA;
END IF;
END IF;
END IF;
END PROCESS;
END behav;
使用的變量有一些侷限性。您不能在流程之外使用它,並且您無法在波形顯示中看到它。
它的工作原理!謝謝! – icecity96