모두 안녕하세요. 나는 VHDL에 대해 아주 새로운 것이라고 말함으로써 시작할 것입니다. VHDL (호기심 많은 MC14510B)에서 Motorola가 만든 updown 카운터를 모델링 해달라고 요청하는 프로젝트가 있습니다.VHDL 업/다운 카운터
데이터 시트에서 입력 PE (프리셋 활성화)가 하이로 토글되면 입력 핀 p4 ... p1의 4 개의 사전 설정 값이 곧바로 출력 q4 ... q1로 전달된다는 것을 알 수 있습니다.
내 코드가 컴파일을 거부하여 오류 : COMP96_0143 : MC14510B.vhd : (56, 13) : Object "p"를 쓸 수 없습니다.. 나는 Aldec을 컴파일러로 사용하고 있으며 무엇을 잘못하고 있는지 전혀 모른다. 나는 p에 입력을 쓰고 싶지 않습니다. p에 저장된 값으로 qtemp에 쓰려고합니다.
누구나 내가 엉망인 것을 볼 수 있습니까? 프로세스 문에서 주 if-else의 else 문은 문제를 일으키는 것입니다 (p < = qtemp 줄). 어떤 도움이라도 대단히 감사하겠습니다.
library IEEE;
use IEEE.STD_LOGIC_1164.all;
use IEEE.std_logic_unsigned.all;
entity MC14510B is
port (
signal pe : in std_logic;
signal ci_not : inout std_logic;
signal reset : in std_logic;
signal updown : in std_logic;
signal clk : in std_logic;
signal p : in std_logic_vector (3 downto 0);
signal q : out std_logic_vector(3 downto 0);
signal co_not : inout std_logic
);
end;
architecture myarch of MC14510B is
begin
process(pe, ci_not, reset, updown, clk)
variable qtemp : std_logic_vector(3 downto 0);
variable cotemp : std_logic;
begin
if reset = '1' then --reset condition
qtemp := "0000";
elsif clk'event and updown = '1' and ci_not = '1' then --count up
if qtemp < 15 then
qtemp := qtemp + 1;
cotemp := '1';
else
qtemp := "0000";
cotemp := '0';
end if;
elsif clk'event and updown = '0' and ci_not = '1' then --count down
if qtemp > 0 then
qtemp := qtemp - 1;
cotemp := '1';
else
qtemp := "0000";
cotemp := '0';
end if;
elsif ci_not = '0' then
qtemp := "1010";
cotemp := '1';
else
if pe = '1' then --enable preset
p <= qtemp; --output = input presets
cotemp := '1';
else
qtemp := qtemp; --output = output
cotemp := '1';
end if;
end if;
q <= qtemp;
co_not <= cotemp;
end process;
end myarch;
감도 목록? 그게 무슨 뜻인지 모르겠다./ –
기본적인 VHDL 개념을 배울 수있는 좋은 기회. 여기에서 시도하십시오 : [Google VHDL 민감도 목록] (http://www.google.dk/#q=vhdl%20sensitivity%20list) –
괄호 안의 비트 :'process (pe, ci_not, reset, updown, clk)'is 감도리스트 프로세스가 끝나면 묵시적인 'wait on pe, ci_not, reset, updown, clk;'문장이 있습니다. 트랜잭션이 해당 신호 중 하나에서 발생할 때까지 프로세스 실행을 일시 중단합니다. 시계와 함께 비동기 할당에 영향을주는 것은 민감도 목록에 있어야합니다. 이 경우 PE가 '1'인 동안 P가 변경되면 어떻게됩니까? 감도 목록에 P가 없으면 변경 사항이 누락됩니다. – user1155120