2010年8月27日金曜日

PIC PICKit3

<Microchip リンク>

PICkit3ポスター
PICkit3ユーザーズガイド
PICkit3 Debug Express C Lesson

<概要>
  • PICのプログラマー/デバッガでありMPLab8.2以降で操作できる
  • プログラマコネクタの端子機能

  • LED表示



  • サポート内容


<操作手順>

  • ターゲットとの接続

  • プログラムとデバッグに必要な3ピン(Vpp/PGC/PGD)を接続しVDD/GNDを接続たら完了

  • PICkitからの給電と、外部電源の2種の電源供給に対応

  • 外部供給を推奨

  • PICkitからの給電は30mAまで



  • PGC/PGDはPULL-UPしないこと:PICkit内に4.7kΩのPull-Downが入っている

  • PGC/PGDにコンデンサをつけないこと:プログラム/デバッグの高速動作を阻害する

  • Vppにコンデンサをつけないこと:Vppの高速動作を阻害する、Pull-Upだけで十分

  • PGC/PGDにダイオードをつけないこと:双方向通信
  • デバッギング要件
   - PICkit3がMPLabIDEと通信する
   - Vpp、PGC、PGD、VSS、VDD が接続されている

   - ターゲットデバイスが通電しファンクションが動作している、オシレータが動いている

   - コンフィグレーションレジスタが正しく設定されている
     オシレータが内部、外部、etc
     WDTがディセーブルにすること
     コードプロテクションはディセーブルにすること
     テーブルリ-ドプロテクションはディセーブルにすること

   - LVPはディセーブルにすること

  • デバッガの導入シーケンス→デバッグ詳細
   - デバッガをPICkit3に設定 : Debugger>Select Tool>PICkit 3
   - アプリケーションコードはデバッガ用にコンパイル : Project>Build>Configuration>Debug
   - プログラム書き込み : Debugger>Program
   - ”debug executive” program がメモリ後半エリアに書き込まれる
     デバイスによっては専用エリアに書き込まれるものもある
     ユーザープログラムは”debug executive” program のエリアを使用することはできない
   - “in-circuit debug” registers がイネーブルになる
   - VPP/MCLR をLowにしてターゲットデバイスをリセット
   - デバッガスタートDebugger>Run

  • デバッガスタートでリセットベクタからプログラムがスタート

  • ブレークポイントのアドレスまでプログラムが動作するとプログラムがhaltする
  • プログラミング
   - ヘッダボードなしでプログラムできる
   - プログラマをPICkit3に設定 : Programmer>Select Programmer
   - プログラムはリリース用にする : Project>Build Configuration>Release.
   - Programmer>Program は Debugger>Program と異なりin-circuit debug registersをディセーブルにする
   - プログラム後に#MCLRをトグルする
   - ICPSを用いてプログラムするのでVpp、PGC、PGDの接続が必要
   - プログラムにクロックは不要
   - コードプロテクション、WDT、テーブルリードプロテクション等の全てのモードのプログラムが可能
   - 
   - 


SIMetrix/SIMPLIS 特徴

<デバイスモデルの組み込み>
  • デバイスモデルは電気的特性を規定するテキストファイル
  • .MODEL、.SUBCKTで始まる文
  • 主要半導体メーカーが自社製品のデバイスモデルをウェブサイトで公開
  • SIMetrixは2300種類の市販デバイスのシンボル情報を書き込んだデータベース(all.cat)があり、シンボルとの紐付けは自動
<充実したグラフ表示機能>
  • 拡大/縮小
  • 座標軸の追加/削除
  • グラフ画面の追加/削除
  • カーソルによる値の読み取り
  • 測定値の表示(電圧/電流/消費電力/-3dBカットオフ周波数/高調波ひずみ率)
  • 解析終了後に任意のポイントの電圧/電流を表示できる
<その他>
  • ビヘイビアモデルで大規模システムを高速にシミュレーション

2010年8月26日木曜日

SIMetrix/SIMPLIS CQ版コンテンツ

<バージョン>
  • 5.0を使用する
