投稿

2014の投稿を表示しています

RaspberryPiにイロイロ繋いでみるかな(キャラクタLCD)

イメージ
ご無沙汰だったRaspberryに何か繋いでみようと、アキバで漁ってきたパーツ達 異常気象が多いし台風シーズンも近づいてるし、温度や気圧でも観測してみるか・・・ 特価!に乗せられて手に取ってしまったギアードDCモーター DCモータを繋ぐなら、ついでにと、5Vで動きそうな小さなステッピングモータも ■まずはキャラクタLCDを繋いみた 型番  SC1602BBWB‐XA‐LB‐G 3.3V動作のバックライト付き16文字x2行のキャラクタLCDです。 RaspberryPiは3.3VIOですので、信号レベル変換が不要なので直結可能です。 GPIOを使って、RS、E、4bitデータの6本で接続しました。IOピンは貴重ですからね(笑) これで、ディスプレイに繋がなくてもプログラムのステータス表示などができるぞよ! (続く)

Quartus2 V13.1 ~Tips編 VHDL記述による合成結果の違い~

イメージ
 HDL記述は、高級言語でのプログラム記述と同様に、コンパイラの癖や性能によって、合成結果(回路、規模など)が大きく異なる場合があります。 デジタル設計での必須アイテムであるカウンタの記述にて、Quartus2の合成結果を見比べてみました。 ■仕様 4bitの13進同期式カウンタ 非同期リセット入力有り カウントイネーブル入力有り ■トップ回路図 ■COUNTERのVHDL記述 カウンターの出力変数をintegerで定義しています。桁数が大きい時やシーケンサなどを記述する時には読みやすいので使いやすいですね。 ARCHITECTURE counter_architecture OF counter IS signal counto : integer; BEGIN count <= CONV_STD_LOGIC_VECTOR(counto,4); process (clk, reset, enable) begin if (reset = '1') then counto <= 0; elsif (rising_edge(clk)) then if (enable = '1') then if(counto = 12) then counto <= 0; else counto <= counto + 1; end if; end if; end if; end process; END counter_architecture; ■COUNTER1のVHDL記述 integerを使用せず、std_logic_vectorで記述したものです。ビット幅が大きくなると間違い易い記述です。 ARCHITECTURE counter1_architecture OF counter1 IS signal counto : STD_LOGIC_VECTOR(3 downto 0); BEGIN counto1 <= counto; process (clk, res

Quartus2 V13.1 ~Tips編 Eclipseへのプロジェクト読み込み~

イメージ
  以前の投稿 にてSigasiのToolchains設定にてQuartus2のパス設定をしましたが、この設定で何が起きるのか不明でしたが、Quartus2で作成したプロジェクトをEclipseにインポートできる事が判りました。 Eclipseを起動し、パースペクティブはVHDL(Sigasi)を選択しておきます。  Quartus2側でHDLソースを作成したり編集した場合には、以下の操作で同期されます。

Quartus2 V13.1 ~Tips編 波形ファイルの変換~

イメージ
 Quartus2の波形ファイルからModelsim-Alteraでのシュミレーションファイルの自動生成が可能です。作成したシュミレーション波形をテンプレートとして、本格的なテストベンチをModelsim-Altera上で作成するような場合には便利かも? 注意点 生成されるテストベンチはVerilog-HDLのみです。 Quartus2のEDATool設定をVHDLとしていても、自動的にVerilog-HDLに切り替わってしまいます。 modelsim-alteraはVHDLとVerilog-HDLの混在シュミレーションはできないので、テストベンチをVHDLで記述したい場合は、modelsim-altera上での作成が必要です。 ■波形エディタを起動して変換します。 ■シュミレーション記述ファイル(***.vt)とスクリプトファイル(***.do)が生成されます。 ■スクリプトファイルには些細ですが致命的なバグがありますので、編集する必要があります。 改行が抜けて繋がってしまっている! テキストエディタで改行する。

Quartus2 V13.1 ~シュミレーション編 ファンクションSIMとタイミングSIM~

イメージ
ファンクションシュミレーションとタイミングシュミレーションがありますがその違いを見てみます。 まずは相違点が出やすい回路に書き換えます。 ■回路変更とシンボルの更新 DFFの出力に反転出力「nq」を追加記述しました。 コンパイルを掛けたのち、シンボルを再作成します。 DFFを使用している上位の回路図のシンボルを更新します。 nq出力が回路図上のシンボルに現れました。 分周回路に書き換えます。 ■ファンクションSIMとタイミングSIMの比較 ファンクションSIM(CLK=10MHz) 回路設計通り分周出力が得られています。 タイミングSIM(CLK=10MHz) ファンクションSIMと同様に分周出力が得られています。 ファンクションSIM(CLK=1GHz) 正常に分周回路として動作しています。 本当にMAX2内のDFFは1GHzのクロック入力で動作するのでしょうか? タイミングSIM(CLK=1GHz) 全く動作していませんね。  MAX2の紹介ページ によりますと、内部クロックは最大300MHzと書かれていますのでCLKを約300MHzにしてみましたところ動作しました。 タイミングSIM(300MHz) 設計した回路が仕様通りの機能を果たしているかのロジカル検証はファンクションシュミレーションで行い、半導体(FPGAやASIC)にインプリメントする段階においては、使用するデバイスで正常動作するかをタイミングシュミレーションにて検証する必要があります。 (続く)

Quartus2 V13.1 ~シュミレーション編 波形エディタ入力~

イメージ
波形エディタで入力信号を定義して回路動作をシュミレーションする方法  ■波形エディタへの端子定義 まずは、どの回路に対してシュミレーションを行うのか決めます。 デバイスレベル(プロジェクトの最上位)でも、任意の下層の回路図やHDL回路でも可能です。 シュミレーションする回路をTop-Level Entityにセットします。 波形ファイルを作成します。 波形エディタが開きますので、右クリックでメニューを表示して「Insert・・・」を選択します。 Node Finder で回路に定義されている端子を検索します。 「List」をクリックすると全端子がリストアップされます。 中央の矢印を使って波形ファイルに表示させる端子を定義(右側ウィンドウ)します。 波形ファイルに端子が定義されました。 ■テストベンチの作成 波形エディタの機能を使って入力信号にテストベンチ波形を作成します。 ■Quartus2シュミレータの実行 ※実はmodelsimを使用しているようで、インストールした状態のままでは、modelsimが見つからないとの実行エラーが出ました。 Toolsメニュー内のOptionsを選択します。 上記の様にパスを書き換えます。 無事にファンクションシュミレーションが実行されました。 タイミングシュミレーション(ゲート遅延や配線遅延を含むシュミレーション)も実行されました。 今回のシュミレーションは、定義した入力信号波形によって、記述した回路がどの様に動作したかという出力波形を人間が見て、回路をデバッグする方法です。 しかし、実際の設計においては様々な要求仕様があります。 例えば、設計しているFPGAにCPUやメモリ等の他のデバイスが接続される場合は、そのデバイスとのインターフェイス仕様やタイミング仕様を満たしていなければNGです。 又、データを加工したり演算したりする回路においては、様々な組み合わせのデータが正しく仕様通りに加工、演算されているか?を検証しなければなりません。 入力信号だけでなく、出力信号に期待値(仕様通りの正しい出力)を定義してシュミレーションを行うことで、ミスマッチ箇所を見つけ出す事が可能です。 (続く)

Quartus2 V13.1 ~エントリー編 HDL回路から回路図用シンボルを作成する~

イメージ
 トップダウン設計とするのかボトムアップ設計とするのか?一人で設計するのかチーム設計なのか?設計資産の再利用があるのか無いのか?設計資産はHDLなのか回路図なのかなどなど、プロジェクト毎に設計戦略は異なりますので、HDL設計を回路図/ブロック図に載せたい場合があります。 もちろん、Quartus2はこの機能をサポートしてくれています。 ■HDL回路のシンボル生成 シンボルを作成したいHDLソースを選択した状態で、右クリックにて「Create Symbol ・・・」を選択する事で、回路図用のシンボルが生成されます。 新規の回路図を作成します。 もちろん、既存の回路図があれば不要な作業です。 ■回路図にHDL設計された回路を配置する シンボル入力を選択して、project内に生成されたシンボルを選択します 赤枠にチェックを入れて、ブロックダイアグラム向けのシンボルを選択する事もできます 回路図内にHDLで設計された回路(シンボル)を配置できました。

Quartus2 V13.1 ~セットアップ編 新規プロジェクト作成~

イメージ
 Altera社のFPGA開発用EDAツールQuartus2ですが、最新バージョン13.1に関する日本語記事が少ないので覚書 ■Quartus2 WebEdition(無償)のインストール 対応OS一覧表 (マイPCは Windows8.1 の64bit版ですが正常に動作しています。) ダウンロードページ からQuatus2とModelsim-altera、使用予定のデバイスファイルをダウンロードします。(Quartus2のupdateがリリースされていたので「アップデート」タブからダウンロード) お手軽な「一式ファイル」もありましたが、全デバイスファイルが含まれるので、HDDディスク容量が裕福な方にしかお勧めしません(笑) 私の場合、Quartus2をインストール→modelsimをインストール→Quartus2からデバイスファイル追加という手順で行いましたが、Quartus2、modelsim、デバイスファイルを同じフォルダ内にDL終了後に、Quartus2をインストールすると勝手に見つけてインストールしてくれるらしいです。 インストール作業の詳細は、インストーラを起動してメッセージに従うだけなので割愛 ■デバイスファイルの追加   ※以前はQuartus2内から追加できましたが、最新版では別アプリになっています。 使用予定のデバイスファイルをダウンロードしておきます。 デバイスインストーラを起動し、あとは手順に従うだけです。 ■新規プロジェクトの作成 プロジェクトを作成するパスとプロジェクト名を指定します  ※この例では、 eclipse上で記述したものをそのまま使用する為 、同じフォルダ名、プロジェクト名としています。 HDLや回路図など既存の設計を流用する際にはここで指定する事で、プロジェクト内に追加できます。 ゼロからの設計の場合はそのままNext 対象とするFPGAデバイスを選択します 本例は対象デバイスを限定せず、MAX2シリーズであればどれでも可としています シュミレータにmodelsim-alteraのVHDLのみ指定していますが、 Quartus2が対応しており所有しているEDAツールを設定します。 ■アナライズ プロジェクト内のソース(