4点FFT設計 ファイヤー和田 知久 琉球大学・工学部・情報工学科 教授

Slides:



Advertisements
Similar presentations
2009/11/10 10 進数と r 進数を相互に変換できる コンピュータのための数を表現できる 2進数の補数を扱える コンピュータにおける負の数の表現を説明で きる コンピュータでの演算方法を説明できる 文字や記号の表現方法を示せる 第7回 今日の目標 § 2.2 数の表現と文字コード.
Advertisements

平成 27 年 10 月 21 日. 【応用課題 2-1 】 次のビット列は、ある 10 進数を 8 ビット固定小数点表示で表した時の ものです。ただし、小数点の位置は 3 ビット目と 4 ビット目の間としてお り、負数は2の補数で表しています。このとき、元の 10 進数を求めてく ださい。
10進数 Digits: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 例: 3271 = (3×103) + (2×102) + (7×101) + (1×100) 8進数 Digits: 0, 1, 2, 3, 4, 5, 6, 7 例: 3271 = (3×83) + (2×82)
情253 「ディジタルシステム設計 」 (5)Noise5
リスト1 DICOMデータの例 000: 010: 020: 030: 040: 050: 060: 070:
情253 「ディジタルシステム設計 」 (3)Constellation3
プログラミング言語としてのR 情報知能学科 白井 英俊.
ディジタル信号処理 Digital Signal Processing
プログラミング入門2 第7回 情報工学科 篠埜 功.
情報・知能工学系 山本一公 プログラミング演習Ⅱ 第7回 データの基本型 情報・知能工学系 山本一公
数値計算及び実習 第3回 プログラミングの基礎(1).
Handel-C基礎 および 7セグとマウスのハンドリング
Verilog HDL 12月21日(月).
基礎プログラミングおよび演習 第9回
第5回 ディジタル回路内の数値表現 瀬戸 ディジタル回路内部で,数を表現する方法(2進数)を学ぶ 10進数⇔2進数⇔16進数の変換ができる
テープ(メモリ)と状態で何をするか決める
情253 「ディジタルシステム設計 」 (2)modem2
地理情報システム論 第3回 コンピュータシステムおける データ表現(1)
香川大学工学部 富永浩之 情報数学1 第3-1章 多進法の原理と変換算法 香川大学工学部 富永浩之
情253 「ディジタルシステム設計 」 (4)WirelessComm4
情報のディジタル化 情報量の単位(bit) 文字 数値 アナログ情報.
第10回 Dフリップフロップ ディジタル回路で特に重要な D-FF 仕組みを理解する タイミング図を読み書きできるようにする 瀬戸
プログラミング演習Ⅰ 課題2 10進数と2進数 2回目.
情253 「ディジタルシステム設計 」 (7)Channel
情253 「ディジタルシステム設計 」 (6)BERT5
精密工学科プログラミング基礎Ⅱ 第3回資料 今回の授業で習得してほしいこと: 2次元配列の使い方 (前回の1次元配列の復習もします.)
ハードウェア記述言語による 論理回路設計とFPGAへの実装 2
第6回 よく使われる組合せ回路 瀬戸 重要な組合せ回路を理解し、設計できるようにする 7セグディスプレイ用デコーダ 加算回路・減算回路
行列による画像処理 デジタル表現論 担当者:劉 雪峰 2017年6月1日.
28 PICマイコンを用いた能動騒音制御系の制御性能
プログラミング演習I 2003年5月7日(第4回) 木村巌.
岩村雅一 知能情報工学演習I 第8回(C言語第2回) 岩村雅一
情報とコンピュータ 静岡大学工学部 安藤和敏
プログラミング演習Ⅱ 課題4第3週 画像処理 (1) ビット演算子.
デザイン情報学科 メディア情報設計 河原英紀
第4回 コンピューティングの要素と構成 平成22年5月10日(月)
Ibaraki Univ. Dept of Electrical & Electronic Eng.
Ibaraki Univ. Dept of Electrical & Electronic Eng.
デジタル画像とC言語.
第3章 演算装置.
音・音楽の設計と表現Ⅱ キーワード : サンプリング(標本化)、周波数、量子化 音は空気を伝わる波 → 音をデジタル(0と1の数値)にする。
計算機構成 第2回 ALUと組み合わせ回路の記述
9. 演算回路 五島 正裕.
コンピュータアーキテクチャ 第 7 回.
計算機構成 第3回 データパス:計算をするところ テキスト14‐19、29‐35
2013年度 プログラミングⅡ ~ 計算してみよう ~.
2015年度 プログラミングⅡ ~ 計算してみよう ~.
情報処理Ⅱ 第2回:2003年10月14日(火).
プログラミング演習I 2004年5月19日(第5回) 理学部数学科・木村巌.
4. システムの安定性.
基本情報技術概論(第2回) 埼玉大学 理工学研究科 堀山 貴史
基本情報技術概論(第2回) 埼玉大学 理工学研究科 堀山 貴史
データの表現 2進数 0と1を使う。 基数(基準になる数)が2. 101(2) かっこで2進数と示すことがある。
地理情報システム論(総)/ 国民経済計算論(商)
基本情報技術概論(第13回) 埼玉大学 理工学研究科 堀山 貴史
情253 「ディジタルシステム設計 」 (1)DigsysIntro1
情報処理Ⅱ 第2回 2005年10月14日(金).
情報処理Ⅱ 第2回 2006年10月13日(金).
9. 演算回路 五島 正裕.
精密工学科プログラミング基礎 第7回資料 (11/27実施)
情報処理Ⅱ 2006年11月24日(金).
情報処理Ⅱ 2005年10月28日(金).
ca-9. 数の扱い (コンピュータアーキテクチャとプロセッサ)
岩村雅一 知能情報工学演習I 第8回(後半第2回) 岩村雅一
岩村雅一 知能情報工学演習I 第8回(C言語第2回) 岩村雅一
プログラミング演習I 数値計算における計算精度と誤差
精密工学科プログラミング基礎Ⅱ 第2回資料 今回の授業で習得してほしいこと: 配列の使い方 (今回は1次元,次回は2次元をやります.)
情報処理Ⅱ 第2回 2004年10月12日(火).
6.2 高速フーリエ変換 (1)FFT(fast Fourier transform)とは
香川大学創造工学部 富永浩之 情報数学1 第3-3章 多進法での四則演算 香川大学創造工学部 富永浩之
Presentation transcript:

