==========================
    PGPG2 桼
==========================

============
  
============

PGPG2 (Pipeline Generator for Programmable GRAPE, generation 2) 
ϡѥץ饤Ŭοͱ黻 C ˻ǵ
ҤεҤ GRAPE-7 Υѥץ饤ϩ뤿Υ桼
ƥƥǤʹߤǤϾ嵭ι켫ȤΤȤ PGPG2 ȸƤӤޤ

PGPG2 εҤǤϩ饤֥ȡ뤿Υ
ޥ̾δطʲ˼ޤ


           pg2pgdl                  pgdl2vhdl                                        QuartusII
  .pg2 --------------> .pgdl -----+-------+--------> GRAPE-7 ѥѥץ饤ϩ -->+-----------> ϩǡ
                                  |       |          (VHDL )                   |             .sof ե
                                  |       |                                        |               |
                                  |       |              gwrap_init                |               |QuartusII
                                  |       +--------------------------------------->+               |
                                  |                  ۥȥ󥿥եϩ                      +--> .rpd (model800)
                                  |                                                                     .ttf (model600/300)
                                  |                                                                     .pof (model100)
                                  | pgdl2lib
                                  +----------------> GRAPE-7 ѥѥץ饤ϩ
                                  |                  桼饤֥ (C )
                                  |
                                  | pgdl2emu
                                  +----------------> GRAPE-7 ѥѥץ饤ϩ
                                  |                  ӥåȥ٥륨ߥ졼 (C )
                                  |
                                  | pgdl2sim                                           QuartusII
                                  +----------------> GRAPE-7 ѥѥץ饤           -------> ϩߥ졼
                                                     ߥ졼ϩȥƥȥ٥




ΥեȳĥҡӤƤʲ˼ޤ

  PGPG2  .pg2  : C ˻ (KFCR Ҥ)

  PGDL1  .pdgl : ѥץ饤󵭽Ҹ (KFCR Ҥ)
                 PGDL (Hamada et al. 2005) ηȤޤ
                 ʸߴϤޤ

  VHDL   .vhd  : ϡɥҸ졣


==================
  󥹥ȡ
==================

ưĶȥ󥹥ȡˡˤĤƤ pg2pkg/doc/install-j.txt 򻲾ȤƤ



==================
  塼ȥꥢ
==================

PGPG2 ˡ򳵴Ѥ뤿Υ塼ȥꥢ뤬 
pg2pkg/doc/tutorial-j.txt ˤޤPGPG2 Ҥȥޥɷξܺ
ɤܤ̤Ƥȡνˤʤ뤫Τޤ


====================
  PGPG2 ʸˡ
====================

PGPG2 εҤϰʲ 5 Ĥʬ鹽Ƥޤ

  (1) I/O ѿ
  (2) ѿ
  (3) 黻
  (4) parameter 
  (5) 

