前田/メモ帳/デジタル回路
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
[[前田/メモ帳]]
*デジタル回路 [#n6c93cf9]
#contents
----
**PARTHENON合成系のメモ [#d10baa9a]
***システム全体の流れ [#x2bdd3de]
[sflソース]
↓
sflexp : 論理合成(ドントケア条件による論理簡単化,多段回路化等), module.1st
↓
opt_map : 論理最適化(回路のくくりだし,冗長部分の削除等), module.2nd
(+onset) 括り出された回路に対するトランスダクション法による論理簡単化
↓
rinv : インバータ削減, module.3rd
↓
opt_map : 論理最適化(テクノロジライブラリに対する最適化,物理的条件等), module.4th
↓
[ネットリスト]
***NLDとPCD [#k7dd35d8]
-NLD(Net List Description)によって、回路部品の接続関係が定義される。PCD(Physical Characteristic Description)ではセル情報に相当するものであり、負荷容量、遅延時間などの物理的特性の記述を行う。
-NLDは他のNLDやPCDを階層構造的に読み込む事も可能で、より高位なNLDの作成も可能。
-最下層はPCDによって定義される必要がある。
NLD→...NLC...←NLC
..
↓
PCD
***circuit宣言されたモジュール [#r183bf78]
-/usr/local/parthenon/sfl_lib.dir/内に存在するcirファイルの記述に一致する記述を合成対象のファイルで見つけた場合、/usr/local/parthenon/sfl_lib.src/内に存在する同名のファイルの中身と置き換える。
**Verilog HDLのプログラミングメモ [#lc8dc901]
-alwaysによる組み合わせ回路の注意点
--case文では必ずdefaultを記述する
--if文では必ずelseを記述する
--センシティビティリストには、always文内で使われている条件式及び代入文の右辺値の信号を必ず記述
**パイプラインにおけるハザードのまとめ [#f948ebf9]
-構造ハザード (structural hazard)
--例えばマルチサイクルにおいてPCの加算でのALU使用と演算命令によるALUの使用で資源の競合が発生し問題が生じること
---解決策~
・パイプラインストール(nop等)~
・資源を増やす/競合しないようにステージ分割をする
-制御ハザード (control hazard)
--分岐命令等で分岐の成立/不成立が不明な為、後続する命令を実行してしまうと問題が発生する
---解決策~
・パイプラインストール(nop等)~
・遅延分岐(遅延スロットにより依存性の無い命令を実行)
-データハザード (data hazard)
--連続して演算命令を行う場合、前の演算の結果を必要であるが参照できない為に問題が発生する
---解説策~
・パイプラインストール(nop等)~
・フォワーディング回路を追加
-被ロード・データ・ハザード (load-use data hazard)
--メモリに存在する値を演算の値として必要とするが参照できない為に問題が発生する
---解決策~
・パイプラインストール(nop等)~
・遅延ロード
**パイプラインの段数の考察 [#kaeffd77]
IF: 命令フェッチ EX: 命令実行 ID: 命令デコード OF: オペランドフェッチ WB: ライトバック(OS: オペランドストア) MA: メモリアクセス AC: アドレス計算
-2 段
--IF + EX (eg. 80286, RISC-I)
-3 段
--IF + ID/OF + EX/WB (eg. MC68020)
--IF + ID/OF/EX + WB (eg. RISC-II)
-4 段
--IF + ID/OF + EX + WB (eg. SPARC)
-5 段
--IF + ID/OF + EX + MA + WB (eg. R2000)
-6 段
--IF + ID + AC + OF + EX + WB (eg. 68040)
**アドレッシングモードのまとめ [#o6cc63ec]
そもそもアドレッシングと言うが、分岐命令に限らず機械語でアドレスや定数をどのように扱うか、ということ。
-レジスタアドレッシング : jr 命令~
--オペランドにレジスタを取る
-ベース相対アドレッシング(ディスプレースメント・アドレッシング) : sw/lw 命令~
--命令中に指定した定数とレジスタの和によって、オペランドが記憶されているメモリの位置を示す
-即値アドレッシング : addi, slti等~
--命令中に指定した定数をオペランドとする
-PC相対アドレッシング : beq/bne命令~
--PCと命令中に指定した定数との和/差によってアドレスを示す
-疑似直接アドレッシング : j/jal 命令~
--命令中のオペランドとPCの上位ビットを連結したものがジャンプアドレスとなる
**NANDゲートとNORゲート設計の比較 [#xb06cbdf]
-一般に電子の移動速度に比べて正孔の移動速度の方が遅い。~
なので出力駆動に多段接続されたPMOSを用いるNORゲートは遅い。~
同時に多段接続によって電圧降下が生じ、駆動能力が低下する。~
(対してNANDゲートは出力が並列である)
**DE2 Boardについて [#l4d5d899]
-DE2 Boardスペック
--Altera社Cyclone II 2C35 FPGA (35000 LE付)
--Altera社シリアル・コンフィギュレーションデバイス
---(EPCS16) Cyclone II 2C35用
--プログラム&ユーザAPIコントロール用
---オンボード・ビルトインUSBブラスタ
--JTAGモード/ASモード対応
--8Mバイト(1M x 4 x 16) SDRAM
--512Kバイト(256Kx16) SRAM
--4Mバイト・フラッシュメモリ
---(4Mバイトまでアップグレード可)
--SDカードソケット
--押ボタンスイッチx4
--DPDTスイッチ x18
--緑色ユーザLED x9
--赤色ユーザLED x18
--16x2 LCDモジュール
--50MHzオシレータと外部クロックソース用
---27MHzオシレータ
--24ビットCD品質オーディオCODEC
---(ラインイン、ラインアウト、マイクロインジャック付)
--VGA DAC (10ビット高速DACs)
---VGAアウトコネクタ付
--TV デコーダ(NTSC/PAL)とTVインコネクタ
--10/100イーサネットコントローラ ソケット付
--USB Host/Slave コネクタ (タイプAとタイプB)
--RS-232 トランシーバと9ピンコネクタ
--PS/2 マウス/キーボード・コネクタ
--IrDAトランシーバ
--40-pin拡張ヘッダ(ダイオードプロテクション付) x2
-スライドスイッチとタクトスイッチについて
--スライドスイッチは下に下ろした状態でOFF(0),上に上げた状態でON(1)
--タクトスイッチは押さない状態でON(1),押した状態でOFF(0)
**Quartus [#m270c6b9]
-各種ファイル拡張子解説
--.qpf : Quartus II Project File
---Quartus IIのプロジェクトデータのヘッダ。プロジェクトを開く場合はこのファイルを実行。
--.qsf : Quartus II Setting File
---Quartusのプロジェクトの主要設定ファイル。プロジェクトに含まれているファイルや、対象デバイス、ピン配置など色々記述されている。
--.qws : Quartus II Workspace File
--.sof : SRAM Object File
--.pof : Programming Object File
-内部RAMを合成する際にエラーとなる問題の解消方法
--プロジェクト名.qsfの適当な位置に以下の内容を追加
--set_parameter -name CYCLONEII_SAFE_WRITE "\"RESTRUCTURE\""
**クロックスキュー [#ee4bbd70]
-同期式回路においてクロックの伝搬に差がでること。電子の伝搬速度は光速であることから約30万kmと仮定する。同時に対象デバイスの動作周波数が3Ghzだとすると、1Hzで許される配線の伝搬時間は時間はT=1/fであり、それに電子の伝搬速度を掛け合わせると10cmとなる。
-例えばレジスタ間の遅延と同様にして10cm内で伝搬が収まる回路という制約を受けることにもなる。
**クロックツリー [#rbbf4102]
-クロックスキューを低減するために入力や配線の途中にバッファを配置する処理をクロックツリー合成と言い、それによって生成されるクロックパスのことをクロックツリーと言う。
-クロックツリーには、Hツリー型やFish-Bone型や、その二つを併用するタイプなどがある。
**セットアップタイムとホールドタイム [#qc98b05a]
-クロックのエッジが与えられる前にFFの入力への値を確定しなければならない。これをセットアップタイム(&texvc(t_{setup});)と言う。
-逆にクロックのエッジの後に、ホールドタイム(&texvc(t_{hold});)だけFFは値を保持しなければならない。
-これらの条件が守れない場合はメタステーブルという、準安定状態に移行し、発信等の誤動作を引き起こす場合がある。
**並列加算器 [#ye48927e]
-機能セルnbit目の出力はnのプロパゲーションとn-1のジェネレーションをXOR
**転送規格 [#fbaf56bc]
-SSTL (Stub Series Termination Logic)
--高速伝送用I/O規格。DDR SDRAMのインターフェイス規格などに採用。
-HSTL (High Speed Transceiver Logic)
--信号の振幅を小さくすることで入出力の高速インターフェースを実現する技術。DDR SRAMやQDR/QDR II SRAMのI/O規格などに採用。
-LVDS (Low Voltage Differential Signaling)
--差動方式のI/O規格。振幅を350mVとし、低消費電力で高速に伝送可能。ビデオ信号インターフェースのDVIはI/O規格にLVDSを採用。
-RSDS (Reduced Swing Differential Signaling)
--主に解像度がVGAとUXGAの間のディスプレイ・アプリケーション向けに米国National Semiconductor社が定義した信号規格。電気的特性についてはLVDSと同じであるが、電圧振幅が小さいため消費電力の点で有利でありEMI(電磁放射ノイズ)も減少する。
-LVPECL (Low-voltage positive emitter-coupled logic)
--低電圧正エミッタ結合論理
終了行:
[[前田/メモ帳]]
*デジタル回路 [#n6c93cf9]
#contents
----
**PARTHENON合成系のメモ [#d10baa9a]
***システム全体の流れ [#x2bdd3de]
[sflソース]
↓
sflexp : 論理合成(ドントケア条件による論理簡単化,多段回路化等), module.1st
↓
opt_map : 論理最適化(回路のくくりだし,冗長部分の削除等), module.2nd
(+onset) 括り出された回路に対するトランスダクション法による論理簡単化
↓
rinv : インバータ削減, module.3rd
↓
opt_map : 論理最適化(テクノロジライブラリに対する最適化,物理的条件等), module.4th
↓
[ネットリスト]
***NLDとPCD [#k7dd35d8]
-NLD(Net List Description)によって、回路部品の接続関係が定義される。PCD(Physical Characteristic Description)ではセル情報に相当するものであり、負荷容量、遅延時間などの物理的特性の記述を行う。
-NLDは他のNLDやPCDを階層構造的に読み込む事も可能で、より高位なNLDの作成も可能。
-最下層はPCDによって定義される必要がある。
NLD→...NLC...←NLC
..
↓
PCD
***circuit宣言されたモジュール [#r183bf78]
-/usr/local/parthenon/sfl_lib.dir/内に存在するcirファイルの記述に一致する記述を合成対象のファイルで見つけた場合、/usr/local/parthenon/sfl_lib.src/内に存在する同名のファイルの中身と置き換える。
**Verilog HDLのプログラミングメモ [#lc8dc901]
-alwaysによる組み合わせ回路の注意点
--case文では必ずdefaultを記述する
--if文では必ずelseを記述する
--センシティビティリストには、always文内で使われている条件式及び代入文の右辺値の信号を必ず記述
**パイプラインにおけるハザードのまとめ [#f948ebf9]
-構造ハザード (structural hazard)
--例えばマルチサイクルにおいてPCの加算でのALU使用と演算命令によるALUの使用で資源の競合が発生し問題が生じること
---解決策~
・パイプラインストール(nop等)~
・資源を増やす/競合しないようにステージ分割をする
-制御ハザード (control hazard)
--分岐命令等で分岐の成立/不成立が不明な為、後続する命令を実行してしまうと問題が発生する
---解決策~
・パイプラインストール(nop等)~
・遅延分岐(遅延スロットにより依存性の無い命令を実行)
-データハザード (data hazard)
--連続して演算命令を行う場合、前の演算の結果を必要であるが参照できない為に問題が発生する
---解説策~
・パイプラインストール(nop等)~
・フォワーディング回路を追加
-被ロード・データ・ハザード (load-use data hazard)
--メモリに存在する値を演算の値として必要とするが参照できない為に問題が発生する
---解決策~
・パイプラインストール(nop等)~
・遅延ロード
**パイプラインの段数の考察 [#kaeffd77]
IF: 命令フェッチ EX: 命令実行 ID: 命令デコード OF: オペランドフェッチ WB: ライトバック(OS: オペランドストア) MA: メモリアクセス AC: アドレス計算
-2 段
--IF + EX (eg. 80286, RISC-I)
-3 段
--IF + ID/OF + EX/WB (eg. MC68020)
--IF + ID/OF/EX + WB (eg. RISC-II)
-4 段
--IF + ID/OF + EX + WB (eg. SPARC)
-5 段
--IF + ID/OF + EX + MA + WB (eg. R2000)
-6 段
--IF + ID + AC + OF + EX + WB (eg. 68040)
**アドレッシングモードのまとめ [#o6cc63ec]
そもそもアドレッシングと言うが、分岐命令に限らず機械語でアドレスや定数をどのように扱うか、ということ。
-レジスタアドレッシング : jr 命令~
--オペランドにレジスタを取る
-ベース相対アドレッシング(ディスプレースメント・アドレッシング) : sw/lw 命令~
--命令中に指定した定数とレジスタの和によって、オペランドが記憶されているメモリの位置を示す
-即値アドレッシング : addi, slti等~
--命令中に指定した定数をオペランドとする
-PC相対アドレッシング : beq/bne命令~
--PCと命令中に指定した定数との和/差によってアドレスを示す
-疑似直接アドレッシング : j/jal 命令~
--命令中のオペランドとPCの上位ビットを連結したものがジャンプアドレスとなる
**NANDゲートとNORゲート設計の比較 [#xb06cbdf]
-一般に電子の移動速度に比べて正孔の移動速度の方が遅い。~
なので出力駆動に多段接続されたPMOSを用いるNORゲートは遅い。~
同時に多段接続によって電圧降下が生じ、駆動能力が低下する。~
(対してNANDゲートは出力が並列である)
**DE2 Boardについて [#l4d5d899]
-DE2 Boardスペック
--Altera社Cyclone II 2C35 FPGA (35000 LE付)
--Altera社シリアル・コンフィギュレーションデバイス
---(EPCS16) Cyclone II 2C35用
--プログラム&ユーザAPIコントロール用
---オンボード・ビルトインUSBブラスタ
--JTAGモード/ASモード対応
--8Mバイト(1M x 4 x 16) SDRAM
--512Kバイト(256Kx16) SRAM
--4Mバイト・フラッシュメモリ
---(4Mバイトまでアップグレード可)
--SDカードソケット
--押ボタンスイッチx4
--DPDTスイッチ x18
--緑色ユーザLED x9
--赤色ユーザLED x18
--16x2 LCDモジュール
--50MHzオシレータと外部クロックソース用
---27MHzオシレータ
--24ビットCD品質オーディオCODEC
---(ラインイン、ラインアウト、マイクロインジャック付)
--VGA DAC (10ビット高速DACs)
---VGAアウトコネクタ付
--TV デコーダ(NTSC/PAL)とTVインコネクタ
--10/100イーサネットコントローラ ソケット付
--USB Host/Slave コネクタ (タイプAとタイプB)
--RS-232 トランシーバと9ピンコネクタ
--PS/2 マウス/キーボード・コネクタ
--IrDAトランシーバ
--40-pin拡張ヘッダ(ダイオードプロテクション付) x2
-スライドスイッチとタクトスイッチについて
--スライドスイッチは下に下ろした状態でOFF(0),上に上げた状態でON(1)
--タクトスイッチは押さない状態でON(1),押した状態でOFF(0)
**Quartus [#m270c6b9]
-各種ファイル拡張子解説
--.qpf : Quartus II Project File
---Quartus IIのプロジェクトデータのヘッダ。プロジェクトを開く場合はこのファイルを実行。
--.qsf : Quartus II Setting File
---Quartusのプロジェクトの主要設定ファイル。プロジェクトに含まれているファイルや、対象デバイス、ピン配置など色々記述されている。
--.qws : Quartus II Workspace File
--.sof : SRAM Object File
--.pof : Programming Object File
-内部RAMを合成する際にエラーとなる問題の解消方法
--プロジェクト名.qsfの適当な位置に以下の内容を追加
--set_parameter -name CYCLONEII_SAFE_WRITE "\"RESTRUCTURE\""
**クロックスキュー [#ee4bbd70]
-同期式回路においてクロックの伝搬に差がでること。電子の伝搬速度は光速であることから約30万kmと仮定する。同時に対象デバイスの動作周波数が3Ghzだとすると、1Hzで許される配線の伝搬時間は時間はT=1/fであり、それに電子の伝搬速度を掛け合わせると10cmとなる。
-例えばレジスタ間の遅延と同様にして10cm内で伝搬が収まる回路という制約を受けることにもなる。
**クロックツリー [#rbbf4102]
-クロックスキューを低減するために入力や配線の途中にバッファを配置する処理をクロックツリー合成と言い、それによって生成されるクロックパスのことをクロックツリーと言う。
-クロックツリーには、Hツリー型やFish-Bone型や、その二つを併用するタイプなどがある。
**セットアップタイムとホールドタイム [#qc98b05a]
-クロックのエッジが与えられる前にFFの入力への値を確定しなければならない。これをセットアップタイム(&texvc(t_{setup});)と言う。
-逆にクロックのエッジの後に、ホールドタイム(&texvc(t_{hold});)だけFFは値を保持しなければならない。
-これらの条件が守れない場合はメタステーブルという、準安定状態に移行し、発信等の誤動作を引き起こす場合がある。
**並列加算器 [#ye48927e]
-機能セルnbit目の出力はnのプロパゲーションとn-1のジェネレーションをXOR
**転送規格 [#fbaf56bc]
-SSTL (Stub Series Termination Logic)
--高速伝送用I/O規格。DDR SDRAMのインターフェイス規格などに採用。
-HSTL (High Speed Transceiver Logic)
--信号の振幅を小さくすることで入出力の高速インターフェースを実現する技術。DDR SRAMやQDR/QDR II SRAMのI/O規格などに採用。
-LVDS (Low Voltage Differential Signaling)
--差動方式のI/O規格。振幅を350mVとし、低消費電力で高速に伝送可能。ビデオ信号インターフェースのDVIはI/O規格にLVDSを採用。
-RSDS (Reduced Swing Differential Signaling)
--主に解像度がVGAとUXGAの間のディスプレイ・アプリケーション向けに米国National Semiconductor社が定義した信号規格。電気的特性についてはLVDSと同じであるが、電圧振幅が小さいため消費電力の点で有利でありEMI(電磁放射ノイズ)も減少する。
-LVPECL (Low-voltage positive emitter-coupled logic)
--低電圧正エミッタ結合論理
ページ名: