2017-03-25 11 views
1

내가 알고 싶은 질문에서 언급했듯이 하나 이상의 출력을 가진 UDP를 정의하는 것이 가능합니까? 나는 번들 출력을 다음과 같이 만들려고 시도하지만 오류가있다. 내가 8 비트 접두사 가산기에 대한 코드를 작성하기 위해 노력하고있어 나는 G와 P. 이 값을 계산하기 위해 UDP로 작업을 정의 할 것은 코드 :어떻게 하나 이상의 출력을 가진 verilog에서 combinational user define primitive (UDP)를 정의 할 수 있습니까?

primitive preaddprimitive(pgout,p2,p1,g2,g1); 
input p2,p1,g2,g1; 
output pgout; 
table 
// p2 p1 g2 g1 : {pout,gout} 
    0 ? 0 ? : 00; 
    ? 0 1 ? : 01; 
    0 ? 1 ? : 01; 
    1 0 0 0 : 00; 
    1 0 0 1 : 01; 
    1 1 0 0 : 10; 
    1 1 0 1 : 11; 
    1 1 1 ? : 11; 
endtable 
endprimitive 

이있다 오류 메시지 : "0"근처 : 구문 오류, 예기치 않은 '0', 예상 ';'

나는 심지어 출력을 정의하려고 시도했지만 동일한 오류가 발생했습니다. modelsim 10.c.에서 코드를 테스트했습니다.

답변

2

아니요, 둘 이상의 출력이있는 UDP를 정의 할 수 없습니다. 개요는 IEEE 표준 1,800에서 2,012 사이, 섹션 29.2에 따르면

Each UDP has exactly one output, which can be in one of three states: 0, 1, or x. 

및 섹션 29.3.1 UDP 헤더

All ports of a UDP shall be scalar; vector ports are not permitted. 

당신은 대신 primitivemodule를 사용할 수 있습니다.