駆け出しエンジニアの気ままにブログ

このブログでは、駆け出しエンジニアの私が興味をもったトピックについて不定期に発信しています。

【本まとめ】「小論文トレーニング(樋口裕一 著)」のポイントまとめ。  

「説得力のある主張」、「鋭い意見」を出すアプローチのヒントが小論文にあるのではないかと思い、本書を手に取りました。

本書のなかに「小論文とはある命題を立て、それに対してイエスかノーかを答えるもの」とありますが、命題の選定や、イエス・ノーを導く構成、アイデアの発想方法については、小論文以外にも活用できるはずです。

ということで、今回は、本書の中で特に勉強になったたなーと思う4つのポイントについて、以下まとめます。


1)命題とは・・・

命題というのは、いろいろ書くことがある中で、論点を一つに定める役割を果たすもの。命題は、以下の三原則に従い選定する。

<命題の三原則>
・普遍性、社会性を備えている
・イエス・ノー両方の立場から論じられる
・自分の知識力の範囲で答えられる


2)対立軸を意識する・・・

現実を動かしている思想や理念、社会的構造に鋭く迫ってこそ「いい小論文」といえる。主張の根底には、「対立軸」があることを意識し、対立軸が何かを意識しながら考察する。

「時事・一般常識」(個々のイモ)=>「因果・背景知識」(イモを繋げるツル)=>「対立軸の知識」(ツルの先にある双子イモ)


3)小論文の構成・・・

小論文は、理詰めで相手を説得するもの。「理詰め」とは、言い換えると「感情で判断しない」ということ。
説得力のある主張のポイントは、「論点を一つに絞って深めること」「反対意見を想定すること」

<四部構成法>
    
問題提起「・・・だろうか」
意見提示「たしかに・・・。しかし・・・」
展開「なぜなら、・・・」「そもそもXXとは、・・・」「その背景には、・・・」
結論「以上より、・・・」「したがって、・・・」

要約の練習をするときは、まず課題文の構成メモを作成してから考えると、すっきりまとまる。基本的には、「問題提起」を省き、「意見提示」の「しかし・・・」からあとの「骨格」を使って要約文を組み立てていけば良い。
展開部では「根拠・対策」を書く。説得力のある展開部を書くには、文と文との関係を明確に意識することが大切。


4)アイデアの発想・・・

「いい小論文」を書くには、なにより「反論力」が必要。そもそも、何かを発言したり書いたりするのは、「何ものかにノーを言うこと」と理解する。(主張を理解するには、「何にノーを言っているのか?」と考える)
「いじめ」がテーマなら、まず「いじめ」とは何かという定義を示し、考察の対象を限定する。さらに、「いじめ」の現状(現象)を報告し、なぜ、いじめが起こるのか(原因・社会的背景)、いつから「いじめ」が社会的問題となったか(歴史的経緯)、外国ではどうか(地理的状況)、「いじめ」が社会におよぼす影響(結果)などと考察を進めていく。
いいアイデアが浮かばないときは、自分を一旦捨てて「別の人物になりきって考える」という方法をとると良い。

ということで、今回は簡単ですが以上です。


スポンサーサイト

category: ビジネス・IT本

tb: 0   cm: 0

【まとめ】DSPの勉強のため「DSP入門講座」の内容をまとめてみる。  

今回は、「DSP入門講座」(生駒伸一郎著)についてまとめていきます。

DSPfig001

DSP(Digital Signal Processor)は、デジタル信号処理に特化した処理を行うマイクロプロセッサで、CPUだけでは負荷が高くなってしまう画像処理や音響処理などの信号処理をサポートする際に用いられるモジュールです。

近年はIoTデバイスへのDSPの活用例も増えてきており、要注目テクノロジーの一つです。

ということで、今回はそんなDSPの基本を勉強するために「DSP入門講座」の内容を備忘録としてまとめていきたいと思います。

1)DSPとは?

デジタル信号処理とは、光、音、熱、圧力、磁気などから生まれる、絶え間なく変化する電気信号をデジタル回路で操作することであり、DSPはデジタル信号処理を実現するために開発されたマイクロプロセッサです。(マイクロプロセッサとは、コンピュータの心臓部にあたる半導体チップのこと)。

コンピュータは半導体技術の進歩とともに高性能化、小型化、低価格化が進み、現在ではパソコンのような汎用機として使われるだけでなく、特定用途向けの製品にコンピュータ組み込む「Embedded System(組込みシステム)」と呼ばれるものへ進化しています。DSPはこのようなコンピュータの進化の中で誕生した組込みシステム向けマイクロプロセッサです。

DSP内部では、CPU(中央演算処理装置)、メモリ、周辺機能といったブロックと、それらを接続するバスでできています。

DSPfig002

「積和演算」と「リアルタイム処理」
DSPの共通点をひも解くキーワードが「積和演算」と「リアルタイム処理」です。
積和演算とは文字通り、積(掛け算)と和(足し算)という計算を行うことです。デジタル信号処理で使われるアルゴリズム(計算手順)にはこの積和演算がたくさん出てきます。(例:FIRフィルタ)DSPに搭載されているCPUは積和演算を効率よく行う機能をもっています。
また、デジタル信号処理システムでは光、音、熱、圧力、磁気などから生まれる、絶え間なく変化する電気信号を入力として使います。つまりDSPには絶え間なく入ってくるデータに対してリアルタイムにアルゴリズムを実行する機能が必要なのです。

