안녕하세요..

현재 저희가 사용하는 JTAG는 프린터 포트를 이용하고 있습니다.
따라서, 일단 프린터 포트의 pin 사양을 아셔야 합니다.

http://www.falinux.com/bbs/zboard.php?id=lec_device&page=1&sn1=&divpage=1&sn=off&ss=on&sc=on&select_arrange=headnum&desc=asc&no=5

에서 PC 프린터 포트 관련 내용을 보시면 됩니다.


>void JTAG_TCLK( LOGIC state )
>{
>if( state == HIGH ) JTAG_DOValue |=   JTAG_EZ_TCK;
>else                    JTAG_DOValue &= (~JTAG_EZ_TCK);
>        
>JTAG_prnout();
>}
>
>tck,tdo,tdi.tms모두 이런 식으로 프로그램 되어있던데요. 여기서 JTAG_DOValue 와 JTAG_EZ_TCK처럼 왜 이런 연산을 하는지 잘 모르겠네요 그리고 밑에 &연산하는것두요...
>값만을 본다면 JTAG_DOValue는 0x10이고 JTAG_EZ_TCK는 0X02니깐 0X12가 되는것 같은데 이값이 어떻게 쓰이는 지 모르겠습니다. 그리고 이런 값을 써야 되는 이유나 REFERENCE문서가 있으면 가르쳐 주시면 고맙겠습나..^^

===>> 이것은 xilinx 같은 케이블을 사용할 경우 호환을 주기 위해서 넣어 놓은 코드입니다.
            만약 저희 케이블만을 사용하다면 이 JTAG_DOValue 과 연산을 하지 않아도 됩니다..

>
>
>그리고
>unsigned char JTAG_prnin( void )
>{
>        return inb( STANDARD_LPT1 + 1 );
>}
>여기서 STANDARD_LPT1+1에서 +1은 왜 해주는 건가요?

==>> 프린터 포트의 일반적으로
          출력은 0x378 번지,  입력은 0x379번지 입니다. 따라서 입력을 위해서 +1을 해 준것입니다.
          제어는 0x37A 번지입니다.


그럼 수고하세요