ʲޤ

 --------------------
  (1) I/O ѿ
 --------------------

  ѥץ饤ؤѿ (ʪŪˤϿ«) ޤ

  :    ѿ ѿ̾ Ϸ;

    ) float32.24   xi[3]  ipin;
        int64        acc[3], pot, jerk[3]  fout;


    ѿ
    -------

        ѿοͥեޥåȡʲΥեޥåȤѤǤޤ

        - intN      N-bit        ( 2 ɽ)

        - floatN.M  N-bit ư ( 1 bit,  M bit, ؿ N-M-1 bit)

        - logN.M    N-bit п       ( 1 bit,  M bit, ؿ N-M-1 bit)


        ư˴ؤ­:

        ؿϥեåȤޤեåͤϻؿǾ bit 
         1Ĥ bit  0 ȤͤǤˤ hidden one 
         bit Ǽޤ 0 ϡؿӲ٤Ƥ 
        bit  0 Ȥ bit ɽޤ

        Ȥ float17.9 Υӥåɽʲ˼ޤ

            -----------------------------------------
            ɽ٤      ӥå
            -----------------------------------------
              0.0               0 0000000 000000000
              1.0               0 1000000 000000000
              2.0               0 1000001 000000000
              3.0               0 1000001 100000000
              3.5               0 1000001 110000000
              4.0               0 1000010 000000000
              0.5               0 0111111 000000000
              0.25              0 0111110 000000000
              0.75              0 0111111 100000000
             -1.0               1 1000000 000000000
            -----------------------------------------

        ݤ unbiased force-1 ǤʤڤΤƤ夹٤
         0 ξˤ LSB 򸽾ΤޤޤͤȤʳξˤ 
        LSB Ū 1 ˤޤ

        п˴ؤ­:

        пưβп (logarithmic) Ѥ
        ɽǤӥåȤΰ̣ؿΥեåͤư
        ƱǤ


    ѿ̾
    ------

      ѿμ̾ͿޤǤդαѿǤĹʸѤǤ
      ѿ̾ƬϿǤʤѻѤʤƤϤʤ
      󡣥٥ȥѿˤѿ̾ [ ] ǿ
      ꤷޤ


    Ϸ
    ---------

      ѿϷ (ѥץ饤ϩؤϤˡ) ꤷޤ
      ʲηѤǤޤ

        - jpin ѥץ饤ưˡ1 åˤĤ 1 Ĥͤ
               ѥץ饤ѿǤѥץ饤ư
               ˡ餫ϩΥ˽񤭹ޤޤ

        - ipin ѥץ饤ưѲ뤳Ȥ̵ѿǤƥ
               ץ饤󤴤Ȥ̸ĤͤǤޤѥץ饤
               ưˤ餫ͤꤵޤ

        - cin ѥץ饤ưѲ뤳Ȥ̵ѿǤipin 
              ѿȤϰۤʤꡢηѿͤϡ٤ƤΥѥץ饤
              Ƕͭޤѥץ饤ưˡ餫
              ͤꤵޤ

        - fout ѥץ饤α黻̤¸ѿǤƥѥץ
               󤴤Ȥ̸Ĥ (黻) ݻޤѥץ饤
               ưλˡۥȷ׻زޤ

    ­:

      - Ʊѿѿϥ , Ƕڤä 1 Ԥ¤٤Ǥ
        ޤ

      - pgdl2lib () ˤä桼饤֥ (C ǵ
        ) ϡä˻Τʤ¤ꤹ٤Ƥѿ double Ȥ
        ޤưѹˤϡϷҤŪ˥
        Ȥޤ

        )
              int10   x  ipin;
              int10   y  (int)ipin;

            εҤ桼饤֥ϡ㤨аʲΤ褦
             x  double y  int ѿȤưޤ

              void g5_set_jp(int ni, double *x, int *y);
              static inline UINT64 convert_x(int devid, double src);
              static inline UINT64 convert_y(int devid, int src);


      - ѿνϰ̣ޤϷѿ (cin, jpin, ipin) 
        νˤޤȤ (pack) 졢ۥȷ׻ޤ
        Ϸ (fout) ѿϥۥȷ׻˼줿ȡν
        Ÿ (unpack) ޤ pack/unpack  64-bit ñ
        ̤ǹԤ뤿ᡢѿ 64-bit ޤʤ褦ʽ
        ۤۥȷ׻Ǥ pack/unpack ư®ˤʤ
        ޤ

        )
                                               --------------------------------------
                                                        MSB                      LSB
                                               address  63          32 31          0
                                               --------------------------------------
              float32.24   xi[3]   ipin;            0   |      xi[1]|  |      xi[0]|
              int10        fshift  ipin;            1   |;|fshift|  |      xi[2]|
                                               --------------------------------------

            νۤν pack ư®
            νǤ xi[1]  64-bit ޤǤޤ

                                               --------------------------------------
                                                        MSB                      LSB
                                               address  63          32 31          0
                                               --------------------------------------
              int10        fshift  ipin;            0   |       xi[1]| xi[0]|fshift|
              float32.24   xi[3]   ipin;                |;|         xi[2]| xi[1]|
                                               --------------------------------------


 --------------------
  (2) ѿ
 --------------------

  ѥץ饤ǤΤ߻Ѥ졢ϥ뤳ȤΤʤѿ 
  (ѿ) ޤ¿ξ˾άǽǤ(3)
  פѿ򵭽ҤȡPGPG2 ɬפ˱Ƥѿ
  ưŪޤѿŪϡ
  å뤳Ȥˤޤ

  :    ѿ ѿ̾;

    ) float32.24   dx[3], r2, r3, mj;


 ----------------
  (3) 黻
 ----------------

  ѥץ饤ǹԤ黻ޤ㳰Ūʵ§Τơ
  黻Ҥʸˡ C ΤΥ֥åȤȤʤäƤޤʤ
  ȱ黻ҤȤ߹碌 1 Ĥα黻򵭽Ҥ1 ĤεҤ˥
   ; ֤ޤҤϿ³طꤹΤʤ
  ǡƵҴ֤طϰ̣ޤ (Ĥޤ׻ץΤ
  ˾夫鲼༡櫓ǤϤޤ) C Ȥ
  ۤʤޤ


    黻
    ------

      ʲα黻ҤѤǤޤ٤Ƥα黻Ҥϥ٥ȥѿФ
      ŬѤǤޤ٥ȥѿ 1 ʬˤΤ߱黻ŬѤˤϡ
      ʬ [ ] ѤŪ˻ꤷޤ黻Ҥ̤ͥ C 
      Τ˽सޤ


      2 黻
                       +   û
                       -   
                       *   軻 (ξդ٥ȥѿξˤ)
                       /   
                       =   
                   <<  >>  /ե (դư뤤пξˤϡ
                           ؿ˱դͤû)
    <   ==  >  >=  <=  !=  羮
                       +=  ѻ

      ) r2    = dx * dx + eps2;
          r1inv = r3inv * r2;


      3 黻
                       ? :  

      ) r2cut = r2 < 1.0 ? r2 : 0   // r2  1.0 Ķ r2cut  0Ķʤ r2


      ѻ += ˴ؤ:

      ѻ += Ϥˤꡢκդ˽Ϸ (fout) ѿΤߤ
      뤳ȤǤޤޤϷ (fout) ѿɬѻ += κդ
      ʤƤϤʤޤ󡣤Ĥޤ PGPG2 εҤˤϡϷ ѿ
       += ȤϡФʤƸޤ

      ޤߤΤȤ int ξ ӥå 32  64 Τ߻Ѳ
      ǽǤ (СǤǤեӥåбͽ)float  64 
      ӥåȰǤդǻѲǽǤlog ϻѤǤޤ

      )
           int64        xi[3]   ipin;
           int64        a[3]    fout;
           int63        b[3]    fout;
           float32.23   c[3]    fout;
           int64        d[3];

           a += xi;             // OK
           c += (float34.23)xi  // OK
           a  = xi;             // NG (fout ѿ += κդˤҤǤʤ)
           d += xi;             // NG (+= κդˤ fout ѿҤǤʤ)
           b += xi;             // NG (int  fout ѿ 32 ޤ 64 ӥåȤΤ߲)



    Υ㥹
    ------------

      ߤ˰ۤʤ뷿ѿɤα黻ԤˤϡŪ˷Υ
      ȤԤɬפޤۤΥ㥹ȤϤʤˤԤ
      ޤ󡣷ΰפʤ黻ҤʸˡȿȤʤޤ

      )
           int64   xi[3]   ipin;
           int64   xj[3]   jpin;
           float34.23 dx;

           dx = (float34.23)(xj - xi); // OK (Ūʷ㥹)
           dx = (xj - xi);             // NG (ΰפʤѿؤ)


    üؿ
    --------

      餫ѰդƤüؿѤơʲα黻Ԥޤ

      |٤|

        pg_pow(float src, int power_index_numerator, int power_index_denominator[, int table_resolution]);

        src  ٤׻ޤ٤ 
        (power_index_numerator/power_index_denominator) ǻꤷޤ
        ׻ϴؿơ֥ͤ 2 ֤뤳ȤˤäƹԤޤơ
        ֥β٤ table_resolution ӥåȤǤ

        ­:
          - ٤ʬ (power_index_denominator) ˤ 2 Τ٤ (1, 2, 4, 8, ...) ΤߤǤޤ
          - ٤ (power_index_numerator/power_index_denominator) ˤͤΤߤǤޤ
          - ơ֥βٻϾάǤޤάͤ 9 ӥå (= 512 ȥ) Ǥ
          - ּ 2 ΤߤǤ// 0, 1, 2 ϰϤǻǤ褦˳ĥͽꡣ//

        )
          pg_pow(r2, -5, 2, 12);  // r2**(-5/2) ׻롣ơ֥β٤ 12-bit = 4096 ȥꡣ
          pg_pow(r2, -5, 2);      // Ʊ٤ϥǥեͤ 512 ȥꡣ



        // ʲδؿ G5PIPE Ѥ˺ΤǤ̲ϸ߸ƤǤ//

        |åȥ|

          pg_cutoff(log r, log eta)

        |ʿ|

          pg_sqrt(log r2)

        | (reduce) ʤ黻̤β|

          pg_store(int value, int1 store_or_not)


    ƥ
    --------

    ͥƥѤǤޤϥƥȤ˱ƼưŪ˷ꤵޤ
    ưŪ˷ǤʤҤʸˡȿȤʤޤ

      )
           float34.23 r2, f;
           r2s = r2 + 0.01;              // 0.01 η float34.23

           a += (int64)(f << 75);        // 75 η int10 (10  f λؿΥӥå)

           r5inv = pg_pow(r2, -5, 2, 9); // -5, 2, 9 ϲϩ pgld2vhdl Ѥ롣
                                         // 쥸ȤƲϩ˼뤳ȤϤʤ

           a = (float17.8)5 + 3.14       // 5, 3.14 η float17.8

           a = 5 + 3.14                  // ʸˡȿ (û + ξդȤⷿ)


 ----------------------
  (4) parameter 
 ----------------------


  ѥץ饤󤪤ӥ桼饤֥ˡ˴ؤѥ᥿Ϳޤ

  :    parameter ѥ᥿̾;

    ) parameter NPIPE  14;
        parameter ARCH   "GRAPE7M100";

  ʲΥѥ᥿Ǥޤ* ɬܤΥѥ᥿Ǥ

    NPIPE *           ѥץ饤ܿꤷޤ

    JMEMSIZE *         (jpin ѿǼ뤿Υ) 礭ꤷޤ
                      ñ̤ jpin ѿåȤθĿǤͤ 2 Τ٤ڤ夲ޤ

                        ) parameter JMEMSIZE 1024
                            int64 mj, xj[3], vj[3] jpin;
                            ȤҤϡ56byte (int64 ѿ 7 ) x 1024 = 56kbyte
                            Υ꤬ޤ

    PREFIX *          桼饤֥ؿ䥨ߥ졼ؿƬꤷޤ

    ARCH              ϩоݤȤʤϡɥꤷޤʲͤΤ
                      줫 1 ĤǤޤάͤ GRAPE7M100 Ǥ

                        GRAPE7M100   : GRAPE-7 Model100

                        GRAPE7M300P1 : GRAPE-7 Model300 pFPGA 1,2
                        GRAPE7M300P2   (pFPGA 3 Ѥβϩ pFPGA 2 ȶ̤Ǥ)

                        GRAPE7M600P1 : GRAPE-7 Model300 pFPGA 1,2,6
                        GRAPE7M600P2   (pFPGA 3,5 Ѥβϩ pFPGA 2 ȶ̡
                        GRAPE7M600P6    pFPGA 4 Ѥβϩ pFPGA 1 ȶ̤Ǥ)

                        GRAPE7M800   : GRAPE-7 Model800 
                                       (4 Ĥ FPGA βϩϤ٤ƶ̤Ǥ)

    BACKENDID         ϩ˸ͭ ID Ϳޤۥȷ׻餳 ID ɤ߽ФȤˤꡢ
                      ߥϡɥ˽񤭹ޤƤѥץ饤ϩμ̤Τ뤳ȤǤޤ
                      Ǥͤ 0  15 ޤǤͤǤ

    ­:

      - ʸ˶ޤˤϡʸΤ " ǰϤǤ


 ----------------
  (5) 
 ----------------

     (1)  (4) ޤǤǤդβսˡ/*  */  // Ѥƥʸ򵭽ҤǤޤ
    ޤ C ץץåޥѤǤޤ

    ) 
        #if 1 // model100
            parameter ARCH         "GRAPE7M100";
            parameter NPIPE        14;
        #else // model600
            parameter ARCH         "GRAPE7M600";
            parameter NPIPE        16;
        #endif