TI社のTMS320DM6437というチップを具体例として取り上げます。

DSPfig007
DSPfig008

このチップはC6000シリーズのCPU、64x+コアを搭載したDSPになります。

DSPfig003
DSPfig004

CPUはどんなものでも「メモリから命令を読み出す(fetch)」、「読み出した命令の内容を理解する(decode)」、「命令を実行する(execuse)」という基本動作をクロックに合わせて繰り返し行い、C64x+コアもこの動作を繰り返しますが、他のCPUと大きく異なるところは1クロックで実行できる命令の数が最大8個であるという点にあります。
8この箱それぞれが命令を実行できる独立した演算器で、機能ユニットと呼びます。この複数の機能ユニットにより複数の命令を同じクロックで実行できるのです。
各機能ユニットが演算に使う元データや演算結果は、A0...A31、B01...B31レジスタにおきます。例えば信号処理アルゴリズムでよく使う積和演算については、乗算命令を.Mユニット、加算命令を.Lユニットで実行しますが、それぞれの機能ユニットは演算に使う元データ二つをレジスタからもってきて乗算なり加算を実行し、得られた結果もレジスタに置くのです。

DSPを使ったシステムでは演算に使う元データや演算結果はメモリや周辺機能などCPUの外に置く必要があるので、CPUの内と外でデータのやり取りをする機能が必要です。この機能を担うのが.Dユニット(.D1、.D2)で、メモリ/周辺機能からレジスタへのデータよみ出し(ロード)や、レジスタからメモリ/周辺機能へのデータ書き込み(ストア)を行います。
またデジタル信号処理のアルゴリズムの多くはFIRフィルタのようにたくさんの積和演算を行うので、プログラムは乗算命令や加算命令を繰り返し実行するループ処理になります。ループ処理は分岐命令を使いプログラムの一定の場所を繰り返し実行することになるのでDSPに搭載されるCPUには分岐命令を効率よく実行する機能も欠かせません。C64x+コアでは、.Sユニット(.S1、.S2)を使って分岐命令を実行できるのでデータのロード/ストアや積和演算と分岐命令を並列実行できるのです。


2)DSPプログラミングと開発環境

DSPはデジタル信号処理に適したアーキテクチャをもつ組込みシステム向けマイクロプロセッサです。つまりDSPはプログラムの実行に独自の機械語を使っています。そして独自の機械語のプログラムを作成するためには、そのDSP専用のコード生成ツールが必要です。

コード生成ツールとはプログラミング言語で記述されたファイルからCPUが実行可能な機械語のプログラムファイルを作成するツールで、コンパイラ、アセンブラ、リンカで構成されています。

最近ではDSP用のコンパイラが、組込みシステム開発向けに広く普及しているC言語に対応しており、プログラミングにはC言語を使用するのが主流になっています。


3)AD/DAコンバータとDSP

デジタル信号処理システムでは、光や音を電気信号にして処理を行います。電気信号は途切れなくつづくアナログ信号ですが、これをデジタル信号へ変換(AD変換)してから処理を行います。デジタル信号へ変換することにより、以下のメリットが生まれます。

DSPfig005

・温度変化による精度の劣化が少ない。
・部品の誤差やばらつきをデジタル処理で補正できる
・データを長時間保存できる(遅延が簡単に作れる)
・データ通信を行いやすい
・機能の修正(デバッグ)、追加、変更、が容易


アナログ信号をデジタル信号に変換するというのは連続信号を細切れの値の列にすることです。ADコンバータは入力されたアナログ信号に標本化と量子化を同時に行い、変換したデジタル値を次々と出力してくれます。

DSPfig006

・標本化:一定時間ごとに値を測ること標本化(サンプリング)といいます。
・量子化:値を測るときに、一定間隔にメモリのふられた物差しにより(値を)測ることを量子化といいます。

標本化を行う際、一定時間ごとに値の測定を行います。この測定の周期は一般に標本化周波数(サンプリング周波数)で表します。例えば、標本化周波数48kHzの場合、1秒を4万8千等分した時間(約21μs)ごとに値を測ることになります。

標本化を行ったことによって、もとの信号とはまったく異なる周期の信号が得られる現象をエイリアシングと呼びます。エイリアシングを起こさないためには標本化周波数が元信号の周波数の2倍以上でなければならないことが知られています。(標本化定理)

例えば、電話機など人の声を扱うシステムでは、8kHz〜10kHzの標本化周波数が使われます。これは人の話し声がもつ信号成分の周波数は、大部分が4kHz未満であるという特徴から決まっています。また、音楽CDで使われている標本化周波数44.1kHzは、人の耳で感じ取れる周波数が、個人差はあるにせよ、一般に20Hz〜20kHzであることから決まっています。

