Programming/Verilog2018. 4. 16. 13:53

User Defined Primitive 의 약자인데

(UDP는.. TCP/IP 친구 아님 ㅋ 얜 User Datagram Protocol)


UDP는 primitive가 들어가듯

AND OR 같은 근원적인 게이트를 사용자가 지정하는 것이다.


그래서 문법이 미묘하게 다른데

module 대신 primitive로 선언하고


table - endtable에서 

input에 대한 output을 정의한다.


  1. primitive compare(out, in1, in2);
  2. output out;
  3. input in1,in2;
  4.  
  5. table
  6. // in1 in2 : out
  7. 0 0 : 1;
  8. 0 1 : 0;
  9. 1 0 : 0;
  10. 1 1 : 1;
  11. endtable
  12. endprimitive

[링크 : http://referencedesigner.com/tutorials/verilog/verilog_11.php]

[링크 : http://hizino.tistory.com/entry/Verilog-UDP-userdefined-primitve]


단, 10개 입력에 1개의 출력에 한해서만 사용이 가능하며

양방향 포트에 대해서는 선언이 불가능하다(그러니까 AND,OR 게이트 같은 단방향, 출력 1개인 녀석 정의)

UDP ports rules


  • An UDP can contain only one output and up to 10 inputs.
  • Output port should be the first port followed by one or more input ports.
  • All UDP ports are scalar, i.e. Vector ports are not allowed.
  • UDPs can not have bidirectional ports.
  • The output terminal of a sequential UDP requires an additional declaration as type reg.
  • It is illegal to declare a reg for the output terminal of a combinational UDP

[링크 : http://www.asic-world.com/verilog/udp1.html]

[링크 : http://verilog.renerta.com/source/vrg00055.htm]



근데 그러고 보니.. UDP와 module의 차이가 멀까?

LUT를 통해 구현하는 현대 FPGA의 특성을 100% 사용하기 위한 구문이라서

구현에 있어서 단일 LUT를 소모하냐 아니면 LE를 소모하냐의 차이가 있는 걸려나?

'Programming > Verilog' 카테고리의 다른 글

Verilog initial  (1) 2018.04.12
Verilog =, ==, ===  (0) 2018.04.10
Verilog HDL, paramter 와 module, 그리고 delay  (0) 2018.03.03
encrypted Verilog  (0) 2018.02.03
verilog module instantiate  (0) 2018.01.26
Posted by 구차니