====================
  PGDL1 ʸˡ
====================

PGDL1 KFCR Ҥѥץ饤󵭽ҸǤPGDL (Hamada et
al. 2005) ȻƤޤʸߴϤޤ

PGDL1 ʸˡ˴ؤܺ٤Ϥޤޤ󤬡PGDL1 ե
桼ľԽ뵡Ϥޤ̵Ǥ礦


==================
  PGPG2 ޥ
==================

٤ƤΥޥɤ˶̤Υץ󥹥åʲ˼ޤ

-v    ̾ư˲äܺ٤ʾϤޤ
-d    ̾ư˲äǥХåѤξϤޤ
-h    ˡδñɽλޤ


  ---------
   pg2pgdl
  ---------

  :  pg2pgdl [-v|-d|-s <image-file>|-h] [pg2-file]

    PGPG2 εҤ PGDL1 Ѵޤ

    PGPG2 εҤϥƥȥեͿޤեꤻˡɸ
    ϤͿ뤳ȤǤޤPGDL1 ɸϤ˽Ϥޤ

   -s <image-file> ꤹȡPGDL1 Ϥ˲äPGPG2 ǵҤ줿
   ѥץ饤ϩΥ֥åޤޤ (PDF )

   ֥åޤ˴ؤ­:

   ̾٥ȥ뷿ѿϤ٤ƤʬŤͤ蘆줿ΩŪʥܥ
   ɽޤ PGPG2 ε˥٥ȥ뷿ѿ 1 ʬ
   Τߤؤʸ (: a[2] = b;) ¸ߤˤϡʬνŤ͹碌
   ϹԤ줺ƤΥܥ뤬ʿŪɽޤ

  -----------
   pgdl2vhdl
  -----------

  :  pgdl2vhdl [-v|-d|-h] [pgdl-file]

    PGDL1 εҤѥץ饤ϩ (VHDL ) ޤ
    ץ饤ȡ³ƥƥ˱Ŭڤʥ
    󥿥եϩ (ۥȷ׻Ȥ̿򤪤ʤβϩ) 
    QuartusII ǹǽʴʲϩޤ (󥿥ե
    ϩϡŪˤ gwrap_init 桼ƥƥԤޤ)

    PGDL1 εҤϥƥȥեͿޤեꤻˡɸ
    ϤͿ뤳ȤǤޤ

    : GRAPE-7 Model800  Model100 ˤĤƤϡϩκǽ
     (FPGA ǥХؽ񤭹 .sof ӥåȥȥ꡼ǡ) 
     PLDA  PCI-X IP  
    (http://www.plda.com/prodetail.php?pid=37) ɬפǤ (Υ
    󥿥եϩǻѤޤ)Model800 ޤ Model100 
    줿Τ򤪻Ǥʤˤϡӥåȥȥ꡼ǡ
    ҤˤƹԤޤ (̵)

    ʤ Model600  Model300 ˤĤƤϥפǤΤǡ桼
    Ȥǥӥåȥȥ꡼ǡԤޤɬפȤʤ
    ͳϡ¢󥿥եϩѥץ饤Ȥ̸Ĥ 
    FPGA (iFPGA) ˽񤭹ޤƤꡢѥץ饤ˤϤѹ
    ɬפʤǤ

  -----------
   pgdl2lib
  -----------

  :  pgdl2lib [-v|-d|-h] [pgdl-file]

    PGDL1 εҤ桼饤֥ޤ桼饤֥
    ϥѥץ饤ϩۥȷ׻Υץꥱץफ
    椹뤿Υ󥿥ե (API) Ǥ

    ޥɤ¹Ԥȡإåեȥ֤ޤ
    API ؿѤˤϡץꥱץΥ
    ˥إåե륤󥯥롼ɤ󥯻˥֤󥯤Ʋ
    

    إåե̾ <prefix>util.h, ֤̾ lib<prefix>.a
    Ǥ <prefix>  PGPG2 ҤͿ PREFIX ѥ᥿ͤǤ

    PGDL1 εҤϥƥȥեͿޤեꤻˡɸ
    ϤͿ뤳ȤǤޤ

    ʤ GRAPE-5 ƱϤĵҤԤä˸¤ꡢ
    GRAPE-5 ߴΥ饤֥ؿޤ
    // GRAPE-6 ߴϸɲͽꡣ//