4点FFT設計 ファイヤー和田 知久 wada@ie.u-ryukyu.ac.jp 琉球大学・工学部・情報工学科 教授 ファイヤー和田 知久   wada@ie.u-ryukyu.ac.jp 琉球大学・工学部・情報工学科 教授   http://www.ie.u-ryukyu.ac.jp/~wada 2019/4/8

4点FFT FFT演算の内容をさらに理解するために、4点FFTを行列表現したものを示します。 N=4ですので、行列表現では4X4のTwiddle Factorが並ぶ行列ができます。Twiddle Factorは図6右に示すように、W0, W1,....の順で複素平面状の半径1の円周を回転します。 2019/4/8

4点FFT(2) Twiddle Factorの行列に数値を入れたものを以下に示します。 一行目は1が並び、これは同じ値が続く周波数0の回転に対応しています。 2行目は、1, -j, -1, jとなり、これは複素平面状での負の方向への1回転を示しています。 3行目は1, -1, 1, -1となり、これは複素平面状での2回転を示しています。 3行目は、1, j, -1, -jとなり、これは負の方向への3回転ですし、正の方向への1回転と考えることもできます。 すなわち、FFT演算とは複素数による回転を示す波形の周波数の異なるものそれぞれと、入力信号x(n)の内積計算をしていることになります。 2019/4/8

以下の演算をする4FFT回路を設計します。 % stage 3 =(4FFT) for nn = 0:4:60 % nnは0,4,8,…, 60となる意味 x3(nn+0) = x2(nn+0) +x2(nn+1)+x2(nn+2) +x2(nn+3); x3(nn+1) = x2(nn+0)-j*x2(nn+1)-x2(nn+2)+j*x2(nn+3); x3(nn+2) = x2(nn+0) -x2(nn+1)+x2(nn+2) -x2(nn+3); x3(nn+3) = x2(nn+0)+j*x2(nn+1)-x2(nn+2)-j*x2(nn+3); end; + 2019/4/8

動作波形 HEAD信号を先頭に、64点が入力される。 4点ごとに前頁で示した、演算を行う。 2019/4/8

4FFTのENTITY RESET: ‘1’でリセット EN: ‘1’の期間のみ動作 2019/4/8

