2013-04-18 5 views
0

저는 브레이크 아웃 게임의 FPGA 구현 프로젝트를 진행하고 있습니다. 이 게임에서는 공과 패들을 사용하여 벽돌을 깨뜨려야합니다. 몇몇 벽돌은 공과의 여러 접촉을 끊을 수 있습니다. 이를 위해 정수 배열을 사용하여 특정 벽돌을 깨는 데 필요한 적중 횟수를 나타냅니다. 예를 들어, (2,0,1,2)는 부서지는 벽돌을 2 번 히트해야하고,이어서 깨진 벽돌이 뒤 따르는 벽돌을 의미한다.VHDL Verilog 정수 배열 포트

또한 VHDL로 코드를 작성했지만 결과를 VGA 화면에 출력하려면 Verilog를 사용하고 있습니다. 다음

package mytypes_pkg is 
    type int_array is array (0 to 39) of integer; 
end mytypes_pkg; 

다음 내 볼 모션 제어 파일에, 내가 가져온 work.mytypes_pkg.all하고있다 : 다음과 같이

는 VHDL에서 나는 패키지의 정수 배열의 유형을 선언 한

brickout:out int_array; 

게임에있는 모든 벽돌의 현재 상태를 포함합니다. 이 배열은 Verilog 파일로 전달되어야합니다.이 파일은 모든 VGA 디스플레이 생성이 이루어져야합니다. 그곳에서 나는

input [39:0] bricki; 

을 시도했지만 나에게

"포트에 대한 다른 유형은 'mainc'에 대한 실체와 구성 요소에 'brickout'"오류를 제공

나는이 오류를 해결하고 할 수있는 방법

내가 뭘하고 싶어? 거기에 어떤 방식으로 Verilog에게 bricki도 int_array 유형이라고 말하고 있습니까? 그리고 Verilog에서도 work.mytypes_pkg.all을 가져와야합니까?

+1

을 나는의 Verilog 전문가는 아니지만이 VHDL에서 입력 /의 Verilog 모듈의 출력해야'std_logic' /'std_logic_vector' 생각합니다. 따라서 정수 배열을'std_logic_vector' 배열로 나타내야합니다. Verilog 입력으로'std_logic_vector' 배열 타입을 얻을 수 있는지 확실하지 않습니다 ... – simon

+0

@simon 나는 그것을 시도하는 것에 대해서도 열려 있습니다.하지만 같은 문제도 있습니다. VHDL에서 Verilog에'std_logic_vector' 배열을 어떻게 전달합니까? – akhiljain

+0

도움이 되나요? http://www.rhinocerus.net/forum/lang-verilog/431138-instantiating-vhdl-component-integer-ports-verilog- module.html? –

답변

1

SystemVerilog에서 typedef를 사용하여 자신의 유형을 정의 할 수 있습니다.

typedef int [N-1:0] mytype; 

이렇게하면 원하는대로 정확하게 빌드 할 수 있습니다. 가져올 후 패키지에 유형을 정의하고 :

import pkg_keccak::mytype; 
... 
mytype int_table;