// 饤֥ؿܺϸɲá

    void   <prefix>_open(void);
    void   <prefix>_close(void);
    void   <prefix>_set_coeff(<COEFFARGS>);
    void   <prefix>_set_jp(int adr, int nj, <JPARGS>);
    void   <prefix>_set_ip(int ni, <IPARGS>);
    void   <prefix>_run(void);
    void   <prefix>_set_n(int nj);
    void   <prefix>_get_fout(int ni, <FOARGS>);
    int    <prefix>_get_number_of_pipelines(void);
    int    <prefix>_get_jmemsize(void);

    void   <prefix>_openMC(int devid);
    void   <prefix>_closeMC(int devid);
    void   <prefix>_set_coeffMC(int devid, <COEFFARGS>);
    void   <prefix>_set_jpMC(int devid, int adr, int nj, <JPARGS>);
    void   <prefix>_set_ipMC(int devid, int ni, <IPARGS>);
    void   <prefix>_runMC(int devid);
    void   <prefix>_set_nMC(int devid, int n);
    void   <prefix>_get_foutMC(int devid, int ni, <FOARGS>);
    int    <prefix>_get_number_of_pipelinesMC(int devid);
    int    <prefix>_get_jmemsizeMC(int devid);


  ---------------
   pgdl2emu
  ---------------

  :  pgdl2emu [-v|-d|-h] [pgdl-file]

    PGDL1 εҤ饨ߥ졼ޤߥ졼ϥ桼
    饤֥Ʊ API ĥեȥǤѥץ饤ϩ
    ư򥨥ߥ졼ȤºݤΥϡɥƱα黻򡢥ۥȷ׻
    ǹԤޤ

    ޥɤ¹Ԥȡإåեȥ֤ޤ
    API ؿλˡϡ桼饤֥ΤƱǤ

    إåե̾ <prefix>util.h, ֤̾ lib<prefix>emu.a
    Ǥ <prefix>  PGPG2 ҤͿ PREFIX ѥ᥿ͤǤ

    PGDL1 εҤϥƥȥեͿޤեꤻˡɸ
    ϤͿ뤳ȤǤޤ


  ----------------
   pgdl2sim
  ----------------

  :  pgdl2sim [-v|-d|-h|-t] [pgdl-file]

    PGDL1 εҤѥץ饤ϩΥߥ졼Ķ
    ޤ줿ϩ QuartusII ǹ QuartusII Υߥ
    졼ѤưڤԤޤ

    ͤȤƥʥƥȥ٥ (ͤȽϤδ)  
    pg_sim.tbl ޤ

    PGDL1 εҤϥƥȥեͿޤեꤻˡɸ
    ϤͿ뤳ȤǤޤ

    // ߥ졼μ¹Է̤ȥƥȥ٥δͤȤפʤ (1
       clk ) ȤꡣǥХå档//


