フーリエ変換の意味するところは

時間軸を周波数軸に変換するのがフーリエ変換。
理系の人に限らずいたる所で利用されているのですが、ぱっと見何やってるかよくわかんないんですよね。
 
これまでもやもやしてたけど、今日本を見直してみたら13号台風一過のようにすっきりしたので記す。
 
フーリエ変換というか、とにかく、「ある区間に区切ってサンプリングしたデータは整数倍の周期を持つ有限個のcosとsinの大きさとして表せる」ということ。
で、実際にはどうするかというと、単に「基準となる整数倍の周期を持つcosとsinの正弦波を掛け合わせる」とそれぞれに対応した大きさがわかる、といもの。

『フーリエの冒険』なんかでは数百ページにわたって解説されてますが、めちゃんこ簡単にあらわすと上の二行に集約される。。すごく簡単にイメージすると、こんな感じ… (汗

 
  /\|~~\/|/|/|/ ← フーリエ変換して解析したいデータ
      ↓
 +–+–+–+–+–+–+–+
↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ← それぞれの弁別機に同じように入力波形をかける
* * * * * * * * ← それぞれ 0倍(停止)、1倍、2倍、3倍、… で回転する歯車「弁別機」
 
   :     : 
  :  .    : :    . ← 弁別機から落ちてきた「モノ」がその周波数に対応する量。
 
 
なんで”回転する歯車”なのかというと、入力データを削り取って下に吐き出す「カキ氷機」のよーなものを想像してみてください。
この「カキ氷機」は曲者で、なんと入れる氷がぴったりと歯にはまらないと氷を掻くことができないのです!!
これはふたつの正弦波を掛け合わせた場合、「同じ周期を持つ場合のみ、面積が0以外になる」「周期が違う場合は面積が0になる」
ということに基づきます。
 
この歯車、よくできていて、漏らさないように二重になってて90度ずらして取り付けられています。
cosとsinの関係で片方だけでは位相差によりきちんと弁別できないから。あくまでもイメージですが。
 
実は離散フーリエ変換(DFT)の式を見てみるとそのままなんですね。
a(n) = 1/pi・ΣF(k)・cos( 2・pi・k・n / m )
b(n) = 1/pi・ΣF(k)・sin( 2・pi・k・n / m )
F(k)がもとのデータで、これに0~(m-1)倍の周波数を持つcosとsinの正弦波をひたすら掛けてるだけです。
一般的な解説、特にFFTではcos、sinのところが複素関数になっている場合が多ようですが、結局は同じ。
 

長年もやもや~んとしてたけど、解ったら、なんだそんなことだったのかと。

高校の数学がニガテだった私でも、これでようやく理解できました。

CRCが合いません!!3

掲載すると言っておきながら載せなかった、
CRC32を算出できる完全なコード。
テーブルでの処理が理解しにくい場合は次の手順で1ビットづつ処理するように変更するとよいかも。
CalcCrc()内でコメントされているCalcCrc1byte()を有効にしてCalcCrc1byteTbl()を削除する。
見通しが悪いならCalcCrc1byteTbl()とMakeCrcTbl()、DispTable()を削ってもよい。
CRC16、IBM PC-DOS版CRCのコードは後日掲載予定。。
[fcrc32.c]
/*
CRC32(ANSI)(右送り)を計算する。
ファイルのCRC32を求めるときはこれを使う。
CRC:Cyclic Redundancy Check (巡回冗長検査)
CRC32生成多項式 (ただし^は次数。XORではない。)
x = x^32+x^26+x^23+x^22+x^16+x^12+x^11+x^10+x^8+x^7+x^5+x^4+x^2+x^1+1
x^0(x[0])をMSB、x^31(x[31])をLSBとして32ビットの生成多項式を表現すると、
(x^32(x[32])はLSBの下になり、押し出されるビットなのでこの値には現れない。入力ビットとのxorで使う。)
11101101101110001000001100100000(1) = 0xEDB88320
^x[0]   → CRCシフト方向     →  ^x[32]
これを除数としてCRCシフト時のビットあふれごとにCRCを除する。
(シフトは入力データとあふれビットのXORをとったもので回転シフトする)
処理はバイナリファイルの先頭から1バイトづつ、LSBを先頭としたビット列とし、
各ビットごとにCRCを右シフトし、
x^32(シフト前のCRCのLSB)の値とデータビットをXORした結果、
1ならCRC全体を生成多項式で除した後、1をMSB側から右シフトで挿入。
0なら0をMSB側から右シフトで挿入。
すべてのデータが終わったらCRCの値を反転させる。
*/
#include <stdio.h>
#define READBUF 10240   // ファイル読取バッファサイズ
#define DATABUF 1024    // CRC処理データ用バッファサイズ
unsigned long CalcCrc(unsigned long* Crc, unsigned char* pBuf, int nBytes);
unsigned long CalcCrc1byte(unsigned long* Crc, unsigned int nSample);
unsigned long CalcCrc1byteTbl(unsigned long* Crc, unsigned int nSample);
unsigned long CalcCrclong(unsigned long* Crc, unsigned long Data);
void MakeCrcTbl(void);
void DispTable(void);
// 生成多項式(除数)
unsigned long Poly = 0xEDB88320;
unsigned long CrcTbl[256];
// メインルーチン
// 指定のファイル全体をメモリ上に
int main(int argc, char* argv[])
{
        // CRCの初期値 CRC32では全ビット1
        unsigned long Crc;
       
        int nRead;                      // 読出し数
        int buf[DATABUF+1];     // データバッファ
        int num;
        FILE *fd;
       
        if(argc == 2 && (fd = fopen(argv[1], “rb”)) != NULL) {
               
                // 大容量バッファに変更。失敗しても問題ないのでエラー処理無し。
                setvbuf(fd, NULL, READBUF, _IOFBF);
               
                // CRCテーブル初期化
                MakeCrcTbl();
                //DispTable();
               
                // CRC初期値
                Crc  = 0xffffffffL;
               
                // ファイルを先頭から1バイトずつ読み出してCRCを計算する。
                // ワード長は関係無く先頭バイトから、ビット並びはデータのLSBから処理。
                do {
                        nRead = fread(&buf, 1, DATABUF, fd);
                        CalcCrc(&Crc, (unsigned char*)&buf, nRead);
                } while(nRead != 0);
                fclose(fd);
                // データの末尾にCRCがある場合のシミュレーション
                // これを実行すると常にCRCが0となる。
                //CalcCrclong(&Crc, Crc);
               
                // CRC32では最後に値を反転させる。CRC32特有の処理。
                Crc = ~Crc;
               
                // CRCを表示
                printf(“%08X\n”, Crc);
        }
        else {
                printf(“using>%s <file>\n”, argv[0]);
        }
        return(0);
}
// バッファに詰められたデータを先頭から1バイトずつnBytesまで更
unsigned long CalcCrc(unsigned long* Crc, unsigned char* pBuf, int nBytes)
{
        while(nBytes– != 0) {
                // 1バイトあたりのCRCを計算する
                CalcCrc1byteTbl(Crc, *pBuf++);   // テーブルを使って8ビットごとバージョン
                //CalcCrc1byte(Crc, *pBuf++);    // 1ビットづつ素朴にバージョン
        }
       
        return(*Crc);
}
// テーブルを使って1バイトのCRCを更新処理
unsigned long CalcCrc1byteTbl(unsigned long* Crc, unsigned int Data)
{
        Data = Data & 0xff;             // Dataにゴミがある場合の保険
       
        *Crc = (*Crc >> 8) ^ CrcTbl[(unsigned char)(*Crc ^ Data)];
        return(*Crc);
}
// ビット単位の処理で1バイトのCRCを更新処理
unsigned long CalcCrc1byte(unsigned long* Crc, unsigned int Data)
{
        unsigned int DataBit;   // 処理対象ビットの値
        unsigned int CrcTopBit; // CRCからシフト時あふれるビットの値
        int Bits;                               // ビット処理のカウンタ
        Data = Data & 0xff;             // Dataにゴミがある場合の保険
        // 入力データはバイト単位、LSBから処理
        for(Bits=0; Bits<=7; Bits++) {
                DataBit   = (Data >> Bits) & 0x1;       // データの中から対象とするビットを取得
                CrcTopBit = *Crc & 0x00000001;          // CRCからあふれるビットを取得
                // CRCは右シフトで詰める
                *Crc = *Crc >> 1;
                // CRCのあふれ(x^32の部分) xor 対象入力データ が1なら生成多項式で剰余を求める
                if(CrcTopBit ^ DataBit) {
                        *Crc = *Crc ^ Poly;     // 右シフト時にMSBに0が詰められるので、MSBには暗黙に生成多項式の値から1が入る
                }
        }
       
        return *Crc;
}
// 32ビット/ワードのCRC更新処理
// データ末尾にCRCを付けることの検証用 CalcCrclong(&Crc, Crc) で Crcが0になる。
//
// 最後のCRCが 85FAFF4F (10000101111110101111111101001111)なら
// 反転前のCRCが7A0500B0 (01111010000001010000000010110000)、
// 挿入はCRCのx^31(LSB側)から行なうのでファイル上の並びでは B0 00 05 7A となる。(データはLSBから)
unsigned long CalcCrclong(unsigned long* Crc, unsigned long Data)
{
        unsigned int DataBit;   // 処理対象ビットの値
        unsigned int CrcTopBit; // CRCからシフト時あふれるビットの値
        int Bits;               // ビット処理のカウンタ
        // 入力データはバイト単位、LSBから処理
        for(Bits=0; Bits<=31; Bits++) {
                DataBit   = (Data >> Bits) & 0x1;       // データの中から対象とするビットを取得
                CrcTopBit = *Crc & 0x00000001;          // CRCからあふれるビットを取得
                printf(“%d\n”, DataBit);
               
                // CRCは右シフトで詰める
                *Crc = *Crc >> 1;
                // CRCのあふれ(x^32の部分) xor 対象入力データ が1なら生成多項式で剰余を求める
                if(CrcTopBit ^ DataBit) {
                        *Crc = *Crc ^ Poly;     // 右シフト時にMSBに0が詰められるので、MSBには暗黙に生成多項式の値から1が入る
                }
        }
       
        return *Crc;
}
// 8ビット処理用に256エントリのCRCテーブルを作成
void MakeCrcTbl()
{
        unsigned int Data;              // ダミーのデータ
        unsigned long Crc;              // ここで使うCRCレジスタ
        for(Data=0; Data<256; Data++) {
                Crc = 0x00000000;       // CRCは0としておく
                CrcTbl[Data] = CalcCrc1byte(&Crc, Data);        // 値の作成にはビット単位のCRC処理を使う
        }
}
// CRCテーブル内容の表示
void DispTable()
{
        int i;
        for(i=0; i<256; i++) {
                printf(“%08x “, CrcTbl[i]);
                if((i+1) % 8 == 0) {
                        printf(“\n”);
                }
        }
}
CRC演算テーブルを作成するのに1ビット単位のCRC計算ロジックを流用してるのってあんまり無いんですよね。
ハードコーディング(固定値)されてるのは割とあるんだけど、それだと生成多項式を変更したいとか、
そもそもどうやってテーブルができきてるかとか、理解できないじゃないですか。

CRCが合いません!! 2

とにかく(実装からみた)CRCの実装方法から。
 
一般的な、シンプルなCRC
  1. CRCを保存する変数(以降CRCレジスタ)に初期値をセット。
  2. データから1ビットとってくる。(MSBから、またはLSBから)
  3. CRCレジスタにシフト代入。(右シフトまたは左シフト)
    シフト時にあふれるビットをキャリーとする。
  4. キャリーが 1のとき、CRCレジスタを生成多項式でExORし、結果をCRCレジスタに戻す。
回転シフトを使うCRC (DOW CRC ?)
  1. CRCを保存する変数(以降CRCレジスタ)に初期値をセット。
  2. データから1ビットとってくる。(MSBから、またはLSBから)
  3. CRCレジスタをシフト。(右シフトまたは左シフト)
    シフト時にあふれるビットをキャリーとする。
  4. キャリーとデータビットの ExOR が 1のとき、CRCレジスタを生成多項式でExORし、結果をCRCレジスタに戻す。

これが基本形。シフト方向の決定、データの先頭ビットは各実装で異なります。
あとはCRCの初期値の値、データ末後の処理手順(ビット反転するとか)を加えれば実際に使えるものになります。

実は、この二つの手順は等価で後者は前者の最適化されたアルゴリズムとなります。
厳密にはCRCがデータのビット列を生成多項式で割った余りだという解釈から前者の場合、
データの末尾にCRCレジスタと同じ長さの0を付け足す必要があります。
こうすると初期値が0ならば二つの手順から同じ結果が得られます。

ただし前者の手順を使いながらも末尾処理してないものが存在するため、一種のバリエーションと考えられます。
(例:IBM PC-DOS付属のCRCコマンド)

 

CRCが合いません!!

CRCが合いません。
かつてCRCを高速に演算するハードを設計したというのに、週末から作り出したら実際のツールとさっぱり合わなくて
なんでか仕事中も考えていたら、結局無理解によるものだとわかった。
今回あらためてわかったことを書き留めてみる。
  • CRCとはそもそもデータ列を長大なビット列として扱ったものを生成多項式で割り算した剰余である。
    したがってCRC値をシフトしてキャリーが立つ→CRC値が生成多項式より大きくなった→生成多項式 x1で割り算できる
    という意味でシフトとそのキャリー確認後にExORを行なうのが基本のアルゴリズムとなる。
  • 生成多項式の表現は x^16+x^15+ .. +x^2+1 とかなっているが、次数の小さいものがCRCをFIFOとしてみたときの入り口より。
    ただしどちらをCRCのMSBにもってくるかは方式に依存。+1がLSBのときは「左送り」、x^nがLSBのときは「右送り」。
  • 生成多項式の生成多項式をx^1+1にすると偶数パリティと同じになる。前述の原理より自明。つまり1での剰余。
    「CRC=パリティ」の記述は正しい。
  • 「CRC=チェックサム」は間違いで、たぶん後述の末尾にCRC値を用いたチェック方法を勘違いしている。
  • 現在のCRCと同じ値をデータ列として処理するとCRCの値が0になる。(方向に注意)
    また現在のCRCの1の補数(=ビット反転したもの)をデータ列として処理すると常にCRCが特定の値になる。
    0にしてしまうと次のキャリーが発生するまで0が続くので、エラー検出に使う場合はデータ末に1の補数を置く方法がよい。
    これを利用してエラーチェックができる。データの末尾に期待するCRC値かその補数を置くとCRCの値を固定的に確認するだけでよくなる。
  • CRCの初期値は全ビット0か1が多い。仕様によっては特定の値が指定されることもある。
    ソフトでは全部1、ハードでは全部0または指定の値をとる場合が多い気がする。
    全部0と全部1の差で誤り検出に差は無いが0が続く、またはCRC長と同じ1が続いた後の0は誤りとして検出できない。理由は後述による。
  • CRCを”更新”するとき、右シフトで詰める場合と左シフトで詰める場合がある。基本は左シフトだが、実際はものによる。
  • CRCを”更新”するとき、データをCRC先頭に押し込む場合と、
    CRC最後尾からシフトアウト(キャリー)してきたものとデータをExORしたものをCRC先頭に再度押し込む場合がある。(DOW CRC)
  • データを最後まで処理したらCRCをビット反転する場合(CRC32)や、CRCと同じ長さの0のデータ列を挿入することがある。(CRC16)
  • データはMSBから扱う場合とLSBから扱う場合がある。基本はMSBからだがファイルを扱う場合は通常LSBから。
  • データがファイルの場合は単純に先頭からバイト単位で扱う。ワードのエンディアンは考えない。
  • 処理結果をあらかじめ2^n個のテーブルに保存することでnビットの一括処理ができる。
    これは足し算同様、演算子のXORが順不同であるという事実による。
    (1+2+3=6、2+3+1=6と同じように12 xor 17 xor 21= 8、17 xor 21 xor 12 = 8)

適当に思いつくままわかったことを書き留めたらこんなかんじ。
実際のコードとかは明日以降掲載予定。。

右送り、左送りとか、意味わかんない。シフトしたいのか、ビットの処理順なのかどっちだ。
あと「CRCチェックサム」なんて言葉が出回ってること自体も気持ち悪い。
せいぜい「CRCチェックバリュー」くらいにしておけばいいものを。

開局申請のおぼえ書き2

最終的に開局できたけど、保証認定の段階で一度質問という形で返送されていました。

内容はというと記述上の不備が数点とデジタルSSTVの技術的な質問。
(不備に関してはある程度なら勝手に訂正される?返送された書類には訂正や加筆しようとした鉛筆を消した跡がついてました)

デジタルSSTVなんてこれからはじめたいだけなのに構成がどーのブロック図でどーのスペクトルがどーのとかわかりませんよ。
あきらめて「デジタルSSTVの申請は止めます。」なんていったら何してるのかわかんなくなるので、二夜がかりで調べまくり。

どうするかというと、既に申請方法が分かっているDigiTRXとその申請を手本にして、独自のへりくつを練り上げることに。

まず、構成はデジタルSSTVといえども単に無線機のマイク入力に何かを接続して音声周波で変調信号を入力するだけです。
はっきりいってハード的にはアナログSSTVやFAX、AFSKのRTTYと何ら変わりませんが、免許では送出する電波の形式が
問題になるので、それぞれ附属装置として扱わねばなりません。
したがって説明は送信する「変調方式」とその「スペクトル」、附属装置として「機器の構成」を説くことが焦点となります。

ここで、「数値演算する」ことを一次変調、「無線機のモードで変調する」ことを二次変調といいます。
… 書きかけ…

でも実際のところ、SSTV,RTTY,FAX,PSK31などはまとめて「情報を数値演算し音声周波に変換する附属装置」とできないのとか思うわけですよ。

開局申請のおぼえ書き

ひともんちゃくあったものの申請が通ったので約束通り申請内容を公開。

開局の前提は

  • 移動するアマチュア無線局
  • 無線機はIC-706MK2G(50W改造)、IC-910(1200MHzつき)、
    ほか144/430/1200MHzのデュアルバンドハンディおよびモノバンドハンディ機数台
  • 低速パケット、高速パケット、RTTY、FAX、SSTV、デジタルSSTV、PSK31、AF発振器を附属装置とする
  • 資格は三アマ

開局申請に必要となった書類は次の通り。このうち局固有で作成時に迷いそうな項目を公開してみます。

  1. アマチュア局の無線設備の保証願書(TSSへの「郵便振替払込受付証明書」つき)
  2. 無線局免許申請書
  3. 無線局事項書及び工事設計書
  4. 附属装置の諸元内容等
  5. 送信機系統図
  6. メーカー作成の「空中線電力50W固定措置に関する証明書」
  7. 前納申出書

保証認定を使う場合は1~3が最低限必要です。4~7は必要に応じて。
私はこのほかTSS株式会社より指示があったためデジタルSSTVに関する資料を添付しました。

 

1.「アマチュア局の無線設備の保証願書」はTSS株式会社宛ての書類で保証認定を使うときに必要になる書類で、保証が必要な送信機が
一台でもある場合は技適証明の送信機も含めてすべての送信機を記入します。特に難しくは無いので記入内容は省略します。

 

2.「無線局免許申請書」は各通信局へ提出する書類で収入印紙を郵便局で買って貼ります。
ここでの収入印紙は国への手数料として納付したことの証票です。貼りなおしは違反なので注意しましょう。

 

3.「無線局事項書及び工事設計書」これは局ごとに変わってくるので特に違うところを説明します。

私の場合はHFの電波形式3HAに附属装置のAF発振器によるA2Aの形式が含まれないので
3.5MHz帯、7MHz帯、21MHz帯、24MHz帯の電波の形式には一括表記の3HAのほかA2Aを追加しました。
ちなみに3.8MHz帯、18MHz帯(たぶん14MHz帯も)にはA2Aが許可されないので理由なく追加しないほうがよいです。
また4アマの場合、A2A、F2Aの許可は下りません。
(以前はA2、F2として申請して4アマでモールスを使える方法だった。「Let’s ハミング」の記事なのでもしかしたらウソかも。
今はCW-IDを出せる市販の無線機でも、その機能を使うには3アマ以上がいる旨が記されています。)

「電波の形式並びに希望する波数及び空中線電力」の内容はつぎのとおり
移動する局なので上級資格でも50Wが最高です。

  • 1.9M  A1A      50W
  • 3.5M  3HA,A2A  50W
  • 3.8M  3HD      50W
  • 7M    3HA,A2A  50W
  • 21M   3HA,A2A  50W
  • 24M   3HA,A2A  50W
  • 28M   3VA      50W
  • 50M   3VA      50W
  • 430M  3VA      50W
  • 1200M 3SA      10W

無線局事項書の周波数とモードの特定は次の工事設計書と附属装置の諸元内容がわからないと記入できないので、
附属装置の諸元内容等→工事設計書→無線局事項書 の順番で情報を集めるとよいでしょう。
各送信機の周波数帯とモードのマトリクスを作成すると何を書かないといけないか分かると思います。

無線局事項書の裏面につづく「工事設計書」は面倒でモードと周波数帯を通常の表記で列挙せねばなりません
しかも第1から第6送信機までは附属装置を組み合わせるため取扱説明書記載のモードより多くなります。

●アイコム IC-706MK2G

装置の区分

第1送信機

技術適合証明番号

(50W改造のため記入しない)

発射可能な電波の形式及び周波数の範囲

A1A
 →1.9MHz帯
A1A,A3EJE3
 →3.8MHz帯
A1A
 →4630kHz
A1A,A2A,A3E,F1B,F1D,F3C,F3F,G1B,G1D,J3E
 →3.5MHz帯,7MHz帯,21MHz帯,24MHz帯
A1A,A3E,F1B,F1D,F3C,F3F,G1B,G1D,J3E
 →18MHz帯
A1A,A2A,A3E,F1B,F1D,F2A,F2B,F2D,F3C,J3E,G1B,G1D,J3E,30K0F1D
 →28MHz帯,50MHz帯,144MHz帯,430MHz帯

変調方式

A3E  低電力変調
J3E  平衡変調
F3E  リアクタンス変調

終段管 名称個数

HF/50MHz   RD70HVF1x2
144/430MHz  RD70HVF1x1

終段管 電圧

HF/50MHz     13.3V
144/430MHz   13.4V

定格出力(W)

1.9~28MHz帯 50W
50/144MHz帯  50W
430MHz帯     20W

●アイコム IC-910D

装置の区分

第2送信機

技術適合証明番号

002KN346

発射可能な電波の形式及び周波数の範囲

A1A,F1B,F1D,F2A,F2B,F2D,F3C,F3E,G1B,G1D,J3E,30K0F1D
 →144MHz帯,430MHz帯,1200MHz帯

変調方式

J3E  平衡変調
F3E  リアクタンス変調

終段管 名称個数

144MHz     2SC5125x2
430MHz       2SC3012x2
1200MHz      M57762-02×1

終段管 電圧

144MHz     13.3V
430MHz       13.3V
1200MHz      12.7V

定格出力(W)

144MHz     50W
430MHz       50W
1200MHz      10W

●旧八重洲無線 FT-728

装置の区分

第3送信機

技術適合証明番号

(JARL認定機種のため記入しない)

発射可能な電波の形式及び周波数の範囲

F1D,F2A,F2B,F3C,F3E,F3F
 →144MHz帯,430MHz帯

変調方式

F3E  リアクタンス変調

終段管 名称個数

144MHz     M57796MAx1
430MHz       M57797MAx1

終段管 電圧

144MHz     13.8V
430MHz       13.8V

定格出力(W)

144MHz     6W
430MHz       6W

第4送信機以降は似たようなハンディ機が並んでいるので省略します。
それらは電波の形式に周波数帯が異なるほかは第3送信機と同じモードを記載しました。(F1D,F2A,F2B,F3C,F3E,F3F)

●旧八重洲無線 FT-73

装置の区分

第7送信機

技術適合証明番号

(JARL認定機種のため記入しない)

発射可能な電波の形式及び周波数の範囲

F3E
 →430MHz帯

変調方式

F3E  リアクタンス変調

終段管 名称個数

430MHz       M57797MAx1

終段管 電圧

430MHz       12V

定格出力(W)

430MHz       5W

第7送信機以降は附属装置を組み合わせないため取扱説明書に準ずる内容です。
ただし古い機種のため現行の形式にあわせなければなりません。例として第7送信機を挙げておきます。

 

4.「附属装置の諸元内容等」も装置が増えると面倒なものです。
低速パケット、高速パケット、RTTY、FAX、SSTV、デジタルSSTV、PSK31、AF発振器の諸元を提示します。
ここに挙げたものは実際に申請で使った値です。(※の注釈は書かない)

これらの装置はパソコンとソフトで実現可能なものばかりなので、パソコンが一台あれば附属装置として使えます。
ただし高速パケットはVCO直接変調入力が、FSK RTTYはFSK入力が送信機に無いと使えません。(未確認だが改造でつけた変調入力でも良いはず)
なおパソコンのソフトのほか、高速パケットにはタスコのTNC、AF発振器は単体のものも用意しました。

●データ通信装置(パケット)

1  方式

AFSK

2  通信速度

300/1200ボー

4  副搬送周波数

1700Hz

5  最大周波数偏移または位相偏移量

±100/±1500Hz

9  符号の構成

ASCII,JIS,AX25

10 装置出力の最高周波数

(記入しない)

11 その他

電波形式 F1D,F2D

組合せて使用する送信機番号

第1,2,3,4,5,6送信機

※パケット通信装置は諸元が異なるため低速と高速を別に書く。
※SSBではF1D、FMではF2D。

●データ通信装置(高速パケット)

1  方式

FSK

2  通信速度

9600ボー

5  最大周波数偏移

±2400Hz

9  符号の構成

ASCII,JIS,AX25,G3RUH

11 その他

電波形式 30K0F1D

組合せて使用する送信機番号

第1,2送信機

※パケット通信装置は諸元が異なるため低速と高速を別に書く。
※送信機は高速パケット対応の入力を使いFMで。F1Dなので一括表記に含まれる。
※パケット入力が無い無線機では改造が必要で、場合によっては概略図の提出を求められるかも。

●RTTY装置

1  方式

AFSK,FSK

2  通信速度

45~110ボー

4  副搬送周波数

2210Hz以下

5  最大周波数偏移または位相偏移量

±170Hz

9  符号の構成

BAUDOT

10 装置出力の最高周波数

(記入しない)

11 その他

電波形式 F1B,F2B

組合せて使用する送信機番号

第1,2,3,4,5,6送信機

※FSKは送信機のFSK入力でVCOを直接変調する方式。この場合は4副搬送周波数は当該項目ではない。
※AFSKは低周波キャリアを周波数変調したものを送信機の音声入力に接続する方式。
※SSBではAFSK、FSKいずれもF1B、FMはAFSKでF2B。

●FAX装置

1  方式

SCFM

2  通信速度

(記入しない)

4  副搬送周波数

1900Hz

5  最大周波数偏移または位偏移移量

±400Hz

9  符号の構成

(記入しない)

10 装置出力の最高周波数

828Hz

11 その他

電波形式 F3C

組合せて使用する送信機番号

第1,2,3,4,5,6送信機

※いわゆるHF-FAX。G3方式のFAXを接続する場合はこの諸元とは異なるはず。
※FM、SSBいずれも電波形式はF3C

●SSTV装置

1  方式

SCFM

2  通信速度

(記入しない)

4  副搬送周波数

1750Hz

5  最大周波数偏移または位相偏移量

±550Hz

9  符号の構成

(記入しない)

10 装置出力の最高周波数

900Hz以下

11 その他

電波形式 F3F

組合せて使用する送信機番号

第1,2,3,4,5,6送信機

※FM、SSBいずれも電波形式はF3F

●SSTV(デジタル)装置

1  方式

FDM

9  符号の構成

リードソロモン

11 その他
   第1副搬送波周波数変調
   第2副搬送波周波数変調
   帯域幅
   画像圧縮
   電波形式
   使用するソフトウェア


8相DPSK
SSB
300~2400Hz内に最大8波
JPEG,GIF等
F1D,G1D
DigiTRX,HamPAL,SSTVPal等

組合せて使用する送信機番号

第1,2,3,4,5,6送信機

※副搬送波周波数や周波数偏移は記入無し。(電波の形式、周波数帯幅はこの内容で推定できる)
※FMの場合はF1D、SSBの場合はG1D

●AF発振器

発振周波数

1200Hz以下

電波形式

A2A,F2A

組合せて使用する送信機番号

第1,2,3,4,5,6送信機

※AF発振器とは低周波発振器ともいい、断続音を発生させてモールス信号を送出する装置。
※AM(SSB)ではA2A、FMではF2A。
※この方式で許可される発振周波数は1200Hzが最大。

●PSK31装置

1  方式

ABPSK,AQPSK

2  通信速度

31.25ボー

3  周波数偏移

なし

5  副搬送波周波数

50~2800Hz

11 その他

電波形式 F2B,G1B

組合せて使用する送信機番号

第1,2,3,4,5,6送信機

※FMではF2B、SSBではG1B

注意点。

  • 機器や方式を特定しない。書かないか、「○○等」という表現で。
    項目が「最大」となっている場合は許可される範囲で大きい値を、「標準値」の場合はできるだけ広い範囲を書くか「○○以下」。
  • 保証認定が通りにくいことがあるが、これで問題ない。キモは「この内容で許可された前例がある」こと。

いろいろツッコミどころがありますが、とにかく電波形式と占有周波数帯幅、伝送する内容が算定できればよいのです。
「技術研究が目的のアマチュア業務」なので附属装置の構成を変更はしょっちゅうですし。
包括免許制度になって、なおかつ附属装置の制限も自由にならないと、こういう手間というか世話がかかります。
まあ、実際のところ400Hzで申請したF2Aのトーンが600Hzになったところで何も無いとは思いますが。。

この書類はCQ出版社の開局用紙に手書きしたのですが、汎用の様式なので不要な枠(「記入しない」の項目)があったりとか、
枠が足りないので裏側に手書きで罫線を追加したりとか、かなりめんどい。

 

6.「送信機系統図」はCQ出版の開局用紙では4送信機分しかなくて足りないし手書きがイヤになってきたので
パソコンを使って作成しました。これならパワーポイントでコピー&ペーストしていけばあっという間に完成します。

これも附属装置と同じように抽象的に書きます。(ただし意味が分かるように。)
私は各附属装置を一つのブロックにして送信機のマイク入力、FSK入力、VCO入力に繋がるイメージを表現してみました (ぇ

第1、2、3送信機系統図を例として掲載します。他の送信機も番号や周波数が異なる以外同じです。
何しろコピーで作ってるんですら。

 

ここまで作成するのに再提出の訂正とあわせて四夜くらいかかりました。 
でも、いろいろ調べたのでそれなりに勉強になりましたよ。