<ライブラリ>
  • toragi.lib 1S1588、2SC1815、理想OPアンプ等
  • tk.lib 日本製トランジスタのライブラリ
  • その他のライブラリは真空管のライブラリ
<デバイスモデルのインストール>
※8章をみたらココに記述のこと!!

<トランスのシンボルライブラリ>
  • 収録フォルダ symbol
<シミュレーション用回路図ファイル>
  • 収録フォルダ sch

SIMetrix/SIMPLIS 概要

<SIMetrix解析の種類>
  • AC解析:周波数特性のシミュレーション
  • DC解析
  • 過渡解析  :オシロスコープで波形を見る感覚
  • 雑音解析
  • フーリエ変換  :周波数成分解析
  • マルチステップ解析(パラメトリック解析の拡張)
  • モンテカルロ解析 :素子値のばらつきの影響解析
  • ポールゼロ解析
  • 温度解析
  • 感度解析
  • PSPICEより収束性がよい→スイッチング回路のシミュレート得意
<SIMPLIS>
  • AC解析
  • 過渡解析
  • POP解析
  • ボーデ線図が簡単に描ける
  • スイッチング電源回路用高速シミュレータ

<CQ版>
  • アナログノード数 120個
  • オペアンプは内部のサブサーキットの規模で決まるが約3~4個
  • シンボルは170種類程度ある
  • シンボルエディタが使えユーザシンボル作成可能
  • アナログビヘイビアモデルも使用可能
  • 信号源(電流源、電圧源)の数には制限がない→FETを電流源にツェナーダイオードを電圧源に変更して扱う回路規模を大きくできる
  • OPアンプ850種類、N-MOSFET1100種類、P-MOSFET250種類のデバイスモデル(メーカー純正)
  • PSPICE形式、HSPICE形式のデバイスモデルがドラッグ&ドロップで取り込める
  • SIMertix+SIMPLISの構成、回路図エディタを供用、シミュレートは2者を切り替えて行えるがほとんどのシミュレートはSIMetrixで可能

2010年8月20日金曜日

論理回路設計 注意

  • ゲーテッド・クロックのマスク信号はクロックの逆エッジに同期した信号で無ければならない。

Verilog-HDL always @()構文

【論理合成可能なイベント式】
イベント式意味
@(posedge signal1 or negedge signal2)signal1が立ち上がった 又は signal2が立ち下った場合に begin ~ end内を実行
@(signal1 or signal2)signal1 又は signal2に変化があった場合に begin ~ end内を実行

  • クロックとリセットでの記述例は always @(posedge clk or negedge xrst)  となる。
  • 非同期リセットはレベルで動作するので negedge xrst には違和感があるが、negedgeを外して記述すると両エッジで動作してしまうし、この場合clkの立ち上がりの動作との区別が付かない。その為この記述になる。

Verilog-HDL for/while/repeat文の例

// for/while/repeat文の例
function parity
  input [7:0] data;
  reg   [3:0] sum;
  integer i;
  begin
    sum = 0;

    //for文で記述
    for(i=0; i<8; i=i+1) begin
      sum = sum + data[i];
    end

    //while文で記述
//  while(i<8) begin
//    sum = sum + data[i];
//    i = i+1;
//  end

    //repeat文で記述
//  repeat(8) begin
//    sum = sum + data[i];
//    i = i+1;
//  end

    parity = sum[0];
  end
endfunction

Verilog-HDL function記述

・Verilog HDLで組み合わせ回路を記述するのにifやcase文を使用する場合、ファンクションとして別に定義する必要がある。
・C言語でいう関数に相当する。
・always記述も可能。
・ファンクション内で一時的に使用するローカル信号はreg宣言したものを使用する。

・ファンクションの入力信号を省略すると大変!
・入力信号と返却値のビット幅には要注意!
・引数の記述順はfunction内での入力信号定義順!

//呼び出し側
assign out = mux(sel,in0,in1,in2,in3);//入力信号全て記述のコト!!

//マルチプレクサ(case文記述)
function [3:0] mux;
 input [1:0] sl;
 input [3:0] d0,d1,d2,d3;
  begin
  case(sel)
   0         : mux=d0;
   1         : mux=d1;
   2         : mux=d2;
   3         : mux=d3;
   default : mux=4'bxxxx;
  endcase
 end