固定小数点フォーマット 今回の課題では0.0625のような小数点以下の数をデジタル回路で取り扱う必要があります。たとえば4ビットの2進数”0111”ですが、小数点をどこの位置に置くかで表す値が変わってきます。たとえば、”01.11”ならば10進数表現では+1.75、”0111.”ならば、10進表現では+7です。 また、4ビットの2進数ですが、それが符号無し数すなわち正または0の数を表しているか、2の補数表現で正または負の数を表しているかを区別する必要があります。”11.10”は符号無し数であれば、10進表現で+3.50となり、2の補数表現であれば、10進表現で-0.50となります。 すなわち、同じ4ビットの2進数でも、「小数点の位置」と「符号無し表現か2の補数表現か」を明確にしないとまったく異なった数に対応してしまいます。 ここではSignal Processing Workbenchで用いられている固定小数点の属性表記方法を解説し、用います。 <8,2,t>と表記すると、その信号は 8 : 全体のビット数が8ビット 2 : 整数ビットが2ビット t : two's complement ということで2の補数表現、すなわち最上位ビットは符号ビットとなる という意味です。したがって、”01101111”なる8ビットの数の属性が<8,2,t>とすると、 01101111符号ビット整数部小数部ということになり、小数部は5ビットとなり、10進表現では+3.46875に対応します。 <8,2,u>と表記すると、その信号は 8 : 全体のビット数が8ビット 2 : 整数ビットが2ビット u : unsignedということで、符号無し数すなわち負の数を表さない という意味です。したがって、同じ8ビットの数”01101111”の属性が<8,2,u>とすると、 01101111整数部小数部ということになり、小数部は6ビットとなり、10進表現では+1.734375に対応します。 整数部のビット数が多いほど表現できる最大数すなわちレンジが大きくなり、小数部のビット数が多いほど表現できる最小数が小さくなり、解像度が向上します。 1 符号ビット 整数部 小数部 1 整数部 小数部 2019/4/8

4FFTのARCHITECTURE(1) 2019/4/8

Radix-4 computation unit Real Imag PASS or SWAP Complex Add/Sub Mult complex add : (a+bj)+(c+dj)= (a+c)+(b+d)j 1 complex add = 2 real add Complex mult : (a+bj)(c+dj) = (ac-bd)+(bc+ad)j 1 complex mult = 4 real mult + 2 real add 2019/4/8

4FFTのARCHITECTURE(1) 2019/4/8

4FFTのARCHITECTURE(動作波形) 2019/4/8

STAGE3 operation 2019/4/8

宿題7 4FFT設計 以下を参考に、4FFT回路を設計せよ! テンプレート配布 http://www.ie.u-ryukyu.ac.jp/~wada/cad06/stage3/stage3.vhd テストベンチ配布 http://www.ie.u-ryukyu.ac.jp/~wada/cad06/stage3/test_stage3.vhd 追加説明図面、回答例のプリント配布 http://www.ie.u-ryukyu.ac.jp/~wada/cad06/stage3/FFT4.pdf 2019/4/8

stage3.vhdコードの注意事項 unsigned と signed 演算を行うために、ライブラリはIEEE.std_logic_arith.allを使用し、加算の時にunsigned, signedを指定。 複素数jを乗じての加算は、I/Qの交代と符号変化で対応 サイズ7のアレイを使用、アレイのインデックスは整数である。 2019/4/8

test_stage3.vhdコードの注意事項 実数型realを使用 realのアレイを入力データとして使用 整数→std_logic_vector変換関数使用 ライブラリ IEEE.std_logic_arith.allに含まれる std_logic_vector →整数変換関数使用 整数→実数変換real使用 2019/4/8

人間コンパイラー(1) 1 0 1 0 1 0 1 0 1 0 D Q D Q D Q D Q D Q EN RESET 1 0 -- OUTHEAD GENERATION process ( CLK , RESET) begin if (RESET = '1') then HEAD(0) <= '0'; HEAD(1) <= '0'; HEAD(2) <= '0'; HEAD(3) <= '0'; HEAD(4) <= '0'; elsif (CLK'event and CLK = '1' ) then if ( EN = ‘1’ ) then HEAD(0) <= S3HEAD; HEAD(1) <= HEAD(0); HEAD(2) <= HEAD(1); HEAD(3) <= HEAD(2); HEAD(4) <= HEAD(3); end if; end process; S3OUTHEAD <= HEAD(4); S3HEAD HEAD(0) EN D Q RESET 1 0 HEAD(1) EN D Q RESET 1 0 HEAD(2) EN D Q RESET 1 0 HEAD(3) EN D Q RESET 1 0 HEAD(4)= S3OUTHEAD 2019/4/8

人間コンパイラー(2) 1 0 D Q -- 64 CYCLE COUNTER process ( CLK, RESET ) begin if (RESET = '1') then COUNT <= "000000"; elsif (CLK'event and CLK = '1' ) then if ( EN = ‘1’ ) then if (S3HEAD = '1') then else COUNT <= unsigned(COUNT) + '1'; end if; end process; D Q RESET 1 0 6 EN S3HEAD "000000" + "000001" CLK COUNT 2019/4/8