2014-05-01 2 views
1

병렬로 작동하는 몇 가지 프로세스를 구현해야합니다. 나는 VHDL에 매우 익숙하지 않고 엔티티없이 아키텍처를 만드는 방법을 알아낼 수 없습니까? 건축을위한 엔티티가 정말로 필요한가요?프로세스가있는 VHDL 아키텍처

또는 그렇게하는 또 다른 방법이 architecture_test

architecture architecture_test of ????? is 
shared variable test: std_ulogic_vector(7 downto 0); 

process1 : process is 
begin 
    -- do something 
end process process1; 

process2 : process is 
begin 
      --do something 
end process process2; 

process3 : process is 
begin 
      --do something 
end process process3; 

엔드 아키텍처?

+0

"구현"은 "실제 하드웨어에서 구현"을 의미하는 경우 엔 디자인을 전세계에 연결해야합니다. 엔티티는 디자인의 입력과 출력을 정의합니다. –

+0

공유 변수를 사용하지 마십시오. 신호를 사용하여 프로세스 간 통신! –

답변

2

엔티티는 아키텍처, 보조 단위로 구현 된 설계 사양에 대한 인터페이스를 나타내는 기본 단위입니다. 엔티티와 선택된 아키텍처가 함께 블록을 구현합니다.이 블록은 구성 요소, 직접 엔티티 인스턴스화 또는 구성에 의해 인스턴스화 될 수 있습니다.

엔티티없이 시뮬레이션 할 수 있습니까? VHDL 시뮬레이터가 아닙니다.

는 테스트 벤치는 일반적으로 어떤 인터페이스를 제공하지 엔티티입니다

entity foo is 
end entity; 

architecture fum of foo is 

begin 
end architecture; 

(또는 때로는 (아키텍처 중 하나를 어떤 동시 문이 더 필요가 없습니다, 이것은 실제로 분석해야합니다.) : 그것은 빈 엔티티를 가질 수 있어요 일반 인터페이스) 및 동시 처리문 (및 처리문은 동시 처리문)을 포함하는 아키텍처가 있습니다.

엔티티가 필요하므로 인터페이스를 제공 할 필요가 없습니다. 또한 엔티티 선언은 아키텍처 본문의 선언적 영역에서 선언에 필요한 선언을 제공 할 수있는 선언적 영역을 제공합니다.

하드웨어에 실제 가치가 없으므로 테스트 벤치라고합니다. 이는 시뮬레이터에서 인터페이스가 있고 (합성 될 수있는) 하나 이상의 설계 명세를 테스트하거나 VHDL 설계 명세 (아키텍처 본문의 다중 프로세스)를 실행하는 데 유용합니다.

프로세스 컬렉션을 실행할 수있는 시뮬레이션 시간 길이는 두 가지로 제한됩니다. 우선 시뮬레이션 시간을 앞당길 수없는 델타 시뮬레이션 사이클의 수에 대한 표준은 없습니다.

무제한의 델타 사이클을 실행할 수있는 시뮬레이터가 있습니다. 초기 VHDL 시뮬레이터의 델타 사이클 한계는 수백에서 측정되었습니다. 델타주기 한계 인 5,000을 사용하는 것이 일반적입니다 (Modelsim의 기본값).

다른 제한은 해상도 제한을 설정하고 시간의 최소 크기를 제한함으로써 일부 시뮬레이터에서 선택적으로 확장 할 수있는 시간 변수의 지속 시간입니다. 실제 크기 조정은 디자인 설명에 나타납니다. 보다 조악한 입도로

시뮬레이션에서 시간이 진행되면 결국 Time'HIGH에 맞춰 실행되고 중지되고 구현을위한 해상도 제한 구현은 선택 사항입니다.

실제로 VHDL에 해당하는 데몬을 작성하려고하면 이식성이 보장됩니다. VHDL은 일반적인 목적의 병렬 프로그래밍 언어가 아니며, 위키 기사는 이와는 반대로 말합니다.

메모리 누수가있는 VHDL 디자인 사양을 작성할 수도 있습니다. 가비지 콜렉션에 대한 요구 사항은 없습니다.

1

저는 VHDL에 매우 익숙하며 엔티티없이 아키텍처를 만드는 방법을 알 수 없습니까?건축을위한 엔티티가 정말로 필요한가요?

예.

entityarchitecture에 인터페이스하는 방법을 설명합니다. architectureentity 내부에서 일어나는 일을 설명합니다.

는 C 코드 은유를 부여하려면 ... 주어진 코드 :

int some_func(int x, int y) 
{ 
    return x*x+y*y; 
} 

을 당신은 요구하고있다 :

"내가이없이

{ 
    return x*x+y*y; 
} 

을 가질 수 :

,210

"데이비드 노트로

, 당신 architecture을 유지하기 위해 어떤 인터페이스없이 entity을 가지고 있지만, 당신은 여전히 ​​하나를 가지고해야합니다. (같은 방법으로 당신은 여전히 ​​C * 적어도 void main(void)이 있어야한다.)


* 를 (예 내가 mainint을 반환하도록되어 알고 있지만, 예를 들어 다음 쓰러져서!)