==========================================
  ϩǡ FPGA ǥХؤν񤭹
==========================================

QuartusII Ѥƹϩǡ (.sof )  GRAPE-7  FPGA 
˽񤭹ˤϡGRAPE-7 Model100 ξ˸¤Ѥν񤭹ߵ 
(Altera  USB Blaster) ɬפǤ¾ΥǥǤѤεפǤ

  + Model800

      QuartusII ѤƲϩǡ .sof  .pof Ѵ
      ˤ .pof  .rpd ؤѴޤ .rpd 
      ǡ pg2pkg/bin/config800 ޥɤѤ Model800  
      configuration ROM ؽ񤭹ߤޤ

      :  config800 <rpd-file> [iFPGA-IDs]

      ) config800 ifpga.rpd 1 2 3 4

        Υޥɤ¹ԤȡModel800 ܤƤ뤹٤Ƥ 
        FPGA (14)  configuration ROM ˲ϩǡ ifpga.rpd 
        ޤޤ

      񤭹߽λ Model800 ŸȤưʤ (cold
      boot) ȡ񤭹ϩǡ ROM  iFPGA ؤȼưŪ˥
      ɤޤ

      : ROM ˽񤭹ǡŸȤƤõޤΤǡ
      ưΤӤ˽񤭹ԤɬפϤޤ


  + Model600

      QuartusII ѤƲϩǡ .sof  .ttf Ѵ
       .ttf Υǡ pg2pkg/bin/config600 ޥɤ
      Ѥ Model600  pFPGA ؽ񤭹ߤޤ

      񤭹ϩǡ pFPGA Ȥ˰ۤʤޤ (ɽ)ޥɤ 
      1 ȤͿ̾Ƭ p1_, p2_, p6_ Τ줫ղä
      Τ񤭹ߤ˻ѤϩǡΥե̾Ȥʤޤ
      Ĥޤ񤭹ߤˤ 3 βϩǡɬפǤ

          ----------------------------------------------
           pFPGA  ID       ѤϩΥե̾
          ----------------------------------------------
              1              p1_<base-name>.ttf
              2              p2_<base-name>.ttf
              3              p2_<base-name>.ttf
              4              p1_<base-name>.ttf
              5              p2_<base-name>.ttf
              6              p6_<base-name>.ttf
          ----------------------------------------------

      :  config600 <base-name>

      ) config600 pfpga

        Υޥɤ¹ԤȡModel600 ܤƤ뤹٤Ƥ
        pFPGA (16) ˲ϩǡ񤭹ޤޤϩǡȤƻ
        Ѥե p1_pfpga.ttf, p2_pfpga.ttf, p6_pfpga.ttf  
        3 Ǥconfig600 ޥɼ¹Իˤϡ 3 Υե
        򥫥ȥǥ쥯ȥ˺Ƥɬפޤ

      񤭹߽λ塢˲ϩѤǤޤƵưɬפޤ

      : pFPGA ˽񤭹ǡŸȤȾõޤΤǡ
      ư (cold boot) ΤӤ˽񤭹 (config600 ޥɤμ¹) 
      ɬפǤ


  + Model300:

      Model600 Ʊͤˡǽ񤭹ߤԤޤ񤭹ߤˤ
      pg2pkg/bin/config600 ޥɤ pg2pkg/bin/config300 
      ޥɤѤƤ

      ܤƤ 3 Ĥ pFPGA  ID  46 Ǥ (13 ǤϤʤ
      ȤդƤ)񤭹ߤ˻ѤϩǡȤƤ
      ɽΥե뤬Ѥޤ

          ----------------------------------------------
           pFPGA  ID       ѤϩΥե̾
          ----------------------------------------------
              4              p1_<base-name>.ttf
              5              p2_<base-name>.ttf
              6              p6_<base-name>.ttf
          ----------------------------------------------


  + Model100:

    񤭹ߤˤ Altera ѵ USB Blaster ɬפǤʲ
     2 ̤ˡ˴ؤƤ⡢񤭹ߤ QuartusII
    Programmer  USB Blaster 뤳Ȥˤä JTAG ͳǹԤ
    ޤ USB Blaster  Model100  JTAG ͥ³
    ƤƤ

    - ˡ 1 (Ūʽ񤭹)

      QuartusII Programmer Ѥ .sof βϩǡ iFPGA ˽
      ߤޤ񤭹߽λ塢ۥȷ׻Ƶư (hot reboot) 
      ޤŸȤ˺Ƶư뤳ȤդƤŸ
      ȤȽ񤭹ǡϾõƤޤޤξϲ 
      QuartusII Programmer Ѥƽ񤭹ߤԤθۥȷ׻
      Ƶư (hot reboot) Ƥ


    - ˡ 2 (Ūʽ񤭹)

      QuartusII ѤƲϩǡ .sof  .pof Ѵ
       .pof Υǡ QuartusII Programmer Ѥ 
      configuration ROM ؽ񤭹ߤޤ񤭹߽λ Model100 
      Ȥư (cold boot) ʤȡ񤭹ϩǡ 
      ROM  FPGA ؤȼưŪ˥ɤޤ

      : ROM ˽񤭹ǡŸȤƤõޤΤǡ
      ưΤӤ˽񤭹ԤɬפϤޤ


