2012-04-18 4 views
3

매우 기본적인 질문 :VHDL : 신호 포트은 "화살표"의 어느 쪽 =>

방법 어떻게 알 포트/신호/값은 화살표의 어느 측에 배치 하는가? 매우 평등 해 보이는 port_a => x에서 x <= port_a으로 전환하는 것으로 나타났습니다. 오류가 발생했습니다. 또한 x => port_a은 작동하지 않습니다.

나는 화살표가 어떤 방향으로 향해야하는지조차 알지 못합니다.

답변을드립니다.

답변

5

<=은 할당입니다. 구체적으로 신호 할당은 다른 곳의 값으로 신호를 보내는 것입니다. 육체적 인 유추를 위해, 오른쪽에있는 것은 왼쪽에 값을 몰아 넣는다.

=>은 핀에서 신호로 매핑되는 포트입니다. 이것은 과제가 아닙니다. 물리적 인 유추는 핀을 와이어에 납땜하는 것일 수 있습니다.

인스턴스화에 대해서만 "납땜"을 할 수 있으므로 => 매핑은 port map 내부에서만 발생합니다. 그리고 거기에서 "pins"은 항상이됩니다 (언어 규칙이 그거라고하기 때문에) 에 x <= port_a을 사용할 수 없습니다.

+0

미스터 톰슨 감사합니다! – chwi

2

신호 할당은 오른쪽에서 왼쪽으로 <=을 사용합니다. 오른쪽은 엔터티의 입력 신호이거나 프로세스에서 선언 된 신호 여야합니다. 왼쪽은 엔티티의 출력 신호 (또는 입력/버퍼), 프로세스에서 선언 된 신호 또는 프로세스에서 선언 된 변수가 될 수 있습니다.

다른 답변에서 언급 된 포트 매핑 외에, => 화살표는 벡터를 구성하는 것과 완전히 다른 것으로 사용됩니다. 예를 들어, v가 4 비트 벡터 인 경우 v <= (others => '0')은 v에 "0000"을 할당합니다. 괄호 안에있는 "=>"는 벡터 내의 다른 위치에 다른 값을 할당하는 지름길입니다.

+0

빠른 답변을 보내 주셔서 감사합니다. – chwi

0

if => 포트 목록에 대한 것이면 어떻게 가능합니까? clk_40Mhz_i는 핀입니다.

COMPONENT clk_wiz_v3_5 is 

PORT

(- 포트

CLK_IN1

의 시계 : - STD_LOGIC에

CLK_OUT1 시계 밖으로 포트

: 아웃 STD_LOGIC;

- - 상태 및 제어 신호

RESET : in std_logic;

잠금 : out std_logic

);

끝 구성 요소;

xclk_wiz_v3_5 : clk_wiz_v3_5

PORT MAP (

CLK_IN1   => clk_40Mhz_i, 

-- Clock out ports 

CLK_OUT1   => clk_40Mhz, 

-- Status and control signals 

RESET   => pic_fpga_reset, 

LOCKED   => clk_locked 
);

pic_fpga_reset < = not (processor_fpga_resetn_i);

재설정 < = not (clk_locked);