いきなり済みません。そんなだいそれた話ではありません。

前回までアナログ変調=AM変調をやってみたので、今度はデジタル信号を変調して伝送してみるには、というテーマで scilab で遊んでみようというわけです。

まずはシステムjとしてどういうものか簡単に見てみましょう。

  AM変復調 デジタル変復調
入力 音声信号 デジタルデータ
前置処理  なし フォーマット化、符号化
変調 搬送波重畳 搬送波重畳
復調 検波 信号復調
後置処理 LPF 符号復調
出力 音声信号 デジタルデータ

(表は直接貼り付かないようですね...。)

非常におおざっぱですが、いかがでしょうか。
それぞれこういう流れになるかと思います。
なぜこのようなことを書いたかというと、AM変復調の動作確認の中でおおよその処理の流れをつかんだとすると、デジタル変復調処理をそれに当てはめることで、今検討している動作がどこに位置づけされるかを確認したかったからです。
要は知っている知識をベースにして次の技術を考えると理解が早いことを期待してのことです。

では、まずデジタルデータの準備からはじめましょう。
AM変復調の動作の場合は、1Hzの信号を使いました。デジタルの場合はあまり根拠はないですが、ランダムデータを使ってみようと思います。サイズは 64bit とします


ランダムデータの発生には、関数 rand を使います。
SciNote を立ち上げて以下の内容を入力して下さい。

/ランダムデジタルデータの発生

 

//初期値の設定

rand('seed',0)

 

//一様分布の乱数発生。数値範囲 0-1.0

randomdata=(rand(1,64,'uniform'))

 

//'0','1' 符号化するために、0.5を足して整数部分のみを抽出

data=int(0.5+randomdata)

 

disp(data)

 
コンソールの以下のような表示が出たかと思います。
        column  1 to 22
 
    0.    1.    0.    0.    1.    1.    1.    1.    1.    0.    1.    1.    1.    0.    1.    0.    0.    0.    1.    1.    0.    1. 
 
         column 23 to 44
 
    0.    0.    0.    0.    1.    0.    0.    1.    1.    0.    0.    1.    0.    1.    0.    0.    0.    0.    0.    0.    1.    0. 
 
         column 45 to 64
 
    0.    1.    0.    1.    1.    0.    0.    1.    0.    0.    1.    1.    1.    1.    1.    0.    0.    1.    1.    0. 
 
乱数なので毎回違うはず、と思いきや初期値の設定を行っているので、毎回同じだと思います。
さて、このデジタルデータを伝送するわけですが、アナログ信号を伝送するのとは大分趣が違います。
音声信号の場合は電気信号ですから、線でつなげば伝わります。また電波で伝えたいのであればAM変調して搬送波信号を重畳すれば伝わります。再生する方も受け取った信号を受け取れたところから処理すればそれ以降は問題なく再生できます。
ですが、デジタルデータはどうでしょうか。
たとえば、上述のデータパターンにおいて最初の'0'から検出できればいいのですが、
万が一ミスして次のデータから検出すると、そのデジタルデータが4bit単位で意味を持つような性質だった場合、全く違ったデータが伝達されてしまいます。さらに'0'や'1'が送られる周期が出す側と受け取る側で少しでもずれていると、どこかでデータの検出ミスを起こします。
従って、デジタルデータの伝送を行う際には、そういったことまで配慮したデータ形式
にしなければなりません。
これをフォーマット化といいます。また、フォーマット化の中に符号化ということもあります。
これら全般をここでは前置処理と云うことにします。

次回は、前置処理無しで上述のデータを搬送波信号に重畳させて、伝送させてみます。前述のような同期の問題は考えないことにします。