QuartusII ξܺ٤ˤĤƤϡQuartusII Υޥ˥奢򻲾ȤƤ



==========================================
  ץꥱץ
==========================================

  --------------------
    µѤ
  --------------------

    ѥץ饤ϩۥȷ׻Υץꥱץफ
    椹ˤϡpgdl2lib 桼饤֥Ѥޤ桼
    饤֥Ѥ륢ץꥱץˤϡ
    λؼ˽äƤ

    + ץꥱץΥɤˤϡpgdl2lib 
      إåե(<prefix>util.h) 򥤥󥯥롼ɤƤ
      ΥإåեŪ pg2pkg/include Υե򥤥󥯥롼
      ɤƤޤѥˤ $PGPG2PATH/include ˥إåե
      Υ󥯥롼ɥѥ̤Ƥ

    + ץꥱץˤϡpgdl2lib 饤֥ 
      (lib<prefix>.a) 󥯤ƤΥ饤֥Ū 
      ۥ - GRAPE-7 ֥ǡž饤֥ pg2pkg/lib/libhib.a  C 
      οإ饤֥ libm.a ѤƤޤ󥯻ˤ 
      $PGPG2PATH/lib ˥󥯥ѥ̤󥫤 -l<prefix> -lhib -lm 
      ץͿƤ

  ----------------------------
    ߥ졼Ѥ
  ----------------------------

    ѥץ饤ϩΥӥåȥ٥륨ߥ졼򥢥ץꥱץ
    फѤˤϡpgdl2emu ߥ졼饤֥
    Ѥޤߥ졼饤֥Ѥ륢ץꥱץ
    ˤϡʲλؼ˽äƤ

    + ץꥱץΥɤˤϡpgdl2emu 
      إåե(<prefix>util.h) 򥤥󥯥롼ɤƤ
      ΥإåեŪ pg2pkg/include Υե򥤥󥯥롼
      ɤƤޤѥˤ $PGPG2PATH/include ˥إåե
      Υ󥯥롼ɥѥ̤Ƥ

    + ץꥱץˤϡpgdl2emu 饤֥ 
      (lib<prefix>emu.a) 󥯤ƤΥ饤֥Ū
       C οإ饤֥ libm.a ѤƤޤ󥫤ˤ 
      -l<prefix>emu -lm ץͿƤ

䤤碌ӥХݡȤϲؤꤤޤ:
K&F Computing Research Co. (support@kfcr.jp)