多くの場合、アナログ信号には必要ない範囲の信号成分まで含まれています。例えば携帯電話のマイクは周囲の音も拾います。すると、話声にあわせて標本化周波数を決めても、周囲の音に高周波の信号が含まれエイリアシングが発生してしまう可能性がでてきます。ADコンバータは、標本化周波数の2分の1よりも低い周波数の信号だけを通過させるローパスフィルタをつけることで、エイリアシングを防いでいます。

デジタル信号をアナログ信号にするには細切れの値の列を途切れのない連続信号にする必要があります。そこで、DAコンバータは標本化周波数の1周期の間は値を維持するようにして、途切れ途切れの値をつなげます。つぎに、ガタガタの波形をならすためにローパスフィルタを用います。ローパスフィルタにより、標本化周波数の2分の1よりも高い周波数の余分な信号を取り除くことができ、なめらかなアナログ信号を出力することができます。


4)オーディオ信号処理プログラムを作る

DM6437EVMでは、オーディオ向けAD/DAコンバータ(AIC33)がDSP(DM6437)と接続されています。

デジタル信号処理アルゴリズムの実行はDM6437の中のCPUで行います。AIC33からDM6437に入ってくるデータをCPUへ渡し、処理した結果をAIC33へ出ろくするというデータの流れを作ります。AIC33とDM6437の間は同期式シリアルポートで接続されており、AIC33はデジタルデータの入出力を、クロック、フレームシンク、データ信号を使い、1クロックサイクルに1ビットずつ行います。

クロック及びフレームシンクはAIC33から出力されます。相手となるDM6437もこれらの信号でデータのやりとりを行うMcBP(Multi Channel Buffered Serial Port)という周辺機器を内蔵しています。DM6437ではMcBSPを2つ内蔵していて、ボード上ではMcBSP1とAIC33が配線されています。McBSPはAIC33からのデータをDM6437の中へ取り込む(受信)機能と、DM6437からAIC33へデータを送る(送信)機能をもっています。


5)画像処理プログラムを作る

DM6437EVMへの画像入出力にはNTSC方式のコンポジット信号というアナログ信号を使います。

コンポジット信号はビデオを映し出すために必要な情報を1本の信号で伝えられるように工夫されたアナログ信号で、DVDプレイヤーとテレビの接続など映像機器間での伝送を行えるように規格化された信号であり、NTSC方式はその規格の一つです。
NTSCコンポジット信号をデジタル信号に変換するデバイスは1本のアナログ信号から明るさや色合いなどの映像情報を複合しデジタル信号へ変換するため、単にADコンバータではなくビデオコーダーと呼ばれます。またその逆、デジタル信号をNTSCコンポジット信号へ変換するデバイスをビデオエンコーダと呼びます。

DM6437EVMでは、TVP5146M2ビデオコーダとDM6437内蔵のビデオエンコーダを使い、画像処理システムを実現しています。

NTSC方式では、1秒間に30枚のペースで次々に画像を表示するように規格化されています。1枚の画像は、最小単位である画素が平面にたくさん並んだもので、NTSC方式で伝送される画像をデジタル変換すると画像の大きさは720画素x480ラインになります。
多くの民生機器では、画像データを扱う際、RGBのデータではなくYCbCrと呼ばれるデータを使います。各画素のデータを明るさ(Y)、色の差(Cb, Cr)で表し、さらに色の差については間引いたデータを使うことでデータ量を減らす工夫をしています。 今回作成する画像処理システムでもYVbCrをそれぞれ8bitで表したyCbCr 4:2:2の画像データを使います。1枚の画像データの量はYの分720x480byte, Cbの分360x480byte, Crの分360x480byteの合計になりますから約690kbyte(720x480x2byte)になります。

DVM6437では、TVP5146M2からのデータの取り込みやビデオ信号の出力をVPSS(Video Processing Sub System)という周辺機器で行います。

VPSSは、受け取ったビデオデータを容量のある外部メモリ(DDR2-SDRAM)へ書き込み、出力するビデオデータは外部メモリから読み出すように設計されています。VPSSの中には画像処理に関する複数の周辺機能が内蔵されており、入力側の周辺機能をまとめてVPFE(Video Processing Front End)、出力側の周辺機能をまとめてVPBE(Video Processing Back End)と呼びます。
VPFEやVPBEの中はさらにいくつかの周辺機能に分かれており、本書では、VPFE内のCCDC(CCD Controller)、VPBE内のOSD(On Screen Display)とVENC(Video Encoder)を使います。
CCDCは、ITU-R BT.656規格にそった形で画像データの取り込みを行い、外部メモリへ書き込みます。OSDは、外部メモリにある画像データを読み出し、最終的に表示する1枚の画像イメージにしてVENCへ渡します。そしてVENCは受け取った画像データをNTSCコンポジット信号にエンコードし、出力します。
CCDC, OSD, VENCはそれぞれに設定レジスタをもっており、入出力の種類や画像の大きさ、画像データの書き込みや読み出しを行う外部メモリのアドレスなどを設定します。

DSPを使いこなせると開発の幅は、格段に広がるので、ぜひとも使いこなしたいものです。

ということで、簡単ですが今回は以上です。


category: その他

tb: 0   cm: 0