endfunction

//マルチプレクサ(if文記述)
function [3:0] mux;
 input [1:0] sl;
 input [3:0] d0,d1,d2,d3;
 begin
  if(sel==0)       mux=d0;
  else if(sel==1) mux=d1;
  else if(sel==2) mux=d2;
  else if(sel==3) mux=d3;
  else                 mux=4'bxxxx;
 end
endfunction

Verilog-HDL 条件演算子でマルチプレクサ

// 4to1のマルチプレクサを条件演算子で記述
assign out = (sel==0)? in0:
                   (sel==1)? in1:
                   (sel==2)? in2:
                   (sel==3)? in3: 4'bx

Verilog-HDL モジュール定義の骨格

module モジュール名称 (ポートリスト);

  input 入力信号名;
  output 出力信号名;
  inout 双方向信号名;

  wire 内部信号名;
  reg 内部信号名;

  パラメータ宣言

  ポート宣言

  モジュール内信号定義

  function宣言

  インスタンシエーション

  assign文

  always文

  initial文 ※

endmodule

※論理合成の対象外

2010年8月17日火曜日

Verilog-HDL 演算子

【算術演算】
記号演算論理合成
+加算
-減算
*乗算
/除算
%剰余
**べき乗

【関係演算】
記号演算論理合成
<小なり
<=小なりイコール
>大なり
>=大なりイコール

【等号/不等号演算】
記号演算論理合成
==一致
!=不一致
===一致(X,Zも含む)×
!==不一致(X,Zも含む)×

【シフト演算】
記号演算論理合成
<<論理左シフト
>>論理右シフト
<<<算術左シフト○※
>>>算術右シフト○※

【論理演算】
記号演算論理合成
!論理否定
&&論理積
||論理和

【ビット演算】
記号演算論理合成
~NOT
&AND
|OR
^EXOR
~^EXNOR

【リダクション演算】
記号演算論理合成
&AND
~&NAND
|OR
~|NOR
^EXOR
~^EXNOR

例えば8ビット幅の信号Aの全ビットが1である事をチェックするためには、次の様なAND演算の式になる。
A[7] & A[6] & A[5] & A[4] & A[3] & A[2] & A[1] & A[0];
これをリダクション演算子を使うと
&A;
とシンプルに記述が可能。記号はビット演算子を同じであり文脈から判断される。


【その他】
記号演算論理合成
? :条件演算
{ }連結演算

【優先順位】
優先順位演算子
高い! & ~& | ~| ^ ~^ + - (単項演算)
* / %
+ -
<< >> <<< >>>
< <= > >=
== != === !===
& ~& ~ ~^
| ~|
&&
||
低い? :

Verilog-HDL 基本文法

■識別子
・信号や定数モジュール名、パラメータ等につける名前のこと
・アルファベット、数字、_(アンダースコア)、$(ダラー)が使用可能
・識別子の先頭はアルファベットかアンダースコア
・予約語は使えない

■論理値
0:論理0
1:論理1
Z または z :ハイ・インピーダンス
X または x :不定値

■数値表現
ビット数'基数に続き数値
4'b0101 4ビット バイナリ 0101
16'sh12AB 符号付 16ビット ヘキサ 12AB(Verilog2001)
123 32ビット 10進数 123
・10進数は不定やハイインピーダンス指定が出来ない
・読みやすさ向上のため任意の場所を _ で区切ると良い
・ビット長表記が無いと32ビットとして処理

■wire
・ネット型データ(信号)
wire xrst, clk; //2つの異なる名前のwire型信号
wire [7:0] dat1, dat2;//8本のバス状信号から成るwire型信号2組

・ビットフィールド
wire [15:0] dat; //と宣言されているとして
dat[0] //datの0ビット目1本の信号
dat[15:8] //datの15~8の8本の信号
dat //datの16本の信号全体

■reg
・レジスタ型データ(信号)
宣言とビットフィールドについてはwireをregに読みかえて同じ